create_disbursements
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
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
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
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
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