36 lines
2.2 KiB
MySQL
36 lines
2.2 KiB
MySQL
|
|
-- 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, CreationTime, CreatorId, IsDeleted)
|
|||
|
|
SELECT NEWID(), l.TenantId, @New, l.ProductId, l.Description, l.Quantity - l.ReceivedQuantity, 0, l.UomId, l.Id, 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
|