예제 #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
            $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">