38 lines
2.1 KiB
MySQL
38 lines
2.1 KiB
MySQL
|
|
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;
|
|||
|
|
$$;
|