TECH.RegisteredObject Overloopt alle Orderpickings voor gegeven klant, en zet Status op Bon wanneer het order geen orderlijnen meer heeft. Dit doet zich meestal voor wanneer iets misgelopen is tijdens het proces om order op bon te zetten en de OrderPicking status niet meer kon aangepast werd (door de software) Oproepen via Do ##class(vhPowerTools.DOM.VKP.Order.OrderPickingStatusFixer).%New().FixOrdwOpBonVoorKlant(7587, $G(MagDataFixen,0)) KlantNr:%String=7587,MagDataFixen:%Boolean=0 CONSNr:%String,KlantNr:%String,MagDataFixen:%Boolean 1 0) #dim KODHeeftOrderlijnen As %Boolean = ($O(^KOD(KlantNr,"F",ORDNr,99)) > 99) #dim KODHoofdingZonderLijnen = (KODOrderBestaat) && $$$Not(KODHeeftOrderlijnen) #dim ORDWHoofdingStatus As %Boolean = $P(^ORDW("D",CONSNr),"\",20) #dim HeeftFixNodig As %Boolean = ($$$Not(##class(TECH.StringUtils).Equals(ORDWHoofdingStatus, $$$StatusBon, $$$StatusPartieel, $$$StatusWMS)) ) Set HeeftFixNodig = HeeftFixNodig && (KODHoofdingZonderLijnen || (ORDNr = 10099999)) ; (##class(TECH.StringUtils).Equals(ORDNr, 100185,100193,100200,100210,100213,100219,100297,100298,100300,100302,100303,100308,100309)) If (HeeftFixNodig) { Write !,"CONSNr : "_CONSNr_" - ORDNr : "_ORDNr_" | KOD Ln : "_KODHeeftOrderlijnen_" | ORDW St : '"_ORDWHoofdingStatus_"'" If (MagDataFixen) { Write " --> Fix data" For { Set OLUNr=$O(^ORDW("D",CONSNr,"D",ORDNr,OLUNr)) Quit:OLUNr="" #dim ORDWLijnStatus As %Boolean = $P(^ORDW("D",CONSNr,"D",ORDNr,OLUNr),"\",2) Write !,"ORDWLijn "_OLUNr_" Status '"_ ORDWLijnStatus _"' -> "_$$$StatusBon_" " Set $P(^ORDW("D",CONSNr,"D",ORDNr,OLUNr),"\",2) = $$$StatusBon } Set $P(^ORDW("D",CONSNr),"\",20) = $$$StatusBon Kill ^ORDW("IW",CONSNr) Write !,"ORDW Status en index aangepast voor CONS '"_CONSNr_"'" If KODHoofdingZonderLijnen { Do ..VerwijderOrder(ORDNr) Write !,"Order ^KOD("_ORDNr_") is verwijderd." } Else { Write !,"Order ^KOD("_ORDNr_") heeft nog lijnen en is dus NIET verwijderd." } Write ! } Else { Write " --> Fix niet uitgevoerd (report only)" } } } ]]> OrderNr:%Integer 1 OrderNr:%String 1