; sestava DDT ze skladu - vypíše složení výrobků ; verze z 14.2.2018 ; Autor: Milan Sliva Name('Rekapitulace položek výrobků') Designed('Skl_Man#1','Skl_Man#2','Skl_Man') Author('Milan Slíva','sliva@fi.cz','https://www.fi.cz') Descr('Rekapitulace položek složení výrobků') WnsType(1) NewWNS('Vyrobky4.WNS'); SetDescr(0,0,TA_Right|descr_PageNum,'Strana: '); SetDescr(1,0,TA_Center,'Rekapitulace položek výrobků'); SetDescr(2,0,TA_Left|descr_Date,'Datum: '); SetDescr(3,1,TA_Left|Descr_UserDescr); SetColumn(0,TA_RIGHT,5); Pozice SetColumn(1,TA_RIGHT,5); Sklad SetColumn(2,TA_LEFT,16); Material SetColumn(3,TA_LEFT,35); Nazev SetColumn(4,TA_RIGHT,8); Pouziti SetColumn(5,TA_RIGHT,12); Mnozstvi SetColumn(6,TA_LEFT,7); MJ SetHead('PČ\tsklad\tčíslo\tnázev\tpoužití\tmnožství'); Veta:LongInt ; definuje proměnnou VetaV:LongInt VetaT:LongInt Pozice:LongInt OK:Boolean Record TempRec dummy :LongInt; Cislo :LongInt; Pocet :LongInt; Mnozstvi :Double; Sklad :Word; Material :String[14] Nazev :String[30] MJ :String[7] end; Record TempKey Length :Byte; Cislo :LongInt; end; Record SortKey Length:Byte; pouziti:LongInt; end; MakeTempFile(TempRec,TempKey,False) MakeTempFile(,SortKey,true) DeclareRec('Sklad') DeclareRec('Vyrobek') DeclareRec('KeySklad10') DeclareRec('KeyVyrobek3') DeclareActiveIndex(Sklad,'KeySklad') ClearKey(KeySklad); InitStatus(UsedKeys(KeySklad),'Třídím data'); While(NextKey(KeySklad,Veta)) begin ReadRec(Sklad,Veta) if(InFilter(Sklad)) begin if(Sklad.TypKarty=2) begin KeyVyrobek3.Length=4 KeyVyrobek3.CisloVyrobku=SwapL(Sklad.Cislo) OK=SearchKey(KeyVyrobek3,VetaV) While((OK)and(KeyVyrobek3.CisloVyrobku=SwapL(Sklad.Cislo))) begin ReadRec(Vyrobek,VetaV); TempKey.Length=4 TempKey.Cislo=SwapL(Vyrobek.CisloMat) if(FindKey(TempKey,VetaT)) begin ReadRec(TempRec,VetaT) Inc(TempRec.Pocet) TempRec.Mnozstvi=RoundQuantity(TempRec.Mnozstvi+Vyrobek.Mnozstvi) ModifyRec(TempRec,VetaT) end else begin ClearRec(TempRec) TempRec.Cislo=Vyrobek.CisloMat TempRec.Pocet=1 TempRec.Mnozstvi=RoundQuantity(Vyrobek.Mnozstvi) AddKey(TempKey,AddRec(TempRec)) end; OK=NextKey(KeyVyrobek3,VetaV) end; end; end; Inc(Pozice) SetStatus(Pozice) end; InitStatus(UsedKeys(TempKey),'Třídím výsledky'); Pozice=0 PocetVet:LongInt=UsedRecs(TempRec) While(Pozice