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

Перед каждым приемом гостей (например: завтрак, обед или ужин) формируется единое меню без возможности выбора блюд. Оплата производится по внутренним картам питания: ПДС или CRM.
Кассир в этой схеме не нужен, так как каждому посетителю добавляется один и тот же набор блюд, и оплата списывается с личной карты сотрудника без необходимости выбирать валюту или давать сдачу.
Этот сценарий может выполняться с помощью автоматического скрипта.

Первоначальные настройки в менеджерской

  1. Установите и настройте систему лояльности, с помощью которой будет производиться оплата заказов. Можно использовать любую лояльность, работающую по протоколу Farcards. Главное условие для такой системы — возможность оплаты заказа валютой бонусы (валюта ПДС).
    Рассмотрим реализацию на примере стандартной ПДС. Подробно об установке и настройке ПДС можно узнать в статье.
  2. В справочнике Деньги > Валюты у созданной валюты ПДС в свойстве Автозаполнение выберите вариант Вся сумма.
  3. Перейдите в Сервис > Параметры:
    1. в параметре Показывать инфо о карте снимите флаг, так как отображение информации о клиенте не требуется
    2. параметру Оплата платежной картой установите значение Всегда, для автоматической оплаты заказа после добавления карты
    3. параметру Начальное окно установите значение Быстрый чек, чтобы после регистрации открывалась форма редактирования Быстрого чека, в которой и будет происходить заказ
    4. параметру Создание быстрого чека установите значение Без формы, для автоматического создания заказа без дополнительных действий
  4. Перейдите в Меню > Классификации блюд и создайте отдельную классификацию (или используйте предустановленную), внутри которой добавьте одну категорию блюд Текущее меню. В эту категорию будут добавляться блюда, которые планируется отдавать в заказ. Количество и состав таких блюд не имеет значения, после добавления карты в заказ все блюда из этой категории добавятся для гостя, а заказ будет закрыт на валюту ПДС.

    Запомните код созданной категории, далее он понадобится при настройке скрипта.

Создание формы «Быстрый чек». Добавление и настройка скрипта

  1. Перейдите в Настройки > Графический интерфейс > Формы.
    Откройте раздел Заказ > Редактирование заказа (быстрый чек) и сделайте копию формы Быстрый чек. Для удобства созданную форму переименуйте в Автооплата заказа.
  2. В свойствах формы нажмите пункт Модель, чтобы открыть редактор формы и скриптов. В открывшейся форме:
    1. нажмите на область с содержимым заказа
    2. справа выберите колонку События
    3. кликом по событию OnAfterCheckViewEdit создайте событие
    4. удалите строчки:

      procedure CheckViewOnAfterCheckViewEdit(Sender: TObject; AEditType: TEditType; AObjectBef, AObjectAft: TObject);
      begin

      end;


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

      procedure CheckViewOnAfterCheckViewEdit(Sender: TObject; AEditType: TEditType; AObjectBef, AObjectAft: TObject);

      var ed: TObject;

      ToPayAmount: double;

      i,Code,numcateg, otvet:integer;

      Categ: TClassificatorGroup;

      begin

      //** Set parameters  ***//

      numcateg:=9; // код созданной категории блюд

      otvet:=6;

      //** Set parameters  ***//

        if SYS.ObjectInheritsFrom(AObjectAft, 'TDiscountItem') then

      if TDiscountItem(AObjectAft).ChargeSource=chsInterface then

                   begin

                   if RKCheck.CurrentOrder.IsEmpty=false then

        otvet:=gui.MessageDlgEx('Заказ не пустой, все равно добавить блюда и оплатить заказ картой?', mtInformation, mbYes+mbNo, 'Да;Нет');

        if otvet=6 then

        begin 

            

             ToPayAmount := RKCheck.CurrentOrder.ToPaySum;

             ed := TObject(gui.FindComponentByName('Editor'));

             Categ := TClassificatorGroup(getitemBycodeNum('ClassificatorGroups', numcateg));

             for i := 0 to Categ.ChildCount -1 do

             begin

             RKCheck.CreateCheckItem(rkrefMenuItems, inttostr(Categ.ChildItem(i).Code), '1');

             end;

             if SYS.ObjectInheritsFrom(TObject(ed), 'TNumEditor') then

               begin

                 TNumEditor(ed).Text := FloatToStr(ToPayAmount);

                 RK7.PostOperation(rkoBalanceReceipt, 0);

                

               end;

        end;


      end;


      end;

  3. Сохраните и активируйте форму. После этого установите её в текущей схеме форм, как основную.

Готово. Теперь при добавлении карты в заказ, в него автоматически добавятся блюда из специальной категории, и заказ автоматически закроется на карту ПДС без участия кассира.