Бөлісу құралы:


Графики изменения запасов в наличии и доступность для заказа

В этой статье описывается, как настроить функцию График изменения запасов в наличии для планирования будущих изменений запасов в наличии и рассчитать доступные для заказа (ATP) количества. ATP — это количество номенклатуры, которое доступно и может быть зарезервировано для клиента в следующем периоде. Использование этого расчета может значительно повысить возможности выполнения заказов.

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

Рассчитанные меры для количеств, доступных для заказа

Вычисляемая мера ATP представляет собой заранее определенную вычисляемую меру, которая обычно используется для поиска имеющегося в данный момент количества в наличии. Количество поставок — это сумма количеств тех физических показателей, которые имеют тип модификатора сложение, а количество спроса представляет собой сумму количеств тех физических показателей, которые имеют тип модификатора вычитание.

Можно добавить несколько вычисляемых показателей для расчета количеств, доступных для заказа. Однако общее количество отдельных физических показателей во всех рассчитанных показателях ATP должно быть меньше девяти.

Важно

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

Например, можно создать следующую вычисляемую меру:

Доступно в наличии = (ФизическиеЗапасы + ВНаличии + Неограниченно + КонтрольКачества + Входящие) – (ФизическийРезерв + ФизическийГибкийРезерв + Исходящие)

Сумма (ФизическиеЗапасы + ВНаличии + Неограниченно + КонтрольКачества + Входящие) представляет поставку, а сумма (ФизическийРезерв + ФизическийГибкийРезерв + Исходящие) представляет спрос. Таким образом, вычисляемая мера может быть понята следующим образом:

Запасы в наличии = ПоставкаСпрос

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

Физическое количество в наличии = (Физическиезапасы + Вналичии + Неограничено + Контролькачества + Входящие) – (Исходящие)

В этих двух расчетных показателях ATP имеется восемь различных физических показателей: ФизическиеЗапасы, ВНаличии, Неограничено, QualityInspection, Входящие, ФизическийРезерв, ФИзическийГибкийРезерв и Исходящие.

Дополнительные сведения о вычисляемых мерах см. в разделе Вычисляемые меры.

Включение и настройка планирования изменений запасов в наличии и доступных для резервирования запасов (ATP) в пользовательском интерфейсе версии 2

Этот раздел применим при использовании пользовательского интерфейса приложения "Видимость запасов" версии 2.

Прежде чем можно будет использовать доступное для заказа количество, необходимо настроить одну или несколько рассчитанных мер для расчета количества, доступного для заказа. Также необходимо включить функцию и настроить параметры доступного для заказа количества в Microsoft Power Apps.

Выполните следующие действия, чтобы включить функцию График изменения запасов в наличии в Power Apps и настроить параметры доступности для заказа (ATP).

  1. Войдите в Power Apps и откройте приложение Видимость запасов.

  2. В области перехода выберите Управление функциями.

  3. На плитке Доступно для заказа выберите Управление.

  4. Установите для параметра Включить функцию значение True, чтобы включить функцию ATP.

  5. Установите для параметра График на 180 дней значение True, чтобы поддерживать более длительный период планирования ATP (180 дней).

    Важно

    По умолчанию функция ATP ограничена семью днями. Функции семидневного ATP и 180-дневного ATP являются отдельными и независимыми друг от друга. Изменения графика, которые вы создаете или изменяете с помощью функции семидневного ATP, не вступят в силу при включении функции 180-дневного ATP. Если вы использовали семидневную функцию ATP и хотите перейти на 180-дневную функцию, мы рекомендуем вам удалить старые данные и повторно опубликовать имеющийся график изменений после включения 180-дневной функции.

  6. Укажите в поле Максимальный период планирования (в днях) число дней, в течение которых пользователи могут просматривать и отправлять запланированные изменения запасов в наличии. Пользователи, которые запрашивают складскую информацию, получат количество в наличии, запланированные изменения запасов в наличии и данные ATP для каждого дня в определенном периоде, начиная с текущей даты. Максимальное значение для этого поля составляет 180 дней. По умолчанию установлено на 30 дней. Таким образом, вы можете запланировать изменения на срок до 30 дней, начиная с сегодняшнего дня.

    Важно

    Период планирования включает текущую дату. Таким образом, пользователи могут запланировать изменения запасов в наличии в любое время с текущей даты (день, когда изменение отправлено) через (плановый период – 1) дней в будущем.

  7. В разделе Меры графика настройте меры графика. Вы можете использовать существующие вычисляемые меры в качестве мер графика или создать новые. При запросе Видимости запасов значение ATP указывается для определенных вычисляемых мер на основе запланированных изменений физических мер компонентов. В разделе Меры графика выберите Новая конфигурация графика изменений запасов в наличии V2 на панели инструментов, чтобы добавить привязку новой вычисляемой меры для ATP. Вычисляемая мера — это то, что вы хотите использовать для определения доступного на данный момент количества запасов в наличии. Дополнительные сведения о создании вычисляемых мер см. в разделе Вычисляемые меры.

    Важно

    Формула расчета ATP по умолчанию предназначена для справки. Вы можете изменить и добавить другие источники данных и физические меры, чтобы настроить правильный расчет ATP для вашего бизнеса.

  8. В разделе Конфигурация набора индексов ATP настройте свой индекс ATP. Индекс ATP похож на иерархию индексов продуктов, которая позволяет группировать результаты запроса по определенным измерениям. Например, если вы установите ColorId и SizeId в качестве набора индексов ATP, то результаты запроса будут сгруппированы по цвету и размеру. Вы можете иметь несколько наборов индексов.

    Важно

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

  9. Выберите Сохранить.

  10. Завершив настройку всех необходимых параметров, выберите Обновить конфигурацию в разделе Параметры администратора на панели навигации.

Дополнительные сведения см. в разделе Выполнение и обновление конфигурации.

Включение и настройка планирования изменений запасов в наличии и доступных для резервирования запасов (ATP) в пользовательском интерфейсе версии 1

Этот раздел применим при использовании пользовательского интерфейса приложения "Видимость запасов" версии 1.

Выполните следующие действия, чтобы включить функцию График изменения запасов в наличии в Power Apps и настроить параметры доступности для заказа (ATP).

  1. Войдите в Power Apps и откройте приложение Видимость запасов.

  2. Откройте страницу Конфигурация.

  3. На вкладке Управление функциями включите функцию Доступно для заказа.

  4. Выберите вкладку Параметр ATP.

  5. При запросе отображения запасов будет получен результат, включающий каждую рассчитанную меру ATP, которая добавляется здесь. Выберите Добавить, чтобы добавить новую рассчитанную меру для ATP.

  6. Задайте значения в следующих полях:

    • Источник данных — выберите источник данных, связанный с вычисляемой мерой.
    • Вычисляемая мера — выберите вычисляемую меру, связанную с выбранным источником данных, и которую необходимо использовать для поиска доступного количества в наличии.
    • Период планирования — введите число дней, в течение которых пользователи могут просматривать и отправлять запланированные изменения в наличии при использовании выбранной вычисленной меры. Пользователи, которые запрашивают складскую информацию, получат количество в наличии, запланированные изменения запасов в наличии и данные ATP для каждого дня в этом периоде, начиная с текущей даты. Выберите целое число от 1 до 7.

    Важно

    Период планирования включает текущую дату. Таким образом, пользователи могут запланировать изменения запасов в наличии в любое время с текущей даты (день, когда изменение отправлено) через (плановый период – 1) дней в будущем.

  7. Нажмите Сохранить.

  8. Повторяйте шаги с 5 по 7 до тех пор, пока не будут добавлены все вычисляемые меры, которые требуются для ATP.

  9. После завершения настройки всех необходимых параметров выберите Обновить конфигурацию.

Порядок работы графику изменения запасов в наличии и расчетов ATP

График изменения запасов в наличии устанавливает ожидаемые даты и количества запланированных изменений запасов в наличии. Имеется возможность отправить график изменения запасов в наличии в видимость запасов, при условии, что даты находятся в пределах периода, определенного параметром Период планирования (см. раздел Включение и настройка функций этой статьи). Пользователи, которые запрашивают складскую информацию, получат количество в наличии, запланированные изменения запасов в наличии и данные ATP для каждого дня в этом периоде.

Запланированные изменения изначально не фиксируются, и поэтому не влияют на фактические количества в наличии в системе. Чтобы зафиксировать изменения, необходимо отправить событие изменения запасов в наличии, которое обновляет фактически доступное количество в наличии. Затем следует реверсировать запланированное изменение, отправив график изменения запасов в наличии для соответствующего отрицательного количества.

