Към съдържанието

Новости

3.12.1 — 2026-10-05

heading.anchorLabel

Спрямо 3.12.0.

Комити (1)

heading.anchorLabel
  • 09c5920 fix(sync): webcode:sync:fetch задава adminhtml area в CLI (3.12.1)

3.12.0 — 2026-10-02

heading.anchorLabel

Спрямо 3.10.0.

Внимание при деплой

heading.anchorLabel
  • Схема: db_schema е променена — setup:upgrade пипа жива база.

Комити (4)

heading.anchorLabel
  • 0da183e Release 3.12.0
  • 4c6d6a1 feat(sync): Same As по еднакво SKU към продукт на изброен доставчик (3.12.0)
  • a84ab41 feat(sync): снимките и категориите следват фийда и след създаването (3.11.0)
  • b83f1f3 fix(sync): провайдър-скоуп на SKU кешовете и почистването; URL ключ без излишен суфикс (3.10.1)

Бележки

heading.anchorLabel

Обединява 3.10.1, 3.11.0 и 3.12.0 (3.10.1 и 3.11.0 не са тагвани отделно). Подробности в CHANGELOG.md.

  • 3.10.1 (fix): два доставчика с едно SKU вече не си пипат редовете. Кешът, конфигурируемите/групираните, mapping-ът и почистването на атрибути са по доставчик. URL ключът на нов продукт не получава излишен суфикс.
  • 3.11.0: нови настройки на доставчика defaults/update_categories и defaults/update_images. Снимките и категориите, сложени от доставчика, следват фийда и след създаването, а ръчните остават. По подразбиране са изключени.
  • 3.12.0: нова настройка defaults/link_same_sku_owners. Ред със SKU на продукт на изброен доставчик се свързва като Same As и обновява само цена и наличност. По подразбиране е празна.

Без изрично включване на новите настройки поведението на съществуващите доставчици не се променя, освен поправките от 3.10.1.

При деплой

heading.anchorLabel
  • setup:upgrade добавя две nullable колони в webcode_sync_product_entity (synced_categories, synced_images). Без миграция на данни.
  • Новите настройки се виждат в админа само при доставчик, който ги е добавил в своя system.xml (група defaults).

Първи консуматор

heading.anchorLabel

drinksforyou.bg: каталог от shop.diony.bg (webcode/module-sync-magento) плюс цена, наличност и поръчки от TradeManager (webcode/module-sync-trademanager 2.0.0).

3.10.0 — 2026-09-30

heading.anchorLabel

Changed — ERP-ът отново печели по подразбиране

heading.anchorLabel
  • Регресия от 3.0.0: админ редакцията заключваше всеки mapped атрибут завинаги. В 2.14 mapping редът носеше can_override (default 1 = „импортът презаписва админа“) и само can_override = 0 пазеше админ стойността. fd5b460 („Finalize SyncCore to Sync rename…“) махна колоната и getAdminProtectedTargets(), и проверката остана безусловна: едно запазване на продукта в админа спираше синка за този атрибут, без това да е било решение и без запис в changelog-а.
    • sync_mode на mapping реда (без нова колона) решава кой печели:
      • on_change (default) — пише при всяка промяна, и върху админ редакция;
      • once — попълва само празно, както досега;
      • protected (нов) — пише, докато атрибутът на продукта не бъде редактиран от админ; после стойността остава, докато „Return to sync“ не я върне.
    • Изчистването на липсващи във фийда атрибути също пропуска само protected + admin.
    • protected участва в change-detection като on_change.
  • Масовото „Update attributes“ се брои за админ редакция. Не минава през catalog_product_save_before (от 2.4 го пише consumer-ът product_action_attribute.update), така че не получаваше admin маркер. MarkAdminSourcesOnMassUpdate (plugin на Catalog\Model\Product\Action) го слага. Собствените записи на синка (SyncContext) и ценовите колони не се маркират.
  • Промо цената е настройка на магазина, не маркер на продукта. Нова настройка webcode_sync/prices/update_special_price (Stores → Config → Webcode Sync → Prices), default Да: синкът пише промо цената и я чисти, когато фийдът няма такава — върху админ редакция също. Не: синкът никога не пипа special_price, промоциите се водят в Magento. Редовната цена винаги следва доставчика (както и досега — единствената спирачка е прагът за ръчен преглед). Маркер admin върху ценова колона вече не спира нищо: един ръчен запис замразяваше промоцията завинаги.
    • Price Comparison: „Apply“ вече не заявява special_price за админа; няма „Admin-held“ състояние, а филтърът за задържани цени гледа само review.
  • Магазин, който води промоциите в Magento (isd-bg.com, bilki), трябва да сложи webcode_sync/prices/update_special_price = 0 преди първия синк на тази версия — иначе синкът изчиства промоциите, които фийдът не носи.
  • Mapping ред, при който админ редакцията трябва да остане (напр. ръчно поддържано име), се превключва на protected. Съществуващите admin маркери се пазят и започват да важат веднага щом редът е protected.

3.9.8 — 2026-09-30

heading.anchorLabel
  • Same As не е сумирал наличности и не е прилагал ценова стратегия никъде, никога. Config::$providerRepository е незадължителен аргумент (default null), а Magento DI не инжектира незадължителен аргумент, ако di.xml не го назове — взима default-а. Така getActiveProvidersCount() връщаше 0 при всяка инсталация, getSameAsProducts() връщаше празен пул и всеки синк записваше само своите qty и цена: печелеше последният. На aptekanove.bg (30.09.2026), веднага след връзването на Swanson към Аптека Централ, 15 артикула с 0 при Централ и 100 при Swanson излязоха без наличност; двете по-стари Revita връзки също показваха само qty на Revita. Проверено на прода: NULL и 0 активни доставчика при 3 в базата. Unit тестовете не го виждаха, защото подават Config като mock.
    • di.xml подава providerRepository (Proxy) на Config; virtualType-овете на конекторите го наследяват (проверено: pharmacy-central, swanson, revita).
    • ProviderRepositoryInjectionTest пази самата връзка в di.xml.
    • След ъпгрейд пулът влиза в сила при следващия синк на всеки вързан продукт; пълният синк (04:10) минава и през непроменените.

3.9.7 — 2026-09-30

heading.anchorLabel
  • Първата ръчна промо цена на продукт не се пазеше от синхрона — пълният синк в 04:10 я изтриваше на следващата сутрин. MarkAdminAttributeSources прескачаше всеки атрибут, който липсва в origData, а Magento не зарежда ключ за атрибут без стойност. Продукт без special_price не получаваше admin маркер при първото въвеждане, и updatePrices() го чистеше, щом ERP-то няма промо цена. Засечено на isd-bg.com (9 карабини, 30.09.2026).
    • Наблюдателят обхожда проследимите атрибути и третира липсващия ключ като празен; празно към празно (null/'') не е промяна, изчистена стойност — е.
    • Докато синхронът сам записва продукт (SyncContext), наблюдателят мълчи — синк, пуснат от админа (Add/MassAdd), иначе би маркирал собствените си стойности.

3.9.6 — 2026-09-29

