В далеком 2011 году была написана программа для кассы в Delphi 7. Функционал незначительно за это время изменилось, но вдруг бухгалтерия решила приобрести ККТ РИТЕЙЛ-01Ф. переходить на другой программный продукт не было не желания не времени. Было принято решение привязать данный аппарат к готовому ПО.
На официальном сайте без проблем качается драйвер для данной кассы (https://www.shtrih-m.ru/support/download/?section_id=76&product_id=21700&type_id=156). При установке можно сохранить примеры работы драйвера 1c, Delphi, C#, Microsoft Visual C++ 6.0, VBScript.
Для работы нужна библиотека DrvFRLib_TLB.pas (у меня она лежит C:\Program Files (x86)\SHTRIH-M\DrvFR 4.14\Samples\Borland Delphi 7.0\TstShared).
Онлайн кассу подключили через USB, ip адрес ей назначили 192.168.137.111. Все легко делается через утилиту, которая идет совместно с драйвером. Для настройки подошел материал https://www.youtube.com/watch?v=wxbNLErV7h4.
Ниже приведен код программы с пояснением
Uses DrvFRLib_TLB; // подключение библиотеки
var
Drv: TDrvFR; // для онлайн кассы
begin
Drv := TDrvFR.Create(nil); // Создание объекта драйвера
Drv.ConnectionType:= 6; // подключение через TCP socket
Drv.IPAddress := '192.168.137.111';
Drv.UseIPAddress := true;
Drv.TCPPort := 7778; // TCP Порт ККТ
Drv.Timeout := 3000; // Таймаут в мс
Drv.Password := 30; // Пароль системного администратора
if Drv.Connect<> 0 then
begin // Проверяем подключение
raise Exception.Create(Drv.ResultCodeDescription);
end else drv.Beep; // звук при подключении
if drv.OpenCheck<>0 then raise Exception.Create(Drv.ResultCodeDescription);
// Формируем продажу
Drv.CheckType := 1; // Операция - приход
Drv.Price := MemTableEh1.FieldByName('itog').AsCurrency; // Цена за единицу товара
Drv.Quantity := 1; // Количество
Drv.Summ1 := MemTableEh1.FieldByName('itog').AsCurrency; // Сумма позиции с учетом скидок
Drv.Tax1 := 1; // НДС 18%
drv.OperationType;
// Формируем закрытие чека
Drv.Summ1 := MemTableEh1.FieldByName('itog').AsCurrency; // Наличные
Drv.Summ2 := 0; // Остальные типы оплаты нулевые,
Drv.Summ3 := 0;
Drv.Summ4 := 0;
Drv.StringForPrinting := MemTableEh1.FieldByName('Name_t').AsString+', модель '+
MemTableEh1.FieldByName('Name_model').AsString; // наименование
drv.sale;
drv.RegistrationOnSlipDocument;
if drv.CloseCheck <> 0 then raise Exception.Create(Drv.ResultCodeDescription);
Drv.Free; // Освобождаем объект драйвера