Acasă/Blog/Prețuri diferite pe client în WooCommerce: cum le preiei din ERP

Prețuri diferite pe client în WooCommerce: cum le preiei din ERP

Cum arăți fiecărui client B2B prețul negociat cu el în WooCommerce, fără să-l vadă alți clienți: prețuri preluate din ERP, ordinea de calcul, ce se întâmplă la comandă și ce verifici când prețul nu apare.

Același produs cu prețuri diferite pentru trei clienți, sincronizate din ERP și păstrate private în WooCommerce.

Într-un magazin B2B, același produs are prețuri diferite pentru clienți diferiți. În WooCommerce poți arăta fiecărui client prețul negociat cu el dacă prețurile vin din ERP, pe combinația dintre client și produs, și se aplică doar la afișare, pentru clientul logat. Prețul negociat nu se scrie pe produs, așa că niciun alt client nu îl vede.

Mai jos explicăm cum funcționează concret, pe baza unei platforme B2B pe WooCommerce aflate în producție, cu peste 700 de clienți: de unde vin prețurile, cum se calculează prețul final, ce se întâmplă la comandă și ce verifici când un client nu își vede prețul.

Pe scurt

  • Prețul de listă e unul singur pe produs; prețul negociat e per client și produs și nu se scrie niciodată pe produs.
  • Prețurile negociate se preiau periodic din ERP într-un tabel local, nu se cer din ERP la fiecare afișare.
  • Prețul final se calculează mereu în aceeași ordine: listă, negociat, discount cantitativ, TVA.
  • La comandă, magazinul nu impune prețul: ERP-ul calculează documentul după regulile lui.
  • Dacă un client nu își vede prețul, cauza e aproape mereu o legătură lipsă între cont, produs și ERP.

Preț de listă sau preț negociat: care e diferența?

Prețul de listă este prețul general al unui produs, același pentru toată lumea. În WooCommerce el corespunde prețului normal al produsului, cel pe care îl vezi în fișa produsului. Îl poate vedea orice vizitator, logat sau nu, și îl poți sincroniza din ERP direct pe produs.

Prețul negociat (sau preferențial) este prețul stabilit cu un anumit client pentru un anumit produs. Un distribuitor HoReCa poate avea zeci de prețuri negociate cu un lanț de restaurante și altele cu o cafenea. Diferența esențială: prețul negociat aparține unei perechi client și produs, nu produsului. De aceea nu are ce căuta în câmpul de preț al produsului. Dacă l-ai scrie acolo, l-ar vedea toți clienții.

De unde vin prețurile negociate

În majoritatea firmelor B2B, prețurile negociate există deja în ERP: în SoftOne, Nexus, Oracle sau alt sistem de gestiune. Nu are sens să le reintroduci în magazin și să le întreții în două locuri. Platforma le preia din ERP, prin integrarea cu ERP-ul, și le păstrează într-un tabel local, separat de produse.

Preluarea se face periodic, la un interval stabilit, nu la fiecare afișare de pagină. Motivul e practic: ERP-ul poate răspunde lent sau poate fi indisponibil pentru câteva minute, iar magazinul trebuie să rămână rapid. Tabelul local face ca prețul să se afișeze instant, iar sincronizarea să ruleze în fundal. Dacă un preț se schimbă în ERP, apare în magazin la următoarea sincronizare. Am descris mai pe larg acest tip de flux în ghidul de sincronizare SoftOne și WooCommerce.

Legătura dintre magazin și ERP se face prin două coduri: codul clientului din ERP, salvat pe contul lui din magazin, și codul produsului din ERP, salvat pe fiecare produs. Fără ele, magazinul nu are cum să știe ce preț aparține cui. Când datele de bază ale firmei se completează automat la crearea contului, de exemplu din CUI, prin ANAF, legarea conturilor de ERP devine mai simplă și mai puțin predispusă la greșeli.

