; DDT pokladní doklad - paragon ; verze z 28.4.2003 ; Autor: WinDUO Team ;upraveno tak, ze pro souctovou tabulku DPH bere udaje z toho, co se tiskne, a ne ze skladu Name('Faktura - paragon') Designed('FAKTURA') Author('Winduo Team','EMail: winduo@winduo.cz','http://www.winduo.com','http://www.winduo.cz') Descr('Paragon z faktury','včetně skladových pohybů.','(Určeno pro tiskárny paragonů','- tiskárnu nutno mít zapnutou a nastavenou)') WNSType(-1); DeclareRec('Program') DeclareRec('Faktura') DeclareRec('Pohledavka') DeclareRec('RozpisFaktury') Hlavicka:Faktura GetBindRec(Hlavicka,0) GetBindRec(Pohledavka,0) GetBindRec(RozpisFaktury) GetBindRec(Pohledavka); InitStatus(GetCountBindRec('Faktura'),'Tisknu paragon','k faktuře č.'+Pohledavka.Doklad); ; ******* Deklarace pozdeji použitých proměnných ******* TiskDPH:Boolean=(Program.RezimDPH<>0) and (Hlavicka.Typ=0) TypRadkuSDPH:array[1..6] of Byte=0,1,3,4,5,6 TypRadkuUplny:array[1..4] of Byte=0,3,4,5 TypRadkuUplnySklad:array[1..4] of Byte=3,4,5 TypRadkuZkraceny:array[1..2] of Byte=1,6 TypRadkuText:array[1..4] of Byte=2,6,7,9 SazbaDPHNizsi:Byte=SazbaDPH(False,Pohledavka.Datum_ZP) SazbaDPHVyssi:Byte=SazbaDPH(True,Pohledavka.Datum_ZP) ZkracenyText:String ; ******* 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((Pohledavka.Platba<>1)) begin if(not Question('Opravdu chcete tisknout paragon, i když typ úhrady není hotově?',mb_IconStop)); Exit; end; 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 Tiskarna:Port; LocStr=FromChar(',',LocStr); StrCom('Open(Tiskarna,'''+Port+''','+LocStr+')'); end else begin Tiskarna:TextFile; Rewrite(Tiskarna,Port,True); ;Rewrite(Tiskarna,'TEST.PRN',True); pro ladění end; Diakritika:Word=Val(GetFromIni('PARAM','Diakritika',IniSoubor)); LoadTranslateTab(Diakritika); SetTranslate(Tiskarna,True); if(Program.RezimDPH<>0) begin if(TiskDPH) WriteLn(Tiskarna,TreatString('Daňový doklad č.\t\t'+Pohledavka.Doklad,Znaku)) else WriteLn(Tiskarna,TreatString('Doklad č.\t\t'+Pohledavka.Doklad,Znaku)) end else begin WriteLn(Tiskarna,TreatString('P A R A G O N č.\t\t'+Pohledavka.Doklad,Znaku)) WriteLn(Tiskarna,TreatString('\tDoklad od neplátce DPH\t',Znaku)) end; WriteLn(Tiskarna,DupChar('-',Znaku)) if((Program.RezimDPH<>0)and(TiskDPH)) WriteLn(Tiskarna,TreatString('Datum zdanitelného plnění:\t\t'+StrDate(Pohledavka.Datum_ZP),Znaku)) else WriteLn(Tiskarna,TreatString('Datum:\t\t'+StrDate(Pohledavka.Datum_ZP),Znaku)) WriteLn(Tiskarna) ; ******* Vytištění hlavičky ******* ObsahRadku:String; RozsireniRadku:String; Radku:Word=Val(GetFromIni('HEADER','Lines',IniSoubor)) Radek:Word=0 While(Radek=Program.HideICOLess) begin WriteLn(Tiskarna,DupChar('-',Znaku)) WriteLn(Tiskarna,TreatString('Odběratel:',Znaku)) ObsahRadku='IČ: '+Pohledavka.ICO if(Length(Pohledavka.DIC)<>0) ObsahRadku=ObsahRadku+'\t\tDIČ: '+Pohledavka.DIC WriteLn(Tiskarna,TreatString(ObsahRadku,Znaku)); if(Length(Pohledavka.Firma)<>0) WriteLn(Tiskarna,TreatString(Pohledavka.Firma,Znaku)); if(Length(Pohledavka.Rozsireni)<>0) WriteLn(Tiskarna,TreatString(Pohledavka.Rozsireni,Znaku)); if(Length(Pohledavka.Ulice)<>0) WriteLn(Tiskarna,TreatString(Pohledavka.Ulice,Znaku)); if(Length(Pohledavka.Mesto)<>0) WriteLn(Tiskarna,TreatString(Pohledavka.Mesto,Znaku)); end; WriteLn(Tiskarna,DupChar(#61,Znaku)) ; ******* vytištění položek paragonu ******* ObsahRadku=NumToCCC(Hlavicka.FMena) if(Length(ObsahRadku)=0) ObsahRadku=Program.Mena; WriteLn(Tiskarna,TreatString('\t\t'+ObsahRadku+' ',Znaku)) Radku:Word=GetCountBindRec(Faktura)-1 Polozek:Word LCelkem:Real LCena:Real Radek=0 While(Radek0)and(InArray(TypRadkuUplnySklad,Faktura.RecType))) then begin if(Faktura.Mnozstvi<>0) LCena=RoundPrice(Faktura.SCastkaM/Faktura.Mnozstvi) else LCena=0 LCelkem=Faktura.SCastkaM end else begin LCena=Faktura.Cena; LCelkem=Faktura.Celkem end; if((LCena<>0)or(Faktura.Mnozstvi<>0)or(LCelkem<>0)or(Length(ZkracenyText)>0)) begin if(Faktura.Celkem<>0) Inc(Polozek) if((Faktura.DPH<90)and(Faktura.WFlags&1=0)) begin if(Abs(Faktura.Sleva)<>0) begin LCelkem=((100-Faktura.Sleva)/100)*LCelkem; end; if(Abs(Hlavicka.FSleva)<>0) begin LCena=RoundPrice(((100-Hlavicka.FSleva)/100)*LCena); LCelkem=((100-Hlavicka.FSleva)/100)*LCelkem; end; end; if(Hlavicka.Typ<2) begin LCelkem=LCelkem*(1+Faktura.DPH/100); LCena=LCena*(1+Faktura.DPH/100); end; RozsireniRadku=''; if(Priznaky&$8<>0) RozsireniRadku=RozsireniRadku+Sklad.Material; if(Priznaky&$10<>0) begin if(Length(RozsireniRadku)<>0) RozsireniRadku=RozsireniRadku+' '; RozsireniRadku=RozsireniRadku+Sklad.Kod; end; if(Priznaky&$20<>0) begin if(Length(RozsireniRadku)<>0) RozsireniRadku=RozsireniRadku+' '; RozsireniRadku=RozsireniRadku+Str(Sklad.Sklad); end; if(Priznaky&$40<>0) begin if(Length(RozsireniRadku)<>0) RozsireniRadku=RozsireniRadku+' '; RozsireniRadku=RozsireniRadku+Str(Sklad.Druh); end; if((Faktura.Mnozstvi=1)and(Length(Faktura.Text)+Length(StrFinanc(LCelkem,2))0) ObsahRadku=ObsahRadku+'\t\t'+StrFinanc(LCelkem,2)+' '; end; end else if(InArray(TypRadkuZkraceny,Faktura.RecType)) begin if(Faktura.Celkem<>0) Inc(Polozek) if((Hlavicka.FMena<>0)and(InArray(TypRadkuUplnySklad,Faktura.RecType))) then begin LCelkem=Faktura.SCastkaM end else begin LCelkem=Faktura.Celkem end; if((Faktura.DPH<90)and(Faktura.WFlags&1=0)) begin if(Abs(Faktura.Sleva)<>0) begin LCelkem=((100-Faktura.Sleva)/100)*LCelkem; end; if(Abs(Hlavicka.FSleva)<>0) begin LCelkem=((100-Hlavicka.FSleva)/100)*LCelkem; end; end; if(Hlavicka.Typ<2) begin LCelkem=LCelkem*(1+Faktura.DPH/100); end; if(Length(ZkracenyText)+Length(StrFinanc(LCelkem,2))0) begin if(TiskDPH) begin if((InArray(TypRadkuSDPH,Faktura.RecType))and(Faktura.DPH<90)) begin if(Faktura.DPH=0) begin ObsahRadku=ObsahRadku+'C' end else if(Faktura.DPH=SazbaDPHNizsi) begin ObsahRadku=ObsahRadku+'B' end else if(Faktura.DPH=SazbaDPHVyssi) begin ObsahRadku=ObsahRadku+'A' end else ObsahRadku=ObsahRadku+'?' end; end; end; WriteLn(Tiskarna,TreatString(ObsahRadku,Znaku)) end; WriteLn(Tiskarna,TreatString('\t\t'+DupChar(#61,14),Znaku)); if(RozpisFaktury.Zaokr<>0) WriteLn(Tiskarna,TreatString('Zaokrouhlení\t\t'+StrFinanc(RozpisFaktury.Zaokr,2)+' ',Znaku)) WriteLn(Tiskarna,TreatString('C E L K E M\t\t'+StrFinanc(RozpisFaktury.Propla,2)+' ',Znaku)) Writeln(Tiskarna) if(Polozek<>0) WriteLn(Tiskarna,'Počet položek: '+Str(Polozek)); if(Hlavicka.FSleva<>0) WriteLn(Tiskarna,'Byla uplatněna sleva ve výši '+StrNative(Hlavicka.FSleva,2)+'%'); if((Program.RezimDPH<>0)and(TiskDPH)) begin Writeln(Tiskarna) Writeln(Tiskarna,TreatString('\tRekapitulace DPH',Znaku)) ; Writeln(Tiskarna,TreatString('Sazba DPH\t\tCelkem ',Znaku)) ; ObsahRadku=' 0%'+FillStrL('',12)+'\t\t'+StrFinanc(RozpisFaktury.DPHZakladBez,2)+' C'; ; Writeln(Tiskarna,TreatString(ObsahRadku,Znaku)) ; ObsahRadku=FillStrL(Str(SazbaDPH(False,Pohledavka.Datum_ZP))+'%',3)+FillStrL(Str(RozpisFaktury.DPHZakladNizsi,,2),12)+'\t\t'+StrFinanc(RozpisFaktury.DPHZakladNizsi+RozpisFaktury.DPHDanNizsi,2)+' B'; ; Writeln(Tiskarna,TreatString(ObsahRadku,Znaku)) ; ObsahRadku=FillStrL(Str(SazbaDPH(True,Pohledavka.Datum_ZP))+'%',3)+FillStrL(Str(RozpisFaktury.DPHZakladVyssi,,2),12)+'\t\t'+StrFinanc(RozpisFaktury.DPHZakladVyssi+RozpisFaktury.DPHDanVyssi,2)+' A'; ; Writeln(Tiskarna,TreatString(ObsahRadku,Znaku)) Writeln(Tiskarna,TreatString(' Základ DPH\t\ts DPH',Znaku)) ObsahRadku=' 0%'+FillStrL(Str(RozpisFaktury.DPHZakladBez,,2),10)+FillStrL('',10)+'\t\t'+Str(RozpisFaktury.DPHZakladBez,,2)+' C'; Writeln(Tiskarna,TreatString(ObsahRadku,Znaku)) ObsahRadku=FillStrL(Str(SazbaDPH(False,Pohledavka.Datum_ZP))+'%',3)+FillStrL(Str(RozpisFaktury.DPHZakladNizsi,,2),10)+FillStrL(Str(RozpisFaktury.DPHDanNizsi,,2),10)+'\t\t'+Str(RozpisFaktury.DPHZakladNizsi+RozpisFaktury.DPHDanNizsi,,2)+' B'; Writeln(Tiskarna,TreatString(ObsahRadku,Znaku)) ObsahRadku=FillStrL(Str(SazbaDPH(True,Pohledavka.Datum_ZP))+'%',3)+FillStrL(Str(RozpisFaktury.DPHZakladVyssi,,2),10)+FillStrL(Str(RozpisFaktury.DPHDanVyssi,,2),10)+'\t\t'+Str(RozpisFaktury.DPHZakladVyssi+RozpisFaktury.DPHDanVyssi,,2)+' A'; Writeln(Tiskarna,TreatString(ObsahRadku,Znaku)) end; ; ******* Vytištění patičky ******* WriteLn(Tiskarna) Radku=Val(GetFromIni('FOOTER','Lines',IniSoubor)) Radek=0 While(Radek