transactions.html omits non-payee currency and value table cells
cicd / ci (push) Successful in 1m3s
Details
cicd / ci (push) Successful in 1m3s
Details
parent
59205fba4c
commit
45c4d7b684
|
|
@ -67,8 +67,8 @@
|
||||||
for (var delta of t) {
|
for (var delta of t) {
|
||||||
result += ` <tr>`
|
result += ` <tr>`
|
||||||
result += ` <td><span style="font-variant: petite-caps;">${delta.Name.split(":")[0]}</span><span style="opacity: 0.6;"> :${delta.Name.split(":").slice(1, 100).join(":")}</span></td>`
|
result += ` <td><span style="font-variant: petite-caps;">${delta.Name.split(":")[0]}</span><span style="opacity: 0.6;"> :${delta.Name.split(":").slice(1, 100).join(":")}</span></td>`
|
||||||
result += ` <td style="text-align: right; width: 2em;">${delta.Currency}</td>`
|
result += ` <td style="text-align: right; width: 2em;">${delta.Payee ? delta.Currency : ""}</td>`
|
||||||
result += ` <td style="text-align: right; width: 5em;">${delta.Value}</td>`
|
result += ` <td style="text-align: right; width: 5em;">${delta.Payee ? delta.Value : ""}</td>`
|
||||||
result += ` </tr>`
|
result += ` </tr>`
|
||||||
}
|
}
|
||||||
result += ` </table></td>`
|
result += ` </table></td>`
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,11 @@ func (transaction Transaction) Payee() string {
|
||||||
candidates := []string{}
|
candidates := []string{}
|
||||||
|
|
||||||
for name, balance := range balances {
|
for name, balance := range balances {
|
||||||
|
deltas := Deltas(transaction).Like(LikeName(`^` + name + `$`))
|
||||||
|
if len(deltas) != 1 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
everyoneElse := balances.NotLike(`^` + name + `$`).Group(`^`)[""]
|
everyoneElse := balances.NotLike(`^` + name + `$`).Group(`^`)[""]
|
||||||
matches := true
|
matches := true
|
||||||
for currency, value := range balance {
|
for currency, value := range balance {
|
||||||
|
|
@ -192,7 +197,18 @@ func readTransaction(name string, r *bufio.Reader) (transaction, error) {
|
||||||
sumPerRecipient[recipient.name] += recipient.value
|
sumPerRecipient[recipient.name] += recipient.value
|
||||||
}
|
}
|
||||||
slices.Sort(recipients)
|
slices.Sort(recipients)
|
||||||
|
|
||||||
for _, k := range recipients {
|
for _, k := range recipients {
|
||||||
|
n := 0
|
||||||
|
for i := range result.recipients {
|
||||||
|
if result.recipients[i].name == k {
|
||||||
|
n += 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if n != 1 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
v := sumPerRecipient[k]
|
v := sumPerRecipient[k]
|
||||||
everyoneElse := 0.0
|
everyoneElse := 0.0
|
||||||
for j := range sumPerRecipient {
|
for j := range sumPerRecipient {
|
||||||
|
|
|
||||||
|
|
@ -10,13 +10,13 @@ import (
|
||||||
|
|
||||||
func TestTransactionPayee(t *testing.T) {
|
func TestTransactionPayee(t *testing.T) {
|
||||||
given := Transaction{
|
given := Transaction{
|
||||||
Delta{Name: "x", Transaction: "a", Value: 1},
|
Delta{Name: "x", Transaction: "a", Value: 9},
|
||||||
Delta{Name: "y", Transaction: "a", Value: 2},
|
|
||||||
Delta{Name: "Withdrawal:z", Transaction: "a", Value: -3},
|
Delta{Name: "Withdrawal:z", Transaction: "a", Value: -3},
|
||||||
|
Delta{Name: "Withdrawal:z", Transaction: "a", Value: -6},
|
||||||
}
|
}
|
||||||
|
|
||||||
got := given.Payee()
|
got := given.Payee()
|
||||||
if got != "Withdrawal:z" {
|
if got != "x" {
|
||||||
t.Error(got)
|
t.Error(got)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -76,6 +76,32 @@ func TestReadTransaction(t *testing.T) {
|
||||||
},
|
},
|
||||||
err: io.EOF,
|
err: io.EOF,
|
||||||
},
|
},
|
||||||
|
"multi send": {
|
||||||
|
input: `
|
||||||
|
2003-04-05 Reasoning here
|
||||||
|
A:B $1.00
|
||||||
|
A:B $2.00
|
||||||
|
C:D
|
||||||
|
`,
|
||||||
|
want: transaction{
|
||||||
|
date: "2003-04-05",
|
||||||
|
description: "Reasoning here",
|
||||||
|
payee: "C:D",
|
||||||
|
recipients: []transactionRecipient{
|
||||||
|
{
|
||||||
|
name: "A:B",
|
||||||
|
value: 1.0,
|
||||||
|
currency: "$",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "A:B",
|
||||||
|
value: 2.0,
|
||||||
|
currency: "$",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
err: io.EOF,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for name, d := range cases {
|
for name, d := range cases {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue