for flooders
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум
   Л и с о в о д ы   в с е х   с т р а н,  о б ъ е д и н я й т е с ь !!!  

Список Форумов  :: Visual Foxpro, Foxpro for DOS
   :: Помощь сайту :: 

Re: Новая касса АТОЛ -30Ф
Tokarev

Сообщений: 207
Откуда: Заречный
Дата: 30.05.18 13:22:37ОтветитьЦитировать
А можно рабочий пример пробития чека с методами
BeginItem();EndItem();
А то мне тоже необходимо
Ratings: 0 negative/0 positive

Re: Новая касса АТОЛ -30Ф
Василий

Сообщений: 663
Откуда: Москва
Дата: 30.05.18 19:09:18ОтветитьЦитировать
  
  // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //  
  // // // ---------- Чек прихода с отправкой электронного чека покупателю ---------- //  
  // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //  
    
  driver.NewDocument();  
    
  // Mode - Режим:  
  // 	0 - Выбора  
  // 	1 - Регистрации  
  // 	2 - Отчётов без гашения  
  // 	3 - Отчётов с гашением  
  driver.Mode = 1;  
  driver.SetMode();  
    
  // Записать должность и ФИО кассира  
  driver.AttrNumber = 1021;  
  driver.AttrValue = "Старший кассир Иванов И.И.";  
  driver.WriteAttribute();  
    
  // Записать ИНН кассира  
  driver.AttrNumber = 1203;  
  driver.AttrValue = "526317984689";  
  driver.WriteAttribute();  
    
  // CheckType - Тип чека:  
  // 	1 - Приход  
  // 	2 - Возврат прихода  
  // 	4 - Расход  
  // 	5 - Возврат расхода  
  // 	7 - Коррекция прихода  
  // 	9 - Коррекция расхода  
  driver.CheckType = 1;  
  // CheckMode - Режим формирования чека:  
  // 	0 - только в электронном виде без печати на чековой ленте  
  // 	1 - печатать на чековой ленте  
  driver.CheckMode = 1;  
  driver.OpenCheck();  
    
  // Применяемая система налогооблажения в чеке:  
  // 	ОСН - 1  
  // 	УСН доход - 2  
  // 	УСН доход-расход - 4  
  // 	ЕНВД - 8  
  // 	ЕСН - 16  
  // 	ПСН - 32  
  driver.AttrNumber = 1055;  
  driver.AttrValue = 1;  
  driver.WriteAttribute();  
    
  // Запись контакта покупателя для отправки электронного чека  
  driver.AttrNumber = 1008;  
  driver.AttrValue = "+79091235566";  
  driver.WriteAttribute();  
    
  // Регистрация товара или услуги  
  driver.BeginItem();  
  driver.Name = "Детсткое питание Тёма";  
  driver.Price = 47.70;  
  driver.Quantity = 6;  
  // Если значение |Summ - Price * Quantity| > 0.01 , то ККТ посчитает, что была скидка и будет при необходимости преобразовывать позицию, разделяя её на 2  
  driver.Summ = 286.20;  
  // Признак предмета расчёта. Свойство ItemType может принимать значения:  
  // 	1 - товар, за исключением подакцизного товара  
  // 	2 - подакцизный товар  
  // 	3 - работа  
  // 	4 - услуга  
  // 	5 - приём ставок при деятельность по организации и проведению азартных игр  
  // 	6 - выплата выигрышей в азартных играх  
  // 	7 - реализация лотерейных билетов или ставок при деятельность по организации и проведению лотерей  
  // 	8 - выплата выигрышей в лотереях  
  // 	9 -  прав на использование результатов интеллектуальной деятельности или средств индивидуализации  
  // 	10 -  аванс, задаток, предоплата, кредит, взносе в счет оплаты, пени, штраф, вознаграждение, бонус и иной аналогичный предмет расчета  
  // 	11 -  предмет расчета, состоящий из предметов, каждому из которых может быть присвоено значение от 0 до 10 (набор)  
  // 	12 -  предмет расчета, не относящийся к предметам расчета, которым может быть присвоено значение от 0 до 11  
  driver.ItemType = 1;  
  // Признак способа расчёта. Свойство PaymentMode может принимать значения:  
  // 	1 - Полная предварительная оплата до момента передачи предмета расчета  
  // 	2 - Частичная предварительная оплата до момента передачи предмета расчета  
  // 	3 - Аванс  
  // 	4 - Полная оплата, в том числе с учетом аванса (предварительной оплаты) в момент передачи предмета расчета  
  // 	5 - Частичная оплата предмета расчета в момент его передачи с последующей оплатой в кредит  
  // 	6 - Передача предмета расчета без его оплаты в момент его передачи с последующей оплатой в кредит  
  // 	7 - Оплата предмета расчета после его передачи с оплатой в кредит (оплата кредита)  
  driver.PaymentMode = 1;  
  driver.Department = 0;  
  // TaxTypeNumber - Номер налога:  
  // 	0 - Налог из секции  
  // 	1 - НДС 0%  
  // 	2 - НДС 10%  
  // 	3 - НДС 18%   
  // 	4 - без НДС  
  // 	5 - НДС 10/110  
  // 	6 - НДС 18/118  
  driver.TaxTypeNumber = 2;  
  // Способ исчисления суммы налога. Доступные значения TaxMode:  
  // 	0 - налог расчитывается от суммы позиции  
  // 	1 - налог расчитывается от цены позиции  
  driver.TaxMode = 1;  
  // Сумма налога TaxSumm. Если передаётся 0, то ККТ считает самостоятельно по TaxTypeNumber и TaxMode. В противном случае в ОФД отправляется переданная сумма, но при значении настройки Т2Р1П114 бит 1 = 1 ККТ  бедет осуществлять контроль переданных данных, при чём контроль в будущем нельзя будет отключить (Русинова).  
  driver.TaxSumm = Math.round(47.70 * 10 / 110 * 100) / 100;   
  // Скидка больше не изменяет сумму позиции, теперь она просто добавляет информационную печать. Необходимо рассчитывать в кассовом ПО цену со скидкой, а информацию по начисленным скидкам печатать нефискальной печатью и не передавать скидку в ККМ, поэтому код для начисления скидки закомментирован  
  // driver.DiscountValue = 10;  
  // // DiscountType - Тип скидки:  
  // // 	0 - суммовая  
  // // 	1 - процентная  
  // driver.DiscountType = 0;  
  driver.EndItem();  
  driver.Caption = "В том числе скидка: 5.30";  
  driver.PrintString();  
  driver.Caption = "Цена без скидки: 53.00";  
  driver.PrintString();  
    
  driver.BeginItem();  
  driver.Name = "Коньяк Победа 0,5";  
  driver.Price = 813.50;  
  driver.Quantity = 1;  
  // Если значение |Summ - Price * Quantity| > 0.01 , то ККТ посчитает, что была скидка и будет при необходимости преобразовывать позицию, разделяя её на 2  
  driver.Summ = 813.50;  
  // Признак предмета расчёта. Свойство ItemType может принимать значения:  
  // 	1 - товар, за исключением подакцизного товара  
  // 	2 - подакцизный товар  
  // 	3 - работа  
  // 	4 - услуга  
  // 	5 - приём ставок при деятельность по организации и проведению азартных игр  
  // 	6 - выплата выигрышей в азартных играх  
  // 	7 - реализация лотерейных билетов или ставок при деятельность по организации и проведению лотерей  
  // 	8 - выплата выигрышей в лотереях  
  // 	9 -  прав на использование результатов интеллектуальной деятельности или средств индивидуализации  
  // 	10 -  аванс, задаток, предоплата, кредит, взносе в счет оплаты, пени, штраф, вознаграждение, бонус и иной аналогичный предмет расчета  
  // 	11 -  предмет расчета, состоящий из предметов, каждому из которых может быть присвоено значение от 0 до 10 (набор)  
  // 	12 -  предмет расчета, не относящийся к предметам расчета, которым может быть присвоено значение от 0 до 11  
  driver.ItemType = 2;  
  // Признак способа расчёта. Свойство PaymentMode может принимать значения:  
  // 	1 - Полная предварительная оплата до момента передачи предмета расчета  
  // 	2 - Частичная предварительная оплата до момента передачи предмета расчета  
  // 	3 - Аванс  
  // 	4 - Полная оплата, в том числе с учетом аванса (предварительной оплаты) в момент передачи предмета расчета  
  // 	5 - Частичная оплата предмета расчета в момент его передачи с последующей оплатой в кредит  
  // 	6 - Передача предмета расчета без его оплаты в момент его передачи с последующей оплатой в кредит  
  // 	7 - Оплата предмета расчета после его передачи с оплатой в кредит (оплата кредита)  
  driver.PaymentMode = 1;  
  driver.Department = 0;  
  // TaxTypeNumber - Номер налога:  
  // 	0 - Налог из секции  
  // 	1 - НДС 0%  
  // 	2 - НДС 10%  
  // 	3 - НДС 18%   
  // 	4 - без НДС  
  // 	5 - НДС 10/110  
  // 	6 - НДС 18/118  
  driver.TaxTypeNumber = 3;  
  // Способ исчисления суммы налога. Доступные значения TaxMode:  
  // 	0 - налог расчитывается от суммы позиции  
  // 	1 - налог расчитывается от цены позиции  
  driver.TaxMode = 1;  
  // Сумма налога TaxSumm. Если передаётся 0, то ККТ считает самостоятельно по TaxTypeNumber и TaxMode. В противном случае в ОФД отправляется переданная сумма, но при значении настройки Т2Р1П114 бит 1 = 1 ККТ  бедет осуществлять контроль переданных данных, при чём контроль в будущем нельзя будет отключить (Русинова).  
  driver.TaxSumm = Math.round(813.50 * 18 / 118 * 100) / 100;   
  // Скидка больше не изменяет сумму позиции, теперь она просто добавляет информационную печать. Необходимо рассчитывать в кассовом ПО цену со скидкой, а информацию по начисленным скидкам печатать нефискальной печатью и не передавать скидку в ККМ, поэтому код для начисления скидки закомментирован  
  // driver.DiscountValue = 10;  
  // // DiscountType - Тип скидки:  
  // // 	0 - суммовая  
  // // 	1 - процентная  
  // driver.DiscountType = 0;  
  driver.EndItem();  
    
  // Отброс копеек (округление чека без распределения по позициям). Скидка на чек доступна только для его округления до рубля. Таким образом недоступны: надбавки, назначение "на позицию", процентные значения.  SummCharge(), PercentsCharge(), PercentsDiscount () и ResetChargeDiscount () более недоступны  
  // Destination - Назначение скидки:  
  // 	0 - на чек  
  // 	1 - на позицию (недоступно)  
  driver.Destination = 0;  
  driver.Summ = 0.70;  
  driver.SummDiscount();  
    
  // Нефискальная печать с информацией по скидкам чека  
  driver.Caption = "--Скидки по чеку--";  
  driver.PrintString();  
  driver.Caption = "Сумма чека без скидок 1131.50";  
  driver.PrintString();  
  driver.Caption = "Скидки по карте: 31.80";  
  driver.PrintString();  
  driver.Caption = "Округление: 0.70";  
  driver.PrintString();  
    
  // TypeClose - Тип оплаты:  
  // 	0 - Наличными  
  // 	1 - Электронными средствами платежа  
  driver.TypeClose = 0;  
  driver.Summ = 1500.00;  
  driver.Payment();  
  driver.CloseCheck();
