Sergiusz Bazanski | 3976e3c | 2019-05-01 15:27:49 +0200 | [diff] [blame] | 1 | package main |
| 2 | |
| 3 | import ( |
| 4 | "time" |
| 5 | |
Sergiusz Bazanski | 1446e98 | 2019-07-21 16:04:23 +0200 | [diff] [blame] | 6 | pb "code.hackerspace.pl/hscloud/bgpwtf/invoice/proto" |
Sergiusz Bazanski | 3976e3c | 2019-05-01 15:27:49 +0200 | [diff] [blame] | 7 | ) |
| 8 | |
| 9 | func calculateInvoiceData(p *pb.Invoice) { |
| 10 | p.Unit = p.Data.Unit |
| 11 | if p.Unit == "" { |
| 12 | p.Unit = "€" |
| 13 | } |
| 14 | |
| 15 | p.TotalNet = 0 |
| 16 | p.Total = 0 |
| 17 | for _, i := range p.Data.Item { |
| 18 | rowTotalNet := uint64(i.UnitPrice * i.Count) |
| 19 | rowTotal := uint64(float64(rowTotalNet) * (float64(1) + float64(i.Vat)/100000)) |
| 20 | |
| 21 | p.TotalNet += rowTotalNet |
| 22 | p.Total += rowTotal |
| 23 | i.TotalNet = rowTotalNet |
| 24 | i.Total = rowTotal |
| 25 | } |
| 26 | |
| 27 | due := int64(time.Hour*24) * p.Data.DaysDue |
| 28 | p.DueDate = time.Unix(0, p.Date).Add(time.Duration(due)).UnixNano() |
| 29 | } |