Контрольная лента состоит из двух файлов :
1. файл заголовков чеков ( расширение .ZH ) ;
2. файл содержимого чеков ( расширение .ZB )
Имя файла текущей контрольной ленты – 00000000.
При каждом Z – отчете в архивном каталоге образуется контрольная
лента с именем NNNNNNNN, где NNNNNNNN – номер Z – отчета. Например при
Z – отчете номер 12 получим пару файлов 00000012.ZH и 00000012.ZB.
Структура файлов. ZH :
inv, c, 4 – номер чека
issued, c, 12 – дата + время ( 199611121220 значит 12 ноября 1996 12:20
cust, c, 15 – код покупателя
clerk, c, 3 – код клерка
disc, c, 8 – сумма скидки
disc_a, c, 8 – сумма наценки
disc_type, c, 2 – код скидки
tax, c, 8 – сумма налога
summ, c, 8 – сумма покупки
op, c, 2 – код операции
report, c, 4 – номер Z – отчета ( если это Z – отчет )
rec, c, 4 – номер записи в файле. ZB, где начинается спсиок шагов для чека
crc, c, 12 – контрольная сумма
Структура файлов. ZB :
inv, c, 4 – номер чека
op, c, 2 – код операции
plu, c, 14 – код PLU
price, c, 8 – цена товара / сумма шага оплаты
tax, c, 1 – код налога / код валюты при оплате
tax_type, c, 1 – тип налога
tax_rate, c, 8 – % налога / курс валюты при оплате
disc, c, 8 – сумма скидки
disc_type, c, 2 – код скидки
qty, c, 8 – количество
dept, c, 1 – отдел
rtn, c, 1 – код причины возврата
bottle, c, 8 – количество бутылочных депозитов
bprice, c, 8 – цена бутылочного депозита
btax, c, 1 – код налога на бутылочный депозит
btax_rate, c, 8 – % налога на бутылочный депозит
btax_type, c, 1 – тип налога на бутылочный депозит
crc, c, 12 – контрольная сумма
Используемые коды операций :
#define OP_SALE chr(1) // продажа
#define OP_RETURN chr(2) // возврат
#define OP_BOTTLE_RETURN chr(3) // возврат бутылок
#define OP_PAY chr(4) // оплата
#define OP_PO chr(5) // инкассация
#define OP_RA chr(6) // разменные деньги
#define OP_X chr(7) // X – отчет
#define OP_Z chr(8) // Z – отчет
#define OP_DRAWER chr(9) // открытие ящика
#define OP_CHANGE chr(10) // сдача
#define OP_BOTTLE chr(11) // бутылочный депозит
#define OP_START chr(12) // начало работы
#define OP_CLERK chr(13) // новый клерк
#define OP_EMPTY chr(0) // пустая операция
Если операция аннулирована – код операции увеличивается на 128.