Ratings: 0 negative/0 positive

Re: Новая касса АТОЛ -30Ф
Аспид

Сообщений: 3136
Откуда: Москва
Дата: 19.06.18 14:57:05ОтветитьЦитировать
Кто нибудь устанавливал 9й драйвер?
И еще, перепрошили на 1.05 шрифт самого чека стал очень мелким. И никаким способом, увеличить не удается(


------------------
Ratings: 0 negative/0 positive

Re: Новая касса АТОЛ -30Ф
Василий

Сообщений: 663
Откуда: Москва
Дата: 19.06.18 15:03:50ОтветитьЦитировать
Аспид
Кто нибудь устанавливал 9й драйвер?
Я бы рекомендовал сразу 10, в режиме Web-сервера.
По словам сотрудников Атол развивать они будут именно десятую версию драйвера.

Аспид
И еще, перепрошили на 1.05 шрифт самого чека стал очень мелким
У нас изменений не заметил.
Ratings: 0 negative/0 positive

Re: Новая касса АТОЛ -30Ф
Аспид

Сообщений: 3136
Откуда: Москва
Дата: 19.06.18 15:40:31ОтветитьЦитировать
Василий
У нас изменений не заметил.
Может кто прошивал, что накосячили(
Сейчас не до них, позже звякну.
Главное отчеты печатаются нормально, а тело чека, что формирую, малюсенькое стало.
И их настройки, как не меняю шрифты - все одно и то же.
Василий
Я бы рекомендовал сразу 10, в режиме Web-сервера.
А может с 8.14 проживем? (вопрос как долго)


------------------
Ratings: 0 negative/0 positive

Re: Новая касса АТОЛ -30Ф
Василий

Сообщений: 663
Откуда: Москва
Дата: 19.06.18 15:50:07ОтветитьЦитировать
Аспид
А может с 8.14 проживем? (вопрос как долго)
Минимум до конца года.
Проверьте все ли хорошо со ставками НДС, после перепрошивки. У них была карусель индексами ставок.
С версии 8.16.1 вроде устаканилось



Исправлено: Василий, 19.06.18 15:50
Ratings: 0 negative/0 positive

Re: Новая касса АТОЛ -30Ф
Аспид

Сообщений: 3136
Откуда: Москва
Дата: 19.06.18 16:03:51ОтветитьЦитировать
Василий
Проверьте все ли хорошо со ставками НДС, после перепрошивки.
У нас всегда 1 НДС.
Попробовал сейчас, пишет
Сумма НДС 18/118 4140.00

Сумма верная, остальные слова, не знаю, надо у бухов спросить, что раньше было, вряд ли кто помнит)))

