external:procart:02_procart_api

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
external:procart:02_procart_api [2022/09/28 16:21] – [Классификации блюд] Александр Ильинexternal:procart:02_procart_api [2023/05/18 10:38] (текущий) – [Комментарии к блюду в заказе (открытый модификатор)] Александр Ильин
Строка 1: Строка 1:
 ====== ProCart API ====== ====== ProCart API ======
-==== Общий принцип работы ====+===== Общий принцип работы =====
 Перед работой с API рекомендуется ознакомиться с данной статьей, для понимания основных принципов работы модуля ProCart и возможностей его API. Перед работой с API рекомендуется ознакомиться с данной статьей, для понимания основных принципов работы модуля ProCart и возможностей его API.
  
Строка 16: Строка 16:
 Дополнительно возможна подписка внешней системы на push уведомления от модуля **ProCart** по факту изменения статуса заказа (удален, пречек, оплачен) Дополнительно возможна подписка внешней системы на push уведомления от модуля **ProCart** по факту изменения статуса заказа (удален, пречек, оплачен)
  
-==== Работа со столами ====+===== Работа со столами =====
 По умолчанию все заказы из внешней системы создаются на выделенный стол (**код** нужного стола указывается в настройках ProCart). По умолчанию все заказы из внешней системы создаются на выделенный стол (**код** нужного стола указывается в настройках ProCart).
 Если в работе находится несколько заказов одновременно, то они будут создаваться на дополнительных столах.  Если в работе находится несколько заказов одновременно, то они будут создаваться на дополнительных столах. 
Строка 37: Строка 37:
 При большом количестве внешних заказов имеет смысл создать отдельный "план зала" и в рамках него завести стол (столы) для приема внешних заказов. При большом количестве внешних заказов имеет смысл создать отдельный "план зала" и в рамках него завести стол (столы) для приема внешних заказов.
 При такой настройке на кассе можно будет легко переключаться между заказами в зале и заказами из внешних источников, просто переключая залы. При такой настройке на кассе можно будет легко переключаться между заказами в зале и заказами из внешних источников, просто переключая залы.
-==== Классификации блюд ====+===== Классификации блюд =====
 В системе r_keeper дерево меню может иметь сложную древовидную структуру с большим уровнем вложенности веток. Такая форма удобна для работы на кассе, но не нужна при работе с внешними источниками. Более того, далеко не все блюда, которые заведены в меню, должны быть доступны для продажи во внешнем источнике. В системе r_keeper дерево меню может иметь сложную древовидную структуру с большим уровнем вложенности веток. Такая форма удобна для работы на кассе, но не нужна при работе с внешними источниками. Более того, далеко не все блюда, которые заведены в меню, должны быть доступны для продажи во внешнем источнике.
  
Строка 45: Строка 45:
  
  
-==== Категория заказа ====+===== Категория заказа =====
 В системе **r_keeper** возможность заказа конкретных блюд, а так же цена на них может зависеть от различных факторов, например, "категории заказа" (КЗ). В системе **r_keeper** возможность заказа конкретных блюд, а так же цена на них может зависеть от различных факторов, например, "категории заказа" (КЗ).
 В настройках **ProCart** указывается код основной категории заказа. Запрос **/getmenu** возвращает блюда и цены для данной категории заказа. В настройках **ProCart** указывается код основной категории заказа. Запрос **/getmenu** возвращает блюда и цены для данной категории заказа.
Строка 62: Строка 62:
 В запросе **/getmenu** будут возвращаться цены на блюда по типу цены "Доставки". В запросе **/getmenu** будут возвращаться цены на блюда по типу цены "Доставки".
 Гость наполнил корзину блюда, перешел в оформление заказа и указал "Самовывоз". Гость наполнил корзину блюда, перешел в оформление заказа и указал "Самовывоз".
-В запросе **/validate** необходимо указать верный код категории заказа (код Самовывоза) и тогда в ответе вернутся цены, по которым можно продать эти блюда на самовывоз.+В запросе **/validate** (а далее в **/postorder**) необходимо указать верный код категории заказа (код Самовывоза) и тогда в ответе вернутся цены, по которым можно продать эти блюда на самовывоз.
  
 **Пример №2:**  **Пример №2:** 
Строка 70: Строка 70:
 При валидации корзины и создании заказа на самовывоз, в запросах **/validate** и **/postorder** дополнительно передаем код соответствующей категории заказа (самовывоз). В итоге будет создан стол с блюдами и в него автоматически будет добавлена соответствующая скидка. При валидации корзины и создании заказа на самовывоз, в запросах **/validate** и **/postorder** дополнительно передаем код соответствующей категории заказа (самовывоз). В итоге будет создан стол с блюдами и в него автоматически будет добавлена соответствующая скидка.
  
