From e1b601a1309cd7abb3d58378be67a315a5c0354d Mon Sep 17 00:00:00 2001 From: Bel LaPointe Date: Thu, 26 Oct 2023 07:43:44 -0600 Subject: [PATCH] GOTTEM --- cmd/clitest/main.go | 4 +--- ledger/balances.go | 6 +++++- ledger/register.go | 8 ++++++++ 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/cmd/clitest/main.go b/cmd/clitest/main.go index 575354e..1617b9c 100644 --- a/cmd/clitest/main.go +++ b/cmd/clitest/main.go @@ -113,9 +113,7 @@ func main() { } } if r.URL.Query().Get("bpi") != "" { - for date := range register { - register[date] = register[date].WithBPIs(bpis) - } + register = register.WithBPIs(bpis) } // /MODIFIERS diff --git a/ledger/balances.go b/ledger/balances.go index dd24e8d..06670dc 100644 --- a/ledger/balances.go +++ b/ledger/balances.go @@ -10,6 +10,10 @@ type Balances map[string]Balance type Balance map[Currency]float64 func (balances Balances) WithBPIs(bpis BPIs) Balances { + return balances.WithBPIsAt(bpis, "9") +} + +func (balances Balances) WithBPIsAt(bpis BPIs, date string) Balances { result := make(Balances) for k, v := range balances { if _, ok := result[k]; !ok { @@ -18,7 +22,7 @@ func (balances Balances) WithBPIs(bpis BPIs) Balances { for k2, v2 := range v { scalar := 1.0 if k2 != USD { - scalar = bpis[k2].Lookup("9") + scalar = bpis[k2].Lookup(date) } result[k][USD] += v2 * scalar } diff --git a/ledger/register.go b/ledger/register.go index 85f0624..c090bc3 100644 --- a/ledger/register.go +++ b/ledger/register.go @@ -7,6 +7,14 @@ import ( type Register map[string]Balances +func (register Register) WithBPIs(bpis BPIs) Register { + result := make(Register) + for d := range register { + result[d] = register[d].WithBPIsAt(bpis, d) + } + return result +} + func (register Register) PushAll(other Register) { for date := range other { if _, ok := register[date]; !ok {