Про 10й почитал на форуме Атола.
Как то грустно... и рановато, показалось.
Но перспективы рисуют радужные.
Вообще отвечающий там... он волонтер что ли? Бесплатно работает.


------------------
Ratings: 0 negative/0 positive

Re: Новая касса АТОЛ -30Ф
Аспид

Сообщений: 3136
Откуда: Москва
Дата: 21.06.18 08:56:38ОтветитьЦитировать
Действительно, беда с НДС. Должно стоять 18%, а стоит 18/118
Василий
С версии 8.16.1 вроде устаканилось
Не могу такой найти(
последний что нашел 8.16.03
Где взять нужный?
зы. Дошло. Буду пробовать.

НДС заработало. Восприняло настройку. Теперь пишет 18%
Шрифты, по прежнему неуправляемы(
Но вроде как всем по барабану (вчера в 5ке получил, таким же мелким)
Пожалуй и забью, до настойчивых просьб.


------------------




Исправлено: Аспид, 21.06.18 09:14
Ratings: 0 negative/0 positive

Re: Новая касса АТОЛ -30Ф
JekaIvanov

Сообщений: 17
Дата: 27.06.18 08:49:19ОтветитьЦитировать
Я для драйвера Атол 10-ой версии разработал DLL-обертку, которая, по сути,транслирует команды из Фокса в драйвер Атола и обратно, попутно преобразуя символы из одной кодировки в другую. Если кому-то интересно, могу выложить.
Ratings: 0 negative/0 positive

Re: Новая касса АТОЛ -30Ф
Василий

Сообщений: 663
Откуда: Москва
Дата: 27.06.18 09:02:51ОтветитьЦитировать
Интересно.
Ratings: 0 negative/0 positive

Re: Новая касса АТОЛ -30Ф
JekaIvanov

Сообщений: 17
Дата: 27.06.18 10:18:00ОтветитьЦитировать
Скачать можно здесь:
yadi.sk

В архиве:
AtolFox.dll - собственно обертка, разработана на MS Visual C++ 2015, необходимые файлы от Microsoft есть в архиве
FPTR10.dll - библиотека взаимодействия с драйвером от АТОЛа
atolfoxx.h - объявление констант, аналогичное АТОЛ
тестовый проект на Фоксе, который открывает смену, печатает чек на приход, чеки на внесение и изъятие средств, Х- и Z-отчеты.

все процедуры я назвал по аналогии с примерами из описания драйвера. несколько процедур - fptrXReport, fptrZReport, fptrGetErrorDescription, fptrCashierRegistration, fptrPrintString реализуют всю логику внутри. В остальном - работа аналогична представленной в описании от Атол (с++)

Не делал сервисный функционал (программирование ККМ). Не реализованы функции работы с массивами - libfptr_set_param_bytearray и libfptr_get_param_bytearray
Идеи и предложения принимаются.



Исправлено: JekaIvanov, 27.06.18 10:19
Ratings: 0 negative/1 positive

Re: Новая касса АТОЛ -30Ф
Аспид

Сообщений: 3136
Откуда: Москва
Дата: 27.06.18 12:02:26ОтветитьЦитировать
Интересно. Плюсанул
Но вот какой вопрос, совершенно без подкавырки.
Поскольку 10 не ставил.
В чем смысл этой прослойки между драйвером и ПО?

JekaIvanov
попутно преобразуя символы из одной кодировки в другую.
Может в этом? Там что то с кодировкой не то?


------------------
Ratings: 0 negative/0 positive

Re: Новая касса АТОЛ -30Ф
Василий

Сообщений: 663
Откуда: Москва
Дата: 27.06.18 12:27:52ОтветитьЦитировать
Лично мне 10-ка понравилась тем что у нее появился WEb сервер и обмен можно организовать jSonaми.

Разработка JekaIvanov, на текущий момент, интересна из спортивного интереса.
Но не исключено что и ее буду использовать.
Ratings: 0 negative/0 positive

Re: Новая касса АТОЛ -30Ф
JekaIvanov

Сообщений: 17
Дата: 27.06.18 12:30:13ОтветитьЦитировать
Аспид
Интересно. Плюсанул
Но вот какой вопрос, совершенно без подкавырки.
Поскольку 10 не ставил.
В чем смысл этой прослойки между драйвером и ПО?

JekaIvanov
попутно преобразуя символы из одной кодировки в другую.
Может в этом? Там что то с кодировкой не то?

во-первых, АТОЛ уже не обещают поддержку 9 версий драйверов буквально со следующего года
во-вторых, я не смог разобраться с их web-сервером (буквально завтра надо уже сдавать проект, а в понедельник я получил аппарат для тестов)
в-третьих, dll Атола 10-ой версии работает с юникод символами. И я не смог добиться, чтобы фокс корректно переводил в юникод русские буквы, а переведенные фоксом латинские команды как-то странно отрабатывал их драйвер выдавая в логи "необработанные исключения", а меня осыпая ошибками.
в-четвертых, я не понял, как они работают с указателем на свою структуру и как это потом передать из фокса:

где-то так:
  
  libfptr_handle fptr;  
  libfptr_create(&fptr);

а где-то так:
  
  libfptr_print_text(fptr);

Глубоко разбираться было некогда
поэтому я и принял для себя решение сделать "обертку", которая все взаимодействие возьмет на себя, а мне оставит только командную часть.
Надо сказать, что это получилось достаточно быстро.
Ratings: 0 negative/0 positive

Re: Новая касса АТОЛ -30Ф
JekaIvanov

Сообщений: 17
Дата: 27.06.18 12:48:26ОтветитьЦитировать
Плюс попутно заворачиваю Атоловские структуры, вида
  
  libfptr_set_param_str(fptr, LIBFPTR_PARAM_COMMODITY_NAME, L"Товар");  
  libfptr_set_param_double(fptr, LIBFPTR_PARAM_PRICE, 100);  
  libfptr_set_param_double(fptr, LIBFPTR_PARAM_QUANTITY, 5.15);  
  libfptr_set_param_int(fptr, LIBFPTR_PARAM_TAX_TYPE, LIBFPTR_TAX_VAT0);  
  libfptr_registration(fptr);
в простые функции
  
  int fptrRegistrationX(char* name, double price, double quantity, double cost, int taxtype, int department, int ppr, int psr)



Исправлено: JekaIvanov, 27.06.18 12:59
Ratings: 0 negative/0 positive

Re: Новая касса АТОЛ -30Ф
Аспид

Сообщений: 3136
Откуда: Москва
Дата: 28.06.18 07:33:30ОтветитьЦитировать
JekaIvanov Все ясно.
И еще раз спасибо.
Судя по описанным сложностям, теперь у нас есть 2 пути из фокса, Прямо с их веб-сервером. И ваша длл.


------------------
Ratings: 0 negative/0 positive

Re: Новая касса АТОЛ -30Ф
Victoriacom

Сообщений: 29
Дата: 19.09.18 17:46:00ОтветитьЦитировать
По поводу мелкого шрифта.
Только при использовании теста драйвера 9.8!
Изменить номер шаблона с 2 на 1.



Исправлено: Victoriacom, 19.09.18 17:47
Ratings: 0 negative/0 positive



Извините, только зарегистрированные пользователи могут писать в этом форуме.

On-line: 40 cool1 of63  and Guests: 38


© 2000-2018 Fox Club 
Яндекс.Метрика