--- title: "Re-Instatement" type: OpenSpec status: Draft domain: Customer Management --- # Re-Instatement ## Requirement Definition Allows manual re-instatement of expired balance buckets that have not yet been forfeited. ## Process Flow ### Pre-Conditions - Users must have access rights in the "Re-Instatement" module. - The customer must have expired pool buckets that are within the grace period (not yet forfeited). - Requires Maker-Checker approval. ## Business Rules ### Data Schema | Field Name | Description | Logic Type | Constraints / Rules | |---|---|---|---| | Posted Transaction By | Card, Account, or CIF. | Enum | Required. | | Card / Account / CIF | Identifier based on above selection. | String | Required. | | Store | Store of transaction. | Enum (Lookup) | Required. | | Pool Id | Pool of the bucket to re-instate. | Enum (Lookup) | Required. Lists pools with non-forfeited expired balances. | | Bucket to Re-instate | Specific expired bucket to reinstate. | Enum (Lookup) | Required. | | Expiry Date | New expiry date of the reinstated points. | Date | Required. | | Reason Code | Reason for re-instatement. | Enum (Lookup) | Required. | | Remarks | Additional notes. | String (100) | Optional. | ### Execution - **Pending/Approve Flow**: New requests go to a pending list. Authorised user approves. - Re-instatement is posted as an Adjustment. - The expired bucket balance is set to 0. - If a bucket with the new Expiry Date already exists, the amount is added to it. - Otherwise, a new bucket is created with the new Expiry Date. ## Post-Conditions - Balances updated and logged as adjustments. ## Exception Flow - Rejected by TP validation or block code.