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

36 lines
1.8 KiB
MySQL
Raw Permalink Normal View History

2026-10-19 14:35:08 +00:00
CREATE OR ALTER PROCEDURE [dbo].[Mnt_P_WorkOrderAfterSave]
2026-10-18 21:22:40 +00:00
@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, '|')
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 = 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
2026-10-19 14:35:08 +00:00
FROM Mnt_T_WorkOrder o
2026-10-18 21:22:40 +00:00
WHERE o.Id = @Id;
2026-10-19 14:35:08 +00:00
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;
2026-10-18 21:22:40 +00:00
END
GO