Index: DOM/PM/impl/ProductKenmerkenSets.cls.xml =================================================================== diff -u -r1580 -r1681 --- DOM/PM/impl/ProductKenmerkenSets.cls.xml (.../ProductKenmerkenSets.cls.xml) (revision 1580) +++ DOM/PM/impl/ProductKenmerkenSets.cls.xml (.../ProductKenmerkenSets.cls.xml) (revision 1681) @@ -122,7 +122,7 @@ If (NewUnID = ""){ Set ErrorMsg = "Het gegeneerde nieuwe UnID '"_NewUnID_"' voor reeds bestaande UnID '"_BronUnID_"' is niet correct." - Set ErrorMsg = ErrorMsg_$C(13,10)_$$ParseStatus^vhLib(NewUnID) + Set ErrorMsg = ErrorMsg_$C(13,10)_$$ParseStatus^vhLib(Status) Do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.BaseException).%New(##class(TECH.enu.ExceptionCode).GeneralError(),ErrorMsg)) } @@ -216,30 +216,32 @@ } }Else{ /// Als er nog meer dan één multiples bestaat, controleren of het opeenvolgende UnIDs zijn /// Zonodig deze wijzigen. - Set SubIDs = "" - Set DoelSubUnID = $ListLength(lbMulti) + + Set FromToArray = "" For Current = 1 : 1 : $ListLength(lbMulti) { - Set UnID = $ListGet(lbMulti,Current) - Set StoredSubID = ##class(BL.Kenm.ProdMulti).GetSubID(UnID) - Set SubIDs(Current) = StoredSubID - If (StoredSubID '= Current){ - /// Alles Opschuiven - For DoelSubUnID = (Current) : 1 : $ListLength(lbMulti) { - Set BronUnID = $ListGet(lbMulti,DoelSubUnID) - Set BronSubUnID = ##class(BL.Kenm.ProdMulti).GetSubID(BronUnID) - Set DoelUnID = ##class(BL.Kenm.ProdMulti).GetFullID(..PRNr,DoelSubUnID) - Do ..KopieerKenmerkenSets(BronUnID,DoelUnID) - } - } + Set UnID = $ListGet(lbMulti,Current) + Set StoredCommonID = ##class(BL.Kenm.ProdMulti).GetCommonID(UnID) + Set ToUnID = ##class(BL.Kenm.ProdMulti).GetFullID(StoredCommonID, Current) + Set FromToArray(UnID) = ToUnID } - /// UnID's verwijderen die niet meer nodig zijn + Set key=$ORDER(FromToArray("")) + While (key'="") { + If (key '= FromToArray(key)){ + Do ..KopieerKenmerkenSets(key,FromToArray(key)) + } + Set key = $ORDER(FromToArray(key)) + } + + /// UnID's verwijderen die niet meer nodig zijn For Current = 1 : 1 : $ListLength(lbMulti) { - If (SubIDs(Current) > DoelSubUnID){ - Set UnIDToRemove = ##class(BL.Kenm.ProdMulti).GetFullID(..PRNr,SubIDs(Current)) - Do ##class(Prod.Kenmerk.DataDefinitie).DeleteViaUnID(UnID,$LB(..KenmerkGroep)) - } + Set UnIDToRemove = $ListGet(lbMulti,Current) + Set SubID = ##class(BL.Kenm.ProdMulti).GetSubID(UnIDToRemove) + If (SubID > $ListLength(lbMulti)){ + Do ##class(Prod.Kenmerk.DataDefinitie).DeleteViaUnID(UnIDToRemove,$LB(..KenmerkGroep)) + } } + } }