Описание на програмния интерфейс към фискални принтери datecs fp1000-02 и datecs fp300-02



страница1/5
Дата06.01.2017
Размер0.97 Mb.
#12064
  1   2   3   4   5


Стр.
Програмен интерфейс на фискален принтер DATECS FP1000-02_ и FP300-02 Версия_ 2.00xx

Описание на програмния интерфейс към фискални принтерИ DATECS FP1000-02 И DATECS FP300-02



Версия 2.00хх

xx е код на съответната държава, за която е локализирано устройството:

EN - Англия

BG – България

UA - Украйна

RU - Русия

LT – Литва

RO - Румъния

Въведение


Фискалното устройство работи под управлението на приложна програма, комуникирайки с нея чрез асинхронен сериен канал за връзка RS232 или USB. То е предназначено да изпълнява предварително определен набор от команди, логически подредени в зависимост от вида на операциите, които трябва да се изпълнят. Приложната програма няма директен достъп до ресурсите на фискалното устройство, но може да извлича данни, свързани със състоянието на фискалното устройство и фискалната памет.
Фискалното устройство изпълнява следните видове операции:

  • Запомняне на индивидуалния номер на фискалното устройство и номера на фискалната памет.

  • Запомняне на фискалните параметри, като БУЛСТАТ, номер по ЗДДС на данъчно задълженото лице, дата на въвеждане в експлоатация и др.

  • Запомняне на информация за собственика, като адрес, име и др.

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

  • Запомняне на дневния оборот във фискалната памет и генериране на дневен финансов отчет.

  • Запомняне на текста от фискалните бонове и дневните отчети в електронна контролна лента и отпечатването му преди Z-отчет.

  • Генериране на отчети за реализираните продажби и съдържанието на фискалната памет.

  • Отпечатване на отчети, генерирани от приложението.

  • Извеждане на данни към приложната програма.


Данъчни ГРУПИ и изчисляване на ДДС


Всяка продажба е причислена към определена данъчна група (ДДС), която определя данъчната ставка, приложена към базовата цена за формиране цената на продажбата. Фискалният принтер може да работи с най-много 8 данъчни групи, обозначени с първите букви от азбуката на езика за съответната страна, за която е настроен фискалния принтер (ФП), за България – ‘А’, ‘Б’, ‘В’, ‘Г’, ‘Д’, ‘Е’, ‘Ж’ и ‘З’.

За всяка от данъчните групи се задава данъчна ставка (в проценти), която трябва да бъде число не по-голямо от 99.00, с не повече от два десетични знака. Част от осемте стандартни данъчни групи могат да се забраняват, чрез установяване на Enabled_taxes в команда 83 (53H). Командите за продажба приемат като параметър главните букви ‘А’, ‘Б’, ‘В’, ‘Г’, ‘Д’, ‘Е’, ‘Ж’ и ‘З’.

Нетната стойност на продажбата се изчислява по формулата:

Сума_нето = ROUND(Оборот/(1 + Ставка))

Функцията ROUND извършва стандартно закръгляне до най-малката използвана единица валута (стотинки или левове при работа с цели числа).

Стойността на платимият данък се изчислява по формулата:

Данък = Оборот – Сума_нето
Режими на работа на фискалното устройство

Фискалното устройство може да работи в два режима.



  • Учебен режим. Устройството не е фискализирано. Всички данни, необходими за нормалната му работа са въведени и записани във фискалната памет с изключение на БУЛСТАТ на собственика и данъчните ставки. Могат да се отварят и издават клиентски бонове, но винаги върху тях се изписва, че са нефискални. Могат да се извършват дневни финансови отчети с нулиране, но те не се записват във фискалната памет. В този режим фискалният принтер не може да се използва в търговския обект.

  • Нормален режим. Устройството е фискализирано. БУЛСТАТ на собственика е въведен и записан във фискалната памет. Прилагат се всички фискални правила.



Състояния на фискалното устройство

Фискалният принтер може да се намира в няколко състояния. Преминаването му от едно състояние в друго не винаги е възможно. Управлението на принтера, както и преходите между състоянията, когато това е възможно, се осъществяват от приложната програма в Host (PC), която трябва да бъде строго съобразена с използвания протокол. При неправилно прилагане на протокола е възможно принтера да попадне в нежелано състояние или да бъде пропуснато преминаването му през дадено състояние, което съответно води до попадане на принтера в състоянието ГРЕШКА.