heading.anchorLabel
  • Same As не обединяваше наличностите надеждно — сборът зависеше от това кой ред е синкнат последен. Общата цена и qty се смятаха само при синк на реда-собственик на продукта, а вързаният ред минаваше като самостоятелен: по свой product_id/SKU обновяваше стария си продукт (или, без такъв, при auto-create раждаше нов дубликат), а в dirty списъка не влизаше изобщо, щом неговият SKU го няма в каталога. Смяна в qty на вързания доставчик така стоеше неприложена, докато фийдът на собственика не мръдне; а вързан ред с product_id към продукта се броеше два пъти в sum. Засечено при връзването на Swanson към Аптека Централ на aptekanove.bg (aptekanove-97, 29.09.2026).
    • Ред, деклариран като Same As, вече обновява само продукта, към който е вързан, и само цената и наличността му (updateLinkedProduct()). Съдържанието — име, атрибути, снимки, видимост, стъпка на продажба — остава на собственика; webcode_sync_synchronize_product_after не се пуска. Вързан ред не създава и не осиновява продукти.
    • Пулът за цена/qty е всички Same As редове на продукта, а при синк от вързания ред — и собственикът (ProductSameAs::getOwnerSyncProductIds()). Синкваният ред никога не е в собствения си пул. Резултатът е един и същ, от която страна да дойде синкът.
    • getDirtyList() взима и вързаните редове, независимо от SKU-то им.
    • Вързаният ред получава product_id на продукта, за да се вижда в Price Comparison.

3.9.5 — 2026-09-25

heading.anchorLabel
  • setup:upgrade на Magento 2.4.8+ падаше с 1833 на сайт, минаващ от sync-core 2 с webcode_sync_logger. 2.4.8+ конвертира webcode_sync_provider_entity в utf8mb4, а FK-ът на легаси webcode_sync_logger.provider още сочи code. Таблицата беше махната от схемата в 3.0.2, тоест drop_table идва последен — след конверсията. Сега е отново декларирана без FK-овете си, така че те падат като drop_reference преди всичко друго (guga.bg, sync-core 2.13 → sync 3.9.4 на 2.4.9, 25.09.2026).

3.9.4 — 2026-09-24

heading.anchorLabel

Спрямо 3.9.3.

Комити (2)

heading.anchorLabel
  • 558b77c Release 3.9.4
  • cf18172 fix(order): бутонът (Re)send не мълчи и не праща втори път вече записана поръчка

3.9.3 — 2026-09-24

heading.anchorLabel

Спрямо 3.9.2.

Комити (4)

heading.anchorLabel
  • 3ceba33 Release 3.9.3
  • 2627dcd Merge branch ‘url-recovery-live-duplicate’ into ‘master’
  • 8098879 fix(product): re-key a url_key a live product also carries instead of failing
  • 4101b32 chore: post-release bump to 3.9.3

3.9.2 — 2026-09-23

heading.anchorLabel

Спрямо 3.9.1.

Комити (4)

heading.anchorLabel
  • 29273d6 Release 3.9.2
  • 93d5637 fix(same-as): табът Same As в продукта вече не връща 404
  • 647fc0c test: DataProvider атрибути вместо анотации — PHPUnit 12 в CI не чете @dataProvider
  • c8a8895 fix(product): продукт без цена във фийда не се създава на 0 €

Бележки

heading.anchorLabel
  • Продукт без цена във фийда вече не се създава на 0 € (!65). Доставчиците пускат нов артикул преди да му сложат цена (Ревита: Regular_price 0). Досега Sync → Add, MassAdd и автоматичното създаване го пускаха Enabled и в наличност на 0, а синкът не вдигаше цената след това, защото updatePrices() не пише цена ≤ 0. Сега simple/hidden ред с цена ≤ 0 не се създава: причината отива в last_error (Failed грида), а редът влиза отново в синка сам, когато фийдът донесе цена. Sync → Add показва причината вместо „Nothing to add“. Configurable и grouped не се засягат. Мерено на aptekanove.bg: RVVV-VITA-412 влезе в три поръчки на 0 €.
  • Табът Same As в редакцията на продукта вече не връща 404 (!66). AJAX презареждането на грида не регистрираше текущия продукт и при продукт без връзки гърмеше с NotFoundException → 404 при първото филтриране или търсене. Контролерът го регистрира по id от URL-а, както RelatedGrid в ядрото.

При деплой

heading.anchorLabel
  • Нов аргумент в конструктора на Controller/Adminhtml/Product/Grid (Magento\Catalog\Controller\Adminhtml\Product\Builder). Изчисти generated/ / пусни setup:di:compile, иначе админът гърми с TypeError на таба Same As.
  • Нови преводи в i18n/bg_BG.csv → cache:flush.
  • Няма промени по схемата, data patch-ове или static content.

3.9.1 — 2026-09-15

heading.anchorLabel

Спрямо 3.9.0.

Комити (1)

heading.anchorLabel
  • 7879da5 fix(order): getList() хидратира sent_items и external_order_id такива, каквито са в таблицата

3.9.0 — 2026-09-15

heading.anchorLabel
  • Пълният синк (webcode_sync_synchronize_all) върви на порции зад курсор. Досега буташе всеки staging ред наведнъж и държеше group lock-а на webcode_sync_products през цялото време, така че fetch и Dirty спираха. На aptekanove.bg (27,5K реда) рънът трае около 3ч50м и cron-scheduler го убиваше всеки ден на третия час. Понеже почваше отначало, едни и същи редове не се стигаха никога. Сега всеки рън пуска редове до изтичане на бюджета си и излиза, с което пуска lock-а. Курсорът (provider, entity_id) е във flag (webcode_sync_full_pass) и следващата порция продължава оттам. Дневният старт (04:10) продължава незавършен проход, вместо да го рестартира. Не се пропуска нито един ред. Виж CLAUDE.md.
  • Cron webcode_sync_synchronize_all_continue (*/15), който продължава прохода с една порция и не прави нищо, когато няма проход в ход.
  • Настройка „Full Sync Batch (minutes)“ (Maintenance & Cleanup, по подразбиране 5).
  • SyncProductRepositoryInterface::getPageAfter() и ProductRunner::synchronizeRow().

Проверка

heading.anchorLabel
  • Локално срещу dev база, само четене: getPageAfter() обхожда 82 097 реда, всеки веднъж и в правилния ред (= COUNT(*)).
  • Не е пускано като истински cron рън срещу прод каталог. Първото реално потвърждение ще е проходът в 04:10 след деплой (ред за всяка порция в webcode_sync.log).

MR !61.

3.8.0 — 2026-09-11

heading.anchorLabel

Order sync: транспортните провали вече не изяждат auto-retry бюджета. Нов OrderSyncResult::transportFailure() (показва се като failed, но не увеличава retry) + circuit breaker в AbstractOrder през providerReachable(). Нов Webcode\Sync\Exception\TransportException. Без схема/DI/конфиг промени, без BC-break.

3.7.5 — 2026-09-10

heading.anchorLabel

Спрямо 3.7.4.

Внимание при деплой

heading.anchorLabel
  • Конструктор: сменена сигнатура на __construct — при деплоя се чисти generated/.
  • Setup: data/schema patch — изпълнява се срещу жива база при setup:upgrade.

Комити (1)

heading.anchorLabel
  • 49f8c9c fix(acl,save): пренеси правилата на sync-core и записвай изчистения last_error

3.7.4 — 2026-09-09

