; DDT objednavky vystavene ; verze z 12.1.2012 ; Autor: WinDUO Team Name('Objednávka vystavená') FileName('ObjVyd1.WNS') Designed('Obj_Vyd') Author('Winduo Team','EMail: winduo@winduo.cz','http://www.winduo.com','http://www.winduo.cz') Descr('Objednávka, poptávka') DeclareRec('Program') DeclareRec('ObjednavkaVydana') DeclareRec('KeyObjednavkaVydana2') DeclareRec('Objednavka') DeclareRec('KeyObjednavka2') GetBindRec('ObjednavkaVydana') ;**************************************************************************** ; 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.3 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 TiskObeOznaceni:Boolean=True ;tiskne dodavatelovo i odběratelovo označení StatusWindowInCall(False) ;**************************************************************************** ;Deklarace lokálních promennych ;**************************************************************************** ;nutno zadat hodnoty: FaktYPozice1:Real=94 ;y-souřadnice začátku textu ve fakture FaktYPozice2:Real=15 ;y-souřadnice začátku textu v priloze YTabDPH:Real=250 ;y-souřadnice pozice pro tabulku rozpisu DPH ;MaxLines:Word=20 ;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 Hlavicka:ObjednavkaVydana LocL:LongInt LocStr:String LocStr2:String TiskDPH:Boolean ;TiskDPH=(Program.RezimDPH<>0) TiskDPH=False TiskLogo:Boolean xLogoStart:Real=15 ; x-souradnice leveho horniho roku LOGO yLogoStart:Real=12 ; y-souradnice leveho horniho roku LOGO xLogoVel:Real=40 ; x velikost logo yLogoVel:Real=40 ; y velikost logo YPosunLogo:Real=0 ; y-posun textů kvůli logo Global TiskCeny:Boolean=False Text1:String Text2:String Text3:String Text4:String NazevDokladu:String[50] ;DlgFollowMouse(True) ;{definice uvodniho dialogu} DefDialog('Zadání údajů',462,270) DlgShade(-1,'',4,27,453,148+22) DlgStatic(-1,' Volba údajů',3,5,84) DlgStatic(-1,'&Název dokladu:',10,30,125) DlgEdit(101,NazevDokladu,135,28,318,,50) DlgOnLineHelp(101,'Např.: Objednávka, Poptávka...') DlgCheckBox(102,TiskLogo,10,48,110,,'Tisknout logo') DlgOnLineHelp(102,'Pokud máte v nastavení faktury uvedeno logo, může být vytisknuto i do tohoto dopisu') DlgCheckBox(103,TiskCeny,10,70,110,,'Tisknout cenu') DlgOnLineHelp(103,'Pokud jste si při sestavování objednávky zadali i ceny, je možné tisknout objednávku včetně cen nebo bez cen') DlgCheckBox(104,TiskObeOznaceni,130,55,210,,'Tisknout obě označení') DlgOnLineHelp(104,'V definici zboží je uvedeno označení zboží Vaše a označení od dodavatele. Zvolíte-li toto, pak budou tištěna obě označení. Vaše vlastní označení bude uvedeno v závorce.') DlgStatic(-1,'&Text do spodní části objednávky:',230,58+22,215) DlgEdit(201,Text1,10,76+22,443,,240) DlgOnLineHelp(201,'Text, který bude vytištěn ve spodní části objednávky') DlgEdit(202,Text2,10,100+22,443,,240) DlgOnLineHelp(202,'Text, který bude vytištěn ve spodní části objednávky') DlgEdit(203,Text3,10,124+22,443,,240) DlgOnLineHelp(203,'Text, který bude vytištěn ve spodní části objednávky') DlgEdit(204,Text4,10,148+22,443,,240) DlgOnLineHelp(204,'Text, který bude vytištěn ve spodní části objednávky') DlgButton(id_OK,'OK',290,202); DlgOnLineHelp(id_OK,'Pokračuje ve zpracování') DlgButton(id_Cancel,'Zpět',373,202); DlgOnLineHelp(id_Cancel,'Ukončí bez zpracování') Result:Integer=DlgExecute(True) if(Result<>id_OK) Halt if(TiskLogo) YPosunLogo=15 ; y-posun textů kvůli logo InitStatus(GetCountBindRec('ObjednavkaVydana'),'Vytvářím doklad','k objednávce č.'+ObjednavkaVydana.Doklad); ;**************************************************************************** ; Tisk rámečků a textů ;**************************************************************************** FontFace(Bold) FontSize(7) if(Length(Trim(ObjednavkaVydana.Objednavka))<>0) Text(188,2,TA_RIGHT,NazevDokladu) PEN(0,0.7) ROUNDBoxA(90,24,183,63,5,5); adresa odběratele Brush(UserBrush) BoxA(5,54+YPosunLogo,90,62+YPosunLogo) ;číslo objednavky u dodavatele (vlevo) if(ObjednavkaVydana.Stav<>10) begin BoxA(150,66,183,73);datum v barevnem ramečku end; if(TiskCeny) ROUNDBoxA(55,226,188,240,4,4); cena za dodavku celkem Brush(NullBrush) if(Length(Trim(ObjednavkaVydana.Objednavka))<>0) begin BoxA(80,10,188,17);číslo objednavky vpravo nahore LineA(120,17,120,24); mala svisla čara uprostřed end PEN(0,0.4) BoxA(5,10,188,92); velký rameček kolem adres BoxA(5,245,188,275);velký rámečedk dole PEN(0,0.2) LineA(10,24+YPosunLogo,85,24+YPosunLogo); čara mezi dodavatel a adresa LineA(95,35,178,35); čara v adrese odběratele ;LineA(10,60.5,85,60.5) LineA(90,60,90,92);svisla čara uprostred nize oddeluje dodav. a odber. if(TiskLogo) PaintMetaFile(xLogoStart,yLogoStart,xLogoVel,yLogoVel,Program.Logo); ; tisk logo FontFace(Bold) FontSize(4) Text(41,14+YPosunLogo,TA_RIGHT,'Objednatel - IČ:') Text(41,18+YPosunLogo,TA_RIGHT,'DIČ:') Text(15,25+YPosunLogo,TA_LEFT,'Adresa:') ;Text(15,56+YPosunLogo,TA_LEFT,'Číslo účtu:') Text(15,56+YPosunLogo,TA_LEFT,'Evidováno pod číslem:') ;Text(15,79-15+YPosunLogo,TA_LEFT,'Příjemce:') FontSize(3) if(Length(ObjednavkaVydana.PrijemceNazev)>0) Text(10,79,TA_LEFT,'Dodat na adresu:') if(Length(Trim(ObjednavkaVydana.Objednavka))<>0) Text(84,12,TA_LEFT,'Číslo objednávky u dodavatele:') else begin FontFace(Bold) FontSize(7) Text(180,12,TA_RIGHT,NazevDokladu) FontFace(Normal) FontSize(4) end Text(121,26,TA_RIGHT,'Dodavatel - IČ:') Text(121,30,TA_RIGHT,'DIČ:') FontFace(Bold) if(ObjednavkaVydana.Stav<>10) begin if(ObjednavkaVydana.Vyrizeno<>0) begin Text(100,68,TA_LEFT,'Vyřízeno dne:') Text(100,78,TA_Left,'Vyřídil:') end else begin XText(100,68,45,TA_LEFT,'Předpokládané datum vyřízení:') if((ObjednavkaVydana.TerminDo<>ObjednavkaVydana.TerminPo)and(ObjednavkaVydana.TerminDo<>0)) begin Text(100,78,TA_LEFT,'Datum vyřízení nejdříve:') end end end; FontSize(4) if(ObjednavkaVydana.Stav<>10) begin Text(100,74,TA_LEFT,'Datum objednávky:') end else begin Text(100,74,TA_LEFT,'Datum vystavení:') end; Text(100,82,TA_LEFT,'Způsob úhrady:') Text(100,86,TA_LEFT,'Způsob dodání:') FontFace(Normal) FontSize(3.5) ClearFontIndex() GetFontIndex(188,Text1) GetFontIndex(188,Text2) GetFontIndex(188,Text3) GetFontIndex(188,Text4) FontIndex() XText(10,209.5,188,TA_Left,Text1) XText(10,213,188,TA_Left,Text2) XText(10,216.5,188,TA_Left,Text3) XText(10,220,188,TA_Left,Text4) if(TiskCeny) begin FontFace(Bold) FontSize(6) Text(58,230,TA_Left,'Cena za dodávku celkem:') end FontFace(Bold) FontSize(4) if(ObjednavkaVydana.Vyrizeno=0) Text(90,250,TA_Left,'Vyřizuje:') if(Length(ObjednavkaVydana.Objednal)<>0) Text(30,250,TA_Left,'Vystavil:') 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+YPosunLogo,TA_LEFT,NULL(Program.ICO,8,True)) Text(43,18+YPosunLogo,TA_LEFT,Program.DIC) FontSize(5) ClearFontIndex() GetFontIndex(60,Program.Firma) GetFontIndex(60,Program.Rozsireni) GetFontIndex(60,Program.Ulice) GetFontIndex(60,Program.Mesto) FontIndex() Text(24,29+YPosunLogo,TA_LEFT,Program.Firma) Text(24,33+YPosunLogo,TA_LEFT,Program.Rozsireni) Text(24,37+YPosunLogo,TA_LEFT,Program.Ulice) Text(9,41+YPosunLogo,TA_LEFT,Program.PSC) Text(24,41+YPosunLogo,TA_LEFT,Program.Mesto) FontSize(2.5) Text(8,46+YPosunLogo,TA_LEFT,Program.FaktSpecText[1]) Text(8,48.5+YPosunLogo,TA_LEFT,Program.FaktSpecText[2]) FontSize(5) Text(180,11,TA_RIGHT,ObjednavkaVydana.Objednavka); FontSize(4) if((not Program.HideICO) or (ObjednavkaVydana.ICO>=Program.HideICOLess)) Text(123,26,TA_LEFT,NULL(ObjednavkaVydana.ICO,8,True)) Text(123,30,TA_LEFT,ObjednavkaVydana.DIC) FontSize(5) ClearFontIndex() GetFontIndex(70,ObjednavkaVydana.Odberatel) GetFontIndex(70,ObjednavkaVydana.Rozsireni) GetFontIndex(70,ObjednavkaVydana.Ulice) GetFontIndex(70,ObjednavkaVydana.Mesto) GetFontIndex(70,ObjednavkaVydana.PSC) FontIndex() Text(105,36,TA_LEFT,ObjednavkaVydana.Odberatel) Text(105,41,TA_LEFT,ObjednavkaVydana.Rozsireni) Text(105,46,TA_LEFT,ObjednavkaVydana.Ulice) Text(105,51,TA_LEFT,ObjednavkaVydana.Mesto) Text(105,56,TA_LEFT,ObjednavkaVydana.PSC) ;FontFace(Normal) FontFace(Bold|Italic) FontSize(4) Text(84,56+YPosunLogo,TA_Right,ObjednavkaVydana.Doklad) FontFace(Bold|Italic) FontSize(3) if(Length(ObjednavkaVydana.PrijemceNazev)>0) begin ClearFontIndex() GetFontIndex(55,ObjednavkaVydana.PrijemceNazev) GetFontIndex(55,ObjednavkaVydana.PrijemceRozs) FontIndex() if(Length(ObjednavkaVydana.PrijemceRozs)>0) begin Text(32,80,TA_LEFT,ObjednavkaVydana.PrijemceNazev) Text(32,83,TA_LEFT,ObjednavkaVydana.PrijemceRozs) end else Text(32,80.6,TA_LEFT,ObjednavkaVydana.PrijemceNazev) LocStr='' if(Length(ObjednavkaVydana.PrijemceUlice)>0) LocStr=LocStr+ObjednavkaVydana.PrijemceUlice+', ' if(Length(ObjednavkaVydana.PrijemcePSC)>0) LocStr=LocStr+ObjednavkaVydana.PrijemcePSC+' ' if(Length(ObjednavkaVydana.PrijemceMesto)>0) LocStr=LocStr+ObjednavkaVydana.PrijemceMesto+', ' if(Length(ObjednavkaVydana.PrijemceStat)>0) LocStr=LocStr+ObjednavkaVydana.PrijemceStat+', ' if(Length(LocStr)>3) begin if(CompareStr(', ',Copy(LocStr,Length(LocStr)-1,2))) LocStr=Copy(LocStr,1,Length(LocStr)-2) end XText(7,83+3,81,TA_LEFT,LocStr) end FontFace(Bold|Italic) FontSize(4.5) if(ObjednavkaVydana.Stav<>10) begin if(ObjednavkaVydana.Vyrizeno<>0) begin Text(180,67,TA_RIGHT,StrDate(ObjednavkaVydana.Vyrizeno)) FontSize(3.5) Text(180,78,TA_RIGHT,ObjednavkaVydana.Vyridil) end else begin Text(180,67,TA_RIGHT,StrDate(ObjednavkaVydana.TerminDo)) if((ObjednavkaVydana.TerminDo<>ObjednavkaVydana.TerminPo)and(ObjednavkaVydana.TerminDo<>0)) begin FontSize(3.5) Text(180,78,TA_RIGHT,StrDate(ObjednavkaVydana.TerminPo)) end end end; FontSize(3.5) Text(180,74,TA_RIGHT,StrDate(ObjednavkaVydana.Datum)) ;datum vystaveni if(ObjednavkaVydana.Platba<>0) Text(180,82,TA_Right,GetString(5500-ObjednavkaVydana.Platba)) Text(180,86,TA_Right,ObjednavkaVydana.DodaniStr) FontFace(Italic) LocS='' if(ObjednavkaVydana.Vyrizeno=0) LocS=ObjednavkaVydana.Vyridil IF(Length(Program.Telefon)<>0) begin IF(Length(LocS)=0) begin LocS=LocS+'telefon: '+Program.Telefon end else LocS=LocS+', telefon: '+Program.Telefon end Text(90,255,TA_Left,LocS) if(Length(ObjednavkaVydana.Objednal)<>0) Text(30,258,TA_Left,ObjednavkaVydana.Objednal) IF(Length(Program.email)<>0) begin LocS='email: '+Program.email Text(90,258,TA_Left,LocS) end FontFace(Normal) FontSize(3) TabPos=YTabDPH ; y-souřadnice pozice pro tabulku rozpisu DPH 250 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 DPH') Text(47.5,TabPos+1,TA_CENTER,'Základ (v '+Program.Mena+')') Text(72.5,TabPos+1,TA_CENTER,'DPH (v '+Program.Mena+')') end PoziceStr:Real=TabPos+20 TabPos=200 FontFace(Normal) FontSize(3.5) FontSize(7) FontFace(Bold|Italic) if(TiskCeny) begin If(Hlavicka.Mena=0) begin CenaCelkem:Real CenaCelkem=RoundFloat(ObjednavkaVydana.Castka,-1) Text(171,229,TA_RIGHT,StrFinanc(CenaCelkem,2,True)) Text(173,229,TA_LEFT,Program.Mena) end else begin Text(171,229,TA_RIGHT,StrFinanc(ObjednavkaVydana.CastkaM,2,True)); {nepouzito} Text(173,229,TA_LEFT,NumToCCC(Hlavicka.FMena)); {nepouzito} end end ;**************************************************************************** ; Vytisteni dokladu ;**************************************************************************** OdRadku=1 Strana=0 PocetRadku=MaxLines FaktYPozice=FaktYPozice1 Global SazbaDPHNizsi:Byte=SazbaDPH(False,ObjednavkaVydana.Datum) Global SazbaDPHVyssi:Byte=SazbaDPH(True,ObjednavkaVydana.Datum) Global SumaVyssiDPHDan:Real Global SumaVyssiDPHZaklad:Real Global SumaNizsiDPHDan:Real Global SumaNizsiDPHZaklad:Real Global SumaBezDPH:Real CallDDT('ObjProc.DDT'); ;tisk tabulky DPH if(TiskDPH) begin if(SumaBezDPH<>0) begin Text(22.5,YTabDPH+6,TA_CENTER,'0 %') Text(58,YTabDPH+6,TA_Right,Str(SumaBezDPH,0,2)) Text(83,YTabDPH+6,TA_Right,'------') end if(SumaNizsiDPHZaklad<>0) begin Text(22.5,YTabDPH+11,TA_CENTER,Str(SazbaDPHNizsi)+' %') Text(58,YTabDPH+11,TA_Right,Str(SumaNizsiDPHZaklad,0,2)) SumaNizsiDPHDan=SumaNizsiDPHZaklad*SazbaDPHNizsi/100 SumaNizsiDPHDan=RoundFloat(Int((SumaNizsiDPHDan+0.09)*10)/10,-2) Text(83,YTabDPH+11,TA_Right,Str(SumaNizsiDPHDan,0,2)) end if(SumaVyssiDPHZaklad<>0) begin Text(22.5,YTabDPH+16,TA_CENTER,Str(SazbaDPHVyssi)+' %') Text(58,YTabDPH+16,TA_Right,Str(SumaVyssiDPHZaklad,0,2)) SumaVyssiDPHDan=SumaVyssiDPHZaklad*SazbaDPHVyssi/100 SumaVyssiDPHDan=RoundFloat(Int((SumaVyssiDPHDan+0.09)*10)/10,-2) Text(83,YTabDPH+16,TA_Right,Str(SumaVyssiDPHDan,0,2)) end end ;**************************************************************************** ; 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('ObjPoc.DDT'); end; end poprve:Boolean=True While(not VseVytisteno) begin SetStatus(OdRadku); IF((PocetStran>0)and(poprve)) begin Text(7,PoziceStr,TA_Left,'Strana '+Str(Strana+1,2,0)); Text(186,PoziceStr,TA_RIGHT,'Počet stran přílohy, která je nedílnou součástí tohoto dokladu: '+Str(PocetStran,2,0)); end else begin Text(175,280,TA_RIGHT,'Příloha strana '+Str(Strana,2,0)); end poprve=False NextPage FontFace(Bold|Italic) FontSize(5) if(Length(Trim(ObjednavkaVydana.Objednavka))<>0) begin Text(175,4,TA_RIGHT,'Příloha k objednávce') FontSize(4) Text(175,9,TA_RIGHT,'Číslo objednávky odběratele: '+ObjednavkaVydana.Objednavka); end FontSize(4) Text(7,9,TA_Left,'U dodavatele evidováno pod číslem: '+ObjednavkaVydana.Doklad); FontSize(3.5) PocetRadku=MaxLinesPril Inc(Strana) FaktYPozice=FaktYPozice2 CallDDT('ObjProc.DDT'); end; If(Strana>=1) begin Text(175,280,TA_RIGHT,'Příloha strana '+Str(Strana,2,0)); end SetStatusMax; END