Пример #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
 /**
  * Default onAfterDelete handler. Absolutely necessary.
  *
  * @param Main\Entity\Event $event		Event object.
  * @return void
  */
 public static function onAfterDelete(Main\Entity\Event $event)
 {
     $id = $event->getParameter('id');
     $id = end($id);
     DiscountEntitiesTable::deleteByDiscount($id);
     DiscountModuleTable::deleteByDiscount($id);
     DiscountGroupTable::deleteByDiscount($id);
     if (self::$deleteCoupons !== false) {
         DiscountCouponTable::deleteByDiscount(self::$deleteCoupons);
         self::$deleteCoupons = false;
     }
     Gift\RelatedDataTable::deleteByDiscount($id);
     unset($id);
 }