public function recalculateBasket($arPost) { global $USER; $arRes = array(); if ($this->hideCoupon != "Y") { if (!empty($arPost['delete_coupon'])) { $arRes['VALID_COUPON'] = DiscountCouponsManager::delete($arPost['delete_coupon']); } else { $oldUse = false; if (array_key_exists('coupon', $arPost)) { $arPost['coupon'] = trim((string) $arPost['coupon']); if ($arPost['coupon'] != '') { $arRes['VALID_COUPON'] = DiscountCouponsManager::add($arPost['coupon']); } else { $oldUse = true; } } if ($oldUse) { if (!isset($arRes["VALID_COUPON"]) || $arRes["VALID_COUPON"] === false) { DiscountCouponsManager::clear(true); } } } } $arTmpItems = array(); $dbItems = CSaleBasket::GetList(array("PRICE" => "DESC"), array("FUSER_ID" => CSaleBasket::GetBasketUserID(), "LID" => SITE_ID, "ORDER_ID" => "NULL"), false, false, array("ID", "NAME", "PRODUCT_PROVIDER_CLASS", "CALLBACK_FUNC", "MODULE", "PRODUCT_ID", "QUANTITY", "DELAY", "CAN_BUY", "CURRENCY", "SUBSCRIBE", "TYPE", "SET_PARENT_ID", "NOTES")); while ($arItem = $dbItems->Fetch()) { if (CSaleBasketHelper::isSetItem($arItem)) { continue; } $arTmpItems[] = $arItem; } if (!empty($arTmpItems)) { if (self::$catalogIncluded === null) { self::$catalogIncluded = Loader::includeModule('catalog'); } if (self::$catalogIncluded) { $arTmpItems = getRatio($arTmpItems); } foreach ($arTmpItems as $arItem) { $isFloatQuantity = isset($arItem["MEASURE_RATIO"]) && floatval($arItem["MEASURE_RATIO"]) > 0 && $arItem["MEASURE_RATIO"] != 1 || $this->quantityFloat == "Y" ? true : false; if (!isset($arPost["QUANTITY_" . $arItem["ID"]]) || floatval($arPost["QUANTITY_" . $arItem["ID"]]) <= 0) { $quantityTmp = $isFloatQuantity === true ? floatval($arItem["QUANTITY"]) : intval($arItem["QUANTITY"]); } else { $quantityTmp = $isFloatQuantity === true ? floatval($arPost["QUANTITY_" . $arItem["ID"]]) : intval($arPost["QUANTITY_" . $arItem["ID"]]); } $deleteTmp = $arPost["DELETE_" . $arItem["ID"]] == "Y" ? "Y" : "N"; $delayTmp = $arPost["DELAY_" . $arItem["ID"]] == "Y" ? "Y" : "N"; if ($arItem["CAN_BUY"] == "Y") { $res = $this->checkQuantity($arItem, $quantityTmp); if (!empty($res)) { $arRes["WARNING_MESSAGE"][] = $res["ERROR"]; } } if ($deleteTmp == "Y" && in_array("DELETE", $this->columns)) { if ($arItem["SUBSCRIBE"] == "Y" && is_array($_SESSION["NOTIFY_PRODUCT"][$USER->GetID()])) { unset($_SESSION["NOTIFY_PRODUCT"][$USER->GetID()][$arItem["PRODUCT_ID"]]); } CSaleBasket::Delete($arItem["ID"]); } elseif ($arItem["DELAY"] == "N" && $arItem["CAN_BUY"] == "Y") { $arFields = array(); if (in_array("QUANTITY", $this->columns)) { $arFields["QUANTITY"] = $quantityTmp; } if (in_array("DELAY", $this->columns)) { $arFields["DELAY"] = $delayTmp; } if (!empty($arFields) && ($arItem["QUANTITY"] != $arFields["QUANTITY"] && in_array("QUANTITY", $this->columns) || $arItem["DELAY"] != $arFields["DELAY"] && in_array("DELAY", $this->columns))) { CSaleBasket::Update($arItem["ID"], $arFields); } } elseif ($arItem["DELAY"] == "Y" && $arItem["CAN_BUY"] == "Y") { $arFields = array(); if (in_array("DELAY", $this->columns)) { $arFields["DELAY"] = $delayTmp; } if (!empty($arFields) && ($arItem["DELAY"] != $arFields["DELAY"] && in_array("DELAY", $this->columns))) { CSaleBasket::Update($arItem["ID"], $arFields); } } } } return $arRes; }
protected function deleteCouponAction() { if (!isset($this->request["userId"])) { throw new ArgumentNullException("userId"); } if (!isset($this->request["coupon"])) { throw new ArgumentNullException("coupon"); } if (!isset($this->request["orderId"])) { throw new ArgumentNullException("orderId"); } Admin\OrderEdit::initCouponsData($this->request["userId"], $this->request["orderId"]); if (Sale\DiscountCouponsManager::delete($this->request["coupon"])) { $this->addResultData('RESULT', 'OK'); } else { $this->addResultError('ERROR'); } }
unset($couponManagerParams, $couponManagerMode); $newCoupons = array(); if (!empty($_REQUEST['coupon'])) $newCoupons = fGetCoupon($_REQUEST['coupon']); if (!empty($newCoupons)) { foreach ($newCoupons as &$oneCoupon) { $resultCoupon = DiscountCouponsManager::add($oneCoupon); } unset($resultCoupon, $oneCoupon); } unset($newCoupons); if (!empty($_REQUEST['deleteCoupon'])) { $resultCoupon = DiscountCouponsManager::delete($_REQUEST['deleteCoupon']); unset($resultCoupon); } $arOrderProduct = CUtil::JsObjectToPhp($product); $arOrderOptions = array( 'CART_FIX' => $cartFix ); $arOrderProductPrice = fGetUserShoppingCart($arOrderProduct, $LID, $recalcOrder); foreach ($arOrderProductPrice as &$arItem) // tmp hack not to update basket quantity data from catalog { $arItem["ID_TMP"] = $arItem["ID"]; unset($arItem["ID"]); }
/** * @deprecated deprecated since catalog 15.0.4 * @see \Bitrix\Sale\DiscountCouponsManager * * @param int $intUserID User id. * @param array $arCoupons Coupon code list. * @param array $arModules Modules list. * @return bool */ public static function OnClearCouponList($intUserID, $arCoupons, $arModules) { global $USER; $boolResult = false; if (empty($arModules) || is_array($arModules) && in_array('catalog', $arModules)) { if (!empty($arCoupons)) { if (!is_array($arCoupons)) { $arCoupons = array($arCoupons); } $intUserID = (int) $intUserID; if (self::$existCouponsManager === null) { self::initCouponManager(); } if (self::$existCouponsManager) { if ($intUserID == DiscountCouponsManager::getUserId()) { foreach ($arCoupons as &$coupon) { if (DiscountCouponsManager::delete($coupon)) { $boolResult = true; } } unset($coupon); return $boolResult; } return false; } else { if ($intUserID > 0) { $boolCurrentUser = $USER->IsAuthorized() && $intUserID == $USER->GetID(); foreach ($arCoupons as &$strOneCoupon) { if (self::EraseCouponByManage($intUserID, $strOneCoupon)) { $boolResult = true; } if ($boolCurrentUser) { self::EraseCoupon($strOneCoupon); } } unset($strOneCoupon); } elseif (0 == $intUserID && !$USER->IsAuthorized()) { foreach ($arCoupons as &$strOneCoupon) { if (self::EraseCoupon($strOneCoupon)) { $boolResult = true; } } unset($strOneCoupon); } } } } return $boolResult; }