diff --git a/unit/models/codecs.py b/unit/models/codecs.py index 5682d34..b8fbec3 100644 --- a/unit/models/codecs.py +++ b/unit/models/codecs.py @@ -364,6 +364,12 @@ "dispute.statusChanged": lambda _id, _type, attributes, relationships: DisputeStatusChangedEvent.from_json_api(_id, _type, attributes, relationships), + "accountLowBalanceClosureTransaction": lambda _id, _type, attributes, relationships: + AccountLowBalanceClosureTransactionDTO.from_json_api(_id, _type, attributes, relationships), + + "negativeBalanceCoverageTransaction": lambda _id, _type, attributes, relationships: + NegativeBalanceCoverageTransactionDTO.from_json_api(_id, _type, attributes, relationships), + } diff --git a/unit/models/transaction.py b/unit/models/transaction.py index fab9933..8d66e04 100644 --- a/unit/models/transaction.py +++ b/unit/models/transaction.py @@ -438,6 +438,29 @@ def from_json_api(_id, _type, attributes, relationships): attributes["amount"], attributes["balance"], attributes["summary"], attributes.get("tags"), relationships) +class AccountLowBalanceClosureTransactionDTO(BaseTransactionDTO): + def __init__(self, id: str, created_at: datetime, amount: int, direction: str, + balance: int, summary: str, tags: Optional[Dict[str, str]], relationships: Optional[Dict[str, Relationship]]): + BaseTransactionDTO.__init__(self, id, created_at, direction, amount, balance, summary, tags, relationships) + self.type = 'accountLowBalanceClosureTransaction' + + @staticmethod + def from_json_api(_id, _type, attributes, relationships): + return AccountLowBalanceClosureTransactionDTO( + _id, date_utils.to_datetime(attributes["createdAt"]), + attributes["amount"], attributes["direction"], attributes["balance"], attributes["summary"], attributes.get("tags"), relationships) + +class NegativeBalanceCoverageTransactionDTO(BaseTransactionDTO): + def __init__(self, id: str, created_at: datetime, amount: int, direction: str, + balance: int, summary: str, tags: Optional[Dict[str, str]], relationships: Optional[Dict[str, Relationship]]): + BaseTransactionDTO.__init__(self, id, created_at, direction, amount, balance, summary, tags, relationships) + self.type = 'negativeBalanceCoverageTransaction' + + @staticmethod + def from_json_api(_id, _type, attributes, relationships): + return NegativeBalanceCoverageTransactionDTO( + _id, date_utils.to_datetime(attributes["createdAt"]), attributes["amount"], attributes["direction"], attributes["balance"], attributes["summary"], attributes.get("tags"), relationships) + TransactionDTO = Union[OriginatedAchTransactionDTO, ReceivedAchTransactionDTO, ReturnedAchTransactionDTO, ReturnedReceivedAchTransactionDTO, DishonoredAchTransactionDTO, BookTransactionDTO, PurchaseTransactionDTO, AtmTransactionDTO, FeeTransactionDTO, CardTransactionDTO, @@ -445,7 +468,7 @@ def from_json_api(_id, _type, attributes, relationships): InterestTransactionDTO, DisputeTransactionDTO, CheckDepositTransactionDTO, ReturnedCheckDepositTransactionDTO, CheckPaymentTransactionDTO, ReturnedCheckPaymentTransactionDTO, PaymentAdvanceTransactionDTO, - RepaidPaymentAdvanceTransactionDTO] + RepaidPaymentAdvanceTransactionDTO, AccountLowBalanceClosureTransactionDTO, NegativeBalanceCoverageTransactionDTO] class PatchTransactionRequest(BaseTransactionDTO, UnitRequest):