CRMconnect Azuvio · Docs

OMS & E-commerce — Order Management System

Roles covered: OMS Operator · E-commerce Manager · Channel Administrator · Returns Supervisor
Primary modules: OmniSales (Orders · Channels · Discounts · Reports) · Warehouse (Delivery Notes · Packing Lists) · Innoship · Invoices


Who this guide is for

Role What they do in CRMConnect
OMS Operator Processes daily orders: confirms, generates delivery notes, tracks deliveries
E-commerce Manager Configures sales channels, approval rules, trade discounts
Channel Administrator Manages WooCommerce/Shopify synchronisation, resolves sync errors
Returns Supervisor Processes return requests, approves stock returns, manages refunds

OmniSales module map

SALES CHANNELS                 ORDERS (CART)
──────────────                 ─────────────
POS (Point of Sale)            Draft (0)
B2B Portal (clients)           Processing (1)
WooCommerce                    Pending Payment (2)
Shopify                        Confirmed (3) ──→ auto invoice
Manual (staff)                 Shipping (4)
Pre-order                      Delivered (5) ✓

DISCOUNTS                      FULFILLMENT
─────────                      ───────────
Trade Discounts                Delivery Note
Voucher Codes                  Packing List
Per client/group discounts     Innoship AWB
Per product/channel discounts  Courier tracking

RETURNS                        REPORTS & AUDIT
───────                        ───────────────
Client return request          OmniSales reports
Return approval                Sync audit (diary_sync)
Stock restitution              Revenue per channel
Refund                         Discount effectiveness

Morning (20–30 min)

1. New unconfirmed orders
/admin/omni_sales/order_list → filter status Draft (0) or Processing (1)
Review and confirm orders received overnight (from WooCommerce, B2B portal).

2. Orders awaiting approval
approve_status = 0 — Orders blocked in the approval flow
Process them or send to the relevant approver.

3. Check WooCommerce sync
/admin/omni_sales/diary_syncOrders tab
Check whether the automatic import ran correctly — identify import errors.

4. Packing lists to complete
/admin/warehouse/manage_packing_list — Incomplete parcels
Fill in dimensions and weight to generate the AWB.

5. New returns
/admin/omni_sales → Returns tab — new requests from clients
Review and make the approval decision.

During the day

New order (any channel)
  ↓ Check products + prices + client
  ↓ Confirm (status 0→3)
  ↓ Invoice auto-generated (if configured)
  ↓ Delivery note created (manual or automatic)
  ↓ Picking + Packing + AWB
  ↓ Hand to courier → status → Shipping (4)
  ↓ Courier confirms delivery → status → Delivered (5)

Weekly

  • OmniSales reports — revenue per channel, order volume, top products
  • Sync audit — imported orders vs. errors in the last 7 days
  • Discounts — check if discount rules are expiring soon
  • Returns — reconciliation of approved returns vs. re-entered stock

Sales channels

Where: /admin/omni_sales/omni_sales_channel

Available channel types

Channel channel channel_id Who places the order
POS pos 1 Staff at counter/terminal
B2B Portal portal 2 Client online in their own portal
WooCommerce woocommerce 3 Buyers from the online store
Manual 4 Staff in CRM admin
Pre-order pre_order Orders with future delivery
API External systems via REST API

Configuration per channel

Setting Description
Auto-confirm Order automatically moves to status 3 without manual approval
Auto-invoice Invoice auto-generated on confirmation (create_invoice = on)
Allowed payment methods What payment methods the channel accepts
Price list Channel-specific prices (override standard price)
Client groups Who has access to the channel
Delivery fee Default shipping cost per channel

Operational differences per channel

POS:

  • Immediate payment (cash/card at counter)
  • Receipt automatically generated (configurable template: bill_header_pos, bill_footer_pos)
  • Work shifts with tracking per operator

B2B Portal:

  • Client authenticates and browses the catalogue
  • Sees prices negotiated with them (per channel or per group)
  • Places order → goes to approval if configured
  • Receives confirmation email

WooCommerce:

  • Orders import automatically via cron (configurable frequency per store)
  • Client auto-created in CRM if they don't exist
  • Statuses sync bidirectionally (CRM → WooCommerce)

Order statuses — complete guide

Code Status What you do
0 Draft Order received, unverified. Review data, products, price.
1 Processing Stock and availability verification.
2 Pending Payment Waiting for upfront payment from client (B2B with advance payment).
3 Confirmed Order validated. Invoice (if configured) and delivery note generated.
4 Shipping Parcel collected by courier, AWB generated.
5 Delivered Delivery confirmed. Complete cycle.
6 Refund Refund processed.
7 Return Full return approved and processed.
8 Cancelled Order cancelled (by client or staff).
9 On Hold Temporarily suspended (stock shortage, payment issue).
10 Failed Failed (payment rejected, processing error).
11 Return Pending Return request awaiting approval.
12 Partial Return Partial return — only some products returned.
13 Partial Refund Partial refund processed.
14 Paid Paid in full.
15 Ready Ready for delivery (stock reserved).
16 Stock Unavailable Order received but product is out of stock.

