// posting_line.go package ledger import ( "github.com/tech/sendico/pkg/db/storable" "github.com/tech/sendico/pkg/model" "github.com/tech/sendico/pkg/mservice" "github.com/shopspring/decimal" "go.mongodb.org/mongo-driver/bson/primitive" ) // LineType is a closed set of posting line roles within an entry. type LineType string const ( LineMain LineType = "main" LineFee LineType = "fee" LineSpread LineType = "spread" LineReversal LineType = "reversal" ) type PostingLine struct { storable.Base `bson:",inline" json:",inline"` JournalEntryRef primitive.ObjectID `bson:"journalEntryRef" json:"journalEntryRef"` LedgerAccountRef primitive.ObjectID `bson:"ledgerAccountRef" json:"ledgerAccountRef"` // Amount sign convention: positive = credit, negative = debit Amount decimal.Decimal `bson:"amount" json:"amount"` Currency model.Currency `bson:"currency" json:"currency"` LineType LineType `bson:"lineType" json:"lineType"` } func (p *PostingLine) Collection() string { return mservice.LedgerPlines }