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; $$;