; DDT dodací list ze skupinových operací bez uvedení cen ; verze z 19.8.2002 ; Autor: WinDUO Team Name('Dodací list bez cen - A5') FileName('DodLis01.WNS') Designed('SKP_OP') Author('Winduo Team','EMail: winduo@winduo.cz','http://www.winduo.com','http://www.winduo.cz') Descr('Dodací list bez uvedení cen','do 5 řádků na A5') ;promenné pro rizeni tisku: TiskKJ:Boolean=True ;tisk cisla a nazvu KJ PocetStrana:Word PocetPriloha:Word TabFontScale:Double PoziceRozpisu:Word PoziceRozpPril:Word Veta:LongInt VetaCis:LongInt mPopis:String='' ;**************************************************************************** ; Nastavení proměnných majících vliv na podobu tisku ;**************************************************************************** PocetStrana=10 ;pocet radku rozpisu zbozi na 1. strane PocetPriloha=18 ;pocet radku rozpisu zbozi na 2. a dalsi strane TabFontScale=1.8 ;TabFontScale - nastavení šířky písma v tabulce položek ;=1 písmo dle odhadu WinDUO ;=0 písmo bez změny šířky ;jinak index, tzn.např. =1.5 je 150% šířky odhladlé WinDUO ; =0.75 je 75% šířky odhladlé WinDUO ;cim vetsi cislo, tim tlustsi, obéznější (prsatější) písmenka PoziceRozpisu=46 ;y-souradnice, odkud se tiskne hlavicka PoziceRozpPril=16 ;y-souradnice, odkud se tiskne hlavicka na priloze ;**************************************************************************** DeclareRec('SkupinovaOperace') DeclareRec('Sklad') DeclareRec('Pohyb') DeclareRec('KeyPohyb5') DeclareRec('Program') DeclareRec('Adresar') DeclareRec('KeySklad10') DeclareRec('KeyAdresar1') DeclareRec('Ciselnik') DeclareRec('KeyCiselnik1') GetBindRec('SkupinovaOperace') FontSize(4.5) FontFace(Bold) Text(180,0,TA_RIGHT,'Dodací list') PaintMetaFile(0,0,30,20,Program.Logo); FontSize(3.5) Brush(UserBrush) ;Pen(ps_Null,0.1) ;BoxA(91,38,109,45) Pen(0,0.3) BoxA(145,5,180,10) ;LineA(115,18,58,18) ;LineA(58,18,58,11) ;LineA(58,11,117,11) Brush($FFFFFF) Pen(0,0.7) RoundBoxA(115,11,180,45,4,4) Brush(NullBrush) LineA(2,45,176,45) ArcA(0,41,4,45,0,43,2,45); LineA(0,40,0,43) ArcA(0,42,4,38,2,38,0,40); LineA(2,38,115,38); Pen(0,0.1) LineA(115,38,180,38) ;LineA(0,47,180,47); Text(175,5.5,TA_RIGHT,SkupinovaOperace.Doklad); FontFace(Normal) Text(142,5.5,TA_RIGHT,'Číslo dokladu') FontFace(Bold|Italic) FontSize(3.5) Text(118,13,TA_LEFT,'Odběratel:') Text(0,20,TA_LEFT,'Dodavatel:') FontFace(Bold); IF(LENGTH(Program.Rozsireni)<>0) begin Text(20,20,TA_LEFT,Program.Firma) FontSize(3.0) Text(20,23.3,TA_LEFT,Program.Rozsireni) FontFace(Normal); Text(20,26.6,TA_LEFT,Program.Ulice) Text(20,30,TA_LEFT,Program.PSC+' '+Program.Mesto) end else begin Text(20,20,TA_LEFT,Program.Firma) FontFace(Normal); Text(20,24,TA_LEFT,Program.Ulice) Text(20,28,TA_LEFT,Program.PSC+' '+Program.Mesto) end FontFace(Bold); Text(20,34,TA_LEFT,'IČ: '+NULL(Program.ICO,8,True)+' DIČ: '+Program.DIC) FontFace(Normal); FontSize(5) ;Text(88,12,TA_Center,'Uhrazeno v hotovosti') FontSize(3.5) Text(5,39.5,TA_Left,'Datum vystaveni: '+StrDate(SkupinovaOperace.Datum)) if((TiskKJ=True)and(Program.OV_UseKJ=True)) ; tisk cisla a nazvu KJ, ridi se logickou promennou, neni na to dialog begin KeyCiselnik1.Length=6 KeyCiselnik1.Druh=Swap(4) KeyCiselnik1.Kod=Swapl(SkupinovaOperace.KJ) mPopis='' if(FindKey(KeyCiselnik1,VetaCis)) begin ReadRec(Ciselnik,VetaCis) mPopis=Ciselnik.Popis end Text(42,39.5,TA_Left,'Zakázka: '+Str(SkupinovaOperace.KJ,0,0)+' '+mPopis) end ;if(Program.RezimDPH<>0) ; begin ; Text(90,39.5,TA_Right,'Datum zdanitelného plnění:') ; FontFace(Bold) ; Text(93,39.5,TA_Left,StrDate(Pokladna.Datum_ZP)) ; end; FontSize(3) if((not Program.HideICO) or (SkupinovaOperace.ICO>=Program.HideICOLess)) Text(125,40,TA_LEFT,'IČ: '+NULL(SkupinovaOperace.ICO,8,True)) KeyAdresar1.Length=4 KeyAdresar1.Ico=SwapL(SkupinovaOperace.Ico) If(FindKey(KeyAdresar1,Veta)) begin ReadRec(Adresar,Veta) end else begin ClearRec(Adresar) end FontSize(3.5) ;FontFace(Bold) FontFace(Normal); IF(LENGTH(Adresar.Rozsireni)<>0) begin FontWidthScale(0) ClearFontIndex() GetFontIndex(56,Adresar.Nazev) GetFontIndex(56,Adresar.Rozsireni) GetFontIndex(56,Adresar.Ulice) GetFontIndex(56,Adresar.Mesto) FontIndex() Text(120,18,TA_LEFT,Adresar.Nazev) ;FontSize(3.0) Text(120,21.3,TA_LEFT,Adresar.Rozsireni) ;FontFace(Normal); Text(120,24.6,TA_LEFT,Adresar.Ulice) Text(120,28,TA_LEFT,Adresar.Mesto) Text(120,31.4,TA_LEFT,Adresar.PSC) end else begin FontWidthScale(0) ClearFontIndex() GetFontIndex(56,Adresar.Nazev) GetFontIndex(56,Adresar.Ulice) GetFontIndex(56,Adresar.Mesto) FontIndex() Text(120,18,TA_LEFT,Adresar.Nazev) ;FontFace(Normal); Text(120,22,TA_LEFT,Adresar.Ulice) Text(120,26,TA_LEFT,Adresar.Mesto) Text(120,30,TA_LEFT,Adresar.PSC) end ;FontSize(3) ;Text(150,40,TA_LEFT,'DIČ: '+Adresar.DIC) ; ******************** ; Deklarace proměnných ; ******************** LocStr:String Hlava1:String Hlava2:String LocW:Word LocW2:Word LocW3:Word LocW4:Word LocL:LongInt VytiskRadku:Word SazbaDPHNizsi:Byte SazbaDPHVyssi:Byte VyssiDPHZaklad:Double NizsiDPHZaklad:Double VyssiDPHDan:Double NizsiDPHDan:Double CastkaSDPH:Double BezDPH:Double Celkem:Double CelkemBezDPH:Double LocD:Double DynStr:String NaStrane:Double PocetStran:Word ; pocet priloh AktStrana:Word LocBo:Boolean Mezisoucet:Double ; *********************** ; Inicializace proměnných ; *********************** LocStr='' Hlava1='' Hlava2='' LocW=0 SazbaDPHNizsi=0 SazbaDPHVyssi=0 VyssiDPHZaklad=0 NizsiDPHZaklad=0 VyssiDPHDan=0 NizsiDPHDan=0 CastkaSDPH=0 BezDPH=0 Celkem=0 CelkemBezDPH=0 DynStr='' NaStrane=0 PocetStran=0 AktStrana=0 MeziSoucet=0 ; ******************************** ; Vlastní zobrazení obsahu dokladu ; ******************************** FontSize(3.5) FontFace(Normal) if(Program.FTiskFlags&1<>0) ;sklad begin DynStr=DynStr+'4,TA_RIGHT,' Hlava1=Hlava1+Char(9) Hlava2=Hlava2+'skl.'+#9 LocW=LocW+1; end if(Program.FTiskFlags&2<>0) ;druh begin DynStr=DynStr+'4,TA_RIGHT,' Hlava1=Hlava1+Char(9) Hlava2=Hlava2+'dr.'+#9 LocW=LocW+1; end if(Program.FTiskFlags&4<>0) ;kod begin DynStr=DynStr+'14,TA_LEFT,' Hlava1=Hlava1+Char(9) Hlava2=Hlava2+'Kód'+#9 LocW=LocW+1; end if(Program.TiskCis) ; skladove cislo begin DynStr=DynStr+'14,TA_LEFT,' Hlava1=Hlava1+Char(9) Hlava2=Hlava2+'Skl.číslo'+#9 LocW=LocW+1; end DynStr=DynStr+'30,TA_LEFT,12,TA_RIGHT,10,TA_RIGHT,7,TA_LEFT,' LocW=LocW+4; ;if(Program.RezimDPH<>0) ; begin ; DynStr=DynStr+'12,TA_RIGHT,4,TA_RIGHT,' ; Hlava1=Hlava1+#9+'Cena za MJ'+#9+#9+#9+'Celkem'+#9+#9+'Celkem' ; Hlava2=Hlava2+'Popis položky'+#9+'bez DPH'+#9+'Množství'+#9+#9+'bez DPH'+#9+'DPH'+#9+'s DPH' ; LocW=LocW+2 ; end else ; begin ; Hlava2=Hlava2+'Popis položky'+#9+'Cena za MJ'+#9+'Množství'+#9+#9+'Celkem'+#9 Hlava2=Hlava2+'Popis položky'+#9+#9+'Množství'+#9+#9+#9 ; end DynStr='DefDynTab(7,166,4,'+Str(LocW+1)+','+DynStr+'12,TA_RIGHT)' ;vytisteni rozpisu zbozi na 1. strance StrCom(DynStr) if(TabFontScale<>1) FontWidthScale(TabFontScale) TabPos(PoziceRozpisu) Hlava1='' DynTab(Hlava1) DynTab(Hlava2) LineA(7,PoziceRozpisu+8,148,PoziceRozpisu+8) TabPos(PoziceRozpisu+9) ;LocW=GetCountBindRec(Pohyb) LocW=SkupinovaOperace.PolCount LocW2=0 ; Vypocet celkove castky a castek DPH ;While(LocW20) ; 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 ; end ;LocW2=LocW2+1 ;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; LocW2=0 VytiskRadku=0 KeyPohyb5.Length=4 KeyPohyb5.Hrom=SwapL(SkupinovaOperace.Cislo) Nalez:Boolean Nalez=SearchKey(KeyPohyb5,Veta) While((Nalez) and (KeyPohyb5.Hrom=SwapL(SkupinovaOperace.Cislo)) and (VytiskRadku0) ;sklad begin LocStr=LocStr+Sklad.Sklad+#9 end if(Program.FTiskFlags&2<>0) ;druh begin LocStr=LocStr+Sklad.Druh+#9 end if(Program.FTiskFlags&4<>0) ;kod begin LocStr=LocStr+Sklad.Kod+#9 end if(Program.TiskCis) ; skladove cislo begin LocStr=LocStr+Pohyb.Material+#9 end ; LocStr=LocStr+Sklad.Nazev+#9+Str(Pohyb.JednCena,0,2)+#9+Pohyb.Mnozstvi+#9+Sklad.MJ+#9 LocStr=LocStr+Sklad.Nazev+#9+#9+Pohyb.Mnozstvi+#9+Sklad.MJ+#9 ; if(Program.RezimDPH<>0) ; begin ; LocStr=LocStr+Str(Pohyb.Castka,0,2)+#9+Pohyb.DPH+#9+Str(Pohyb.Castka*(1+Pohyb.DPH/100),0,2) ; end else ; begin ; LocStr=LocStr+Str(Pohyb.Castka,0,2); ; end DynTab(LocStr) if(Program.RezimDPH<>0) NaStrane=NaStrane+Pohyb.Castka*(1+Pohyb.DPH/100) else NaStrane=NaStrane+Pohyb.Castka LocW2=LocW2+1 VytiskRadku=VytiskRadku+1 Nalez=NextKey(KeyPohyb5,Veta) end; if(LocW20) ;sklad begin LocStr=LocStr+#9 end if(Program.FTiskFlags&2<>0) ;druh begin LocStr=LocStr+#9 end if(Program.FTiskFlags&4<>0) ;kod begin LocStr=LocStr+#9 end if(Program.TiskCis) ; skladove cislo begin LocStr=LocStr+#9 end ;LocStr=LocStr+'Stránky přílohy ('+PocetStran+') celkem'+#9+#9+#9+#9+#9+#9+Str(Celkem-NaStrane,0,2) ;DynTab(LocStr) end ;TabPos=TabPos+1 LineA(7,TabPos,148,TabPos) LocW3=TabPos ;if(Program.RezimDPH<>0) ; begin ; TabPos=TabPos+1 ; Text(173,TabPos,TA_Right,Str(CelkemBezDPH,0,2)) ; TabPos=TabPos+4 ; Text(173,TabPos,TA_Right,Str(Celkem-CelkemBezDPH,0,2)) ; TabPos=TabPos+4 ; Text(173,TabPos,TA_Right,Str(Celkem,0,2)) ; if(RoundFloat(Pokladna.Castka,-2)<>RoundFloat(Celkem,-2)) ; begin ; TabPos=TabPos+4 ; Text(173,TabPos,TA_Right,Str(Pokladna.Castka-Celkem,0,2)) ; end; ; TabPos=TabPos+4 ; end else ; begin ; if(RoundFloat(Pokladna.Castka,-2)<>RoundFloat(Celkem,-2)) ; begin ; TabPos=TabPos+4 ; Text(173,TabPos,TA_Right,Str(Pokladna.Castka-Celkem,0,2)) ; end; ; TabPos=TabPos+4 ; end FontFace(Normal) ;if(Program.RezimDPH<>0) ; begin ; LocW3=LocW3+1 ; Text(150,LocW3,TA_Right,'Celkem bez DPH') ; LocW3=LocW3+4 ; Text(150,LocW3,TA_Right,'DPH') ; LocW3=LocW3+4 ; Text(150,LocW3,TA_Right,'Celkem s DPH') ; if(RoundFloat(Pokladna.Castka,-2)<>RoundFloat(Celkem,-2)) ; begin ; LocW3=LocW3+4 ; Text(150,LocW3,TA_Right,'Zaokrouhlení') ; end; ; end else ; begin ; if(RoundFloat(Pokladna.Castka,-2)<>RoundFloat(Celkem,-2)) ; begin ; LocW3=LocW3+4 ; Text(150,LocW3,TA_Right,'Zaokrouhlení') ; end; ; end ;if(Pokladna.Sleva<>0) ; begin ; FontSize(5) ; Text(7,TabPos-3,TA_Left,'Na doklad byla poskytnuta sleva ve výši '+Str(Pokladna.Sleva)+'%') ; end; TabPos=TabPos+2 Pen(0,0.7) ;Brush(UserBrush) ;BoxA(123,TabPos,173,TabPos+10) ;Brush(NullBrush) FontSize(6) FontFace(Bold) ;Text(118,TabPos,TA_RIGHT,'Cena k úhradě celkem'); FontFace(Bold) FontSize(7) ;Text(168,TabPos+1.5,TA_RIGHT,Str(Pokladna.Castka,0,2)) FontSize(3) FontFace(Normal) LocStr='' LocD=Round(Frac(Celkem)*100) ;if(LocD<>0) ; begin ; LocStr=NumToWord(LocD,False,True) ; if(LocD=1) ; LocStr=LocStr+' haléř' ; else ; if(LocD<5) ; LocStr=LocStr+' haléře' ; else ; LocStr=LocStr+' haléřů' ; end; ;LocStr=NumToWord(Celkem,True,False)+' Kč '+LocStr ;Text(118,TabPos+7,TA_RIGHT,'Slovy: '+LocStr) ;TabPos=TabPos+12 FontSize(3) Pen(0,0.1) LineA(5,TabPos+13,45,TabPos+13) LineA(140,TabPos+13,180,TabPos+13) Text(25,TabPos+14,TA_Center,'Razítko a podpis odběratele') Text(160,TabPos+14,TA_Center,'Razítko a podpis dodavatele') ;if(Program.RezimDPH<>0) ; begin ; Pen(0,0.5) ; BoxA(0,TabPos,75,TabPos+20) ; Brush(UserBrush) ; BoxA(0,TabPos,25,TabPos+20) ; BoxA(0,TabPos,75,TabPos+5) ; Brush(NullBrush) ; Pen(0,0.2) ; LinesA(0,TabPos+5,75,TabPos+5,0,5,3) ; LinesA(25,TabPos,25,TabPos+20,25,0,2) ; Text(12.5,TabPos+1,TA_CENTER,'Sazba daně') ; Text(37.5,TabPos+1,TA_CENTER,'Základ') ; Text(62.5,TabPos+1,TA_CENTER,'Daň') ; if(BezDPH<>0) ; begin ; Text(12.5,TabPos+6,TA_CENTER,'0 %') ; Text(48,TabPos+6,TA_Right,Str(BezDPH,0,2)) ; Text(62.5,TabPos+6,TA_Center,'×') ; end ; if(NizsiDPHZaklad<>0) ; begin ; Text(12.5,TabPos+11,TA_CENTER,SazbaDPHNizsi+' %') ; Text(48,TabPos+11,TA_Right,Str(NizsiDPHZaklad,0,2)) ; Text(73,TabPos+11,TA_Right,Str(NizsiDPHDan,0,2)) ; end ; if(VyssiDPHZaklad<>0) ; begin ; Text(12.5,TabPos+16,TA_CENTER,SazbaDPHVyssi+' %') ; Text(48,TabPos+16,TA_Right,Str(VyssiDPHZaklad,0,2)) ; Text(73,TabPos+16,TA_Right,Str(VyssiDPHDan,0,2)) ; end ; end LocBo=LocW20) and (KeyPohyb5.Hrom=SwapL(SkupinovaOperace.Cislo)) and (VytiskRadku1) FontWidthScale(TabFontScale) TabPos(PoziceRozpPril) DynTab(Hlava1) DynTab(Hlava2) LineA(7,PoziceRozpPril+8,148,PoziceRozpPril+8) TabPos(PoziceRozpPril+9) LocW4=0 NaStrane=0 ; puvodni While((LocW20) ;sklad begin LocStr=LocStr+Sklad.Sklad+#9 end if(Program.FTiskFlags&2<>0) ;druh begin LocStr=LocStr+Sklad.Druh+#9 end if(Program.FTiskFlags&4<>0) ;kod begin LocStr=LocStr+Sklad.Kod+#9 end if(Program.TiskCis) ; skladove cislo begin LocStr=LocStr+Pohyb.Material+#9 end ; LocStr=LocStr+Sklad.Nazev+#9+Str(Pohyb.JednCena,0,2)+#9+Pohyb.Mnozstvi+#9+Sklad.MJ+#9 LocStr=LocStr+Sklad.Nazev+#9+#9+Pohyb.Mnozstvi+#9+Sklad.MJ+#9 ; if(Program.RezimDPH<>0) ; begin ; LocStr=LocStr+Str(Pohyb.Castka,0,2)+#9+Pohyb.DPH+#9+Str(Pohyb.Castka*(1+Pohyb.DPH/100),0,2) ; end else ; begin ; LocStr=LocStr+Str(Pohyb.Castka,0,2); ; end DynTab(LocStr) if(Program.RezimDPH<>0) NaStrane=NaStrane+Pohyb.Castka*(1+Pohyb.DPH/100) else NaStrane=NaStrane+Pohyb.Castka LocW2=LocW2+1 VytiskRadku=VytiskRadku+1 Nalez=NextKey(KeyPohyb5,Veta) end ;TabPos=TabPos+2 LineA(7,TabPos,148,TabPos) LocW3=TabPos TabPos=TabPos+1 ; Text(173,TabPos,TA_Right,Str(NaStrane,0,2)) TabPos=TabPos+4 MeziSoucet=MeziSoucet+NaStrane ; Text(173,TabPos,TA_Right,Str(MeziSoucet,0,2)) FontFace(Normal) ; if(Program.RezimDPH<>0) ; begin ; LocW3=LocW3+1 ; Text(150,LocW3,TA_Right,'Celkem s DPH na straně') ; LocW3=LocW3+4 ; Text(150,LocW3,TA_Right,'Celkem s DPH mezisoučet za přílohu') ; end else ; begin ; LocW3=LocW3+1 ; Text(150,LocW3,TA_Right,'Celkem na straně') ; LocW3=LocW3+4 ; Text(150,LocW3,TA_Right,'Celkem mezisoučet za přílohu') ; end TabPos=TabPos-14 end IF((Veta<>0) and (KeyPohyb5.Hrom=SwapL(SkupinovaOperace.Cislo))) GoTo(Znova) if(LocBo) begin FontSize(3) Pen(0,0.1) LineA(5,TabPos+23,45,TabPos+23) LineA(140,TabPos+23,180,TabPos+23) Text(25,TabPos+24,TA_Center,'Razítko a podpis odběratele') Text(160,TabPos+24,TA_Center,'Razítko a podpis dodavatele') AktStrana=AktStrana+1 FontSize(4.5) FontFace(Bold) Text(180,TabPos+30,TA_Right,'Strana '+AktStrana+' z(e) '+Str(PocetStran+1)) end END