sozsoft-platform/configs/seeds/postgres/object/Prc_P_PurchaseOrderAfterSave.sql
2026-10-11 17:01:11 +03:00

20 lines
1.1 KiB
PL/PgSQL

CREATE OR REPLACE PROCEDURE public."Prc_P_PurchaseOrderAfterSave"(p_id uuid, p_user_id uuid DEFAULT NULL)
LANGUAGE plpgsql AS $$
DECLARE v_req uuid; v_act varchar(16); v_agr uuid;
BEGIN
UPDATE "Prc_T_PurchaseOrder" o SET
"PaymentTermId" = COALESCE(o."PaymentTermId", c."PurchasePaymentTermId"),
"IncotermId" = COALESCE(o."IncotermId", c."PurchaseIncotermId"),
"IncotermLocation" = COALESCE(o."IncotermLocation", c."PurchaseIncotermLocation"),
"BuyerUserId" = CASE WHEN o."LastModificationTime" IS NULL AND c."BuyerUserId" IS NOT NULL THEN c."BuyerUserId" ELSE o."BuyerUserId" END
FROM "Adm_T_Contact" c
WHERE o."Id" = p_id AND c."Id" = o."SupplierId";
SELECT "MaterialRequestId", "PendingAction", "AgreementId" INTO v_req, v_act, v_agr
FROM "Prc_T_PurchaseOrder" WHERE "Id" = p_id;
IF v_agr IS NOT NULL THEN CALL public."Prc_P_PurchaseRfqFromAgreement"(p_id); END IF;
IF v_req IS NOT NULL THEN CALL public."Prc_P_PurchaseOrderImportRequest"(p_id); END IF;
CALL public."Prc_P_PurchaseOrderRecalc"(p_id);
IF v_act IS NOT NULL THEN CALL public."Prc_P_PurchaseOrderSetStatus"(p_id, v_act, p_user_id); END IF;
END;
$$;