Сводный прайс-лист (предзаказ)⚓︎
Сводный прайс-лист - это прайс-лист, сформированный из прайс-листов всех поставщиков аптеки, где по каждой номенклатуре выбирается только один поставщик, с наиболее выгодной для аптеке ценой. Исходя из этого, сводный прайс-лист должен содержать в себе только строки с уникальными (не повторяющимися в пределах прайс-листа) кодами номенклатуры (nnt).
Передача сводных прайс-листов в АСНА⚓︎
Передача сводных прайс-листов в АСНА осуществляется следующими методами:
- Передача полного сводного прайс-листа
- Передача изменений по сводному прайс-листу
Передача полного сводного прайс-листа юридического лица⚓︎
Ежедневно, желательно в период наименьшей загруженности сервисов, интегрированное с АСНА программное обеспечение должно отправлять полный сводный прайс-лист по каждому юридическому лицу. Выгрузка полного сводного прайс-листа должна производиться не чаще одного раза в сутки. Так как объем передаваемой информации большой, она не обрабатывается сразу, а ставится в очередь на обработку.
ОГРАНИЧЕНИЕ
Передача полных предзаказов ограничена одним запросом в 4 часа, но отправлять полные предзаказы чаще чем раз в сутки нет необходимости. Желательно отправлять полные предзаказы в период с 05:15 до 08:45 по московскому времени.
ВНИМАНИЕ!
Перед обработкой полного прайс-листа и записью его в БД, сервис произведет удаление сводного прайс-листа в БД по этому юрлицу.
ЗАПРОС
/v5/legal_entities/{storeId}/preorders
Описание⚓︎
Передать полный сводный прайс-лист по юрлицу аптеки storeId по протоколу v5
Параметры запроса⚓︎
Имя | Тип | Обяз. | Описание |
---|---|---|---|
storeId | GUID | Идентификатор аптеки по справочнику АСНА. По нему мы определяем юридическое лицо. |
Заголовки запроса⚓︎
Имя | Описание |
---|---|
Authorization | Bearer token |
Content-Type | application/json |
Тело запроса⚓︎
Объект запроса⚓︎
Имя | Тип | Обяз. | Описание |
---|---|---|---|
date | datetime | Дата выгрузки полного прайс-листа в формате ISO8601 с указанием часового пояса, см. примеры | |
preorders | Preorder[] | Массив строк полного прайс-листа |
Объект запроса Preorder(строка прайс-листа)⚓︎
Имя | Тип | Обяз. | Описание |
---|---|---|---|
nnt | int | Код товара по справочнику АСНА | |
sku | string(50) | Код товара по справочнику клиента. Максимум 50 символов. | |
qnt | float | Количество товара | |
supInn | string | ИНН поставщика. Обязательно, если хотите получать ИНН в строках заказа с asna.ru | |
supDate | datetime | Дата поставки в формате ISO8601 с указанием часового пояса, см. примеры | |
exp | datetime | Cрок годности в формате ISO8601, см. примеры. Поле не является обязательным, т.к. не у всех товаров есть срок годности, но если у товара есть срок, убедительная просьба его заполнять. Покупатели хотят видеть срок на сайте. Для сервиса Контроль сроков годности поле обязательно | |
prcOptNds | decimal | Цена оптовая (закупочная) с НДС. Обязательно, если не передается Цена реализации | |
prcRet | decimal | Цена реализации. Обязательно, если не передается Цена оптовая (закупочная) с НДС | |
prcGnvlsMax | decimal | Максимально допустимая розничная цена для ЖНВЛС (поле обязательно для ЖНВЛС). Если эта цена не указана, то АСНА не будет контролировать превышение наценки на ЖНВЛС при расчете розничной цены. В этом случае ПО должно делать это самостоятельно. Если ПО самостоятельно не контролирует максимально допустимые цены ЖНВЛС то поле обязательно | |
prclDate | datetime | Дата прайс-листа в формате ISO8601 с указанием часового пояса, см. примеры | |
plType | int | Тип прайслиста, 0 - для юрлица, 1 - для хаба, 2 - для аптеки | |
status | int | Признак активной или удаленной строки (0 - активная, 1 - удаленная). В полном прайс-листе всегда 0, т.к. в нем должны быть только активные строки |
JSON схема для валидации и тестирования
Пример запроса⚓︎
Успешный ответ⚓︎
HTTP cтатус | Значение |
---|---|
202 | Accepted. Принято к обработке. В заголовке Location содержится URL для получения статуса обработки переданного пакета. |
Пример ответа⚓︎
Неуспешный ответ⚓︎
HTTP статус | Значение |
---|---|
400 | Bad Request. Полученные службой данные содержат ошибки. Информация об ошибке возвращается в теле ответа. |
401 | Unauthorized. Токен авторизации неверный или истек срок его действия |
403 | Forbidden. У вас нет прав на выполнение данной операции |
429 | Too Many Requests. Слишком много запросов с одного IP адреса за промежуток времени |
500 | Internal Server Error. Ошибка сервиса. Если ошибка повторяется, сообщите, пожалуйста, разработчикам сервиса |
Передача изменений по сводному прайс-листу юридического лица⚓︎
С определенной периодичностью, интегрированное с АСНА программное обеспечение должно отправлять изменения по сводному прайс-листу для каждого юрлица. При отсутствии изменений по сводному прайс-листу, отправлять данные не нужно.
ВНИМАНИЕ!
Если товар был удален из сводного прайс-листа, то необходимо передать эту запись со статусом равным 1.
ИНФОРМАЦИЯ
Перед обработкой изменений по сводному прайс-листу юрлица и записью их в БД, сервис не будет производить удаление сводного прайс-листа в БД по этому юрлицу. Будет произведена операция upsert (update для уже имеющихся в БД строк и insert для отсутствующих).
ЗАПРОС
/v5/legal_entities/{storeId}/preorders
Описание⚓︎
Передать изменения по сводному прайс-листу юрлица аптеки storeId по протоколу v5
Параметры запроса⚓︎
Имя | Тип | Обяз. | Описание |
---|---|---|---|
storeId | GUID | Идентификатор аптеки по справочнику АСНА. По нему мы определяем юридическое лицо. |
Заголовки запроса⚓︎
Имя | Описание |
---|---|
Authorization | Bearer token |
Content-Type | application/json |
Тело запроса⚓︎
Объект запроса⚓︎
Имя | Тип | Обяз. | Описание |
---|---|---|---|
date | datetime | Дата выгрузки полного прайс-листа в формате ISO8601 с указанием часового пояса, см. примеры | |
preorders | Preorder[] | Массив строк полного прайс-листа |
Объект запроса Preorder(строка прайс-листа)⚓︎
Имя | Тип | Обяз. | Описание |
---|---|---|---|
nnt | int | Код товара по справочнику АСНА | |
sku | string | Код товара по справочнику клиента. Максимум 50 символов. | |
qnt | float | Количество товара | |
supInn | string | ИНН поставщика. Обязательно, если хотите получать ИНН в строках заказа с asna.ru | |
supDate | datetime | Дата поставки в формате ISO8601 с указанием часового пояса, см. примеры | |
exp | datetime | Cрок годности в формате ISO8601, см. примеры. Поле не является обязательным, т.к. не у всех товаров есть срок годности, но если у товара есть срок, убедительная просьба его заполнять. Покупатели хотят видеть срок на сайте. Для сервиса Контроль сроков годности поле обязательно | |
prcOptNds | decimal | Цена оптовая (закупочная) с НДС. Обязательно, если не передается Цена реализации | |
prcRet | decimal | Цена реализации. Обязательно, если не передается Цена оптовая (закупочная) с НДС | |
prcGnvlsMax | decimal | Максимально допустимая розничная цена для ЖНВЛС (поле обязательно для ЖНВЛС). Если эта цена не указана, то АСНА не будет контролировать превышение наценки на ЖНВЛС при расчете розничной цены. В этом случае ПО должно делать это самостоятельно. Если ПО самостоятельно не контролирует максимально допустимые цены ЖНВЛС то поле обязательно | |
prclDate | datetime | Дата прайс-листа в формате ISO8601 с указанием часового пояса, см. примеры | |
plType | int | Тип прайслиста, 0 - для юрлица, 1 - для хаба, 2 - для аптеки | |
status | int | Признак активной или удаленной строки (0 - активная, 1 - удаленная). В полном прайс-листе всегда 0, т.к. в нем должны быть только активные строки |
JSON схема для валидации и тестирования
Пример запроса⚓︎
Успешный ответ⚓︎
HTTP cтатус | Значение |
---|---|
202 | Accepted. Принято к обработке. В заголовке Location содержится URL для получения статуса обработки переданного пакета. |
Пример ответа⚓︎
Неуспешный ответ⚓︎
HTTP статус | Значение |
---|---|
400 | Bad Request. Полученные службой данные содержат ошибки. Информация об ошибке возвращается в теле ответа. |
401 | Unauthorized. Токен авторизации неверный или истек срок его действия |
403 | Forbidden. У вас нет прав на выполнение данной операции |
429 | Too Many Requests. Слишком много запросов с одного IP адреса за промежуток времени |
500 | Internal Server Error. Ошибка сервиса. Если ошибка повторяется, сообщите, пожалуйста, разработчикам сервиса |
Получение информации по сводному прайс-листу юрлица⚓︎
Для периодической проверки информации по сводному прайс-листу, переданному в АСНА, вы можете получить данные по сводному прайс-листу юрлица, используя следующий запрос:
ЗАПРОС
/v5/legal_entities/{storeId}/preorders?since={since}
Описание⚓︎
Получить сводный прайс-лист по юрлицу аптеки storeId по протоколу v5, с даты since
Параметры запроса⚓︎
Имя | Тип | Обяз. | Описание |
---|---|---|---|
storeId | GUID | Идентификатор аптеки по справочнику АСНА. По нему мы определяем юридическое лицо | |
since | datetime | Дата/время в формате ISO8601, с которой необходимо получить сводный прайс-лист, см. примеры |
Заголовки запроса⚓︎
Имя | Описание |
---|---|
Authorization | Bearer token |
Accept | application/json или application/x-json-full |
Пример запроса⚓︎
Успешный ответ⚓︎
HTTP cтатус | Значение |
---|---|
200 | OK. Успешный запрос. В теле ответа содержится массив строк прайс-листа |
Пример ответа⚓︎
Объект ответа (строка прайс-листа)⚓︎
Имя | Тип | Описание |
---|---|---|
srcId | GUID | Уникальный код юрлица по справочнику АСНА |
nnt | int | Код товара по справочнику АСНА |
sku | string | Код товара по справочнику клиента. Максимум 50 символов. |
qnt | float | Количество товара |
supInn | string | ИНН поставщика |
supDate | datetime | Дата поставки в формате ISO8601 с указанием часового пояса, см. примеры |
exp | datetime | Cрок годности в формате ISO8601, см. примеры. Поле не является обязательным, т.к. не у всех товаров есть срок годности, но если у товара есть срок, убедительная просьба его заполнять. Покупатели хотят видеть срок на сайте |
prcOptNds | decimal | Цена оптовая (закупочная) с НДС |
prcRet | decimal | Цена реализации |
prcGnvlsMax | decimal | Максимально допустимая розничная цена для ЖНВЛС (поле обязательно для ЖНВЛС). Если эта цена не указана, то АСНА не будет контролировать превышение наценки на ЖНВЛС при расчете розничной цены. В этом случае ПО должно делать это самостоятельно |
prclDate | datetime | Дата прайс-листа в формате ISO8601 с указанием часового пояса, см. примеры |
plType | int | Тип прайслиста, 0 - для юрлица, 1 - для хаба, 2 - для аптеки |
status | int | Признак активной или удаленной строки (0 - активная, 1 - удаленная). В полном прайс-листе всегда 0, т.к. в нем должны быть только активные строки |
Неуспешный ответ⚓︎
HTTP статус | Значение |
---|---|
400 | Bad Request. Полученные службой данные содержат ошибки. Информация об ошибке возвращается в теле ответа. |
401 | Unauthorized. Токен авторизации неверный или истек срок его действия |
403 | Forbidden. У вас нет прав на выполнение данной операции |
429 | Too Many Requests. Слишком много запросов с одного IP адреса за промежуток времени |
500 | Internal Server Error. Ошибка сервиса. Если ошибка повторяется, сообщите, пожалуйста, разработчикам сервиса |
Передача полного сводного прайс-листа аптеки⚓︎
Ежедневно, желательно в период наименьшей загруженности сервисов, интегрированное с АСНА программное обеспечение может отправлять полный сводный прайс-лист по аптеке. Выгрузка полного сводного прайс-листа должна производиться не чаще одного раза в сутки. Так как объем передаваемой информации большой, она не обрабатывается сразу, а ставится в очередь на обработку.
ВНИМАНИЕ!
Перед обработкой полного прайс-листа и записью его в БД, сервис произведет удаление сводного прайс-листа в БД по этой аптеке.
ЗАПРОС
/v5/stores/{storeId}/preorders
Описание⚓︎
Передать полный сводный прайс-лист по аптеке storeId по протоколу v5
Параметры запроса⚓︎
Имя | Тип | Обяз. | Описание |
---|---|---|---|
storeId | GUID | Идентификатор аптеки по справочнику АСНА. По нему мы определяем юридическое лицо. |
Заголовки запроса⚓︎
Имя | Описание |
---|---|
Authorization | Bearer token |
Content-Type | application/json |
Тело запроса⚓︎
Объект запроса⚓︎
Имя | Тип | Обяз. | Описание |
---|---|---|---|
date | datetime | Дата выгрузки полного прайс-листа в формате ISO8601 с указанием часового пояса, см. примеры | |
preorders | Preorder[] | Массив строк полного прайс-листа |
Объект запроса Preorder(строка прайс-листа)⚓︎
Имя | Тип | Обяз. | Описание |
---|---|---|---|
nnt | int | Код товара по справочнику АСНА | |
sku | string | Код товара по справочнику клиента. Максимум 50 символов. | |
qnt | float | Количество товара | |
supInn | string | ИНН поставщика | |
supDate | datetime | Дата поставки в формате ISO8601 с указанием часового пояса, см. примеры | |
exp | datetime | Cрок годности в формате ISO8601, см. примеры. Поле не является обязательным, т.к. не у всех товаров есть срок годности, но если у товара есть срок, убедительная просьба его заполнять. Покупатели хотят видеть срок на сайте | |
prcOptNds | decimal | Цена оптовая (закупочная) с НДС | |
prcRet | decimal | Цена реализации | |
prcGnvlsMax | decimal | Максимально допустимая розничная цена для ЖНВЛС (поле обязательно для ЖНВЛС). Если эта цена не указана, то АСНА не будет контролировать превышение наценки на ЖНВЛС при расчете розничной цены. В этом случае ПО должно делать это самостоятельно | |
prclDate | datetime | Дата прайс-листа в формате ISO8601 с указанием часового пояса, см. примеры | |
plType | int | Тип прайслиста, 0 - для юрлица, 1 - для хаба, 2 - для аптеки | |
status | int | Признак активной или удаленной строки (0 - активная, 1 - удаленная). В полном прайс-листе всегда 0, т.к. в нем должны быть только активные строки |
JSON схема для валидации и тестирования
Пример запроса⚓︎
Успешный ответ⚓︎
HTTP cтатус | Значение |
---|---|
202 | Accepted. Принято к обработке. В заголовке Location содержится URL для получения статуса обработки переданного пакета. |
Пример ответа⚓︎
Неуспешный ответ⚓︎
HTTP статус | Значение |
---|---|
400 | Bad Request. Полученные службой данные содержат ошибки. Информация об ошибке возвращается в теле ответа. |
401 | Unauthorized. Токен авторизации неверный или истек срок его действия |
403 | Forbidden. У вас нет прав на выполнение данной операции |
429 | Too Many Requests. Слишком много запросов с одного IP адреса за промежуток времени |
500 | Internal Server Error. Ошибка сервиса. Если ошибка повторяется, сообщите, пожалуйста, разработчикам сервиса |
Передача изменений по сводному прайс-листу аптеки⚓︎
С определенной периодичностью, интегрированное с АСНА программное обеспечение может отправлять изменения по сводному прайс-листу аптеки. При отсутствии изменений по сводному прайс-листу, отправлять данные не нужно.
ВНИМАНИЕ!
Если товар был удален из сводного прайс-листа, то необходимо передать эту запись со статусом равным 1.
ИНФОРМАЦИЯ
Перед обработкой изменений по сводному прайс-листу аптеки и записью их в БД, сервис не будет производить удаление сводного прайс-листа в БД по этой аптеке. Будет произведена операция upsert (update для уже имеющихся в БД строк и insert для отсутствующих).
ЗАПРОС
/v5/stores/{storeId}/preorders
Описание⚓︎
Передать изменения по сводному прайс-листу аптеки storeId по протоколу v5
Параметры запроса⚓︎
Имя | Тип | Обяз. | Описание |
---|---|---|---|
storeId | GUID | Идентификатор аптеки по справочнику АСНА. По нему мы определяем юридическое лицо. |
Заголовки запроса⚓︎
Имя | Описание |
---|---|
Authorization | Bearer token |
Content-Type | application/json |
Тело запроса⚓︎
Объект запроса⚓︎
Имя | Тип | Обяз. | Описание |
---|---|---|---|
date | datetime | Дата выгрузки полного прайс-листа в формате ISO8601 с указанием часового пояса, см. примеры | |
preorders | Preorder[] | Массив строк полного прайс-листа |
Объект запроса Preorder(строка прайс-листа)⚓︎
Имя | Тип | Обяз. | Описание |
---|---|---|---|
nnt | int | Код товара по справочнику АСНА | |
sku | string(50) | Код товара по справочнику клиента. Максимум 50 символов. | |
qnt | float | Количество товара | |
supInn | string(50) | ИНН поставщика | |
supDate | datetime | Дата поставки в формате ISO8601 с указанием часового пояса, см. примеры | |
exp | datetime | Cрок годности в формате ISO8601, см. примеры. Поле не является обязательным, т.к. не у всех товаров есть срок годности, но если у товара есть срок, убедительная просьба его заполнять. Покупатели хотят видеть срок на сайте | |
prcOptNds | decimal | Цена оптовая (закупочная) с НДС | |
prcRet | decimal | Цена реализации | |
prcGnvlsMax | decimal | Максимально допустимая розничная цена для ЖНВЛС (поле обязательно для ЖНВЛС). Если эта цена не указана, то АСНА не будет контролировать превышение наценки на ЖНВЛС при расчете розничной цены. В этом случае ПО должно делать это самостоятельно | |
prclDate | datetime | Дата прайс-листа в формате ISO8601 с указанием часового пояса, см. примеры | |
plType | int | Тип прайслиста, 0 - для юрлица, 1 - для хаба, 2 - для аптеки | |
status | int | Признак активной или удаленной строки (0 - активная, 1 - удаленная). В полном прайс-листе всегда 0, т.к. в нем должны быть только активные строки |
JSON схема для валидации и тестирования
Пример запроса⚓︎
Успешный ответ⚓︎
HTTP cтатус | Значение |
---|---|
202 | Accepted. Принято к обработке. В заголовке Location содержится URL для получения статуса обработки переданного пакета. |
Пример ответа⚓︎
Неуспешный ответ⚓︎
HTTP статус | Значение |
---|---|
400 | Bad Request. Полученные службой данные содержат ошибки. Информация об ошибке возвращается в теле ответа. |
401 | Unauthorized. Токен авторизации неверный или истек срок его действия |
403 | Forbidden. У вас нет прав на выполнение данной операции |
429 | Too Many Requests. Слишком много запросов с одного IP адреса за промежуток времени |
500 | Internal Server Error. Ошибка сервиса. Если ошибка повторяется, сообщите, пожалуйста, разработчикам сервиса |
Получение информации по сводному прайс-листу аптеки⚓︎
Для периодической проверки информации по сводному прайс-листу, переданному в АСНА, вы можете получить данные по сводному прайс-листу аптеки, используя следующий запрос:
ЗАПРОС
/v5/stores/{storeId}/preorders?since={since}
Описание⚓︎
Получить сводный прайс-лист по аптеке storeId по протоколу v5, с даты since
Параметры запроса⚓︎
Имя | Тип | Обяз. | Описание |
---|---|---|---|
storeId | GUID | Идентификатор аптеки по справочнику АСНА. По нему мы определяем юридическое лицо | |
since | datetime | Дата/время в формате формат ISO8601, с которой необходимо получить сводный прайс-лист, см. примеры |
Заголовки запроса⚓︎
Имя | Описание |
---|---|
Authorization | Bearer token |
Accept | application/json или application/x-json-full |
Пример запроса⚓︎
Успешный ответ⚓︎
HTTP cтатус | Значение |
---|---|
200 | OK. Успешный запрос. В теле ответа содержится массив строк прайс-листа |
Пример ответа⚓︎
Объект ответа (строка прайс-листа)⚓︎
Имя | Тип | Описание |
---|---|---|
srcId | GUID | Уникальный код юрлица по справочнику АСНА |
nnt | int | Код товара по справочнику АСНА |
sku | string | Код товара по справочнику клиента. Максимум 50 символов. |
qnt | float | Количество товара |
supInn | string | ИНН поставщика |
supDate | datetime | Дата поставки в формате ISO8601 с указанием часового пояса, см. примеры |
exp | datetime | Cрок годности в формате ISO8601, см. примеры. Поле не является обязательным, т.к. не у всех товаров есть срок годности, но если у товара есть срок, убедительная просьба его заполнять. Покупатели хотят видеть срок на сайте |
prcOptNds | decimal | Цена оптовая (закупочная) с НДС |
prcRet | decimal | Цена реализации |
prcGnvlsMax | decimal | Максимально допустимая розничная цена для ЖНВЛС (поле обязательно для ЖНВЛС). Если эта цена не указана, то АСНА не будет контролировать превышение наценки на ЖНВЛС при расчете розничной цены. В этом случае ПО должно делать это самостоятельно |
prclDate | datetime | Дата прайс-листа в формате ISO8601 с указанием часового пояса, см. примеры |
plType | int | Тип прайслиста, 0 - для юрлица, 1 - для хаба, 2 - для аптеки |
status | int | Признак активной или удаленной строки (0 - активная, 1 - удаленная). В полном прайс-листе всегда 0, т.к. в нем должны быть только активные строки |
Неуспешный ответ⚓︎
HTTP статус | Значение |
---|---|
400 | Bad Request. Полученные службой данные содержат ошибки. Информация об ошибке возвращается в теле ответа. |
401 | Unauthorized. Токен авторизации неверный или истек срок его действия |
403 | Forbidden. У вас нет прав на выполнение данной операции |
429 | Too Many Requests. Слишком много запросов с одного IP адреса за промежуток времени |
500 | Internal Server Error. Ошибка сервиса. Если ошибка повторяется, сообщите, пожалуйста, разработчикам сервиса |