public static function CouponOneOrderDisable($intOrderID = 0) { global $DB; if (!empty(self::$arOneOrderCoupons)) { $arCouponID = array_keys(self::$arOneOrderCoupons); foreach (self::$arOneOrderCoupons as &$arCoupon) { $arCoupon['USER_ID'] = intval($arCoupon['USER_ID']); if (0 < $arCoupon['USER_ID']) { CCatalogDiscountCoupon::EraseCouponByManage($arCoupon['USER_ID'], $arCoupon['COUPON']); } else { CCatalogDiscountCoupon::EraseCoupon($arCoupon['COUPON']); } } if (isset($arCoupon)) { unset($arCoupon); } CatalogClearArray($arCouponID, false); if (!empty($arCouponID)) { $strSql = "UPDATE b_catalog_discount_coupon SET ACTIVE='N' WHERE ID IN (" . implode(', ', $arCouponID) . ") AND ONE_TIME='" . self::TYPE_ONE_ORDER . "'"; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } self::$arOneOrderCoupons = array(); } }
public function EraseCoupon($strCoupon) { return CCatalogDiscountCoupon::EraseCoupon($strCoupon); }
public function CouponApply($intUserID, $strCoupon) { global $DB; global $CATALOG_ONETIME_COUPONS_ORDER; $mxResult = false; $intUserID = intval($intUserID); if (0 > $intUserID) { $intUserID = 0; } $strCoupon = strval($strCoupon); $rsCoupons = CCatalogDiscountCoupon::GetList(array(), array("COUPON" => $strCoupon, 'ACTIVE' => 'Y'), false, false, array("ID", "ONE_TIME")); if ($arCoupon = $rsCoupons->Fetch()) { $arCoupon['ID'] = intval($arCoupon['ID']); $arFields = array("DATE_APPLY" => date($DB->DateFormatToPHP(CSite::GetDateFormat("FULL", SITE_ID)))); if (self::TYPE_ONE_TIME == $arCoupon["ONE_TIME"]) { $arFields["ACTIVE"] = "N"; if (0 < $intUserID) { CCatalogDiscountCoupon::EraseCouponByManage($intUserID, $strCoupon); } else { CCatalogDiscountCoupon::EraseCoupon($strCoupon); } } elseif (self::TYPE_ONE_ORDER == $arCoupon["ONE_TIME"]) { if (!is_array($CATALOG_ONETIME_COUPONS_ORDER)) { $CATALOG_ONETIME_COUPONS_ORDER = array(); AddEventHandler("sale", "OnBasketOrder", 'CatalogDeactivateOneTimeCoupons'); AddEventHandler("sale", "OnDoBasketOrder", 'CatalogDeactivateOneTimeCoupons'); } if (!array_key_exists($arCoupon['ID'], $CATALOG_ONETIME_COUPONS_ORDER)) { $CATALOG_ONETIME_COUPONS_ORDER[$arCoupon['ID']] = array('COUPON' => $strCoupon, 'USER_ID' => $intUserID); } } $strUpdate = $DB->PrepareUpdate("b_catalog_discount_coupon", $arFields); if (!empty($strUpdate)) { $strSql = "UPDATE b_catalog_discount_coupon SET " . $strUpdate . " WHERE ID = " . $arCoupon['ID']; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $mxResult = $arCoupon['ID']; } } return $mxResult; }
function CatalogDeactivateOneTimeCoupons($intOrderID = 0) { global $CATALOG_ONETIME_COUPONS_ORDER; global $stackCacheManager; if (is_array($CATALOG_ONETIME_COUPONS_ORDER) && !empty($CATALOG_ONETIME_COUPONS_ORDER)) { $arCouponID = array_keys($CATALOG_ONETIME_COUPONS_ORDER); foreach ($CATALOG_ONETIME_COUPONS_ORDER as &$arCoupon) { $arCoupon['USER_ID'] = intval($arCoupon['USER_ID']); if (0 < $arCoupon['USER_ID']) { CCatalogDiscountCoupon::EraseCouponByManage($arCoupon['USER_ID'], $arCoupon['COUPON']); } else { CCatalogDiscountCoupon::EraseCoupon($arCoupon['COUPON']); } } if (isset($arCoupon)) { unset($arCoupon); } CCatalogDiscountCoupon::__CouponOneOrderDisable($arCouponID); $CATALOG_ONETIME_COUPONS_ORDER = null; $stackCacheManager->Clear("catalog_discount"); } }