Получение актуальных остатков при первой синхронизации ТУ и Облака Эвотор

Когда пользователь впервые устанавливает товароучётную систему (далее также ТУ) это может привести к нарушению количества или обнулению остатков товаров. Такое поведение ТУ можно объяснить неочевидным способом получения остатков, актуальных на момент установки приложения.

В основе получения актуальных остатков лежит обработка данных, указанных в поле initial_quantity различных видов документов. В зависимости от значения поля и типа документа (например, продажа или возврат товара), следует выполнить определённую обработку остатков.

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

Чтобы получить актуальные остатки:

  1. Узнайте список магазинов пользователя.

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

  2. Получите номенклатуру каждого из магазинов пользователя с помощью метода GET /stores/{store-id}/products.

    Если пользователь впервые устанавливает ТУ, остатки всех товаров будут нулевыми.

  3. Получите список всех документов магазина за выбранный вами период (например, шесть месяцев).

    Максимальный период выборки документов зависит от версии API, которую вы используете: один год для API V1 или всё время с момента создания магазина для API V2. Дату создания магазина вы можете определить по первым восьми символам его идентификатора (id).

  4. Теперь, когда вы знаете идентификаторы всех товаров (поле uuid в API V1 или id в API V2) и документов, необходимо найти самый новый документ, соответствующий каждому из товаров. В зависимости от типа документа реализуйте следующую логику:

    • Если последним документом по товару был документ приёмки (тип ACCEPT), используйте указанные в нём остатки товара.
    • Если последним документом по товару был документ продажи (тип SELL), из указанных в нём остатков необходимо вычесть количество проданного товара.
    • Если последним документом по товару был документ возврата (тип PAYBACK), к указанным в нём остаткам необходимо добавить количество возвращённого товара.

    Полученные таким образом остатки запишите в поле quantity соответствующих товаров.

    Если за выбранный вами период документов по товару не обнаружено, оставьте товар без изменений и продолжайте в фоновом режиме запрашивать более старые документы.

  5. В зависимости от версии API, которую вы используете:

Остатки товаров обновлены. Теперь вы можете сообщить своим пользователям, что в Облаке Эвотор доступны новые данные, которые можно загрузить на смарт-терминалы.