filter csv to matchies
All checks were successful
cicd / ci (push) Successful in 2m16s

This commit is contained in:
bel
2026-03-22 14:12:09 -06:00
parent 96703721e3
commit 72c9d79dd2
2 changed files with 55 additions and 0 deletions

View File

@@ -439,6 +439,7 @@ func Main() {
datesMatched := []string{}
namesMatched := []string{}
nonAssetNamesMatched := []string{}
for _, csvDelta := range csvDeltas {
matches, dates := matchies(deltas, csvDelta)
if len(matches) == 0 {
@@ -450,10 +451,14 @@ func Main() {
namesMatched = append(namesMatched, match.Name)
}
}
nonAssetNamesMatched = slices.DeleteFunc(slices.Clone(namesMatched), func(name string) bool {
return strings.Contains(name, "Asset")
})
datesMatched = slices.DeleteFunc(datesMatched, func(a string) bool { return strings.TrimSpace(a) == "" })
datesMatched = slices.Compact(datesMatched)
namesMatched = slices.Compact(namesMatched)
transactions := deltas.Transactions()
deltas = deltas.Like(func(delta ledger.Delta) bool {
return delta.Date >= slices.Min(datesMatched)
})
@@ -463,6 +468,43 @@ func Main() {
deltas = deltas.Like(func(delta ledger.Delta) bool {
return slices.Contains(namesMatched, delta.Name)
})
deltas = deltas.Like(func(delta ledger.Delta) bool {
xaction := transactions.Lookup(delta)
if noXactionFound := len(xaction) == 0; noXactionFound {
return false
}
names := []string{}
for _, delta := range xaction.Deltas() {
names = append(names, delta.Name)
}
slices.Sort(names)
_ = names
allTheSame := true
for i := range xaction {
for j := i + 1; j < len(xaction); j++ {
allTheSame = allTheSame && (xaction[i].Name == xaction[j].Name)
}
}
if allTheSame {
return false
}
if anyNameNotRelevant := slices.ContainsFunc(xaction.Deltas(), func(some ledger.Delta) bool {
return !slices.Contains(namesMatched, delta.Name)
}); anyNameNotRelevant {
return false
}
if hasNonAssetNameMatch := slices.ContainsFunc(xaction.Deltas(), func(some ledger.Delta) bool {
return slices.Contains(nonAssetNamesMatched, delta.Name)
}); !hasNonAssetNameMatch {
return false
}
return true
})
deltasSum := deltas.Group(ledger.GroupDate(""), ledger.GroupName("")).Balances()[""][ledger.USD]
csvSum := csvDeltas.Group(ledger.GroupDate(""), ledger.GroupName("")).Balances()[""][ledger.USD]

View File

@@ -16,8 +16,21 @@ import (
type Transaction Deltas
func (t Transaction) Deltas() Deltas {
return Deltas(slices.Clone(t))
}
type Transactions []Transaction
func (transactions Transactions) Lookup(delta Delta) Transaction {
for i := range transactions {
if transactions[i][0].Transaction == delta.Transaction {
return slices.Clone(transactions[i])
}
}
return nil
}
func (transactions Transactions) Deltas() Deltas {
result := make(Deltas, 0, len(transactions))
for _, transaction := range transactions {