Написать скрипт, который будет загружать данные по остаткам на складах маркетплейсов в систему Мойсклад через API. Скрипт будет работать на хроне по расписанию.
Алгоритм работы:
1. Модуль отправки данных на Мойсклад
При помощью API запроса создается документ Инвентаризация по нужному складу (озон, яндекс, ВБ), с указанием фактического остатка позиций, который вы хотите получить после проведения инвентаризации, передавая его в поле quantity. После создания Инвентаризации с позициями, отправив запрос на получение позиций можно будет увидеть разницу между текущим расчетным остатком в сервисе и фактическим остатком позиции, который вы хотите получить по итогу, в поле correctionAmount. Если значение correctionAmount отрицательное, то это означает, что на указанное значение необходимо создать Списание по этому складу, чтобы конечный остаток позиции, стал равен желаемому фактическому остатку, при этом передавать количество для документа Списание нужно будет через поле quantity, но указывать нужно будет не отрицательное значение, а положительное. Например, если correctionAmount = -20, то для этой позиции в Списании нужно передать quantity 20. А если значение в поле correctionAmount положительное, то это означает, что для данной позиции требуется создавать Оприходование, передавая в поле quantity значение равное значению из correctionAmount. Если в поле correctionAmount по позиции указано нулевое значение, то это означает, что Оприходовать, или Списывать данный товар не требуется, так как его фактический остаток уже равен текущему расчетному остатку на складе.
Таким образом, после получения значений в поле correctionAmount из Инвентаризации, нужно будет отправлять запросы на создание документов Оприходование и Списание с теми позициями, по которым correctionAmount ненулевое и в результате, после создания этих документов остатки на складе станут равны значениям quantity, которые вы передавали в запросе на создание Инвентаризации.
Документацию с примерами запросов для документа Инвентаризация можно найти по ссылке:
Примеры запросов на создание Оприходований и Списаний можно найти по ссылкам:
Сам процесс проведения Инвентаризации в основном интерфейсе описан в специальной статье:
Разница при создании Инвентаризации по API лишь в том, что создать Списание и Оприходование автоматически, перенеся туда позиции по которым требуется корректировка, не получится, и нужно будет самостоятельно передавать такие позиции в запросах на создание Оприходования и Списания
2. Модуль загрузки данных из Api ozon
Самое простое — это брать csv файл с отчетом об остатках из Ozon по API. Делается это в 2 команды, сначала отправляется запрос на генерацию отчета – в ответе будет код на отчет.
Далее следующей командой этот отчет скачивается.
Так же есть вариант получения данных в формате json
После чего готовим данные в нужом формате и отправляем в модуль Отправки данных.
3 и 4. Модули получения данных из Яндекс маркет и Wildberries сделать аналогично.
Нюанс будет в том, что идентификация товара в зависимости от маркетплейса будет по разным полям – штрихкод, код, артикул и т.п. С этим определимся в процессе.
5. Организовать логгирование с небольшим отчетом об ошибках. Если произошла ошибка идентификации товара – скачать файл с отчетом об ошибках с Моегосклада, там будут проблемные строки. Организовать отправку сообщения на почту при неудачном исполнении скрипта по какому-либо маркетплейсу – для возможности оперативного исправления ошибок.
6. Настройки вынести в отдельный конфиг файл, в котором будут включение/выключение синхронизации, апи ключи, периодичность запросов и прочие необходимые параметры. Закрыть публичный доступ на сервере. Обсудим в процессе работы.