Cum calculezi coloane personalizate în feed-uri de produse (fără să modifici catalogul)
Construiește coloane calculate în feed-ul Dynamic din easySales — preț minim, preț în altă monedă, stoc disponibil — folosind o caracteristică, o coloană și o regulă cu formulă. Catalogul tău rămâne neatins.
Mai devreme sau mai târziu, orice comerciant care rulează un feed Dynamic se lovește de același obstacol: partenerul cere o coloană care nu există pe produse. Un partener de repricing vrea un min_price ca prag minim. Un distribuitor B2B vrea eur_price alături de prețul în lei. Un 3PL vrea available_stock — stocul fizic minus ce s-a alocat deja pe comenzi. Coloanele nu sunt în catalog. Numerele nu merită stocate pe fiecare produs. Dar partenerul nu acceptă fișierul fără ele.
Pentru asta există coloanele calculate în feed-ul Dynamic din easySales. Definești coloana în feed, scrii o formulă scurtă, iar easySales calculează valoarea la fiecare regenerare. Catalogul de produse rămâne curat. Nimic nu se salvează pe produsele propriu-zise.
De ce comercianții construiesc coloane calculate
O „coloană calculată" e o coloană a cărei valoare e calculată în momentul în care se generează feed-ul — nu e stocată nicăieri. Există pentru fișierul pe care îl publici, și doar pentru el.
Trei tipare apar mereu:
- Praguri și plafoane. Un partener de repricing vrea cel mai mic preț pe care îl accepți. Nu vrei să stochezi asta ca atribut de produs (se schimbă pe canal, pe campanie, pe politică de marjă). O formulă îl derivează din prețul de achiziție + marjă la fiecare export.
- Feed-uri cu altă monedă. Un partener din afara pieței tale vrea prețuri în moneda lui. Stocarea unei coloane paralele de preț per piață nu scalează; conversia din mers — da.
- Disponibilitate calculată. Un partener trebuie să vadă ce e cu adevărat comandabil, nu ce e pe raft.
stoc - stoc_rezervate la o scădere de coloană distanță.
Trăsătura comună: valoarea e o funcție de alte valori ale produsului, recalculată la fiecare regenerare a feed-ului. A o stoca pe fiecare produs ar însemna actualizarea fiecărui produs ori de câte ori se schimbă inputurile — o povară de mentenanță de care nu ai nevoie.
Cum funcționează o coloană calculată în easySales
Trei piese, fiecare durează cinci secunde de muncă:
- O caracteristică — locul unde stă valoarea. O creezi o singură dată, îi dai un nume, și o lași goală pe toate produsele.
- O coloană în feed-ul Dynamic — conexiunea care duce caracteristica în fișierul exportat.
- O regulă de feed cu o acțiune de tip formulă — calculul care umple locul la momentul exportului.
Locul rămâne gol în catalog. Regula îl umple în timpul exportului. Coloana redă valoarea umplută în fișier. Trei piese mici, fiecare cu un rol bine definit. Adaugi regula, regenerezi, valoarea apare. Scoți regula, regenerezi, valoarea dispare — fără ca vreun produs să se schimbe vreodată.
Pasul 1: Creează caracteristica
Deschide Catalog → Caracteristici și creează o caracteristică nouă. Dă-i un nume clar — cel pe care îl așteaptă partenerul în fișier e o alegere bună.
Exemple: Preț minim, Preț EUR, Stoc disponibil.
Nu trebuie să completezi valori pe niciun produs. Tot scopul este ca această caracteristică să fie o destinație pentru o formulă, nu un atribut real de produs. Salvează și mergi mai departe.
Câteva sfaturi de denumire:
- Alege nume pe care le vei recunoaște peste șase luni.
Preț minim de vânzare (RO)e mai bun decâtmin_price_ro_v2. - Dacă aceeași valoare va fi folosită în mai multe feed-uri, folosește o singură caracteristică pentru toate. Valorile calculate sunt limitate la nivel de feed (regula trăiește pe feed), așa că aceeași caracteristică poate ține valori calculate diferite în feed-uri diferite fără să se ciocnească.
- Evită caracteristicile care au deja date de produs pe ele. Dacă
Voltaje un câmp real de catalog, nu-l reutiliza ca slot calculat — alege alt nume. Valorile calculate suprascriu pivotul existent în memorie; ai pierde valorile reale pe durata generării feed-ului.
Pasul 2: Adaugă caracteristica în feed-ul Dynamic
Deschide feed-ul Dynamic. În builder-ul de coloane, adaugă un rând nou, alege Caracteristică din lista coloanelor, apoi alege caracteristica creată mai devreme din selectorul secundar.
Coloana se va afișa în fișierul exportat. Valoarea celulei vine din ce calculează regula pentru fiecare produs.
Dacă partenerul așteaptă un nume specific pentru acea coloană — min_price în loc de Preț minim, price_eur în loc de Preț EUR — folosește câmpul Redenumește de lângă coloană. Numele redenumit e cel care apare ca antet CSV / cheie JSON / nume de element XML; restul interfeței păstrează ce ai scris pentru tine. Redenumirea funcționează pe orice coloană din feed-ul Dynamic, calculată sau nu — e același câmp ori de câte ori partenerul așteaptă un alt nume decât cel folosit intern de easySales.
Pasul 3: Scrie regula de feed care calculează valoarea
Treci la tab-ul Reguli feed pe același feed. Adaugă o regulă:
- Dacă:
ÎNTOTDEAUNA(sau o condiție — vezi mai jos). - Atunci: alege caracteristica creată ca proprietate, alege formulă ca operator, apoi scrie formula.
Editorul de formule are o paletă de chip-uri cu variabilele pe care le poți folosi:
${product.product_sale_price},${product.product_full_price}— prețurile listate, fără TVA.${product.product_acquisition_price}— prețul tău de achiziție.${product.product_tax_rate}— cota de TVA per produs ca număr întreg (ex.19,20,21). Împarte la 100 pentru a-l converti într-un multiplicator —1 + ${product.product_tax_rate} / 100returnează1.21pentru o cotă de 21%, exact ce ai înmulți cu un preț net pentru a obține prețul cu TVA.${product.product_characteristic:<nume>}— citește altă caracteristică după nume (case-sensitive). Util pentru înlănțuire: scrii o caracteristică cu o valoare de bază, o referențiezi din formula altei caracteristici.${product.product_meta_field:<cheie>}— citește un câmp meta de produs după cheie.${product.product_price_group:<id>}— citește un preț de grup contractual pentru produs.${other.currency_rate:FROM:TO}— rata de schimb live între două coduri ISO de monedă (ex.RON:EUR,EUR:USD).round(<expresie>, <zecimale>)— rotunjește rezultatul la o precizie fixă.
Operatori: +, -, *, /, paranteze pentru grupare. Aritmetică standard.
Unele coloane nu sunt expuse ca variabile de formulă în mod intenționat — stoc, stoc rezervat, greutate și alte coloane non-preț. Pentru a calcula o valoare din ele, folosește operatorii de acțiune aritmetici dintr-o regulă (suprascrie, scade, înmulțește, adună) în loc de formulă. Rețeta Stoc disponibil de mai jos arată tiparul.
Salvează regula. Următoarea regenerare o rulează pentru fiecare produs, umple caracteristica în memorie și redă valoarea în fișier. Catalogul de produse nu e niciodată atins — pagina de caracteristici rămâne la fel de goală cum ai lăsat-o.
Dacă vrei ca formula să se aplice doar pe anumite produse (o categorie, produsele cu stoc, produsele unei mărci), adaugă condiții pe partea Dacă: pe caracteristică, pe coloană, pe categorie — orice acceptă builder-ul de reguli.
Rețete din lumea reală
Preț minim de vânzare pentru un partener de repricing
Un partener de repricing are nevoie de un prag — prețul sub care n-ar trebui să coboare. Nu vrei să stochezi asta pe fiecare produs (se schimbă când costurile sau politica de marjă se schimbă), așa că îl calculezi.
- Nume caracteristică:
Preț minim - Redenumire coloană:
min_price - Formulă:
round(${product.product_acquisition_price} * 1.15, 2)— preț de achiziție + 15% marjă.
Ajustează multiplicatorul per canal scriind reguli diferite în feed-uri diferite. Aceeași caracteristică, formule diferite, fișiere diferite. Catalogul nu vede nimic din toate astea. Captura din Pasul 3 de mai sus arată exact această regulă configurată.
Preț în altă monedă pentru un partener cross-border
Partenerul tău e într-o altă piață și vrea prețuri în moneda lui. easySales are o funcție integrată de rată de schimb, ca să nu ții o listă paralelă de prețuri.
- Nume caracteristică:
Preț EUR - Redenumire coloană:
price_eur - Formulă:
round(${product.product_sale_price} * ${other.currency_rate:RON:EUR}, 2)— înlocuieșteRON:EURcu perechea FROM:TO care ți se potrivește.
Ratele se actualizează automat zilnic — easySales le ia dintr-o sursă centrală, ca să nu ții un tabel paralel. Dacă partenerul are nevoie de o rată stabilă pentru o perioadă contractuală (în loc de cea live), scrie-ne pe suport și vom găsi împreună cea mai bună soluție.
Stoc disponibil (fizic minus rezervat)
Partenerul vede stocul pe care îl publici; dacă e numărul de pe raft și ai comenzi deschise, vei vinde mai mult decât ai. Numărul corect de publicat e available-to-promise: stocul fizic minus ce e rezervat pe comenzi deschise.
stoc și stoc rezervat nu sunt expuse ca variabile de formulă, așa că această rețetă nu folosește deloc operatorul formulă. În schimb, înlănțuiești două acțiuni aritmetice pe aceeași caracteristică — prima scrie baza, a doua o ajustează.
- Nume caracteristică:
Stoc disponibil - Redenumire coloană:
available_stock - Acțiune 1: țintă =
Stoc disponibil, operator = suprascrie cu, sursă = coloanastoc. (Setează caracteristica la valoarea stocului produsului.) - Acțiune 2 (adăugată sub prima, în aceeași regulă): țintă =
Stoc disponibil, operator = scade, sursă valoare = câmp, coloana =stoc rezervat. (Scade coloana stoc rezervat din valoarea curentă.)
Două acțiuni, o singură regulă, de sus în jos. Prima scrie baza; a doua o ajustează. Poți înlănțui o a treia acțiune (adună / scade față de un număr literal) dacă matematica ta de fulfillment cere un buffer fix de stoc de siguranță.
Redenumirea oricărei coloane în export
Câmpul Redenumește apare lângă fiecare coloană din builder-ul feed-ului Dynamic, nu doar pe cele calculate. Folosește-l oricând partenerul așteaptă un alt nume decât cel intern al easySales — price în loc de full_price, cost în loc de sale_price, inventory în loc de stock.
Două note:
- Redenumirea se aplică în fișierul exportat: antetul CSV, cheia JSON și numele de element XML. Restul interfeței păstrează numele easySales ca să nu te pierzi.
- Numele de elemente XML au reguli mai stricte decât CSV sau JSON. Dacă redenumirea conține spații sau punctuație, easySales o sanitizează automat pentru XML —
Preț min (RON)devinepret_min_ron_în tag-uri<pret_min_ron_>. Antetele CSV și cheile JSON păstrează ce ai scris exact.
Dacă două coloane se redenumesc în același nume de export, builder-ul de feed blochează salvarea și îți arată care se ciocnesc. Alege un nume unic și se va salva.
Când să NU folosești o coloană calculată
- Atribute reale de produs. Dacă datele aparțin în mod natural produsului (Culoare, Mărime, Voltaj, EAN), folosește o caracteristică obișnuită și stochează-o. Coloanele calculate sunt pentru valori care nu aparțin catalogului.
- Mapări de categorii per canal. Dacă partenerul tău are nevoie de un id de categorie Google Shopping, un cod Skroutz sau orice mapare de la categoria ta la a lor, folosește builder-ul specific canalului — e pre-validat și-ți scutește munca de mapare. Feed-ul Dynamic e opțiunea deschisă pentru parteneri pentru care nu avem un builder dedicat. Vezi Ce este un feed de produse? pentru introducerea în feed-uri de canal.
- Valori statice fixe. Dacă fiecare produs primește aceeași valoare (
condition: new,availability: in_stock), folosește acțiunea setează la valoare pe o coloană obișnuită în loc să sintetizezi o caracteristică — cu o piesă mobilă mai puțin.
Dacă nu ești sigur dacă o coloană ar trebui să fie calculată, stocată sau fixă, suportul poate analiza cazul tău. Majoritatea întrebărilor „calculat-sau-stocat?" se rezolvă în două minute odată ce schițezi cazul de utilizare.
Construiește coloanele de care au nevoie partenerii tăi
Deschide Feed-uri → Dynamic în easySales și exportă un fișier gata de parteneri cu coloane calculate în câteva minute. Ești nou aici? Încearcă easySales gratuit 14 zile, fără card.