diff --git a/controllers_v2/finstitutions/payments/base.py b/controllers_v2/finstitutions/payments/base.py index 324c3df..fb3ee47 100644 --- a/controllers_v2/finstitutions/payments/base.py +++ b/controllers_v2/finstitutions/payments/base.py @@ -343,7 +343,7 @@ class PaymentsController(CoreAuthTokenController, ABC): payment.metadata.inAccount, # ................................... p_in_account payment.metadata.idUser, # ...................................... p_user_id payment.metadata.documentUrl, # ................................. p_document_url - payment.metadata.againstReference # ............................. p_notes + json.to_string(payment.metadata.againstReference) # ............. p_notes ), retry_count = 1, backoff_seconds = 0.5, @@ -356,6 +356,25 @@ class PaymentsController(CoreAuthTokenController, ABC): if sql_json["status"] == 1: return True else: return False + async def add_sales_transaction( + self, + sql_conn: AsyncMySQL, + mongo_data_conn: AsyncMongo, + payment: CorePaymentModel, + session_token: str = None + ) -> bool: + + """ + ??? + :param sql_conn: The database connection to use to perform this activity. + :param mongo_data_conn: The database connection to use to perform this activity. + :param payment: The record of the payment whose details need to be added as a receipt. + :param session_token: The session token of the user to identify whose request caused this receipt update. + :return: True is the receipt was added, else False. + """ + + pass + async def add_event_by_payment_id( self, mongo_data_conn: AsyncMongo, diff --git a/models/api/finstitutions/payments/request.py b/models/api/finstitutions/payments/request.py index 4b8f232..62f3f16 100644 --- a/models/api/finstitutions/payments/request.py +++ b/models/api/finstitutions/payments/request.py @@ -40,6 +40,7 @@ from pydantic import BaseModel, Field, field_validator, PastDatetime from typing import Optional, Literal, Union, List, Any # My utils: +from utils_v2.string import json from utils_v2.string import regex # To work with MongoDB: @@ -117,7 +118,7 @@ class PaymentRequestMetadata(BaseModel): idClient: int = Field(frozen = True) inAccount: int = Field(frozen = True) reference: str | None = Field(frozen = True, default = None, validate_default = True) - againstReference: str | None = Field(frozen = True, default = None, validate_default = True) + againstReference: dict | None = Field(frozen = True, default = None, validate_default = True) documentUrl: str | None = Field(frozen = False, default = None, validate_default = True) # ┏┓ ┏• @@ -137,9 +138,10 @@ class PaymentRequestMetadata(BaseModel): if not value: value = "On Account" return value - @field_validator("againstReference") + @field_validator("againstReference", mode = "before") def validate_against_reference(cls, value): if not value: value = None + if isinstance(value, str): value = json.from_string(value) return value @field_validator("documentUrl") diff --git a/models/core/payment.py b/models/core/payment.py index 99b4a6f..22f8467 100644 --- a/models/core/payment.py +++ b/models/core/payment.py @@ -147,7 +147,7 @@ class PaymentMetadata(BaseModel): idClient: int | None = Field(frozen = True, default = None, validate_default = True) inAccount: int | None = Field(frozen = True, default = None, validate_default = True) reference: str | None = Field(frozen = True, default = None, validate_default = True) - againstReference: str | None = Field(frozen = True, default = None, validate_default = True) + againstReference: dict | None = Field(frozen = True, default = None, validate_default = True) documentUrl: str | None = Field(frozen = False, default = None, validate_default = True) # ┏┓ ┏• @@ -167,9 +167,10 @@ class PaymentMetadata(BaseModel): if not value: value = "On Account" return value - @field_validator("againstReference") + @field_validator("againstReference", mode = "before") def validate_against_reference(cls, value): if not value: value = None + if isinstance(value, str): value = json.from_string(value) return value @field_validator("documentUrl")