🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.os.linux.programowanie
7 messages
7 total messages Started by emanuel.koczwara Sat, 22 Jan 2011 14:18
Sterowniki do drukarki fiskalnej Posnet Thermal 1.02 (linux, windows)
#72127
Author: emanuel.koczwara
Date: Sat, 22 Jan 2011 14:18
12 lines
1690 bytes
Witam,

    Zapraszam do testowania i rozwijania biblioteki/sterownika do
obsługi drukarki fiskalnej Posnet używającej protokołu Thermal 1.02
(port szeregowy). Biblioteka jest testowana pod linuxem, ale powinna
działać na każdej platformie. Bardzo przydadzą się programiści z
dostępem do drukarki przed fiskalizacją.

    http://gitorious.org/posnet-thermal

Pozdrawiam,
Emanuel
Re: Sterowniki do drukarki fiskalnej Posnet Thermal 1.02 (linux, windows)
#72128
Author: zoom
Date: Sun, 23 Jan 2011 12:18
36 lines
1909 bytes
Dnia Sat, 22 Jan 2011 06:18:35 -0800 (PST), emanuel.koczwara@gmail.com
napisał(a):

> Witam,
> 
>     Zapraszam do testowania i rozwijania biblioteki/sterownika do
> obsługi drukarki fiskalnej Posnet używającej protokołu Thermal 1.02
> (port szeregowy). Biblioteka jest testowana pod linuxem, ale powinna
> działać na każdej platformie. Bardzo przydadzą się programiści z
> dostępem do drukarki przed fiskalizacją.
> 
>     http://gitorious.org/posnet-thermal
tak bez testowania (tylko przejrzenie kodu)
Wysyłając na drukarkę linię paragonu z VAT, zakładasz, że do procedury
dostaniesz wartości A,B,C,D,E,F,G - błąd 

Drukarka1 (dla uproszczenia trzy stawki)
A - 23%
B - 8%
C - 5%
D - 0%
Drukarka2 (dla uproszczenia trzy stawki)
A - 23%
B - 8%
C - 0%
D - 5%

Teraz wysyłasz "produkt A", vat 5% - to jaki kod przypisujesz wysyłanej
stawce C czy D?

Musisz odwzorować aktualną wartość na stawki zapisane w drukarce -
informacje kasowe.

-- 
pozdrawiam
piotr
Re: Sterowniki do drukarki fiskalnej Posnet Thermal 1.02 (linux, windows)
#72129
Author: emanuel.koczwara
Date: Sun, 23 Jan 2011 13:37
22 lines
2298 bytes
Witam,

    Piotrze, każda drukarka ma zaprogramowane różne stawki VAT.
Procedura drukująca linię paragonu oczekuje na string A, B, C, D, E, F
lub G:

 if(vat != "A" && vat != "B" && vat != "C" && vat != "D" && vat != "E"
&& vat != "F" && vat != "G")
     throw BadVATType(vat);

    Nie podaje się wartości procentowej. Użytkownik jest
odpowiedzialny za podanie właściwej litery. W aplikacji robię tak, że
w pliku konfiguracyjnym mam przypisane wartości procentowe do liter -
odpowiednio jak jest zaprogramowane w drukarce. W bazie danych
produkty mają przypisane procentowe wartości. Podczas drukowania linii
paragonu odwzorowuję wartości procentowe na litery. W ten sposób,
jeśli zostanie podłączona inna drukarka - wystarczy zmienić
konfigurację stawek w pliku konfiguracyjnym - wszystko będzie pięknie
działać jak trzeba.

Pozdrawiam,
Emanuel
Re: Sterowniki do drukarki fiskalnej Posnet Thermal 1.02 (linux, windows)
#72130
Author: zoom
Date: Sun, 23 Jan 2011 16:27
37 lines
2458 bytes
Dnia Sun, 23 Jan 2011 05:37:16 -0800 (PST), emanuel.koczwara@gmail.com
napisał(a):

> Witam,
> 
>     Piotrze, każda drukarka ma zaprogramowane różne stawki VAT.
> Procedura drukująca linię paragonu oczekuje na string A, B, C, D, E, F
> lub G:
> 
>  if(vat != "A" && vat != "B" && vat != "C" && vat != "D" && vat != "E"
> && vat != "F" && vat != "G")
>      throw BadVATType(vat);
> 
>     Nie podaje się wartości procentowej. Użytkownik jest
> odpowiedzialny za podanie właściwej litery. W aplikacji robię tak, że
> w pliku konfiguracyjnym mam przypisane wartości procentowe do liter -
> odpowiednio jak jest zaprogramowane w drukarce. W bazie danych
> produkty mają przypisane procentowe wartości. Podczas drukowania linii
> paragonu odwzorowuję wartości procentowe na litery. W ten sposób,
> jeśli zostanie podłączona inna drukarka - wystarczy zmienić
> konfigurację stawek w pliku konfiguracyjnym - wszystko będzie pięknie
> działać jak trzeba.
> 

właśnie o to mi chodzi....
> W bazie danych
> produkty mają przypisane procentowe wartości. Podczas drukowania linii
> paragonu odwzorowuję wartości procentowe na litery.
jak odwzorowujesz procentowe stawki na wartości znakowe A,B...

Podłączasz identyczny model drukarki, tyle, że drukarka zapasowa ma
odwrócone (zaprogramowane) stawki vat na pozycjach C,D - i nikt tu nie chce
zmieniać żadnego modelu?

