Skip to content

Новости

This content is not available in your language yet.

2.3.2 — 2026-09-25

heading.anchorLabel

Спрямо 2.3.1.

Комити (1)

heading.anchorLabel
  • 8ac840b fix(admin-order): скриптът на order create минава през CSP nonce

Бележки

heading.anchorLabel
  • Поправка: полето за магазин в Create New Order и Reorder не работеше — страницата е CSP enforced (PCI) и голият inline скрипт в store-pickup.phtml се блокираше (на Edit, където CSP е само report-only, работеше). Сега е през $secureRenderer (nonce).

При деплой

heading.anchorLabel
  • setup:static-content:deploy не е нужен (само .phtml); cache:flush.
  • Заедно с customer-address 2.6.0 и carrier 2.11.1 — същият CSP дефект в техните темплейти.

2.3.1 — 2026-09-25

heading.anchorLabel

Спрямо 2.3.0.

Комити (2)

heading.anchorLabel
  • 1d8df76 feat(carrier): заглавието на метода е името на избрания обект
  • 3ea96c8 fix(config): подразбиращият се scope е текущият магазин, не default

Бележки

heading.anchorLabel
  • Config чете scope-а на текущия магазин. isActive(), isPrimaryMode(), getCheckoutMode(), isSetFlag() и getValue() досега четяха default scope. Включване или изключване на carriers/storepickup/active (и checkout_mode) на ниво website не стигаше до избора „Вземи от наш магазин“ и до ShippingTypePlugin. Изборът се показваше на сайт, където методът е изключен, или липсваше там, където е включен само на website ниво. В админа (без текущ магазин) се четат default стойностите, както досега.
  • Заглавието на метода е името на избрания обект („Магазин София“). Без количка или избран обект остава общото „Store Pickup“.

При деплой

heading.anchorLabel
  • Няма DI, схема или static промени; стига cache:flush.
  • Сайт, който е включил метода само на default и е разчитал, че website изключването „не хваща“, вече ще види изключването. Прегледайте carriers/storepickup/active по website.

2.3.0 — 2026-09-24

heading.anchorLabel

Спрямо 2.2.0.

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

heading.anchorLabel
  • DI: di.xml е променен — при деплоя се чисти generated/.
  • Static: стилове/JS/шаблони във view/*/web (или requirejs-config.js) са променени — при деплоя setup:static-content:deploy.
  • Зависимости: require в composer.json: webcode/module-carrier: ^2.0 → ^2.11.

Комити (4)

heading.anchorLabel
  • 024b900 Release 2.3.0
  • 51b66b8 chore(deps): webcode/module-carrier ^2.11
  • 24dbe9a feat(admin-order): магазинът в order create е Magento UI Select
  • b4bb817 fix(admin-order): магазинът при Edit/Reorder + поле за магазин в order create

Бележки

heading.anchorLabel
  • Edit/Reorder в админа пазят избрания магазин — store_pickup_id се пренася в новата поръчка през sales_copy_order_shipping_address в etc/fieldset.xml (дотогава идваше празен).
  • Полето за магазин в Create New Order / Edit / Reorder вече не е голо текстово поле в двата адреса: в адреса за фактуриране го няма, а в адреса за доставка е Magento UI Select с търсене по избрания град, видим само при „Доставка до“ = магазин. Изборът попълва улицата; смяна на града или типа доставка изчиства магазина.

При деплой

heading.anchorLabel
  • Изисква webcode/module-carrier 2.11.0 (общият UI Select) и през него webcode/module-customer-address 2.5.0.
  • rm -rf generated/* и setup:static-content:deploy за adminhtml.

2.1.4 — 2026-09-16

heading.anchorLabel

Спрямо 2.1.3.

Release-ът е попълнен впоследствие (16.09.2026). Тагът беше без release, а генерираният changelog се сглобява именно от release-ите, тъй че тази версия липсваше в него. Текстът е сглобен от git историята, не от бележки по време на издаването.

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

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

Комити (5)

heading.anchorLabel
  • f486598 fix(store-pickup): без адрес за фактура, освен ако клиентът не поиска фактура
  • 623ede6 ci: махни изводимите ключове от .gitlab-ci.yml
  • e2ae9e8 CI: DEPENDENTS — пълен обратен списък на консюмърите
  • 86c3de0 ci: премини на MATRIX_PRESET: carrier-stack вместо копи-пейстнат MATRIX
  • 227e787 i18n(store-pickup): align “Enable for Checkout” with the shared msgid

1.1.0 — 2026-09-16

heading.anchorLabel

Спрямо 1.0.0.

Release-ът е попълнен впоследствие (16.09.2026). Тагът беше без release, а генерираният changelog се сглобява именно от release-ите, тъй че тази версия липсваше в него. Текстът е сглобен от git историята, не от бележки по време на издаването.

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

heading.anchorLabel
  • Схема/патч: db_schema.xml или Setup/ е променен — изпълнява се срещу живата база при setup:upgrade.
  • DI: di.xml е променен — при деплоя се чисти generated/.
  • Static: JS/стилове във view/*/web (или requirejs-config.js) са променени — при деплоя setup:static-content:deploy.
  • Конструктор: сменена сигнатура на __construct — при деплоя се чисти generated/.
  • Зависимости: require в composer.json: добавен magento/module-quote (*), добавен magento/module-catalog-inventory (*), добавен magento/module-checkout (*), добавен magento/module-customer (*), добавен magento/module-sales (*), добавен magento/module-directory (*), добавен magento/module-config (*), добавен magento/module-eav (*), добавен magento/module-payment (*), добавен magento/module-shipping (*), добавен magento/module-sales-rule (*).

