public function CheckFields($ACTION, &$arFields, $ID = 0) { global $DB; global $APPLICATION; if ((is_set($arFields, "DISCOUNT_ID") || $ACTION=="ADD") && intval($arFields["DISCOUNT_ID"]) <= 0) { $APPLICATION->ThrowException(GetMessage("KGDC_EMPTY_DISCOUNT"), "EMPTY_DISCOUNT_ID"); return false; } if ((is_set($arFields, "COUPON") || $ACTION=="ADD") && strlen($arFields["COUPON"]) <= 0) { $APPLICATION->ThrowException(GetMessage("KGDC_EMPTY_COUPON"), "EMPTY_COUPON"); return false; } elseif(is_set($arFields, "COUPON")) { $arFilter = array("COUPON" => substr($arFields["COUPON"], 0, 32)); if ($ID > 0) $arFilter["!ID"] = $ID; /** * Получить поля акции */ $arBaseDiscount = CCatalogDiscount::GetByID($arFields["DISCOUNT_ID"]); /** * Получить все купоны с названием */ $arSelect = array("ID", "DISCOUNT_ID", "COUPON"); $rsCoupon = CCatalogDiscountCoupon::GetList(array(),$arFilter, false, false, $arSelect); while ($arCoupon = $rsCoupon->Fetch()) { /** * Для каждого купона получить поля акции и сверить SITE_ID с SITE_ID акции сохраняемого купона */ $arDiscount = CCatalogDiscount::GetByID($arCoupon["DISCOUNT_ID"]); if ($arDiscount["SITE_ID"] == $arBaseDiscount["SITE_ID"]) { $APPLICATION->ThrowException(GetMessage("KGDC_DUPLICATE_COUPON"), "DUPLICATE_COUPON"); return false; } } } if ((is_set($arFields, "ACTIVE") || $ACTION=="ADD") && $arFields["ACTIVE"] != "N") $arFields["ACTIVE"] = "Y"; if ((is_set($arFields, "ONE_TIME") || $ACTION=="ADD") && !in_array($arFields["ONE_TIME"], self::GetCoupontTypes())) $arFields["ONE_TIME"] = self::TYPE_ONE_TIME; if ((is_set($arFields, "DATE_APPLY") || $ACTION=="ADD") && (!$DB->IsDate($arFields["DATE_APPLY"], false, SITE_ID, "FULL"))) $arFields["DATE_APPLY"] = false; return true; } |