Например, можно разместить заказ на 10 велосипедов и ожидать, что они прибудут завтра. Таким образом, вы отправляете график изменения запасов в наличии с входящим количеством 10, который датирован завтрашним днем. Когда заказ прибывает на следующий день, велосипеды добавляются в физические запасы в наличии. Затем необходимо зафиксировать изменение в системе, чтобы обновить фактическое количество в наличии. Чтобы зафиксировать изменение, необходимо отправить событие изменения запасов в наличии, которое имеет входящее количество 10. Затем вы реверсируете запланированное изменение, отправив график изменения запасов в наличии, который имеет входящее количество "-10".

При запросе видимости запасов для количеств в наличии и количеств ATP возвращается следующая информация для каждого дня в периоде планирования:

  • Дата — дата, к которой применяется результат. Часовой пояс — время в формате UTC.
  • Количество в наличии — фактическое количество в наличии для указанной даты. Этот расчет выполняется в соответствии с вычисляемой мерой ATP, настроенной для видимости запасов.
  • Запланированная поставка — сумма всех запланированных входящих количеств, которые еще не были физически доступны для немедленного потребления или отгрузки на указанную дату.
  • Запланированный спрос — сумма всех спланированных исходящих количеств, которые не были потреблены или отгружены на указанную дату.
  • Количество ATP — минимальное прогнозируемое количество в наличии, доступное с указанной даты до окончания периода планирования. Это количество включает все корректировки запланированного количества. Это максимальное количество, которое может быть зарезервировано на текущую дату для поставки или потребления в этот день.

Например, если текущая дата 1 февраля 2022 года, а период планирования — 7 дней, пользователи могут отправлять запланированные изменения в наличии, которые предположительно будут происходить с 1 февраля по 7 февраля 2022 года. В этом случае доступное для заказа количество на 3 февраля, например, рассчитывается на основе количества в наличии для этого дня и запланированных количеств с 3 февраля по 7 февраля.

Пример

В следующем примере показано, как серия запланированных изменений количества влияют на количества запасов в наличии и количества ATP, отображаемые в видимости запасов. Кроме того, в нем показано, как зафиксировать запланированное изменение, как зафиксированное изменение графика влияет на результаты, и что может произойти, если запланированное изменение не будет зафиксировано.

Результаты в этом примере показывают планируемое значение в наличии. Это значение включает в себя все запланированные обновления для целей иллюстрации, но при запросе видимости запасов фактически они не выводятся.

  1. Следующие параметры настроены для вашей системы на странице Параметры ATP приложения "Видимость запасов" в Power Apps:

    • Меры графика — вычисляемая мера с именем В наличии добавляется сюда. Рассчитывается так: В наличии = ПредложениеСпрос.
    • Максимальный период планирования (дни). Установлено значение 7.
    • Конфигурация набора индексов ATPColorId и SizeId добавляются сюда.
  2. Применяются также следующие условия:

    • Текущая дата: 1 февраля 2022 года.
    • Текущее количество в наличии — 20.
  3. Для текущей даты (1 февраля 2022 года) вы отправляете количество запланированного спроса 3 в видимость запасов. Следовательно, прогнозируемое количество запасов в наличии равно 17. В следующей таблице показан результат.

    Дата В наличии Запланированные поставки Запланированный спрос Прогнозируемые запасы в наличии ATP
    2022-02-01 20 3 17 17
    2022-02-02 20 17 17
    2022-02-03 20 17 17
    2022-02-04 20 17 17
    2022-02-05 20 17 17
    2022-02-06 20 17 17
    2022-02-07 20 17 17
  4. На текущую дату (1 февраля 2022) вы отправляете запланированное количество поставок 10 для 3 февраля 2022 года. В следующей таблице показан результат.

    Дата В наличии Запланированные поставки Запланированный спрос Прогнозируемые запасы в наличии ATP
    2022-02-01 20 3 17 17
    2022-02-02 20 17 17
    2022-02-03 20 10 27 27
    2022-02-04 20 27 27
    2022-02-05 20 27 27
    2022-02-06 20 27 27
    2022-02-07 20 27 27
  5. На текущую дату (1 февраля 2022 года) вы отправляете следующее запланированное изменение количества:

    • Количество спроса, равное 15, на 4 февраля 2022 года
    • Количество поставок, равное 1, на 5 февраля 2022 года
    • Количество поставок, равное 3, на 6 февраля 2022 года

    В следующей таблице показан результат.

    Дата В наличии Запланированные поставки Запланированный спрос Прогнозируемые запасы в наличии ATP
    2022-02-01 20 3 17 12
    2022-02-02 20 17 12
    2022-02-03 20 10 27 12
    2022-02-04 20 15 12 12
    2022-02-05 20 1 13 13
    2022-02-06 20 3 16 16
    2022-02-07 20 16 16
  6. На текущую дату (1 февраля 2022 года) вы отправляете запланированное количество спроса, равное 3. Поэтому необходимо зафиксировать это изменение, чтобы оно отражалось в фактическом количестве в наличии. Чтобы зафиксировать изменение, необходимо отправить событие изменения запасов в наличии, которое имеет исходящее количество 3. Затем вы реверсируете запланированное изменение, отправив график изменения запасов в наличии, который имеет исходящее количество "-3". В следующей таблице показан результат.

    Дата В наличии Запланированные поставки Запланированный спрос Прогнозируемые запасы в наличии ATP
    2022-02-01 17 0 17 12
    2022-02-02 17 17 12
    2022-02-03 17 10 27 12
    2022-02-04 17 15 12 12
    2022-02-05 17 1 13 13
    2022-02-06 17 3 16 16
    2022-02-07 17 16 16
  7. На следующий день (2 февраля 2022 года) период планирования сдвигается вперед на один день. В следующей таблице показан результат.

    Дата В наличии Запланированные поставки Запланированный спрос Прогнозируемые запасы в наличии ATP
    2022-02-02 17 17 12
    2022-02-03 17 10 27 12
    2022-02-04 17 15 12 12
    2022-02-05 17 1 13 13
    2022-02-06 17 3 16 16
    2022-02-07 17 16 16
    2022-02-08 17 16 16
  8. Однако спустя два дня (4 февраля 2022 года) количество поставок, равное 10, запланированное на 3 февраля, еще не поступило. В следующей таблице показан результат.

    Дата В наличии Запланированные поставки Запланированный спрос Прогнозируемые запасы в наличии ATP
    2022-02-04 17 15 2 2
    2022-02-05 17 1 3 3
    2022-02-06 17 3 6 6
    2022-02-07 17 6 6
    2022-02-08 17 6 6
    2022-02-09 17 6 6
    2022-02-10 17 6 6

    Как вы видите, запланированные (но не зафиксированные) изменения запасов в наличии не влияют на фактическое количество в наличии.