А) Начално състояние

В това състояние трябва да се установят датата и часът, да се програмира номера на фискалната памет, индивидуалният номер на устройството и кодът на държавата. ТЕЗИ ОПЕРАЦИИ СЕ ИЗВЪРШВАТ ПРЕДИ ПРЕДАВАНЕ НА КЛИЕНТА САМО ПРОИЗВОДИТЕЛЯ!

Трябва да се изпълнят следните команди в последователността, в която са дадени: 61 (3DH) и 91 (5BH).
Б) Състояние след форматиране на фискалната памет

В това състояние трябва да се зададат името на валутата, броя десетични знаци и броя и размера на данъчните ставки.

След като се извършат тези операции фискалният принтер е готов да се предаде на клиента, който ще го ползва, т.е. в това състояние устройствата се държат в склада на производителя.

Трябва да се изпълни команда 83 (53H).


В) Състояние при предоставяне на клиент

В това състояние трябва да се зададат header и footer, които всъщност са началото и края на всеки бон. В header-а обикновено се записва информация за собственика (име на фирмата, адрес, БУЛСТАТ и др.), а във “footer-a някакъв рекламен текст.

Трябва да се изпълни командата 43 (2BH) толкова пъти колкото редове се установяват.
Г) УЧЕБЕН РЕЖИМ

В това състояние ФП се намира докато не се фискализира. Възможно е издаването на бонове, като трябва да се има предвид, че дори и клиентските бонове в този режим се маркират като нефискални. Възможно е и извършването на дневен финансов отчет с нулиране (Z-отчет), но не се прави запис във фискалната памет. Зададен е БУЛСТАТ, но той не е записан във фискалната памет и може да се променя. Отчетите на фискалната памет не се изпълняват. Нулиранията на паметта, ако има такива, не предизвикват запис във фискалната памет. Часовникът може да се сверява произволно. В това състояние фискалният принтер НЕ МОЖЕ ДА БЪДЕ ИЗПОЛЗУВАН в търговски обекти – предназначението му е само за обучение.


Д) Фискализиран фискален принтер

В това състояние могат да се издават клиентски финансови бонове, маркирани като фискални. При извършване на дневен финансов отчет с нулиране (Z-отчет) се прави запис във фискалната памет. Сверяването на датата е допустимо само напред спрямо последния запис във фискалната памет. БУЛСТАТ се записва във ФП и повече не може да се променя. НЕ Е ВЪЗМОЖНО излизането на принтера от фискален режим без смяна на фискалната памет.

Преди фискализация трябва да се установи БУЛСТАТ на притежателя на устройството, ако вече не е зададен (команда 98 (62H)), и после да се изпълни командата за 72 (48H).

Тази операция се извършва задължително от упълномощен от ДАМТН сервиз, притежаващ удостоверение за сервизиране на съответния модел фискално устройство, с коЙто е сключен договор за сервизно обслужване.


Е) Необратима грешка във фискалния принтер

В това състояние фискалният принтер попада в случай, че е установена сериозна техническа или логическа грешка при работа на устройството, както и в случай на неизправност на модула фискална памет. В този режим след включване на принтера се печата с удебелен шрифт “ФАТАЛНА ГРЕШКА: 4”. Принтерът отказва да изпълнява команди за отваряне на фискални бонове, и такива, свързани със запис във фискалната памет. Могат да се изпълняват само диагностични команди и отчети на фискалната памет.

Необходимо е зануляване на RAM и поставянето на нов модул фискална памет, поради това, че този, с който се е работило до настъпване на грешката, е превключен в READONLY режим. ТЕЗИ ОПЕРАЦИИ Е НЕОБХОДИМО ДА БЪДАТ ИЗВЪРШВАНИ ОТ СЕРВИЗНАТА ФИРМА, С КОЯТО Е СКЛЮЧЕН ДОГОВОР ЗА СЕРВИЗНА ПОДДРЪЖКА И РЕМОНТ.

Събитията довеждащи до това състояние са:



  • Невъзможно извършване на верен запис във фискалната памет.

  • Невалидна контролна сума на БУЛСТАТ, индивидуален номер на фискалното устройство, номер на фискалната памет или някой от записите с данъчни ставки.

  • Неразпознаване формата на модула фискална памет.

  • Ако при проверката на фискалната памет след включване на принтера се намерят повече от три невалидни контролни суми на фискален запис от дневен финансов отчет. Фискалните записи с невалидна контролна сума се разпечатват при включването му (ако не е в състояние на отворен бон), както и на съответното място в отчетите на фискалната памет.

