| package main |
| |
| import ( |
| "time" |
| |
| pb "code.hackerspace.pl/hscloud/bgpwtf/invoice/proto" |
| ) |
| |
| func calculateInvoiceData(p *pb.Invoice) { |
| p.Unit = p.Data.Unit |
| if p.Unit == "" { |
| p.Unit = "€" |
| } |
| |
| p.TotalNet = 0 |
| p.Total = 0 |
| for _, i := range p.Data.Item { |
| rowTotalNet := uint64(i.UnitPrice * i.Count) |
| rowTotal := uint64(float64(rowTotalNet) * (float64(1) + float64(i.Vat)/100000)) |
| |
| p.TotalNet += rowTotalNet |
| p.Total += rowTotal |
| i.TotalNet = rowTotalNet |
| i.Total = rowTotal |
| } |
| |
| due := int64(time.Hour*24) * p.Data.DaysDue |
| p.DueDate = time.Unix(0, p.Date).Add(time.Duration(due)).UnixNano() |
| } |