; Podprogram pro tisk řádků objednávky, není určen pro přímé volání !!! ; verze z 22.9.2006 ; 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('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(not ExistVariable('SazbaDPHSnizena')) SazbaDPHSnizena:Byte=0 if(not ExistVariable('SumaSnizenaDPHZaklad')) SumaSnizenaDPHZaklad:Real=0 if(not ExistVariable('SumaSnizenaDPHDan')) SumaSnizenaDPHDan: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 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 if(Objednavka.DPH=0) begin SumaBezDPH=SumaBezDPH+Objednavka.Castka end else if(Objednavka.DPH=SazbaDPHNizsi) begin SumaNizsiDPHZaklad=SumaNizsiDPHZaklad+Objednavka.Castka end else if(Objednavka.DPH=SazbaDPHVyssi) begin SumaVyssiDPHZaklad=SumaVyssiDPHZaklad+Objednavka.Castka end else if(Objednavka.DPH=SazbaDPHSnizena) begin SumaSnizenaDPHZaklad=SumaSnizenaDPHZaklad+Objednavka.Castka end OdCena: if(Objednavka.JednCenaBS<>0) begin Sloupce=Sloupce|$20 LocB=Length(StrPrice(Objednavka.JednCenaBS)) 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(Objednavka.Castka<>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(Objednavka.Castka*(1+Objednavka.DPH/100),2)) if(LocB>Max[12]) Max[12]=LocB end else begin LocB=Length(StrFinanc(Objednavka.Castka,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; OdRadku=LocW end; end else if(OdRadku=0) begin OdRadku=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(OdRadku=1) Dec(OdRadku) While((OdRadku0)) begin GetBindRec('Objednavka',OdRadku) if(True); ((Faktura.WFlags&$8000=0) and ((TisknoutSN) or (Faktura.RecType<>8))) begin LocStr='' if(InArray(Typ1,Objednavka.Typ)) 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 Typ0: ActualType=1 if(Sloupce&$10<>0) LocStr=LocStr+Objednavka.Text+' - '+Objednavka.Nazev+#9 if(Sloupce&$20<>0) begin if(Objednavka.JednCenaBS<>0) LocStr=LocStr+StrPrice(Objednavka.JednCenaBS)+#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(Sloupce&$200<>0) begin LocStr=LocStr+StrFinanc(Objednavka.Castka,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(Objednavka.Castka*(1+Objednavka.DPH/100),2)+#9 else LocStr=LocStr+StrFinanc(Objednavka.Castka,2)+#9 end end end else if(InArray(Typ2,Objednavka.Typ)) 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(OdRadku) end VseVytisteno=OdRadku>=Radky end else begin PrazdnyDokument: VseVytisteno=True end; END