Cum vede clientul prețul lui

Când un client se autentifică, magazinul știe cine este și care e codul lui din ERP. La afișarea unui produs, caută în tabelul local prețul pentru combinația client și produs. Dacă îl găsește, afișează prețul negociat, cu un marcaj vizibil că e prețul lui. Dacă nu există preț negociat pentru acel produs, clientul vede prețul de listă.

Vizitatorii nelogați și ceilalți clienți nu văd prețul negociat. Pentru că prețul nu e salvat pe produs, nu apare nici în pagină, nici în feed-uri, nici în căutare.

Un detaliu util pentru clienții cu catalog mare: un filtru „doar produsele cu preț negociat”, care restrânge lista la produsele pentru care clientul are un preț stabilit. Funcționează doar pentru clienții logați și legați de ERP, pentru că doar pentru ei există prețuri negociate.

Atenție la cache. Multe magazine folosesc cache de pagină pentru viteză. Dacă o pagină salvată în cache pentru un client logat ajunge la alt client, acesta ar putea vedea prețul primului. Paginile pentru utilizatorii logați trebuie excluse din cache-ul de pagină, iar prețurile calculate la cerere pentru fiecare client.

Cum se calculează prețul final

Prețul final pe care îl vede un client B2B se calculează în patru pași, mereu în aceeași ordine:

PasCe se întâmplăDe unde vine
1. Preț de listăprețul general al produsuluiERP, sincronizat periodic
2. Preț negociatînlocuiește prețul de listă, doar pentru clientul logatERP, per client și produs
3. Discount cantitativse aplică peste prețul de la pasul 2, după cantitatea din coșreguli din magazin, globale sau per produs
4. TVAcu sau fără TVA, după setăricota TVA a produsului din ERP

Ordinea contează. Discountul cantitativ se aplică peste prețul negociat, nu peste prețul de listă, deci un client cu preț negociat care cumpără o cantitate mare beneficiază de ambele. În coș și la checkout, sub fiecare produs apare discountul aplicat, ca clientul să vadă exact de unde vine prețul final și să nu sune la vânzări să întrebe.

Ce se întâmplă la comandă

Aici e o decizie de arhitectură pe care multe implementări o ratează: la trimiterea comenzii în ERP, magazinul nu impune prețurile. Comanda pleacă în ERP cu clientul, produsele și cantitățile, iar ERP-ul calculează documentul după propriile reguli de preț.

De ce așa? Pentru că ERP-ul rămâne singura sursă de adevăr pentru bani. Dacă un preț s-a schimbat în ERP între ultima sincronizare și momentul comenzii, factura iese corect, cu prețul din ERP. Magazinul afișează prețul ca să ajute clientul să decidă, dar valoarea documentului o stabilește ERP-ul, la fel ca la o comandă introdusă manual. Pentru partea tehnică a transmiterii comenzilor, WooCommerce expune comenzile prin REST API, iar conectorul către ERP se construiește peste el.

Grupuri de clienți sau prețuri individuale?

Nu orice magazin B2B are nevoie de prețuri negociate per client. Uneori ajung câteva niveluri de preț pe grupuri de clienți.

Prețuri pe grupuri de cliențiPrețuri individuale din ERP
Unde se definescîn magazin, pe roluri sau grupuriîn ERP, per client și produs
Câte prețuri pe produscâteva niveluricâte unul pentru fiecare client cu preț negociat
Întrețineremanuală, în magazinautomată, din ERP
Potrivit pentruzeci de clienți, liste de preț simplesute de clienți, prețuri negociate individual

Dacă prețurile tale se pot organiza în trei sau patru liste, grupurile de clienți pot fi suficiente. Dacă fiecare client important are prețurile lui negociate în ERP, întreținerea lor și în magazin devine o sursă permanentă de greșeli. În cazul acesta merită o platformă construită custom, care citește prețurile direct din ERP. Am explicat diferența și pe pagina despre platforma B2B pe WooCommerce.