Отправка графиков изменений, событий изменений и запросов ATP через API-интерфейс

Можно использовать следующие URL-адреса интерфейса прикладного программирования (API) для отправки графиков запасов в наличии, событий изменения и запросов.

Путь Метод Описание
/api/environment/{environmentId}/onhand/changeschedule POST Создание одного запланированного изменения запасов в наличии.
/api/environment/{environmentId}/onhand/changeschedule/bulk POST Создание нескольких запланированных изменений запасов в наличии.
/api/environment/{environmentId}/onhand POST Создание одного события изменения запасов в наличии.
/api/environment/{environmentId}/onhand/bulk POST Создание нескольких событий изменения.
/api/environment/{environmentId}/onhand/indexquery POST Запрос с использованием метода POST.
/api/environment/{environmentId}/onhand GET Запрос с использованием метода GET.
/api/environment/{environmentId}/onhand/exactquery POST Извлечение запроса с использованием метода POST.

Дополнительные сведения см. в разделе Открытые API-интерфейсы видимости запасов.

Создание одного графика изменения запасов в наличии

График изменения запасов в наличии создается путем отправки POST запроса соответствующему СЛУЖБА ВИДИМОСТИ ЗАПАСОВ URL. Кроме того, можно отправлять массовые запросы.

График изменения запасов в наличии можно создать только в том случае, если запланированная дата находиться между текущей датой и концом текущего периода планирования. Формат даты и времени должен быть год-месяц-день (например, 2022-02-01). Формат времени должен быть точным только до дня.

Этот API создает один график изменения количества в наличии.

Path:
    /api/environment/{environmentId}/onhand/changeschedule
Method:
    Post
Headers:
    Api-Version="1.0"
    Authorization="Bearer $access_token"
ContentType:
    application/json
Body:
    {
        id: string,
        organizationId: string,
        productId: string,
        dimensionDataSource: string, # optional
        dimensions: {
            [key:string]: string,
        },
        quantitiesByDate: {
            [datetime:datetime]: {
                [dataSourceName:string]: {
                    [key:string]: number,
                },
            },
        },
    }

В следующем примере показано содержимое текста примера без dimensionDataSource.

