sozsoft-platform/configs/seeds/sql/object/Prc_P_PurchaseOrderSetStatus.sql

32 lines
1.3 KiB
MySQL
Raw Normal View History

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;
IF @Action = 'Send'
BEGIN
IF @Status = 'Cancelled' THROW 50121, N'İptal edilmiş belge gönderilemez.', 1;
EXEC Prc_P_PurchaseOrderSend @Id, @UserId;
END
ELSE IF @Action = 'Confirm'
BEGIN
IF @Status NOT IN ('Draft', 'Sent') THROW 50122, N'Yalnız teklif aşamasındaki belge siparişe çevrilebilir.', 1;
IF NOT EXISTS (SELECT 1 FROM Prc_T_PurchaseOrderLine WHERE PurchaseOrderId = @Id AND IsDeleted = 0)
THROW 50123, N'Kalemi olmayan teklif onaylanamaz.', 1;
UPDATE Prc_T_PurchaseOrder SET Status = 'Purchase', ConfirmDate = GETUTCDATE() WHERE Id = @Id;
END
ELSE IF @Action = 'Cancel'
UPDATE Prc_T_PurchaseOrder SET Status = 'Cancelled' WHERE Id = @Id;
ELSE IF @Action = 'Draft'
BEGIN
IF @Status <> 'Cancelled' THROW 50124, N'Yalnız iptal edilmiş belge taslağa alınabilir.', 1;
UPDATE Prc_T_PurchaseOrder SET Status = 'Draft', ConfirmDate = NULL WHERE Id = @Id;
END
END