dbo.QER_PITShopHelperFill_bulk
Stored ProcedureSQL_STORED_PROCEDURESandbox DB
Interpretation
- Database routine. Review parameters, called procedures, DBQueue inserts, and QBM_PJobCreate helper calls before assuming side effects.
- DBQueue relation detected. Follow the task procedure and referenced-by list for async processing.
Relations
- Bulk DBQueue insert -> QER-K-ShoppingRackPWOHelperPWO / QER_ZITShopHelperFill at line 280
- Bulk DBQueue insert -> QER-K-ShoppingRackCheckDecision / QER_ZITShopCheckDecision at line 280
- Bulk DBQueue insert -> QER-K-ShoppingRackCheckDecision / QER_ZITShopCheckDecision at line 286
- Bulk DBQueue insert -> CPL-K-ShoppingRackMakeDecisionOC / CPL_ZITShopMakeDecisionOC at line 331
- Bulk DBQueue insert -> CPL-K-ShoppingRackMakeDecisionOH / CPL_ZITShopMakeDecisionOH at line 331
- Bulk DBQueue insert -> QER-K-ShoppingRackMakeDecisionEX / QER_ZITShopMakeDecisionEX at line 331
- Bulk DBQueue insert -> CPL-K-ShoppingRackMakeDecisionOH / CPL_ZITShopMakeDecisionOH at line 332
- Bulk DBQueue insert -> QER-K-ShoppingRackMakeDecisionEX / QER_ZITShopMakeDecisionEX at line 332
- Bulk DBQueue insert -> QER-K-ShoppingRackMakeDecisionEX / QER_ZITShopMakeDecisionEX at line 347
- References QBM_PDBQueueInsert_Bulk
Typed Edges
- queues DBQueue task QER_ZITShopHelperFill at line 280 Bulk DBQueue insert -> QER-K-ShoppingRackPWOHelperPWO / QER_ZITShopHelperFill at line 280
- queues DBQueue task QER_ZITShopCheckDecision at line 280 Bulk DBQueue insert -> QER-K-ShoppingRackCheckDecision / QER_ZITShopCheckDecision at line 280
- queues DBQueue task QER_ZITShopCheckDecision at line 286 Bulk DBQueue insert -> QER-K-ShoppingRackCheckDecision / QER_ZITShopCheckDecision at line 286
- queues DBQueue task CPL_ZITShopMakeDecisionOC at line 331 Bulk DBQueue insert -> CPL-K-ShoppingRackMakeDecisionOC / CPL_ZITShopMakeDecisionOC at line 331
- queues DBQueue task CPL_ZITShopMakeDecisionOH at line 331 Bulk DBQueue insert -> CPL-K-ShoppingRackMakeDecisionOH / CPL_ZITShopMakeDecisionOH at line 331
- queues DBQueue task QER_ZITShopMakeDecisionEX at line 331 Bulk DBQueue insert -> QER-K-ShoppingRackMakeDecisionEX / QER_ZITShopMakeDecisionEX at line 331
- queues DBQueue task CPL_ZITShopMakeDecisionOH at line 332 Bulk DBQueue insert -> CPL-K-ShoppingRackMakeDecisionOH / CPL_ZITShopMakeDecisionOH at line 332
- queues DBQueue task QER_ZITShopMakeDecisionEX at line 332 Bulk DBQueue insert -> QER-K-ShoppingRackMakeDecisionEX / QER_ZITShopMakeDecisionEX at line 332
- queues DBQueue task QER_ZITShopMakeDecisionEX at line 347 Bulk DBQueue insert -> QER-K-ShoppingRackMakeDecisionEX / QER_ZITShopMakeDecisionEX at line 347
- references source dbo.QBM_FCVDatetimeToString source text reference
- references source dbo.QBM_FCVElementToObjectKey1 source text reference
- references source dbo.QBM_FCVStringToBit source text reference
- references source dbo.QBM_FCVStringToInt source text reference
- references source dbo.QBM_FCVStringTrimLDSPrefix source text reference
- references source dbo.QBM_FGIBitPatternXMarkedForDel source text reference
- references source dbo.QBM_FGIConfigparmValue source text reference
- references source dbo.QBM_FGISessionContext source text reference
- references source dbo.QER_FCVRuleGUIDToFunctionName source text reference
- references source dbo.QER_FGIGenProcIDForPWO source text reference
- references source dbo.QER_FGIPWORulerOrigin source text reference
- references source dbo.QBM_PDBQueueInsert_Bulk source text reference
- references source dbo.QBM_PSessionContextSet source text reference
- references source dbo.QBM_PSessionErrorAdd source text reference
- references source dbo.QER_P04F128DC257D2B3C236MAIL_ source text reference
- references source dbo.QER_PITShopHelperFill source text reference
- queues DBQueue task QER-K-ShoppingRackPWOHelperPWO -> QER_ZITShopHelperFill QBM_PDBQueueInsert_Bulk 'QER-K-ShoppingRackPWOHelperPWO' , @DBQueueElements_ModifiedHelper delete @PWOHelperPWO_Old from @PWOHelperPWO_Old o join @PWOToCheck c on o.UID_PersonWantsOrg = c.UID_PersonWantsOrg where c.IsModefiedByOthers = 1 d…
- queues DBQueue task QER-K-ShoppingRackCheckDecision -> QER_ZITShopCheckDecision QBM_PDBQueueInsert_Bulk 'QER-K-ShoppingRackCheckDecision', @DBQueueElements_CheckDecision if @DebugSwitch > 0 begin print 'Vor publizieren @@PWOHelperPWO_Old' select * from @PWOHelperPWO_Old end declare @GenProcIDs QBM_YCursorBuffer insert…
- queues DBQueue task CPL-K-ShoppingRackMakeDecisionOC -> CPL_ZITShopMakeDecisionOC QBM_PDBQueueInsert_Bulk 'CPL-K-ShoppingRackMakeDecisionOC', @DBQueueElements_MakeDecisionOC end if exists (select top 1 1 from @DBQueueElements_MakeDecisionOH ) begin exec QBM_PDBQueueInsert_Bulk 'CPL-K-ShoppingRackMakeDecisionOH', @DBQueu…
- queues DBQueue task CPL-K-ShoppingRackMakeDecisionOH -> CPL_ZITShopMakeDecisionOH QBM_PDBQueueInsert_Bulk 'CPL-K-ShoppingRackMakeDecisionOH', @DBQueueElements_MakeDecisionOH end end declare @ElementsToFire QBM_YCursorBuffer insert into @ElementsToFire (UID1, Int1, UID2 ) select distinct c.GenProcID, c.decisionlevel, c.U…
- queues DBQueue task QER-K-ShoppingRackMakeDecisionEX -> QER_ZITShopMakeDecisionEX QBM_PDBQueueInsert_Bulk 'QER-K-ShoppingRackMakeDecisionEX', @DBQueueElements_MakeDecisionEX END TRY BEGIN CATCH exec QBM_PSessionErrorAdd default RAISERROR ('', 18, 1) WITH NOWAIT END CATCH ende: SET ANSI_WARNINGS on exec QBM_PSessionConte…
References
- dbo.QBM_FCVDatetimeToString
- dbo.QBM_FCVElementToObjectKey1
- dbo.QBM_FCVStringToBit
- dbo.QBM_FCVStringToInt
- dbo.QBM_FCVStringTrimLDSPrefix
- dbo.QBM_FGIBitPatternXMarkedForDel
- dbo.QBM_FGIConfigparmValue
- dbo.QBM_FGISessionContext
- dbo.QER_FCVRuleGUIDToFunctionName
- dbo.QER_FGIGenProcIDForPWO
- dbo.QER_FGIPWORulerOrigin
- dbo.QBM_PDBQueueInsert_Bulk
- dbo.QBM_PSessionContextSet
- dbo.QBM_PSessionErrorAdd
- dbo.QER_P04F128DC257D2B3C236MAIL_
- dbo.QER_PITShopHelperFill
Referenced By
Complete Source
1CREATE PROCEDURE QER_PITShopHelperFill_bulk(2 @PWOs QBM_YParameterlist READONLY3)4 WITH5EXECUTE6AS7'dbo' AS8BEGIN9 DECLARE @GenProcID_R varchar(38) = dbo.QBM_FGISessionContext('')10 DECLARE @XUser_R nvarchar(64) = dbo.QBM_FGISessionContext('XUser')11 DECLARE @CfgUseGenProcID BIT = dbo.QBM_FCVStringToBit(dbo.QBM_FGIConfigparmValue('Common\ProcessState\UseGenProcIDFromPWO'))12 DECLARE @ElementLast int13 DECLARE @ElementBufferMulti_1 QBM_YCursorBuffer14 DECLARE @ElementCount int15 DECLARE @ElementIndex int16 DECLARE @ElementCountPWO int17 DECLARE @ElementIndexPWO int18 DECLARE @DBQueueElements_CheckDecision QBM_YDBQueueRaw19 DECLARE @DBQueueElements_MakeDecisionOC QBM_YDBQueueRaw20 DECLARE @DBQueueElements_MakeDecisionOH QBM_YDBQueueRaw21 DECLARE @DBQueueElements_MakeDecisionEX QBM_YDBQueueRaw22 DECLARE @PWOToCheck QER_YPWOBufferForHelper23 DECLARE @PWOHelperPWO_Old QER_YPWOHelper24 DECLARE @PWOHelperPWO_New QER_YPWOHelper25 DECLARE @hilfstab QER_YPWOHelperCPL26 DECLARE @CountItemsException int27 DECLARE @UID_PWO varchar(38)28 DECLARE @SubLevelNumber int29 DECLARE @LevelNumber int30 DECLARE @LevelNumber_alt int31 DECLARE @uid_complianceRule varchar(38)32 DECLARE @uid_complianceRule_max varchar(38)33 DECLARE @UID_PersonNonCompliant varchar(38)34 DECLARE @FunctionName varchar(30)35 DECLARE @UID_PWODecisionRule varchar(38)36 DECLARE @UID_QERWorkingStep varchar(38)37 DECLARE @countApproverNeeded int38 DECLARE @SQLCmd nvarchar(max)39 DECLARE @countApproverAvailable int40 DECLARE @GenProcIDToUse varchar(38)41 DECLARE @DecisionLevelToUse int42 DECLARE @SonderBehandlungException BIT = 043 DECLARE @DebugSwitch int = 044 DECLARE @cfgPersonOrderedNoDecide BIT = dbo.QBM_FCVStringToBit(dbo.QBM_FGIConfigparmValue('QER\ITShop\PersonOrderedNoDecide'))45 DECLARE @cfgPersonInsertedNoDecide BIT = dbo.QBM_FCVStringToBit(dbo.QBM_FGIConfigparmValue('QER\ITShop\PersonInsertedNoDecide'))46 DECLARE @OrderState nvarchar(16)47 DECLARE @QBM_BitPatternXMarkedForDel_Delay int = dbo.QBM_FGIBitPatternXMarkedForDel('|Delay|',48 0)49 DECLARE @XUser nvarchar(64) = object_name(@@procid)50 DECLARE @Xdate datetime = getutcdate()51 DECLARE @PWOAndLevel TABLE(UID_PersonWantsOrg varchar(38) collate database_default,52 LevelNumber int DEFAULT 0,53 index PWOAndLevel1(UID_PersonWantsOrg))54 DECLARE @Calltype varchar(1)55 SET XACT_ABORT OFF56 BEGIN TRY57 drop TABLE58 IF EXISTS #PWOHelperPWO_New59 CREATE TABLE #PWOHelperPWO_New(60 UID_PWODecisionRule varchar(38) collate database_default,61 uid_personHead varchar(38) collate database_default,62 uid_QERWorkingStep varchar(38) collate database_default,63 levelnumber int DEFAULT 0,64 Sublevelnumber int DEFAULT 0,65 istoInsert BIT DEFAULT 0,66 UID_PWORulerOrigin varchar(38) collate database_default,67 RulerLevel int DEFAULT 0,68 UID_PersonWantsOrg varchar(38) collate database_default,69 UID_PersonSubstituteSender varchar(38) collate database_default70 )71 INSERT INTO @PWOToCheck(UID_PersonWantsOrg,72 GenProcid,73 CurrentLevelOnly,74 IsNewDecisionLevel,75 makeEmpty,76 Decisionlevel,77 UID_QERWorkingMethod,78 Orderstate,79 SonderlockeException,80 UID_ITShopOrgFinal,81 validFrom,82 ValidUntil,83 isOrderforWorkDesk,84 UID_PersonOrdered,85 UID_OrgParent,86 UID_PersonInserted,87 isReserved,88 UID_PersonHead89 )90 SELECT91 DISTINCT p.Parameter1,92 dbo.QER_FGIGenProcIDForPWO(isnull(pwo.GenProcID,93 p.Parameter2),94 p.Parameter2,95 @CfgUseGenProcID96 )97 AS98 GenProcid,99 dbo.QBM_FCVStringToInt(p.Parameter3,100 0) AS CurrentLevelOnly,101 p.HasContentFull AS IsNewDecisionLevel,102CASE103 WHEN pwo.UID_PersonWantsOrg IS NULL THEN1041105 WHEN pwo.OrderState NOT IN('OrderProduct',106'OrderProlongate',107'OrderUnsubscribe') THEN1081109ELSE 0110END AS makeEmpty,111pwo.decisionlevel,112pwo.UID_QERWorkingMethod,113pwo.OrderState,114sign(len(isnull(sOC.UID_QERWorkingStep, ''))) AS SonderlockeException,115pwo.UID_ITShopOrgFinal,116pwo.ValidFrom,117pwo.ValidUntil,118isOrderforWorkDesk,119UID_PersonOrdered,120UID_OrgParent,121pwo.UID_PersonInserted,122pwo.IsReserved,123UID_PersonHead124FROM @PWOs p125LEFT126OUTER127JOIN PersonWantsOrg pwo128 ON p.Parameter1 = pwo.UID_PersonWantsOrg129LEFT130OUTER131JOIN QERWorkingStep sOC132 ON pwo.UID_QERWorkingMethod = sOC.UID_QERWorkingMethod AND sOC.UID_PWODecisionRule IN('CPL-PWODecisionRule-OC',133'CPL-PWODecisionRule-OH') AND(dbo.QBM_FCVStringToInt(p.Parameter3, 0) = 0 OR(sOC.LevelNumber = pwo.DecisionLevel))134SELECT @ElementCountPWO = @@ROWCOUNT135INSERT INTO @PWOAndLevel(UID_PersonWantsOrg,136LevelNumber)137SELECT138 h.UID_PersonWantsOrg,139 h.LevelNumber140FROM @PWOToCheck pwo141JOIN PWOHelperPWO h142 ON h.UID_PersonWantsOrg = pwo.UID_PersonWantsOrg143GROUP BY h.UID_PersonWantsOrg,144h.LevelNumber,145pwo.DecisionLevel146HAVING((max(pwo.CurrentLevelOnly) = 1 AND pwo.DecisionLevel = h.LevelNumber) OR(max(pwo.CurrentLevelOnly) = 0 AND(MAX(isnull(h.Decision,147'')) = '' OR pwo.DecisionLevel = h.LevelNumber)))148UNION149SELECT150 pwo.UID_PersonWantsOrg,151 s.LevelNumber152FROM @PWOToCheck pwo153JOIN QERWorkingStep s154 ON pwo.UID_QERWorkingMethod = s.UID_QERWorkingMethod155WHERE156 NOT EXISTS(157SELECT TOP 1 1158FROM PWOHelperPWO h159WHERE160 h.UID_PersonWantsOrg = pwo.UID_PersonWantsOrg AND h.LevelNumber = s.LevelNumber AND h.SubLevelNumber = s.SubLevelNumber)161IF @DebugSwitch > 0162BEGIN163 print 'initialbefüllung @PWOToCheck'164 SELECT *165 FROM @PWOToCheck166END167INSERT INTO @PWOHelperPWO_Old(UID_PWODecisionRule,168uid_personHead,169levelnumber,170SubLevelNumber,171UID_QERWorkingStep,172decision,173uid_complianceRule,174uid_PersonNonCompliant,175UID_PWORulerOrigin,176UID_PersonAdditional,177UID_PersonInsteadOf,178IsFromDelegation,179RulerLevel,180IsToDelete,181UID_PWOHelperPWO,182isToUpdateDecision,183UID_PersonWantsOrg,184NextAutomaticDecision)185SELECT186 isnull(UID_PWODecisionRule,187 ''),188 pwoh.UID_PersonHead,189 levelnumber,190 SubLevelNumber,191 pwoh.uid_QERWorkingStep,192 isnull(pwoh.decision,193 ''),194 uid_complianceRule,195 uid_PersonNonCompliant,196 UID_PWORulerOrigin,197 UID_PersonAdditional,198 UID_PersonInsteadOf,199 IsFromDelegation,200 RulerLevel,201CASE202 WHEN c.makeEmpty = 1 THEN2031204 WHEN pwoh.Decision = '-' THEN2051206ELSE 0207END AS IsToDelete,208pwoh.UID_PWOHelperPWO,209CASE210 WHEN pwoh.Decision IS NULL THEN2111212ELSE 0213END AS isToUpdateDecision,214c.UID_PersonWantsOrg,215pwoh.NextAutomaticDecision216FROM PWOHelperPWO pwoh217 WITH(readpast)218JOIN @PWOToCheck c219 ON pwoh.UID_PersonWantsOrg = c.UID_PersonWantsOrg220WHERE221 EXISTS(222SELECT TOP 1 1223FROM @PWOAndLevel pl224WHERE225 pl.UID_PersonWantsOrg = pwoh.UID_PersonWantsOrg AND pl.LevelNumber = pwoh.LevelNumber) OR c.makeEmpty = 1226UPDATE @PWOToCheck227SET CheckSumHelper = x.CheckSumHelper228FROM @PWOToCheck p229JOIN(230SELECT231 c.UID_PersonWantsOrg,232 checksum_agg(checksum(CONCAT(h.UID_PWOHelperPWO, h.Decision))) AS CheckSumHelper233FROM @PWOToCheck c234LEFT235OUTER236JOIN PWOHelperPWO h237 WITH(readpast)238 ON c.UID_PersonWantsOrg = h.UID_PersonWantsOrg239GROUP BY c.UID_PersonWantsOrg) AS x240 ON p.UID_PersonWantsOrg = x.UID_PersonWantsOrg241IF @DebugSwitch > 0242BEGIN243 print 'initialbefüllung @PWOHelperPWO_Old'244 SELECT *245 FROM @PWOHelperPWO_Old246END247IF EXISTS(248 SELECT TOP 1 1249 FROM @PWOToCheck c250 WHERE251 c.SonderlockeException = 1)252BEGIN253 SELECT @SonderBehandlungException = 1254END255IF @SonderBehandlungException = 1256BEGIN257 INSERT INTO @hilfstab(uid_complianceRule,258 uid_personNonCompliant,259 SubLevelNumber,260 RuleSeverity,261 isHighestSeverity,262 Levelnumber,263 UID_PersonWantsOrg)264 SELECT265 pic.uid_complianceRule,266 pic.uid_person,267 -1,268 isnull(c.RuleSeverity,269 0.0),270 0,271 sOC.Levelnumber,272 pwo.UID_PersonWantsOrg273 FROM HelperPWOCompliance pic274 JOIN @PWOToCheck pwo275 ON pic.uid_personwantsorg = pwo.uid_personwantsorg AND pwo.SonderlockeException = 1276 JOIN ComplianceRule c277 ON pic.uid_complianceRule = c.uid_complianceRule AND c.IsInActive = 0 AND c.IsWorkingCopy = 0278 JOIN QERWorkingStep sOC279 ON sOC.UID_QERWorkingMethod = pwo.UID_QERWorkingMethod AND sOC.UID_PWODecisionRule IN('CPL-PWODecisionRule-OC',280 'CPL-PWODecisionRule-OH')281 JOIN QERWorkingStep sCC282 ON sCC.UID_QERWorkingMethod = pwo.UID_QERWorkingMethod AND sCC.UID_PWODecisionRule IN('CPL-PWODecisionRule-CR') AND sCC.levelnumber + sCC.NegativeSteps283 = sOC.Levelnumber284 GROUP BY pwo.UID_PersonWantsOrg,285 pic.uid_complianceRule,286 pic.uid_Person,287 isnull(c.RuleSeverity,288 0.0),289 sOC.Levelnumber290 ORDER BY pwo.UID_PersonWantsOrg,291 pic.uid_complianceRule,292 pic.uid_Person,293 isnull(c.RuleSeverity,294 0.0),295 sOC.Levelnumber296 UPDATE @PWOToCheck297 SET CountItemsException = x.anzahl298 FROM @PWOToCheck c299 JOIN(300 SELECT301 h.UID_PersonWantsOrg,302 count(*) AS anzahl303 FROM @hilfstab h304 GROUP BY h.UID_PersonWantsOrg) AS x305 ON x.UID_PersonWantsOrg = c.UID_PersonWantsOrg306 WHERE307 c.SonderlockeException = 1308 INSERT INTO PWODecisionHistory(UID_PWODecisionHistory,309 XObjectKey,310 UID_PersonRelated,311 UID_PersonWantsOrg,312 DisplayPersonHead,313 ReasonHead,314 DateHead,315 XDateInserted,316 XDateUpdated,317 XUserInserted,318 XUserUpdated,319 DecisionLevel,320 ValidUntil,321 ValidFrom,322 DecisionType,323 IsDecisionBySystem,324 UID_PWODecisionRule,325 OrderState,326 UID_ITShopOrgFinal,327 IsToHideInHistory,328 UID_ComplianceRule)329 SELECT330 c.UID_HelperPWOCompliance,331 dbo.QBM_FCVElementToObjectKey1('PWODecisionHistory',332 'UID_PWODecisionHistory',333 c.UID_HelperPWOCompliance),334 c.UID_Person,335 pwo.UID_PersonWantsOrg,336 'compliance violation detected',337 'compliance violation detected',338 GETUTCDATE(),339 GETUTCDATE(),340 GETUTCDATE(),341 'sa',342 'sa',343 pwo.DecisionLevel,344 pwo.ValidUntil,345 pwo.ValidFrom,346 'Compliance',347 1,348 NULL,349 pwo.OrderState,350 pwo.UID_ITShopOrgFinal,351 1,352 c.UID_ComplianceRule353 FROM HelperPWOCompliance c354 JOIN @PWOToCheck pwo355 ON c.UID_PersonWantsOrg = pwo.UID_PersonWantsOrg356 WHERE357 NOT EXISTS(358 SELECT TOP 1 1359 FROM PWODecisionHistory h360 WHERE361 h.UID_PWODecisionHistory = c.UID_HelperPWOCompliance) AND NOT EXISTS(362 SELECT TOP 1 1363 FROM PWODecisionHistory h364 WHERE365 h.UID_ComplianceRule = c.UID_ComplianceRule AND h.UID_PersonWantsOrg = pwo.UID_PersonWantsOrg)366 SELECT @ElementIndexPWO = 1367 WHILE @ElementIndexPWO <= @ElementCountPWO368 BEGIN369 SELECT370 TOP 1 @CountItemsException = c.CountItemsException,371 @UID_PWO = c.UID_PersonWantsOrg372 FROM @PWOToCheck c373 WHERE374 c.ElementIndex = @ElementIndexPWO375 IF @CountItemsException > 0376 BEGIN377 SELECT @SubLevelNumber = 0378 SELECT @Levelnumber_alt = -100379 DELETE @ElementBufferMulti_1380 INSERT INTO @ElementBufferMulti_1(Int1,381 UID1,382 UID2)383 SELECT384 h.Levelnumber,385 h.UID_ComplianceRule,386 h.UID_PersonNonCompliant387 FROM @hilfstab h388 WHERE389 h.UID_PersonWantsOrg = @UID_PWO390 ORDER BY h.Levelnumber,391 h.UID_ComplianceRule,392 h.UID_PersonNonCompliant393 SELECT @ElementCount = @@ROWCOUNT394 SELECT @ElementIndex = @@IDENTITY - @ElementCount +1395 SELECT @ElementLast = @@IDENTITY396 WHILE @ElementIndex <= @ElementLast397 BEGIN398 SELECT399 TOP 1 @Levelnumber = bu.Int1,400 @uid_complianceRule = bu.UID1,401 @UID_PersonNonCompliant = bu.UID2402 FROM @ElementBufferMulti_1 bu403 WHERE404 bu.ElementIndex = @ElementIndex405 IF @levelnumber <> @Levelnumber_alt406 BEGIN407 SELECT @levelnumber_alt = @levelnumber408 SELECT @SubLevelNumber = 0409 SELECT TOP 1 @uid_complianceRule_max = h.UID_ComplianceRule410 FROM @hilfstab h411 WHERE412 h.levelnumber = @levelnumber AND h.UID_PersonWantsOrg = @UID_PWO413 ORDER BY isnull(h.RuleSeverity,414 0.0) DESC,415 uid_compliancerule ASC416 UPDATE @hilfstab417 SET isHighestSeverity = 1418 FROM @hilfstab h419 WHERE420 h.UID_ComplianceRule = @uid_complianceRule_max AND h.Levelnumber = @Levelnumber AND h.UID_PersonWantsOrg = @UID_PWO421 END422 ELSE423 BEGIN424 SELECT @SubLevelNumber = @SubLevelNumber + 1425 END426 UPDATE @Hilfstab427 SET SubLevelNumber = @SubLevelNumber428 FROM @hilfstab h429 WHERE430 h.UID_ComplianceRule = @uid_complianceRule AND UID_PersonNonCompliant = @UID_PersonNonCompliant AND h.Levelnumber = @levelnumber AND h.UID_PersonWantsOrg431 = @UID_PWO432 SELECT @ElementIndex += 1433 END434 END435 SELECT @ElementIndexPWO += 1436 END437END438UPDATE @PWOHelperPWO_Old439SET isToDelete = 1440FROM @PWOHelperPWO_Old zk441JOIN(442SELECT *443FROM @PWOHelperPWO_Old) AS d444 ON zk.UID_PWODecisionRule = d.UID_PWODecisionRule AND zk.uid_QERWorkingStep = d.uid_QERWorkingStep AND zk.levelnumber = d.levelnumber AND zk.Sublevelnumber445= d.Sublevelnumber AND zk.UID_PersonWantsOrg = d.UID_PersonWantsOrg446WHERE447 zk.UID_PersonInsteadOf = d.UID_PersonHead AND d.UID_PersonInsteadOf > ' '448DECLARE @ElementAufruf QBM_YCursorbuffer449INSERT INTO @ElementAufruf(UID1,450UID2,451Ident1,452Int1,453Int2,454Int3,455UID3,456Ident2)457SELECT458 DISTINCT s.UID_PWODecisionRule,459 s.UID_QERWorkingStep,460 dbo.QER_FCVRuleGUIDToFunctionName(s.UID_PWODecisionRule),461 s.LevelNumber,462 s.SubLevelNumber,463 s.CountApprover,464 pwo.UID_PersonWantsOrg,465 pwo.Orderstate466FROM @PWOToCheck pwo467JOIN QERWorkingStep s468 ON s.UID_QERWorkingMethod = pwo.UID_QERWorkingMethod469WHERE470 (pwo.isOrderforWorkDesk = 1 OR EXISTS(471SELECT TOP 1 1472FROM BaseTree bo473JOIN BaseTree sh474 ON bo.uid_ParentOrg = sh.uid_Org AND bo.itshopInfo = 'BO' AND sh.itshopInfo = 'SH'475JOIN BaseTree cu476 ON cu.uid_ParentOrg = sh.uid_Org AND cu.ITShopInfo = 'CU'477JOIN PersonInBaseTree pio478 ON pio.uid_Org = cu.uid_Org AND pwo.uid_PersonOrdered = pio.UID_Person AND pio.XOrigin > 0479WHERE480 bo.uid_Org = pwo.UID_OrgParent)) AND(EXISTS(481SELECT TOP 1 1482FROM @PWOAndLevel pl483WHERE484 pl.UID_PersonWantsOrg = pwo.UID_PersonWantsOrg AND pl.LevelNumber = s.LevelNumber)) AND pwo.makeEmpty = 0485ORDER BY s.UID_PWODecisionRule486SELECT @ElementCount = @@ROWCOUNT487SELECT @ElementIndex = @@IDENTITY - @ElementCount +1488SELECT @ElementLast = @@IDENTITY489WHILE @ElementIndex <= @ElementLast490BEGIN491 SELECT492 TOP 1 @UID_PWODecisionRule = bu.UID1,493 @UID_QERWorkingStep = bu.UID2,494 @FunctionName = bu.Ident1,495 @LevelNumber = bu.Int1,496 @SublevelNumber = bu.Int2,497 @countApproverNeeded = bu.Int3,498 @UID_PWO = bu.UID3,499 @OrderState = bu.Ident2500 FROM @ElementAufruf bu501 WHERE502 bu.ElementIndex = @ElementIndex503 SELECT TOP 1 @Calltype = CASE o.type504 WHEN 'IF' THEN505 'F'506 WHEN 'TF' THEN507 'F'508 WHEN 'P' THEN509 'P'510 ELSE ''511 END512 FROM sys.objects o513 WHERE514 o.name = @FunctionName515 IF @Calltype = ''516 BEGIN517 GOTO zyklusende518 END519 IF @Calltype = 'P'520 BEGIN521 truncate TABLE #PWOHelperPWO_New522 END523 SELECT @SQLcmd = ''524 IF @Calltype = 'P'525 BEGIN526 SELECT527 @SQLCmd = CONCAT('drop table if exists #Ruler_main528 create table #Ruler_main(UID_Person varchar(38) collate database_default529 , UID_PWORulerOrigin varchar(38) collate database_default530 )531 exec '532 ,533 @functionname,534 ' ''',535 @UID_PWO,536 ''', ''',537 @UID_QERWorkingStep,538 '''539 ')540 END541 SELECT542 @SQLcmd = CONCAT(@SQLcmd,543 '544 declare @PersonAndLevel QBM_YParameterList545546 insert into @PersonAndLevel (Parameter1, Parameter2, Parameter3)547 select s.uid_person, max(s.UID_PWORulerOrigin), s.RulerLevel548 from (549 '550 ,551 CASE @Calltype552 WHEN 'F' THEN553 CONCAT('select a1.uid_person, a1.UID_PWORulerOrigin, ''0'' as RulerLevel554 from dbo.', @functionname,555 ' (''', @UID_PWO, ''', ''', @UID_QERWorkingStep, ''') a1 ')556 ELSE 'select uid_person, UID_PWORulerOrigin, ''0'' as RulerLevel557 from #Ruler_main '558 END,559 '560 union all561 select pio.UID_Person, dbo.QER_FGIPWORulerOrigin(pio.XObjectKey) as UID_PWORulerOrigin, ''1'' as Rulerlevel562 from QERWorkingStep s join PersonInBaseTree pio on s.UID_AERoleFallBack = pio.UID_Org563 and pio.XOrigin > 0564 where s.UID_QERWorkingStep = '''565 ,566 @UID_QERWorkingStep,567 '''568 union all 569 select pio.UID_Person, dbo.QER_FGIPWORulerOrigin(pio.XObjectKey) as UID_PWORulerOrigin, ''2'' as Rulerlevel570 from PersonInBaseTree pio571 where pio.UID_Org = ''QER-AEROLE-ITSHOP-INTERVENTION''572 and pio.XOrigin > 0573 ) as s574 group by s.uid_person, s.RulerLevel575 '576 ,577 CASE @Calltype578 WHEN 'F' THEN579 ''580 WHEN 'P' THEN581 '582 insert into #PWOHelperPWO_New (UID_PWODecisionRule , uid_personHead, uid_QERWorkingStep, levelnumber, Sublevelnumber, istoInsert, UID_PWORulerOrigin, RulerLevel, UID_PersonWantsOrg, UID_PersonSubstituteSender)'583 ELSE ''584 END,585 '586 select ''',587 @uid_Pwodecisionrule,588 ''' , s.uid_person, ''',589 @UID_QERWorkingStep,590 ''' , ',591 str(@levelnumber),592 ', ',593 str(@Sublevelnumber),594 ', 0, max(s.UID_PWORulerOrigin), dbo.QBM_FCVStringToInt( s.RulerLevel, 0), ''',595 @UID_PWO,596 '''597 -- 31893 ist eine Person sowieso entscheidungsberechtigt und noch einmal über Substitute reingekommen, soll der Eintrag von "sowieso" erhalten bleiben598 , min(isnull(s.UID_PersonSubstituteSender, ''''))599 from (600 select p.Parameter1 as UID_Person, p.Parameter2 as UID_PWORulerOrigin, p.Parameter3 as RulerLevel, null as UID_PersonSubstituteSender601 from @PersonAndLevel p602603 union all604605 select us.UID_PersonReceiver, us.UID_PersonWantsOrg as UID_PWORulerOrigin, p.Parameter3 as RulerLevel /* string */, us.UID_PersonSender as UID_PersonSubstituteSender606 from @PersonAndLevel p join QERUniversalSubstitute us on p.Parameter1 = us.UID_PersonSender607 where us.IsCurrentlyActive = 1608 and us.UseForITShop = 1609 and not exists (select top 1 1 from @PersonAndLevel pal where pal.Parameter1 = us.UID_PersonReceiver and pal.Parameter3 = p.Parameter3)610 ) as s611 group by s.UID_Person, s.RulerLevel612613 '614 )615 IF @Calltype = 'F'616 BEGIN617 INSERT INTO @PWOHelperPWO_New(UID_PWODecisionRule,618 uid_personHead,619 uid_QERWorkingStep,620 levelnumber,621 Sublevelnumber,622 istoInsert,623 UID_PWORulerOrigin,624 RulerLevel,625 UID_PersonWantsOrg,626 UID_PersonSubstituteSender)627 EXEC sp_executesql @SQLcmd628 END629 IF @Calltype = 'P'630 BEGIN631 EXEC sp_executesql @SQLcmd632 INSERT INTO @PWOHelperPWO_New(UID_PWODecisionRule,633 uid_personHead,634 uid_QERWorkingStep,635 levelnumber,636 Sublevelnumber,637 istoInsert,638 UID_PWORulerOrigin,639 RulerLevel,640 UID_PersonWantsOrg,641 UID_PersonSubstituteSender)642 SELECT643 UID_PWODecisionRule,644 uid_personHead,645 uid_QERWorkingStep,646 levelnumber,647 Sublevelnumber,648 istoInsert,649 UID_PWORulerOrigin,650 RulerLevel,651 UID_PersonWantsOrg,652 UID_PersonSubstituteSender653 FROM #PWOHelperPWO_New654 END655 UPDATE @PWOHelperPWO_New656 SET UID_PWORulerOrigin = su.UID_PersonWantsOrg657 FROM @PWOHelperPWO_New n658 JOIN QERUniversalSubstitute su659 ON n.UID_PersonHead = su.UID_PersonReceiver AND(su.UseForHeadPerson = 1 OR su.UseForHeadOrg = 1) AND su.IsCurrentlyActive = 1660 WHERE661 n.UID_PWORulerOrigin IS NULL AND EXISTS(662 SELECT TOP 1 1663 FROM @PWOHelperPWO_New se664 WHERE665 se.UID_PersonHead = su.UID_PersonSender AND se.levelnumber = n.levelnumber AND se.Sublevelnumber = n.sublevelnumber)666 IF @cfgPersonOrderedNoDecide = 1667 BEGIN668 DELETE @PWOHelperPWO_New669 FROM @PWOToCheck pwo670 JOIN QER_VPersonsAreMe me671 ON pwo.UID_PersonOrdered = me.UID_PersonOrigin672 JOIN @PWOHelperPWO_New n673 ON me.UID_PersonAlsoMe IN(n.UID_PersonHead,674 n.UID_PersonSubstituteSender) AND n.UID_PersonWantsOrg = pwo.UID_PersonWantsOrg675 JOIN QERWorkingStep s676 ON n.UID_QERWorkingStep = s.UID_QERWorkingStep AND s.IgnoreNoDecideForPerson = 0677 WHERE678 pwo.uid_personwantsorg = @UID_PWO AND((isnull(pwo.UID_PersonInserted, pwo.UID_PersonOrdered) <> pwo.UID_PersonOrdered AND n.UID_PWODecisionRule679 <> 'QER-PWODecisionRule-BR') OR(isnull(pwo.UID_PersonInserted, pwo.UID_PersonOrdered) = pwo.UID_PersonOrdered AND n.UID_PWODecisionRule NOT IN680 ('QER-PWODecisionRule-BS', 'QER-PWODecisionRule-BR')))681 END682 IF @cfgPersonInsertedNoDecide = 1683 BEGIN684 IF @OrderState = 'OrderProduct'685 BEGIN686 DELETE @PWOHelperPWO_New687 FROM @PWOToCheck pwo688 JOIN QER_VPersonsAreMe me689 ON pwo.UID_PersonInserted = me.UID_PersonOrigin690 JOIN @PWOHelperPWO_New n691 ON me.UID_PersonAlsoMe IN(n.UID_PersonHead,692 n.UID_PersonSubstituteSender) AND n.UID_PersonWantsOrg = pwo.UID_PersonWantsOrg693 JOIN QERWorkingStep s694 ON n.UID_QERWorkingStep = s.UID_QERWorkingStep AND s.IgnoreNoDecideForPerson = 0695 WHERE696 pwo.uid_personwantsorg = @UID_PWO AND((isnull(pwo.UID_PersonInserted, pwo.UID_PersonOrdered) <> pwo.UID_PersonOrdered AND n.UID_PWODecisionRule697 <> 'QER-PWODecisionRule-BS') OR(isnull(pwo.UID_PersonInserted, pwo.UID_PersonOrdered) = pwo.UID_PersonOrdered AND n.UID_PWODecisionRule NOT IN698 ('QER-PWODecisionRule-BS', 'QER-PWODecisionRule-BR')))699 END700 IF @OrderState IN('OrderProlongate',701 'OrderUnsubscribe')702 BEGIN703 DELETE @PWOHelperPWO_New704 FROM @PWOToCheck pwo705 JOIN(706 SELECT707 h.UID_PersonWantsOrg,708 substring(max(CONCAT(dbo.QBM_FCVDatetimeToString(h.XDateInserted), h.UID_PersonHead)), 24, 38) AS UID_PersonHead,709 substring(max(CONCAT(dbo.QBM_FCVDatetimeToString(h.XDateInserted), h.OrderState)), 24, 38) AS OrderState710 FROM PWODecisionHistory h711 WHERE712 h.UID_PersonWantsOrg = @UID_PWO AND(h.OrderState = 'OrderProlongate' AND h.DecisionType = 'Prolongate' OR h.OrderState = 'OrderUnsubscribe' AND713 h.DecisionType = 'Unsubscribe') AND h.UID_PersonHead > ' '714 GROUP BY h.UID_PersonWantsOrg) h1715 ON h1.UID_PersonWantsOrg = pwo.UID_PersonWantsOrg AND h1.OrderState = pwo.OrderState716 JOIN QER_VPersonsAreMe me717 ON h1.UID_PersonHead = me.UID_PersonOrigin718 JOIN @PWOHelperPWO_New n719 ON me.UID_PersonAlsoMe = n.uid_personHead AND n.UID_PersonWantsOrg = pwo.UID_PersonWantsOrg720 WHERE721 pwo.UID_PersonWantsOrg = @UID_PWO AND((isnull(pwo.UID_PersonInserted, pwo.UID_PersonOrdered) <> pwo.UID_PersonOrdered AND n.UID_PWODecisionRule722 <> 'QER-PWODecisionRule-BS') OR(isnull(pwo.UID_PersonInserted, pwo.UID_PersonOrdered) = pwo.UID_PersonOrdered AND n.UID_PWODecisionRule NOT IN723 ('QER-PWODecisionRule-BS', 'QER-PWODecisionRule-BR')))724 END725 END726 SELECT TOP 1 @countApproverAvailable = COUNT(*)727 FROM @PWOHelperPWO_New n728 WHERE729 n.RulerLevel = 0 AND n.uid_QERWorkingStep = @UID_QERWorkingStep AND n.levelnumber = @LevelNumber AND n.Sublevelnumber = @SubLevelNumber AND730 n.UID_PersonWantsOrg = @UID_PWO731 IF @countApproverAvailable >= CASE732 WHEN @countApproverNeeded < 0 THEN733 @countApproverAvailable734 WHEN @countApproverNeeded = 0 THEN735 1736 ELSE @countApproverNeeded737 END AND @countApproverAvailable > 0738 BEGIN739 DELETE @PWOHelperPWO_New740 FROM @PWOHelperPWO_New n741 WHERE742 n.RulerLevel = 1 AND n.uid_QERWorkingStep = @UID_QERWorkingStep AND n.levelnumber = @LevelNumber AND n.Sublevelnumber = @SubLevelNumber AND743 n.UID_PersonWantsOrg = @UID_PWO744 END745 DELETE @PWOHelperPWO_New746 FROM @PWOHelperPWO_New n747 WHERE748 n.RulerLevel = 0 AND n.uid_QERWorkingStep = @UID_QERWorkingStep AND n.levelnumber = @LevelNumber AND n.Sublevelnumber = @SubLevelNumber AND749 n.UID_PersonWantsOrg = @UID_PWO AND EXISTS(750 SELECT TOP 1 1751 FROM @PWOHelperPWO_New n1752 WHERE753 n1.RulerLevel = 1 AND n1.uid_QERWorkingStep = @UID_QERWorkingStep AND n1.levelnumber = @LevelNumber AND n1.Sublevelnumber = @SubLevelNumber AND754 n1.uid_personHead = n.uid_personHead AND n1.UID_PersonWantsOrg = @UID_PWO)755 IF @UID_PwoDecisionRule IN(756 SELECT r.UID_PWODecisionRule757 FROM PWODecisionRule r758 WHERE759 r.UID_Task > ' '760 UNION all761 SELECT 'CPL-PWODecisionRule-OC'762 UNION all763 SELECT 'CPL-PWODecisionRule-OH')764 BEGIN765 DELETE @PWOHelperPWO_New766 FROM @PWOHelperPWO_New n767 WHERE768 n.RulerLevel > 0 AND n.uid_QERWorkingStep = @UID_QERWorkingStep AND n.levelnumber = @LevelNumber AND n.Sublevelnumber = @SubLevelNumber AND769 n.UID_PersonWantsOrg = @UID_PWO770 END771 zyklusende:772 SELECT @ElementIndex += 1773END774IF @SonderBehandlungException = 1775BEGIN776 INSERT INTO @PWOHelperPWO_New(UID_PWODecisionRule,777 uid_QERWorkingStep,778 levelnumber,779 Sublevelnumber,780 UID_ComplianceRule,781 uid_personHead,782 uid_PersonNoncompliant,783 UID_PWORulerOrigin,784 UID_PersonWantsOrg,785 UID_PersonSubstituteSender)786 SELECT787 s.UID_PWODecisionRule,788 s.uid_QERWorkingStep,789 s.levelnumber,790 ht.SubLevelNumber,791 c.UID_ComplianceRule,792 p.uid_person,793 pic.uid_Person,794 dbo.QER_FGIPWORulerOrigin(pio.XObjectKey) AS UID_PWORulerOrigin,795 pwo.UID_PersonWantsOrg,796 NULL AS UID_PersonSubstituteSender797 FROM @PWOToCheck pwo798 JOIN QERWorkingStep s799 ON s.UID_QERWorkingMethod = pwo.UID_QERWorkingMethod AND s.UID_PWODecisionRule IN('CPL-PWODecisionRule-OC',800 'CPL-PWODecisionRule-OH')801 JOIN HelperPWOCompliance pic802 ON pwo.uid_personwantsorg = pic.uid_personwantsorg803 JOIN ComplianceRule c804 ON pic.uid_complianceRule = c.uid_complianceRule AND c.IsInActive = 0 AND c.IsWorkingCopy = 0805 JOIN @Hilfstab ht806 ON ht.uid_complianceRule = c.uid_complianceRule AND ht.levelnumber = s.levelnumber AND ht.uid_PersonNonCompliant = pic.uid_Person AND ht.UID_PersonWantsOrg807 = pwo.UID_PersonWantsOrg808 LEFT809 OUTER810 JOIN personinBaseTree pio811 ON pio.uid_org = c.uid_orgRuler AND pio.XOrigin > 0812 LEFT813 OUTER814 JOIN Person p815 ON p.UID_Person = pio.UID_Person AND p.IsInActive = 0816 WHERE817 pwo.MakeEmpty = 0818 INSERT INTO @PWOHelperPWO_New(UID_PWODecisionRule,819 uid_QERWorkingStep,820 levelnumber,821 Sublevelnumber,822 UID_ComplianceRule,823 uid_personHead,824 uid_PersonNoncompliant,825 UID_PWORulerOrigin,826 UID_PersonWantsOrg,827 UID_PersonSubstituteSender)828 SELECT829 DISTINCT n.UID_PWODecisionRule,830 n.UID_QERWorkingStep,831 n.LevelNumber,832 n.Sublevelnumber,833 n.UID_ComplianceRule,834 us.UID_PersonReceiver,835 n.UID_PersonNonCompliant,836 NULL AS UID_PWORulerOrigin,837 n.UID_PersonWantsOrg,838 us.UID_PersonSender AS UID_PersonSubstituteSender839 FROM @PWOHelperPWO_New n840 JOIN QERUniversalSubstitute us841 ON n.UID_PersonHead = us.UID_PersonSender842 WHERE843 n.UID_PWODecisionRule IN('CPL-PWODecisionRule-OC',844 'CPL-PWODecisionRule-OH') AND us.IsCurrentlyActive = 1 AND us.UseForITShopCompliance = 1 AND NOT EXISTS(845 SELECT TOP 1 1846 FROM @PWOHelperPWO_New e847 WHERE848 e.UID_PersonWantsOrg = n.UID_PersonWantsOrg AND e.UID_PWODecisionRule = n.UID_PWODecisionRule AND e.UID_QERWorkingStep = n.UID_QERWorkingStep AND849 e.LevelNumber = n.LevelNumber AND e.Sublevelnumber = n.Sublevelnumber AND e.UID_PersonNonCompliant = n.UID_PersonNonCompliant AND e.UID_PersonHead850 = us.UID_PersonReceiver)851 IF dbo.QBM_FGIConfigparmValue('QER\ITShop\PersonInsertedNoDecideCompliance') = '1'852 BEGIN853 DELETE @PWOHelperPWO_New854 FROM @PWOToCheck pwo855 JOIN QER_VPersonsAreMe me856 ON pwo.UID_PersonInserted = me.UID_PersonOrigin857 JOIN @PWOHelperPWO_New n858 ON me.UID_PersonAlsoMe IN(n.UID_PersonHead,859 n.UID_PersonSubstituteSender) AND n.UID_PersonWantsOrg = pwo.UID_PersonWantsOrg860 JOIN QERWorkingStep s861 ON n.UID_QERWorkingStep = s.UID_QERWorkingStep AND s.IgnoreNoDecideForPerson = 0862 WHERE863 n.UID_PWODecisionRule IN('CPL-PWODecisionRule-OC',864 'CPL-PWODecisionRule-OH')865 END866 IF dbo.QBM_FGIConfigparmValue('QER\ITShop\PersonOrderedNoDecideCompliance') = '1'867 BEGIN868 DELETE @PWOHelperPWO_New869 FROM @PWOToCheck pwo870 JOIN QER_VPersonsAreMe me871 ON pwo.UID_PersonOrdered = me.UID_PersonOrigin872 JOIN @PWOHelperPWO_New n873 ON me.UID_PersonAlsoMe IN(n.UID_PersonHead,874 n.UID_PersonSubstituteSender) AND n.UID_PersonWantsOrg = pwo.UID_PersonWantsOrg875 JOIN QERWorkingStep s876 ON n.UID_QERWorkingStep = s.UID_QERWorkingStep AND s.IgnoreNoDecideForPerson = 0877 WHERE878 n.UID_PWODecisionRule IN('CPL-PWODecisionRule-OC',879 'CPL-PWODecisionRule-OH')880 END881 IF dbo.QBM_FGIConfigparmValue('QER\ComplianceCheck\DisableSelfExceptionGranting') = '1'882 BEGIN883 DELETE @PWOHelperPWO_New884 FROM @PWOHelperPWO_New n885 JOIN QER_VPersonsAreMe nc886 ON n.UID_PersonNonCompliant = nc.UID_PersonOrigin887 JOIN QER_VPersonsAreMe nh888 ON n.uid_personHead = nh.UID_PersonOrigin889 WHERE890 nc.UID_PersonAlsoMe = nh.UID_PersonAlsoMe AND UID_PWODecisionRule IN('CPL-PWODecisionRule-OC',891 'CPL-PWODecisionRule-OH')892 END893END894UPDATE @PWOHelperPWO_Old895SET isToDelete = 1896WHERE897 uid_personhead IS NULL AND isnull(UID_PWODecisionRule,898'') NOT IN(899SELECT UID_PWODecisionRule900FROM pwodecisionrule r901WHERE902 r.UID_Task > ' ' OR r.UID_PWODecisionRule IN('CPL-PWODecisionRule-OC', 'CPL-PWODecisionRule-OH'))903IF @SonderBehandlungException = 1904BEGIN905 UPDATE @PWOHelperPWO_Old906 SET isToDelete = 1907 FROM @PWOHelperPWO_Old o908 WHERE909 o.uid_personHead IS NULL AND o.UID_PWODecisionRule IN('CPL-PWODecisionRule-OC',910 'CPL-PWODecisionRule-OH') AND EXISTS(911 SELECT TOP 1 1912 FROM @PWOHelperPWO_New n913 WHERE914 n.UID_PWODecisionRule = o.UID_PWODecisionRule AND isnull(n.UID_QERWorkingStep, '') = isnull(o.UID_QERWorkingStep,915 '') AND n.levelnumber = o.levelnumber AND n.uid_personhead > ' ' AND o.UID_PersonWantsOrg = n.UID_PersonWantsOrg)916 UPDATE @PWOHelperPWO_Old917 SET isToDelete = 1918 FROM @PWOHelperPWO_Old o919 WHERE920 o.uid_personHead IS NULL AND o.UID_ComplianceRule IS NULL AND o.UID_PWODecisionRule IN('CPL-PWODecisionRule-OC',921 'CPL-PWODecisionRule-OH') AND EXISTS(922 SELECT TOP 1 1923 FROM @PWOHelperPWO_New n924 WHERE925 n.UID_PWODecisionRule = o.UID_PWODecisionRule AND isnull(n.UID_QERWorkingStep, '') = isnull(o.UID_QERWorkingStep,926 '') AND n.levelnumber = o.levelnumber AND n.uid_compliancerule > ' ' AND o.UID_PersonWantsOrg = n.UID_PersonWantsOrg)927END928DELETE @PWOHelperPWO_New929WHERE930 uid_personhead IS NULL AND UID_PWODecisionRule NOT IN(931SELECT UID_PWODecisionRule932FROM pwodecisionrule r933WHERE934 UID_Task > ' ' OR r.UID_PWODecisionRule IN('CPL-PWODecisionRule-OC', 'CPL-PWODecisionRule-OH'))935IF @SonderBehandlungException = 1936BEGIN937 DELETE @PWOHelperPWO_New938 FROM @PWOHelperPWO_New n939 WHERE940 uid_personhead IS NULL AND UID_PWODecisionRule IN('CPL-PWODecisionRule-OC',941 'CPL-PWODecisionRule-OH') AND EXISTS(942 SELECT TOP 1 1943 FROM @PWOHelperPWO_New o944 WHERE945 o.UID_PWODecisionRule = n.UID_PWODecisionRule AND isnull(o.UID_QERWorkingStep, '') = isnull(n.UID_QERWorkingStep,946 '') AND o.levelnumber = n.levelnumber AND o.uid_personhead > ' ' AND o.UID_PersonWantsOrg = n.UID_PersonWantsOrg)947END948UPDATE @PWOHelperPWO_new949SET UID_PersonAdditional = o.UID_PersonAdditional,950UID_PersonInsteadOf = o.UID_PersonInsteadOf951FROM @PWOHelperPWO_new n952JOIN @PWOHelperPWO_Old o953 ON n.UID_PWODecisionRule = o.UID_PWODecisionRule AND n.uid_personHead = o.uid_personHead AND n.UID_QERWorkingStep = o.UID_QERWorkingStep AND n.levelnumber954= o.levelnumber AND n.Sublevelnumber = o.Sublevelnumber AND o.UID_PersonWantsOrg = n.UID_PersonWantsOrg955WHERE956 o.UID_PersonAdditional > ' ' OR o.UID_PersonInsteadOf > ' '957INSERT INTO @PWOHelperPWO_New(UID_PWODecisionRule,958uid_personHead,959UID_QERWorkingStep,960levelnumber,961Sublevelnumber,962istoInsert,963UID_PersonAdditional,964UID_PersonInsteadOf,965IsFromDelegation,966RulerLevel,967UID_PersonWantsOrg)968SELECT969 DISTINCT de.UID_PWODecisionRule,970 de.UID_PersonAdditional,971 de.UID_QERWorkingStep,972 de.levelnumber,973 1,974 0,975 NULL,976 NULL,977 1,978 0,979 de.UID_PersonWantsOrg980FROM @PWOHelperPWO_New de981WHERE982 de.UID_PersonAdditional > ' ' AND NOT EXISTS(983SELECT TOP 1 1984FROM @PWOHelperPWO_New n985WHERE986 n.UID_PWODecisionRule = de.UID_PWODecisionRule AND n.uid_personHead = de.UID_PersonAdditional AND n.UID_QERWorkingStep = de.UID_QERWorkingStep AND987n.levelnumber = de.levelnumber AND n.Sublevelnumber = 1 AND de.UID_PersonWantsOrg = n.UID_PersonWantsOrg) AND EXISTS(988SELECT TOP 1 1989FROM QERWorkingStep ds990WHERE991 ds.UID_QERWorkingStep = de.UID_QERWorkingStep AND ds.IsAdditionalAllowed = 1)992IF @@rowcount > 0993BEGIN994 INSERT INTO @PWOHelperPWO_New(UID_PWODecisionRule,995 uid_personHead,996 UID_QERWorkingStep,997 levelnumber,998 Sublevelnumber,999 istoInsert,1000 UID_PersonAdditional,1001 UID_PersonInsteadOf,1002 IsFromDelegation,1003 RulerLevel,1004 UID_PWORulerOrigin,1005 UID_PersonWantsOrg)1006 SELECT1007 DISTINCT de.UID_PWODecisionRule,1008 esc.UID_Person,1009 de.UID_QERWorkingStep,1010 de.levelnumber,1011 1,1012 0,1013 NULL,1014 NULL,1015 1,1016 2,1017 esc.UID_PWORulerOrigin,1018 de.UID_PersonWantsOrg1019 FROM @PWOHelperPWO_New de CROSS1020 JOIN(1021 SELECT1022 pio.UID_Person,1023 dbo.QER_FGIPWORulerOrigin(pio.XObjectKey) AS UID_PWORulerOrigin1024 FROM PersonInBaseTree pio1025 WHERE1026 pio.UID_Org = 'QER-AEROLE-ITSHOP-INTERVENTION' AND pio.XOrigin > 0) AS esc1027 WHERE1028 de.UID_PersonAdditional > ' ' AND NOT EXISTS(1029 SELECT TOP 1 11030 FROM @PWOHelperPWO_New n1031 WHERE1032 n.UID_PWODecisionRule = de.UID_PWODecisionRule AND n.uid_personHead = esc.UID_Person AND n.UID_QERWorkingStep = de.UID_QERWorkingStep AND1033 n.levelnumber = de.levelnumber AND n.Sublevelnumber = 1 AND de.UID_PersonWantsOrg = n.UID_PersonWantsOrg)1034END1035INSERT INTO @PWOHelperPWO_New(UID_PWODecisionRule,1036uid_personHead,1037UID_QERWorkingStep,1038levelnumber,1039Sublevelnumber,1040istoInsert,1041UID_PersonAdditional,1042UID_PersonInsteadOf,1043IsFromDelegation,1044RulerLevel,1045UID_PersonWantsOrg)1046SELECT1047 DISTINCT de.UID_PWODecisionRule,1048 de.UID_PersonInsteadOf,1049 de.UID_QERWorkingStep,1050 de.levelnumber,1051 0,1052 0,1053 NULL,1054 NULL,1055 1,1056 0,1057 de.UID_PersonWantsOrg1058FROM @PWOHelperPWO_New de1059WHERE1060 de.UID_PersonInsteadOf > ' ' AND NOT EXISTS(1061SELECT TOP 1 11062FROM @PWOHelperPWO_New n1063WHERE1064 n.UID_PWODecisionRule = de.UID_PWODecisionRule AND n.uid_personHead = de.UID_PersonInsteadOf AND n.UID_QERWorkingStep = de.UID_QERWorkingStep AND1065n.levelnumber = de.levelnumber AND n.Sublevelnumber = 0 AND de.UID_PersonWantsOrg = n.UID_PersonWantsOrg) AND EXISTS(1066SELECT TOP 1 11067FROM QERWorkingStep ds1068WHERE1069 ds.UID_QERWorkingStep = de.UID_QERWorkingStep AND ds.IsInsteadOfAllowed = 1)1070UPDATE @PWOHelperPWO_Old1071SET isToDelete = 11072FROM @PWOHelperPWO_Old o1073JOIN @PWOToCheck c1074 ON o.UID_PersonWantsOrg = c.UID_PersonWantsOrg1075WHERE1076 (NOT EXISTS(1077SELECT TOP 1 11078FROM @PWOHelperPWO_New n1079WHERE1080 isnull(n.UID_PWODecisionRule, '') = isnull(o.UID_PWODecisionRule, '') AND isnull(n.uid_personHead,1081'') = isnull(o.uid_personHead, '') AND n.levelnumber = o.levelnumber AND n.Sublevelnumber = o.Sublevelnumber AND isnull(n.UID_QERWorkingStep,1082'') = isnull(o.UID_QERWorkingStep, '') AND isnull(n.UID_ComplianceRule, '') = isnull(o.UID_ComplianceRule,1083'') AND isnull(n.UID_PersonNonCompliant, '') = isnull(o.UID_PersonNonCompliant, '') AND isnull(n.UID_PWORulerOrigin,1084'') = isnull(o.UID_PWORulerOrigin, '') AND ISNULL(n.rulerlevel, 0) = ISNULL(o.rulerlevel, 0) AND o.UID_PersonWantsOrg = n.UID_PersonWantsOrg) OR1085(isnull(o.uid_personHead, '') > ' ' AND NOT EXISTS(1086SELECT TOP 1 11087FROM Person p1088WHERE1089 p.UID_Person = isnull(o.uid_personHead, '') AND p.IsInActive = 0))) AND((c.SonderlockeException = 0 AND o.decision IN('',1090'-')) OR(c.SonderlockeException = 1 AND o.decision IN('', '-', 'R', '+')))1091IF EXISTS(1092 SELECT TOP 1 11093 FROM @PWOToCheck c1094 WHERE1095 c.isReserved =1)1096BEGIN1097 IF EXISTS(1098 SELECT TOP 1 11099 FROM @PWOToCheck pwo1100 JOIN @PWOHelperPWO_Old o1101 ON pwo.UID_PersonWantsOrg = o.UID_PersonWantsOrg1102 WHERE1103 o.uid_personHead = pwo.UID_PersonHead AND o.isToDelete = 1 AND pwo.isReserved = 1)1104 BEGIN1105 UPDATE PersonWantsOrg1106 SET IsReserved = 0,1107 XDateUpdated = @Xdate,1108 XUserUpdated = @XUser1109 FROM PersonWantsOrg pwo1110 JOIN @PWOHelperPWO_Old o1111 ON pwo.UID_PersonWantsOrg = o.UID_PersonWantsOrg1112 WHERE1113 pwo.IsReserved = 1 AND o.IsToDelete = 1 AND o.UID_PersonHead = pwo.UID_PersonHead1114 UPDATE @PWOHelperPWO_Old1115 SET isToDelete = 11116 FROM @PWOHelperPWO_Old o1117 JOIN @PWOToCheck c1118 ON o.UID_PersonWantsOrg = c.UID_PersonWantsOrg1119 WHERE1120 (o.UID_PWODecisionRule = 'QER-PWODecisionRule-QP' OR o.Decision = 'Q') AND c.isReserved = 1 AND EXISTS(1121 SELECT TOP 1 11122 FROM @PWOHelperPWO_Old oo1123 WHERE1124 oo.UID_PersonWantsOrg = o.UID_PersonWantsOrg AND oo.IsToDelete = 1 AND oo.UID_PersonHead = c.UID_PersonHead)1125 INSERT INTO PWODecisionHistory(DecisionType,1126 IsDecisionBySystem,1127 UID_PWODecisionHistory,1128 UID_PWOState,1129 UID_PersonHead,1130 UID_PersonWantsOrg,1131 DisplayPersonHead,1132 ReasonHead,1133 DateHead,1134 XDateInserted,1135 XDateUpdated,1136 XUserInserted,1137 XUserUpdated,1138 DecisionLevel,1139 XTouched,1140 ValidUntil,1141 ValidFrom,1142 XObjectKey,1143 UID_ITShopOrgFinal)1144 SELECT1145 DISTINCT 'RecallQuery',1146 1,1147 o.UID_PWOHelperPWO AS UID_PWODecisionHistory,1148 NULL,1149 NULL,1150 o.UID_PersonWantsOrg,1151 dbo.QBM_FCVStringTrimLDSPrefix('#LDS#Automatic system approval.|'),1152 dbo.QBM_FCVStringTrimLDSPrefix('#LDS#Query to Person finished due to changed deciders.|'),1153 GetUTCDate(),1154 GetUTCDate(),1155 GetUTCDate(),1156 'sa',1157 'sa',1158 0,1159 NULL,1160 NULL,1161 NULL,1162 dbo.QBM_FCVElementToObjectKey1('PWODecisionHistory',1163 'UID_PWODecisionHistory',1164 o.UID_PWOHelperPWO),1165 pwo.UID_ITShopOrgFinal1166 FROM @PWOToCheck pwo1167 JOIN @PWOHelperPWO_Old o1168 ON pwo.UID_PersonWantsOrg = o.UID_PersonWantsOrg1169 WHERE1170 pwo.IsReserved = 1 AND o.IsToDelete = 1 AND o.UID_PersonHead = pwo.UID_PersonHead1171 END1172END1173UPDATE @PWOHelperPWO_Old1174SET isToDelete = 11175FROM @PWOHelperPWO_Old o1176WHERE1177 IsToDelete = 0 AND NOT EXISTS(1178SELECT TOP 1 11179FROM @PWOToCheck pwo1180WHERE1181 pwo.uid_personwantsorg = o.UID_PersonWantsOrg AND OrderState IN('OrderProduct', 'OrderProlongate',1182'OrderUnsubscribe'))1183UPDATE @PWOHelperPWO_New1184SET isToInsert = 11185FROM @PWOHelperPWO_New n1186WHERE1187 NOT EXISTS(1188SELECT TOP 1 11189FROM @PWOHelperPWO_Old o1190WHERE1191 isnull(o.UID_PWODecisionRule, '') = isnull(n.UID_PWODecisionRule, '') AND isnull(o.uid_personHead,1192'') = isnull(n.uid_personHead, '') AND o.levelnumber = n.levelnumber AND o.Sublevelnumber = n.Sublevelnumber AND isnull(o.UID_QERWorkingStep,1193'') = isnull(n.UID_QERWorkingStep, '') AND isnull(o.UID_ComplianceRule, '') = isnull(n.UID_ComplianceRule,1194'') AND isnull(o.UID_PersonNonCompliant, '') = isnull(n.UID_PersonNonCompliant, '') AND isnull(o.UID_PWORulerOrigin,1195'') = isnull(n.UID_PWORulerOrigin, '') AND ISNULL(o.rulerlevel, 0) = ISNULL(n.rulerlevel, 0) AND(o.isToDelete = 0 OR o.UID_PWODecisionRule IN1196('CPL-PWODecisionRule-OC', 'CPL-PWODecisionRule-OH') AND o.UID_ComplianceRule > ' ') AND n.UID_PersonWantsOrg = o.UID_PersonWantsOrg)1197IF @SonderBehandlungException = 11198BEGIN1199 UPDATE @PWOHelperPWO_New1200 SET istoInsert = 11201 FROM @PWOHelperPWO_New o1202 WHERE1203 uid_compliancerule IS NULL AND UID_PWODecisionRule IN('CPL-PWODecisionRule-OC',1204 'CPL-PWODecisionRule-OH') AND NOT EXISTS(1205 SELECT TOP 1 11206 FROM @PWOHelperPWO_New n1207 WHERE1208 n.UID_PWODecisionRule = o.UID_PWODecisionRule AND isnull(n.UID_QERWorkingStep, '') = isnull(o.UID_QERWorkingStep,1209 '') AND n.levelnumber = o.levelnumber AND n.UID_PersonWantsOrg = o.UID_PersonWantsOrg)1210 UPDATE @PWOHelperPWO_New1211 SET istoInsert = 01212 FROM @PWOHelperPWO_New o1213 WHERE1214 uid_compliancerule IS NULL AND UID_PWODecisionRule IN('CPL-PWODecisionRule-OC',1215 'CPL-PWODecisionRule-OH') AND EXISTS(1216 SELECT TOP 1 11217 FROM @PWOHelperPWO_New n1218 WHERE1219 n.UID_PWODecisionRule = o.UID_PWODecisionRule AND isnull(n.UID_QERWorkingStep, '') = isnull(o.UID_QERWorkingStep,1220 '') AND n.levelnumber = o.levelnumber AND n.uid_compliancerule > ' ' AND n.UID_PersonWantsOrg = o.UID_PersonWantsOrg)1221END1222INSERT INTO @PWOHelperPWO_New(UID_PWODecisionRule,1223uid_personHead,1224UID_QERWorkingStep,1225levelnumber,1226Sublevelnumber,1227istoInsert,1228UID_PersonWantsOrg)1229SELECT1230 'QER-PWODecisionRule-SB',1231 NULL,1232 NULL,1233 0,1234 0,1235 1,1236 c.UID_PersonWantsOrg1237FROM @PWOToCheck c1238WHERE1239 c.UID_QERWorkingMethod IS NULL AND c.Orderstate IN('OrderProlongate',1240'OrderUnsubscribe') AND NOT EXISTS(1241SELECT TOP 1 11242FROM @PWOHelperPWO_New n1243WHERE1244 n.UID_PersonWantsOrg = c.UID_PersonWantsOrg AND n.IstoInsert = 1) AND NOT EXISTS(1245SELECT TOP 1 11246FROM @PWOHelperPWO_Old o1247WHERE1248 o.UID_PersonWantsOrg = c.UID_PersonWantsOrg AND o.IsToDelete = 0) publizieren:1249UPDATE @PWOToCheck1250SET IsModefiedByOthers = 11251FROM @PWOToCheck p1252JOIN(1253SELECT1254 c.UID_PersonWantsOrg,1255 checksum_agg(checksum(CONCAT(h.UID_PWOHelperPWO, h.Decision))) AS CheckSumHelper1256FROM @PWOToCheck c1257LEFT1258OUTER1259JOIN PWOHelperPWO h1260 WITH(nolock)1261 ON c.UID_PersonWantsOrg = h.UID_PersonWantsOrg1262GROUP BY c.UID_PersonWantsOrg) AS x1263 ON p.UID_PersonWantsOrg = x.UID_PersonWantsOrg1264WHERE1265 p.CheckSumHelper <> x.CheckSumHelper1266IF @@ROWCOUNT > 01267BEGIN1268 DECLARE @DBQueueElements_ModifiedHelper QBM_YDBQueueRaw1269 INSERT INTO @DBQueueElements_ModifiedHelper(Object,1270 SubObject,1271 GenProcID)1272 SELECT1273 p.UID_PersonWantsOrg,1274 NULL,1275 p.GenProcID1276 FROM @PWOToCheck p1277 EXEC QBM_PDBQueueInsert_Bulk 'QER-K-ShoppingRackPWOHelperPWO',1278 @DBQueueElements_ModifiedHelper1279 DELETE @PWOHelperPWO_Old1280 FROM @PWOHelperPWO_Old o1281 JOIN @PWOToCheck c1282 ON o.UID_PersonWantsOrg = c.UID_PersonWantsOrg1283 WHERE1284 c.IsModefiedByOthers = 11285 DELETE @PWOHelperPWO_New1286 FROM @PWOHelperPWO_New n1287 JOIN @PWOToCheck c1288 ON n.UID_PersonWantsOrg = c.UID_PersonWantsOrg1289 WHERE1290 c.IsModefiedByOthers = 11291 DELETE @PWOToCheck1292 FROM @PWOToCheck c1293 WHERE1294 c.IsModefiedByOthers = 11295END1296DELETE @DBQueueElements_CheckDecision1297INSERT INTO @DBQueueElements_CheckDecision(Object,1298SubObject,1299GenProcID)1300SELECT1301 DISTINCT c.UID_PersonWantsOrg,1302 '',1303 c.GenProcid1304FROM @PWOToCheck c1305LEFT1306OUTER1307JOIN @PWOHelperPWO_New n1308 ON c.UID_PersonWantsOrg = n.UID_PersonWantsOrg1309LEFT1310OUTER1311JOIN @PWOHelperPWO_Old o1312 ON c.UID_PersonWantsOrg = o.UID_PersonWantsOrg1313WHERE1314 (c.makeEmpty = 0 AND(isnull(o.IsToDelete, 0) = 1 OR isnull(n.IstoInsert, 0) = 1)) OR n.UID_PersonWantsOrg IS NULL1315EXEC QBM_PDBQueueInsert_Bulk 'QER-K-ShoppingRackCheckDecision',1316 @DBQueueElements_CheckDecision1317IF @DebugSwitch > 01318BEGIN1319 print 'Vor publizieren @@PWOHelperPWO_Old'1320 SELECT *1321 FROM @PWOHelperPWO_Old1322END1323DECLARE @GenProcIDs QBM_YCursorBuffer1324INSERT INTO @GenProcIDs(UID1)1325SELECT1326 DISTINCT c.GenProcID1327FROM @PWOHelperPWO_Old o1328JOIN @PWOToCheck c1329 ON o.UID_PersonWantsOrg = c.UID_PersonWantsOrg1330WHERE1331 o.IsToDelete = 11332SELECT @ElementCount = @@ROWCOUNT1333SELECT @ElementIndex = @@IDENTITY - @ElementCount +11334SELECT @ElementLast = @@IDENTITY1335WHILE @ElementIndex <= @ElementLast1336BEGIN1337 SELECT TOP 1 @GenProcIDToUse = bu.UID11338 FROM @GenProcIDs bu1339 WHERE1340 bu.ElementIndex = @ElementIndex1341 EXEC QBM_PSessionContextSet 'GenProcID',1342 @GenProcIDToUse1343 DELETE PWOHelperPWO1344 FROM PWOHelperPWO h1345 JOIN @PWOToCheck c1346 ON h.UID_PersonWantsOrg = c.UID_PersonWantsOrg AND c.GenProcid = @GenProcIDToUse1347 JOIN @PWOHelperPWO_Old o1348 ON h.UID_PWOHelperPWO = o.UID_PWOHelperPWO1349 WHERE1350 o.IsToDelete = 11351 SELECT @ElementIndex += 11352END1353IF EXISTS(1354 SELECT TOP 1 11355 FROM @PWOHelperPWO_Old o1356 WHERE1357 o.isToUpdateDecision = 1)1358BEGIN1359 UPDATE PWOHelperPWO1360 SET Decision = o.Decision1361 FROM PWOHelperPWO h1362 JOIN @PWOHelperPWO_Old o1363 ON h.UID_PWOHelperPWO = o.UID_PWOHelperPWO1364 WHERE1365 o.isToUpdateDecision = 11366END1367UPDATE @PWOHelperPWO_New1368SET UID_PrimaryKey = newid()1369WHERE1370 istoinsert = 11371IF @DebugSwitch > 01372BEGIN1373 print 'Vor publizieren @PWOHelperPWO_New'1374 SELECT *1375 FROM @PWOHelperPWO_New1376END1377DECLARE @GenProcIDs_2 QBM_YCursorBuffer1378INSERT INTO @GenProcIDs_2(UID1)1379SELECT1380 DISTINCT c.GenProcID1381FROM @PWOHelperPWO_New n1382JOIN @PWOToCheck c1383 ON n.UID_PersonWantsOrg = c.UID_PersonWantsOrg1384WHERE1385 n.IstoInsert = 11386SELECT @ElementCount = @@ROWCOUNT1387SELECT @ElementIndex = @@IDENTITY - @ElementCount +11388SELECT @ElementLast = @@IDENTITY1389IF @ElementCount > 01390BEGIN1391 UPDATE @PWOHelperPWO_New1392 SET NextAutomaticDecision = isnull(g.MaxDate,1393 '2200-01-01')1394 FROM @PWOHelperPWO_New b1395 LEFT1396 OUTER1397 JOIN(1398 SELECT1399 a.UID_PersonwantsOrg,1400 a.LevelNumber,1401 a.Sublevelnumber,1402 a.RulerLevel,1403 MAX(a.NextAutomaticDecision) AS MaxDate1404 FROM @PWOHelperPWO_Old a1405 GROUP BY a.UID_PersonwantsOrg,1406 a.LevelNumber,1407 a.Sublevelnumber,1408 a.RulerLevel) AS g1409 ON b.UID_PersonwantsOrg = g.UID_PersonwantsOrg AND b.LevelNumber = g.LevelNumber AND b.Sublevelnumber = g.Sublevelnumber AND b.RulerLevel = g.RulerLevel1410 WHERE1411 b.IstoInsert = 11412END1413WHILE @ElementIndex <= @ElementLast1414BEGIN1415 SELECT TOP 1 @GenProcIDToUse = bu.UID11416 FROM @GenProcIDs_2 bu1417 WHERE1418 bu.ElementIndex = @ElementIndex1419 EXEC QBM_PSessionContextSet 'GenProcID',1420 @GenProcIDToUse1421 INSERT INTO PWOHelperPWO(UID_PWOHelperPWO,1422 uid_Personwantsorg,1423 UID_PWODecisionRule,1424 uid_personHead,1425 levelnumber,1426 SubLevelNumber,1427 Decision,1428 UID_QERWorkingStep,1429 UID_ComplianceRule,1430 UID_PersonNonCompliant,1431 UID_PWORulerOrigin,1432 NextReminder,1433 NextAutomaticDecision,1434 XObjectKey,1435 UID_PersonAdditional,1436 UID_PersonInsteadOf,1437 IsFromDelegation,1438 RulerLevel)1439 SELECT1440 n.UID_PrimaryKey,1441 n.UID_PersonWantsOrg,1442 n.UID_PWODecisionRule,1443 n.UID_PersonHead,1444 n.LevelNumber,1445 n.Sublevelnumber,1446 CASE1447 WHEN n.UID_PersonInsteadOf > ' ' THEN1448 'D'1449 ELSE ''1450 END AS Decision,1451 n.UID_QERWorkingStep,1452 n.UID_ComplianceRule,1453 n.UID_PersonNonCompliant,1454 n.UID_PWORulerOrigin,1455 '2200-01-01',1456 n.NextAutomaticDecision,1457 dbo.QBM_FCVElementToObjectKey1('PWOHelperPWO',1458 'UID_PWOHelperPWO',1459 n.UID_PrimaryKey),1460 UID_PersonAdditional,1461 UID_PersonInsteadOf,1462 IsFromDelegation,1463 n.RulerLevel1464 FROM @PWOHelperPWO_New n1465 JOIN @PWOToCheck c1466 ON n.UID_PersonWantsOrg = c.UID_PersonWantsOrg AND c.GenProcid = @GenProcIDToUse1467 WHERE1468 n.IstoInsert = 1 AND NOT EXISTS(1469 SELECT TOP 1 11470 FROM PWOHelperPWO p1471 WHERE1472 p.UID_PersonWantsOrg = n.UID_PersonWantsOrg AND isnull(p.UID_PersonHead, '') = isnull(n.UID_PersonHead,1473 '') AND p.UID_PWODecisionRule = n.UID_PWODecisionRule AND p.LevelNumber = n.LevelNumber AND p.Sublevelnumber = n.Sublevelnumber AND p.RulerLevel1474 = n.RulerLevel AND p.UID_QERWorkingStep = n.UID_QERWorkingStep)1475 SELECT @ElementIndex += 11476END1477IF @SonderBehandlungException = 11478BEGIN1479 DECLARE @GenProcIDs_3 QBM_YCursorBuffer1480 INSERT INTO @GenProcIDs_3(UID1)1481 SELECT1482 DISTINCT c.GenProcID1483 FROM @PWOToCheck c1484 WHERE1485 c.SonderlockeException = 11486 SELECT @ElementCount = @@ROWCOUNT1487 SELECT @ElementIndex = @@IDENTITY - @ElementCount +11488 SELECT @ElementLast = @@IDENTITY1489 WHILE @ElementIndex <= @ElementLast1490 BEGIN1491 SELECT TOP 1 @GenProcIDToUse = bu.UID11492 FROM @GenProcIDs_3 bu1493 WHERE1494 bu.ElementIndex = @ElementIndex1495 EXEC QBM_PSessionContextSet 'GenProcID',1496 @GenProcIDToUse1497 UPDATE PWOHelperPWO1498 SET decision = '+'1499 FROM PWOHelperPWO h1500 JOIN @PWOToCheck c1501 ON h.UID_PersonWantsOrg = c.UID_PersonWantsOrg AND c.GenProcid = @GenProcIDToUse AND c.OrderState IN('OrderProduct',1502 'OrderProlongate',1503 'OrderUnsubscribe') AND h.UID_PWODecisionRule IN('CPL-PWODecisionRule-OH') AND h.LevelNumber = c.decisionlevel1504 JOIN @Hilfstab ht1505 ON ht.SubLevelNumber = h.SubLevelNumber AND ht.isHighestSeverity = 0 AND ht.UID_PersonWantsOrg = c.UID_PersonWantsOrg1506 WHERE1507 h.Decision IN('',1508 'R')1509 UPDATE PWOHelperPWO1510 SET decision = '+'1511 FROM PWOHelperPWO h1512 JOIN @PWOToCheck c1513 ON h.UID_PersonWantsOrg = c.UID_PersonWantsOrg AND c.GenProcid = @GenProcIDToUse AND c.OrderState IN('OrderProduct',1514 'OrderProlongate',1515 'OrderUnsubscribe') AND h.UID_PWODecisionRule IN('CPL-PWODecisionRule-OC',1516 'CPL-PWODecisionRule-OH') AND h.LevelNumber = c.decisionlevel1517 JOIN @Hilfstab ht1518 ON ht.SubLevelNumber = h.SubLevelNumber AND ht.UID_PersonWantsOrg = c.UID_PersonWantsOrg1519 JOIN ComplianceRule cr1520 ON ht.uid_complianceRule = cr.UID_ComplianceRule AND cr.IsInActive = 0 AND cr.IsWorkingCopy = 01521 JOIN PersonInBaseTree pin1522 ON cr.UID_NonCompliance = pin.UID_Org AND pin.XOrigin > 0 AND pin.UID_Person = ht.UID_PersonNonCompliant AND pin.XMarkedForDeletion & @QBM_BitPatternXMarkedForDel_Delay1523 = 0 AND(pin.isExceptionGranted = 1 AND isnull(cr.isToGrantEver, 0) = 0)1524 WHERE1525 h.Decision IN('',1526 'R')1527 INSERT INTO @DBQueueElements_MakeDecisionOC(object,1528 subobject,1529 genprocid)1530 SELECT1531 x.uid,1532 NULL,1533 @GenProcIDToUse1534 FROM(1535 SELECT1536 DISTINCT h.UID_PersonWantsOrg AS uid1537 FROM PWOHelperPWO h1538 JOIN @PWOToCheck c1539 ON h.UID_PersonWantsOrg = c.UID_PersonWantsOrg AND c.GenProcid = @GenProcIDToUse1540 WHERE1541 h.UID_PWODecisionRule IN('CPL-PWODecisionRule-OC') AND h.Decision IN('', 'R', '+') AND c.OrderState IN('OrderProduct',1542 'OrderProlongate', 'OrderUnsubscribe') AND c.decisionlevel = h.levelnumber) AS x1543 INSERT INTO @DBQueueElements_MakeDecisionOH(object,1544 subobject,1545 genprocid)1546 SELECT1547 x.uid,1548 NULL,1549 @GenProcIDToUse1550 FROM(1551 SELECT1552 DISTINCT h.UID_PersonWantsOrg AS uid1553 FROM PWOHelperPWO h1554 JOIN @PWOToCheck c1555 ON h.UID_PersonWantsOrg = c.UID_PersonWantsOrg AND c.GenProcid = @GenProcIDToUse1556 WHERE1557 h.UID_PWODecisionRule IN('CPL-PWODecisionRule-OH') AND h.Decision IN('', 'R', '+') AND c.OrderState IN('OrderProduct',1558 'OrderProlongate', 'OrderUnsubscribe') AND c.decisionlevel = h.levelnumber) AS x1559 SELECT @ElementIndex += 11560 END1561 IF EXISTS(1562 SELECT TOP 1 11563 FROM @DBQueueElements_MakeDecisionOC)1564 BEGIN1565 EXEC QBM_PDBQueueInsert_Bulk 'CPL-K-ShoppingRackMakeDecisionOC',1566 @DBQueueElements_MakeDecisionOC1567 END1568 IF EXISTS(1569 SELECT TOP 1 11570 FROM @DBQueueElements_MakeDecisionOH)1571 BEGIN1572 EXEC QBM_PDBQueueInsert_Bulk 'CPL-K-ShoppingRackMakeDecisionOH',1573 @DBQueueElements_MakeDecisionOH1574 END1575END1576DECLARE @ElementsToFire QBM_YCursorBuffer1577INSERT INTO @ElementsToFire(UID1,1578Int1,1579UID2)1580SELECT1581 DISTINCT c.GenProcID,1582 c.decisionlevel,1583 c.UID_PersonWantsOrg1584FROM @PWOToCheck c1585LEFT1586OUTER1587JOIN @PWOHelperPWO_New n1588 ON c.UID_PersonWantsOrg = n.UID_PersonWantsOrg1589LEFT1590OUTER1591JOIN @PWOHelperPWO_Old o1592 ON c.UID_PersonWantsOrg = o.UID_PersonWantsOrg1593WHERE1594 c.makeEmpty = 0 AND(n.IstoInsert = 1 OR o.IsToDelete = 1 OR c.IsNewDecisionLevel = 1)1595SELECT @ElementCount = @@ROWCOUNT1596SELECT @ElementIndex = @@IDENTITY - @ElementCount +11597SELECT @ElementLast = @@IDENTITY1598WHILE @ElementIndex <= @ElementLast1599BEGIN1600 SELECT1601 TOP 1 @GenProcIDToUse = bu.UID1,1602 @DecisionLevelToUse = bu.Int1,1603 @UID_PWO = bu.UID21604 FROM @ElementsToFire bu1605 WHERE1606 bu.ElementIndex = @ElementIndex1607 EXEC QER_P04F128DC257D2B3C236MAIL_ @GenProcIDToUse,1608 @PWOHelperPWO_New,1609 @PWOToCheck,1610 @DecisionLevelToUse,1611 @UID_PWO1612 SELECT @ElementIndex += 11613END1614IF @SonderBehandlungException = 11615BEGIN1616 UPDATE PWOHelperPWO1617 SET decision = 'R'1618 FROM PWOHelperPWO h1619 JOIN @PWOToCheck c1620 ON h.UID_PersonWantsOrg = c.UID_PersonWantsOrg1621 JOIN(1622 SELECT1623 UID_PWODecisionRule,1624 LevelNumber1625 FROM @PWOHelperPWO_New1626 WHERE1627 isToInsert = 1 AND UID_PWODecisionRule IN('CPL-PWODecisionRule-OC', 'CPL-PWODecisionRule-OH')1628 UNION1629 SELECT1630 UID_PWODecisionRule,1631 Levelnumber1632 FROM @PWOHelperPWO_Old1633 WHERE1634 isTodelete = 1 AND UID_PWODecisionRule IN('CPL-PWODecisionRule-OC', 'CPL-PWODecisionRule-OH')) AS x1635 ON h.UID_PWODecisionRule = x.UID_PWODecisionRule AND h.LevelNumber = x.LevelNumber1636 WHERE1637 h.Decision = ''1638END1639INSERT INTO @DBQueueElements_MakeDecisionEX(Object,1640SubObject,1641GenProcID)1642SELECT1643 DISTINCT c.UID_PersonWantsOrg,1644 '',1645 c.GenProcid1646FROM @PWOToCheck c1647JOIN PWOHelperPWO h1648 WITH(readpast)1649 ON c.UID_PersonWantsOrg = h.UID_PersonWantsOrg AND c.DecisionLevel = h.LevelNumber AND c.IsNewDecisionLevel = 11650JOIN PWODecisionRule r1651 ON h.UID_PWODecisionRule = r.UID_PWODecisionRule AND r.UID_Task = 'QER-K-ShoppingRackMakeDecisionEX'1652WHERE1653 (c.OrderState = 'OrderProduct' AND(c.DecisionLevel > 0 OR EXISTS(1654SELECT TOP 1 11655FROM @PWOHelperPWO_New n1656WHERE1657 n.UID_PrimaryKey = h.UID_PWOHelperPWO AND n.istoInsert = 1 AND dbo.QBM_FGIConfigparmValue('QER\ITShop\DecisionOnInsert') > ' '))) OR(c.OrderState1658IN('OrderProlongate', 'OrderUnsubscribe'))1659EXEC QBM_PDBQueueInsert_Bulk 'QER-K-ShoppingRackMakeDecisionEX',1660 @DBQueueElements_MakeDecisionEX1661END TRY1662BEGIN CATCH1663 EXEC QBM_PSessionErrorAdd DEFAULT1664 RAISERROR('',1665 18,1666 1)1667 WITH NOWAIT1668END CATCH1669ende:1670SET ANSI_WARNINGS1671 ON1672EXEC QBM_PSessionContextSet 'GenProcID',1673 @GenProcID_R1674EXEC QBM_PSessionContextSet 'XUser',1675 @XUser_R revert1676RETURN1677END
Open raw exported source
1create procedure QER_PITShopHelperFill_bulk (@PWOs QBM_YParameterlist readonly ) with execute as 'dbo' as begin declare @GenProcID_R varchar2(38) = dbo.QBM_FGISessionContext('') declare @XUser_R nvarchar(64) = dbo.QBM_FGISessionContext('XUser') declare @CfgUseGenProcID bit = dbo.QBM_FCVStringToBit3(dbo.QBM_FGIConfigparmValue('Common\ProcessState\UseGenProcIDFromPWO')) declare @ElementLast int declare @ElementBufferMulti_1 QBM_YCursorBuffer declare4 @ElementCount int declare @ElementIndex int declare @ElementCountPWO int declare @ElementIndexPWO int declare @DBQueueElements_CheckDecision QBM_YDBQueueRaw5 declare @DBQueueElements_MakeDecisionOC QBM_YDBQueueRaw declare @DBQueueElements_MakeDecisionOH QBM_YDBQueueRaw declare @DBQueueElements_MakeDecisionEX6 QBM_YDBQueueRaw declare @PWOToCheck QER_YPWOBufferForHelper declare @PWOHelperPWO_Old QER_YPWOHelper declare @PWOHelperPWO_New QER_YPWOHelper declare 7@hilfstab QER_YPWOHelperCPL declare @CountItemsException int declare @UID_PWO varchar(38) declare @SubLevelNumber int declare @LevelNumber int declare 8@LevelNumber_alt int declare @uid_complianceRule varchar(38) declare @uid_complianceRule_max varchar(38) declare @UID_PersonNonCompliant varchar(38) declare9 @FunctionName varchar(30) declare @UID_PWODecisionRule varchar(38) declare @UID_QERWorkingStep varchar(38) declare @countApproverNeeded int declare @SQLCmd10 nvarchar(max) declare @countApproverAvailable int declare @GenProcIDToUse varchar(38) declare @DecisionLevelToUse int declare @SonderBehandlungException11 bit = 0 declare @DebugSwitch int = 0 declare @cfgPersonOrderedNoDecide bit = dbo.QBM_FCVStringToBit(dbo.QBM_FGIConfigparmValue('QER\ITShop\PersonOrderedNoDecide'12)) declare @cfgPersonInsertedNoDecide bit = dbo.QBM_FCVStringToBit(dbo.QBM_FGIConfigparmValue('QER\ITShop\PersonInsertedNoDecide')) declare @OrderState13 nvarchar(16) declare @QBM_BitPatternXMarkedForDel_Delay int = dbo.QBM_FGIBitPatternXMarkedForDel('|Delay|', 0) declare @XUser nvarchar(64) = object_name14(@@procid) declare @Xdate datetime = getutcdate() declare @PWOAndLevel table ( UID_PersonWantsOrg varchar(38) collate database_default , LevelNumber int15 default 0 , index PWOAndLevel1 (UID_PersonWantsOrg) ) declare @Calltype varchar(1) SET XACT_ABORT OFF BEGIN TRY drop table if exists #PWOHelperPWO_New16 create table #PWOHelperPWO_New( UID_PWODecisionRule varchar(38) collate database_default , uid_personHead varchar(38) collate database_default , uid_QERWorkingStep17 varchar(38) collate database_default , levelnumber int default 0 , Sublevelnumber int default 0 , istoInsert bit default 0 , UID_PWORulerOrigin varchar18(38) collate database_default , RulerLevel int default 0 , UID_PersonWantsOrg varchar(38) collate database_default , UID_PersonSubstituteSender varchar19(38) collate database_default ) insert into @PWOToCheck (UID_PersonWantsOrg, GenProcid, CurrentLevelOnly, IsNewDecisionLevel , makeEmpty , Decisionlevel20 , UID_QERWorkingMethod , Orderstate , SonderlockeException , UID_ITShopOrgFinal , validFrom, ValidUntil, isOrderforWorkDesk, UID_PersonOrdered, UID_OrgParent21, UID_PersonInserted, isReserved, UID_PersonHead ) select distinct p.Parameter1, dbo.QER_FGIGenProcIDForPWO(isnull(pwo.GenProcID, p.Parameter2) , p.Parameter222, @CfgUseGenProcID) as GenProcid , dbo.QBM_FCVStringToInt(p.Parameter3, 0) as CurrentLevelOnly , p.HasContentFull as IsNewDecisionLevel , case when pwo.UID_PersonWantsOrg23 is null then 1 when pwo.OrderState not in ('OrderProduct', 'OrderProlongate', 'OrderUnsubscribe') then 1 else 0 end as makeEmpty , pwo.decisionlevel ,24 pwo.UID_QERWorkingMethod , pwo.OrderState , sign(len(isnull(sOC.UID_QERWorkingStep, ''))) as SonderlockeException , pwo.UID_ITShopOrgFinal , pwo.ValidFrom25, pwo.ValidUntil, isOrderforWorkDesk, UID_PersonOrdered, UID_OrgParent, pwo.UID_PersonInserted, pwo.IsReserved, UID_PersonHead from @PWOs p left outer 26join PersonWantsOrg pwo on p.Parameter1 = pwo.UID_PersonWantsOrg left outer join QERWorkingStep sOC on pwo.UID_QERWorkingMethod = sOC.UID_QERWorkingMethod27 and sOC.UID_PWODecisionRule in ('CPL-PWODecisionRule-OC', 'CPL-PWODecisionRule-OH') and (dbo.QBM_FCVStringToInt(p.Parameter3, 0) = 0 or ( sOC.LevelNumber28 = pwo.DecisionLevel ) ) select @ElementCountPWO = @@ROWCOUNT insert into @PWOAndLevel (UID_PersonWantsOrg, LevelNumber) select h.UID_PersonWantsOrg29, h.LevelNumber from @PWOToCheck pwo join PWOHelperPWO h on h.UID_PersonWantsOrg = pwo.UID_PersonWantsOrg group by h.UID_PersonWantsOrg, h.LevelNumber 30 , pwo.DecisionLevel having ( (max(pwo.CurrentLevelOnly) = 1 and pwo.DecisionLevel = h.LevelNumber) or (max(pwo.CurrentLevelOnly) = 0 and (MAX(isnull(h.Decision31, '')) = '' or pwo.DecisionLevel = h.LevelNumber ) ) ) union select pwo.UID_PersonWantsOrg, s.LevelNumber from @PWOToCheck pwo join QERWorkingStep s 32on pwo.UID_QERWorkingMethod = s.UID_QERWorkingMethod where not exists (select top 1 1 from PWOHelperPWO h where h.UID_PersonWantsOrg = pwo.UID_PersonWantsOrg33 and h.LevelNumber = s.LevelNumber and h.SubLevelNumber = s.SubLevelNumber ) if @DebugSwitch > 0 begin print 'initialbefüllung @PWOToCheck' select *34 from @PWOToCheck end insert into @PWOHelperPWO_Old (UID_PWODecisionRule, uid_personHead, levelnumber, SubLevelNumber, UID_QERWorkingStep, decision, uid_complianceRule35, uid_PersonNonCompliant, UID_PWORulerOrigin , UID_PersonAdditional, UID_PersonInsteadOf, IsFromDelegation, RulerLevel , IsToDelete , UID_PWOHelperPWO 36, isToUpdateDecision , UID_PersonWantsOrg , NextAutomaticDecision ) select isnull(UID_PWODecisionRule, ''), pwoh.UID_PersonHead, levelnumber, SubLevelNumber37, pwoh.uid_QERWorkingStep, isnull(pwoh.decision,''), uid_complianceRule, uid_PersonNonCompliant, UID_PWORulerOrigin , UID_PersonAdditional, UID_PersonInsteadOf38, IsFromDelegation, RulerLevel , case when c.makeEmpty = 1 then 1 when pwoh.Decision = '-' then 1 else 0 end as IsToDelete , pwoh.UID_PWOHelperPWO , 39case when pwoh.Decision is null then 1 else 0 end as isToUpdateDecision , c.UID_PersonWantsOrg , pwoh.NextAutomaticDecision from PWOHelperPWO pwoh with40 (readpast) join @PWOToCheck c on pwoh.UID_PersonWantsOrg = c.UID_PersonWantsOrg where exists (select top 1 1 from @PWOAndLevel pl where pl.UID_PersonWantsOrg41 = pwoh.UID_PersonWantsOrg and pl.LevelNumber = pwoh.LevelNumber ) or c.makeEmpty = 1 update @PWOToCheck set CheckSumHelper = x.CheckSumHelper from @PWOToCheck42 p join ( select c.UID_PersonWantsOrg, checksum_agg(checksum(concat(h.UID_PWOHelperPWO, h.Decision))) as CheckSumHelper from @PWOToCheck c left outer join43 PWOHelperPWO h with (readpast) on c.UID_PersonWantsOrg = h.UID_PersonWantsOrg group by c.UID_PersonWantsOrg ) as x on p.UID_PersonWantsOrg = x.UID_PersonWantsOrg44 if @DebugSwitch > 0 begin print 'initialbefüllung @PWOHelperPWO_Old' select * from @PWOHelperPWO_Old end if exists (select top 1 1 45from @PWOToCheck c where c.SonderlockeException = 1 ) begin select @SonderBehandlungException = 1 end if @SonderBehandlungException = 1 begin 46insert into @hilfstab (uid_complianceRule, uid_personNonCompliant, SubLevelNumber, RuleSeverity, isHighestSeverity , Levelnumber , UID_PersonWantsOrg )47 select pic.uid_complianceRule, pic.uid_person, -1, isnull(c.RuleSeverity, 0.0), 0 , sOC.Levelnumber , pwo.UID_PersonWantsOrg from HelperPWOCompliance 48pic join @PWOToCheck pwo on pic.uid_personwantsorg = pwo.uid_personwantsorg and pwo.SonderlockeException = 1 join ComplianceRule c on pic.uid_complianceRule49 = c.uid_complianceRule and c.IsInActive = 0 and c.IsWorkingCopy = 0 join QERWorkingStep sOC on sOC.UID_QERWorkingMethod = pwo.UID_QERWorkingMethod and50 sOC.UID_PWODecisionRule in ('CPL-PWODecisionRule-OC', 'CPL-PWODecisionRule-OH') join QERWorkingStep sCC on sCC.UID_QERWorkingMethod = pwo.UID_QERWorkingMethod51 and sCC.UID_PWODecisionRule in ('CPL-PWODecisionRule-CR') and sCC.levelnumber + sCC.NegativeSteps = sOC.Levelnumber group by pwo.UID_PersonWantsOrg,52 pic.uid_complianceRule, pic.uid_Person, isnull(c.RuleSeverity, 0.0), sOC.Levelnumber order by pwo.UID_PersonWantsOrg, pic.uid_complianceRule, pic.uid_Person53, isnull(c.RuleSeverity, 0.0), sOC.Levelnumber update @PWOToCheck set CountItemsException = x.anzahl from @PWOToCheck c join ( select h.UID_PersonWantsOrg54, count(*) as anzahl from @hilfstab h group by h.UID_PersonWantsOrg ) as x on x.UID_PersonWantsOrg = c.UID_PersonWantsOrg where c.SonderlockeException 55= 1 insert into PWODecisionHistory ( UID_PWODecisionHistory , XObjectKey , UID_PersonRelated , UID_PersonWantsOrg, DisplayPersonHead, ReasonHead, DateHead56 , XDateInserted, XDateUpdated, XUserInserted, XUserUpdated, DecisionLevel , ValidUntil, ValidFrom , DecisionType , IsDecisionBySystem , UID_PWODecisionRule57 , OrderState , UID_ITShopOrgFinal , IsToHideInHistory , UID_ComplianceRule ) select c.UID_HelperPWOCompliance , dbo.QBM_FCVElementToObjectKey1('PWODecisionHistory'58, 'UID_PWODecisionHistory', c.UID_HelperPWOCompliance) , c.UID_Person , pwo.UID_PersonWantsOrg, 'compliance violation detected', 'compliance violation detected'59, GETUTCDATE() , GETUTCDATE(), GETUTCDATE(), 'sa', 'sa', pwo.DecisionLevel , pwo.ValidUntil, pwo.ValidFrom , 'Compliance' , 1 , null , pwo.OrderState 60, pwo.UID_ITShopOrgFinal , 1 , c.UID_ComplianceRule from HelperPWOCompliance c join @PWOToCheck pwo on c.UID_PersonWantsOrg = pwo.UID_PersonWantsOrg 61where not exists (select top 1 1 from PWODecisionHistory h where h.UID_PWODecisionHistory = c.UID_HelperPWOCompliance ) and not exists (select top 1 1 62from PWODecisionHistory h where h.UID_ComplianceRule = c.UID_ComplianceRule and h.UID_PersonWantsOrg = pwo.UID_PersonWantsOrg ) select @ElementIndexPWO63 = 1 while @ElementIndexPWO <= @ElementCountPWO begin select top 1 @CountItemsException = c.CountItemsException , @UID_PWO = c.UID_PersonWantsOrg from 64@PWOToCheck c where c.ElementIndex = @ElementIndexPWO if @CountItemsException > 0 begin select @SubLevelNumber = 0 select @Levelnumber_alt = -100 delete65 @ElementBufferMulti_1 insert into @ElementBufferMulti_1 (Int1, UID1, UID2) select h.Levelnumber, h.UID_ComplianceRule, h.UID_PersonNonCompliant from66 @hilfstab h where h.UID_PersonWantsOrg = @UID_PWO order by h.Levelnumber, h.UID_ComplianceRule, h.UID_PersonNonCompliant select @ElementCount = @@ROWCOUNT67 select @ElementIndex = @@IDENTITY - @ElementCount +1 select @ElementLast = @@IDENTITY while @ElementIndex <= @ElementLast begin select top 1 @Levelnumber68 = bu.Int1 , @uid_complianceRule = bu.UID1 , @UID_PersonNonCompliant = bu.UID2 from @ElementBufferMulti_1 bu where bu.ElementIndex = @ElementIndex if @levelnumber69 <> @Levelnumber_alt begin select @levelnumber_alt = @levelnumber select @SubLevelNumber = 0 select top 1 @uid_complianceRule_max = h.UID_ComplianceRule70 from @hilfstab h where h.levelnumber = @levelnumber and h.UID_PersonWantsOrg = @UID_PWO order by isnull(h.RuleSeverity, 0.0) desc, uid_compliancerule 71asc update @hilfstab set isHighestSeverity = 1 from @hilfstab h where h.UID_ComplianceRule = @uid_complianceRule_max and h.Levelnumber = @Levelnumber and72 h.UID_PersonWantsOrg = @UID_PWO end else begin select @SubLevelNumber = @SubLevelNumber + 1 end update @Hilfstab set SubLevelNumber = @SubLevelNumber73 from @hilfstab h where h.UID_ComplianceRule = @uid_complianceRule and UID_PersonNonCompliant = @UID_PersonNonCompliant and h.Levelnumber = @levelnumber74 and h.UID_PersonWantsOrg = @UID_PWO select @ElementIndex += 1 end end select @ElementIndexPWO += 1 end end Update @PWOHelperPWO_Old set isToDelete 75= 1 from @PWOHelperPWO_Old zk join (select * from @PWOHelperPWO_Old ) as d on zk.UID_PWODecisionRule = d.UID_PWODecisionRule and zk.uid_QERWorkingStep 76= d.uid_QERWorkingStep and zk.levelnumber = d.levelnumber and zk.Sublevelnumber = d.Sublevelnumber and zk.UID_PersonWantsOrg = d.UID_PersonWantsOrg where77 zk.UID_PersonInsteadOf = d.UID_PersonHead and d.UID_PersonInsteadOf > ' ' declare @ElementAufruf QBM_YCursorbuffer insert into @ElementAufruf (UID178, UID2 , Ident1 , Int1 , Int2 , Int3 , UID3 , Ident2 ) select distinct s.UID_PWODecisionRule, s.UID_QERWorkingStep , dbo.QER_FCVRuleGUIDToFunctionName79(s.UID_PWODecisionRule) , s.LevelNumber, s.SubLevelNumber , s.CountApprover , pwo.UID_PersonWantsOrg , pwo.Orderstate from @PWOToCheck pwo join QERWorkingStep80 s on s.UID_QERWorkingMethod = pwo.UID_QERWorkingMethod where ( pwo.isOrderforWorkDesk = 1 or exists (select top 1 1 from BaseTree bo join BaseTree sh81 on bo.uid_ParentOrg = sh.uid_Org and bo.itshopInfo = 'BO' and sh.itshopInfo = 'SH' join BaseTree cu on cu.uid_ParentOrg = sh.uid_Org and cu.ITShopInfo82 = 'CU' join PersonInBaseTree pio on pio.uid_Org = cu.uid_Org and pwo.uid_PersonOrdered = pio.UID_Person and pio.XOrigin > 0 where bo.uid_Org = pwo.UID_OrgParent83 ) ) and ( exists (select top 1 1 from @PWOAndLevel pl where pl.UID_PersonWantsOrg = pwo.UID_PersonWantsOrg and pl.LevelNumber = s.LevelNumber ) ) and84 pwo.makeEmpty = 0 order by s.UID_PWODecisionRule select @ElementCount = @@ROWCOUNT select @ElementIndex = @@IDENTITY - @ElementCount +1 select @ElementLast85 = @@IDENTITY while @ElementIndex <= @ElementLast begin select top 1 @UID_PWODecisionRule = bu.UID1 , @UID_QERWorkingStep = bu.UID2 , @FunctionName = bu.Ident186 , @LevelNumber = bu.Int1 , @SublevelNumber = bu.Int2 , @countApproverNeeded = bu.Int3 , @UID_PWO = bu.UID3 , @OrderState = bu.Ident2 from @ElementAufruf87 bu where bu.ElementIndex = @ElementIndex select top 1 @Calltype = case o.type when 'IF' then 'F' when 'TF' then 'F' when 'P' then 'P' else '' end from88 sys.objects o where o.name = @FunctionName if @Calltype = '' begin goto zyklusende end if @Calltype = 'P' begin truncate table #PWOHelperPWO_New end 89 select @SQLcmd = '' if @Calltype = 'P' begin select @SQLCmd = concat('drop table if exists #Ruler_main90 create table #Ruler_main(UID_Person varchar(38) collate database_default91 , UID_PWORulerOrigin varchar(38) collate database_default92 )93 exec '94 , @functionname , ' ''' , @UID_PWO , ''', ''' , @UID_QERWorkingStep , '''95 ' ) end select @SQLcmd = concat( @SQLcmd ,'96 declare @PersonAndLevel QBM_YParameterList9798 insert into @PersonAndLevel (Parameter1, Parameter2, Parameter3)99 select s.uid_person, max(s.UID_PWORulerOrigin), s.RulerLevel100 from (101 '102, case @Calltype when 'F' then concat( 'select a1.uid_person, a1.UID_PWORulerOrigin, ''0'' as RulerLevel103 from dbo.' , @functionname , ' (''' ,104 @UID_PWO , ''', ''' , @UID_QERWorkingStep , ''') a1 ' ) else 'select uid_person, UID_PWORulerOrigin, ''0'' as RulerLevel105 from #Ruler_main '106 end , '107 union all108 select pio.UID_Person, dbo.QER_FGIPWORulerOrigin(pio.XObjectKey) as UID_PWORulerOrigin, ''1'' as Rulerlevel109 from QERWorkingStep s join PersonInBaseTree pio on s.UID_AERoleFallBack = pio.UID_Org110 and pio.XOrigin > 0111 where s.UID_QERWorkingStep = '''112 , @UID_QERWorkingStep , '''113 union all 114 select pio.UID_Person, dbo.QER_FGIPWORulerOrigin(pio.XObjectKey) as UID_PWORulerOrigin, ''2'' as Rulerlevel115 from PersonInBaseTree pio116 where pio.UID_Org = ''QER-AEROLE-ITSHOP-INTERVENTION''117 and pio.XOrigin > 0118 ) as s119 group by s.uid_person, s.RulerLevel120 '121, case @Calltype when 'F' then '' when 'P' then '122 insert into #PWOHelperPWO_New (UID_PWODecisionRule , uid_personHead, uid_QERWorkingStep, levelnumber, Sublevelnumber, istoInsert, UID_PWORulerOrigin, RulerLevel, UID_PersonWantsOrg, UID_PersonSubstituteSender)'123 else '' end , '124 select ''', @uid_Pwodecisionrule, ''' , s.uid_person, ''', @UID_QERWorkingStep, ''' , ', str(@levelnumber) , ', ' , str(@Sublevelnumber125) , ', 0, max(s.UID_PWORulerOrigin), dbo.QBM_FCVStringToInt( s.RulerLevel, 0), ''', @UID_PWO , '''126 -- 31893 ist eine Person sowieso entscheidungsberechtigt und noch einmal über Substitute reingekommen, soll der Eintrag von "sowieso" erhalten bleiben127 , min(isnull(s.UID_PersonSubstituteSender, ''''))128 from (129 select p.Parameter1 as UID_Person, p.Parameter2 as UID_PWORulerOrigin, p.Parameter3 as RulerLevel, null as UID_PersonSubstituteSender130 from @PersonAndLevel p131132 union all133134 select us.UID_PersonReceiver, us.UID_PersonWantsOrg as UID_PWORulerOrigin, p.Parameter3 as RulerLevel /* string */, us.UID_PersonSender as UID_PersonSubstituteSender135 from @PersonAndLevel p join QERUniversalSubstitute us on p.Parameter1 = us.UID_PersonSender136 where us.IsCurrentlyActive = 1137 and us.UseForITShop = 1138 and not exists (select top 1 1 from @PersonAndLevel pal where pal.Parameter1 = us.UID_PersonReceiver and pal.Parameter3 = p.Parameter3)139 ) as s140 group by s.UID_Person, s.RulerLevel141142 '143 ) if @Calltype = 'F' begin insert into @PWOHelperPWO_New (UID_PWODecisionRule , uid_personHead, uid_QERWorkingStep, levelnumber, Sublevelnumber, istoInsert144, UID_PWORulerOrigin, RulerLevel, UID_PersonWantsOrg, UID_PersonSubstituteSender) exec sp_executesql @SQLcmd end if @Calltype = 'P' begin exec sp_executesql145 @SQLcmd insert into @PWOHelperPWO_New (UID_PWODecisionRule , uid_personHead, uid_QERWorkingStep, levelnumber, Sublevelnumber, istoInsert, UID_PWORulerOrigin146, RulerLevel, UID_PersonWantsOrg, UID_PersonSubstituteSender) select UID_PWODecisionRule , uid_personHead, uid_QERWorkingStep, levelnumber, Sublevelnumber147, istoInsert, UID_PWORulerOrigin, RulerLevel, UID_PersonWantsOrg, UID_PersonSubstituteSender from #PWOHelperPWO_New end update @PWOHelperPWO_New set148 UID_PWORulerOrigin = su.UID_PersonWantsOrg from @PWOHelperPWO_New n join QERUniversalSubstitute su on n.UID_PersonHead = su.UID_PersonReceiver and (su.UseForHeadPerson149 = 1 or su.UseForHeadOrg = 1) and su.IsCurrentlyActive = 1 where n.UID_PWORulerOrigin is null and exists (select top 1 1 from @PWOHelperPWO_New se where150 se.UID_PersonHead = su.UID_PersonSender and se.levelnumber = n.levelnumber and se.Sublevelnumber = n.sublevelnumber ) if @cfgPersonOrderedNoDecide151 = 1 begin delete @PWOHelperPWO_New from @PWOToCheck pwo join QER_VPersonsAreMe me on pwo.UID_PersonOrdered = me.UID_PersonOrigin join @PWOHelperPWO_New152 n on me.UID_PersonAlsoMe in ( n.UID_PersonHead, n.UID_PersonSubstituteSender) and n.UID_PersonWantsOrg = pwo.UID_PersonWantsOrg join QERWorkingStep s 153on n.UID_QERWorkingStep = s.UID_QERWorkingStep and s.IgnoreNoDecideForPerson = 0 where pwo.uid_personwantsorg = @UID_PWO and ( ( isnull(pwo.UID_PersonInserted154, pwo.UID_PersonOrdered) <> pwo.UID_PersonOrdered and n.UID_PWODecisionRule <> 'QER-PWODecisionRule-BR' ) or ( isnull(pwo.UID_PersonInserted, pwo.UID_PersonOrdered155) = pwo.UID_PersonOrdered and n.UID_PWODecisionRule not in ('QER-PWODecisionRule-BS' , 'QER-PWODecisionRule-BR' ) ) ) end if @cfgPersonInsertedNoDecide156 = 1 begin if @OrderState = 'OrderProduct' begin delete @PWOHelperPWO_New from @PWOToCheck pwo join QER_VPersonsAreMe me on pwo.UID_PersonInserted = me.UID_PersonOrigin157 join @PWOHelperPWO_New n on me.UID_PersonAlsoMe in ( n.UID_PersonHead, n.UID_PersonSubstituteSender) and n.UID_PersonWantsOrg = pwo.UID_PersonWantsOrg158 join QERWorkingStep s on n.UID_QERWorkingStep = s.UID_QERWorkingStep and s.IgnoreNoDecideForPerson = 0 where pwo.uid_personwantsorg = @UID_PWO and (159 ( isnull(pwo.UID_PersonInserted, pwo.UID_PersonOrdered) <> pwo.UID_PersonOrdered and n.UID_PWODecisionRule <> 'QER-PWODecisionRule-BS' ) or ( isnull(pwo.UID_PersonInserted160, pwo.UID_PersonOrdered) = pwo.UID_PersonOrdered and n.UID_PWODecisionRule not in ('QER-PWODecisionRule-BS' , 'QER-PWODecisionRule-BR' ) ) ) end if @OrderState161 in ('OrderProlongate', 'OrderUnsubscribe') begin delete @PWOHelperPWO_New from @PWOToCheck pwo join (select h.UID_PersonWantsOrg, substring(max(concat162(dbo.QBM_FCVDatetimeToString(h.XDateInserted) , h.UID_PersonHead)), 24, 38) as UID_PersonHead , substring(max(concat(dbo.QBM_FCVDatetimeToString(h.XDateInserted163) , h.OrderState)), 24,38) as OrderState from PWODecisionHistory h where h.UID_PersonWantsOrg = @UID_PWO and (h.OrderState = 'OrderProlongate' and h.DecisionType164 = 'Prolongate' or h.OrderState = 'OrderUnsubscribe' and h.DecisionType = 'Unsubscribe' ) and h.UID_PersonHead > ' ' group by h.UID_PersonWantsOrg ) h1165 on h1.UID_PersonWantsOrg = pwo.UID_PersonWantsOrg and h1.OrderState = pwo.OrderState join QER_VPersonsAreMe me on h1.UID_PersonHead = me.UID_PersonOrigin166 join @PWOHelperPWO_New n on me.UID_PersonAlsoMe = n.uid_personHead and n.UID_PersonWantsOrg = pwo.UID_PersonWantsOrg where pwo.UID_PersonWantsOrg = @UID_PWO167 and ( ( isnull(pwo.UID_PersonInserted, pwo.UID_PersonOrdered) <> pwo.UID_PersonOrdered and n.UID_PWODecisionRule <> 'QER-PWODecisionRule-BS' ) or ( isnull168(pwo.UID_PersonInserted, pwo.UID_PersonOrdered) = pwo.UID_PersonOrdered and n.UID_PWODecisionRule not in ('QER-PWODecisionRule-BS' , 'QER-PWODecisionRule-BR'169 ) ) ) end end select top 1 @countApproverAvailable = COUNT(*) from @PWOHelperPWO_New n where n.RulerLevel = 0 and n.uid_QERWorkingStep = @UID_QERWorkingStep170 and n.levelnumber = @LevelNumber and n.Sublevelnumber = @SubLevelNumber and n.UID_PersonWantsOrg = @UID_PWO if @countApproverAvailable >= case when @countApproverNeeded171 < 0 then @countApproverAvailable when @countApproverNeeded = 0 then 1 else @countApproverNeeded end and @countApproverAvailable > 0 begin delete @PWOHelperPWO_New172 from @PWOHelperPWO_New n where n.RulerLevel = 1 and n.uid_QERWorkingStep = @UID_QERWorkingStep and n.levelnumber = @LevelNumber and n.Sublevelnumber =173 @SubLevelNumber and n.UID_PersonWantsOrg = @UID_PWO end delete @PWOHelperPWO_New from @PWOHelperPWO_New n where n.RulerLevel = 0 and n.uid_QERWorkingStep174 = @UID_QERWorkingStep and n.levelnumber = @LevelNumber and n.Sublevelnumber = @SubLevelNumber and n.UID_PersonWantsOrg = @UID_PWO and exists (select top175 1 1 from @PWOHelperPWO_New n1 where n1.RulerLevel = 1 and n1.uid_QERWorkingStep = @UID_QERWorkingStep and n1.levelnumber = @LevelNumber and n1.Sublevelnumber176 = @SubLevelNumber and n1.uid_personHead = n.uid_personHead and n1.UID_PersonWantsOrg = @UID_PWO ) if @UID_PwoDecisionRule in (select r.UID_PWODecisionRule177 from PWODecisionRule r where r.UID_Task > ' ' union all select 'CPL-PWODecisionRule-OC' union all select 'CPL-PWODecisionRule-OH' ) begin delete @PWOHelperPWO_New178 from @PWOHelperPWO_New n where n.RulerLevel > 0 and n.uid_QERWorkingStep = @UID_QERWorkingStep and n.levelnumber = @LevelNumber and n.Sublevelnumber =179 @SubLevelNumber and n.UID_PersonWantsOrg = @UID_PWO end zyklusende: select @ElementIndex += 1 end if @SonderBehandlungException = 1 begin insert into180 @PWOHelperPWO_New ( UID_PWODecisionRule, uid_QERWorkingStep, levelnumber, Sublevelnumber, UID_ComplianceRule, uid_personHead, uid_PersonNoncompliant ,181 UID_PWORulerOrigin , UID_PersonWantsOrg, UID_PersonSubstituteSender ) select s.UID_PWODecisionRule, s.uid_QERWorkingStep, s.levelnumber, ht.SubLevelNumber182, c.UID_ComplianceRule, p.uid_person , pic.uid_Person , dbo.QER_FGIPWORulerOrigin(pio.XObjectKey) as UID_PWORulerOrigin , pwo.UID_PersonWantsOrg, null 183as UID_PersonSubstituteSender from @PWOToCheck pwo join QERWorkingStep s on s.UID_QERWorkingMethod = pwo.UID_QERWorkingMethod and s.UID_PWODecisionRule184 in( 'CPL-PWODecisionRule-OC', 'CPL-PWODecisionRule-OH') join HelperPWOCompliance pic on pwo.uid_personwantsorg = pic.uid_personwantsorg join ComplianceRule185 c on pic.uid_complianceRule = c.uid_complianceRule and c.IsInActive = 0 and c.IsWorkingCopy = 0 join @Hilfstab ht on ht.uid_complianceRule = c.uid_complianceRule186 and ht.levelnumber = s.levelnumber and ht.uid_PersonNonCompliant = pic.uid_Person and ht.UID_PersonWantsOrg = pwo.UID_PersonWantsOrg left outer join 187personinBaseTree pio on pio.uid_org = c.uid_orgRuler and pio.XOrigin > 0 left outer join Person p on p.UID_Person = pio.UID_Person and p.IsInActive = 1880 where pwo.MakeEmpty = 0 insert into @PWOHelperPWO_New ( UID_PWODecisionRule, uid_QERWorkingStep, levelnumber, Sublevelnumber, UID_ComplianceRule, uid_personHead189, uid_PersonNoncompliant , UID_PWORulerOrigin , UID_PersonWantsOrg, UID_PersonSubstituteSender ) select distinct n.UID_PWODecisionRule, n.UID_QERWorkingStep190, n.LevelNumber, n.Sublevelnumber, n.UID_ComplianceRule, us.UID_PersonReceiver, n.UID_PersonNonCompliant , null as UID_PWORulerOrigin , n.UID_PersonWantsOrg191, us.UID_PersonSender as UID_PersonSubstituteSender from @PWOHelperPWO_New n join QERUniversalSubstitute us on n.UID_PersonHead = us.UID_PersonSender where192 n.UID_PWODecisionRule in ( 'CPL-PWODecisionRule-OC' , 'CPL-PWODecisionRule-OH') and us.IsCurrentlyActive = 1 and us.UseForITShopCompliance = 1 and not193 exists (select top 1 1 from @PWOHelperPWO_New e where e.UID_PersonWantsOrg = n.UID_PersonWantsOrg and e.UID_PWODecisionRule = n.UID_PWODecisionRule and194 e.UID_QERWorkingStep = n.UID_QERWorkingStep and e.LevelNumber = n.LevelNumber and e.Sublevelnumber = n.Sublevelnumber and e.UID_PersonNonCompliant = n.UID_PersonNonCompliant195 and e.UID_PersonHead = us.UID_PersonReceiver ) if dbo.QBM_FGIConfigparmValue('QER\ITShop\PersonInsertedNoDecideCompliance') = '1' begin delete @PWOHelperPWO_New196 from @PWOToCheck pwo join QER_VPersonsAreMe me on pwo.UID_PersonInserted = me.UID_PersonOrigin join @PWOHelperPWO_New n on me.UID_PersonAlsoMe in ( n.UID_PersonHead197, n.UID_PersonSubstituteSender ) and n.UID_PersonWantsOrg = pwo.UID_PersonWantsOrg join QERWorkingStep s on n.UID_QERWorkingStep = s.UID_QERWorkingStep198 and s.IgnoreNoDecideForPerson = 0 where n.UID_PWODecisionRule in ( 'CPL-PWODecisionRule-OC' , 'CPL-PWODecisionRule-OH') end if dbo.QBM_FGIConfigparmValue199('QER\ITShop\PersonOrderedNoDecideCompliance') = '1' begin delete @PWOHelperPWO_New from @PWOToCheck pwo join QER_VPersonsAreMe me on pwo.UID_PersonOrdered200 = me.UID_PersonOrigin join @PWOHelperPWO_New n on me.UID_PersonAlsoMe in ( n.UID_PersonHead, n.UID_PersonSubstituteSender ) and n.UID_PersonWantsOrg =201 pwo.UID_PersonWantsOrg join QERWorkingStep s on n.UID_QERWorkingStep = s.UID_QERWorkingStep and s.IgnoreNoDecideForPerson = 0 where n.UID_PWODecisionRule202 in ( 'CPL-PWODecisionRule-OC' , 'CPL-PWODecisionRule-OH') end if dbo.QBM_FGIConfigparmValue('QER\ComplianceCheck\DisableSelfExceptionGranting') = '1'203 begin delete @PWOHelperPWO_New from @PWOHelperPWO_New n join QER_VPersonsAreMe nc on n.UID_PersonNonCompliant = nc.UID_PersonOrigin join QER_VPersonsAreMe204 nh on n.uid_personHead = nh.UID_PersonOrigin where nc.UID_PersonAlsoMe = nh.UID_PersonAlsoMe and UID_PWODecisionRule in ( 'CPL-PWODecisionRule-OC' , 205'CPL-PWODecisionRule-OH') end end update @PWOHelperPWO_Old set isToDelete = 1 where uid_personhead is null and isnull(UID_PWODecisionRule, '') not206 in (select UID_PWODecisionRule from pwodecisionrule r where r.UID_Task > ' ' or r.UID_PWODecisionRule in ('CPL-PWODecisionRule-OC' , 'CPL-PWODecisionRule-OH'207 ) ) if @SonderBehandlungException = 1 begin update @PWOHelperPWO_Old set isToDelete = 1 from @PWOHelperPWO_Old o where o.uid_personHead is null and208 o.UID_PWODecisionRule in ('CPL-PWODecisionRule-OC', 'CPL-PWODecisionRule-OH') and exists (select top 1 1 from @PWOHelperPWO_New n where n.UID_PWODecisionRule209 = o.UID_PWODecisionRule and isnull(n.UID_QERWorkingStep, '') = isnull(o.UID_QERWorkingStep, '') and n.levelnumber = o.levelnumber and n.uid_personhead210 > ' ' and o.UID_PersonWantsOrg = n.UID_PersonWantsOrg ) update @PWOHelperPWO_Old set isToDelete = 1 from @PWOHelperPWO_Old o where o.uid_personHead is211 null and o.UID_ComplianceRule is null and o.UID_PWODecisionRule in ('CPL-PWODecisionRule-OC', 'CPL-PWODecisionRule-OH') and exists (select top 1 1 from212 @PWOHelperPWO_New n where n.UID_PWODecisionRule = o.UID_PWODecisionRule and isnull(n.UID_QERWorkingStep, '') = isnull(o.UID_QERWorkingStep, '') and n.levelnumber213 = o.levelnumber and n.uid_compliancerule > ' ' and o.UID_PersonWantsOrg = n.UID_PersonWantsOrg ) end delete @PWOHelperPWO_New where uid_personhead 214is null and UID_PWODecisionRule not in (select UID_PWODecisionRule from pwodecisionrule r where UID_Task > ' ' or r.UID_PWODecisionRule in ('CPL-PWODecisionRule-OC'215 , 'CPL-PWODecisionRule-OH' ) ) if @SonderBehandlungException = 1 begin delete @PWOHelperPWO_New from @PWOHelperPWO_New n where uid_personhead is null216 and UID_PWODecisionRule in ('CPL-PWODecisionRule-OC' , 'CPL-PWODecisionRule-OH' ) and exists (select top 1 1 from @PWOHelperPWO_New o where o.UID_PWODecisionRule217 = n.UID_PWODecisionRule and isnull(o.UID_QERWorkingStep, '') = isnull(n.UID_QERWorkingStep, '') and o.levelnumber = n.levelnumber and o.uid_personhead218 > ' ' and o.UID_PersonWantsOrg = n.UID_PersonWantsOrg ) end update @PWOHelperPWO_new set UID_PersonAdditional = o.UID_PersonAdditional , UID_PersonInsteadOf219 = o.UID_PersonInsteadOf from @PWOHelperPWO_new n join @PWOHelperPWO_Old o on n.UID_PWODecisionRule = o.UID_PWODecisionRule and n.uid_personHead = o.uid_personHead220 and n.UID_QERWorkingStep = o.UID_QERWorkingStep and n.levelnumber = o.levelnumber and n.Sublevelnumber = o.Sublevelnumber and o.UID_PersonWantsOrg = n.UID_PersonWantsOrg221 where o.UID_PersonAdditional > ' ' or o.UID_PersonInsteadOf > ' ' insert into @PWOHelperPWO_New (UID_PWODecisionRule, uid_personHead, UID_QERWorkingStep222, levelnumber, Sublevelnumber, istoInsert , UID_PersonAdditional, UID_PersonInsteadOf, IsFromDelegation, RulerLevel , UID_PersonWantsOrg ) select distinct223 de.UID_PWODecisionRule, de.UID_PersonAdditional, de.UID_QERWorkingStep, de.levelnumber, 1 , 0, null,null, 1, 0 , de.UID_PersonWantsOrg from @PWOHelperPWO_New224 de where de.UID_PersonAdditional > ' ' and not exists (select top 1 1 from @PWOHelperPWO_New n where n.UID_PWODecisionRule = de.UID_PWODecisionRule and225 n.uid_personHead = de.UID_PersonAdditional and n.UID_QERWorkingStep = de.UID_QERWorkingStep and n.levelnumber = de.levelnumber and n.Sublevelnumber = 2261 and de.UID_PersonWantsOrg = n.UID_PersonWantsOrg ) and exists (select top 1 1 from QERWorkingStep ds where ds.UID_QERWorkingStep = de.UID_QERWorkingStep227 and ds.IsAdditionalAllowed = 1 ) if @@rowcount > 0 begin insert into @PWOHelperPWO_New (UID_PWODecisionRule, uid_personHead, UID_QERWorkingStep, levelnumber228, Sublevelnumber, istoInsert , UID_PersonAdditional, UID_PersonInsteadOf, IsFromDelegation, RulerLevel, UID_PWORulerOrigin , UID_PersonWantsOrg ) select229 distinct de.UID_PWODecisionRule, esc.UID_Person, de.UID_QERWorkingStep, de.levelnumber, 1 , 0, null,null, 1, 2 , esc.UID_PWORulerOrigin , de.UID_PersonWantsOrg230 from @PWOHelperPWO_New de cross join ( select pio.UID_Person, dbo.QER_FGIPWORulerOrigin(pio.XObjectKey) as UID_PWORulerOrigin from PersonInBaseTree pio231 where pio.UID_Org = 'QER-AEROLE-ITSHOP-INTERVENTION' and pio.XOrigin > 0 ) as esc where de.UID_PersonAdditional > ' ' and not exists (select top 1 1 232from @PWOHelperPWO_New n where n.UID_PWODecisionRule = de.UID_PWODecisionRule and n.uid_personHead = esc.UID_Person and n.UID_QERWorkingStep = de.UID_QERWorkingStep233 and n.levelnumber = de.levelnumber and n.Sublevelnumber = 1 and de.UID_PersonWantsOrg = n.UID_PersonWantsOrg ) end insert into @PWOHelperPWO_New (UID_PWODecisionRule234, uid_personHead, UID_QERWorkingStep, levelnumber, Sublevelnumber, istoInsert , UID_PersonAdditional, UID_PersonInsteadOf, IsFromDelegation, RulerLevel235 , UID_PersonWantsOrg ) select distinct de.UID_PWODecisionRule, de.UID_PersonInsteadOf, de.UID_QERWorkingStep, de.levelnumber, 0 , 0, null,null, 1, 0 236 , de.UID_PersonWantsOrg from @PWOHelperPWO_New de where de.UID_PersonInsteadOf > ' ' and not exists (select top 1 1 from @PWOHelperPWO_New n where n.UID_PWODecisionRule237 = de.UID_PWODecisionRule and n.uid_personHead = de.UID_PersonInsteadOf and n.UID_QERWorkingStep = de.UID_QERWorkingStep and n.levelnumber = de.levelnumber238 and n.Sublevelnumber = 0 and de.UID_PersonWantsOrg = n.UID_PersonWantsOrg ) and exists (select top 1 1 from QERWorkingStep ds where ds.UID_QERWorkingStep239 = de.UID_QERWorkingStep and ds.IsInsteadOfAllowed = 1 ) update @PWOHelperPWO_Old set isToDelete = 1 from @PWOHelperPWO_Old o join @PWOToCheck c on240 o.UID_PersonWantsOrg = c.UID_PersonWantsOrg where (not exists (select top 1 1 from @PWOHelperPWO_New n where isnull(n.UID_PWODecisionRule, '') = isnull241(o.UID_PWODecisionRule, '') and isnull(n.uid_personHead, '') = isnull(o.uid_personHead, '') and n.levelnumber = o.levelnumber and n.Sublevelnumber = o.Sublevelnumber242 and isnull(n.UID_QERWorkingStep, '') = isnull(o.UID_QERWorkingStep, '') and isnull(n.UID_ComplianceRule, '') = isnull(o.UID_ComplianceRule, '') and isnull243(n.UID_PersonNonCompliant, '') = isnull(o.UID_PersonNonCompliant, '') and isnull(n.UID_PWORulerOrigin, '') = isnull(o.UID_PWORulerOrigin, '') and ISNULL244(n.rulerlevel, 0) = ISNULL(o.rulerlevel, 0) and o.UID_PersonWantsOrg = n.UID_PersonWantsOrg ) or ( isnull(o.uid_personHead, '') > ' ' and not exists (245 select top 1 1 from Person p where p.UID_Person = isnull(o.uid_personHead, '') and p.IsInActive = 0 ) ) ) and ((c.SonderlockeException = 0 and o.decision246 in( '', '-')) or (c.SonderlockeException = 1 and o.decision in( '', '-', 'R', '+')) ) if exists(select top 1 1 from @PWOToCheck c where c.isReserved247 =1 ) begin if exists (select top 1 1 from @PWOToCheck pwo join @PWOHelperPWO_Old o on pwo.UID_PersonWantsOrg = o.UID_PersonWantsOrg where o.uid_personHead248 = pwo.UID_PersonHead and o.isToDelete = 1 and pwo.isReserved = 1 ) begin update PersonWantsOrg set IsReserved = 0 , XDateUpdated = @Xdate , XUserUpdated249 = @XUser from PersonWantsOrg pwo join @PWOHelperPWO_Old o on pwo.UID_PersonWantsOrg = o.UID_PersonWantsOrg where pwo.IsReserved = 1 and o.IsToDelete =250 1 and o.UID_PersonHead = pwo.UID_PersonHead update @PWOHelperPWO_Old set isToDelete = 1 from @PWOHelperPWO_Old o join @PWOToCheck c on o.UID_PersonWantsOrg251 = c.UID_PersonWantsOrg where (o.UID_PWODecisionRule = 'QER-PWODecisionRule-QP' or o.Decision = 'Q' ) and c.isReserved = 1 and exists (select top 1 1 from252 @PWOHelperPWO_Old oo where oo.UID_PersonWantsOrg = o.UID_PersonWantsOrg and oo.IsToDelete = 1 and oo.UID_PersonHead = c.UID_PersonHead ) insert into253 PWODecisionHistory (DecisionType, IsDecisionBySystem, UID_PWODecisionHistory, UID_PWOState , UID_PersonHead, UID_PersonWantsOrg, DisplayPersonHead, ReasonHead254, DateHead, XDateInserted, XDateUpdated, XUserInserted, XUserUpdated, DecisionLevel, XTouched, ValidUntil, ValidFrom , XObjectKey, UID_ITShopOrgFinal) 255select distinct 'RecallQuery', 1, o.UID_PWOHelperPWO as UID_PWODecisionHistory, null, null, o.UID_PersonWantsOrg, dbo.QBM_FCVStringTrimLDSPrefix('#LDS#Automatic system approval.|'256) , dbo.QBM_FCVStringTrimLDSPrefix('#LDS#Query to Person finished due to changed deciders.|'), GetUTCDate(), GetUTCDate(), GetUTCDate(), 'sa', 'sa', 0,257 null, null, null, dbo.QBM_FCVElementToObjectKey1('PWODecisionHistory', 'UID_PWODecisionHistory', o.UID_PWOHelperPWO ), pwo.UID_ITShopOrgFinal from @PWOToCheck258 pwo join @PWOHelperPWO_Old o on pwo.UID_PersonWantsOrg = o.UID_PersonWantsOrg where pwo.IsReserved = 1 and o.IsToDelete = 1 and o.UID_PersonHead = pwo.UID_PersonHead259 end end update @PWOHelperPWO_Old set isToDelete = 1 from @PWOHelperPWO_Old o where IsToDelete = 0 and not exists (select top 1 1 from @PWOToCheck pwo260 where pwo.uid_personwantsorg = o.UID_PersonWantsOrg and OrderState in ('OrderProduct', 'OrderProlongate', 'OrderUnsubscribe') ) update @PWOHelperPWO_New261 set isToInsert = 1 from @PWOHelperPWO_New n where not exists (select top 1 1 from @PWOHelperPWO_Old o where isnull(o.UID_PWODecisionRule, '') = isnull262(n.UID_PWODecisionRule, '') and isnull(o.uid_personHead, '') = isnull(n.uid_personHead, '') and o.levelnumber = n.levelnumber and o.Sublevelnumber = n.Sublevelnumber263 and isnull(o.UID_QERWorkingStep, '') = isnull(n.UID_QERWorkingStep, '') and isnull(o.UID_ComplianceRule, '') = isnull(n.UID_ComplianceRule, '') and isnull264(o.UID_PersonNonCompliant, '') = isnull(n.UID_PersonNonCompliant, '') and isnull(o.UID_PWORulerOrigin, '') = isnull(n.UID_PWORulerOrigin, '') and ISNULL265(o.rulerlevel, 0) = ISNULL(n.rulerlevel, 0) and (o.isToDelete = 0 or o.UID_PWODecisionRule in ('CPL-PWODecisionRule-OC', 'CPL-PWODecisionRule-OH') and266 o.UID_ComplianceRule > ' ' ) and n.UID_PersonWantsOrg = o.UID_PersonWantsOrg ) if @SonderBehandlungException = 1 begin update @PWOHelperPWO_New set267 istoInsert = 1 from @PWOHelperPWO_New o where uid_compliancerule is null and UID_PWODecisionRule in ('CPL-PWODecisionRule-OC', 'CPL-PWODecisionRule-OH'268) and not exists (select top 1 1 from @PWOHelperPWO_New n where n.UID_PWODecisionRule = o.UID_PWODecisionRule and isnull(n.UID_QERWorkingStep, '') = isnull269(o.UID_QERWorkingStep, '') and n.levelnumber = o.levelnumber and n.UID_PersonWantsOrg = o.UID_PersonWantsOrg ) update @PWOHelperPWO_New set istoInsert270 = 0 from @PWOHelperPWO_New o where uid_compliancerule is null and UID_PWODecisionRule in ('CPL-PWODecisionRule-OC', 'CPL-PWODecisionRule-OH') and exists271 (select top 1 1 from @PWOHelperPWO_New n where n.UID_PWODecisionRule = o.UID_PWODecisionRule and isnull(n.UID_QERWorkingStep, '') = isnull(o.UID_QERWorkingStep272, '') and n.levelnumber = o.levelnumber and n.uid_compliancerule > ' ' and n.UID_PersonWantsOrg = o.UID_PersonWantsOrg ) end insert into @PWOHelperPWO_New273 (UID_PWODecisionRule, uid_personHead, UID_QERWorkingStep, levelnumber, Sublevelnumber, istoInsert , UID_PersonWantsOrg ) select 'QER-PWODecisionRule-SB'274, null, null, 0, 0, 1 , c.UID_PersonWantsOrg from @PWOToCheck c where c.UID_QERWorkingMethod is null and c.Orderstate in ('OrderProlongate', 'OrderUnsubscribe'275) and not exists (select top 1 1 from @PWOHelperPWO_New n where n.UID_PersonWantsOrg = c.UID_PersonWantsOrg and n.IstoInsert = 1 ) and not exists (select276 top 1 1 from @PWOHelperPWO_Old o where o.UID_PersonWantsOrg = c.UID_PersonWantsOrg and o.IsToDelete = 0 ) publizieren: update @PWOToCheck set IsModefiedByOthers277 = 1 from @PWOToCheck p join ( select c.UID_PersonWantsOrg, checksum_agg(checksum(concat(h.UID_PWOHelperPWO, h.Decision))) as CheckSumHelper from @PWOToCheck278 c left outer join PWOHelperPWO h with (nolock) on c.UID_PersonWantsOrg = h.UID_PersonWantsOrg group by c.UID_PersonWantsOrg ) as x on p.UID_PersonWantsOrg279 = x.UID_PersonWantsOrg where p.CheckSumHelper <> x.CheckSumHelper if @@ROWCOUNT > 0 begin declare @DBQueueElements_ModifiedHelper QBM_YDBQueueRaw insert280 into @DBQueueElements_ModifiedHelper(Object, SubObject, GenProcID) select p.UID_PersonWantsOrg, null, p.GenProcID from @PWOToCheck p exec QBM_PDBQueueInsert_Bulk281 'QER-K-ShoppingRackPWOHelperPWO' , @DBQueueElements_ModifiedHelper delete @PWOHelperPWO_Old from @PWOHelperPWO_Old o join @PWOToCheck c on o.UID_PersonWantsOrg282 = c.UID_PersonWantsOrg where c.IsModefiedByOthers = 1 delete @PWOHelperPWO_New from @PWOHelperPWO_New n join @PWOToCheck c on n.UID_PersonWantsOrg = c.UID_PersonWantsOrg283 where c.IsModefiedByOthers = 1 delete @PWOToCheck from @PWOToCheck c where c.IsModefiedByOthers = 1 end delete @DBQueueElements_CheckDecision insert284 into @DBQueueElements_CheckDecision(Object, SubObject, GenProcID) select distinct c.UID_PersonWantsOrg, '', c.GenProcid from @PWOToCheck c left outer 285join @PWOHelperPWO_New n on c.UID_PersonWantsOrg = n.UID_PersonWantsOrg left outer join @PWOHelperPWO_Old o on c.UID_PersonWantsOrg = o.UID_PersonWantsOrg286 where (c.makeEmpty = 0 and (isnull(o.IsToDelete, 0) = 1 or isnull(n.IstoInsert, 0) = 1 ) ) or n.UID_PersonWantsOrg is null exec QBM_PDBQueueInsert_Bulk287 'QER-K-ShoppingRackCheckDecision', @DBQueueElements_CheckDecision if @DebugSwitch > 0 begin print 'Vor publizieren @@PWOHelperPWO_Old' select * from @PWOHelperPWO_Old288 end declare @GenProcIDs QBM_YCursorBuffer insert into @GenProcIDs (UID1 ) select distinct c.GenProcID from @PWOHelperPWO_Old o join @PWOToCheck c on o.UID_PersonWantsOrg289 = c.UID_PersonWantsOrg where o.IsToDelete = 1 select @ElementCount = @@ROWCOUNT select @ElementIndex = @@IDENTITY - @ElementCount +1 select @ElementLast290 = @@IDENTITY while @ElementIndex <= @ElementLast begin select top 1 @GenProcIDToUse = bu.UID1 from @GenProcIDs bu where bu.ElementIndex = @ElementIndex291 exec QBM_PSessionContextSet 'GenProcID', @GenProcIDToUse delete PWOHelperPWO from PWOHelperPWO h join @PWOToCheck c on h.UID_PersonWantsOrg = c.UID_PersonWantsOrg292 and c.GenProcid = @GenProcIDToUse join @PWOHelperPWO_Old o on h.UID_PWOHelperPWO = o.UID_PWOHelperPWO where o.IsToDelete = 1 select @ElementIndex += 1293 end if exists (select top 1 1 from @PWOHelperPWO_Old o where o.isToUpdateDecision = 1 ) begin update PWOHelperPWO set Decision = o.Decision294 from PWOHelperPWO h join @PWOHelperPWO_Old o on h.UID_PWOHelperPWO = o.UID_PWOHelperPWO where o.isToUpdateDecision = 1 end update @PWOHelperPWO_New set295 UID_PrimaryKey = newid() where istoinsert = 1 if @DebugSwitch > 0 begin print 'Vor publizieren @PWOHelperPWO_New' select * from @PWOHelperPWO_New end 296declare @GenProcIDs_2 QBM_YCursorBuffer insert into @GenProcIDs_2 (UID1 ) select distinct c.GenProcID from @PWOHelperPWO_New n join @PWOToCheck c on n.UID_PersonWantsOrg297 = c.UID_PersonWantsOrg where n.IstoInsert = 1 select @ElementCount = @@ROWCOUNT select @ElementIndex = @@IDENTITY - @ElementCount +1 select @ElementLast298 = @@IDENTITY if @ElementCount > 0 begin update @PWOHelperPWO_New set NextAutomaticDecision = isnull(g.MaxDate, '2200-01-01') from @PWOHelperPWO_New b299 left outer join ( select a.UID_PersonwantsOrg, a.LevelNumber, a.Sublevelnumber, a.RulerLevel, MAX(a.NextAutomaticDecision) as MaxDate from @PWOHelperPWO_Old300 a group by a.UID_PersonwantsOrg, a.LevelNumber, a.Sublevelnumber, a.RulerLevel ) as g on b.UID_PersonwantsOrg = g.UID_PersonwantsOrg and b.LevelNumber301 = g.LevelNumber and b.Sublevelnumber = g.Sublevelnumber and b.RulerLevel = g.RulerLevel where b.IstoInsert = 1 end while @ElementIndex <= @ElementLast302 begin select top 1 @GenProcIDToUse = bu.UID1 from @GenProcIDs_2 bu where bu.ElementIndex = @ElementIndex exec QBM_PSessionContextSet 'GenProcID', @GenProcIDToUse303 insert into PWOHelperPWO (UID_PWOHelperPWO, uid_Personwantsorg, UID_PWODecisionRule, uid_personHead, levelnumber, SubLevelNumber, Decision, UID_QERWorkingStep304, UID_ComplianceRule, UID_PersonNonCompliant, UID_PWORulerOrigin , NextReminder, NextAutomaticDecision, XObjectKey , UID_PersonAdditional, UID_PersonInsteadOf305, IsFromDelegation, RulerLevel ) select n.UID_PrimaryKey, n.UID_PersonWantsOrg, n.UID_PWODecisionRule, n.UID_PersonHead , n.LevelNumber, n.Sublevelnumber306 , case when n.UID_PersonInsteadOf > ' ' then 'D' else '' end as Decision , n.UID_QERWorkingStep, n.UID_ComplianceRule, n.UID_PersonNonCompliant, n.UID_PWORulerOrigin307 , '2200-01-01', n.NextAutomaticDecision, dbo.QBM_FCVElementToObjectKey1('PWOHelperPWO', 'UID_PWOHelperPWO', n.UID_PrimaryKey) , UID_PersonAdditional, 308UID_PersonInsteadOf, IsFromDelegation, n.RulerLevel from @PWOHelperPWO_New n JOIN @PWOToCheck c on n.UID_PersonWantsOrg = c.UID_PersonWantsOrg and c.GenProcid309 = @GenProcIDToUse where n.IstoInsert = 1 and not exists (select top 1 1 from PWOHelperPWO p where p.UID_PersonWantsOrg = n.UID_PersonWantsOrg and isnull310(p.UID_PersonHead, '') = isnull(n.UID_PersonHead, '') and p.UID_PWODecisionRule = n.UID_PWODecisionRule and p.LevelNumber = n.LevelNumber and p.Sublevelnumber311 = n.Sublevelnumber and p.RulerLevel = n.RulerLevel and p.UID_QERWorkingStep = n.UID_QERWorkingStep ) select @ElementIndex += 1 end 312 if @SonderBehandlungException = 1 begin declare @GenProcIDs_3 QBM_YCursorBuffer insert into @GenProcIDs_3 (UID1 ) select distinct c.GenProcID from @PWOToCheck313 c where c.SonderlockeException = 1 select @ElementCount = @@ROWCOUNT select @ElementIndex = @@IDENTITY - @ElementCount +1 select @ElementLast = @@IDENTITY314 while @ElementIndex <= @ElementLast begin select top 1 @GenProcIDToUse = bu.UID1 from @GenProcIDs_3 bu where bu.ElementIndex = @ElementIndex exec QBM_PSessionContextSet315 'GenProcID', @GenProcIDToUse update PWOHelperPWO set decision = '+' from PWOHelperPWO h join @PWOToCheck c on h.UID_PersonWantsOrg = c.UID_PersonWantsOrg316 and c.GenProcid = @GenProcIDToUse and c.OrderState in ('OrderProduct', 'OrderProlongate', 'OrderUnsubscribe') and h.UID_PWODecisionRule in ('CPL-PWODecisionRule-OH'317) and h.LevelNumber = c.decisionlevel join @Hilfstab ht on ht.SubLevelNumber = h.SubLevelNumber and ht.isHighestSeverity = 0 and ht.UID_PersonWantsOrg318 = c.UID_PersonWantsOrg where h.Decision in ('', 'R') update PWOHelperPWO set decision = '+' from PWOHelperPWO h join @PWOToCheck c on h.UID_PersonWantsOrg319 = c.UID_PersonWantsOrg and c.GenProcid = @GenProcIDToUse and c.OrderState in ('OrderProduct', 'OrderProlongate', 'OrderUnsubscribe') and h.UID_PWODecisionRule320 in ('CPL-PWODecisionRule-OC', 'CPL-PWODecisionRule-OH') and h.LevelNumber = c.decisionlevel join @Hilfstab ht on ht.SubLevelNumber = h.SubLevelNumber 321and ht.UID_PersonWantsOrg = c.UID_PersonWantsOrg join ComplianceRule cr on ht.uid_complianceRule = cr.UID_ComplianceRule and cr.IsInActive = 0 and cr.IsWorkingCopy322 = 0 join PersonInBaseTree pin on cr.UID_NonCompliance = pin.UID_Org and pin.XOrigin > 0 and pin.UID_Person = ht.UID_PersonNonCompliant and pin.XMarkedForDeletion323 & @QBM_BitPatternXMarkedForDel_Delay = 0 and ( pin.isExceptionGranted = 1 and isnull(cr.isToGrantEver, 0) = 0 ) where h.Decision in ('', 'R') insert324 into @DBQueueElements_MakeDecisionOC (object, subobject, genprocid) select x.uid, null, @GenProcIDToUse from ( select distinct h.UID_PersonWantsOrg as325 uid from PWOHelperPWO h join @PWOToCheck c on h.UID_PersonWantsOrg = c.UID_PersonWantsOrg and c.GenProcid = @GenProcIDToUse where h.UID_PWODecisionRule326 in ('CPL-PWODecisionRule-OC') and h.Decision in ('', 'R', '+') and c.OrderState in ('OrderProduct', 'OrderProlongate', 'OrderUnsubscribe') and c.decisionlevel327 = h.levelnumber ) as x insert into @DBQueueElements_MakeDecisionOH (object, subobject, genprocid) select x.uid, null, @GenProcIDToUse from ( select328 distinct h.UID_PersonWantsOrg as uid from PWOHelperPWO h join @PWOToCheck c on h.UID_PersonWantsOrg = c.UID_PersonWantsOrg and c.GenProcid = @GenProcIDToUse329 where h.UID_PWODecisionRule in ( 'CPL-PWODecisionRule-OH') and h.Decision in ('', 'R', '+') and c.OrderState in ('OrderProduct', 'OrderProlongate', 330'OrderUnsubscribe') and c.decisionlevel = h.levelnumber ) as x select @ElementIndex += 1 end if exists (select top 1 1 from @DBQueueElements_MakeDecisionOC331 ) begin exec QBM_PDBQueueInsert_Bulk 'CPL-K-ShoppingRackMakeDecisionOC', @DBQueueElements_MakeDecisionOC end if exists (select top 1 1 from @DBQueueElements_MakeDecisionOH332 ) begin exec QBM_PDBQueueInsert_Bulk 'CPL-K-ShoppingRackMakeDecisionOH', @DBQueueElements_MakeDecisionOH end end333 declare @ElementsToFire QBM_YCursorBuffer insert into @ElementsToFire (UID1, Int1, UID2 ) select distinct c.GenProcID, c.decisionlevel, c.UID_PersonWantsOrg334 from @PWOToCheck c left outer join @PWOHelperPWO_New n on c.UID_PersonWantsOrg = n.UID_PersonWantsOrg left outer join @PWOHelperPWO_Old o on c.UID_PersonWantsOrg335 = o.UID_PersonWantsOrg where c.makeEmpty = 0 and ( n.IstoInsert = 1 or o.IsToDelete = 1 or c.IsNewDecisionLevel = 1 ) select @ElementCount = @@ROWCOUNT336 select @ElementIndex = @@IDENTITY - @ElementCount +1 select @ElementLast = @@IDENTITY while @ElementIndex <= @ElementLast begin select top 1 @GenProcIDToUse337 = bu.UID1 , @DecisionLevelToUse = bu.Int1 , @UID_PWO = bu.UID2 from @ElementsToFire bu where bu.ElementIndex = @ElementIndex exec QER_P04F128DC257D2B3C236MAIL_338 @GenProcIDToUse , @PWOHelperPWO_New , @PWOToCheck , @DecisionLevelToUse , @UID_PWO select @ElementIndex += 1 end if @SonderBehandlungException = 1339 begin update PWOHelperPWO set decision = 'R' from PWOHelperPWO h join @PWOToCheck c on h.UID_PersonWantsOrg = c.UID_PersonWantsOrg join ( select UID_PWODecisionRule340 , LevelNumber from @PWOHelperPWO_New where isToInsert = 1 and UID_PWODecisionRule in ('CPL-PWODecisionRule-OC', 'CPL-PWODecisionRule-OH') union select341 UID_PWODecisionRule , Levelnumber from @PWOHelperPWO_Old where isTodelete = 1 and UID_PWODecisionRule in ('CPL-PWODecisionRule-OC', 'CPL-PWODecisionRule-OH'342) ) as x on h.UID_PWODecisionRule = x.UID_PWODecisionRule and h.LevelNumber = x.LevelNumber where h.Decision = '' end insert into @DBQueueElements_MakeDecisionEX343 (Object, SubObject, GenProcID) select distinct c.UID_PersonWantsOrg, '', c.GenProcid from @PWOToCheck c join PWOHelperPWO h with (readpast) on c.UID_PersonWantsOrg344 = h.UID_PersonWantsOrg and c.DecisionLevel = h.LevelNumber and c.IsNewDecisionLevel = 1 join PWODecisionRule r on h.UID_PWODecisionRule = r.UID_PWODecisionRule345 and r.UID_Task = 'QER-K-ShoppingRackMakeDecisionEX' where (c.OrderState = 'OrderProduct' and (c.DecisionLevel > 0 or exists (select top 1 1 from @PWOHelperPWO_New346 n where n.UID_PrimaryKey = h.UID_PWOHelperPWO and n.istoInsert = 1 and dbo.QBM_FGIConfigparmValue('QER\ITShop\DecisionOnInsert') > ' ' ) ) ) or (c.OrderState347 in ( 'OrderProlongate' , 'OrderUnsubscribe') ) exec QBM_PDBQueueInsert_Bulk 'QER-K-ShoppingRackMakeDecisionEX', @DBQueueElements_MakeDecisionEX END TRY348 BEGIN CATCH exec QBM_PSessionErrorAdd default RAISERROR ('', 18, 1) WITH NOWAIT END CATCH ende: SET ANSI_WARNINGS on exec QBM_PSessionContextSet 'GenProcID'349, @GenProcID_R exec QBM_PSessionContextSet 'XUser', @XUser_R revert return end 350