/** * @override * @throws Exception */ protected function prepareData() { $saleDiscountId = null; $wasAdded = false; $xmlId = $this->arParams['DISCOUNT_XML_ID']; $saleDiscountValue = (double) $this->arParams['DISCOUNT_VALUE']; $saleDiscountUnit = (string) $this->arParams['DISCOUNT_UNIT']; $fieldsAdd = array('LID' => $this->getSiteId(), 'NAME' => Loc::getMessage("CVP_DISCOUNT_NAME"), 'ACTIVE' => 'Y', 'ACTIVE_FROM' => '', 'ACTIVE_TO' => '', 'PRIORITY' => 1, 'SORT' => 100, 'LAST_DISCOUNT' => 'Y', 'XML_ID' => $xmlId, 'USER_GROUPS' => array(2), 'ACTIONS' => serialize(array('CLASS_ID' => 'CondGroup', 'DATA' => array('All' => 'AND'), 'CHILDREN' => array(array('CLASS_ID' => 'ActSaleBsktGrp', 'DATA' => array('Type' => 'Discount', 'Value' => $saleDiscountValue, 'Unit' => $saleDiscountUnit, 'All' => 'AND'), 'CHILDREN' => array())))), 'CONDITIONS' => serialize(array('CLASS_ID' => 'CondGroup', 'DATA' => array('All' => 'AND', 'True' => 'True'), 'CHILDREN' => array()))); if (strlen($xmlId) <= 0) { return; } $fields = array('XML_ID' => $xmlId, 'ACTIVE' => 'Y'); $saleDiscountDb = CSaleDiscount::GetList(array('DATE_CREATE' => 'DESC'), $fields, false, false, array('ID', 'ACTIONS', 'CONDITIONS')); if ($saleDiscount = $saleDiscountDb->Fetch()) { if ($saleDiscount['ACTIONS'] == $fieldsAdd['ACTIONS'] && $saleDiscount['CONDITIONS'] == $fieldsAdd['CONDITIONS']) { $saleDiscountId = $saleDiscount['ID']; } } if (!$saleDiscountId) { $fieldsAdd['ACTIVE'] = 'N'; $saleDiscountId = CSaleDiscount::Add($fieldsAdd); $wasAdded = true; } $this->arResult['COUPON'] = ''; if ($saleDiscountId) { $coupon = \Bitrix\Sale\Internals\DiscountCouponTable::generateCoupon(true); //$activeFrom = new \Bitrix\Main\Type\DateTime; //$activeTo = clone $activeFrom; $addDb = \Bitrix\Sale\Internals\DiscountCouponTable::add(array('DISCOUNT_ID' => $saleDiscountId, 'COUPON' => $coupon, 'TYPE' => \Bitrix\Sale\Internals\DiscountCouponTable::TYPE_ONE_ORDER, 'MAX_USE' => 1, 'USER_ID' => 0, 'DESCRIPTION' => $this->arParams['COUPON_DESCRIPTION'])); if ($addDb->isSuccess()) { $this->arResult['COUPON'] = $coupon; if ($wasAdded) { CSaleDiscount::Update($saleDiscountId, array('ACTIVE' => 'Y')); } } } }
$fields['ACTIVE_TO'] = new Main\Type\DateTime($_POST[$prefix . 'ACTIVE_TO']); } if (isset($_POST[$prefix . 'TYPE'])) { $fields['TYPE'] = $_POST[$prefix . 'TYPE']; } if (isset($_POST[$prefix . 'MAX_USE'])) { $fields['MAX_USE'] = $_POST[$prefix . 'MAX_USE']; } if (isset($_POST[$prefix . 'USER_ID'])) { $fields['USER_ID'] = $_POST[$prefix . 'USER_ID']; } if (isset($_POST[$prefix . 'DESCRIPTION'])) { $fields['DESCRIPTION'] = $_POST[$prefix . 'DESCRIPTION']; } if ($couponID == 0) { $result = Internals\DiscountCouponTable::add($fields); } else { $result = Internals\DiscountCouponTable::update($couponID, $fields); } if (!$result->isSuccess()) { $errors = $result->getErrorMessages(); } else { if ($couponID == 0) { $couponID = $result->getId(); } } } if (empty($errors)) { if ($subWindow) { ?> <script type="text/javascript">