lib

package
v0.0.0-...-9047a3f Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 6, 2017 License: GPL-3.0 Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ATUnknown       = -1
	ATUnset         = 0
	ATTransactional = 1
	ATSaving        = 2
	ATProperty      = 3
	ATInvestment    = 4
	ATLoan          = 5
)
View Source
const (
	MCTUnknown = iota
	MCTUnset
	MCTCost
	MCTTransfer
	MCTIncome
)

MCT* constants identify particular type in database (used as id)

View Source
const (
	AppName = "financoj"

	NotSetIntValue    int     = 0
	NotSetFloatValue  float64 = 0.0
	NotSetStringValue         = ""

	DateFormat    = "2006-01-02"
	DateSeparator = "-"
)

Application internal settings

View Source
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

func BudgetList(db *gsqlitehandler.SqliteDB, p *BPeriod, c *Category) (f func() *Budget, err error)

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

func GetConfigSettings() (dataFile string, currency string, err error)

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

type AccountBalanceReportEntry struct {
	Account *Account
	Value   float64
}

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

type AssetsSummaryReportEntry struct {
	Account *Account
	Balance float64
}

func AssetsSummaryReportEntryNew

func AssetsSummaryReportEntryNew() *AssetsSummaryReportEntry

type BPeriod

type BPeriod struct {
	Year  int64
	Month int64
}

Basic type for keeping budget period (year-month).

func BPeriodCurrent

func BPeriodCurrent() (b *BPeriod, err error)

func BPeriodParseYM

func BPeriodParseYM(s string) (b *BPeriod, err error)

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

func BPeriodParseYOrYM(s string) (b *BPeriod, err error)

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

func (p *BPeriod) GetStrings() (y, m string)

func (*BPeriod) Set

func (p *BPeriod) Set(y, m int64) error

Set verifies if year y and month m are within their ranges and assigns it to the budgeting period fields.

func (*BPeriod) String

func (p *BPeriod) String() string

String satisfies fmt.Stringer interface in order to get human readable names.

type BalanceTimeReportEntry

type BalanceTimeReportEntry struct {
	Period *BPeriod
	Value  float64
}

func BalanceTimeReportEntryNew

func BalanceTimeReportEntryNew() *BalanceTimeReportEntry

type Budget

type Budget struct {
	Period   *BPeriod
	Category *Category
	Value    float64
	Currency string
}

Budget is primary structure for budget entity

func BudgetGet

func BudgetGet(db *gsqlitehandler.SqliteDB, p *BPeriod, c *Category) (b *Budget, err error)

BudgetGet returns pointer to Budget for given period and category

func BudgetNew

func BudgetNew() *Budget

BudgetNew returns pointer to new instance of Budget object

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

type CategoryBalanceReportEntry struct {
	Category *Category
	Balance  float64
}

func CategoryBalanceReportBalanceNew

func CategoryBalanceReportBalanceNew() *CategoryBalanceReportEntry

type ExchangeRate

type ExchangeRate struct {
	CurrencyFrom string
	CurrencyTo   string
	Rate         float64
}

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

type IncomeVsCostReportEntry struct {
	Period *BPeriod
	Income float64
	Cost   float64
}

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

type MainCategoryType struct {
	Id     int
	Name   string
	Factor int
}

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

type NetValueMonthlyReportEntry struct {
	Period *BPeriod
	Value  float64
}

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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL