Closed Mozgito closed 2 years ago
В кейсе с удалением отгрузки на стороне Битрикса проблему видим. Учтем в следующем релизе. В кейсе со снятием типа доставки на стороне системы, проблема не воспроизводится. А именно: при снятии типа доставки на стороне системы в Битриксе служба доставки в отгрузке меняется на "Без доставки". По второму кейсу просьба уточнить, при каких условиях он воспроизводится.
Кейс один. Это отсутствие отгрузки в заказе на стороне битрикса. Если там изначально нет отгрузки, то любые манипуляции с типом доставки в CRM никак не отразятся в битриксе.
Обнаружил некорректную работу передачи типа доставки при выгрузке истории из CRM в Bitrix.
Здесь https://github.com/retailcrm/bitrix-module/blob/1d2a9dca8215492f542ac177577d41064f224267/intaro.retailcrm/classes/general/history/RetailCrmHistory_v5.php#L1611 модуль берет отгрузки заказа в битриксе и исключает системные отгрузки из цикла (по умолчанию в заказе всегда есть системная скрытая отгрузка https://dev.1c-bitrix.ru/api_d7/bitrix/sale/technique/shipment.php), ходит по циклу отгрузок и меняет все несистемные отгрузки на те данные, что пришли в истории изменений из CRM.
Но есть исключение. Если по какой-то причине в заказе в битриксе отсутствует отгрузка (её не создали или удалили), то модуль ничего не обновит, так как он ходит по циклу из одного элемента, которым является системная отгрузка.
В итоге если в заказе в CRM менять тип доставки, то в заказе в битриксе ничего не изменится в блоке отгрузки. Предложение следующее:
https://github.com/retailcrm/bitrix-module/blob/1d2a9dca8215492f542ac177577d41064f224267/intaro.retailcrm/classes/general/history/RetailCrmHistory_v5.php#L1558 Тут добавить новый параметр
$updated = false;
После того как модуль смог отредактировать сущетсвующую в заказе отгрузку добавить
$updated = true;
А затем:https://github.com/retailcrm/bitrix-module/blob/1d2a9dca8215492f542ac177577d41064f224267/intaro.retailcrm/classes/general/history/RetailCrmHistory_v5.php#L1621 Здесь после цикла
foreach
добавить следующий код:Он как раз будет выполняться в случае если ни одной отгрузки нет в заказе битрикса и корректно будут переданы изменения типа доставки из CRM. И плюс заработает данный код:
В случае если в заказе в CRM будет снят тип доставки, то в заказе в битриксе будет создана стандартная битриксовая отгрузка "Без доставки". Полагаю такая работа модуля и задумывалась.
Информация актуальна и для 5.6.2 и для 5.8.4, так как метод
deliveryUpdate
не изменялся.