sozsoft-platform/configs/seeds/postgres/object/Prc_P_PurchaseRfqSetStatus.sql
2026-10-11 22:57:23 +03:00

37 lines
2.1 KiB
PL/PgSQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

CREATE OR REPLACE PROCEDURE public."Prc_P_PurchaseRfqSetStatus"(p_id uuid, p_action varchar, p_user_id uuid DEFAULT NULL)
LANGUAGE plpgsql AS $$
DECLARE v_status varchar(16); v_group uuid; v_draft uuid;
BEGIN
SELECT "Status", "TenderGroupId" INTO v_status, v_group FROM "Prc_T_PurchaseRfq" WHERE "Id" = p_id;
UPDATE "Prc_T_PurchaseRfq" SET "PendingAction" = NULL WHERE "Id" = p_id;
IF p_action IN ('Send', 'SendTender', 'Award') AND v_status NOT IN ('Draft', 'Sent') THEN
RAISE EXCEPTION 'Yalnız teklif aşamasındaki (Teklif Talebi / Gönderildi) belge gönderilebilir ya da siparişe dönüştürülebilir.'
USING ERRCODE = 'P0001', DETAIL = '50173';
END IF;
IF p_action = 'Send' THEN
CALL public."Prc_P_PurchaseRfqSend"(p_id, p_user_id);
ELSIF p_action = 'SendTender' THEN
-- İhalenin henüz gönderilmemiş bütün belgeleri (açık belge dahil) tedarikçilerine gider.
FOR v_draft IN SELECT "Id" FROM "Prc_T_PurchaseRfq" WHERE "TenderGroupId" = v_group AND "IsDeleted" = false AND "Status" = 'Draft' LOOP
CALL public."Prc_P_PurchaseRfqSend"(v_draft, p_user_id);
END LOOP;
ELSIF p_action = 'Award' THEN
CALL public."Prc_P_PurchaseRfqAward"(p_id, p_user_id);
ELSIF p_action = 'Cancel' THEN
IF v_status = 'Purchase' THEN
RAISE EXCEPTION 'Siparişe dönüştürülmüş teklif iptal edilemez; satınalma siparişini iptal edin.' USING ERRCODE = 'P0001', DETAIL = '50174';
END IF;
UPDATE "Prc_T_PurchaseRfq" SET "Status" = 'Cancelled' WHERE "Id" = p_id;
ELSIF p_action = 'Draft' THEN
IF v_status <> 'Cancelled' THEN
RAISE EXCEPTION 'Yalnız iptal edilmiş teklif taslağa alınabilir.' USING ERRCODE = 'P0001', DETAIL = '50175';
END IF;
IF EXISTS (SELECT 1 FROM "Prc_T_PurchaseRfq" WHERE "TenderGroupId" = v_group AND "IsDeleted" = false AND "Status" = 'Purchase') THEN
RAISE EXCEPTION 'İhale siparişe dönüştürüldüğü için teklif yeniden açılamaz.' USING ERRCODE = 'P0001', DETAIL = '50176';
END IF;
UPDATE "Prc_T_PurchaseRfq" SET "Status" = 'Draft' WHERE "Id" = p_id;
END IF;
END;
$$;