This commit is contained in:
@@ -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]
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user