Как да изчислявате персонализирани колони в продуктови feed-ове (без да променяте каталога)

Изградете изчислени колони в Dynamic feed на easySales — минимална цена, цена в друга валута, наличен сток — с характеристика, колона и Feed правило с формула. Каталогът остава недокоснат.

Рано или късно всеки търговец, който поддържа Dynamic feed, се сблъсква със същата стена: партньорът иска колона, която не съществува върху продуктите. Партньор за репрайсинг иска min_price като долен праг. B2B дистрибутор иска eur_price редом с локалната цена. 3PL партньор иска available_stock — физически наличен минус това, което вече е резервирано по поръчки. Колоните не са в каталога. Числата не си заслужават да бъдат съхранени на всеки продукт. Но партньорът няма да приеме файла без тях.

За това служат изчислените колони в Dynamic feed на easySales. Дефинирате колоната във feed-а, пишете кратка формула и easySales изчислява стойността при всяко регенериране. Каталогът ви остава чист. Нищо не се запазва върху самите продукти.

Защо търговците изграждат изчислени колони

„Изчислена колона" е колона, чиято стойност е калкулирана в момента на генериране на feed-а — никъде не е съхранена. Съществува за файла, който публикувате, и само за него.

Три модела се появяват отново и отново:

  • Прагове и тавани. Партньор за репрайсинг иска най-ниската цена, която приемате. Не искате да съхранявате това като атрибут на продукта (променя се по канал, по кампания, по политика на марж). Формула го извежда от цена на придобиване + марж при всеки експорт.
  • Многовалутни feed-ове. Партньор извън вашия пазар иска цени във своята валута. Съхраняване на паралелна колона за цена за всеки пазар не се скалира; конвертиране в движение — да.
  • Изчислена наличност. Партньорът трябва да види това, което реално може да се поръча, не това, което е на рафта. сток - резервиран_сток е на едно изваждане разстояние.

Общият признак: стойността е функция на други стойности на продукта, преизчислявана при всяко регенериране на feed-а. Съхраняването върху всеки продукт би означавало обновяване на всеки продукт всеки път, когато входните данни се променят — ненужно бреме за поддръжка.

Как работи изчислена колона в easySales

Три части, всяка по пет секунди работа:

  1. Характеристика — мястото, където живее стойността. Създавате я веднъж, давате ѝ име и я оставяте празна на всички продукти.
  2. Колона в Dynamic feed — окабеляването, което вкарва характеристиката в изходния файл.
  3. Feed правило с действие формула — изчислението, което попълва мястото при експорт.
Диаграма на трите части на изчислена колона във feed на easySales: характеристика като слот, колона в Dynamic feed като окабеляване към изхода, и формула на Feed правило, която попълва слота при рендериране.
Три части, всяка с една ясна задача: характеристика като слот, колона в Dynamic feed като окабеляване, формула на Feed правило като стойност.

Мястото остава празно в каталога. Правилото го попълва по време на експорта. Колоната рендерира попълнената стойност във файла. Три малки части, всяка с една ясно дефинирана задача. Добавяте правилото, регенерирате, стойността се появява. Премахвате правилото, регенерирате, стойността изчезва — без никога нито един продукт да се променя.

Стъпка 1: Създайте характеристиката

Отворете Каталог → Характеристики и създайте нова характеристика. Дайте ѝ ясно име — това, което партньорът очаква във файла, е добър избор.

Примери: Минимална цена, EUR цена, Наличен сток.

Не е нужно да попълвате стойности на нито един продукт. Цялата идея е тази характеристика да е цел за формула, не реален атрибут на продукта. Запазете и продължете.

Скрийншот на страницата Каталог → Характеристики в easySales с току-що създадена характеристика на име Минимална цена, без стойности на продукти.
Създайте характеристиката, дайте ѝ ясно име, оставете я празна. Формулата ще я попълни.

Няколко съвета за именуване:

  • Изберете имена, които ще разпознаете след шест месеца. Минимална продажна цена (BG) е по-добре от min_price_bg_v2.
  • Ако същата стойност ще се използва в няколко feed-а, използвайте една характеристика за всички. Изчислените стойности са в обхвата на feed (правилото живее на feed-а), така че същата характеристика може да съдържа различни изчислени стойности в различни feed-ове без сблъсък.
  • Избягвайте характеристики, които вече имат продуктови данни. Ако Напрежение е реално поле в каталога, не го преизползвайте като изчислен слот — изберете друго име. Изчислените стойности презаписват съществуващия pivot в паметта; бихте загубили реалните стойности по време на рендерирането на feed-а.

