Workflow: Portal B2B — Comandă Client Self-Service

Modules involved: Client Portal · Price Lists · Estimates · Clients & Client Groups · Invoices · Warehouse · Proposals · Workflow Automation · Sales Agent
Who uses it: Clienți B2B (Revânzători, Distribuitori, Corporate), Agent Vânzări, Depozit, Financiar
Durata tipică: Ore – zile (de la plasarea comenzii în portal la livrare și facturare)

Overview

Portalul B2B permite revânzătorilor, distribuitorilor și clienților corporate să plaseze comenzi direct în CRMConnect, fără a implica agentul de vânzări pentru fiecare tranzacție. Clientul se autentifică în portalul propriu (/clientarea), vede catalogul cu prețurile sale negociate (din Price List asignată clientului sau grupului de clienți), adaugă produse în coș și plasează comanda — care devine automat un Estimate în CRM.

Scenariul ideal: comenzi recurente de reaprovizionare, distribuitori cu volum constant care nu mai au nevoie de negociere la fiecare comandă. Agentul de vânzări este notificat automat și poate revizui/aproba comanda înainte de procesare.

Legătură cu alte workflow-uri: Odată comanda aprobată și ajunsă la depozit, fluxul de picking → packing → AWB urmează același traseu ca OmniSales Fulfillment. Acest document acoperă specific aspectele B2B: portalul client, prețurile personalizate și aprobarea internă.


Diagrama fluxului (ASCII)

CLIENT B2B (Revânzător / Distribuitor / Corporate)
  │  autentificat în portal: /clientarea
  │  (credențiale create de agent sau trimise automat la signup)
  │
  ↓
[CATALOG CU PREȚURI PERSONALIZATE]
  │  Price List asignată clientului (sau grupului din care face parte)
  │  prețuri negociate, nu prețurile publice
  │  stoc vizibil (dacă permisiunea e activă în setările portalului)
  │  filtrare categorii, căutare cod produs, cantitate minimă
  │
  ↓
[PLASARE COMANDĂ DIN PORTAL]
  │  client selectează produse + cantități → coș → finalizare
  │  → Estimate creat în CRM cu status "Draft" sau "Sent"
  │  → notificare automată agent responsabil (Workflow Automation)
  │  → email confirmare client (dacă configurat)
  │
  ↓
[REVIZIE INTERNĂ (opțional, configurabil)]
  │  agentul verifică: stoc, credit limit, prețuri speciale, discount suplimentar
  │  ├── Aprobat → Estimate confirmat → status "Accepted"
  │  ├── Modificat → agent ajustează liniile → clientul notificat în portal
  │  └── Respins → client notificat cu motiv → poate plasa comandă nouă
  │
  ↓
[PROCESARE DEPOZIT]
  │  Aviz de Livrare generat din Estimate confirmat
  │  Packing List → Picking → AWB generat (Innoship / Couriers)
  │  status vizibil în portalul clientului (dacă permisiunea e activă)
  │
  ↓
[FACTURARE]
  │  factură generată din Estimate sau la expediere
  │  vizibilă în portal → tab Invoices
  │  client poate descărca PDF
  │  plată online prin gateway (dacă configurat)
  │
  ↓
[ISTORIC ÎN PORTAL]
  │  clientul vede toate comenzile + statusuri + facturi + avize
  │  poate relansa o comandă anterioară (dacă funcționalitate activă)
  │
[COMANDĂ COMPLETĂ ✓]

Pas cu pas

1. Configurarea accesului clientului B2B în portal

Unde: /admin/clients → fișa clientului → tab Portal

Înainte ca un client să poată folosi portalul B2B, agentul configurează:

Credențiale portal:

Câmp Unde Note
Email portal Fișa clientului → Contact principal Emailul de autentificare
Parolă Trimisă prin email automat sau setată manual Clientul o schimbă la primul login
Permisiuni portal Setări per client: vizualizare stoc, descărcare documente, plasare comenzi Configurabil granular

