Пример #1
0
 /**
  * Save sale discount.
  *
  * @param array &$order				Current order data.
  * @param array $discount			Discount data.
  * @return bool
  */
 public static function calculateSaleDiscount(&$order, $discount)
 {
     if (!self::$init) {
         self::init();
     }
     if (!self::isSuccess()) {
         return false;
     }
     if (!empty($order['DISCOUNT_RESULT']) && is_array($order['DISCOUNT_RESULT'])) {
         $stepResult = self::getStepResult($order);
     } else {
         $stepResult = self::getStepResultOld($order);
     }
     $applied = !empty($stepResult);
     $orderDiscountId = 0;
     $orderCouponId = '';
     if ($applied) {
         self::correctStepResult($order, $stepResult, $discount);
         if (!empty($order['DISCOUNT_DESCR']) && is_array($order['DISCOUNT_DESCR'])) {
             $discount['ACTIONS_DESCR'] = $order['DISCOUNT_DESCR'];
         }
         $discountResult = self::convertDiscount($discount);
         if (!$discountResult->isSuccess()) {
             return false;
         }
         $orderDiscountId = $discountResult->getId();
         $discountData = $discountResult->getData();
         $discount['ORDER_DISCOUNT_ID'] = $orderDiscountId;
         if ($discountData['USE_COUPONS'] == 'Y') {
             if (empty($discount['COUPON'])) {
                 return false;
             }
             $couponResult = self::convertCoupon($discount['COUPON']['COUPON'], $orderDiscountId);
             if (!$couponResult->isSuccess()) {
                 return false;
             }
             $orderCouponId = $couponResult->getId();
             Sale\DiscountCouponsManager::setApply($orderCouponId, $stepResult);
             unset($couponResult);
         }
     }
     if (array_key_exists('DISCOUNT_DESCR', $order)) {
         unset($order['DISCOUNT_DESCR']);
     }
     if (array_key_exists('DISCOUNT_RESULT', $order)) {
         unset($order['DISCOUNT_RESULT']);
     }
     self::$currentOrderData = $order;
     if ($applied && $orderCouponId != '') {
         $couponApply = Sale\DiscountCouponsManager::setApply(self::$couponsCache[$orderCouponId]['COUPON'], $stepResult);
         unset($couponApply);
     }
     if ($applied) {
         self::$discountResult['ORDER'][] = array('DISCOUNT_ID' => $orderDiscountId, 'COUPON_ID' => $orderCouponId, 'RESULT' => $stepResult);
         return true;
     }
     return false;
 }