OMS & E-commerce — Order Management System
Roluri acoperite: Operator OMS · Manager E-commerce · Administrator Canal · Responsabil Retururi
Module principale: OmniSales (Comenzi · Canale · Discounturi · Rapoarte) · Warehouse (Delivery Notes · Packing Lists) · Innoship · Invoices
Cine sunt utilizatorii acestui ghid
| Rol | Ce face în CRMConnect |
|---|---|
| Operator OMS | Procesează comenzile zilnice: confirmă, generează avize, urmărește livrările |
| Manager E-commerce | Configurează canalele de vânzare, regulile de aprobare, discounturile comerciale |
| Administrator Canal | Gestionează sincronizarea WooCommerce/Shopify, rezolvă erorile de sync |
| Responsabil Retururi | Procesează cererile de retur, aprobă returnările de stoc, gestionează rambursările |
Harta modulului OmniSales
CANALE DE VÂNZARE COMENZI (CART)
────────────────── ──────────────
POS (Point of Sale) Draft (0)
Portal B2B (clienți) Processing (1)
WooCommerce Pending Payment (2)
Shopify Confirmed (3) ──→ factură auto
Manual (staff) Shipping (4)
Pre-order Delivered (5) ✓
DISCOUNTURI FULFILLMENT
─────────── ───────────
Trade Discounts Aviz Livrare (Delivery Note)
Voucher Codes Packing List
Reduceri per client/grup AWB Innoship
Reduceri per produs/canal Tracking curier
RETURURI RAPOARTE & AUDIT
──────── ────────────────
Cerere retur client Rapoarte OmniSales
Aprobare retur Audit sync (diary_sync)
Restituire stoc Venituri per canal
Rambursare (refund) Efectivitate discounturi
Rutina zilnică recomandată
Dimineața (20–30 min)
1. Comenzi noi neconfirmate/admin/omni_sales/order_list → filtrează status Draft (0) sau Processing (1)
Reviziezi și confirmi comenzile primite peste noapte (din WooCommerce, portal B2B).
2. Comenzi în așteptarea aprobăriiapprove_status = 0 — Comenzi blocate în fluxul de aprobare
Le procesezi sau le trimiți aprobatorului relevant.
3. Verificare sync WooCommerce/admin/omni_sales/diary_sync → tab Comenzi
Verifici dacă importul automat a rulat corect — identifici erori de import.
4. Packing list-uri de finalizat/admin/warehouse/manage_packing_list — Colete nearanjate
Completezi dimensiunile și greutatea pentru a genera AWB-ul.
5. Retururi noi/admin/omni_sales → tab Retururi — cereri noi de la clienți
Revizuiești și iei decizia de aprobare.
Cursul zilei
Comandă nouă (orice canal)
↓ Verifici produse + prețuri + client
↓ Confirmi (status 0→3)
↓ Factură generată automat (dacă configurat)
↓ Aviz de livrare creat (manual sau automat)
↓ Picking + Packing + AWB
↓ Predai curierului → status → Shipping (4)
↓ Curier confirmă livrarea → status → Delivered (5)
Săptămânal
- Rapoarte OmniSales — venituri per canal, volum comenzi, top produse
- Audit sync — comenzi importate vs. erori în ultimele 7 zile
- Discounturi — verifici dacă regulile de discount expiră în curând
- Retururi — reconciliere retururi aprobate vs. stoc reintrat
Canalele de vânzare
Unde: /admin/omni_sales/omni_sales_channel
Tipuri de canale disponibile
| Canal | channel |
channel_id |
Cine plasează comanda |
|---|---|---|---|
| POS | pos |
1 | Staff la ghișeu/terminal |
| Portal B2B | portal |
2 | Clientul online în portalul propriu |
| WooCommerce | woocommerce |
3 | Cumpărătorii din magazinul online |
| Manual | — | 4 | Staff în CRM admin |
| Pre-order | pre_order |
— | Comenzi cu livrare viitoare |
| API | — | — | Sisteme externe via REST API |
Configurare per canal
| Setare | Descriere |
|---|---|
| Auto-confirmare | Comanda trece automat la status 3 fără aprobare manuală |
| Auto-factură | Factura se generează automat la confirmare (create_invoice = on) |
| Moduri de plată permise | Ce metode de plată acceptă canalul |
| Listă de prețuri | Prețuri specifice canalului (override față de prețul standard) |
| Grupuri clienți | Cine are acces la canal |
| Taxă de livrare | Cost transport implicit per canal |
Diferențe operaționale per canal
POS:
- Plată imediată (cash/card la ghișeu)
- Bon de casă generat automat (template configurabil:
bill_header_pos,bill_footer_pos) - Shift-uri de lucru cu tracking per operator
Portal B2B:
- Clientul se autentifică și navighează catalogul
- Vede prețurile negociate cu el (per canal sau per grup)
- Plasează comanda → merge în aprobare dacă e configurat
- Primește email de confirmare
WooCommerce:
- Comenzile se importă automat via cron (frecvența configurabilă per store)
- Clientul e creat automat în CRM dacă nu există
- Statusurile se sincronizează bidirecțional (CRM → WooCommerce)
Statusurile comenzii — ghidul complet
| Cod | Status | Ce faci tu |
|---|---|---|
| 0 | Draft | Comandă primită, neverificată. Reviziezi datele, produsele, prețul. |
| 1 | Processing | Verificare stoc și disponibilitate. |
| 2 | Pending Payment | Aștepți plata în avans de la client (B2B cu plată anticipată). |
| 3 | Confirmed | Comandă validată. Se generează factura (dacă e configurat) și avizul de livrare. |
| 4 | Shipping | Coletul ridicat de curier, AWB generat. |
| 5 | Delivered | Confirmată livrarea. Ciclu complet. |
| 6 | Refund | Rambursare procesată. |
| 7 | Return | Retur complet aprobat și procesat. |
| 8 | Cancelled | Comanda anulată (de client sau staff). |
| 9 | On Hold | Suspendată temporar (lipsă stoc, problemă plată). |
| 10 | Failed | Eșuată (plată respinsă, eroare procesare). |
| 11 | Return Pending | Cerere de retur în așteptarea aprobării. |
| 12 | Partial Return | Retur parțial — doar o parte din produse returnate. |
| 13 | Partial Refund | Rambursare parțială procesată. |
| 14 | Paid | Plătită integral. |
| 15 | Ready | Pregătită pentru livrare (stoc rezervat). |
| 16 | Stock Unavailable | Comandă primită dar produsul e în lipsă de stoc. |
Fluxul de aprobare (approve_status)
| Valoare | Semnificație |
|---|---|
0 |
Pending — în așteptarea aprobării |
1 |
Approved — aprobată, poate fi confirmată |
-1 |
Rejected — respinsă, clientul e notificat |
Regulile de aprobare se configurează per canal și tip de comandă în setările OmniSales (
omni_order_approval_rules). Exemplu: toate comenzile B2B portal > 10.000 RON necesită aprobarea managerului de vânzări.
Procesarea comenzilor pas cu pas
Comandă din Portal B2B
1. Clientul plasează comanda → status: Draft (0)
↓
2. Notificare automată → Operator OMS
↓
3. Operator deschide comanda:
- Verifică produsele și cantitățile
- Verifică prețul și discounturile aplicate
- Verifică adresa de livrare
↓
4. Trimite la aprobare (dacă regula e activă)
→ Managerul aprobă → approve_status = 1
↓ (sau dacă nu necesită aprobare: direct la pasul 5)
5. Confirmare → status: Confirmed (3)
→ Factură generată automat (dacă create_invoice = on)
→ Aviz de livrare creat automat (dacă auto_create_goods_delivery = on)
↓
6. Depozit: picking + packing + cântărire
↓
7. Generare AWB Innoship → status: Shipping (4)
↓
8. Curier confirmă livrarea → status: Delivered (5)
Comandă din WooCommerce
1. Cron rulează la interval configurat (ex: la fiecare 15 min)
→ Importă comenzile noi din WooCommerce API
→ Creează cart + cart_detailt + client (dacă nou)
→ Status: corespunzător statusului WooCommerce
↓
2. Operator vede comanda nouă în lista OmniSales
(Notificare dacă regula de aprobare e activă)
↓
3. Dacă status WooCommerce = Processing → CRM status = 1 (Processing)
Operator confirmă → status = 3 → factură + aviz
↓
4. La schimbarea statusului în CRM → actualizare automată în WooCommerce
(Sync bidirecțional)
Comandă tip Back-order (status 16 — Stoc indisponibil)
Comandă primită → verificare stoc → LIPSĂ
↓ status: 16 (Stock Unavailable)
Ce faci:
1. Notifici Achizițiile → creare RFQ pentru produsul lipsă
2. Comanda rămâne în status 16 până la aprovizionare
3. La intrarea stocului (aviz recepție aprobat):
→ Schimbi manual statusul la 3 (Confirmed)
→ Creezi avizul de livrare
→ Continui fluxul normal
Important: Sistemul nu promovează automat comenzile din status 16. Monitorizezi manual lista de comenzi cu stoc indisponibil.
Portalul B2B — perspectiva clientului
URL portal: /omni_sales/omni_sales_client/
Ce poate face clientul B2B
| Acțiune | Detalii |
|---|---|
| Navighează catalogul | Filtrare pe categorii, subcategorii, căutare keyword |
| Vede prețurile proprii | Prețuri specifice canalului portal sau grupului de clienți |
| Aplică voucher | Cod de discount specific (dacă știe codul) |
| Plasează comandă | Adaugă în coș, completează adresă, selectează metoda de plată |
| Urmărește comanda | Statusul comenzii în timp real |
| Solicită retur | Dacă comanda e livrată și în fereastra de retur |
| Vizualizează istoricul | Toate comenzile anterioare |
Configurare vizibilitate produse
Poți restricționa ce vede fiecare client B2B:
- Per grup de clienți — câmpul
customer_grouppe canalul portal - Per client specific — câmpul
customercu ID-urile clienților - Per departament — dacă
omni_show_products_by_department = 1
Prețuri B2B
Prețurile se aplică în ordinea:
- Preț specific client — din
sales_channel_detailt.prices+ regula de discountomni_trade_discount.clients - Preț grup client — discount per grup din
omni_trade_discount.group_clients - Preț canal — prețul configurat pe canalul Portal
- Preț standard — prețul din catalogul de articole
Discounturi comerciale (Trade Discounts)
Unde: /admin/omni_sales/trade_discount
Structura unui discount
| Câmp | Note |
|---|---|
name_trade_discount |
Denumirea internă a regulii |
start_time / end_time |
Perioada de valabilitate |
formal |
0 = sumă fixă / 1 = procent |
discount |
Valoarea discountului (ex: 15 pentru 15%) |
minimum_order_value |
Valoarea minimă a comenzii pentru activare |
voucher |
Codul de voucher (gol = aplicat automat) |
channel |
0 = toate canalele / ID specific canal |
Aplicabilitate
| Dimensiune | Câmp | Exemple |
|---|---|---|
| Per client specific | clients |
ID-urile clienților eligibili |
| Per grup de clienți | group_clients |
VIP, Wholesale, Retail |
| Per produs specific | items |
ID-urile produselor cu discount |
| Per grup de produse | group_items |
Electronice, Textile, Mobilier |
| Per canal | channel |
Doar POS, doar Portal, toate |
| Per magazin WooCommerce | store |
ID-ul store-ului specific |
Tipuri de discount
| Tip | formal |
Exemplu |
|---|---|---|
| Procentual | 1 |
10% reducere la toate produsele din categoria Electronice |
| Sumă fixă | 0 |
50 RON reducere la comenzi peste 500 RON |
| Voucher cu cod | orice | Client introduce codul „PROMO2026" → -15% |
| Automat | orice (fără voucher) | Aplicat fără cod dacă clientul îndeplinește criteriile |
Jurnalul de discounturi aplicate
Fiecare discount aplicat pe o comandă e înregistrat automat în omni_log_discount:
- Clientul, produsul, comanda
- Prețul original vs. prețul după discount
- Valoarea economisită
- Canalul și codul de voucher (dacă aplicabil)
Util pentru raportarea efectivității campaniilor de discount.
Retururi — procesul complet
Unde: /admin/omni_sales → tab Retururi sau /admin/warehouse/manage_order_return_receipt
Inițierea returului
De la client (din portal B2B):
- Clientul accesează istoricul comenzilor
- Selectează comanda livrată (status 5)
- Apasă „Solicită Retur"
- Sistemul verifică:
omni_return_request_within_x_day(default 30 zile de la livrare) - Clientul selectează produsele + cantitățile + motivul
- Cererea ajunge la tine în CRM cu status
approval = 0
De la operator (manual): Din comanda livrată → buton Crează Retur → completezi articolele, cantitățile și motivul.
Câmpuri cheie pe returul OmniSales
| Câmp | Note |
|---|---|
rel_id |
ID-ul comenzii originale (cart.id) |
return_type |
manual / partially / fully |
fee_return_order |
Taxa de restocking (configurabilă global sau per furnizor) |
return_reason |
Motivul returului (text liber) |
approval |
0=pending / 1=aprobat / 2=respins |
receipt_delivery_id |
Avizul de recepție creat la reintrarea stocului |
refund_loyaty_point |
Dacă se restituie punctele de loialitate |
Statusuri retur și acțiunile tale
approval |
Status | Acțiunea ta |
|---|---|---|
0 |
Pending | Revizuiești cererea, verifici dacă e în termenul de retur |
1 |
Aprobat | Stocul e reintegrat automat; procesezi rambursarea |
2 |
Respins | Motivul respingerii e comunicat clientului |
La aprobarea returului
Automat se creează:
- Aviz de recepție retur — marfa reintrată în stoc (
receipt_delivery_idcompletat) - Tranzacție stoc —
inventory_manage.inventory_number += cantitate - Înregistrare rambursare — în
omni_refundscu suma și modalitatea de plată
Rambursarea (Refund)
Unde: Din returul aprobat → Procesează Rambursare
Câmpuri rambursare (omni_refunds):
amount— Suma de rambursat (original − taxă retur)payment_mode— Modalitatea de rambursare (același canal cu plata originală)refunded_on— Data rambursăriinote— Note interne
Puncte de loialitate: Dacă omni_refund_loyaty_point = 1 → punctele câștigate pe comanda originală sunt anulate automat.
Configurare politică de retur
Unde: /admin/omni_sales/setting
| Setare | Valoare recomandată |
|---|---|
omni_return_request_within_x_day |
14–30 zile (conform politicii comerciale) |
omni_fee_for_return_order |
0–10% din valoarea comenzii |
omni_return_policies_information |
Textul politicii afișat clientului la retur |
omni_refund_loyaty_point |
1 — restituie punctele |
Sincronizarea WooCommerce
Unde: /admin/omni_sales/diary_sync
Ce se sincronizează bidirecțional
| Direcție | Ce se sincronizează | Frecvență |
|---|---|---|
| CRM → WooCommerce | Prețuri produse (time3) |
Configurable per store |
| CRM → WooCommerce | Stocuri (time2) |
Configurable per store |
| CRM → WooCommerce | Descrieri produse (time4) |
Configurable per store |
| CRM → WooCommerce | Imagini produse (time5) |
Configurable per store |
| WooCommerce → CRM | Comenzi noi (time6) |
Configurable per store |
| WooCommerce → CRM | Status comenzi existente | La fiecare sync time6 |
Configurare per magazin WooCommerce
Unde: /admin/woocommerce/stores sau din setările OmniSales
Fiecare magazin WooCommerce are:
- URL magazin
- Consumer Key + Consumer Secret (din WooCommerce → Settings → REST API)
- Intervalele de sincronizare (
time1până latime8în minute)
Rezolvarea erorilor de sync
Cele mai comune erori în diary_sync:
| Eroare | Cauza | Soluție |
|---|---|---|
| Comandă nedublicată | SKU produs din WooCommerce nu există în CRM | Creezi produsul în CRM cu același SKU |
| Client necreeat | Email client invalid sau duplicat | Verifici și corectezi manual fișa clientului |
| Plată nerecunoscută | Metoda de plată din WooCommerce nemapată | Adaugi mapping în setările canalului |
| Timeout API | Magazinul WooCommerce inaccesibil | Verifici disponibilitatea magazinului; retry manual |
| Status nerecunoscut | Status WooCommerce fără corespondent în CRM | Adaugi mapping în get_status_by_index_woo() |
Retenția log-urilor de sync
Jurnalul de sync se păstrează implicit 30 de zile (number_of_days_to_save_diary_sync). Cron-ul curăță automat intrările mai vechi.
Rapoarte OmniSales
Unde: /admin/omni_sales/report
Rapoarte disponibile
| Raport | Ce analizezi |
|---|---|
| Venituri per canal | Cât a generat POS vs. Portal vs. WooCommerce |
| Volum comenzi per perioadă | Trend zilnic/săptămânal/lunar de comenzi |
| Discounturi comerciale | Ce discounturi s-au aplicat, pe ce produse, pentru ce clienți |
| Retururi | Rata de retur per canal, per produs, per perioadă |
| Top produse | Produsele cele mai vândute per canal |
| Audit sync WooCommerce | Comenzi importate vs. erori |
Filtre disponibile
- Canal de vânzare
- Perioadă (date range)
- Status comandă
- Produs specific
- Grup de produse
Export
Toate rapoartele suportă export Excel/CSV prin butonul DataTables integrat.
Setări OmniSales
Unde: /admin/omni_sales/setting
Setări esențiale
| Setare | Descriere |
|---|---|
omni_b2b_portal_flow_enabled |
1 = portalul B2B activ |
omni_display_shopping_cart |
1 = afișează coșul de cumpărături |
invoice_sync_configuration |
1 = factură auto la confirmare |
omni_send_review_email_on_delivery |
1 = email de recenzie după livrare |
omni_google_review_url |
Link-ul Google Reviews al companiei |
omni_order_approval_rules |
JSON cu regulile de aprobare per canal |
omni_return_request_within_x_day |
Zile fereastră retur (default: 30) |
Configurare taxe de livrare per canal
| Setare | Canal |
|---|---|
omni_pos_shipping_fee |
POS |
omni_portal_shipping_fee |
Portal B2B |
omni_manual_shipping_fee |
Comenzi manuale |
Receipt POS (Bon de casă)
bill_header_pos = HTML header pe bonul de casă
bill_footer_pos = HTML footer pe bonul de casă
Personalizezi cu logo, datele companiei, mesaj de mulțumire.
Integrare cu alte departamente
| Departament | Interacțiunea |
|---|---|
| Vânzări | Comenzile confirmate alimentează pipeline-ul de vânzări; agentul de vânzări e vizibil pe comandă (seller) |
| Depozit | Avizele de livrare și packing list-urile se generează din comenzile OmniSales confirmate |
| Financiar | Facturile se generează automat din comenzile confirmate; plățile sunt reconciliate cu extrasul bancar |
| Achiziții | La stoc insuficient (status 16), operatorul OMS notifică achizițiile pentru RFQ |
| Marketing | Discounturile comerciale și voucher-ele sunt instrumente de marketing coordonate cu echipa de marketing |
| Customer Support | Clienții cu probleme pe comenzi deschid tichete — operatorul OMS e implicat în rezolvare |
Workflow Automation pentru OMS
Configurabile în Workflow Automation (/admin/workflow_automation):
| Trigger | Acțiune automată | Beneficiu |
|---|---|---|
| Comandă nouă pe Portal B2B | Notificare push Operator OMS | Procesare imediată |
| Comandă > 5.000 RON | Task aprobare Manager | Control comenzi mari |
| Comandă status → Confirmed | Creare aviz livrare + notificare depozit | Fulfillment automat |
| Comandă status → Delivered | Email recenzie → client | Colectare feedback |
| Status → 16 (Stoc indisponibil) | Task „Aprovizionare urgentă" → Achiziții | Back-order gestionat |
| Retur aprobat | Email confirmare → client + task „Procesează refund" | Comunicare rapidă |
| Sync WooCommerce — eroare | Notificare Administrator Canal | Intervenție rapidă |
Permisiuni recomandate
Solicită administratorului la /admin/roles:
| Permisiune | Necesar pentru |
|---|---|
| OmniSales → View / Create / Edit | Acces complet comenzi |
| OmniSales → Approve | Aprobare comenzi (pentru manageri) |
| Trade Discounts → View / Create | Gestionare discounturi |
| Warehouse → Delivery Notes | Creare avize livrare |
| Innoship → AWB | Generare AWB curier |
| Returns → View / Approve | Gestionare retururi |
| Reports → OmniSales | Acces rapoarte |
| Settings → OmniSales | Configurare canale (admin) |
Referințe rapide
Workflow-uri: OmniSales Fulfillment · Full Commercial Cycle · Warehouse Inbound → Outbound
Module: Omni Sales Orders · Sales Channels · Trade Discounts · Channel Sync Audit · Omni Sales Reports · Omni Sales Settings · Delivery Notes · Packing Lists · Innoship Couriers · WooCommerce · Shopify
Departamente înrudite: Departament Vânzări · Depozit & Logistică · Departament Financiar · Departament Achiziții