heading.anchorLabel

Спрямо 3.7.3.

Комити (1)

heading.anchorLabel
  • a7b3b05 fix(mapping): кастът на source id е на границата, не слой по слой

3.7.3 — 2026-09-09

heading.anchorLabel

Спрямо 3.7.2.

Комити (1)

heading.anchorLabel
  • df67230 fix(source): Provider наследява AbstractSource, за да е валиден EAV source

3.7.2 — 2026-09-09

heading.anchorLabel

Mapping\\Category::getIdByProviderAndSourceId() приемаше само string $sourceId, а източниците подават и int — sqlsrv връща числовите колони като int. ERP група с числов GroupID вдигаше TypeError и събаряше целия продуктов fetch (webcode_sync_microinvest_fetch_products), тоест цени, наличности и категории не се дърпаха изобщо.

Mapping\\Attribute вече беше разширен на string|int по същата причина; при категориите е било пропуснато. Телата на двата метода са идентични (bound параметър), тъй че разширяването не мени поведение, а repository методите са без типове и подават направо — поправката на ниво resource покрива всички извиквачи.

Открито на b2b.isd-bg.com при ъпгрейд към Magento 2.4.9, като следващия слой след sync-microinvest 3.3.1.

🤖 Generated with Claude Code

3.7.1 — 2026-09-01

heading.anchorLabel

Спрямо 3.7.0.

Комити (2)

heading.anchorLabel
  • aaefbd0 цената следва само стратегията: махни admin provenance guard-а върху цената (остава за special_price)
  • 79de6b0 Fix duplicate media gallery entries on product import

3.7.0 — 2026-08-26

heading.anchorLabel
heading.anchorLabel

Pending staged products can now be linked to an existing catalog product from a slide-in modal, alongside the existing Add to catalog / Remove actions.

  • Linking writes a Same As relation (webcode_sync_product_same_as), so the staged row leaves the Pending grid automatically — no status change — and the linked product’s sync price/qty resolution starts honouring that provider.
  • Optionally mark the linked provider as primary at link time (sync_primary_provider); the default is a secondary source, so a live product’s price is never changed implicitly.
  • A catalog product picker grid (name / SKU / price / special price / stock) with a category filter drives the selection.

Also includes the ACL resource-id fix from the 3.6.x line.

3.6.0 — 2026-08-21

heading.anchorLabel
  • Same As връзката вече живее релационно в webcode_sync_product_same_as, а EAV атрибутът sync_same_as е премахнат. Връзката „каталожен продукт ↔ staged sync продукти“ стоеше като слепен със запетаи низ в един varchar — данни, които SQL можеше да пита само с FIND_IN_SET, и втори дом, чакащ да се разминe с истината. Формата продължава да POST-ва слепен низ, но той е само транспорт: adminhtml observer (SaveSameAsLinks) го разгъва в таблицата при запис, а всички четци (Same As grid-ът, getSameAsProducts() в синхронизацията, ownership проверката в assertAdoptable()) четат таблицата. Миграционен patch пренася наличните стойности и маха атрибута. Забележка: REST/import/програмни save-ове не носят ключа и не пипат връзките — както и досега не го правеха.
  • Продуктовата форма в админа вече не умира с „The element with the ‘sync.same_as.product.grid’ ID wasn’t found“ (goldshop). Same As grid-ът се строеше върху споделения page layout, а модификаторът може да бъде извикан по време на чужд рендер — magesuite-opengraph admin preview-то тригерира вложен Page\Config build, при който структурният елемент на грида се губи и Extended grid-ът гърми в setChild(). Гридът вече се строи върху собствен, изолиран layout (LayoutFactory), а рендерът му е ограден — счупен grid деградира до форма без Same As панел вместо до мъртва продуктова страница (грешката се логва).
  • Staged продукт, отбелязан като Same As на каталожен продукт, вече не виси вечно в Pending Products. Pending грида показваше всеки staged ред без собствен каталожен SKU/product_id — включително линкнатите като Same As, и подканваше с „Add to Catalog“ да им се създаде дубликат. Сега колекцията прави anti-join към link таблицата и линкнатите отпадат.

3.5.8 — 2026-08-21

heading.anchorLabel

Спрямо 3.5.7.

Внимание при деплой

heading.anchorLabel
  • DI: di.xml е променен — при деплоя се чисти generated/.
  • Конструктор: сменена сигнатура на __construct — при деплоя се чисти generated/.

Комити (2)

heading.anchorLabel
  • 49b85d6 Sync: Global Sync Settings в админ менюто
  • d4b0e67 Sync: конфигурируемо спиране на MSI резервациите (ERP-managed inventory)

3.5.7 — 2026-08-21

heading.anchorLabel

Спрямо 3.5.5.

Комити (3)

heading.anchorLabel
  • 6389965 Бумп на version полето към 3.5.7
  • 6d5fb50 fix(sync): getEntityId() вместо getId() в attribute-set/категорийния кеш
  • b2dd1a9 Бумп на version полето към 3.5.6

3.5.5 — 2026-08-20

heading.anchorLabel

Спрямо 3.5.4.

Внимание при деплой

heading.anchorLabel
  • Конструктор: сменена сигнатура на __construct — при деплоя се чисти generated/.

Комити (2)

heading.anchorLabel
  • 02603ab feat: масово Add to Catalog на Pending Products grid-а
  • e42522e Бумп на version полето към 3.5.5

3.5.4 — 2026-08-20

heading.anchorLabel

Спрямо 3.5.3.

Комити (2)

heading.anchorLabel
  • 5765ef2 Release 3.5.4 — special_price provenance фиксът
  • 68d3249 fix: special_price/price винаги trackable — админ промоция не се трие

3.5.3 — 2026-08-20

heading.anchorLabel

Спрямо 3.5.2.

Комити (1)

heading.anchorLabel
  • 18ed71e feat(price-rule): fold Save & Duplicate into a Save split button

3.5.2 — 2026-08-20

heading.anchorLabel

Спрямо 3.5.0.

Комити (5)

heading.anchorLabel
  • 952388b Бумп на version полето към 3.5.2
  • b68e44e fix(sync): не отвличай чужд продукт при първи линк по гол SKU
  • aa86368 fix(sync): name минава през mapping-а като всеки друг атрибут
  • bca138e ci: махни изводимите ключове от .gitlab-ci.yml
  • f3a1575 Бумп на version полето към 3.5.1

3.5.1 — 2026-08-19

heading.anchorLabel

Спрямо 3.5.0.

Комити (1)

heading.anchorLabel
  • 7ab46ca fix(price-rule): persist empty margin as NULL, not 0

3.4.1 — 2026-08-19

heading.anchorLabel

Спрямо 3.4.0.

Комити (1)

heading.anchorLabel
  • 58771a2 fix(price-rule): persist empty margin as NULL, not 0

3.5.0 — 2026-08-19

heading.anchorLabel

Спрямо 3.3.5.

Внимание при деплой

heading.anchorLabel
  • Конструктор: сменена сигнатура на __construct — при деплоя се чисти generated/.
  • Схема: db_schema е променена — setup:upgrade пипа жива база.

Комити (4)

