27 lines
1.3 KiB
Go
27 lines
1.3 KiB
Go
package model
|
|
|
|
import (
|
|
"github.com/tech/sendico/pkg/db/storable"
|
|
"github.com/tech/sendico/pkg/model"
|
|
)
|
|
|
|
// Account represents a ledger account that holds balances for a specific currency.
|
|
type Account struct {
|
|
storable.Base `bson:",inline" json:",inline"`
|
|
model.PermissionBound `bson:",inline" json:",inline"`
|
|
model.Describable `bson:",inline" json:",inline"`
|
|
|
|
AccountCode string `bson:"accountCode" json:"accountCode"` // e.g., "asset:cash:usd"
|
|
Currency string `bson:"currency" json:"currency"` // ISO 4217 currency code
|
|
AccountType AccountType `bson:"accountType" json:"accountType"` // asset, liability, revenue, expense
|
|
Status AccountStatus `bson:"status" json:"status"` // active, frozen, closed
|
|
AllowNegative bool `bson:"allowNegative" json:"allowNegative"` // debit policy: allow negative balances
|
|
IsSettlement bool `bson:"isSettlement,omitempty" json:"isSettlement,omitempty"` // marks org-level default contra account
|
|
Metadata map[string]string `bson:"metadata,omitempty" json:"metadata,omitempty"`
|
|
}
|
|
|
|
// Collection implements storable.Storable.
|
|
func (*Account) Collection() string {
|
|
return AccountsCollection
|
|
}
|