
Всё здорово! Много настроек, но вот только нет одной... автоматической отправки заявки по статусу заказа! т.е. обязательно менеджер магазина (или админ) должен нажать кнопочку (точнее 3 кнопки) что бы отправить заявку в DPD!
В поддержке предложили платную доработку, но ковырять код мы привыкли и я допилил это одним событием, прошу к обозрению:
AddEventHandler("sale", "OnOrderAdd", "OnOrderAddHandler"); AddEventHandler("sale", "OnSaleStatusOrder", "LoadDPD"); function OnOrderAddHandler($ID, $arFields) { self::LoadDPD($ID, $arFields['STATUS_ID']); } function LoadDPD($ORDER_ID, $STATUS_ID){ if(!$ORDER_ID) return false; if($STATUS_ID=="P") {// только на статусе "Оплачено" \Bitrix\Main\Loader::includeModule('ipol.dpd'); $_REQUEST['ID'] = $ORDER_ID; $_REQUEST['IPOLH_DPD_ACTION'] = 'CREATE_ORDER'; $_REQUEST['IPOLH_DPD_ORDER']['PICKUP_DATE'] = date("d.m.Y H:i:s",time()+86400); // через сутки if (isset($_REQUEST['ID'])) { $arOrder = \CSaleOrder::GetByID($_REQUEST['ID']); } else { $arOrder = \CSaleOrder::GetList( $arOrder = [], $arFilter = [ \Bitrix\Main\Config\Option::get('ipol.dpd', 'ORDER_ID', 'ID') => $_REQUEST['dID'], ] )->Fetch(); } // кусок из модуля $ORDER_ID = \Ipolh\DPD\Utils::getOrderId($arOrder); $deliveryCode = \Ipolh\DPD\Delivery\DPD::getDeliveryCode($arOrder['DELIVERY_ID']); $profile = \Ipolh\DPD\Delivery\DPD::getDeliveryProfile($deliveryCode); $showButtonAlways = \Bitrix\Main\Config\Option::get('ipol.dpd', 'SHOW_ADMIN_BUTTON', '') == 'ALWAYS'; if ($profile !== false || $showButtonAlways) { $entity = \Ipolh\DPD\DB\Order\Table::findByOrder($ORDER_ID, true); if (!$entity->id) { $errors = $entity->save(); } if (!$entity->isCreated()) { $entity->fillFromOrder($ORDER_ID); } $form = new \Ipolh\DPD\Admin\Order\Edit($entity); $form->processAndShow(); } } elseif($order = CSaleOrder::GetByID($ORDER_ID) && $order['PAY_SYSTEM_ID']==2) {// На проверке менеджером CSaleOrder::StatusOrder($ORDER_ID, "CH"); } } |
p.s. если разработчик читает это сообщение и собирается внедрить это в модуль "по умолчанию" - прошу отписаться в комментариях или написать в чат сайта!