usawa

Signed, immutable accounting.
Info | Log | Files | Refs | Submodules | LICENSE

commit fb3155a9489f195c33f8e5eebb2afd7f06696df7
parent a195b11ca3617e1b14355a0861f5cfcfa68fd602
Author: Carlosokumu <carlosokumu254@gmail.com>
Date:   Mon,  9 Mar 2026 16:51:10 +0300

set default unit of account

Diffstat:
Mdummy/usawa/storage/entry_mapper.py | 71++++++++++++++++++++++++++++++++++++++---------------------------------
1 file changed, 38 insertions(+), 33 deletions(-)

diff --git a/dummy/usawa/storage/entry_mapper.py b/dummy/usawa/storage/entry_mapper.py @@ -11,12 +11,12 @@ logg = logging.getLogger("storage.entry_mapper") class EntryMapper: """Maps between domain model (LedgerEntry) and storage model (Entry)""" - + @staticmethod - def to_entry(domain: LedgerEntry, ledger, unitindex=None): + def to_entry(domain: LedgerEntry, ledger, unitindex=UnitIndex("BTC")): """ Convert LedgerEntry (domain) to Entry (storage) - + :param domain: Domain model entry :type domain: LedgerEntry :param ledger: The ledger object (for parent digest) @@ -26,44 +26,51 @@ class EntryMapper: :return: Storage model entry :rtype: Entry """ - - + if domain.tx_date is None: raise ValueError("Transaction date is required for storage") - - + tx_date = domain.tx_date if isinstance(tx_date, date) and not isinstance(tx_date, datetime): tx_date = datetime.combine(tx_date, datetime.min.time()) - - + parent = ledger.current() if ledger else None ref = domain.transaction_ref if domain.transaction_ref else None - entry = Entry( - serial= ledger.serial, + serial=ledger.serial, tx_date=tx_date, - parent=parent, + parent=parent, description=domain.description or "", - ref=ref, - unitindex = UnitIndex('BTC') + ref=ref, + unitindex=unitindex, + ) + + source_amount = unitindex.from_floatstring( + unitindex.default_unit, str(domain.amount) ) - - - uidx = UnitIndex('BTC') - source_amount = uidx.from_floatstring('BTC', str(domain.amount)) dest_amount = -source_amount - source_part = EntryPart("BTC", domain.source_type.lower(), domain.source_path, source_amount, debit=True) + source_part = EntryPart( + unitindex.default_unit, + domain.source_type.lower(), + domain.source_path, + source_amount, + debit=True, + ) entry.add_part(source_part, debit=True) - dest_part = EntryPart("BTC", domain.dest_type.lower(), domain.dest_path, dest_amount, debit=False) + dest_part = EntryPart( + unitindex.default_unit, + domain.dest_type.lower(), + domain.dest_path, + dest_amount, + debit=False, + ) entry.add_part(dest_part, debit=False) - + return entry - - + @staticmethod def to_domain_entry(storage_entry) -> LedgerEntry: """ @@ -73,13 +80,13 @@ class EntryMapper: source_unit = "" source_type = "" source_path = "" - amount = 0.0 + amount = 0.0 dest_unit = "" dest_type = "" dest_path = "" if storage_entry.debit: - debit_part = storage_entry.debit[0] + debit_part = storage_entry.debit[0] source_unit = debit_part.unit source_type = debit_part.typ source_path = debit_part.account @@ -90,7 +97,6 @@ class EntryMapper: amount = 0.0 is_debit = None - if storage_entry.credit: credit_part = storage_entry.credit[0] dest_unit = credit_part.unit @@ -101,19 +107,16 @@ class EntryMapper: dest_unit = dest_type = dest_path = "" is_credit = None - - parent_digest = parent_digest = storage_entry.parent.hex() + parent_digest = parent_digest = storage_entry.parent.hex() tx_date = storage_entry.dt date_registered = storage_entry.dtreg - transaction_ref = str(storage_entry.ref) if storage_entry.ref else None - external_ref = None + external_ref = None signer_pubkeys = list(storage_entry.sigs.keys()) - domain = LedgerEntry( external_reference=external_ref, description=storage_entry.description, @@ -124,14 +127,16 @@ class EntryMapper: dest_unit=dest_unit, dest_type=dest_type, dest_path=dest_path, - attachments=storage_entry.attachment.copy() if storage_entry.attachment else [], + attachments=( + storage_entry.attachment.copy() if storage_entry.attachment else [] + ), serial=storage_entry.serial, tx_date=tx_date, tx_reference=storage_entry.ref, date_registered=date_registered, signer_pubkeys=signer_pubkeys, parent_digest=parent_digest, - unit_index=storage_entry.uidx + unit_index=storage_entry.uidx, ) return domain