ТМС:Кассир

Материал из wiki.standart-n.ru
Перейти к: навигация, поиск

Классы

 TFR          - класс для работы с ККМ
 ChequeList   - список активных чеков
 ScriptRes    - для вывода результата работы скрипта
 Barcode      - для работы со ШК и диск. картами
 TErrFinder   - класс для поиска ошибок в кассовых документах

Объекты

 Global - объект-глобальное хранилище элементов
 Константы, использующиеся при вызове MsgBox

Прочие константы, переменные и подпрограммы

 Application - объект Application

Пример:

 Application.MessageBox('Текст', 'Заголовок', 0);
 CurrFDB               - ссылка на текущую базу данных (FIBPlus)
 CurrFRT               - ссылка на постоянную читающую транзакцию текущей базы (FIBPlus)
 CurrDB                - ссылка на текущую базу данных (IBX)
 CurrRT                - ссылка на постоянную читающую транзакцию текущей базы (IBX)
 Base                  - ссылка на текущий датасет базы (TDataset)

Пример:

 uses zkassa, DB;
 begin
   TagSetContent(fmMain.ewbFooter, 'partid_val', IntToStr(Base.FieldByName('part_id').AsInteger));
 end;
 UserID                - ID текущего пользователя
 SessionID             - ID текущей смены
 CreateFRT             - функция создает читающую транзакцию (FIBPlus)
 CreateFWT             - функция создает пишущую транзакцию (FIBPlus)
 CreateRT              - функция создает читающую транзакцию (IBX)
 CreateWT              - функция создает пишущую транзакцию (IBX)

Пример (FIBPlus):

 uses zkassa, fibplus;                            
 var fit: TpFIBTransaction;                       
 begin                                            
   fit := CreateFWT(CurrFDB);                       
   fit.StartTransaction;                            
   ...                                              
   fit.Commit;                                      
   fit.Free;                                      
 end;                                           

Пример (IBX):

 uses zkassa;
 var it: TIBTransaction;
 begin
   it := CreateWT(CurrDB);
   it.StartTransaction;
   ...
   it.Commit;
   it.Free;
 end;
 myFormatString        - функция форматирования строки
 Параметры:
   sText               - строка слева/центр
   sTextRight          - строка справа
   sPattern            - символ заполнения пространства м/у лев. и прав. строками
   iLen                - длина выходной строки
   iFormatType         - тип форматирования: 0 - по центру (только лев.стр.), 1 - по лев. и прав. краям
   bCutLeft            - обрезать слева, если больше, чем требуемая длина (иначе справа)

Пример:

 myFormatString('ДОБРО ПОЖАЛОВАТЬ', , '-', 20, 0, True); //результат: '--ДОБРО ПОЖАЛОВАТЬ--'
 myFormatString('123', '456', '.', 20, 1, True);           //результат: '123..............456'


 MsgBox		- обертка над Application.MessageBox
   Пример: if MsgBox('Продолжить?', 'Расчет', MB_OKCANCEL + MB_ICONQUESTION) = ID_CANCEL then Exit;
 SetLine		- вывод информации на дисплей покупателя. При вызове данного метода все "отложенные"

