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; }
/** * 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); } }