function AddToBasket($pid, $quantity)
{
    if (CModule::IncludeModule("sale") && CModule::IncludeModule("catalog")) {
        $ar_res = CCatalogProduct::GetByIDEx($pid);
        if ($ar_res) {
            $result = Add2BasketByProductID($pid, $quantity);
            // если ошибки -  $ex = $APPLICATION->GetException();
            if ($result) {
                $arrSendResult['ERROR'] = 'N';
                $arrSendResult['TEXT'] = 'OK';
                echo json_encode($arrSendResult);
            } else {
                $arrSendResult['ERROR'] = 'Y';
                $arrSendResult['TEXT'] = 'Error';
                echo json_encode($arrSendResult);
            }
        } else {
            if (Add2BasketByProductID($pid, $quantity)) {
                $arrSendResult['ERROR'] = 'N';
                $arrSendResult['TEXT'] = 'OK';
                echo json_encode($arrSendResult);
            }
        }
    }
}
Esempio n. 2
0
    function addToBascket($arItems){
        $num = 0;
        foreach($arItems as $item){
            $tovar=CCatalogProduct::GetByIDEx($item["ID"]);
            if(intval($item["COUNT"])<=$tovar["PRODUCT"]["QUANTITY"]&&intval($item["COUNT"])>0){
                Add2BasketByProductID($item["ID"],intval($item["COUNT"]));
                $num++;
            }
        }
       ?> 
       
       <script>
                
                $(".CartLink span").text('(<?php 
echo $num;
?>
)');
                $('body,html').animate({scrollTop: 0}, 2);
       </script>

       <?
    }