heading.anchorLabel
  • 38e72d4 Sync: изход “не знам” за доставчиците
  • 42c5ecf feat(price-rule): Duplicate grid action and Save & Duplicate form button
  • ce904e6 fix(sync): match catalogue products by (provider, sku) mapping, not bare SKU
  • ef6dade Sync: surface failed product syncs, stop per-run retry spam, auto-clear stale url_rewrites

3.4.0 — 2026-08-19

heading.anchorLabel

Спрямо 3.3.5.

Внимание при деплой

heading.anchorLabel
  • Конструктор: сменена сигнатура на __construct — при деплоя се чисти generated/.

Комити (2)

heading.anchorLabel
  • 42c5ecf feat(price-rule): Duplicate grid action and Save & Duplicate form button
  • ce904e6 fix(sync): match catalogue products by (provider, sku) mapping, not bare SKU

3.3.5 — 2026-08-19

heading.anchorLabel

Спрямо 3.3.4.

Комити (2)

heading.anchorLabel
  • 4de67fd Make an order batch with no configured statuses fail instead of reporting success
  • a9d37db fix(cron): guard setCommandOutput against null $output in cron context

3.3.4 — 2026-08-14

heading.anchorLabel
  • Restored the Price Rules admin layout files dropped by an unrelated merge. The 3.3.3 rename to webcode_sync_pricerule_{index,edit,new}.xml was lost when a branch that still carried the pre-rename webcode_sync_price_rule_* files deleted them as “unused” and its merge into master also dropped the renamed copies — master ended up with no Price Rules layout at all and the admin page rendered empty again. Re-added the three files.

See 3.3.3 for the root cause: the layout handle for a multi-word admin controller has no word separators (PriceRule → pricerule), so a file misnamed webcode_sync_price_rule_* never matches the handle and its <uiComponent> is never placed into the page.

3.3.3 — 2026-08-13

heading.anchorLabel
  • The Price Rules admin page (grid + New/Edit forms) rendered empty. The PriceRule controller resolves to the layout handle webcode_sync_pricerule_index (route id, lowercased controller name, action — no word separators), but the layout files were named webcode_sync_price_rule_* with an underscore. The handle never matched, so the <uiComponent> was never placed into the content container: the page returned 200 with a title and breadcrumb but an empty content column — no grid, no toolbar, no error in any log. The data path was healthy throughout (the rules were in webcode_sync_price_rule and the grid’s data provider returned them). Renamed the three layout files to the resolved handle names and fixed the <update handle> reference in the New page. The sibling pricecomparison and pricechangelog grids already followed the correct convention.

3.3.2 — 2026-08-13

heading.anchorLabel

Absorbs 3.3.1, which was prepared but never tagged — its commit is included here, so there is no 3.3.1 release.

  • Stop declaring the round_rule comment as an FQCN. The declarative schema wrote column comments unescaped, so MySQL consumed the backslashes and the stored comment could never match the declaration — leaving a modify_column difference that setup:db-schema:upgrade re-applied on every run and never cleared.
  • Give getScopeConfigData the string it promises.
  • Declare ValueRepository::$collectionProcessor instead of creating it dynamically (a dynamic property is fatal on PHP 8.5).
  • Drop the mapping grid setFilter arguments and the collections’ addFulltextFilter — both were dead calls that did nothing.

Tests and static analysis:

  • Move the category chain order tests to the providers that decide the order. They instantiated consumer classes that do not exist in this module’s own dependency closure, so CI failed on every branch.
  • Clear the PHPCS errors that blocked every pipeline, and document the module to the Magento standard.

3.3.0 — 2026-08-13

heading.anchorLabel

Supplier feeds pad their SKUs with whitespace — including a non-breaking space and a BOM, which MySQL’s TRIM does not recognise. A padded SKU matches nothing on the next fetch, so the row was re-inserted clean beside the dirty original, which stayed staged and kept failing into the catalogue forever.

  • Trim the whitespace suppliers pad their SKUs with (normalised on ingest, plus a data patch that cleans the rows already staged).
  • Say which product and which feed failed, and why — the fetch error now names the row instead of failing anonymously.
  • Migrate the test suite to PHPUnit 12 metadata.

3.2.1 — 2026-07-28

heading.anchorLabel

Fix: a product carrying an attribute that is required in its set but never present in the supplier feed (e.g. a cosmetic second colour) can now be added from Pending and keeps syncing price/stock on later runs. While the sync itself saves, only the required-empty validation errors are dropped (field stays genuinely empty, no placeholder); admin/API saves still enforce required fields. Covered by an integration test.

3.2.0 — 2026-07-28

heading.anchorLabel

Спрямо 3.1.0.

Внимание при деплой

heading.anchorLabel
  • Конструктор: сменена сигнатура на __construct — при деплоя се чисти generated/.
  • Схема: db_schema е променена — setup:upgrade пипа жива база.
  • Setup: data/schema patch — изпълнява се срещу жива база при setup:upgrade.

Комити (1)

heading.anchorLabel
  • 4c5f43d Split order additional_data: business data vs debug attempt-trail

3.1.0 — 2026-07-24

heading.anchorLabel

⚠️ Upgrade steps. Constructors changed in Service/Processor/ProductProcessor, Console/Command/Synchronize, Cron/Synchronize/Product/AbstractSynchronize and the Price Comparison grid, so a deploy needs setup:di:compile — a stale interceptor breaks all of bin/magento. The three price screens moved under a new Imports → Prices parent, so roles need the new Webcode_Sync::prices ACL resource granted or the screens disappear from their menu.

  • categories datatype and a weekly job. Nothing ever refreshed a supplier’s category tree — every crontab.xml fetched products and nothing else — while category-based providers resolve their products through that mapping, so a category added by a supplier after the first seed stayed unreachable, and a fresh install imported 0 products in about a second with no error. Service/Processor/CategoryProcessor is the datatype; Cron/Fetch/Categories (webcode_sync_fetch_categories, Monday 00:30, half an hour before the daily full product fetch) walks every provider that registers it. ProductProcessor::fetch() also seeds on an empty mapping and re-reads on a full run. Seeded rows arrive inactive on purpose, so a run now says “no active category mapping — this fetch will import 0 products” instead of reporting an empty success.
  • “Ask before changing a price by more than X%” (strategies/manual_review_percent, 0 = off, the shipped default). A condition on top of whatever strategy resolves, not a strategy of its own: over that much movement the sync leaves the price alone and marks price = review in sync_attribute_sources — a third provenance value, because nobody has decided anything yet. The row is listed in Price Comparison with both figures and the gap in € and %; Approve supplier price applies it and hands the product back to the feed, and the mark clears itself once the supplier’s price is back inside tolerance.
  • lowest_dealer price strategy. Distributors quote the same RRP — only 14 of 66 multi-supplier products differ on the sell price while all 66 differ on the dealer price — so the margin is the only thing that can actually choose a supplier.
  • “Return to sync” mass action, and the 🔒 marker that makes an admin-held price visible at all. Once an attribute was admin-sourced nothing could ever clear the mark, and nothing showed it.
  • Imports → Prices menu group (Price Rules / Price Comparison / Price Change Log) with its own ACL resource, matching how Products and Mapping are already grouped.
  • ProviderProcessorInterface::supports().
  • One synchronize implementation. AbstractDataProcessor::synchronize() was an empty stub and every provider registers a processor, so webcode:sync:synchronize products <provider> reported a clean run that had synchronized nothing; the only working implementation was the cron’s, with a second copy in the console command. All three now call Service/Synchronize/ProductRunner.
  • Prices obey provenance. updatePrices() had no admin-source check at all, so the module’s own Apply button produced a price the next sync deleted. Apply records admin as it writes (a resource-level updateAttributes() cannot fire the observer that normally does) and updatePrices() honours it — which also gives the “freeze just this product’s price” that was missing.
  • A held price is listed again once it drifts from its closest supplier, single-supplier products included. Freezing a price also freezes it while the suppliers’ keep moving, and the grid only ever showed rows where the suppliers disagreed with each other.
  • Priority ties break on price. Every provider ships priority 10, so “equal” is the normal case and row order was deciding it — KW9-00632 applied 186.78 over 130.49.
  • A reseller_price of 0 means the provider sent none, not that the goods are free. vali (5724 rows) and xcom (2066) send none at all, and read as a number they won every comparison. Excluded from lowest_dealer and from the grid’s spread filter (NULLIF).
  • An unknown datatype is no longer a silent no-op: “this provider does not do orders”, “typo in the datatype” and “di is not compiled” used to look identical.
  • The price rule form’s buttons point at Webcode_Base — the Webcode\Core blocks they named no longer exist.
  • PriceRuleEngine’s final rounding had never executed anywhere (no environment had a price rule, so the no-rules fast path always won); it is now covered by tests.

