API и цена товара для группы пользователей

Доброго… Я начинающий в CS-CART. Используется API. Получилось добавить товар и изменить данные по нему. Но никак не получается добавить и соответственно изменить цены для групп пользователей в таблице cscart_product_prices. Испробовал различным способами много разных вариантов, но ничего не получается. Вот, например, использую метод PUT /products/:id для обновления товара. JSOIN файл (здесь 313 - product_id товара):
{
“product_prices”
{
“313”:
{
“product_id”: “313”,
“usergroup_id”: “3”,
“price”: “202”
}
}
}
Приходит ответ, что всё хорошо. Но ничего не меняется. Подскажите, как можно поменять цену товара для разных групп пользователей через API?

Возможно еще надо передать тип скидки и количество.

Я думаю, что смысл таблицы cscart_product_prices в том, чтобы для товара иметь несколько цен. И пользователи разных групп видели свою цену товара. Для этого есть ключевые поля product_id и usergroup_id в этой таблице. Мне непонятно про тип скидки и количество. Есть, например, товар с product_id = 313, и нужно установить для usergroup_id = 3 и usergroup_id = 4 для этого товара другие цены. Группы пользователей прописаны в соответствующих таблицах.

Попробуйте на вкладке товара Оптовые скидки добавить строку указав только поля Значение и Группа. Не получилось? Потому что обязательно надо указать количество - поставьте единицу. Это поле обязательное, ведь эта вкладка изначально имела смысл выставлять цены для покупки например 1 единицы, а если покупаешь 10 - то дешевле, а если 100 - то еще дешевле итп, то есть

ясно описан самим название вкладки

Спасибо за ответы. Но не помогло. Добавил поле поле lower_limit в JSOIN файл:
{
“product_prices”:
{
“313”:
{“product_id”: “313”, “usergroup_id”: “3”, “price”: “203”, “lower_limit”: “2” }
}
}
Видимо я неправильно пишу JSOIN файл. Вариантов переделал много, нет смысла здесь все варианты выкладывать. И через POST при добавлении нового товара, и через PUT при обновлении товара. Может всё-таки кто-то делал через API подобное?

а вот это?

вообще тип скидки определяется внутри в зависимости от того, что передается: цена или процент.

а как вы это делаете?

$prices = [
    “product_prices” => [
        “313” => [
            “product_id” =>  “313”,
            “usergroup_id” => “3”,
            “price” => “202”,
            “lower_limit” => “2”
        ]
    ]
];
$data = json_encode($prices);
1 лайк

да, в таблице cscart_product_prices два поля lower_limit и percentage_discount. Видимо какое из них заполнено, такой и вид скидки.

да, вы работаете с таблицей цен напрямую. Я пытаюсь через API. В API не нашёл возможность работать сразу с таблицей cscart_product_prices. Есть возможность работать с products ([Товары: products — Документация docs.cs-cart.ru 4.17.x]) и всё…

Понятно… Попробуйте в каком-то товаре завести несколько цен и посмотреть что возвращает
GET /products/:id
если среди возвращенных данных будет перечисление цен - поймете как их передавать. А если не будет… Тогда видимо этими методами результата не достичь

Да, GET /products/:id не возвращает цены товара. Спасибо всем за помощь!!!

GET выводит prices. И в PUT тоже можно изменить цены. Просто вы не правильно пишете тело запроса. Посмотрите функцию обновление fn_update_product и внутри у него есть fn_update_product_prices вы должны правильно передавать параметры тела. Для наглядной практики найдите контроллер обновления товара и там ищите параметр который будет передаваться функции обновления fn_update_product_prices. Если вообще не разберетесь отпишитесь

Вот спасибо, так спасибо. Получилось!!! Ещё не последний вариант, но уже что-то. Используется метод PUT /products/:id - обновление.JSOIN файл примерно так выглядит:
{
“price”: “201”,
“prices”: [{“price”: “201”, “lower_limit”: “1”, “usergroup_id”: “0” },
{“price”: “202”, “lower_limit”: “5”, “usergroup_id”: “3” },
{“price”: “209”, “lower_limit”: “6”, “usergroup_id”: “4” }]
}
price - обязательно к заполнению. В массиве prices данные к заполнению в таблице cscart_product_prices. Причём нулевой элемент всегда используется в ф-ции fn_update_product_prices для usergroup_id = 0.

2 лайка

Эта тема была автоматически закрыта через 3 дня после последнего ответа. В ней больше нельзя отвечать.