예제 #1
0
 /**
  * @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'));
             }
         }
     }
 }
예제 #2
0
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);