overview
BPO Screen - Forfeit Action Icons Integration
๐ Branch
- Branch Name: e39_bpo
Bpo Module KT
โ Feature Summary
๐ฏ Goal
Enable support for forfeit-related action icons in:
- Refund Screen: Multiple forfeit operations
- Reconciliation Screen: Basic forfeit operation only
๐ Screens & Action Icons
| Screen | Action Icons to Enable | 
|---|---|
| Refund Screen | forfeit,forfeitConfirm,forfeitInitiate,forfeitReinstate | 
| Reconciliation Screen | forfeitonly | 
๐ Backend API
- API Name: getBPODataById
- Endpoint: BPOAPP/api/getDetailByIds
- Purpose: Returns row data along with action icon metadata under actionIcons
Example API Response (Partial):
"actionIcons": [
                   {
                     "clickCode": "forfeitInitiate",
                     "name": "Forfeit Initiate",
                     "tooltip": "Forfeit Initiate",
                     "link": "",
                     "alertMsg": "Are you sure you want to initiate Refund EMD of {vendorName}",
                     "pkiAuthReq": "N",
                     "id": "Forfeit Initiate"
                 },
                 {
                   "clickCode": "forfeitConfirm",
                   "name": "Forfeit Confirm",
                   "tooltip": "Forfeit Confirm",
                  "link": "",
                   "alertMsg": "Are you sure you want to initiate Refund EMD of {vendorName}",
                   "pkiAuthReq": "N",
                   "id": "Forfeit Confirm"
               },
  {
               "clickCode": "forfeitReinitiate",
               "name": "Forfeit Reinitiate",
               "tooltip": "Forfeit Reinitiate",
               "link": "",
               "alertMsg": "Are you sure you want to initiate Refund EMD of {vendorName}",
               "pkiAuthReq": "N",
               "id": "Forfeit Reinitiate"
           },
 {
          "clickCode": "forfeitReinstate",
          "name": "Forfeit Reinstate",
          "tooltip": "Forfeit Reinstate",
                    "link": "",
          "pkiAuthReq": "N"
        }
]
โ๏ธ Frontend Configuration
1. refund_screen.js
icons: {
  forfeit: {
    isModel: true,
    modelTypes: ['remarks', 'confirm'],
    apiName: 'performAction',
    postMethod: 'formatAndUpdateData',
    minRemarksLength: 50,
    maxRemarksLength: 250
  },
  forfeitConfirm: {
    isModel: true,
    modelTypes: ['confirm'],
    apiName: 'performAction',
    postMethod: 'formatAndUpdateData'
  },
  forfeitInitiate: {
    isModel: true,
    modelTypes: ['remarks', 'confirm'],
    apiName: 'performAction',
    postMethod: 'formatAndUpdateData',
    minRemarksLength: 50,
    maxRemarksLength: 250
  },
  forfeitReinstate: {
    isModel: true,
    modelTypes: ['remarks'],
    apiName: 'performAction',
    postMethod: 'formatAndUpdateData',
    minRemarksLength: 50,
    maxRemarksLength: 250
  }
}
Reconciliation screen only includes the
forfeitentry.
2. Optional: Icon Mapping in CommonCls
icons: {
  'Forfeit Confirm' : 'FORFEIT_CONFIRM',
  'Forfeit Initiate' : 'FORFEIT_INITIATE',
  'Forfeit Reinstate' : 'FORFEIT_REINSTATE',
  'Forfeit' : 'FORFEIT_INITIATE'
},
iconIds: {
  'Forfeit Confirm' : 'forfeitConfirm',
  'Forfeit Initiate' : 'forfeitInitiate',
  'Forfeit Reinstate' : 'forfeitReinstate',
  'Forfeit' : 'forfeit'
}
๐ Show All Popup
- In Refund Screen, show-all popup will filter and display based on:- detail: 'refund'for refund data
- detail: 'payment'for payment data
 
๐ Notes
- The forfeit icon visibility and behavior is driven by API, not hardcoded.
- Remarks and confirmation modals are triggered automatically based on configuration.
- postMethod: formatAndUpdateDataensures row updates are reflected in real-time.
๐งช QA Checklist
- Refund screen shows all four icons per API response
-  Reconciliation screen only shows forfeit
- Clicking any icon triggers required modal(s)
- Remarks length validation enforced
- API actions succeed and update the view
๐งฐ Maintainers
- Ensure BPOAPP/api/getDetailByIdscontinues to return updatedactionIconslist.
- Add new clickCodemappings to respective screen configs when introducing new icons.