-==== Комментарии к заказу ====+===== Комментарии к заказу =====
 В системе r_keeper у заказов есть свойство, которое можно использовать для хранения дополнительной текстовой информации (комментария к заказу), но к сожалению, длина этого поля крайне мала (30-100 символов) и зачастую вся необходимая доп. информация по заказу туда не помещается. В системе r_keeper у заказов есть свойство, которое можно использовать для хранения дополнительной текстовой информации (комментария к заказу), но к сожалению, длина этого поля крайне мала (30-100 символов) и зачастую вся необходимая доп. информация по заказу туда не помещается.
-В рамках ProCart эта проблема решена следующим образом: В запросе **/postorder** внешняя система может передать текстовый комментарий. +В рамках ProCart проблема длинных комментариев решена следующим образом: В запросе **/postorder** внешняя система может передать текстовый комментарий (поле "comment")
 Он будет сохранен в локальной базе ProCart и связан с реальным заказом в системе r_keeper. Он будет сохранен в локальной базе ProCart и связан с реальным заказом в системе r_keeper.
-В печатных формах системы r_keeper (сервис-чек, пречек, чек) можно добавить небольшой скрипт, который при помощи служебного метода **/print_info** будет получать комментарий по конкретному заказу из БД ProCart и выводить его на печать.+В печатных формах системы r_keeper (сервис-чек, пречек, чек) можно добавить небольшой скрипт, который при помощи служебного метода **/internal/print_info** будет получать комментарий по конкретному заказу из БД ProCart и выводить его на печать.
  
