После последних обновлений на стороне сервиса Мой Склад номера заказов переданные с сайта через плагин стали сбивать нумерацию заказов в Мой Склад тех заказов что формируются через интерфейс Мой Склад.
Так как Мой Склад стал прибавлять 1 к заказам созданым в системе мой склад, это стало вызывать ошибку что номер заказа такой уже существует.
Ошибка сохранения объекта: нарушено ограничение
уникальности параметра ‘name
Пока есть два решения это добавлять постпрефикс, но тогда появляется следующая ошибка Мой склад начинает добавлять к заказам созданым в интерфейсе сервиса цифры.
Например вы передали с сайта заказ с номером 5
Если был добавлен префикс то номер будет выглядеть так WC5
После вы создаете заказ в системе мой склад через их интерфейс этому заказу присвоится автоматически номер WC6.
Следом с сайта вы пробуете передать заказ и у него номер 6 с префиксом WC6, такой заказ уже не пройдет вызовет ошибку которая описана выше.
Мы добавляем постпрефикс наример M, заказ получается такой WC6M, Этот заказ уже пройдет в систему.
После вы снова создаете заказ в системе мой склад через их интерфейс этому заказу присвоится автоматически номер WC6M-1.
Что тоже не всегда хорошо такие номера придется в ручную исправлять, это может повлечь за собой ошибки.
Есть второй вариант это оставить формирование номеров заказа на стороне Мой Слад, они теперь это могут.
Единственный минус что номера на сайте и в мс не будут совпадать, но информация о номере заказа передается в комментарии к заказу.
На сайте же присвоенный номер пишиться в сообщениях о заказе, а также в мета поле.
Позже добавлю код для вывода номера в отдельном метабоксе с возможностью перехода в сервис .
Пока данный подход реализован в в виде сниппета.
Данный сниппет нужно добавить в functions.php вашей темы.
//отключаем передачу номера заказа, чтобы мс присваивал свой номер add_filter( 'wms_order_action', function( $aMsOrder ){ unset($aMsOrder['name']); return $aMsOrder; } , 1000); //Передаем номер заказа на сайте в комментарии. add_filter('wms_order_comment_action', function( $sComment, $oOrder ){ return "Номер заказа на сайте: " . $oOrder->get_order_number() . PHP_EOL . $sComment; }, 1000, 2); //передача и сохранение информации о номере заказа на сайт add_action( 'wms_customerorder_create', function( $iOrderId, $aMsOrder, $oWCOrder ){ update_post_meta($iOrderId, 'ms_order_number', $aMsOrder['name']); $oWCOrder->add_order_note('Заказу в Мой Склад присвоен номер ' . $aMsOrder['name']); }, 1000, 3 );