Новости
This content is not available in your language yet.
2.3.2 — 2026-09-25
heading.anchorLabel2.3.2
heading.anchorLabelСпрямо 2.3.1.
Комити (1)
heading.anchorLabel8ac840bfix(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.anchorLabelsetup:static-content:deployне е нужен (само.phtml);cache:flush.- Заедно с customer-address 2.6.0 и carrier 2.11.1 — същият CSP дефект в техните темплейти.
2.3.1 — 2026-09-25
heading.anchorLabel2.3.1
heading.anchorLabelСпрямо 2.3.0.
Комити (2)
heading.anchorLabel1d8df76feat(carrier): заглавието на метода е името на избрания обект3ea96c8fix(config): подразбиращият се scope е текущият магазин, не default
Бележки
heading.anchorLabelConfigчете 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.anchorLabel2.3.0
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.anchorLabel024b900Release 2.3.051b66b8chore(deps): webcode/module-carrier ^2.1124dbe9afeat(admin-order): магазинът в order create е Magento UI Selectb4bb817fix(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.anchorLabel2.1.4
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.anchorLabelf486598fix(store-pickup): без адрес за фактура, освен ако клиентът не поиска фактура623ede6ci: махни изводимите ключове от .gitlab-ci.ymle2ae9e8CI: DEPENDENTS — пълен обратен списък на консюмърите86c3de0ci: премини на MATRIX_PRESET: carrier-stack вместо копи-пейстнат MATRIX227e787i18n(store-pickup): align “Enable for Checkout” with the shared msgid
1.1.0 — 2026-09-16
heading.anchorLabel1.1.0
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.anchorLabel01822ebВерсия2a7a2ferefactoring1430bacchange namespaces (revert them)356b302move plugins to be global, i need to use them in webapi4d62b1fhyva compatibilityafd9f78оптимизиране на GetAvailableShippingTypeOptionsc786ad7refactoringec7661bсъвместимост с Firecheckout338bcb0оптимизация на плъгините за адреси0974846customer address main features.9cae645sync qty, float
1.0.0 — 2026-09-16
heading.anchorLabel1.0.0
heading.anchorLabelСпрямо 0.9.1.
Тагът сочи СЪЩИЯ комит като 0.9.1 (2754a04) — няма промяна в кода,
само вдигнат номер на версията.
Release-ът е попълнен впоследствие (16.09.2026). Тагът беше без release, а генерираният changelog се сглобява именно от release-ите, тъй че тази версия липсваше в него. Текстът е сглобен от git историята, не от бележки по време на издаването.
Комити (0)
heading.anchorLabel0.9.1 — 2026-09-16
heading.anchorLabel0.9.1
heading.anchorLabelПърви публикуван таг.
Release-ът е попълнен впоследствие (16.09.2026). Тагът беше без release, а генерираният changelog се сглобява именно от release-ите, тъй че тази версия липсваше в него. Текстът е сглобен от git историята, не от бележки по време на издаването.
Комити (4)
heading.anchorLabel2754a04Caching2cdaccdresolve issue with save data to quote/order.1b195c0phpstan, phpcs, phpmd cleanup.2499448Initial Commit
2.2.0 — 2026-09-16
heading.anchorLabel2.2.0
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.anchorLabel0056fd8Release 2.2.0798f075fix(store-pickup): Luma адресната книга — изборът на магазин вече работиfe3633bfix(store-pickup): import-ите при раждане не трият улицатаf803022fix(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 (адресната книга по-горе не е засегната) минава през пътя „адрес → количка“ на другите модули. За да стигне магазинът до поръчката, трябват:
webcode/module-customer-addressс комит4dbd9ac(„заредените от side таблицата стойности не презаписват подадените extension attributes“) — задължително. По-старите версии оставят поръчката без град и тип доставка, а при магазин — и без обект.- Където е инсталиран
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.anchorLabelStorePickupPlaceOrderTest(guest + customer) беше червен на master от 31.07; сега е зелен на четирите крака (php8.3/8.4/8.5 × 2.4.8-p5/2.4.9) — 10 теста, 77 assertions.- Без регресия по веригата:
Webcode_Carrier11/11,Webcode_CustomerAddress51/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.anchorLabelBugfix + 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.anchorLabelRelease 2.1.0
2.0.0 — 2026-07-22
heading.anchorLabelMajor release — aligned with the Webcode_Carrier 2.0 stack.
⚠ Breaking
heading.anchorLabel- Requires
webcode/module-carrier ^2.0.
Chore
heading.anchorLabel- Proprietary/EULA copyright headers standardized across the module.