Стъпка 2: Добавете я в Dynamic feed

Отворете Dynamic feed. В построителя на колони добавете нов ред, изберете Характеристика от падащото меню за колона, после изберете току-що създадената характеристика от свързаното меню.

Колоната ще се рендерира в изходния файл. Стойността на клетката идва от това, което правилото изчислява за всеки продукт.

Скрийншот на построителя на колони на Dynamic feed в easySales с колона тип Характеристика за Минимална цена и поле Преименувай зададено на min_price.
Добавете характеристиката като колона, после използвайте полето Преименувай, за да съответства на това, което партньорът очаква във файла.

Ако партньорът очаква конкретно име за тази колона — min_price вместо Минимална цена, price_eur вместо EUR цена — използвайте полето Преименувай до колоната. Преименуваната стойност е тази, която се показва като CSV заглавие / JSON ключ / XML елемент; всичко останало в UI запазва това, което написахте за себе си. Преименуването работи на всяка колона в Dynamic feed, изчислена или не — същото поле винаги, когато партньорът очаква друго име от това, което easySales използва вътрешно.

Стъпка 3: Напишете Feed правилото, което изчислява стойността

Превключете към таба Правила за feed на същия feed. Добавете правило:

  • Ако: ВИНАГИ (или условие — вижте по-долу).
  • Тогава: изберете създадената характеристика като свойство, изберете формула като оператор, после напишете формулата.
Скрийншот на редактора на Feed правила в easySales — свойство зададено на характеристика Минимална цена, действие формула, формула round(acquisition_price * 1.15, 2).
Feed правило с цел характеристика и действие формула. Избирате характеристиката, пишете формулата, запазвате.

Редакторът на формули има палитра с чипове за променливите, които можете да използвате:

  • ${product.product_sale_price}, ${product.product_full_price} — обявените цени, без ДДС.
  • ${product.product_acquisition_price} — вашата цена на придобиване.
  • ${product.product_tax_rate} — ДДС ставка на продукта като цяло число (напр. 19, 20, 21). Разделете на 100, за да го конвертирате в множител — 1 + ${product.product_tax_rate} / 100 връща 1.20 за 20% ставка, точно с което бихте умножили нетна цена за бруто.
  • ${product.product_characteristic:<име>} — четене на друга характеристика по име (case-sensitive). Полезно за верижност: пишете една характеристика с базова стойност, реферирате я от формулата на следваща характеристика.
  • ${product.product_meta_field:<ключ>} — четене на персонализирано мета-поле на продукт по ключ.
  • ${product.product_price_group:<id>} — четене на договорена цена от ценова група за този продукт.
  • ${other.currency_rate:FROM:TO} — жив обменен курс между два ISO кода на валута (напр. BGN:EUR, EUR:USD).
  • round(<израз>, <десетични>) — закръгля резултата до фиксирана точност.

Оператори: +, -, *, /, скоби за групиране. Стандартна аритметика.

Някои колони не се излагат като променливи на формула умишлено — сток, резервиран_сток, тегло и различните не-ценови колони. За изчисляване на стойност от тях използвайте аритметичните оператори за действие на Feed правило (презапис, извади, умножи, прибави) вместо формула. Рецептата „Наличен сток" по-долу показва модела.

Запазете правилото. Следващото регенериране го изпълнява за всеки продукт, попълва характеристиката в паметта и рендерира стойността във файла. Каталогът на продуктите никога не се докосва — страницата с характеристики остава толкова празна, колкото я оставихте.

Ако искате формулата да се прилага само на определени продукти (една категория, продукти с наличност, продукти на конкретна марка), добавете условия от страната Ако: на основа на характеристика, на колона, на категория — каквото поддържа построителят на правила.

Реални рецепти

Минимална продажна цена за партньор за репрайсинг

Партньор за репрайсинг се нуждае от под — цената, под която не трябва да слизат. Не искате да съхранявате това на всеки продукт (променя се при промяна на разходи или политика на марж), затова го изчислявате.

  • Име на характеристика: Минимална цена
  • Преименуване на колона: min_price
  • Формула: round(${product.product_acquisition_price} * 1.15, 2) — придобиване + 15% марж.

