; DDT pokladní doklad - paragon ; verze z 5.3.2002 ; Autor: WinDUO Team Name('Pokladní doklad - paragon') Designed('PokladnaS','PokladnaR','Pokladna') Author('Winduo Team','EMail: winduo@winduo.cz','http://www.winduo.com','http://www.winduo.cz') Descr('Pokladní doklad - paragon','včetně skladových pohybů','určeno pro tiskárny paragonů') WNSType(-1); DeclareRec('Program') DeclareRec('Pokladna') GetBindRec(Pokladna); ; ******* Deklarace pozdeji použitých proměnných ******* SazbaDPHNizsi:Byte SazbaDPHVyssi:Byte VyssiDPHZaklad:Double NizsiDPHZaklad:Double VyssiDPHDan:Double NizsiDPHDan:Double CastkaSDPH:Double BezDPH:Double Celkem:Double CelkemBezDPH:Double LocL:LongInt ; ******* 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; Tiskarna:TextFile; Rewrite(Tiskarna,Port,True); ;Rewrite(Tiskarna,'TEST.PRN',True); Diakritika:Word=Val(GetFromIni('PARAM','Diakritika',IniSoubor)); LoadTranslateTab(Diakritika); SetTranslate(Tiskarna,True); if(Program.RezimDPH<>0) WriteLn(Tiskarna,TreatString('Daňový doklad č.\t\t'+Pokladna.Doklad,Znaku)) else begin WriteLn(Tiskarna,TreatString('P A R A G O N č.\t\t'+Pokladna.Doklad,Znaku)) WriteLn(Tiskarna,TreatString('\tDoklad od neplátce DPH\t',Znaku)) end; WriteLn(Tiskarna,DupChar('-',Znaku)) if(Program.RezimDPH<>0) WriteLn(Tiskarna,TreatString('Datum zdanitelného plnění\t\t'+StrDate(Pokladna.Datum_ZP),Znaku)) else WriteLn(Tiskarna,TreatString('Datum\t\t'+StrDate(Pokladna.Datum_ZP),Znaku)) WriteLn(Tiskarna) ; ******* Vytištění hlavičky ******* ObsahRadku: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Č: '+Pokladna.ICO if(Length(Pokladna.DIC)<>0) ObsahRadku=ObsahRadku+'\t\tDIČ: '+Pokladna.DIC WriteLn(Tiskarna,TreatString(ObsahRadku,Znaku)); if(Length(Pokladna.Firma)<>0) WriteLn(Tiskarna,TreatString(Pokladna.Firma,Znaku)); if(Length(Pokladna.Rozsireni)<>0) WriteLn(Tiskarna,TreatString(Pokladna.Rozsireni,Znaku)); if(Length(Pokladna.Ulice)<>0) WriteLn(Tiskarna,TreatString(Pokladna.Ulice,Znaku)); if(Length(Pokladna.Mesto)<>0) WriteLn(Tiskarna,TreatString(Pokladna.Mesto,Znaku)); end; WriteLn(Tiskarna,DupChar(#61,Znaku)) ; ******* vytištění položek paragonu ******* WriteLn(Tiskarna,TreatString('\t\t'+Program.Mena+' ',Znaku)) DeclareRec('Sklad'); DeclareRec('KeySklad10'); DeclareRec('Pohyb'); Pohybu:Word=GetCountBindRec(Pohyb) Radek=0 While(Radek0) begin CastkaSDPH=RoundFloat(Pohyb.Castka*(1+Pohyb.DPH/100),-2) if(Pohyb.DPH=0) begin BezDPH=BezDPH+Pohyb.Castka end else if(Pohyb.DPH=SazbaDPHVyssi) begin VyssiDPHZaklad=VyssiDPHZaklad+Pohyb.Castka VyssiDPHDan=VyssiDPHDan+(CastkaSDPH-Pohyb.Castka) end else if(Pohyb.DPH=SazbaDPHNizsi) begin NizsiDPHZaklad=NizsiDPHZaklad+Pohyb.Castka NizsiDPHDan=NizsiDPHDan+(CastkaSDPH-Pohyb.Castka) end else begin if(Pohyb.DPH<15) begin if(SazbaDPHNizsi<>0) begin Chyba: Error('Chyba !!! Více sazeb DPH v jedné daňové kategorii',mb_IconStop) end SazbaDPHNizsi=Pohyb.DPH NizsiDPHZaklad=Pohyb.Castka NizsiDPHDan=CastkaSDPH-Pohyb.Castka end else begin if(SazbaDPHVyssi<>0) begin GoTo(Chyba) end SazbaDPHVyssi=Pohyb.DPH VyssiDPHZaklad=Pohyb.Castka VyssiDPHDan=CastkaSDPH-Pohyb.Castka end end end else begin Celkem=Celkem+Pohyb.Castka CastkaSDPH=Pohyb.Castka end KeySklad10.Length=4 KeySklad10.Cislo=SwapL(Pohyb.CisloMat) if(FindKey(KeySklad10,LocL)) begin ReadRec(Sklad,LocL) end else begin ClearRec(Sklad) end; if(Priznaky&1=0) ObsahRadku=Sklad.Nazev else begin ObsahRadku=Sklad.DisplayText if(Length(ObsahRadku)=0) ObsahRadku=Sklad.Nazev end; if(Pohyb.Mnozstvi<>1) begin WriteLn(Tiskarna,ObsahRadku); ObsahRadku=' '+StrNative(Pohyb.Mnozstvi,3)+' x '+Str(RoundFloat(Pohyb.JednCena*(1+Pohyb.DPH/100),-2),,2); end ObsahRadku=ObsahRadku+'\t\t'+Str(CastkaSDPH,,2)+' '; if(Pohyb.DPH=0) ObsahRadku=ObsahRadku+'C' else if(Pohyb.DPH=SazbaDPHNizsi) ObsahRadku=ObsahRadku+'B' else if(Pohyb.DPH=SazbaDPHVyssi) ObsahRadku=ObsahRadku+'A' else ObsahRadku=ObsahRadku+'?' WriteLn(Tiskarna,TreatString(ObsahRadku,Znaku)) Inc(Radek) end; if(Program.RezimDPH<>0) begin if(Pokladna.ZaokrDPH) begin NizsiDPHDan=RoundFloat(Int((NizsiDPHDan+0.09)*10)/10,-2) VyssiDPHDan=RoundFloat(Int((VyssiDPHDan+0.09)*10)/10,-2) end; CelkemBezDPH=VyssiDPHZaklad+NizsiDPHZaklad+BezDPH Celkem=CelkemBezDPH+VyssiDPHDan+NizsiDPHDan end; WriteLn(Tiskarna,TreatString('\t\t'+DupChar(#61,14),Znaku)); WriteLn(Tiskarna,TreatString('C E L K E M\t\t'+Str(Pokladna.Castka,,2)+' ',Znaku)) if(Program.RezimDPH<>0) begin Writeln(Tiskarna) Writeln(Tiskarna,TreatString('\tRekapitulace DPH',Znaku)) Writeln(Tiskarna,TreatString('Sazba DPH\t\tCelkem ',Znaku)) ObsahRadku=' 0%'+FillStrL('',12)+'\t\t'+Str(BezDPH,,2)+' C'; Writeln(Tiskarna,TreatString(ObsahRadku,Znaku)) ObsahRadku=FillStrL(Str(SazbaDPH(False,Pokladna.Datum_ZP))+'%',3)+FillStrL(Str(NizsiDPHDan,,2),12)+'\t\t'+Str(NizsiDPHZaklad+NizsiDPHDan,,2)+' B'; Writeln(Tiskarna,TreatString(ObsahRadku,Znaku)) ObsahRadku=FillStrL(Str(SazbaDPH(True,Pokladna.Datum_ZP))+'%',3)+FillStrL(Str(VyssiDPHDan,,2),12)+'\t\t'+Str(VyssiDPHZaklad+VyssiDPHDan,,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