; analyza skladu vecne z 20.8.2002 Name('Přesun dokladu do PS') ; pod tímto názvem bude sestava v menu Designed('Hrp_Man') Author('Winduo Team','EMail: winduo@winduo.cz','http://www.winduo.com') ;informace o autorovi Descr('') Veta:LongInt; VetaP:LongInt ; definuje proměnnou v pohybech VetaS:LongInt ; definuje proměnnou ve skladu Pozice:LongInt ; definuje proměnnou LocBo:Boolean Doklad:String='MANKOSV'; DeclareRec('SkupinovaOperace') DeclareRec('KeySkupinovaOperace4') DeclareRec('Sklad') DeclareRec('KeySklad10') DeclareRec('Pohyb') DeclareRec('KeyPohyb5') WNSType(1); NewWNS('Mrock1.WNS','Převod') DlgFollowMouse(False) SetColumn(0,ta_Left,14); {Cislo} SetColumn(1,ta_Left,14); {Cislo} SetColumn(2,ta_Left,35); {Nazev} SetColumn(3,ta_Right,12); {Poc stav Kc} SetColumn(4,ta_Right,12); {Poc stav Mj} SetColumn(5,ta_Right,12); {Rozdil Kc} SetColumn(6,ta_Right,12); {Rozdil Mj} SetColumn(7,ta_Right,12); {Uplatneno Kc} SetColumn(8,ta_Right,12); {Uplatneno Mj} SetColumn(9,ta_Right,12); {Nelze Kc} SetColumn(10,ta_Right,12); {Nelze Mj} SetColumn(11,ta_Right,12); {Nelze Kc} SetColumn(12,ta_Right,12); {Nelze Mj} SetHead('Sklad\tMateriál\tNázev\tPoč.stav Kč\tPoč.stav Mj\tRozdíl Kč\tRozdíl Mj\tUplatněno Kč\tUplatněno Mj\tNelze Kč\tNelze Mj\tNově Kč\tNově Mj'); SetDescr(0,0,TA_Right|descr_PageNum,'Strana: '); SetDescr(1,0,TA_Center,'Přesun skladu do PS'); SetDescr(2,0,TA_Left|descr_Date,'Datum: '); SetDescr(3,1,TA_Left|descr_UserDescr,''); pokud je pouzit descr_UserDescr, tak si program vyzada dodatecny popis KeySkupinovaOperace4.Doklad=Doklad; if(not FindKey(KeySkupinovaOperace4,Veta)) Halt('Nenalezen doklad '+Doklad); ReadRec(SkupinovaOperace,Veta); InitStatus(SkupinovaOperace.PolCount) ; inicializace stavoveho prouzku Mnozstvi:Real Castka:Real; Nelze:Real; LocR:Real; Soucty:Array[1..10] of Real; KeyPohyb5.Length=4 KeyPohyb5.Hrom=SwapL(SkupinovaOperace.Cislo) LocBo=SearchKey(KeyPohyb5,VetaP) While((LocBo) and (KeyPohyb5.Hrom=SwapL(SkupinovaOperace.Cislo))) ; začátek cyklu přes celý soubor begin ; začátek příkazu pro zpracování jedné věty ReadRec(Pohyb,VetaP) ; přečte větu ze souboru KeySklad10.Length=4 KeySklad10.Cislo=SwapL(Pohyb.CisloMat); if(FindKey(KeySklad10,VetaS)) begin ReadRec(Sklad,VetaS); AddText(Str(Sklad.Sklad),Sklad.Material,Sklad.Nazev,StrFinanc(Sklad.PocStavKc,2),StrQuantity(Sklad.PocStav),) Soucty[1]=Soucty[1]+Sklad.PocStavKc Soucty[2]=Soucty[2]+Sklad.PocStav Mnozstvi=Pohyb.Mnozstvi Castka=Pohyb.Castka if(Pohyb.Vydaj) begin Mnozstvi=-Mnozstvi Castka=-Castka end; Soucty[3]=Soucty[3]+Castka Soucty[4]=Soucty[4]+Mnozstvi AddText(StrFinanc(Castka,2),StrQuantity(Mnozstvi),); if(Mnozstvi=0) begin AddText(StrFinanc(Castka),'0',,,,); Sklad.PocStavKc=Sklad.PocStavKc+Castka Soucty[5]=Soucty[5]+Castka end else if(Sklad.PocStav+Mnozstvi>=0) begin if((Sklad.PocStav<>0) and (Sklad.PocStavKc<>0)) begin Castka=Sklad.PocStavKc/Sklad.PocStav*Mnozstvi; end; AddText(StrFinanc(Castka,2),StrQuantity(Mnozstvi),,,,); Sklad.PocStav=Sklad.PocStav+Mnozstvi Sklad.PocStavKc=Sklad.PocStavKc+Castka Soucty[5]=Soucty[5]+Castka Soucty[6]=Soucty[6]+Mnozstvi end else begin Nelze=Sklad.PocStav+Mnozstvi if(Nelze-Mnozstvi<0) begin AddText(,,StrFinanc(Castka,2),StrQuantity(Mnozstvi),,); Soucty[5]=Soucty[5]+Castka Soucty[6]=Soucty[6]+Mnozstvi end else begin LocR=(Castka/Mnozstvi)*Nelze AddText(StrFinanc(Sklad.PocStavKc,2),StrQuantity(Sklad.PocStav),StrFinanc(LocR,2),StrQuantity(Nelze),,); Soucty[5]=Soucty[5]+Sklad.PocStavKc Soucty[6]=Soucty[6]+Sklad.PocStav Soucty[7]=Soucty[7]+LocR Soucty[8]=Soucty[8]+Nelze Sklad.PocStavKc=0 Sklad.PocStav=0 end; end; if(Sklad.PocStav=0) Sklad.PocStavKc=0 AddLine(StrFinanc(Sklad.PocStavKc,2),StrQuantity(Sklad.PocStav)); Soucty[9]=Soucty[9]+Sklad.PocStavKc Soucty[10]=Soucty[10]+Sklad.PocStav end; LocBo=NextKey(KeyPohyb5,VetaP) Inc(Pozice) SetStatus(Pozice) end ; konec příkazu pro zpracování jedné věty AddComment('') SetSumLine(7); AddText(,,,,) AddText(StrFinanc(Soucty[1],2),StrQuantity(Soucty[2]),) AddText(StrFinanc(Soucty[3],2),StrQuantity(Soucty[4]),) AddText(StrFinanc(Soucty[5],2),StrQuantity(Soucty[6]),) AddText(StrFinanc(Soucty[7],2),StrQuantity(Soucty[8]),) AddLine(StrFinanc(Soucty[9],2),StrQuantity(Soucty[10])) END