diff --git a/cmd/cli/main.go b/cmd/cli/main.go index 4cdb196..2d58e77 100644 --- a/cmd/cli/main.go +++ b/cmd/cli/main.go @@ -88,7 +88,7 @@ func Main() { balances = balances.NotLike(notLikePattern) } - FPrintBalances(os.Stdout, "", balances) + FPrintBalances(os.Stdout, "", balances, nil) case "reg": transactions := deltas.Transactions() likes := []ledger.Like{} @@ -123,27 +123,7 @@ func Main() { } if shouldPrint { fmt.Printf("%s\t%s\n", transaction[0].Date, transaction[0].Description) - FPrintBalances(os.Stdout, "\t\t", balances) - - cumulativeBalances := transactions[:i+1].Deltas().Like(likes...).Balances() - cumulativeBalancesKeys := []string{} - for k := range cumulativeBalances { - cumulativeBalancesKeys = append(cumulativeBalancesKeys, k) - } - slices.Sort(cumulativeBalancesKeys) - - relevantCumulativeBalances := make(ledger.Balances) - for _, k := range cumulativeBalancesKeys { - m, ok := balances[k] - if !ok { - continue - } - relevantCumulativeBalances[k] = make(ledger.Balance) - for k2 := range m { - relevantCumulativeBalances[k][k2] = cumulativeBalances[k][k2] - } - } - fmt.Printf("\t\t(%+v)\n", relevantCumulativeBalances.Nonzero()) + FPrintBalances(os.Stdout, "\t\t", balances, transactions[:i+1].Deltas().Like(likes...).Balances()) } } default: @@ -151,7 +131,7 @@ func Main() { } } -func FPrintBalances(w io.Writer, linePrefix string, balances ledger.Balances) { +func FPrintBalances(w io.Writer, linePrefix string, balances, cumulatives ledger.Balances) { keys := []string{} for k := range balances { keys = append(keys, k) @@ -165,7 +145,7 @@ func FPrintBalances(w io.Writer, linePrefix string, balances ledger.Balances) { } } - format := fmt.Sprintf("%s%%-%ds\t%%s%%.2f\n", linePrefix, max) + format := fmt.Sprintf("%s%%-%ds\t%%s%%.2f (%%s%%.2f)\n", linePrefix, max) for _, key := range keys { currencies := []ledger.Currency{} for currency := range balances[key] { @@ -178,7 +158,15 @@ func FPrintBalances(w io.Writer, linePrefix string, balances ledger.Balances) { if printableCurrency != "$" { printableCurrency += " " } - fmt.Fprintf(w, format, key, printableCurrency, balances[key][currency]) + + cumulative := balances[key][currency] + if balance, ok := cumulatives[key]; !ok { + } else if value, ok := balance[currency]; !ok { + } else { + cumulative = value + } + + fmt.Fprintf(w, format, key, printableCurrency, balances[key][currency], printableCurrency, cumulative) } } }