; DDT tisk dodacího listu ; verze z 12.09.2007 ; Autor: WinDUO Team Name('Dodací list') FileName('DodL.WNS') Designed('HRP_MAN') Author('Winduo Team','e-mail: winduo@winduo.cz','http://www.winduo.com','http://www.winduo.cz') Descr('Dodací list na čistý papír') DeclareRec('Program') DeclareRec('Pohyb'); DeclareRec('SkupinovaOperace'); GetBindRec('SkupinovaOperace'); DeclareRec('Adresar') DeclareRec('KeyAdresar1') DeclareRec('Pohyb') DeclareRec('KeyPohyb5') DeclareRec('Sklad') DeclareRec('KeySklad10') DeclareRec('PohybSeriovehoCisla') DeclareRec('KeyPohybSeriovehoCisla3') DeclareRec('SerioveCislo') DeclareRec('KeySerioveCislo1') ;{******************************************************************************************************************} ;{deklarace} XDolniText:Integer=10 ;x-souradnice dolniho textu YDolniText:Integer=230 ;y-souradnice dolniho textu PosunDolniText:Real=3 ;radkovani dolniho textu v mm LocLAd :LongInt LocBPo :Boolean LocLPo :LongInt LocBPS :Boolean LocLPS :LongInt LocLZb :LongInt LocLSC :LongInt PPS :LongInt=0 ;počet položek na stránce PPC :LongInt=0 ;počet položek celkem na dokladě MaxPPS :LongInt=36 ;maximální počet položek tištěných na stránce Max2PPS :LongInt=50 ;maximální počet položek tištěných na stránce Max :LongInt PS :LongInt=1 ;počet stran CPS :LongInt ;celkový po4et stran PCR :LongInt=0 ;počet ser.čísel na řádku MCR :LongInt=60 ;mezera meyi ser.čísly MaxPCR :LongInt=3 ;maximální počet ser.čísel na řádku SNJO :Boolean RadekY :Double=77 ;{******************************************************************************************************************} ;{tisk - tabulky + statické hodnoty} FontFace(Bold) FontSize(7) Text(188,2,TA_RIGHT,'Dodací list') PEN(0,0.7) ROUNDBoxA(90,24,183,63,5,5) Brush(UserBrush) BoxA(110,10,188,17) Brush(NullBrush) PEN(0,0.4) BoxA(5,10,188,71) BoxA(5,255,188,275) PEN(0,0.2) LineA(10,24,85,24) LineA(134,17,134,24) LineA(95,35,178,35) LineA(10,60.5,85,60.5) FontFace(Bold) FontSize(4) Text( 41,13,TA_RIGHT,'Dodavatel - IČ:') Text( 41,18,TA_RIGHT,'DIČ:') Text( 15,29,TA_LEFT ,'Adresa:') Text(113,11,TA_LEFT ,'Doklad:') Text(10,65,TA_LEFT ,'Datum vystavení:') Text(121,26,TA_RIGHT,'Odběratel - IČ:') Text(121,30,TA_RIGHT,'DIČ:') FontFace(Bold) FontSize(3) Text(20,258,TA_Left,'Vystavil:') Text(130,258,TA_Left,'Převzal:') FontFace(Normal) FontSize(2.5) Text(179.5,275,TA_Right,'Doklad vystaven systémem') FontFace(Normal|Italic) Text(183.4,275,TA_Right,'Win') FontFace(Normal) Text(188,275,TA_Right,'DUO') FontFace(Bold) FontSize(3.5) Text(10,RadekY-2,TA_LEFT,'Číslo') Text(35,RadekY-2,TA_LEFT,'Název') Text(180,RadekY-2,TA_RIGHT,'Množství') PEN(0,0.4) LineA(5,RadekY+3,188,RadekY+3) ;{******************************************************************************************************************} ;{zjištění počtu stran} KeyPohyb5.Length=4 KeyPohyb5.Hrom=SwapL(SkupinovaOperace.Cislo) LocBPo=SearchKey(KeyPohyb5,LocLPo) Max=MaxPPS CPS=1 While((LocBPo) and (SwapL(KeyPohyb5.Hrom)=SkupinovaOperace.Cislo)) begin ReadRec(Pohyb,LocLPo) Inc(PPS) if(PPS>Max) begin Inc(CPS) Max=Max2PPS PPS=1 end PCR=0 KeyPohybSeriovehoCisla3.Length=4 KeyPohybSeriovehoCisla3.CisloPH=SwapL(Pohyb.Cislo) LocBPS=FindKey(KeyPohybSeriovehoCisla3,LocLPS) SNJO=false while((LocBPS)and(KeyPohybSeriovehoCisla3.CisloPH=SwapL(Pohyb.Cislo))) begin SNJO=true if(PCR=0) Inc(PPS) ReadRec(PohybSeriovehoCisla,LocLPS) Inc(PCR); if(PCR>MaxPCR) begin PCR=1 Inc(PPS,3) end if(PPS>Max) begin Inc(CPS) Max=Max2PPS PPS=1 end LocBPS=NextKey(KeyPohybSeriovehoCisla3,LocLPS) end if(SNJO) Inc(PPS,2) LocBPo=NextKey(KeyPohyb5,LocLPo) end ;{******************************************************************************************************************} ;{tisk - hlavička} FontFace(Bold|Italic) FontSize(4) Text(43,13,TA_LEFT,NULL(Program.ICO,8,True)) Text(43,18,TA_LEFT,Program.DIC) FontSize(5) ClearFontIndex() GetFontIndex(62,Program.Firma) GetFontIndex(62,Program.Rozsireni) GetFontIndex(62,Program.Ulice) GetFontIndex(62,Program.Mesto) FontIndex() Text(22,33,TA_LEFT,Program.Firma) Text(22,37,TA_LEFT,Program.Rozsireni) Text(22,41,TA_LEFT,Program.Ulice) Text(8,45,TA_LEFT,Program.PSC) Text(22,45,TA_LEFT,Program.Mesto) FontSize(2.5) Text(8,52,TA_LEFT,Program.FaktSpecText[1]) Text(8,54.5,TA_LEFT,Program.FaktSpecText[2]) FontSize(5) Text(180,11,TA_RIGHT,SkupinovaOperace.Doklad); KeyAdresar1.Length=4 KeyAdresar1.ICO=SwapL(SkupinovaOperace.ICO) if(FindKey(KeyAdresar1,LocLAd)) ReadRec(Adresar,LocLAd) else ClearRec(Adresar) FontSize(4) if((not Program.HideICO) or (Adresar.ICO>=Program.HideICOLess)) Text(123,26,TA_LEFT,NULL(Adresar.ICO,8,True)) Text(123,30,TA_LEFT,Adresar.DIC) FontSize(5) ClearFontIndex() GetFontIndex(72,Adresar.Nazev) GetFontIndex(72,Adresar.Rozsireni) GetFontIndex(72,Adresar.Ulice) GetFontIndex(72,Adresar.Mesto) GetFontIndex(72,Adresar.PSC) FontIndex() Text(105,36,TA_LEFT,Adresar.Nazev) Text(105,41,TA_LEFT,Adresar.Rozsireni) Text(105,46,TA_LEFT,Adresar.Ulice) Text(105,51,TA_LEFT,Adresar.Mesto) Text(105,56,TA_LEFT,Adresar.PSC) FontFace(Bold|Italic) FontSize(3.5) Text(80,65,TA_RIGHT,StrDate(SkupinovaOperace.Datum)) Text(180,65,TA_RIGHT,'Strana 1/'+CPS) ;{******************************************************************************************************************} ;{procedura NovaStrana - vytvoří další stránky} procedure NovaStrana NextPage Inc(PS) PPS=1 MaxPPS=Max2PPS RadekY=32 FontFace(Bold) FontSize(7) Text(188,2,TA_RIGHT,'Dodací list') PEN(0,0.7) Brush(UserBrush) BoxA(110,10,188,17) Brush(NullBrush) PEN(0,0.4) BoxA(5,10,188,26) FontFace(Bold) FontSize(4) Text(41,13,TA_RIGHT,'Dodavatel - IČ:') Text(41,18,TA_RIGHT,'DIČ:') Text(113,11,TA_LEFT ,'Doklad:') FontFace(Bold|Italic) Text(43,13,TA_LEFT,NULL(Program.ICO,8,True)) Text(43,18,TA_LEFT,Program.DIC) FontSize(5) Text(180,11,TA_RIGHT,SkupinovaOperace.Doklad); FontFace(Bold|Italic) FontSize(3.5) Text(180,20,TA_RIGHT,'Strana '+PS+'/'+CPS) FontFace(Bold) FontSize(3.5) Text(10,RadekY-2,TA_LEFT,'Číslo') Text(35,RadekY-2,TA_LEFT,'Název') Text(180,RadekY-2,TA_RIGHT,'Množství') PEN(0,0.4) LineA(5,RadekY+3,188,RadekY+3) FontFace(Normal) FontSize(2.5) Text(179.5,275,TA_Right,'Doklad vystaven systémem') FontFace(Normal|Italic) Text(183.4,275,TA_Right,'Win') FontFace(Normal) Text(188,275,TA_Right,'DUO') end; ;{******************************************************************************************************************} ;{tisk - řádky} PPS=0 KeyPohyb5.Length=4 KeyPohyb5.Hrom=SwapL(SkupinovaOperace.Cislo) LocBPo=SearchKey(KeyPohyb5,LocLPo) While((LocBPo) and (SwapL(KeyPohyb5.Hrom)=SkupinovaOperace.Cislo)) begin ReadRec(Pohyb,LocLPo) KeySklad10.Length=SizeOf(KeySklad10)-1 KeySklad10.Cislo=SwapL(Pohyb.CisloMat) if(FindKey(KeySklad10,LocLZb)) ReadRec(Sklad,LocLZb) else ClearRec(Sklad) Inc(PPC) Inc(PPS) if(PPS>MaxPPS) NovaStrana FontFace(Normal) FontSize(3) Text(10,RadekY+(PPS*4.5),TA_LEFT,Sklad.Material) Text(35,RadekY+(PPS*4.5),TA_LEFT,Sklad.Nazev) Text(180,RadekY+(PPS*4.5),TA_RIGHT,StrFinanc(Pohyb.Mnozstvi,3,True)) PCR=0 KeyPohybSeriovehoCisla3.Length=4 KeyPohybSeriovehoCisla3.CisloPH=SwapL(Pohyb.Cislo) LocBPS=FindKey(KeyPohybSeriovehoCisla3,LocLPS) SNJO=false while((LocBPS)and(KeyPohybSeriovehoCisla3.CisloPH=SwapL(Pohyb.Cislo))) begin SNJO=true if(PCR=0) Inc(PPS) ReadRec(PohybSeriovehoCisla,LocLPS) KeySerioveCislo1.Length=4 KeySerioveCislo1.Cislo=SwapL(PohybSeriovehoCisla.CisloSN) if(FindKey(KeySerioveCislo1,LocLSC)) ReadRec(SerioveCislo,LocLSC) else ClearRec(SerioveCislo) Inc(PCR); if(PCR>MaxPCR) begin PCR=1 Inc(PPS,3) end if(PPS>MaxPPS) NovaStrana BarCode(bc_Code128,(((PCR-1)*MCR)+8),RadekY+(PPS*4.5),MCR-2,7.5,SerioveCislo.Number,False,True) FontFace(Normal) FontSize(2.5) Text((((PCR-1)*MCR)+10),RadekY+(PPS*4.5)+8,TA_LEFT,SerioveCislo.Number) if(PohybSeriovehoCisla.Mnozstvi>1) Text((((PCR-1)*MCR)+MCR-1),RadekY+(PPS*4.5)+8,TA_RIGHT,'Množství - '+PohybSeriovehoCisla.Mnozstvi) LocBPS=NextKey(KeyPohybSeriovehoCisla3,LocLPS) end if(SNJO) Inc(PPS,2) LocBPo=NextKey(KeyPohyb5,LocLPo) end END ;**************************************************************************** ; 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.7 ;1.5 Global VyskaFontuText:Real=4 ;velikost pisma textu faktury ;SirkaFontuText=1.8 ;VyskaFontuText=4 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=False ;podle nastaveni tiskne ser.cisla nebo ne StatusWindowInCall(False) ;**************************************************************************** ;Deklarace lokálních promennych ;**************************************************************************** ;nutno zadat hodnoty: FaktYPozice1:Real=76 ;y-souřadnice začátku textu v prvni strane FaktYPozice2:Real=23 ;y-souřadnice začátku textu v priloze YTabDPH:Real=250 ;y-souřadnice pozice pro tabulku rozpisu DPH MaxLines:Word=30 ;Maximalni pocet radku ve fakture MaxLinesPril:Word=48 ;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) XDolniText:Integer=10 ;x-souradnice dolniho textu YDolniText:Integer=230 ;y-souradnice dolniho textu PosunDolniText:Real=3 ;radkovani dolniho textu v mm VelDolniText:Real=2.8 ;velikost pisma dolniho textu ; dodelat,at to nacita z INI pres DDS T1:String='' ;dolni text - 1.rádek T2:String='' ;dolni text - 2.rádek T3:String='' ;dolni text - 3.rádek T4:String='' ;dolni text - 4.rádek ;**************************************************************************** ; Tisk rámečků a textů ;**************************************************************************** FontFace(Normal) FontSize(VelDolniText) Text(XDolniText,YDolniText,TA_Left,T1) YDolniText=YDolniText+PosunDolniText Text(XDolniText,YDolniText,TA_Left,T2) YDolniText=YDolniText+PosunDolniText Text(XDolniText,YDolniText,TA_Left,T3) YDolniText=YDolniText+PosunDolniText Text(XDolniText,YDolniText,TA_Left,T4) YDolniText=YDolniText+PosunDolniText FontFace(Bold) FontSize(4) Text(20,250,TA_Left,'Vystavil:') Text(130,250,TA_Left,'Převzal:') ;Text(130,250,TA_Left,'Razítko a podpis:') FontFace(Normal) FontSize(2.5) Text(179.5,275,TA_Right,'Doklad vystaven systémem') FontFace(Normal|Italic) Text(183.4,275,TA_Right,'Win') FontFace(Normal) Text(188,275,TA_Right,'DUO') ;**************************************************************************** ; Tisk hlavickovych udaju ;**************************************************************************** FontFace(Bold|Italic) FontSize(4) Text(43,14,TA_LEFT,NULL(Program.ICO,8,True)) Text(43,18,TA_LEFT,Program.DIC) FontSize(5) ClearFontIndex() GetFontIndex(62,Program.Firma) GetFontIndex(62,Program.Rozsireni) GetFontIndex(62,Program.Ulice) GetFontIndex(62,Program.Mesto) FontIndex() Text(22,33,TA_LEFT,Program.Firma) Text(22,37,TA_LEFT,Program.Rozsireni) Text(22,41,TA_LEFT,Program.Ulice) Text(8,45,TA_LEFT,Program.PSC) Text(22,45,TA_LEFT,Program.Mesto) FontSize(2.5) Text(8,52,TA_LEFT,Program.FaktSpecText[1]) Text(8,54.5,TA_LEFT,Program.FaktSpecText[2]) FontSize(5) Text(180,11,TA_RIGHT,Pohledavka.Doklad); FontSize(4) if(Length(Pohledavka.PrijemceNazev)>0) begin FontSize(5) ClearFontIndex() GetFontIndex(72,Pohledavka.PrijemceNazev) GetFontIndex(72,Pohledavka.PrijemceRozsireni) GetFontIndex(72,Pohledavka.PrijemceUlice) GetFontIndex(72,Pohledavka.PrijemceMesto) GetFontIndex(72,Pohledavka.PrijemcePSC) FontIndex() Text(105,36,TA_LEFT,Pohledavka.PrijemceNazev) Text(105,41,TA_LEFT,Pohledavka.PrijemceRozsireni) Text(105,46,TA_LEFT,Pohledavka.PrijemceUlice) Text(105,51,TA_LEFT,Pohledavka.PrijemceMesto) Text(105,56,TA_LEFT,Pohledavka.PrijemcePSC) end else begin if((not Program.HideICO) or (Pohledavka.ICO>=Program.HideICOLess)) Text(123,26,TA_LEFT,NULL(Pohledavka.ICO,8,True)) Text(123,30,TA_LEFT,Pohledavka.DIC) FontSize(5) ClearFontIndex() GetFontIndex(72,Pohledavka.Firma) GetFontIndex(72,Pohledavka.Rozsireni) GetFontIndex(72,Pohledavka.Ulice) GetFontIndex(72,Pohledavka.Mesto) GetFontIndex(72,Pohledavka.PSC) FontIndex() Text(105,36,TA_LEFT,Pohledavka.Firma) Text(105,41,TA_LEFT,Pohledavka.Rozsireni) Text(105,46,TA_LEFT,Pohledavka.Ulice) Text(105,51,TA_LEFT,Pohledavka.Mesto) Text(105,56,TA_LEFT,Pohledavka.PSC) end Text(38,64.5,TA_LEFT,Pohledavka.OBJEDNAVKA) FontFace(Bold|Italic) FontSize(4.5) ;Text(180,67,TA_RIGHT,StrDate(Pohledavka.DatSpl)) ;datum splatnosti FontSize(3.5) Text(180,65,TA_RIGHT,StrDate(Pohledavka.DatVyst)) ;datum vystaveni FontFace(Italic) LocS=Pohledavka.Vystavil ;IF(Length(LocS)<>0) ; LocS=LocS+', ' IF(Length(Program.Telefon)<>0) LocS=LocS+', telefon: '+Program.Telefon ;IF(Length(LocS)<>0) ; LocS=LocS+', ' IF(Length(Program.email)<>0) LocS=LocS+', email: '+Program.email Text(20,255,TA_Left,LocS) ;Text(20,255,TA_Left,Pohledavka.Vystavil) FontFace(Bold) FontFace(Normal) FontSize(3) TabPos=200 FontFace(Normal) FontSize(3.5) if(Hlavicka.FSleva<>0) begin Text(7,220,TA_Left,'Na doklad byla poskytnuta sleva ve výši '+Str(Hlavicka.FSleva)+'%') end; ;**************************************************************************** ; Vytisteni dokladu ;**************************************************************************** OdRadku=1 Strana=0 PocetRadku=MaxLines FaktYPozice=FaktYPozice1 CallDDT('FaktProc.DDT'); ;**************************************************************************** ; Vytisteni prilohy ;**************************************************************************** While(not VseVytisteno) begin SetStatus(OdRadku); FontFace(Normal) FontSize(3.5) Text(180,19,TA_RIGHT,'Strana '+Str(Strana+1,2,0)); NextPage FontFace(Normal) FontFace(Bold) FontSize(4) Text(113,11,TA_LEFT,'Dodací list k faktuře číslo:') FontSize(5) FontFace(Bold|Italic) Text(180,11,TA_RIGHT,Pohledavka.Doklad); PocetRadku=MaxLinesPril Inc(Strana) FaktYPozice=FaktYPozice2 CallDDT('FaktProc.DDT'); end; If(Strana>=1) begin FontFace(Normal) FontSize(3.5) Text(180,19,TA_RIGHT,'Strana '+Str(Strana+1,2,0)); end SetStatusMax; END