Approval flow (`approve_status`)

Value Meaning
0 Pending — awaiting approval
1 Approved — can be confirmed
-1 Rejected — client is notified

Approval rules are configured per channel and order type in OmniSales settings (omni_order_approval_rules). Example: all B2B portal orders > 10,000 need sales manager approval.


Order processing step by step

B2B Portal order

1. Client places order → status: Draft (0)
   ↓
2. Automatic notification → OMS Operator
   ↓
3. Operator opens order:
   - Checks products and quantities
   - Checks price and applied discounts
   - Checks delivery address
   ↓
4. Sends to approval (if rule is active)
   → Manager approves → approve_status = 1
   ↓ (or if no approval required: directly to step 5)
5. Confirm → status: Confirmed (3)
   → Invoice auto-generated (if create_invoice = on)
   → Delivery note auto-created (if auto_create_goods_delivery = on)
   ↓
6. Warehouse: picking + packing + weighing
   ↓
7. Generate Innoship AWB → status: Shipping (4)
   ↓
8. Courier confirms delivery → status: Delivered (5)

WooCommerce order

1. Cron runs at configured interval (e.g. every 15 min)
   → Imports new orders from WooCommerce API
   → Creates cart + cart_detail + client (if new)
   → Status: corresponding to WooCommerce status
   ↓
2. Operator sees new order in OmniSales list
   (Notification if approval rule is active)
   ↓
3. If WooCommerce status = Processing → CRM status = 1 (Processing)
   Operator confirms → status = 3 → invoice + delivery note
   ↓
4. On status change in CRM → automatic update in WooCommerce
   (Bidirectional sync)

Back-order (status 16 — Stock Unavailable)

Order received → stock check → OUT OF STOCK
  ↓ status: 16 (Stock Unavailable)

What you do:
1. Notify Procurement → create RFQ for the missing product
2. Order stays in status 16 until replenished
3. When stock arrives (receipt note approved):
   → Manually change status to 3 (Confirmed)
   → Create delivery note
   → Continue normal flow

Important: The system does not automatically promote orders from status 16. Monitor the stock-unavailable order list manually.


B2B Portal — client perspective

Portal URL: /omni_sales/omni_sales_client/

What the B2B client can do

Action Details
Browse catalogue Filter by categories, subcategories, keyword search
See their prices Prices specific to portal channel or their client group
Apply voucher Specific discount code (if they know the code)
Place order Add to cart, fill in address, select payment method
Track order Real-time order status
Request return If order is delivered and within return window
View history All previous orders

Product visibility configuration

You can restrict what each B2B client sees:

  • Per client groupcustomer_group field on portal channel
  • Per specific clientcustomer field with client IDs
  • Per department — if omni_show_products_by_department = 1

B2B pricing

Prices are applied in order:

  1. Client-specific price — from sales_channel_detail.prices + discount rule omni_trade_discount.clients
  2. Client group price — group discount from omni_trade_discount.group_clients
  3. Channel price — price configured on the Portal channel
  4. Standard price — price from the item catalogue

Trade Discounts

Where: /admin/omni_sales/trade_discount

Discount structure

Field Notes
name_trade_discount Internal name of the rule
start_time / end_time Validity period
formal 0 = fixed amount / 1 = percentage
discount Discount value (e.g. 15 for 15%)
minimum_order_value Minimum order value for activation
voucher Voucher code (empty = applied automatically)
channel 0 = all channels / specific channel ID

Applicability

Dimension Field Examples
Per specific client clients Eligible client IDs
Per client group group_clients VIP, Wholesale, Retail
Per specific product items Discounted product IDs
Per product group group_items Electronics, Textiles, Furniture
Per channel channel POS only, Portal only, all
Per WooCommerce store store Specific store ID

Discount types

Type formal Example
Percentage 1 10% off all products in the Electronics category
Fixed amount 0 50 off orders over 500
Voucher code any Client enters code "PROMO2026" → -15%
Automatic any (no voucher) Applied without code if client meets criteria

Applied discount log

Each discount applied to an order is automatically recorded in omni_log_discount:

  • Client, product, order
  • Original price vs. price after discount
  • Saved value
  • Channel and voucher code (if applicable)

Useful for reporting discount campaign effectiveness.


Returns — complete process

Where: /admin/omni_sales → Returns tab or /admin/warehouse/manage_order_return_receipt

Initiating the return

From client (from B2B portal):

  1. Client accesses order history
  2. Selects delivered order (status 5)
  3. Clicks "Request Return"
  4. System checks: omni_return_request_within_x_day (default 30 days from delivery)
  5. Client selects products + quantities + reason
  6. Request arrives at you in CRM with status approval = 0

From operator (manually): From the delivered order → Create Return button → fill in items, quantities and reason.

Key fields on the OmniSales return

Field Notes
rel_id ID of the original order (cart.id)
return_type manual / partially / fully
fee_return_order Restocking fee (configurable globally or per vendor)
return_reason Return reason (free text)
approval 0=pending / 1=approved / 2=rejected
receipt_delivery_id Receipt note created when stock re-enters
refund_loyaty_point Whether loyalty points are refunded

