normalize
All checks were successful
cicd / ci (push) Successful in 1m0s

This commit is contained in:
bel
2025-04-03 23:04:08 -06:00
parent 266af7353a
commit 5cc9b141b9
2 changed files with 28 additions and 17 deletions

View File

@@ -7,6 +7,7 @@ import (
"os"
"slices"
"strings"
"time"
"gogs.inhome.blapointe.com/ana-ledger/src/ana"
"gogs.inhome.blapointe.com/ana-ledger/src/ledger"
@@ -98,7 +99,7 @@ func Main() {
KindaLike(q).
KindaGroup(group).
Nonzero()
FPrintBalances(os.Stdout, "", balances, nil, config.Query.USDOnly)
FPrintBalances(os.Stdout, "", balances, nil, config.Query.USDOnly, config.Query.Normalize, time.Now().Format("2006-01-02"))
case "reg":
transactions := deltas.Transactions()
@@ -116,7 +117,7 @@ func Main() {
}
if shouldPrint {
fmt.Printf("%s\t%s\n", transaction[0].Date, transaction[0].Description)
FPrintBalances(os.Stdout, "\t\t", balances, transactions[:i+1].Deltas().Like(q).Group(group).Balances().WithBPIsAt(bpis, transaction[0].Date).Nonzero(), config.Query.USDOnly)
FPrintBalances(os.Stdout, "\t\t", balances, transactions[:i+1].Deltas().Like(q).Group(group).Balances().WithBPIsAt(bpis, transaction[0].Date).Nonzero(), config.Query.USDOnly, config.Query.Normalize, transaction[0].Date)
}
}
default:
@@ -124,7 +125,7 @@ func Main() {
}
}
func FPrintBalances(w io.Writer, linePrefix string, balances, cumulatives ledger.Balances, usdOnly bool) {
func FPrintBalances(w io.Writer, linePrefix string, balances, cumulatives ledger.Balances, usdOnly, normalized bool, date string) {
keys := []string{}
for k := range balances {
keys = append(keys, k)
@@ -138,7 +139,12 @@ func FPrintBalances(w io.Writer, linePrefix string, balances, cumulatives ledger
}
}
normalizer := ana.NewDefaultNormalizer()
format := fmt.Sprintf("%s%%-%ds\t%%s%%.2f (%%s%%.2f)\n", linePrefix, max)
if normalized {
format = fmt.Sprintf("%s%%-%ds\t%%s%%.2f (%%s%%.2f (%%.2f @%%.2f))\n", linePrefix, max)
}
for _, key := range keys {
currencies := []ledger.Currency{}
for currency := range balances[key] {
@@ -162,7 +168,12 @@ func FPrintBalances(w io.Writer, linePrefix string, balances, cumulatives ledger
cumulative = value
}
fmt.Fprintf(w, format, key, printableCurrency, balances[key][currency], printableCurrency, cumulative)
if !normalized {
fmt.Fprintf(w, format, key, printableCurrency, balances[key][currency], printableCurrency, cumulative)
} else {
factor := normalizer.NormalizeFactor(ledger.Delta{Name: key, Date: date})
fmt.Fprintf(w, format, key, printableCurrency, balances[key][currency], printableCurrency, cumulative, cumulative*factor, factor)
}
}
}
}