Пример #1
0
 public function Update($ID, $arFields)
 {
     global $DB;
     $ID = (int) $ID;
     if ($ID <= 0) {
         return false;
     }
     $boolNewVersion = true;
     $arFields['ID'] = $ID;
     if (!array_key_exists('CONDITIONS', $arFields) && !array_key_exists('ACTIONS', $arFields)) {
         $boolConvert = CSaleDiscount::__ConvertOldFormat('UPDATE', $arFields);
         if (!$boolConvert) {
             return false;
         }
         $boolNewVersion = false;
     }
     if (!CSaleDiscount::CheckFields("UPDATE", $arFields)) {
         return false;
     }
     if ($boolNewVersion) {
         $boolConvert = CSaleDiscount::__SetOldFields('UPDATE', $arFields);
         if (!$boolConvert) {
             return false;
         }
     }
     $strUpdate = $DB->PrepareUpdate("b_sale_discount", $arFields);
     if (!empty($strUpdate)) {
         $strSql = "update b_sale_discount set " . $strUpdate . " where ID = " . $ID;
         $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     if (isset($arFields['USER_GROUPS'])) {
         Internals\DiscountGroupTable::updateByDiscount($ID, $arFields['USER_GROUPS'], isset($arFields['ACTIVE']) ? $arFields['ACTIVE'] : '', true);
     } elseif (isset($arFields['ACTIVE'])) {
         Internals\DiscountGroupTable::changeActiveByDiscount($ID, $arFields['ACTIVE']);
     }
     if (isset($arFields['HANDLERS'])) {
         self::updateDiscountHandlers($ID, $arFields['HANDLERS'], true);
     }
     if (isset($arFields['ENTITIES'])) {
         Internals\DiscountEntitiesTable::updateByDiscount($ID, $arFields['ENTITIES'], true);
     }
     if (isset($arFields['ACTIONS']) && is_string($arFields['ACTIONS'])) {
         \Bitrix\Sale\Discount\Gift\RelatedDataTable::deleteByDiscount($ID);
         $giftManager = \Bitrix\Sale\Discount\Gift\Manager::getInstance();
         if ($giftManager->isContainGiftAction($arFields)) {
             if (!$giftManager->existsDiscountsWithGift()) {
                 $giftManager->enableExistenceDiscountsWithGift();
             }
             \Bitrix\Sale\Discount\Gift\RelatedDataTable::fillByDiscount($arFields + array('ID' => $ID));
         }
     }
     return $ID;
 }
Пример #2
0
 /**
  * Set exist coupons flag for discount list.
  *
  * @param array $discountList			Discount ids for update.
  * @param string $use				Value for update use coupons.
  * @return void
  */
 public static function setUseCoupons($discountList, $use)
 {
     if (!is_array($discountList)) {
         $discountList = array($discountList);
     }
     $use = (string) $use;
     if ($use !== 'Y' && $use !== 'N') {
         return;
     }
     Main\Type\Collection::normalizeArrayValuesByInt($discountList);
     if (empty($discountList)) {
         return;
     }
     $conn = Application::getConnection();
     $helper = $conn->getSqlHelper();
     $conn->queryExecute('update ' . $helper->quote(self::getTableName()) . ' set ' . $helper->quote('USE_COUPONS') . ' = \'' . $use . '\' where ' . $helper->quote('ID') . ' in (' . implode(',', $discountList) . ')');
     if ($use === 'Y') {
         Gift\RelatedDataTable::deleteByDiscounts($discountList);
     }
 }