Остатки товаров⚓︎
Передача остатков в АСНА⚓︎
Передача остатков в АСНА осуществляется следующими методами:
- Передача информации о полных остатках
- Передача изменений
Передача полных остатков аптеки⚓︎
Ежедневно, желательно в период наименьшей загруженности сервисов, интегрированное с АСНА программное обеспечение должно отправлять полные сведения о наличии товаров в каждой аптеке. Выгрузка полных сведений об остатках должна производиться не чаще одного раза в сутки. Так как объем передаваемой информации о полных остатках большой, пакет не обрабатывается сразу, а ставится в очередь на обработку.
ОГРАНИЧЕНИЕ
Передача полных остатков ограничена одним запросом в 30 минут, но отправлять полные остатки чаще чем раз в сутки нет необходимости. Желательно отправлять полные остатки в период с 05:15 до 08:45 по московскому времени.
ВНИМАНИЕ
Перед обработкой полных остатков и записью их в БД, сервис произведет удаление всех остатков в БД по этой аптеке.
/v5/stores/{storeId}/stocks
Описание⚓︎
Передать полные остатки по аптеке storeId по протоколу v5
Параметры запроса⚓︎
Имя | Тип | Обяз. | Описание |
---|---|---|---|
storeId | GUID | Идентификатор аптеки по справочнику АСНА |
Заголовки запроса⚓︎
Имя | Описание |
---|---|
Authorization | Bearer token |
Content-Type | application/json |
Тело запроса⚓︎
Объект запроса⚓︎
Имя | Тип | Обяз. | Описание |
---|---|---|---|
date | datetime | Дата выгрузки остатков в формате ISO8601 с указанием часового пояса | |
stocks | Stock[] | Массив строк остатков |
Объект запроса Stock (строка остатков)⚓︎
Имя | Тип | Обяз. | Описание |
---|---|---|---|
prtId | string(50) | Уникальный код партии, должен быть уникальным в пределах отправляемого пакета, т.к. это ключ, по которому происходит, обновление записей. Максимум 50 символов. | |
nnt | int | Код товара по справочнику АСНА | |
sku | string(50) | Код товара по справочнику клиента. Максимум 50 символов. | |
qnt | float | Текущее количество в партии (с учетом забронированного товара). Не передавать дробное количество. | |
doc | string(50) | Номер документа. Максимум 50 символов. | |
supInn | string | ИНН поставщика | |
supId | GUID | Идентификатор поставщика по справочнику АСНА | |
supDate | datetime | Дата поставки в формате ISO8601 с указанием часового пояса | |
nds | int | НДС товара. Все расчеты идут по ставкам НДС из справочника номенклатуры АСНА | |
gnvls | bool | Признак ЖНВЛС товара (поле обязательно для ЖНВЛС). Если ПО самостоятельно не контролирует максимально допустимые цены ЖНВЛС, то поле обязательно | |
dp | bool | Признак Детское питание | |
man | string(255) | Производитель. Максимум 255 символов | |
series | string(50) | Cерия товара. Максимум 50 символов | |
exp | datetime | Cрок годности в формате ISO8601. Поле не является обязательным, т.к. не у всех товаров есть срок годности, но если у товара есть срок, убедительная просьба его заполнять. Покупатели хотят видеть срок на сайте. Для сервиса Контроль сроков годности поле обязательно. | |
prcMan | decimal | Цена производителя | |
prcOpt | decimal | Цена оптовая | |
prcOptNds | decimal | Цена оптовая (закупочная) с НДС. Для сервисов Подмена аптечных цен, Асна Экономия поле обязательно | |
prcRet | decimal | Цена реализации | |
prcReestr | decimal | Цена реестра | |
prcGnvlsMax | decimal | Максимально допустимая розничная цена для ЖНВЛС (поле обязательно для ЖНВЛС). Если товар не ЖНВЛС, то это поле заполнять не нужно, если товар ЖНВЛС и включен расчет цен, то поле обязательно заполняется значением, и оно не может быть меньше розничной цены аптеки. Если ПО самостоятельно не контролирует максимально допустимые цены ЖНВЛС, то поле обязательно | |
sumOpt | decimal | Cумма оптовая без НДС | |
sumOptNds | decimal | Cумма оптовая с НДС | |
mrGnvls | decimal | Процент наценки для ЖВЛНС | |
tag | int | Признак товара. Может принимать значения: 0 - нормальный, 1- сроковый, 2 - уценка, 3 - мятая упаковка |
Ссылка на JSON схему для валидации и тестирования
Пример запроса⚓︎
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
|
Успешный ответ⚓︎
HTTP cтатус | Значение |
---|---|
202 | Accepted. Принято к обработке. В заголовке Location содержится URL для получения статуса обработки переданного пакета. |
Пример ответа⚓︎
1 2 3 |
|
Неуспешный ответ⚓︎
HTTP статус | Значение |
---|---|
400 | Bad Request. Полученные службой данные содержат ошибки. Информация об ошибке возвращается в теле ответа. |
401 | Unauthorized. Токен авторизации неверный или истек срок его действия |
403 | Forbidden. У вас нет прав на выполнение данной операции |
429 | Too Many Requests. Слишком много запросов с одного IP адреса за промежуток времени |
500 | Internal Server Error. Ошибка сервиса. Если ошибка повторяется, сообщите, пожалуйста, разработчикам сервиса |
Передача изменений по остаткам аптеки⚓︎
С определенной периодичностью, интегрированное с АСНА программное обеспечение должно отправлять изменения по остаткам товаров в каждой аптеке. При отсутствии изменений по остаткам, отправлять данные не нужно. Пакеты с изменениями также ставятся в очередь на обработку.
ОГРАНИЧЕНИЕ
Передача изменений остатков ограничена одним запросом в 10 минут.
ВНИМАНИЕ!
Если товар по партии закончился, то необходимо передать эту запись с количеством равным нулю.
ИНФОРМАЦИЯ
Перед обработкой изменений по остаткам аптеки и записью их в БД, сервис не будет производить удаление всех остатков в БД по этой аптеке. Будет произведена операция upsert (update для уже имеющихся в БД строк и insert для отсутствующих).
/v5/stores/{storeId}/stocks
Описание⚓︎
Передать изменения по остаткам аптеки storeId по протоколу v5
Параметры запроса⚓︎
Имя | Тип | Обяз. | Описание |
---|---|---|---|
storeId | GUID | Идентификатор аптеки по справочнику АСНА |
Заголовки запроса⚓︎
Имя | Описание |
---|---|
Authorization | Bearer token |
Content-Type | application/json |
Тело запроса⚓︎
Объект запроса⚓︎
Имя | Тип | Обяз. | Описание |
---|---|---|---|
date | datetime | Дата выгрузки остатков в формате ISO8601 с указанием вашего часового пояса | |
stocks | Stock[] | Массив строк остатков |
Объект запроса Stock (строка остатков)⚓︎
Имя | Тип | Обяз. | Описание |
---|---|---|---|
prtId | string | Уникальный код партии, должен быть уникальным в пределах отправляемого пакета, т.к. это ключ, по которому происходит, обновление записей. Максимум 50 символов. | |
nnt | int | Код товара по справочнику АСНА | |
sku | string | Код товара по справочнику клиента. Максимум 50 символов. | |
qnt | float | Текущее количество в партии (с учетом забронированного товара). Не передавать дробное количество. | |
doc | string | Номер документа. Максимум 50 символов. | |
supInn | string | ИНН поставщика | |
supId | GUID | Идентификатор поставщика по справочнику АСНА | |
supDate | datetime | Дата поставки в формате ISO8601 с указанием часового пояса | |
nds | int | НДС товара. Все расчеты идут по ставкам НДС из справочника номенклатуры АСНА | |
gnvls | bool | Признак ЖНВЛС товара (поле обязательно для ЖНВЛС). Если ПО самостоятельно не контролирует максимально допустимые цены ЖНВЛС то поле обязательно | |
dp | bool | Признак Детское питание | |
man | string | Производитель. Максимум 255 символов | |
series | string | Cерия товара. Максимум 50 символов | |
exp | datetime | Cрок годности в формате ISO8601. Поле не является обязательным, т.к. не у всех товаров есть срок годности, но если у товара есть срок, убедительная просьба его заполнять. Покупатели хотят видеть срок на сайте. Для сервиса Контроль сроков годности поле обязательно | |
prcMan | decimal | Цена производителя | |
prcOpt | decimal | Цена оптовая | |
prcOptNds | decimal | Цена оптовая (закупочная) с НДС. Для сервисов Подмена аптечных цен, Асна Экономия поле обязательно | |
prcRet | decimal | Цена реализации | |
prcReestr | decimal | Цена реестра | |
prcGnvlsMax | decimal | Максимально допустимая розничная цена для ЖНВЛС (поле обязательно для ЖНВЛС). Если товар не ЖНВЛС, то это поле заполнять не нужно, если товар ЖНВЛС и включен расчет цен, то поле обязательно заполняется значением, и оно не может быть меньше розничной цены аптеки. Если ПО самостоятельно не контролирует максимально допустимые цены ЖНВЛС то поле обязательно | |
sumOpt | decimal | Cумма оптовая без НДС | |
sumOptNds | decimal | Cумма оптовая с НДС | |
mrGnvls | decimal | Процент наценки для ЖВЛНС | |
tag | int | Признак товара. Может принимать значения: 0 - нормальный, 1- сроковый, 2 - уценка, 3 - мятая упаковка |
Ссылка на JSON схему для валидации и тестирования
Пример запроса⚓︎
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
|
Успешный ответ⚓︎
HTTP cтатус | Значение |
---|---|
202 | Accepted. Принято к обработке. В заголовке Location содержится URL для получения статуса обработки переданного пакета. |
Пример ответа⚓︎
1 2 3 |
|
Неуспешный ответ⚓︎
HTTP статус | Значение |
---|---|
400 | Bad Request. Полученные службой данные содержат ошибки. Информация об ошибке возвращается в теле ответа. |
401 | Unauthorized. Токен авторизации неверный или истек срок его действия |
403 | Forbidden. У вас нет прав на выполнение данной операции |
429 | Too Many Requests. Слишком много запросов с одного IP адреса за промежуток времени |
500 | Internal Server Error. Ошибка сервиса. Если ошибка повторяется, сообщите, пожалуйста, разработчикам сервиса |
Удаление информации по остаткам аптеки⚓︎
В некоторых случаях бывает необходимо удалить всю информацию об остатках аптеки, для этого используйте следующий вызов.
ВНИМАНИЕ!
После удаления информации об остатках аптеки, перед отправкой информации об изменениях остатков, не забудьте сделать полную выгрузку остатков аптеки.
/v5/stores/{storeId}/stocks
Описание⚓︎
Удалить информацию по остаткам аптеки storeId по протоколу v5
Параметры запроса⚓︎
Имя | Тип | Обяз. | Описание |
---|---|---|---|
storeId | GUID | Идентификатор аптеки по справочнику АСНА |
Заголовки запроса⚓︎
Имя | Описание |
---|---|
Authorization | Bearer token |
Пример запроса⚓︎
1 2 3 |
|
Успешный ответ⚓︎
HTTP cтатус | Значение |
---|---|
204 | No Content. Данные удалены |
Пример ответа⚓︎
1 |
|
Неуспешный ответ⚓︎
HTTP статус | Значение |
---|---|
400 | Bad Request. Полученные службой данные содержат ошибки. Информация об ошибке возвращается в теле ответа. |
401 | Unauthorized. Токен авторизации неверный или истек срок его действия |
403 | Forbidden. У вас нет прав на выполнение данной операции |
429 | Too Many Requests. Слишком много запросов с одного IP адреса за промежуток времени |
500 | Internal Server Error. Ошибка сервиса. Если ошибка повторяется, сообщите, пожалуйста, разработчикам сервиса |
Получение информации по остаткам аптеки⚓︎
Для периодической проверки остатков, переданных в АСНА, вы можете получить данные по остаткам аптеки, используя следующий запрос:
/v5/stores/{storeId}/stocks
Описание⚓︎
Передать изменения по остаткам аптеки storeId по протоколу v5
Параметры запроса⚓︎
Имя | Тип | Обяз. | Описание |
---|---|---|---|
storeId | GUID | Идентификатор аптеки по справочнику АСНА | |
since | datetime | Дата/время в формате ISO8601, с которой необходимо получить остатки |
Заголовки запроса⚓︎
Имя | Описание |
---|---|
Authorization | Bearer token |
Accept | application/json или application/x-json-full |
Пример запроса⚓︎
1 2 3 |
|
Успешный ответ⚓︎
HTTP cтатус | Значение |
---|---|
200 | ОК. Успешный запрос. Тело запроса содержит массив остатков |
Пример ответа⚓︎
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
|
Объект ответа (строка остатков)⚓︎
Имя | Тип | Описание |
---|---|---|
realNetId | int | Идентификатор сети |
storeId | GUID | Идентификатор аптеки по справочнику АСНА |
prtId | string | Уникальный код партии, должен быть уникальным в пределах отправляемого пакета, т.к. это ключ, по которому происходит, обновление записей. Максимум 50 символов. |
nnt | int | Код товара по справочнику АСНА |
sku | string | Код товара по справочнику клиента. Максимум 50 символов. |
qnt | float | Текущее количество в партии (с учетом забронированного товара) |
doc | string | Номер документа. Максимум 50 символов. |
supInn | string | ИНН поставщика |
supId | GUID | Идентификатор поставщика по справочнику АСНА |
supDate | datetime | Дата поставки в формате ISO8601 с указанием часового пояса |
nds | int | НДС товара |
gnvls | bool | Признак ЖНВЛС товара (поле обязательно для ЖНВЛС) |
dp | bool | Признак Детское питание |
man | string | Производитель. Максимум 255 символов |
series | string | Cерия товара. Максимум 50 символов |
exp | datetime | Cрок годности в формате ISO8601. Поле не является обязательным, т.к. не у всех товаров есть срок годности, но если у товара есть срок, убедительная просьба его заполнять. Покупатели хотят видеть срок на сайте |
prcMan | decimal | Цена производителя |
prcOpt | decimal | Цена оптовая |
prcOptNds | decimal | Цена оптовая (закупочная) с НДС |
prcRet | decimal | Цена реализации |
prcReestr | decimal | Цена реестра |
prcGnvlsMax | decimal | Максимально допустимая розничная цена для ЖНВЛС (поле обязательно для ЖНВЛС). Если товар не ЖНВЛС, то это поле заполнять не нужно, если товар ЖНВЛС и включен расчет цен, то поле обязательно заполняется значением, и оно не может быть меньше розничной цены аптеки |
sumOpt | decimal | Cумма оптовая без НДС |
sumOptNds | decimal | Cумма оптовая с НДС |
mrGnvls | decimal | Процент наценки для ЖВЛНС |
tag | int | Признак товара. Может принимать значения: 0 - нормальный, 1- сроковый, 2 - уценка, 3 - мятая упаковка |
stkDate | datetime | Дата остатков в формате ISO8601 с указанием часового пояса |
loadDate | datetime | Дата загрузки остатков в формате ISO8601 с указанием часового пояса |
rv | byte[] | Версия записи |
Неуспешный ответ⚓︎
HTTP статус | Значение |
---|---|
400 | Bad Request. Полученные службой данные содержат ошибки. Информация об ошибке возвращается в теле ответа. |
401 | Unauthorized. Токен авторизации неверный или истек срок его действия |
403 | Forbidden. У вас нет прав на выполнение данной операции |
429 | Too Many Requests. Слишком много запросов с одного IP адреса за промежуток времени |
500 | Internal Server Error. Ошибка сервиса. Если ошибка повторяется, сообщите, пожалуйста, разработчикам сервиса |
Фильтрация остатков⚓︎
Для исключения попадания на сайт товаров с некорректными(слишком низкими) ценами, которые, как правило, получаются из-за некорректных привязок справочника товаров аптеки и справочника товаров АСНА, мы фильтруем такие товары.
Если вы подписаны на рассылку мониторинга, то ежедневно вы будете получать уведомления по электронной почте с вложенной инструкцией, если нет то вы можете перейти на веб-интерфейс фильтра по ссылке http://api.asna.cloud/dispersion?storeId={storeId}, где storeId - идентификатор вашей аптеки.
Инструкция по работе с веб-интерфейсом фильтра встроена в веб-интефейс.
Созданный: 5 августа 2021 г. 12:36:05