Комити (11)

heading.anchorLabel
  • 01822eb Версия
  • 2a7a2fe refactoring
  • 1430bac change namespaces (revert them)
  • 356b302 move plugins to be global, i need to use them in webapi
  • 4d62b1f hyva compatibility
  • afd9f78 оптимизиране на GetAvailableShippingTypeOptions
  • c786ad7 refactoring
  • ec7661b съвместимост с Firecheckout
  • 338bcb0 оптимизация на плъгините за адреси
  • 0974846 customer address main features.
  • 9cae645 sync qty, float

1.0.0 — 2026-09-16

heading.anchorLabel

Спрямо 0.9.1.

Тагът сочи СЪЩИЯ комит като 0.9.1 (2754a04) — няма промяна в кода, само вдигнат номер на версията.

Release-ът е попълнен впоследствие (16.09.2026). Тагът беше без release, а генерираният changelog се сглобява именно от release-ите, тъй че тази версия липсваше в него. Текстът е сглобен от git историята, не от бележки по време на издаването.

Комити (0)

heading.anchorLabel

0.9.1 — 2026-09-16

heading.anchorLabel

Първи публикуван таг.

Release-ът е попълнен впоследствие (16.09.2026). Тагът беше без release, а генерираният changelog се сглобява именно от release-ите, тъй че тази версия липсваше в него. Текстът е сглобен от git историята, не от бележки по време на издаването.

Комити (4)

heading.anchorLabel
  • 2754a04 Caching
  • 2cdaccd resolve issue with save data to quote/order.
  • 1b195c0 phpstan, phpcs, phpmd cleanup.
  • 2499448 Initial Commit

2.2.0 — 2026-09-16

heading.anchorLabel

Спрямо 2.1.4.

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

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

Комити (4)

heading.anchorLabel
  • 0056fd8 Release 2.2.0
  • 798f075 fix(store-pickup): Luma адресната книга — изборът на магазин вече работи
  • fe3633b fix(store-pickup): import-ите при раждане не трият улицата
  • f803022 fix(store-pickup): изборът на магазин в адресната книга се записва

Бележки

heading.anchorLabel

Този release прави избора на магазин в адресната книга работещ. Дотогава клиент, който запазва адрес „Вземи от наш магазин“ в „Моят акаунт → Адреси за доставка“, не можеше да избере магазин: полето беше празно и без източник, а запазеният магазин се показваше без име.

  • Luma: полето се пълни по AJAX от webcode_storepickup/ajax/store, филтрирано по избрания град; изборът попълва и скрива уличния ред със същия етикет, който записва сървърът; смяна на тип, град или държава изчиства магазина и генерирания уличен ред. Запазеният магазин се рендира с името си.
  • Записът вече стига до базата: store_pickup_id е невидим атрибут, а ядреният Metadata\Form изхвърля невидимите от заявката — затова изборът мълчаливо не се записваше.
  • Куриерски адрес вече не се надписва като магазин: етикетът се слага само при тип на доставка „магазин“, а забравен store_pickup_id върху куриерски адрес не се предлага и не се изпраща обратно при запис.
  • FireCheckout: презареждане с избран офис вече не трие уличния ред.

Потребителската документация е обновена (секция „Избор на магазин в адресната книга“).

При деплой

heading.anchorLabel

Трите автоматични предупреждения по-горе са реални:

  • etc/frontend/di.xml носи нов плъгин, а конструктор е сменен → изчисти generated/ (само cache:flush не преизгражда interception конфигурацията).
  • Променени са view/frontend/web/js/... файлове → setup:static-content:deploy. При CSP/SRI инсталация изтрий pub/static/**/sri-hashes.json и вдигни deployed_version.txt, иначе браузърът блокира новия JS.
  • composer.json вече изисква webcode/module-base (*) — увери се, че е инсталиран, преди да пуснеш setup:upgrade.

Зависимости за нативния Luma checkout

heading.anchorLabel

