38 lines
1.0 KiB
Go
38 lines
1.0 KiB
Go
// 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
|
|
}
|