/** * @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')); } } } }
use Bitrix\Main\Loader; use Bitrix\Sale\Internals; require $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_admin_before.php'; Loc::loadMessages(__FILE__); global $USER; $result = array('STATUS' => 'OK', 'MESSAGE' => '', 'COUPON' => ''); if ($result['STATUS'] == 'OK') { if (!isset($USER) || !$USER instanceof CUser) { $result['STATUS'] = 'ERROR'; $result['MESSAGE'] = Loc::getMessage('BX_SALE_TOOLS_GEN_CPN_ERR_USER'); } elseif (!$USER->IsAuthorized()) { $result['STATUS'] = 'ERROR'; $result['MESSAGE'] = Loc::getMessage('BX_SALE_TOOLS_GEN_CPN_ERR_AUTH'); } } if ($result['STATUS'] == 'OK') { if (!check_bitrix_sessid()) { $result['STATUS'] = 'ERROR'; $result['MESSAGE'] = Loc::getMessage('BX_SALE_TOOLS_GEN_CPN_ERR_SESSION'); } } if ($result['STATUS'] == 'OK') { if (!Loader::includeModule('sale')) { $result['STATUS'] = 'ERROR'; $result['MESSAGE'] = Loc::getMessage('BX_SALE_TOOLS_GEN_CPN_ERR_MODULE'); } } if ($result['STATUS'] == 'OK') { $result['COUPON'] = Internals\DiscountCouponTable::generateCoupon(true); } echo CUtil::PhpToJSObject($result);