выводы информации на дисплей удаляются

 Параметры:
   iBaseID		- ID предприятия, на чей дисплей выводить информацию (дисплей должен быть настроен)
   sLine1		- 1-я строка информации (если sLine1 = #9, информация в строку 1 дисплея не выводится)
   sLine2		- 2-я строка информации (если sLine2 = #9, информация в строку 2 дисплея не выводится)
   iTimeout		- таймаут для создания "отложенного" вывода, после которого снова вызывается функция SetLine

с новыми значениями строк (например, для очистки табло). Если iTimeout = 0, повторного вызова не происходит

   sLine21		- 1-я строка информации при повторном вызове
   sLine22		- 2-я строка информации при повторном вызове
   Пример: SetLine(0, 'Привет,', 'мир!', 5000, , ); //выводит сообщение, через 5 секунд очищает табло
           SetLine(0, , ); //очищает табло
 SetLineDelayed	- "отложенный" вывод информации на дисплей покупателя
   iBaseID		- ID предприятия, на чей дисплей выводить информацию
   sLine1		- 1-я строка информации (если sLine1 = #9, информация в строку 1 дисплея не выводится)
   sLine2		- 2-я строка информации (если sLine2 = #9, информация в строку 2 дисплея не выводится)
   iTimeout		- таймаут вывода информации на дисплей покупателя
 KillAllTimers		- удалить все "отложенные" выводы на дисплей покупателя
 GetWeight		- получить вес товара (при наличии весов)
   iPartID		- ID товара
   Пример: MsgBox(Format('Вес товара = %.3f', [GetWeight(iPartID)]), 'Вес товара', 0);
 TagGetContent		- получить содержимое тега по ID
   wb			- контрол WebBrowser (инфо о чеке - fmMain.ewbInfo, подстрочник - fmMain.ewbFooter)
   sTagID		- ID тега
   Пример: MsgBox(TagGetContent(fmMain.ewbInfo, 'fr_total'), 'Содержимое fr_total', 0); //получить значение блока FR_TOTAL 
 TagSetContent		- установить содержимое тега по ID
   wb			- контрол WebBrowser (инфо о чеке - fmMain.ewbInfo, подстрочник - fmMain.ewbFooter)
   sTagID		- ID тега
   sContent		- новое содержимое тега
   Пример: TagSetContent(fmMain.ewbInfo, 'fr_total', 'Чеков: ' + IntToStr(FR_CountCheques)); //установить значение блока FR_TOTAL 
 TagGetAttribute	- получить содержимое аттрибута тега по ID
   wb			- контрол WebBrowser (инфо о чеке - fmMain.ewbInfo, подстрочник - fmMain.ewbFooter)
   sTagID		- ID тега
   sAttr		- имя аттрибута
   Пример: MsgBox(TagGetAttribute(fmMain.ewbInfo, '_pict', 'src'), 'Адрес картинки тега IMG', 0); //получить значение аттрибута SRC
 TagSetAttribute	- установить содержимое аттрибута тега по ID
   wb			- контрол WebBrowser (инфо о чеке - fmMain.ewbInfo, подстрочник - fmMain.ewbFooter)
   sTagID		- ID тега
   sAttr		- имя аттрибута
   sContent		- новое содержимое аттрибута
   Пример: TagSetAttribute(fmMain.ewbInfo, '_pict', 'src', 'c:\picts\pict_123.bmp'); //установить значение аттрибута SRC 
 !!! ------------------- !!!
 ПРИМЕЧАНИЕ: в функциях TagSetContent, TagSetAttribute можно использовать макроподстановки вида ::<макроимя>[:<формат>], где:
 макроимя - может быть именем любого поля текущего SQL-запроса остатков, например SNAME, PRICE и т.д. (регистр не важен)
 формат - форматная строка, аналог параметра Format функции Format в Delphi (без лидирующего символа %)
 
 Пример: возьмем пример из описания функции TagSetAttribute (см. чуть выше):
 TagSetAttribute(fmMain.ewbInfo, '_pict', 'src', 'c:\picts\pict_123.bmp');
 Если в папке 'c:\picts\' содержатся файлы с изображениями товаров, и имена файлов картинок содержат PART_ID товара, т.е. имя 
 файла имеет вид 'pict_<PART_ID>.bmp', то данный пример можно переписать с использованием макроподстановок следующим образом:
 TagSetAttribute(fmMain.ewbInfo, '_pict', 'src', 'c:\picts\pict_::PART_ID.bmp');
 PS: Макроподстановки также можно использовать в значениях блоков в HTML-дизайнере (дерево блоков справа), 
 либо напрямую в тесте HTML-скрипта
 !!! ------------------- !!!
 TagVisible		- установить видимость блока контрола WebBrowser
   wb			- контрол WebBrowser
   sTagID		- ID блока, у которого меняется видимость
   bVisible		- признак видимости
   Пример: TagVisible(fmMain.ewbInfo, 'fr_model', False); //скрыть блок FR_MODEL (информация о модели ККМ)
 SetDocsAgent		- установить контрагента активной очереди чеков
   iAgentID		- ID агента активной очереди чеков
 BarcodeText		- свойство для чтения, возвращающее значение введенного штрихкода

ПОМЕЧЕНО К УДАЛЕНИЮ, РЕКОМЕНДУЕТСЯ ВМЕСТО ЭТОГО ИСПОЛЬЗОВАТЬ КЛАСС Barcode

   Пример: ShowMessage('Введен штрихкод: ' + BarcodeText);
 DoReport		- работа с отчетами (просмотр/редактирование/печать)
   iReportID		- ID отчета
   sParam		- доп.параметры отчета (макроподстановка)
   ReportMode		- тип вывода отчета: rmView - просмотр, rmDesign - редактирование, rmPrint - печать
   sPrinter		- имя принтера для печати ( - принтер по умолчанию)
   Пример: DoReport(12, 'compname=NICKY', rmPrint, '\\buhi\HP LaserJet5');
 ManualDiscount	- вызов формы выбора скидки/суммовой скидки
 IsRegistered		- св-во, указывающее на наличие регистрации базы автоматизации
 SendKey		- посылает нажатие клавиши
   iKeyCode		- код клавиши
   bCtrl		- состояние клавиши Ctrl (True - нажата)
   bAlt		- аналогично Alt
   bShift		- аналогично Shift
   Пример: SendKey(VK_F5, False, True, False); //посылает нажатие сочетания Alt-F5
 PayByCard		- оплата банковской картой, возвращаемое значение: 0-ошибка, 1-успешно
   fSumm		- сумма оплаты
   Пример: PayByCard(10.50); //провести списание по карте суммы 10.50
 GetTrans		- получить транзакцию для работы в ее рамках (нельзя стартовать, закрывать и откатывать такую транзакцию!)

ВНИМАНИЕ! Транзакции типа TpFIBTransaction, т.е. из состава компонентов FibPlus, а не IBX! Для работы требуется подключить модуть FIBPlus

   iTransType		- тип запрашиваемой транзакции
   Поддерживаемые типы транзакций:
   0 (TRANS_CLOSECHEQUE) - транзакция при закрытии чека
 Пример (после печати чека):
   uses zkassa, fibplus, classes, chequelist;
   var fiq: tpfibquery;
   begin                    
     fiq := tpfibquery.create(nil);
     fiq.Transaction := GetTrans(0);
     fiq.SQL.Text := 'update docs set device_num = трали-вали where id = ' + IntToStr(chequelist.Active.ID);
     fiq.ExecQuery;
     fiq.Free;
   end;
 OpenDefByID		- открыть отложенный чек по ID документа
   iDocID		- ID документа
 Add2Cheque		- добавить позицию в чек по PartID 
   iPartID		- ID позиции
   fQuant		- добавляемое количество
 Пример:
   uses zkassa;
   var i: integer;
   begin
     for i := 0 to 10 do 
       try
         Add2Cheque(127 + i, i + 1);
       except
       end;
   end;