41 lines
1.4 KiB
PL/PgSQL
41 lines
1.4 KiB
PL/PgSQL
CREATE OR REPLACE PROCEDURE public."Hr_S_TrainingSync"(
|
||
p_TrainingId uuid,
|
||
p_UserId uuid DEFAULT NULL,
|
||
p_ActorId uuid DEFAULT NULL
|
||
)
|
||
LANGUAGE plpgsql
|
||
AS $$
|
||
DECLARE
|
||
v_TenantId uuid;
|
||
v_StartDate date;
|
||
v_EndDate date;
|
||
v_Participant uuid;
|
||
v_PlanId uuid;
|
||
BEGIN
|
||
-- Eğitim ya da katılımcı kaydından sonra çalışır (p_UserId boşsa eğitimin bütün katılımcıları):
|
||
-- "Katıldı" işaretli katılımcının eğitim günleri puantajda Eğitim olur (devamsız yazılmaz), bağlı
|
||
-- gelişim aksiyonu tamamlanır. Silinen katılımcı/eğitim ve değişen tarih için eski günleri
|
||
-- puantaj hesabı kendisi düzeltir.
|
||
SELECT "TenantId", "StartDate", "EndDate" INTO v_TenantId, v_StartDate, v_EndDate
|
||
FROM "Hr_T_Training"
|
||
WHERE "Id" = p_TrainingId;
|
||
|
||
IF v_StartDate IS NULL THEN
|
||
RETURN;
|
||
END IF;
|
||
|
||
FOR v_Participant IN
|
||
SELECT DISTINCT "UserId" FROM "Hr_T_TrainingParticipant"
|
||
WHERE "TrainingId" = p_TrainingId AND (p_UserId IS NULL OR "UserId" = p_UserId)
|
||
LOOP
|
||
CALL public."Hr_S_TimesheetCalculate"(v_TenantId, v_Participant, v_StartDate, v_EndDate, p_ActorId);
|
||
END LOOP;
|
||
|
||
FOR v_PlanId IN
|
||
SELECT "Id" FROM "Hr_T_DevelopmentPlan"
|
||
WHERE "TrainingId" = p_TrainingId AND "IsDeleted" = FALSE AND (p_UserId IS NULL OR "EmployeeId" = p_UserId)
|
||
LOOP
|
||
CALL public."Hr_S_DevelopmentPlanSync"(v_PlanId);
|
||
END LOOP;
|
||
END
|
||
$$;
|