sozsoft-platform/configs/seeds/sql/object/Mm_P_WorkOrderAfterSave.sql
2026-10-19 00:22:40 +03:00

35 lines
1.8 KiB
Transact-SQL
Raw 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.

CREATE OR ALTER PROCEDURE [dbo].[Mm_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 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 = 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 Mm_T_WorkOrder o
WHERE o.Id = @Id;
IF EXISTS (SELECT 1 FROM Mm_T_WorkOrder WHERE Id = @Id AND ApprovalStatus = N'Onaylandı' AND Status <> 'Scrapped')
EXEC dbo.Mm_P_WorkOrderConsume @Id, @UserId;
END
GO