-- Onaylanan satınalma siparişinden siparişin operasyon türünde Taslak alım açar: konumlar operasyon türünden, satırlar -- siparişin envanter takipli kalemlerinin henüz alınmamış miktarıdır. Siparişin iptal olmayan alımı varsa yeni alım açılmaz. CREATE OR ALTER PROCEDURE [dbo].[Inv_P_TransferFromPurchaseOrder] @OrderId uniqueidentifier, @UserId uniqueidentifier = NULL AS BEGIN SET NOCOUNT ON; DECLARE @New uniqueidentifier = NEWID(); IF EXISTS (SELECT 1 FROM Inv_T_Transfer WHERE PurchaseOrderId = @OrderId AND IsDeleted = 0 AND Status <> 'Cancelled') RETURN; INSERT INTO Inv_T_Transfer (Id, TenantId, BranchId, WarehouseId, OperationTypeId, OperationKind, PartnerId, SourceLocationId, DestinationLocationId, ScheduledDate, SourceDocument, PurchaseOrderId, ResponsibleUserId, ProjectId, Status, CreationTime, CreatorId, IsDeleted) SELECT @New, o.TenantId, ot.BranchId, ot.WarehouseId, o.OperationTypeId, ot.OperationKind, o.SupplierId, ot.SourceLocationId, ot.DestinationLocationId, COALESCE(o.ExpectedArrival, GETUTCDATE()), o.OrderNo, o.Id, o.BuyerUserId, o.ProjectId, 'Draft', GETUTCDATE(), @UserId, 0 FROM Prc_T_PurchaseOrder o INNER JOIN Inv_T_OperationType ot ON ot.Id = o.OperationTypeId WHERE o.Id = @OrderId AND EXISTS (SELECT 1 FROM Prc_T_PurchaseOrderLine l INNER JOIN Inv_T_Product p ON p.Id = l.ProductId WHERE l.PurchaseOrderId = o.Id AND l.IsDeleted = 0 AND p.TrackInventory = 1 AND l.Quantity > l.ReceivedQuantity); IF @@ROWCOUNT = 0 RETURN; INSERT INTO Inv_T_TransferLine (Id, TenantId, TransferId, ProductId, Description, DemandQuantity, Quantity, UomId, PurchaseOrderLineId, MaterialRequestItemId, CreationTime, CreatorId, IsDeleted) SELECT NEWID(), l.TenantId, @New, l.ProductId, l.Description, l.Quantity - l.ReceivedQuantity, 0, l.UomId, l.Id, l.MaterialRequestItemId, GETUTCDATE(), @UserId, 0 FROM Prc_T_PurchaseOrderLine l INNER JOIN Inv_T_Product p ON p.Id = l.ProductId WHERE l.PurchaseOrderId = @OrderId AND l.IsDeleted = 0 AND p.TrackInventory = 1 AND l.Quantity > l.ReceivedQuantity; EXEC Inv_P_TransferNumber @New; EXEC Inv_P_TransferRecalc @New; END