Return statuses and your actions

approval Status Your action
0 Pending Review the request, check if within return window
1 Approved Stock is automatically reintegrated; process refund
2 Rejected Rejection reason communicated to client

On return approval

Automatically created:

  1. Return receipt note — goods re-entered into stock (receipt_delivery_id filled in)
  2. Stock transactioninventory_manage.inventory_number += quantity
  3. Refund record — in omni_refunds with amount and payment method

Refund

Where: From the approved return → Process Refund

Refund fields (omni_refunds):

  • amount — Amount to refund (original − return fee)
  • payment_mode — Refund method (same channel as original payment)
  • refunded_on — Refund date
  • note — Internal notes

Loyalty points: If omni_refund_loyaty_point = 1 → points earned on the original order are automatically reversed.

Return policy configuration

Where: /admin/omni_sales/setting

Setting Recommended value
omni_return_request_within_x_day 14–30 days (per commercial policy)
omni_fee_for_return_order 0–10% of order value
omni_return_policies_information Policy text displayed to client on return
omni_refund_loyaty_point 1 — refund points

WooCommerce synchronisation

Where: /admin/omni_sales/diary_sync

What syncs bidirectionally

Direction What syncs Frequency
CRM → WooCommerce Product prices (time3) Configurable per store
CRM → WooCommerce Stock (time2) Configurable per store
CRM → WooCommerce Product descriptions (time4) Configurable per store
CRM → WooCommerce Product images (time5) Configurable per store
WooCommerce → CRM New orders (time6) Configurable per store
WooCommerce → CRM Existing order statuses Every time6 sync

Resolving sync errors

Most common errors in diary_sync:

Error Cause Solution
Order not duplicated WooCommerce product SKU doesn't exist in CRM Create the product in CRM with the same SKU
Client not created Invalid or duplicate client email Manually check and fix the client record
Payment not recognised WooCommerce payment method not mapped Add mapping in channel settings
API timeout WooCommerce store inaccessible Check store availability; manual retry
Status not recognised WooCommerce status without CRM equivalent Add mapping in get_status_by_index_woo()

OmniSales Reports

Where: /admin/omni_sales/report

Available reports

Report What you analyse
Revenue per channel How much POS vs. Portal vs. WooCommerce generated
Order volume per period Daily/weekly/monthly order trend
Trade discounts What discounts were applied, on which products, for which clients
Returns Return rate per channel, per product, per period
Top products Best-selling products per channel
WooCommerce sync audit Imported orders vs. errors

Integration with other departments

Department Interaction
Sales Confirmed orders feed the sales pipeline; the sales agent is visible on the order (seller)
Warehouse Delivery notes and packing lists are generated from confirmed OmniSales orders
Finance Invoices auto-generated from confirmed orders; payments reconciled with bank statement
Procurement On insufficient stock (status 16), OMS operator notifies procurement for RFQ
Marketing Trade discounts and vouchers are marketing tools coordinated with the marketing team
Customer Support Clients with order problems open tickets — OMS operator involved in resolution

Workflow Automation for OMS

Configurable in Workflow Automation (/admin/workflow_automation):

Trigger Automatic action Benefit
New B2B Portal order Push notification to OMS Operator Immediate processing
Order > 5,000 Manager approval task Large order control
Order status → Confirmed Create delivery note + warehouse notification Automatic fulfillment
Order status → Delivered Review email → client Feedback collection
Status → 16 (Stock unavailable) Task "Urgent procurement" → Acquisitions Back-order managed
Return approved Confirmation email → client + task "Process refund" Fast communication
WooCommerce sync error Channel Administrator notification Fast intervention

Ask the administrator at /admin/roles:

Permission Required for
OmniSales → View / Create / Edit Full order access
OmniSales → Approve Order approval (for managers)
Trade Discounts → View / Create Discount management
Warehouse → Delivery Notes Create delivery notes
Innoship → AWB Generate courier AWB
Returns → View / Approve Return management
Reports → OmniSales Report access
Settings → OmniSales Channel configuration (admin)

Quick reference

Workflows: OmniSales Fulfillment · Full Commercial Cycle · Warehouse Inbound → Outbound

Modules: Omni Sales Orders · Sales Channels · Trade Discounts · Channel Sync Audit · Omni Sales Reports · Omni Sales Settings · Delivery Notes · Packing Lists · Innoship Couriers · WooCommerce · Shopify

Related departments: Sales Department · Warehouse & Logistics · Finance Department · Acquisitions Department

← Back to Department Guides

Tip

Channel Sync Audit is the OMS department's health monitor — check it first every morning. Zero errors means all orders are flowing from every connected channel; errors mean customers are waiting for orders they placed without knowing there is a problem.

Note

Marketing Automation handles timed nurture sequences and Marketing Planner handles bulk sends — they serve different purposes. Avoid duplicating the same message in both systems, which sends double communications and inflates unsubscribe rates.