#Include vhLib.Macro WerkOverzicht #define VOORMIDDAG 43200 #define NAMIDDAG 86340 ; Select("WERKKOST")=W:Werkplaats of K:KostPlaats ; Select("GENTYP") = multiple met ";" gescheiden TBX;DIV;KAD;PRF;BAN;GLA ; Select("GENSUBTYP") = multiple met ";" gescheiden, het type wordt via "\" van het subtype gescheiden (indien leeg of onbestaande dan alles toelaten) ; Select("PERIODE")=W:Week; D:Dag; H:Halfdag ; Select("STOCKPROBLEM") = 1:fysisch stock probleem apart groeperen ; Select("TIJDVERLET") = Z:Zonder; K:met Klein; G:met Klein en Groot ; Select("NOPRBS") = 1:opnemen van producten zonder bouwsteen definitie ; Select("GLOBREF") = Global referentie ; Select("GROEP") = WG:Werkplaats+GenTyp; W:Werkplaats; G:GenTyp; GW:GenTyp+WerkPlaats ; Select("LIJSTSTART")= Start periode ($H) ; Select("LIJSTKOL")= 3 MAIN ;Hoofd routine Do Init Do Refresh Do Fetch(.Select) Do Groep(.Select) Do Refresh Do Command Do Clean Quit Init Set LEVNr=6332 Do INIT^vhTERMINA Set %J=$$%J^vhRtn1() Set Select("WERKKOST")="W" Set Select("GENTYP")="TBX;DIV;KAD" Set Select("GLOBREF")=$NAME(^HULP(%J)) Set Select("PERIODE")="D" Set Select("STOCKPROBLEEM")=1 Set Select("GROEP")="G" Set Select("TIJDVERLET")="K" Set Select("LIJSTSTART")=$$RoundDueOut($H,Select("PERIODE")) Set Select("LIJSTKOL")=11 ; 132 kolom Set Select("LIJSTKOLSELECT")=1 Do INIT^vhLIST("HADWOVZ","OVZ",.LD) Kill @Select("GLOBREF") Quit Clean ;Herteken scherm Write @FS80 Set sScr("KOL")=80 Kill @Select("GLOBREF") Quit Command For Do Quit:Input="-"!(Input="CANC") . Set Input=$$SCROLL^vhLIST(.LD,"X`S zb=$S(zb=""LE"":""("",zb=""RI"":"")"",1:"""")") . If Input="COM" Set Input="" Do CALL^vhMenu("HADWOVZ") . Do EXEC^vhMenu("HADWOVZ",.Input) Quit Refresh ;Herteken scherm Write @FS132 Set sScr("KOL")=132 Write @F11,@F1 Do DISPLAY^vhScherm("HADWOVZ") Do WRITE^vhLIST(.LD) Quit ; Dynamische aanpassen van de hoofding opgeroepen vanuit vhLIST LijstHoofding() New Txt,Ord,DueOut,One Set Txt="" Set Ord=Select("GROEP") Set Txt=$S(Ord="GW":" Type : WerkPl ",Ord="WG":" WerkPl : Type ",Ord="G":" Type : ",1:" WerkPl : ")_"|" Do:$G(Select("STOCKPROBLEEM")) HoofdingAdd(.Txt,"Gn Stock",1,9,1) Do HoofdingAdd(.Txt,"VOOR",1+Select("STOCKPROBLEEM"),9,1) Set DueOut=$O(Select("POSLIJST","")) ; de eerste is "VOOR" For Set DueOut=$O(Select("POSLIJST",DueOut)) Quit:DueOut="" Do . Do HoofdingAdd(.Txt,$$FmtHead(DueOut,Select("PERIODE")),Select("POSLIJST",DueOut),9,0) Do HoofdingAdd(.Txt,"NA",Select("LIJSTKOL"),9,1) Quit Txt_$J("",132-$L(Txt)) HoofdingAdd(Txt,String,Pos,Len,Bold) Set String=$E(String,1,Len) Set Mark=Pos=Select("LIJSTKOLSELECT") Set Txt=Txt_$S(Mark:"Şi",1:"")_$J("",Len-$L(String)\2)_$S(Bold:"ŞB",1:"")_String_$S(Bold:"Şb",1:"")_$J("",Len-$L(String)-(Len-$L(String)\2))_$S(Mark:"ŞI",1:"")_"|" Quit ; formateren van de datum gebruikt in de hoofding FmtHead(TijdStip,Fmt) New Txt Quit:Fmt="W" $$EXTDATE^vhDTyp(TijdStip,"DW") ; per week Quit:Fmt="D" $$EXTDATE^vhDTyp(TijdStip,"DK") ; per dag ; Halve dagen Set Txt=$$EXTDATE^vhDTyp(TijdStip,"DK") Set Txt=Txt_$S($P(TijdStip,",",2)>$$$VOORMIDDAG:"N",1:"V") Quit Txt ; Formateren van dag of uur in de lijst opgeroepen vanuit vhLIST FmtTijd(Val) New Dag,Uur,Min,Return Quit:Val<1 "" If Val>(50*3600)||1 Do ; format dagen .Set Dag=Val/3600/7.8 .;Set Uur=Val-((Dag*3600*7.8)/3600) .Set Return=$TR($J(Dag,0,1),".","d") Else Do ; uur .Set Uur=Val/3600\1 .Set Min=Val-(Uur*3600)/60 .Set Return=Uur_"h"_$J(Min/10,1,0) Quit Return MovePeriode(Dir) New Start Set Dir=$G(Dir,1) If ((Select("LIJSTKOLSELECT")=1)&&(Dir=-1))||((Select("LIJSTKOLSELECT")=Select("LIJSTKOL"))&&(Dir=1)) Do .Set Start=$$OrderDueOut(Select("LIJSTSTART"),Select("PERIODE"),.Dir) .Set Select("LIJSTSTART")=Start .Do Groep(.Select) .Do Refresh Else Do . Set Select("LIJSTKOLSELECT")=Select("LIJSTKOLSELECT")+Dir . Do WRITE^vhLIST(.LD) Quit SelectGroep New Grp Set Grp=$$PI^vhPOPUP("C;C","O2","Groep","HADWOVZ","GROEP",Select("GROEP")) Set Select("GROEP")=Grp Do Groep(.Select) Set LD("OFFSET")=0 Set LD("SELECT")=1 Do Refresh Quit SelectPeriode New Periode Set Periode=$$PI^vhPOPUP("C;C","O2","Periode","HADWOVZ","PERIODE",Select("PERIODE")) Set Select("PERIODE")=Periode Set Select("LIJSTSTART")=$$RoundDueOut($H,Select("PERIODE")) Do Groep(.Select) Set LD("OFFSET")=0 Set LD("SELECT")=1 Do Refresh Quit ; Groeperen van de cached data in tabel vorm Groep(Select) New DueOut,TijdVerlet,OrderType,GlobRef,DueOutRnd,Pos,GenTyp,Qty,QtyTijd,WerkPlaats,Tijden,GroepKey,GroepKey1,GroepKey2,List,Cnt Set DueOut="" Do BuildPosList(.Select,Select("PERIODE"),Select("LIJSTSTART"),Select("LIJSTKOL"),''Select("STOCKPROBLEEM")) Set TijdVerlet=Select("TIJDVERLET") Set OrderType=Select("GROEP") Set GlobRef=Select("GLOBREF") Kill @GlobRef@("S") For Set DueOut=$O(@GlobRef@("C",DueOut)) Quit:DueOut="" Do . Set DueOutRnd=$$RoundDueOut(DueOut,Select("PERIODE")) . Set Pos=$$PosDueOut(DueOutRnd,.Select) . Set FabKey="" . For Set FabKey=$O(@GlobRef@("C",DueOut,FabKey)) Quit:FabKey="" Do . . Set (Qty,QtyTijd)=$LG(@GlobRef@("C",DueOut,FabKey),2) . . Set GenTyp=$LG(@GlobRef@("C",DueOut,FabKey),3) . . Set WerkPlaats="" . . Kill MemKey . . For Set WerkPlaats=$O(@GlobRef@("C",DueOut,FabKey,WerkPlaats)) Quit:WerkPlaats="" Do . . . Set Tijden=@GlobRef@("C",DueOut,FabKey,WerkPlaats) . . . Set GroepKey=$$GroepKey(GenTyp,WerkPlaats,OrderType) . . . Set List=$G(@GlobRef@("S",$LI(GroepKey),$LI(GroepKey,2))) . . . Set:List="" List=$$FillDummyList(GenTyp,WerkPlaats,OrderType,GroepKey) . . . Set:'$D(MemKey($LI(GroepKey)_";"_$LI(GroepKey,2))) $LI(List,Pos*5+1)=$LG(List,Pos*5+1)+Qty ; Het aantal mag slechts 1 keer geteld worden per sleutel . . . Set $LI(List,Pos*5+2)=$LG(List,Pos*5+2)+(QtyTijd*$LG(Tijden,$S(TijdVerlet="Z":3,TijdVerlet="K":2,1:1))) . . . Set @GlobRef@("S",$LI(GroepKey),$LI(GroepKey,2))=List . . . Set MemKey($LI(GroepKey)_";"_$LI(GroepKey,2))="" ; Onthouden van gebruikte sleutel ;Do ArrayToTextW^vhLib($NA(@GlobRef@("C"))) ;Do ArrayToTextW^vhLib($NA(@GlobRef@("S"))) ;r k ; Renumber Kill @GlobRef@("L") Set (GroepKey1,GroepKey2)="" Set Cnt=0 For Set GroepKey1=$O(@GlobRef@("S",GroepKey1)) Quit:GroepKey1="" Do . For Set GroepKey2=$O(@GlobRef@("S",GroepKey1,GroepKey2)) Quit:GroepKey2="" Do . . Set Cnt=Cnt+1 . . Set @GlobRef@("L",Cnt)=@GlobRef@("S",GroepKey1,GroepKey2) . If $O(@GlobRef@("S",GroepKey1))'="" Set Cnt=Cnt+1,@GlobRef@("L",Cnt)="" Set LD("MAX")=Cnt Quit BinLadeLijst(Mode) ; Mode = R : Rij beperking op GenType en Werkplaats ; = K : Kolom beperking op DueOut ; = D : Rij+ Kolom beperking New Arr,GlobRef Do FetchFabKeyListGroep(.Select,.LD,Mode) Set GlobRef=$NA(@Select("GLOBREF")@("F")) Quit:'$D(@GlobRef) Do AddFabKey^HADTBXPrep(.Arr,GlobRef) Do Print^HADTBXPrep(.Arr,"Zaaglijst frontstuk voor binnenladen",,1) Quit Opvolging(Mode) ; Mode = R : Rij beperking op GenType en Werkplaats ; = K : Kolom beperking op DueOut ; = D : Rij + Kolom beperking Do FetchFabKeyListGroep(.Select,.LD,Mode) Set GlobRef=$NA(@Select("GLOBREF")@("F")) Quit:'$D(@GlobRef) Do . New Select,%J,LD . Write @FS80 . Set sScr("KOL")=80 . Do VERWERK^HADOPV("",,,GlobRef) Do Refresh Quit LijnUitOp3Cijfers(Input) Set Tekst = " "_Input Quit $Extract(Tekst,$Length(Tekst)-2,$Length(Tekst)) DagproductieOverzicht(Mode) ; Mode = R : Rij beperking op GenType en Werkplaats ; = K : Kolom beperking op DueOut ; = D : Rij + Kolom beperking New GlobRef Do FetchFabKeyListGroep(.Select,.LD,Mode) Set GlobRef=$NA(@Select("GLOBREF")@("F")) ;Quit:'$D(@GlobRef) Quit:((Select("LIJSTKOLSELECT") = Select("LIJSTKOL")) || ((1+Select("STOCKPROBLEEM")) = Select("LIJSTKOLSELECT"))) // voor of na kolom moet niet behandeld worden Set Datum = "" for i=1:1:Select("LIJSTKOLSELECT")-1-(Select("STOCKPROBLEEM")-1) { Set Datum = $O(Select("POSLIJST",Datum)) } New Output, Gekozen Set Datum = $ZD(Datum,4) Do ##class(DOM.PM.Maatwerk.TBX.HaluxWerkoverzichtHelper).DagproductieOverzicht(Datum,.Overzicht) Set SchrijfNaarBestand = "Schrijf naar DagoverzichtProductie.xls" Set Output(1) = "Lijn` 1 | 2 | K " Set Output(2) = "&S" Set Output(3) = "Smal, Geen binnnenlade`"_$$LijnUitOp3Cijfers(Overzicht("1","1001"))_" | "_$$LijnUitOp3Cijfers(Overzicht("2","1001"))_" | "_$$LijnUitOp3Cijfers(Overzicht("K","1001")) Set Output(4) = "Smal, Binnenlade zonder reling of boxside en/of tipon`"_$$LijnUitOp3Cijfers(Overzicht("1","1010"))_" | "_$$LijnUitOp3Cijfers(Overzicht("2","1010"))_" | "_$$LijnUitOp3Cijfers(Overzicht("K","1010")) Set Output(5) = "Smal, Binnenlade met reling en boxside`"_$$LijnUitOp3Cijfers(Overzicht("1","1100"))_" | "_$$LijnUitOp3Cijfers(Overzicht("2","1100"))_" | "_$$LijnUitOp3Cijfers(Overzicht("K","1100")) Set Output(6) = "Breed, Geen binnnenlade`"_$$LijnUitOp3Cijfers(Overzicht("1","0001"))_" | "_$$LijnUitOp3Cijfers(Overzicht("2","0001"))_" | "_$$LijnUitOp3Cijfers(Overzicht("K","0001")) Set Output(7) = "Breed, Binnenlade zonder reling of boxside en/of tipon`"_$$LijnUitOp3Cijfers(Overzicht("1","0010"))_" | "_$$LijnUitOp3Cijfers(Overzicht("2","0010"))_" | "_$$LijnUitOp3Cijfers(Overzicht("K","0010")) Set Output(8) = "Breed, Binnenlade met reling en boxside`"_$$LijnUitOp3Cijfers(Overzicht("1","0100"))_" | "_$$LijnUitOp3Cijfers(Overzicht("2","0100"))_" | "_$$LijnUitOp3Cijfers(Overzicht("K","0100")) Set Output(9) = "&S" Set Output(10) = SchrijfNaarBestand_"`OK" Set Gekozen = $$WILD^vhPOPUP("C;C","-OKB1","Dagproductieoverzicht "_Datum,.Output,"E4") if (Gekozen = SchrijfNaarBestand) { Set BestandsLocatie = ##class(%Library.File).NormalizeDirectory($$DIRUSER^vhDEV)_"DagoverzichtProductie.xls" // Als het bestand nog niet bestaat, schrijf de header er naar toe Set VlagHeader = '##class(%Library.File).Exists(BestandsLocatie) Set File = ##class(%Library.FileCharacterStream).%New() Set File.Filename=BestandsLocatie Do File.MoveToEnd() Set Header = "Datum" Set Productie = Datum for Lijn="1","2","K" { if (VlagHeader) Set Header = Header_$C(9)_"["_Lijn_"] Smal, Geen binnnenlade"_$C(9)_"["_Lijn_"] Smal, Binnenlade zonder reling of boxside en/of tipon"_$C(9)_"["_Lijn_"] Smal, Binnenlade met reling en boxside"_$C(9)_"["_Lijn_"] Breed, Geen binnnenlade"_$C(9)_"["_Lijn_"] Breed, Binnenlade zonder reling of boxside en/of tipon"_$C(9)_"["_Lijn_"] Breed, Binnenlade met reling en boxside" Set Productie = Productie_$C(9)_Overzicht(Lijn,"1001")_$C(9)_Overzicht(Lijn,"1010")_$C(9)_Overzicht(Lijn,"1100")_$C(9)_Overzicht(Lijn,"0001")_$C(9)_Overzicht(Lijn,"0010")_$C(9)_Overzicht(Lijn,"0100") } if (VlagHeader) Do File.WriteLine(Header) Do File.WriteLine(Productie) Do File.SaveStream() } Quit SpecialeItems(Mode) ; Mode = R : Rij beperking op GenType en Werkplaats ; = K : Kolom beperking op DueOut ; = D : Rij + Kolom beperking New GlobRef Do FetchFabKeyListGroep(.Select,.LD,Mode) Set GlobRef=$NA(@Select("GLOBREF")@("F")) Quit:'$D(@GlobRef) // tipons\spoelbakken\syphons\baliko's\antislipmat\binnenladen\glas\reling\stabilisator Set Count = "0\0\0\0\0\0\0\0\0" New FabKey,TOENr,TLNr Set FabKey="" For Set FabKey=$O(@GlobRef@(FabKey)) Quit:FabKey="" Do . Set TOENr=$P(FabKey,";") . Set TLNr=$G(^TO("IU",TOENr,$P(FabKey,";",2))) . Quit:TLNr="" . Set CountResult = ##class(DOM.PM.Maatwerk.TBX.HaluxWerkoverzichtHelper).OnderdelenPerToeleveringslijn(TOENr,TLNr) . For i=1:1:9 Do . . Set $P(Count,"\",i)=$Piece(Count,"\",i)+$Piece(CountResult,"\",i) New Output, Gekozen Set Output(1) = "Tipons: `"_$Piece(Count,"\",1) Set Output(2) = "Spoelbakken: `"_$Piece(Count,"\",2) Set Output(3) = "Sifons: `"_$Piece(Count,"\",3) Set Output(4) = "Baliko's: `"_$Piece(Count,"\",4) Set Output(5) = "Antislipmat: `"_$Piece(Count,"\",5) Set Output(6) = "Binnenladen: `"_$Piece(Count,"\",6) Set Output(7) = "Glas: `"_$Piece(Count,"\",7) Set Output(8) = "Relingen: `"_$Piece(Count,"\",8) Set Output(9) = "Stabilisatoren: `"_$Piece(Count,"\",9) Set Gekozen = $$WILD^vhPOPUP("C;C","-OKB1","Speciale items",.Output,"E4") Quit ; Ophalen van de FabKey lijst om door te geven aan HADOPV FetchFabKeyListGroep(Select,LijstDef,Mode) ; Select en LijstDef via .Local doorgeven New DueOut,TijdVerlet,OrderType,GlobRef,DueOutRnd,Pos,GenTyp,Qty,QtyTijd,WerkPlaats,Tijden,GroepKey,GroepKey1,GroepKey2,List,Cnt Set DueOut="" Set TijdVerlet=Select("TIJDVERLET") Set OrderType=Select("GROEP") Set GlobRef=Select("GLOBREF") Kill @GlobRef@("F") Set KolSelect=Select("LIJSTKOLSELECT") Set RijSelect=LijstDef("SELECT") Quit:RijSelect<1 ; Lege lijst Set GroepKeySelect=$LG(@GlobRef@("L",RijSelect),3) Quit:GroepKeySelect="" ; Lege scheidingslijn Quit:$LG(GroepKeySelect,1)="" For Set DueOut=$O(@GlobRef@("C",DueOut)) Quit:DueOut="" Do . Set DueOutRnd=$$RoundDueOut(DueOut,Select("PERIODE")) . Set Pos=$$PosDueOut(DueOutRnd,.Select) . If Mode'="R" Quit:Pos'=KolSelect ; Niet de geselecteerde . Set FabKey="" . For Set FabKey=$O(@GlobRef@("C",DueOut,FabKey)) Quit:FabKey="" Do . . Set (Qty,QtyTijd)=$LG(@GlobRef@("C",DueOut,FabKey),2) . . Set GenTyp=$LG(@GlobRef@("C",DueOut,FabKey),3) . . Set WerkPlaats="" . . Kill MemKey . . For Set WerkPlaats=$O(@GlobRef@("C",DueOut,FabKey,WerkPlaats)) Quit:WerkPlaats="" Do . . . Set Tijden=@GlobRef@("C",DueOut,FabKey,WerkPlaats) . . . Set GroepKey=$$GroepKey(GenTyp,WerkPlaats,OrderType) . . . If Mode'="K" Quit:($LI(GroepKey)'=$LI(GroepKeySelect))||($LI(GroepKey,2)'=$LI(GroepKeySelect,2)) . . . Set @GlobRef@("F",FabKey)="" ;zw @GlobRef@("F") Quit ; Invullen van de std. kenmerken van een lijn FillDummyList(GenTyp,WerkPlaats,OrderType,GroepKey) If OrderType="G" Quit $LB(GenTyp,,GroepKey) If OrderType="W" Quit $LB(WerkPlaats,,GroepKey) If OrderType="WG" Quit $LB(WerkPlaats,GenTyp,GroepKey) If OrderType="GW" Quit $LB(GenTyp,WerkPlaats,GroepKey) ;Groepeer sleutel GroepKey(GenTyp,WerkPlaats,OrderType) If OrderType="G" Quit $LB("*",GenTyp) If OrderType="W" Quit $LB("*",WerkPlaats) If OrderType="WG" Quit $LB(WerkPlaats,GenTyp) If OrderType="GW" Quit $LB(GenTyp,WerkPlaats) Quit $LB("*","*") RoundDueOut(DueOut,PeriodeType) If DueOut?1.A Quit DueOut ; geen ascii If PeriodeType="H" Quit $$CALCDATE^vhDTyp($P(DueOut,","),"A","-0")_","_$S($P(DueOut,",",2)>$$$VOORMIDDAG:$$$NAMIDDAG,1:$$$VOORMIDDAG) ; 's middags of 's avonds If PeriodeType="D" Quit $$CALCDATE^vhDTyp($P(DueOut,","),"A","-0")_","_$$$NAMIDDAG ; om 23:59 ; Week Quit $$CALCDATE^vhDTyp(DueOut,"W","LD")_","_$$$NAMIDDAG ; laatste dag van de week om 23:59 ; Opbouw van een positie lijst die dan later gebruikt worde door PosDueOut en om de titel te maken BuildPosList(Select,PeriodeType,Start,MaxPos,MetNoStock) ; Select via .Local New DueOut,Pos Kill Select("POSLIJST") Set DueOut=$$OrderDueOut(Start,PeriodeType,-1) For Pos=0:1:MaxPos-2-MetNoStock Do . Set Select("POSLIJST",DueOut)=Pos+1+MetNoStock . Set DueOut=$$OrderDueOut(DueOut,PeriodeType,1) Quit PosDueOut(DueOut,Select) ; Bepaalt de positie in de lijst, omzetting van $H naar positie ; Select via .Local New First,Last If DueOut="STOCK" Quit 1 Set First=$O(Select("POSLIJST","")) ; Het eerste element bevat de tijdstip en de positie voor het saldo 'VOOR' If (+$P(DueOut,",")<+$P(First,","))||(+$P(DueOut,",")=$P(First,",")&&($P(DueOut,",",2)'>$P(First,",",2))) Quit Select("POSLIJST",First) Set Last=$O(Select("POSLIJST",""),-1) If (+$P(DueOut,",")>+$P(Last,","))||(+$P(DueOut,",")=$P(Last,",")&&($P(DueOut,",",2)>$P(Last,",",2))) Quit Select("POSLIJST",Last)+1 Quit Select("POSLIJST",DueOut) OrderDueOut(DueOut,PeriodeType,Dir) ; Dir= -1 of +1 Set Dir=$G(Dir,1) If PeriodeType="W" Quit $$CALCDATE^vhDTyp(DueOut,"W",Dir,"LD")_","_$$$NAMIDDAG If PeriodeType="D" Quit $$CALCDATE^vhDTyp(DueOut,"A",Dir)_","_$$$NAMIDDAG ; PerdiodeType="H" If Dir=1 Do . If $P(DueOut,",",2)>$$$VOORMIDDAG Do ; bereken volgende dag voormiddag . . Set DueOut=$$CALCDATE^vhDTyp(DueOut,"A",Dir)_","_$$$VOORMIDDAG . Else Do ; namiddag zelfde dag . . Set $P(DueOut,",",2)=$$$NAMIDDAG Else Do ; Dir = -1 . If $P(DueOut,",",2)>$$$VOORMIDDAG Do ; voormiddag zelfde dag . . Set $P(DueOut,",",2)=$$$VOORMIDDAG . Else Do ; bereken vorige dag namiddag . . Set DueOut=$$CALCDATE^vhDTyp(DueOut,"A",Dir)_","_$$$NAMIDDAG Quit DueOut ; Sommeren van het aantal producten en de benodigde werktijd Fetch(Select) New Batch,Rec,PRNr,VolgNr,Som,Txt Kill @Select("GLOBREF")@("C") Set (Batch,VolgNr)="" Set LEVNr=6332 Set TOENr="" For Set TOENr=$O(^KTO(LEVNr,TOENr)) Quit:TOENr="" Do . Set RecH=^KTO(LEVNr,TOENr,1) . Set KLNr=$P(RecH,D,8) . Set DueOut="" . Set TLNr=99 . For Set TLNr=$O(^KTO(LEVNr,TOENr,TLNr)) Quit:TLNr="" Do .. Set RecL=^KTO(LEVNr,TOENr,TLNr) .. Set PRNr=$P(RecL,D,2) .. Quit:PRNr'?4.7N .. Set Qty=$P(RecL,D,3) .. Set FabKey=$$FABKEYT^HADOPV(TOENr,$P(RecL,D,15)) .. Do FetchOne(PRNr,FabKey,Qty,KLNr) Quit FetchOne(PRNr,FabKey,Qty,KLNr) Set GenTyp=$P($$GENTYP^HAD(PRNr),D,1,2) Set DueOut=$$RoundDueOut($$DUEOUTFabKey^HAD(FabKey),"H") Quit:($G(Select("GENTYP"))'[$P(GenTyp,D))||($P(GenTyp,D)="") ; ook de lege GENTYP telt niet mee If $G(Select("STOCKPROBLEEM")),$$HeeftStockProbleem(FabKey) Set DueOut="STOCK" Kill Som Do SomTijd(PRNr,.Som) Quit:'$D(Som) Set Som=$LB(PRNr,Qty,GenTyp,KLNr) ;If GenTyp["ASM" d WLIP^vhDBG(15,FabKey_"; "_$$ListToPieces^vhLib(Som,"; ")_"; "_$zd(DueOut)) Merge @Select("GLOBREF")@("C",DueOut,FabKey)=Som Quit HeeftStockProbleem(FabKey) Quit:$P($G(^HADPR("F",FabKey,"K")),D,3)="A" 0 ; alles klaargezet, dus geen stockprobleem meer Quit:$P($G(^HADPR("F",FabKey,"F")),D,3)="A" 1 ; fysisch stockprobleem Quit 0 SomTijd(PRNr,Som) Set BSCode="" ; Som via .Local For Set BSCode=$O(^PRBS("BS",PRNr,BSCode)) Quit:BSCode="" Do . Set BSRec=^PRBS("BS",PRNr,BSCode) . Quit:$P(BSRec,D,3)'="T" ; alleen Tijd berekening . Set KostPlaats=$P(BSRec,D,9) ; kostplaats code . If KostPlaats="" Do Quit . . Set Error($P(BSKey,".",2))=$P(BSRec,D,13)_": Kostplaats niet ingevuld" . Set oKostPlaats=##class(Prod.GAMeta.BT.KostPlaats).%OpenId(KostPlaats) . If '$isObject(oKostPlaats) Do Quit . . Set Error(BSKey)=$P(BSRec,D,13)_": "_KostPlaats_" kostplaats onbekend" . Set KV=oKostPlaats.GetToeslagKleinVerlet() . Set GV=oKostPlaats.GetToeslagGrootVerlet() . Set TijdP=$P(BSRec,D,7) ; Tijdplanning . . Set WerkPlaats=$S($G(Select("WERKKOST"))="W":$$TranslateKost2Werk(KostPlaats,oKostPlaats),1:KostPlaats) . Set SomRec=$G(Som(WerkPlaats)) . Set $LI(SomRec,1)=$LG(SomRec,1)+$J(TijdP*KV*GV,0,4) . Set $LI(SomRec,2)=$LG(SomRec,2)+$J(TijdP*KV,0,4) . Set $LI(SomRec,3)=$LG(SomRec,3)+$J(TijdP,0,4) . Set Som(WerkPlaats)=SomRec Quit TranslateKost2Werk(KostPlaats,oKostPlaats) Set:'$isObject($G(oKostPlaats)) oKostPlaats=##class(Prod.GAMeta.BT.KostPlaats).%OpenId(KostPlaats) Quit $S(oKostPlaats.Groep="":KostPlaats,1:oKostPlaats.Groep)