2026-10-11 14:01:11 +00:00
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[Prc_P_PurchaseOrderSetStatus]
|
|
|
|
|
|
@Id uniqueidentifier,
|
|
|
|
|
|
@Action nvarchar(16),
|
|
|
|
|
|
@UserId uniqueidentifier = NULL
|
|
|
|
|
|
AS
|
|
|
|
|
|
BEGIN
|
|
|
|
|
|
SET NOCOUNT ON;
|
|
|
|
|
|
DECLARE @Status nvarchar(16);
|
|
|
|
|
|
SELECT @Status = Status FROM Prc_T_PurchaseOrder WHERE Id = @Id;
|
|
|
|
|
|
UPDATE Prc_T_PurchaseOrder SET PendingAction = NULL WHERE Id = @Id;
|
|
|
|
|
|
|
2026-10-11 19:57:23 +00:00
|
|
|
|
IF @Action = 'Confirm'
|
2026-10-11 14:01:11 +00:00
|
|
|
|
BEGIN
|
2026-10-11 19:57:23 +00:00
|
|
|
|
IF @Status <> 'Draft' THROW 50181, N'Yalnız taslak sipariş onaylanabilir.', 1;
|
2026-10-11 14:01:11 +00:00
|
|
|
|
IF NOT EXISTS (SELECT 1 FROM Prc_T_PurchaseOrderLine WHERE PurchaseOrderId = @Id AND IsDeleted = 0)
|
2026-10-11 19:57:23 +00:00
|
|
|
|
THROW 50182, N'Kalemi olmayan sipariş onaylanamaz.', 1;
|
2026-10-11 14:01:11 +00:00
|
|
|
|
UPDATE Prc_T_PurchaseOrder SET Status = 'Purchase', ConfirmDate = GETUTCDATE() WHERE Id = @Id;
|
2026-10-12 21:43:05 +00:00
|
|
|
|
EXEC Inv_P_TransferFromPurchaseOrder @Id, @UserId;
|
2026-10-11 14:01:11 +00:00
|
|
|
|
END
|
2026-10-11 19:57:23 +00:00
|
|
|
|
ELSE IF @Action = 'Send'
|
|
|
|
|
|
BEGIN
|
|
|
|
|
|
IF @Status = 'Cancelled' THROW 50183, N'İptal edilmiş sipariş gönderilemez.', 1;
|
|
|
|
|
|
EXEC Prc_P_PurchaseOrderSend @Id, @UserId;
|
|
|
|
|
|
END
|
2026-10-11 14:01:11 +00:00
|
|
|
|
ELSE IF @Action = 'Cancel'
|
2026-10-12 21:43:05 +00:00
|
|
|
|
BEGIN
|
|
|
|
|
|
IF EXISTS (SELECT 1 FROM Inv_T_Transfer WHERE PurchaseOrderId = @Id AND IsDeleted = 0 AND Status = 'Done')
|
|
|
|
|
|
THROW 50318, N'Teslim alınmış (yapılmış alımı olan) sipariş iptal edilemez.', 1;
|
2026-10-11 14:01:11 +00:00
|
|
|
|
UPDATE Prc_T_PurchaseOrder SET Status = 'Cancelled' WHERE Id = @Id;
|
2026-10-12 21:43:05 +00:00
|
|
|
|
-- Siparişin yapılmamış alımları da iptal olur; sipariş yeniden onaylanırsa yeni alım açılır.
|
|
|
|
|
|
UPDATE Inv_T_Transfer SET Status = 'Cancelled' WHERE PurchaseOrderId = @Id AND IsDeleted = 0 AND Status IN ('Draft', 'Waiting', 'Ready');
|
|
|
|
|
|
END
|
2026-10-11 14:01:11 +00:00
|
|
|
|
ELSE IF @Action = 'Draft'
|
|
|
|
|
|
BEGIN
|
2026-10-11 19:57:23 +00:00
|
|
|
|
IF @Status <> 'Cancelled' THROW 50184, N'Yalnız iptal edilmiş sipariş taslağa alınabilir.', 1;
|
2026-10-11 14:01:11 +00:00
|
|
|
|
UPDATE Prc_T_PurchaseOrder SET Status = 'Draft', ConfirmDate = NULL WHERE Id = @Id;
|
|
|
|
|
|
END
|
|
|
|
|
|
END
|