Помощь Prestashop 1.7 WebService

Тема в разделе "PrestaShop", создана пользователем sergiykhd, 22 мар 2019.

Информация :
Приветствую гость, обрати внимание! Темы которые закреплены в разделах, в скором времени будут откреплены. Правила раздела PrestaShop

(Не актуальные темы) Каталоги:Модули PrestaShop 1.7Модули PrestaShop 1.5 - 1.6Шаблоны PrestaShop 1.7Шаблоны PrestaShop 1.5 - 1.6
(Не актуальные темы) Поиск / Запросы:Модули PrestaShop 1.7Модули PrestaShop 1.5 - 1.6Шаблоны PrestaShop 1.7Шаблоны PrestaShop 1.5 - 1.6
Полезная информация:Поддержка и помощь c PrestaShopУбираем ПрестаТраст, стучалки и прочую рекламуСовместные покупки модулей и шаблоновПеревод Prestashop и модулей
Модераторы: trace
  1. sergiykhd

    sergiykhd Sergiy

    Регистр.:
    17 апр 2013
    Сообщения:
    1.096
    Симпатии:
    800
    Всем привет!

    Стоит такая задача: по апи обновлять только кол. товара. В самих настройках веб служб нет поля products_quantity.

    Может кто сталкивался - сэкономьте мне время. Спасибо!
     
  2. vitos1401

    vitos1401

    Регистр.:
    3 ноя 2012
    Сообщения:
    183
    Симпатии:
    274
    Приветствую! Создайте файл WebserviceRequest.php. Поместите в него такой код:
    Код:
       class WebserviceRequest extends WebserviceRequestCore{
          
            public static function getResources(){
              
                $resources=parent::getResources();
              
                $resources['product_quantity'] = array('description' => 'Update product quantity only', 'class' => 'ProductPrice', 'forbidden_method' => array('POST', 'DELETE'));
                ksort($resources);
                return $resources;
              
              
            }
        }
    Далее создайте файл ProductPrice.php. В него добавьте такой код:
    Код:
       class ProductPriceCore extends ObjectModel{  
    
    
            /** @var string Object last modification date */
          
            public $date_upd;
            public $id_product;
            public $active;
            public $quantity;
                  
            public static $definition = array(
                'table' => 'product',
                'primary' => 'id_product',
                'fields' => array(
                                    'id_shop_default'           =>  array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'),
                                    'active'                    =>  array('type' => self::TYPE_BOOL, 'shop' => true, 'validate' => 'isBool'),
                                   // 'prestashop_product_id'  =>  array('type' => self::TYPE_INT,  'required' => true),
                                    'date_upd'                  =>  array('type'  => self::TYPE_DATE, 'shop' => true, 'validate' => 'isDate'),
                                    'quantity'                  =>  array('type' => self::TYPE_HTML, 'shop' => false, 'validate' => 'isInt', 'required' => true),
                                    )
                );
            protected $webserviceParameters = array();
        }
    И закиньте их (файлы) в оверрайды, имеющие такие пути:
    ../override/classes/webservice/WebserviceRequest.php
    ../override/classes/ProductPrice.php

    Если будет присутствовать ошибка (зависит от ваших настроек VPS/VDS и PHP) то можно раскомментировать prestashop_product_id
     
    zen1, DaoKakao, mr.stitch и 3 другим нравится это.
  3. vsozansky

    vsozansky Создатель

    Регистр.:
    19 авг 2013
    Сообщения:
    40
    Симпатии:
    53
    Используйте http://<domen>/api/stock_availables
     
    Belena27089 нравится это.
  4. sergiykhd

    sergiykhd Sergiy

    Регистр.:
    17 апр 2013
    Сообщения:
    1.096
    Симпатии:
    800
    Каким образом? Синхронизация происходит по ключу.
     
  5. vsozansky

    vsozansky Создатель

    Регистр.:
    19 авг 2013
    Сообщения:
    40
    Симпатии:
    53
    Уточните вопрос.

    Я указал, что достучаться к количеству в версии 1.7.x можно через webservice stock_availables
    Ключ для webservice Вы можете создать в админке НАСТРОИТЬ/Расширенные параметры/Веб службы
     
  6. sergiykhd

    sergiykhd Sergiy

    Регистр.:
    17 апр 2013
    Сообщения:
    1.096
    Симпатии:
    800
    вы пишите: Используйте http://<domen>/api/stock_availables - вопрос куда его вставлять?
     
  7. vsozansky

    vsozansky Создатель

    Регистр.:
    19 авг 2013
    Сообщения:
    40
    Симпатии:
    53
    Я использую внешний источник. А именно 1С. И данные передаю в API извне. Использую GET запросы для чтения и POST запросы для добавления/изменения. Что-то типа ...
    http://<domen>/api/stock_availables?filter[id_product]=[1,10]&display=full

    Вот дока по вопросу
    https://devdocs.prestashop.com/1.7/development/webservice/
    или
    http://doc.prestashop.com/display/PS16/Using+the+PrestaShop+Web+Service

    С созданием модуля в самой престе я помочь не смогу.
     
    Последнее редактирование: 2 апр 2019
    sergiykhd и _sashok нравится это.
  8. sergiykhd

    sergiykhd Sergiy

    Регистр.:
    17 апр 2013
    Сообщения:
    1.096
    Симпатии:
    800
    Этот методе под 1.7 не подходит, т.к в этой версии в базе products_quantity - не используемое поле. Поле с запасами перенесено с ps_product (products_quantity) в ps_stock_available (quantity и physical_quantity).
     
    _sashok нравится это.