BG Development


Страници: (13) [1] 2 3 ... последна »  ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> Delphi и фискален принтер
Penjurov
Публикувано на: 12-09-2010, 12:56
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 39
Регистриран на: 18.04.06



Здравейте,

Имам фискален принтер Datecs FP60 и се да направя автоматично изкарване на фискалните бонове. За връзка през Com port-a към принтера ползвам компонент Cportlib, но това няма пряка връзка към въпроса ми. Открих една тема в друг български форум относно връзка с матричен принтер и ползвах функцията на колегата за изчисляване на BCC, като тя си работи идеално.

Успешно отварям фискален бон чрез подаване на :

CODE
ComPort.WriteStr(FormatPacket($30,'1,0000,1'));


Успешно и затварям фискалния бон чрез
1) Изчисляване на сбор(тотал)
CODE
ComPort.WriteStr(FormatPacket($35,''));


2) Затваряне на бона
CODE
ComPort.WriteStr(FormatPacket($38,''));


Проблема идва при регистриране на продажба между тях.... Ако реша да печатам свободен фискален текст :
CODE
ComPort.WriteStr(FormatPacket($36,'Тест'));


, няма никакъв проблем, но при Регистриране на продажба(стока). И по-точно областта за данни на командата. Във файла за описание на командите е дадено, че областта за данни на команда Регистриране на продажба трябва да съдържа следните елементи :

[<L1>][<Lf><L2>]<Tab><TaxCd><[Sign]Price>[*<Qwan>][,Perc|;Abs]
или
[<L1>][<Lf><L2>]<Tab><Dept><Tab><[Sign]Price>[*<Qwan>][,Perc|;Abs]
, като

L1 Текст до 30 байта съдържащ ред, описващ продажбата
Lf Един байт със съдържание 0Ah.
L2 Текст до 30 байта съдържащ втори ред, описващ продажбата
Tab Един байт със съдържание 09h.
TaxCd Един байт съдържащ буквата показваща видът на данъка (‘А’, ‘Б’, ‘В’, ...). Има
ограничение зависещо от параметъра Enabled_Taxes, който се установява при
задаването на данъчните ставки в команда 83.
Dept Номер на департамент. Цяло число от 1 до 60 включително. Продажбата се
причислява към данъчната група, с която е асоцииран департаментът при
програмирането му.
Sign Един байт със стойност ‘-‘.
Price Това е единичната цена и е до 8 значещи цифри.
Qwan Незадължителен параметър, задаващ количеството на стоката. По подразбиране е
1.000. Дължина до 8 значещи цифри (не повече от 3 след десетичната точка).
Произведението Price*Qwan се закръгля от принтера до зададения брой
десетични знаци и също не трябва да надхвърля 8 значещи цифри.
Perc Това е незадължителен параметър, показващ стойността на надбавката или
отстъпката (в зависимост от знака) в проценти върху текущата продажба.
Допустими стойности са от -99.00 % до 99.00 %. Приемат се до 2 десетични знака.
Abs Това е незадължителен параметър, показващ стойността на надбавката или
отстъпката (в зависимост от знака) като сума. Не е допустима отстъпка със
стойност по-голяма от стойността на продажбата.

Това което аз съм пробвал е вариант 2(без TaxCd) :
CODE
ComPort.WriteStr(FormatPacket($31,'Кока,'+Lf+',Кола,'+TAB+',1,'+TAB+',-,0.01'));


, като
Lf и TAB са ми предварително зададени константи :

CODE
Const
 Lf    = #$0A;
 ТAB = #$09;


Уж съм спазил Областта за данни, ама не.......и тотално забих icon_smile.gif

Молбата ми е ако някой, някога се е занимавал с подобно нещо и има идея да помогне с тази част icon_smile.gif))

Благодаря предварително!

Това мнение е било редактирано от Penjurov на 12-09-2010, 12:58


--------------------
Ne varietatem timeamus
PMEmail Poster
Top
wqw
Публикувано на: 12-09-2010, 13:35
Quote Post