Регулирайте множителя по канал, като пишете различни правила в различни feed-ове. Същата характеристика, различни формули, различни файлове. Каталогът не вижда нищо от това. Скрийншотът в Стъпка 3 по-горе показва точно това правило конфигурирано.

Цена в друга валута за трансграничен партньор

Партньорът ви е на друг пазар и иска цени в своята валута. easySales има вградена функция за обменен курс, така че не поддържате паралелен ценоразпис.

  • Име на характеристика: EUR цена
  • Преименуване на колона: price_eur
  • Формула: round(${product.product_sale_price} * ${other.currency_rate:BGN:EUR}, 2) — заменете BGN:EUR с FROM:TO двойката, която ви подхожда.

Обменните курсове се обновяват автоматично всеки ден — easySales ги тегли от централен източник, така че не поддържате паралелна таблица. Ако партньорът се нуждае от стабилен курс за договорен период (вместо живия), пишете на поддръжката и ще намерим правилната настройка.

Скрийншот на редактора на правила — свойство зададено на характеристика EUR цена, действие формула, формула sale_price * currency_rate(BGN:EUR) закръглена до 2 десетични.
Изчислена колона във втора валута: формулата умножава продажната цена с живия BGN-EUR курс, закръглена до 2 десетични.

Наличен сток (физически минус резервиран)

Партньорът вижда стока, който публикувате; ако това е числото от рафта и имате отворени поръчки, ще препродадете. Правилното число за публикуване е available-to-promise: физически сток минус резервиран по отворени поръчки.

сток и резервиран_сток не са изложени като променливи на формула, така че тази рецепта изобщо не използва оператора формула. Вместо това, верижате две аритметични действия върху същата характеристика — първото пише базата, второто я коригира.

  • Име на характеристика: Наличен сток
  • Преименуване на колона: available_stock
  • Действие 1: цел = Наличен сток, оператор = презапис с, източник = колона сток. (Задава характеристиката на стойността на стока на продукта.)
  • Действие 2 (добавено под първото, в същото правило): цел = Наличен сток, оператор = извади, източник на стойност = поле, колона = резервиран_сток. (Изважда колоната резервиран сток от текущата стойност.)

Две действия, едно правило, отгоре надолу. Първото пише базата; второто я коригира. Можете да верижате трето действие (прибави / извади срещу литерално число), ако вашата математика на изпълнение изисква фиксиран буфер за безопасен сток.

Скрийншот на редактора на Feed правила в easySales с две верижени действия върху характеристика Наличен сток — презапис с колона сток, после изваждане на колона резервиран_сток.
Две верижени действия, едно правило. Първото пише базата; второто изважда резервираното количество.

Преименуване на всяка колона при експорт

Полето Преименувай се появява до всяка колона в построителя на Dynamic feed, не само на изчислените. Използвайте го винаги, когато партньорът очаква друго име от вътрешното на easySales — price вместо full_price, cost вместо sale_price, inventory вместо stock.

Две бележки:

  • Преименуването се прилага в изхода на файла: CSV заглавие, JSON ключ и XML елемент. Останалата част от UI продължава да използва имена на easySales, така че вие и екипът ви да не се загубите.
  • Имената на XML елементи имат по-строги правила от CSV или JSON. Ако преименуването ви съдържа интервали или пунктуация, easySales автоматично го санитира за XML — Мин цена (BGN) става min_tsena_bgn_ в тагове <min_tsena_bgn_>. CSV заглавията и JSON ключовете запазват точно това, което сте написали.

Ако две колони се преименуват на същото име в експорта, построителят на feed блокира запазването и ви показва коя се сблъсква. Изберете уникално име и ще се запази.

Кога да НЕ използвате изчислена колона

  • Реални продуктови атрибути. Ако данните принадлежат естествено на продукта (Цвят, Размер, Напрежение, EAN), използвайте обикновена характеристика и я съхранете. Изчислените колони са за стойности, които не принадлежат в каталога.
  • Картиране на категории по канал. Ако партньорът се нуждае от Google Shopping категория ID, Skroutz код или каквото и да е картиране от вашата категория към тяхната, използвайте специфичния за канала построител — той е предварително валидиран и спестява работата по картиране. Dynamic feed е отвореният вариант за партньори, за които нямаме специален построител. Вижте Какво е продуктов feed? за въведение в feed-овете на канали.
  • Статични фиксирани стойности. Ако всеки продукт получава същата стойност (condition: new, availability: in_stock), използвайте действието задай на стойност на обикновена колона, вместо да синтезирате характеристика — с една движеща се част по-малко.