Esempio n. 3
0
 require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php";
 /**
  * $_GET["action"] = ADD2BASKET or DEL2BASKET or UPDATE2BASKET
  * $_GET["QUANTITY"] = count products add on basket
  * $_GET["id"] = id product
  */
 if (CModule::IncludeModule("catalog") && CModule::IncludeModule("sale")) {
     $action = $_GET["action"];
     if ($action == "ADD2BASKET") {
         $PRODUCT_ID = intval($_GET["id"]);
         $QUANTITY = intval($_GET["QUANTITY"]);
         if ($action == "ADD2BASKET" && intval($PRODUCT_ID) > 0 && intval($QUANTITY) > 0) {
             $arPropItem = getItemCart($arItem["PRODUCT_ID"]);
             $arProps = array();
             $arProps = array(array("NAME" => "Артикул", "CODE" => "ARTIKUL", "VALUE" => $arPropItem["PROPERTY_ARTIKUL_VALUE"], "SORT" => 100), array("NAME" => "Наличие", "CODE" => "DEPOSIT", "VALUE" => $arPropItem["CATALOG_PROP"]["QUANTITY"] < 2 ? "N" : "Y", "SORT" => 200));
             if (!Add2BasketByProductID($PRODUCT_ID, $QUANTITY, array(), $arProps)) {
                 exit;
             }
         }
     } elseif ($action == "UPDATE2BASKET") {
         if (is_array($_GET["items"])) {
             foreach ($_GET["items"] as $key => $arItems) {
                 $PRODUCT_ID = intval($arItems["id"]);
                 $QUANTITY = intval($arItems["count"]);
                 $arFields = array("QUANTITY" => $QUANTITY);
                 if (!CSaleBasket::Update($PRODUCT_ID, $arFields)) {
                     exit;
                 }
             }
         }
     } elseif ($action == "DEL2BASKET") {
Esempio n. 4
0
    //get props sku
    $product_properties = array();
    $arPropsSku = array();
    $arParentSku = CCatalogSku::GetProductInfo($productID);
    if ($arParentSku && count($arParentSku) > 0) {
        $dbProduct = CIBlockElement::GetList(array(), array("ID" => $productID), false, false, array('IBLOCK_ID', 'IBLOCK_SECTION_ID'));
        $arProduct = $dbProduct->Fetch();
        $dbOfferProperties = CIBlock::GetProperties($arProduct["IBLOCK_ID"], array(), array("!XML_ID" => "CML2_LINK"));
        while ($arOfferProperties = $dbOfferProperties->Fetch()) {
            $arPropsSku[] = $arOfferProperties["CODE"];
        }
        $product_properties = CIBlockPriceTools::GetOfferProperties($productID, $arParentSku["IBLOCK_ID"], $arPropsSku);
    }
    if (($action == "ADD2BASKET" || $action == "BUY") && $productID > 0) {
        if (CModule::IncludeModule('catalog')) {
            Add2BasketByProductID($productID, 1, array(), $product_properties);
        }
        if ($action == "BUY") {
            LocalRedirect($arParams["BASKET_URL"]);
        } else {
            LocalRedirect($APPLICATION->GetCurPageParam("", array($arParams["PRODUCT_ID_VARIABLE"], $arParams["ACTION_VARIABLE"])));
        }
    }
}
//end add to basket
$arViewed = array();
$arViewedId = array();
$db_res = CSaleViewedProduct::GetList(array("DATE_VISIT" => "DESC"), $arFilter, false, array("nTopCount" => $arParams["VIEWED_COUNT"]), array('ID', 'IBLOCK_ID', 'PRICE', 'CURRENCY', 'CAN_BUY', 'PRODUCT_ID', 'DATE_VISIT', 'DETAIL_PAGE_URL', 'DETAIL_PICTURE', 'PREVIEW_PICTURE', 'NAME', 'NOTES'));
while ($arItems = $db_res->Fetch()) {
    $arViewedId[] = $arItems["PRODUCT_ID"];
    $arViewed[$arItems["PRODUCT_ID"]] = $arItems;
    if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) {
        die;
    }
}
if ($_REQUEST["is_ajax_call"] === "y") {
    $sid = $_REQUEST['site_id'];
    $sid .= "";
    define("SITE_ID", $sid);
    require_once $_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/main/include/prolog_before.php";
    include_once 'iblocks.php';
    require_once "lang/" . LANGUAGE_ID . "/template.php";
    if ($_REQUEST["add2basket_srch"] === "y") {
        $APPLICATION->RestartBuffer();
        $message = "error";
        if (CModule::IncludeModule("sale") && CModule::IncludeModule("catalog")) {
            if (Add2BasketByProductID($_REQUEST['id'])) {
                $message = GetMessage("INBASKET");
            }
        }
        echo $message;
        require_once $_SERVER["DOCUMENT_ROOT"] . BX_ROOT . "/modules/main/include/epilog_after.php";
        die;
    }
}
$save_param = new CPHPCache();
if ($_REQUEST["is_ajax_call"] === "y") {
    $lifetime = 60 * 60 * 24;
} else {
    $lifetime = $arParams['CACHE_TIME'] ? intval($arParams['CACHE_TIME']) : 60 * 60 * 24;
    if ($this->arParams["CACHE_TYPE"] == "N" || $this->arParams["CACHE_TYPE"] == "A" && COption::getOptionString("main", "component_cache_on", "Y") == "N") {
        CPHPCache::Clean("cache_wf_prms" . SITE_ID, "/");
Esempio n. 6
0
         $mxResult = CCatalogSku::GetProductInfo($id);
         if (is_array($mxResult)) {
             $parentid = $mxResult['ID'];
         } else {
             $parentid = $id;
         }
         $dbBasketItems = CSaleBasket::GetList(array(), array("FUSER_ID" => CSaleBasket::GetBasketUserID(), "DELAY" => 'Y', "LID" => $site, "ORDER_ID" => "NULL"), false, false, array("ID", "PRODUCT_ID"));
         while ($arItems = $dbBasketItems->Fetch()) {
             $mxResult = CCatalogSku::GetProductInfo($arItems['PRODUCT_ID']);
             if (is_array($mxResult) && $mxResult['ID'] == $parentid || $arItems['PRODUCT_ID'] == $parentid) {
                 CSaleBasket::Delete($arItems['ID']);
                 $bool = true;
             }
         }
         if (!$bool) {
             Add2BasketByProductID($id, 1, array('DELAY' => 'Y'), array());
         }
     }
 } elseif ($action == 'DELETE_FROM_DELAY' && intval($_REQUEST['id']) > 0) {
     $dbBasketItems = CSaleBasket::GetList(array(), array("PRODUCT_ID" => $id, "FUSER_ID" => CSaleBasket::GetBasketUserID(), "DELAY" => 'Y', "LID" => $site, "ORDER_ID" => "NULL"), false, false, array("ID"));
     if ($arItems = $dbBasketItems->Fetch()) {
         CSaleBasket::Delete($arItems['ID']);
     }
 } elseif ($action == 'DELETEALL_FROM_DELAY') {
     $dbBasketItems = CSaleBasket::GetList(array(), array("FUSER_ID" => CSaleBasket::GetBasketUserID(), "DELAY" => 'Y', "LID" => $site, "ORDER_ID" => "NULL"), false, false, array("ID"));
     while ($arItems = $dbBasketItems->Fetch()) {
         CSaleBasket::Delete($arItems['ID']);
     }
 } elseif ($action == 'DELETEFROMCART' && intval($_REQUEST['id']) > 0) {
     $dbBasketItems = CSaleBasket::GetList(array(), array("ID" => $id, "FUSER_ID" => CSaleBasket::GetBasketUserID(), "LID" => $site, "ORDER_ID" => "NULL"), false, false, array("ID"));
     if ($arItems = $dbBasketItems->Fetch()) {
Esempio n. 7
0
<?php

require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php";
//file_put_contents("test.txt",print_r($_SERVER,true));
$action = strtoupper($_REQUEST["action"]);
$id = intval($_REQUEST["id"]);
$backurl = $_REQUEST["backurl"];
$quantity = doubleval($_REQUEST["quantity"]);
$delay = strtoupper($_REQUEST["delay"]) == "Y" ? true : false;
if ($quantity <= 0) {
    $quantity = 1;
}
if (CModule::IncludeModule("catalog")) {
    if (($action == "ADD2BASKET" || $action == "BUY") && $id > 0) {
        $r_id = Add2BasketByProductID($id, $quantity, array());
        if ($delay) {
            CSaleBasket::Update($r_id, array("DELAY" => "Y"));
        }
        // if ajax return some info about cart
        if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
            /* special ajax here */
            //header('Content-Type: application/json');
            $cntBasketItems = CSaleBasket::GetList(array(), array("FUSER_ID" => CSaleBasket::GetBasketUserID(), "LID" => SITE_ID, "ORDER_ID" => "NULL"), array());
            echo "{'id': {$r_id} , 'count': {$cntBasketItems}}";
            exit(0);
        }
        if ($action == "BUY") {
            LocalRedirect("/personal/cart");
        }
        if ($backurl) {
            LocalRedirect($backurl);
Esempio n. 8
0
/**
 * событие вызывается перед отправкой письма о новом заказе
 * @param $orderID
 * @param $eventName
 * @param $arFields
 */
function bxModifySaleMails($order_id, &$eventName, &$arFieldsEmail)
{
                                             
    //unset($_SESSION['OnBeforeOrderAddHandler']);
    //$_SESSION['OnBeforeOrderAddHandler']['bxModifySaleMails']='bxModifySaleMails';
    //$_SESSION['OnBeforeOrderAddHandler']['id']=$order_id;
    //$_SESSION['OnBeforeOrderAddHandler']['arFields']=$arFieldsorder_old;
    $basket_props="";
    $post['INFO']="";
    $id_product=array();
    if(
        (CModule::IncludeModule("main"))
        &&
        (CModule::IncludeModule("iblock"))
        &&
        (CModule::IncludeModule("catalog"))
        &&
        (CModule::IncludeModule("sale"))
    ){


        /**
         * получаем параметры сформировавшегося старого заказа
         */
        $arFieldsorder_old = CSaleOrder::GetByID($order_id);
        /*
        echo "<pre>";
        var_dump($arFieldsorder_old);die();
        echo "</pre>";*/
        /**
         * выборка свойства сформировавшегося заказа по id заказа
         */
        $db_props = CSaleOrderPropsValue::GetOrderProps($order_id);
        $arFields_props = array();

        while ($arProps = $db_props->Fetch())
        {
            $arFields_props_old[$arProps['CODE']]=$arProps;

        }
        //_debug($arFields_props_old);

        /**
         * выборка из корзины по id заказа
         * получаем масси id продукта
         */
         
         $rsUser = CUser::GetByID(CUser::GetID());
         $arUser = $rsUser->Fetch();
         /*if (!$ORDER_ID = CSaleOrder::Add(array(
                                        "LID"              => SITE_ID,
                                        "PERSON_TYPE_ID"   => 1,
                                        "PAYED"            => "N",
                                        "CANCELED"         => "N",
                                        "STATUS_ID"        => "N",
                                        "PRICE"            => 0,
                                        "CURRENCY"         => CSaleLang::GetLangCurrency(SITE_ID),
                                        "USER_ID"          => $arUser['ID'],
                                        "PAY_SYSTEM_ID"    => $arFieldsorder_old['PAY_SYSTEM_ID'],
                                        "PRICE_DELIVERY"   => 0,
                                        "DELIVERY_ID"      => $arFieldsorder_old['DELIVERY_ID'],
                                        "DISCOUNT_VALUE"   => $arFieldsorder_old['DISCOUNT_VALUE'],
                                        "TAX_VALUE"        => $arFieldsorder_old['TAX_VALUE'],
                                        "USER_DESCRIPTION" => $post['INFO']
         ))){

                                        $rows['msg'] = 'Ошибка создания заказа';
                                        $fail          = true;
        }else{
                                        $rows['msg']=$ORDER_ID;
                                        //continue;
        }*/

        $dbBasketItems = CSaleBasket::GetList(
            array("ID" => "ASC"),
            array(
                "LID" => SITE_ID,
                "ORDER_ID" => $order_id
            ),
            false,
            false,
            array()
        );
        while ($arItem = $dbBasketItems->Fetch()){
            $id_product[] = $arItem['PRODUCT_ID'];
            $products_basket[$arItem['PRODUCT_ID']]=$arItem;
        }
        
        foreach($products_basket as $product){
            $price_product+=$product['PRICE']*$product['QUANTITY'];
            $products_descriptions.=$product['NAME']." - ".$product['QUANTITY']." шт: ".intval($product['PRICE'])." руб <br/>";
        
        }
        $price_product+=$arFieldsorder_old["PRICE_DELIVERY"];
        //$_SESSION['OnBeforeOrderAddHandler']['products_basket']=$products_basket;

        /**
         * получаем массив id партнеров из продукта
         */
        //var_dump($id_product);die();         

        if($id_product){
            $id_partner=array();
            $partner_product=array();
            $arSelect = Array("ID", "NAME","IBLOCK_ID","PROPERTY_PARTNER");
            $arFilter = Array("ID"=>$id_product, "ACTIVE"=>"Y");
            $res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
            
            while($ob = $res->GetNextElement())
            {
                $arFields = $ob->GetFields();
                $partner_product[$arFields['PROPERTY_PARTNER_VALUE']][]=$products_basket[$arFields['ID']];
                if($arFields['PROPERTY_PARTNER_VALUE']){
                    $id_partner[]=$arFields['PROPERTY_PARTNER_VALUE'];
                }
            }
            //$_SESSION['OnBeforeOrderAddHandler']['id_partner']=$id_partner;

            /**
             * получаем массив данных партнера
             */
         
            if($id_partner){
                            
                            
                $delivery_sum = null;
                $arSelect2 = Array("ID", "IBLOCK_ID", "NAME","PROPERTY_*");
                $arFilter2 = Array("IBLOCK_ID"=>9, "ACTIVE"=>"Y","ID"=>$id_partner,);
                $res2 = CIBlockElement::GetList(Array(), $arFilter2, false, false, $arSelect2);
                /**
                 * eсли в выборке корзине в продуктах больше чем один партнер
                 * то разбиваем заказ по количеству партнеров
                 */
                if (intval($res2->SelectedRowsCount())>0){
                    while($ob2 = $res2->GetNextElement()){
                        $arFields_partners = $ob2->GetFields();
                        $arProperties_partners = $ob2->GetProperties();
                        //_debug($arProperties_partners);
                        //$price_product=0;
                        //$products_descriptions="";
                        $arEventFields=array();
                        //echo $arFields_partners['ID'];
                        
                        
                        if($partner_product[$arFields_partners['ID']]){

                            $i=0;
                            $size_of_productpartner=sizeof($partner_product[$arFields_partners['ID']]);
                            foreach($partner_product[$arFields_partners['ID']] as $key_price=>$item_price){
                                //_debug($item_price);
                                $quantity=1;
                                /**
                                 * формируем новый пустой заказ
                                 */
                                if(!$i){


                                    if (!$ORDER_ID = CSaleOrder::Add(array(
                                        "LID"              => SITE_ID,
                                        "PERSON_TYPE_ID"   => 1,
                                        "PAYED"            => "N",
                                        "CANCELED"         => "N",
                                        "STATUS_ID"        => "N",
                                        "PRICE"            => 0,
                                        "CURRENCY"         => CSaleLang::GetLangCurrency(SITE_ID),
                                        "USER_ID"          => $arUser['ID'],
                                        "PAY_SYSTEM_ID"    => $arFieldsorder_old['PAY_SYSTEM_ID'],
                                        "PRICE_DELIVERY"   => 0,
                                        "DELIVERY_ID"      => $arFieldsorder_old['DELIVERY_ID'],
                                        "DISCOUNT_VALUE"   => $arFieldsorder_old['DISCOUNT_VALUE'],
                                        "TAX_VALUE"        => $arFieldsorder_old['TAX_VALUE'],
                                        "USER_DESCRIPTION" => $post['INFO']
                                    ))){

                                        $rows['msg'] = 'Ошибка создания заказа';
                                        $fail          = true;
                                    }else{
                                        $rows['msg']=$ORDER_ID;
                                        //continue;
                                    }
                                }

                                /**
                                 * добавляем по id заказа в корзину товары партнера
                                 */
                                if (!Add2BasketByProductID($item_price['PRODUCT_ID'], $item_price['QUANTITY'], array(
                                    'ORDER_ID' => $ORDER_ID,
                                ), $basket_props)) {
                                    $rows['err'] = 'Ошибка добавления товара в заказ';
                                    $fail          = true;
                                }

                                /*$price_product+=$item_price['PRICE']*$item_price['QUANTITY'];
                                $products_descriptions.=$item_price['NAME']." - ".$item_price['QUANTITY']." шт: ".intval($item_price['PRICE'])." руб <br/>";
                                */


                                $i++;
                                /**
                                 * обновляем параметры нового заказа на актуальные
                                 */
                                if($size_of_productpartner==$i){
                                    if (!$fail) {
                                        $dbBasketItems = CSaleBasket::GetList(
                                            array("NAME" => "ASC", "ID" => "ASC"), array(
                                                "LID"      => SITE_ID,
                                                "ORDER_ID" => $ORDER_ID
                                            ), false, false, array(
                                                "ID", "NAME", "QUANTITY", "CURRENCY", "CAN_BUY", "PRICE", "WEIGHT", "DISCOUNT_PRICE"
                                            )
                                        );

                                        $summ          = $weight        = 0;
                                        $strOrderList  = "";


                                        $arBasket      = array();
                                        while ($arBasketItems = $dbBasketItems->GetNext()) {
                                            $strOrderList .= $arBasketItems["NAME"] . " - " . $arBasketItems["QUANTITY"] . " шт на " . SaleFormatCurrency($arBasketItems["PRICE"] * $arBasketItems["QUANTITY"], $arBasketItems["CURRENCY"]);
                                            $strOrderList .= "\n";
                                            $rows['summ']=$summ += roundEx($arBasketItems["PRICE"], SALE_VALUE_PRECISION) * DoubleVal($arBasketItems["QUANTITY"]);
                                            $weight += doubleval($arBasketItems['WEIGHT']);
                                            $arBasket[] = $arBasketItems;
                                        }
                                        $arOrderForDiscount = array(
                                            'SITE_ID'      => SITE_ID,
                                            'USER_ID'      => $arUser['ID'],
                                            'ORDER_PRICE'  => $summ,
                                            'ORDER_WEIGHT' => $weight,
                                            'BASKET_ITEMS' => $arBasket,
                                        );
                                        $arDiscountOptions  = array();
                                        $arDiscountErrors   = array();
                                        CSaleDiscount::DoProcessOrder($arOrderForDiscount, $arDiscountOptions, $arDiscountErrors);
                                        if($_REQUEST['comment'])
                                            $arOrderForDiscount['COMMENTS'] = $_REQUEST['comment'];
                                        if($arProperties_partners['DOSTAVKA']['VALUE']){
                                            $arOrderForDiscount["PRICE_DELIVERY"] = $arProperties_partners['DOSTAVKA']['VALUE'];
                                            $arOrderForDiscount["DELIVERY_ID"] = 3;
                                            $summ += intval($arProperties_partners['DOSTAVKA']['VALUE']);
                                            $arOrderForDiscount['ORDER_PRICE']=$summ;
                                        }
                                        $arOrderForDiscount['PRICE_BEFORE'] = $summ;
                                        $arOrderForDiscount['PRICE']        = $summ;
                                        $arOrderForDiscount['WEIGHT']       = $arOrderForDiscount['ORDER_WEIGHT'];
                                        /**
                                         * обновляем заказ
                                         */
                                        if (!CSaleOrder::Update($ORDER_ID, $arOrderForDiscount)) {
                                            $rows['err'] = 'Ошибка расчета цены заказа.';
                                            $fail          = true;
                                        }else{

                                            /**
                                             * перезагружаем свойства заказ из старого
                                             */
                                            $db_props_new = CSaleOrderPropsValue::GetOrderProps($ORDER_ID);
                                            $arFields_props_new = array();
                                            while ($arProps_new = $db_props_new->Fetch())
                                            {
                                                //_debug($arProps_new);
                                                foreach($arFields_props_old as $key_props_old=>$item_props_old){
                                                    if($arProps_new['CODE']==$key_props_old){
                                                        CSaleOrderPropsValue::Update($arProps_new['ID'], array("VALUE"=>$item_props_old['VALUE']));
                                                        unset($arFields_props_old[$key_props_old]);
                                                    }
                                                }

                                            }
                                            if(sizeof($arFields_props_old)>0){
                                                foreach($arFields_props_old as $key_props_old2=>$item_props_old2){
                                                    CSaleOrderPropsValue::Add(array(
                                                        'NAME'           => $item_props_old2['NAME'],
                                                        'CODE'           => $item_props_old2['CODE'],
                                                        'ORDER_PROPS_ID' => $item_props_old2['ORDER_PROPS_ID'],
                                                        'ORDER_ID'       => $ORDER_ID,
                                                        'VALUE'          => $item_props_old2['VALUE']
                                                    ));
                                                }
                                            }
                                            /**
                                             * добавляем в свойство заказа id партнера для дальнейшей фильтрации по партнерским заказам
                                             */
                                            CSaleOrderPropsValue::Add(array(
                                                'NAME'           => "Привязка по партнеру",
                                                'CODE'           => "PATNERID",
                                                'ORDER_PROPS_ID' => 21,
                                                'ORDER_ID'       => $ORDER_ID,
                                                'VALUE'          => $arFields_partners['ID']
                                            ));


                                            //$price_product+=$arProperties_partners['DOSTAVKA']['VALUE'];
                                            //$price_product+=$arFieldsorder_old["PRICE_DELIVERY"];
                                            /**
                                             * отправляем данные о товаре Партнерам
                                             */
           
                                            if($arFields_partners['NAME']){  //если есть партнер у товара                              
                                                $arEventFields = Array(
                                                    "ORDER_ID"=> $ORDER_ID,
                                                    "ORDER_DATE"=> date("d.m.Y H:i:s"),
                                                    "ORDER_USER"=> $arFields_partners['NAME'],
                                                    "PRICE"=> $price_product,
                                                    "EMAIL"=> $arProperties_partners['EMAIL']['VALUE'],
                                                    "ORDER_LIST"=> $products_descriptions,
                                                    //"DELIVERY_PRICE"=>$arProperties_partners['DOSTAVKA']['VALUE']
                                                    "DELIVERY_PRICE"=>$arFieldsorder_old["PRICE_DELIVERY"]
                                                );
                                                $event = new CEvent;
                                                $event->SendImmediate("SALE_NEW_ORDERPARTNER", SITE_ID, $arEventFields);
                                            }
                                            
                                            
                                        }
                                    }
                                    //                        if(!$fail){
                                    //                            $ar_res_product=CCatalogProduct::GetByID($PRODUCT['ID']);
                                    //                            $arFields_quant = array(
                                    //                                'QUANTITY' => $ar_res_product['QUANTITY']-1
                                    //                            );
                                    //                            CCatalogProduct::Update($PRODUCT['ID'], $arFields_quant);
                                    //                        }

                                }

                            }
                        }
                    }
                    /**
                     * удаляем старый заказ после разбивки на новые
                     */
                    if($ORDER_ID ){
                        CSaleOrder::Delete($order_id);
                    }
                }
            }
            
            
            $arEventFields = Array(
                "ORDER_ID" =>$order_id,
                "ORDER_DATE" =>date("d.m.Y H:i:s"),
                "ORDER_USER" =>$arUser['NAME'],
                "PRICE" =>$price_product,
                "EMAIL" => $arUser['EMAIL'],
                "ORDER_LIST" =>$products_descriptions,
                "DELIVERY_PRICE"=>$arFieldsorder_old["PRICE_DELIVERY"]
            );
            $event = new CEvent;
            $event->SendImmediate("SALE_NEW_BILET", SITE_ID, $arEventFields); 
            
            
        }
    }
    //$_SESSION['OnBeforeOrderAddHandler']['rows']=$rows;
    return false;

}
Esempio n. 9
0
<?php

require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php";
?>

<?php 
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
    // Если к нам идёт Ajax запрос, то ловим его
    if (isset($_POST["ajax_filter"]) && $_POST["ajax_filter"] == "y") {
        if (CModule::IncludeModule("sale") && CModule::IncludeModule("catalog")) {
            Add2BasketByProductID($_POST["productId"], 1, array());
            $arBasketItems = array();
            $productsCount = 0;
            $dbBasketItems = CSaleBasket::GetList(array("NAME" => "ASC", "ID" => "ASC"), array("FUSER_ID" => CSaleBasket::GetBasketUserID(), "LID" => SITE_ID, "ORDER_ID" => "NULL"), false, false, array("ID", "QUANTITY", "PRICE"));
            while ($arItems = $dbBasketItems->Fetch()) {
                if (strlen($arItems["CALLBACK_FUNC"]) > 0) {
                    CSaleBasket::UpdatePrice($arItems["ID"], $arItems["QUANTITY"]);
                    $arItems = CSaleBasket::GetByID($arItems["ID"]);
                }
                $arBasketItems[] = $arItems;
            }
            $productsCount = count($arBasketItems);
            $summ = 0;
            for ($i = 0; $i <= $productsCount; $i++) {
                $summ = $summ + $arBasketItems[$i]["PRICE"] * $arBasketItems[$i]["QUANTITY"];
            }
            // Склонение "товаров"
            $goods_title = declOfNum($productsCount, array('товар', 'товара', 'товаров'));
            ?>
			<span class="hc-icon"><i class="icon-cart"></i></span><span class="hidden-xs">В корзине</span> <b><?php 
            echo $productsCount;
Esempio n. 10
0
    public static function AddProduct ($idProduct, $quantity, $arRewriteFields, $arProductParams, $userId, $currency, $personType, $clearCart) {
		if (CModule::IncludeModule("catalog")) {
			
			global $DB;
			global $USER;
				
			if ($clearCart == "Y" && (int)$idProduct > 0) {
				CSaleBasket::DeleteAll(CSaleBasket::GetBasketUserID());
			}
			
			if (Add2BasketByProductID( $idProduct, $quantity, $arRewriteFields, $arProductParams)) { // В корзину
			
				// Получаю параметры корзины
				$dbBasketItems = CSaleBasket::GetList(array("NAME" => "ASC", "ID" => "ASC"), array("FUSER_ID" => CSaleBasket::GetBasketUserID(), "ORDER_ID" => "NULL"), false, false, array("ID", "PRODUCT_ID", "QUANTITY", "DELAY", "CAN_BUY", "PRICE", "NAME"));
				while ($arItems = $dbBasketItems->Fetch())	{
						$arBasketItems[] = $arItems;
				}
				
				foreach ($arBasketItems as $valBasketItems) {
					$productPriceSumm = $productPriceSumm + ((int)$valBasketItems["QUANTITY"]*(int)$valBasketItems["PRICE"]);
				}
				
				
				$strOrderList = "";

				foreach ($arBasketItems as $arItem)
				{
					$measureText = (isset($arItem["MEASURE_TEXT"]) && strlen($arItem["MEASURE_TEXT"])) ? $arItem["MEASURE_TEXT"] : GetMessage("SOA_SHT");

					$strOrderList .= $arItem["NAME"]." - ".$arItem["QUANTITY"]." ".$measureText.": ".SaleFormatCurrency($arItem["PRICE"], $arItem["CURRENCY"]);
					$strOrderList .= "\n";
				}
				
				
				// Создаю заказ
				$arOrderFields = array(
					"LID" => SITE_ID,
					"PERSON_TYPE_ID" => $personType,
					"PAYED" => "N",
					"CANCELED" => "N",
					"STATUS_ID" => "N",
					"PRICE" => $productPriceSumm,
					"CURRENCY" => $currency,
					"USER_ID" => $userId,
					"USER_DESCRIPTION" => "",
					"ADDITIONAL_INFO" => ""
				);
				
				$ORDER_ID = CSaleOrder::Add($arOrderFields);
				
				// Привязываем товары из корзины текущего пользователя к заказу			
				
				CSaleBasket::OrderBasket($ORDER_ID, CSaleBasket::GetBasketUserID(), SITE_ID, false);

				$rsUser = CUser::GetByID($userId);
				$arUser = $rsUser->Fetch();
				
				$arFields = Array(
					"ORDER_ID" => $ORDER_ID,
					"ORDER_DATE" => Date($DB->DateFormatToPHP(CLang::GetDateFormat("SHORT", SITE_ID))),
					"ORDER_USER" => $arUser["NAME"],
					"PRICE" => $productPriceSumm,
					"BCC" => COption::GetOptionString("sale", "order_email", "order@".$SERVER_NAME),
					"EMAIL" => (strlen($arUserResult["USER_EMAIL"])>0 ? $arUserResult["USER_EMAIL"] : $USER->GetEmail()),
					"ORDER_LIST" => $strOrderList,
					"SALE_EMAIL" => COption::GetOptionString("sale", "order_email", "order@".$SERVER_NAME),
						
				);

				$eventName = "SALE_NEW_ORDER";

					$event = new CEvent;
					$event->Send($eventName, SITE_ID, $arFields, "N");
					
				
				return $ORDER_ID;
				
			}

			
		} else {
			return false;
		}
	}
Esempio n. 11
0
<?php

require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php';
CModule::IncludeModule('sale');
CModule::IncludeModule('catalog');
$cmd = htmlspecialcharsEx($_POST['action']);
$elementId = intval($_POST['id']);
$count = intval($_POST['quantity']);
//Add functional
if ($elementId && $cmd == 'ADD2BASKET') {
    if ($count) {
        $res = Add2BasketByProductID($elementId, $count, array());
    } else {
        $res = Add2BasketByProductID($elementId, 1, array());
    }
}
//Delete functional
/*if($elementId && $cmd == 'delete'){
    $res = CSaleBasket::Delete($elementId);
}
//Update functional
if($elementId && $count && $cmd == 'update'){
    $arFields = array(
       'QUANTITY' => $count
    );
    $res = CSaleBasket::Update($elementId, $arFields);
}*/
$APPLICATION->IncludeComponent("bitrix:sale.basket.basket.small", "basket_top", array("PATH_TO_BASKET" => "/personal/basket.php", "PATH_TO_ORDER" => "/personal/order.php", "SHOW_DELAY" => "Y", "SHOW_NOTAVAIL" => "Y", "SHOW_SUBSCRIBE" => "Y"), false);
?>

Esempio n. 12
0
     }
 }
 $arrPROPERTY_CODE = is_array($arrPROPERTY_CODE) ? $arrPROPERTY_CODE : array();
 $curPagePath = $APPLICATION->GetCurPageParam($SECTION_ID_VARIABLE . "=" . $SECTION_ID, array($PRODUCT_ID_VARIABLE, $ACTION_VARIABLE, $SECTION_ID_VARIABLE));
 $USE_PRICE_COUNT = $USE_PRICE_COUNT == "Y" ? "Y" : "N";
 $SHOW_PRICE_COUNT = IntVal($SHOW_PRICE_COUNT);
 $SHOW_PRICE_COUNT = $SHOW_PRICE_COUNT > 0 ? $SHOW_PRICE_COUNT : 1;
 /*************************************************************************
 						Processing of the Buy link
 	*************************************************************************/
 if (array_key_exists($ACTION_VARIABLE, $_REQUEST) && array_key_exists($PRODUCT_ID_VARIABLE, $_REQUEST)) {
     $action = StrToUpper($_REQUEST[$ACTION_VARIABLE]);
     $productID = IntVal($_REQUEST[$PRODUCT_ID_VARIABLE]);
     if (($action == "ADD2BASKET" || $action == "BUY") && $productID > 0) {
         if (CModule::IncludeModule("sale") && CModule::IncludeModule("catalog")) {
             if (Add2BasketByProductID($productID)) {
                 if ($action == "BUY") {
                     LocalRedirect($BASKET_URL);
                 } else {
                     LocalRedirect($curPagePath);
                 }
             } else {
                 if ($ex = $GLOBALS["APPLICATION"]->GetException()) {
                     $errorMessage .= $ex->GetString();
                 } else {
                     $errorMessage .= GetMessage("CATALOG_ERROR2BASKET") . ".";
                 }
             }
         }
     }
 }
Esempio n. 13
0
<?
if	(!(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'))
{
	header('HTTP/1.0 403 Forbidden');
	die();
}

require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
global $APPLICATION;

$productId = intval($_POST['PRODUCT_ID']);
$quantity = intval($_POST['QUANTITY']);
if ($productId > 0 && \Bitrix\Main\Loader::includeModule("sale") && \Bitrix\Main\Loader::includeModule("catalog") && $quantity >= 1)
{
	if(!Add2BasketByProductID($productId, $quantity, $arRewriteFields, $product_properties))
	{
		if ($ex = $APPLICATION->GetException())
		{
			$strError = $ex->GetString();
		}
	}
}
$APPLICATION->IncludeComponent("bitrix:sale.basket.basket.small","small",Array(
		"PATH_TO_BASKET" => "/basket/",
		"PATH_TO_ORDER" => "/basket/order.php",
		"SHOW_DELAY" => "Y",
		"SHOW_NOTAVAIL" => "Y",
		"SHOW_SUBSCRIBE" => "Y"
	)
);
Esempio n. 14
0
 /**
  *
  * History update, cron usage only
  * @global CUser $USER
  * @return boolean
  */
 public static function orderHistory()
 {
     global $USER;
     if (is_object($USER) == false) {
         $USER = new RetailUser();
     }
     if (!CModule::IncludeModule("iblock")) {
         self::eventLog('ICrmOrderActions::orderHistory', 'iblock', 'module not found');
         return false;
     }
     if (!CModule::IncludeModule("sale")) {
         self::eventLog('ICrmOrderActions::orderHistory', 'sale', 'module not found');
         return false;
     }
     if (!CModule::IncludeModule("catalog")) {
         self::eventLog('ICrmOrderActions::orderHistory', 'catalog', 'module not found');
         return false;
     }
     $api_host = COption::GetOptionString(self::$MODULE_ID, self::$CRM_API_HOST_OPTION, 0);
     $api_key = COption::GetOptionString(self::$MODULE_ID, self::$CRM_API_KEY_OPTION, 0);
     $optionsOrderTypes = array_flip(unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_ORDER_TYPES_ARR, 0)));
     $optionsDelivTypes = array_flip(unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_DELIVERY_TYPES_ARR, 0)));
     $optionsPayTypes = array_flip(unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_PAYMENT_TYPES, 0)));
     $optionsPayStatuses = array_flip(unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_PAYMENT_STATUSES, 0)));
     // --statuses
     $optionsPayment = array_flip(unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_PAYMENT, 0)));
     $optionsOrderProps = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_ORDER_PROPS, 0));
     $optionsLegalDetails = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_LEGAL_DETAILS, 0));
     $optionsContragentType = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_CONTRAGENT_TYPE, 0));
     $optionsSitesList = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_SITES_LIST, 0));
     $optionsCustomFields = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_CUSTOM_FIELDS, 0));
     foreach ($optionsOrderProps as $code => $value) {
         if (isset($optionsLegalDetails[$code])) {
             $optionsOrderProps[$code] = array_merge($optionsOrderProps[$code], $optionsLegalDetails[$code]);
         }
         if (isset($optionsCustomFields[$code])) {
             $optionsOrderProps[$code] = array_merge($optionsOrderProps[$code], $optionsCustomFields[$code]);
         }
         $optionsOrderProps[$code]['location'] = 'LOCATION';
         if (array_search('CITY', $optionsOrderProps[$code]) == false) {
             $optionsOrderProps[$code]['city'] = 'CITY';
         }
         if (array_search('ZIP', $optionsOrderProps[$code]) == false) {
             $optionsOrderProps[$code]['index'] = 'ZIP';
         }
     }
     $api = new RetailCrm\RestApi($api_host, $api_key);
     $dateStart = COption::GetOptionString(self::$MODULE_ID, self::$CRM_ORDER_HISTORY_DATE, null);
     if (is_null($dateStart)) {
         $dateStart = new \DateTime();
         $dateStart = $dateStart->format('Y-m-d H:i:s');
     }
     try {
         $orderHistory = $api->orderHistory($dateStart);
     } catch (\RetailCrm\Exception\CurlException $e) {
         self::eventLog('ICrmOrderActions::orderHistory', 'RetailCrm\\RestApi::orderHistory::CurlException', $e->getCode() . ': ' . $e->getMessage());
         return false;
     }
     $orderHistory = isset($orderHistory['orders']) ? $orderHistory['orders'] : array();
     $log = new Logger();
     $log->write($orderHistory, 'history');
     $dateFinish = $api->getGeneratedAt();
     if (is_null($dateFinish) || $dateFinish == false) {
         $dateFinish = new \DateTime();
     }
     $defaultOrderType = 1;
     $dbOrderTypesList = CSalePersonType::GetList(array(), array("ACTIVE" => "Y"));
     if ($arOrderTypesList = $dbOrderTypesList->Fetch()) {
         $defaultOrderType = $arOrderTypesList['ID'];
     }
     $GLOBALS['INTARO_CRM_FROM_HISTORY'] = true;
     foreach ($orderHistory as $order) {
         if (function_exists('intarocrm_order_pre_persist')) {
             $order = intarocrm_order_pre_persist($order);
         }
         if (!isset($order['externalId'])) {
             // custom orderType function
             if (function_exists('intarocrm_set_order_type')) {
                 $orderType = intarocrm_set_order_type($order);
                 if ($orderType) {
                     $optionsOrderTypes[$order['orderType']] = $orderType;
                 } else {
                     $optionsOrderTypes[$order['orderType']] = $defaultOrderType;
                 }
             }
             // we dont need new orders without any customers (can check only for externalId)
             if (!isset($order['customer']['externalId'])) {
                 if (!isset($order['customer']['id'])) {
                     continue;
                 }
                 $registerNewUser = true;
                 if (!isset($order['customer']['email']) || $order['customer']['email'] == '') {
                     $login = $order['customer']['email'] = uniqid('user_' . time()) . '@crm.com';
                 } else {
                     $dbUser = CUser::GetList($by = 'ID', $sort = 'ASC', array('=EMAIL' => $order['email']));
                     switch ($dbUser->SelectedRowsCount()) {
                         case 0:
                             $login = $order['customer']['email'];
                             break;
                         case 1:
                             $arUser = $dbUser->Fetch();
                             $registeredUserID = $arUser['ID'];
                             $registerNewUser = false;
                             break;
                         default:
                             $login = uniqid('user_' . time()) . '@crm.com';
                             break;
                     }
                 }
                 if ($registerNewUser === true) {
                     $userPassword = uniqid();
                     $newUser = new CUser();
                     $arFields = array("NAME" => self::fromJSON($order['customer']['firstName']), "LAST_NAME" => self::fromJSON($order['customer']['lastName']), "EMAIL" => $order['customer']['email'], "LOGIN" => $login, "LID" => "ru", "ACTIVE" => "Y", "PASSWORD" => $userPassword, "CONFIRM_PASSWORD" => $userPassword);
                     $registeredUserID = $newUser->Add($arFields);
                     if ($registeredUserID === false) {
                         self::eventLog('ICrmOrderActions::orderHistory', 'CUser::Register', 'Error register user');
                         continue;
                     }
                     try {
                         $api->customerFixExternalIds(array(array('id' => $order['customer']['id'], 'externalId' => $registeredUserID)));
                     } catch (\RetailCrm\Exception\CurlException $e) {
                         self::eventLog('ICrmOrderActions::orderHistory', 'RetailCrm\\RestApi::customerFixExternalIds::CurlException', $e->getCode() . ': ' . $e->getMessage());
                         continue;
                     }
                 }
                 $order['customer']['externalId'] = $registeredUserID;
             }
             // new order
             $newOrderFields = array('LID' => CSite::GetDefSite(), 'PERSON_TYPE_ID' => isset($optionsOrderTypes[$order['orderType']]) ? $optionsOrderTypes[$order['orderType']] : $defaultOrderType, 'PAYED' => 'N', 'CANCELED' => 'N', 'STATUS_ID' => 'N', 'PRICE' => 0, 'CURRENCY' => CCurrency::GetBaseCurrency(), 'USER_ID' => $order['customer']['externalId'], 'PAY_SYSTEM_ID' => 0, 'PRICE_DELIVERY' => 0, 'DELIVERY_ID' => 0, 'DISCOUNT_VALUE' => 0, 'USER_DESCRIPTION' => '');
             if (count($optionsSitesList) > 1 && ($lid = array_search($order['site'], $optionsSitesList))) {
                 $newOrderFields['LID'] = $lid;
             }
             $externalId = CSaleOrder::Add($newOrderFields);
             if (!isset($order['externalId'])) {
                 try {
                     $api->orderFixExternalIds(array(array('id' => $order['id'], 'externalId' => $externalId)));
                 } catch (\RetailCrm\Exception\CurlException $e) {
                     self::eventLog('ICrmOrderActions::orderHistory', 'RetailCrm\\RestApi::orderFixExternalIds::CurlException', $e->getCode() . ': ' . $e->getMessage());
                     continue;
                 }
             }
             $order['externalId'] = $externalId;
         }
         if (isset($order['externalId']) && $order['externalId']) {
             // custom orderType function
             if (function_exists('intarocrm_set_order_type')) {
                 $orderType = intarocrm_set_order_type($order);
                 if ($orderType) {
                     $optionsOrderTypes[$order['orderType']] = $orderType;
                 } else {
                     $optionsOrderTypes[$order['orderType']] = $defaultOrderType;
                 }
             }
             $arFields = CSaleOrder::GetById($order['externalId']);
             // incorrect order
             if ($arFields === false || empty($arFields)) {
                 continue;
             }
             $LID = $arFields['LID'];
             $userId = $arFields['USER_ID'];
             if (isset($order['customer']['externalId']) && !is_null($order['customer']['externalId'])) {
                 $userId = $order['customer']['externalId'];
             }
             $rsOrderProps = CSaleOrderPropsValue::GetList(array(), array('ORDER_ID' => $arFields['ID']));
             $arUpdateProps = array();
             while ($ar = $rsOrderProps->Fetch()) {
                 $prop = CSaleOrderProps::GetByID($ar['ORDER_PROPS_ID']);
                 $arUpdateProps[$ar['CODE']] = array('ID' => $ar['ID'], 'TYPE' => $prop['TYPE'], 'VALUE' => $ar['VALUE']);
             }
             $order['fio'] = trim(implode(' ', array(isset($order['lastName']) ? $order['lastName'] : '', isset($order['firstName']) ? $order['firstName'] : '', isset($order['patronymic']) ? $order['patronymic'] : '')));
             if (isset($order['delivery']['address']['city'])) {
                 $order['location'] = $order['delivery']['address']['city'];
             }
             if (isset($order['orderType']) && isset($optionsOrderTypes[$order['orderType']])) {
                 if (isset($optionsOrderProps[$arFields['PERSON_TYPE_ID']])) {
                     foreach ($optionsOrderProps[$arFields['PERSON_TYPE_ID']] as $code => $value) {
                         if (in_array($code, array_keys($order)) === false && isset($optionsOrderProps[$optionsOrderTypes[$order['orderType']]][$code])) {
                             $order[$code] = $arUpdateProps[$optionsOrderProps[$arFields['PERSON_TYPE_ID']][$code]]['VALUE'];
                         }
                     }
                 }
                 //update ordertype
                 CSaleOrder::Update($order['externalId'], array('PERSON_TYPE_ID' => $optionsOrderTypes[$order['orderType']]));
                 $arProp = CSaleOrderProps::GetList(array(), array('PERSON_TYPE_ID' => $optionsOrderTypes[$order['orderType']]));
                 $typeParam = array();
                 while ($ar = $arProp->Fetch()) {
                     $typeParam[$ar['CODE']] = $ar['CODE'];
                 }
                 foreach (array_diff_key($arUpdateProps, $typeParam) as $code => $param) {
                     if (isset($arUpdateProps[$code])) {
                         CSaleOrderPropsValue::Delete($param['ID']);
                     }
                 }
                 $arFields['PERSON_TYPE_ID'] = $optionsOrderTypes[$order['orderType']];
             }
             array_walk_recursive(self::clearArr($order), 'self::recursiveUpdate', array('update' => $arUpdateProps, 'type' => $arFields['PERSON_TYPE_ID'], 'options' => $optionsOrderProps, 'orderId' => $order['externalId']));
             foreach ($order['items'] as $item) {
                 if (isset($item['deleted']) && $item['deleted']) {
                     if ($p = CSaleBasket::GetList(array(), array('ORDER_ID' => $order['externalId'], 'PRODUCT_ID' => $item['id']))->Fetch()) {
                         if (!CSaleBasket::Delete($p['ID'])) {
                             self::eventLog('ICrmOrderActions::orderHistory', 'CSaleBasket::Delete', 'Error element delete');
                         }
                     } else {
                         $prp = CSaleBasket::GetPropsList(array(), array("ORDER_ID" => $order['externalId'], "CODE" => 'ID', "VALUE" => $item['id']))->Fetch();
                         if (!CSaleBasket::Delete($prp['BASKET_ID'])) {
                             self::eventLog('ICrmOrderActions::orderHistory', 'CSaleBasket::Delete', 'Error castom element delete');
                         }
                     }
                     continue;
                 }
                 if (isset($item['offer']) === false && isset($item['offer']['externalId']) === false) {
                     continue;
                 }
                 $res = CIBlockElement::GetByID($item['offer']['externalId'])->Fetch();
                 if ($res) {
                     $p = CSaleBasket::GetList(array(), array('ORDER_ID' => $order['externalId'], 'PRODUCT_ID' => $item['offer']['externalId']))->Fetch();
                     if ($p == false) {
                         $p = CIBlockElement::GetByID($item['offer']['externalId'])->GetNext();
                         $iblock = CIBlock::GetByID($p['IBLOCK_ID'])->Fetch();
                         $p['CATALOG_XML_ID'] = $iblock['XML_ID'];
                         $p['PRODUCT_XML_ID'] = $p['XML_ID'];
                         unset($p['XML_ID']);
                     } elseif ($propResult = CSaleBasket::GetPropsList(array(''), array('BASKET_ID' => $p['ID']))) {
                         while ($r = $propResult->Fetch()) {
                             unset($r['ID']);
                             unset($r['BASKET_ID']);
                             $p['PROPS'][] = $r;
                         }
                     }
                     $arProduct = array();
                     if (isset($item['created']) && $item['created'] == true) {
                         $productPrice = GetCatalogProductPrice($item['offer']['externalId'], COption::GetOptionString(self::$MODULE_ID, self::$CRM_CATALOG_BASE_PRICE, 0));
                         $arProduct = array('FUSER_ID' => $userId, 'ORDER_ID' => $order['externalId'], 'QUANTITY' => $item['quantity'], 'CURRENCY' => $productPrice['CURRENCY'], 'LID' => $LID, 'PRODUCT_ID' => $item['offer']['externalId'], 'PRODUCT_PRICE_ID' => $p['PRODUCT_PRICE_ID'], 'WEIGHT' => $p['WEIGHT'], 'DELAY' => $p['DELAY'], 'CAN_BUY' => $p['CAN_BUY'], 'MODULE' => $p['MODULE'], 'NOTES' => $item['comment'] ?: $p['NOTES'], 'PRODUCT_PROVIDER_CLASS' => $p['PRODUCT_PROVIDER_CLASS'], 'DETAIL_PAGE_URL' => $p['DETAIL_PAGE_URL'], 'CATALOG_XML_ID' => $p['CATALOG_XML_ID'], 'PRODUCT_XML_ID' => $p['PRODUCT_XML_ID'], 'CUSTOM_PRICE' => 'Y');
                     }
                     if (isset($item['isCanceled']) == false) {
                         if (isset($item['initialPrice']) && $item['initialPrice']) {
                             $arProduct['PRICE'] = (double) $item['initialPrice'];
                         }
                         if (isset($item['discount'])) {
                             $arProduct['DISCOUNT_PRICE'] = $item['discount'];
                         }
                         if (isset($item['discountPercent'])) {
                             $arProduct['DISCOUNT_VALUE'] = $item['discountPercent'];
                             $newPrice = round($arProduct['PRICE'] / 100 * (100 - $arProduct['DISCOUNT_VALUE']), 2);
                             $arProduct['DISCOUNT_PRICE'] = $arProduct['DISCOUNT_PRICE'] + $arProduct['PRICE'] - $newPrice;
                         }
                         if (isset($item['discount']) || isset($item['discountPercent'])) {
                             $arProduct['PRICE'] -= $arProduct['DISCOUNT_PRICE'];
                         }
                         if (isset($item['offer']['name']) && $item['offer']['name']) {
                             $arProduct['NAME'] = self::fromJSON($item['offer']['name']);
                         }
                         $arProduct = self::updateCancelProp($arProduct, 0);
                     } elseif (isset($item['isCanceled'])) {
                         $arProduct['PRICE'] = 0;
                         $arProduct = self::updateCancelProp($arProduct, 1);
                     }
                     if (isset($item['created']) && $item['created'] == true) {
                         if (!Add2BasketByProductID($item['offer']['externalId'], $item['quantity'], $arProduct, $p['PROPS'])) {
                             self::eventLog('ICrmOrderActions::orderHistory', 'Add2BasketByProductID', 'Error element add');
                         }
                         continue;
                     }
                     if (count($p['PROPS']) > 0) {
                         $arProduct['PROPS'] = $p['PROPS'];
                     }
                     if (isset($item['quantity']) && $item['quantity']) {
                         $arProduct['QUANTITY'] = $item['quantity'];
                     }
                     if (isset($item['offer']['name']) && $item['offer']['name']) {
                         $arProduct['NAME'] = self::fromJSON($item['offer']['name']);
                     }
                     if (!CSaleBasket::Update($p['ID'], $arProduct)) {
                         self::eventLog('ICrmOrderActions::orderHistory', 'CSaleBasket::Update', 'Error element update');
                     }
                     CSaleBasket::DeleteAll($userId);
                 } else {
                     $arProduct = array();
                     if (isset($item['created']) && $item['created'] == true) {
                         $arProduct = array('FUSER_ID' => $userId, 'ORDER_ID' => $order['externalId'], 'LID' => $LID, 'NOTES' => $item['comment']);
                     }
                     if (isset($item['isCanceled']) == false) {
                         if (isset($item['initialPrice']) && $item['initialPrice']) {
                             $arProduct['PRICE'] = (double) $item['initialPrice'];
                         }
                         if (isset($item['discount'])) {
                             $arProduct['DISCOUNT_PRICE'] = $item['discount'];
                         }
                         if (isset($item['discountPercent'])) {
                             $arProduct['DISCOUNT_VALUE'] = $item['discountPercent'];
                             $newPrice = round($arProduct['PRICE'] / 100 * (100 - $arProduct['DISCOUNT_VALUE']), 2);
                             $arProduct['DISCOUNT_PRICE'] = $arProduct['DISCOUNT_PRICE'] + $arProduct['PRICE'] - $newPrice;
                         }
                         if (isset($item['discount']) || isset($item['discountPercent'])) {
                             $arProduct['PRICE'] -= $arProduct['DISCOUNT_PRICE'];
                         }
                         if (isset($item['offer']['name']) && $item['offer']['name']) {
                             $arProduct['NAME'] = self::fromJSON($item['offer']['name']);
                         }
                         $arProduct = self::updateCancelProp($arProduct, 0);
                     } elseif (isset($item['isCanceled'])) {
                         $arProduct['PRICE'] = 0;
                         $arProduct = self::updateCancelProp($arProduct, 1);
                     }
                     if (isset($item['quantity']) && $item['quantity']) {
                         $arProduct['QUANTITY'] = $item['quantity'];
                     }
                     if (isset($item['offer']['name']) && $item['offer']['name']) {
                         $arProduct['NAME'] = self::fromJSON($item['offer']['name']);
                     }
                     if (isset($item['created']) && $item['created'] == true) {
                         $iBlocks = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_CATALOG_IBLOCKS, 0));
                         $iBlock = array_shift($iBlocks);
                         $newSection = new CIBlockSection();
                         $newSectionFields = array("ACTIVE" => 'N', "IBLOCK_ID" => $iBlock, "NAME" => 'RetailCRM', "CODE" => 'RetailCRM');
                         $resSection = $newSection->Add($newSectionFields);
                         if (!$resSection) {
                             self::eventLog('ICrmOrderActions::orderHistory', 'CIBlockSection::Add', 'Error castom section add');
                             continue;
                         }
                         $arLoadProductArray = array("IBLOCK_SECTION_ID" => $resSection, "IBLOCK_ID" => $iBlock, "NAME" => $item['offer']['name'] ? $item['offer']['name'] : 'RetailCrmElement', "CODE" => 'RetailCrmElement', "ACTIVE" => 'Y');
                         $el = new CIBlockElement();
                         $PRODUCT_ID = $el->Add($arLoadProductArray, false, false, true);
                         if (!$PRODUCT_ID) {
                             self::eventLog('ICrmOrderActions::orderHistory', 'CIBlockElement::Add', 'Error castom element add');
                             continue;
                         }
                         if (!CCatalogProduct::Add(array("ID" => $PRODUCT_ID))) {
                             self::eventLog('ICrmOrderActions::orderHistory', 'CCatalogProduct::Add', 'Error product add');
                             continue;
                         }
                         $arFields = array("PRODUCT_ID" => $PRODUCT_ID, "CATALOG_GROUP_ID" => COption::GetOptionString(self::$MODULE_ID, self::$CRM_CATALOG_BASE_PRICE, 0), "PRICE" => $item['initialPrice'] ? $item['initialPrice'] : 1, "CURRENCY" => CCurrency::GetBaseCurrency());
                         if (!CPrice::Add($arFields)) {
                             self::eventLog('ICrmOrderActions::orderHistory', 'CPrice::Add', 'Error price add');
                             continue;
                         }
                         $Params = array(array('NAME' => 'id', 'CODE' => 'ID', 'VALUE' => $item['offer']['externalId']));
                         if (!Add2BasketByProductID($PRODUCT_ID, $item['quantity'], $arProduct, $Params)) {
                             self::eventLog('ICrmOrderActions::orderHistory', 'Add2BasketByProductID', 'Error add to basket');
                             continue;
                         }
                         if (!CIBlockSection::Delete($resSection)) {
                             self::eventLog('ICrmOrderActions::orderHistory', 'CIBlockSection::Delete', 'Error delete section');
                             continue;
                         }
                         continue;
                     }
                     $prp = CSaleBasket::GetPropsList(array(), array("ORDER_ID" => $order['externalId'], "CODE" => 'ID', "VALUE" => $item['offer']['externalId']))->Fetch();
                     CSaleBasket::Update($prp['BASKET_ID'], $arProduct);
                 }
             }
             if (isset($order['delivery']) === false || isset($order['delivery']['cost']) === false) {
                 $order['delivery']['cost'] = $arFields['PRICE_DELIVERY'];
             }
             if (isset($order['summ']) === false || $order['summ'] <= 0) {
                 $order['summ'] = $arFields['PRICE'] - $arFields['PRICE_DELIVERY'];
             }
             $wasCanaceled = $arFields['CANCELED'] == 'Y' ? true : false;
             if (isset($optionsDelivTypes[$order['delivery']['code']])) {
                 $resultDeliveryTypeId = $optionsDelivTypes[$order['delivery']['code']];
             } else {
                 $resultDeliveryTypeId = isset($order['delivery']['service']) && isset($order['delivery']['service']['code']) ? reset(explode(":", $arFields['DELIVERY_ID'], 1)) : $arFields['DELIVERY_ID'];
             }
             if (isset($order['delivery']['service']) && isset($order['delivery']['service']['code'])) {
                 $deliveryHandler = reset(CSaleDeliveryHandler::GetBySID($resultDeliveryTypeId)->arResult);
                 if (count($deliveryHandler) > 0 && array_key_exists($order['delivery']['service']['code'], $deliveryHandler['PROFILES'])) {
                     $resultDeliveryTypeId = $resultDeliveryTypeId . ':' . $order['delivery']['service']['code'];
                 }
             }
             // orderUpdate
             $arFields = self::clearArr(array('PRICE_DELIVERY' => $order['delivery']['cost'], 'PRICE' => $order['summ'] + (double) $order['delivery']['cost'], 'DATE_MARKED' => $order['markDatetime'], 'USER_ID' => $userId, 'PAY_SYSTEM_ID' => $optionsPayTypes[$order['paymentType']], 'DELIVERY_ID' => $resultDeliveryTypeId, 'STATUS_ID' => $optionsPayStatuses[$order['status']], 'REASON_CANCELED' => self::fromJSON($order['statusComment']), 'USER_DESCRIPTION' => self::fromJSON($order['customerComment']), 'COMMENTS' => self::fromJSON($order['managerComment'])));
             if (isset($order['discount'])) {
                 $arFields['DISCOUNT_VALUE'] = $order['discount'];
                 $arFields['PRICE'] -= $order['discount'];
             }
             if (!empty($arFields)) {
                 CSaleOrder::Update($order['externalId'], $arFields);
             }
             if (isset($order['status']) && $order['status']) {
                 if (isset($optionsPayStatuses[$order['status']]) && $optionsPayStatuses[$order['status']]) {
                     // set STATUS_ID
                     CSaleOrder::StatusOrder($order['externalId'], $optionsPayStatuses[$order['status']]);
                     if ($wasCanaceled && $optionsPayStatuses[$order['status']] != 'YY') {
                         CSaleOrder::CancelOrder($order['externalId'], "N", $order['statusComment']);
                     } elseif ($optionsPayStatuses[$order['status']] == 'YY') {
                         CSaleOrder::CancelOrder($order['externalId'], "Y", $order['statusComment']);
                     }
                 }
             }
             // set PAYED
             if (isset($order['paymentStatus']) && $order['paymentStatus'] && $optionsPayment[$order['paymentStatus']]) {
                 CSaleOrder::PayOrder($order['externalId'], $optionsPayment[$order['paymentStatus']]);
             }
             if (function_exists('intarocrm_order_post_persist')) {
                 intarocrm_order_post_persist($order);
             }
         }
     }
     if (count($orderHistory) > 0) {
         COption::SetOptionString(self::$MODULE_ID, self::$CRM_ORDER_HISTORY_DATE, $dateFinish->format('Y-m-d H:i:s'));
     }
     $GLOBALS['INTARO_CRM_FROM_HISTORY'] = false;
     return true;
 }
