34 lines
1.8 KiB
MySQL
34 lines
1.8 KiB
MySQL
|
|
-- 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."Mm_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 "Mm_T_WorkOrder" o SET
|
|||
|
|
"DeptApproverUserNames" = (
|
|||
|
|
SELECT string_agg(u."UserName", '|')
|
|||
|
|
FROM "Inv_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 "Mm_T_WorkOrder" WHERE "Id" = p_id AND "ApprovalStatus" = 'Onaylandı' AND "Status" <> 'Scrapped') THEN
|
|||
|
|
CALL public."Mm_P_WorkOrderConsume"(p_id, p_user_id);
|
|||
|
|
END IF;
|
|||
|
|
END;
|
|||
|
|
$$;
|