Documentation ¶
Index ¶
- Constants
- Variables
- func GetNamedAccountTypes() map[string]*AccountType
- func GetValuedAccountTypes() map[AccountType]string
- type Account
- type AccountType
- func (a *AccountType) Asset() *AccountType
- func (a *AccountType) Balance(drVal, crVal int64) (int64, error)
- func (a *AccountType) Bank() *AccountType
- func (a *AccountType) Cr() *AccountType
- func (a *AccountType) CrTitle() (string, error)
- func (a *AccountType) Customer() *AccountType
- func (a *AccountType) Dr() *AccountType
- func (a *AccountType) DrTitle() (string, error)
- func (a *AccountType) Equity() *AccountType
- func (a *AccountType) Expense() *AccountType
- func (a *AccountType) Income() *AccountType
- func (a *AccountType) Liability() *AccountType
- func (a *AccountType) Real() *AccountType
- func (a *AccountType) Supplier() *AccountType
- func (a *AccountType) Titles() (string, string, error)
- type Accountant
- func (a *Accountant) AddAccount(nominal Nominal, tpe *AccountType, name string, prnt *Nominal) error
- func (a *Accountant) CreateChart(chartName, crcy string, def *ChartDefinition) (uint64, error)
- func (a *Accountant) DelAccount(nominal Nominal) error
- func (a *Accountant) FetchAccountJournals(nominal Nominal) ([]*SplitTransaction, error)
- func (a *Accountant) FetchChart() (*Chart, error)
- func (a *Accountant) FetchTransaction(jrnId uint64) (*SplitTransaction, error)
- func (a *Accountant) NextNominal(prnt, starter Nominal) (*Nominal, error)
- func (a *Accountant) WriteTransaction(txn *SplitTransaction) (uint64, error)
- func (a *Accountant) WriteTransactionWithDate(txn *SplitTransaction, dt time.Time) (uint64, error)
- type Chart
- func (c *Chart) Crcy() string
- func (c *Chart) GetAccount(nominal Nominal) *Account
- func (c *Chart) GetAccountByName(name string) *Account
- func (c *Chart) GetParentId(nominal Nominal) Nominal
- func (c *Chart) HasAccount(nominal Nominal) bool
- func (c *Chart) Id() uint64
- func (c *Chart) Name() string
- func (c *Chart) SetRootNode(root tree.NodeIFace) *Chart
- func (c *Chart) Tree() tree.NodeIFace
- type ChartDefinition
- type Entries
- type Entry
- type FilterFunc
- type NodeFinder
- type NodeSaver
- type Nominal
- type SimpleTransactionBuilder
- func (b *SimpleTransactionBuilder) Build() *SplitTransaction
- func (b *SimpleTransactionBuilder) WithDate(dt time.Time) *SimpleTransactionBuilder
- func (b *SimpleTransactionBuilder) WithNote(note string) *SimpleTransactionBuilder
- func (b *SimpleTransactionBuilder) WithReference(ref uint64) *SimpleTransactionBuilder
- func (b *SimpleTransactionBuilder) WithSource(src string) *SimpleTransactionBuilder
- type SplitTransaction
- func (s *SplitTransaction) CheckBalance() bool
- func (s *SplitTransaction) Date() time.Time
- func (s *SplitTransaction) Entries() Entries
- func (s *SplitTransaction) GetAmount() (int64, error)
- func (s *SplitTransaction) GetCrAc() []*Nominal
- func (s *SplitTransaction) GetDrAc() []*Nominal
- func (s *SplitTransaction) GetEntry(nominal Nominal) (*Entry, error)
- func (s *SplitTransaction) Id() uint64
- func (s *SplitTransaction) IsSimple() bool
- func (s *SplitTransaction) Note() string
- func (s *SplitTransaction) Ref() uint64
- func (s *SplitTransaction) Src() string
- type SplitTransactionBuilder
- func (b *SplitTransactionBuilder) Build() *SplitTransaction
- func (b *SplitTransactionBuilder) WithDate(dt time.Time) *SplitTransactionBuilder
- func (b *SplitTransactionBuilder) WithEntries(entries Entries) *SplitTransactionBuilder
- func (b *SplitTransactionBuilder) WithEntry(entry Entry) *SplitTransactionBuilder
- func (b *SplitTransactionBuilder) WithNote(note string) *SplitTransactionBuilder
- func (b *SplitTransactionBuilder) WithReference(ref uint64) *SplitTransactionBuilder
- func (b *SplitTransactionBuilder) WithSource(src string) *SplitTransactionBuilder
Constants ¶
const NOMINAL_REGEX = "^[0-9]{1,10}$"
Variables ¶
var ( ErrNoChartId = errors.New("chart id not set") ErrBadAccountType = errors.New("chart contains unknown account type") ErrNoChartName = errors.New("cannot retrieve chart name") ErrNoJrnId = errors.New("no journal id returned") ErrBalanceType = errors.New("cannot determine account type to set balance") ErrDummyAccount = errors.New("no operations available on dummy account type") ErrBadXmlParse = errors.New("error parsing chart definition xml") ErrBadNominal = errors.New("provided value for Nominal does not match pattern: " + NOMINAL_REGEX) ErrEntryNotFound = errors.New("entry not found") ErrUnbalancedTransaction = errors.New("transaction is not balanced") )
Functions ¶
func GetNamedAccountTypes ¶
func GetNamedAccountTypes() map[string]*AccountType
func GetValuedAccountTypes ¶
func GetValuedAccountTypes() map[AccountType]string
Types ¶
type Account ¶
type Account struct {
// contains filtered or unexported fields
}
Account is an account in a Chart
func NewAccount ¶
func NewAccount(nominal Nominal, tpe *AccountType, name string, acDr, acCr int64, chartId uint64) *Account
NewAccount Account constructor
type AccountType ¶
type AccountType uint16
func NewAcType ¶
func NewAcType() *AccountType
NewAcType returns an AccountType for further operations
func (*AccountType) Asset ¶
func (a *AccountType) Asset() *AccountType
Asset returns an asset AccountType
func (*AccountType) Balance ¶
func (a *AccountType) Balance(drVal, crVal int64) (int64, error)
Balance returns the balance of two values dependent on the account type
func (*AccountType) Bank ¶
func (a *AccountType) Bank() *AccountType
Bank returns a bank AccountType
func (*AccountType) CrTitle ¶
func (a *AccountType) CrTitle() (string, error)
CrTitle returns the Credit title for the account type
func (*AccountType) Customer ¶
func (a *AccountType) Customer() *AccountType
Customer returns a customer AccountType
func (*AccountType) DrTitle ¶
func (a *AccountType) DrTitle() (string, error)
DrTitle returns the Debit title for the account type
func (*AccountType) Equity ¶
func (a *AccountType) Equity() *AccountType
Equity returns an equity AccountType
func (*AccountType) Expense ¶
func (a *AccountType) Expense() *AccountType
Expense returns an expense AccountType
func (*AccountType) Income ¶
func (a *AccountType) Income() *AccountType
Income returns an income AccountType
func (*AccountType) Liability ¶
func (a *AccountType) Liability() *AccountType
Liability returns a liability AccountType
func (*AccountType) Real ¶
func (a *AccountType) Real() *AccountType
Real returns a real AccountType
func (*AccountType) Supplier ¶
func (a *AccountType) Supplier() *AccountType
Supplier returns a supplier AccountType
type Accountant ¶
type Accountant struct {
// contains filtered or unexported fields
}
Accountant The main API interface to Simple Accounts
func NewAccountant ¶
func NewAccountant(adapter *sql.DB, chartId uint64, crcy string) *Accountant
NewAccountant returns a new Accountant
func (*Accountant) AddAccount ¶
func (a *Accountant) AddAccount(nominal Nominal, tpe *AccountType, name string, prnt *Nominal) error
AddAccount adds an account (ledger) to the chart. Error returned if parent doesn't exist, or you try to add a second root account
func (*Accountant) CreateChart ¶
func (a *Accountant) CreateChart(chartName, crcy string, def *ChartDefinition) (uint64, error)
CreateChart creates a new chart of accounts from a COA definition file
func (*Accountant) DelAccount ¶
func (a *Accountant) DelAccount(nominal Nominal) error
DelAccount deletes an account (ledger) and all its child accounts. Error returned if the account has non zero debit or credit amounts
func (*Accountant) FetchAccountJournals ¶
func (a *Accountant) FetchAccountJournals(nominal Nominal) ([]*SplitTransaction, error)
FetchAccountJournals returns journal entries for an account The returned Set is a Set of SplitTransactions with only the entries for the required Account. They will therefore be unbalanced.
func (*Accountant) FetchChart ¶
func (a *Accountant) FetchChart() (*Chart, error)
FetchChart fetches a chart from storage
func (*Accountant) FetchTransaction ¶
func (a *Accountant) FetchTransaction(jrnId uint64) (*SplitTransaction, error)
FetchTransaction retrieves a journal transaction identified by its journal id
func (*Accountant) NextNominal ¶
func (a *Accountant) NextNominal(prnt, starter Nominal) (*Nominal, error)
NextNominal returns the next nominal in sequence of child accounts of prnt. starter is given and returned if the prnt does not have child accounts
func (*Accountant) WriteTransaction ¶
func (a *Accountant) WriteTransaction(txn *SplitTransaction) (uint64, error)
WriteTransaction writes a transaction with default datetime of Now()
func (*Accountant) WriteTransactionWithDate ¶
func (a *Accountant) WriteTransactionWithDate(txn *SplitTransaction, dt time.Time) (uint64, error)
WriteTransactionWithDate writes a transaction with user supplied datetime
type Chart ¶
type Chart struct {
// contains filtered or unexported fields
}
Chart is a COA
func (*Chart) GetAccount ¶
GetAccount returns first account matching nominal. Can return nil if not found
func (*Chart) GetAccountByName ¶ added in v0.0.3
GetAccountByName returns first account matching nominal. Can return nil if not found
func (*Chart) GetParentId ¶
GetParentId returns the parent nominal code for the required account. Returned code can be empty indicating that the account has no parent, and thus is likely to be the root account
func (*Chart) HasAccount ¶
HasAccount tests if chart contains an account matching nominal code
func (*Chart) SetRootNode ¶
SetRootNode directly sets the COA root node
type ChartDefinition ¶
type ChartDefinition struct {
// contains filtered or unexported fields
}
ChartDefinition is a helper to retrieve chart definition xml
func NewChartDefinition ¶
func NewChartDefinition(xmlFileName string) (*ChartDefinition, error)
NewChartDefinition constructor
func NewChartDefinitionFromString ¶ added in v0.0.7
func NewChartDefinitionFromString(def string) *ChartDefinition
NewChartDefinitionFromBytes constructor
func (*ChartDefinition) GetDefinition ¶
func (c *ChartDefinition) GetDefinition() (*xmldom.Document, error)
GetDefinition returns parsed xml as Dom Document
type Entries ¶
type Entries []*Entry
Entries is a set of transaction entries
func (*Entries) CheckBalance ¶
CheckBalance returns true if the set of entries balance else false
func (*Entries) Filter ¶
func (e *Entries) Filter(f FilterFunc) Entries
Filter returns entries with a filter function
type Entry ¶
type Entry struct {
// contains filtered or unexported fields
}
type FilterFunc ¶
FilterFunc is a definition for a filter function
type NodeFinder ¶
type NodeFinder struct { tree.VisitorIFace // contains filtered or unexported fields }
NodeFinder finds node with required Nominal id
func (*NodeFinder) Visit ¶
func (v *NodeFinder) Visit(n tree.NodeIFace) interface{}
Visit visits each mode and returns a map of account balances
type NodeSaver ¶
type NodeSaver struct { tree.VisitorIFace // contains filtered or unexported fields }
NodeSaver saves account ledger definitions to the database
type Nominal ¶
type Nominal string
Nominal is an account nominal code. Use the constructor
func MustNewNominal ¶
MustNewNominal constructor. Will Panic if n is not a valid nominal code
func NewNominal ¶
NewNominal constructor. Checks that code matches validation pattern
type SimpleTransactionBuilder ¶
type SimpleTransactionBuilder struct {
// contains filtered or unexported fields
}
SimpleTransactionBuilder a builder for a Simple (2 entry) SplitTransaction
func (*SimpleTransactionBuilder) Build ¶
func (b *SimpleTransactionBuilder) Build() *SplitTransaction
Build builds and returns a SplitTransaction
func (*SimpleTransactionBuilder) WithDate ¶
func (b *SimpleTransactionBuilder) WithDate(dt time.Time) *SimpleTransactionBuilder
WithDate adds a date to the builder
func (*SimpleTransactionBuilder) WithNote ¶
func (b *SimpleTransactionBuilder) WithNote(note string) *SimpleTransactionBuilder
WithNote adds a note to the builder
func (*SimpleTransactionBuilder) WithReference ¶
func (b *SimpleTransactionBuilder) WithReference(ref uint64) *SimpleTransactionBuilder
WithReference adds a reference to the builder
func (*SimpleTransactionBuilder) WithSource ¶
func (b *SimpleTransactionBuilder) WithSource(src string) *SimpleTransactionBuilder
WithSource adds a source to the builder
type SplitTransaction ¶
type SplitTransaction struct {
// contains filtered or unexported fields
}
SplitTransaction is a basic multi ledger journal entry
func (*SplitTransaction) CheckBalance ¶
func (s *SplitTransaction) CheckBalance() bool
CheckBalance returns true if the transaction entries balance else false
func (*SplitTransaction) Date ¶
func (s *SplitTransaction) Date() time.Time
Date returns the transaction datetime
func (*SplitTransaction) Entries ¶
func (s *SplitTransaction) Entries() Entries
Entries returns the transaction ledger journal entries
func (*SplitTransaction) GetAmount ¶
func (s *SplitTransaction) GetAmount() (int64, error)
func (*SplitTransaction) GetCrAc ¶
func (s *SplitTransaction) GetCrAc() []*Nominal
GetCrAc return credit account ids
func (*SplitTransaction) GetDrAc ¶
func (s *SplitTransaction) GetDrAc() []*Nominal
GetDrAc return debit account ids
func (*SplitTransaction) GetEntry ¶
func (s *SplitTransaction) GetEntry(nominal Nominal) (*Entry, error)
GetEntry returns the entry for the nominal code
func (*SplitTransaction) IsSimple ¶
func (s *SplitTransaction) IsSimple() bool
IsSimple is this a simple transaction?
func (*SplitTransaction) Note ¶
func (s *SplitTransaction) Note() string
Note returns the transaction note
func (*SplitTransaction) Ref ¶
func (s *SplitTransaction) Ref() uint64
Ref returns the transaction reference id
func (*SplitTransaction) Src ¶
func (s *SplitTransaction) Src() string
Src returns the transaction src reference
type SplitTransactionBuilder ¶
type SplitTransactionBuilder struct {
// contains filtered or unexported fields
}
SplitTransactionBuilder a build for a Split Transaction
func NewSimpleTransactionBuilder ¶
func NewSimpleTransactionBuilder(id uint64, drAc, crAc Nominal, amount int64) *SplitTransactionBuilder
NewSimpleTransactionBuilder returns a SimpleTransactionBuilder
func NewSplitTransactionBuilder ¶
func NewSplitTransactionBuilder(id uint64) *SplitTransactionBuilder
NewSplitTransactionBuilder returns a SplitTransactionBuilder
func (*SplitTransactionBuilder) Build ¶
func (b *SplitTransactionBuilder) Build() *SplitTransaction
Build builds and returns a SplitTransaction
func (*SplitTransactionBuilder) WithDate ¶
func (b *SplitTransactionBuilder) WithDate(dt time.Time) *SplitTransactionBuilder
WithDate adds a date to the builder
func (*SplitTransactionBuilder) WithEntries ¶
func (b *SplitTransactionBuilder) WithEntries(entries Entries) *SplitTransactionBuilder
WithEntries adds a set of Entry to the builder
func (*SplitTransactionBuilder) WithEntry ¶
func (b *SplitTransactionBuilder) WithEntry(entry Entry) *SplitTransactionBuilder
WithEntry adds a single Entry to the builder
func (*SplitTransactionBuilder) WithNote ¶
func (b *SplitTransactionBuilder) WithNote(note string) *SplitTransactionBuilder
WithNote adds a note to the builder
func (*SplitTransactionBuilder) WithReference ¶
func (b *SplitTransactionBuilder) WithReference(ref uint64) *SplitTransactionBuilder
WithReference adds a reference to the builder
func (*SplitTransactionBuilder) WithSource ¶
func (b *SplitTransactionBuilder) WithSource(src string) *SplitTransactionBuilder
WithSource adds a source to the builder