Index: MRPRES.mac.rou =================================================================== diff -u -r48144 -r75087 --- MRPRES.mac.rou (.../MRPRES.mac.rou) (revision 48144) +++ MRPRES.mac.rou (.../MRPRES.mac.rou) (revision 75087) @@ -17,25 +17,34 @@ ;Do ONERES(CRef,FabKey,PRNr,QtyToe,"FPW",.Status) ; De hercalculatie gebeurt globaal op voorhand, niet meer individueel ; Nakijken of een transfer order nodig is ;If ((Status["W")!(Status["F")!(Status["P")),(Status'["X") Do + + Quit:##class(OBJTimpl.CheckObjectiveFase).IsProductieSysteemMES(PRNr) ; deze producten worden verwerkt door het OBJT MES Set Status="" Set ForeCastDagen=3 ; aantal forecast dagen voor werkvloerproducten op voorraad Do BLDTORD(CRef,FabKey,PRNr,ForeCastDagen) Quit BLDTORD(CRef,FabKey,PRNr,ForeCastDagen) ; Controle welke halffabrikaten moeten opgenomen worden in een transferorder - New HFCode,HFPRNr,DimBrut,HFQty,ARRec,HFRec,HFRecD + New HFCode,HFPRNr,DimBrut,HFQty,ARRec,HFRec,HFRecD,MesFaseActief,IsClassificatieMatHalux,IsClassificatieVerpakkingHalux Quit:$P($G(^HADPR("F",FabKey,"K")),D,3)="A" ; Reeds productie klaar - + Set MesFaseActief=##class(TECH.Config.ConfigMgr).Instance().GeefString("APPS.Halux.PPS.Document.impl.BatchNaarObjective_MESFase") Set (HFCode)="" - For Set HFCode=$O(^HADPR("F",FabKey,"AR",HFCode)) Quit:HFCode="" Do + For Set HFCode=$O(^HADPR("F",FabKey,"AR",HFCode)) Quit:HFCode="" Do . Set ARRec=^HADPR("F",FabKey,"AR",HFCode) . Set HFRec=$G(^PRBS("BS",PRNr,HFCode)) ; als de bouwstenen gewijzigd werden nadat het product geactiveerd was. . Quit:$P(HFRec,D,3)'="H" ; Geen halffabrikaat . Set HFRecD=$G(^PRBS("BS",PRNr,HFCode,"D")) . Set HFPRNr=$P(HFRec,D,1) - . Quit:('$P(^KPR(HFPRNr,2),D,15))&&($$GETSTOCK^PRODUKT4(HFPRNr,"F",,0,1)<1) ; Werkvloer product zonder voorraad in magazijn + . Set IsClassificatieMatHalux = ($$$ProductGet(HFPRNr,$$$KlassificatieKey) = ##class(DOM.PM.enu.Classificatie).MatHalux()) + . Set IsClassificatieVerpakkingHalux = ($$$ProductGet(HFPRNr,$$$KlassificatieKey) = ##class(DOM.PM.enu.Classificatie).VerpakkingHalux()) + . Quit:('$P(^KPR(HFPRNr,2),D,15))&&($$GETSTOCK^PRODUKT4(HFPRNr,"F",,0,1)<1) ; Werkvloer product zonder voorraad in magazijn + . Quit:($$$ProductGet(HFPRNr,$$$WerkvloerSubMag)?1"KANBAN".E) ; Kanban niet opnemen in transferorder + . Quit:(IsClassificatieMatHalux && (MesFaseActief>1)) ; Dit is enkel voor tlm, zie routine hierboven waar wordt gecheckt of het prnr moet een transferorder aanmaken + . Quit:(IsClassificatieVerpakkingHalux && (MesFaseActief>1)) ; Dit is enkel voor tlm, zie routine hierboven waar wordt gecheckt of het prnr moet een transferorder aanmaken + . If HFCode?1(1"PRBOONDE.",1"PRKOPLI.",1"PRKOPRE.",1"PRFRONTB.",1"PRFB.")3N,($$PRODGRP^PRODUKT(PRNr)="TA.B"),$$IsGemonteerdeBinnenlade(PRNr) Do ;TA'OR onderdelen te monteren bij binnenlade + . . Set @CRef@("TAX ASSEMBLAGE",HFPRNr,FabKey)=$P(ARRec,D,2)_"\"_$P(HFRecD,D,2) . If $L($P($G(^KPR(HFPRNr,15)),D,5)) Do ; Er is een herbestelpunt ingevuld daarom overlaten aan de SCAN^MRPSTOCK . . Set @CRef@("SCANONE",HFPRNr,FabKey)=$P(ARRec,D,2)_"\"_$P(HFRecD,D,2) ; deze moeten absoluut opgenomen worden in de SCANONE^MRPSTOCK omdat deze klaargezet is (ook al is deze meerdere dagen verder) . Else If ($P(ARRec,D,6)="W")||($P(ARRec,D,6)="P")||($P(ARRec,D,6)="F") Do ; Te kort op werkvloer wordt bepaald door ACTIVERING @@ -45,11 +54,22 @@ . . Set:$L(HFRecD) @CRef@("TO",HFPRNr,FabKey,HFCode,"D")=HFRecD Quit +IsGemonteerdeBinnenlade(PRNr) + Set ConfiguratorService = ##class(APPS.VKP.Maatwerk.impl.ConfiguratorService).%New() + Set AppsNaarEconConverter = ##class(ECONimpl.PM.Maatwerk.AppsConverter).%New() + + #dim IngegevenKenmerken As APPS.PM.Maatwerk.dto.IngegevenKenmerken = ConfiguratorService.GeefOnverwerkteKenmerkenVanProduct(PRNr) + Quit:'##class(APPS.PM.Maatwerk.impl.IngegevenKenmerkenTypeAPI.IsGemonteerdeLadeBepaler).%New().IsGemonteerdeLade(IngegevenKenmerken) -1 + #dim arKenmerken As %ArrayOfDataTypes = AppsNaarEconConverter.ConverteerAppsNaarEcon(IngegevenKenmerken).ToArray() + Quit arKenmerken.GetAt("Data.Kenmerken.Isbinnenlade")="true" + ONERES(CRef,FabKey,PRNr,QtyToe,Opties,Status,NoResDel) ; Controle en reservatie van HFprods ; Status via .Local ; Opties: wat te controleren F=Fysische stock,Praktische stock, W=werkvloer magazijn, T=toelevering, Z = Alles of niets Set Status="" + Quit:##class(OBJTimpl.CheckObjectiveFase).IsProductieSysteemMES(PRNr) ; deze producten worden verwerkt door het OBJT MES + Do DELONE(FabKey,PRNr,.Status,$G(NoResDel)) Quit:Status="LCK" ; HF gelockt Do CHKONE(CRef,FabKey,PRNr,QtyToe,Opties,.Status) @@ -141,7 +161,7 @@ If $D(@CRef@("TO"))||$D(@CRef@("SCANONE")) Do . Set TimeStamp=$H . Merge ^MRPRESLog($P(TimeStamp,",",1),$P(TimeStamp,",",2),"MARK")=@CRef - . Do ScanVoorraadProducten^MRPSTOCK(CRef,3) + . Do ScanVoorraadProducten^MRPSTOCK(CRef,2) . Merge ^MRPRESLog($P(TimeStamp,",",1),$P(TimeStamp,",",2),"FETCH")=@CRef . ;Do BalanceLiRe(CRef) . ;Merge ^MRPRESLog($P(TimeStamp,",",1),$P(TimeStamp,",",2),"BALANCE")=@CRef@("TO") @@ -154,16 +174,60 @@ . Merge ^MRPRESLog($P(TimeStamp,",",1),$P(TimeStamp,",",2),"MISSING")=@CRef@("MISSING") . If $D(@CRef@("MISSING")) Do . . Do ToonProductenNietInOrder($NAME(@CRef@("MISSING"))) + . Do AddAssemblageSubMag(CRef) ; Onderdelen naar de assemblage werkpost te brengen voor TAX + . Kill @CRef@("TAX ASSEMBLAGE") Do CleanHistoriek() Quit - + +RETRY + ; stap 0 : meer uitleg in documentatie bij zoektermen 'Klaarzetten en doorsturen van transferorders crashes' + ; stap 1 : Opzoeken van de TimeStamp in MRPRESLog en hieronder de waarden 99999,99999 vervangen (uitgedrukt in $H) + ; stap 2 : de niet verwerkte SPLIT groepen mergen naar een tijdelijke local + ; stap 3 : BLD^MRPTORD uitvoeren met de tijdelijke local + Set CRef="cache" + For SplitGroepKey="C","G","~" Do //splitgroepen uit stap 2 gebruiken!! + . Merge @CRef@("STO",SplitGroepKey)=^MRPRESLog(99999,99999,"SPLIT",SplitGroepKey) //timestamp van stap 1 invullen!!! + Do BLD^MRPTORD($NAME(@CRef@("STO"))) + q + +RETRY2 + ; stap 0 : meer uitleg in documentatie bij zoektermen 'Klaarzetten en doorsturen van transferorders crashes' + ; stap 1 : Opzoeken van de TimeStamp in MRPRESLog + ; stap 2 : de niet verwerkte SPLIT groepen mergen naar een tijdelijke local + ; stap 3 : BLD^MRPTORD uitvoeren met de tijdelijke local + + Set CRef="cache" + Kill cache + Merge @CRef=^MRPRESLog(66778,55603,"MARK") zw @CRef + Do CLOSE(CRef) + Quit + +RETRYMARK + ; stap 0 : meer uitleg in documentatie bij zoektermen 'Klaarzetten en doorsturen van transferorders crashes' + ; stap 1 : Opzoeken van de TimeStamp in MRPRESLog + ; stap 2 : de niet verwerkte SPLIT groepen mergen naar een tijdelijke local + ; stap 3 : BLD^MRPTORD uitvoeren met de tijdelijke local + + Set CRef="cache" + Kill cache + Read "Geef Horolog datum en tijd met , seperated: ",Horolog + Quit:(+$P(Horolog,",")=0)||(+$P(Horolog,",",2)=0) ; foutieve ingave + Quit:$D(^MRPRESLog($P(Horolog,","),$P(Horolog,",",2)))'>1 ;geen subnodes + Merge @CRef=^MRPRESLog($P(Horolog,","),$P(Horolog,",",2),"MARK") zw @CRef + Do CLOSE(CRef) + Quit + CleanHistoriek() New Datum Set Datum=$H-60 For Set Datum=$O(^MRPRESLog(Datum),-1) Quit:Datum="" Do . Kill ^MRPRESLog(Datum) Quit +AddAssemblageSubMag(CRef) ; Toevoegen aan de speciale pickopdracht 999999 in Pickstar + Do ##class(APPS.Halux.PPS.DocumentGenerator.PickingOnderdelenNaarAssemblage).%New().GenereerDocument($Name(@CRef@("TAX ASSEMBLAGE"))) + Quit + ToonProductenNietInOrder(OntbrekendeCRef) New Body,SubMag,PRNr,Aantal Set Body="Bij het klaarzetten werden volgende halffabrikaten niet opgenomen in een order :" @@ -267,8 +331,12 @@ ... Set SubMag=$P(@CRef@("TO",PRNr,FabKey,HFCode),D,2) ... Set:SubMag="" SubMag=$$GetVerzendCode(PRNr,FabKey) ... Set:SubMag="" SubMag="~" - ... Set @CRef@("STO",SubMag,PRNr)=$G(@CRef@("STO",SubMag,PRNr))+Qty - ... Set @CRef@("STO",SubMag,PRNr,FabKey,HFCode)=Qty + ... If (SubMag="Y")||(SubMag="W") Do ; MyLegrabox of SpecialWorkShop + .... Set @CRef@("STO",SubMag_";"_$P(FabKey,";"),PRNr)=$G(@CRef@("STO",SubMag_";"_$P(FabKey,";"),PRNr))+Qty + .... Set @CRef@("STO",SubMag_";"_$P(FabKey,";"),PRNr,FabKey,HFCode)=Qty + ... Else Do + .... Set @CRef@("STO",SubMag,PRNr)=$G(@CRef@("STO",SubMag,PRNr))+Qty + .... Set @CRef@("STO",SubMag,PRNr,FabKey,HFCode)=Qty . ; Afronden naar boven van de aantallen . Set SubMag="" . For Set SubMag=$O(@CRef@("STO",SubMag)) Quit:SubMag="" Do:$D(@CRef@("STO",SubMag,PRNr)) @@ -325,6 +393,7 @@ Set Status="" Quit:$P($G(^HADPR("F",FabKey,"K")),D,3)="A" ; Reeds productie klaar Quit:$P($G(^HADPR("F",FabKey,"A")),D,3)'="A" ; Niet actief + Set QtyRes=QtyToe ; veronderstelling, dat alles kan geleverd worden Set HFCode="" Set Stop=0 @@ -483,7 +552,7 @@ . If $D(QtyRcp) && $D(^PRBS("BS",PRNr,HFCode)) Do .. Set QtyHFRcp=QtyRcp*$P(^PRBS("BS",PRNr,HFCode),D,2) .. Do DELHF(FabKey,HFCode,.Status,$G(NoResDel),QtyHFRcp) ; Gedeelte reservatie verwijderen - . Else Do DELHF(FabKey,HFCode,.Status,$G(NoResDel)) ; Bestaande reservatie verwijderen + . Else Do DELHF(FabKey,HFCode,.Status,$G(NoResDel),$G(QtyRcp,1)) ; Bestaande reservatie verwijderen Quit DELHF(FabKey,HFCode,Status,NoResDel,QtyHFRcp)