3.0.2 — 2026-07-23

heading.anchorLabel

Спрямо 3.0.1.

Внимание при деплой

heading.anchorLabel
  • Схема: db_schema е променена — setup:upgrade пипа жива база.

Комити (1)

heading.anchorLabel
  • 8992aab Fix: drop dead webcode_sync_logger declaration (empty disabled table crashed mage-os SchemaBuilder); release 3.0.2

3.0.1 — 2026-07-23

heading.anchorLabel

Спрямо 3.0.0.

Внимание при деплой

heading.anchorLabel
  • Зависимости: require в composer.json: добавен webcode/module-base (^1.0.0); премахнат webcode/module-branding (1.0.0).

Комити (3)

heading.anchorLabel
  • 8708215 Release 3.0.1
  • a9fe88c Migrate deps to module-base; drop deprecated module-sync-core replace alias
  • a9000e9 CI: wire Webcode_Sync into the shared module pipeline

3.0.0 — 2026-07-22

heading.anchorLabel

Спрямо 2.14.0.

Внимание при деплой

heading.anchorLabel
  • DI: di.xml е променен — при деплоя се чисти generated/.
  • Конструктор: сменена сигнатура на __construct — при деплоя се чисти generated/.
  • Схема: db_schema е променена — setup:upgrade пипа жива база.
  • Setup: data/schema patch — изпълнява се срещу жива база при setup:upgrade.
  • Static: стилове/JS/шаблони във view/*/web (или requirejs-config.js) са променени — при деплоя setup:static-content:deploy.
  • Зависимости: require в composer.json: добавен magento/module-catalog-rule (*); добавен magento/module-rule (*); премахнат webcode/module-core (>=1.5.0).

Комити (50)

heading.anchorLabel
  • 955b2a8 Write the 3.0.0 changelog
  • 7e08784 Remove the dead config price pipeline
  • 7eb2e57 Emulate adminhtml around the rule save in the migration patch
  • 9c7338a Remove the erp/supplier provider type; a rule’s scope is its condition
  • 16dc3e6 Add AbstractMigratePriceConfigToRule, the legacy price-config migration
  • 2631841 Fix attribute mapping: guard auto-match to new rows, collapse double-save, case-insensitive label match
  • 6d8b769 Correct the provider-type comment: Riva is a supplier, not an ERP
  • 449b9c8 Expose the margin bounds on the form and reject a contradictory rule at save
  • 7f0132c Hold the computed price within its margin over the dealer price
  • 11ae064 Offer the sync attributes in the price-rule condition builder
  • 32cf7a6 Add the price-rule admin UI
  • 755ed0d Guard Setup/Patch/Data against non-instantiable classes
  • 56351f3 Apply the price rules in the fetch, after the provider extracts its numbers
  • 84122d2 Stop AbstractAddProvider from breaking setup:upgrade
  • 8cfa318 Add the price-rule matcher and its sync-attribute condition bridge
  • d8c3077 Add PriceRuleEngine to apply the rules to a product’s price fields
  • bcb6d99 Add PriceRuleCalculator, the price-rule arithmetic
  • eb66e7c Widen the price-rule field enums to every price column and add a multiplier
  • 5e786ef Scaffold the price rule entity and give providers an erp/supplier type
  • eb9f938 chore: standardize copyright headers and licensing
  • 71897ca Add AbstractAddProvider to share the provider-registration patch
  • d37c3bb Add GuzzleFeedClient to share the feed get/decode across providers
  • 82e10a4 chore: export-ignore docs/ from composer dist
  • 5dda743 Fix undeclared $this->helper->getWebsites() call (use injected Config)
  • 5939d15 Review fixes: drop dead getNamespace, base-currency symbol, track qty, v3.0.0
  • acbf48e Review fixes: rename config section to webcode_sync, lowercase route, use core sources
  • 31715ba Lift the fetch skeleton into AbstractDataSource::fetchProducts()
  • a2965da Lift the per-row fetch loop into AbstractDataSource::mapRows()
  • ce3b33d Resolve provider display name from the repository in getProviderName()
  • d261d08 Resolve feed provider label inside downloadFeed()
  • c77fc3e Добави .gitattributes и .gitignore
  • 71c4d9f Add downloadFeed() to guard HTTP status before parsing
  • 3804219 Parse –deactivate-missing as a boolean; key product lookups by provider
  • af6c29a Make reveal() protected so a provider can decrypt by the same rule
  • d85ff8b Identify the fetch client and share the transport defaults
  • 6061499 Always return the usable secret; encrypt what was stored in the clear
  • b084aa0 Cover the nameless-attribute guard with a unit test
  • 6e6eaeb Skip attributes with no label when building the match map
  • dbdf19b Order the category chain most specific first, and say so in the contract
  • 95fa37e Refuse to deactivate a provider’s products when its feed collapses
  • f0dd64a Record order-sync failures instead of stamping them sent
  • d1cde07 Смени created_at на datetime в webcode_sync_product_entity
  • 68e53f2 Fix the staging->catalog sync never running; give it a real schedule
  • 48a110f Warn when catalog indexers are not on Update by Schedule, with a one-click fix
  • 9b32952 Fix broken daily full-sync cron; drop raw SQL from stale-product cleanup
  • 40b3a22 Price comparison grid: make “Apply computed” a button for consistency with the inline custom Apply
  • 20da21b Price comparison grid UX: move Will Apply next to Apply, inline custom price, default provider in Primary
  • 6c445d2 Decouple from Webcode_Core: inline Ui Actions column + Source\Active/CustomerGroups; drop Core sequence and composer require
  • fd5b460 Finalize SyncCore to Sync rename and modernize provider sync
  • 9f01083 - Подобрена проверка и актуализация на атрибута special_price.

2.15.0 — 2026-07-21

heading.anchorLabel

webcode/module-sync-core 2.15.0 — Deprecation / transition bridge

heading.anchorLabel

⚠️ Пакетът е преименуван на webcode/module-sync. Този релийз е транзишън мост от 2.14.0.

Промени

heading.anchorLabel
  • Маркиран като deprecated (виж description) — новото име е webcode/module-sync.
  • composer.json replace: добавено "webcode/module-sync": "3.0.0".

Съществуваща инсталация на webcode/module-sync-core 2.15.0 вече предоставя webcode/module-sync 3.0.0, така че зависимости, изискващи новото име (webcode/module-sync ^3.0.0), се удовлетворяват без отделен пакет — връзката се запазва по време на прехода.

Кодът е идентичен с 2.14.0; сменен е само composer manifest-ът.

2.14.0 — 2026-07-14

heading.anchorLabel

Спрямо 2.13.0.

Внимание при деплой

heading.anchorLabel
  • DI: di.xml е променен — при деплоя се чисти generated/.
  • Конструктор: сменена сигнатура на __construct — при деплоя се чисти generated/.
  • Схема: db_schema е променена — setup:upgrade пипа жива база.
  • Setup: data/schema patch — изпълнява се срещу жива база при setup:upgrade.
  • Static: стилове/JS/шаблони във view/*/web (или requirejs-config.js) са променени — при деплоя setup:static-content:deploy.
  • Зависимости: require в composer.json: добавен magento/module-grouped-product (*).

