csb43.ofx

Note

license: GNU Lesser General Public License v3.0 (see LICENSE)

Partial implementation of a OFX file writer.

This package is not intended to fully implement the OFX Spec. Its final purpose is the conversion from CSB43 (norma 43 del Consejo Superior Bancario). That is, only transaction response is (partially) implemented.

See also

References:

class csb43.ofx.Balance(tagName='bal', **kwargs)

A balance

get_amount() int | float | Decimal | None
Return type:

the amount of the balance

get_date() datetime | None
Return type:

datetime – date of the balance

get_tag_name() str
Return type:

the XML tag name

set_amount(value: int | float | Decimal)
Parameters:

value – amount

set_date(value: datetime)
Parameters:

value (datetime.datetime) – a date object

set_tag_name(name: str)

Set a XML tag name for this object

Parameters:

name (str) – name for the XML tag

class csb43.ofx.BankAccount(tagName='bankaccfrom', **kwargs)

A bank account

TYPE = ['CHECKING', 'SAVINGS', 'MONEYMRKT', 'CREDITLINE']

account type

get_bank() str
Return type:

str – bank identifier (Spain: banco, entidad)

get_branch() str
Return type:

str – branch identifier (Spain: sucursal, oficina)

get_id() str
Return type:

str – account identifier

get_key() str | None
Return type:

str – checksum (Spain: digitos de control)

get_tag_name() str
Return type:

the XML tag name

get_type() str
Return type:

str – type of account. See TYPE (default ‘SAVINGS’)

set_bank(value: str)
Parameters:

value – bank identifier

set_branch(value: str)
Parameters:

branch – branch identifier

set_id(value: str)
Parameters:

value – account id

set_key(value: str)
Parameters:

value – checksum

set_tag_name(name: str)

Set a XML tag name for this object

Parameters:

name (str) – name for the XML tag

set_type(value: str)
Parameters:

value (str) – type of account

class csb43.ofx.File(tagName='ofx', **kwargs)

An OFX file

add_response(value: Response)

Add a response to the file

Parameters:

value (Response) – a response object to include in this object

get_responses() Sequence[Response]
Return type:

list of Response

get_tag_name() str
Return type:

the XML tag name

set_tag_name(name: str)

Set a XML tag name for this object

Parameters:

name (str) – name for the XML tag

csb43.ofx.SGMLAggregate(name: str, content) str

Build a name SGML aggregate with content as body.

Args:

name – tag name content – content of the node

Return:

(str) <NAME>content</NAME>

>>> SGMLAggregate("hello", 12)
'<HELLO>12</HELLO>'
csb43.ofx.SGMLElement(name: str, content) str

Build a name SGML element with content as body.

Args:

name – tag name content – content of the node

Return:

(str) <NAME>content

>>> SGMLElement("hello", 12)
'<HELLO>12'
class csb43.ofx.Transaction(tagName='stmttrn', **kwargs)

A OFX transaction

TYPE = ['CREDIT', 'DEBIT', 'INT', 'DIV', 'FEE', 'SRVCHG', 'DEP', 'ATM', 'POS', 'XFER', 'CHECK', 'PAYMENT', 'CASH', 'DIRECTDEP', 'DIRECTDEBIT', 'REPEATPMT', 'OTHER']

type of transaction

get_amount() int | float | Decimal | None
Return type:

number – amount of transaction

get_bank_account_to() BankAccount | None
Return type:

BankAccount – account the transaction is transferring to

get_cc_account_to() BankAccount | None

cc account to

get_check_num() str
Return type:

str – check (or other reference) number

get_correct_action() str

correct action

get_correct_fit_id() str

correct fit id

get_currency()
Return type:

pycountry.db.Currency – currency of the transaction, if different from the one in BankAccount

get_date_available() datetime | None
Return type:

datetime.datetime – date funds are available

get_date_initiated() datetime | None
Return type:

datetime.datetime – date user initiated transaction

