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