From b37794ff939732753b654418defd9dff07b115a6 Mon Sep 17 00:00:00 2001 From: Samuel Vasco Date: Wed, 21 May 2025 17:38:39 -0400 Subject: [PATCH 1/2] feat: add events for account close --- unit/models/codecs.py | 6 ++++++ unit/models/transaction.py | 38 +++++++++++++++++++++++++++++++++++++- 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/unit/models/codecs.py b/unit/models/codecs.py index 5682d34c..b8fbec3a 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 fab99333..57274c60 100644 --- a/unit/models/transaction.py +++ b/unit/models/transaction.py @@ -438,6 +438,42 @@ 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, receiver_counterparty: Dict[str, str], 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' + self.attributes["receiverCounterparty"] = receiver_counterparty + self.attributes["amount"] = amount + self.attributes["direction"] = direction + self.attributes["balance"] = balance + self.attributes["summary"] = summary + self.attributes["tags"] = tags + + @staticmethod + def from_json_api(_id, _type, attributes, relationships): + return AccountLowBalanceClosureTransactionDTO( + _id, date_utils.to_datetime(attributes["createdAt"]), attributes["receiverCounterparty"], + 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' + self.attributes["amount"] = amount + self.attributes["direction"] = direction + self.attributes["balance"] = balance + self.attributes["summary"] = summary + self.attributes["tags"] = tags + + @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 +481,7 @@ def from_json_api(_id, _type, attributes, relationships): InterestTransactionDTO, DisputeTransactionDTO, CheckDepositTransactionDTO, ReturnedCheckDepositTransactionDTO, CheckPaymentTransactionDTO, ReturnedCheckPaymentTransactionDTO, PaymentAdvanceTransactionDTO, - RepaidPaymentAdvanceTransactionDTO] + RepaidPaymentAdvanceTransactionDTO, AccountLowBalanceClosureTransactionDTO, NegativeBalanceCoverageTransactionDTO] class PatchTransactionRequest(BaseTransactionDTO, UnitRequest): From d07d041b1624252754179c53d9fe9651c931a4d3 Mon Sep 17 00:00:00 2001 From: Samuel Vasco Date: Thu, 29 May 2025 17:03:14 -0400 Subject: [PATCH 2/2] refactor: remove unnecessary args from dto --- unit/models/transaction.py | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/unit/models/transaction.py b/unit/models/transaction.py index 57274c60..8d66e046 100644 --- a/unit/models/transaction.py +++ b/unit/models/transaction.py @@ -439,40 +439,27 @@ def from_json_api(_id, _type, attributes, relationships): attributes.get("tags"), relationships) class AccountLowBalanceClosureTransactionDTO(BaseTransactionDTO): - def __init__(self, id: str, created_at: datetime, receiver_counterparty: Dict[str, str], amount: int, direction: str, + 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' - self.attributes["receiverCounterparty"] = receiver_counterparty - self.attributes["amount"] = amount - self.attributes["direction"] = direction - self.attributes["balance"] = balance - self.attributes["summary"] = summary - self.attributes["tags"] = tags @staticmethod def from_json_api(_id, _type, attributes, relationships): return AccountLowBalanceClosureTransactionDTO( - _id, date_utils.to_datetime(attributes["createdAt"]), attributes["receiverCounterparty"], - attributes["amount"], attributes["direction"], attributes["balance"], attributes["summary"], - attributes.get("tags"), relationships) + _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' - self.attributes["amount"] = amount - self.attributes["direction"] = direction - self.attributes["balance"] = balance - self.attributes["summary"] = summary - self.attributes["tags"] = tags @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) + _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,