Necessidade: Preenchimento obrigatório do campo Sugestão Saída quando o parceiro que está sendo cadastrado é um cliente.
CREATE OR REPLACE PROCEDURE "STP_EVP_TGFCPL" (
P_TIPOEVENTO INT, -- Identifica o tipo de evento
P_IDSESSAO VARCHAR2, -- Identificador da execução. Serve para buscar informações dos campos da execução.
P_CODUSU INT -- Código do usuário logado
) AS
BEFORE_INSERT INT;
AFTER_INSERT INT;
BEFORE_DELETE INT;
AFTER_DELETE INT;
BEFORE_UPDATE INT;
AFTER_UPDATE INT;
BEFORE_COMMIT INT;
V_SUGTIPNEGSAID INT;
V_CLIENTE CHAR(1);
V_CODPARC INT;
BEGIN
BEFORE_INSERT := 0;
AFTER_INSERT := 1;
BEFORE_DELETE := 2;
AFTER_DELETE := 3;
BEFORE_UPDATE := 4;
AFTER_UPDATE := 5;
BEFORE_COMMIT := 10;
/*******************************************************************************
É possível obter o valor dos campos através das Functions:
EVP_GET_CAMPO_DTA(P_IDSESSAO, 'NOMECAMPO') -- PARA CAMPOS DE DATA
EVP_GET_CAMPO_INT(P_IDSESSAO, 'NOMECAMPO') -- PARA CAMPOS NUMÉRICOS INTEIROS
EVP_GET_CAMPO_DEC(P_IDSESSAO, 'NOMECAMPO') -- PARA CAMPOS NUMÉRICOS DECIMAIS
EVP_GET_CAMPO_TEXTO(P_IDSESSAO, 'NOMECAMPO') -- PARA CAMPOS TEXTO
O primeiro argumento é uma chave para esta execução. O segundo é o nome do campo.
Para os eventos BEFORE UPDATE, BEFORE INSERT e AFTER DELETE todos os campos estarão disponíveis.
Para os demais, somente os campos que pertencem à PK
* Os campos CLOB/TEXT serão enviados convertidos para VARCHAR(4000)
Também é possível alterar o valor de um campo através das Stored procedures:
EVP_SET_CAMPO_DTA(P_IDSESSAO, 'NOMECAMPO', VALOR) -- VALOR DEVE SER UMA DATA
EVP_SET_CAMPO_INT(P_IDSESSAO, 'NOMECAMPO', VALOR) -- VALOR DEVE SER UM NÚMERO INTEIRO
EVP_SET_CAMPO_DEC(P_IDSESSAO, 'NOMECAMPO', VALOR) -- VALOR DEVE SER UM NÚMERO DECIMAL
EVP_SET_CAMPO_TEXTO(P_IDSESSAO, 'NOMECAMPO', VALOR) -- VALOR DEVE SER UM TEXTO
********************************************************************************/
IF P_TIPOEVENTO = BEFORE_INSERT THEN
V_CODPARC := EVP_GET_CAMPO_INT(P_IDSESSAO, 'CODPARC');
V_SUGTIPNEGSAID := EVP_GET_CAMPO_INT(P_IDSESSAO, 'SUGTIPNEGSAID');
SELECT CLIENTE INTO V_CLIENTE FROM TGFPAR WHERE CODPARC = V_CODPARC;
IF V_SUGTIPNEGSAID IS NULL AND V_CLIENTE = 'S' THEN
RAISE_APPLICATION_ERROR(-20101,'<br><b>Para clientes, é necessário preencher o campo "Sugestão Saída" na aba "Tipo de Negociação".</b><br><br>');
ELSE
RETURN;
END IF;
END IF;
IF P_TIPOEVENTO = BEFORE_UPDATE THEN
V_CODPARC := EVP_GET_CAMPO_INT(P_IDSESSAO, 'CODPARC');
V_SUGTIPNEGSAID := EVP_GET_CAMPO_INT(P_IDSESSAO, 'SUGTIPNEGSAID');
SELECT CLIENTE INTO V_CLIENTE FROM TGFPAR WHERE CODPARC = V_CODPARC;
IF V_SUGTIPNEGSAID IS NULL AND V_CLIENTE = 'S' THEN
RAISE_APPLICATION_ERROR(-20101,'<br><b>Para clientes, é necessário preencher o campo "Sugestão Saída" na aba "Tipo de Negociação".</b><br><br>');
ELSE
RETURN;
END IF;
END IF;
END;
/
Nenhum comentário:
Postar um comentário