Calculate per-category sub-totals
continuous-integration/drone/push Build is failing
Details
continuous-integration/drone/push Build is failing
Details
This commit is contained in:
parent
ab9447591b
commit
a61e057cfb
|
@ -23,6 +23,8 @@ const (
|
|||
var adverbs = []string{" Außerdem ", " Zusätzlich ", " Weiterhin ", " Des Weiteren "}
|
||||
|
||||
type categoryBin struct {
|
||||
Cents uint
|
||||
Euros uint
|
||||
NumFree uint
|
||||
NumPaid uint
|
||||
}
|
||||
|
@ -77,7 +79,6 @@ func (s Server) orderPlaced(w http.ResponseWriter, r *http.Request) {
|
|||
Item uint
|
||||
Price string
|
||||
}
|
||||
Total string
|
||||
}{}
|
||||
|
||||
err = decoder.Decode(&order)
|
||||
|
@ -111,6 +112,12 @@ func (s Server) orderPlaced(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
category := categories[name]
|
||||
if euros > 0 || cents > 0 {
|
||||
category.Cents += cents
|
||||
if carry := category.Cents / 100; carry > 0 {
|
||||
category.Cents -= carry * 100
|
||||
category.Euros += carry
|
||||
}
|
||||
category.Euros += euros
|
||||
category.NumPaid++
|
||||
} else {
|
||||
category.NumFree++
|
||||
|
@ -154,15 +161,15 @@ func (s Server) orderPlaced(w http.ResponseWriter, r *http.Request) {
|
|||
preposition = `aus der Kategorie "`
|
||||
quote = `" `
|
||||
}
|
||||
if totalEuros, totalCents, err := parsePrice(order.Total); err == nil && (totalEuros > 0 || totalCents > 0) {
|
||||
if bin.Euros > 0 || bin.Cents > 0 {
|
||||
var adverb, fraction string
|
||||
if bin.NumPaid > 1 {
|
||||
adverb = "insgesamt "
|
||||
}
|
||||
if totalCents > 0 {
|
||||
fraction = fmt.Sprintf(",%02d", totalCents)
|
||||
if bin.Cents > 0 {
|
||||
fraction = fmt.Sprintf(",%02d", bin.Cents)
|
||||
}
|
||||
total = fmt.Sprint("für ", adverb, totalEuros, fraction, " Euro ")
|
||||
total = fmt.Sprint("für ", adverb, bin.Euros, fraction, " Euro ")
|
||||
}
|
||||
|
||||
body.WriteString(fmt.Sprint(adverb, verb, free, conjunction, paid, noun, preposition, category, quote, total, "bestellt."))
|
||||
|
|
Loading…
Reference in New Issue