Вземането от магазин в нативния Luma checkout (адресната книга по-горе не е засегната) минава през пътя „адрес → количка“ на другите модули. За да стигне магазинът до поръчката, трябват:

  1. webcode/module-customer-address с комит 4dbd9ac („заредените от side таблицата стойности не презаписват подадените extension attributes“) — задължително. По-старите версии оставят поръчката без град и тип доставка, а при магазин — и без обект.
  2. Където е инсталиран webcode/module-carrier-hyva — и неговата поправка на ShippingAddressManagementPlugin::beforeAssign (1.1.2) — изисква webcode/module-carrier-hyva >= 1.1.2. Инсталациите без CarrierHyva имат нужда само от т. 1.

Измерено на 15–16.09.2026: само с т. 1 и непоправен CarrierHyva Luma пада с „The shipping method is missing“ (страничният ред е празен); само с поправения CarrierHyva и стар CustomerAddress — с „no store was selected“. С двете заедно поръчките записват коректно — проверено с реална поръчка в нативния Luma книга и поръчката пази shipping_type = store, града и избрания обект.

2.1.3 — 2026-08-13

heading.anchorLabel

Поправки

heading.anchorLabel

Избраният магазин пак стига до базата (MR !15, 49bd66d)

Чекаутът подава store_pickup_id като custom атрибут на quote адреса, а persist слоят чете extension атрибути. Превод между двете в модула нямаше — идваше единствено от моста Webcode_CheckoutStorePickup, тоест само когато той е инсталиран. Без него ефектът е двоен и тих:

  • webcode_quote_address.store_pickup_id остава NULL — адресът пази града и типа доставка store, но не и самия обект (двете колони ги пише Webcode_Carrier от своя sync, затова провалът изглежда частичен);
  • ValidateStorePickupShipment чете getStorePickupId(), вижда 0 и отказва поръчката с „изберете магазин“, макар клиентът да е избрал.

Фиксът добавя Plugin\AddressAttributes\QuoteCustomAttributesSyncPlugin (тънък наследник на генеричния слой в Webcode_CustomerAddress), регистриран глобално в etc/di.xml (sortOrder 40 — между load 9 и persist 90). Глобално, не в etc/frontend: REST чекаутите (Luma AJAX, FireCheckout, Webcode Checkout) работят в област webapi_rest, където frontend регистрацията не се зарежда. При инсталиран мост двата sync-а са идемпотентни.

Огледално на Webcode\Carrier\...\AddressCustomAttributesSyncPlugin и на webapi_rest фикса за фактурния адрес в Webcode_CustomerAddress.

Проверка

heading.anchorLabel
  • StorePickupPlaceOrderTest (guest + customer) беше червен на master от 31.07; сега е зелен на четирите крака (php8.3/8.4/8.5 × 2.4.8-p5/2.4.9) — 10 теста, 77 assertions.
  • Без регресия по веригата: Webcode_Carrier 11/11, Webcode_CustomerAddress 51/51.
  • Реални поръчки: #2000000082 (Luma) и #8000000036 (FireCheckout) — и двете с коректен store_pickup_id в webcode_order_address и без изтекли куриерски колони върху фактурния адрес.

Не е минаван ръчен click-through през браузъра (Luma/Hyva UI).

Съвместимост

heading.anchorLabel

Без BC-break и без промени по схемата. Деплойът иска cache:flush и чистене на generated/ (нов плъгин — само cache:flush не стига).

Hyva спътникът Webcode_StorePickupHyva не изисква промяна — ползва същия backend слой.

2.1.2 — 2026-07-31

heading.anchorLabel

Фикс: AdminSync плъгините за адресните атрибути вече са вързани за ресурсните модели (Magento\Sales\Model\ResourceModel\Order\Address, Magento\Quote\Model\ResourceModel\Quote\Address) вместо за entity моделите.

Преди това всяко записване на поръчка или quote в админа (отмяна, hold, фактура, admin order create) падаше с TypeError още в интерсептора, защото базовите класове на Webcode_CustomerAddress тип-хинтват ресурсния модел. По пътя през orderAddressRepository (редакция на адрес на поръчка) нямаше фатал, но синхронизацията никога не се изпълняваше и промяната на обекта за вземане от админ формата се губеше тихо.

Добавени регресионни integration тестове в adminhtml area (Order/QuoteAdminSyncPluginTest) и модулен CLAUDE.md с капана.

2.1.1 — 2026-07-29

heading.anchorLabel

Bugfix + maintenance release. Includes: model inits its own resource (not the removed Carrier one) and PHPUnit 12 test migration + CI wiring. Adds a version field to composer.json. Code already on master; this cuts the release.

2.1.0 — 2026-07-25

heading.anchorLabel

Release 2.1.0

2.0.0 — 2026-07-22

heading.anchorLabel

Major release — aligned with the Webcode_Carrier 2.0 stack.

  • Requires webcode/module-carrier ^2.0.
  • Proprietary/EULA copyright headers standardized across the module.