MngProcessManualCashierTransaction¶
Processes a manual Cashier transaction.
For manual deposits Cashier posts OP_BALANCE_IN. For manual withdrawals
Cashier posts OP_BALANCE_OUT. The command records approved_by,
approved_time, processed_by, and processed_time on the transaction.
Access¶
Only SESSION_CRM_MANAGER and SESSION_CRM_ADMIN are allowed.
| Role | Required permissions |
|---|---|
SESSION_CRM_ADMIN |
No additional finance permission flags required |
SESSION_CRM_MANAGER |
access_crm = 1, approve_finance = 1 |
SESSION_MANAGER, SESSION_ADMIN, SESSION_DEALER |
Forbidden, regardless of finance flags |
The manager record must exist and be enabled. CRM managers remain constrained by customer/account scope, including brand and desk. CRM admins bypass these manual-method permission/scope checks, but not business checks: customer deposit/withdrawal gates, account availability and transaction processing rules still apply. The backend uses the resolved staff manager id for audit/processing. Checks run inside the handler, including direct Moleculer calls; they are not only router metadata.
Request Parameters¶
| Name | Type | Required | Description |
|---|---|---|---|
id |
int | Yes | Cashier transaction id |
Response¶
Returns transaction.
Workflow events¶
After a successful final transaction update, the command starts one of these workflow triggers:
cashier.deposit.approvedwhen a deposit reachesCASHIER_STATUS_CREDITED;cashier.withdrawal.approvedwhen a withdrawal reachesCASHIER_STATUS_COMPLETED.
If an active matching rule executes cashier.publish_approved, the server publishes the
same-named Moleculer event. Calling the command for a transaction already in its final
approved status returns without publishing a duplicate event. Publication is
asynchronous and is not delivery confirmation.
Request Example¶
{
"command": "MngProcessManualCashierTransaction",
"extID": "1",
"data": {
"id": 15
}
}