; z FAKTURA.INI nacitat: ; VelikostHlavicky - pocet radku v hlavicce ; z Tiskarna.INI nacitat: ; sekvence pro zhusteny tisk ; sekvence pro konec zhusteneho tisku ; sekvence pro tucny tisk ; sekvence pro konec tucneho tisku ; kodovani cestiny ; kdyby bylo kodovani cestiny jine, otestovat a doresit ramecky? ; DDT pokladní doklad - paragon ; verze z 21.10.2002 ; Autor: WinDUO Team Name('Dodací list na jehl.tiskárnu') Designed('Faktura') Author('Winduo Team','EMail: winduo@winduo.cz','http://www.winduo.com','http://www.winduo.cz') Descr('Dodací list - tisk na jehličkovou tiskárnu','(Určeno pro přímý tisk','- tiskárnu nutno mít zapnutou a nastavenou)') WNSType(-1); DeclareRec('Program') DeclareRec('Faktura') DeclareRec('Pohledavka'); GetBindRec('Pohledavka'); DeclareRec('RozpisFaktury') InitStatus(GetCountBindRec('Faktura'),'Vytvářím dodací list','k pohledávce č.'+Pohledavka.Doklad); ; ******* Otevření portu tiskárny ******* IniSoubor:String=DataPath+'PARAGON.INI' Port:String=ToChar(':',Trim(GetFromIni('PARAGON','Port','DUO.INI'))); Znaku:Integer=Val(GetFromIni('PARAM','Chars',IniSoubor)); Priznaky:Word=Val(GetFromIni('PARAM','Flags',IniSoubor)); if((Length(Port)=0) or (Znaku<=0)) begin Message('Nejdříve proveďte nastavení paragonu v hlavním menu / Nastavení / Nastavení paragonu',mb_IconStop); Exit; end; LocStr:String=GetFromIni('PARAGON','PortSet','DUO.INI'); if(Val(ToChar(',',LocStr))>0) begin Global Tiskarna:Port; LocStr=FromChar(',',LocStr); StrCom('Open(Tiskarna,'''+Port+''','+LocStr+')'); end else begin Global Tiskarna:TextFile; Rewrite(Tiskarna,Port,True); ;;;Rewrite(Tiskarna,WorkPath+'TEST.PRN',True); ladeni do souboru end; ;reset tiskarny Write(Tiskarna,#27+#64) ;**************************************************************************** ; Deklarace globálních proměnných pro podprogram tisku řádků faktury ;**************************************************************************** Global Max :Array[1..12] of Byte Global Sloupce :Word Global OdRadku :Word Global PocetRadku :Word Global Strana :Word Global VseVytisteno :Boolean ;Global FaktYPozice :Real ;y-souřadnice začátku textu ve fakture Global PreLineS :String Global LineChars :Byte Global Max5 :Array[0..15] of Byte Global JeFaktura :Boolean=True ;podle nastaveni tiskne ser.cisla nebo ne Global LineWidth:Word=64 Global LineStyle :Byte; {0=10CPI,1=12CPI,2=15CPI,3=17CPI,4=20CPI} Global 10CPI:String=#27+#80+#18 Global 12CPI:String=#27+#77+#18 Global 15CPI:String=#27+#103+#18 Global 17CPI:String=#27+#80+#15 Global 20CPI:String=#27+#77+#15 ;pro Epson FX-1170 15CPI=17CPI ;15CPI=17CPI+#27+#32+#4 ;test: ;Write(Tiskarna,10CPI) ;WriteLn(Tiskarna,'10CPI') ;Write(Tiskarna,12CPI) ;WriteLn(Tiskarna,'12CPI') ;Write(Tiskarna,15CPI) ;WriteLn(Tiskarna,'15CPI') ;Write(Tiskarna,#27+#64) ;Write(Tiskarna,17CPI) ;WriteLn(Tiskarna,'17CPI') ;END StatusWindowInCall(False) ;**************************************************************************** ;Deklarace lokálních promennych, nutno zadat podle formuláře ;**************************************************************************** ; upravit hodnoty podle formulaře: PocetVolnychShora:Byte=1; pocet volnych na zacatku stranky, netistitelne VelikostHlavicky:Byte=0; pocet radku, ktere zabira hlavicka. Na druhe strane se preskakuji MaxLines:Word=45 MaxLinesPril:Word=55 ;Global Diakritika:Word=Val(GetFromIni('PARAM','Diakritika',IniSoubor)); příklad načtení z INI souboru Global Diakritika:Word=2; nastavení kódování češtiny, kterou umí tiskárna podle tabulky (rámečky nutno odladit): ;:trans_Win1250=Word,0 ;:trans_Kamenicti=Word,1 ;:trans_PC852=Word,2 ;:trans_ASCII=Word,3 ;:trans_ISO8859_2=Word,4 LoadTranslateTab(Diakritika); ;FaktYPozice2:Real=120 ;y-souřadnice začátku textu v priloze ;YTabDPH:Real=250 ;y-souřadnice pozice pro tabulku rozpisu DPH PocetLevych:Byte; interni promenna, pocita, zda tisknout levy okraj u souctoveho ramecku LocS:String LocB:Byte LocBool:Boolean PocetPril:Byte; pocitadlo ICislo:LongInt LocB4:Boolean VetaP:LongInt if(Program.Sklady) begin DeclareRec('Sklad') DeclareRec('KeySklad10') end DeclareRec('SkupinovaOperace') DeclareRec('KeySkupinovaOperace2') Hlavicka:Faktura LocL:LongInt LocL2:LongInt LocStr:String LocStr2:String TiskDPH:Boolean TiskZaokr:Boolean=False; ridi, zda se tisklo 'Zaokrouhlene' TiskKUhr1:Boolean=False; ridi, zda priste tisknout prvni radek 'k uhrade' TiskKUhr2:Boolean=False; ridi, zda priste tisknout druhy radek 'k uhrade' TiskKUhr3:Boolean=False; ridi, zda priste tisknout treti radek 'k uhrade' GetBindRec('Hlavicka',0) GetBindRec('Pohledavka',0) GetBindRec('RozpisFaktury') TiskDPH=(Program.RezimDPH<>0) and (Hlavicka.Typ=0) ;**************************************************************************** ; Tisk hlavickovych udaju ;**************************************************************************** ;nastavení konec zhusteneho tisku SetTranslate(Tiskarna,True); LocB=0 While(LocB0)and(KeySkupinovaOperace2.CisDok=ICislo)) ;cyklus přes všechny věty se shodným interním číslem ; begin ; ReadRec(SkupinovaOperace,VetaP) ; LoadTranslateTab(0); ; Write(Tiskarna,DupChar(' ',24)+'ł') ; LoadTranslateTab(Diakritika); ; LocStr=' D O D A C Í L I S T'+FillStrL(SkupinovaOperace.Doklad,13,' ',True)+' ' ; Write(Tiskarna,LocStr) ; LoadTranslateTab(0); ; WriteLn(Tiskarna,'ł') ; LocB4=NextKey(KeySkupinovaOperace2,VetaP) ; end ; end else ; begin LoadTranslateTab(0); Write(Tiskarna,DupChar(' ',24)+'ł') LoadTranslateTab(Diakritika); LocStr=' DODACÍ LIST K FAKTUŘE '+FillStrL(Pohledavka.Doklad,12,' ',True)+' ' Write(Tiskarna,LocStr) LoadTranslateTab(0); WriteLn(Tiskarna,'ł') ; end LoadTranslateTab(0); WriteLn(Tiskarna,DupChar(' ',24)+'ŔÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄŮ') WriteLn(Tiskarna) LoadTranslateTab(Diakritika); TucnyTisk(True) LocStr=' Odběratel: '+Null(Pohledavka.ICO,8,True)+' '+Pohledavka.Firma+' '+Pohledavka.Rozsireni WriteLn(Tiskarna,LocStr) TucnyTisk(False) if(Length(Pohledavka.PSC)>0) begin LocStr=' '+Pohledavka.Ulice+', '+Pohledavka.Mesto+' PSČ: '+Pohledavka.PSC WriteLn(Tiskarna,LocStr) end WriteLn(Tiskarna,'Objednávka č.: '+Pohledavka.Objednavka+' Faktura č.: '+Pohledavka.Doklad) WriteLn(Tiskarna) Write(Tiskarna,20cpi) WriteLn(Tiskarna,'Na všechny výrobky v našem prodejním ceníku, na které se vztahuje zákon č. 22/97 Sb., jsou vydána prohlášení o shodě.') Write(Tiskarna,10cpi) WriteLn(Tiskarna) if(Hlavicka.FSleva<>0) begin WriteLn(Tiskarna,DupChar(' ',15)+'Poskytnuta sleva: '+Str(Hlavicka.FSleva)+'%') WriteLn(Tiskarna) end ;**************************************************************************** ; Vytisteni textu faktury ;**************************************************************************** OdRadku=1 Strana=0 PocetRadku=MaxLines CallDDT('FaktPrc2.DDT'); LocL2=OdRadku ;While(LocL20) begin WriteLn(Tiskarna,DupChar(' ',41)+'Zaokrouhlení:'+FillStrL(StrFinanc(RozpisFaktury.Zaokr,2),20,' ',True)) WriteLn(Tiskarna,DupChar(' ',31)+'Celkem po zaokrouhlení:'+FillStrL(StrFinanc(RozpisFaktury.CelDPH+RozpisFaktury.Zaokr,2),20,' ',True)) end; SetStatusMax; ;**************************************************************************** ; Vytisteni podpisů ;**************************************************************************** LoadTranslateTab(Diakritika); WriteLn(Tiskarna,'') WriteLn(Tiskarna,'') WriteLn(Tiskarna,'') WriteLn(Tiskarna,'') WriteLn(Tiskarna,'') WriteLn(Tiskarna,'') Write(Tiskarna,10CPI) WriteLn(Tiskarna,DupChar('.',25)+DupChar(' ',26)+DupChar('.',25)) WriteLn(Tiskarna,DupChar(' ',10)+'předal'+DupChar(' ',46)+'převzal') Write(Tiskarna,12CPI) ;konec zhuštěného tisku NovaStrana() Procedure NovaStrana() Write(Tiskarna,#12); nova strana end Procedure TucnyTisk(Zap:Boolean) if(zap) Write(Tiskarna,#27+#69); tucny else Write(Tiskarna,#27+#70); netucny end END