CREATE OR ALTER PROCEDURE [dbo].[Mnt_P_WorkOrderAfterSave] @Id uniqueidentifier, @UserId uniqueidentifier = NULL AS BEGIN SET NOCOUNT ON; IF @Id IS NULL RETURN; -- 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. UPDATE 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 = 0 AND u.IsActive = 1 AND ((u.TenantId IS NULL AND a.TenantId IS NULL) OR u.TenantId = a.TenantId) WHERE p.Id = o.EquipmentId AND a.IsDeleted = 0 AND a.IsActive = 1 AND a.ApprovalArea = 'Maintenance' AND ((a.TenantId IS NULL AND o.TenantId IS NULL) OR a.TenantId = o.TenantId)), Status = CASE WHEN COALESCE(o.ApprovalStatus, N'') <> N'Onaylandı' THEN 'Draft' WHEN o.Status = 'Draft' THEN 'Approved' ELSE o.Status END FROM Mnt_T_WorkOrder o WHERE o.Id = @Id; IF EXISTS (SELECT 1 FROM Mnt_T_WorkOrder WHERE Id = @Id AND ApprovalStatus = N'Onaylandı' AND Status <> 'Scrapped') EXEC dbo.Mnt_P_WorkOrderConsume @Id, @UserId; END GO