sozsoft-platform/configs/seeds/postgres/object/Mnt_P_WorkOrderAfterSave.sql

34 lines
1.8 KiB
MySQL
Raw Normal View History

2026-10-18 21:22:40 +00:00
-- 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.
2026-10-19 14:35:08 +00:00
CREATE OR REPLACE PROCEDURE public."Mnt_P_WorkOrderAfterSave"(p_id uuid, p_user_id uuid DEFAULT NULL)
2026-10-18 21:22:40 +00:00
LANGUAGE plpgsql
AS $$
BEGIN
IF p_id IS NULL THEN RETURN; END IF;
2026-10-19 14:35:08 +00:00
UPDATE "Mnt_T_WorkOrder" o SET
2026-10-18 21:22:40 +00:00
"DeptApproverUserNames" = (
SELECT string_agg(u."UserName", '|')
2026-10-19 14:35:08 +00:00
FROM "Stk_T_Product" p
2026-10-18 21:22:40 +00:00
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;
2026-10-19 14:35:08 +00:00
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);
2026-10-18 21:22:40 +00:00
END IF;
END;
$$;