42 if (empty($arOrder[
'BASKET_ITEMS']) || !is_array($arOrder[
'BASKET_ITEMS']))
51 if ($isOrderConverted !=
'N')
53 if (isset($arOrder[
'DELIVERY_ID']) && $arOrder[
'DELIVERY_ID'] !=
'')
55 $oldDelivery = $arOrder[
'DELIVERY_ID'];
58 $adminSection = (defined(
'ADMIN_SECTION') &&
ADMIN_SECTION ===
true);
62 $modeParams =
array();
63 if (isset($arOrder[
'CURRENCY']))
64 $modeParams[
'CURRENCY'] = $arOrder[
'CURRENCY'];
65 if (isset($arOrder[
'SITE_ID']))
67 $modeParams[
'SITE_ID'] = $arOrder[
'SITE_ID'];
68 if (!isset($modeParams[
'CURRENCY']))
80 $basketIdList =
array();
81 foreach ($arOrder[
'BASKET_ITEMS'] as $basketId => $basketItem)
83 if (isset($basketItem[
'ID']))
85 if (!isset($basketItem[
'PRODUCT_PRICE_ID']) || !isset($basketItem[
'PRICE_TYPE_ID']))
87 $basketIdList[$basketItem[
'ID']] = $basketId;
91 unset($basketId, $basketItem);
92 if (!empty($basketIdList))
95 'select' =>
array(
'ID',
'PRODUCT_PRICE_ID',
'PRICE_TYPE_ID'),
96 'filter' =>
array(
'@ID' => array_keys($basketIdList))
100 if (!isset($basketIdList[$row[
'ID']]))
102 $index = $basketIdList[$row[
'ID']];
103 $arOrder[
'BASKET_ITEMS'][$index][
'PRODUCT_PRICE_ID'] = $row[
'PRODUCT_PRICE_ID'];
104 $arOrder[
'BASKET_ITEMS'][$index][
'PRICE_TYPE_ID'] = $row[
'PRICE_TYPE_ID'];
110 unset($adminSection);
111 if (!empty($modeParams))
117 'SITE_ID' => $modeParams[
'SITE_ID'],
118 'CURRENCY' => $modeParams[
'CURRENCY']
124 if (!empty($modeParams))
127 unset($modeParams, $mode);
130 if (!$onlySaleDiscounts)
134 $applyMode = Sale\Discount::getApplyMode();
135 if ($applyMode ==
Sale\Discount::APPLY_MODE_FULL_LAST || $applyMode ==
Sale\Discount::APPLY_MODE_FULL_DISABLE)
137 foreach ($arOrder[
'BASKET_ITEMS'] as &$basketItem)
139 if (isset($basketItem[
'LAST_DISCOUNT']) && $basketItem[
'LAST_DISCOUNT'] ==
'Y')
149 $arOrder[
'DISCOUNT_LIST'] =
array();
150 $arOrder[
'FULL_DISCOUNT_LIST'] =
array();
153 $groupDiscountIterator = Sale\Internals\DiscountGroupTable::getList(
array(
154 'select' =>
array(
'DISCOUNT_ID'),
155 'filter' =>
array(
'@GROUP_ID' => CUser::GetUserGroup($arOrder[
'USER_ID']),
'=ACTIVE' =>
'Y'),
156 'order' =>
array(
'DISCOUNT_ID' =>
'ASC')
158 while ($groupDiscount = $groupDiscountIterator->fetch())
160 $groupDiscount[
'DISCOUNT_ID'] = (int)$groupDiscount[
'DISCOUNT_ID'];
161 if ($groupDiscount[
'DISCOUNT_ID'] > 0)
162 $arIDS[$groupDiscount[
'DISCOUNT_ID']] =
true;
167 $arIDS = array_keys($arIDS);
172 $iblockPropList =
array();
176 '=MODULE_ID' =>
'catalog',
178 'ELEMENT_PROPERTY',
'PRICE'
182 if (empty($entityList))
188 if (empty($entityList[
'catalog'][
'ELEMENT_PROPERTY']))
194 foreach ($entityList[
'catalog'][
'ELEMENT_PROPERTY'] as
$entity)
196 $entityField = explode(
':',
$entity[
'FIELD_TABLE']);
197 if (isset($entityField[1]))
199 $propId = (int)$entityField[1];
201 $iblockPropList[$propId] = $propId;
207 if (empty($iblockPropList))
215 'price' => !empty($entityList[
'catalog'][
'PRICE']),
216 'props' => $useProps,
220 $arExtend[
'iblock'][
'props'] = $iblockPropList;
221 unset($iblockPropList, $useProps);
222 foreach (
GetModuleEvents(
'sale',
'OnExtendBasketItems',
true) as $arEvent)
225 foreach ($arOrder[
'BASKET_ITEMS'] as &$arOneItem)
228 array_key_exists(
'PRODUCT_PROVIDER_CLASS', $arOneItem) && empty($arOneItem[
'PRODUCT_PROVIDER_CLASS'])
229 && array_key_exists(
'CALLBACK_FUNC', $arOneItem) && empty($arOneItem[
'CALLBACK_FUNC'])
230 && (!isset($arOneItem[
'CUSTOM_PRICE']) || $arOneItem[
'CUSTOM_PRICE'] !=
'Y')
233 if (isset($arOneItem[
'DISCOUNT_PRICE']))
235 $arOneItem[
'PRICE'] += $arOneItem[
'DISCOUNT_PRICE'];
236 $arOneItem[
'DISCOUNT_PRICE'] = 0;
237 $arOneItem[
'BASE_PRICE'] = $arOneItem[
'PRICE'];
241 if (isset($arOneItem))
244 if (empty(self::$cacheDiscountHandlers))
250 $needDiscountHandlers =
array();
251 foreach ($arIDS as $discountID)
253 if (!isset(self::$cacheDiscountHandlers[$discountID]))
254 $needDiscountHandlers[] = $discountID;
257 if (!empty($needDiscountHandlers))
260 if (!empty($discountHandlersList))
262 foreach ($discountHandlersList as $discountID => $discountHandlers)
264 self::$cacheDiscountHandlers[$discountID] = $discountHandlers;
266 unset($discountHandlers, $discountID);
268 unset($discountHandlersList);
270 unset($needDiscountHandlers);
274 $discountSelect =
array(
275 'ID',
'PRIORITY',
'SORT',
'LAST_DISCOUNT',
'LAST_LEVEL_DISCOUNT',
'UNPACK',
'APPLICATION',
'USE_COUPONS',
'EXECUTE_MODULE',
276 'NAME',
'CONDITIONS_LIST',
'ACTIONS_LIST'
278 $discountOrder =
array(
'PRIORITY' =>
'DESC',
'SORT' =>
'ASC',
'ID' =>
'ASC');
279 $discountFilter =
array(
281 '=LID' => $arOrder[
'SITE_ID'],
285 '<=ACTIVE_FROM' => $currentDatetime
290 '>=ACTIVE_TO' => $currentDatetime
294 $couponsDiscount =
array();
295 if (!empty($couponList))
298 'select' =>
array(
'DISCOUNT_ID',
'COUPON'),
299 'filter' =>
array(
'@DISCOUNT_ID' => $arIDS,
'@COUPON' => array_keys($couponList)),
300 'order' =>
array(
'DISCOUNT_ID' =>
'ASC')
304 $id = (int)$row[
'DISCOUNT_ID'];
305 if (isset($couponsDiscount[$id]))
307 $couponsDiscount[$id] = $row[
'COUPON'];
312 if (empty($couponsDiscount))
314 $discountFilter[
'=USE_COUPONS'] =
'N';
318 $discountFilter[] =
array(
320 '=USE_COUPONS' =>
'N',
322 '=USE_COUPONS' =>
'Y',
323 '@ID' => array_keys($couponsDiscount)
328 $newDiscounts =
null;
329 $resultDiscountFullList =
array();
330 $discountIterator = Sale\Internals\DiscountTable::getList(
array(
331 'select' => $discountSelect,
332 'filter' => $discountFilter,
333 'order' => $discountOrder
336 $resultDiscountList =
array();
337 $resultDiscountKeys =
array();
338 $resultDiscountIndex = 0;
339 $skipPriorityLevel =
null;
340 while (
$discount = $discountIterator->fetch())
346 if($skipPriorityLevel ==
$discount[
'PRIORITY'])
350 $skipPriorityLevel =
null;
352 static::prefillDiscountFields(
$discount, $couponList);
353 $applyFlag = static::workWithDiscountHandlers(
$discount);
355 if ($isOrderConverted !=
'N')
357 if ($applyFlag && self::__Unpack($arOrder,
$discount[
'UNPACK']))
359 $oldOrder = $arOrder;
360 if ($isOrderConverted !=
'N')
365 if ($isOrderConverted !=
'N')
370 $resultDiscountList[$resultDiscountIndex] =
array(
376 'LAST_DISCOUNT' =>
$discount[
'LAST_DISCOUNT'],
377 'CONDITIONS' => serialize(
$discount[
'CONDITIONS_LIST']),
379 'ACTIONS' => serialize(
$discount[
'ACTIONS_LIST']),
380 'APPLICATION' =>
$discount[
'APPLICATION'],
381 'RESULT' => self::getDiscountResult($oldOrder, $arOrder,
false),
382 'HANDLERS' => self::$cacheDiscountHandlers[
$discount[
'ID']],
383 'USE_COUPONS' =>
$discount[
'USE_COUPONS'],
384 'COUPON' => (
$discount[
'USE_COUPONS'] ==
'Y' ? $couponList[
$discount[
'DISCOUNT_COUPON']] :
false)
386 $resultDiscountKeys[
$discount[
'ID']] = $resultDiscountIndex;
387 $resultDiscountIndex++;
391 if (
$discount[
'LAST_LEVEL_DISCOUNT'] ==
'Y')
393 $skipPriorityLevel =
$discount[
'PRIORITY'];
401 if (!empty($discountResult[
'DELIVERY']) || !empty($discountResult[
'BASKET']))
410 $resultDiscountList[$resultDiscountIndex] =
array(
416 'LAST_DISCOUNT' =>
$discount[
'LAST_DISCOUNT'],
417 'CONDITIONS' => serialize(
$discount[
'CONDITIONS_LIST']),
419 'ACTIONS' => serialize(
$discount[
'ACTIONS_LIST']),
420 'APPLICATION' =>
$discount[
'APPLICATION'],
421 'RESULT' => $discountResult,
422 'HANDLERS' => self::$cacheDiscountHandlers[
$discount[
'ID']],
423 'USE_COUPONS' =>
$discount[
'USE_COUPONS'],
424 'COUPON' => (
$discount[
'USE_COUPONS'] ==
'Y' ? $couponList[
$discount[
'DISCOUNT_COUPON']] :
false)
426 $resultDiscountKeys[
$discount[
'ID']] = $resultDiscountIndex;
427 $resultDiscountIndex++;
431 unset($discountResult);
437 $arOrder[
'DISCOUNT_LIST'] = $resultDiscountList;
438 $arOrder[
'FULL_DISCOUNT_LIST'] = $resultDiscountFullList;
439 if ($isOrderConverted !=
'N')
442 $orderData = $arOrder;
443 unset($orderData[
'BASKET_ITEMS'], $orderData[
'DISCOUNT_LIST'], $orderData[
'FULL_DISCOUNT_LIST']);
447 $arOrder[
"ORDER_PRICE"] = 0;
448 $arOrder[
"ORDER_WEIGHT"] = 0;
449 $arOrder[
"USE_VAT"] =
false;
450 $arOrder[
"VAT_RATE"] = 0;
451 $arOrder[
"VAT_SUM"] = 0;
452 $arOrder[
"DISCOUNT_PRICE"] = 0.0;
453 $arOrder[
"DISCOUNT_VALUE"] = $arOrder[
"DISCOUNT_PRICE"];
455 $arOrder[
"DELIVERY_PRICE"] = $arOrder[
"PRICE_DELIVERY"];
457 $clearFields =
array(
458 'CATALOG',
'PRICE_TYPE_ID'
464 foreach (array_keys($arOrder[
'BASKET_ITEMS']) as $index)
466 $arShoppingCartItem = $arOrder[
'BASKET_ITEMS'][$index];
469 $customPrice = isset($arShoppingCartItem[
'CUSTOM_PRICE']) && $arShoppingCartItem[
'CUSTOM_PRICE'] ==
'Y';
473 if ($arShoppingCartItem[
'DISCOUNT_PRICE'] > 0)
474 $arShoppingCartItem[
'PRICE'] = $arShoppingCartItem[
'BASE_PRICE'] - $arShoppingCartItem[
'DISCOUNT_PRICE'];
479 if (isset($arShoppingCartItem[
'VAT_RATE']))
481 $vatRate = (float)$arShoppingCartItem[
'VAT_RATE'];
483 $arShoppingCartItem[
'VAT_VALUE'] = (($arShoppingCartItem[
'PRICE'] / ($vatRate + 1)) * $vatRate);
487 $arOrder[
"ORDER_PRICE"] += $arShoppingCartItem[
"PRICE"] * $arShoppingCartItem[
"QUANTITY"];
488 $arOrder[
"ORDER_WEIGHT"] += $arShoppingCartItem[
"WEIGHT"] * $arShoppingCartItem[
"QUANTITY"];
490 $arShoppingCartItem[
"PRICE_FORMATED"] = CCurrencyLang::CurrencyFormat($arShoppingCartItem[
"PRICE"], $arShoppingCartItem[
"CURRENCY"],
true);
491 $arShoppingCartItem[
"DISCOUNT_PRICE_PERCENT"] = 0;
493 if ($arShoppingCartItem[
"BASE_PRICE"] > 0)
494 $arShoppingCartItem[
"DISCOUNT_PRICE_PERCENT"] = ($arShoppingCartItem[
"DISCOUNT_PRICE"] * 100) / $arShoppingCartItem[
"BASE_PRICE"];
495 $arShoppingCartItem[
"DISCOUNT_PRICE_PERCENT_FORMATED"] =
roundEx($arShoppingCartItem[
"DISCOUNT_PRICE_PERCENT"], 0).
"%";
497 if ($arShoppingCartItem[
"VAT_RATE"] > 0)
499 $arOrder[
"USE_VAT"] =
true;
500 if ($arShoppingCartItem[
"VAT_RATE"] > $arOrder[
"VAT_RATE"])
501 $arOrder[
"VAT_RATE"] = $arShoppingCartItem[
"VAT_RATE"];
503 $arOrder[
"VAT_SUM"] += $arShoppingCartItem[
"VAT_VALUE"] * $arShoppingCartItem[
"QUANTITY"];
506 $itemDiscountsApply =
false;
507 $simplePercent =
true;
508 $simplePercentValue =
null;
510 if (!empty($discountResult[
'BASKET'][
$code]))
512 foreach ($discountResult[
'BASKET'][
$code] as $row)
514 if ($row[
'RESULT'][
'APPLY'] !=
'Y')
517 $itemDiscountsApply =
true;
518 $descr = $row[
'RESULT'][
'DESCR_DATA'][0];
529 $simplePercent =
false;
536 if ($simplePercentValue ===
null)
537 $simplePercentValue = $descr[
'VALUE'];
539 $simplePercent =
false;
541 unset($validDiscount, $descr);
545 if (!empty($discountResult[
'ORDER']) && $simplePercent)
547 foreach ($discountResult[
'ORDER'] as
$discount)
555 $itemDiscountsApply =
true;
557 $simplePercentValue !==
null
561 $simplePercent =
false;
571 $simplePercentValue = $descr[
'VALUE'];
577 $simplePercent =
false;
578 if ($simplePercent && $simplePercentValue !==
null)
579 $arShoppingCartItem[
'SIMPLE_DISCOUNT_PRICE_PERCENT'] = $simplePercentValue;
580 $arShoppingCartItem[
'DISCOUNTS_APPLY'] = $itemDiscountsApply;
581 unset(
$code, $simplePercentValue, $simplePercent, $itemDiscountsApply);
584 foreach ($clearFields as $fieldName)
586 if (isset($arShoppingCartItem[$fieldName]))
587 unset($arShoppingCartItem[$fieldName]);
590 $arOrder[
'BASKET_ITEMS'][$index] = $arShoppingCartItem;
591 unset($arShoppingCartItem);
597 if ($isOrderConverted !=
'N' && $oldDelivery !=
'')
598 $arOrder[
'DELIVERY_ID'] = $oldDelivery;
737 if ($discountID <= 0)
741 $clearFields =
array(
768 $clearFields[] =
'CREATED_BY';
770 foreach ($clearFields as $fieldName)
772 if (array_key_exists($fieldName,
$arFields))
775 unset($fieldName, $clearFields);
780 $arFields[
"DISCOUNT_TYPE"] ??= self::OLD_DSC_TYPE_FIX;
798 $arFields[
"DISCOUNT_TYPE"] = self::OLD_DSC_TYPE_FIX;
813 $dbSite = CSite::GetByID(
$arFields[
"LID"]);
814 if (!$dbSite->Fetch())
888 $useConditions = array_key_exists(
'CONDITIONS',
$arFields) ||
$ACTION ===
'ADD';
890 $usePredictions = array_key_exists(
'PREDICTIONS',
$arFields) ||
$ACTION ===
'ADD';
891 $updateData = $useConditions || $useActions || $usePredictions;
893 $usedHandlers =
array();
894 $usedEntities =
array();
896 $conditionData =
array(
897 'HANDLERS' =>
array(),
899 'EXECUTE_MODULE' =>
array()
901 $predictionData =
array(
902 'HANDLERS' =>
array(),
904 'EXECUTE_MODULE' =>
array()
907 'HANDLERS' =>
array(),
909 'EXECUTE_MODULE' =>
array()
915 if ($discountSite ==
'')
927 if (!$usePredictions)
935 $discountInfo = Sale\Internals\DiscountTable::getList(
array(
937 'filter' =>
array(
'=ID' => $discountID)
939 if (empty($discountInfo))
942 if ($discountSite ==
'')
943 $discountSite = $discountInfo[
'LID'];
956 if (!self::prepareDiscountConditions(
960 self::PREPARE_CONDITIONS,
968 $discountInfo[
'UNPACK'] =
'';
969 if (!self::prepareDiscountConditions(
970 $discountInfo[
'CONDITIONS_LIST'],
971 $discountInfo[
'UNPACK'],
973 self::PREPARE_CONDITIONS,
989 if (!self::prepareDiscountConditions(
993 self::PREPARE_ACTIONS,
1001 $discountInfo[
'APPLICATION'] =
'';
1002 if (!self::prepareDiscountConditions(
1003 $discountInfo[
'ACTIONS_LIST'],
1004 $discountInfo[
'APPLICATION'],
1006 self::PREPARE_ACTIONS,
1012 if ($usePredictions)
1017 if (!self::prepareDiscountConditions(
1021 self::PREPARE_CONDITIONS,
1030 isset($discountInfo[
'PREDICTIONS_LIST'])
1031 && $discountInfo[
'PREDICTIONS_LIST'] !==
''
1032 && $discountInfo[
'PREDICTIONS_LIST'] !==
false
1035 $discountInfo[
'PREDICTIONS_APP'] =
'';
1036 if (!self::prepareDiscountConditions(
1037 $discountInfo[
'PREDICTIONS_LIST'],
1038 $discountInfo[
'PREDICTIONS_APP'],
1040 self::PREPARE_CONDITIONS,
1047 if (!empty($conditionData[
'HANDLERS']) || !empty($actionData[
'HANDLERS']) || !empty($predictionData[
'HANDLERS']))
1049 $conditionData[
'HANDLERS'][
'MODULES'] = $conditionData[
'HANDLERS'][
'MODULES'] ?? [];
1050 $actionData[
'HANDLERS'][
'MODULES'] = $actionData[
'HANDLERS'][
'MODULES'] ?? [];
1051 $predictionData[
'HANDLERS'][
'MODULES'] = $predictionData[
'HANDLERS'][
'MODULES'] ?? [];
1053 $conditionData[
'HANDLERS'][
'EXT_FILES'] = $conditionData[
'HANDLERS'][
'EXT_FILES'] ?? [];
1054 $actionData[
'HANDLERS'][
'EXT_FILES'] = $actionData[
'HANDLERS'][
'EXT_FILES'] ?? [];
1055 $predictionData[
'HANDLERS'][
'EXT_FILES'] = $predictionData[
'HANDLERS'][
'EXT_FILES'] ?? [];
1057 $usedHandlers =
array(
1058 'MODULES' => array_unique(array_merge(
1059 $conditionData[
'HANDLERS'][
'MODULES'],
1060 $actionData[
'HANDLERS'][
'MODULES'],
1061 $predictionData[
'HANDLERS'][
'MODULES']
1063 'EXT_FILES' => array_unique(array_merge(
1064 $conditionData[
'HANDLERS'][
'EXT_FILES'],
1065 $actionData[
'HANDLERS'][
'EXT_FILES'],
1066 $predictionData[
'HANDLERS'][
'EXT_FILES']
1071 if (!empty($conditionData[
'EXECUTE_MODULE']) || !empty($actionData[
'EXECUTE_MODULE']) || !empty($predictionData[
'EXECUTE_MODULE']))
1073 $conditionData[
'EXECUTE_MODULE'] = $conditionData[
'EXECUTE_MODULE'] ?? [];
1074 $actionData[
'EXECUTE_MODULE'] = $actionData[
'EXECUTE_MODULE'] ?? [];
1075 $predictionData[
'EXECUTE_MODULE'] = $predictionData[
'EXECUTE_MODULE'] ?? [];
1077 $executeModuleList = array_merge(
1078 $conditionData[
'EXECUTE_MODULE'],
1079 $actionData[
'EXECUTE_MODULE'],
1080 $predictionData[
'EXECUTE_MODULE']
1083 $executeModuleList = array_unique($executeModuleList);
1084 if (
count($executeModuleList) > 1)
1085 $executeModule =
'sale';
1087 $executeModule = current($executeModuleList);
1088 unset($executeModuleList);
1091 if (!empty($conditionData[
'ENTITY']) || !empty($actionData[
'ENTITY']) || !empty($predictionData[
'ENTITY']))
1093 $conditionData[
'ENTITY'] = $conditionData[
'ENTITY'] ?? [];
1094 $actionData[
'ENTITY'] = $actionData[
'ENTITY'] ?? [];
1095 $predictionData[
'ENTITY'] = $predictionData[
'ENTITY'] ?? [];
1097 $usedEntities = array_merge(
1098 $conditionData[
'ENTITY'],
1099 $actionData[
'ENTITY'],
1100 $predictionData[
'ENTITY']
1104 if ((
$ACTION ==
'ADD' || $updateData) && $executeModule ==
'')
1105 $executeModule =
'all';
1106 if ($executeModule !=
'')
1107 $arFields[
'EXECUTE_MODULE'] = $executeModule;
1133 if($actionConfiguration)
1135 $arFields[
'SHORT_DESCRIPTION'] = serialize($actionConfiguration);
1146 $intUserID = (int)
$USER->GetID();
1147 $strDateFunction =
$DB->GetNowFunction();
1148 $arFields[
'~TIMESTAMP_X'] = $strDateFunction;
1151 if (!array_key_exists(
'MODIFIED_BY',
$arFields) || (
int)
$arFields[
"MODIFIED_BY"] <= 0)
1156 $arFields[
'~DATE_CREATE'] = $strDateFunction;
1288 $extMode = ($extMode ===
true);
1290 if (isset($oldOrder[
'PRICE_DELIVERY']) && isset($currentOrder[
'PRICE_DELIVERY']))
1292 if ($oldOrder[
'PRICE_DELIVERY'] != $currentOrder[
'PRICE_DELIVERY'])
1294 $absValue = $oldOrder[
'PRICE_DELIVERY'] - $currentOrder[
'PRICE_DELIVERY'];
1295 $fullValue = ($extMode && isset($currentOrder[
'PRICE_DELIVERY_ORIG']) ? $currentOrder[
'PRICE_DELIVERY_ORIG'] : $oldOrder[
'PRICE_DELIVERY']);
1296 $percValue = ($fullValue != 0 ? $absValue*100/$fullValue : 0);
1299 'DISCOUNT_TYPE' => ($currentOrder[
'PRICE_DELIVERY'] < $oldOrder[
'PRICE_DELIVERY'] ?
'D' :
'M'),
1300 'VALUE' => $absValue,
1301 'VALUE_PERCENT' => $percValue,
1302 'DELIVERY_ID' => (isset($currentOrder[
'DELIVERY_ID']) ? $currentOrder[
'DELIVERY_ID'] :
false)
1304 unset($percValue, $fullValue, $absValue);
1307 if (!empty($oldOrder[
'BASKET_ITEMS']) && !empty($currentOrder[
'BASKET_ITEMS']))
1309 foreach ($oldOrder[
'BASKET_ITEMS'] as
$key => $item)
1311 if (!isset($currentOrder[
'BASKET_ITEMS'][
$key]))
1313 if ($item[
'PRICE'] != $currentOrder[
'BASKET_ITEMS'][
$key][
'PRICE'])
1315 $newItem = &$currentOrder[
'BASKET_ITEMS'][
$key];
1316 $absValue = $item[
'PRICE'] - $newItem[
'PRICE'];
1317 $fullValue = ($extMode && isset($newItem[
'PRICE_ORIG']) ? $newItem[
'PRICE_ORIG'] : $item[
'PRICE']);
1318 $percValue = ($fullValue != 0 ? $absValue*100/$fullValue : 0);
1319 if (!isset(
$result[
'BASKET']))
1323 'DISCOUNT_TYPE' => ($newItem[
'PRICE'] < $item[
'PRICE'] ?
'D' :
'M'),
1324 'VALUE' => $absValue,
1325 'VALUE_PERCENT' => $percValue,
1326 'BASKET_NUM' =>
$key,
1327 'BASKET_ID' => (isset($newItem[
'ID']) ? $newItem[
'ID'] :
'0'),
1328 'BASKET_PRODUCT_XML_ID' => (isset($newItem[
'PRODUCT_XML_ID']) && $newItem[
'PRODUCT_XML_ID'] !=
'' ? $newItem[
'PRODUCT_XML_ID'] :
false),
1329 'PRODUCT_ID' => $newItem[
'PRODUCT_ID'],
1330 'MODULE' => $newItem[
'MODULE']
1332 unset($percValue, $fullValue, $absValue, $newItem);