2026-10-19 14:35:08 +00:00
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[Mnt_P_WorkOrderMaterialAfterSave]
|
2026-10-18 21:22:40 +00:00
|
|
|
|
@Id uniqueidentifier,
|
|
|
|
|
|
@UserId uniqueidentifier = NULL
|
|
|
|
|
|
AS
|
|
|
|
|
|
BEGIN
|
|
|
|
|
|
SET NOCOUNT ON;
|
|
|
|
|
|
IF @Id IS NULL RETURN;
|
|
|
|
|
|
|
|
|
|
|
|
-- Malzeme satırı ekipmanın departmanına bağlı bir iç konumdaki stok satırından (ürün + lot/seri) seçilir. Lookup bunu
|
|
|
|
|
|
-- süzer, kayıt burada doğrulanır: ürün, lot ve birim stok satırından yazılır (formdaki kopya değil stok esastır), miktar
|
|
|
|
|
|
-- eldeki miktarı aşamaz. İş emri departman onayını almışsa satır hemen Bakım Sarf Tüketimi teslimatına eklenir.
|
|
|
|
|
|
DECLARE @Order uniqueidentifier, @Loc uniqueidentifier, @Stock uniqueidentifier, @Qty decimal(18, 4), @Dept uniqueidentifier,
|
|
|
|
|
|
@Approved bit, @StockLoc uniqueidentifier, @OnHand decimal(18, 4);
|
|
|
|
|
|
|
|
|
|
|
|
SELECT @Order = m.WorkOrderId, @Loc = m.LocationId, @Stock = m.StockId, @Qty = m.Quantity, @Dept = p.EquipmentDepartmentId,
|
|
|
|
|
|
@Approved = CASE WHEN o.ApprovalStatus = N'Onaylandı' THEN 1 ELSE 0 END
|
2026-10-19 14:35:08 +00:00
|
|
|
|
FROM Mnt_T_WorkOrderMaterial m
|
|
|
|
|
|
INNER JOIN Mnt_T_WorkOrder o ON o.Id = m.WorkOrderId
|
|
|
|
|
|
LEFT JOIN Stk_T_Product p ON p.Id = o.EquipmentId
|
2026-10-18 21:22:40 +00:00
|
|
|
|
WHERE m.Id = @Id AND m.IsDeleted = 0 AND m.ConsumptionTransferId IS NULL;
|
|
|
|
|
|
|
|
|
|
|
|
IF @Order IS NULL RETURN;
|
|
|
|
|
|
|
2026-10-19 14:35:08 +00:00
|
|
|
|
IF @Loc IS NOT NULL AND NOT EXISTS (SELECT 1 FROM Stk_T_Location
|
2026-10-18 21:22:40 +00:00
|
|
|
|
WHERE Id = @Loc AND LocationType = 'Internal' AND DepartmentId = @Dept)
|
|
|
|
|
|
THROW 50409, N'Depo/konum ekipmanın departmanına ait bir iç konum olmalıdır.', 1;
|
|
|
|
|
|
|
|
|
|
|
|
IF @Stock IS NOT NULL
|
|
|
|
|
|
BEGIN
|
2026-10-19 14:35:08 +00:00
|
|
|
|
SELECT @StockLoc = LocationId, @OnHand = Quantity FROM Stk_T_Stock WHERE Id = @Stock AND IsDeleted = 0;
|
2026-10-18 21:22:40 +00:00
|
|
|
|
IF @StockLoc IS NULL OR @StockLoc <> @Loc
|
|
|
|
|
|
THROW 50410, N'Seçilen ürün - lot/seri satırı seçilen depo/konumda değil.', 1;
|
|
|
|
|
|
IF @Qty > @OnHand
|
|
|
|
|
|
THROW 50411, N'Miktar seçilen lot/serinin eldeki miktarını aşamaz.', 1;
|
|
|
|
|
|
|
|
|
|
|
|
UPDATE m SET ProductId = s.ProductId, LotNo = NULLIF(s.LotNo, ''), UomId = s.UomId
|
2026-10-19 14:35:08 +00:00
|
|
|
|
FROM Mnt_T_WorkOrderMaterial m
|
|
|
|
|
|
INNER JOIN Stk_T_Stock s ON s.Id = m.StockId
|
2026-10-18 21:22:40 +00:00
|
|
|
|
WHERE m.Id = @Id;
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
|
|
|
|
IF @Approved = 1
|
2026-10-19 14:35:08 +00:00
|
|
|
|
EXEC dbo.Mnt_P_WorkOrderConsume @Order, @UserId;
|
2026-10-18 21:22:40 +00:00
|
|
|
|
END
|
|
|
|
|
|
GO
|