sozsoft-platform/configs/seeds/postgres/object/Mnt_P_WorkOrderAfterSave.sql
2026-10-19 17:35:08 +03:00

33 lines
1.8 KiB
PL/PgSQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- Bakım iş emri kaydı ve her iş akışı adımı sonrası çalışır (formdan, akıştan ve zamanlanmış işin açtığı emirden).
-- Departman onaycıları: Onaycılar'da ekipmanın departmanı için Bakım onay yerindeki aktif kullanıcılar.
-- Durum: departman onayı alınmamış emir Taslak'ta kalır; onay gelince Taslak Onaylandı olur, sonraki durumları
-- kullanıcı seçer; gerçek başlangıç/bitişi formdaki Durum script'i doldurur. Departman onayıyla (ve onaydan sonra eklenen
-- malzemelerde) Bakım Sarf Tüketimi teslimatı açılır; hurdaya ayrılan emirde açılmaz.
CREATE OR REPLACE PROCEDURE public."Mnt_P_WorkOrderAfterSave"(p_id uuid, p_user_id uuid DEFAULT NULL)
LANGUAGE plpgsql
AS $$
BEGIN
IF p_id IS NULL THEN RETURN; END IF;
UPDATE "Mnt_T_WorkOrder" o SET
"DeptApproverUserNames" = (
SELECT string_agg(u."UserName", '|')
FROM "Stk_T_Product" p
INNER JOIN "Adm_T_Approver" a ON a."DepartmentId" = p."EquipmentDepartmentId"
INNER JOIN "AbpUsers" u ON u."UserName" = a."ApprovalUserName" AND u."IsDeleted" = false AND u."IsActive" = true
AND u."TenantId" IS NOT DISTINCT FROM a."TenantId"
WHERE p."Id" = o."EquipmentId" AND a."IsDeleted" = false AND a."IsActive" = true AND a."ApprovalArea" = 'Maintenance'
AND a."TenantId" IS NOT DISTINCT FROM o."TenantId"),
"Status" = CASE
WHEN COALESCE(o."ApprovalStatus", '') <> 'Onaylandı' THEN 'Draft'
WHEN o."Status" = 'Draft' THEN 'Approved'
ELSE o."Status"
END
WHERE o."Id" = p_id;
IF EXISTS (SELECT 1 FROM "Mnt_T_WorkOrder" WHERE "Id" = p_id AND "ApprovalStatus" = 'Onaylandı' AND "Status" <> 'Scrapped') THEN
CALL public."Mnt_P_WorkOrderConsume"(p_id, p_user_id);
END IF;
END;
$$;