; Podprogram pro tisk řádků objednávky, není určen pro přímé volání !!! ; verze z 6.11.2003 ; Autor: WinDUO Team Designed('') DeclareRec('Program') DeclareRec('Objednavka') Hlavicka:Objednavka if(GetCountBindRec('Hlavicka')=0) begin VseVytisteno=True Exit end GetBindRec('Hlavicka',0) DeclareRec('Sklad') DeclareRec('KeySklad10') VetaS:LongInt if(not ExistVariable('OdRadku')) Halt('Není definována proměnná OdRadku (OdRadku:Word)') if(not ExistVariable('PocetRadku')) Halt('Není definována proměnná PocetRadku (PocetRadku:Word)') if(not ExistVariable('Strana')) Halt('Není definována proměnná Strana (Strana:Word)') if(not ExistVariable('VseVytisteno')) Halt('Není definována proměnná VseVytisteno (VseVytisteno:Boolean)') if(not ExistVariable('VseVytistenoPocet')) Halt('Není definována proměnná VseVytistenoPocet (VseVytistenoPocet:Boolean)') if(not ExistVariable('FaktXPozice')) Halt('Není definována proměnná FaktXPozice (FaktXPozice:Real)') if(not ExistVariable('FaktYPozice')) Halt('Není definována proměnná FaktYPozice (FaktYPozice:Real)') if(not ExistVariable('FaktSirka')) Halt('Není definována proměnná FaktSirka (FaktSirka:Real)') if(not ExistVariable('FaktOdstup')) Halt('Není definována proměnná FaktOdstup (FaktOdstup:Real)') if(not ExistVariable('VyskaFontuText')) VyskaFontuText:Real=4.5 if(not ExistVariable('SirkaFontuText')) SirkaFontuText:Real=0 ;if(Program.Sklady) ; begin ; DeclareRec('Sklad') ; DeclareRec('KeySklad10') ; end TiskDPH:Boolean=(Program.RezimDPH<>0) and (Hlavicka.Typ=0) ;**************************************************************************** ; Deklarace, popřípadě i inicializace proměnných ;**************************************************************************** Radky :Word=GetCountBindRec('Objednavka') TisknoutSN:Boolean=(Program.PrintSN) or (not JeFaktura); LocB :Byte LocW :Word LocW2 :Word LocL :LongInt LCena :Real LCelkem :Real TiskniCenu:Boolean Typ1:Array[1..2] of Byte=1,3 Typ2:Array[1..2] of Byte=2,4 if(ExistVariable('TiskCeny')) Tisknicenu=TiskCeny else TiskniCenu=True ;**************************************************************************** ; Zjištění maximální délky jednotlivých sloupců ;**************************************************************************** if(not ExistVariable('Max[12]')) Halt('Není definováno pole Max (Max:Array[1..12] of Byte)') if(not ExistVariable('Sloupce')) Halt('Není definována proměnná Sloupce (Sloupce:Word)') if((Max[1]=0) or (Max[12]=0)) begin Max[1]=Length('Skl.') Max[2]=Length('Druh') Max[3]=Length('Kód') Max[4]=Length('Označení') Max[5]=Length('Popis položky') Max[6]=Length('Cena za MJ') Max[7]=Length('Množství') Max[8]=Length('MJ') Max[9]=Length('Sleva') Max[10]=Length('bez DPH') Max[11]=Length('DPH') Max[12]=Length('Celkem') Sloupce=16 LocW=0 While(LocW0) begin Sloupce=Sloupce|$10 if(LocB>Max[5]) begin Max[5]=LocB end end if(InArray(Typ1,Objednavka.Typ)) begin if(Program.RezimDPH<>0) begin Sloupce=Sloupce|$C00 end LCena=Objednavka.JednCena LCelkem=Objednavka.Castka if(Objednavka.DPH=0) begin SumaBezDPH=SumaBezDPH+((100-Objednavka.Sleva)/100*LCelkem) end if(Objednavka.DPH=SazbaDPHNizsi) begin SumaNizsiDPHZaklad=SumaNizsiDPHZaklad+((100-Objednavka.Sleva)/100*LCelkem) end if(Objednavka.DPH=SazbaDPHVyssi) begin SumaVyssiDPHZaklad=SumaVyssiDPHZaklad+((100-Objednavka.Sleva)/100*LCelkem) end OdCena: if(LCena<>0) begin Sloupce=Sloupce|$20 LocB=Length(StrPrice(LCena)) if(LocB>Max[6]) Max[6]=LocB end if(Objednavka.Mnozstvi<>0) begin Sloupce=Sloupce|$40 LocB=Length(StrNative(Objednavka.Mnozstvi,3)) if(LocB>Max[7]) Max[7]=LocB end; LocB=Length(Objednavka.MJ) if(LocB<>0) begin Sloupce=Sloupce|$80 if(LocB>Max[8]) Max[8]=LocB end OdCelkem: if(Objednavka.Sleva<>0) begin Sloupce=Sloupce|$100 LocB=Length(Str(Objednavka.Sleva,0,2)) if(LocB>Max[9]) Max[9]=LocB end if(LCelkem<>0) begin Sloupce=Sloupce|$200 LocB=Length(StrFinanc(Objednavka.Castka,2)) if(LocB>Max[10]) Max[10]=LocB end if(Program.RezimDPH<>0) begin if(Objednavka.DPH<90) begin LocB=Length(Str(Objednavka.DPH)) if(LocB>Max[11]) Max[11]=LocB end; if(Objednavka.DPH<90) begin LocB=Length(StrFinanc(LCelkem*(1+Objednavka.DPH/100),2)) if(LocB>Max[12]) Max[12]=LocB end else begin LocB=Length(StrFinanc(LCelkem,2)) if(LocB>Max[12]) Max[12]=LocB end; end end else if(InArray(Typ2,Objednavka.Typ)) begin if((Objednavka.VJednCena<>0)and(TiskniCenu)) begin Sloupce=Sloupce|$20 LocB=Length(StrPrice(Objednavka.VJednCena)) if(LocB>Max[6]) Max[6]=LocB end if(Objednavka.VMnozstvi<>0) begin Sloupce=Sloupce|$40 LocB=Length(StrNative(Objednavka.VMnozstvi,3)) if(LocB>Max[7]) Max[7]=LocB end; LocB=Length(Objednavka.VMJ) if(LocB<>0) begin Sloupce=Sloupce|$80 if(LocB>Max[8]) Max[8]=LocB end if((Objednavka.VCastka<>0)and(TiskniCenu)) begin Sloupce=Sloupce|$200 LocB=Length(StrFinanc(Objednavka.VCastka,2)) if(LocB>Max[10]) Max[10]=LocB end end; end Inc(LocW) end end; ;**************************************************************************** ; Nastavení se na první tištěný řádek ;**************************************************************************** if(ExistVariable('Transformace')) begin if(Transformace) begin LocW=1 LocW2=0 While((LocW8)) Inc(LocW2) Inc(LocW) end; OdRadkuPocet=LocW end; end else if(OdRadkuPocet=0) begin OdRadkuPocet=1 end; ;**************************************************************************** ; Tisk radku faktury ;**************************************************************************** DynStr:String DynStr2:String Hlava1:String Hlava2:String LocL:LongInt LocW3:Word LocB2:Byte LocD:Double if(Sloupce<>0) begin DynStr='' Hlava1='' Hlava2='' LocW=0 LocW3=0 if(Sloupce&1<>0) begin DynStr=DynStr+Str(Max[1])+',TA_Right,' Hlava1=Hlava1+#9 Hlava2=Hlava2+'Skl.'+#9 Inc(LocW) end if(Sloupce&2<>0) begin DynStr=DynStr+Str(Max[2])+',TA_Right,' Hlava1=Hlava1+#9 Hlava2=Hlava2+'Druh'+#9 Inc(LocW) end if(Sloupce&4<>0) begin DynStr=DynStr+Str(Max[3])+',TA_Left,' Hlava1=Hlava1+#9 Hlava2=Hlava2+'Kód'+#9 Inc(LocW) end if(Sloupce&$8<>0) begin DynStr=DynStr+Str(Max[4])+',TA_Left,' Hlava1=Hlava1+#9 Hlava2=Hlava2+'Označení'+#9 Inc(LocW) end if(Sloupce&$10<>0) begin DynStr=DynStr+Str(Max[5])+',TA_Both,' ;DynStr=DynStr+Str(Max[5])+',TA_Left,' Hlava1=Hlava1+#9 Hlava2=Hlava2+'Popis položky'+#9 Inc(LocW) end if(Sloupce&$20<>0) begin DynStr=DynStr+Str(Max[6])+',TA_Right,' if(Program.RezimDPH<>0) begin Hlava1=Hlava1+'Cena za MJ'+#9 Hlava2=Hlava2+'bez DPH'+#9 end else begin Hlava1=Hlava1+#9 Hlava2=Hlava2+'Cena za MJ'+#9 end Inc(LocW) end if(Sloupce&$40<>0) begin DynStr=DynStr+Str(Max[7])+',TA_Right,' Hlava1=Hlava1+#9 Hlava2=Hlava2+'Množství'+#9 Inc(LocW) end if(Sloupce&$80<>0) begin DynStr=DynStr+Str(Max[8])+',TA_Left,' Hlava1=Hlava1+#9 Hlava2=Hlava2+'MJ'+#9 Inc(LocW) end if(Sloupce&$100<>0) begin DynStr2=DynStr2+Str(Max[9])+',TA_Right,' Hlava1=Hlava1+'Sleva'+#9 Hlava2=Hlava2+'%'+#9 Inc(LocW3) end if(Sloupce&$200<>0) begin DynStr2=DynStr2+Str(Max[10])+',TA_Right,' if(Program.RezimDPH<>0) begin Hlava1=Hlava1+'Celkem'+#9 Hlava2=Hlava2+'bez DPH'+#9 end else begin Hlava1=Hlava1+#9 Hlava2=Hlava2+'Celkem'+#9 end Inc(LocW3) end if(Sloupce&$400<>0) begin DynStr2=DynStr2+Str(Max[11])+',TA_Right,' Hlava1=Hlava1+'DPH'+#9 Hlava2=Hlava2+'%'+#9 Inc(LocW3) end if(Sloupce&$800<>0) begin DynStr2=DynStr2+Str(Max[12])+',TA_Right,' Hlava1=Hlava1+'Celkem'+#9 Hlava2=Hlava2+'s DPH'+#9 Inc(LocW3) end Inc(LocW,LocW3) FontSize(4.5) FontSize(VyskaFontuText) FontFace(Normal) FontWidthScale(0) DynStr='DefDynTab(FaktXPozice,FaktSirka,FaktOdstup,'+Str(LocW)+','+DynStr+DynStr2+')'; StrCom(DynStr) FontWidthScale(0) FontWidthScale(SirkaFontuText) SaveTabInfo(1) TabPos(FaktYPozice) ;DynTab(Hlava1) ;DynTab(Hlava2) Pen(0,0.4) ;Line(7,TabPos+Shr(FaktOdstup)+1,FaktSirka,0) Inc(TabPos,FaktOdstup+1) LocW2=1 LocB=1 LocB2=0 While(LocB<=8) begin if(Sloupce&LocW2<>0) LocB2=LocB2+Max[LocB]+1 LocW2=Shl(LocW2) Inc(LocB) end if(LocB2=0) GoTo(PrazdnyDokument); DynStr='DefDynTab(7,166,5,'+Str(LocW3+1)+','+Str(LocB2-1)+',TA_Left,'+DynStr2+')'; StrCom(DynStr) FontWidthScale(0) FontWidthScale(SirkaFontuText) SaveTabInfo(2) While(LocB<=12) begin if(Sloupce&LocW2<>0) LocB2=LocB2+Max[LocB]+1 LocW2=Shl(LocW2) Inc(LocB) end Dec(LocB); DynStr='DefDynTab(7,166,5,1,78,TA_Left)'; StrCom(DynStr) FontWidthScale(0) FontWidthScale(SirkaFontuText) SaveTabInfo(3) LocStr:String LocStr2:String LastType:Byte ActualType:Byte LastMJ:String[7] LastType=3 if(OdRadkuPocet=1) Dec(OdRadkuPocet) While((OdRadkuPocet0)) begin GetBindRec('Objednavka',OdRadkuPocet) if(True); ((Faktura.WFlags&$8000=0) and ((TisknoutSN) or (Faktura.RecType<>8))) begin LocStr='' if(Objednavka.Typ=1) begin if(Sloupce&$1<>0) LocStr=LocStr+#9 if(Sloupce&$2<>0) LocStr=LocStr+#9 if(Sloupce&$4<>0) LocStr=LocStr+#9 if(Sloupce&$8<>0) LocStr=LocStr+#9 LCena=Objednavka.JednCena LCelkem=Objednavka.Castka Typ0: ActualType=1 if(Sloupce&$10<>0) LocStr=LocStr+Objednavka.Text+' - '+Objednavka.Nazev+#9 if(Sloupce&$20<>0) begin if(Objednavka.JednCena<>0) LocStr=LocStr+StrPrice(LCena)+#9 else LocStr=LocStr+#9 end; if(Sloupce&$40<>0) begin if(Objednavka.Mnozstvi<>0) LocStr=LocStr+StrNative(Objednavka.Mnozstvi,3)+#9 else LocStr=LocStr+#9 end; if(Sloupce&$80<>0) LocStr=LocStr+Objednavka.MJ+#9 TiskOdCelkem: if(Sloupce&$100<>0) begin if(Objednavka.Sleva<>0) LocStr=LocStr+Str(Objednavka.Sleva,0,2)+#9 else LocStr=LocStr+#9 end if(Objednavka.Castka<>0) begin if(Objednavka.Sleva<>0) then begin LCelkem=(100-Objednavka.Sleva)/100*Objednavka.Castka ;Objednavka.Castka=(100-Objednavka.Sleva)/100*Objednavka.Castka end; if(Sloupce&$200<>0) begin LocStr=LocStr+StrFinanc(LCelkem,2)+#9 end if(Sloupce&$400<>0) begin if(Objednavka.DPH<90) LocStr=LocStr+Str(Objednavka.DPH)+#9 else LocStr=LocStr+#9 end if(Sloupce&$800<>0) begin if(Objednavka.DPH<90) LocStr=LocStr+StrFinanc(LCelkem*(1+Objednavka.DPH/100),2)+#9 else LocStr=LocStr+StrFinanc(LCelkem,2)+#9 end end end else if(Objednavka.Typ=2) begin if(Sloupce&$1<>0) LocStr=LocStr+#9 if(Sloupce&$2<>0) LocStr=LocStr+#9 if(Sloupce&$4<>0) LocStr=LocStr+#9 if(Sloupce&$8<>0) LocStr=LocStr+#9 ActualType=1 if(Sloupce&$10<>0) begin if(Length(Objednavka.KatalogID)=0) LocStr=LocStr+Objednavka.KatalogName else LocStr=LocStr+Objednavka.KatalogID+' - '+Objednavka.KatalogName end; if(TiskObeOznaceni) begin KeySklad10.Length=4 KeySklad10.Cislo=Swapl(Objednavka.VCisloMat) if(FindKey(KeySklad10,VetaS)) begin ReadRec(Sklad,VetaS) end LocStr=LocStr+'|('+Trim(Sklad.Material)+')'+#9 end else begin LocStr=LocStr+#9 end if((Sloupce&$20<>0)and(TiskniCenu)) begin if(Objednavka.VJednCena<>0) LocStr=LocStr+StrPrice(Objednavka.VJednCena)+#9 else LocStr=LocStr+#9 end; if(Sloupce&$40<>0) begin if(Objednavka.VMnozstvi<>0) LocStr=LocStr+StrNative(Objednavka.VMnozstvi,3)+#9 else LocStr=LocStr+#9 end; if(Sloupce&$80<>0) LocStr=LocStr+Objednavka.VMJ+#9 if(Sloupce&$100<>0) begin LocStr=LocStr+#9 end if(Objednavka.VCastka<>0) begin if(Sloupce&$200<>0) begin LocStr=LocStr+StrFinanc(Objednavka.VCastka,2)+#9 end if(Sloupce&$400<>0) begin LocStr=LocStr+#9 end if(Sloupce&$800<>0) begin LocStr=LocStr+#9 end end end else begin ActualType=2 LocStr=LocStr+Objednavka.Text end ;if(ActualType<>LastType) ; begin ; LoadTabInfo(ActualType,False,True) ; LastType=ActualType ; end; ;DynTab(LocStr) Dec(PocetRadku) end Inc(OdRadkuPocet) end VseVytistenoPocet=OdRadkuPocet>=Radky end else begin PrazdnyDokument: VseVytistenoPocet=True end; END