--- title: "Transfer Balance" type: OpenSpec status: Draft domain: Customer Management --- # Transfer Balance ## Requirement Definition Allows manual transfer of points from a customer/account to another customer/account (External) or between the customer's own accounts (Internal). ## Process Flow ### Pre-Conditions - Users must have access rights in the "Transfer Balance" module. - Requires Maker-Checker approval. ## Business Rules ### Data Schema | Field Name | Description | Logic Type | Constraints / Rules | |---|---|---|---| | Transfer Mode | Internal (self) or External (to another). | Enum | Required. | | Transfer Type | Entity type to transfer from (Card, Account, Client). | Enum | Required. | | From | Card/Account/CIF Number to transfer from. | String | Required. | | To | Card/Account/CIF Number to transfer to. | String | Required. | | Pool ID | The pool from which to transfer. | Enum (Lookup) | Required. Must respect "From" entity level. | | Store | The store where transaction is logged. | Enum (Lookup) | Required. | | Amount to Transfer | Amount. | Decimal | Required. > 0. Defaults to whole pool balance. | | Expiry Date | Expiry date of transferred points. | Date | Required. Defaults to source expiry date. | | Transaction Code | OLS transaction code. | Enum (Lookup) | Required. | | Reason Code | Pre-defined reason for transfer. | Enum (Lookup) | Required. Determines GL posting accounts. | | Remarks | Additional remarks. | String (100) | Optional. | ### Execution - **Pending/Approve Flow**: Goes to a pending list. Authorised user approves. - OLS validates status, block codes, and permissions for both "From" and "To". - Rejected if "From" pool balance is insufficient. - Execution transfers all linked pools directly from "From" to "To". - Logged as a negative Adjustment on "From" and positive Adjustment on "To". ## Post-Conditions - Pool balances updated. ## Exception Flow - Insufficient balance, TP validation failures, or input errors block the action.