; DDT pokladní doklad bez skladu jako daňový doklad, není určeno pro přímé volání ; verze z 19.1.2005 ; Autor: WinDUO Team Designed('') TabFontScale:Double PoziceRozpisu:Word PoziceRozpPril:Word ;**************************************************************************** ; Nastavení proměnných majících vliv na podobu tisku ;**************************************************************************** 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=55 ;y-souradnice, odkud se tiskne hlavicka PoziceRozpPril=16 ;y-souradnice, odkud se tiskne hlavicka na priloze ;**************************************************************************** DeclareRec('Program') if(Program.RezimDPH=0) Halt('Tato sestava je určena jen pro plátce DPH') DeclareRec('Pokladna') DeclareRec('Denik') DeclareRec('KeyDenik7') VetaP:LongInt ; definuje proměnnou pro pokladnu VetaD:LongInt ; definuje proměnnou pro denik LocStr:String GetBindRec('Pokladna') if(Pokladna.Vydaj) begin ;úvodní varování, když je to výdajový doklad DefDialog('Daňový doklad',462,224) DlgShade(-1,'',4,27,453,124) DlgBitmap(903,10,46) DlgStatic(-1,'Upozornění',16,5,79) DlgStatic(-1,'K výdajovému pokladnímu dokladu nelze tisknout',75,60,325) DlgStatic(-1,'daňový doklad',75,80,100) ; DlgButton(id_Yes,'Ano',414-124,156); ; DlgOnLineHelp(id_Yes,'Pokračuje i přes varování ve zpracování') DlgButton(id_Cancel,'Zpět',198,156); DlgOnLineHelp(id_No,'Ukončí bez zpracování') if(DlgExecute()<>ID_Yes) Halt end FontSize(4.5) FontFace(Bold) Text(180,0,TA_RIGHT,NazevDokladu) ;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,Pokladna.Doklad); FontFace(Normal) Text(142,5.5,TA_RIGHT,'Číslo dokladu') FontFace(Bold|Italic) FontSize(3.5) XText(118,13,60,TA_LEFT,'Odběratel-osoba, pro kterou se uskutečňuje plnění:') XText(0,16.5,60,TA_LEFT,'Dodavatel-plátce uskutečňující zdanitelné plnění:') FontFace(Bold); ClearFontIndex() GetFontIndex(64,Program.Firma) GetFontIndex(64,Program.Rozsireni) GetFontIndex(64,Program.Ulice) GetFontIndex(64,Program.Mesto) FontIndex() Text(17,20,TA_LEFT,Program.Firma) Text(17,23.3,TA_LEFT,Program.Rozsireni) Text(17,26.6,TA_LEFT,Program.Ulice) Text(17,30,TA_LEFT,Program.PSC+' '+Program.Mesto) ;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 FontSize(2.2) FontWidthScale(0) ClearFontIndex() GetFontIndex(56,Program.FaktSpecText[1]) GetFontIndex(56,Program.FaktSpecText[2) FontIndex() Text(114,33,TA_RIGHT,Program.FaktSpecText[1]) Text(114,35,TA_RIGHT,Program.FaktSpecText[2]) ;FontSize(2.5) ;Text(114,27.5,TA_RIGHT,Program.FaktSpecText[1]) ;Text(114,30,TA_RIGHT,Program.FaktSpecText[2]) FontSize(3.5) FontFace(Bold); FontWidthScale(0) ClearFontIndex() GetFontIndex(56,Pokladna.Firma) GetFontIndex(56,Pokladna.Rozsireni) GetFontIndex(56,Pokladna.Ulice) GetFontIndex(56,Pokladna.Mesto) FontIndex() Text(120,18,TA_LEFT,Pokladna.Firma) Text(120,21.3,TA_LEFT,Pokladna.Rozsireni) Text(120,24.6,TA_LEFT,Pokladna.Ulice) Text(120,28,TA_LEFT,Pokladna.Mesto) Text(120,31.4,TA_LEFT,Pokladna.PSC) ;IF(LENGTH(Pokladna.Rozsireni)<>0) ; begin ; Text(125,18,TA_LEFT,Pokladna.Firma) ; FontSize(3.0) ; Text(125,21.3,TA_LEFT,Pokladna.Rozsireni) ; FontFace(Normal); ; Text(125,24.6,TA_LEFT,Pokladna.Ulice) ; Text(125,28,TA_LEFT,Pokladna.Mesto) ; Text(125,31.4,TA_LEFT,Pokladna.PSC) ; end ;else ; begin ; Text(125,18,TA_LEFT,Pokladna.Firma) ; FontFace(Normal); ; Text(125,22,TA_LEFT,Pokladna.Ulice) ; Text(125,26,TA_LEFT,Pokladna.Mesto) ; Text(125,30,TA_LEFT,Pokladna.PSC) ; end FontFace(Normal); FontSize(3) Text(17,34,TA_LEFT,'IČ: '+NULL(Program.ICO,8,True)+' DIČ: '+Program.DIC) FontFace(Normal); FontFace(Bold); FontSize(5) Text(88,12,TA_Center,'Uhrazeno v hotovosti') FontSize(3.5) FontFace(Normal); if(Program.RezimDPH<>0) begin LocStr='Datum vystavení: '+StrDate(Pokladna.Datum)+' '+TextDatum+StrDate(Pokladna.Datum_ZP)) XText(2,40,113,TA_Left,LocStr) end else begin Text(5,40,TA_Left,'Datum vystavení: '+StrDate(Pokladna.Datum)) end ;FontSize(3) if(((not Program.HideICO) or (Pokladna.ICO>=Program.HideICOLess))and(Pokladna.ICO>0)) Text(125,40,TA_LEFT,'IČ: '+NULL(Pokladna.ICO,8,True)+' DIČ: '+Pokladna.DIC) FontSize(4) FontFace(Normal) if(Length(Pokladna.VSymb)>0) Text(5,PoziceRozpisu-3,TA_Left,'Var.symbol: ') Text(5,PoziceRozpisu+2,TA_Left,'Účel platby: ') FontSize(4.5) FontFace(Italic|Bold) if(Length(Pokladna.VSymb)>0) Text(25,PoziceRozpisu-3,TA_Left,Pokladna.VSymb) Text(25,PoziceRozpisu+2,TA_Left,Pokladna.Popis) ; ******************** ; Deklarace proměnných ; ******************** LocStr:String Hlava1:String Hlava2:String LocW:Word LocW2:Word LocW3:Word LocW4:Word LocL:LongInt 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=SazbaDPH(False,Pokladna.Datum_ZP) SazbaDPHVyssi=SazbaDPH(True,Pokladna.Datum_ZP) VyssiDPHZaklad=0 NizsiDPHZaklad=0 VyssiDPHDan=0 NizsiDPHDan=0 BezDPH=0 Celkem=0 CelkemBezDPH=0 DynStr='' NaStrane=0 PocetStran=0 AktStrana=0 MeziSoucet=0 TypZaokr:Byte ; ******************************** ; Vlastní zobrazení obsahu dokladu ; ******************************** ;dodelat vyscitani DPH z rozkontu nebo hlaseni na obrazovku o tom, ze to nejde ; Vypocet celkove castky a castek DPH (z rozkontu) ; vyhleda interni cislo v deniku: KeyDenik7.Length=4 KeyDenik7.Cislo=SwapL(Pokladna.Cislo) LocBo=SearchKey(KeyDenik7,VetaD) if((Pokladna.Cislo=SwapL(KeyDenik7.Cislo)) and LocBo) begin if(Pokladna.Datum_ZP=0) Message('Upozornění'+#13+' - na dokladu není vyplněno datum uplatnění DPH',mb_IconExclamation) ; cyklus pres interni cislo While((Pokladna.Cislo=SwapL(KeyDenik7.Cislo))and(VetaD<>0)) begin ReadRec(Denik,VetaD) ; přečte větu ze souboru if(Denik.DanT&$C0=$80) ; zaklad dane begin if(Denik.DanT&$30=0) begin BezDPH=BezDPH+Denik.Castka end else if(Denik.DanT&$30=$10) begin NizsiDPHZaklad=NizsiDPHZaklad+Denik.Castka end else if(Denik.DanT&$30=$20) begin VyssiDPHZaklad=VyssiDPHZaklad+Denik.Castka end; end else if(Denik.DanT&$C0=$C0) ; dan begin if(Denik.DanT&$30=$10) begin NizsiDPHDan=NizsiDPHDan+Denik.Castka end else if(Denik.DanT&$30=$20) begin VyssiDPHDan=VyssiDPHDan+Denik.Castka end; end; ;skok na dalsi vetu LocBo=NextKey(KeyDenik7,VetaD); end; end else begin ;DlgFollowMouse(True) ; v případě, že není rozkont ;{definice dialogu} TypSazby:Integer KoefAnoNe:Boolean=False DefDialog('Zadání DPH',462,224) DlgShade(-1,'',4,27,453,124) DlgStatic(-1,'Upřesňující dotaz:',16,5,120) DlgStatic(-1,'Doklad nebyl rozkontován, zadej, kterou sazbu DPH obsahuje:',16,30,410) DlgStatic(-1,'&Sazba DPH:',16,60,80) DlgCombo(101,TypSazby,110,56,100,128,9,CBS_DropDownList,'základní','snížená','mimo DPH') DlgOnLineHelp(101,'Pokud není doklad rozkontován, lze vytisknout doklad jen s jednou sazbou DPH') if(Val(RokZData(StrDate(Pokladna.Datum_ZP)))>=2005) begin DlgStatic(-1,'&Zaokr. DPH:',216,60,80) DlgCombo(103,TypZaokr,300,56,150,128,9,CBS_DropDownList,'desetihaléře','padesátihaléře','nezaokrouhlovat') DlgOnLineHelp(103,'Zvolte způsob zaokrouhlování DPH') end else begin TypZaokr=2; v roce 2004 nezaokrouhluje end DlgCheckBox(102,KoefAnoNe,90,107,200,,'&DPH počítat koeficientem') DlgOnLineHelp(102,'Zvolte, zda výpočet DPH bude proveden podle §37 a) nebo b)') if(Pokladna.Datum_ZP=0) DlgStatic(-1,'Upozornění - na dokladu není vyplněno datum DPH',50,130,400,,,,$0000FF) DlgButton(id_OK,'OK',414-124,156); DlgOnLineHelp(id_OK,'Pokračuje ve zpracování') DlgButton(id_Cancel,'Zpět',373,156); DlgOnLineHelp(id_Cancel,'Ukončí bez zpracování') if(DlgExecute(False)<>ID_OK) Halt if(TypSazby=0) ; výpocet ze zakladni sazby begin Koef:Real Koef=(SazbaDPHVyssi/(100+SazbaDPHVyssi)) if(KoefAnoNe) begin ;zaokrouhlit na 4 desetinna mista Koef=RoundFloat(Koef,-4) end VyssiDPHDan=Pokladna.Castka*Koef if(Val(RokZData(StrDate(Pokladna.Datum_ZP)))>=2005) begin if(TypZaokr=0); desetihaléře begin VyssiDPHDan=RoundFloat((VyssiDPHDan*10),0)/10 end if(TypZaokr=1); padesátihaléře begin VyssiDPHDan=RoundFloat((VyssiDPHDan*2),0)/2 end end else begin if(Pokladna.ZaokrDPH) ; zaokrouhlit na 10 nahoru VyssiDPHDan=RoundFloat(Int((VyssiDPHDan+0.09)*10)/10,-2) ;zaokrouhlit na 10 nahoru, mozna podle nastaveni zaokr. v dokladu nebo ve WinDUO end VyssiDPHZaklad=Pokladna.Castka-VyssiDPHDan end if(TypSazby=1) ; výpocet ze snizene sazby begin Koef:Real Koef=(SazbaDPHNizsi/(100+SazbaDPHNizsi)) if(KoefAnoNe) begin ;zaokrouhlit na 4 desetinna mista Koef=RoundFloat(Koef,-4) end NizsiDPHDan=Pokladna.Castka*Koef if(Val(RokZData(StrDate(Pokladna.Datum_ZP)))>=2005) begin if(TypZaokr=0); desetihaléře begin NizsiDPHDan=RoundFloat((NizsiDPHDan*10),0)/10 end if(TypZaokr=1); padesátihaléře begin NizsiDPHDan=RoundFloat((NizsiDPHDan*2),0)/2 end end else begin if(Pokladna.ZaokrDPH) ; zaokrouhlit na 10 nahoru NizsiDPHDan=RoundFloat(Int((NizsiDPHDan+0.09)*10)/10,-2) end NizsiDPHZaklad=Pokladna.Castka-NizsiDPHDan end if(TypSazby=2) ; výpocet mimo DPH begin BezDPH=Pokladna.Castka end end; CelkemBezDPH=NizsiDPHZaklad+VyssiDPHZaklad+BezDPH Celkem=CelkemBezDPH+NizsiDPHDan+VyssiDPHDan TabPos(PoziceRozpisu+15) LineA(0,TabPos,180,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 TabPos=TabPos+2 Pen(0,0.7) Brush(UserBrush) BoxA(123,TabPos,173,TabPos+10) Brush(NullBrush) FontSize(6) FontFace(Bold) if(Pokladna.CastkaM<>0) Text(118,TabPos+1.5,TA_RIGHT,'Celkem uhrazeno:'); else Text(118,TabPos,TA_RIGHT,'Celkem uhrazeno:'); FontFace(Bold) FontSize(7) if(Pokladna.CastkaM<>0) begin Text(170,TabPos+1.5,TA_RIGHT,Str(Pokladna.CastkaM,0,2)+' '+NumToCCC(Pokladna.Mena)) FontFace(Normal) FontSize(3.5) Text(5,TabPos-2,TA_LEFT,'Převod na '+Program.Mena+': '+Str(Pokladna.Castka,0,2)) Text(5,TabPos+1.5,TA_LEFT,'Kurz: '+Str(Pokladna.Castka/Pokladna.CastkaM,0,2)) end else Text(169,TabPos+1.5,TA_RIGHT,Str(Pokladna.Castka,0,2)+' '+Program.Mena) FontSize(3) FontFace(Normal) LocStr='' LocD=Round(Frac(Pokladna.Castka)*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(Pokladna.Castka,True,False)+' '+Program.Mena+' '+LocStr FontFace(Normal) if(Pokladna.CastkaM<>0) begin FontSize(3.5) Text(5,TabPos+7,TA_LEFT,'Slovy: '+LocStr) end else begin FontSize(3) Text(118,TabPos+7,TA_RIGHT,'Slovy: '+LocStr) end TabPos=TabPos+12 FontSize(3) Pen(0,0.1) ;LineA(85,TabPos+13,125,TabPos+13) LineA(140,TabPos+35,180,TabPos+35) ;Text(105,TabPos+14,TA_Center,'Razítko a podpis odběratele') Text(160,TabPos+36,TA_Center,'Razítko a podpis') 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 DPH') Text(37.5,TabPos+1,TA_CENTER,'Základ v '+Program.Mena) Text(62.5,TabPos+1,TA_CENTER,'DPH v '+Program.Mena) Text(12.5,TabPos+16,TA_CENTER,'0 %') Text(12.5,TabPos+11,TA_CENTER,SazbaDPHNizsi+' %') Text(12.5,TabPos+6,TA_CENTER,SazbaDPHVyssi+' %') if(VyssiDPHZaklad<>0) begin Text(48,TabPos+6,TA_Right,Str(VyssiDPHZaklad,0,2)) Text(73,TabPos+6,TA_Right,Str(VyssiDPHDan,0,2)) end if(NizsiDPHZaklad<>0) begin Text(48,TabPos+11,TA_Right,Str(NizsiDPHZaklad,0,2)) Text(73,TabPos+11,TA_Right,Str(NizsiDPHDan,0,2)) end if(BezDPH<>0) begin Text(48,TabPos+16,TA_Right,Str(BezDPH,0,2)) Text(62.5,TabPos+16,TA_Center,'×') end end LocBo=LocW2