Group Icon
Име: Владимир Висулчев
Група: VIP
Ранг: Почетен член

Мнения: 6148
Регистриран на: 10.06.04



Според мен си прекалил със запетайки в командата. Къде в спецификацията видя тези запетайки? В момента подаваш Кока,\n,Кола,\t,1,\t,-,0.01 вместо Кока\nКола\t1\t-0.01 (Btw, имаш ли department 1 настроен?)

Също, като подаваш отрицателна цена принтера изписва "КОРЕКЦИЯ" и отдолу реда. Работата е, че до този момент трябва да имаш натрупана достатъчна стойност, така че след корекцията стойността на бона да не е отрицателна. Просто във фискалната памет не могат да се записват бонове с отрицателна стойност по закон.

cheers,
</wqw>


--------------------
PMEmail PosterUsers Website
Top
Penjurov
Публикувано на: 12-09-2010, 14:38
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 39
Регистриран на: 18.04.06



Златен да си icon_smile.gif Не знам защо съм се подвел от областта на данни за отваряне на бона, където си има запетайки като разделител и съм решил, че и тук трябва да е така.

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

С дадената програма от диска InitFP60BG проверих, че департамента не е програмиран. За това използвах другия вариант с буквата показваща вида на данъка :Р и всичко стана тип топ icon_smile.gif

Много благодаря за бързия и ползотворен отговор!

Поздрави!!!

P.S.
Това е кода, ако на някой му трябва icon_smile.gif
CODE
ComPort.WriteStr(FormatPacket($31,'Кока'+Lf+'Кола'+TAB+'Б0.01'));


--------------------
Ne varietatem timeamus
PMEmail Poster
Top
Penjurov
Публикувано на: 12-09-2010, 14:46
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 39
Регистриран на: 18.04.06



И веднага нов проблем :Р Пиша преди да се видял, че е приключило и да си си казал отървах се от този icon_lol.gif

Проблема сега е при изкарване на дневния отчет. Според Специализацията трябва да бъде така :

45h (69) ДНЕВЕН ФИНАНСОВ ОТЧЕТ
Област за данни: [<Option>[N][A]]
Отговор: Closure,FM_Total,TotA,TotB,TotC,TotD,TotE,TotF,TotG,TotH
Option Незадължителен параметър, управляващ вида на генерирания отчет:
‘0’ Отпечатва се Z-отчет. Разпечатката завършва с надпис “ФИСКАЛЕН
БОН”.
‘2’ Прави се дневен финансов отчет без нулиране (т. е. не се извършва запис във
фискалната памет и нулиране на регистрите). Разпечатката завършва с лого
“СЛУЖЕБЕН БОН”.
N Наличието на този символ в края на данните забранява изчистването на натрупаните
данни по оператори при отчет с нулиране.
A Наличието на този символ в края на данните забранява изчистването на натрупаните
данни от продажби на артикули при отчет с нулиране.
Closure Номер на фискалния запис - 4 байта.
FM_Total Сумата от всички продажби без ДДС - 12 байта със знак
TotX Сумите по всяка от данъчните групи ‘А’, ‘Б’, ‘В’, … - 12 байта със знак.
Командата с опция ‘0’ (Z-отчет) трябва да се изпълни непосредствено след печат и изтриване на
контролната лента. Ако в контролната лента има данни, командата е недопустима. Дневен отчет без
нулиране може да се предизвика и чрез задържането на бутон <FEED> при включване на принтера до
третия звуков сигнал.

Аз пробвах следните неща :
CODE
ComPort.WriteStr(FormatPacket($45,'')); - пише че Option е незадължително поле, та пробвах без нищо.
ComPort.WriteStr(FormatPacket($45,'0')); - тук с опит за нулиране
ComPort.WriteStr(FormatPacket($45,'2')); - тук без....
ComPort.WriteStr(FormatPacket($45,'0N'));


Нищо от тях дори и не предизвика интерес в принтера icon_smile.gif Просто си стоеше и тъпо ме гледаше(или май аз него).

Идея?

Благодаря предварително!


