예제 #1
0
	$arFields = array(
		"ACTIVE" => (isset($_POST['ACTIVE']) && 'Y' == $_POST['ACTIVE'] ? 'Y' : 'N'),
		"COUPON" => (isset($_POST["COUPON"]) ? $_POST["COUPON"] : ''),
		"DATE_APPLY" => (isset($_POST['DATE_APPLY']) ? $_POST['DATE_APPLY'] : ''),
		"ONE_TIME" => (isset($_POST['ONE_TIME']) ? $_POST['ONE_TIME'] : ''),
		"DESCRIPTION" => (isset($_POST['DESCRIPTION']) ? $_POST['DESCRIPTION'] : ''),
	);

	if ($ID > 0)
	{
		$res = CCatalogDiscountCoupon::Update($ID, $arFields);
	}
	else
	{
		$arFields['DISCOUNT_ID'] = (isset($_POST['DISCOUNT_ID']) ? $_POST['DISCOUNT_ID'] : 0);
		$ID = CCatalogDiscountCoupon::Add($arFields);
		$res = ($ID>0);
	}

	if (!$res)
	{
		if ($ex = $APPLICATION->GetException())
			$errorMessage .= $ex->GetString()."<br>";
		else
			$errorMessage .= (0 < $ID ? str_replace('#ID#', $ID, GetMessage('DSC_CPN_ERR_UPDATE')) : GetMessage('DSC_CPN_ERR_ADD'))."<br>";
		$bVarsFromForm = true;
		$DB->Rollback();
	}
	else
	{
		$DB->Commit();
예제 #2
0
         die;
     }
 } else {
     $DB->StartTransaction();
     $arFields = array("ONE_TIME" => isset($_POST['ONE_TIME']) ? $_POST['ONE_TIME'] : '', "COUNT" => intval(isset($_POST['COUNT']) ? $_POST['COUNT'] : 0));
     if (!array_key_exists($arFields['ONE_TIME'], $arTypeList)) {
         $errorMessage .= GetMessage('BT_CAT_DISC_SUBCOUPON_ERR_COUPON_TYPE_BAD') . "<br>";
         $bVarsFromForm = true;
     }
     if (0 >= $arFields['COUNT']) {
         $errorMessage .= GetMessage('BT_CAT_DISC_SUBCOUPON_ERR_COUNT_BAD') . "<br>";
         $bVarsFromForm = true;
     }
     if (!$bVarsFromForm) {
         for ($i = 0; $i < $arFields['COUNT']; $i++) {
             $CID = CCatalogDiscountCoupon::Add(array("DISCOUNT_ID" => $intDiscountID, "ACTIVE" => "Y", "ONE_TIME" => $arFields['ONE_TIME'], "COUPON" => CatalogGenerateCoupon(), "DATE_APPLY" => false));
             $cRes = $CID > 0;
             if (!$cRes) {
                 if ($ex = $APPLICATION->GetException()) {
                     $errorMessage .= $ex->GetString() . "<br>";
                 } else {
                     $errorMessage .= GetMessage('BT_CAT_DISCOUNT_EDIT_ERR_COUPON_ADD') . "<br>";
                 }
                 $bVarsFromForm = true;
                 break;
             }
         }
     }
     if (!$bVarsFromForm) {
         $DB->Commit();
         ?>
예제 #3
0
 public function Update($ID, $arFields)
 {
     global $DB;
     $ID = intval($ID);
     $boolUpdateRestrictions = false;
     if (isset($arFields['GROUP_IDS']) && is_array($arFields['GROUP_IDS']) || isset($arFields['CATALOG_GROUP_IDS']) && is_array($arFields['CATALOG_GROUP_IDS'])) {
         $boolUpdateRestrictions = true;
     }
     if ($boolUpdateRestrictions) {
         $mxRows = self::__ParseArrays($arFields);
         if (!is_array($mxRows) || empty($mxRows)) {
             return false;
         }
     }
     $boolNewVersion = true;
     if (!is_set($arFields, 'CONDITIONS')) {
         self::__ConvertOldConditions('UPDATE', $arFields);
         $boolNewVersion = false;
     }
     if (!CCatalogDiscount::_Update($ID, $arFields)) {
         return false;
     }
     if ($boolNewVersion) {
         $arValuesList = self::__GetConditionValues($arFields);
         if (is_array($arValuesList) && !empty($arValuesList)) {
             self::__GetOldOneEntity($arFields, $arValuesList, 'IBLOCK_IDS', 'CondIBIBlock');
             self::__GetOldOneEntity($arFields, $arValuesList, 'SECTION_IDS', 'CondIBSection');
             self::__GetOldOneEntity($arFields, $arValuesList, 'PRODUCT_IDS', 'CondIBElement');
         }
     }
     if ($boolUpdateRestrictions) {
         if (!CCatalogDiscount::__UpdateSubdiscount($ID, $mxRows)) {
             return false;
         }
     }
     CCatalogDiscount::__UpdateOldEntities($ID, $arFields, true);
     if (is_set($arFields, "CATALOG_COUPONS")) {
         if (!is_array($arFields["CATALOG_COUPONS"])) {
             $arFields["CATALOG_COUPONS"] = array("DISCOUNT_ID" => $ID, "ACTIVE" => "Y", "ONE_TIME" => "Y", "COUPON" => $arFields["CATALOG_COUPONS"], "DATE_APPLY" => false);
         }
         $arKeys = array_keys($arFields["CATALOG_COUPONS"]);
         if (!is_array($arFields["CATALOG_COUPONS"][$arKeys[0]])) {
             $arFields["CATALOG_COUPONS"] = array($arFields["CATALOG_COUPONS"]);
         }
         foreach ($arFields["CATALOG_COUPONS"] as &$arOneCoupon) {
             if (!empty($arOneCoupon['COUPON'])) {
                 $arOneCoupon['DISCOUNT_ID'] = $ID;
                 CCatalogDiscountCoupon::Add($arOneCoupon, false);
             }
             if (isset($arOneCoupon)) {
                 unset($arOneCoupon);
             }
         }
     }
     CCatalogDiscount::SaveFilterOptions();
     foreach (GetModuleEvents("catalog", "OnDiscountUpdate", true) as $arEvent) {
         ExecuteModuleEventEx($arEvent, array($ID, $arFields));
     }
     return $ID;
 }
예제 #4
0
 public function Update($ID, $arFields)
 {
     $ID = (int) $ID;
     if ($ID <= 0) {
         return false;
     }
     foreach (GetModuleEvents("catalog", "OnBeforeDiscountUpdate", true) as $arEvent) {
         if (false === ExecuteModuleEventEx($arEvent, array($ID, &$arFields))) {
             return false;
         }
     }
     $boolExistUserGroups = isset($arFields['GROUP_IDS']) && is_array($arFields['GROUP_IDS']);
     $boolExistPriceTypes = isset($arFields['CATALOG_GROUP_IDS']) && is_array($arFields['CATALOG_GROUP_IDS']);
     $boolUpdateRestrictions = $boolExistUserGroups || $boolExistPriceTypes || isset($arFields['ACTIVE']);
     $mxRows = false;
     if ($boolUpdateRestrictions) {
         if (!$boolExistUserGroups) {
             if (!CCatalogDiscount::__FillArrays($ID, $arFields, 'GROUP_IDS')) {
                 return false;
             }
         }
         if (!$boolExistPriceTypes) {
             if (!CCatalogDiscount::__FillArrays($ID, $arFields, 'CATALOG_GROUP_IDS')) {
                 return false;
             }
         }
         $mxRows = self::__ParseArrays($arFields);
         if (empty($mxRows) || !is_array($mxRows)) {
             return false;
         }
     }
     $boolNewVersion = true;
     if (!array_key_exists('CONDITIONS', $arFields)) {
         self::__ConvertOldConditions('UPDATE', $arFields);
         $boolNewVersion = false;
     }
     if (!CCatalogDiscount::_Update($ID, $arFields)) {
         return false;
     }
     if ($boolNewVersion) {
         $arValuesList = self::__GetConditionValues($arFields);
         if (is_array($arValuesList) && !empty($arValuesList)) {
             self::__GetOldOneEntity($arFields, $arValuesList, 'IBLOCK_IDS', 'CondIBIBlock');
             self::__GetOldOneEntity($arFields, $arValuesList, 'SECTION_IDS', 'CondIBSection');
             self::__GetOldOneEntity($arFields, $arValuesList, 'PRODUCT_IDS', 'CondIBElement');
         }
     }
     if ($boolUpdateRestrictions) {
         if (!CCatalogDiscount::__UpdateSubdiscount($ID, $mxRows, isset($arFields['ACTIVE']) ? $arFields['ACTIVE'] : '')) {
             return false;
         }
     }
     CCatalogDiscount::__UpdateOldEntities($ID, $arFields, true);
     if (array_key_exists('CATALOG_COUPONS', $arFields)) {
         if (!is_array($arFields["CATALOG_COUPONS"])) {
             $arFields["CATALOG_COUPONS"] = array("DISCOUNT_ID" => $ID, "ACTIVE" => "Y", "ONE_TIME" => "Y", "COUPON" => $arFields["CATALOG_COUPONS"], "DATE_APPLY" => false);
         }
         $arKeys = array_keys($arFields["CATALOG_COUPONS"]);
         if (!is_array($arFields["CATALOG_COUPONS"][$arKeys[0]])) {
             $arFields["CATALOG_COUPONS"] = array($arFields["CATALOG_COUPONS"]);
         }
         foreach ($arFields["CATALOG_COUPONS"] as &$arOneCoupon) {
             if (!empty($arOneCoupon['COUPON'])) {
                 $arOneCoupon['DISCOUNT_ID'] = $ID;
                 CCatalogDiscountCoupon::Add($arOneCoupon, false);
             }
             if (isset($arOneCoupon)) {
                 unset($arOneCoupon);
             }
         }
     }
     foreach (GetModuleEvents("catalog", "OnDiscountUpdate", true) as $arEvent) {
         ExecuteModuleEventEx($arEvent, array($ID, $arFields));
     }
     return $ID;
 }