blob: 4b93ee4123fb9f289c00361c02f1ab42f52941e2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
/* openbills - Server for web based Libre Billing Software
* Copyright (C) 2023-2024 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
* 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 <https://www.gnu.org/licenses/>.
*/
package invoice
import (
"gorm.io/gorm"
d "vidhukant.com/openbills/db"
"vidhukant.com/openbills/user"
u "vidhukant.com/openbills/util"
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
u.Address
InvoiceID uint
}
type InvoiceShippingAddress struct {
gorm.Model
u.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
Note string
Items []InvoiceItem
// 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
CustomerPhone string
CustomerEmail string
CustomerWebsite string
// Transporter Transporter
// TransactionID string
}
|