33 lines
2 KiB
MySQL
33 lines
2 KiB
MySQL
|
|
CREATE OR REPLACE PROCEDURE public."Prc_P_PurchaseRfqAfterSave"(p_id uuid, p_user_id uuid DEFAULT NULL)
|
|||
|
|
LANGUAGE plpgsql AS $$
|
|||
|
|
DECLARE v_act varchar(16);
|
|||
|
|
BEGIN
|
|||
|
|
SELECT "PendingAction" INTO v_act FROM "Prc_T_PurchaseRfq" WHERE "Id" = p_id;
|
|||
|
|
IF EXISTS (SELECT 1 FROM "Prc_T_PurchaseRfq" WHERE "Id" = p_id AND "PriceWeight" + "DeliveryWeight" <> 100) THEN
|
|||
|
|
RAISE EXCEPTION 'Fiyat ve termin ağırlıklarının toplamı 100 olmalıdır.' USING ERRCODE = 'P0001', DETAIL = '50153';
|
|||
|
|
END IF;
|
|||
|
|
|
|||
|
|
-- İhalenin kökü ilk belgedir; alternatifler kökün Id'sini taşır.
|
|||
|
|
UPDATE "Prc_T_PurchaseRfq" r SET
|
|||
|
|
"TenderGroupId" = COALESCE(r."TenderGroupId", r."Id"),
|
|||
|
|
"QuoteDate" = CASE WHEN r."SupplierResponse" <> 'Waiting' THEN COALESCE(r."QuoteDate", NOW() AT TIME ZONE 'UTC') ELSE r."QuoteDate" END,
|
|||
|
|
"PaymentTermId" = COALESCE(r."PaymentTermId", c."PurchasePaymentTermId"),
|
|||
|
|
"IncotermId" = COALESCE(r."IncotermId", c."PurchaseIncotermId"),
|
|||
|
|
"IncotermLocation" = COALESCE(r."IncotermLocation", c."PurchaseIncotermLocation"),
|
|||
|
|
"BuyerUserId" = CASE WHEN r."LastModificationTime" IS NULL AND c."BuyerUserId" IS NOT NULL THEN c."BuyerUserId" ELSE r."BuyerUserId" END
|
|||
|
|
FROM "Adm_T_Contact" c
|
|||
|
|
WHERE r."Id" = p_id AND c."Id" = r."SupplierId";
|
|||
|
|
|
|||
|
|
-- Kıyas ağırlıkları ihale geneli tek değerdir; hangi belgede değişirse diğerlerine yazılır.
|
|||
|
|
UPDATE "Prc_T_PurchaseRfq" x SET "PriceWeight" = r."PriceWeight", "DeliveryWeight" = r."DeliveryWeight"
|
|||
|
|
FROM "Prc_T_PurchaseRfq" r
|
|||
|
|
WHERE r."Id" = p_id AND x."TenderGroupId" = r."TenderGroupId" AND x."Id" <> r."Id"
|
|||
|
|
AND (x."PriceWeight" <> r."PriceWeight" OR x."DeliveryWeight" <> r."DeliveryWeight");
|
|||
|
|
|
|||
|
|
CALL public."Prc_P_PurchaseRfqFromAgreement"(p_id);
|
|||
|
|
CALL public."Prc_P_PurchaseRfqRecalc"(p_id);
|
|||
|
|
-- Durum butonlari islemi PendingAction alanina yazip ekranin guncelleme ucuyla kaydeder.
|
|||
|
|
IF v_act IS NOT NULL THEN CALL public."Prc_P_PurchaseRfqSetStatus"(p_id, v_act, p_user_id); END IF;
|
|||
|
|
END;
|
|||
|
|
$$;
|