Опис драйвера ФП Марія 301 під Windows


Дана динамічна біліотека являє собою внутрішній сервер автоматизації який надає користувачу COM-інтерфейс для роботи з ФП Марія-301.

Для початку роботи з даним COM-інтерфейсом слід зареєструвати його в системі за допомогою утиліти regsvr32.exe.

regsvr32.exe <шлях до бібліотеки>\MaryServer.dll

Якщо біблотека скопійована у видимий каталог Windows\System, то шлях до неї вказувати не потрібно.

Після проведення реєстрації бібліотеку можна використовувати у програмі користувача.


Функції бібліотеки поділяются на три групи

- Функції ініціализації

- Сервісні_функції

- Функції_операцій_на_фіскальному_принтері

- Список функцій бібліотеки

- Властивості (!!! прочитайте уважно)

- Приклад

- Важливо

Перед початком роботи з бібліотекою потрібно обов'язково ініціалізувати її функцією InitEcr, завершення роботи з бібліотекою викликом функції CloseEcr.

Сервісні функції налаштовують деякі параметри бібліотеки.

Функції що виконують операції на касовому апараті є блокуючими - тобто призупиняють виконання програми (в тому числі і події вводу / виводу) доти доки функція не поверне результат. Результатом виконання цих функцій є логічне значення (TRUE - функція виконана успішно, FALSE - неуспішне виконання). При неуспішному виконанні можна отримати додаткову інформацію про помилку, викликавши функцію GetErrorCode, яка повертає код помилки останьої виконаної операції. В бібліотеці по замовчуванню використовується режим, при якому інформація про помилки інтерактивно видаєтся самою бібліотекою і, таким чином, програмі, що робить виклик потрібно тільки відслідковувати ознаку успішного чи неуспішного завершення операцій. Цей режим можна відключити, але тоді потрібно відслідковувати інформацію про помилки для того, щоб видавати адекватну діагностику.


Функції бібліотеки

 

Коди помилок


Функції ініціализації


InitEcr
Ініціалізує бібліотеку. Без її виклику неможливо викликати інші функції бібліотеки.

Параметри
aChannel (ціле 1 байт)
Номер COM-порта, до якого приєднано апарат (1-COM1, 2-COM2, ...)

aEcrType (ціле 4 байти)
Модель апарату. Існує деяка несумісність в різних моделях апарату Марія, тому, щоб точно взнати модель апарату, рекомендуєтся звернутись в сервісний центр, якщо в паспорті або інших документах, які поставляються разом з апаратом такої інформації не знайдено. Підтримуються наступні моделі:
1 - Марія-301, перша модифікація (ВР40...)
2 - Марія-301, друга модифікація (ВР410...)
3 - Марія-301, третя модифікація (ВР420..)
4 - Марія-301, четверта модифікація (ВР440...)
5 - Марія-301, п'ята модифікація (ВР441...)
6 - Марія-302

7 - Мария-301 МТМ             (ВР450...)

8 - Мария-301 МТМ             (ВЖ500...)

9 - Мария-301 МТМ             (ВЖ540...)

aBaud (ціле 4 байти)
Швидкість підключення в бодах (стандартні швидкості: 9600, 18200, 34800, 57600)

Для корректної роботи необхідно раз створити об'єкт та ініціалізувати апарат, потім під час роботи програми працювати зі створеним об'єктом. Для моделей 7 і вище (аппарати МТМ) рекомендуємою є швидкість 57600.

Повернення (логічне)
В разі успіху -
TRUE, в іншому випадку FALSE. Можна отримати додаткову інформацію про помилку, викликавши функцію GetErrorCode.


CloseEcr
Закриває з'єднання. Цю функцію потрібно викликати при завершені роботи з бібліотекою.

Параметри
Немає

Повернення (логічне)
В разі успіху - TRUE, в іншому випадку FALSE. Можна отримати додаткову інформацію про помилку, викликавши функцію GetErrorCode.


 

Сервісні функції


GetRoundType
Повертає тип встановленої на даний момент в бібліотеці схеми заокруглення товарних сум

Параметри
Немає

Повернення (ціле 1 байт)

