25 lines
1.3 KiB
MySQL
25 lines
1.3 KiB
MySQL
|
|
CREATE OR REPLACE PROCEDURE public."Prc_P_PurchaseOrderSetStatus"(p_id uuid, p_action varchar, p_user_id uuid DEFAULT NULL)
|
|||
|
|
LANGUAGE plpgsql AS $$
|
|||
|
|
DECLARE v_status varchar(16);
|
|||
|
|
BEGIN
|
|||
|
|
SELECT "Status" INTO v_status FROM "Prc_T_PurchaseOrder" WHERE "Id" = p_id;
|
|||
|
|
UPDATE "Prc_T_PurchaseOrder" SET "PendingAction" = NULL WHERE "Id" = p_id;
|
|||
|
|
|
|||
|
|
IF p_action = 'Send' THEN
|
|||
|
|
IF v_status = 'Cancelled' THEN RAISE EXCEPTION 'İptal edilmiş belge gönderilemez.'; END IF;
|
|||
|
|
CALL public."Prc_P_PurchaseOrderSend"(p_id, p_user_id);
|
|||
|
|
ELSIF p_action = 'Confirm' THEN
|
|||
|
|
IF v_status NOT IN ('Draft', 'Sent') THEN RAISE EXCEPTION 'Yalnız teklif aşamasındaki belge siparişe çevrilebilir.'; END IF;
|
|||
|
|
IF NOT EXISTS (SELECT 1 FROM "Prc_T_PurchaseOrderLine" WHERE "PurchaseOrderId" = p_id AND "IsDeleted" = false) THEN
|
|||
|
|
RAISE EXCEPTION 'Kalemi olmayan teklif onaylanamaz.';
|
|||
|
|
END IF;
|
|||
|
|
UPDATE "Prc_T_PurchaseOrder" SET "Status" = 'Purchase', "ConfirmDate" = CURRENT_TIMESTAMP WHERE "Id" = p_id;
|
|||
|
|
ELSIF p_action = 'Cancel' THEN
|
|||
|
|
UPDATE "Prc_T_PurchaseOrder" SET "Status" = 'Cancelled' WHERE "Id" = p_id;
|
|||
|
|
ELSIF p_action = 'Draft' THEN
|
|||
|
|
IF v_status <> 'Cancelled' THEN RAISE EXCEPTION 'Yalnız iptal edilmiş belge taslağa alınabilir.'; END IF;
|
|||
|
|
UPDATE "Prc_T_PurchaseOrder" SET "Status" = 'Draft', "ConfirmDate" = NULL WHERE "Id" = p_id;
|
|||
|
|
END IF;
|
|||
|
|
END;
|
|||
|
|
$$;
|