/* openbills - Server for web based Libre Billing Software * Copyright (C) 2023 Vidhu Kant Sharma * * 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 * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ package invoice import ( "gorm.io/gorm" d "vidhukant.com/openbills/db" "vidhukant.com/openbills/user" c "vidhukant.com/openbills/customer" i "vidhukant.com/openbills/item" "time" ) var db *gorm.DB func init() { db = d.DB db.AutoMigrate(&Invoice{}, &InvoiceItem{}, &InvoiceBillingAddress{}, &InvoiceShippingAddress{}) } type InvoiceBillingAddress struct { gorm.Model c.Address InvoiceID uint } type InvoiceShippingAddress struct { gorm.Model c.Address InvoiceID uint } type InvoiceItem struct { gorm.Model i.Item InvoiceID uint BrandName string Quantity string // float } type Invoice struct { gorm.Model UserID uint `json:"-"` User user.User `json:"-"` InvoiceDate time.Time InvoiceNumber uint BillingAddress InvoiceBillingAddress ShippingAddress InvoiceShippingAddress IsDraft bool Items []InvoiceItem // the customer fields are hard coded for: // 1. simplicity and // 2. don't wanna update details for all the // invoices if one customer's details are updated // NOTE: These fields aren't getting validated (as of now, at least) CustomerName string CustomerGstin string CustomerContactName string CustomerPhone string CustomerEmail string CustomerWebsite string // Transporter Transporter // DueDate string // TransactionID string }