Add offset option to bank
A bank had an offset on the date of the transactions... It also passes the interal Bank type to the converter, to access it's additional options before converting.
This commit is contained in:
parent
a0d3af715e
commit
c41bfb4bdf
@ -118,6 +118,7 @@ class Bank:
|
||||
bic: str
|
||||
requisition_id: str
|
||||
invert: bool
|
||||
offset: int
|
||||
key: PrimaryKey = PrimaryKey.ID
|
||||
|
||||
|
||||
|
||||
@ -50,7 +50,8 @@ CREATE TABLE IF NOT EXISTS banks (
|
||||
nordigen_id TEXT,
|
||||
nordigen_name TEXT,
|
||||
requisition_id TEXT,
|
||||
invert INTEGER
|
||||
invert INTEGER,
|
||||
offset INTEGER
|
||||
)
|
||||
"""
|
||||
|
||||
@ -62,7 +63,8 @@ class DbBank:
|
||||
nordigen_id: str
|
||||
nordigen_name: str
|
||||
requisition_id: str
|
||||
invert: bool
|
||||
invert: bool = False
|
||||
offset: int = 0
|
||||
|
||||
def tuple(self):
|
||||
return (
|
||||
@ -72,6 +74,7 @@ class DbBank:
|
||||
self.nordigen_name,
|
||||
self.requisition_id,
|
||||
int(self.invert),
|
||||
self.offset,
|
||||
)
|
||||
|
||||
|
||||
|
||||
@ -72,8 +72,7 @@ class NordigenInput(Input):
|
||||
continue
|
||||
|
||||
converted = [
|
||||
convert(t, bank.name, bank.invert)
|
||||
for t in downloaded["transactions"]["booked"]
|
||||
convert(t, bank) for t in downloaded["transactions"]["booked"]
|
||||
]
|
||||
|
||||
transactions.extend(
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
from datetime import timedelta
|
||||
from functools import singledispatch
|
||||
|
||||
from pfbudget.common.types import Bank, Transaction, TransactionError
|
||||
@ -13,7 +14,15 @@ def convert(t):
|
||||
|
||||
@convert.register
|
||||
def _(t: Transaction) -> DbTransaction:
|
||||
return DbTransaction(t.date, t.description, t.bank, t.value, t.category, t.original, t.additional_comment)
|
||||
return DbTransaction(
|
||||
t.date,
|
||||
t.description,
|
||||
t.bank,
|
||||
t.value,
|
||||
t.category,
|
||||
t.original,
|
||||
t.additional_comment,
|
||||
)
|
||||
|
||||
|
||||
@convert.register
|
||||
@ -26,23 +35,38 @@ def _(db: DbTransaction) -> Transaction:
|
||||
|
||||
@convert.register
|
||||
def _(db: DbBank, key: str = "") -> Bank:
|
||||
return Bank(db.name, db.bic, db.requisition_id, db.invert, key=key)
|
||||
bank = Bank(db.name, db.bic, db.requisition_id, db.invert, db.offset, key=key)
|
||||
if not bank.invert:
|
||||
bank.invert = False
|
||||
if not bank.offset:
|
||||
bank.offset = 0
|
||||
return bank
|
||||
|
||||
|
||||
@convert.register
|
||||
def _(bank: Bank, key: str = "") -> DbBank:
|
||||
return DbBank(bank.name, bank.bic, "", "", bank.requisition_id, bank.invert)
|
||||
def _(bank: Bank) -> DbBank:
|
||||
bank = DbBank(
|
||||
bank.name, bank.bic, "", "", bank.requisition_id, bank.invert, bank.offset
|
||||
)
|
||||
if not bank.invert:
|
||||
bank.invert = False
|
||||
if not bank.offset:
|
||||
bank.offset = 0
|
||||
return bank
|
||||
|
||||
|
||||
@convert.register
|
||||
def _(json: dict, bank: str, invert: bool) -> Transaction:
|
||||
i = -1 if invert else 1
|
||||
def _(json: dict, bank: Bank) -> Transaction:
|
||||
i = -1 if bank.invert else 1
|
||||
try:
|
||||
return Transaction(
|
||||
transaction = Transaction(
|
||||
json["bookingDate"],
|
||||
json["remittanceInformationUnstructured"],
|
||||
bank,
|
||||
bank.name,
|
||||
i * parse_decimal(json["transactionAmount"]["amount"]),
|
||||
)
|
||||
transaction.date += timedelta(days=bank.offset)
|
||||
return transaction
|
||||
|
||||
except TransactionError:
|
||||
print(f"{json} is in the wrong format")
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user