Комити (10)

heading.anchorLabel
  • bb4d634 Add CHANGELOG and bump to 2.14.0 (grouped products, visibility, tier-price fix, cleanup command)
  • 03b8efb Grouped products, B2B pricing, category/set mapping (from trierra)
  • dc9933d - Добавени преводими заглавия в ACL ресурси.
  • 4ad4cad Refactor Namespaces
  • 0e9ff5a - Добавено поле can_override към моделите, базите данни и интерфейсите за управление на атрибути - Въведен механизъм за маркиране на източници на атрибути със стойности от администрацията - Подобрена синхронизация на продуктови атрибути и управление на конфликти между източниците — - Add can_override field to models, databases, and attribute management interfaces - Introduce mechanism to track attribute sources with admin-set values - Enhance product attribute synchronization and conflict handling between sources
  • 9773445 - Add generic cron processor to delegate actions to ProviderProcessor — - Добавен е общ Cron процесор за делегиране на действия към ProviderProcessor
  • 8c49eb1 English: - Remove unused classes and abstract implementations for product synchronization - Replace manual collection processing with CollectionProcessor in repositories - Add option --deactivate-missing in Fetch Command - Refactor time calculation to ensure consistency in Fetch and Synchronize Commands
  • 26a38ab English: - Introduce provider processor pool for dynamic provider handling - Refactor Fetch and Synchronize commands to utilize processors - Enhance Save observer with fallback for provider codes - Add system configuration for cron jobs and default settings
  • 86a7095 English: - Add support for configurable price and stock strategies - Introduced “Primary Provider” attribute for product synchronization - Enhance admin UI with settings for global sync strategies
  • 6445698 English: - Add functionality to associate products using “Sync Same As” - Adjust category grid for compatibility with interface constants - Update admin UI components to enhance filtering options

2.13.0 — 2026-03-14

heading.anchorLabel

Спрямо 2.12.5.

Внимание при деплой

heading.anchorLabel
  • Зависимости: require в composer.json: добавен webcode/module-category-tree (^1.0.0).

Комити (1)

heading.anchorLabel
  • 7a738b0 Change Category listing.

2.12.5 — 2026-03-14

heading.anchorLabel

Спрямо 2.12.4.

Внимание при деплой

heading.anchorLabel
  • Схема: db_schema е променена — setup:upgrade пипа жива база.

Комити (1)

heading.anchorLabel
  • 9ee203c parent_sku can be empty.

2.12.4 — 2026-03-14

heading.anchorLabel

Спрямо 2.12.3.

Внимание при деплой

heading.anchorLabel
  • Схема: db_schema е променена — setup:upgrade пипа жива база.

Комити (4)

heading.anchorLabel
  • 0f32340 fix issue with images in scope + db_schema_whitelist.json
  • 43848ec aptekanove.bg
  • c204bce php8.4 compat
  • 092f60b remove attribute_code foreign key from db-whitelist.

2.12.3 — 2025-11-26

heading.anchorLabel

Спрямо 1.12.2.

Комити (3)

heading.anchorLabel
  • 9142789 Edit composer.json
  • 4ccf01b Асоцииране на симпъл продукти към вече добавени конфигурирани
  • 8cc4c55 improvements for configurable products

2.12.2 — 2025-11-13

heading.anchorLabel

Спрямо 1.12.1.

Внимание при деплой

heading.anchorLabel
  • Схема: db_schema е променена — setup:upgrade пипа жива база.

Комити (1)

heading.anchorLabel
  • d85d539 remove attribute_code foreign key.

1.12.2 — 2025-11-13

heading.anchorLabel

Спрямо 1.12.1.

Внимание при деплой

heading.anchorLabel
  • Схема: db_schema е променена — setup:upgrade пипа жива база.

Комити (1)

heading.anchorLabel
  • d85d539 remove attribute_code foreign key.

1.12.1 — 2025-10-30

heading.anchorLabel

Спрямо 2.12.0.

Внимание при деплой

heading.anchorLabel
  • Схема: db_schema е променена — setup:upgrade пипа жива база.

Комити (3)

heading.anchorLabel
  • 88facef db-schema
  • 543ee15 fix issues
  • cb5219d improvments

2.12.1 — 2025-10-30

heading.anchorLabel

Спрямо 2.12.0.

Внимание при деплой

heading.anchorLabel
  • Схема: db_schema е променена — setup:upgrade пипа жива база.

Комити (3)

heading.anchorLabel
  • 88facef db-schema
  • 543ee15 fix issues
  • cb5219d improvments

2.12.0 — 2025-10-17

heading.anchorLabel

Спрямо 2.11.2.

Внимание при деплой

heading.anchorLabel
  • Схема: db_schema е променена — setup:upgrade пипа жива база.

Комити (3)

heading.anchorLabel
  • 6ab4e6c add logger table, show attribute value mapping (WIP)
  • b69550f add logger table, show attribute value mapping (WIP)
  • 23d64e5 removed exception.

2.11.2 — 2025-07-19

heading.anchorLabel

Спрямо 2.11.1.

Комити (1)

heading.anchorLabel
  • f439581 minor fix.

2.11.1 — 2025-07-19

heading.anchorLabel

Спрямо 2.11.0.

Внимание при деплой

heading.anchorLabel
  • Схема: db_schema е променена — setup:upgrade пипа жива база.

Комити (4)

heading.anchorLabel
  • 327fe07 add placeholders for parent and child products.
  • 954346b add placeholders for parent and child products.
  • 302cde9 split cron groups
  • e033344 refactoring and updates.

2.11.0 — 2025-01-24

heading.anchorLabel

Спрямо 2.10.1.

Внимание при деплой

heading.anchorLabel
  • Схема: db_schema е променена — setup:upgrade пипа жива база.

Комити (3)

heading.anchorLabel
  • bda06c2 sync with Core module.
  • 11b1b2a remove namespaces
  • 782d27e 2.10.2 - issue with unsigned column.

2.10.1 — 2024-12-17