--------------------
Ne varietatem timeamus
PMEmail Poster
Top
Penjurov
Публикувано на: 12-09-2010, 15:03
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 39
Регистриран на: 18.04.06



Интересното е че пробвах и :

68h (105) ОТЧЕТ ОПЕРАТОРИ
Област за данни: Няма данни
Отговор: Няма данни
Разпечатва се информация за продажбите по оператори. За всеки оператор се отпечатва името, номера,
броя фискални бонове, отстъпки, надбавки, отстъпки, корекции и натрупаните суми.

, което дори няма област на данни и се извиква просто номера му...но отново нищо, явно изпускам нещо генерално и важно...продължавам да чета, дано пък успея да го намеря, ако някой тук не успее да подскаже icon_smile.gif

Поздрави


--------------------
Ne varietatem timeamus
PMEmail Poster
Top
wqw
Публикувано на: 12-09-2010, 15:38
Quote Post


Group Icon
Име: Владимир Висулчев
Група: VIP
Ранг: Почетен член

Мнения: 6148
Регистриран на: 10.06.04



Най-вероятно имаш отворен фискален/служебен бон. Фискалните бонове се отпечатват все едно са в транзакция, т.е. begin fiscal bon, print, print, ..., commit fiscal bon или rollback fiscal bon.

Ако имаш "outstanding" (неприключен) бон повечето команди връщат грешка. В тази връзка, трябва да си подобриш error handling-а, щеше веднага да се ориентираш какво ти отговаря принтера (той не те гледа тъпо:-))

cheers,
</wqw>


--------------------
PMEmail PosterUsers Website
Top
Penjurov
Публикувано на: 12-09-2010, 17:56
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 39
Регистриран на: 18.04.06



icon_smile.gif Да, тъпото гледане е предимно(изцяло) от моя страна icon_smile.gif))

Но в случая няма отворен бон...нито фискален, нито служебен. Винаги го пробвам след приключване на такъв, а и след това нямам проблем на отваряне на нов бон(ако не съм приключил предишния няма да ми позволи). Няма проблем при ваденето на отчет от тяхната си програма(тази на диска), нито чрез задържане на копче Feed. Пробвах да извадя Отчет по артикули(макар че нямам въведени такива). Отчета излиза, като разбира се ми казва, че нямам артикули, но поне реагира icon_smile.gif

Благодаря за помощта днес icon_smile.gif Ще го мъча, пък дано излезе нещо icon_smile.gif)

Поздрави и приятна вечер!


--------------------
Ne varietatem timeamus
PMEmail Poster
Top
JanBirdX
Публикувано на: 13-09-2010, 12:32
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 1656
Регистриран на: 21.02.05



Пробвай първо да пуснеш команда 0x78 (работа с електроната лента) с под команда "PL" (печат...) после пак 0x78 с под команда "Е"(изчистване) и тогава Z отчета.
PMEmail Poster
Top
wqw
Публикувано на: 13-09-2010, 13:24
Quote Post


Group Icon
Име: Владимир Висулчев
Група: VIP
Ранг: Почетен член

Мнения: 6148
Регистриран на: 10.06.04



QUOTE (JanBirdX @ 13-09-2010, 13:32)
Пробвай първо да пуснеш команда 0x78 (работа с електроната лента) с под команда "PL" (печат...) после пак 0x78 с под команда "Е"(изчистване) и тогава  Z отчета.

Това някаква нова версия на протокола ли е? Дай връзка да видим, че ми стана интересно.

Аз ползвам FP 3530-05 Command.pdf за reference.

cheers,
</wqw>


--------------------
PMEmail PosterUsers Website
Top
JanBirdX
Публикувано на: 13-09-2010, 13:35
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 1656
Регистриран на: 21.02.05



Малко за раличните принтери се различава портокола.

Това мнение е било редактирано от JanBirdX на 13-09-2010, 13:36

Прикачен файл ( Брой сваляния: 2298 )
Прикачен файл  FP300_1000_02_Command.pdf
PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (13) [1] 2 3 ... последна » Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0