Configurator de produse
Configuratorul de produse (/admin/tsync_product_configurator) îți permite să vinzi produse
configurabile — articole pe care clientul le construiește din opțiuni (mărime, culoare, material, dotări) în
loc de un singur SKU fix. Definești o dată opțiunile, pui reguli pentru ce combinații sunt permise și cum se
schimbă prețul, iar TSync transformă o alegere într-o variantă concretă de produs.
Vinde un produs configurat — pas cu pas
Asta e ce faci zilnic. Restul paginii e pregătirea din spate; aici e folosirea propriu-zisă.
Merge la fel indiferent ce configurezi — o fereastră, o ușă, un mobilier, un utilaj, un pachet de servicii sau orice altceva ai definit ca model configurabil. Pașii sunt aceiași; diferă doar opțiunile pe care le vezi.
a) Deschide configuratorul de pe document
Intră în Vânzări → Devize → Creează un deviz nou (merge la fel pe facturi, propuneri și note de credit, dacă le-ai bifat în Setări). Alege clientul, apoi apasă butonul „Configurează produs” de deasupra listei de articole. Se deschide fereastra „Configurator produs”.
Butonul apare doar pe tipurile de document activate în Configurator → Setări, și doar dacă ai permisiunea de a configura. Dacă nu-l vezi pe factură, dar îl vezi pe deviz, asta e valoarea implicită: configurarea ține de etapa de ofertă, iar linia ajunge pe factură prin conversia devizului.
b) Alege modelul și opțiunile
Alegi întâi modelul dintr-o listă căutabilă — scrie câteva litere, nu derula printre sute. După ce l-ai ales, apar opțiunile lui, exact cele definite pentru acel model. Ce anume sunt ține de ce vinzi:
| Dacă vinzi… | opțiunile pot fi… |
|---|---|
| tâmplărie | dimensiune, tip de sticlă, feronerie, culoare profil |
| mobilier | mărime, stil, material principal, material secundar |
| echipamente | putere, tensiune, accesorii, garanție extinsă |
| servicii | pachet, număr de utilizatori, durată, SLA |
Pe măsură ce alegi, prețul se calculează singur din model + opțiuni + regulile de preț. Nu se scrie manual. Regulile pot și să ascundă sau să interzică opțiuni care n-au sens împreună, deci o combinație imposibilă nu se poate alege din greșeală.
Dacă butonul de adăugare rămâne gri, treci cu mouse-ul peste el: îți spune ce mai lipsește, nu te lasă să ghicești.
c) Adaugă linia în document
Apeși „Adaugă în document” și linia intră în deviz cu descrierea configurației, prețul calculat și un cod unic (SKU). Fereastra se închide singură; poți configura încă un produs pentru același document.
Fiecare linie configurată e un produs de sine stătător: două bucăți cu materiale diferite sunt două linii, cu două SKU-uri și două prețuri.
Deschide consola
Configurator în meniul lateral, sau /admin/tsync_product_configurator (deschide tabloul de bord).
Componentele
- Șabloane — un produs configurabil (de ex. Fereastră, Tricou, Birou). Tot ce e mai jos atârnă de un șablon.
- Atribute — alegerile pe care le face clientul (de ex. Mărime, Culoare, Tip sticlă).
- Valori — opțiunile dintr-un atribut (de ex. Mic / Mediu / Mare). Poți importa valori în masă.
- Variante — combinațiile concrete rezultate, fiecare cu codul și prețul ei.
- Reguli — logica: dacă se face o alegere, atunci permite/interzice alta, adaugă un supliment, setează o valoare implicită, arată/ascunde o opțiune… Motorul de reguli e sigur și previzibil (fără cod liber), deci aceeași alegere dă mereu același rezultat.
Construiește un produs configurabil, pe scurt
- Șabloane → creează un șablon pentru produs.
- Atribute → adaugă alegerile (Mărime, Culoare…).
- Valori → adaugă opțiunile fiecărui atribut (și importă o listă lungă dacă e nevoie).
- Reguli → stabilește ce e permis și cum se ajustează prețul.
- Variante → verifică combinațiile produse de alegeri + reguli.
Încarcă multe modele deodată (import CSV)
Când ai de introdus zeci de modele — sau când lista ta se va mai corecta de câteva ori — nu le face una câte una. Pe pagina Modele ai butonul Import CSV.
Fișierul are nevoie de o singură coloană obligatorie: code. Restul iau valori implicite rezonabile, deci un
fișier cu două coloane (code, name) produce deja modele funcționale și configurabile. Pagina de import îți
arată tabelul complet al coloanelor și implicitele lor.
Apasă întâi „Simulează". Nu scrie nimic: îți arată rând cu rând ce s-ar crea, ce s-ar actualiza și ce ar fi ignorat, cu observații. Abia după ce raportul arată cum te aștepți, apeși Importă.
Poți reîncărca același fișier oricând. Modelele se potrivesc după code, deci un fișier corectat
actualizează modelele existente — nu creează un al doilea set lângă ele. Asta e și motivul pentru care merită
să pornești cu date aproximative și să le rafinezi.
Câteva lucruri de știut:
- Listele se scriu cu
;— de exempluinvoice;estimatesau2250;2050;1900. - Un cod folosit de două rânduri e refuzat, nu ghicit. Dacă în fișier ai două modele diferite cu același cod, importul îți spune care sunt și nu scrie niciunul: dacă ar scrie, al doilea l-ar înlocui tăcut pe primul.
valid_sizesrestrânge mărimile valide ale modelului. Lăsat gol, toate mărimile rămân valide. La fiecare import lista se înlocuiește, deci o mărime pe care o scoți din fișier chiar dispare.
Testează o regulă înainte s-o crezi
Regulile se complică repede — „tipul ăsta de sticlă e disponibil doar peste 1200 mm și adaugă 12 %". În loc să salvezi o regulă și să speri, folosește Simulează: alegi o combinație de valori și TSync îți arată ce decide motorul pentru ea — ce opțiuni rămân disponibile, care sunt forțate sau interzise și cât devine prețul.
Fiindcă motorul e determinist (o regulă nu conține cod liber), ce arată simularea e exact ce va primi clientul.
Ce se întâmplă după ce o linie configurată ajunge pe un document
O linie configurată nu e o linie de produs obișnuită. Poartă alegerile clientului, deci cineva trebuie să decidă cum va fi livrată efectiv — iar până atunci linia stă în coada de revizie a configuratorului.
Deschizi Configurator → Revizie din document, sau
/admin/tsync_product_configurator/review/invoice/123 (merge pentru facturi, devize, propuneri și note de
credit). Revizia cere permisiunea decide — a putea construi șabloane nu e același lucru cu a putea angaja
compania să producă ceva.
Pentru fiecare linie alegi una din patru:
| Decizia | Ce face TSync |
|---|---|
| Lansează în producție | Rezolvă lista de materiale a șablonului pentru opțiunile alese, o scalează după cantitatea liniei și creează o comandă de producție. Dacă modulul Producție nu e instalat, linia e marcată în producție cu o notă că livrarea e manuală — nu se pierde niciodată în tăcere. |
| Comandă materiale | Verifică întâi disponibilitatea fiecărui material rezolvat față de depozitul implicit al șablonului, apoi ridică ce lipsește. Vezi deficitul înainte să te angajezi. |
| Vinde din stoc | Marchează linia onorată din stocul existent — fără producție, fără achiziție. |
| Respinge | Trimite linia înapoi. Motivul e obligatoriu — o respingere fără motiv e refuzată, fiindcă cine a configurat-o trebuie să știe ce să schimbe. |
Fiecare decizie se înregistrează pe linie, deci un document răspunde mereu la „cine a decis și ce a decis".
Drumul complet, de la comandă la factură
Ca să vezi unde se leagă configuratorul de restul sistemului, iată ciclul cap-coadă al unui produs fabricat la comandă — aceleași etape, fie că fabrici tâmplărie, mobilier sau utilaje:
Deviz cu linie configurată → Lansează în producție (din coada de revizie) → comandă de producție (OP) cu rețeta rezolvată pentru opțiunile alese → fabricare, materialele scăzându-se din stoc pe măsură ce se consumă → finalizare, cu produsul finit intrat pe stoc cu lotul lui → livrare → factură.
Fiecare pas lasă urmă în sistem, deci se știe oricând unde e fiecare comandă. Pentru partea de fabricație — rețete, comenzi de producție, centre de lucru, controlul calității și loturile — vezi ghidul Producție.
Dacă produci LA COMANDĂ
Implicit, „Lansează în producție" e blocat cât timp lipsește un material. E regula corectă dacă ții materialele pe stoc: o producție care nu poate fi terminată nu are voie să înceapă.
Dacă însă produci la comandă — configurezi și fabrici pentru fiecare comandă în parte — n-ai niciodată toate materialele înainte ca cineva să comande, iar blocajul îți oprește exact fluxul normal. Pornește atunci Configurator → Setări → Producție → „Producție la comandă".
Cu setarea pornită, la lipsă vezi un avertisment cu materialele care lipsesc, butonul rămâne activ, iar lansarea creează comanda de producție și notează pe ea ce lipsea. Comanzi materialele în paralel, cu butonul de alături; producția le consumă provizoriu până sosesc.
Cu setarea oprită, o încercare de lansare la lipsă e refuzată și îți spune ce material lipsește — nu doar un buton gri.
Liste de materiale
Un șablon poate purta o listă de materiale ale cărei cantități depind de opțiunile alese — asta face posibile Lansează în producție și Comandă materiale. Lista se rezolvă per configurație, nu per șablon, deci o fereastră de 2400 mm și una de 900 mm consumă cantități diferite din aceeași definiție.
Un material pe care îl alege clientul — linia slot
Majoritatea liniilor din BOM numesc un material fix: două bucăți din asta, trei metri din aia. O linie slot numește în schimb o opțiune. Cantitatea e fixată de model — o canapea, de exemplu, ia 11 metri liniari de stofă, iar o ușă ia o singură foaie de furnir — dar care stofă e ce alege clientul, iar costul urmează articolul din spatele acelei alegeri.
Asta face ca costul materialelor să se schimbe când cineva trece de la o stofă la alta. Fără o linie slot, lista de materiale nu are stofă deloc, iar toate stofele costă la fel — un mod foarte convingător de a greși.
Într-o fișă importată, un rând slot poartă attribute_code (de exemplu material_principal) în locul
coloanei material_code, cu component_type pus pe slot. Nu creează niciun articol: articolul e ce se va
alege. Un rând slot fără cod de atribut, sau care numește o opțiune inexistentă pe instalare, e raportat pe
nume în rezultatul importului și sărit — niciodată importat ca o linie care ar costa tăcut zero.
Verificarea cifrelor
Lista de materiale arată acum, pe fiecare linie, prețul unitar folosit și costul liniei, lângă cantitate — atât la verificarea disponibilității, cât și în previzualizare. O linie fără preț înregistrat afișează o liniuță, nu un zero: „nepreţuit" și „gratuit" sunt fapte diferite, iar un zero ar trimite pe cineva să renegocieze un preț care nu a fost niciodată introdus.
De unde vine costul manoperei
Prețul unui model are două jumătăți: materialele, care vin din lista lui de materiale, și manopera, care vine dintr-o rută de producție.
În formularul modelului, Rută de producție (manoperă) listează rutele definite în modulul Producție, fiecare cu costul ei — ca să poți alege clasa de manoperă potrivită fără să le deschizi pe rând. Lăsat gol, costul manoperei e 0, adică exact ce fac toate modelele azi.
Numărul respectă felul în care instalarea ta costează munca. Dacă plătești operațiile la ceas, e setup plus timpul de ciclu la tariful orar al centrului de lucru, ajustat cu eficiența lui. Dacă ai pornit prețurile fixe pe operație, se folosește prețul fix — cele două sunt răspunsuri alternative, niciodată adunate.
Până la acest release costul manoperei era întotdeauna 0,00, pentru fiecare model, fiindcă nu-l alimenta nimic. Marja afișată lângă el era deci greșită cu tot costul manoperei. Dacă te-ai bazat pe acele marje, ele se schimbă din clipa în care atașezi rute — cele vechi nu erau prudente, erau incomplete.
Ca să mapezi multe modele deodată: importul CSV acceptă o coloană routing_id sau routing_code. Dacă
lași coloana goală, ruta fiecărui model rămâne cum e — spre deosebire de celelalte coloane, o celulă goală
aici nu șterge ce ai ales din formular.
Cum se citește codul unei linii configurate (SKU)
Fiecare linie configurată primește un cod unic. Nu e un număr aleatoriu: e construit după un tipar pe care îl stabilești tu, ca oricine din producție sau din depozit să știe din cod exact ce e de făcut — fără să mai întrebe.
Tiparul se scrie în Configurator → Setări → Tipar SKU, iar un model poate avea tiparul lui propriu (câmpul Șablon SKU din formularul modelului) când are nevoie de altă formă. Se scrie ca o înșiruire de simboluri:
| Simbol | Ce pune în cod |
|---|---|
{TEMPLATE} |
modelul configurabil (produsul) |
{MODEL} |
codul modelului ales |
{SIZE} |
mărimea aleasă |
{STYLE} |
stilul ales |
{MP_CODE} / {MP_NAME} |
materialul principal — codul sau denumirea |
{MS_CODE} / {MS_NAME} |
materialul secundar — codul sau denumirea |
{ATTR_CODE} / {ATTR_VALUE} |
orice alt atribut și valoarea lui |
{DATE} · {SEQ} · {HASH} |
data, un număr de ordine, o amprentă scurtă a configurației |
Un simbol pentru care configurația n-are valoare dispare pur și simplu — nu rămâne ca un cuvânt ciudat în mijlocul codului. Așa, același tipar merge și pentru un model cu patru opțiuni, și pentru unul cu două.
Două exemple, cu același tipar PCFG-{MODEL}-{SIZE}-{STYLE}-{MP_NAME}:
PCFG-F2-1200-DUB-TERMOPAN o fereastră: model F2, 1200 mm, deschidere DUB, geam TERMOPAN
PCFG-D1-1900-S1-CATANIA un mobilier: model D1, 1900 mm, stil S1, material CATANIA
De citit așa: PCFG = produs din configurator, apoi fiecare bucată e o alegere făcută în fereastra
configuratorului, în ordinea din tipar. Oricine din producție știe din cod ce are de făcut.
Tot în Setări reglezi cum arată codul: separatorul (implicit -), lungimea maximă, dacă se scrie cu
majuscule și dacă diacriticele și chirilicele se transliterează în litere latine (recomandat — un cod care
poartă litere cu diacritice sau chirilice creează probleme la etichete, la export și la căutare). TSync verifică
și unicitatea: două configurații diferite nu pot primi același cod.
Pe documente și în portalul clientului
Când adaugi un articol configurat, se deschide un selector de configurare ca să faci alegerile (tu sau clientul, dacă configuratorul din portalul clientului e activat în Setări), iar varianta + prețul rezultat ajung pe document. Activează/dezactivează configuratorul de portal din Setări-le modulului.
Ce se comandă cel mai des și cât a costat atunci
Configurator → Variante folosite din meniul lateral deschide pagina Cererea pe configurații
(/admin/tsync_product_configurator/variants) — locul care transformă tot ce a configurat echipa într-o
decizie de stoc pe care o poți lua înainte de sezon, nu după.
Răspunde la două întrebări deodată:
- ce se comandă cel mai mult și
- cum s-a mișcat costul cât timp se comanda.
Numără cantitatea, nu aparițiile
Măsura e cantitatea comandată. O linie de o bucată și o linie de patruzeci nu sunt aceeași cerere, chiar dacă fiecare e o configurație pe un document. Dacă ai citit până acum undeva o cifră de „folosiri" și ai planificat stocul după ea, aici o să vezi un clasament diferit — și mai util.
Alege cum se grupează rândurile
Trei grupări, comutate în capul paginii:
| Grupare | Un rând e |
|---|---|
| Configurație | o combinație exactă de alegeri — implicit |
| Model | tot ce s-a construit dintr-un model, indiferent de opțiuni |
| Variantă | varianta concretă salvată, cu codul ei |
Filtrezi după căutare (SKU, denumire, cod model), model, tip de document și un interval de date. Exclude respinse e pornit implicit: o linie refuzată de client e interes retras, nu cerere, iar numărarea ei e exact eroarea care umple depozitul.
Cum se citește tabelul
Fiecare rând arată ce s-a configurat, cantitatea, de câte ori s-a configurat, costul mediu, intervalul de cost, valoarea și ultima comandă. Fiecare coloană cu antet apăsabil sortează tot setul, iar totalurile de deasupra tabelului sunt pentru tot ce corespunde filtrelor — nu doar pentru pagina pe care o vezi.
Deschide un rând și se desfășoară în fiecare folosire din spatele lui: documentul, data, cantitatea, starea și costul purtat de acea folosire atunci.
Două lucruri despre cost, de știut înainte să acționezi pe el
Media e ponderată cu cantitatea. O bucată la 900 și patruzeci la 1000 dau media 997,56, nu 950. Media simplă arată apărabil și e greșită exact în direcția care face o decizie de aprovizionare să pară justificată după aceea.
O folosire își înregistrează costul la creare. Rândurile introduse înainte ca instalarea ta să facă asta au fost completate din costul curent al variantei, care nu e cât a costat atunci — acelea sunt marcate aprox., iar în capul paginii apare o notă cât timp întreaga instalare e încă în starea asta. Un trend de cost care le-ar amesteca tăcut ar desena o linie dreaptă și ar prezenta-o drept dovadă că prețurile au fost stabile.
Aceleași date, ca rapoarte
Trei rapoarte sunt înregistrate în consola de rapoarte (Rapoarte în meniul lateral), deci le poți filtra, reprezenta grafic, exporta CSV/XLSX, salva ca vedere sau trimite pe e-mail după un program:
| Raport | Ce îți dă |
|---|---|
| Top configurations by quantity (top configurații după cantitate) | ce configurații exacte s-au comandat cel mai mult, ordonate după cantitate |
| Demand by model, per month (cerere pe model, lunar) | cantitatea pe model pe lună — forma din care se ia o decizie de stoc înainte de sezon |
| Configuration cost over time (costul configurației în timp) | costul mediu ponderat cu cantitatea, pe configurație și lună, cu o coloană cost basis care spune dacă cifra e un instantaneu real per folosire sau un cost curent completat |
Ca să apară, rolul tău are nevoie de dreptul de a vedea rapoartele configuratorului.
Setări
Setările modulului au trei implicite pentru pagina asta: perioada implicită în zile (90 dacă n-o schimbi), gruparea implicită și dacă liniile respinse sunt excluse din cerere. Ele stabilesc cu ce se deschide pagina; oricare se poate schimba în pagină pentru o singură privire.