Grup de clienți:

Dacă mai mulți clienți au aceleași condiții comerciale, grupează-i:

Verificare acces: Clientul se autentifică la /clientarea cu emailul și parola setate.


2. Catalogul cu prețuri personalizate

Unde: Portal client /clientarea → Secțiunea Comenzi / Catalog

Clientul vede doar prețurile sale, nu prețurile publice. Mecanismul:

Ierarhia de prețuri aplicată în portal:

Prioritate Sursă preț Condiție
1 (cel mai specific) Price List asignată direct clientului partner_client = id_client
2 Price List asignată grupului clientului partner_group = id_grup
3 Price List promoțională activă ispromotion = 1 + în fereastra de date
4 Price List implicită is_default = 1
5 Prețul standard al produsului Fallback — dacă produsul nu e în nicio price list

Configurare Price List per client:

  1. /admin/sales/price_lists → Add sau Edit price list existentă
  2. Câmp Partner Client → selectează clientul
  3. Sau câmp Partner Group → selectează grupul de clienți
  4. Completează prețurile pentru fiecare produs din catalog

Sfat practic: Folosește funcția Clone pe o Price List existentă pentru a crea rapid variante pentru clienți similari. Ajustezi doar produsele cu prețuri diferite.

Stoc vizibil în catalog:


3. Plasarea comenzii din portal

Unde: Portal /clientarea → Nou comandă / Coș

Fluxul de plasare:

  1. Clientul navighează catalogul sau caută după cod produs / denumire
  2. Adaugă produsele dorite cu cantitățile (respectând cantitatea minimă dacă e setată)
  3. Revizuiește coșul: produse, cantități, prețuri unitare, total
  4. Selectează adresa de livrare (din adresele salvate sau introduce una nouă)
  5. Opțional: adaugă note / referință comandă proprie (ex. numărul PO intern al clientului)
  6. Finalizează comanda → Commandă plasată

Ce se creează în CRM la plasarea comenzii:

Document Status inițial Observație
Estimate (Sales Order) Draft (1) sau Sent (2) Configurabil — trimis direct sau în draft pentru revizie
Notificare agent Email/task automat prin Workflow Automation
Confirmare client Email automat opțional

Câmpuri cheie pe Estimate creat din portal:

Câmp Valoare Note
clientid ID clientul autentificat Legătura cu fișa clientului
sale_agent ID agentul responsabil Agentul asociat clientului
price_list_id ID Price List aplicată Prețurile clientului
Linii produse Din coșul clientului Cantități + prețuri din Price List
Note client Câmpul de note din portal Referință PO intern, instrucțiuni livrare

Statusurile Estimate:

Cod Status Descriere
1 Draft Creat, nerevizuit de agent
2 Sent Vizibil clientului în portal ca trimis
3 Declined Respins intern (clientul notificat)
4 Accepted Confirmat → poate genera factură/aviz livrare
5 Expired Data de expirare depășită

4. Notificarea și revizia internă (opțional)

Unde: /admin/estimates · /admin/workflow_automation

4.1 Notificarea automată a agentului

La plasarea comenzii din portal, Workflow Automation declanșează automat notificarea:

Configurare Workflow Automation:

4.2 Revizia agentului

Agentul deschide Estimate-ul din notificare sau din /admin/estimates:

Ce verifică agentul:

Verificare Unde Acțiune dacă problemă
Stoc disponibil Fișa produsului → Inventory Contactează depozitul; propune dată livrare alternativă
Credit limit client Fișa clientului → Sold Dacă depășit: Hold până la regularizare
Prețuri corecte Liniile Estimate Compară cu Price List; corectează dacă eroare
Discount suplimentar Negociat telefonic Adaugă discount pe linie sau global pe Estimate
Adresă livrare Tab livrare Verifică dacă adresa nouă e corectă

Scenarii de revizie:

Comandă OK → Estimate: status Accepted (4) → continuă la depozit