heading.anchorLabel

Спрямо 2.10.0.

Внимание при деплой

heading.anchorLabel
  • Схема: db_schema е променена — setup:upgrade пипа жива база.

Комити (3)

heading.anchorLabel
  • cd06d6d 2.10.1
  • cd25be9 add manual sync orders
  • ab349da remove foreign key

2.10.0 — 2024-12-03

heading.anchorLabel

Спрямо 2.9.3.

Внимание при деплой

heading.anchorLabel
  • DI: di.xml е променен — при деплоя се чисти generated/.
  • Конструктор: сменена сигнатура на __construct — при деплоя се чисти generated/.

Комити (1)

heading.anchorLabel
  • 4a8a429 добавяне на възможност за ръчно изпращане на поръчки.

2.9.3 — 2024-11-24

heading.anchorLabel

Спрямо 2.9.2.

Комити (1)

heading.anchorLabel
  • 6be246c add first order to sync.

2.9.2 — 2024-11-24

heading.anchorLabel

Спрямо 2.9.1.

Внимание при деплой

heading.anchorLabel
  • Схема: db_schema е променена — setup:upgrade пипа жива база.

Комити (1)

heading.anchorLabel
  • 3bdda8d Improve orders import. products import improvements.

2.9.1 — 2024-09-05

heading.anchorLabel

Спрямо 2.9.0.

Внимание при деплой

heading.anchorLabel
  • Конструктор: сменена сигнатура на __construct — при деплоя се чисти generated/.
  • Схема: db_schema е променена — setup:upgrade пипа жива база.

Комити (5)

heading.anchorLabel
  • 27b547e version
  • ef37168 sync orders crontab
  • 12287b0 add ability to sync orders.
  • 0a8fb2d add dirty sync.
  • a7e9cf6 add dirty sync.

2.9.0 — 2024-07-31

heading.anchorLabel

Спрямо 2.8.12.

Внимание при деплой

heading.anchorLabel
  • Зависимости: require в composer.json: добавен magento/module-config (*); добавен magento/module-configurable-product (*); добавен magento/module-cron (*); добавен magento/module-customer (*); добавен magento/module-inventory-api (*); добавен magento/module-msrp (*); добавен magento/module-sales (*); премахнат php (^8.1); добавен webcode/module-branding (1.0.0).

Комити (2)

heading.anchorLabel
  • 0719897 some small fixes.
  • d687315 code cleanup

2.8.12 — 2023-02-21

heading.anchorLabel

Спрямо 2.8.11.

Комити (1)

heading.anchorLabel
  • 7d43089 add setting for min_qty and backorders in stock status behavior

2.8.11 — 2023-02-01

heading.anchorLabel

Спрямо 2.8.10.

Комити (2)

heading.anchorLabel
  • 61fb982 refactoring getNamespace
  • 3b5e5a8 добавяне на съвместимост с други модули

2.8.10 — 2022-12-14

heading.anchorLabel

Спрямо 2.8.9.

Комити (1)

heading.anchorLabel
  • 884c1dd премахване на стари полета.

2.8.9 — 2022-12-05

heading.anchorLabel

Спрямо 2.8.8.

Комити (1)

heading.anchorLabel
  • 2fc057e fix compat with php8.1

2.8.8 — 2022-12-05

heading.anchorLabel

Спрямо 2.8.7.

Комити (2)

heading.anchorLabel
  • b37ff0b add msrp to proper key.
  • fe5fed3 add msrp to proper key.

2.8.7 — 2022-12-05

heading.anchorLabel

Спрямо 2.8.6.

Комити (1)

heading.anchorLabel
  • 9b3fbeb add msrp to update.

2.8.6 — 2022-12-02

heading.anchorLabel

Спрямо 2.8.5.

Комити (1)

heading.anchorLabel
  • b051699 set default status.

2.8.5 — 2022-11-27

heading.anchorLabel

Спрямо 2.8.4.

Комити (1)

heading.anchorLabel
  • 2dad3cf fix table issue.

2.8.4 — 2022-11-25

heading.anchorLabel

Спрямо 2.8.3.

Внимание при деплой

heading.anchorLabel
  • Схема: db_schema е променена — setup:upgrade пипа жива база.

Комити (1)

heading.anchorLabel
  • 251fd47 added fultext search for SyncProducts

2.8.3 — 2022-11-19

heading.anchorLabel

Спрямо 2.8.2.

Комити (1)

heading.anchorLabel
  • 8fabe1a fix commands for fetching data.

2.8.2 — 2022-11-18

heading.anchorLabel

Спрямо 2.8.1.

Комити (1)

heading.anchorLabel
  • c6b9ebf setArea

2.8.1 — 2022-11-18

heading.anchorLabel

Спрямо 2.8.0.

Комити (1)

heading.anchorLabel
  • 77f3c35 setArea

2.8.0 — 2022-11-17

heading.anchorLabel

Спрямо 2.7.3.

Внимание при деплой

heading.anchorLabel
  • Схема: db_schema е променена — setup:upgrade пипа жива база.

Комити (1)

heading.anchorLabel
  • c438c9c remove Webapi Model column

2.7.3 — 2022-11-17

heading.anchorLabel

Спрямо 2.7.2.

Внимание при деплой

heading.anchorLabel
  • Схема: db_schema е променена — setup:upgrade пипа жива база.

Комити (1)

heading.anchorLabel
  • fb66122 Add setState.

2.7.2 — 2022-11-16

heading.anchorLabel

Спрямо 2.7.1.

Комити (1)

heading.anchorLabel
  • 8828f54 change logic for listing

2.7.1 — 2022-11-16

heading.anchorLabel

Спрямо 2.7.0.

Комити (1)

heading.anchorLabel
  • d8f53fa change default status to 1.

2.7.0 — 2022-11-16

heading.anchorLabel

Спрямо 2.6.9.

Внимание при деплой

heading.anchorLabel
  • DI: di.xml е променен — при деплоя се чисти generated/.
  • Конструктор: сменена сигнатура на __construct — при деплоя се чисти generated/.
  • Схема: db_schema е променена — setup:upgrade пипа жива база.
  • Зависимости: require в composer.json: magento/module-catalog: >=103.0 → >=104.0; magento/module-catalog-inventory: >=100.3 → >=100.4; добавен php (^8.1).

Комити (5)

heading.anchorLabel
  • 42eb097 add dependency for php8.1
  • 62f90af add event for sent orders.
  • f095884 Disable Products from Import.
  • a07a427 add orders to cron.
  • 3c67379 add ability to sync orders.

2.6.9 — 2022-10-28

heading.anchorLabel

Спрямо 2.6.8.

Комити (1)

heading.anchorLabel
  • b062a84 change sync by sku.

2.6.8 — 2022-10-25

heading.anchorLabel

Спрямо 2.6.7.

Комити (1)

heading.anchorLabel
  • 9da808a clean old code, add logic for full console update.

2.6.7 — 2022-10-11

heading.anchorLabel

Спрямо 2.6.6.

Комити (2)

heading.anchorLabel
  • 2996900 fix empty values attributes.
  • 5ef2804 fix empty values attributes.

2.6.6 — 2022-10-07

heading.anchorLabel

Спрямо 2.6.5.

Комити (1)

