Magento 2: Проверка с новым способом доставки проблема, когда длина кода превышает 40 символов


Хочу обсудить проблему, с которой я столкнулся, и предложения по ней.

В столбце quote_shipping_rate таблицы code допустимая длина составляет 255, но в столбце quote_address таблицы shipping_method длина составляет только 40.

Таким образом, при настройке перевозчика и метода в способе доставки он сочетает в себе и то, и другое, и сохранение в таблице quote_shipping_rate.

Итак, здесь, если общая длина кода превышает 40 символов, то теряются символы из индекса 41.

С помощью этой конфигурации я могу достичь страница оплаты заказа. Но после этого я получаю "An error occurred on the server. Please try to place the order again"

Предварительные условия

  1. Элемент списка
  2. Версия Magento: 2.1.6 (издание сообщества)
  3. PHP: 7.0.24
  4. MySQL: 5.7.19

Шаги для воспроизведения

  1. Добавить новый способ доставки Ссылка для создания нового способа доставки
  2. Попробуйте оформить заказ, выбрав этот способ доставки
  3. На этапе проверки оплаты ошибка будет срабатывает

Ожидаемый результат

  1. Он должен успешно разместить заказ

Предлагаемое решение

  • Увеличьте длину столбца quote_address таблицы shipping_method с 40 до 255 (она должна быть такой же, как длина столбца quote_shipping_rate таблицы code 255)
  • Ошибка не поддается исправлению, поэтому я предлагаю это обновление.

Оригинальная ошибка на github.

Author: Siarhey Uchukhlebau, 2017-12-07

1 answers

Существует два способа предотвратить такого рода ошибки:

  1. Увеличить размер поля (quote_address столбец таблицы shipping_method размер)
  2. Уменьшить carrier_method длину кода

В моем пользовательском модуле, где методы доставки могут создаваться динамически, я просто ограничиваю его длину 19 символами: 19 символов для кода перевозчика + 1 символ для "_" + 19 символов для кода метода, поэтому он всегда имеет длину

Я думаю, что 19 символов для кодов достаточно для набора твои нужды.

PS: Я надеюсь, что команда Magento исправит эту ошибку и сделает все поля длиной 255 символов в одном из следующих обновлений.

Примечание: только что проверил это в версии 2.2.1 (Предприятие и сообщество) и обнаружил, что столбец quote_address.shipping_method имеет тип varchar(120)

 1
Author: Siarhey Uchukhlebau, 2017-12-07 12:29:27