Текущото състояние на устройството е кодирано в поле с дължина 6 байта, което се предава в рамката на всяко съобщение от фискалния принтер. Следва описание на всеки байт от това поле:


Байт 0: Общо предназначение

0.7 Резервиран.

0.6 Резервиран.

0.5 Обща грешка - това е OR на всички грешки, маркирани с ‘#’.

0.4 # Механизмът на печатащото устройство има неизправност.

0.3 Не е свързан клиентски дисплей.

0.2 Часовникът не е установен.

0.1 # Кодът на получената команда е невалиден.

0.0 # Получените данни имат синктактична грешка.
Байт 1: Общо предназначение

1.7 Резервиран.

1.6 Електронната контролна лента е отпечатана.

1.5 Капакът на принтера е отворен.

1.4 # Установено е разрушаване на съдържанието на оперативната памет (RAM) след включване.

1.3 # Слаба батерия (Часовникът за реално време е в състояние RESET).

1.2 # Извършено е зануляване на оперативната памет.

1.1 # Изпълнението на командата не е позволено в текущия фискален режим.

1.0 При изпълнение на командата се е полуило препълване на някои полета от сумите. Статус 1.1 също ще се установи и командата няма да предизвика промяна на данните в принтера.
Байт 2: Общо предназначение

2.7 Резервиран.

2.6 Електронната контролна лента не е празна.

2.5 Отворен е служебен бон.

2.4 Близък край на електронната контролна лента (90% запълнена).

2.3 Отворен е фискален бон.

2.2 Край на електронната контролна лента (95% запълнена).

2.1 Останала е малко хартия.

2.0 # Свършила е хартията. Ако се вдигне този флаг по време на команда, свързана с печат, то командата е отхвърлена и не е променила състоянието на принтера.
Байт 3: За състояние на ключетата

3.7 Резервиран.

3.6 = 1 Ако Sw7 е в положение ON. Скорост на предаване на серийния порт.

3.5 = 1 Ако Sw6 е в положение ON. Скорост на предаване на серийния порт.

3.4 = 1 Ако Sw5 е в положение ON. Работа с DOS-овска кодова таблица.

3.3 = 1 Ако Sw4 е в положение ON. Работа с дисплей с 1251 кодова таблица (Windows Cyrillic).

3.2 = 1 Ако Sw3 е в положение ON. Задава режим “прозрачен дисплей”.

3.1 = 1 Ако Sw2 е в положение ON. Определя поведението при разширен клиентски бон.

3.0 = 1 Ако Sw1 е в положение ON. Разрешава автоматично отрязване на бона.
Байт 4: За фискалната памет

4.7 Резервиран.

4.6 Резервиран.

4.5 OR на всички грешки, маркирани с ‘*’ от байтове 4 и 5.

4.4 * Фискалната памет е пълна.

4.3 Има място за по-малко от 50 записа във ФП.

4.2 Зададени са индивидуален номер на принтера и номер на фискалната памет.

4.1 Зададен е БУЛСТАТ.

4.0 * Има грешка при запис във фискалната памет.
Байт 5: За фискалната памет

5.7 Резервиран.

5.6 Резервиран.

5.5 Не се използува.

5.4 Зададени са поне веднъж данъчните ставки.

5.3 Принтерът е във фискален режим.

5.2 * Последният запис във ФП не е успешен.

5.1 Фискалната памет е форматирана.

5.0 * Фискалната памет е установена в режим READONLY (заключена).
Прекъсване на захранването

Във всеки момент състоянието на принтера е отразено в неговите байтове на състоянието. Когато принтера се включи след като е спирало захранването, приложната програма, чрез командите 76 (4AH) и 103 (67H) трябва да се осведоми за състоянието на принтера.

Приложната програма трябва да вземе решение за по нататъшното поведение в зависимост от състоянието на принтера. Гарантира се, че фискалната памет няма да се повреди от спиране на захранването, както и че натрупаните суми в оперативната памет ще бъдат съхранени. Ако е отпаднало захранването по време на печат, то след включването на принтера той ще отпечата един ред “* СПАД НАПРЕЖЕНИЕ *” с широки букви и ще довърши печата.
Издаване на фискални и СЛУЖЕБНИ бонове

