-
-
Save Rhincodon/0b327c8f3c0ec9d4cecc to your computer and use it in GitHub Desktop.
(
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<? | |
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die(); | |
if(!is_array($arParams["GROUP_PERMISSIONS"])) | |
$arParams["GROUP_PERMISSIONS"] = array(1); | |
if(empty($arParams["SITE_LIST"])) | |
$arParams["SITE_LIST"] = ""; | |
$arParams["USE_ZIP"] = $arParams["USE_ZIP"]!="N"; | |
$arParams["EXPORT_PAYED_ORDERS"] = (($arParams["EXPORT_PAYED_ORDERS"]=="Y")?true:false); | |
$arParams["EXPORT_ALLOW_DELIVERY_ORDERS"] = (($arParams["EXPORT_ALLOW_DELIVERY_ORDERS"]=="Y")?true:false); | |
$arParams["REPLACE_CURRENCY"] = htmlspecialcharsEx($arParams["REPLACE_CURRENCY"]); | |
@set_time_limit(0); | |
$bUSER_HAVE_ACCESS = false; | |
if(isset($GLOBALS["USER"]) && is_object($GLOBALS["USER"])) | |
{ | |
$arUserGroupArray = $GLOBALS["USER"]->GetUserGroupArray(); | |
foreach($arParams["GROUP_PERMISSIONS"] as $PERM) | |
{ | |
if(in_array($PERM, $arUserGroupArray)) | |
{ | |
$bUSER_HAVE_ACCESS = true; | |
break; | |
} | |
} | |
} | |
$bDesignMode = $GLOBALS["APPLICATION"]->GetShowIncludeAreas() && is_object($GLOBALS["USER"]) && $GLOBALS["USER"]->IsAdmin(); | |
if(!$bDesignMode) | |
{ | |
if(isset($_SERVER["HTTP_REFERER"])) | |
return; | |
$APPLICATION->RestartBuffer(); | |
header("Pragma: no-cache"); | |
} | |
$bCrmMode = isset($arParams["CRM_MODE"]) && ($arParams["CRM_MODE"] == "Y"); | |
$gzCompressionSupported = (($_GET["mode"] == "query" || $_POST["mode"] == "query") && $bCrmMode | |
&& isset($arParams["GZ_COMPRESSION_SUPPORTED"]) && $arParams["GZ_COMPRESSION_SUPPORTED"] && function_exists("gzcompress")); | |
ob_start(); | |
$curPage = substr($APPLICATION -> GetCurPage(), 0, 22); | |
if($_GET["mode"] == "checkauth" && $USER->IsAuthorized()) | |
{ | |
echo "success\n"; | |
echo session_name()."\n"; | |
echo session_id() ."\n"; | |
COption::SetOptionString("sale", "export_session_name_".$curPage, session_name()); | |
COption::SetOptionString("sale", "export_session_id_".$curPage, session_id()); | |
} | |
elseif(!$USER->IsAuthorized()) | |
{ | |
echo "failure\n",GetMessage("CC_BSC1_ERROR_AUTHORIZE"); | |
} | |
elseif(!$bUSER_HAVE_ACCESS) | |
{ | |
echo "failure\n",GetMessage("CC_BSC1_PERMISSION_DENIED"); | |
} | |
elseif(!(CModule::IncludeModule('sale') && CModule::IncludeModule('catalog'))) | |
{ | |
echo "failure\n",GetMessage("CC_BSC1_ERROR_MODULE"); | |
} | |
else | |
{ | |
if($_GET["mode"] == "query" || $_POST["mode"] == "query") | |
{ | |
$arFilter = Array(); | |
$nTopCount = false; | |
if (!$bCrmMode) | |
{ | |
$arFilter["UPDATED_1C"] = "N"; | |
if($arParams["EXPORT_PAYED_ORDERS"]) | |
$arFilter["PAYED"] = "Y"; | |
if($arParams["EXPORT_ALLOW_DELIVERY_ORDERS"]) | |
$arFilter["ALLOW_DELIVERY"] = "Y"; | |
if(strlen($arParams["EXPORT_FINAL_ORDERS"])>0) | |
{ | |
$bNextExport = false; | |
$arStatusToExport = Array(); | |
$dbStatus = CSaleStatus::GetList(Array("SORT" => "ASC"), Array("LID" => LANGUAGE_ID)); | |
while ($arStatus = $dbStatus->Fetch()) | |
{ | |
if($arStatus["ID"] == $arParams["EXPORT_FINAL_ORDERS"]) | |
$bNextExport = true; | |
if($bNextExport) | |
$arStatusToExport[] = $arStatus["ID"]; | |
} | |
$arFilter["STATUS_ID"] = $arStatusToExport; | |
} | |
if($arParams["SITE_LIST"]) | |
$arFilter["LID"] = $arParams["SITE_LIST"]; | |
if(strlen(COption::GetOptionString("sale", "last_export_time_committed_".$curPage, ""))>0) | |
$arFilter[">=DATE_UPDATE"] = ConvertTimeStamp(COption::GetOptionString("sale", "last_export_time_committed_".$curPage, ""), "FULL"); | |
COption::SetOptionString("sale", "last_export_time_".$curPage, time()); | |
} | |
else | |
{ | |
$arParams["ORDER_ID"] = intval($arParams["ORDER_ID"]); | |
if ($arParams["ORDER_ID"] > 0) | |
$arFilter["ID"] = $arParams["ORDER_ID"]; | |
$arParams["MODIFICATION_LABEL"] = intval($arParams["MODIFICATION_LABEL"]); | |
if ($arParams["MODIFICATION_LABEL"] > 0) | |
{ | |
if (ToUpper($GLOBALS["DB"]->type) == "MSSQL") | |
$arParams["MODIFICATION_LABEL"] += 1; | |
$arParams["MODIFICATION_LABEL"] += ($arParams["ZZZ"] - date("Z")); | |
$arFilter[">DATE_UPDATE"] = ConvertTimeStamp($arParams["MODIFICATION_LABEL"], "FULL"); | |
} | |
$arParams["IMPORT_SIZE"] = intval($arParams["IMPORT_SIZE"]); | |
if ($arParams["IMPORT_SIZE"] > 0) | |
$nTopCount = $arParams["IMPORT_SIZE"]; | |
$arParams["REPLACE_CURRENCY"] = ''; | |
} | |
CTimeZone::Disable(); | |
$arResultStat = CSaleExport::ExportOrders2Xml($arFilter, $nTopCount, $arParams["REPLACE_CURRENCY"], $bCrmMode, $exportCnt); | |
CTimeZone::Enable(); | |
if ($bCrmMode && isset($_POST["CRM_SITE_URL"]) && !empty($_POST["CRM_SITE_URL"])) | |
{ | |
$opt = COption::GetOptionString("sale", "~crm_integration", ""); | |
$opt = unserialize($opt); | |
if (!is_array($opt)) | |
$opt = array(); | |
if (!array_key_exists($_POST["CRM_SITE_URL"], $opt)) | |
$opt[$_POST["CRM_SITE_URL"]] = array(); | |
$opt[$_POST["CRM_SITE_URL"]]["DATE"] = time(); | |
if (intval($arResultStat["ORDERS"]) > 0) | |
{ | |
$opt[$_POST["CRM_SITE_URL"]]["TOTAL_ORDERS"] = $opt[$_POST["CRM_SITE_URL"]]["TOTAL_ORDERS"] + $arResultStat["ORDERS"]; | |
$opt[$_POST["CRM_SITE_URL"]]["TOTAL_CONTACTS"] = $opt[$_POST["CRM_SITE_URL"]]["TOTAL_CONTACTS"] + $arResultStat["CONTACTS"]; | |
$opt[$_POST["CRM_SITE_URL"]]["TOTAL_COMPANIES"] = $opt[$_POST["CRM_SITE_URL"]]["TOTAL_COMPANIES"] + $arResultStat["COMPANIES"]; | |
$opt[$_POST["CRM_SITE_URL"]]["NUM_ORDERS"] = $arResultStat["ORDERS"]; | |
$opt[$_POST["CRM_SITE_URL"]]["NUM_CONTACTS"] = $arResultStat["CONTACTS"]; | |
$opt[$_POST["CRM_SITE_URL"]]["NUM_COMPANIES"] = $arResultStat["COMPANIES"]; | |
} | |
COption::SetOptionString("sale", "~crm_integration", serialize($opt)); | |
} | |
} | |
elseif($_GET["mode"]=="success") | |
{ | |
if($_COOKIE[COption::GetOptionString("sale", "export_session_name_".$curPage, "")] == COption::GetOptionString("sale", "export_session_id_".$curPage, "")) | |
{ | |
COption::SetOptionString("sale", "last_export_time_committed_".$curPage, COption::GetOptionString("sale", "last_export_time_".$curPage, "")); | |
echo "success\n"; | |
} | |
else | |
echo "error\n"; | |
} | |
elseif($_GET["mode"]=="init") | |
{ | |
$DIR_NAME = "/".COption::GetOptionString("main", "upload_dir", "upload")."/1c_exchange/"; | |
DeleteDirFilesEx($DIR_NAME); | |
CheckDirPath($_SERVER["DOCUMENT_ROOT"].$DIR_NAME."/"); | |
if(!is_dir($_SERVER["DOCUMENT_ROOT"].$DIR_NAME)) | |
{ | |
echo "failure\n",GetMessage("CC_BSC1_ERROR_INIT"); | |
} | |
else | |
{ | |
$ht_name = $_SERVER["DOCUMENT_ROOT"].$DIR_NAME."/.htaccess"; | |
if(!file_exists($ht_name)) | |
{ | |
$fp = fopen($ht_name, "w"); | |
if($fp) | |
{ | |
fwrite($fp, "Deny from All"); | |
fclose($fp); | |
@chmod($ht_name, BX_FILE_PERMISSIONS); | |
} | |
} | |
$_SESSION["BX_CML2_EXPORT"]["zip"] = $arParams["USE_ZIP"] && function_exists("zip_open"); | |
echo "zip=".($_SESSION["BX_CML2_EXPORT"]["zip"]? "yes": "no")."\n"; | |
echo "file_limit=0\n"; | |
} | |
} | |
elseif($_GET["mode"] == "file") | |
{ | |
$DIR_NAME = "/".COption::GetOptionString("main", "upload_dir", "upload")."/1c_exchange/"; | |
$ABS_FILE_NAME = false; | |
$WORK_DIR_NAME = false; | |
if(isset($_GET["filename"]) && (strlen($_GET["filename"])>0)) | |
{ | |
//This check for 1c server on linux | |
$filename = preg_replace("#^(/tmp/|upload/1c/webdata)#", "", $_GET["filename"]); | |
//Filter file name crap all alone | |
$filename = preg_replace("/[^a-zA-Z0-9_.\\/\\\\]/", "", $filename); | |
$io = CBXVirtualIo::GetInstance(); | |
$bBadFile = HasScriptExtension($filename) | |
|| IsFileUnsafe($filename) | |
|| !$io->ValidatePathString("/".$filename) | |
; | |
if(!$bBadFile) | |
{ | |
$filename = trim(str_replace("\\", "/", trim($filename)), "/"); | |
$FILE_NAME = rel2abs($_SERVER["DOCUMENT_ROOT"].$DIR_NAME, "/".$filename); | |
if((strlen($FILE_NAME) > 1) && ($FILE_NAME === "/".$filename)) | |
{ | |
$ABS_FILE_NAME = $_SERVER["DOCUMENT_ROOT"].$DIR_NAME.$FILE_NAME; | |
$WORK_DIR_NAME = substr($ABS_FILE_NAME, 0, strrpos($ABS_FILE_NAME, "/")+1); | |
} | |
} | |
} | |
if($ABS_FILE_NAME) | |
{ | |
if(function_exists("file_get_contents")) | |
$DATA = file_get_contents("php://input"); | |
elseif(isset($GLOBALS["HTTP_RAW_POST_DATA"])) | |
$DATA = &$GLOBALS["HTTP_RAW_POST_DATA"]; | |
else | |
$DATA = false; | |
if($DATA !== false) | |
{ | |
CheckDirPath($ABS_FILE_NAME); | |
if($fp = fopen($ABS_FILE_NAME, "ab")) | |
{ | |
$result = fwrite($fp, $DATA); | |
if($result === (function_exists("mb_strlen")? mb_strlen($DATA, 'latin1'): strlen($DATA))) | |
{ | |
if($_SESSION["BX_CML2_EXPORT"]["zip"]) | |
$_SESSION["BX_CML2_EXPORT"]["zip"] = $ABS_FILE_NAME; | |
} | |
else | |
{ | |
echo "failure\n",GetMessage("CC_BSC1_ERROR_FILE_WRITE", array("#FILE_NAME#"=>$FILE_NAME)); | |
} | |
fclose($fp); | |
} | |
else | |
{ | |
echo "failure\n",GetMessage("CC_BSC1_ERROR_FILE_OPEN", array("#FILE_NAME#"=>$FILE_NAME)); | |
} | |
} | |
else | |
{ | |
echo "failure\n",GetMessage("CC_BSC1_ERROR_HTTP_READ"); | |
} | |
if(strlen($_SESSION["BX_CML2_EXPORT"]["zip"])>0) | |
{ | |
$file_name = $_SESSION["BX_CML2_EXPORT"]["zip"]; | |
if(function_exists("zip_open")) | |
{ | |
$dir_name = substr($file_name, 0, strrpos($file_name, "/")+1); | |
if(strlen($dir_name) <= strlen($_SERVER["DOCUMENT_ROOT"])) | |
return false; | |
$hZip = zip_open($file_name); | |
if($hZip) | |
{ | |
while($entry = zip_read($hZip)) | |
{ | |
$entry_name = zip_entry_name($entry); | |
//Check for directory | |
if(zip_entry_filesize($entry) && strpos($entry_name,".xml") !== false) | |
{ | |
$ABS_FILE_NAME = $dir_name.$entry_name; | |
$file_name = $dir_name.$entry_name; | |
CheckDirPath($file_name); | |
$fout = fopen($file_name, "wb"); | |
if($fout) | |
{ | |
while($data = zip_entry_read($entry, 102400)) | |
{ | |
$result = fwrite($fout, $data); | |
if($result !== (function_exists("mb_strlen")? mb_strlen($data, 'latin1'): strlen($data))) | |
return false; | |
} | |
} | |
} | |
zip_entry_close($entry); | |
} | |
zip_close($hZip); | |
} | |
} | |
else | |
echo "error\n".GetMessage("CC_BSC1_UNZIP_ERROR"); | |
} | |
$new_file_name = $ABS_FILE_NAME; | |
if(filesize($new_file_name)>0) | |
{ | |
class OrderLoader | |
{ | |
var $strError = ""; | |
var $SumFormat = "."; | |
var $QuantityFormat = "."; | |
function elementHandler($path, $attr) | |
{ | |
$val = $attr[GetMessage("SALE_EXPORT_FORM_SUMM")]; | |
if(strlen($val) > 0) | |
{ | |
$arFormat = explode(";", $val); | |
if(!empty($arFormat)) | |
{ | |
foreach($arFormat as $val) | |
{ | |
if(strpos($val, GetMessage("SALE_EXPORT_FORM_CRD")) !== false) | |
$this->SumFormat = trim(substr($val, strpos($val, "=")+1)); | |
} | |
} | |
} | |
$val = $attr[GetMessage("SALE_EXPORT_FORM_QUANT")]; | |
if(strlen($val) > 0) | |
{ | |
$arFormat = explode(";", $val); | |
if(!empty($arFormat)) | |
{ | |
foreach($arFormat as $val) | |
{ | |
if(strpos($val, GetMessage("SALE_EXPORT_FORM_CRD")) !== false) | |
$this->QuantityFormat = trim(substr($val, strpos($val, "=")+1)); | |
} | |
} | |
} | |
} | |
function nodeHandler(CDataXML $value) | |
{ | |
$value = $value->GetArray(); | |
$value = $value[GetMessage("CC_BSC1_DOCUMENT")]; | |
if($value["#"][GetMessage("CC_BSC1_OPERATION")][0]["#"] == GetMessage("CC_BSC1_ORDER")) | |
{ | |
$orderId = IntVal($value["#"][GetMessage("CC_BSC1_NUMBER")][0]["#"]); | |
$arOrder = Array(); | |
$arItem = Array(); | |
$arOrder["AMOUNT"] = $value["#"][GetMessage("CC_BSC1_SUMM")][0]["#"]; | |
$arOrder["AMOUNT"] = str_replace($SumFormat, ".", $arOrder["AMOUNT"]); | |
$arOrder["COMMENT"] = $value["#"][GetMessage("CC_BSC1_COMMENT")][0]["#"]; | |
foreach($value["#"][GetMessage("CC_BSC1_REK_VALUES")][0]["#"][GetMessage("CC_BSC1_REK_VALUE")] as $val) | |
$arOrder["TRAITS"][$val["#"][GetMessage("CC_BSC1_NAME")][0]["#"]] = $val["#"][GetMessage("CC_BSC1_VALUE")][0]["#"]; | |
$taxValue = 0; | |
$taxValueTmp = 0; | |
$taxName = ""; | |
if(is_array($value["#"][GetMessage("CC_BSC1_ITEMS")][0]["#"][GetMessage("CC_BSC1_ITEM")])) | |
{ | |
foreach($value["#"][GetMessage("CC_BSC1_ITEMS")][0]["#"][GetMessage("CC_BSC1_ITEM")] as $val) | |
{ | |
$val = $val["#"]; | |
$productID = $val[GetMessage("CC_BSC1_ID")][0]["#"]; | |
$bGood = false; | |
$discountPrice = ""; | |
$priceAll = str_replace($SumFormat, ".", $val[GetMessage("CC_BSC1_SUMM")][0]["#"]); | |
$priceone = str_replace($SumFormat, ".", $val[GetMessage("CC_BSC1_PRICE_PER_UNIT")][0]["#"]); | |
$quantity = str_replace($QuantityFormat, ".", $val[GetMessage("CC_BSC1_QUANTITY")][0]["#"]); | |
$price = $priceAll / $quantity; | |
if($priceone != $price) | |
$discountPrice = $priceone - $price; | |
//DISCOUNTS! | |
$arItem[$productID] = Array( | |
"NAME" => $val[GetMessage("CC_BSC1_NAME")][0]["#"], | |
"PRICE" => $price, | |
"QUANTITY" => $quantity, | |
"DISCOUNT_PRICE" => $discountPrice, | |
); | |
if(is_array($val[GetMessage("CC_BSC1_PROPS_ITEMS")][0]["#"][GetMessage("CC_BSC1_PROP_ITEM")])) | |
{ | |
foreach($val[GetMessage("CC_BSC1_PROPS_ITEMS")][0]["#"][GetMessage("CC_BSC1_PROP_ITEM")] as $val1) | |
$arItem[$productID]["ATTRIBUTES"][$val1["#"][GetMessage("CC_BSC1_NAME")][0]["#"]] = $val1["#"][GetMessage("CC_BSC1_VALUE")][0]["#"]; | |
} | |
if(is_array($val[GetMessage("CC_BSC1_REK_VALUES")][0]["#"][GetMessage("CC_BSC1_REK_VALUE")])) | |
{ | |
foreach($val[GetMessage("CC_BSC1_REK_VALUES")][0]["#"][GetMessage("CC_BSC1_REK_VALUE")] as $val1) | |
{ | |
if($val1["#"][GetMessage("CC_BSC1_NAME")][0]["#"] == GetMessage("CC_BSC1_ITEM_TYPE")) | |
$arItem[$productID]["TYPE"] = $val1["#"][GetMessage("CC_BSC1_VALUE")][0]["#"]; | |
} | |
} | |
if(strlen($value["#"][GetMessage("CC_BSC1_TAXES")][0]["#"][GetMessage("CC_BSC1_TAX")][0]["#"][GetMessage("CC_BSC1_NAME")][0]["#"])>0) | |
{ | |
$taxValueTmp = $val[GetMessage("CC_BSC1_TAXES")][0]["#"][GetMessage("CC_BSC1_TAX")][0]["#"][GetMessage("CC_BSC1_TAX_VALUE")][0]["#"]; | |
$arItem[$productID]["VAT_RATE"] = $taxValueTmp/100; | |
if(IntVal($taxValueTmp) > IntVal($taxValue)) | |
{ | |
$taxName = $val[GetMessage("CC_BSC1_TAXES")][0]["#"][GetMessage("CC_BSC1_TAX")][0]["#"][GetMessage("CC_BSC1_NAME")][0]["#"]; | |
$taxValue = $taxValueTmp; | |
} | |
} | |
} | |
} | |
if(IntVal($taxValue)>0) | |
{ | |
$price = str_replace($SumFormat, ".", $value["#"][GetMessage("CC_BSC1_TAXES")][0]["#"][GetMessage("CC_BSC1_TAX")][0]["#"][GetMessage("CC_BSC1_SUMM")][0]["#"]); | |
$arOrder["TAX"] = Array( | |
"NAME" => $taxName, | |
"VALUE" =>$taxValue, | |
"IS_IN_PRICE" => ($value["#"][GetMessage("CC_BSC1_TAXES")][0]["#"][GetMessage("CC_BSC1_TAX")][0]["#"][GetMessage("CC_BSC1_IN_PRICE")][0]["#"]=="true"?"Y":"N"), | |
"VALUE_MONEY" => $price, | |
); | |
} | |
$arOrder["items"] = $arItem; | |
$v = $arOrder; | |
if($orderInfo = CSaleOrder::GetByID($orderId)) | |
{ | |
if($orderInfo["PAYED"] != "Y" && $orderInfo["ALLOW_DELIVERY"] != "Y" && $orderInfo["STATUS_ID"] != "F") | |
{ | |
$dbOrderTax = CSaleOrderTax::GetList( | |
array(), | |
array("ORDER_ID" => $orderId), | |
false, | |
false, | |
array("ID", "TAX_NAME", "VALUE", "VALUE_MONEY", "CODE", "IS_IN_PRICE") | |
); | |
$bTaxFound = false; | |
if($arOrderTax = $dbOrderTax->Fetch()) | |
{ | |
$bTaxFound = true; | |
if(IntVal($arOrderTax["VALUE_MONEY"]) != IntVal($v["TAX"]["VALUE_MONEY"]) || IntVal($arOrderTax["VALUE"]) != IntVal($v["TAX"]["VALUE"]) || ($arOrderTax["IS_IN_PRICE"] != $v["TAX"]["IS_IN_PRICE"])) | |
{ | |
if(IntVal($v["TAX"]["VALUE"])>0) | |
{ | |
$arFields = Array( | |
"TAX_NAME" => $v["TAX"]["NAME"], | |
"ORDER_ID" => $orderId, | |
"VALUE" => $v["TAX"]["VALUE"], | |
"IS_PERCENT" => "Y", | |
"IS_IN_PRICE" => $v["TAX"]["IS_IN_PRICE"], | |
"VALUE_MONEY" => $v["TAX"]["VALUE_MONEY"], | |
"CODE" => "VAT1C", | |
"APPLY_ORDER" => "100" | |
); | |
CSaleOrderTax::Update($arOrderTax["ID"], $arFields); | |
CSaleOrder::Update($orderId, Array("TAX_VALUE" => $v["TAX"]["VALUE_MONEY"])); | |
} | |
else | |
{ | |
CSaleOrderTax::Delete($arOrderTax["ID"]); | |
CSaleOrder::Update($orderId, Array("TAX_VALUE" => 0)); | |
} | |
} | |
} | |
if(!$bTaxFound) | |
{ | |
if(IntVal($v["TAX"]["VALUE"])>0) | |
{ | |
$arFields = Array( | |
"TAX_NAME" => $v["TAX"]["NAME"], | |
"ORDER_ID" => $orderId, | |
"VALUE" => $v["TAX"]["VALUE"], | |
"IS_PERCENT" => "Y", | |
"IS_IN_PRICE" => $v["TAX"]["IS_IN_PRICE"], | |
"VALUE_MONEY" => $v["TAX"]["VALUE_MONEY"] | |
); | |
CSaleOrderTax::Add($arFields); | |
CSaleOrder::Update($orderId, Array("TAX_VALUE" => $v["TAX"]["VALUE_MONEY"])); | |
} | |
} | |
$dbBasket = CSaleBasket::GetList( | |
array("NAME" => "ASC"), | |
array("ORDER_ID" => $orderId) | |
); | |
$basketSum = 0; | |
while ($arBasket = $dbBasket->Fetch()) | |
{ | |
$arFields = Array(); | |
if(!empty($v["items"][$arBasket["PRODUCT_XML_ID"]])) | |
{ | |
if($arBasket["QUANTITY"] != $v["items"][$arBasket["PRODUCT_XML_ID"]]["QUANTITY"]) | |
$arFields["QUANTITY"] = $v["items"][$arBasket["PRODUCT_XML_ID"]]["QUANTITY"]; | |
if($arBasket["PRICE"] != $v["items"][$arBasket["PRODUCT_XML_ID"]]["PRICE"]) | |
$arFields["PRICE"] = $v["items"][$arBasket["PRODUCT_XML_ID"]]["PRICE"]; | |
if($arBasket["VAT_RATE"] != $v["items"][$arBasket["PRODUCT_XML_ID"]]["VAT_RATE"]) | |
$arFields["VAT_RATE"] = $v["items"][$arBasket["PRODUCT_XML_ID"]]["VAT_RATE"]; | |
if($arBasket["DISCOUNT_PRICE"] != $v["items"][$arBasket["PRODUCT_XML_ID"]]["DISCOUNT_PRICE"]) | |
$arFields["DISCOUNT_PRICE"] = $v["items"][$arBasket["PRODUCT_XML_ID"]]["DISCOUNT_PRICE"]; | |
if(count($arFields)>0) | |
CSaleBasket::Update($arBasket["ID"], $arFields); | |
$v["items"][$arBasket["PRODUCT_XML_ID"]]["CHECKED"] = "Y"; | |
} | |
else | |
{ | |
CSaleBasket::Delete($arBasket["ID"]); | |
} | |
} | |
foreach($v["items"] as $itemID => $arItem) | |
{ | |
if($arItem["CHECKED"] != "Y") | |
{ | |
if($arItem["TYPE"] == GetMessage("CC_BSC1_ITEM")) | |
{ | |
CModule::IncludeModule("iblock"); | |
$dbIBlockElement = CIBlockElement::GetList(array(), array( | |
"XML_ID" => $itemID, | |
//"ACTIVE_DATE" => "Y", | |
"ACTIVE" => "Y", | |
"CHECK_PERMISSIONS" => "Y", | |
), false, false, array( | |
"ID", | |
"IBLOCK_ID", | |
"XML_ID", | |
"NAME", | |
"DETAIL_PAGE_URL", | |
)); | |
if($arIBlockElement = $dbIBlockElement->GetNext()) | |
{ | |
$dbIBlock = CIBlock::GetList( | |
array(), | |
array("ID" => $arIBlockElement["IBLOCK_ID"]) | |
); | |
if ($arIBlock = $dbIBlock->Fetch()) | |
{ | |
$arProps[] = array( | |
"NAME" => "Catalog XML_ID", | |
"CODE" => "CATALOG.XML_ID", | |
"VALUE" => $arIBlock["XML_ID"] | |
); | |
} | |
$arProps[] = array( | |
"NAME" => "Product XML_ID", | |
"CODE" => "PRODUCT.XML_ID", | |
"VALUE" => $arIBlockElement["XML_ID"] | |
); | |
$arProduct = CCatalogProduct::GetByID($arIBlockElement["ID"]); | |
$arFields = array( | |
"ORDER_ID" => $orderId, | |
"PRODUCT_ID" => $arIBlockElement["ID"], | |
"PRICE" => $arItem["PRICE"], | |
"CURRENCY" => $orderInfo["CURRENCY"], | |
"WEIGHT" => $arProduct["WEIGHT"], | |
"QUANTITY" => $arItem["QUANTITY"], | |
"LID" => $orderInfo["LID"], | |
"DELAY" => "N", | |
"CAN_BUY" => "Y", | |
"NAME" => $arIBlockElement["~NAME"], | |
"CALLBACK_FUNC" => "CatalogBasketCallback", | |
"MODULE" => "catalog", | |
"NOTES" => $arProduct["CATALOG_GROUP_NAME"], | |
"ORDER_CALLBACK_FUNC" => "CatalogBasketOrderCallback", | |
"CANCEL_CALLBACK_FUNC" => "CatalogBasketCancelCallback", | |
"PAY_CALLBACK_FUNC" => "CatalogPayOrderCallback", | |
"DETAIL_PAGE_URL" => $arIBlockElement["DETAIL_PAGE_URL"], | |
"CATALOG_XML_ID" => $arIBlock["XML_ID"], | |
"PRODUCT_XML_ID" => $arIBlockElement["XML_ID"], | |
"IGNORE_CALLBACK_FUNC" => "Y", | |
"VAT_RATE" => $arItem["VAT_RATE"], | |
); | |
CSaleBasket::Add($arFields); | |
} | |
else | |
{ | |
$this->strError .= "\n".GetMessage("CC_BSC1_PRODUCT_NOT_FOUND").$orderId." - [".$itemID."] ".$arItem["NAME"]; | |
} | |
} | |
elseif($arItem["TYPE"] == GetMessage("CC_BSC1_SERVICE")) | |
{ | |
if(IntVal($arItem["PRICE"]) != IntVal($orderInfo["PRICE_DELIVERY"])) | |
CSaleOrder::Update($orderId, Array("PRICE_DELIVERY" => $arItem["PRICE"])); | |
} | |
} | |
} | |
$arOrderFields = Array(); | |
if($v["AMOUNT"] != $orderInfo["PRICE"]) | |
$arOrderFields = Array("PRICE" => $v["AMOUNT"]); | |
if(DoubleVal($orderInfo["DISCOUNT_VALUE"]) > 0) | |
$arOrderFields["DISCOUNT_VALUE"] = 0; | |
$arOrderFields["UPDATED_1C"] = "Y"; | |
if(!empty($arOrderFields)) | |
CSaleOrder::Update($orderId, $arOrderFields); | |
} | |
else | |
{ | |
$this->strError .= "\n".GetMessage("CC_BSC1_FINAL_NOT_EDIT", Array("#ID#" => $orderId)); | |
} | |
$arAditFields = Array(); | |
if($v["TRAITS"][GetMessage("CC_BSC1_CANCELED")] == "true") | |
{ | |
if($orderInfo["CANCELED"] == "N") | |
CSaleOrder::CancelOrder($orderId, "Y", $v["COMMENT"]); | |
$arAditFields["UPDATED_1C"] = "Y"; | |
} | |
else | |
{ | |
if($orderInfo["CANCELED"] == "Y") | |
CSaleOrder::CancelOrder($orderId, "N", $v["COMMENT"]); | |
$arAditFields["UPDATED_1C"] = "Y"; | |
if(strlen($v["TRAITS"][GetMessage("CC_BSC1_1C_PAYED_DATE")])>1) | |
{ | |
if($orderInfo["PAYED"]=="N") | |
CSaleOrder::PayOrder($orderId, "Y"); | |
$arAditFields["PAY_VOUCHER_DATE"] = CDatabase::FormatDate(str_replace("T", " ", $v["TRAITS"][GetMessage("CC_BSC1_1C_PAYED_DATE")]), "YYYY-MM-DD HH:MI:SS", CLang::GetDateFormat("FULL", LANG)); | |
if(strlen($v["TRAITS"][GetMessage("CC_BSC1_1C_PAYED_NUM")])>0) | |
$arAditFields["PAY_VOUCHER_NUM"] = $v["TRAITS"][GetMessage("CC_BSC1_1C_PAYED_NUM")]; | |
$arAditFields["UPDATED_1C"] = "Y"; | |
} | |
if(strlen($v["TRAITS"][GetMessage("CC_BSC1_1C_DELIVERY_DATE")])>1) | |
{ | |
if($orderInfo["ALLOW_DELIVERY"]=="N") | |
CSaleOrder::DeliverOrder($orderId, "Y"); | |
$arAditFields["DATE_ALLOW_DELIVERY"] = CDatabase::FormatDate(str_replace("T", " ", $v["TRAITS"][GetMessage("CC_BSC1_1C_DELIVERY_DATE")]), "YYYY-MM-DD HH:MI:SS", CLang::GetDateFormat("FULL", LANG)); | |
if(strlen($arParams["FINAL_STATUS_ON_DELIVERY"])>0 && $orderInfo["STATUS_ID"] != "F" && $orderInfo["STATUS_ID"] != $arParams["FINAL_STATUS_ON_DELIVERY"]) | |
CSaleOrder::StatusOrder($orderId, $arParams["FINAL_STATUS_ON_DELIVERY"]); | |
$arAditFields["UPDATED_1C"] = "Y"; | |
} | |
} | |
if(count($arAditFields)>0) | |
CSaleOrder::Update($orderId, $arAditFields); | |
} | |
else | |
$this->strError .= "\n".GetMessage("CC_BSC1_ORDER_NOT_FOUND", Array("#ID#" => $orderId)); | |
} | |
} | |
} | |
$position = false; | |
$loader = new OrderLoader; | |
$o = new CXMLFileStream; | |
$o->registerElementHandler("/".GetMessage("CC_BSC1_COM_INFO"), array($loader, "elementHandler")); | |
$o->registerNodeHandler("/".GetMessage("CC_BSC1_COM_INFO")."/".GetMessage("CC_BSC1_DOCUMENT"), array($loader, "nodeHandler")); | |
$o->setPosition(false); | |
if ($o->openFile($new_file_name)) | |
while($o->findNext()); | |
echo "success\n"; | |
if(strlen($loader->strError)>0) | |
echo $loader->strError; | |
} | |
else | |
echo "failure\n".GetMessage("CC_BSC1_EMPTY_CML"); | |
} | |
} | |
else | |
{ | |
echo "failure\n",GetMessage("CC_BSC1_ERROR_UNKNOWN_COMMAND"); | |
} | |
} | |
$contents = ob_get_contents(); | |
ob_end_clean(); | |
if(!$bDesignMode) | |
{ | |
if (!$bCrmMode) | |
{ | |
if(toUpper(LANG_CHARSET) != "WINDOWS-1251") | |
$contents = $APPLICATION->ConvertCharset($contents, LANG_CHARSET, "windows-1251"); | |
} | |
if ($gzCompressionSupported) | |
{ | |
$contents = gzcompress($contents); | |
header("Content-Type: application/octet-stream"); | |
header("Content-Length: ".(function_exists("mb_strlen")? mb_strlen($contents, 'latin1') : strlen($contents))); | |
} | |
else | |
{ | |
$str = (function_exists("mb_strlen")? mb_strlen($contents, 'latin1'): strlen($contents)); | |
if($_GET["mode"] == "query" || $_POST["mode"] == "query") | |
{ | |
header("Content-Type: application/xml; charset=windows-1251"); | |
header("Content-Length: ".$str); | |
} | |
else | |
{ | |
header("Content-Type: text/html; charset=windows-1251"); | |
} | |
} | |
echo $contents; | |
die(); | |
} | |
else | |
{ | |
$this->IncludeComponentLang(".parameters.php"); | |
$arStatuses = Array("" => GetMessage("CP_BCI1_NO")); | |
CModule::IncludeModule("sale"); | |
$dbStatus = CSaleStatus::GetList(Array("SORT" => "ASC"), Array("LID" => LANGUAGE_ID)); | |
while ($arStatus = $dbStatus->GetNext()) | |
{ | |
$arStatuses[$arStatus["ID"]] = "[".$arStatus["ID"]."] ".$arStatus["NAME"]; | |
} | |
?><table class="data-table"> | |
<tr><td><?echo GetMessage("CP_BCI1_SITE_LIST")?></td><td><?echo $arParams["SITE_LIST"]?></td></tr> | |
<tr><td><?echo GetMessage("CP_BCI1_EXPORT_PAYED_ORDERS")?></td><td><?echo $arParams["EXPORT_PAYED_ORDERS"]? GetMessage("MAIN_YES"): GetMessage("MAIN_NO")?></td></tr> | |
<tr><td><?echo GetMessage("CP_BCI1_EXPORT_ALLOW_DELIVERY_ORDERS")?></td><td><?echo $arParams["EXPORT_ALLOW_DELIVERY_ORDERS"]? GetMessage("MAIN_YES"): GetMessage("MAIN_NO")?></td></tr> | |
<tr><td><?echo GetMessage("CP_BCI1_EXPORT_FINAL_ORDERS")?></td><td><?echo $arStatuses[$arParams["EXPORT_FINAL_ORDERS"]]?></td></tr> | |
<tr><td><?echo GetMessage("CP_BCI1_FINAL_STATUS_ON_DELIVERY")?></td><td><?echo $arStatuses[$arParams["FINAL_STATUS_ON_DELIVERY"]]?></td></tr> | |
<tr><td><?echo GetMessage("CP_BCI1_REPLACE_CURRENCY")?></td><td><?echo $arParams["REPLACE_CURRENCY"]?></td></tr> | |
<tr><td><?echo GetMessage("CP_BCI1_USE_ZIP")?></td><td><?echo $arParams["USE_ZIP"]? GetMessage("MAIN_YES"): GetMessage("MAIN_NO")?></td></tr> | |
</table> | |
<? | |
} | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment