Workflow: OmniSales Order Fulfillment
Modules involved: OmniSales · Warehouse (Delivery Notes, Packing Lists) · Innoship · Couriers (Cargus / FanCourier) · Invoices
Who uses it: Operator comenzi, Depozit, Logistică, Financiar
Durata tipică: Ore – zile (de la comandă la livrare)
Overview
Fluxul complet de procesare a comenzilor primite din orice canal de vânzare (WooCommerce, Shopify, portal client, POS, manual): de la comanda nouă până la generarea AWB-ului de livrare și facturarea automată. Gestionat în principal de echipele de depozit și logistică.
Diagrama fluxului
[COMANDĂ OMNI] ← WooCommerce / Shopify / Portal / Manual / POS
│ status: Draft (0) → Processing (1) → Confirm (3)
│ ↓ Confirmare comandă (manuală sau automată)
│
[AVIZ DE LIVRARE (Goods Delivery Note)]
│ status: ready_for_packing → packed
│ creat automat din comandă confirmată
│ ↓ Picking în depozit — selectezi produsele fizic
│
[PACKING LIST]
│ status: wh_ready_to_deliver → wh_in_transit → wh_delivered
│ creat din avizul de livrare (total sau parțial)
│ include dimensiuni colet: lungime, lățime, înălțime, greutate
│ ↓ Aprobare packing list
│
[AWB INNOSHIP]
│ generat prin API Innoship din packing list aprobat
│ AWB printat și lipit pe colet
│ tracking number returnat automat
│ ↓ Predare curier
│
[FACTURĂ]
│ generată automat sau manual din comandă / aviz livrare
│ status: Ciornă → Trimisă → Plătită
│
[LIVRARE FINALIZATĂ]
│ status comandă → Delivered (5)
│ status packing list → wh_delivered
Pas cu pas
1. Comanda OmniSales — Intrarea comenzii
Unde: /admin/omni_sales/order_list
Surse de comenzi:
| Sursă | Cum ajunge în CRM |
|---|---|
| WooCommerce | Sync automat (cron) sau manual — modul WooCommerce |
| Shopify | Sync automat — modul Shopify |
| Portal client | Clientul plasează comanda din portalul propriu |
| POS | Operator introduce comanda la ghișeu |
| Manual | Staff introduce comanda direct din /admin/omni_sales |
Statusurile comenzii:
| Cod | Status | Descriere |
|---|---|---|
| 0 | Draft | Comandă nouă, neconfirmată |
| 1 | Processing | În procesare — revizuire stoc și disponibilitate |
| 2 | Pending Payment | Așteptare plată în avans |
| 3 | Confirmed | Confirmată — se poate genera avizul de livrare |
| 4 | Shipping | Preluată de curier |
| 5 | Delivered | Livrată și finalizată |
| 8 | Cancelled | Anulată |
| 9 | On Hold | Suspendată temporar |
| 14 | Paid | Plătită |
| 15 | Ready | Pregătită pentru livrare |
Aprobare comandă:
Comenzile pot necesita aprobare înainte de confirmare — approve_status: 0 (pending) → 1 (aprobat) → -1 (respins). Configurabil per canal de vânzare.
Câmpuri cheie pe comandă:
- Client (
id_contact) — legătura cu fișa clientului - Canal (
channel_id) — sursa comenzii - Produse + cantități + prețuri
- Adresă livrare
- Mod de plată
2. Aviz de Livrare (Goods Delivery Note) — Pregătirea comenzii
Unde: /admin/warehouse/manage_delivery
Creare:
- Automată: când comanda ajunge la status Confirmed (3) sau Shipping (4), sistemul creează automat avizul de livrare via
omnisales_auto_create_goods_delivery_with_invoice() - Manuală: din comanda confirmată, buton Generează Aviz Livrare
Ce conține avizul:
- Toate liniile de produse din comandă (cod, denumire, cantitate, preț)
- Depozitul sursă
- Adresa clientului (copiată din comandă)
- Număr unic (prefix configurable + auto-increment)
Statusuri aviz:
| Status | Descriere |
|---|---|
ready_for_packing |
Creat, await picking |
packed |
Produsele au fost împachetate; packing list creat |
Picking (colectarea produselor):
Operatorul de depozit preia avizul (fizic sau pe ecran) și colectează produsele marcate. Stocul nu se scade definitiv decât la finalizarea livrării sau la generarea facturii.
3. Packing List — Ambalare și pregătire colet
Unde: /admin/warehouse/manage_packing_list
Creare:
- Din avizul de livrare aprobat — buton Crează Packing List
- Suportă packing parțial (
type_of_packing_list = 'partial'): dacă nu ai toate produsele în stoc, poți livra parțial și genera un al doilea packing list ulterior
Date obligatorii pentru packing list:
| Câmp | Note |
|---|---|
| Produse + cantități | Copiate din aviz; ajustabile dacă livrare parțială |
| Greutate (kg) | Obligatoriu pentru generarea AWB |
| Lungime / Lățime / Înălțime (cm) | Dimensiuni colet — obligatorii pentru curier |
| Adresă livrare | Copiată din comandă; editabilă |
| Serviciu curier | Selectezi din lista Innoship (standard, express, etc.) |
Statusuri packing list:
| Status | Descriere |
|---|---|
wh_ready_to_deliver |
Creat, în așteptare AWB |
wh_in_transit |
AWB generat, colet preluat de curier |
wh_delivered |
Confirmat livrat |
Aprobare packing list:
Dacă fluxul de aprobare e activ, managerul aprobă packing list-ul (approval = 1) înainte de generarea AWB.
4. AWB Innoship — Generarea documentului de transport
Unde: Buton Generează AWB din packing list aprobat
sau direct din /admin/innoship/awb
Condiții prealabile:
- Credențiale Innoship configurate:
innoship_api_key,innoship_external_id(la/admin/innoship/settings) - Curier și serviciu selectate în packing list
- Dimensiuni și greutate completate
- Adresă de livrare validă în baza de date Innoship
Ce se întâmplă la generare:
- CRM trimite request la API Innoship cu datele coletului
- Innoship returnează: număr AWB + cod tracking
- CRM creează înregistrare în
wh_omni_shipmentscu datele returnate - Statusul packing list-ului →
wh_in_transit - Statusul comenzii →
Shipping (4) - AWB disponibil pentru printare (PDF A4 sau termic)
- Log creat în
innoship_audit_log
Curierii suportați prin Innoship:
Fan Courier, DPD, Cargus, Sameday, GLS, DHL și alții (depinde de contractele Innoship active).
Alternativă directă — modulul Couriers:
Dacă ai contracte directe cu Cargus sau FanCourier (fără agregator), poți genera AWB-urile prin modulul Couriers (/admin/couriers) — configurezi API key-urile direct cu fiecare curier, fără intermediar.
| Soluție | Curierii suportați | Când o folosești |
|---|---|---|
| Innoship | Fan Courier, DPD, Cargus, Sameday, GLS, DHL, + alții | Ai contract cu Innoship ca agregator |
| Couriers direct | Cargus, FanCourier | Ai contract direct; vrei integrare fără agregator |
Tracking:
Din lista AWB (/admin/innoship/awb sau /admin/couriers/awb), statusul de livrare se actualizează automat prin sincronizarea periodică.
5. Factura — Cererea de plată
Unde: /admin/invoices
Generare:
| Mod | Când |
|---|---|
| Automată la confirmare | Dacă e activată opțiunea create_invoice = on pe canal — factura se generează când comanda atinge status Shipping (4) |
| Automată la livrare | Dacă e configurată generarea la status Delivered (5) |
| Manuală | Din comanda confirmată, buton Crează Factură; sau din avizul de livrare |
Legăturile create:
cart.number_invoice→invoices.idgoods_delivery.invoice_id→invoices.id
Conținutul facturii:
Liniile se preiau din comandă: produse, cantități, prețuri, taxe. Adresa de facturare vine din profilul clientului sau din comandă.
6. Livrare finalizată și retur
Confirmarea livrării:
Când Innoship confirmă livrarea (product_delivered):
- Statusul packing list →
wh_delivered - Statusul comenzii →
Delivered (5) - Stocul e scăzut definitiv din depozit
Retur (dacă e cazul):
| Câmp | Note |
|---|---|
| Fereastra de retur | Configurabilă (default 30 zile) |
| Tip retur | manual, partially, fully |
| Tabel | wh_order_returns — linked la original_order_id |
| Refund | Dacă se aprobă returul, se generează rambursare în omni_refunds |
Returul de la client → Aviz de Recepție Retur (/admin/warehouse/manage_order_return_receipt)
Ce se creează automat
| Eveniment | Se creează automat |
|---|---|
| Comandă sincronizată din WooCommerce/Shopify | Comandă OmniSales cu client și produse |
| Comandă → status Confirmed | Aviz de Livrare cu liniile comenzii |
| Packing list aprobat + AWB generat | wh_omni_shipments, log Innoship, status → In Transit |
Comandă → status Shipping (dacă create_invoice = on) |
Factură cu liniile comenzii |
| Livrare confirmată de Innoship | Status comandă → Delivered, stoc scăzut |
Puncte unde fluxul poate bloca
| Problemă | Cauză probabilă | Soluție |
|---|---|---|
| Comanda nu apare din WooCommerce | Sync cron nu rulează sau credențiale incorecte | Verifică /admin/woocommerce/stores și cron |
| Avizul de livrare nu se generează automat | Opțiunea auto-create dezactivată pe canal | Activează din setările canalului de vânzare |
| Eroare la generarea AWB | Adresă client inexistentă în baza Innoship | Verifică ortografia localității; contactează Innoship |
| Dimensiuni/greutate lipsesc | Câmpurile nu au fost completate în packing list | Completează obligatoriu toate 4 câmpuri fizice |
| Stocul e 0 dar comanda e confirmată | Stoc insuficient în depozit | Verifică avizul de recepție pending sau fă ajustare de stoc |
| Factura nu se generează automat | create_invoice dezactivat pe canal |
Activează din /admin/omni_sales/omni_sales_channel → Edit canal |
Audit și rapoarte
- Audit Sincronizări —
/admin/omni_sales/diary_sync— log sincronizări WooCommerce/Shopify - Innoship Audit Log —
/admin/innoship/audit— toate operațiunile AWB - Rapoarte OmniSales —
/admin/omni_sales/report— comenzi per canal, status, perioadă - Istoric Inventar —
/admin/warehouse/warehouse_history— mișcări de stoc