Esempio n. 15
0
            //foreach ($allproducts as $product) {
            $product = intval($_REQUEST["productid"]);
            //$product = intval($_POST["add2basket"]);
            //проверим
            $res = CIBlockElement::GetByID($product);
            if ($ar_res = $res->GetNext()) {
                $arProps = array();
                $PRODUCT = $ar_res;
                $ar_res = CPrice::GetBasePrice($PRODUCT[ID]);
                $price = $ar_res["PRICE"];
                if (intval($price) == 0) {
                    $price = 0;
                    $arFields = array("PRODUCT_ID" => $PRODUCT[ID], "QUANTITY" => $quantity, "PRODUCT_XML_ID" => $PRODUCT[ID], "PRICE" => $price, "CURRENCY" => "RUB", "LID" => "s1", "NAME" => $PRODUCT[NAME]);
                    $basket_id = CSaleBasket::Add($arFields);
                    $arItem = CSaleBasket::GetByID($basket_id);
                    if ($arItem["QUANTITY"] != $quantity) {
                        $arFields = array("QUANTITY" => $arItem["QUANTITY"] + $quantity);
                        CSaleBasket::Update($basket_id, $arFields);
                    }
                } else {
                    $basket_id = Add2BasketByProductID($product, $quantity);
                }
            }
        }
        break;
    case "update":
        $arFields = array("QUANTITY" => $_REQUEST["quantity"]);
        CSaleBasket::Update($_REQUEST["id"], $arFields);
        break;
}
$APPLICATION->IncludeComponent("bitrix:sale.basket.basket.small", "hiding_basket", array("PATH_TO_BASKET" => "/personal/basket.php", "PATH_TO_ORDER" => "/personal/order.php", "SHOW_DELAY" => "Y", "SHOW_NOTAVAIL" => "Y", "SHOW_SUBSCRIBE" => "Y"), false);
Esempio n. 16
0
<?php