Comandă necesită modificare →
  Agentul editează liniile
  Clientul notificat prin portal / email
  Clientul confirmă modificările (sau plasează comandă nouă)

Comandă respinsă (ex. client blocat la plată) →
  Estimate: status Declined (3)
  Email automat client cu motiv

Aprobare fără revizie: Dacă clientul este de încredere și prețurile sunt standardizate, poți configura aprobarea automată — Estimate trece direct la Accepted fără intervenție umană (Workflow Automation → Update Field: status = 4).


5. Dacă clientul cere ofertă înainte de comandă — Proposals

Unde: /admin/proposals

Unii clienți B2B solicită o ofertă formală înainte de a plasa comanda (licitații, bugete de aprobare internă).

Fluxul cu Proposal:

Client solicită ofertă (telefon/email) → Agentul crează Proposal în CRM
  │  Proposal trimis → link portal sau email
  │  Client revizuiește în portal
  │
  ├── Acceptat → Convert Proposal → Estimate (comandă)
  │             → restul fluxului normal
  │
  └── Negocieri → agent actualizează Proposal (versiuni)
                → trimite din nou

Statusuri Proposal:

Cod Status
6 Draft
4 Sent — trimis clientului
1 Open/Viewed — clientul a deschis link-ul
3 Accepted
2 Declined
5 Revised — versiune nouă trimisă

6. Procesarea la depozit

Unde: /admin/warehouse/manage_delivery · /admin/warehouse/manage_packing_list

Odată Estimate-ul confirmat (status Accepted), fluxul intră în depozit:

Creare Aviz de Livrare:

Picking → Packing → AWB: Același flux ca în OmniSales Fulfillment, secțiunile 2-4:

  1. Aviz de Livrare (ready_for_packing)
  2. Packing List cu dimensiuni colet
  3. AWB generat prin Innoship sau Couriers direct
  4. Status actualizat → vizibil în portalul clientului

Vizibilitate status în portal:

Ce vede clientul Condiție
Status Estimate: Draft / Accepted / Declined Întotdeauna
Status livrare: În pregătire / Expediat / Livrat Dacă permisiunea vizualizare status e activă
Număr AWB + link tracking curier Dacă trimis în email sau afișat în portal

7. Facturarea și plata

Unde: /admin/invoices · Portal client /clientarea → tab Invoices

Generare factură:

Mod Trigger Configurare
Automată la Estimate Accepted Estimate confirmat estimate_auto_convert_to_invoice_on_client_accept = 1
Automată la expediere AWB generat / Shipping status Setări canal sau Workflow Automation
Manuală Operator din Estimate → Convert to Invoice Implicit

Factura în portalul clientului:

Odată generată, factura apare în portalul clientului:

Termene de plată B2B: Termenul de plată (30, 60, 90 zile) se setează pe fișa clientului și se preia automat pe factură. Factura apare cu status Overdue (4) dacă termenul e depășit — declanșează automat emailuri de reminder prin Workflow Automation.

eFactura B2B: Dacă clientul e persoană juridică cu CIF → eFactura trimisă automat la ANAF la emiterea facturii (același mecanism ca în E-commerce Fulfillment).


8. Istoricul comenzilor în portal

Unde: Portal /clientarea → Secțiunea Comenzi / Invoices

Clientul B2B are vizibilitate completă asupra istoricului relației comerciale:

Secțiune portal Ce conține Acțiuni disponibile
Comenzi Toate Estimate-urile (statusuri, date, sume) Vizualizare detaliu, plasare comandă similară
Facturi Toate facturile cu statusul de plată Descărcare PDF, plată online
Avize Avize de livrare emise Descărcare PDF
Propuneri Oferte trimise de agent Acceptare / Refuzare
Profil Date firmă, adrese, persoane de contact Editare self-service

Sfat practic — comenzi recurente: Dacă clientul plasează lunar aceeași comandă (ex. reaprovizionare standard), agentul poate crea un Estimate Template sau activa facturarea recurentă pentru a automatiza comenzile periodice.


