Your IP : 18.227.190.93
<?
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale/general/order.php");
class CSaleOrder extends CAllSaleOrder
{
function Add($arFields)
{
global $DB, $USER_FIELD_MANAGER, $CACHE_MANAGER, $APPLICATION;
$isOrderConverted = \Bitrix\Main\Config\Option::get("main", "~sale_converted_15", 'Y');
$arFields1 = array();
foreach ($arFields as $key => $value)
{
if (substr($key, 0, 1)=="=")
{
$arFields1[substr($key, 1)] = $value;
unset($arFields[$key]);
}
}
if (!empty($arFields['TAX_LIST']) && is_array($arFields['TAX_LIST']))
{
$arFields1['TAX_LIST'] = $arFields['TAX_LIST'];
}
if (!empty($arFields['ORDER_PROP']) && is_array($arFields['TAX_LIST']))
{
$arFields1['ORDER_PROP'] = $arFields['ORDER_PROP'];
}
if (!empty($arFields['DELIVERY_PRICE']) && floatval($arFields['DELIVERY_PRICE']) > 0)
{
$arFields1['DELIVERY_PRICE'] = $arFields['DELIVERY_PRICE'];
}
if (array_key_exists('ONLY_FULL_PAY_FROM_ACCOUNT', $arFields))
{
$arFields1['ONLY_FULL_PAY_FROM_ACCOUNT'] = $arFields['ONLY_FULL_PAY_FROM_ACCOUNT'];
}
unset($arFields['DELIVERY_PRICE']);
unset($arFields['TAX_LIST']);
if (!CSaleOrder::CheckFields("ADD", $arFields))
return false;
foreach(GetModuleEvents("sale", "OnBeforeOrderAdd", true) as $arEvent)
if (ExecuteModuleEventEx($arEvent, Array(&$arFields))===false)
return false;
if ($isOrderConverted != 'N')
{
if (!empty($arFields1))
{
$arFields1 = \Bitrix\Sale\Compatible\OrderCompatibility::backRawField(\Bitrix\Sale\Compatible\OrderCompatibility::ENTITY_ORDER, $arFields1);
}
$result = \Bitrix\Sale\Compatible\OrderCompatibility::add(array_merge($arFields, $arFields1));
if ($result->isSuccess(true))
{
$ID = $result->getId();
}
else
{
foreach($result->getErrorMessages() as $error)
{
$APPLICATION->ThrowException($error);
}
return false;
}
}
else
{
$arInsert = $DB->PrepareInsert("b_sale_order", $arFields);
if (!array_key_exists("DATE_STATUS", $arFields))
{
$arInsert[0] .= ", DATE_STATUS";
$arInsert[1] .= ", ".$DB->GetNowFunction();
}
if (!array_key_exists("DATE_INSERT", $arFields))
{
$arInsert[0] .= ", DATE_INSERT";
$arInsert[1] .= ", ".$DB->GetNowFunction();
}
if (!array_key_exists("DATE_UPDATE", $arFields))
{
$arInsert[0] .= ", DATE_UPDATE";
$arInsert[1] .= ", ".$DB->GetNowFunction();
}
foreach ($arFields1 as $key => $value)
{
if (strlen($arInsert[0])>0)
{
$arInsert[0] .= ", ";
$arInsert[1] .= ", ";
}
$arInsert[0] .= $key;
$arInsert[1] .= $value;
}
$strSql =
"INSERT INTO b_sale_order(".$arInsert[0].") ".
"VALUES(".$arInsert[1].")";
$DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
$ID = IntVal($DB->LastID());
CSaleOrder::SetAccountNumber($ID);
}
CSaleOrderChange::AddRecord($ID, "ORDER_ADDED");
$USER_FIELD_MANAGER->Update("ORDER", $ID, $arFields);
if ($isOrderConverted == 'N')
{
foreach (GetModuleEvents("sale", "OnOrderAdd", true) as $arEvent)
ExecuteModuleEventEx($arEvent, Array($ID, $arFields));
}
if(defined("CACHED_b_sale_order"))
{
$CACHE_MANAGER->Read(CACHED_b_sale_order, "sale_orders");
$CACHE_MANAGER->SetImmediate("sale_orders", true);
}
return $ID;
}
function Update($ID, $arFields, $bDateUpdate = true)
{
global $DB, $USER_FIELD_MANAGER, $CACHE_MANAGER, $APPLICATION;
$isOrderConverted = \Bitrix\Main\Config\Option::get("main", "~sale_converted_15", 'Y');
$ID = IntVal($ID);
$arFields1 = array();
foreach ($arFields as $key => $value)
{
if (substr($key, 0, 1)=="=")
{
$arFields1[substr($key, 1)] = $value;
unset($arFields[$key]);
}
}
if (!CSaleOrder::CheckFields("UPDATE", $arFields, $ID))
return false;
foreach(GetModuleEvents("sale", "OnBeforeOrderUpdate", true) as $arEvent)
if (ExecuteModuleEventEx($arEvent, Array($ID, &$arFields))===false)
return false;
if ($isOrderConverted != 'N')
{
if (!empty($arFields1))
{
$arFields1 = \Bitrix\Sale\Compatible\OrderCompatibility::backRawField(\Bitrix\Sale\Compatible\OrderCompatibility::ENTITY_ORDER, $arFields1);
}
\Bitrix\Sale\DiscountCouponsManager::freezeCouponStorage();
$result = \Bitrix\Sale\Compatible\OrderCompatibility::update($ID, array_merge($arFields, $arFields1), $bDateUpdate);
\Bitrix\Sale\DiscountCouponsManager::unFreezeCouponStorage();
if (!$result->isSuccess())
{
foreach($result->getErrorMessages() as $error)
{
$APPLICATION->ThrowException($error);
}
return false;
}
else
{
$arOrderOldFields = array();
$resultFields = $result->getData();
if (!empty($resultFields['OLD_FIELDS']) && is_array($resultFields['OLD_FIELDS']))
{
$arOrderOldFields = $resultFields['OLD_FIELDS'];
}
$updated = true;
}
}
else
{
$strUpdate = $DB->PrepareUpdate("b_sale_order", $arFields);
foreach ($arFields1 as $key => $value)
{
if (strlen($strUpdate)>0) $strUpdate .= ", ";
$strUpdate .= $key."=".$value." ";
}
//get old fields
$arOrderOldFields = CSaleOrder::GetByID($ID);
$strSql =
"UPDATE b_sale_order SET ".
" ".$strUpdate." ";
if($bDateUpdate)
$strSql .= ", DATE_UPDATE = ".$DB->GetNowFunction()." ";
$strSql .= "WHERE ID = ".$ID." ";
$updated = $DB->Query($strSql, true, "File: ".__FILE__."<br>Line: ".__LINE__);
if (!$updated)
return false;
}
$USER_FIELD_MANAGER->Update("ORDER", $ID, $arFields);
if ($updated)
CSaleOrderChange::AddRecordsByFields($ID, $arOrderOldFields, $arFields);
unset($GLOBALS["SALE_ORDER"]["SALE_ORDER_CACHE_".$ID]);
foreach(GetModuleEvents("sale", "OnOrderUpdate", true) as $arEvent)
ExecuteModuleEventEx($arEvent, Array($ID, $arFields));
if (isset($arFields["TRACKING_NUMBER"]))
{
foreach(GetModuleEvents("sale", "OnTrackingNumberChange", true) as $arEvent)
ExecuteModuleEventEx($arEvent, array($ID, $arFields["TRACKING_NUMBER"]));
if (strlen($arFields["TRACKING_NUMBER"]) > 0 && $arOrderOldFields["TRACKING_NUMBER"] != $arFields["TRACKING_NUMBER"])
{
$accountNumber = (isset($arFields["ACCOUNT_NUMBER"])) ? $arFields["ACCOUNT_NUMBER"] : $arOrderOldFields["ACCOUNT_NUMBER"];
$userId = (isset($arFields["USER_ID"])) ? $arFields["USER_ID"] : $arOrderOldFields["USER_ID"];
$payerName = "";
$payerEMail = '';
$dbUser = CUser::GetByID($userId);
if ($arUser = $dbUser->Fetch())
{
if (strlen($payerName) <= 0)
$payerName = $arUser["NAME"].((strlen($arUser["NAME"])<=0 || strlen($arUser["LAST_NAME"])<=0) ? "" : " ").$arUser["LAST_NAME"];
if (strlen($payerEMail) <= 0)
$payerEMail = $arUser["EMAIL"];
}
$arEmailFields = Array(
"ORDER_ID" => $accountNumber,
"ORDER_DATE" => Date($DB->DateFormatToPHP(CLang::GetDateFormat("SHORT", $arOrderOldFields["LID"]))),
"ORDER_USER" => $payerName,
"ORDER_TRACKING_NUMBER" => $arFields["TRACKING_NUMBER"],
"BCC" => COption::GetOptionString("sale", "order_email", "order@".$_SERVER['SERVER_NAME']),
"EMAIL" => $payerEMail,
"SALE_EMAIL" => COption::GetOptionString("sale", "order_email", "order@".$_SERVER['SERVER_NAME'])
);
$event = new CEvent;
$event->Send("SALE_ORDER_TRACKING_NUMBER", $arOrderOldFields["LID"], $arEmailFields, "N");
}
}
if(defined("CACHED_b_sale_order") && $bDateUpdate && $arFields["UPDATED_1C"] != "Y")
{
$CACHE_MANAGER->Read(CACHED_b_sale_order, "sale_orders");
$CACHE_MANAGER->SetImmediate("sale_orders", true);
}
return $ID;
}
function PrepareGetListArray($key, &$arFields, &$arPropIDsTmp)
{
$propIDTmp = false;
if (StrPos($key, "PROPERTY_ID_") === 0)
$propIDTmp = IntVal(substr($key, StrLen("PROPERTY_ID_")));
elseif (StrPos($key, "PROPERTY_NAME_") === 0)
$propIDTmp = IntVal(substr($key, StrLen("PROPERTY_NAME_")));
elseif (StrPos($key, "PROPERTY_VALUE_") === 0)
$propIDTmp = IntVal(substr($key, StrLen("PROPERTY_VALUE_")));
elseif (StrPos($key, "PROPERTY_CODE_") === 0)
$propIDTmp = IntVal(substr($key, StrLen("PROPERTY_CODE_")));
elseif (StrPos($key, "PROPERTY_VAL_BY_CODE_") === 0)
$propIDTmp = preg_replace("/[^a-zA-Z0-9_-]/is", "", trim(substr($key, StrLen("PROPERTY_VAL_BY_CODE_"))));
$locationPropInfo = self::getLocationPropertyInfo();
if (strlen($propIDTmp) > 0 || $propIDTmp > 0)
{
if (!in_array($propIDTmp, $arPropIDsTmp))
{
$arPropIDsTmp[] = $propIDTmp;
$arFields["PROPERTY_ID_".$propIDTmp] = array("FIELD" => "SP_".$propIDTmp.".ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props_value SP_".$propIDTmp." ON (SP_".$propIDTmp.".ORDER_PROPS_ID = ".$propIDTmp." AND O.ID = SP_".$propIDTmp.".ORDER_ID)");
$arFields["PROPERTY_ORDER_PROPS_ID_".$propIDTmp] = array("FIELD" => "SP_".$propIDTmp.".ORDER_PROPS_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props_value SP_".$propIDTmp." ON (SP_".$propIDTmp.".ORDER_PROPS_ID = ".$propIDTmp." AND O.ID = SP_".$propIDTmp.".ORDER_ID)");
$arFields["PROPERTY_NAME_".$propIDTmp] = array("FIELD" => "SP_".$propIDTmp.".NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props_value SP_".$propIDTmp." ON (SP_".$propIDTmp.".ORDER_PROPS_ID = ".$propIDTmp." AND O.ID = SP_".$propIDTmp.".ORDER_ID)");
if(CSaleLocation::isLocationProMigrated() && isset($locationPropInfo['ID'][$propIDTmp]))
{
$arFields["PROPERTY_VALUE_".$propIDTmp] = array("FIELD" => "L_".$propIDTmp.".ID", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props_value SP_".$propIDTmp." ON (SP_".$propIDTmp.".ORDER_PROPS_ID = ".$propIDTmp." AND O.ID = SP_".$propIDTmp.".ORDER_ID) INNER JOIN b_sale_location L_".$propIDTmp." ON (SP_".$propIDTmp.".VALUE = L_".$propIDTmp.".CODE)");
}
else
{
$arFields["PROPERTY_VALUE_".$propIDTmp] = array("FIELD" => "SP_".$propIDTmp.".VALUE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props_value SP_".$propIDTmp." ON (SP_".$propIDTmp.".ORDER_PROPS_ID = ".$propIDTmp." AND O.ID = SP_".$propIDTmp.".ORDER_ID)");
}
$arFields["PROPERTY_CODE_".$propIDTmp] = array("FIELD" => "SP_".$propIDTmp.".CODE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props_value SP_".$propIDTmp." ON (SP_".$propIDTmp.".ORDER_PROPS_ID = ".$propIDTmp." AND O.ID = SP_".$propIDTmp.".ORDER_ID)");
if(CSaleLocation::isLocationProMigrated() && isset($locationPropInfo['CODE'][$propIDTmp]))
{
$arFields["PROPERTY_VAL_BY_CODE_".$propIDTmp] = array("FIELD" => "L_".$propIDTmp.".ID", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props_value SP_".$propIDTmp." ON (SP_".$propIDTmp.".CODE = '".$propIDTmp."' AND O.ID = SP_".$propIDTmp.".ORDER_ID) INNER JOIN b_sale_location L_".$propIDTmp." ON (SP_".$propIDTmp.".VALUE = L_".$propIDTmp.".CODE)");
}
else
{
$arFields["PROPERTY_VAL_BY_CODE_".$propIDTmp] = array("FIELD" => "SP_".$propIDTmp.".VALUE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props_value SP_".$propIDTmp." ON (SP_".$propIDTmp.".CODE = '".$propIDTmp."' AND O.ID = SP_".$propIDTmp.".ORDER_ID)");
}
}
}
}
/**
* @param array $arOrder
* @param array $arFilter
* @param bool|array $arGroupBy
* @param bool|array $arNavStartParams
* @param array $arSelectFields
* @param array $arOptions
* @return bool|CDBResult
*/
public static function GetList($arOrder = array("ID"=>"DESC"), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array(), $arOptions = array())
{
global $DB, $USER_FIELD_MANAGER;
if (!is_array($arOrder))
$arOrder = array('ID' => 'DESC');
if (!is_array($arFilter))
$arFilter = array();
if (!is_array($arSelectFields))
$arSelectFields = array();
$isOrderConverted = \Bitrix\Main\Config\Option::get("main", "~sale_converted_15", 'Y');
$obUserFieldsSql = new CUserTypeSQL;
$obUserFieldsSql->SetEntity("ORDER", "O.ID");
$obUserFieldsSql->SetSelect($arSelectFields);
$obUserFieldsSql->SetFilter($arFilter);
$obUserFieldsSql->SetOrder($arOrder);
if (array_key_exists("DATE_FROM", $arFilter))
{
$val = $arFilter["DATE_FROM"];
unset($arFilter["DATE_FROM"]);
$arFilter[">=DATE_INSERT"] = $val;
}
if (array_key_exists("DATE_TO", $arFilter))
{
$val = $arFilter["DATE_TO"];
unset($arFilter["DATE_TO"]);
$arFilter["<=DATE_INSERT"] = $val;
}
if (array_key_exists("DATE_INSERT_FROM", $arFilter))
{
$val = $arFilter["DATE_INSERT_FROM"];
unset($arFilter["DATE_INSERT_FROM"]);
$arFilter[">=DATE_INSERT"] = $val;
}
if (array_key_exists("DATE_INSERT_TO", $arFilter))
{
$val = $arFilter["DATE_INSERT_TO"];
unset($arFilter["DATE_INSERT_TO"]);
$arFilter["<=DATE_INSERT"] = $val;
}
if (array_key_exists("DATE_UPDATE_FROM", $arFilter))
{
$val = $arFilter["DATE_UPDATE_FROM"];
unset($arFilter["DATE_UPDATE_FROM"]);
$arFilter[">=DATE_UPDATE"] = $val;
}
if (array_key_exists("DATE_UPDATE_TO", $arFilter))
{
$val = $arFilter["DATE_UPDATE_TO"];
unset($arFilter["DATE_UPDATE_TO"]);
$arFilter["<=DATE_UPDATE"] = $val;
}
if (array_key_exists("DATE_STATUS_FROM", $arFilter))
{
$val = $arFilter["DATE_STATUS_FROM"];
unset($arFilter["DATE_STATUS_FROM"]);
$arFilter[">=DATE_STATUS"] = $val;
}
if (array_key_exists("DATE_STATUS_TO", $arFilter))
{
$val = $arFilter["DATE_STATUS_TO"];
unset($arFilter["DATE_STATUS_TO"]);
$arFilter["<=DATE_STATUS"] = $val;
}
if (array_key_exists("DATE_PAYED_FROM", $arFilter))
{
$val = $arFilter["DATE_PAYED_FROM"];
unset($arFilter["DATE_PAYED_FROM"]);
$arFilter[">=DATE_PAYED"] = $val;
}
if (array_key_exists("DATE_PAYED_TO", $arFilter))
{
$val = $arFilter["DATE_PAYED_TO"];
unset($arFilter["DATE_PAYED_TO"]);
$arFilter["<=DATE_PAYED"] = $val;
}
if (array_key_exists("DATE_ALLOW_DELIVERY_FROM", $arFilter))
{
$val = $arFilter["DATE_ALLOW_DELIVERY_FROM"];
unset($arFilter["DATE_ALLOW_DELIVERY_FROM"]);
$arFilter[">=DATE_ALLOW_DELIVERY"] = $val;
}
if (array_key_exists("DATE_ALLOW_DELIVERY_TO", $arFilter))
{
$val = $arFilter["DATE_ALLOW_DELIVERY_TO"];
unset($arFilter["DATE_ALLOW_DELIVERY_TO"]);
$arFilter["<=DATE_ALLOW_DELIVERY"] = $val;
}
if (array_key_exists("DATE_CANCELED_FROM", $arFilter))
{
$val = $arFilter["DATE_CANCELED_FROM"];
unset($arFilter["DATE_CANCELED_FROM"]);
$arFilter[">=DATE_CANCELED"] = $val;
}
if (array_key_exists("DATE_CANCELED_TO", $arFilter))
{
$val = $arFilter["DATE_CANCELED_TO"];
unset($arFilter["DATE_CANCELED_TO"]);
$arFilter["<=DATE_CANCELED"] = $val;
}
if (array_key_exists("DATE_DEDUCTED_FROM", $arFilter))
{
$val = $arFilter["DATE_DEDUCTED_FROM"];
unset($arFilter["DATE_DEDUCTED_FROM"]);
$arFilter[">=DATE_DEDUCTED"] = $val;
}
if (array_key_exists("DATE_DEDUCTED_TO", $arFilter))
{
$val = $arFilter["DATE_DEDUCTED_TO"];
unset($arFilter["DATE_DEDUCTED_TO"]);
$arFilter["<=DATE_DEDUCTED"] = $val;
}
if (array_key_exists("DATE_MARKED_FROM", $arFilter))
{
$val = $arFilter["DATE_MARKED_FROM"];
unset($arFilter["DATE_MARKED_FROM"]);
$arFilter[">=DATE_MARKED"] = $val;
}
if (array_key_exists("DATE_MARKED_TO", $arFilter))
{
$val = $arFilter["DATE_MARKED_TO"];
unset($arFilter["DATE_MARKED_TO"]);
$arFilter["<=DATE_MARKED"] = $val;
}
if (array_key_exists("DATE_PAY_BEFORE_FROM", $arFilter))
{
$val = $arFilter["DATE_PAY_BEFORE_FROM"];
unset($arFilter["DATE_PAY_BEFORE_FROM"]);
$arFilter[">=DATE_PAY_BEFORE"] = $val;
}
if (array_key_exists("DATE_PAY_BEFORE_TO", $arFilter))
{
$val = $arFilter["DATE_PAY_BEFORE_TO"];
unset($arFilter["DATE_PAY_BEFORE_TO"]);
$arFilter["<=DATE_PAY_BEFORE"] = $val;
}
if (array_key_exists("DELIVERY_REQUEST_SENT", $arFilter))
{
if($arFilter["DELIVERY_REQUEST_SENT"] == "Y")
$arFilter["!DELIVERY_DATE_REQUEST"] = "";
else
$arFilter["+DELIVERY_DATE_REQUEST"] = "";
unset($arFilter["DELIVERY_REQUEST_SENT"]);
}
$callback = false;
if (array_key_exists("CUSTOM_SUBQUERY", $arFilter))
{
$callback = $arFilter["CUSTOM_SUBQUERY"];
unset($arFilter["CUSTOM_SUBQUERY"]);
}
if ($isOrderConverted != 'N')
{
$result = \Bitrix\Sale\Compatible\OrderCompatibility::getList($arOrder, $arFilter, $arGroupBy, $arNavStartParams, $arSelectFields, $callback);
if ($result instanceof \Bitrix\Sale\Compatible\CDBResult)
$result->addFetchAdapter(new \Bitrix\Sale\Compatible\OrderFetchAdapter());
return $result;
}
if (empty($arSelectFields))
{
$arSelectFields = array(
"ID",
"LID",
"PERSON_TYPE_ID",
"PAYED",
"DATE_PAYED",
"EMP_PAYED_ID",
"CANCELED",
"DATE_CANCELED",
"EMP_CANCELED_ID",
"REASON_CANCELED",
"MARKED",
"DATE_MARKED",
"EMP_MARKED_ID",
"REASON_MARKED",
"STATUS_ID",
"DATE_STATUS",
"PAY_VOUCHER_NUM",
"PAY_VOUCHER_DATE",
"EMP_STATUS_ID",
"PRICE_DELIVERY",
"ALLOW_DELIVERY",
"DATE_ALLOW_DELIVERY",
"EMP_ALLOW_DELIVERY_ID",
"DEDUCTED",
"DATE_DEDUCTED",
"EMP_DEDUCTED_ID",
"REASON_UNDO_DEDUCTED",
"RESERVED",
"PRICE",
"CURRENCY",
"DISCOUNT_VALUE",
"SUM_PAID",
"USER_ID",
"PAY_SYSTEM_ID",
"DELIVERY_ID",
"DATE_INSERT",
"DATE_INSERT_FORMAT",
"DATE_UPDATE",
"USER_DESCRIPTION",
"ADDITIONAL_INFO",
"PS_STATUS",
"PS_STATUS_CODE",
"PS_STATUS_DESCRIPTION",
"PS_STATUS_MESSAGE",
"PS_SUM",
"PS_CURRENCY",
"PS_RESPONSE_DATE",
"COMMENTS",
"TAX_VALUE",
"STAT_GID",
"RECURRING_ID",
"RECOUNT_FLAG",
"USER_LOGIN",
"USER_NAME",
"USER_LAST_NAME",
"USER_EMAIL",
"DELIVERY_DOC_NUM",
"DELIVERY_DOC_DATE",
"DELIVERY_DATE_REQUEST",
"STORE_ID",
"ORDER_TOPIC",
"RESPONSIBLE_ID",
"RESPONSIBLE_LOGIN",
"RESPONSIBLE_NAME",
"RESPONSIBLE_LAST_NAME",
"RESPONSIBLE_SECOND_NAME",
"RESPONSIBLE_EMAIL",
"RESPONSIBLE_WORK_POSITION",
"RESPONSIBLE_PERSONAL_PHOTO",
"RESPONSIBLE_GROUP_ID",
"DATE_PAY_BEFORE",
"DATE_BILL",
"ACCOUNT_NUMBER",
"TRACKING_NUMBER",
"XML_ID"
);
}
elseif (in_array("*", $arSelectFields))
{
$arSelectFields = array(
"ID",
"LID",
"PERSON_TYPE_ID",
"PAYED",
"DATE_PAYED",
"EMP_PAYED_ID",
"CANCELED",
"DATE_CANCELED",
"EMP_CANCELED_ID",
"REASON_CANCELED",
"MARKED",
"DATE_MARKED",
"EMP_MARKED_ID",
"REASON_MARKED",
"STATUS_ID",
"DATE_STATUS",
"PAY_VOUCHER_NUM",
"PAY_VOUCHER_DATE",
"EMP_STATUS_ID",
"PRICE_DELIVERY",
"ALLOW_DELIVERY",
"DATE_ALLOW_DELIVERY",
"EMP_ALLOW_DELIVERY_ID",
"DEDUCTED",
"DATE_DEDUCTED",
"EMP_DEDUCTED_ID",
"REASON_UNDO_DEDUCTED",
"RESERVED",
"PRICE",
"CURRENCY",
"DISCOUNT_VALUE",
"SUM_PAID",
"USER_ID",
"PAY_SYSTEM_ID",
"DELIVERY_ID",
"DATE_INSERT",
"DATE_INSERT_FORMAT",
"DATE_UPDATE",
"USER_DESCRIPTION",
"ADDITIONAL_INFO",
"PS_STATUS",
"PS_STATUS_CODE",
"PS_STATUS_DESCRIPTION",
"PS_STATUS_MESSAGE",
"PS_SUM",
"PS_CURRENCY",
"PS_RESPONSE_DATE",
"COMMENTS",
"TAX_VALUE",
"STAT_GID",
"RECURRING_ID",
"RECOUNT_FLAG",
"USER_LOGIN",
"USER_NAME",
"USER_LAST_NAME",
"USER_EMAIL",
"DELIVERY_DOC_NUM",
"DELIVERY_DOC_DATE",
"DELIVERY_DATE_REQUEST",
"STORE_ID",
"ORDER_TOPIC",
"RESPONSIBLE_ID",
"RESPONSIBLE_LOGIN",
"RESPONSIBLE_NAME",
"RESPONSIBLE_LAST_NAME",
"RESPONSIBLE_SECOND_NAME",
"RESPONSIBLE_EMAIL",
"RESPONSIBLE_WORK_POSITION",
"RESPONSIBLE_PERSONAL_PHOTO",
"RESPONSIBLE_GROUP_ID",
"DATE_PAY_BEFORE",
"DATE_BILL",
"ACCOUNT_NUMBER",
"TRACKING_NUMBER",
"XML_ID"
);
}
$maxLock = IntVal(COption::GetOptionString("sale", "MAX_LOCK_TIME", "60"));
if(is_object($GLOBALS["USER"]))
$userID = IntVal($GLOBALS["USER"]->GetID());
else
$userID = 0;
// FIELDS -->
$arFields = array(
"ID" => array("FIELD" => "O.ID", "TYPE" => "int"),
"LID" => array("FIELD" => "O.LID", "TYPE" => "string"),
"PERSON_TYPE_ID" => array("FIELD" => "O.PERSON_TYPE_ID", "TYPE" => "int"),
"PAYED" => array("FIELD" => "O.PAYED", "TYPE" => "char"),
"DATE_PAYED" => array("FIELD" => "O.DATE_PAYED", "TYPE" => "datetime"),
"EMP_PAYED_ID" => array("FIELD" => "O.EMP_PAYED_ID", "TYPE" => "int"),
"CANCELED" => array("FIELD" => "O.CANCELED", "TYPE" => "char"),
"DATE_CANCELED" => array("FIELD" => "O.DATE_CANCELED", "TYPE" => "datetime"),
"EMP_CANCELED_ID" => array("FIELD" => "O.EMP_CANCELED_ID", "TYPE" => "int"),
"REASON_CANCELED" => array("FIELD" => "O.REASON_CANCELED", "TYPE" => "string"),
"STATUS_ID" => array("FIELD" => "O.STATUS_ID", "TYPE" => "string"),
"DATE_STATUS" => array("FIELD" => "O.DATE_STATUS", "TYPE" => "datetime"),
"PAY_VOUCHER_NUM" => array("FIELD" => "O.PAY_VOUCHER_NUM", "TYPE" => "string"),
"PAY_VOUCHER_DATE" => array("FIELD" => "O.PAY_VOUCHER_DATE", "TYPE" => "date"),
"EMP_STATUS_ID" => array("FIELD" => "O.EMP_STATUS_ID", "TYPE" => "int"),
"PRICE_DELIVERY" => array("FIELD" => "O.PRICE_DELIVERY", "TYPE" => "double"),
"ALLOW_DELIVERY" => array("FIELD" => "O.ALLOW_DELIVERY", "TYPE" => "char"),
"DATE_ALLOW_DELIVERY" => array("FIELD" => "O.DATE_ALLOW_DELIVERY", "TYPE" => "datetime"),
"EMP_ALLOW_DELIVERY_ID" => array("FIELD" => "O.EMP_ALLOW_DELIVERY_ID", "TYPE" => "int"),
"DEDUCTED" => array("FIELD" => "O.DEDUCTED", "TYPE" => "char"),
"DATE_DEDUCTED" => array("FIELD" => "O.DATE_DEDUCTED", "TYPE" => "datetime"),
"EMP_DEDUCTED_ID" => array("FIELD" => "O.EMP_DEDUCTED_ID", "TYPE" => "int"),
"REASON_UNDO_DEDUCTED" => array("FIELD" => "O.REASON_UNDO_DEDUCTED", "TYPE" => "string"),
"RESERVED" => array("FIELD" => "O.RESERVED", "TYPE" => "char"),
"MARKED" => array("FIELD" => "O.MARKED", "TYPE" => "char"),
"DATE_MARKED" => array("FIELD" => "O.DATE_MARKED", "TYPE" => "datetime"),
"EMP_MARKED_ID" => array("FIELD" => "O.EMP_MARKED_ID", "TYPE" => "int"),
"REASON_MARKED" => array("FIELD" => "O.REASON_MARKED", "TYPE" => "string"),
"PRICE" => array("FIELD" => "O.PRICE", "TYPE" => "double"),
"CURRENCY" => array("FIELD" => "O.CURRENCY", "TYPE" => "string"),
"DISCOUNT_VALUE" => array("FIELD" => "O.DISCOUNT_VALUE", "TYPE" => "double"),
"SUM_PAID" => array("FIELD" => "O.SUM_PAID", "TYPE" => "double"),
"USER_ID" => array("FIELD" => "O.USER_ID", "TYPE" => "int"),
"PAY_SYSTEM_ID" => array("FIELD" => "O.PAY_SYSTEM_ID", "TYPE" => "int"),
"DELIVERY_ID" => array("FIELD" => "O.DELIVERY_ID", "TYPE" => "string"),
"DATE_INSERT" => array("FIELD" => "O.DATE_INSERT", "TYPE" => "datetime"),
"DATE_INSERT_FORMAT" => array("FIELD" => "O.DATE_INSERT", "TYPE" => "datetime"),
"DATE_UPDATE" => array("FIELD" => "O.DATE_UPDATE", "TYPE" => "datetime"),
"USER_DESCRIPTION" => array("FIELD" => "O.USER_DESCRIPTION", "TYPE" => "string"),
"ADDITIONAL_INFO" => array("FIELD" => "O.ADDITIONAL_INFO", "TYPE" => "string"),
"PS_STATUS" => array("FIELD" => "O.PS_STATUS", "TYPE" => "char"),
"PS_STATUS_CODE" => array("FIELD" => "O.PS_STATUS_CODE", "TYPE" => "string"),
"PS_STATUS_DESCRIPTION" => array("FIELD" => "O.PS_STATUS_DESCRIPTION", "TYPE" => "string"),
"PS_STATUS_MESSAGE" => array("FIELD" => "O.PS_STATUS_MESSAGE", "TYPE" => "string"),
"PS_SUM" => array("FIELD" => "O.PS_SUM", "TYPE" => "double"),
"PS_CURRENCY" => array("FIELD" => "O.PS_CURRENCY", "TYPE" => "string"),
"PS_RESPONSE_DATE" => array("FIELD" => "O.PS_RESPONSE_DATE", "TYPE" => "datetime"),
"COMMENTS" => array("FIELD" => "O.COMMENTS", "TYPE" => "string"),
"TAX_VALUE" => array("FIELD" => "O.TAX_VALUE", "TYPE" => "double"),
"STAT_GID" => array("FIELD" => "O.STAT_GID", "TYPE" => "string"),
"RECURRING_ID" => array("FIELD" => "O.RECURRING_ID", "TYPE" => "int"),
"RECOUNT_FLAG" => array("FIELD" => "O.RECOUNT_FLAG", "TYPE" => "char"),
"AFFILIATE_ID" => array("FIELD" => "O.AFFILIATE_ID", "TYPE" => "int"),
"LOCKED_BY" => array("FIELD" => "O.LOCKED_BY", "TYPE" => "int"),
"LOCK_STATUS" => array("FIELD" => "if(DATE_LOCK is null, 'green', if(DATE_ADD(DATE_LOCK, interval ".$maxLock." MINUTE)<now(), 'green', if(LOCKED_BY=".$userID.", 'yellow', 'red')))", "TYPE" => "string"),
"LOCK_USER_NAME" => array("FIELD" => "concat('(', UL.LOGIN ,') ',UL.NAME,' ',UL.LAST_NAME)", "FROM" => "LEFT JOIN b_user UL ON (O.LOCKED_BY = UL.ID)", "TYPE" => "string"),
"DELIVERY_DOC_NUM" => array("FIELD" => "O.DELIVERY_DOC_NUM", "TYPE" => "string"),
"DELIVERY_DOC_DATE" => array("FIELD" => "O.DELIVERY_DOC_DATE", "TYPE" => "date"),
"UPDATED_1C" => array("FIELD" => "O.UPDATED_1C", "TYPE" => "string"),
"STORE_ID" => array("FIELD" => "O.STORE_ID", "TYPE" => "int"),
"BY_RECOMMENDATION" => array("FIELD" => "(SELECT (CASE WHEN MAX(BR.RECOMMENDATION) IS NULL OR MAX(BR.RECOMMENDATION) = '' THEN 'N' ELSE 'Y' END) FROM b_sale_basket BR WHERE BR.ORDER_ID=O.ID GROUP BY BR.ORDER_ID)", "TYPE" => "char"),
"ORDER_TOPIC" => array("FIELD" => "O.ORDER_TOPIC", "TYPE" => "string"),
"RESPONSIBLE_ID" => array("FIELD" => "O.RESPONSIBLE_ID", "TYPE" => "int"),
"DATE_PAY_BEFORE" => array("FIELD" => "O.DATE_PAY_BEFORE", "TYPE" => "date"),
"DATE_BILL" => array("FIELD" => "O.DATE_BILL", "TYPE" => "date"),
"ACCOUNT_NUMBER" => array("FIELD" => "O.ACCOUNT_NUMBER", "TYPE" => "string"),
"TRACKING_NUMBER" => array("FIELD" => "O.TRACKING_NUMBER", "TYPE" => "string"),
"XML_ID" => array("FIELD" => "O.XML_ID", "TYPE" => "string"),
"ID_1C" => array("FIELD" => "O.ID_1C", "TYPE" => "string"),
"VERSION_1C" => array("FIELD" => "O.VERSION_1C", "TYPE" => "string"),
"VERSION" => array("FIELD" => "O.VERSION", "TYPE" => "int"),
"EXTERNAL_ORDER" => array("FIELD" => "O.EXTERNAL_ORDER", "TYPE" => "string"),
"NAME_SEARCH" => array("FIELD" => "U.NAME, U.LAST_NAME, U.SECOND_NAME, U.EMAIL, U.LOGIN, U.ID", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (O.USER_ID = U.ID)"),
"USER_LOGIN" => array("FIELD" => "U.LOGIN", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (O.USER_ID = U.ID)"),
"USER_NAME" => array("FIELD" => "U.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (O.USER_ID = U.ID)"),
"USER_LAST_NAME" => array("FIELD" => "U.LAST_NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (O.USER_ID = U.ID)"),
"USER_EMAIL" => array("FIELD" => "U.EMAIL", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (O.USER_ID = U.ID)"),
"USER_GROUP_ID" => array("FIELD" => "UG.GROUP_ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_user_group UG ON (UG.USER_ID = O.USER_ID)"),
"RESPONSIBLE_LOGIN" => array("FIELD" => "UR.LOGIN", "TYPE" => "string", "FROM" => "LEFT JOIN b_user UR ON (O.RESPONSIBLE_ID = UR.ID)"),
"RESPONSIBLE_NAME" => array("FIELD" => "UR.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_user UR ON (O.RESPONSIBLE_ID = UR.ID)"),
"RESPONSIBLE_LAST_NAME" => array("FIELD" => "UR.LAST_NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_user UR ON (O.RESPONSIBLE_ID = UR.ID)"),
"RESPONSIBLE_SECOND_NAME" => array("FIELD" => "UR.SECOND_NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_user UR ON (O.RESPONSIBLE_ID = UR.ID)"),
"RESPONSIBLE_EMAIL" => array("FIELD" => "UR.EMAIL", "TYPE" => "string", "FROM" => "LEFT JOIN b_user UR ON (O.RESPONSIBLE_ID = UR.ID)"),
"RESPONSIBLE_WORK_POSITION" => array("FIELD" => "UR.WORK_POSITION", "TYPE" => "string", "FROM" => "LEFT JOIN b_user UR ON (O.RESPONSIBLE_ID = UR.ID)"),
"RESPONSIBLE_PERSONAL_PHOTO" => array("FIELD" => "UR.PERSONAL_PHOTO", "TYPE" => "string", "FROM" => "LEFT JOIN b_user UR ON (O.RESPONSIBLE_ID = UR.ID)"),
"BUYER" => array("FIELD" => "U.LOGIN,U.NAME,U.LAST_NAME,U.EMAIL,U.ID", "WHERE_ONLY" => "Y", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (O.USER_ID = U.ID)"),
"BASKET_ID" => array("FIELD" => "B.ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"),
"BASKET_PRODUCT_ID" => array("FIELD" => "B.PRODUCT_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"),
"BASKET_PRODUCT_XML_ID" => array("FIELD" => "B.PRODUCT_XML_ID", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"),
"BASKET_MODULE" => array("FIELD" => "B.MODULE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"),
"BASKET_NAME" => array("FIELD" => "B.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"),
"BASKET_QUANTITY" => array("FIELD" => "B.QUANTITY", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"),
"BASKET_PRICE" => array("FIELD" => "B.PRICE", "TYPE" => "double", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"),
"BASKET_CURRENCY" => array("FIELD" => "B.CURRENCY", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"),
"BASKET_DISCOUNT_PRICE" => array("FIELD" => "B.DISCOUNT_PRICE", "TYPE" => "double", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"),
"BASKET_DISCOUNT_NAME" => array("FIELD" => "B.DISCOUNT_NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"),
"BASKET_DISCOUNT_VALUE" => array("FIELD" => "B.DISCOUNT_VALUE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"),
"BASKET_DISCOUNT_COUPON" => array("FIELD" => "B.DISCOUNT_COUPON", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"),
"BASKET_VAT_RATE" => array("FIELD" => "B.VAT_RATE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"),
"BASKET_RECOMMENDATION" => array("FIELD" => "B.RECOMMENDATION", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"),
"BASKET_PRICE_TOTAL" => array("FIELD" => "(B.PRICE * B.QUANTITY)", "TYPE" => "double", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"),
"PROPERTY_ID" => array("FIELD" => "SP.ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props_value SP ON (O.ID = SP.ORDER_ID)"),
"PROPERTY_ORDER_PROPS_ID" => array("FIELD" => "SP.ORDER_PROPS_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props_value SP ON (O.ID = SP.ORDER_ID)"),
"PROPERTY_NAME" => array("FIELD" => "SP.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props_value SP ON (O.ID = SP.ORDER_ID)"),
"PROPERTY_VALUE" => array("FIELD" => "SP.VALUE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props_value SP ON (O.ID = SP.ORDER_ID)"),
"PROPERTY_CODE" => array("FIELD" => "SP.CODE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props_value SP ON (O.ID = SP.ORDER_ID)"),
"PROPERTY_VAL_BY_CODE" => array("FIELD" => "SP.VALUE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props_value SP ON (O.ID = SP.ORDER_ID)"),
"DELIVERY_DATE_REQUEST" => array("FIELD" => "OD.DATE_REQUEST", "TYPE" => "datetime", "FROM" => "LEFT JOIN b_sale_order_delivery OD ON (O.ID = OD.ORDER_ID)")
);
require_once $_SERVER["DOCUMENT_ROOT"].'/bitrix/modules/sale/general/status.php';
CSaleStatusAdapter::addFieldsTo($arFields, 'O.STATUS_ID', 'STATUS_PERMS_');
// <-- FIELDS
$arPropIDsTmp = array();
foreach ($arOrder as $key => $value)
CSaleOrder::PrepareGetListArray($key, $arFields, $arPropIDsTmp);
foreach ($arFilter as $key => $value)
{
$arKeyTmp = CSaleOrder::GetFilterOperation($key);
$key = $arKeyTmp["FIELD"];
CSaleOrder::PrepareGetListArray($key, $arFields, $arPropIDsTmp);
}
if (is_array($arGroupBy))
foreach ($arGroupBy as $key => $value)
CSaleOrder::PrepareGetListArray($key, $arFields, $arPropIDsTmp);
foreach ($arSelectFields as $key => $value)
CSaleOrder::PrepareGetListArray($key, $arFields, $arPropIDsTmp);
$arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields, $obUserFieldsSql, $callback, $arOptions);
$arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
$r = $obUserFieldsSql->GetFilter();
$strSqlUFFilter = '';
if(strlen($r)>0)
$strSqlUFFilter = " (".$r.") ";
if (is_array($arGroupBy) && count($arGroupBy)==0)
{
$strSql =
"SELECT ".$arSqls["SELECT"]." ".
$obUserFieldsSql->GetSelect()." ".
"FROM b_sale_order O ".
" ".$arSqls["FROM"]." ".
$obUserFieldsSql->GetJoin("O.ID")." ";
if (strlen($arSqls["WHERE"]) > 0)
$strSql .= "WHERE ".$arSqls["WHERE"]." ";
if (strlen($arSqls["WHERE"]) > 0 && strlen($strSqlUFFilter) > 0)
$strSql .= " AND ".$strSqlUFFilter." ";
elseif (strlen($arSqls["WHERE"]) <= 0 && strlen($strSqlUFFilter) > 0)
$strSql .= " WHERE ".$strSqlUFFilter." ";
if (strlen($arSqls["GROUPBY"]) > 0)
$strSql .= "GROUP BY ".$arSqls["GROUPBY"]." ";
//echo "!1!=".htmlspecialcharsbx($strSql)."<br>";
$dbRes = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
$dbRes->SetUserFields($USER_FIELD_MANAGER->GetUserFields("ORDER"));
if ($arRes = $dbRes->Fetch())
return $arRes["CNT"];
else
return False;
}
$strSql =
"SELECT ".$arSqls["SELECT"]." ".
$obUserFieldsSql->GetSelect()." ".
"FROM b_sale_order O ".
" ".$arSqls["FROM"]." ".
$obUserFieldsSql->GetJoin("O.ID")." ";
if (strlen($arSqls["WHERE"]) > 0)
$strSql .= "WHERE ".$arSqls["WHERE"]." ";
if (strlen($arSqls["WHERE"]) > 0 && strlen($strSqlUFFilter) > 0)
$strSql .= " AND ".$strSqlUFFilter." ";
elseif (strlen($arSqls["WHERE"]) <= 0 && strlen($strSqlUFFilter) > 0)
$strSql .= " WHERE ".$strSqlUFFilter." ";
if (strlen($arSqls["GROUPBY"]) > 0)
$strSql .= "GROUP BY ".$arSqls["GROUPBY"]." ";
if (strlen($arSqls["ORDERBY"]) > 0)
$strSql .= "ORDER BY ".$arSqls["ORDERBY"]." ";
if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"])<=0)
{
$strSql_tmp =
"SELECT COUNT('x') as CNT ".
"FROM b_sale_order O ".
" ".$arSqls["FROM"]." ".
$obUserFieldsSql->GetJoin("O.ID")." ";
if (strlen($arSqls["WHERE"]) > 0)
$strSql_tmp .= "WHERE ".$arSqls["WHERE"]." ";
if (strlen($arSqls["WHERE"]) > 0 && strlen($strSqlUFFilter) > 0)
$strSql_tmp .= " AND ".$strSqlUFFilter." ";
elseif (strlen($arSqls["WHERE"]) <= 0 && strlen($strSqlUFFilter) > 0)
$strSql_tmp .= " WHERE ".$strSqlUFFilter." ";
if (strlen($arSqls["GROUPBY"]) > 0)
$strSql_tmp .= "GROUP BY ".$arSqls["GROUPBY"]." ";
//echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>";
$dbRes = $DB->Query($strSql_tmp, false, "File: ".__FILE__."<br>Line: ".__LINE__);
$cnt = 0;
if (strlen($arSqls["GROUPBY"]) <= 0)
{
if ($arRes = $dbRes->Fetch())
$cnt = $arRes["CNT"];
}
else
{
$cnt = $dbRes->SelectedRowsCount();
}
$dbRes = new CDBResult();
//echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>";
$dbRes->SetUserFields($USER_FIELD_MANAGER->GetUserFields("ORDER"));
$dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
}
else
{
if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"])>0)
$strSql .= "LIMIT ".IntVal($arNavStartParams["nTopCount"]);
//echo "!3!=".htmlspecialcharsbx($strSql)."<br>";
$dbRes = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
$dbRes->SetUserFields($USER_FIELD_MANAGER->GetUserFields("ORDER"));
}
return $dbRes;
}
function GetLockStatus($ID, &$lockedBY, &$dateLock)
{
global $DB;
$ID = IntVal($ID);
if ($ID <= 0)
return False;
$maxLock = IntVal(COption::GetOptionString("sale", "MAX_LOCK_TIME", "60"));
$userID = IntVal($GLOBALS["USER"]->GetID());
$strSql =
"SELECT LOCKED_BY, ".
" ".$DB->DateToCharFunction("DATE_LOCK")." as DATE_LOCK, ".
" if(DATE_LOCK is null, 'green', ".
" if(DATE_ADD(DATE_LOCK, interval ".$maxLock." MINUTE)<now(), 'green', ".
" if(LOCKED_BY=".$userID.", 'yellow', 'red'))) as LOCK_STATUS ".
"FROM b_sale_order ".
"WHERE ID = ".$ID." ";
$dbRes = $DB->Query($strSql);
$arRes = $dbRes->Fetch();
$lockedBY = $arRes["LOCKED_BY"];
$dateLock = $arRes["DATE_LOCK"];
return $arRes["LOCK_STATUS"];
}
/*
* Change order to add stories
*
* @param array $arOrderOld old order fields
* @return bool true
*/
public function AddOrderHistory($OldFields, $NewFields)
{
global $DB, $USER;
foreach(GetModuleEvents("sale", "OnBeforeOrderAddHistory", true) as $arEvent)
if (ExecuteModuleEventEx($arEvent, Array(&$NewFields))===false)
return false;
if ($OldFields["ID"] <= 0)
return false;
if (isset($NewFields["ID"]))
unset($NewFields["ID"]);
$bChange = false;
$strSql = '';
$arInsert = array("H_USER_ID" => $USER->GetID(), "H_ORDER_ID" => $OldFields["ID"], "H_CURRENCY" => $OldFields["CURRENCY"]);
$arDeleteFields = array(
"ID",
"EMP_CANCELED_ID",
"EMP_MARKED_ID",
"EMP_DEDUCTED_ID",
"EMP_STATUS_ID",
"EMP_ALLOW_DELIVERY_ID",
"LOCKED_BY",
"DATE_LOCK",
"UPDATED_1C",
"DATE_INSERT",
"DATE_UPDATE",
"USER_DESCRIPTION",
"ADDITIONAL_INFO",
"COMMENTS",
"RECOUNT_FLAG",
"RECURRING_ID"
);
foreach ($NewFields as $key => $val)
{
if ($key == "PAY_VOUCHER_DATE" || $key == "DELIVERY_DOC_DATE")
{
$valOld = $val;
$val = CDatabase::FormatDate(trim($val), false, "Y-M-D");
}
if (array_key_exists($key, $OldFields) && strlen($val) > 0 && $val != $OldFields[$key] && !in_array($key, $arDeleteFields))
{
if ($key == "PAY_VOUCHER_DATE" || $key == "DELIVERY_DOC_DATE")
$val = $valOld;
$bChange = true;
$arInsert[$key] = $val;
}
}
if ($bChange)
{
$arPrepare = $DB->PrepareInsert("b_sale_order_history", $arInsert);
$arPrepare[0] .= ", H_DATE_INSERT";
$arPrepare[1] .= ", ".$DB->GetNowFunction();
$strSql = "INSERT INTO b_sale_order_history (".$arPrepare[0].") "."VALUES (".$arPrepare[1].");";
$DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
}
foreach(GetModuleEvents("sale", "OnAfterOrderAddHistory", true) as $arEvent)
ExecuteModuleEventEx($arEvent, Array($NewFields));
return true;
}
}