{
    "id": "id-bike-0001",
    "organizationId": "usmf",
    "productId": "Bike",
    "dimensions": {
        "SiteId": "1",
        "LocationId": "11",
        "ColorId": "Red",
        "SizeId": "Small"
    },
    "quantitiesByDate": {
        "2022-02-01": {
            "pos": {
                "inbound": 10
            }
        }
    }
}

Создание нескольких графиков изменений запасов в наличии.

Этот API может создавать несколько записей одновременно. Единственным различием между этим API и API одного события являются значения Path и Body. Для этого API Body предоставляет массив записей. Максимальное число записей: 512. Таким образом, массовый API графиков изменений количества в наличии может поддерживать до 512 запланированных изменений за раз.

Path:
    /api/environment/{environmentId}/onhand/changeschedule/bulk
Method:
    Post
Headers:
    Api-Version="1.0"
    Authorization="Bearer $access_token"
ContentType:
    application/json
Body:
    [
        {
            id: string,
            organizationId: string,
            productId: string,
            dimensionDataSource: string,
            dimensions: {
                [key:string]: string,
            },
            quantityDataSource: string, # optional
            quantitiesByDate: {
                [datetime:datetime]: {
                    [dataSourceName:string]: {
                        [key:string]: number,
                    },
                },
            },
        },
        ...
    ]

В следующем примере показано содержимое текста примера.

[
    {
        "id": "id-bike-0001",
        "organizationId": "usmf",
        "productId": "Bike",
        "dimensions": {
            "SiteId": "1",
            "LocationId": "11",
            "ColorId": "Red",
            "SizeId": "Small"
        },
        "quantitiesByDate": {
            "2022-02-01": {
                "pos": {
                    "inbound": 10
                }
            }
        }
    },
    {
        "id": "id-car-0002",
        "organizationId": "usmf",
        "productId": "Car",
        "dimensions": {
            "SiteId": "1",
            "LocationId": "11",
            "ColorId": "Red",
            "SizeId": "Small"
        },
        "quantitiesByDate": {
            "2022-02-05": {
                "pos": {
                    "outbound": 10
                }
            }
        }
    }
]

Создание событий изменения в наличии

События изменения в наличии создаются путем отправки POST запроса на соответствующий URL-адрес служба видимости запасов (см. начало расписания отправки изменений, событий изменения и запросов доступного для резервирования (ATP) запроса через раздел API ).

Примечание

События изменения запасов в наличии не являются уникальными для функций ATP, но являются частью стандартного API-интерфейса видимости запасов. Этот пример был включен, поскольку события действуют при работе с ATP. События изменения запасов в наличии похожи на резервирования изменений запасов в наличии, но сообщения о событиях должны быть отправлены на другой URL-адрес API-интерфейса, и в теле сообщения для событий используется quantities вместо quantityByDate. Дополнительные сведения о событиях изменения запасов в наличии и других функциях API-интерфейса видимости запасов см. в разделе Общедоступные интерфейсы API видимости запасов.

Следующий пример показывает текст запроса, который содержит одно событие изменения запасов в наличии.

{
    "id": "id-bike-0001",
    "organizationId": "usmf",
    "productId": "Bike",
    "dimensions": {
        "SiteId": "1",
        "LocationId": "11",
        "SizeId": "Big",
        "ColorId": "Red"
    },
    "quantities": {
        "pos": {
            "inbound": 10.0
        }
    }
}

Запрос запланированных изменений запасов в наличии и результатов ATP

Можно запрашивать планируемые изменения запасов в наличии и результаты ATP, отправляя запрос POST или запрос GET на соответствующий URL-адрес API-интерфейса (см. раздел Отправка графиков изменений, событий изменений и запросов ATP через API-интерфейс).

В запросе установите для параметра QueryATP значение true, если требуется запрашивать планируемые изменения запасов в наличии и результаты ATP. По умолчанию запрос возвращает все данные, связанные с ATP, за сегодняшний день. Вы можете указать ATPFromDate и ATPToDate, чтобы сузить результаты. (Даты «до» и «от» просто фильтруют результат. Они не влияют на расчет ATP.)

  • Если отправка запроса выполняется с помощью метода GET, установите этот параметр в URL-адресе.
  • Если отправка запроса выполняется с помощью метода POST, установите этот параметр в теле запроса.

Примечание

