8use Bitrix\Sale\Internals\Entity;
9use Bitrix\Sale\Internals\OrderChangeTable;
51 if ($value !==
null && static::isDate($value))
53 $value = $value->toString();
56 if ($oldValue !==
null && static::isDate($oldValue))
58 $oldValue = $oldValue->toString();
63 foreach(
$fields as $fieldName => $fieldValue)
65 if (static::isDate($fieldValue))
67 $fields[$fieldName] = $fieldValue->toString();
73 'RECORD_TYPE' => static::SALE_ORDER_HISTORY_RECORD_TYPE_FIELD,
74 'ENTITY_NAME' => $entityName,
79 'OLD_VALUE' => $oldValue,
101 $level = static::SALE_ORDER_HISTORY_ACTION_LOG_LEVEL_0;
104 if (!static::checkActionLogLevel($level))
108 'RECORD_TYPE' => static::SALE_ORDER_HISTORY_RECORD_TYPE_ACTION,
109 'ENTITY_NAME' => $entityName,
125 if (!$poolEntity = static::getPoolByEntity($entityName,
$orderId))
133 foreach ($poolEntity as
$entityId => $fieldValue)
146 foreach ($poolEntity as
$entityId => $fieldValue)
153 $dataFields =
array();
154 $oldFields =
array();
157 foreach ($fieldValue as $dataList)
161 if (
$data[
'RECORD_TYPE'] == static::SALE_ORDER_HISTORY_RECORD_TYPE_ACTION
162 ||
$data[
'RECORD_TYPE'] == static::SALE_ORDER_HISTORY_RECORD_TYPE_DEBUG)
170 static::prepareDataForAdd($entityName,
$data[
'TYPE'],
$data[
'ENTITY'],
$data[
'DATA'])
180 $value =
$data[
'VALUE'];
181 $oldValue =
$data[
'OLD_VALUE'];
183 if (static::isDate($value))
184 $value = static::convertDateField($value);
186 if (static::isDate($oldValue))
187 $oldValue = static::convertDateField($oldValue);
189 $oldFields[
$data[
'NAME']] = $oldValue;
192 if (!empty(
$data[
'DATA']) && is_array(
$data[
'DATA']))
194 $dataFields = array_merge($dataFields,
$data[
'DATA']);
197 $dataType = static::FIELD_TYPE_TYPE;
198 if (isset(
$data[
'RECORD_TYPE']) &&
$data[
'RECORD_TYPE'] == static::SALE_ORDER_HISTORY_RECORD_TYPE_FIELD)
200 $dataType = static::FIELD_TYPE_NAME;
203 if (isset(
$data[$dataType]))
211 if (
$entity ===
null && array_key_exists(
'ENTITY',
$data))
220 if ($entityName ===
"")
233 if (!array_key_exists(
$key, $oldFields)
235 array_key_exists(
$key, $oldFields)
240 $arRecord = \CSaleOrderChange::MakeRecordFromField(
$key, $dataFields, $entityName,
$entity);
244 foreach ($arRecord[
"DATA"] as $fieldKey => $fieldValue)
246 if (!isset(
$result[
'OLD_'.$fieldKey]) && isset($dataFields[
'OLD_'.$fieldKey]))
258 static::prepareDataForAdd($entityName, $arRecord[
"TYPE"],
$entity,
$result)
268 if (empty(static::$pool[$entityName][
$orderId]))
269 unset(static::$pool[$entityName][
$orderId]);
271 if (empty(static::$pool[$entityName]))
272 unset(static::$pool[$entityName]);
284 if (empty(static::$pool[
$entity])
304 && ($operationType = static::getOperationType($entityName,
$type))
305 && (!empty($operationType[
"DATA_FIELDS"]) && is_array($operationType[
"DATA_FIELDS"]))
308 foreach ($operationType[
"DATA_FIELDS"] as $fieldName)
310 if (!array_key_exists($fieldName,
$data) && ($value =
$entity->getField($fieldName)))
338 "ENTITY" => $entityName,
352 return OrderChangeTable::add(
$fields);
370 return \CSaleOrderChangeFormat::$operationTypes[
$type];
381 private static function isDate($value)
390 private static function convertDateField($value)
392 if (($value instanceof
Main\Type\DateTime)
393 || ($value instanceof
Main\Type\Date))
395 return $value->toString();
411 if (intval($id) <= 0)
415 'select' =>
array(
'ID'),
416 'filter' =>
array(
'=ORDER_ID' => $id)
421 static::deleteInternal(
$data[
'ID']);
436 return OrderChangeTable::getList($parameters);
446 return OrderChangeTable::delete($primary);
465 $level = static::SALE_ORDER_HISTORY_LOG_LEVEL_0;
468 if (!static::checkLogLevel($level))
473 foreach(
$fields as $fieldName => $fieldValue)
475 if (static::isDate($fieldValue))
477 $fields[$fieldName] = $fieldValue->toString();
483 'RECORD_TYPE' => static::SALE_ORDER_HISTORY_RECORD_TYPE_DEBUG,
484 'ENTITY_NAME' => $entityName,
502 $orderHistoryLogLevel =
Main\Config\Option::get(
'sale',
'order_history_log_level', static::SALE_ORDER_HISTORY_LOG_LEVEL_0);
504 if ($level > $orderHistoryLogLevel)
521 'order_history_action_log_level',
522 static::SALE_ORDER_HISTORY_ACTION_LOG_LEVEL_0
525 if ($level > $orderHistoryActionLogLevel)
543 $days = (int)($days);
549 $expired->add(
'-'.$days.
' days');
552 'filter' =>
array(
'<DATE_CREATE' => $expired->toString())
557 $parameters[
'limit'] = $limit;
560 $dbRes = static::getList($parameters);
563 static::deleteInternal(
$data[
'ID']);
583 $calledClass =
'\\'.static::class;
587 static::deleteOldInternal($days, $hitLimit);
592 $expired->add(
"-$days days");
594 'filter' =>
array(
'<DATE_CREATE' => $expired->toString()),
604 $interval = 24 * 60 * 60;
607 $agentsList = \CAgent::GetList(
array(
"ID"=>
"DESC"),
array(
608 "MODULE_ID" =>
"sale",
609 "NAME" => $calledClass.
"::deleteOldAgent(%"
611 if ($agent = $agentsList->Fetch())
613 \CAgent::Update($agent[
'ID'],
array(
"AGENT_INTERVAL" => $interval));
617 return $calledClass.
"::deleteOldAgent(\"$days\", \"$hitLimit\");";
626 "ORDER_SYNCHRONIZATION_IMPORT",
627 "ORDER_SYNCHRONIZATION_EXPORT",
628 "ORDER_SYNCHRONIZATION_EXPORT_ERROR",
635 "ORDER_STATUS_CHANGED",
636 "ORDER_DELIVERY_ALLOWED",
637 "ORDER_DELIVERY_DOC_CHANGED",
638 "ORDER_PAYMENT_SYSTEM_CHANGED",
639 "ORDER_PAYMENT_VOUCHER_CHANGED",
640 "ORDER_DELIVERY_SYSTEM_CHANGED",
641 "ORDER_PERSON_TYPE_CHANGED",
643 "ORDER_TRACKING_NUMBER_CHANGED",
644 "ORDER_USER_DESCRIPTION_CHANGED",
645 "ORDER_PRICE_DELIVERY_CHANGED",
646 "ORDER_PRICE_CHANGED",
647 "ORDER_RESPONSIBLE_CHANGE",
651 "BASKET_QUANTITY_CHANGED",
652 "BASKET_PRICE_CHANGED",
656 "PAYMENT_SYSTEM_CHANGED",
657 "PAYMENT_VOUCHER_CHANGED",
658 "PAYMENT_PRICE_CHANGED",
662 "SHIPMENT_ITEM_BASKET_ADDED",
663 "SHIPMENT_ITEM_BASKET_REMOVED",
664 "SHIPMENT_DELIVERY_ALLOWED",
669 "SHIPMENT_STATUS_CHANGED",
670 "SHIPMENT_DELIVERY_DOC_CHANGED",
671 "SHIPMENT_TRACKING_NUMBER_CHANGED",
672 "SHIPMENT_PRICE_DELIVERY_CHANGED",
673 "SHIPMENT_AMOUNT_CHANGED",
674 "SHIPMENT_QUANTITY_CHANGED",
675 "SHIPMENT_RESPONSIBLE_CHANGE",
677 "ORDER_UPDATE_ERROR",
678 "BASKET_ITEM_ADD_ERROR",
679 "BASKET_ITEM_UPDATE_ERROR",
680 "SHIPMENT_ADD_ERROR",
681 "SHIPMENT_UPDATE_ERROR",
682 "SHIPMENT_ITEM_ADD_ERROR",
683 "SHIPMENT_ITEM_UPDATE_ERROR",
684 "SHIPMENT_ITEM_STORE_ADD_ERROR",
685 "SHIPMENT_ITEM_STORE_UPDATE_ERROR",
686 "SHIPMENT_ITEM_BASKET_ITEM_EMPTY_ERROR",
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
static get($moduleId, $name, $default="", $siteId=false)
static getPoolByEntity($entity, $orderId)
const SALE_ORDER_HISTORY_RECORD_TYPE_ACTION
const SALE_ORDER_HISTORY_ACTION_LOG_LEVEL_1
static getOperationType($entityName, $type)
static checkActionLogLevel($level)
const SALE_ORDER_HISTORY_RECORD_TYPE_FIELD
static addAction($entityName, $orderId, $type, $id=null, $entity=null, array $fields=array(), $level=null)
static getManagerLogItems()
static getList(array $parameters=array())
const SALE_ORDER_HISTORY_UPDATE
static addRecord($entityName, $orderId, $type, $id=null, $entity=null, array $data=array())
static prepareDataForAdd($entityName, $type, $entity=null, array $data=array())
const SALE_ORDER_HISTORY_LOG_LEVEL_1
static deleteByOrderId($id)
static addLog($entityName, $orderId, $type, $id=null, $entity=null, array $fields=array(), $level=null)
static checkLogLevel($level)
static deleteOldAgent($days, $hitLimit=null)
const SALE_ORDER_HISTORY_RECORD_TYPE_DEBUG
static deleteOldInternal($days, $limit=null)
static deleteInternal($primary)
const SALE_ORDER_HISTORY_ACTION_LOG_LEVEL_0
static addField($entityName, $orderId, $field, $oldValue=null, $value=null, $id=null, $entity=null, array $fields=array())
static collectEntityFields($entityName, $orderId, $id=null)
const SALE_ORDER_HISTORY_LOG_LEVEL_0
static addInternal($fields)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
TruncateText($strText, $intLen)
if(empty($signedUserToken)) $key