Operational Configuration

Three small master lists that steer day-to-day inventory and despatch behaviour: the Suspend Reasons that explain why a stock move is held (and whether holding it notifies the customer), the Carrier Return Reasons recorded when a shipment comes back, and the Reconciliation Reasons chosen when closing stock is adjusted. Each is a straightforward create/edit lookup — the counterpart to the Billing Configuration masters, but for operations.

Built — all three master screens are live in the console.
Permissions

Each list has a view gate and a manage gate. Viewing needs stock_move_suspend_reason.view, carrier_return_reason.view or closing_stock_reconciliation_reason.view; creating, editing or deleting needs the matching …​.manage. The super-admin role bypasses all of these.

Where these live

Unlike the billing masters, these sit in the nav group of the workflow they serve: Suspend Reasons and Reconciliation Reasons under Inventory, Carrier Return Reasons under Despatch. The workflow screens (Stock Moves, Closing Stock, returns) pick from these lists in dropdowns but do not let you edit them — this is where the options are defined.


Suspend Reasons Built

Nav: Inventory → Suspend reason. When a stock move is suspended (put on hold), it records one of these reasons. The reason also decides whether the customer is told their order is on hold.

Nine reasons ship seeded, and only one of them — Manually held by admin/manager — is selectable by a person. The other eight are applied automatically by the nightly auto-reservation job: Credit limit exceeded, Payment not received/allocated, Full set not yet paid, Too many unremitted COD packages already out, A pending return for this customer holds further parts, Delivery pincode not serviceable by the assigned carrier, plus two that no process currently raises (Stock in transit from another warehouse and Product out of stock at this location — an out-of-stock move is left confirmed and retried, not held). What each one means and how to clear it is on Stock Moves → Why a move is held.

You can add your own reasons here, but a new reason is only ever usable by hand: which reason the automatic checks raise is decided in code, not on this screen. What this screen genuinely controls for the automatic reasons is their wording and their SMS/email toggles.

Fields

FieldTypeNotes
Code / NameTextUnique code + label shown in the suspend dropdown.
Allow manual selectionToggleWhether a user can pick this reason by hand when suspending a move (some reasons are system-only).
Reset in next cycleToggleMarks the reason as one whose cause clears itself — a payment arriving, a return being reconciled — rather than needing a decision. This one is real automation: the nightly job re-checks moves held for such a reason before it does anything else, and releases the ones whose cause has gone. Leave it off for a reason that should wait for a person. See Stock Moves → Why a move is held.
Send SMS / Send emailTogglesThese drive the customer hold notifications. When on, suspending a move for this reason notifies the customer over that channel. Internal-only reasons (e.g. a manual hold) leave both off, so no one is notified.
ActiveToggleInactive reasons drop out of the suspend dropdown but keep their history.
The SMS/Email toggles are the notification switch

The customer-facing "your order is on hold" message is sent only when the suspend reason has the matching channel toggle on. Turning Send SMS or Send email on or off here is how an operations admin controls whether a given hold reason reaches the customer — no code change needed. See Stock Moves for the suspend workflow itself.


Carrier Return Reasons Built

Nav: Despatch → Carrier return reason. Recorded when a carrier brings a shipment back — wrong address, refused delivery, damaged in transit, and so on.

Fields

FieldTypeNotes
Code / NameTextUnique code + label for the return reason.
DescriptionTextareaFree-text explanation of when to use this reason.
Create taskToggleMarks that a return with this reason should raise a follow-up task (for the return-handling workflow).
Send SMSToggleWhether a return with this reason notifies the customer by SMS. Turning it on reveals the template field.
SMS templateTextThe message template used when Send SMS is on. Hidden until the toggle is enabled.
ActiveToggleInactive reasons drop out of the return dropdown.
Config now, workflow later

The Create task and SMS template settings are stored and editable here, but the return-handling workflow that acts on them (raising the task, sending the templated SMS) is a separate, not-yet-built feature. For now this screen lets you prepare the reason catalogue.


Reconciliation Reasons Built

Nav: Inventory → Reconciliation reason. Chosen when a closing-stock count is adjusted to explain the discrepancy — breakage, found stock, miscount, and so on.

Fields

FieldTypeNotes
Code / NameTextUnique code + label for the reconciliation reason.
Adjustment directionSelectWhether this reason Adds stock or Reduces it — constrains which way a count using this reason can move the balance.
ActiveToggleInactive reasons drop out of the reconciliation dropdown.

Creating and editing a master row

All three lists behave the same way, and identically to the Billing Configuration masters:

  1. Open the list

    Pick the master from its Inventory or Despatch navigation group. You need the relevant *.view permission.

  2. Create or edit

    Use New to add a row, or a row's Edit action to change one. Both need the *.manage permission.

  3. Deactivate instead of delete where possible

    Turning Active off removes a reason from its dropdown while keeping every record that already used it intact. Deleting a row still referenced by existing moves, returns or statements is refused at the database level, so prefer deactivation.

Related pages: Stock Moves · Closing Stock · Carrier Complaints · Billing Configuration · System Configuration.