create_disbursements
API Attributes | |
---|---|
Direction | Inward |
Invoked by | PBMS |
Mode | Synchronous |
Tables | disbursement disbursement_batch_control |
A disbursement represents a single disbursement transaction under a disbursement_envelope. A disbursement_envelope will contain many hundreds/thousands of disbursements. Each such disbursement will be denoted by a unique disbursement_id
Object design
disbursement
Attribute | Datatype |
---|---|
disbursement_envelope_id | The envelope under which this disbursement is being effected Non Unique Index |
disbursement_id | Unique identifier for each disbursement transaction - Primary Key |
beneficiary_id | The Beneficiary ID to whom this disbursement is being targeted |
beneficiary_name | The name of the beneficiary as available in the PBMS / Social Registry records |
disbursement_amount | The disbursement amount (in the currency specified in the envelope) for this cycle of the program |
narrative | The text that will be available in the Account Statement of the beneficiary's account against this disbursement credit transaction |
receipt_time_stamp | Time stamp of receipt of disbursement |
cancellation_status | Enum NOT_CANCELLED CANCELLED |
cancellation_time_stamp | Time stamp of receipt of cancellation request |
disbursement_batch_control
Attribute | Description |
---|---|
disbursement_id | Unique identifier for each disbursement transaction Unique Index |
disbursement_envelope_id | The envelope under which this disbursement is being effected Non Unique Index |
beneficiary_id | Non Unique Index |
bank_disbursement_batch_id | Uniquely represents the shipment bundle into which this disbursement is included. Typically, the payment instruction API into the sponsor bank will be a bulk API, containing many disbursements. Depending on the number of disbursements, there will be many batches into the sponsor bank. This shipment_to_bank_batch_id facilitates identification of the exact shipment batch. The shipment_batch_id is created by the sponsor_bank_dispatch_producer (celery beat producer) Unique Index |
mapper_resolution_batch_id | Unique batch id - that represents batch control for ID-Mapper resolution Multiple beneficiary ids will be sent to the mapper resolve API in a single invocation This batch id - represents that batch. All records that are in a single batch_id - will be sent to the mapper resolution in a single API call The mapper_resolution_batch_id - is created during "create_disbursements" inward API from PBMS. All disbursements received in a single API from PBMS are batched together with a single resolution batch id Unique Index |
bank_disbursement_batch_status
Attribute | Description |
---|---|
bank_disbursement_batch_id | Unique Index |
disbursement_envelope_id | Non Unique Index |
disbursement_status | Enum PENDING PROCESSED |
disbursement_timestamp | |
latest_error_code | |
disbursement_attempts |
mapper_resolution_batch_status
Attribute | Description |
---|---|
mapper_resolution_batch_id | Unique Index |
resolution_status | Enum PENDING PROCESSED |
resolution_timestamp | |
latest_error_code | |
resolution_attempts |
create_disbursements - Business Logic
Persist in the following tables
disbursements
disbursement_batch_control
bank_disbursement_batch_status
mapper_resolution_batch_status
Every API invocation - will result in 1 record each in disbursement_batch_control & bank_disbursement_batch_status & mapper_resolution_batch_status
The mapper resolution - itself - is dependent on the disbursement_envelope.id_mapper_resolution_required attribute (true/false)
Bulk Insert should be used to persist the tables - wherever multiple records are applicable
Transaction Control - should be ALL or NONE, i.e. either everything should be inserted or none should be inserted.
Validations & exceptions
Ideally, disbursements should arrive before disbursement_schedule_date. However, system will not check this condition. System will anyway process an envelope, only when all the disbursements have arrived.
disbursement_amount - valid non zero number
the total number of disbursements should not exceed the number specified in the envelope
the total_disbursement_amount should not exceed the number specified in the envelope
Last updated