Source code for transtractor.structs.transaction

"""Python implementation of transaction data for further processing in Python."""

from dataclasses import dataclass
from datetime import date as Date
from datetime import datetime
from typing import Union


[docs] @dataclass class Transaction: """Class representing a bank transaction.""" date: Date date_index: int description: str amount: float balance: float
[docs] def __init__(self, date: Union[Date, int], date_index: int, description:str, amount: float, balance: float ): # pylint: disable=too-many-arguments,too-many-positional-arguments """Initialize a Transaction. :param date: Either a date object or milliseconds since epoch (int) :param date_index: Transaction index for the day :param description: Transaction description :param amount: Transaction amount (will be rounded to 2 decimal places) :param balance: Account balance (will be rounded to 2 decimal places) """ if isinstance(date, int): # Convert milliseconds since epoch to date self.date = datetime.fromtimestamp(date / 1000.0).date() else: self.date = date self.date_index = date_index self.description = description self.amount = round(amount, 2) self.balance = round(balance, 2)