heading.anchorLabel
  • d808761 add rounding option to avoid unnecessary updates.

2.6.5 — 2022-10-05

heading.anchorLabel

Спрямо 2.6.4.

Внимание при деплой

heading.anchorLabel
  • Схема: db_schema е променена — setup:upgrade пипа жива база.

Комити (2)

heading.anchorLabel
  • af694bb add state
  • f278c4f updated at changes.

2.6.4 — 2022-10-03

heading.anchorLabel

Спрямо 2.6.3.

Комити (1)

heading.anchorLabel
  • 092ea6b compare diff values as numbers.

2.6.3 — 2022-10-03

heading.anchorLabel

Спрямо 2.6.2.

Внимание при деплой

heading.anchorLabel
  • DI: di.xml е променен — при деплоя се чисти generated/.
  • Конструктор: сменена сигнатура на __construct — при деплоя се чисти generated/.

Комити (3)

heading.anchorLabel
  • 1fc3415 update cron method for fetching data.
  • f3856c9 update cron method for fetching data.
  • 3a4dc61 remove create command.

2.6.2 — 2022-09-27

heading.anchorLabel

Спрямо 2.6.1.

Комити (2)

heading.anchorLabel
  • a86d1f2 update sync service.
  • 08176fe update sync service.

2.6.1 — 2022-09-26

heading.anchorLabel

Спрямо 2.6.0.

Комити (1)

heading.anchorLabel
  • f939df0 optimize checks for missing products.

2.6.0 — 2022-09-26

heading.anchorLabel

Спрямо 2.5.18.

Внимание при деплой

heading.anchorLabel
  • DI: di.xml е променен — при деплоя се чисти generated/.
  • Конструктор: сменена сигнатура на __construct — при деплоя се чисти generated/.
  • Схема: db_schema е променена — setup:upgrade пипа жива база.

Комити (4)

heading.anchorLabel
  • e259317 Add Repositories and Interfaces.
  • de7da92 Refactoring in progress.
  • ae72543 optimize code, add progressbar.
  • 18aa0ff version update

2.5.18 — 2022-08-26

heading.anchorLabel

Спрямо 2.5.17.

Комити (2)

heading.anchorLabel
  • c36c4d0 version update
  • b4bd4a0 update ACLs

2.5.17 — 2022-08-24

heading.anchorLabel

Спрямо 2.5.16.

Комити (1)

heading.anchorLabel
  • 282829f fix sync

2.5.16 — 2022-08-24

heading.anchorLabel

Спрямо 2.5.15.

Комити (1)

heading.anchorLabel
  • ab727d3 fix sync

2.5.15 — 2022-08-16

heading.anchorLabel

Спрямо 2.5.14.

Комити (1)

heading.anchorLabel
  • c7d8b88 pending and imported products

2.5.14 — 2022-08-16

heading.anchorLabel

Спрямо 2.5.13.

Внимание при деплой

heading.anchorLabel
  • Схема: db_schema е променена — setup:upgrade пипа жива база.

Комити (2)

heading.anchorLabel
  • 6857309 update decimal places for products table.
  • 60a56f8 update decimal places for products table.

2.5.13 — 2022-08-16

heading.anchorLabel

Спрямо 2.5.12.

Комити (2)

heading.anchorLabel
  • cd74ad8 search by sku fix issue.
  • 8f17ffa search by sku fix issue.

2.5.12 — 2022-08-16

heading.anchorLabel

Спрямо 2.5.11.

Комити (1)

heading.anchorLabel
  • cb1d13f add imported and disabled products menu

2.5.11 — 2022-08-16

heading.anchorLabel

Спрямо 2.5.10.

Внимание при деплой

heading.anchorLabel
  • Конструктор: сменена сигнатура на __construct — при деплоя се чисти generated/.

Комити (2)

heading.anchorLabel
  • 2a8d36b remove already added products from the list of pending products.
  • 02570ec remove already added products from the list of pending products.

2.5.10 — 2022-08-15

heading.anchorLabel

Спрямо 2.5.9.

Внимание при деплой

heading.anchorLabel
  • Конструктор: сменена сигнатура на __construct — при деплоя се чисти generated/.
  • Static: стилове/JS/шаблони във view/*/web (или requirejs-config.js) са променени — при деплоя setup:static-content:deploy.

Комити (2)

heading.anchorLabel
  • 2f19f7f update module
  • 05b6362 update version 1.8.0

2.5.9 — 2021-12-10

heading.anchorLabel

Спрямо 2.5.8.

Комити (1)

heading.anchorLabel
  • ba52ca0 add Qty Increments

2.5.8 — 2021-12-08

heading.anchorLabel

Спрямо 2.5.7.

Комити (1)

heading.anchorLabel
  • d5d5816 add Qty Increments

2.5.7 — 2021-12-08

heading.anchorLabel

Спрямо 2.5.6.

Комити (2)

heading.anchorLabel
  • bfba722 add Qty Increments
  • 279d395 add Qty Increments

2.5.6 — 2021-11-27

heading.anchorLabel

—

2.5.4 — 2021-11-23

heading.anchorLabel

—

2.5.3 — 2021-09-16

heading.anchorLabel

—

2.5.2 — 2021-09-16

heading.anchorLabel

—

2.5.1 — 2021-08-20

heading.anchorLabel

—

2.5.0 — 2021-08-20

heading.anchorLabel

—

2.4.1 — 2021-08-19

heading.anchorLabel

—

2.4.0 — 2021-08-19

heading.anchorLabel

—

2.3.13 — 2021-08-09

heading.anchorLabel

—

2.3.12 — 2021-08-02

heading.anchorLabel

—

2.3.11 — 2021-07-26

heading.anchorLabel

—

2.3.10 — 2021-07-26

heading.anchorLabel

—

2.3.9 — 2021-07-26

heading.anchorLabel

—

2.3.8 — 2021-07-25

heading.anchorLabel

—

2.3.7 — 2021-07-24

heading.anchorLabel

—

2.3.6 — 2021-07-20

heading.anchorLabel

—

2.3.5 — 2021-07-19

heading.anchorLabel

—

2.3.4 — 2021-07-19

heading.anchorLabel

—

2.3.3 — 2021-07-19

heading.anchorLabel

—

2.3.2 — 2021-07-19

heading.anchorLabel

—

2.3.1 — 2021-07-13

heading.anchorLabel

—

Categories and Attribute Sets Mapping Added — 2021-07-13

heading.anchorLabel

—

2.2.2 — 2021-07-06

heading.anchorLabel

—

2.2.1 — 2021-07-06

heading.anchorLabel

—

2.2.0 — 2021-07-05

heading.anchorLabel

—

2.1.1 — 2021-06-15

heading.anchorLabel

—

2.1.0 — 2021-06-14

heading.anchorLabel

—

2.0.7 — 2021-05-13

heading.anchorLabel

—

2.0.6 — 2021-04-02

heading.anchorLabel

—

2.0.5 — 2021-04-02

heading.anchorLabel

—

2.0.4 — 2020-12-09

heading.anchorLabel

—

2.0.3 — 2020-12-09

heading.anchorLabel

—

2.0.2 — 2020-11-30

heading.anchorLabel

—

2.0.1 — 2020-09-24

heading.anchorLabel

—

2.0.0 — 2020-09-24

heading.anchorLabel

—