dbo.ATT_PAttestationHelperFill
Stored ProcedureSQL_STORED_PROCEDURESandbox DB
Interpretation
- Database routine. Review parameters, called procedures, DBQueue inserts, and QBM_PJobCreate helper calls before assuming side effects.
- Object-layer bridge detected through QBM_PJobCreate helper usage.
- DBQueue relation detected. Follow the task procedure and referenced-by list for async processing.
Relations
- HOFireEvent -> AttestationHelper.DecisionRequired at line 118
- HOFireEvent -> AttestationHelper.DecisionRequired at line 143
- Single DBQueue insert -> ATT-K-AttestationCheckValid / ATT_ZAttestationCheckValid at line 118
- References QBM_PJobCreate*
- References QBM_PJobCreate_HOFireEvent*
- References QBM_PDBQueueInsert_Single
Typed Edges
- fires event AttestationHelper.DecisionRequired HOFireEvent -> AttestationHelper.DecisionRequired at line 118
- queues DBQueue task ATT_ZAttestationCheckValid at line 118 Single DBQueue insert -> ATT-K-AttestationCheckValid / ATT_ZAttestationCheckValid at line 118
- references source dbo.QBM_FCVElementToObjectKey1 source text reference
- references source dbo.QBM_FCVStringToInt source text reference
- references source dbo.QBM_FCVStringTrimLDSPrefix source text reference
- references source dbo.QBM_FGIConfigparmValue source text reference
- references source dbo.QBM_FGISessionContext source text reference
- references source dbo.QBM_FGISessionErrorRethrow source text reference
- references source dbo.QER_FCVRuleGUIDToFunctionName source text reference
- references source dbo.QER_FGIPWORulerOrigin source text reference
- references source dbo.QBM_PDBQueueInsert_Single source text reference
- references source dbo.QBM_PJobCreate source text reference
- references source dbo.QBM_PJobCreate_HOFireEvent source text reference
- references source dbo.QBM_PJobCreate_HOFireEvent_B source text reference
- references source dbo.QBM_PSessionContextSet source text reference
- references source dbo.QBM_PSessionErrorAdd source text reference
- queues DBQueue task ATT-K-AttestationCheckValid -> ATT_ZAttestationCheckValid QBM_PDBQueueInsert_Single 'ATT-K-AttestationCheckValid', @UID_AttestationCase, null, @GenProcID end if @isToDelete = 1 begin exec QBM_PSessionContextSet 'GenProcID', @GenProcID delete AttestationHelper where UID_AttestationCase = @UID_Atteā¦
References
- dbo.QBM_FCVElementToObjectKey1
- dbo.QBM_FCVStringToInt
- dbo.QBM_FCVStringTrimLDSPrefix
- dbo.QBM_FGIConfigparmValue
- dbo.QBM_FGISessionContext
- dbo.QBM_FGISessionErrorRethrow
- dbo.QER_FCVRuleGUIDToFunctionName
- dbo.QER_FGIPWORulerOrigin
- dbo.QBM_PDBQueueInsert_Single
- dbo.QBM_PJobCreate
- dbo.QBM_PJobCreate_HOFireEvent
- dbo.QBM_PJobCreate_HOFireEvent_B
- dbo.QBM_PSessionContextSet
- dbo.QBM_PSessionErrorAdd
Referenced By
Complete Source
1CREATE PROCEDURE ATT_PAttestationHelperFill(2 @UID_AttestationCase varchar(38),3 @GenProcID varchar(38),4 @isNewDecisionLevel BIT = 0,5 @CurrentLevelOnly int = 06)7 WITH8EXECUTE9AS10'dbo' AS11BEGIN12 DECLARE @SubLevelNumber int13 DECLARE @LevelNumber int14 DECLARE @LevelNumber_alt int15 DECLARE @ObjectkeyForMail varchar(138)16 DECLARE @AttestationHelper_Old QER_YPWOHelper17 DECLARE @AttestationHelper_New QER_YPWOHelper18 DECLARE @PersonAndLevel QBM_YParameterList19 DECLARE @FunctionName varchar(30)20 DECLARE @GenProcID_R varchar(38) = dbo.QBM_FGISessionContext('')21 DECLARE @XUser_R nvarchar(64) = dbo.QBM_FGISessionContext('XUser')22 DECLARE @WhereclauseForMail nvarchar(1000)23 DECLARE @SQLCmd nvarchar(max)24 DECLARE @isToInsert BIT25 DECLARE @isToDelete BIT26 DECLARE @makeEmpty BIT27 DECLARE @CurrentDecisionLevel int28 DECLARE @UID_PwoDecisionRule varchar(38)29 DECLARE @UID_QERWorkingStep varchar(38)30 DECLARE @UID_AttestationHistory varchar(38)31 DECLARE @countApproverNeeded int32 DECLARE @countApproverAvailable int33 DECLARE @ElementLast int34 DECLARE @ElementBuffer_Rules QBM_YCursorBuffer35 DECLARE @ElementBuffer_Notification QBM_YCursorBuffer36 DECLARE @ElementCount int37 DECLARE @ElementIndex int38 DECLARE @XUser nvarchar(64) = object_name(@@procid)39 DECLARE @Xdate datetime = getutcdate()40 SET XACT_ABORT OFF41 BEGIN TRY42 SELECT TOP 1 @CurrentDecisionLevel = decisionlevel43 FROM attestationCase44 WHERE45 UID_AttestationCase = @UID_AttestationCase46 SELECT @makeEmpty = 047 IF EXISTS(48 SELECT TOP 1 149 FROM AttestationCase ac50 WHERE51 ac.UID_AttestationCase = @UID_AttestationCase AND ac.isclosed = 1)52 BEGIN53 SELECT @makeEmpty = 154 END55 IF EXISTS(56 SELECT TOP 1 157 FROM AttestationCase ac58 JOIN AttestationPolicy ap59 ON ac.UID_AttestationPolicy = ap.UID_AttestationPolicy60 WHERE61 ac.UID_AttestationCase = @UID_AttestationCase AND ap.isinactive = 1)62 BEGIN63 SELECT @makeEmpty = 164 END65 IF EXISTS(66 SELECT TOP 1 167 FROM AttestationHelper68 WHERE69 UID_AttestationCase = @UID_AttestationCase AND Decision IS NULL)70 BEGIN71 UPDATE AttestationHelper72 SET Decision = ''73 WHERE74 UID_AttestationCase = @UID_AttestationCase AND Decision IS NULL75 END76 IF EXISTS(77 SELECT TOP 1 178 FROM AttestationHelper79 WHERE80 UID_AttestationCase = @UID_AttestationCase AND Decision = '-')81 BEGIN82 DELETE AttestationHelper83 WHERE84 UID_AttestationCase = @UID_AttestationCase AND Decision = '-'85 END86 INSERT INTO @AttestationHelper_Old(UID_PWODecisionRule,87 uid_personHead,88 levelnumber,89 SubLevelNumber,90 uid_QERWorkingStep,91 decision,92 UID_PersonAdditional,93 UID_PersonInsteadOf,94 IsFromDelegation,95 RulerLevel,96 UID_PWORulerOrigin,97 NextAutomaticDecision)98 SELECT99 isnull(UID_PWODecisionRule,100 ''),101 uid_personHead,102 isnull(levelnumber,103 0),104 isnull(SubLevelNumber,105 0),106 ah.uid_QERWorkingStep,107 isnull(ah.decision,108 ''),109 UID_PersonAdditional,110 UID_PersonInsteadOf,111 IsFromDelegation,112 RulerLevel,113 UID_PWORulerOrigin,114 NextAutomaticDecision115 FROM AttestationHelper ah116 WHERE117 ah.UID_AttestationCase = @UID_AttestationCase AND(@CurrentLevelOnly = 0 OR ah.LevelNumber = @CurrentDecisionLevel)118 IF @makeEmpty = 1119 BEGIN120 UPDATE @AttestationHelper_Old121 SET isToDelete = 1122 GOTO publizieren123 END124 UPDATE @AttestationHelper_Old125 SET isToDelete = 1126 FROM @AttestationHelper_Old zk127 JOIN(128 SELECT *129 FROM @AttestationHelper_Old) AS d130 ON zk.UID_PWODecisionRule = d.UID_PWODecisionRule AND zk.uid_QERWorkingStep = d.uid_QERWorkingStep AND zk.levelnumber = d.levelnumber AND zk.Sublevelnumber131 = d.Sublevelnumber132 WHERE133 zk.UID_PersonInsteadOf = d.UID_PersonHead AND d.UID_PersonInsteadOf > ' '134 DELETE @ElementBuffer_Rules135 INSERT INTO @ElementBuffer_Rules(UID1,136 UID2,137 Ident1,138 Int1,139 Int2,140 Int3)141 SELECT142 DISTINCT ws.UID_PWODecisionRule,143 ws.UID_QERWorkingStep,144 dbo.QER_FCVRuleGUIDToFunctionName(ws.UID_PWODecisionRule),145 ws.LevelNumber,146 ws.SubLevelNumber,147 ws.CountApprover148 FROM AttestationCase ac149 JOIN AttestationPolicy ap150 ON ac.uid_attestationPolicy = ap.uid_attestationPolicy151 JOIN QERWorkingStep ws152 ON ac.UID_QERWorkingMethod = ws.UID_QERWorkingMethod153 WHERE154 ac.UID_AttestationCase = @UID_AttestationCase AND(@CurrentLevelOnly = 0 OR(ac.DecisionLevel = @CurrentDecisionLevel AND ws.LevelNumber =155 @CurrentDecisionLevel))156 SELECT @ElementCount = @@ROWCOUNT157 SELECT @ElementIndex = @@IDENTITY - @ElementCount +1158 SELECT @ElementLast = @@IDENTITY159 WHILE @ElementIndex <= @ElementLast160 BEGIN161 SELECT162 TOP 1 @UID_PWODecisionRule = bu.UID1,163 @UID_QERWorkingStep = bu.UID2,164 @FunctionName = bu.Ident1,165 @LevelNumber = bu.Int1,166 @SublevelNumber = bu.Int2,167 @countApproverNeeded = bu.Int3168 FROM @ElementBuffer_Rules bu169 WHERE170 bu.ElementIndex = @ElementIndex171 IF EXISTS(172 SELECT TOP 1 1173 FROM sys.objects o174 WHERE175 o.name = @FunctionName AND o.type IN('IF', 'TF'))176 BEGIN177 SELECT178 @SQLcmd = CONCAT('179 select s.uid_person, max(s.UID_PWORulerOrigin), s.RulerLevel180 from ( select a1.uid_person, ''0'' as RulerLevel, a1.UID_PWORulerOrigin181 from dbo.'182 ,183 @FunctionName,184 ' (''' + @UID_AttestationCase,185 ''', ''',186 @uid_QERWorkingStep,187 ''') as a1188 union all189 select pio.UID_Person, ''1'' as Rulerlevel, dbo.QER_FGIPWORulerOrigin(pio.XObjectKey) as UID_PWORulerOrigin190 from QERWorkingStep s join PersonInBaseTree pio on s.UID_AERoleFallBack = pio.UID_Org191 and pio.XOrigin > 0192 where s.UID_QERWorkingStep = '''193 ,194 @UID_QERWorkingStep,195 '''196 union all 197 select pio.UID_Person, ''2'' as Rulerlevel, dbo.QER_FGIPWORulerOrigin(pio.XObjectKey) as UID_PWORulerOrigin198 from PersonInBaseTree pio 199 where pio.UID_Org = ''ATT-AEROLE-ATTESTATION-INTERVENTION''200 and pio.XOrigin > 0201 ) as s202 group by s.uid_person, s.RulerLevel203 '204 )205 DELETE @PersonAndLevel206 INSERT INTO @PersonAndLevel(Parameter1,207 Parameter2,208 Parameter3)209 EXEC sp_executesql @SQLcmd210 INSERT INTO @AttestationHelper_New(UID_PWODecisionRule,211 uid_personHead,212 uid_QERWorkingStep,213 levelnumber,214 Sublevelnumber,215 istoInsert,216 RulerLevel,217 UID_PWORulerOrigin,218 UID_PersonSubstituteSender)219 SELECT220 @uid_Pwodecisionrule,221 s.uid_person,222 @UID_QERWorkingStep,223 @levelnumber,224 @Sublevelnumber,225 0,226 dbo.QBM_FCVStringToInt(s.RulerLevel,227 0),228 max(s.UID_PWORulerOrigin) AS UID_PWORulerOrigin,229 max(isnull(s.UID_PersonSubstituteSender, ''))230 FROM(231 SELECT232 p.Parameter1 AS UID_Person,233 p.Parameter2 AS UID_PWORulerOrigin,234 p.Parameter3 AS RulerLevel,235 NULL AS UID_PersonSubstituteSender236 FROM @PersonAndLevel p237 UNION all238 SELECT239 us.UID_PersonReceiver,240 us.UID_PersonWantsOrg AS UID_PWORulerOrigin,241 p.Parameter3 AS RulerLevel,242 us.UID_PersonSender AS UID_PersonSubstituteSender243 FROM @PersonAndLevel p244 JOIN QERUniversalSubstitute us245 ON p.Parameter1 = us.UID_PersonSender246 WHERE247 us.IsCurrentlyActive = 1 AND us.UseForAttestation = 1 AND NOT EXISTS(248 SELECT TOP 1 1249 FROM @PersonAndLevel pal250 WHERE251 pal.Parameter1 = us.UID_PersonReceiver AND pal.Parameter3 = p.Parameter3)) AS s252 GROUP BY s.UID_Person,253 s.RulerLevel254 UPDATE @AttestationHelper_New255 SET UID_PWORulerOrigin = su.UID_PersonWantsOrg256 FROM @AttestationHelper_New n257 JOIN QERUniversalSubstitute su258 ON n.UID_PersonHead = su.UID_PersonReceiver AND(su.UseForHeadPerson = 1 OR su.UseForHeadOrg = 1) AND su.IsCurrentlyActive = 1259 WHERE260 n.UID_PWORulerOrigin IS NULL AND EXISTS(261 SELECT TOP 1 1262 FROM @AttestationHelper_New se263 WHERE264 se.UID_PersonHead = su.UID_PersonSender AND se.levelnumber = n.levelnumber AND se.Sublevelnumber = n.sublevelnumber)265 IF dbo.QBM_FGIConfigparmValue('QER\Attestation\PersonToAttestNoDecide') = '1'266 BEGIN267 DELETE @AttestationHelper_New268 FROM @AttestationHelper_New ah269 JOIN QERWorkingStep s270 ON ah.uid_QERWorkingStep = s.UID_QERWorkingStep AND s.IgnoreNoDecideForPerson = 0271 JOIN(272 SELECT he.UID_PersonAlsoMe AS UID_Person273 FROM(274 SELECT275 ac.ObjectKey1, ac.ObjectKey2, ac.ObjectKey3, ac.ObjectKeyBase276 FROM AttestationCase ac277 WHERE278 ac.UID_AttestationCase = @UID_AttestationCase) r unpivot(wert FOR spalte IN(ObjectKey1, ObjectKey2,279 ObjectKey3, ObjectKeyBase)) AS un280 JOIN Person p281 ON un.wert = p.XObjectKey282 JOIN QER_VPersonsAreMe he283 ON p.UID_Person = he.UID_PersonOrigin) AS weg284 ON weg.UID_Person IN(ah.uid_personHead,285 ah.UID_PersonSubstituteSender) OR(isnull(ah.UID_PersonAdditional, '') = weg.UID_Person AND ah.RulerLevel < 2) OR(isnull(ah.UID_PersonInsteadOf286 , '') = weg.UID_Person AND ah.RulerLevel < 2)287 END288 SELECT TOP 1 @countApproverAvailable = COUNT(*)289 FROM @AttestationHelper_New n290 WHERE291 n.RulerLevel = 0 AND n.uid_QERWorkingStep = @UID_QERWorkingStep AND n.levelnumber = @LevelNumber AND n.Sublevelnumber = @SubLevelNumber292 IF @countApproverAvailable >= CASE293 WHEN @countApproverNeeded < 0 THEN294 @countApproverAvailable295 WHEN @countApproverNeeded = 0 THEN296 1297 ELSE @countApproverNeeded298 END AND @countApproverAvailable > 0299 BEGIN300 DELETE @AttestationHelper_New301 FROM @AttestationHelper_New n302 WHERE303 n.RulerLevel = 1 AND n.uid_QERWorkingStep = @UID_QERWorkingStep AND n.levelnumber = @LevelNumber AND n.Sublevelnumber = @SubLevelNumber304 END305 DELETE @AttestationHelper_New306 FROM @AttestationHelper_New n307 WHERE308 n.RulerLevel = 0 AND n.uid_QERWorkingStep = @UID_QERWorkingStep AND n.levelnumber = @LevelNumber AND n.Sublevelnumber = @SubLevelNumber AND309 EXISTS(310 SELECT TOP 1 1311 FROM @AttestationHelper_New n1312 WHERE313 n1.RulerLevel = 1 AND n1.uid_QERWorkingStep = @UID_QERWorkingStep AND n1.levelnumber = @LevelNumber AND n1.Sublevelnumber = @SubLevelNumber AND314 n1.uid_personHead = n.uid_personHead)315 IF @UID_PwoDecisionRule IN(316 SELECT r.UID_PWODecisionRule317 FROM PWODecisionRule r318 WHERE319 r.UID_Task > ' ')320 BEGIN321 DELETE @AttestationHelper_New322 FROM @AttestationHelper_New n323 WHERE324 n.RulerLevel > 0 AND n.uid_QERWorkingStep = @UID_QERWorkingStep AND n.levelnumber = @LevelNumber AND n.Sublevelnumber = @SubLevelNumber325 END326 END327 SELECT @ElementIndex += 1328 END329 UPDATE @AttestationHelper_Old330 SET isToDelete = 1331 WHERE332 uid_personhead IS NULL AND isnull(UID_PWODecisionRule,333 '') NOT IN(334 SELECT UID_PWODecisionRule335 FROM pwodecisionrule336 WHERE337 UID_Task > ' ')338 DELETE @AttestationHelper_New339 WHERE340 uid_personhead IS NULL AND UID_PWODecisionRule NOT IN(341 SELECT UID_PWODecisionRule342 FROM pwodecisionrule343 WHERE344 UID_Task > ' ')345 UPDATE @AttestationHelper_new346 SET UID_PersonAdditional = o.UID_PersonAdditional,347 UID_PersonInsteadOf = o.UID_PersonInsteadOf348 FROM @AttestationHelper_new n349 JOIN @AttestationHelper_Old o350 ON n.UID_PWODecisionRule = o.UID_PWODecisionRule AND n.uid_personHead = o.uid_personHead AND n.uid_QERWorkingStep = o.uid_QERWorkingStep AND n.levelnumber351 = o.levelnumber AND n.Sublevelnumber = o.Sublevelnumber352 WHERE353 o.UID_PersonAdditional > ' ' OR o.UID_PersonInsteadOf > ' '354 INSERT INTO @AttestationHelper_New(UID_PWODecisionRule,355 uid_personHead,356 uid_QERWorkingStep,357 levelnumber,358 Sublevelnumber,359 istoInsert,360 UID_PersonAdditional,361 UID_PersonInsteadOf,362 IsFromDelegation,363 RulerLevel)364 SELECT365 DISTINCT de.UID_PWODecisionRule,366 de.UID_PersonAdditional,367 de.uid_QERWorkingStep,368 de.levelnumber,369 1,370 0,371 NULL,372 NULL,373 1,374 0375 FROM @AttestationHelper_New de376 WHERE377 de.UID_PersonAdditional > ' ' AND NOT EXISTS(378 SELECT TOP 1 1379 FROM @AttestationHelper_New n380 WHERE381 n.UID_PWODecisionRule = de.UID_PWODecisionRule AND n.uid_personHead = de.UID_PersonAdditional AND n.uid_QERWorkingStep = de.uid_QERWorkingStep AND382 n.levelnumber = de.levelnumber AND n.Sublevelnumber = 1) AND EXISTS(383 SELECT TOP 1 1384 FROM QERWorkingStep ds385 WHERE386 ds.UID_QERWorkingStep = de.uid_QERWorkingStep AND ds.IsAdditionalAllowed = 1)387 IF @@rowcount > 0388 BEGIN389 INSERT INTO @AttestationHelper_New(UID_PWODecisionRule,390 uid_personHead,391 UID_QERWorkingStep,392 levelnumber,393 Sublevelnumber,394 istoInsert,395 UID_PersonAdditional,396 UID_PersonInsteadOf,397 IsFromDelegation,398 RulerLevel,399 UID_PWORulerOrigin)400 SELECT401 DISTINCT de.UID_PWODecisionRule,402 esc.UID_Person,403 de.UID_QERWorkingStep,404 de.levelnumber,405 1,406 0,407 NULL,408 NULL,409 1,410 2,411 esc.UID_PWORulerOrigin412 FROM @AttestationHelper_New de CROSS413 JOIN(414 SELECT415 pio.UID_Person,416 dbo.QER_FGIPWORulerOrigin(pio.XObjectKey) AS UID_PWORulerOrigin417 FROM PersonInBaseTree pio418 WHERE419 pio.UID_Org = 'ATT-AEROLE-ATTESTATION-INTERVENTION' AND pio.XOrigin > 0) AS esc420 WHERE421 de.UID_PersonAdditional > ' ' AND NOT EXISTS(422 SELECT TOP 1 1423 FROM @AttestationHelper_New n424 WHERE425 n.UID_PWODecisionRule = de.UID_PWODecisionRule AND n.uid_personHead = esc.UID_Person AND n.UID_QERWorkingStep = de.UID_QERWorkingStep AND426 n.levelnumber = de.levelnumber AND n.Sublevelnumber = 1)427 END428 INSERT INTO @AttestationHelper_New(UID_PWODecisionRule,429 uid_personHead,430 uid_QERWorkingStep,431 levelnumber,432 Sublevelnumber,433 istoInsert,434 UID_PersonAdditional,435 UID_PersonInsteadOf,436 IsFromDelegation,437 RulerLevel)438 SELECT439 DISTINCT de.UID_PWODecisionRule,440 de.UID_PersonInsteadOf,441 de.uid_QERWorkingStep,442 de.levelnumber,443 0,444 0,445 NULL,446 NULL,447 1,448 0449 FROM @AttestationHelper_New de450 WHERE451 de.UID_PersonInsteadOf > ' ' AND NOT EXISTS(452 SELECT TOP 1 1453 FROM @AttestationHelper_New n454 WHERE455 n.UID_PWODecisionRule = de.UID_PWODecisionRule AND n.uid_personHead = de.UID_PersonInsteadOf AND n.uid_QERWorkingStep = de.uid_QERWorkingStep AND456 n.levelnumber = de.levelnumber AND n.Sublevelnumber = 0) AND EXISTS(457 SELECT TOP 1 1458 FROM QERWorkingStep ds459 WHERE460 ds.UID_QERWorkingStep = de.uid_QERWorkingStep AND ds.IsInsteadOfAllowed = 1)461 UPDATE @AttestationHelper_Old462 SET isToDelete = 1463 FROM @AttestationHelper_Old o464 WHERE465 (NOT EXISTS(466 SELECT TOP 1 1467 FROM @AttestationHelper_New n468 WHERE469 isnull(n.UID_PWODecisionRule, '') = isnull(o.UID_PWODecisionRule, '') AND isnull(n.uid_personHead,470 '') = isnull(o.uid_personHead, '') AND n.levelnumber = o.levelnumber AND n.Sublevelnumber = o.Sublevelnumber AND isnull(n.uid_QERWorkingStep,471 '') = isnull(o.uid_QERWorkingStep, '') AND isnull(n.UID_PWORulerOrigin, '') = isnull(o.UID_PWORulerOrigin,472 '') AND ISNULL(n.rulerlevel, 0) = ISNULL(o.rulerlevel, 0)) OR(isnull(o.uid_personHead, '') > ' ' AND NOT EXISTS(473 SELECT TOP 1 1474 FROM Person p475 WHERE476 p.UID_Person = isnull(o.uid_personHead, '') AND p.IsInActive = 0))) AND o.decision IN('',477 '-')478 IF EXISTS(479 SELECT TOP 1 1480 FROM AttestationCase481 WHERE482 UID_AttestationCase = @UID_AttestationCase AND IsReserved =1)483 BEGIN484 IF EXISTS(485 SELECT TOP 1 1486 FROM AttestationCase pwo,487 @AttestationHelper_Old o488 WHERE489 pwo.UID_AttestationCase = @UID_AttestationCase AND o.uid_personHead = pwo.UID_PersonHead AND o.isToDelete = 1)490 BEGIN491 UPDATE AttestationCase492 SET IsReserved = 0,493 XDateUpdated = @Xdate,494 XUserUpdated = @XUser495 WHERE496 UID_AttestationCase = @UID_AttestationCase497 UPDATE @AttestationHelper_Old498 SET isToDelete = 1499 WHERE500 UID_PWODecisionRule = 'ATT-PWODecisionRule-QP' OR decision = 'Q'501 SELECT @UID_AttestationHistory = NEWID()502 EXEC QBM_PSessionContextSet 'GenProcID',503 @GenProcID504 INSERT INTO AttestationHistory(DecisionType,505 IsDecisionBySystem,506 UID_AttestationHistory,507 UID_PersonHead,508 UID_AttestationCase,509 DisplayPersonHead,510 ReasonHead,511 DateHead,512 XDateInserted,513 XDateUpdated,514 XUserInserted,515 XUserUpdated,516 DecisionLevel,517 XTouched,518 XObjectKey)519 SELECT520 'RecallQuery',521 1,522 @UID_AttestationHistory,523 NULL,524 @UID_AttestationCase,525 dbo.QBM_FCVStringTrimLDSPrefix('#LDS#Automatic system approval.|'),526 dbo.QBM_FCVStringTrimLDSPrefix('#LDS#Query to Person finished due to changed deciders.|'),527 GetUTCDate(),528 GetUTCDate(),529 GetUTCDate(),530 'sa',531 'sa',532 0,533 '',534 dbo.QBM_FCVElementToObjectKey1('AttestationHistory',535 'UID_AttestationHistory',536 @UID_AttestationHistory)537 END538 END539 UPDATE @AttestationHelper_Old540 SET isToDelete = 1541 FROM @AttestationHelper_Old o542 WHERE543 NOT EXISTS(544 SELECT TOP 1 1545 FROM AttestationCase ac546 WHERE547 ac.UID_AttestationCase = @UID_AttestationCase AND isclosed = 0)548 UPDATE @AttestationHelper_New549 SET isToInsert = 1550 FROM @AttestationHelper_New n551 WHERE552 NOT EXISTS(553 SELECT TOP 1 1554 FROM @AttestationHelper_Old o555 WHERE556 o.UID_PWODecisionRule = n.UID_PWODecisionRule AND isnull(o.uid_personHead, '') = isnull(n.uid_personHead,557 '') AND o.levelnumber = n.levelnumber AND o.Sublevelnumber = n.Sublevelnumber AND isnull(o.UID_QERWorkingStep,558 '') = isnull(n.UID_QERWorkingStep, '') AND isnull(o.UID_PWORulerOrigin, '') = isnull(n.UID_PWORulerOrigin,559 '') AND ISNULL(o.rulerlevel, 0) = ISNULL(n.rulerlevel, 0) AND o.isToDelete = 0) publizieren:560 SELECT @isToInsert = 0561 SELECT @isToDelete = 0562 IF EXISTS(563 SELECT TOP 1 1564 FROM @AttestationHelper_New565 WHERE566 isToInsert = 1)567 BEGIN568 SELECT @isToInsert = 1569 END570 IF EXISTS(571 SELECT TOP 1 1572 FROM @AttestationHelper_Old573 WHERE574 isTodelete = 1)575 BEGIN576 SELECT @isToDelete = 1577 END578 IF(@isToInsert = 1 OR @isToDelete = 1) AND @makeEmpty = 0579 BEGIN580 EXEC QBM_PDBQueueInsert_Single 'ATT-K-AttestationCheckValid',581 @UID_AttestationCase,582 NULL,583 @GenProcID584 END585 IF @isToDelete = 1586 BEGIN587 EXEC QBM_PSessionContextSet 'GenProcID',588 @GenProcID589 DELETE AttestationHelper590 WHERE591 UID_AttestationCase = @UID_AttestationCase AND EXISTS(592 SELECT TOP 1 1593 FROM @AttestationHelper_Old o594 WHERE595 isnull(o.UID_PWODecisionRule, '') = isnull(AttestationHelper.UID_PWODecisionRule, '') AND isnull(o.uid_personHead,596 '') = isnull(AttestationHelper.uid_personHead, '') AND o.levelnumber = AttestationHelper.levelnumber AND o.Sublevelnumber = AttestationHelper.Sublevelnumber AND597 o.Rulerlevel = AttestationHelper.Rulerlevel AND isnull(o.UID_PWORulerOrigin, '') = isnull(AttestationHelper.UID_PWORulerOrigin,598 '') AND o.isToDelete = 1)599 END600 IF @isToInsert = 1601 BEGIN602 UPDATE @AttestationHelper_New603 SET UID_PrimaryKey = newid()604 WHERE605 istoinsert = 1606 UPDATE @AttestationHelper_new607 SET NextAutomaticDecision = isnull(g.MaxDate,608 '2200-01-01')609 FROM @AttestationHelper_new b610 LEFT611 OUTER612 JOIN(613 SELECT614 a.LevelNumber,615 a.Sublevelnumber,616 a.RulerLevel,617 MAX(a.NextAutomaticDecision) AS MaxDate618 FROM @AttestationHelper_Old a619 GROUP BY a.LevelNumber,620 a.Sublevelnumber,621 a.RulerLevel) AS g622 ON b.LevelNumber = g.LevelNumber AND b.Sublevelnumber = g.Sublevelnumber AND b.RulerLevel = g.RulerLevel623 WHERE624 b.IstoInsert = 1625 EXEC QBM_PSessionContextSet 'GenProcID',626 @GenProcID627 INSERT INTO AttestationHelper(UID_AttestationHelper,628 UID_AttestationCase,629 UID_PWODecisionRule,630 uid_personHead,631 levelnumber,632 SubLevelNumber,633 Decision,634 UID_QERWorkingStep,635 NextReminder,636 NextAutomaticDecision,637 XObjectKey,638 UID_PersonAdditional,639 UID_PersonInsteadOf,640 IsFromDelegation,641 RulerLevel,642 UID_PWORulerOrigin)643 SELECT644 UID_PrimaryKey,645 @UID_AttestationCase,646 UID_PWODecisionRule,647 uid_personHead,648 levelnumber,649 SubLevelNumber,650 CASE651 WHEN n.UID_PersonInsteadOf > ' ' THEN652 'D'653 ELSE ''654 END AS Decision,655 UID_QERWorkingStep,656 '2200-01-01',657 n.NextAutomaticDecision,658 dbo.QBM_FCVElementToObjectKey1('AttestationHelper',659 'UID_AttestationHelper',660 UID_PrimaryKey),661 UID_PersonAdditional,662 UID_PersonInsteadOf,663 IsFromDelegation,664 n.RulerLevel,665 UID_PWORulerOrigin666 FROM @AttestationHelper_New n667 WHERE668 istoinsert = 1669 END670 IF(@isToInsert = 1 OR @isToDelete = 1 OR @isNewDecisionLevel = 1) AND @makeEmpty = 0671 BEGIN672 DELETE @ElementBuffer_Notification673 INSERT INTO @ElementBuffer_Notification(ObjectKey1)674 SELECT h.XObjectKey675 FROM @AttestationHelper_New n676 JOIN AttestationHelper h677 ON n.UID_PrimaryKey = h.uid_AttestationHelper AND h.decision = ''678 JOIN Attestationcase pwo679 ON h.uid_Attestationcase = pwo.uid_Attestationcase AND h.levelnumber = pwo.decisionlevel680 JOIN QERWorkingStep ws681 ON h.UID_QERWorkingStep = ws.UID_QERWorkingStep AND ws.UID_DialogRichMailInsert > ' '682 JOIN pwodecisionrule r683 ON ws.UID_PWODecisionRule = r.UID_PWODecisionRule AND r.UID_Task IS NULL684 JOIN person p685 ON h.uid_personhead = p.uid_person AND p.defaultemailaddress > ' '686 WHERE687 n.istoinsert = 1 AND h.RulerLevel < 2688 UNION689 SELECT h.XObjectKey690 FROM AttestationHelper h691 JOIN Attestationcase pwo692 ON h.uid_Attestationcase = @UID_AttestationCase AND pwo.uid_Attestationcase = @UID_AttestationCase AND h.levelnumber = pwo.decisionlevel AND h.decision693 = ''694 JOIN QERWorkingStep ws695 ON h.UID_QERWorkingStep = ws.UID_QERWorkingStep AND ws.UID_DialogRichMailInsert > ' '696 JOIN pwodecisionrule r697 ON ws.UID_PWODecisionRule = r.UID_PWODecisionRule AND r.UID_Task IS NULL698 JOIN person p699 ON h.uid_personhead = p.uid_person AND p.defaultemailaddress > ' '700 WHERE701 @isNewDecisionLevel = 1 AND h.RulerLevel < 2702 SELECT @ElementCount = @@ROWCOUNT703 SELECT @ElementIndex = @@IDENTITY - @ElementCount +1704 SELECT @ElementLast = @@IDENTITY705 WHILE @ElementIndex <= @ElementLast706 BEGIN707 SELECT TOP 1 @ObjectkeyForMail = bu.ObjectKey1708 FROM @ElementBuffer_Notification bu709 WHERE710 bu.ElementIndex = @ElementIndex711 SELECT712 @WhereclauseForMail = N 'XObjectKey = ''' + @ObjectkeyForMail + N '''' + N ' and exists (select top 1 1 from Attestationcase where uid_Attestationcase = '''713 + @uid_Attestationcase + ''' and decisionlevel = ' + str(@CurrentDecisionLevel) + ' )'714 EXEC QBM_PJobCreate_HOFireEvent_B 'AttestationHelper',715 @WhereclauseForMail,716 'DecisionRequired',717 @GenProcID,718 @AdditionalObjectKeysAffected = DEFAULT,719 @checkForExisting = 1,720 @priority = 10,721 @BasisObjectKey = @ObjectkeyForMail722 SELECT @ElementIndex += 1723 END724 END725 END TRY726 BEGIN CATCH727 EXEC QBM_PSessionErrorAdd DEFAULT728 DECLARE @Rethrow varchar(1000) = dbo.QBM_FGISessionErrorRethrow()729 RAISERROR(@Rethrow,730 18,731 1)732 WITH NOWAIT733 END CATCH734 ende:735 EXEC QBM_PSessionContextSet 'GenProcID',736 @GenProcID_R737 EXEC QBM_PSessionContextSet 'XUser',738 @XUser_R revert739 RETURN740END
Open raw exported source
1 create procedure ATT_PAttestationHelperFill (@UID_AttestationCase varchar(38) , @GenProcID varchar(38) , @isNewDecisionLevel bit = 0 , @CurrentLevelOnly2 int = 0 ) with execute as 'dbo' as begin declare @SubLevelNumber int declare @LevelNumber int declare @LevelNumber_alt int declare @ObjectkeyForMail 3varchar(138) declare @AttestationHelper_Old QER_YPWOHelper declare @AttestationHelper_New QER_YPWOHelper declare @PersonAndLevel QBM_YParameterList 4 declare @FunctionName varchar(30) declare @GenProcID_R varchar(38) = dbo.QBM_FGISessionContext('') declare @XUser_R nvarchar(64) = dbo.QBM_FGISessionContext5('XUser') declare @WhereclauseForMail nvarchar(1000) declare @SQLCmd nvarchar(max) declare @isToInsert bit declare @isToDelete bit declare @makeEmpty bit6 declare @CurrentDecisionLevel int declare @UID_PwoDecisionRule varchar(38) declare @UID_QERWorkingStep varchar(38) declare @UID_AttestationHistory varchar7(38) declare @countApproverNeeded int declare @countApproverAvailable int declare @ElementLast int declare @ElementBuffer_Rules QBM_YCursorBuffer declare8 @ElementBuffer_Notification QBM_YCursorBuffer declare @ElementCount int declare @ElementIndex int declare @XUser nvarchar(64) = object_name(@@procid) 9declare @Xdate datetime = getutcdate() SET XACT_ABORT OFF BEGIN TRY select top 1 @CurrentDecisionLevel = decisionlevel from attestationCase where UID_AttestationCase10 = @UID_AttestationCase select @makeEmpty = 0 if exists (select top 1 1 from AttestationCase ac where ac.UID_AttestationCase = @UID_AttestationCase and11 ac.isclosed = 1 ) begin select @makeEmpty = 1 end if exists (select top 1 1 from AttestationCase ac join AttestationPolicy ap on ac.UID_AttestationPolicy12 = ap.UID_AttestationPolicy where ac.UID_AttestationCase = @UID_AttestationCase and ap.isinactive = 1 ) begin select @makeEmpty = 1 end if exists (select13 top 1 1 from AttestationHelper where UID_AttestationCase = @UID_AttestationCase and Decision is null ) begin update AttestationHelper set Decision = ''14 where UID_AttestationCase = @UID_AttestationCase and Decision is null end if exists (select top 1 1 from AttestationHelper where UID_AttestationCase15 = @UID_AttestationCase and Decision = '-' ) begin delete AttestationHelper where UID_AttestationCase = @UID_AttestationCase and Decision = '-' end insert16 into @AttestationHelper_Old (UID_PWODecisionRule, uid_personHead, levelnumber, SubLevelNumber, uid_QERWorkingStep, decision , UID_PersonAdditional, UID_PersonInsteadOf17, IsFromDelegation, RulerLevel , UID_PWORulerOrigin , NextAutomaticDecision ) select isnull(UID_PWODecisionRule, ''), uid_personHead, isnull(levelnumber18,0), isnull(SubLevelNumber,0), ah.uid_QERWorkingStep, isnull(ah.decision,'') , UID_PersonAdditional, UID_PersonInsteadOf, IsFromDelegation, RulerLevel 19, UID_PWORulerOrigin , NextAutomaticDecision from AttestationHelper ah where ah.UID_AttestationCase = @UID_AttestationCase and (@CurrentLevelOnly = 0 20or ah.LevelNumber = @CurrentDecisionLevel ) if @makeEmpty = 1 begin update @AttestationHelper_Old set isToDelete = 1 goto publizieren end Update @AttestationHelper_Old21 set isToDelete = 1 from @AttestationHelper_Old zk join (select * from @AttestationHelper_Old ) as d on zk.UID_PWODecisionRule = d.UID_PWODecisionRule 22and zk.uid_QERWorkingStep = d.uid_QERWorkingStep and zk.levelnumber = d.levelnumber and zk.Sublevelnumber = d.Sublevelnumber where zk.UID_PersonInsteadOf23 = d.UID_PersonHead and d.UID_PersonInsteadOf > ' ' delete @ElementBuffer_Rules insert into @ElementBuffer_Rules ( UID1 , UID2 , Ident1 , Int1 24, Int2 , Int3 ) select distinct ws.UID_PWODecisionRule, ws.UID_QERWorkingStep , dbo.QER_FCVRuleGUIDToFunctionName(ws.UID_PWODecisionRule) , ws.LevelNumber25 , ws.SubLevelNumber , ws.CountApprover from AttestationCase ac join AttestationPolicy ap on ac.uid_attestationPolicy = ap.uid_attestationPolicy join QERWorkingStep26 ws on ac.UID_QERWorkingMethod = ws.UID_QERWorkingMethod where ac.UID_AttestationCase = @UID_AttestationCase and (@CurrentLevelOnly = 0 or ( ac.DecisionLevel27 = @CurrentDecisionLevel and ws.LevelNumber = @CurrentDecisionLevel ) ) select @ElementCount = @@ROWCOUNT select @ElementIndex = @@IDENTITY - @ElementCount28 +1 select @ElementLast = @@IDENTITY while @ElementIndex <= @ElementLast begin select top 1 @UID_PWODecisionRule = bu.UID1 , @UID_QERWorkingStep = bu.UID229 , @FunctionName = bu.Ident1 , @LevelNumber = bu.Int1 , @SublevelNumber = bu.Int2 , @countApproverNeeded = bu.Int3 from @ElementBuffer_Rules bu where30 bu.ElementIndex = @ElementIndex if exists (select top 1 1 from sys.objects o where o.name = @FunctionName and o.type in ('IF' , 'TF' ) ) begin select31 @SQLcmd = concat('32 select s.uid_person, max(s.UID_PWORulerOrigin), s.RulerLevel33 from ( select a1.uid_person, ''0'' as RulerLevel, a1.UID_PWORulerOrigin34 from dbo.'35 , @FunctionName , ' (''' + @UID_AttestationCase , ''', ''' , @uid_QERWorkingStep , ''') as a136 union all37 select pio.UID_Person, ''1'' as Rulerlevel, dbo.QER_FGIPWORulerOrigin(pio.XObjectKey) as UID_PWORulerOrigin38 from QERWorkingStep s join PersonInBaseTree pio on s.UID_AERoleFallBack = pio.UID_Org39 and pio.XOrigin > 040 where s.UID_QERWorkingStep = '''41 , @UID_QERWorkingStep , '''42 union all 43 select pio.UID_Person, ''2'' as Rulerlevel, dbo.QER_FGIPWORulerOrigin(pio.XObjectKey) as UID_PWORulerOrigin44 from PersonInBaseTree pio 45 where pio.UID_Org = ''ATT-AEROLE-ATTESTATION-INTERVENTION''46 and pio.XOrigin > 047 ) as s48 group by s.uid_person, s.RulerLevel49 '50 ) delete @PersonAndLevel insert into @PersonAndLevel (Parameter1, Parameter2, Parameter3) exec sp_executesql @SQLcmd insert into @AttestationHelper_New51 (UID_PWODecisionRule, uid_personHead, uid_QERWorkingStep , levelnumber, Sublevelnumber, istoInsert, RulerLevel , UID_PWORulerOrigin, UID_PersonSubstituteSender52 ) select @uid_Pwodecisionrule , s.uid_person, @UID_QERWorkingStep , @levelnumber, @Sublevelnumber, 0, dbo.QBM_FCVStringToInt( s.RulerLevel, 0) , max(s.UID_PWORulerOrigin53) as UID_PWORulerOrigin, max(isnull(s.UID_PersonSubstituteSender, '')) from ( select p.Parameter1 as UID_Person, p.Parameter2 as UID_PWORulerOrigin, p.Parameter354 as RulerLevel, null as UID_PersonSubstituteSender from @PersonAndLevel p union all select us.UID_PersonReceiver, us.UID_PersonWantsOrg as UID_PWORulerOrigin55, p.Parameter3 as RulerLevel , us.UID_PersonSender as UID_PersonSubstituteSender from @PersonAndLevel p join QERUniversalSubstitute us on p.Parameter1 56= us.UID_PersonSender where us.IsCurrentlyActive = 1 and us.UseForAttestation = 1 and not exists (select top 1 1 from @PersonAndLevel pal where pal.Parameter157 = us.UID_PersonReceiver and pal.Parameter3 = p.Parameter3) ) as s group by s.UID_Person, s.RulerLevel update @AttestationHelper_New set UID_PWORulerOrigin58 = su.UID_PersonWantsOrg from @AttestationHelper_New n join QERUniversalSubstitute su on n.UID_PersonHead = su.UID_PersonReceiver and (su.UseForHeadPerson59 = 1 or su.UseForHeadOrg = 1) and su.IsCurrentlyActive = 1 where n.UID_PWORulerOrigin is null and exists (select top 1 1 from @AttestationHelper_New se60 where se.UID_PersonHead = su.UID_PersonSender and se.levelnumber = n.levelnumber and se.Sublevelnumber = n.sublevelnumber ) if dbo.QBM_FGIConfigparmValue61('QER\Attestation\PersonToAttestNoDecide') = '1' begin delete @AttestationHelper_New from @AttestationHelper_New ah join QERWorkingStep s on ah.uid_QERWorkingStep62 = s.UID_QERWorkingStep and s.IgnoreNoDecideForPerson = 0 join (select he.UID_PersonAlsoMe as UID_Person from ( select ac.ObjectKey1, ac.ObjectKey2, 63ac.ObjectKey3, ac.ObjectKeyBase from AttestationCase ac where ac.UID_AttestationCase = @UID_AttestationCase ) r unpivot ( wert for spalte in (ObjectKey164, ObjectKey2, ObjectKey3, ObjectKeyBase) ) as un join Person p on un.wert = p.XObjectKey join QER_VPersonsAreMe he on p.UID_Person = he.UID_PersonOrigin65 ) as weg on weg.UID_Person in (ah.uid_personHead , ah.UID_PersonSubstituteSender) or (isnull(ah.UID_PersonAdditional , '') = weg.UID_Person and ah.RulerLevel66 < 2 ) or (isnull(ah.UID_PersonInsteadOf , '') = weg.UID_Person and ah.RulerLevel < 2 ) end select top 1 @countApproverAvailable = COUNT(*) from @AttestationHelper_New67 n where n.RulerLevel = 0 and n.uid_QERWorkingStep = @UID_QERWorkingStep and n.levelnumber = @LevelNumber and n.Sublevelnumber = @SubLevelNumber if @countApproverAvailable68 >= case when @countApproverNeeded < 0 then @countApproverAvailable when @countApproverNeeded = 0 then 1 else @countApproverNeeded end and @countApproverAvailable69 > 0 begin delete @AttestationHelper_New from @AttestationHelper_New n where n.RulerLevel = 1 and n.uid_QERWorkingStep = @UID_QERWorkingStep and n.levelnumber70 = @LevelNumber and n.Sublevelnumber = @SubLevelNumber end delete @AttestationHelper_New from @AttestationHelper_New n where n.RulerLevel = 0 and n.uid_QERWorkingStep71 = @UID_QERWorkingStep and n.levelnumber = @LevelNumber and n.Sublevelnumber = @SubLevelNumber and exists (select top 1 1 from @AttestationHelper_New n172 where n1.RulerLevel = 1 and n1.uid_QERWorkingStep = @UID_QERWorkingStep and n1.levelnumber = @LevelNumber and n1.Sublevelnumber = @SubLevelNumber and 73n1.uid_personHead = n.uid_personHead ) if @UID_PwoDecisionRule in (select r.UID_PWODecisionRule from PWODecisionRule r where r.UID_Task > ' ' ) begin74 delete @AttestationHelper_New from @AttestationHelper_New n where n.RulerLevel > 0 and n.uid_QERWorkingStep = @UID_QERWorkingStep and n.levelnumber =75 @LevelNumber and n.Sublevelnumber = @SubLevelNumber end end select @ElementIndex += 1 end update @AttestationHelper_Old set isToDelete = 1 where 76uid_personhead is null and isnull(UID_PWODecisionRule, '') not in (select UID_PWODecisionRule from pwodecisionrule where UID_Task > ' ' ) delete @AttestationHelper_New77 where uid_personhead is null and UID_PWODecisionRule not in (select UID_PWODecisionRule from pwodecisionrule where UID_Task > ' ' ) update @AttestationHelper_new78 set UID_PersonAdditional = o.UID_PersonAdditional , UID_PersonInsteadOf = o.UID_PersonInsteadOf from @AttestationHelper_new n join @AttestationHelper_Old79 o on n.UID_PWODecisionRule = o.UID_PWODecisionRule and n.uid_personHead = o.uid_personHead and n.uid_QERWorkingStep = o.uid_QERWorkingStep and n.levelnumber80 = o.levelnumber and n.Sublevelnumber = o.Sublevelnumber where o.UID_PersonAdditional > ' ' or o.UID_PersonInsteadOf > ' ' insert into @AttestationHelper_New81 (UID_PWODecisionRule, uid_personHead, uid_QERWorkingStep, levelnumber, Sublevelnumber, istoInsert , UID_PersonAdditional, UID_PersonInsteadOf, IsFromDelegation82, RulerLevel ) select distinct de.UID_PWODecisionRule, de.UID_PersonAdditional, de.uid_QERWorkingStep, de.levelnumber, 1 , 0, null,null, 1, 0 from @AttestationHelper_New83 de where de.UID_PersonAdditional > ' ' and not exists (select top 1 1 from @AttestationHelper_New n where n.UID_PWODecisionRule = de.UID_PWODecisionRule84 and n.uid_personHead = de.UID_PersonAdditional and n.uid_QERWorkingStep = de.uid_QERWorkingStep and n.levelnumber = de.levelnumber and n.Sublevelnumber85 = 1 ) and exists (select top 1 1 from QERWorkingStep ds where ds.UID_QERWorkingStep = de.uid_QERWorkingStep and ds.IsAdditionalAllowed = 1 ) if @@rowcount86 > 0 begin insert into @AttestationHelper_New (UID_PWODecisionRule, uid_personHead, UID_QERWorkingStep, levelnumber, Sublevelnumber, istoInsert , UID_PersonAdditional87, UID_PersonInsteadOf, IsFromDelegation, RulerLevel, UID_PWORulerOrigin ) select distinct de.UID_PWODecisionRule, esc.UID_Person, de.UID_QERWorkingStep88, de.levelnumber, 1 , 0, null,null, 1, 2 , esc.UID_PWORulerOrigin from @AttestationHelper_New de cross join ( select pio.UID_Person, dbo.QER_FGIPWORulerOrigin89(pio.XObjectKey) as UID_PWORulerOrigin from PersonInBaseTree pio where pio.UID_Org = 'ATT-AEROLE-ATTESTATION-INTERVENTION' and pio.XOrigin > 0 ) as esc90 where de.UID_PersonAdditional > ' ' and not exists (select top 1 1 from @AttestationHelper_New n where n.UID_PWODecisionRule = de.UID_PWODecisionRule91 and n.uid_personHead = esc.UID_Person and n.UID_QERWorkingStep = de.UID_QERWorkingStep and n.levelnumber = de.levelnumber and n.Sublevelnumber = 1 ) end92 insert into @AttestationHelper_New (UID_PWODecisionRule, uid_personHead, uid_QERWorkingStep, levelnumber, Sublevelnumber, istoInsert , UID_PersonAdditional93, UID_PersonInsteadOf, IsFromDelegation, RulerLevel ) select distinct de.UID_PWODecisionRule, de.UID_PersonInsteadOf, de.uid_QERWorkingStep, de.levelnumber94, 0 , 0, null,null, 1, 0 from @AttestationHelper_New de where de.UID_PersonInsteadOf > ' ' and not exists (select top 1 1 from @AttestationHelper_New95 n where n.UID_PWODecisionRule = de.UID_PWODecisionRule and n.uid_personHead = de.UID_PersonInsteadOf and n.uid_QERWorkingStep = de.uid_QERWorkingStep 96and n.levelnumber = de.levelnumber and n.Sublevelnumber = 0 ) and exists (select top 1 1 from QERWorkingStep ds where ds.UID_QERWorkingStep = de.uid_QERWorkingStep97 and ds.IsInsteadOfAllowed = 1 ) update @AttestationHelper_Old set isToDelete = 1 from @AttestationHelper_Old o where (Not exists (select top 1 1 from98 @AttestationHelper_New n where isnull(n.UID_PWODecisionRule, '') = isnull(o.UID_PWODecisionRule, '') and isnull(n.uid_personHead, '') = isnull(o.uid_personHead99, '') and n.levelnumber = o.levelnumber and n.Sublevelnumber = o.Sublevelnumber and isnull(n.uid_QERWorkingStep, '') = isnull(o.uid_QERWorkingStep, '')100 and isnull(n.UID_PWORulerOrigin, '') = isnull(o.UID_PWORulerOrigin, '') and ISNULL(n.rulerlevel, 0) = ISNULL(o.rulerlevel, 0) ) or ( isnull(o.uid_personHead101, '') > ' ' and not exists ( select top 1 1 from Person p where p.UID_Person = isnull(o.uid_personHead, '') and p.IsInActive = 0 ) ) ) and o.decision in102( '', '-') if exists (select top 1 1 from AttestationCase where UID_AttestationCase = @UID_AttestationCase and IsReserved =1 ) begin if exists (select103 top 1 1 from AttestationCase pwo , @AttestationHelper_Old o where pwo.UID_AttestationCase = @UID_AttestationCase and o.uid_personHead = pwo.UID_PersonHead104 and o.isToDelete = 1 ) begin update AttestationCase set IsReserved = 0 , XDateUpdated = @Xdate , XUserUpdated = @XUser where UID_AttestationCase = @UID_AttestationCase105 update @AttestationHelper_Old set isToDelete = 1 where UID_PWODecisionRule = 'ATT-PWODecisionRule-QP' or decision = 'Q' select @UID_AttestationHistory106 = NEWID() exec QBM_PSessionContextSet 'GenProcID', @GenProcID insert into AttestationHistory (DecisionType, IsDecisionBySystem, UID_AttestationHistory107, UID_PersonHead, UID_AttestationCase, DisplayPersonHead, ReasonHead, DateHead, XDateInserted, XDateUpdated, XUserInserted, XUserUpdated, DecisionLevel108, XTouched, XObjectKey) select 'RecallQuery', 1, @UID_AttestationHistory, null, @UID_AttestationCase, dbo.QBM_FCVStringTrimLDSPrefix('#LDS#Automatic system approval.|'109) , dbo.QBM_FCVStringTrimLDSPrefix('#LDS#Query to Person finished due to changed deciders.|'), GetUTCDate(), GetUTCDate(), GetUTCDate(), 'sa', 'sa', 0,110 '', dbo.QBM_FCVElementToObjectKey1('AttestationHistory', 'UID_AttestationHistory', @UID_AttestationHistory) end end update @AttestationHelper_Old set111 isToDelete = 1 from @AttestationHelper_Old o where Not exists (select top 1 1 from AttestationCase ac where ac.UID_AttestationCase = @UID_AttestationCase112 and isclosed = 0 ) update @AttestationHelper_New set isToInsert = 1 from @AttestationHelper_New n where Not exists (select top 1 1 from @AttestationHelper_Old113 o where o.UID_PWODecisionRule = n.UID_PWODecisionRule and isnull(o.uid_personHead, '') = isnull(n.uid_personHead, '') and o.levelnumber = n.levelnumber114 and o.Sublevelnumber = n.Sublevelnumber and isnull(o.UID_QERWorkingStep, '') = isnull(n.UID_QERWorkingStep, '') and isnull(o.UID_PWORulerOrigin, '') =115 isnull(n.UID_PWORulerOrigin, '') and ISNULL(o.rulerlevel, 0) = ISNULL(n.rulerlevel, 0) and o.isToDelete = 0 ) publizieren: select @isToInsert = 0 select116 @isToDelete = 0 if exists (select top 1 1 from @AttestationHelper_New where isToInsert = 1 ) begin select @isToInsert = 1 end if exists (select top 1 1171 from @AttestationHelper_Old where isTodelete = 1 ) begin select @isToDelete = 1 end if ( @isToInsert = 1 or @isToDelete = 1 ) and @makeEmpty = 0 begin118 exec QBM_PDBQueueInsert_Single 'ATT-K-AttestationCheckValid', @UID_AttestationCase, null, @GenProcID end if @isToDelete = 1 begin exec QBM_PSessionContextSet119 'GenProcID', @GenProcID delete AttestationHelper where UID_AttestationCase = @UID_AttestationCase and exists (select top 1 1 from @AttestationHelper_Old120 o where isnull(o.UID_PWODecisionRule, '') = isnull(AttestationHelper.UID_PWODecisionRule, '') and isnull(o.uid_personHead, '') = isnull(AttestationHelper.uid_personHead121, '') and o.levelnumber = AttestationHelper.levelnumber and o.Sublevelnumber = AttestationHelper.Sublevelnumber and o.Rulerlevel = AttestationHelper.Rulerlevel122 and isnull(o.UID_PWORulerOrigin, '') = isnull(AttestationHelper.UID_PWORulerOrigin, '') and o.isToDelete = 1 ) end if @isToInsert = 1 begin update @AttestationHelper_New123 set UID_PrimaryKey = newid() where istoinsert = 1 update @AttestationHelper_new set NextAutomaticDecision = isnull(g.MaxDate, '2200-01-01') from @AttestationHelper_new124 b left outer join ( select a.LevelNumber, a.Sublevelnumber, a.RulerLevel, MAX(a.NextAutomaticDecision) as MaxDate from @AttestationHelper_Old a group125 by a.LevelNumber, a.Sublevelnumber, a.RulerLevel ) as g on b.LevelNumber = g.LevelNumber and b.Sublevelnumber = g.Sublevelnumber and b.RulerLevel = 126g.RulerLevel where b.IstoInsert = 1 exec QBM_PSessionContextSet 'GenProcID', @GenProcID insert into AttestationHelper (UID_AttestationHelper, UID_AttestationCase127, UID_PWODecisionRule, uid_personHead, levelnumber, SubLevelNumber, Decision, UID_QERWorkingStep , NextReminder, NextAutomaticDecision, XObjectKey , UID_PersonAdditional128, UID_PersonInsteadOf, IsFromDelegation, RulerLevel , UID_PWORulerOrigin ) select UID_PrimaryKey, @UID_AttestationCase, UID_PWODecisionRule, uid_personHead129 , levelnumber, SubLevelNumber , case when n.UID_PersonInsteadOf > ' ' then 'D' else '' end as Decision , UID_QERWorkingStep , '2200-01-01', n.NextAutomaticDecision130, dbo.QBM_FCVElementToObjectKey1('AttestationHelper', 'UID_AttestationHelper', UID_PrimaryKey) , UID_PersonAdditional, UID_PersonInsteadOf, IsFromDelegation131, n.RulerLevel , UID_PWORulerOrigin from @AttestationHelper_New n where istoinsert = 1 end if (@isToInsert = 1 or @isToDelete = 1 or @isNewDecisionLevel132 = 1) and @makeEmpty = 0 begin delete @ElementBuffer_Notification insert into @ElementBuffer_Notification (ObjectKey1) select h.XObjectKey from @AttestationHelper_New133 n join AttestationHelper h on n.UID_PrimaryKey = h.uid_AttestationHelper and h.decision = '' join Attestationcase pwo on h.uid_Attestationcase = pwo.uid_Attestationcase134 and h.levelnumber = pwo.decisionlevel join QERWorkingStep ws on h.UID_QERWorkingStep = ws.UID_QERWorkingStep and ws.UID_DialogRichMailInsert > ' ' join135 pwodecisionrule r on ws.UID_PWODecisionRule = r.UID_PWODecisionRule and r.UID_Task is null join person p on h.uid_personhead = p.uid_person and p.defaultemailaddress136 > ' ' where n.istoinsert = 1 and h.RulerLevel < 2 union select h.XObjectKey from AttestationHelper h join Attestationcase pwo on h.uid_Attestationcase137 = @UID_AttestationCase and pwo.uid_Attestationcase = @UID_AttestationCase and h.levelnumber = pwo.decisionlevel and h.decision = '' join QERWorkingStep138 ws on h.UID_QERWorkingStep = ws.UID_QERWorkingStep and ws.UID_DialogRichMailInsert > ' ' join pwodecisionrule r on ws.UID_PWODecisionRule = r.UID_PWODecisionRule139 and r.UID_Task is null join person p on h.uid_personhead = p.uid_person and p.defaultemailaddress > ' ' where @isNewDecisionLevel = 1 and h.RulerLevel140 < 2 select @ElementCount = @@ROWCOUNT select @ElementIndex = @@IDENTITY - @ElementCount +1 select @ElementLast = @@IDENTITY while @ElementIndex <= @ElementLast141 begin select top 1 @ObjectkeyForMail = bu.ObjectKey1 from @ElementBuffer_Notification bu where bu.ElementIndex = @ElementIndex select @WhereclauseForMail142 = N'XObjectKey = ''' + @ObjectkeyForMail + N'''' + N' and exists (select top 1 1 from Attestationcase where uid_Attestationcase = ''' + @uid_Attestationcase143 + ''' and decisionlevel = ' + str(@CurrentDecisionLevel) + ' )' exec QBM_PJobCreate_HOFireEvent_B 'AttestationHelper', @WhereclauseForMail, 'DecisionRequired'144, @GenProcID , @AdditionalObjectKeysAffected = DEFAULT , @checkForExisting = 1 , @priority = 10 , @BasisObjectKey = @ObjectkeyForMail select @ElementIndex145 += 1 end end END TRY BEGIN CATCH exec QBM_PSessionErrorAdd default declare @Rethrow varchar(1000) = dbo.QBM_FGISessionErrorRethrow() RAISERROR (@Rethrow146, 18, 1) WITH NOWAIT END CATCH ende: exec QBM_PSessionContextSet 'GenProcID', @GenProcID_R exec QBM_PSessionContextSet 'XUser', @XUser_R revert return147 end 148