hackerbase/doc/bank.md

95 lines
2.5 KiB
Markdown

Bank Support Modules
====================
The ```bank-account``` abstraction module is used for all bank account
statements processing. Only one loader is implemented at the moment,
```bank-fio``` for Fio CSV exports.
Modules
-------
### Bank Account
(import bank-account)
This module creates a thin abstraction layer for bank accounts and
transactions.
(make-bank-account number bank [transactions])
* ```number``` - account number
* ```bank``` - bank code
* ```transactions``` - optional list of initial transactions
Creates a new bank account data structure.
The data structure has the following accessors:
* ```(bank-account-transactions ba)``` - returns the transactions list
* ```(bank-account-number ba)```- retrieves the bank account number
* ```(bank-account-bank ba)``` - returns the bank account bank code
The underlying implementation is currently a plain list but is subject
to change in the future.
(bank-account-insert account transaction)
* ```account``` - bank account structure
* ```transaction``` - transaction structure to add
Adds (prepends) given ```transaction``` to the list of transactions of
given bank ```account```.
(make-bank-transaction i d a c v m t A B s)
* ```i``` - transaction id
* ```d``` - date
* ```a``` - amount
* ```c``` - currency
* ```v``` - variable symbol
* ```m``` - message
* ```t``` - transaction type
* ```A``` - account number
* ```B``` - bank code
* ```s``` - specific symbol
Creates new bank transaction data structure. The underlying
implementation is currently a record.
The following accessors are provided:
* ```bank-transaction-id```
* ```bank-transaction-date```
* ```bank-transaction-amount```
* ```bank-transaction-currency```
* ```bank-transaction-varsym```
* ```bank-transaction-message```
* ```bank-transaction-type```
* ```bank-transaction-account```
* ```bank-transaction-specsym```
More fields with accessors will be added as other modules will need
them.
(bank-accounts-member? bas acc bc)
* ```bas``` - list of known bank accounts
* ```acc``` - account number (string)
* ```bc``` - bank code (string)
Returns true if given combination of ```acc```/```bc``` is in
```bas```.
### Bank Fio
(import bank-fio)
This module implements parser/loader for Fio account statements in CSV
format.
(bank-fio-parse fn)
* ```fn``` - path to given file with CSV export
Uses ```csv-parse``` from ```util-csv``` module and loads the contents
into ```bank-account``` structure with list of ```bank-transaction```s.