Workflow: Purchase to Pay

Modules involved: Purchase (RFQ · Quotations · Purchase Orders · Vendor Invoices) · Warehouse (Goods Receipt) · Payments
Who uses it: Responsabil achiziții, Manager depozit, Financiar, Furnizori
Durata tipică: 1 zi – 4 săptămâni (depinde de termenele furnizorului)

Overview

Fluxul complet de aprovizionare: de la nevoia identificată intern (cerere de ofertă) până la plata facturii furnizorului și intrarea mărfii în stoc. Gestionat în principal de echipa de achiziții și depozit.


Diagrama fluxului

[CERERE DE OFERTĂ (RFQ)]
  │  status: Draft (1) → Approved (2) → Rejected (3) / Canceled (4)
  │  ↓ Aprobare internă → trimitere la furnizori
  │
[OFERTE PRIMITE (Quotations)]
  │  furnizorul răspunde prin portal sau manual
  │  status: Draft (1) → Accepted (2)
  │  ↓ Selectezi oferta câștigătoare → crezi Comandă Achiziție
  │
[COMANDĂ ACHIZIȚIE (Purchase Order)]
  │  status: Draft (1) → Approved (2) → Rejected (3) / Canceled (4)
  │  order_status: Not Started (1) → In Progress (2) → Completed (3)
  │  delivery_status: 0 = nelivrat / 1 = livrat
  │  ↓ Marfă sosește în depozit → Aviz de Recepție
  │
[AVIZ DE RECEPȚIE (Goods Receipt Note)]
  │  creat automat sau manual din PO
  │  stocul se actualizează în depozit
  │  ↓ Factură primită de la furnizor
  │
[FACTURĂ FURNIZOR (Vendor Invoice)]
  │  payment_status: unpaid → partially_paid → paid
  │  ↓ Înregistrezi plata
  │
[PLATĂ FURNIZOR]
  │
[CICLU ÎNCHIS ✓]

Pas cu pas

1. Cerere de Ofertă (RFQ) — Identificarea nevoii

Unde: /admin/purchase/purchase_request

Cum se creează:

Câmpuri cheie:

Câmp Note
Denumire RFQ Titlu intern descriptiv
Departament Departamentul solicitant
Responsabil Staff-ul care face cererea
Data solicitată Termenul de nevoie
Articole Produse + cantități necesare

Statusurile RFQ:

Cod Status Descriere
1 Draft Creat, nesupus aprobării
2 Approved Aprobat intern — se trimite la furnizori
3 Rejected Respins
4 Canceled Anulat

La trecerea în status Approved, sistemul apelează update_item_pur_request() pentru a sincroniza articolele cu catalogul de achiziții și loghează tranziția automat.


2. Ofertă Primită (Quotation) — Răspunsul furnizorului

Unde: /admin/purchase/myquotations

Cum intră oferta:

Câmpuri cheie pe ofertă:

Câmp Note
Furnizor Legătura cu fișa furnizorului
RFQ asociat Cererea de origine
Data expirare Valabilitatea ofertei
Articole + prețuri Ce oferă furnizorul și la ce preț
Termeni plată Zile credit comercial

Statusuri ofertă:

Cod Status Descriere
1 Draft / Pending Ofertă primită, neacceptată
2 Accepted Oferta selectată câștigătoare

Comparare oferte:
Poți primi multiple oferte pentru același RFQ și le poți compara pe coloane înainte de a selecta furnizorul.


3. Comandă Achiziție (Purchase Order) — Angajamentul legal

Unde: /admin/purchase/purchase_order

Creare:

Statusurile PO:

Câmp Cod Descriere
status 1 Draft — neconfirmat
status 2 Approved — confirmat și trimis furnizorului
status 3 Rejected
status 4 Canceled
order_status 1 Not Started — livrarea nu a început
order_status 2 In Progress — livrare parțială sau în curs
order_status 3 Completed — toate articolele recepționate
delivery_status 0 Nelivrat
delivery_status 1 Livrat complet

Câmpuri importante:

Câmp Note
Termen de plată (days_owed) Zile de credit comercial de la livrare
Data livrare estimată Termenul promis de furnizor
Contract asociat Dacă există contract cadru cu furnizorul
Depozit destinație Unde vor intra mărfurile

Trimitere la furnizor:
Buton Trimite → email automat cu PDF-ul comenzii și link portal. Furnizorul confirmă recepția și poate actualiza statusul de livrare.


4. Aviz de Recepție (Goods Receipt Note) — Intrarea mărfii

Unde: /admin/warehouse/manage_purchase

Creare:

La recepție:

  1. Operatorul de depozit verifică fizic marfa față de aviz
  2. Completează cantitățile efectiv recepționate (pot fi parțiale)
  3. Notează discrepanțele (lipsuri, deteriorări)
  4. Salvează — stocul se actualizează automat în depozitul configurat

Câmpuri cheie:

Câmp Note
Cod aviz recepție Generat automat cu prefix configurabil
PO asociat Legătura cu comanda de origine
Articole + cantități Ce s-a primit efectiv
Depozit Locația în care intră marfa
Data recepției Data fizică a intrării

Dacă recepția este parțială, delivery_status rămâne 0 și se poate crea un al doilea aviz la livrarea restului.


5. Factură Furnizor (Vendor Invoice) — Cererea de plată

Unde: /admin/purchase/myinvoices

Creare:

Statusurile facturii furnizor:

payment_status Descriere
unpaid Neachitată — nicio plată înregistrată
partially_paid Parțial achitată — suma plătită < total
paid Achitată integral

Statusul se calculează automat: dacă suma tuturor plăților înregistrate în pur_invoice_payment = totalul facturii → paid. Dacă 0 < plătit < total → partially_paid.

Câmpuri cheie:

Câmp Note
Număr factură furnizor Numărul de pe factura primită
Furnizor Fișa furnizorului
PO asociat Comanda de origine
Data scadență Calculată din invoice_date + days_owed
Total Suma din factură

6. Plată Furnizor — Stingerea datoriei

Unde: Din factura furnizorului → buton Înregistrează Plată

Câmpuri plată:

Plăți multiple:
Se pot înregistra plăți parțiale succesive — fiecare e logată în pur_invoice_payment. Factura trece în partially_paid și ulterior în paid când totalul e acoperit.


Ce se creează automat

Eveniment Se creează automat
RFQ aprobat Email notificare furnizori; sync articole în catalog
Ofertă acceptată Link pur_orders.estimate → oferta câștigătoare
PO aprobat Hook create_goods_receipt → aviz de recepție inițiat
Aviz recepție salvat Stoc actualizat în depozit; delivery_status actualizat pe PO
PO order_status → 2 delivery_status setat la 1 cu data curentă
Plăți cumulate = total factură payment_statuspaid automat

Puncte unde fluxul poate bloca

Problemă Cauză probabilă Soluție
Furnizorul nu vede portalul Contul de furnizor nu e creat sau nu are acces Verifică /admin/purchase/vendors → email acces portal
Avizul de recepție nu se generează Hook dezactivat sau PO neaprobat Aprobă PO mai întâi; verifică setări modul
Stocul nu se actualizează Depozit neasociat pe aviz Completează câmpul depozit pe avizul de recepție
Factura furnizorului rămâne unpaid Plata nu a fost înregistrată în CRM Adaugă înregistrarea plății manual din factură
Două avize pentru același PO Livrare parțială neîncadrată corect Normal — avizele parțiale se sumează; verifică delivery_status

Rapoarte relevante


Module implicate — documentație detaliată

← Înapoi la Workflows