0 - арифметичне. Встановлюється по-замовчуванню.
1 - Заокруглення до найближчого більшого ()
3 - Заокруглення арифметичне, але 0.5 копійки = 0коп. , тобто заокруглюются вниз (т.з. италійське заокруглення).
Попередження: можливі і інші значенняя, але вони не підтримуються апаратами сімейства Марія. Вони приведені нижче.

2 - заокруглення до найближчого меншого («вниз»). 1.5 копійки = 1 коп.

3 - криворізьке. Використовувалось для ранніх апаратів. Зараз не використовується.

Для нормальної роботи використовується стандартно арифметичне заокруглення.

 


SetRoundType
Встановлює нову схему заокруглення товарних сум в бібліотеці. Схема заокруглення встановлюється у відповідності з моделлю апарату.

Параметри
aRoundType (ціле 1 байт)
Тип, схеми заокруглення (див. функцію GetRoundType)

Повернення
Немає


SetVat
Встановлює значення вказаної ставки податку в бібліотеці. Для бібліотеки інформація о ставках податку апарату вказана в даній функції є первиною по відношеню до того, що запрограмовано в апараті. Тобто це означає, що программа краще "знає", як повинні бути запрограмовані ставки податку і передає цю інформацію в бібліотеку. Апарат повинен бути запрограмований у відповідності з даною інформацією. Якщо тільки це дозволяє дана модель апарату, бібліотека сама перепрограмовує ставки в апараті якщо "програмні ставки" не відповідають "апаратним ставкам". Якщо ж дана модель не дозволяє автоматично перепрограмувати ставки в апараті, то необхідно "вручну" прослідкувати щоб інформація
пр
о ставки співпадала в апараті і програмі. По замовчуванню в бібліотеці встановлюєтся перша ставка - 20.00, решта - 0. Якщо в Вашому випадку це не так, то потрібно після ініціализації бібліотеки вказати інші значення ставок шляхом одного або декількох викликів функції SetVat.

Параметри
aVatNum (ціле 1 байт)
Номер ставки від 1 до 4, значення яке буде змінюватись

aVatVal (с плаваючою комою 8 байт)
Нове значення ставки в процентах в форматі 99.99

Повернення
Немає


SetVatType
Встановлює тип оподаткування в бібліотеці. Все сказане в
SetVat  по значенях ставок податку вірно і по відноошенню до типу оподаткування з тією лише різницею, що це значение автоматично не програмуєтся бібліотекою і тому повино бути приведено у відповідність з програмним значеням "вручну".

Параметри
aVatType (целое 1 байт)
0 - в
кладена ставка (в том числі)
1 - на
кладена ставка (рахується окремо)

Повернення
Немає


GetPriceType
Повертає встановлений в бібліотеці поточний тип цін. У відповідності з встановленим типом цін бібліотека певним чином "сприймає" ціни, які в неї передаются. Якщо, припустімо, програма завжди працює з цінами без ПДВ, то вона може прямо вказати це бібліотеці, і бібліотека буде "знати", що всі ціни, які їй передаются програмою - це в даному випадку ціни без ПДВ.

Параметри
Немає

Повернення (ціле 1 байт)
0 - Ціни залежать від типу оподаткування. Якщо тип оподаткування 0, то вхідні ціни - ціни з ПДВ, а якщо тип оподаткування 1, то вхідні ціни - базові ціни без податку.
1 - Вхідні ціни завжди ціни без податку.
2 - Вхідні ціни завжди ціни з податком.


SetPriceType
Встановлює новий тип вхідних цін

Параметри
aPriceType (ціле 1 байт)
Новий тип цін (див. функцію GetPriceType)

Повернення
Немає


SetMessageMode
Встановлює режим відображення або невідображения діагностики помилок бібліотекою. По замовчуванню режим відображення повідомлень включено

Параметри
aIsMessageOn (логічне)
Якщо TRUE - включити режим повідомлень; FALSE - виключити режим повідомлень.

Повернення
Немає


GetErrorCode
Повертає код помилки останьої виконаної операції

Параметри
Н
ет

Повернення (ціле 4 байти)
Код помилки. Нижче приведені можливі коди помилок з коротким описом.


CutAndBell