require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php";
?>

<?php 
CModule::IncludeModule("sale");
CModule::IncludeModule("catalog");
/* Addition of the goods in a basket at addition in a basket */
if ($_POST["ajaxaddid"] && $_POST["ajaxaction"] == 'add') {
    Add2BasketByProductID($_POST["ajaxaddid"], 1, array());
    $arFields = array("QUANTITY" => $_POST["ajaxbasketcount"]);
    CSaleBasket::Update($_POST["ajaxbasketcountid"], $arFields);
}
/* Changes of quantity of the goods after receipt of inquiry from a small basket */
if ($_POST["ajaxbasketcountid"] && $_POST["ajaxbasketcount"] && $_POST["ajaxaction"] == 'update') {
    $arFields = array("QUANTITY" => $_POST["ajaxbasketcount"]);
    CSaleBasket::Update($_POST["ajaxbasketcountid"], $arFields);
}
?>

<?php 
$APPLICATION->IncludeComponent("bitrix:sale.basket.basket.line", "agray_basket_line_template", array("COMPONENT_TEMPLATE" => ".default", "PATH_TO_BASKET" => SITE_DIR . "personal/cart/", "PATH_TO_PERSONAL" => SITE_DIR . "personal/", "PATH_TO_PROFILE" => SITE_DIR . "personal/", "PATH_TO_REGISTER" => SITE_DIR . "login/", "POSITION_FIXED" => "N", "SHOW_AUTHOR" => "N", "SHOW_EMPTY_VALUES" => "Y", "SHOW_NUM_PRODUCTS" => "Y", "SHOW_PERSONAL_LINK" => "N", "SHOW_PRODUCTS" => "N", "SHOW_TOTAL_PRICE" => "Y"));
?>

Esempio n. 17
0
if ($_SERVER["REQUEST_METHOD"] == "POST" && strlen($_POST["action"]) > 0 && check_bitrix_sessid()) {
    $APPLICATION->RestartBuffer();
    switch ($_POST["action"]) {
        case "catalogSetAdd2Basket":
            if (is_array($_POST["set_ids"])) {
                foreach ($_POST["set_ids"] as $itemID) {
                    $product_properties = true;
                    if (!empty($_POST["setOffersCartProps"])) {
                        $product_properties = CIBlockPriceTools::GetOfferProperties($itemID, $_POST["iblockId"], $_POST["setOffersCartProps"]);
                    }
                    $ratio = 1;
                    if ($_POST["itemsRatio"][$itemID]) {
                        $ratio = $_POST["itemsRatio"][$itemID];
                    }
                    if (intval($itemID)) {
                        Add2BasketByProductID(intval($itemID), $ratio, array("LID" => $_POST["lid"]), $product_properties);
                    }
                }
            }
            break;
        case "ajax_recount_prices":
            if (strlen($_POST["currency"]) > 0) {
                $arPices = array("formatSum" => "", "formatOldSum" => "", "formatDiscDiffSum" => "");
                if ($_POST["sumPrice"]) {
                    $arPices["formatSum"] = FormatCurrency($_POST["sumPrice"], $_POST["currency"]);
                }
                if ($_POST["sumOldPrice"] && $_POST["sumOldPrice"] != $_POST["sumPrice"]) {
                    $arPices["formatOldSum"] = FormatCurrency($_POST["sumOldPrice"], $_POST["currency"]);
                }
                if ($_POST["sumDiffDiscountPrice"]) {
                    $arPices["formatDiscDiffSum"] = FormatCurrency($_POST["sumDiffDiscountPrice"], $_POST["currency"]);
Esempio n. 18
0
    $productID = (int) $_REQUEST[$arParams["PRODUCT_ID_VARIABLE"]];
    if (($action == "COMPARE_ADD2BASKET" || $action == "COMPARE_BUY") && $productID > 0) {
        if (Loader::includeModule("sale") && Loader::includeModule("catalog")) {
            $QUANTITY = 1;
            $product_properties = array();
            if (is_array($arParams["OFFERS_CART_PROPERTIES"])) {
                foreach ($arParams["OFFERS_CART_PROPERTIES"] as $i => $pid) {
                    if ($pid === "") {
                        unset($arParams["OFFERS_CART_PROPERTIES"][$i]);
                    }
                }
                if (!empty($arParams["OFFERS_CART_PROPERTIES"])) {
                    $product_properties = CIBlockPriceTools::GetOfferProperties($productID, $arParams["IBLOCK_ID"], $arParams["OFFERS_CART_PROPERTIES"]);
                }
            }
            if (Add2BasketByProductID($productID, $QUANTITY, $product_properties)) {
                if ($action == "COMPARE_BUY") {
                    LocalRedirect($arParams["BASKET_URL"]);
                } else {
                    LocalRedirect($APPLICATION->GetCurPageParam("", array($arParams["PRODUCT_ID_VARIABLE"], $arParams["ACTION_VARIABLE"])));
                }
            } else {
                if ($ex = $APPLICATION->GetException()) {
                    $strError = $ex->GetString();
                } else {
                    $strError = GetMessage("CATALOG_ERROR2BASKET") . ".";
                }
            }
        }
    }
}
Esempio n. 19
0
<?php

if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) {
    die;
}
if (CModule::IncludeModule("catalog")) {
    $ajaxResult = array();
    if (IntVal($_REQUEST["PRODUCT_ID"]) > 0) {
        $itemId = Add2BasketByProductID(IntVal($_REQUEST["PRODUCT_ID"]));
        if ($itemId !== false) {
            $arInfo = CIBlockElement::GetByID(IntVal($_REQUEST["PRODUCT_ID"]))->GetNext();
            $strImageStorePath = COption::GetOptionString("main", "upload_dir", "upload");
            $imageId = empty($arInfo["DETAIL_PICTURE"]) ? $arInfo["PREVIEW_PICTURE"] : $arInfo["DETAIL_PICTURE"];
            if (!empty($imageId)) {
                $sPath = CFile::GetByID($imageId)->GetNext();
                $sPath = "/" . $strImageStorePath . "/" . $sPath["SUBDIR"] . "/" . $sPath["FILE_NAME"];
            } else {
                $sPath = "";
            }
            $ajaxResult["MSG"]["NAME"] = $arInfo["NAME"];
            $ajaxResult["MSG"]["URL"] = $arInfo["DETAIL_PAGE_URL"];
            $ajaxResult["MSG"]["IMG"] = $sPath;
        } else {
            $ajaxResult["MSG"] = "Ошибка добавления товара в корзину";
        }
        echo json_encode($ajaxResult);
    }
}
Esempio n. 20
0
<?php

define("NO_KEEP_STATISTIC", true);
require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php";
//wishlist - добавление в отложеные
$action = $_REQUEST["action"];
$BASKET_ID = $PRODUCT_ID = $_REQUEST["ID"];
$bResult = false;
if (CModule::IncludeModule("catalog") && CModule::IncludeModule("sale")) {
    if ($action == "LIKE" && IntVal($PRODUCT_ID) > 0) {
        $bResult = Add2BasketByProductID($PRODUCT_ID, 1, array("DELAY" => "Y"), array());
    } elseif ($action == "DISLIKE" && intval($BASKET_ID) > 0) {
        $bResult = CSaleBasket::Delete($BASKET_ID);
    } elseif ($action == "DISLIKE" && strtolower($BASKET_ID) == "all") {
        $dbBasketItems = CSaleBasket::GetList(array("NAME" => "ASC", "ID" => "ASC"), array("FUSER_ID" => CSaleBasket::GetBasketUserID(), "ORDER_ID" => "NULL", "DELAY" => "Y"), false, false, array("ID", "PRODUCT_ID", "DELAY"));
        while ($arItems = $dbBasketItems->Fetch()) {
            echo '<pre>';
            print_r($arItems);
            echo '</pre>';
            //if($arItems["DELAY"] == "Y"){
            $bResult = CSaleBasket::Delete($arItems["ID"]);
            //}
        }
    }
    $APPLICATION->RestartBuffer();
    if (!$bResult) {
        die("FAIL");
    } else {
        die("OK");
    }
}
Esempio n. 21
0
                    }
                } else {
                    $strError = GetMessage("CATALOG_ERROR2BASKET") . ".";
                }
            }
            if (is_array($arParams["OFFERS_CART_PROPERTIES"])) {
                foreach ($arParams["OFFERS_CART_PROPERTIES"] as $i => $pid) {
                    if ($pid === "") {
                        unset($arParams["OFFERS_CART_PROPERTIES"][$i]);
                    }
                }
                if (!empty($arParams["OFFERS_CART_PROPERTIES"])) {
                    $product_properties = CIBlockPriceTools::GetOfferProperties($productID, $arParams["IBLOCK_ID"], $arParams["OFFERS_CART_PROPERTIES"]);
                }
            }
            if (!$strError && Add2BasketByProductID($productID, $QUANTITY, $product_properties)) {
                if ($action == "BUY") {
                    LocalRedirect($arParams["BASKET_URL"]);
                } else {
                    LocalRedirect($APPLICATION->GetCurPageParam("", array($arParams["PRODUCT_ID_VARIABLE"], $arParams["ACTION_VARIABLE"])));
                }
            } else {
                if ($ex = $GLOBALS["APPLICATION"]->GetException()) {
                    $strError = $ex->GetString();
                } else {
                    $strError = GetMessage("CATALOG_ERROR2BASKET") . ".";
                }
            }
        }
    }
}
Esempio n. 22
0
 /**
  * Process Puy Product.
  *
  * @param int $productID
  * @param float $quantity
  * @param array $values
  * @param array $arRewriteFields
  * @throws void|Bitrix\Main\SystemException
  */
 protected function addProductToBasket($productID, $quantity, $values = array(), $arRewriteFields = array())
 {
     $productProperties = array();
     $productID = (int) $productID;
     $intProductIBlockID = (int) CIBlockElement::GetIBlockByID($productID);
     if ($intProductIBlockID > 0) {
         $productCatalogInfo = CCatalogSKU::getInfoByIblock($intProductIBlockID);
         $isOffer = CCatalogSKU::TYPE_OFFERS == $productCatalogInfo['CATALOG_TYPE'];
         if ($this->arParams['ADD_PROPERTIES_TO_BASKET'] == 'Y') {
             // Is not offer
             if (!$isOffer) {
                 // Props not empty
                 if (!empty($this->arParams['CART_PROPERTIES'][$intProductIBlockID])) {
                     $productProperties = CIBlockPriceTools::CheckProductProperties($intProductIBlockID, $productID, $this->arParams['CART_PROPERTIES'][$intProductIBlockID], $values, $this->arParams['PARTIAL_PRODUCT_PROPERTIES'] == 'Y');
                     if (!is_array($productProperties)) {
                         throw new SystemException(Loc::getMessage("CVP_PARTIAL_BASKET_PROPERTIES_ERROR"));
                     }
                 }
             } else {
                 if (!empty($this->arParams['CART_PROPERTIES'][$intProductIBlockID])) {
                     $productProperties = CIBlockPriceTools::GetOfferProperties($productID, $productCatalogInfo['PRODUCT_IBLOCK_ID'], $this->arParams['CART_PROPERTIES'][$intProductIBlockID]);
                 }
             }
         }
         if (0 >= $quantity) {
             $rsRatios = CCatalogMeasureRatio::getList(array(), array('PRODUCT_ID' => $productID), false, false, array('PRODUCT_ID', 'RATIO'));
             if ($arRatio = $rsRatios->Fetch()) {
                 $intRatio = (int) $arRatio['RATIO'];
                 $dblRatio = (double) $arRatio['RATIO'];
                 $quantity = $dblRatio > $intRatio ? $dblRatio : $intRatio;
             }
         }
         if (0 >= $quantity) {
             $quantity = 1;
         }
     } else {
         throw new SystemException(Loc::getMessage('CVP_CATALOG_PRODUCT_NOT_FOUND') . ".");
     }
     if (!Add2BasketByProductID($productID, $quantity, $arRewriteFields, $productProperties)) {
         throw new SystemException(Loc::getMessage("CVP_CATALOG_ERROR2BASKET") . ".");
     }
 }
Esempio n. 23
0
     if (0 >= $QUANTITY) {
         $QUANTITY = 1;
     }
 } else {
     $strError = GetMessage('CATALOG_PRODUCT_NOT_FOUND');
     $successfulAdd = false;
 }
 $notifyOption = COption::GetOptionString("sale", "subscribe_prod", "");
 $arNotify = unserialize($notifyOption);
 $arRewriteFields = array();
 if ($action == "SUBSCRIBE_PRODUCT" && $arNotify[SITE_ID]['use'] == 'Y') {
     $arRewriteFields["SUBSCRIBE"] = "Y";
     $arRewriteFields["CAN_BUY"] = "N";
 }
 if ($successfulAdd) {
     if (!Add2BasketByProductID($productID, $QUANTITY, $arRewriteFields, $product_properties)) {
         if ($ex = $APPLICATION->GetException()) {
             $strError = $ex->GetString();
         } else {
             $strError = GetMessage("CATALOG_ERROR2BASKET");
         }
         $successfulAdd = false;
     }
 }
 if ($addByAjax) {
     if ($successfulAdd) {
         $addResult = array('STATUS' => 'OK', 'MESSAGE' => GetMessage('CATALOG_SUCCESSFUL_ADD_TO_BASKET'));
     } else {
         $addResult = array('STATUS' => 'ERROR', 'MESSAGE' => $strError);
     }
     $APPLICATION->RestartBuffer();
Esempio n. 24
0
<?php

if (CModule::IncludeModule("sale")) {
    $ar_res = CCatalogProduct::GetByIDEx($pid);
    if ($ar_res) {
        $result = Add2BasketByProductID($pid, $quantity, array(array("NAME" => $ar_res['PROPERTIES']['COLOR']['NAME'], "VALUE" => $ar_res['PROPERTIES']['COLOR']['VALUE']), array("NAME" => $ar_res['PROPERTIES']['SIZE']['NAME'], "VALUE" => $ar_res['PROPERTIES']['SIZE']['VALUE'])));
        if ($result) {
            echo 'OK';
        } else {
            echo "Error";
        }
    } else {
        $result = Add2BasketByProductID($pid, $quantity);
        echo "OK";
    }
}