main
Bel LaPointe 2024-12-12 22:53:40 -07:00
parent c3f7800dec
commit 1a517eb8f2
2 changed files with 30 additions and 2 deletions

View File

@ -109,7 +109,7 @@ func Main() {
likes = append(likes, like)
}
for _, transaction := range transactions {
for i, transaction := range transactions {
balances := ledger.Deltas(transaction).Like(likes...).Balances()
shouldPrint := false
shouldPrint = shouldPrint || len(balances) > 2
@ -123,7 +123,27 @@ func Main() {
}
if shouldPrint {
fmt.Printf("%s\t%s\n", transaction[0].Date, transaction[0].Description)
FPrintBalances(os.Stdout, "\t\t", ledger.Deltas(transaction).Like(likes...).Balances())
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())
}
}
default:

View File

@ -18,6 +18,14 @@ type Transaction Deltas
type Transactions []Transaction
func (transactions Transactions) Deltas() Deltas {
result := make(Deltas, 0, len(transactions))
for _, transaction := range transactions {
result = append(result, transaction...)
}
return result
}
func (deltas Deltas) Transactions() Transactions {
m := make(map[string]Transaction)
for _, d := range deltas {