diff options
Diffstat (limited to 'invoice/invoice.go')
-rw-r--r-- | invoice/invoice.go | 79 |
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 |