Esta procedure foi criada através do Evento na tabela TGFCAB
create or replace PROCEDURE "SPTJ_VERIFICA_ESTADO" (
P_TIPOEVENTO INT,
P_IDSESSAO VARCHAR,
P_MENSAGEM OUT VARCHAR2
) AS
v_codcid_parceiro VARCHAR2(20);
v_codcid_empresa VARCHAR2(20);
v_codtipoper VARCHAR2(20);
BEGIN
-- Obter a cidade da empresa
SELECT MAX(EMP.CODCID)
INTO v_codcid_empresa
FROM TGFCAB CAB
JOIN TSIEMP EMP ON EMP.CODEMP = CAB.CODEMP
WHERE EMP.CODEMP = TO_NUMBER(EVP_GET_CAMPO_INT(P_IDSESSAO, 'CODEMP'));
-- Obter a cidade do parceiro
SELECT MAX(PAR.CODCID)
INTO v_codcid_parceiro
FROM TGFCAB CAB
JOIN TGFPAR PAR ON PAR.CODPARC = CAB.CODPARC
WHERE CAB.CODPARC = TO_NUMBER(EVP_GET_CAMPO_INT(P_IDSESSAO, 'CODPARC'));
-- Obter o tipo de operação
SELECT MAX(TOP1.CODTIPOPER)
INTO v_codtipoper
FROM TGFTOP TOP1
JOIN TGFCAB CAB ON TOP1.CODTIPOPER = CAB.CODTIPOPER
WHERE CAB.DHTIPOPER = TOP1.DHALTER
AND CAB.CODTIPOPER = TO_NUMBER(EVP_GET_CAMPO_INT(P_IDSESSAO, 'CODTIPOPER'));
-- Verificação das cidades e tipo de operação
IF v_codcid_parceiro <> v_codcid_empresa
AND v_codtipoper = '1000' THEN
RAISE_APPLICATION_ERROR(-20101, 'As cidades do parceiro e da empresa são diferentes. Verifique antes de continuar.');
END IF;
P_MENSAGEM := 'Atualizado com sucesso';
END;