Skip to content

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.approved when a deposit reaches CASHIER_STATUS_CREDITED;
  • cashier.withdrawal.approved when a withdrawal reaches CASHIER_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
  }
}