Workflow: Agent de Teren — Distribuție prin Agenți
Modules involved: Leads · Clients · Tasks · Appointly · Estimates · Invoices · Payments · Sales Agent · Commission · Goals · Warehouse · Reports · DataPulse
Who uses it: Agenți de Vânzări · Manager Vânzări · Financiar · Depozit
Durata tipică: Ciclu zilnic (vizite + comenzi) + Ciclu lunar (comisioane + target-uri)
Overview
Firmele de distribuție cu rețea de teren — alimenație, pharma, HORECA, cosmétice, materiale de construcții — funcționează printr-un model în care agentul de vânzări este principalul punct de contact cu clienții (magazine, restaurante, clinici, farmacii). Agentul vizitează zilnic 8–20 de clienți, preia comenzi verbal sau cu telefonul/tableta, verifică stocul disponibil și transmite comenzile depozitului pentru livrare în aceeași zi sau a doua zi.
CRMConnect gestionează întregul ciclu: de la planificarea rutei dimineața, la preluarea comenzilor pe teren, verificarea stocului în timp real, confirmarea pentru depozit, facturarea și înregistrarea plăților cash, și până la calculul automat al comisionului după confirmarea plăților.
Un al doilea ciclu — cel lunar — include urmărirea target-urilor per agent față de realizări, aprobarea comisioanelor de către manager, și analizarea performanței pe portofoliu de clienți și pe categorii de produse.
Diagrama fluxului
DIMINEAȚA — PLANIFICARE RUTĂ
│
├── Tasks de vizită pentru azi
│ create de manager sau generate automat (clienți recurenți)
├── Clienți cu comenzi recurente — scadente azi
├── Clienți cu facturi restante — de recuperat cash
└── Clienți noi din Lead-uri — de vizitat pentru prima dată
│
↓
PE TEREN — VIZITA CLIENTULUI
│
├── Deschide fișa clientului → sold facturi + ultimele comenzi
├── Verifică stoc disponibil pentru produsele cerute
├── Creează Estimate (comandă teren) cu produsele convenite
│ prețurile se aplică automat din lista grupului clientului
└── Marchează Task vizita ca Completed + adaugă notă
│
↓
CONFIRMARE COMANDĂ
│
├── Estimate Accepted → transmis la depozit pentru picking
├── Depozit verifică stoc → crează Aviz de Livrare → Packing List
└── Livrare la client: cu șofer propriu sau curier
│
↓
FACTURARE & PLATĂ
│
├── Factură generată din Estimate (manual sau automat)
├── Plată cash pe teren → înregistrată imediat în Payments
├── Plată cu cardul POS → înregistrată cu referință tranzacție
└── Plată amânată (credit) → urmărire scadență + alertă restanță
│
↓
COMISION
│ calculat automat după confirmarea plății facturii
│ vizibil la /admin/commission → Pending Approval
│ Manager aprobă → Comision finalizat
│
↓
RAPORTARE ZILNICĂ / LUNARĂ
│
├── Realizări vs. Target-uri (Goals) — agent vede progresul
└── Manager vede performanța întregii echipe în DataPulse
[TARGET LUNAR ACTUALIZAT ✓ · COMISION APROBAT ✓ · PORTOFOLIU ACTIV ✓]
Pas cu pas
1. Configurarea agentului și a structurii de comision
Unde: /admin/sales_agent + /admin/commission
Înainte ca agentul să poată fi urmărit în sistem, trebuie configurat ca Sales Agent — distinct de userul CRMConnect al agentului.
1a. Creare Sales Agent
Unde: /admin/sales_agent → New Sales Agent
| Câmp | Descriere |
|---|---|
| Name | Numele complet al agentului |
| User Account | Contul de utilizator CRMConnect al agentului |
| Email-ul pentru notificări și rapoarte | |
| Commission Rate (%) | Comisionul de bază (ex: 3% din valoarea neta vândută) |
| Commission Type | percentage / fixed amount per item / tiered |
| Active | Da/Nu — dezactivare temporară fără ștergere |
Tipuri de comision suportate:
| Tip | Descriere | Exemplu |
|---|---|---|
| Percentage | % din valoarea vânzării nete (fără TVA) | 3% din fiecare factură |
| Per Item | Sumă fixă per unitate vândută | 0.50 RON/buc |
| Tiered | Procent diferit pe tranșe de performanță | 0–50k RON = 2%; 50k+ = 4% |
1b. Alocare clienți la agent
Unde: /admin/clients → editare client → câmpul Sales Agent
Fiecare client din portofoliu este asignat unui agent. Această alocare determină:
- Comenzile cărui agent îi sunt creditate (comision)
- Filtrarea în rapoarte per agent
- Vizibilitatea clientului dacă agentul are acces restricționat la portofoliu propriu
Import în bloc: Dacă ai sute de clienți, folosește import CSV din /admin/clients/import cu câmpul sales_agent_id completat.
1c. Configurare target-uri lunare (Goals)
Unde: /admin/goals → New Goal
| Câmp | Descriere |
|---|---|
| Agent / Staff | Agentul vizat |
| Goal Type | Revenue / Quantity / Number of Clients Visited |
| Target Value | Valoarea țintă (ex: 80,000 RON) |
| Period | Luna + Anul |
| Notes | Detalii: target per categorie produse sau per zonă |
Bună practică: Creează target-urile la începutul fiecărei luni. Agentul își poate vedea progresul în timp real din dashboard-ul propriu.
2. Planificarea rutei zilnice
Unde: /admin/tasks + /admin/appointly
2a. Tasks de vizită
Unde: /admin/tasks → filtru: asignat agentului + due date: azi
Task-urile de vizită pot fi:
| Sursă | Creat de | Tipul de vizită |
|---|---|---|
| Manager | Manager la început de săptămână | Vizite obligatorii (clienți cheie, recuperare debite) |
| Recurent | Sistem / șablon repetat | Clienți cu frecvență fixă (zilnic / săptămânal / lunar) |
| Agent | Agentul însuși | Vizite oportunistice, prospecți noi |
| Lead assignat | CRM automat la assignarea lead-ului | Prima vizită prospect nou |
Câmpuri Task de vizită:
| Câmp | Valoare / Notă |
|---|---|
| Title | Vizită [Nume Client] — [Dată] |
| Type | Visit / Follow-up / Debt Collection / New Client |
| Related To | Link la fișa clientului sau Lead |
| Assigned To | Agentul |
| Due Date | Data vizitei |
| Priority | Normal / High (pentru clienți cu datorii mari) |
| Notes | Agenda vizitei: ce produse să promoveze, ce să recupereze |
2b. Appointly — Programări
Unde: /admin/appointly
Pentru vizitele programate în avans (clienți importanți, prezentări de produse noi, negocieri), folosește Appointly pentru:
- Calendar vizual cu toate vizitele echipei
- Confirmare programare via email/SMS la client
- Integrare cu Google Calendar (dacă activă)
Pregătire dimineața — checklist agent:
- Deschide Tasks → filtru Azi + Asignat Mie → sortare după prioritate
- Verifică Appointly → programări confirmate pentru ziua curentă
- Identifică clienții cu facturi restante din portofoliu (raport creanțe)
- Notează comenzile recurente anticipate (clienți cu frecvență fixă)
- Verifică stocul general pentru produsele principale — evită promisiuni imposibile
3. Vizita clientului — procedură pe teren
Unde: /admin/clients/[id] (acces mobil) + /admin/invoices (sold client)
3a. Deschiderea fișei clientului
La ajungerea la client, agentul deschide fișa clientului în CRM (browser mobil sau app):
Informații verificate la fiecare vizită:
| Informație | Unde în CRM | Importanță |
|---|---|---|
| Sold facturi restante | Tab Invoices → filtru status Overdue | Critic — dacă restanțe > limita de credit, nu se mai preia comandă |
| Ultima comandă | Tab Estimates / Invoices → ultima intrare | Context ce produse a cumpărat ultima dată |
| Produse preferate | Istoricul comenzilor — cele mai frecvente | Recomandare proactivă |
| Nota internă a clientului | Câmpul Description / Internal Notes | Preferințe, condiții speciale, persoana de contact |
| Limita de credit | Câmpul Credit Limit din fișa clientului | Nu accepta comenzi care depășesc limita |
| Price List aplicată | Client Group → Price List | Ce prețuri i se afișează |
Semnal de alertă — client cu restanțe:
Dacă total facturi restante > limita de credit setată sau dacă clientul are facturi cu scadența depășită > 30 zile:
- Nu preia comandă nouă fără aprobare manager
- Încearcă recuperarea cash a sumei restante
- Înregistrează plata imediat în Payments (cash pe teren)
- Escaladează la manager dacă clientul refuză plata
3b. Verificarea stocului disponibil
Unde: /admin/warehouse/commodities → sold curent sau din Estimate la adăugarea produsului
Înainte de a confirma cantitățile, agentul verifică disponibilul real:
Important: CRMConnect nu rezervă stocul la crearea Estimate-ului. Dacă doi agenți preiau comenzi simultan pentru același produs, ambele estimări sunt acceptate, dar stocul se scade abia la avizul de livrare. Depozitul trebuie să gestioneze prioritatea livrărilor.
Procedură recomandată:
- Adaugă produsul în Estimate → CRM poate afișa stocul disponibil lângă produs (dacă opțiunea e activă)
- Dacă stoc insuficient → notifică clientul imediat și oferă alternativa disponibilă sau ETA pentru reaprovizionare
- Nu confirma cantități pe care le știi indisponibile
3c. Crearea comenzii pe teren (Estimate / Sales Order)
Unde: /admin/estimates → New Estimate
Câmpuri obligatorii:
| Câmp | Valoare |
|---|---|
| Client | Clientul vizitat (căutat după nume / cod) |
| Date | Data curentă |
| Expiry Date | Data de valabilitate a ofertei (ex: azi + 1 zi pentru comenzi urgente) |
| Sales Agent | Agentul curent (completat automat dacă e logat) |
| Warehouse | Depozitul din care se livrează |
| Price List | Aplicată automat din grupul clientului |
| Items | Produsele + cantitățile convenite cu clientul |
| Discount | Dacă agentul are permisiunea să ofere discount ad-hoc |
| Notes | Instrucțiuni livrare: orar, persoană contact depozit client, etaj |
| Delivery Date | Data dorită de livrare — comunicată depozitului |
Prețurile se aplică automat din Price List-ul grupului clientului. Agentul vede prețurile de vânzare; dacă are permisiunea, poate vedea și marja.
Statusuri Estimate pe parcursul vizitei:
| Status | Când | Acțiune agent |
|---|---|---|
| Draft | La creare | Editabil — agentul ajustează produse/cantități |
| Sent | Trimis clientului pentru confirmare (opțional) | Clientul primește email cu detaliile comenzii |
| Accepted | Confirmat — trimis la depozit | Depozitul vede comanda și pregătește picking-ul |
3d. Finalizarea vizitei — Task Completed
La plecarea din locație:
- Deschide Task-ul de vizită → Mark as Completed
- Adaugă notă internă: ce s-a discutat, ce s-a comandat, probleme semnalate de client, acțiuni follow-up
- Dacă clientul a plătit cash: înregistrează plata imediat (vezi Pasul 7)
- Dacă e un client nou identificat pe teren: crează un Lead nou pentru el
4. Prospectare clienți noi pe teren (Leads)
Unde: /admin/leads → New Lead
Agentul identifică pe teren magazine, restaurante sau alte puncte de vânzare care nu sunt încă în portofoliu. Le adaugă direct ca Lead-uri.
Câmpuri Lead de teren:
| Câmp | Valoare |
|---|---|
| Company Name | Numele magazinului / firmei |
| Contact Name | Persoana cu care a vorbit |
| Phone / Email | Contact direct |
| Source | Field Visit / Referral / Cold Canvass |
| Assigned To | Agentul care l-a identificat |
| Status | New → primul contact |
| Notes | Ce produse l-au interesat, ce distribuitor are acum, obiecții |
| Address | Adresa punct de lucru |
Pipeline Lead → Client nou:
New Lead (identificat pe teren)
│
↓ Contactat — agentul revine cu ofertă
│
↓ Ofertă Trimisă — Estimate trimis ca propunere comercială
│
↓ Negociere — condiții de plată, credit, preț
│
↓ Convertit în Client
│ creare fișă Client + alocare Client Group + Price List
│ asignare agent curent
│
→ Prima comandă procesată ca orice client activ
5. Procesarea comenzii la depozit
Unde: /admin/warehouse/manage_delivery (depozit) + /admin/estimates (agent)
5a. Vizibilitatea comenzii la depozit
Odată ce agentul marchează Estimate-ul ca Accepted, depozitul vede comanda în lista de ordine de pregătit.
Flux depozit:
- Responsabil depozit deschide
/admin/estimates→ filtru: status Accepted + Warehouse: al depozitului - Verifică disponibilul de stoc pentru fiecare produs din comandă
- Crează Aviz de Livrare din Estimate (sau din Factură dacă factura e generată primul)
- La aprobarea Avizului: stocul scade automat + Packing List generat
- Coletele sunt pregătite + AWB generat (dacă livrare prin curier)
- Livrarea pleacă: cu mașina agentului (același tur) sau cu echipa de livrare
5b. Comunicare depozit ↔ agent
Dacă livrarea e imposibilă (stoc insuficient pentru unele produse):
| Situație | Acțiune depozit | Acțiune agent |
|---|---|---|
| Stoc parțial disponibil | Aviz de livrare parțial (type_of_delivery = partial) |
Notifică clientul despre livrare parțiala + ETA rest |
| Produs indisponibil complet | Scoate produsul din aviz + notifică agentul | Oferă substitut sau înregistrează backorder |
| Adresă de livrare neclară | Trimite mesaj agentului (Tasks / notificare) | Completează adresa în fișa clientului |
6. Facturarea comenzilor de teren
Unde: /admin/invoices
6a. Generarea facturii
Factura se poate genera în două momente:
| Moment | Cum | Când |
|---|---|---|
| La confirmare comandă | Estimate → Convert to Invoice | Clienți cu plată imediată cash |
| La livrarea fizică | Din Aviz de Livrare → Create Invoice | Clienți cu credit (plată amânată) |
| Automat la Accept | estimate_auto_convert_to_invoice_on_client_accept = 1 |
Dacă opțiunea e activă global |
Statusuri factură:
| Cod | Status | Acțiune necesară |
|---|---|---|
| 6 | Draft | Verifică și trimite |
| 1 | Trimisă / Neîncasată | Urmărire la scadență |
| 3 | Parțial Plătită | Urmărire sold rămas |
| 2 | Plătită | Comisionul agentului devine eligibil |
| 4 | Restantă (Overdue) | Escaladare la recuperare creanțe |
| 5 | Anulată | Stocul se reface dacă setare activă |
6b. eFactura B2B
Pentru clienți persoane juridice (B2B), factura se transmite automat în ANAF e-Factura la emitere (dacă modulul e activ). Agentul nu are acțiuni suplimentare — procesul e automat. Statusul transmiterii e vizibil în tab-ul eFactura din fișa facturii.
7. Înregistrarea plăților pe teren
Unde: /admin/invoices/[id] → Add Payment + /admin/payments
7a. Plată cash pe teren
Agentul colectează cash de la client în momentul livrării sau al vizitei:
- Deschide factura clientului în CRM (mobil)
- Add Payment → completează:
- Amount: suma încasată
- Payment Mode:
Cash - Date: data curentă (nu retroactiv)
- Reference: bonul de casă sau numărul chitanței (dacă se emite)
- Note:
Cash colectat pe teren de [Nume Agent]
- Dacă plată parțială: suma parțială + rămâne sold de plătit
- Factură trece la status
PlătităsauParțial Plătită
Important: Înregistrarea cash-ului pe teren trebuie făcută imediat sau cel târziu la întoarcerea la birou. Suma cash colectată trebuie depusă la casierie și reconciliată cu plățile înregistrate în CRM.
7b. Plată cu cardul POS
- Add Payment → Payment Mode:
Card / POS - Reference: numărul tranzacției de pe POS sau ultimele 4 cifre
- Amount: suma exactă procesată
7c. Plată prin transfer bancar (Credit)
Clienții cu termen de plată (Net 15, Net 30) nu plătesc pe teren. Facturile rămân în status Trimisă până la confirmarea plății:
- La scadență → sistem marchează automat factura ca
Overdue(Restantă) - Agentul responsabil primește notificare (dacă alertele sunt configurate)
- La primirea extrasului bancar → Financiar înregistrează plata în CRM
- Alternativ: clientul poate plăti online prin link-ul din email (dacă gateway activ)
8. Calculul și aprobarea comisionului
Unde: /admin/commission
8a. Cum se calculează comisionul
Comisionul agentului se calculează automat pe baza configurației din Sales Agent:
Condiție de eligibilitate:
Factura asociată comenzii agentului → status = Plătită (2)
Calcul:
Valoare netă factură × Procent comision agent = Comision brut
Exemplu:
Factură #INV-2847: 4,200 RON (fără TVA)
Agent: Ion Popescu — 3% comision
Comision brut: 4,200 × 3% = 126 RON
Statusuri comision:
| Status | Descriere | Acțiune |
|---|---|---|
| Pending | Calculat automat la plata facturii | Așteptare aprobare manager |
| Approved | Aprobat de manager | Se include în statul de plată |
| Rejected | Respins (ex: retururi, dispute) | Agent notificat cu motivul |
| Paid | Comisionul a fost plătit agentului | Înregistrat în HR / Payroll |
8b. Fluxul de aprobare (manager)
/admin/commission→ filtru: Status = Pending + Luna curentă- Verifică fiecare linie: factura aferentă, agentul, suma, data plății
- Approve All (dacă totul corect) sau Approve individual
- Comisionul aprobat se transmite în HR Payroll pentru includere în statul lunii
Corecții de comision:
| Situație | Acțiune |
|---|---|
| Clientul returnează marfa după plata facturii | Comisionul se ajustează (sau se creează comision negativ) |
| Factura anulată după aprobarea comisionului | Manager respinge comisionul manual + notă de anulare |
| Agent și-a dat demisia — comenzi în curs | Comisioanele din facturile plătite înainte de demisie rămân valide |
9. Urmărirea target-urilor și raportarea performanței
Unde: /admin/goals + /admin/reports + /admin/datapulse
9a. Target-uri per agent (Goals)
Agentul vede progresul față de target în timp real:
Unde: /admin/goals → filtru luna curentă + agentul curent
| Indicator urmărit | Cum se măsoară în CRM |
|---|---|
| Revenue lunar (RON) | Sum facturi plătite ale agentului în luna curentă |
| Număr clienți vizitați | Tasks Completed de tip Visit în luna curentă |
| Clienți activi noi | Clienți cu prima factură în luna curentă |
| Leads convertite | Lead-uri cu status Converted de la agentul curent |
| Valoare comenzi preluate | Sum Estimates Accepted în luna curentă |
9b. Dashboard manager — performanță echipă
Unde: /admin/datapulse (dacă activ) sau /admin/reports/sales_by_staff
| Raport | Ce urmărești |
|---|---|
| Vânzări per agent (lunar) | Cine performează, cine e sub target |
| Top clienți per agent | Concentrare risc — dacă un client e 50%+ din vânzările agentului |
| Frecvență vizite | Câți clienți a vizitat fiecare agent zilnic / săptămânal |
| Creanțe per agent | Portofoliu de debite neîncasate per agent |
| Conversie Lead → Client | Eficiența prospectării |
| Comenzi anulate per agent | Calitatea comenzilor preluate |
9c. Raport zilnic agent
La sfârșitul zilei, agentul completează (sau managerul extrage automat):
- Tasks completate → câte vizite a efectuat
- Estimate-uri create → valoarea totală a comenzilor preluate
- Cash colectat → suma totală din Payments de tip Cash în ziua curentă
- Lead-uri noi → prospecți identificați pe teren
- Probleme / escaladări → notate în task-uri sau notes la clienți
Ce se creează automat
| Eveniment | Se creează automat | Condiție |
|---|---|---|
| Estimate acceptat de client (portal) | Notificare agent + manager | Alertă configurată în Settings |
| Estimate → Invoice | Factură generată automat | estimate_auto_convert_to_invoice_on_client_accept = 1 |
| Factură creată | Aviz de livrare (draft) | auto_create_goods_delivery = 1 |
| Aviz de livrare aprobat | Stoc scăzut + tranzacție ieșire înregistrată | Întotdeauna |
| Factură plătită | Comision agent calculat și plasat în Pending | Modul Commission activ + agent asignat |
| Factură depășită scadență | Status schimbat automat în Overdue | Job nocturn / cron zilnic |
| Target Goal — prag atins | Notificare agent (dacă configurată) | Modul Goals + alerte active |
| Lead assignat agentului | Task automat de contact | Dacă workflow automat Lead → Task e configurat |
Puncte unde fluxul poate bloca
| Problemă | Cauză probabilă | Soluție |
|---|---|---|
| Agentul nu poate vedea stocul din mobil | Permisiuni lipsă pe contul utilizatorului | Admin → User Permissions → activează acces Warehouse / Commodities în modul read-only |
| Prețurile din Estimate nu corespund cu ce a negociat agentul | Clientul nu e în grupul corect sau Price List-ul e expirat | Verifică Client Group → Price List alocată; dacă negociere specială → discount manual pe linie sau Price List dedicată |
| Comisionul nu apare calculat după plata facturii | Agentul nu e asignat pe factură / estimate | Verifică câmpul Sales Agent pe Estimate → dacă lipsă, adaugă manual și recalculează |
| Avizul de livrare blocat — stoc 0 | Alt agent sau altă comandă a consumat stocul | Depozit notifică agentul → agentul contactează clientul + decide: așteptare reaprovizionare sau comandă parțială |
| Clientul refuză să plătească la livrare | Dispută calitate marfă sau comandă neconcordantă | Nu anula factura pe teren — escaladează la manager; dacă retur parțial: crează aviz de retur din factură |
| Task-urile de vizită nu apar la agent | Task-urile nu sunt asignate corect sau filtrul e greșit | Verifică câmpul Assigned To pe task + Due Date = azi; manager reverifică asignările |
| Comisionul e calculat greșit (sumă mare/mică) | Procentul de comision e configurat greșit pe Sales Agent | /admin/sales_agent → editează agentul → verifică Commission Rate și Commission Type |
| Lead-urile din teren nu progresează în pipeline | Agentul le crează dar nu le urmărește | Manager verifică săptămânal raportul Lead-uri deschise per agent + target de conversie în Goals |
| Cash colectat pe teren neînregistrat în zi | Agentul uită sau nu are acces mobil stabil | Procedură: cash se înregistrează la baza la sfârșitul zilei obligatoriu; administrator verifică zilnic Payments > Cash din ziua curentă |
| Factură generată dar nu trimisă clientului | Factură rămâne în status Draft | Verifică dacă auto_send_invoice e dezactivat; agent sau financiar trimite manual din fișa facturii |
Rapoarte relevante
- Sales by Staff / Agent —
/admin/reports/sales_by_staff— vânzări per agent: valoare, număr facturi, clienți activi - Commission Report —
/admin/commission— comisioane pending și aprobate per agent per lună - Goals Progress —
/admin/goals— realizări vs. target per agent per lună - Client Invoices Overdue —
/admin/invoices?status=4filtrat pe Sales Agent — creanțe per portofoliu agent - Tasks Completed —
/admin/tasks?status=completed— vizite efectuate: frecvență per client, per agent - Leads by Agent —
/admin/leadsfiltrat pe Assigned To — prospectare activă și conversie - Payments Cash —
/admin/payments?payment_mode=cash— cash colectat per zi per agent (reconciliere casierie) - Estimates Pipeline —
/admin/estimates?status=2— comenzi trimise, neconfirmate încă - DataPulse —
/admin/datapulse— dashboard executiv: top agenți, tendințe, alertă sub-performanță
Module implicate — documentație detaliată
Clienți & CRM: Leads · Clients · Client Groups · Tasks · Appointly
Vânzare & Facturare: Estimates / Sales Orders · Invoices · Payments · Price Lists
Agenți & Performanță: Sales Agent · Commission · Goals
Depozit: Delivery Notes · Inventory History
Rapoarte & Analytics: Reports · DataPulse
Workflow-uri înrudite: Lead → Cash · Full Commercial Cycle · Warehouse Inbound → Outbound · OmniSales Fulfillment