This repository has been archived by the owner on Nov 28, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
purchaseOrder.go
120 lines (105 loc) · 2.65 KB
/
purchaseOrder.go
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
package model
import (
"errors"
"time"
)
var orders []*PurchaseOrder
var currentOrderId int = 0
var currentDetailId int = 0
type PurchaseOrder struct {
ID int `json:"id"`
Receiver *Receiver `json:"receiver"`
Vendor *Vendor `json:"vendor"`
Currency *Currency `json:"currency"`
Purpose string `json:"purpose"`
DueDate time.Time `json:"dueDate"`
Status string `json:"status"`
Details []*PODetail `json:"details"`
}
type PODetail struct {
ID int `json:"id"`
Line int `json:"line"`
PartNumber string `json:"partNumber"`
Description string `json:"description"`
Quantity float32 `json:"quantity"`
DueDate time.Time `json:"dueDate"`
UnitOfMeasure string `json:"unitOfMeasure"`
PricePer float64 `json:"pricePer"`
Status string `json:"status"`
}
func GetOrder(id int) (*PurchaseOrder, error) {
for _, o := range orders {
if o.ID == id {
return o, nil
}
}
return nil, errors.New("Purchase order not found")
}
func SaveOrder(order *PurchaseOrder) *PurchaseOrder {
order.ID = getNextOrderId()
order.Status = "NEW"
for idx := range order.Details {
order.Details[idx].Line = idx * 10
order.Details[idx].Status = "NEW"
}
orders = append(orders, order)
return order
}
func getNextOrderId() int {
currentOrderId++
return currentOrderId
}
func getNextDetailId() int {
currentDetailId++
return currentDetailId
}
func init() {
receivers := GetReceivers()
vendors := GetVendors()
var receiver *Receiver
if len(receivers) >= 1 {
receiver = receivers[1]
} else {
receiver = &Receiver{}
}
var vendor *Vendor
if len(vendors) >= 2 {
vendor = vendors[2]
} else {
vendor = &Vendor{}
}
orders = []*PurchaseOrder{
{
ID: getNextOrderId(),
Receiver: receiver,
Vendor: vendor,
Status: "APPROVED",
Currency: GetCurrencies()[1],
Purpose: "Replace leaking valve",
DueDate: time.Date(2006, time.January, 2, 0, 0, 0, 0, time.UTC),
Details: []*PODetail{
{
ID: getNextDetailId(),
Line: 10,
PartNumber: "TGY-5412",
Description: "Control Valve",
Quantity: 1,
DueDate: time.Date(2006, time.January, 2, 0, 0, 0, 0, time.UTC),
UnitOfMeasure: "EA",
PricePer: 427.36,
Status: "APPROVED",
}, {
ID: getNextDetailId(),
Line: 20,
PartNumber: "M20-2.5x70",
Description: "Bolts",
Quantity: 25,
DueDate: time.Date(2006, time.January, 2, 0, 0, 0, 0, time.UTC),
UnitOfMeasure: "EA",
PricePer: 4.12,
Status: "RECEIVED",
},
},
},
}
}