Встановлє або знімає режим автообрізки та дзвінка після пробиття чеку (тільки в Марія-МТМ)

 

Параметри
BOOL isCut - <1> встановлює режим автообрізки після пробиття чеку, <0> вимикає режим автообрізки паперу

BOOL isBell - <1>встановлює режим звукового сигналу після пробиття чеку, <0> вимикає режим звукового ссигналу після пробиття чеку.

По замовчуванню данні режими включені.

 

Повернення

Немає


TableView

Встановлює або знімає режим табличного відображення чеків(ціна, кількість) (тільки в Марія-МТМ)

 

Параметри
BOOL isTable - <1> встановлює режим табличного відображення чеків, <0> вимикає режим табличного відображення чеків

По замовчуванню данний режими виключений.

 

Повернення

Немає


 

Коди помилок
0 - помилки не було
3000 - спроба отримати доступ до COM-порту, занятому іншим процесом (напр. миша)
3001 - помилка відкриття COM-порту
3003 - не вистачає пам'яті для пробиття чеку
3004 - помилка канала зв'язку (парність, тайм-аут і т.і.)
3006 - неприпустимий номер ставки податку
3010 - помилка ініціалізації касового апарату
3012 - помилка виділення пам'яти для зчитівання інформації по товарах
3013 - неприпустимий номер артикулу
3014 - неможливо записати артикули (помилка виділеня пам'яті)
3016 - помилка асинхроного режиму
3021 - не вдалось правильно записати дані на апарат (помилка при верифікації)
3100 - невідома помилка (щоб отримати детальну інформацію, потрібно викликати API-функцію GetLastError)
3550 - апарат вимкнено
3551 - немає зв'язку з касовим апаратом
3552 - помилка
закриття чеку


Коди помилок з 3500 по 3529 є внутрішніми помилками касового апарату (описані в керівництві).


3500 "Нема паперу в апараті"
3501 "Сбій сенсорів друкуючого механізму"
3502 "Сбій позиціонеру друкуючого механізму"
3503 "Помилка парності каналу зв'язку"
3504 "Сбій таймеру касового апарату"
3505 "Помилка запису в фіскальну пам'ять апарату"
3506 "Несправність табло касового апарату"
3507 "Апарат заблоковано з технічних причин"
3508 "Помилка передачі блока інформації"
3509 "Необхідно зробити Z-звіт"
3510 "Ключ знаходиться в нейтральному положенні"
3511 "Невідома команда"
3512 "Команда не відповідає протоколу"
3513 "Z-звіт не зроблено через внутрішню помилку"
3514 "Переповнення фіскальної пам'яті"
3515 "Невірний час на апараті"
3516 "Тип, кількість або значення параметрів команди невірне"
3517 "Не зареєстровано касира"
3518 "Помилка при перевірці параметрів"
3519 "Відсутній заводський номер"
3520 "Поверніть ключ в положення ""РОБОТА"""
3521 "Поверніть ключ в положення ""ПРОГРАМУВАННЯ"""
3522 "Поверніть ключ в положення ""X-ЗВІТ"""
3523 "Поверніть ключ в положення ""Z-ЗВІТ"""
3524 "Значення вже запрограмовано"
3525 "Апарат знаходиться в учбовому режимі"
3526 "Не запрограмовано інформацію про
грошові одиниці"
3527 "Переповнення розрядної сітки"
3528 "Потрібен пароль сервісного центру"
3529 "Невірне положення ключа"


Функції операцій на фіскальному принтері

OpenCheck
В
ідкриває новий товарний чек і якщо потрібно друкує строку заголовку (не плутати з програмуємою шапкою чеку!). Будь-який чек до того як він буде надрукований повинен бути відкритим цією функцією. Неможна користатися цією функцією, якщо чек вже відкрито.

Параметри
aTitle (строка, с завершающим 0)
Строка заголовку чеку. Якщо строка пуста, заголовок не друкується.

Повернення (логічне)
В разі успіху - TRUE, в іншому випадку FALSE. Можна отримати додаткову інформацію про помилку, викликавши функцію GetErrorCode.


RegCheckPos
Пробиває товарну позицію у відкритому чеку. Може використовуватись тільки після успішного відкриття чеку (див. OpenCheck).

Параметры
aName (строка, с завершаючим 0)
Назва товару (до 11 символів)

exName (строка, с завершаючим 0)
Розширена назва товару (18 символів, якщо вказати пусту стічку, то ця назва дркуватись не буде). Для аппарату Марія-301 МТМ – цей параметр дозволяє друкувати 36 символів.

aPrc (з плаваючою комою 8 байт)
Ціна товару в гривнах (див. також GetPriceType, SetPriceType) Якщо ціна вказана зі знаком мінус, то важається, що це повернення товару. Увага! Якщо ви робите повернення товару, то не допускайте в чеку пробиття додатніх позицій після першої від'ємної. Тобто, якщо ви почали пробивати повернення, то вже неможна пробивати звичайні позиції. Наслідком недотримання цієї умови буде повідомлення про помилку з відміною чеку.
Якщо через касу на момент пробиття чеку на повернення не пройшло потрібної суми, виникає повідомлення про помилку з відміною чеку. Коли в чеку є товари і товари на повернення, то при знижці/націнці на весь чек (функція CloseCheck) виникає повідомлення про помилку з відміною чеку. В даному випадку рекомендується користуватися даною функцією, встановлюючи знижку/націнку на окремі позиції. Для встановлення номеру чеку, по якому буде виконано повернення, слід користуватися методом SetStornoNum

aVol (з плаваючою комою 8 байт)
Кількість одиниць товару в штуках або кг в залежності від товару.

aVolType (ціле 1 байт)
Тип товару - ваговий або поштучний (0 або 1).

aBaseVat (ціле 1 байт)
Номер основної ставки податку, до якої відноситься товар (див. також SetVat, SetVatType)

aSecondVat (ціле 1 байт)
Номер додаткової ставки податку, до якої відноситься товар (див. також SetVat, SetVatType)

aDiscount (с плавающей точкой 8 байт)
Процент скидки або націнки по товарній позиції. Якщо aDiscount > 0, то це - націнка, якщо aDiscount < 0, то це скидка.

aKod (ціле 8 байт)
Код товару. Використовується для нових типів апаратів (Марія-301 МТМ ВР500).


Повернення (логічне)
В разі успіху - TRUE, в іншому випадку FALSE. Можна отримати додаткову інформацію про помилку, викликавши функцію GetErrorCode.


CloseCheck
Закриває товарний чек. Може використовуватись лише після успішного відкриття чеку (див. OpenCheck). Після операції закриття чеку сума продажу по чеку йде у пам'ять апарату і операцію відмінити неможна.

Параметри
aFooter (строка, с завершаючим 0)
Строка підвала чеку. Якщо строка пуста, підвал не друкується.

aMoney (з плаваючою комою 8 байт)
Сума готівки, що вноситься клиєнтом. Використовується для відображення на чеку суми що вноситься клиєнтом і суми здачі. Може бути рівна 0 - тоді дана інформація на чеку не друкується. Якщо властивість IsCredit встановлена в TRUE, то важається, що покупець проводив оплату в кредит, в іншому разі - оплата проводилась готівкою. По замовчуванню властивість IsCredit дорівнює FALSE.

aDiscount (з плаваючою комою 8 байт)
Процент скидки або націнки по загальній сумі чеку (не плутати зі скидкою/націнкою по позиції). Якщо aDiscount > 0, то це - націнка, якщо aDiscount < 0, то це скидка. Коли в чеку є товари і това
ри на повернення, то при знижці/націнці на весь чек виникає повідомлення про помилку з відміною чеку. В даному випадку рекомендується користуватися функцією RegCheckPos, встановлюючи знижку/націнку окремі на кожну позицію.

Зауваження: Якщо властивість IsCredit встановлена в TRUE, то важається, що покупець проводив оплату в кредит, в іншому разі - оплата проводилась готівкою. По замовчуванню властивість IsCredit дорівнює FALSE. 

Повернення (логічне)
В разі успіху - TRUE, в іншому випадку FALSE. Можна отримати додаткову інформацію про помилку, викликавши функцію GetErrorCode.


CloseCheckEx
Закриває товарний чек.
Аналогічна функції CloseCheck, але надає можливість закривати чек різними видами оплати.

Параметри
aFooter (строка, с завершаючим 0)
Строка підвала чеку. Якщо строка пуста, підвал не друкується.

a
Cash (з плаваючою комою 8 байт)
Сума готівки, що вноситься клиєнтом. Використовується для відображення на чеку суми що вноситься клиєнтом і суми здачі. Може бути рівна 0 - тоді дана інформація на чеку не друкується.

a
Check (з плаваючою комою 8 байт)
Сума
оплати чеком. Може бути рівна 0 - тоді дана інформація на чеку не друкується.

a
Credit (з плаваючою комою 8 байт)
Сума оплати в крадит. Може бути рівна 0 - тоді дана інформація на чеку не друкується.

a
Tara (з плаваючою комою 8 байт)
Сума оплати чеку тарою або на обмін. Може бути рівна 0 - тоді дана інформація на чеку не друкується.

aDiscount (з плаваючою комою 8 байт)
Процент скидки або націнки по загальній сумі чеку (не плутати зі скидкою/націнкою по позиції). Якщо aDiscount > 0, то це - націнка, якщо aDiscount < 0, то це скидка. Коли в чеку є товари, що продаються та това
ри на повернення, то при знижці/націнці на весь чек виникає повідомлення про помилку з відміною чеку. В даному випадку рекомендується користуватися функцією RegCheckPos, встановлюючи знижку/націнку окремі на кожну позицію.

Зауваження: Суми, що вказуються aCash, aChec, aCredit, aTara сумуються, і цей результат має бути більший рівний сумі чеку. Якщо він менший-рівний суми чеку, то друкується оплати по типам оплат та сума здачі, інакше – сума до оплати.

Повернення (логічне)
В раз і успіху - TRUE, в іншому випадку FALSE. Можна отримати додаткову інформацію про помилку, викликавши функцію GetErrorCode.


CancelCheck
Анулює активний товарний чек (чек не повинен бути закритим). Може використовуватися лише після успішного відкриття чеку (див. OpenCheck).

Параметри
Немає

Повернення (логічне)
В разі успіху - TRUE, в іншому випадку FALSE. Можна отримати додаткову інформацію про помилку, викликавши функцію GetErrorCode.


MoneyIn
Виконує операцію службового внесення грошей на касовому апараті.

Параметри
aSumm (з плаваючою комою 8 байт)
Сума, що вноситься готівкою в гривнях.

Повернення (логічне)
В разі успіху - TRUE, в іншому випадку FALSE. Можна отримати додаткову інформацію про помилку, викликавши функцію GetErrorCode.


MoneyOut
Виконує операцію службового вилучення грошей на касовому апараті.

Параметри
aSumm (з плаваючою комою 8 байт)
Сума, що видається готівкою в гривнях.

Повернення (логічне)
В разі успіху - TRUE, в іншому випадку FALSE. Можна отримати додаткову інформацію про помилку, викликавши функцію GetErrorCode.


XReport
Виконує X-звіт на касовому апараті.

Параметри
Немає

Повернення (логічне)
В разі успіху - TRUE, в іншому випадку FALSE. Можна отримати додаткову інформацію про помилку, викликавши функцію GetErrorCode.


InCash

Занесення інформації про рух готівки по кассі.
Функція автоматичного обліку готівки на апараті працює лише у версії 4 касового апарату (та вище), тому для версій  2 та 3 слід внести інформацію про рух готівки по кассі . Для 1 версії аппарату рух готівки по кассі не підтримуеться.

Для того щоб заносилась інформація про гух готівки по кассі функціею InCash, необхідно перед данною функцією встановити IsCash = true (див. властивості IsCash)


Парамети

BegSumm - Початковий Залишок

InMoneySumm - Службове Внесення

OutMoneySumm - Службове Вилучення

InSumm - Одержано Готiвки

OutSumm - Видано Готiвки

EndSumm - Кiнцевий залишок

NoCashSumm - Безготiвкова Оплата

      Дані значення потрібно вносити в гривнях (напр. 3.41,  65.73...)

Після вікористання данної функції в Х-звіті буде друкуватися виправлений рух готівки.

Повернення (логічне)
В разі успіху - TRUE, в іншому випадку FALSE. Можна отримати додаткову інформацію про помилку, викликавши функцію GetErrorCode.


ZReport
Виконує Z-звіт на касовому апараті.

Параметри
Немає

Повернення (логічне)
В разі успіху - TRUE, в іншому випадку FALSE. Можна отримати додаткову інформацію про помилку, викликавши функцію GetErrorCode.


NullCheck
Пробиває нульовий чек

Параметри
Немає

Повернення (логічне)
В разі успіху - TRUE, в іншому випадку FALSE. Можна отримати додаткову інформацію про помилку, викликавши функцію GetErrorCode.


PaperFeed
Виконує операцію протяжки чекової ленточки.

Параметри
Немає

Повернення (логічне)
В разі успіху - TRUE, в іншому випадку FALSE. Можна отримати додаткову інформацію про помилку, викликавши функцію GetErrorCode.

Примітка: в Марії 301МТМ при протяжці паперу відбувається тільки спацьовування механізму (клацання).


GetSerialNum
Повертає строку з серійним номером ФП.

Параметри
Немає

Повернення (строка, с завершаючим 0)


SetFullNameMode
Встановлює друк довгих назв товару (тільки для 2 та 3-ої модифікації).

Параметри
Логічний тип. TRUE - встановлює довгі імена, FALSE - скидує.

Повернення
Немає


PutMessage
Виконує команду ФП

Параметри
Строка - команда ФП, подвійне слово - таймаут в мілісекундах(час очікування), рекомендується 3000 мілісекунд.

Повернення (логічне)
В разі успіху - TRUE, в іншому випадку FALSE. Можна отримати додаткову інформацію про помилку, викликавши функцію GetErrorCode.

Метод PutMessage дозволяє розширити можливості драйвера. Так, для апаратів Марія-302, цей метод може бути використаний для керуванням друком форм на підкладний бланк (сліп). Документація по командам касових апаратів поставляється разом з апаратом. Слід зауважити, що всі назви слід подавати в ДОС-кодировці (866 кодова сторінка).


GetLastCheck

Повертає номер останього успішно пробитого чеку

Параметри
Немає
Повернення (ціле)
Ціле число


PeriodReport

Виконує фіскальний звіт за період

Параметри

Початкова дата, кінцева дата (у форматі VARIANT)

Повернення (логічне)
В разі успіху - TRUE, в іншому випадку FALSE. Можна отримати додаткову інформацію про помилку, викликавши функцію GetErrorCode.


 SetStornoNum

Параметри

Тип Ціле (long)

Вказується номер чеку, по якому виконується повернення.

Повернення (логічне)

В разі успіху - TRUE, в іншому випадку FALSE. Можна отримати додаткову інформацію про помилку, викликавши функцію GetErrorCode.


OpenSafe

Відкриває сейф, який приєднаний до ЕККА.

Повернення (логічне)


SetTime

Встановлює заданий час на ЕККА

Параметри

aTime - біжучий час (у форматі VARIANT)

Повернення (логічне)
В разі успіху - TRUE, в іншому випадку FALSE. Можна отримати додаткову інформацію про помилку, викликавши функцію GetErrorCode.


RefreshArtikul

Стягує інформацію по артикулам з ЕККА, а саме таблицю артикулів і записує її у файл art2file.sys. Використовується тоді, коли неможливо пробити чек через невідповідність згенерованого артикула драйвером і номером артикула на ЕККА.

Повернення (логічне)
В разі успіху - TRUE, в іншому випадку FALSE. Можна отримати додаткову інформацію про помилку, викликавши функцію GetErrorCode.


Властивості


IsCash

Тип Логічний

Визначає, чи вести облік готівки на комп'ютері (True), чи на касовому апараті (False). По замовчуванню облік готівки ведеться на касовому апараті. Функція автоматичного обліку готівки на апараті працює лише з версії 4 касового апарату, тому для версій 2 та 3 слід встановлювати цю властивість у (True). Для 1 версії аппарату рух готівки по кассі не підтримуеться. При проведенні операцій кредитування/повернення, потрібно слідкувати за тим, щоб сума повернення не перевищувала суми готівки по касі, інакше режим автоматичного обліку готівки відключається і потребує програмного корегування.

При веденні обліку готівки через комп'ютер, дані про готівку зберігаються у файлі maria.dat. Іноді виникають ситуації, коли дані не заносяться у файл або не обнуляються після Z-звіту (наприклад, звіт пробивається ключем або закінчується папір при пробитті чеку), в такому разі у X та Z звітах інформація про рух готівки (остання секція звіту) відобразиться некоректно. Тому потрібно буде відредагувати файл maria.dat, таким чином, щоб дані що в ньому знаходяться відповідали реальному руху готівки. Формат файлу:

 
typedef struct
{  
  DOUBLE BegSumm;              Початковий Залишок
 
  DOUBLE InMoneySumm;  Службове Внесення
 
  DOUBLE OutMoneySumm; Службове Вилучення
 
  DOUBLE InSumm;               Одержано Готiвки
 
  DOUBLE OutSumm;              Видано Готiвки
 
  DOUBLE EndSumm;              Кiнцевий залишок
 
  DOUBLE NoCashSumm;   Безготiвкова Оплата
 
  FILETIME CurrDate;
 
} CASH_INFO;

Разом з драйвером поставляється програма на Delphi з вихідним кодом для редагування цього файлу.

Для апаратів, що підтримують «Облік руху готівки на апараті» рекомендуємо користуватися автоматичним обліком готівки на апараті.


PayType

Тип Ціле

Визначає спосіб оплати: готівкою, кредитною карткою чи чеком. Значення (0) відповідає оплаті готівкою, (1).оплата чеком (чекова книжка), (2) оплата кредитною картокою. Працює лише у версії 2 і пізніших версіях касового апарату. По замовчуванню (0). При оплаті в кредит, знижка на весь чек ігнорується (для 2, 3 і 4 версії "Марія-301"). При продажу не за готівку, операції повернення не проводяться і закінчуються відміною чека.


Mode

Тип Ціле

Визначає набір службових повідомлень. Для типу 2 слід встановлювати цю властивість після відкриття чеку.

Номер набору(специфіка)

Повідомлення при реалізації

Повідомлення при поверненні

0-торгівля

-

"ПОВЕРНЕННЯ  ПО ЧЕКУ N..."

1-автостанції, вокзали

-

"ПОВЕРНЕННЯ  ПО ЧЕКУ N..."

2-послуги по кредитуванню

"ОДЕРЖАНО:"

"ВИДАНО:"

 


ExtendedX

Тип Логічний

Опція друку розширеного X-звіту (буде друкуватись в кінці звіту інформація про стан готівки: службові внесення, вилучення, повернення, гроші від клієнтів, сума готівки по касі). По замовчуванню встановлено в FALSE.


PathName

Тип Стрічка

Вказує шлях до файлів протоколу помилок ЕККА (ecrprot.txt) та файлу даних про рух готівки (maria.dat). Якщо ця властивість не встановлена, то файли будуть збірігатися в активній директорії. Шлях вказується повністю, з завершуючим символом "\". Наприклад:

C:\MARIA301\

Важливо, щоб така директорія існувала, інакше ви отримаєте повідомлення про помилку. Ця властивість вказується до виклику метода InitEcr, інакше ця зміна буде неефективна

 


IsArtikulToFile

Тип Логічний

Дана властивість визначає, чи буде вестися облік артикулів, що передаються на ЕККА (див. останній параметр методу RegCheckPos). Якщо властивість - TRUE, то ведеться взагалі облік артикулів драйвером, тобто зчитка/запис ід артикулів з файлу art2file.sys. Якщо FALSE – то код артикула береться такий, що передається з зовнішньої програми (див. останній параметр методу RegCheckPos). При значенні властивості TRUE, для розшифровки різних методів роботи з артикулами використовується властивість IsAlwaysNewArtikul.

По замовчуванню властивість - TRUE.

 


IsAlwaysNewArtikul

Тип Логічний

Використовується тільки коли IsArtikulToFile = TRUE. Вказує, яким чином вести облік(відповідність) артикулів на ЕККА-комп’ютер. TRUE – для кожного товару, що продається (кожен окремий продаж) генерується новий послідовний унікальний код артикула. Якщо FALSE – то облік артикулів ведеться страндартно, тобто для кожного товару шукається вже існуючий код на апараті, якщо він є – то товар передається на апарат з існуючим кодом, а якщо немає – то для такого товару створюється новий код артикула.  По замовчуванню властивість - FALSE.

 


Приклад*

Приклад програми на мові VisualBasic:

Dim mary As Object 'оголошення об'єкту

Set mary = CreateObject("MaryServer.MaryComponent.1") 'створення посилання на COM-інтерфейс
mary.InitEcr 2, 4, 57600 'ініціалізація касового апарату

mary.SetVat 1, 20 'встановлення ставки податку
mary.SetVatType 0 'встановлення типу ставки податку
mary.OpenCheck "Чек N1" 'відкриття чеку

mary.RegCheckPos "Цукор пісок", "Розширена назва", 2.34, 3.763, 0, 1, 0, 0, 1 'пробиття товарної позиції
mary.RegCheckPos "Вода Віні", "Розширена назва", 2.1, 2, 1, 1, 0, 0, 2
mary.CloseCheck "Кінець чеку", 20, -10 'закриття чеку

mary.CloseEcr 'закриття з'єднання

 

Приклад на 1С

// створити ссилку на СОМ-інтерфейс
mary=СоздатьОбъект("MaryServer.MaryComponent.1");
// тепер можна викликати методи СОМ-інтерфейсу
// виконуємо ініціалізацію касового апарату

mary.InitEcr(2, 3, 57600 );
// тепер можна проводити операції з ЕККА
mary.SetVat(1, 20 );
mary.SetVatType(0);    //то якщо ПДВ вкладений
// відкрити товарний чек
mary.OpenCheck("Заголовок");
// пробити товарну позицію
mary.RegCheckPos("Цукор пісок", "Розширена назва", 2.34, 3.763, 0, 1, 0, 0, 1);
// і ще одну
mary.RegCheckPos("Вода Віні", "Розширена назва", 2.1, 2, 1, 1, 0, 0, 2);
// закрити чек
mary.CloseCheck("ДЯКУЄМО ЗА ПОКУПКУ", 0, 0);
// закрити з’
єднання з ЕККА 
mary.CloseEcr();
// звільнити СОМ-інтерфейс
mary = 0;

 

Щоби підключити драйвер до програми на Дельфі, потрібно:

 

1.спочатку підключити бібліотеку    ComObj

 

uses

    ComObj;

 

2. потім оголосити змінну (чи як проперть)

 

mary: OleVariant;

 

3. після цього створити ссилку на об'єкт

 

mary := CreateOleObject('MaryServer.MaryComponent.1');

 

4. Далі до об'єкту можна звертатися наступним чином:

 

mary.InitEcr(2, 8, 57600 );

і т.д.

 


Важливо       – даний приклад призначений для більш швидшого розуміння принципу роботи драйверу, послідовності виклику його методів та властивостей для елементарної операції друку чеку. Але це не означає, що якщо його скопіювати у власне середовище, то за допомогою даного прикладу Ви відразу пробєте чек на фіскальному принтері. Адже на Вашому ЕККА можуть бути інші налаштування, відмінні від тих, що встановлюється в даному прикладі, а саме: тип ПДВ (накладений чи вкладений), ставка ПДВ (20% чи 0% чи ще якась), даний код товару може вже використовуватися для іншого артикула тощо.

Тому, рекомендуємо наступні кілька кроків для оптимального початку роботи:

·    Перед тим, як забирати ЕККА з сервісного центру, попросити запрограмувати на ньому потрібні Вам типи та значення ПДВ.

·    Уважно ознайомитися з документацією та вірно встановити тип та ставки ПДВ.

·    Прочитати властивості та визначитися з методом роботи з артикулами ЕККА.


 © Abacus Lviv 2000-2006 All rights reserved

По технічних питаннях звертатись до Олександра Загарюка

e-mail: abak@svitonline.com , phone (032) 294-92-96