-==== Заказы с Оплатой ====+Так же в запросе **/postorder** есть поле "short_external_info", куда можно передать краткую информацию о заказе (идентификатор заказа во внешней системе, тел или ФИО гостя и т.п.) 
 +Этот комментарий (30 символов) будет виден персоналу на экране кассы r_keeper (в списке заказов) и может помочь быстрее сориентироваться и найти нужный заказ. 
 + 
 +===== Комментарии к блюду в заказе (открытый модификатор) ===== 
 +**С версии 1.5.0.30** 
 +В рамках ProCart к блюду может быть прикреплен комментарий. Для этого в запросе **/postorder**, для элемента меню, можно передать комментарий в поле "item_comment". Данный комментарий будет виден персоналу на экране кассы, как модификатор для блюда. 
 +Данный комментарий, имеет ограничение на длину от 1 до 255 символов. 
 +**Важно!** [[https://wiki.carbis.ru/external/procart/01_setup/01_rkeeper_settings#настройка_общего_текстового_модификатора_для_комментариев_к_блюду_опционально|Требуется дополнительная настройка в r_keeper]] 
 +===== Заказы с оплатой =====
 Через систему **ProCart** можно создать в **r_keeper** заказ в котором есть только блюда (нет оплат) и далее этот заказ будет рассчитан сотрудником на кассе как обычно. Через систему **ProCart** можно создать в **r_keeper** заказ в котором есть только блюда (нет оплат) и далее этот заказ будет рассчитан сотрудником на кассе как обычно.
 Также, при создании заказа (метод **/postorder**), можно передать информацию об оплатах этого заказа.  Также, при создании заказа (метод **/postorder**), можно передать информацию об оплатах этого заказа. 
Строка 83: Строка 91:
 Все переданные оплаты добавляются в заказ как "предоплата". Если заказ полностью оплачен во внешней системе, то на кассе r_keeper будет создан стол с блюдами, внесена предоплата переданными валютами. Заказ будет открыт на кассе пока его не завершит сотрудник ресторана. Метод учета предоплат (фискально или нет) настраивается в рамках причины внесения предоплат в r_keeper.  Все переданные оплаты добавляются в заказ как "предоплата". Если заказ полностью оплачен во внешней системе, то на кассе r_keeper будет создан стол с блюдами, внесена предоплата переданными валютами. Заказ будет открыт на кассе пока его не завершит сотрудник ресторана. Метод учета предоплат (фискально или нет) настраивается в рамках причины внесения предоплат в r_keeper. 
  
-==== Скидки (суммовая и словарная) ====+===== Скидки (суммовая и словарная) =====
 Модуль **ProCart** поддерживает работы со скидками. Модуль **ProCart** поддерживает работы со скидками.
 Это может быть словарная скидка. "Словарная" - значит заранее настроенная в редакторе меню r_keeper, с заранее известным процентом и другими тонкими настройками. В запросах **/validate** и **/postorder** нужно передать код скидки (можно передать несколько словарных скидок в один заказ), существующей в кассовой системе. Применимость данной скидки для текущего заказа определяется на стороне кассовой системы (с учетом стола, категории заказа, времени суток, правил комбинации с другими скидками и т. п.). В ответе на запросы будет возвращен заказ пересчитанный со всеми возможными скидками.  Это может быть словарная скидка. "Словарная" - значит заранее настроенная в редакторе меню r_keeper, с заранее известным процентом и другими тонкими настройками. В запросах **/validate** и **/postorder** нужно передать код скидки (можно передать несколько словарных скидок в один заказ), существующей в кассовой системе. Применимость данной скидки для текущего заказа определяется на стороне кассовой системы (с учетом стола, категории заказа, времени суток, правил комбинации с другими скидками и т. п.). В ответе на запросы будет возвращен заказ пересчитанный со всеми возможными скидками. 
Строка 90: Строка 98:
 Такой сценарий можно применять для случая когда гость тратит в оплату заказа какие-то купоны или бонусы. Тогда сумма всех этих скидок передается одной строкой и применяется на кассе r_keeper в виде суммовой скидки. Такой сценарий можно применять для случая когда гость тратит в оплату заказа какие-то купоны или бонусы. Тогда сумма всех этих скидок передается одной строкой и применяется на кассе r_keeper в виде суммовой скидки.
  
-Также поддержана работа с автоматическими скидками кассы r_keeper. Если в ресторане используются какие-то автоматические скидки по определенным правилам, и заказ сделанный внешней системой удовлетворяет этим условиям, запросу **/validate** и **/postorder** вернут содержимое заказа с учетом автоматических скидок. +Также поддержана работа с автоматическими скидками кассы r_keeper. Если в ресторане используются какие-то автоматические скидки по определенным правилам, и заказ сделанный внешней системой удовлетворяет этим условиям, то запросы **/validate** и **/postorder** вернут содержимое заказа с учетом автоматических скидок. 
  
-==== Поддержка стоп-листов и ограниченных блюд ====+===== Поддержка стоп-листов и ограниченных блюд =====
 Запрос **/getmenu** возвращает список блюд с учетом стоп-листов и остатка (если таковые введены на кассе **r_keeper**) Запрос **/getmenu** возвращает список блюд с учетом стоп-листов и остатка (если таковые введены на кассе **r_keeper**)
 Таким образом, если на кассе какое то блюдо поставлено в стоп-лист, то внешняя система получит эту информацию. Таким образом, если на кассе какое то блюдо поставлено в стоп-лист, то внешняя система получит эту информацию.
Строка 98: Строка 106:
 Запросы **/validate** и **/postorder** также учитывают стоп-листы и ограниченные остатки. Т. е. нельзя провалидировать и создать заказ содержащий в себе блюда из стоп-листа и нельзя сделать заказ, в котором указано количество порций больше, чем остаток на кассе. Запросы **/validate** и **/postorder** также учитывают стоп-листы и ограниченные остатки. Т. е. нельзя провалидировать и создать заказ содержащий в себе блюда из стоп-листа и нельзя сделать заказ, в котором указано количество порций больше, чем остаток на кассе.
  
-==== Оповещения о заказах ====+===== Оповещения о заказах =====
 При работе с модулем ProCart персонал заведения может получать уведомления о новых заказах через механики внешних систем (push уведомления в приложении, письма на почту, СМС сообщения и т. п.) При работе с модулем ProCart персонал заведения может получать уведомления о новых заказах через механики внешних систем (push уведомления в приложении, письма на почту, СМС сообщения и т. п.)
-Когда заказ создан в кассовой системе, автоматически происходит сервис печать (по настройкам r_keeper)Этот механизм можно дополнительно задействовать для уведомления персонала, если в используемую схему печати добавить еще одно правило, согласно которому, все заказы полученные из внешней системы будут печататься по отдельному макету сервис-печати на выделенный принтер. +Когда заказ создан в кассовой системе, автоматически происходит сервис печать (по настройкам r_keeper)Этот механизм можно дополнительно задействовать для уведомления персонала, если в используемую схему печати добавить еще одно правило, согласно которому, все заказы полученные из внешней системы будут печататься по отдельному макету сервис-печати на выделенный принтер. 
  
  
  • external/procart/02_procart_api.1664371277.txt.gz
  • Последнее изменение: 2022/09/28 16:21
  • Александр Ильин