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