Documentation ¶
Index ¶
- Constants
- func AccountAdd(db *gsqlitehandler.SqliteDB, a *Account) error
- func AccountEdit(db *gsqlitehandler.SqliteDB, a *Account) error
- func AccountList(db *gsqlitehandler.SqliteDB, n string, d string, i string, c string, ...) (f func() *Account, err error)
- func AccountRemove(db *gsqlitehandler.SqliteDB, a *Account) error
- func BudgetAdd(db *gsqlitehandler.SqliteDB, b *Budget) error
- func BudgetEdit(db *gsqlitehandler.SqliteDB, b *Budget) error
- func BudgetList(db *gsqlitehandler.SqliteDB, p *BPeriod, c *Category) (f func() *Budget, err error)
- func BudgetRemove(db *gsqlitehandler.SqliteDB, b *Budget) error
- func CategoryAdd(db *gsqlitehandler.SqliteDB, c *Category) error
- func CategoryEdit(db *gsqlitehandler.SqliteDB, c *Category) error
- func CategoryList(db *gsqlitehandler.SqliteDB, m *MainCategory, c string, s ItemStatus) (f func() *Category, err error)
- func CategoryRemove(db *gsqlitehandler.SqliteDB, c *Category) error
- func CompoundInternalCostAdd(db *gsqlitehandler.SqliteDB, date time.Time, c *Category, ...) error
- func CompoundSplitAdd(db *gsqlitehandler.SqliteDB, d time.Time, a *Account, value float64, ...) error
- func CompoundTransferAdd(db *gsqlitehandler.SqliteDB, date time.Time, accFrom, accTo *Account, ...) error
- func CreateNewDataFile(db *gsqlitehandler.SqliteDB) error
- func ExchangeRateAdd(db *gsqlitehandler.SqliteDB, e *ExchangeRate) error
- func ExchangeRateEdit(db *gsqlitehandler.SqliteDB, e *ExchangeRate) error
- func ExchangeRateList(db *gsqlitehandler.SqliteDB) (f func() *ExchangeRate, err error)
- func ExchangeRateRemove(db *gsqlitehandler.SqliteDB, e *ExchangeRate) error
- func GetConfigSettings() (dataFile string, currency string, err error)
- func GetDataFileHandler(filePath string) *gsqlitehandler.SqliteDB
- func MainCategoryAdd(db *gsqlitehandler.SqliteDB, m *MainCategory) error
- func MainCategoryEdit(db *gsqlitehandler.SqliteDB, m *MainCategory) error
- func MainCategoryList(db *gsqlitehandler.SqliteDB, t *MainCategoryType, n string, s ItemStatus) (f func() *MainCategory, err error)
- func MainCategoryRemove(db *gsqlitehandler.SqliteDB, m *MainCategory) error
- func ReportAccountBalance(db *gsqlitehandler.SqliteDB, d time.Time) (f func() *AccountBalanceReportEntry, err error)
- func ReportAssetsSummary(db *gsqlitehandler.SqliteDB, currency string, onDate time.Time) (f func() *AssetsSummaryReportEntry, err error)
- func ReportBudgetCategories(db *gsqlitehandler.SqliteDB, p *BPeriod, currency string) (f func() *BudgetCategoriesReportEntry, err error)
- func ReportBudgetMainCategories(db *gsqlitehandler.SqliteDB, p *BPeriod, currency string) (f func() *BudgetMainCategoryReportEntry, err error)
- func ReportCategoriesBalanceMonthly(db *gsqlitehandler.SqliteDB, currency string, c *Category, ...) (f func() *BalanceTimeReportEntry, err error)
- func ReportCategoriesBalanceYearly(db *gsqlitehandler.SqliteDB, currency string, c *Category, ...) (f func() *BalanceTimeReportEntry, err error)
- func ReportCategoryBalance(db *gsqlitehandler.SqliteDB, currency string, dateFrom, dateTo time.Time, ...) (f func() *CategoryBalanceReportEntry, err error)
- func ReportIncomeVsCostMonthly(db *gsqlitehandler.SqliteDB, currency string, dateFrom, dateTo time.Time) (f func() *IncomeVsCostReportEntry, err error)
- func ReportIncomeVsCostYearly(db *gsqlitehandler.SqliteDB, currency string, dateFrom, dateTo time.Time) (f func() *IncomeVsCostReportEntry, err error)
- func ReportMainCategoriesBalanceMonthly(db *gsqlitehandler.SqliteDB, currency string, m *MainCategory, ...) (f func() *BalanceTimeReportEntry, err error)
- func ReportMainCategoriesBalanceYearly(db *gsqlitehandler.SqliteDB, currency string, m *MainCategory, ...) (f func() *BalanceTimeReportEntry, err error)
- func ReportMainCategoryBalance(db *gsqlitehandler.SqliteDB, currency string, dateFrom, dateTo time.Time, ...) (f func() *MainCategoryBalanceReportEntry, err error)
- func ReportNetValueMonthly(db *gsqlitehandler.SqliteDB, currency string, dateFrom, dateTo time.Time) (f func() *NetValueMonthlyReportEntry, err error)
- func ReportTransactionBalance(db *gsqlitehandler.SqliteDB, currency string, dateFrom, dateTo time.Time, ...) (f func() *TransactionBalanceReportEntry, err error)
- func TransactionAdd(db *gsqlitehandler.SqliteDB, t *Transaction) error
- func TransactionEdit(db *gsqlitehandler.SqliteDB, t *Transaction) error
- func TransactionList(db *gsqlitehandler.SqliteDB, dateF, dateT time.Time, a *Account, ...) (f func() *Transaction, err error)
- func TransactionRemove(db *gsqlitehandler.SqliteDB, t *Transaction) error
- type Account
- type AccountBalanceReportEntry
- type AccountType
- type AssetsSummaryReportEntry
- type BPeriod
- type BalanceTimeReportEntry
- type Budget
- type BudgetCategoriesReportEntry
- type BudgetMainCategoryReportEntry
- type Category
- type CategoryBalanceReportEntry
- type ExchangeRate
- type IncomeVsCostReportEntry
- type ItemStatus
- type MainCategory
- type MainCategoryBalanceReportEntry
- type MainCategoryType
- type NetValueMonthlyReportEntry
- type Transaction
- type TransactionBalanceReportEntry
Constants ¶
const ( ATUnknown = -1 ATUnset = 0 ATTransactional = 1 ATSaving = 2 ATProperty = 3 ATInvestment = 4 ATLoan = 5 )
const ( MCTUnknown = iota MCTUnset MCTCost MCTTransfer MCTIncome )
MCT* constants identify particular type in database (used as id)
const ( AppName = "financoj" NotSetIntValue int = 0 NotSetFloatValue float64 = 0.0 NotSetStringValue = "" DateFormat = "2006-01-02" DateSeparator = "-" )
Application internal settings
const ( // SOMCNonBudgetaryID is a special main category for transfers SOMCNonBudgetaryID int64 = 10 // SOCategoryTransferID is a special category for transfers SOCategoryTransferID int64 = 10 )
Special objects
Variables ¶
This section is empty.
Functions ¶
func AccountAdd ¶
func AccountAdd(db *gsqlitehandler.SqliteDB, a *Account) error
AccountAdd adds new account
func AccountEdit ¶
func AccountEdit(db *gsqlitehandler.SqliteDB, a *Account) error
AccountEdit updates account with new values. All fields except ID are updated, so make sure you pass old values in other fields.
func AccountList ¶
func AccountList(db *gsqlitehandler.SqliteDB, n string, d string, i string, c string, t AccountType, s ItemStatus) (f func() *Account, err error)
AccountList returns all accounts from file as closure
func AccountRemove ¶
func AccountRemove(db *gsqlitehandler.SqliteDB, a *Account) error
AccountRemove updates given account status with ISClose
func BudgetAdd ¶
func BudgetAdd(db *gsqlitehandler.SqliteDB, b *Budget) error
BudgetAdd adds a new budget
func BudgetEdit ¶
func BudgetEdit(db *gsqlitehandler.SqliteDB, b *Budget) error
BudgetEdit updates budget with new values. All fields are updated, so make sure you pass old values in argument 'b'.
func BudgetList ¶
BudgetList returns budgets from file as closure
func BudgetRemove ¶
func BudgetRemove(db *gsqlitehandler.SqliteDB, b *Budget) error
BudgetRemove removes given Budget from file
func CategoryAdd ¶
func CategoryAdd(db *gsqlitehandler.SqliteDB, c *Category) error
CategoryAdd add new category with name n
func CategoryEdit ¶
func CategoryEdit(db *gsqlitehandler.SqliteDB, c *Category) error
CategoryEdit updates category with new values for name, main category and status All three fields are updated, so make sure you pass old values in argument 'c'
func CategoryList ¶
func CategoryList(db *gsqlitehandler.SqliteDB, m *MainCategory, c string, s ItemStatus) (f func() *Category, err error)
CategoryList returns all categories from file as closure
func CategoryRemove ¶
func CategoryRemove(db *gsqlitehandler.SqliteDB, c *Category) error
CategoryRemove updates given category status with ISClose
func CompoundInternalCostAdd ¶
func CompoundInternalCostAdd(db *gsqlitehandler.SqliteDB, date time.Time, c *Category, accCost, accTransfer *Account, value float64, description string, e *ExchangeRate) error
CompoundInternalCostAdd adds two transactions with NonBudgetary category 'transfer'. It should be used to transfer money between accounts.
func CompoundSplitAdd ¶
func CompoundSplitAdd(db *gsqlitehandler.SqliteDB, d time.Time, a *Account, value float64, description string, c1, c2 *Category) error
CompountSplitAdd adds two transactions for two different categories with half of the value each.
func CompoundTransferAdd ¶
func CompoundTransferAdd(db *gsqlitehandler.SqliteDB, date time.Time, accFrom, accTo *Account, value float64, description string, e *ExchangeRate) error
CompoundTransferAdd adds two transactions with NonBudgetary category 'transfer'. It should be used to transfer money between accounts.
func CreateNewDataFile ¶
func CreateNewDataFile(db *gsqlitehandler.SqliteDB) error
CreateNewDataFile creates new data file for given data file handler
func ExchangeRateAdd ¶
func ExchangeRateAdd(db *gsqlitehandler.SqliteDB, e *ExchangeRate) error
ExchangeRateAdd add new currency exchange rate
func ExchangeRateEdit ¶
func ExchangeRateEdit(db *gsqlitehandler.SqliteDB, e *ExchangeRate) error
ExchangeRateEdit updates currency exchange rates for given currencies
func ExchangeRateList ¶
func ExchangeRateList(db *gsqlitehandler.SqliteDB) (f func() *ExchangeRate, err error)
ExchangeRateList returns all currency exchange rates as closure
func ExchangeRateRemove ¶
func ExchangeRateRemove(db *gsqlitehandler.SqliteDB, e *ExchangeRate) error
ExchangeRateRemove removes given currency exchange rate
func GetConfigSettings ¶
GetConfigSettings returns contents of settings file
func GetDataFileHandler ¶
func GetDataFileHandler(filePath string) *gsqlitehandler.SqliteDB
GetDataFileHandler returns new file handler for given path
func MainCategoryAdd ¶
func MainCategoryAdd(db *gsqlitehandler.SqliteDB, m *MainCategory) error
MainCategoryAdd adds new main category with type t and name n
func MainCategoryEdit ¶
func MainCategoryEdit(db *gsqlitehandler.SqliteDB, m *MainCategory) error
MainCategoryEdit updates main category with new values for type, name and status Both type, name and status is updated, so make sure you pass old values in argument 'm'
func MainCategoryList ¶
func MainCategoryList(db *gsqlitehandler.SqliteDB, t *MainCategoryType, n string, s ItemStatus) (f func() *MainCategory, err error)
MainCategoryList returns closure which generates a sequence of Main Category objects
func MainCategoryRemove ¶
func MainCategoryRemove(db *gsqlitehandler.SqliteDB, m *MainCategory) error
MainCategoryRemove updates main category status with ISClose
func ReportAccountBalance ¶
func ReportAccountBalance(db *gsqlitehandler.SqliteDB, d time.Time) (f func() *AccountBalanceReportEntry, err error)
func ReportAssetsSummary ¶
func ReportAssetsSummary(db *gsqlitehandler.SqliteDB, currency string, onDate time.Time) (f func() *AssetsSummaryReportEntry, err error)
func ReportBudgetCategories ¶
func ReportBudgetCategories(db *gsqlitehandler.SqliteDB, p *BPeriod, currency string) (f func() *BudgetCategoriesReportEntry, err error)
func ReportBudgetMainCategories ¶
func ReportBudgetMainCategories(db *gsqlitehandler.SqliteDB, p *BPeriod, currency string) (f func() *BudgetMainCategoryReportEntry, err error)
func ReportCategoriesBalanceMonthly ¶
func ReportCategoriesBalanceMonthly(db *gsqlitehandler.SqliteDB, currency string, c *Category, dateFrom, dateTo time.Time) (f func() *BalanceTimeReportEntry, err error)
func ReportCategoriesBalanceYearly ¶
func ReportCategoriesBalanceYearly(db *gsqlitehandler.SqliteDB, currency string, c *Category, dateFrom, dateTo time.Time) (f func() *BalanceTimeReportEntry, err error)
func ReportCategoryBalance ¶
func ReportCategoryBalance(db *gsqlitehandler.SqliteDB, currency string, dateFrom, dateTo time.Time, a *Account, c *Category, m *MainCategory) (f func() *CategoryBalanceReportEntry, err error)
func ReportIncomeVsCostMonthly ¶
func ReportIncomeVsCostMonthly(db *gsqlitehandler.SqliteDB, currency string, dateFrom, dateTo time.Time) (f func() *IncomeVsCostReportEntry, err error)
func ReportIncomeVsCostYearly ¶
func ReportIncomeVsCostYearly(db *gsqlitehandler.SqliteDB, currency string, dateFrom, dateTo time.Time) (f func() *IncomeVsCostReportEntry, err error)
func ReportMainCategoriesBalanceMonthly ¶
func ReportMainCategoriesBalanceMonthly(db *gsqlitehandler.SqliteDB, currency string, m *MainCategory, dateFrom, dateTo time.Time) (f func() *BalanceTimeReportEntry, err error)
func ReportMainCategoriesBalanceYearly ¶
func ReportMainCategoriesBalanceYearly(db *gsqlitehandler.SqliteDB, currency string, m *MainCategory, dateFrom, dateTo time.Time) (f func() *BalanceTimeReportEntry, err error)
func ReportMainCategoryBalance ¶
func ReportMainCategoryBalance(db *gsqlitehandler.SqliteDB, currency string, dateFrom, dateTo time.Time, a *Account, m *MainCategory) (f func() *MainCategoryBalanceReportEntry, err error)
func ReportNetValueMonthly ¶
func ReportNetValueMonthly(db *gsqlitehandler.SqliteDB, currency string, dateFrom, dateTo time.Time) (f func() *NetValueMonthlyReportEntry, err error)
func ReportTransactionBalance ¶
func ReportTransactionBalance(db *gsqlitehandler.SqliteDB, currency string, dateFrom, dateTo time.Time, a *Account, c *Category, m *MainCategory, description string) (f func() *TransactionBalanceReportEntry, err error)
func TransactionAdd ¶
func TransactionAdd(db *gsqlitehandler.SqliteDB, t *Transaction) error
TransactionAdd adds new transaction t
func TransactionEdit ¶
func TransactionEdit(db *gsqlitehandler.SqliteDB, t *Transaction) error
TransactionEdit updates transaction with new values. All fields are updated, so make sure you pass old values in argument t.
func TransactionList ¶
func TransactionList(db *gsqlitehandler.SqliteDB, dateF, dateT time.Time, a *Account, description string, c *Category, m *MainCategory) (f func() *Transaction, err error)
TransactionList returns all transactions from file as closure
func TransactionRemove ¶
func TransactionRemove(db *gsqlitehandler.SqliteDB, t *Transaction) error
TransactionRemove removes given transaction completely from data file
Types ¶
type Account ¶
type Account struct { Id int64 Name string Description string Institution string Currency string AType AccountType Status ItemStatus }
Account represents the basic object for account
func AccountForID ¶
func AccountForID(db *gsqlitehandler.SqliteDB, i int) (a *Account, err error)
AccountForID returns pointer to the Account for given id
func AccountForName ¶
func AccountForName(db *gsqlitehandler.SqliteDB, n string) (a *Account, err error)
AccountForName returns pointer to Account for given (part of) name
type AccountBalanceReportEntry ¶
AccountBalanceEntry represents one line of the report
func AccountBalanceReportEntryNew ¶
func AccountBalanceReportEntryNew() *AccountBalanceReportEntry
type AccountType ¶
type AccountType int
AccountType describes the type of an account
func (AccountType) String ¶
func (at AccountType) String() string
String satisfies fmt.Stringer interface in order to get human readable names of account type
type AssetsSummaryReportEntry ¶
func AssetsSummaryReportEntryNew ¶
func AssetsSummaryReportEntryNew() *AssetsSummaryReportEntry
type BPeriod ¶
Basic type for keeping budget period (year-month).
func BPeriodCurrent ¶
func BPeriodParseYM ¶
BPeriodParseYM converts string (expected format: yyyy-mm) to year and month and after verification if they are within their ranges assign them to the budget period fields.
func BPeriodParseYOrYM ¶
BPeriodParseYOrYM converts string (expected format: yyyy-mm or yyyy) to year and month or to year only and after verification if they are within their ranges assign them to the budget period fields.
func (*BPeriod) GetStrings ¶
type BalanceTimeReportEntry ¶
func BalanceTimeReportEntryNew ¶
func BalanceTimeReportEntryNew() *BalanceTimeReportEntry
type Budget ¶
Budget is primary structure for budget entity
type BudgetCategoriesReportEntry ¶
type BudgetCategoriesReportEntry struct { Category *Category Limit float64 Actual float64 Difference float64 }
BudgetCategoryEntry represents one line of the report
func BudgetCategoriesReportEntryNew ¶
func BudgetCategoriesReportEntryNew() *BudgetCategoriesReportEntry
type BudgetMainCategoryReportEntry ¶
type BudgetMainCategoryReportEntry struct { MainCategory *MainCategory Limit float64 Actual float64 Difference float64 }
BudgetMainCategoryEntry represents one line of the report
func BudgetMainCategoryReportEntryNew ¶
func BudgetMainCategoryReportEntryNew() *BudgetMainCategoryReportEntry
type Category ¶
type Category struct { Id int64 Main *MainCategory Name string Status ItemStatus }
Category represents the basic object for category
func CategoryForID ¶
func CategoryForID(db *gsqlitehandler.SqliteDB, i int) (c *Category, err error)
CategoryForID returns pointer to Category for given id
func CategoryForName ¶
func CategoryForName(db *gsqlitehandler.SqliteDB, n string) (c *Category, err error)
CategoryForName returns pointer to Category for given (part of) name
func CategoryNew ¶
func CategoryNew() *Category
type CategoryBalanceReportEntry ¶
func CategoryBalanceReportBalanceNew ¶
func CategoryBalanceReportBalanceNew() *CategoryBalanceReportEntry
type ExchangeRate ¶
Currency represents the object of currencies exchange rate
func ExchangeRateForCurrencies ¶
func ExchangeRateForCurrencies(db *gsqlitehandler.SqliteDB, cf string, ct string) (e *ExchangeRate, err error)
ExchangeRateForCurrencies returns pointer to ExchangeRateT for given currency_from and currency_to
type IncomeVsCostReportEntry ¶
func IncomeVsCostReportEntryNew ¶
func IncomeVsCostReportEntryNew() *IncomeVsCostReportEntry
type ItemStatus ¶
type ItemStatus int
ItemStatus indicates the life cycle of an object
const ( ISUnset ItemStatus = -1 ISClose ItemStatus = 0 ISOpen ItemStatus = 1 ISSystem ItemStatus = 2 )
func (ItemStatus) String ¶
func (is ItemStatus) String() string
String satisfies fmt.Stringer interface in order to get human readable names
type MainCategory ¶
type MainCategory struct { Id int64 MType *MainCategoryType Name string Status ItemStatus }
MainCategory represents the basic object for main category
func MainCategoryForID ¶
func MainCategoryForID(db *gsqlitehandler.SqliteDB, i int) (m *MainCategory, err error)
MainCategoryForID returns pointer to the MainCategory for given id
func MainCategoryForName ¶
func MainCategoryForName(db *gsqlitehandler.SqliteDB, n string) (m *MainCategory, err error)
MainCategoryForName returns pointer to MainCategoryT for given (part of) name
func MainCategoryNew ¶
func MainCategoryNew() *MainCategory
MainCategoryNew returns pointer to newly created MainCategory object
type MainCategoryBalanceReportEntry ¶
type MainCategoryBalanceReportEntry struct { MainCategory *MainCategory Balance float64 }
func MainCategoryBalanceReportEntryNew ¶
func MainCategoryBalanceReportEntryNew() *MainCategoryBalanceReportEntry
type MainCategoryType ¶
MainCategoryStatusT describes the behaviour of categories and its descendants (transactions)
func MainCategoryTypeForID ¶
func MainCategoryTypeForID(db *gsqlitehandler.SqliteDB, i int) (mt *MainCategoryType, err error)
MainCategoryTypeForID returns pointer to the Main Category Type for given ID
func MainCategoryTypeForName ¶
func MainCategoryTypeForName(db *gsqlitehandler.SqliteDB, n string) (mt *MainCategoryType, err error)
MainCategoryTYpeForName returns pointer to Main Category Type for given (part of) name
type NetValueMonthlyReportEntry ¶
func NetValueMonthlyReportEntryNew ¶
func NetValueMonthlyReportEntryNew() *NetValueMonthlyReportEntry
type Transaction ¶
type Transaction struct { Id int64 Date time.Time Category *Category Account *Account // Value holds the values with the same sign as user typed it. The same goes to database file. // To classify transaction as cost, income (i.e. negative or positive value) you need to check // the transactions main category (attribute of category) type factor. // To get transaction value with sign use the method GetSValue(). // This principle is important in order to correctly re-classify transactions in case their // categories and/or main categories change. Value float64 Description string }
Transaction represents the basic object for transaction
func TransactionForID ¶
func TransactionForID(db *gsqlitehandler.SqliteDB, i int) (t *Transaction, err error)
TransactionForID returns pointer to Transaction for given id
func TransactionNew ¶
func TransactionNew() *Transaction
func (*Transaction) GetSValue ¶
func (t *Transaction) GetSValue() float64
type TransactionBalanceReportEntry ¶
type TransactionBalanceReportEntry struct { Transaction *Transaction Balance float64 }
func TransactionBalanceReportEntryNew ¶
func TransactionBalanceReportEntryNew() *TransactionBalanceReportEntry