Импорт остатков по складам не работает

cs-cart 4.14.3 (на демо та же ерунда)

При попытке импортировать остатки по складам, по тем товарам, где вручную не было указаны хотя бы нулевые остатки, остатки не обновляются.

При том, что импорт вроде как происходит, сообщение о том, что обновлено nnn товаров появляется.

Воспроизвести элементарно:

  1. Добавляете вручную к одной из вариаций товара «Брюки для разогрева Adidas» остатки по нескольким складам.
  2. Экспортируете все брюки для разогрева Adidas.
  3. Указываете для других (пока пустых) вариаций любые числовые значения.
  4. Импортируете.

Остатков нет.

2 лайка

И знаете что мне поддержка ответила? А вот что:

По умолчанию для успешного импорта необходимо предварительно назначить любое количество товара(даже 0) магазину или складу на вкладке Количество в режиме редактирования товара. Данное значение не должно быть пустым.

У вас сколько товаров? У меня немного, пять с небольшим тысяч всего. Но даже я прихожу в бешенство, когда мне предлагают врукопашную пройти по всем товарам, открыть вкладку «Количество» и поставить там что-то, хоть ноль.

А потом, например, мы добавим еще один-два склада.

И снова нужно будет вручную отредактировать несколько тысяч (а если у кого десятков или сотен тысяч) товаров?

Нет, господа и дамы @cs-cart_team @cs-developer @ikoshkin, так дело не пойдёт. Это же ад какой-то!

:face_with_symbols_over_mouth::face_with_symbols_over_mouth::face_with_symbols_over_mouth::face_with_symbols_over_mouth::face_with_symbols_over_mouth:

2 лайка

Сочувствую. Тоже выбешивает “мыло мочало”.
У вас эта котовасия с импортом только со складами? Я просто не использую этот модуль, по этому не могу сообразить, какая связь – остатки, склады, количество, вариации, и как так в файле не оказалось данных по количеству. Если есть остатки, то как бы по складу количество само собой должно быть, вы же не на пальцах считаете. Или там что, какой-то особенный фид для этого, это CSV или XML? Так то по логике, перед импортом в файле добавить количество не проблема. Позабыли что ли или в чём косяк?

1 лайк

Юрий из поддержки утверждает, что прежде чем появится возможность импортировать остатки по складу из файла, нужно вручную в карточке каждого товара, остатки по которым я собираюсь импортировать, указать любое количество, хотя бы ноль. Поначалу (после добавления склада) там нет ничего, пусто. Как-то так:

CSV там самый обычный.

Screenshot_325

А вот скрипт импорта сделан как-то рукожопо :face_with_raised_eyebrow:

Я знаю уже, как это, в принципе, победить. Мне уже интересно, сможет ли до того, что я знаю, додуматься Юрий из поддержки :wink:

Но это победить с помощью бубна. А правильно было бы добавить в скрипт импорт всего один запрос, который добавит в нужную таблицу записи. Или исправить то место, которое сейчас почему-то кривое.

1 лайк

Ага, теперь понятно где собака порылась. По сути то же, что и с модулем “Режим каталога”, там так же завязка на импорт, а функционал отсутствует. Печаль в том, что подобный недодел исправляют не быстро, можно сказать не торопясь. Как правило, всё из-за того, что разработка ведётся по секторам. Тот или те кто делал эту часть работы (склады) могли даже знать о связке (склад – импорт), но так как в задаче только этот сектор их это обстоятельство совершенно не беспокоило. Это как с дорогами – проезжую часть кладёт ДСУ-1, а тротуар ДСУ-2, и никто за друг друга не отвечает, в итоге дорога 5 лет без тротуара и виноватых не найдёшь. Теперь осталось лишь ждать, когда у разработчиков накопятся причины заняться другим сектором (импортом), и только тогда они приступят к решению и этой задачи. Однако, по опыту знаю, что данная проблема не является веской причиной, чтобы всё бросить и в срочном порядке заниматься.

1 лайк

Да согласен. Но в результате переписки с Юрием, он подытожил, что это-таки косяк и

Мы направили запрос нашей команде разработки на пересмотр данной функциональности, поскольку обязательность назначения товара на склад выглядит багом.

Так что осталось примерно 45 дней :wink:

Дай Бог, чтобы ожидания сбылись. :slightly_smiling_face: А сейчас то через БД заполнить количество можно?

Файл app/addons/warehouses/schemas/exim/products.functions.php
закомментируйте строки с 58 по 68 (включительно) (CS-Cart 4.13.3), а именно этот код

$product_warehouses = $manager->getProductWarehousesData($product_id);

    foreach ($product_warehouses as $key => $product_warehouse) {
        foreach ($warehouse_amounts as $warehouse_amount) {
            if ((int) $product_warehouse['warehouse_id'] !== (int) $warehouse_amount['warehouse_id']) {
                continue;
            }

            $product_warehouses[$key] = $warehouse_amount;
        }
    }

в следующей строке замените это

$product_stock = $manager->createProductStockFromWarehousesData($product_id, $product_warehouses);

на это

$product_stock = $manager->createProductStockFromWarehousesData($product_id, $warehouse_amounts);

Обязательно проверяйте на тестовой копии сайта.

Но там еще есть баг связанный с подбивкой общего кол-ва, но то отдельно нужно будет в баг-трекер отписать.
UPD. Проблема с подсчетом общего количества товаров на складах в БД

1 лайк

Я так делаю, запросом типа

INSERT INTO `cscart_warehouses_products_amount` (`warehouse_id`, `product_id`, `amount`) VALUES ('27', '714', '0'),.....

Прописываю нулевые остатки для нужных product_id.

После этого импорт нормально работает.

Mamma Mia, выходит, надо айдишник каждого товара указать, это же какой длины запрос выйдет, если товаров много. Через БД тоже не малый труд, не забалуешь. Однозначно, надо расширять функционал импорта.

Ну я эти айдишники вытаскиваю в файл, а дальше три поиска/замены и запрос готов. Так что не парит.

А вот как вообще учёт по складам работает, парит сильно. Это просто какой-то :face_with_symbols_over_mouth::face_with_symbols_over_mouth::face_with_symbols_over_mouth::face_with_symbols_over_mouth:ец

С этим запросом получилось гораздо лучше, чем с расшаренными товарами

Вот ответ поддержки:

Данная проблема была исправлена и её исправление войдёт в следующую версию CS-Cart (4.13.4). Если вы хотите применить изменения в вашей текущей версии, пожалуйста, воспользуйтесь прикрепленным .diff файлом.

Информацию о том, как применить diff-файл, вы можете найти в нашей документации:

https://www.cs-cart.ru/docs/latest/upgrade/apply_diff_file.html

Спасибо.
Sincerely yours,
Yury

Всем привет.

Ошибка исправлена, исправление будет включено в версию 4.14.1, для исправления ошибки в текущей версии вы можете воспользоваться прикрепленным к сообщению патчем. Инструкция по применению патча:

patch.zip (882 Байта)