Независимо от того, задано ли для параметра returnNegative в теле запроса значение true или false, результат будет включать отрицательные значения при запросе запланированных изменений запасов в наличии и результатов ATP. Будут включены такие отрицательные значения, потому что если только заказы на спрос планируются или если количества поставок меньше количества спроса, то запланированные изменения количества запасов в наличии будут отрицательными. Если отрицательные значения не были бы включены, результаты был бы запутанным. Дополнительные сведения об этом параметре и его работе для других типов запросов см. в разделе Общедоступные интерфейсы API видимости запасов.

Запрос с использованием метода POST

Path:
    /api/environment/{environmentId}/onhand/indexquery
Method:
    Post
Headers:
    Api-Version="1.0"
    Authorization="Bearer $access_token"
ContentType:
    application/json
Body:
    {
        dimensionDataSource: string, # Optional
        filters: {
            organizationId: string[],
            productId: string[],
            siteId: string[],
            locationId: string[],
            [dimensionKey:string]: string[],
        },
        groupByValues: string[],
        returnNegative: boolean,
    }

В следующем примере показано, как создать тело запроса индекса, который может быть отправлен в видимость запасов с помощью метода POST.

{
    // OnHand Index Query fields
    "filters": {
        "organizationId": ["usmf"],
        "productId": ["Bike"],
        "SiteId": ["1"],
        "LocationId": ["11"]
    },
    "groupByValues": ["ColorId", "SizeId"],
    "returnNegative": true,

    // ATP related fields
    "QueryATP":true,
    "ATPFromDate": "2022-02-01",
    "ATPToDate": "2022-02-10",
}

Запрос с использованием метода GET

Path:
    /api/environment/{environmentId}/onhand
Method:
    Get
Headers:
    Api-Version="1.0"
    Authorization="Bearer $access_token"
ContentType:
    application/json
Query(Url Parameters):
    groupBy
    returnNegative
    [Filters]

В следующем примере показано, как создать URL-адрес запроса индекса в качестве запроса GET.

https://inventoryservice.{RegionShortName}-il301.gateway.prod.island.powerapps.com/api/environment/{EnvironmentId}/onhand?organizationId=usmf&productId=Bike&SiteId=1&LocationId=11&groupBy=ColorId,SizeId&returnNegative=true&QueryATP=true&ATPToDate=2022-02-01&ATPToDate=2022-02-10

Результат этого GET запроса точно такой же, как POST результат запроса в предыдущем примере.

Извлечение запроса с использованием метода POST

Чтобы настроить точный запрос, добавьте в тело запроса поля, связанные с ATP. Дополнительную информацию см. в разделе Точный запрос с использованием метода POST.

{
    // Exact query fields
    // ...

    // ATP related fields
    "QueryATP":true,
    "ATPFromDate": "2022-02-01",
    "ATPToDate": "2022-02-10",
}

Пример результата запроса

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

  • Вычисляемая мера ATP:iv.onhand = pos.inbound – pos.outbound
  • Период графика:7

Здесь приведен пример тела ответа.

[
    {
        "quantitiesByDate": {
            "2022-02-02T00:00:00": {
                "pos": {
                    "outbound": 5,
                    "inbound": 0,
                },
                "iv": {
                    "onhand": -5,
                },
            },
            "2022-02-06T00:00:00": {
                "pos": {
                    "inbound": 7,
                    "outbound": 0,
                },
                "iv": {
                    "onhand": 7,
                },
            }
        },
        "atpQuantities": {
            "2022-02-01T00:00:00Z": {
                "iv": {
                    "onhand": 5.0
                }
            },
            "2022-02-02T00:00:00Z": {
                "iv": {
                    "onhand": 5.0
                }
            },
            "2022-02-03T00:00:00Z": {
                "iv": {
                    "onhand": 5.0
                }
            },
            "2022-02-04T00:00:00Z": {
                "iv": {
                    "onhand": 5.0
                }
            },
            "2022-02-05T00:00:00Z": {
                "iv": {
                    "onhand": 5.0
                }
            },
            "2022-02-06T00:00:00Z": {
                "iv": {
                    "onhand": 12.0
                }
            },
            "2022-02-07T00:00:00Z": {
                "iv": {
                    "onhand": 12.0
                }
            }
        },
        "productId": "Bike ",
        "dimensions": {
            "ColorId": "Red",
            "SizeId": "Big",
            "siteid": "1",
            "locationid": "11"
        },
        "quantities": {
            "pos": {
                "inbound": 10.0,
                "outbound": 0,
            },
            "iv": {
                "onhand": 10.0,
            }
        }
    }
]