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 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ă:

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:

Pregătire dimineața — checklist agent:

  1. Deschide Tasks → filtru Azi + Asignat Mie → sortare după prioritate
  2. Verifică Appointly → programări confirmate pentru ziua curentă
  3. Identifică clienții cu facturi restante din portofoliu (raport creanțe)
  4. Notează comenzile recurente anticipate (clienți cu frecvență fixă)
  5. 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:

  1. Nu preia comandă nouă fără aprobare manager
  2. Încearcă recuperarea cash a sumei restante
  3. Înregistrează plata imediat în Payments (cash pe teren)
  4. 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ă:

  1. Adaugă produsul în Estimate → CRM poate afișa stocul disponibil lângă produs (dacă opțiunea e activă)
  2. Dacă stoc insuficient → notifică clientul imediat și oferă alternativa disponibilă sau ETA pentru reaprovizionare
  3. 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:

  1. Deschide Task-ul de vizită → Mark as Completed
  2. Adaugă notă internă: ce s-a discutat, ce s-a comandat, probleme semnalate de client, acțiuni follow-up
  3. Dacă clientul a plătit cash: înregistrează plata imediat (vezi Pasul 7)
  4. 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:

  1. Responsabil depozit deschide /admin/estimates → filtru: status Accepted + Warehouse: al depozitului
  2. Verifică disponibilul de stoc pentru fiecare produs din comandă
  3. Crează Aviz de Livrare din Estimate (sau din Factură dacă factura e generată primul)
  4. La aprobarea Avizului: stocul scade automat + Packing List generat
  5. Coletele sunt pregătite + AWB generat (dacă livrare prin curier)
  6. 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:

  1. Deschide factura clientului în CRM (mobil)
  2. 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]
  3. Dacă plată parțială: suma parțială + rămâne sold de plătit
  4. Factură trece la status Plătită sau Parț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

  1. Add Payment → Payment Mode: Card / POS
  2. Reference: numărul tranzacției de pe POS sau ultimele 4 cifre
  3. 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:

  1. La scadență → sistem marchează automat factura ca Overdue (Restantă)
  2. Agentul responsabil primește notificare (dacă alertele sunt configurate)
  3. La primirea extrasului bancar → Financiar înregistrează plata în CRM
  4. 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)

  1. /admin/commission → filtru: Status = Pending + Luna curentă
  2. Verifică fiecare linie: factura aferentă, agentul, suma, data plății
  3. Approve All (dacă totul corect) sau Approve individual
  4. 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):

  1. Tasks completate → câte vizite a efectuat
  2. Estimate-uri create → valoarea totală a comenzilor preluate
  3. Cash colectat → suma totală din Payments de tip Cash în ziua curentă
  4. Lead-uri noi → prospecți identificați pe teren
  5. 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


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

← Înapoi la Workflows