This commit is contained in:
@@ -439,6 +439,7 @@ func Main() {
|
|||||||
|
|
||||||
datesMatched := []string{}
|
datesMatched := []string{}
|
||||||
namesMatched := []string{}
|
namesMatched := []string{}
|
||||||
|
nonAssetNamesMatched := []string{}
|
||||||
for _, csvDelta := range csvDeltas {
|
for _, csvDelta := range csvDeltas {
|
||||||
matches, dates := matchies(deltas, csvDelta)
|
matches, dates := matchies(deltas, csvDelta)
|
||||||
if len(matches) == 0 {
|
if len(matches) == 0 {
|
||||||
@@ -450,10 +451,14 @@ func Main() {
|
|||||||
namesMatched = append(namesMatched, match.Name)
|
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.DeleteFunc(datesMatched, func(a string) bool { return strings.TrimSpace(a) == "" })
|
||||||
datesMatched = slices.Compact(datesMatched)
|
datesMatched = slices.Compact(datesMatched)
|
||||||
namesMatched = slices.Compact(namesMatched)
|
namesMatched = slices.Compact(namesMatched)
|
||||||
|
|
||||||
|
transactions := deltas.Transactions()
|
||||||
deltas = deltas.Like(func(delta ledger.Delta) bool {
|
deltas = deltas.Like(func(delta ledger.Delta) bool {
|
||||||
return delta.Date >= slices.Min(datesMatched)
|
return delta.Date >= slices.Min(datesMatched)
|
||||||
})
|
})
|
||||||
@@ -463,6 +468,43 @@ func Main() {
|
|||||||
deltas = deltas.Like(func(delta ledger.Delta) bool {
|
deltas = deltas.Like(func(delta ledger.Delta) bool {
|
||||||
return slices.Contains(namesMatched, delta.Name)
|
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]
|
deltasSum := deltas.Group(ledger.GroupDate(""), ledger.GroupName("")).Balances()[""][ledger.USD]
|
||||||
csvSum := csvDeltas.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
|
type Transaction Deltas
|
||||||
|
|
||||||
|
func (t Transaction) Deltas() Deltas {
|
||||||
|
return Deltas(slices.Clone(t))
|
||||||
|
}
|
||||||
|
|
||||||
type Transactions []Transaction
|
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 {
|
func (transactions Transactions) Deltas() Deltas {
|
||||||
result := make(Deltas, 0, len(transactions))
|
result := make(Deltas, 0, len(transactions))
|
||||||
for _, transaction := range transactions {
|
for _, transaction := range transactions {
|
||||||
|
|||||||
Reference in New Issue
Block a user