get_date_posted() datetime | None
Return type:

datetime.datetime – date transaction was posted to account

get_extended_name() str | None
Return type:

str – extended name of payee or description of transaction

get_image_data()

image data

get_memo() str | None
Return type:

str – extra information

get_name() str | None
Return type:

str – name of payee or description of transaction

get_origin_currency()
Return type:

pycountry.db.Currency – currency of the transaction, if different from the one in BankAccount

get_payee() Payee | None
Return type:

Payee

get_payeeid() str | None
Return type:

str – payee identifier

get_ref_num() str | None
Return type:

str – reference number that uniquely indentifies the transaction.

get_server_tid() str

server transaction id

get_standard_industrial_code() str | None

standard industrial code

get_tag_name() str
Return type:

the XML tag name

get_transaction_id() str
Return type:

str – transaction ID issued by financial institution

get_type() str
Return type:

str – transaction type. See TYPE. Default (‘OTHER’)

set_extended_name(value: str)
Parameters:

value – extended name of payee or description of transaction

set_name(value: str)
Parameters:

value – name of payee or description of transaction

set_ref_num(value: str)
Parameters:

value – reference number that uniquely indentifies the transaction.

set_tag_name(name: str)

Set a XML tag name for this object

Parameters:

name (str) – name for the XML tag

class csb43.ofx.TransactionList(tagName='banktranslist', **kwargs)

Transaction list aggregate

add_transaction(value: Transaction)

Add a new transaction to the list

Parameters:

value (Transaction) – a transaction

get_date_end() datetime | None
Return type:

datetime.datetime – date of the first transaction

get_date_start() datetime | None
Return type:

datetime.datetime – date of the first transaction

get_list() Sequence[Transaction]
Return type:

list of Transaction

get_tag_name() str
Return type:

the XML tag name

set_date_end(value: datetime)
Parameters:

value (datetime.datetime) – date of end

set_date_start(value)
Parameters:

value (datetime.datetime) – date of start

set_tag_name(name: str)

Set a XML tag name for this object

Parameters:

name (str) – name for the XML tag

csb43.ofx.XMLAggregate(*args, **kwargs) str

Build a name XML aggregate with content as body.

Args:

name – tag name content – content of the node

Return:

(str) <NAME>content</NAME>

>>> XMLAggregate("hello", 12)
'<HELLO>12</HELLO>'
csb43.ofx.XMLElement(name: str, content) str

Build a name XML element with content as body.

Args:

name – tag name content – content of the node

Return:

(str) <NAME>content</NAME>

>>> XMLElement("hello", 12)
'<HELLO>12</HELLO>'
csb43.ofx.strBool(field: bool | None) str | None

Format a boolean as specified by OFX

Args:

field (bool)

Return:

(str)

csb43.ofx.strCurrency(field)

Format a ISO-4217 currency entity as specified by OFX

Args:

field (pycountry.Currency)

Return:

(str)

csb43.ofx.strDate(field: datetime | None) str | None

Format a date as specified by OFX

Args:

field (datetime)

Return:

(str)

csb43.ofx.strText(field: str | None) str | None

Format a string as specified by OFX, that is, characters ‘&’, ‘>’ and ‘<’ are XML escaped.

Converter

csb43.ofx.converter.convertFromCsb(csb: File, sgml=False) File

Convert a File file into an OFX file

Parameters:

csb (csb43.csb43.File) – a CSB43 file

Return type:

csb43.ofx.File

>>> # OFX
>>> from csb43 import csb43
>>> #
>>> csbFile = csb43.File(open("movimientos.csb"), strict=False) 
>>> #
>>> # print to stdout
>>> print(convertFromCsb(csbFile)) 
converter.PAYMODES = {'01': 10, '02': 0, '03': 5, '04': 9, '05': 3, '07': 15, '08': 3, '10': 10, '11': 7, '12': 8, '15': 9, '17': 2, '99': 16}