; 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('Faktura na jehl.tiskárnu') Designed('Faktura') Author('Winduo Team','EMail: winduo@winduo.cz','http://www.winduo.com','http://www.winduo.cz') Descr('Faktura - 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 doklad','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[0..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=2; pocet volnych na zacatku stranky, netistitelne VelikostHlavicky:Byte=17; pocet radku, ktere zabira hlavicka. Na druhe strane se preskakuji MaxLines:Word=28 ; pokud pøebírá tato nastavení z nastavení faktury MaxLinesPril:Word=28 ; pokud pøebírá tato nastavení z nastavení faktury ;Global Diakritika:Word=Val(GetFromIni('PARAM','Diakritika',IniSoubor)); pøíklad naètení z INI souboru Global Diakritika:Word=1; 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 if(Program.Sklady) begin DeclareRec('Sklad') DeclareRec('KeySklad10') end if(Program.TiskIDB) begin DeclareRec('BankovniUcet') DeclareRec('KeyBankovniUcet1') end 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) begin WriteLn(Tiskarna,FillStrL(StrDate(Pohledavka.Datum_ZP),80,' ',True)) end else begin WriteLn(Tiskarna,FillStrL('dodavatel není plátce DPH'),80,' ',True)) end; if(Pohledavka.Platba<>0) WriteLn(Tiskarna,DupChar(' ',65)+GetString(5500-Pohledavka.Platba)) WriteLn(Tiskarna) WriteLn(Tiskarna) ;asi doresit zhusteny tisk, kdyz je to moc dlouhe LocBool=False if(Length(Trim(Pohledavka.Firma))>25) LocBool=True if(Length(Trim(Pohledavka.Rozsireni))>25) LocBool=True if(Length(Trim(Pohledavka.Ulice))>25) LocBool=True if(Length(Trim(Pohledavka.Mesto))>25) LocBool=True TucnyTisk(True) Write(Tiskarna,12CPI) Write(Tiskarna,DupChar(' ',61)) if(LocBool) Write(Tiskarna,17CPI) WriteLn(Tiskarna,Pohledavka.Firma) TucnyTisk(False) Write(Tiskarna,12CPI) Write(Tiskarna,DupChar(' ',61)) if(LocBool) Write(Tiskarna,17CPI) WriteLn(Tiskarna,Pohledavka.Rozsireni) Write(Tiskarna,12CPI) Write(Tiskarna,DupChar(' ',61)) if(LocBool) Write(Tiskarna,17CPI) WriteLn(Tiskarna,Pohledavka.Ulice) Write(Tiskarna,12CPI) Write(Tiskarna,DupChar(' ',54)) if(LocBool) Write(Tiskarna,17CPI) WriteLn(Tiskarna,Pohledavka.PSC+' '+Pohledavka.Mesto) WriteLn(Tiskarna) Write(Tiskarna,12CPI) WriteLn(Tiskarna,DupChar(' ',17)+Pohledavka.OBJEDNAVKA) if((not Program.HideICO) or (Pohledavka.ICO>=Program.HideICOLess)) WriteLn(Tiskarna,DupChar(' ',50)+NULL(Pohledavka.ICO,8,True)+DupChar(' ',13)+Pohledavka.DIC) WriteLn(Tiskarna) WriteLn(Tiskarna) Write(Tiskarna,'Tato faktura slouží zároveò jako dodací list') if(Hlavicka.FSleva<>0) begin WriteLn(Tiskarna,DupChar(' ',15)+'Poskytnuta sleva: '+Str(Hlavicka.FSleva)+'%') end else begin WriteLn(Tiskarna,'') end ;**************************************************************************** ; Vytisteni textu faktury ;**************************************************************************** OdRadku=1 Strana=0 PocetRadku=MaxLines PocetRadku=PocetRadku-5 Write(Tiskarna,10CPI) CallDDT('FaktPrc2.DDT'); LocL2=OdRadku While(LocL20) begin WriteLn(Tiskarna,DupChar(' ',43)+'Celkem na dokladu:'+FillStrL(StrFinanc(RozpisFaktury.CelBZ,2),20,' ',True)) WriteLn(Tiskarna,DupChar(' ',54)+'Záloha:'+FillStrL(StrFinanc(RozpisFaktury.Zaloha,2),20,' ',True)) WriteLn(Tiskarna,DupChar(' ',42)+'Zbývá k proplacení:'+FillStrL(StrFinanc(RozpisFaktury.CelDPH,2),20,' ',True)) end ;blok DPH a soucty: if(TiskDPH) begin LoadTranslateTab(0); Write(Tiskarna,'ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿') LoadTranslateTab(Diakritika); WriteLn(Tiskarna,' Celkem bez DPH:'+FillStrL(StrFinanc(RozpisFaktury.Celkem,2),20,' ',True)) LoadTranslateTab(0); Write(Tiskarna,'³') LoadTranslateTab(Diakritika); Write(Tiskarna,' sazba základ v '+FillStrR(Program.Mena,3,' ',True)+FillStrL('DPH v '+Program.Mena+' ',14,' ',True)) LoadTranslateTab(0); Write(Tiskarna,'³') LoadTranslateTab(Diakritika); WriteLn(Tiskarna,' DPH:'+FillStrL(StrFinanc(RozpisFaktury.CelDPH-RozpisFaktury.Celkem,2),20,' ',True)) LoadTranslateTab(0); Write(Tiskarna,'ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´') LoadTranslateTab(Diakritika); WriteLn(Tiskarna,' Celkem s DPH:'+FillStrL(StrFinanc(RozpisFaktury.CelDPH,2),20,' ',True)) if(RozpisFaktury.DPHZakladBez<>0) begin LoadTranslateTab(0); Write(Tiskarna,'³') LoadTranslateTab(Diakritika); Write(Tiskarna,' 0 %'+FillStrL(Str(RozpisFaktury.DPHZakladBez,0,2),18,' ',True)+FillStrL('X ',14,' ',True)+' ') LoadTranslateTab(0); Write(Tiskarna,'³') LoadTranslateTab(Diakritika); if(RozpisFaktury.Zaokr<>0) begin TiskZaokr=True WriteLn(Tiskarna,' Zaokrouhlení:'+FillStrL(StrFinanc(RozpisFaktury.Zaokr,2),20,' ',True)) end else begin WriteLn(Tiskarna,'') end TiskKUhr1=True; v pristim radku je mozno tisknout prvni radek 'K uhrade' end if(RozpisFaktury.DPHZakladNizsi<>0) begin LoadTranslateTab(0); Write(Tiskarna,'³') LoadTranslateTab(Diakritika); Write(Tiskarna,' '+Str(SazbaDPH(False,Pohledavka.Datum_ZP),2)+' %'+FillStrL(Str(RozpisFaktury.DPHZakladNizsi,0,2),18,' ',True)+FillStrL(Str(RozpisFaktury.DPHDanNizsi,0,2),14,' ',True)+' ') LoadTranslateTab(0); Write(Tiskarna,'³') LoadTranslateTab(Diakritika); if((RozpisFaktury.Zaokr<>0)and(not TiskZaokr)) begin TiskZaokr=True Write(Tiskarna,' Zaokrouhlení:'+FillStrL(Str(RozpisFaktury.Zaokr,0,2),20,' ',True)) end if(TiskKUhr1) begin Inc(PocetLevych) TiskKUhrade1(False) end else begin WriteLn(Tiskarna,'') TiskKUhr1=True; v pristim radku je mozno tisknout prvni radek 'K uhrade' end end if(RozpisFaktury.DPHZakladVyssi<>0) begin LoadTranslateTab(0); Write(Tiskarna,'³') LoadTranslateTab(Diakritika); Write(Tiskarna,' '+Str(SazbaDPH(True,Pohledavka.Datum_ZP),2)+' %'+FillStrL(Str(RozpisFaktury.DPHZakladVyssi,0,2),18,' ',True)+FillStrL(Str(RozpisFaktury.DPHDanVyssi,0,2),14,' ',True)+' ') LoadTranslateTab(0); Write(Tiskarna,'³') LoadTranslateTab(Diakritika); if((RozpisFaktury.Zaokr<>0)and(not TiskZaokr)) begin TiskZaokr=True Write(Tiskarna,' Zaokrouhlení:'+FillStrL(Str(RozpisFaktury.Zaokr,0,2),20,' ',True)) end if(TiskKUhr1) begin Inc(PocetLevych) TiskKUhrade1(False) end else begin if(TiskKUhr2) begin Inc(PocetLevych) TiskKUhrade2(False) end else begin WriteLn(Tiskarna,'') TiskKUhr1=True end end end LoadTranslateTab(0); Write(Tiskarna,'ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ') Inc(PocetLevych) end else begin ;mimo DPH WriteLn(Tiskarna,DupChar(' ',54)+'Celkem:'+FillStrL(StrFinanc(RozpisFaktury.CelDPH,2),20,' ',True)) if(RozpisFaktury.Zaokr<>0) begin WriteLn(Tiskarna,DupChar(' ',48)+'Zaokrouhlení:'+FillStrL(StrFinanc(RozpisFaktury.Zaokr,2),20,' ',True)) end; TiskKUhr1=True end if(TiskKUhr1) begin TiskKUhrade1() end if(TiskKUhr2) begin TiskKUhrade2() end if(TiskKUhr3) begin TiskKUhrade3() end LoadTranslateTab(Diakritika); Write(Tiskarna,20CPI) WriteLn(Tiskarna,DupChar(' ',40)+Program.FaktSpecText[1]) WriteLn(Tiskarna,DupChar(' ',40)+Program.FaktSpecText[2]) WriteLn(Tiskarna,'') WriteLn(Tiskarna,'') WriteLn(Tiskarna,'') WriteLn(Tiskarna,'') WriteLn(Tiskarna,'') WriteLn(Tiskarna,'') WriteLn(Tiskarna,DupChar(' ',60)+'Dìkujeme Vám za nákup a tìšíme se na další spolupráci') Write(Tiskarna,12CPI) ;konec zhuštìného tisku ;**************************************************************************** ; Vytisteni prilohy ;**************************************************************************** While(not VseVytisteno) begin SetStatus(OdRadku); NovaStrana() Inc(Strana) LocB=0 While(LocB0) begin Write(Tiskarna,' Celkem k úhradì'+FillStrL(StrFinanc(RozpisFaktury.Propla,2),14,' ',True)) end else begin Write(Tiskarna,' Celkem k úhradì'+FillStrL(StrFinanc(RozpisFaktury.Propla,2),14,' ',True)) end if(Hlavicka.FMena=0) Write(Tiskarna,' Kè ') else Write(Tiskarna,' '+NumToCCC(Hlavicka.FMena)) TucnyTisk(False) LoadTranslateTab(0); WriteLn(Tiskarna,' º') TiskKUhr3=True; v pristim radku je mozno tisknout treti radek ramecku 'K uhrade' TiskKUhr2=False end Procedure TiskKUhrade3() if(PocetLevych<3) begin Write(Tiskarna,DupChar(' ',40)) Inc(PocetLevych) end LoadTranslateTab(0); WriteLn(Tiskarna,DupChar(' ',7)+'ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ') end Procedure NovaStrana() Write(Tiskarna,#12); nova strana end Procedure TucnyTisk(Zap:Boolean) if(zap) Write(Tiskarna,#27+#69); tucny else Write(Tiskarna,#27+#70); tucny end END