36 lines
1.8 KiB
MySQL
36 lines
1.8 KiB
MySQL
|
|
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
|