А) СЛУЖЕБНИ бонове.

Бонът първо се отваря, след това се отпечатва текст и накрая се затваря.

Използват се командите 38 (26H), неограничен брой пъти 42 (2АH) и накрая 39 (27H).

Б) Фискални бонове.

Първо се отваря фискален бон, регистрират се продажбите, извършва се плащането и накрая бона се приключва.

Използват се командите 48 (30H), 49 (31H), 51 (33H), 52 (34H), 53 (35H), 54 (36H), 58 (3AH) и 56 (38H).

Накрая на деня се извършва дневен финансов отчет с нулиране (Z-отчет), за да се запише информацията във фискалната памет. Това става с командата 69 (45H). Преди това електронната контролна лента трябва да е отпечатана докрай и нулирана.



ЕЛЕКТРОННА КОНТРОЛНА ЛЕНТА


Принтерът запомня всеки ред от фискалните бонове, X- и Z-отчетите във енергонезависима флаш памет. Данните от контролната лента трябва да бъдат отпечатани и изтрити преди Z-отчета с команда 120 (78H), подкоманди ‘PS’ или ‘PL’ и ‘E’. Ако електролната контролна лента се напълни преди края на деня, то тя трябва да се отпечати и изтрие, за да се продължи работата. Допустимо е да има повече от една контролна лента на Z-отчет.

Два флага от статус-байтовете предупреждават за близък край на контролната лента (10% свободни) и край на контролната лента (5% свободни). Ако е вдигнат флагът “край на контролната лента”, следните команди са забранени: 38 (Отваряне на служебен бон), 42 (Свободен текст в служебен бон), 48 (Отваряне на фискален бон), 49 (Регистриране на продажба), 52 (Регистриране и показване на дисплея), 54 (Печат на фискален текст), 58 (Продажба на артикул) и 84 (Печат на баркод). Приложната програма може да получи информация за състоянието на контролната лента с команда 120, подкоманда ‘I’.


ГЕНЕРИРАНЕ НА ОТЧЕТИ

Отчетите се генерират изцяло от фискалния принтер при получаване на съответната команда от PC. При тези отчети не е възможно потребителската програма да прави каквито и да е промени във вида на отчетите, т.е. те изглеждат така, както са предефинирани във ФП. Предизвикват се с командите:



50 (32H) – отчет промени на данъчните ставки и десетичните знаци.

69 (45H) - дневен финансов отчет с или без нулиране.

108 (6CH) - дневен финансов отчет с или без нулиране и с разпечатка на сумите по артикули.

117 (75H) - дневен финансов отчет с или без нулиране и с разпечатка на сумите по департаменти.

118 (76H) - дневен финансов отчет с или без нулиране и с разпечатка на артикули и департаменти.

79 (4FH) / 95 (5FH) - съкратен отчет на фискалната памет от дата до дата / от номер до номер на фискален блок.

73 (49H) / 94 (5EH) - пълен отчет на фискалната памет от дата до дата / от номер до номер на фискален блок.
Протокол на ниско ниво

А) Тип на протокола. - Master (Host) / Slave

Фискалният принтер изпълнява командите изпратени му от Host и връща съобщение, зависещо от резултата.

Фискалният принтер не може да инициира комуникация. Само съобщения, които са резултати от изпълнението на получени команди се изпращат до Host.

Съобщенията в протокола са или пакетирани съобщения или единични байтове.

Фискалният принтер поддържа комуникация по RS 232 при скорости на обмен 1200, 2400, 4800, 9600, 19200, 38400, 57600 и 115200 b/s, 8N1. Скоростта се задава от конфигурационни битове 6, 7 и 8. Поддържа се и USB връзка, която се активира автоматично при включване на принтера с USB кабел към PC.

Б) Последователност на съобщенията

Host изпраща пакетирано съобщение, съдържащо командата към принтера.

ФП извършва исканата операция и отговаря с пакетирано съобщение отговор.

Host трябва да чака отговора от принтера преди да изпрати друго съобщение.

Протоколът използва непакетирани кодове с дължина един байт, за обработката на необходими паузи и грешни състояния.

В) НЕПАКЕТИРАНИ СЪОБЩЕНИЯ, TIME-OUT

