aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/invoice/invoice.go
diff options
context:
space:
mode:
Diffstat (limited to 'invoice/invoice.go')
-rw-r--r--invoice/invoice.go79
1 files changed, 45 insertions, 34 deletions
diff --git a/invoice/invoice.go b/invoice/invoice.go
index 97ba254..9cbc4e7 100644
--- a/invoice/invoice.go
+++ b/invoice/invoice.go
@@ -1,5 +1,5 @@
/* openbills - Server for web based Libre Billing Software
- * Copyright (C) 2023-2024 Vidhu Kant Sharma <vidhukant@vidhukant.com>
+ * Copyright (C) 2023-2025 Vidhu Kant Sharma <vidhukant@vidhukant.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -21,7 +21,6 @@ import (
"gorm.io/gorm"
"time"
d "vidhukant.com/openbills/db"
- i "vidhukant.com/openbills/item"
u "vidhukant.com/openbills/util"
)
@@ -30,27 +29,26 @@ var db *gorm.DB
func init() {
db = d.DB
- db.AutoMigrate(&Invoice{}, &InvoiceItem{}, &InvoiceBillingAddress{}, &InvoiceShippingAddress{}, &CustomField{})
-}
-
-type InvoiceBillingAddress struct {
- gorm.Model
- u.Address
- InvoiceID uint
-}
-
-type InvoiceShippingAddress struct {
- gorm.Model
- u.Address
- InvoiceID uint
+ db.AutoMigrate(&Invoice{}, &InvoiceItem{}, &CustomField{})
}
type InvoiceItem struct {
- i.Item
ID uint
InvoiceID uint
- BrandName string
Quantity string // float
+ // fields below these must be kept in sync with
+ // item.SavedItem. I'm not extending that struct because
+ // there are some things that I don't want / want in a
+ // different format. In short, it's *not* worth the headache
+ Name string
+ BrandName string
+ Category string
+ Description string
+ HSN string
+ UnitOfMeasure string
+ VariantName string
+ UnitPrice string // float
+ GSTPercentage string // float
}
// user can add as many custom fields as they like
@@ -63,24 +61,37 @@ type CustomField struct {
type Invoice struct {
gorm.Model
- InvoiceDate time.Time
- InvoiceNumber uint
- BillingAddress InvoiceBillingAddress
- ShippingAddress InvoiceShippingAddress
- IsDraft bool
- Note string
- Items []InvoiceItem
- CustomFields []CustomField
+ InvoiceDate time.Time
+ InvoiceNumber uint
+ IsDraft bool
+ Note string
+ Items []InvoiceItem
+ CustomFields []CustomField
+
+ BillingAddressText string
+ BillingAddressCity string
+ BillingAddressState string
+ BillingAddressPostalCode string
+ BillingAddressCountry string
+
+ ShippingAddressText string
+ ShippingAddressCity string
+ ShippingAddressState string
+ ShippingAddressPostalCode string
+ ShippingAddressCountry string
+
+ IssuerFirmName string
+ IssuerFirmGstin string
+ IssuerFirmPhone string
+ IssuerFirmEmail string
+ IssuerFirmWebsite string
+
+ IssuerFirmAddressText string
+ IssuerFirmAddressCity string
+ IssuerFirmAddressState string
+ IssuerFirmAddressPostalCode string
+ IssuerFirmAddressCountry string
- // issuer and customer details are stored here
- // because they are NOT intended to ever change
- IssuerFirmName string
- IssuerFirmAddress string
- IssuerFirmGstin string
- IssuerFirmPhone string
- IssuerFirmEmail string
- IssuerFirmWebsite string
- IssuerFirmDetails string
CustomerName string
CustomerGstin string
CustomerContactName string