Ce se creează automat

Eveniment trigger Document creat automat Condiție
Client plasat comandă din portal Estimate (Sales Order) cu liniile comenzii Portal activ, client autentificat
Estimate creat Notificare agent (email + task) Workflow Automation configurat
Estimate creat Email confirmare client Template email configurat pe eveniment
Estimate Accepted Aviz de Livrare auto_create_goods_delivery = 1
Aviz de Livrare aprobat Stoc decrementat din depozit Automat la aprobare
Packing List + AWB generat wh_omni_shipments, tracking number API Innoship configurat
Estimate Accepted Factură (dacă auto-convert activ) estimate_auto_convert_to_invoice_on_client_accept = 1
Factură emisă, client B2B cu CIF eFactura XML trimisă ANAF Modul eFactura activ
Factură Overdue Email reminder plată client Workflow Automation configurat

Puncte unde fluxul poate bloca

Problemă Cauză probabilă Soluție
Clientul nu se poate autentifica în portal Credențiale incorecte sau cont dezactivat Resetare parolă din fișa clientului → /admin/clients
Clientul nu vede prețurile negociate Price List neassignată clientului sau grupului Verifică în /admin/sales/price_lists că clientul e setat ca Partner Client
Clientul vede prețuri publice, nu cele negociate Price List default activă și are prioritate greșită Verifică ierarhia: Price List per client > per grup > default
Stoc 0 vizibil în catalog, dar există fizic Inventarul CRM nu e actualizat Verifică avize de recepție pending; actualizează stocul manual dacă necesar
Comanda plasată nu apare în /admin/estimates Workflow portal nedeclanșat, eroare aplicație Verifică logurile aplicației; dacă persistent, contactați suportul tehnic
Agentul nu primește notificarea Workflow Automation inactiv sau condiție greșită Verifică /admin/workflow_automation → Estimate Created workflow
Estimate blocat în Draft — nimeni nu aprobă Agent responsabil absent sau proces neclar Delegare automată: Workflow Automation → dacă Draft > 24h → task manager
Aviz de livrare blocat (stoc insuficient) Stoc consumat între plasarea comenzii și procesare Contactează clientul; propune dată livrare alternativă sau livrare parțială
Factura nu apare în portalul clientului Status factură în Draft, nu Sent Schimbă statusul facturii la Trimisă (status = 1)
Credit limit depășit, comanda blocată Soldul datorat depășește limita de credit setată Regularizare sold client sau majorare credit limit temporar
Clientul nu poate descărca factura PDF Permisiune descărcare dezactivată pe cont portal Activează din setările portalului per client

Rapoarte relevante

Raport URL Ce monitorizezi
Comenzi B2B (Estimates) per client /admin/estimates filtru pe client Volumul comenzilor per client, frecvența
Estimates neconfirmate /admin/estimates?status=1 (Draft) Comenzi în așteptare revizie — SLA aprobare
Facturi neîncasate B2B /admin/invoices?status=1 Cash flow, creanțe client
Facturi întârziate /admin/invoices?status=4 Colectare creanțe, escaladare
Clienți per grup / Price List /admin/clients filtru grup Segmentare portofoliu
Raport agent vânzări /admin/sales/sales_agent Comenzi atribuite per agent
Activitate portal client Log-uri portal Frecvența de acces, ultimul login
Stoc curent vs minim /admin/warehouse/warehouse_history + Commodities Anticipare rupturi pentru comenzile B2B recurente

Module implicate — documentație detaliată

Portal & Clienți: Client Portal · Clients & Client Groups

Prețuri & Comenzi: Price Lists · Estimates / Sales Orders · Proposals

Financiar: Invoices · Payments

Depozit: Delivery Notes · Packing Lists · Inventory History

Automatizare: Workflow Automation

Echipa de vânzări: Sales Agent

Workflow-uri înrudite: Lead → Cash · OmniSales Fulfillment · E-commerce Fulfillment · Full Commercial Cycle

← Înapoi la Workflows