Іноді, коли ви оновлюєте Magento, обов'язкові параметри стану можуть змінитися та встановити деякі обов'язкові штати для кількох країн у Магазини > Конфігурація > Загальне. Крім того, цей параметр можуть оновлювати ваші колеги або ви.

 Параметри стану Magento

Керуючи магазином Magento 2, у вас є клієнти, які вже встановили адреси доставки та виставлення рахунків під час здійснення покупки. Адреси, які є у вашому магазині, вже містять країни, але не штати (регіони). Крім того, іноді регіон встановлюється як текстове поле (а не як поле вибору).

Після оновлення Magento обов'язкові штати змінюються, або ви самостійно встановлюєте їх як обов'язкові для низки країн.

Штати будуть обов'язковими, навіть якщо ваш клієнт вже встановив свої адреси з параметрами країни.

Чи є якісь недоліки?

Коли ці клієнти хочуть знову зробити покупку, у них виникають труднощі з оформленням замовлення. Вони бачать повідомлення про те, що їхня адреса недійсна, і повинні перейти до свого облікового запису, щоб оформити замовлення звідти. Ви також можете отримати деякі помилки під час оформлення замовлення, якщо використовуєте деякі власні способи оплати або доставки.

Це не дуже зручно для користувачів, оскільки це вимагає більше часу, ніж у ваших клієнтів. Вони можуть піти, не купивши нічого, що не хотів би жоден власник магазину.

Яке рішення?

Ми рекомендуємо видалити ці адреси, щоб, коли ваші клієнти захочуть щось купити повторно, у них не виникло труднощів. Вони просто знову введуть свої адреси.

Однак, з іншого боку, не дуже ефективно видаляти адреси для кожного окремого клієнта. Тож у нас є для вас рішення.

Виконайте наступний SQL-запит:

SELECT value FROM core_config_data WHERE path LIKE 'general/region/state_required'

Ви отримаєте коди країн, розділені комами, як у цьому прикладі:

AU,BG,BR,CA,CH,CN,CO,EE,ES,HR,IN,IT,LT,LV,MX,PL,RO,US,UY

Потім вам потрібно перетворити їх на коди країн у лапках, розділених комами:

'AU','BG','BR','CA','CH','CN','CO','EE','ES','HR','IN','IT','LT','LV','MX','PL','RO','US','UY'

Після того, як ви отримаєте коди країн у лапках, вам потрібно виконати ще 3 запити.

У першому вам потрібно використовувати коди країн, які ви отримали раніше:

DELETE FROM customer_address_entity WHERE region IS NULL AND country_id IN ('AU','BG','BR','CA','CH','CN','CO','EE','ES','HR','IN','IT','LT','LV','MX','PL','RO','US','UY');
UPDATE customer_entity SET default_billing = null WHERE default_billing IS NOT NULL AND default_billing NOT IN (SELECT entity_id from customer_address_entity);
UPDATE customer_entity SET default_shipping = null WHERE default_shipping IS NOT NULL AND default_shipping NOT IN (SELECT entity_id from customer_address_entity);

Ці SQL-запити видалять недійсні адреси доставки та виставлення рахунків клієнтів, тому у вас не виникне проблем із необхідними штатами.

Перегляньте більше корисних статей з розробки в категорії Розробка Magento 2 !