При нормална работа на всички съобщения от Host, Slave отговаря не по-късно от 60 ms или с пакетирано съобщение или с еднобайтов код. Host трябва да има 500ms time-out за получаване на отговор от Slave. Ако за това време не се получи никакъв отговор, той трябва да предаде съобщението отново със същия пореден номер и същата команда. При няколко неуспешни опита, Host трябва да индицира, че няма връзка с фискалния принтер или има хардуерна грешка.

Непакетираните съобщения се състоят от един байт и те са:

а) NAK 15H

Този код се изпраща от Slave когато открие грешка в контролната сума или формата на полученото съобщение. Когато Host получи NAK, той трябва да предаде отново съобщение със същия пореден номер

б) SYN 16H

Този код се изпраща от Slave, когато получи команда, за която е необходимо по-дълго време за изпълнение. SYN се изпраща на всеки 60 ms, докато не е готово пакетираното съобщение за отговор

Г) ПАКЕТИРАНИ съобщения

а) Host към принтер. (Send)



<01><05><03>

б) Принтер към Host. (Receive)



<01><LEN><SEQ><CMD><DATA><04><STATUS><05><BCC><03>

Където:


<01> Preamble

дължина: 1 байт

стойност: 01H

<LEN> Брой байтове от <01> (без него) до <05> (вкл.) плюс фиксирано отместване от 20H

дължина: 1 байт

стойност: 20H - FFH

Пореден номер на рамката

дължина: 1 байт

стойност: 20H - 7FH

Фискалният принтер записва същия <SEQ> в съобщението отговор.Ако ФП получи съобщение със същото <SEQ>, като последното получено от него съобщение, то той не извършва действие, а повтаря последното изпратено от него съобщение.



Код на командата

дължина: 1 байт

стойност: 20H - 7FH

ФП записва същия <CMD> в съобщението отговор. Ако принтерът получи несъществуващ код, той отговаря с пакетирано съобщение с нулева дължина на полето за данни и установява съответния статус бит.



Данни

дължина: 0 - 213 байта за Host към принтер.

0 - 218 байта за Принтер към Host.

стойност: 20H – FFH и допълнително 09H и 0AH.

Форматът и дължината на областта за данни зависи от командата. Ако командата няма данни то дължината на това поле е нула.Ако има синтактична грешка в данните се установява съответния статус бит и се връща пакетирано съобщение с нулева дължина на полето за данни.

<04> Разделител (само за принтер към Host съобщения)

дължина: 1 байт

стойност: 04H

Полето с текущото състояние на фискалното устройство

дължина: 6 байта

стойност: 80H - FFH

<05> Postamble

дължина: 1 байт

стойност: 05H

Контролна сума (0000H-FFFFH)

дължина: 4 байта

стойност: 30H - 3FH

Сумата включва от <01> без него до <05> вкл. Всяка цифра от двата байта се предава като и се прибави 30H. Например сумата 1AE3H се представя като 31H,3AH,3EH,33H.



<03> Terminator

дължина: 1 байт

стойност: 03H
Kомпозиране на съобщения, синтаксис и използвани означения

а) Областта за данни е зависима от командата.

б) Параметрите изпратени до принтера могат да бъдат разделени със запетая и / или да бъдат с фиксирана дължина.

в) Наличието на запетая между параметрите показва, че тя е задължителна.

Когато отделните параметри са заградени в < > това означава, че те са задължителни, но самите скоби не се съдържат в съобщението.

Когато даден параметър е заграден в [ ] скоби, това означава, че той не е задължителен. Самите скоби също не се предават в съобщението.

Символите с ASCII кодове под 32 (20H) имат специално значение и употребата им е явно посочена в описанието там, където е необходимо. Ако по някакви причини трябва да изпратим такъв символ (например в ESCAPE-команда към дисплея), то той трябва да се предшества от 16 (10H) и да му се добави отместване 40H.

Пример: Когато за областта за данни пишем - 2500,100,Text, то в областта за данни има 2D 32 35 30 30 2C 31 30 30 2C 54 65 78 74 , където всяко шестнайсетично число представлява ASCII стойност.
Списък на командиТЕ - по предназначение

Този раздел съдържа списъка от командите на фискалния принтер, разделени в групи в зависимост от тяхното предназначение:






Сподели с приятели:
  1   2   3   4   5




©obuch.info 2024
отнасят до администрацията

    Начална страница