예제 #1
0
 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();
     }
 }
예제 #2
0
 public function EraseCoupon($strCoupon)
 {
     return CCatalogDiscountCoupon::EraseCoupon($strCoupon);
 }
예제 #3
0
 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;
 }
예제 #4
0
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");
    }
}