-- 
pozdrawiam
piotr
Re: Sterowniki do drukarki fiskalnej Posnet Thermal 1.02 (linux, windows)
#72131
Author: emanuel.koczwara
Date: Sun, 23 Jan 2011 17:27
42 lines
2372 bytes
Witam,

    W pliku konfiguracyjnym aplikacji mam zdefiniowane stawki vat,
jakie są zaprogramowane w drukarce:

[printer]
vat_a=22.0
vat_b=7.0
vat_c=0.0
vat_d=3.0
vat_e=100.0
vat_f=100.0
vat_g=101.0

W aplikacji mam mapę:

std::map<double, std::string> vatRates;

do której są wczytywane dane z pliku konfiguracyjnego:

vatRates.insert(std::pair<double,std::string>(settings.value("vat_a").toDouble(),"A"));
vatRates.insert(std::pair<double,std::string>(settings.value("vat_b").toDouble(),"B"));
// ...

Dla każdej pozycji na paragonie:

std::string vat = vatRates.at(vatPercent);

Jeżeli podłączę drukarkę, która ma stawki vat zaprogramowane inaczej,
wystarczy zmienić w pliku konfiguracyjnym:

[printer]
vat_a=101.0
vat_b=100.0
vat_c=100.0
vat_d=3.0
vat_e=0.0
vat_f=7.0
vat_g=22.0

Pozdrawiam,
Emanuel
Re: Sterowniki do drukarki fiskalnej Posnet Thermal 1.02 (linux, windows)
#72132
Author: zoom
Date: Sun, 23 Jan 2011 17:40
75 lines
3808 bytes
Dnia Sun, 23 Jan 2011 09:27:08 -0800 (PST), emanuel.koczwara@gmail.com
napisał(a):

> Witam,
> 
>     W pliku konfiguracyjnym aplikacji mam zdefiniowane stawki vat,
> jakie są zaprogramowane w drukarce:
> 
> [printer]
> vat_a=22.0
> vat_b=7.0
> vat_c=0.0
> vat_d=3.0
> vat_e=100.0
> vat_f=100.0
> vat_g=101.0
> 
> W aplikacji mam mapę:
> 
> std::map<double, std::string> vatRates;
> 
> do której są wczytywane dane z pliku konfiguracyjnego:
> 
> vatRates.insert(std::pair<double,std::string>(settings.value("vat_a").toDouble(),"A"));
> vatRates.insert(std::pair<double,std::string>(settings.value("vat_b").toDouble(),"B"));
> // ...
> 
> Dla każdej pozycji na paragonie:
> 
> std::string vat = vatRates.at(vatPercent);
> 
> Jeżeli podłączę drukarkę, która ma stawki vat zaprogramowane inaczej,
> wystarczy zmienić w pliku konfiguracyjnym:
> 
> [printer]
> vat_a=101.0
> vat_b=100.0
> vat_c=100.0
> vat_d=3.0
> vat_e=0.0
> vat_f=7.0
> vat_g=22.0
> 

Też tak można zrobić, ale jest to "zbyt eleganckie" rozwiązanie.
Zmuszamy użytkownika/administratora oprogramowania, aby wiedziała jak ma
ustawione stawki w drukarce i w systemie. Takie rzeczy załatwia się
automatycznie.
Wiem, ze na drukarkę musisz wysłać oznaczenia literowe stawek, takie
wymagania ma protokół. Powyższe rozwiązuje się w ten sposób, że pobierasz
informacje kasowe z drukarki fiskalnej. Jedyne odstępstwa jakie znalazłem
ma drukarka innova, dla której problematycznym jest określenie pozycji
stawki zwolnionej - ale to wyjątek. Komendę jest zunifikowana dla protokołu
thermal. Po odebraniu informacji kasowych, wiesz jaki procent vat jest
przyporządkowany do kodu znakowego, na tej podstawie decydujesz jaką literę
przypisać do aktualnie wysyłanej stawki liczbowej. W ten sposób użytkownik
nie martwi się jak ma ustawione stawki w drukarce, a jak w programie -
najczęściej to laicy i nie wiedzą nic ponad to że wychodzi paragon i trzeba
drukować raport dobowy.

Znam sofcik i to dużej firmy, że drukowali np.
Soczek marchwiowy w stawce 7%, na drukarce drukowało się B (7%), zmienili
drukarkę, drukują soczek marchwiowy w stawce 7% a na drukarce wychodzi w
stawce C (3%).

Poza tym dzięki temu rozwiązaniu możesz przed wydrukowaniem paragonu
określić, czy wszystkie pozycje które będą wysłane na drukarkę mają
odpowiednio zaprogramowane stawki w drukarce... Np masz Ziemniaki w stawce
3%, a serwisant nie zaprogramował tego w drukarce (błąd serwisanta,
użytkownik\właściciel stwierdził, że nie będzie sprzedawał w tej stawce,
ale sytuacja sie zmieniła).

-- 
pozdrawiam
piotr
Re: Sterowniki do drukarki fiskalnej Posnet Thermal 1.02 (linux, windows)
#72133
Author: emanuel.koczwara
Date: Sun, 23 Jan 2011 18:28
7 lines
1743 bytes
Witam,

    Oczywiście, takie rozwiązanie będzie idealne. Muszę tylko
zaimplementować pobieranie informacji kasowych z drukarki.

Pozdrawiam,
Emanuel
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads