48 lines
867 B
Go
48 lines
867 B
Go
package ledger
|
|
|
|
import "fmt"
|
|
|
|
type Currency string
|
|
|
|
const (
|
|
USD = Currency("$")
|
|
)
|
|
|
|
type Delta struct {
|
|
Date string
|
|
Name string
|
|
Value float64
|
|
Currency Currency
|
|
Description string
|
|
isSet bool
|
|
}
|
|
|
|
func newDelta(d, desc, name string, v float64, c string, isSet bool) Delta {
|
|
return Delta{
|
|
Date: d,
|
|
Name: name,
|
|
Value: v,
|
|
Currency: Currency(c),
|
|
Description: desc,
|
|
isSet: isSet,
|
|
}
|
|
}
|
|
|
|
func (delta Delta) Plus(other Delta) Delta {
|
|
return Delta{
|
|
Date: other.Date,
|
|
Name: delta.Name,
|
|
Value: delta.Value + other.Value,
|
|
Currency: other.Currency,
|
|
}
|
|
}
|
|
|
|
func (delta Delta) Debug() string {
|
|
return fmt.Sprintf("{@%s %s:\"%s\" %s%.2f %s}", delta.Date, delta.Name, delta.Description, func() string {
|
|
if !delta.isSet {
|
|
return ""
|
|
}
|
|
return "= "
|
|
}(), delta.Value, delta.Currency)
|
|
}
|