Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?
- use Bitrix\Main;
- use Bitrix\Main\Entity;
- use Bitrix\Main\Mail\Event;
- use Bitrix\Main\Diag\Debug;
- $eventManager = Main\EventManager::getInstance();
- $eventManager->addEventHandler("sale", "OnSaleStatusOrderChange", "changeDelivery");
- function changeDelivery(Bitrix\Main\Event $event)
- {
- $parameters = $event->getParameters();
- $order = $parameters['ENTITY'];
- if (! $order instanceof \Bitrix\Sale\Order) {
- return new \Bitrix\Main\EventResult(
- \Bitrix\Main\EventResult::ERROR,
- new \Bitrix\Sale\ResultError('Неверный объект заказа', 'SALE_EVENT_WRONG_ORDER'),
- 'sale'
- );
- }
- $xmlFilepath = 'upload/mailXML/logsisDelivery.xml';
- $absFilePath = $_SERVER["DOCUMENT_ROOT"].'/'.$xmlFilepath;
- $PRODUCT_IBLOCK_ID = 26;
- $SITE_ID = 's1';
- $mailEventName = 'SALE_ORDER_XML_LOGSIS';
- $xmlFields = [];
- $xmlFields['ORDER_ID'] = '00ОУ-'.$order->getId();
- $xmlFields['ORDER_ID_CROP'] = $order->getId();
- $xmlFields['STATUS_ID'] = $order->getField('STATUS_ID');
- $xmlFields['DATE_INSERT'] = $order->getField('DATE_INSERT');
- $collection = $order->getPropertyCollection();
- $locationID = $collection->getDeliveryLocation()->getField('VALUE');
- $arLocation = CSaleLocation::GetByID($locationID);
- $arLocation['ADDRESS'] = $collection->getAddress()->getField('VALUE');
- $xmlFields['LOCATION'] = $arLocation['COUNTRY_NAME'].','.$arLocation['CITY_NAME'].','.$arLocation['ADDRESS'];
- $ftp_server = FTP_SERVER;
- $ftp_user = FTP_USER;
- $ftp_pass = FTP_PASS;
- $ftp_file_name = FTP_FILE_PATH;
- $dbBasketItems = CSaleBasket::GetList(array(), array("ORDER_ID" => $order->getId()), false, false, array());
- while ($arItems = $dbBasketItems->Fetch()) {
- $xmlFields['ITEMS'][] = $arItems;
- }
- if ($xmlFields['STATUS_ID'] && $xmlFields['STATUS_ID'] == 'dd') {
- $dom = new DOMDocument('1.0', 'utf-8');
- $dom->preserveWhiteSpace = false;
- $dom->formatOutput = true;
- $root = $dom->createElement("ЗаказНаОтгрузку");
- $dom->appendChild($root);
- $man = $dom->createElement("Справочники");
- $doc = $dom->createElement("Документы");
- foreach ($xmlFields['ITEMS'] as $key => $arItem) {
- $db_props_art = CIBlockElement::GetProperty(
- $PRODUCT_IBLOCK_ID,
- $arItem['PRODUCT_ID'],
- ["sort" => "asc"],
- ["CODE" => 'CML2_ARTICLE']
- );
- $db_props_code = CIBlockElement::GetProperty(
- $PRODUCT_IBLOCK_ID,
- $arItem['PRODUCT_ID'],
- ["sort" => "asc"],
- ["CODE" => 'SHTRIKH_KOD']
- );
- $ar_res = CCatalogProduct::GetByID($arItem['PRODUCT_ID']);
- $itemArt = '';
- $itemCode = '';
- if ($ar_props = $db_props_code->Fetch()) {
- $itemCode = $ar_props["VALUE"];
- }
- if ($ar_props = $db_props_art->Fetch()) {
- $itemArt = $ar_props["VALUE"];
- }
- $xmlFields['ITEMS'][$key]['ARTNUMBER'] = $itemArt;
- $xmlFields['ITEMS'][$key]['CCODE'] = $itemCode;
- $xmlFields['ITEMS'][$key]['CAT_WEIGHT'] = $ar_res['WEIGHT'];
- $manNom = $dom->createElement("Номенклатура");
- $manNomGroup = $dom->createElement("ПризнакГруппы", '0');
- $manNomID = $dom->createElement("КодТовара", $itemArt);
- $manNomName = $dom->createElement("Наименование", $arItem['NAME']);
- $manNomNameStr = $dom->createElement("КраткоеНаименование", $arItem['NAME']);
- $manNomHolder = $dom->createElement("Поклажедатель", '000000280');
- $manNomArt = $dom->createElement("Артикул", $itemArt);
- $manNomVal = $dom->createElement("ЕдиницаИзмерения");
- $manNomValCode = $dom->createElement("Код", '796');
- $manNomValBase = $dom->createElement("Базовая", '1');
- $manNomValCof = $dom->createElement("КоэффициентПересчета", '1');
- $manNomValStore = $dom->createElement("ЕдиницаХранения", 'шт.');
- $manNomValW = $dom->createElement("Вес", $xmlFields['ITEMS'][$key]['CAT_WEIGHT']);
- $manNomValVol = $dom->createElement("Объем", '0');
- $manNomValCodeProp = $dom->createElement("ШтрихКод", $itemCode);
- unset($itemArt);
- unset($itemCode);
- /*ЕдиницаИзмерения*/
- $manNomVal->appendChild($manNomValCode);
- $manNomVal->appendChild($manNomValBase);
- $manNomVal->appendChild($manNomValCof);
- $manNomVal->appendChild($manNomValStore);
- $manNomVal->appendChild($manNomValW);
- $manNomVal->appendChild($manNomValVol);
- $manNomVal->appendChild($manNomValCodeProp);
- /*ЕдиницаИзмерения.END*/
- /*Номенклатура*/
- $manNom->appendChild($manNomGroup);
- $manNom->appendChild($manNomID);
- $manNom->appendChild($manNomName);
- $manNom->appendChild($manNomNameStr);
- $manNom->appendChild($manNomHolder);
- $manNom->appendChild($manNomArt);
- $manNom->appendChild($manNomVal);
- /*Номенклатура.END*/
- $man->appendChild($manNom);
- }
- $manAgent = $dom->createElement("Контрагенты");
- $manAgentGroup = $dom->createElement("ПризнакГруппы", '0');
- $manAgentCode = $dom->createElement("КодКонтрагента", '*******');
- $manAgentName = $dom->createElement("Наименование", 'ООО "ЛОГСИС ГРУПП"');
- $manAgentNameShort = $dom->createElement("ПолноеНаименование", 'ООО "ЛОГСИС ГРУПП"');
- $manAgentINN = $dom->createElement("ИНН", '********');
- $manAgentOKPO = $dom->createElement("ОКПО", '*******');
- $manAgentBill = $dom->createElement("НомерСчета", '**********');
- $manAgentBIK = $dom->createElement("БИК", '********');
- /*Контрагенты*/
- $manAgent->appendChild($manAgentGroup);
- $manAgent->appendChild($manAgentCode);
- $manAgent->appendChild($manAgentName);
- $manAgent->appendChild($manAgentNameShort);
- $manAgent->appendChild($manAgentINN);
- $manAgent->appendChild($manAgentOKPO);
- $manAgent->appendChild($manAgentBill);
- $manAgent->appendChild($manAgentBIK);
- $man->appendChild($manAgent);
- /*Контрагенты.END*/
- $docPlan = $dom->createElement("ПланированиеОтгрузки");
- $docPlanOrgCode = $dom->createElement("КодОрганизации", '000000003');
- $docPlanOrderID = $dom->createElement("НомерЗаявки", $xmlFields['ORDER_ID']);
- $docPlanOrderDate = $dom->createElement("ДатаЗаявки", $xmlFields['DATE_INSERT']);
- $docPlanOrderDocView = $dom->createElement("ВидДокумента", '6');
- $docPlanOrderDDate = $dom->createElement("ДатаОтгрузкиПлан", $xmlFields['DATE_INSERT']);
- $docPlanOrderKis = $dom->createElement("КодПоклажедателя_КИС", '000000280');
- $docPlanOrderKisFwd = $dom->createElement("КодПолучателя_КИС", 'С00000051');
- $docPlanOrderManager= $dom->createElement("Менеджер", 'Гржибовская Е.Ю.');
- $docPlanOrderAddress= $dom->createElement("АдресДоставки", $xmlFields['LOCATION']);
- /*ПланированиеОтгрузки*/
- $docPlan->appendChild($docPlanOrgCode);
- $docPlan->appendChild($docPlanOrderID);
- $docPlan->appendChild($docPlanOrderDate);
- $docPlan->appendChild($docPlanOrderDocView);
- $docPlan->appendChild($docPlanOrderDDate);
- $docPlan->appendChild($docPlanOrderKis);
- $docPlan->appendChild($docPlanOrderKisFwd);
- $docPlan->appendChild($docPlanOrderManager);
- $docPlan->appendChild($docPlanOrderAddress);
- /*ПланированиеОтгрузки.END*/
- foreach ($xmlFields['ITEMS'] as $arItem) {
- $docPlanItem = $dom->createElement("Строка");
- $docPlanItemPropID = $dom->createElement("КодТовара", $arItem['ARTNUMBER']);
- $docPlanItemPropCNT = $dom->createElement("Количество", $arItem['QUANTITY']);
- $docPlanItemPropPriceTotal = $arItem['PRICE']; //Show single val
- /*$docPlanItemPropPriceTotal = intval($arItem['PRICE'])*intval($arItem['QUANTITY']);*/ //Show total val
- $docPlanItemPropPrice = $dom->createElement("Цена", $docPlanItemPropPriceTotal);
- /*Строка*/
- $docPlanItem->appendChild($docPlanItemPropID);
- $docPlanItem->appendChild($docPlanItemPropCNT);
- $docPlanItem->appendChild($docPlanItemPropPrice);
- $docPlan->appendChild($docPlanItem);
- /*Строка.END*/
- }
- /*Build final XML DOM*/
- $doc->appendChild($docPlan);
- $root->appendChild($man);
- $root->appendChild($doc);
- $resultXML = $dom->saveXML();
- if (file_exists($_SERVER["DOCUMENT_ROOT"].'/'.$xmlFilepath)) {
- unlink($_SERVER["DOCUMENT_ROOT"].'/'.$xmlFilepath);
- }
- /*Save result XML to file*/
- Debug::writeToFile($resultXML, "", $xmlFilepath);
- /*Upload file via FTP*/
- $conn_id = ftp_connect($ftp_server);
- $login_result = ftp_login($conn_id, $ftp_user, $ftp_pass);
- ftp_pasv($conn_id, true); //passive mode
- /*FTP_debug*/
- /*
- if (file_exists($_SERVER["DOCUMENT_ROOT"].'/upload/mailXML/logsis_log.txt')) {
- unlink($_SERVER["DOCUMENT_ROOT"].'/upload/mailXML/logsis_log.txt');
- }
- if (! $conn_id) {
- Debug::writeToFile('Ошибка соединения', "", 'upload/mailXML/logsis_log.txt');
- }
- if (! $login_result) {
- Debug::writeToFile('Ошибка авторизации', "", 'upload/mailXML/logsis_log.txt');
- }
- */
- /*FTP_debug.END*/
- if (ftp_put($conn_id, $ftp_file_name, $absFilePath, FTP_ASCII)) {
- Debug::writeToFile(ConvertTimeStamp().' - успешно загружен на сервер '. FTP_SERVER, "", 'upload/mailXML/logsis_log.txt');
- } else {
- Debug::writeToFile(ConvertTimeStamp().'Ошбика загрузки', "", 'upload/mailXML/logsis_log.txt');
- }
- ftp_close($conn_id);
- $arEventFields = [
- "ORDER_ID_PROP" => $xmlFields['ORDER_ID'],
- "ORDER_ID" => $xmlFields['ORDER_ID_CROP']
- ];
- /*Send file via email*/
- CEvent::Send($mailEventName, $SITE_ID,
- $arEventFields,
- 'Y',
- '',
- array($_SERVER["DOCUMENT_ROOT"].'/'.$xmlFilepath)
- );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment