; DDT faktury do predtisteneho formulare 1 ; verze z 11.7.2003 ; Autor: WinDUO Team Name('Faktura II') FileName('Fakt2.WNS') Designed('Faktura') Author('Winduo Team','EMail: winduo@winduo.cz','http://www.winduo.com','http://www.winduo.cz') Descr('Faktura do předtištěného formuláře z DUO pro DOS','druhá a další strana na čistý papír.') Designed('Faktura') DeclareRec('Program') DeclareRec('Faktura') DeclareRec('Pohledavka'); GetBindRec('Pohledavka'); DeclareRec('RozpisFaktury') InitStatus(GetCountBindRec('Faktura'),'Vytvářím doklad','k pohledávce č.'+Pohledavka.Doklad); ;**************************************************************************** ; Deklarace globálních proměnných pro podprogram tisku řádků faktury ;**************************************************************************** Global Max :Array[1..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 ;nutno zadat hodnoty: Global SirkaFontuText:Real=0.9 ;1.5 Global VyskaFontuText:Real=4 ;velikost pisma textu faktury Global FaktXPozice :Real=7 ;x-vzdalenost leveho okraje Global FaktSirka :Real=166 ;x-vzdalenost praveho okraje Global FaktOdstup :Real=4.5 ;y-vzdalenost mezi radky textu Global JeFaktura :Boolean=True ;podle nastaveni tiskne ser.cisla nebo ne Global SazbaDPHNizsi:Byte=SazbaDPH(False,Pohledavka.Datum_ZP) Global SazbaDPHVyssi:Byte=SazbaDPH(True,Pohledavka.Datum_ZP) StatusWindowInCall(False) ;**************************************************************************** ;Deklarace lokálních promennych ;**************************************************************************** ;nutno zadat hodnoty: FaktYPozice1:Real=120 ;y-souřadnice začátku textu ve fakture FaktYPozice2:Real=10 ;y-souřadnice začátku textu v priloze YTabDPH:Real=250 ;y-souřadnice pozice pro tabulku rozpisu DPH MaxLines:Word=9 ;Maximalni pocet radku ve fakture MaxLinesPril:Word=45 ;Maximalni pocet radku v priloze ;MaxLines:Word=Program.MaxRadF ; pokud přebírá tato nastavení z nastavení faktury ;MaxLinesPril:Word=Program.MaxRadP ; pokud přebírá tato nastavení z nastavení faktury LocS:String if(Program.Sklady) begin DeclareRec('Sklad') DeclareRec('KeySklad10') end if(Program.TiskIDB) begin DeclareRec('BankovniUcet') DeclareRec('KeyBankovniUcet1') end Hlavicka:Faktura LocL:LongInt LocStr:String LocStr2:String TiskDPH:Boolean GetBindRec('Hlavicka',0) GetBindRec('Pohledavka',0) GetBindRec('RozpisFaktury') TiskDPH=(Program.RezimDPH<>0) and (Hlavicka.Typ=0) ;**************************************************************************** ; Tisk hlavickovych udaju ;**************************************************************************** ;PaintMetaFile(75,18,98.8,39.2,Program.Logo) ;FontFace(Bold) ;FontSize(6) ;FontWidthScale(2.0) ;Text(96,25,TA_RIGHT,'ZÁLOHOVÁ') ;FontWidthScale(0) FontFace(Bold|Italic) FontSize(4) Text(44,33,TA_LEFT,NULL(Program.ICO,8,True) FontSize(5) Text(175,34,TA_RIGHT,Pohledavka.Doklad); FontSize(4) Text(44,37,TA_LEFT,Program.DIC) Text(175,39,TA_RIGHT,Pohledavka.KSymb) ClearFontIndex() GetFontIndex(64,Program.Firma) GetFontIndex(64,Program.Rozsireni) GetFontIndex(64,Program.Ulice) GetFontIndex(64,Program.Mesto) FontIndex() Text(24,44,TA_LEFT,Program.Firma) Text(24,48,TA_LEFT,Program.Rozsireni) Text(24,52,TA_LEFT,Program.Ulice) Text(12,56,TA_LEFT,Program.PSC) Text(24,56,TA_LEFT,Program.Mesto) if((not Program.HideICO) or (Pohledavka.ICO>=Program.HideICOLess)) Text(130,50,TA_LEFT,NULL(Pohledavka.ICO,8,True)) FontSize(2.5) Text(8,60,TA_LEFT,Program.FaktSpecText[1]) Text(8,62.5,TA_LEFT,Program.FaktSpecText[2]) FontSize(5) Text(130,54,TA_LEFT,Pohledavka.DIC) FontSize(5) ClearFontIndex() GetFontIndex(70,Pohledavka.Firma) GetFontIndex(70,Pohledavka.Rozsireni) GetFontIndex(70,Pohledavka.Ulice) GetFontIndex(70,Pohledavka.Mesto) GetFontIndex(70,Pohledavka.PSC) FontIndex() Text(105,59,TA_LEFT,Pohledavka.Firma) Text(105,64,TA_LEFT,Pohledavka.Rozsireni) Text(105,69,TA_LEFT,Pohledavka.Ulice) ;Text(105,74,TA_LEFT,Pohledavka.Mesto) ;Text(105,79,TA_LEFT,Pohledavka.PSC) if((Program.FTiskFlags&$20<>0)or(Hlavicka.Typ=2)) begin Text(91,74,TA_LEFT,Pohledavka.PSC) Text(105,74,TA_LEFT,Pohledavka.Mesto) Text(105,79,TA_LEFT,Pohledavka.Stat) end else begin Text(105,74,TA_LEFT,Pohledavka.Mesto) Text(105,79,TA_LEFT,Pohledavka.PSC) end if(Pohledavka.Banka<>0) begin Text(30,65,TA_LEFT,Pohledavka.Ucet+'/'+Null(Str(Pohledavka.Banka),4)) if(Program.TiskIDB) begin KeyBankovniUcet1.Ucet=Null(Str(Pohledavka.Banka),4)+Pohledavka.Ucet if(FindKey(KeyBankovniUcet1,LocL)) ReadRec(BankovniUcet,LocL) else ClearRec(BankovniUcet) Text(30,71,TA_LEFT,BankovniUcet.NazevB) ;nazev banky LocStr=BankovniUcet.Ulice if((Length(LocStr)<>0) and (Length(BankovniUcet.Mesto)<>0)) LocStr=LocStr+',' LocStr=LocStr+BankovniUcet.Mesto Text(30,76,TA_LEFT,LocStr) end end; Text(45,88,TA_LEFT,Pohledavka.OBJEDNAVKA) FontFace(Bold|Italic) FontSize(3.5) Text(150,88,TA_Left,StrDate(Pohledavka.DatSpl)) ;datum splatnosti Text(150,92,TA_Left,StrDate(Pohledavka.DatVyst)) ;datum odeslání = vystevení Text(150,96,TA_Left,StrDate(Pohledavka.DatVyst)) ;datum vystavení if(Program.RezimDPH<>0) begin if(TiskDPH) Text(150,100,TA_Left,StrDate(Pohledavka.Datum_ZP)) ;datum DPH end else begin Text(140,100,TA_Left,'dodavatel není plátce DPH') ;datum DPH end; if(Pohledavka.Platba<>0) Text(150,104,TA_Left,GetString(5500-Pohledavka.Platba)) FontFace(Normal) FontSize(3) TabPos=200 ; pozice pro tabulku rozpisu DPH if(TiskDPH) begin Pen(0,0.5) BoxA(10,TabPos,85,TabPos+20) ;Brush(UserBrush) BoxA(10,TabPos,35,TabPos+20) BoxA(10,TabPos,85,TabPos+5) ;Brush(NullBrush) Pen(0,0.2) LinesA(10,TabPos+5,85,TabPos+5,0,5,3) LinesA(35,TabPos,35,TabPos+20,25,0,2) Text(22.5,TabPos+1,TA_CENTER,'Sazba daně') Text(47.5,TabPos+1,TA_CENTER,'Základ (v '+Program.Mena+')') Text(72.5,TabPos+1,TA_CENTER,'Daň (v '+Program.Mena+')') if(RozpisFaktury.DPHZakladBez<>0) begin Text(22.5,TabPos+6,TA_CENTER,'0 %') Text(58,TabPos+6,TA_Right,Str(RozpisFaktury.DPHZakladBez,0,2)) Text(72.5,TabPos+6,TA_Center,'×') end if(RozpisFaktury.DPHZakladNizsi<>0) begin Text(22.5,TabPos+11,TA_CENTER,Str(SazbaDPHNizsi)+' %') Text(58,TabPos+11,TA_Right,Str(RozpisFaktury.DPHZakladNizsi,0,2)) Text(83,TabPos+11,TA_Right,Str(RozpisFaktury.DPHDanNizsi,0,2)) end if(RozpisFaktury.DPHZakladVyssi<>0) begin Text(22.5,TabPos+16,TA_CENTER,Str(SazbaDPHVyssi)+' %') Text(58,TabPos+16,TA_Right,Str(RozpisFaktury.DPHZakladVyssi,0,2)) Text(83,TabPos+16,TA_Right,Str(RozpisFaktury.DPHDanVyssi,0,2)) end end TabPos=185 if(RozpisFaktury.Zaloha=0) begin if(TiskDPH) begin Text(150,TabPos,TA_Right,'Celkem bez DPH') Text(173,TabPos,TA_Right,Str(RozpisFaktury.Celkem,0,2)) TabPos=TabPos+5 Text(150,TabPos,TA_Right,'DPH') Text(173,TabPos,TA_Right,Str(RozpisFaktury.CelDPH-RozpisFaktury.Celkem,0,2)) TabPos=TabPos+5 Text(150,TabPos,TA_Right,'Celkem s DPH') Text(173,TabPos,TA_Right,Str(RozpisFaktury.CelDPH,0,2)) if(RozpisFaktury.Zaokr<>0) begin TabPos=TabPos+5 Text(150,TabPos,TA_Right,'Zaokrouhlení') Text(173,TabPos,TA_Right,Str(RozpisFaktury.Zaokr,0,2)) end; end else begin TabPos=TabPos+5 Text(150,TabPos,TA_Right,'Celkem') Text(173,TabPos,TA_Right,Str(RozpisFaktury.CelDPH,0,2)) if(RozpisFaktury.Zaokr<>0) begin TabPos=TabPos+5 Text(150,TabPos,TA_Right,'Zaokrouhlení') Text(173,TabPos,TA_Right,Str(RozpisFaktury.Zaokr,0,2)) end; end end else begin LocTabPos:Real=TabPos Text(50,TabPos,TA_Right,'Celkem bez DPH') Text(73,TabPos,TA_Right,Str(RozpisFaktury.DPHZakladBez+RozpisFaktury.DPHZakladNizsi+RozpisFaktury.DPHZakladVyssi,0,2)) TabPos=TabPos+4 Text(50,TabPos,TA_Right,'DPH') Text(73,TabPos,TA_Right,Str(RozpisFaktury.DPHDanNizsi+RozpisFaktury.DPHDanVyssi,0,2)) TabPos=TabPos+4 Text(50,TabPos,TA_Right,'Celkem s DPH') Text(73,TabPos,TA_Right,Str(RozpisFaktury.DPHDanNizsi+RozpisFaktury.DPHDanVyssi+RozpisFaktury.DPHZakladBez+RozpisFaktury.DPHZakladNizsi+RozpisFaktury.DPHZakladVyssi,0,2)) TabPos=LocTabPos Text(150,TabPos,TA_Right,'Celkem na dokladu') Text(173,TabPos,TA_Right,Str(RozpisFaktury.CelBZ,0,2)) TabPos=TabPos+4 Text(150,TabPos,TA_Right,'Záloha') Text(173,TabPos,TA_Right,Str(RozpisFaktury.Zaloha,0,2)) TabPos=TabPos+4 Text(150,TabPos,TA_Right,'Zbývá k proplacení') Text(173,TabPos,TA_Right,Str(RozpisFaktury.CelDPH,0,2)) if(RozpisFaktury.Zaokr<>0) begin TabPos=TabPos+4 Text(150,TabPos,TA_Right,'Zaokrouhlení') Text(173,TabPos,TA_Right,Str(RozpisFaktury.Zaokr,0,2)) end; end if(Hlavicka.FSleva<>0) begin FontSize(3.5) Text(7,190,TA_Left,'Na doklad byla poskytnuta sleva ve výši '+Str(Hlavicka.FSleva)+'%') end; FontSize(3.5) FontWidthScale(0.80) ;do zálohové faktury NE: Text(5,220,TA_LEFT,SupplString(Str(Program.Penale,0,2),Program.FText)) FontWidthScale(0) FontFace(Normal|Italic) Text(9,236,TA_Left,Pohledavka.Vystavil) IF(Length(Program.Telefon)<>0) Text(9,240,TA_Left,'telefon: '+Program.Telefon) IF(Length(Program.email)<>0) Text(9,244,TA_Left,'email: '+Program.email) FontSize(7) FontFace(Bold|Italic) Text(171,209,TA_RIGHT,StrFinanc(RozpisFaktury.Propla,2,True)) Text(173,209,TA_LEFT,NumToCCC(Hlavicka.FMena)) ;**************************************************************************** ; Vytisteni dokladu ;**************************************************************************** OdRadku=1 Strana=0 PocetRadku=MaxLines FaktYPozice=FaktYPozice1 CallDDT('FaktProc.DDT'); ;**************************************************************************** ; Vytisteni prilohy ;**************************************************************************** ;spocitani poctu priloh: PocetStran:Word=Strana Global OdRadkuPocet:Word=OdRadku if(not VseVytisteno) begin Global VseVytistenoPocet:Boolean=False While(not VseVytistenoPocet) begin SetStatus(OdRadku); PocetRadku=MaxLinesPril Inc(PocetStran) FaktYPozice=FaktYPozice2 CallDDT('FaktPoc.DDT'); end; end poprve:Boolean=True While(not VseVytisteno) begin SetStatus(OdRadku); FontFace(Normal) FontSize(3.5) IF((PocetStran>0)and(poprve)) begin Text(175,240,TA_RIGHT,'Strana '+Str(Strana+1,2,0)); Text(175,244,TA_RIGHT,'Počet stran přílohy, která je nedílnou součástí tohoto daňového dokladu: '+Str(PocetStran,2,0)); end else begin Text(175,244,TA_RIGHT,'Příloha strana '+Str(Strana,2,0)); end poprve=False NextPage FontFace(Bold|Italic) FontSize(5) Text(175,4,TA_RIGHT,'Příloha k faktuře: '+Pohledavka.Doklad); PocetRadku=MaxLinesPril Inc(Strana) FaktYPozice=FaktYPozice2 CallDDT('FaktProc.DDT'); end; If(Strana>=1) begin FontFace(Normal) FontSize(3.5) Text(175,244,TA_RIGHT,'Příloha strana '+Str(Strana,2,0)); end SetStatusMax; if(Strana=1) begin Message('Faktura obsahuje první stranu a jednu stranu přílohy, v tiskárně musí být vhodné papíry...',mb_IconExclamation) end; if(Strana>1) begin if(Strana<5) begin Message('Faktura obsahuje první stranu a '+Str(Strana)+' strany přílohy, v tiskárně musí být vhodné papíry...',mb_IconExclamation) end; else begin Message('Faktura obsahuje první stranu a '+Str(Strana)+' stran přílohy, v tiskárně musí být vhodné papíry...',mb_IconExclamation) end; end END