Updated Disbursement

This commit is contained in:
Azeez Muibi
2025-03-26 15:05:52 +01:00
parent 183c1bf46f
commit f52de3d8f8
8 changed files with 249 additions and 45 deletions
+36 -15
View File
@@ -1,17 +1,38 @@
from marshmallow import Schema, fields
from marshmallow import Schema, fields, validate
# Disbursement Schema
# Schema for the fees details object
class FeesDetailsSchema(Schema):
collectAmountInterest = fields.Float(required=True, description="Interest Amount to be collected immediately after loan is provided (Only for 30 days)")
collectAmountMgtFee = fields.Float(required=True, description="Management Fee Amount to be collected immediately after loan is provided")
collectAmountInsurance = fields.Float(required=True, description="Insurance Amount to be collected immediately after loan is provided")
collectAmountVAT = fields.Float(required=True, description="VAT Amount to be collected immediately after loan is provided")
# Disbursement Request Schema
class DisbursementSchema(Schema):
requestId = fields.Str(required=True)
debtId = fields.Str(required=True)
transactionId = fields.Str(required=True)
customerId = fields.Str(required=True)
accountId = fields.Str(required=True)
productId = fields.Str(required=True)
provideAmount = fields.Float(required=True)
collectAmountInterest = fields.Float(required=False) # Optional
collectAmountMgtFee = fields.Float(required=True)
collectAmountInsurance = fields.Float(required=True)
collectAmountVAT = fields.Float(required=True)
countryId = fields.Str(required=True)
comment = fields.Str(required=False) # Optional
requestId = fields.Str(required=True, description="Unique identifier of request")
countryCode = fields.Str(required=True, description="Unique country code. Please refer to Country Codes table")
transactionId = fields.Str(required=True, description="Unique identifier of transaction in Simbrella system")
debtId = fields.Str(required=True, description="Unique identifier of a loan in Simbrella system that is going to be collected (it correlates with provision request)")
customerId = fields.Str(required=True, description="Unique identifier of a user")
accountId = fields.Str(required=True, description="Specific identifier of a user's account")
productId = fields.Str(required=True, description="Identifier of a product to be provided to a user")
provideAmount = fields.Float(required=True, description="Amount of loan (including service fee) to be provided on a specific account of a user")
totalFees = fields.Float(required=True, description="Total amount of all fees combined")
feesDetails = fields.Nested(FeesDetailsSchema, required=True, description="Detailed breakdown of all fees")
countryId = fields.Str(required=True, description="Set to static value '01'")
comment = fields.Str(required=False, description="Any additional comment for provided loan operation")
# Disbursement Response Schema
class DisbursementResponseSchema(Schema):
requestId = fields.Str(required=True, description="Unique identifier of request")
countryCode = fields.Str(required=True, description="Unique country code.")
transactionId = fields.Str(required=True, description="Unique ID of customer's USSD session. Must be consistent throughout whole USSD journey")
debtId = fields.Str(required=True, description="Unique identifier of a loan in Simbrella system that is going to be collected (it correlates with provision request)")
customerId = fields.Str(required=True, description="Unique identifier of a user")
accountId = fields.Str(required=True, description="Specific identifier of a user's account")
productId = fields.Str(required=True, description="Identifier of a product to be provided to a user")
provideAmount = fields.Float(required=True, description="Amount of loan (including service fee) to be provided on a specific account of a user")
totalFees = fields.Float(required=True, description="Total amount of all fees combined")
feesDetails = fields.Nested(FeesDetailsSchema, required=True, description="Detailed breakdown of all fees")
resultCode = fields.Str(required=True, description="Result code of executed transaction, e.g. (00 Success etc.) see result codes table")
resultDescription = fields.Str(required=True, description="Description of provided result code")