Отгрузка доставки в Битрикс при разрешении и обмен с 1С

Ситуация такова, что во время обмена 1С->Битрикс не выгружаются документы, если включена опция «Разрешать отгрузку при разрешении доставки» на вкладке автоматизации процессов bitrix/admin/settings.php?lang=ru&mid=sale&mid_menu=1 .

Но, мне очень нужно это! Потому, что в моей логике №100500 после очередного обновления логики обмена БУС с 1С произошли изменения, к сожалению, не в лучшую сторону — я устал бороться с обменом и решил его задефолтить и отпустить на волю битриксовцев.

Не все так печально. На самом деле, используя для обработки заказов RetailCRM, основную часть работы манагеры делают в ней — все, от согласования, до отгрузки, но отгрузку фактическую я хотел оставить на сотрудниках склада, т.е. чтобы именно склад проводил реализацию товара в 1С, а позже менеджеры видели бы, что склад собрал заказ и нужно его двигать дальше. Но отдельными сотрудниками склада мы не обзавелись и, как и раньше, менеджеры у нас делают все. Пускай это будет верным.

Тогда пришла идея, что 1С будет использоваться только для офлайн продаж в магазинах и складского учета, прихода товара, потребности и т.п., а заказы онлайн должны отгружаться сами по статусу из RetailCRM. Так и вышло — теперь, как только заказ попал в статусы, когда он отгружен, т.е. «ожидает отправки», «передан в доставку» и т.п., то он автоматически должен отгрузиться в БУС и после обмена должна провестись накладная в 1С, и фиг уже с ней, что у нее дата мохнатая.

Тогда в событии изменения статуса заказа из RetailCRM появилась строчка

if ($OrderInBitrix["STATUS_ID"] == "WS"||$OrderInBitrix["STATUS_ID"] == "D"||$OrderInBitrix["STATUS_ID"] == "WA"||$OrderInBitrix["STATUS_ID"] == "DD") CSaleOrder::DeliverOrder($order['externalId'], "Y");

Где и разрешается доставка заказа, а опция автоматизации «Разрешать отгрузку при разрешении доставки» отгружает его. Идеально! Но! При обмене с 1С перестали выгружаться оплаты заказов, ссылаясь на «На странице настройки модуля Интернет магазина необходимо отключить автоматизацию процесса — Разрешать отгрузку при разрешении доставки». Вот только как его затрагивает отгрузка товара при выгрузке оплаты… но ладно, не о том. Пришлось опцию автоматизации снять. Но автоматизация же нужна!

Тогда было решено добавить событие на разрешение доставки

AddEventHandler("sale", "OnSaleDeliveryOrder", "SaleDeliveryOrderDeducted");
function SaleDeliveryOrderDeducted($Order_id,$Val) {
    if (CModule::IncludeModule("sale")) {
        CSaleOrder::DeductOrder($Order_id, $Val);
    }
}

Где флагу отгрузке назначается тоже значение, что и разрешению доставки. Тогда, как только срабатывает первое событие, которое разрешает доставку, то тут же срабатывает второе, которое отгружает доставку. Профит! Реализация в 1С проводится, оплата из 1С приходит!

Урра, товарищи!

Теперь важно только одно — чтобы был товар на складе, откуда он будет отгружаться БУСом. Но тут я хочу сделать более внятное оповещение о непроведенных документах БУСом во время обмена, чтобы менеджер уже подпилил руками. Но это уже другая история.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *