Как сделать запись в базе данных id_stock_available = id_product PrestaShop 1.7 - PullRequest
0 голосов
/ 09 февраля 2020

Я пытаюсь доставить товар в корзину, используя сторонний код php. Элемент заносится в базу данных. В таблице ps_stock_available и заметил разницу id_stock_available >id_product Я также заметил различия в таблицах ps_product и id_stock_available. Они имеют разную нумерацию и количество данных

Это код моего файла:

<code>
        //Presta init
        global $context;
        if(!$context){$context = Context::getContext();}
        $logged = $context->cookie->__get('logged');
        $id_cart = $context->cookie->__get('id_cart');
        $id_lang = $context->cookie->__get('id_lang');
        $id_guest = $context->cookie->__get('id_guest');
        $id_currency = $context->cookie->__get('id_currency');

        // Add cart if no cart found
        if (!$id_cart){
            $context->cart = new Cart();
            $context->cart->id_customer = $context->customer->id;
            $context->cart->id_currency = $id_currency;
            $context->cart->add();
            if($context->cart->id){
                $context->cookie->id_cart = (int)$context->cart->id;
            }
            $id_cart = (int)$context->cart->id;
        }

        $doAdd="Y";

        if(!$id_cart>0){$doAdd="N"; ErAdd("Your cookie <b>id_cart</b> is wrong!",1);}
        if(!$id_lang>0){$doAdd="N"; ErAdd("Your cookie <b>id_lang</b> is wrong!",1);}
        if($doAdd!="N"){
            //Check avail. tecdoc item in Presta
            $sql = 'SELECT p.`id_product`, pl.`name` FROM `'._DB_PREFIX_.'product` p
                    LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product`)
                    WHERE pl.`id_lang` = '.$id_lang.' AND
                    p.`price` = '.$Price.' AND
                    p.`reference` = "'.$Reference.'"
                    ';
            $arRes = Db::getInstance()->executeS($sql);
            if(count($arRes)>0){
                $NewTID = $arRes[0]['id_product'];
            }else{
                    //Supplier data (for 1C integration)
                    $supplierName = $arCartPrice['SUPPLIER_STOCK'];
                    $supplierId = $suppliers = (Supplier::getIdByName($supplierName));
                    if (!$supplierId) {
                        $supplier = new Supplier();
                        $supplier->name = $supplierName;
                        $supplier->active = 1;
                        $supplier->add();
                        $supplierId = $supplier->id;
                    }

                    $obProduct = new Product(false,false,$id_lang);
                    $obProduct->id_category_default = $DefaultCategory;
                    $obProduct->unity = $arCartPrice['ADD_URL'];
                    $obProduct->name = $arCartPrice['ARTICLE'] .' / '.substr($arCartPrice['NAME'],0,400).' / '.$arCartPrice['BRAND'];
                    $obProduct->description = 'This product is created automatically by ';
                    $obProduct->description_short = $arCartPrice['SUPPLIER_STOCK'].' ['.$arCartPrice['DAY'].' days]';
                    $obProduct->price = $Price;
                    $obProduct->wholesale_price = $arCartPrice['PRICE'];
                    $obProduct->reference = $Reference;
                    $obProduct->link_rewrite = $arCartPrice['CPID'];
                    $obProduct->available_for_order = 1; //true
                    $obProduct->visibility = 'none';
                    $obProduct->is_virtual = 0;
                    //$obProduct->weight = round($arCartPrice['OPTIONS']['WEIGHT']/1000,2);
                    $obProduct->minimal_quantity = 1;
                    $obProduct->condition = 'used';
                    $obProduct->condition = 'refurbished';
                    $obProduct->available_now = $arCartPrice['AVAILABLE_NUM'];
                    $obProduct->quantity = $arCartPrice['AVAILABLE_NUM'];



                    //supplier
                    $obProduct->supplier_name = $supplierName;
                    $obProduct->id_supplier = $supplierId;

                    $obProduct->id_tax_rules_group = $DefaultTaxGroup;
                    //echo '<br><pre>';print_r($obProduct);echo '
'; d ie (); $ ObProduct-> Add (); if ($ obProduct-> id> 0) {$ NewTID = $ obProduct-> id; $ ObProduct-> setWsCategories (Array (Array ( "ID" => $ DefaultCategory))); // Добавить изображение if ($ arCartPrice ['IMG_SR C']! = '' AND $ NewTID> 0) {$ shops = Shop :: getShops (true, null, true); $ image = new Image (); $ image-> id_product = $ NewTID; $ image-> position = Image :: getHighestPosition ($ NewTID) +1; $ image-> cover = true; // или ложь; if (($ image-> validateFields (false, true)) === true && ($ image-> validateFieldsLang (false, true)) === true && $ image-> add ()) {$ image-> associateTo ($ магазинов); $ tmpfile = tempnam (_PS_TMP_IMG_DIR_, 'ps_import'); if (Tools :: copy ($ arCartPrice ['IMG_SR C'], $ tmpfile)) {$ path = $ image-> getPathForCreation (); ImageManager :: resize ($ tmpfile, $ path. '. Jpg'); } unlink ($ tmpfile); }}} else {ErAdd («Prestashop новый идентификатор элемента имеет значение false», 1); } unset ($ obProduct); } if ($ NewTID> 0) {// if ($ arCartPrice ['AVAILABLE']> 0) {StockAvailable :: setQuantity ($ NewTID, false, $ arCartPrice ['AVAILABLE']);} StockAvailable :: setQuantity ($ NewTID, 0, (int) $ arCartPrice ['AVAILABLE']); $ obCart = новая корзина ($ id_cart); $ obCart-> id_lang = $ id_lang; $ obCart-> id_currency = $ id_currency; if ($ obCart-> updateQty ((int) $ QUANTITY = 1, (int) $ NewTID)) {Header ('Расположение: http: //'.$_SERVER [' HTTP_HOST ']. $ _ SERVER [' REQUEST_URI '] ); д ie (); } else {ErAdd ("Добавить в корзину неверно. NewTID =". $ NewTID, 1); }

Как выполнить id_stock_available = id_product?

1 Ответ

0 голосов
/ 10 февраля 2020

Можете ли вы быть более точным c? На самом деле я не могу понять, в чем именно твоя проблема. Опишите как можно более аналитически ваш сценарий.

Насколько я понял до сих пор, вы владеете / используете стороннюю библиотеку. Вы пытаетесь создать скрипт, который будет «подпитывать» эту библиотеку элементами, которые клиент добавил в свою корзину, верно?

Вам нужен их id_product, id_product_attribute? Количество добавлено в корзину? Количество, которое существует как запас?

Позвольте мне понять, чтобы попытаться помочь вам с вашей проблемой.

...