Ако не сте сигурни дали колона трябва да е изчислена, съхранена или фиксирана, поддръжката може да разгледа вашия конкретен случай. Повечето въпроси „изчислено-или-съхранено?" се решават за две минути след като скицирате случая на употреба.

Не се изисква кредитна карта
14 дни безплатно
Отказ по всяко време

Изградете колоните, които партньорите ви наистина искат

Отворете Feed-ове → Dynamic в easySales и изпратете готов за партньор файл с изчислени колони за минути. Нов сте тук? Опитайте easySales безплатно за 14 дни, без кредитна карта.

Често задавани въпроси

Не. Изчислените колони се оценяват в паметта по време на рендирането на feed-а, после се изхвърлят. Отворете страницата на продуктите след регенерирането на feed-а и ще видите същите стойности на характеристики, които сте имали преди — празни, в типичната настройка. Каталогът никога не се променя. Това е по дизайн: позволява ви да публикувате много различни изчислени колони в много различни feed-ове, без данните ви на продукти да се превърнат в каша.

Не. Характеристиката е просто слот, в който формулата пише при рендиране. Повечето настройки за изчислени колони създават съвсем нова характеристика и никога не ѝ дават стойности на нито един продукт. Ако характеристиката има стойности на някои продукти и напишете правило, което я презаписва, правилото печели — за това едно рендиране на feed — и оригиналните стойности остават непокътнати в каталога.

Полета на продукта: sale_price, full_price, acquisition_price, tax_rate. Други характеристики по име: ${product.product_characteristic:&lt;Име&gt;}. Конверсия на валута: ${other.currency_rate:FROM:TO} връща живия обменен курс между два кода на валута. Функцията round() закръгля израз до зададена десетична точност. Стандартни аритметични оператори (+, -, *, /) и скоби за групиране. Редакторът на формули излага всичко това като чипове за вмъкване с щракване, така че не е нужно да помните точния синтаксис. Бележка: tax_rate е цяло число (напр. 19, 21) — разделете на 100, когато го използвате като множител.

Стандартната честота е почасова и файлът се регенерира само когато партньорът го чете (така че спящи feed-ове не пилеят ресурси). При всяко регенериране формулата се преизчислява спрямо текущите данни на продукта — промяна на цена на продукт автоматично преминава в изчислената колона при следващото рендиране. За ERP експорти на каталог можете да поискате от поддръжката да го намали до дневно; за бързи партньорски синхронизации поддръжката може да го увеличи.

Да. Feed правилото има страна „Ако" и страна „Тогава". Поставете каквото и да е условие на страната „Ако" — характеристика X равна на Y, категория съдържа Z, марка W, наличен сток > 0 — и формулата изпълнява само за съответстващите продукти. Другите продукти прескачат правилото и изчислената колона за тях е празна в експорта. Комбинирайте няколко правила, за да обработвате различни групи продукти с различни формули.

В построителя на колони на Dynamic feed всеки ред на колона има поле Преименувай до падащото меню за колона. Въведете името, което партньорът очаква („price", „min_price", „cost", каквото и да е) и това име се появява като CSV заглавие / JSON ключ / XML елемент в изходния файл. Преименуването работи на всяка колона, изчислена или не. Имената на XML елементи се санитират автоматично, ако преименуването ви съдържа интервали или пунктуация; CSV и JSON запазват точно това, което сте написали.

Да. Най-простият път е да добавите sale_price_including_tax или full_price_including_tax директно като колона в Dynamic feed — те са обикновени колони в падащото меню за колони и вече носят стойността с включен ДДС. Не е нужна формула. Ако се нуждаете от персонализирана форма (продажна цена плюс ДДС плюс марж, или с ДДС във втора валута), посегнете към формула: round(${product.product_sale_price} * (1 + ${product.product_tax_rate} / 100), 2) възпроизвежда математиката с ДДС ръчно. Бележка: ${product.product_tax_rate} връща цяло число като 19 или 21 — разделете го на 100, преди да добавите 1, за да получите правилния множител.

Беше ли полезно това ръководство?