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; }
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'])) self::updateUserGroups($ID, $arFields['USER_GROUPS'], (isset($arFields['ACTIVE']) ? $arFields['ACTIVE'] : ''), true); if (isset($arFields['HANDLERS'])) self::updateDiscountHandlers($ID, $arFields['HANDLERS'], true); return $ID; }
/** * <p>Функция обновляет параметры скидки с кодом ID на параметры из массива arFields </p> * * * * * @param int $ID Код скидки. * * * * @param array $arFields Ассоциативный массив новых параметров скидки, ключами в котором * являются названия параметров, а значениями - новые значения. * Допустимо указание не всех ключей, а только тех, значения которых * необходимо изменить.<br> Допустимые ключи:<br><ul> <li> <b>LID</b> - код сайта, * к которому привязана эта скидка;</li> <li> <b>PRICE_FROM</b> - общая стоимость * заказа, начиная с которой предоставляется эта скидка;</li> <li> * <b>PRICE_TO</b> - общая стоимость заказа, до достижения которой * предоставляется эта скидка;</li> <li> <b>CURRENCY</b> - валюта денежных полей * в записи;</li> <li> <b>DISCOUNT_VALUE</b> - величина скидки;</li> <li> <b>DISCOUNT_TYPE</b> - * тип величины скидки (P - величина задана в процентах, V - величина * задана в абсолютной сумме);</li> <li> <b>ACTIVE</b> - флаг (Y/N) активности * скидки;</li> <li> <b>SORT</b> - индекс сортировки (если по сумме заказа * доступно несколько скидок, то берется первая по сортировке)</li> </ul> * * * * @return int <p>Возвращается код измененной скидки или <i>false</i> в случае * ошибки.</p><br><br> * * @static * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csalediscount/csalediscount__update.700e1b34.php * @author Bitrix */ public static function Update($ID, $arFields) { global $DB; global $USER; $ID = intval($ID); if (0 >= $ID) return false; $arFields1 = array(); if (array_key_exists('CREATED_BY',$arFields)) unset($arFields['CREATED_BY']); if (array_key_exists('DATE_CREATE',$arFields)) unset($arFields['DATE_CREATE']); if (array_key_exists('TIMESTAMP_X', $arFields)) unset($arFields['TIMESTAMP_X']); if (isset($USER) && $USER instanceof CUser && 'CUser' == get_class($USER)) { if (!array_key_exists('MODIFIED_BY', $arFields) || intval($arFields["MODIFIED_BY"]) <= 0) $arFields["MODIFIED_BY"] = intval($USER->GetID()); } $arFields1['TIMESTAMP_X'] = $DB->GetNowFunction(); $boolNewVersion = true; if (!array_key_exists('CONDITIONS', $arFields) && !array_key_exists('ACTIONS', $arFields)) { $arFields['ID'] = $ID; $boolConvert = CSaleDiscount::__ConvertOldFormat('UPDATE', $arFields); if (!$boolConvert) return false; $boolNewVersion = false; } if (array_key_exists('ID', $arFields)) unset($arFields['ID']); 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)) { $arAdd = array(); if (!empty($arFields1)) { foreach ($arFields1 as $key => $value) { $arAdd[] = $key."=".$value; } $strUpdate .= ', '.implode(', ', $arAdd); } $strSql = "UPDATE b_sale_discount SET ".$strUpdate." WHERE ID = ".$ID; $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); } if (array_key_exists('USER_GROUPS',$arFields) && is_array($arFields['USER_GROUPS']) && !empty($arFields['USER_GROUPS'])) { $DB->Query("DELETE FROM b_sale_discount_group WHERE DISCOUNT_ID = ".$ID, false, "File: ".__FILE__."<br>Line: ".__LINE__); $arValid = array(); foreach ($arFields['USER_GROUPS'] as &$value) { $value = intval($value); if (0 < $value) $arValid[] = $value; } if (isset($value)) unset($value); $arFields['USER_GROUPS'] = array_unique($arValid); if (!empty($arFields['USER_GROUPS'])) { foreach ($arFields['USER_GROUPS'] as &$value) { $strSql = "INSERT INTO b_sale_discount_group(DISCOUNT_ID, GROUP_ID) VALUES(".$ID.", ".$value.")"; $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); } if (isset($value)) unset($value); } } return $ID; }
/** * <p>Метод обновляет параметры скидки с кодом ID на параметры из массива arFields. Метод динамичный. </p> * * * @param int $ID Код скидки. * * @param array $arFields Ассоциативный массив новых параметров скидки, ключами в котором * являются названия параметров, а значениями - новые значения. * Допустимо указание не всех ключей, а только тех, значения которых * необходимо изменить.<br> Допустимые ключи:<br><ul> <li> <b>LID</b> - код сайта, * к которому привязана эта скидка;</li> <li> <b>PRICE_FROM</b> - общая стоимость * заказа, начиная с которой предоставляется эта скидка;</li> <li> * <b>PRICE_TO</b> - общая стоимость заказа, до достижения которой * предоставляется эта скидка;</li> <li> <b>CURRENCY</b> - валюта денежных полей * в записи;</li> <li> <b>DISCOUNT_VALUE</b> - величина скидки;</li> <li> <b>DISCOUNT_TYPE</b> - * тип величины скидки (P - величина задана в процентах, V - величина * задана в абсолютной сумме);</li> <li> <b>ACTIVE</b> - флаг (Y/N) активности * скидки;</li> <li> <b>SORT</b> - индекс сортировки (если по сумме заказа * доступно несколько скидок, то берется первая по сортировке)</li> </ul> * * @return int <p>Возвращается код измененной скидки или <i>false</i> в случае * ошибки.</p> <br><br> * * @static * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csalediscount/csalediscount__update.700e1b34.php * @author Bitrix */ public static 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); } return $ID; }