Clientul nu vede prețul negociat: ce verifici

Când un client sună că vede prețul de listă în loc de prețul lui, cauza e aproape mereu o legătură lipsă. Verifică, în ordine:

  1. Clientul e autentificat? Prețul negociat apare doar după logare.
  2. Contul lui e legat de clientul din ERP? Fără codul clientului din ERP salvat pe cont, magazinul nu știe ce prețuri să caute.
  3. Produsul e legat de articolul din ERP? Fără codul produsului din ERP, prețul negociat nu poate fi găsit pentru acel produs.
  4. Există preț negociat pentru combinația respectivă? Clientul poate avea prețuri negociate doar pentru o parte din produse; pentru restul vede prețul de listă.
  5. S-au sincronizat prețurile recent? Un preț adăugat azi în ERP apare în magazin abia după următoarea sincronizare.
  6. Pagina vine din cache? Dacă paginile pentru utilizatorii logați nu sunt excluse din cache, clientul poate vedea o versiune veche sau prețul altcuiva.

Un jurnal al sincronizărilor ajută enorm aici: arată când s-au preluat ultima dată prețurile și dacă au apărut erori.

Din proiectele noastre: Forelit

Forelit, companie din industria HoReCa cu peste 700 de clienți B2B, primea comenzile pe telefon, prin agenți și pe email, iar prețurile negociate se verificau de mână în SoftOne. Am construit o platformă pe WooCommerce, conectată direct la SoftOne, în care fiecare client își vede prețurile negociate, preluate din ERP. Prețurile din magazin sunt sincronizate exact cu ERP-ul, iar greșelile de preț au ajuns aproape de zero. Detaliile sunt în studiul de caz Forelit.

Întrebări frecvente

Pot avea prețuri diferite pentru fiecare client în WooCommerce?

Da. Fiecare client logat poate vedea prețul negociat cu el, preluat din ERP pe combinația client și produs. Prețul nu se scrie pe produs, deci rămâne vizibil doar pentru clientul respectiv.

Văd alți clienți prețul negociat de mine?

Nu. Prețul negociat se aplică doar la afișare, pentru clientul logat căruia îi aparține. Nu apare pe produs, în feed-uri sau în căutare, iar paginile clienților logați trebuie excluse din cache.

Prețurile se actualizează automat când se schimbă în ERP?

Da, la următoarea sincronizare. Prețurile se preiau periodic din ERP, la un interval stabilit, așa că o modificare apare în magazin după câteva minute sau ore, în funcție de interval.

Se pot combina prețurile negociate cu discounturile cantitative?

Da. Discountul cantitativ se aplică peste prețul negociat, nu peste prețul de listă. În coș, clientul vede pe fiecare linie discountul aplicat.

Ce preț ajunge pe factură: cel din magazin sau cel din ERP?

Cel din ERP. Comanda pleacă în ERP cu clientul, produsele și cantitățile, iar ERP-ul calculează documentul după regulile lui. Așa, factura e corectă chiar dacă un preț s-a schimbat între sincronizare și comandă.

Funcționează și cu prețuri pe grupuri de clienți?

Da, dar e o altă abordare. Prețurile pe grupuri se definesc în magazin, pe câteva niveluri. Prețurile individuale din ERP sunt potrivite când fiecare client are prețurile lui negociate și nu vrei să le întreții în două locuri.

Dacă vrei ca fiecare client al tău să își vadă prețurile negociate direct în magazin, fără liste trimise pe email, citește cum construim o platformă B2B pe WooCommerce conectată la ERP sau scrie-ne despre ERP-ul pe care îl folosești.

Vrei să discutăm despre proiectul tău?

Spune-ne ce ai de rezolvat. Revenim cu idei concrete și o propunere tehnică, nu cu o ofertă șablon.

sau pe email: contact@maxdev.ro