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
Auditul de Sincronizare al Canalelor este monitorul de sănătate al departamentului OMS — verificați-l prima dată în fiecare dimineață. Zero erori înseamnă că toate comenzile curg din fiecare canal conectat; erorile înseamnă că clienții așteaptă comenzi plasate fără să știe că există o problemă.
Acuratețea Listei de Prețuri în portalul B2B este critică pentru business. Prețuri greșite vizibile distribuitorilor sau revânzătorilor subminează acordurile comerciale și creează dispute mult mai dificil de rezolvat după ce comenzile au fost deja plasate la prețuri incorecte.