Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save AndyDaSilva52/37ce365e88eac46a47a5b51747555b1a to your computer and use it in GitHub Desktop.
Save AndyDaSilva52/37ce365e88eac46a47a5b51747555b1a to your computer and use it in GitHub Desktop.
#Mega - Trigger para não permitir gravar registro com Tipo de Agente (AGN_TAU_ST_CODIGO) não compatível com o Tipo de Operação de Terceiro (TPO_CH_TPPERFILMATTERC) do Tipo de Ordem (TPO_ST_CODIGO_TIPO) - #MegaERP
create or replace TRIGGER MGCLI.T_CLI_PRO_ORIGEM_AGN_TAU
BEFORE INSERT ON MGMAN.PRO_ORIGEM
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
WHEN (NEW.ORI_CH_TIPOORIGEM IN ('T')) -- T = Agente de Terceiro
DECLARE
vTPO_CH_TPPERFILMATTERC MGMAN.PRO_TIPOORDENS.TPO_CH_TPPERFILMATTERC%TYPE;
/**
Perfil de Operação
Perfil de Operação Material de Terceiro
CL;Cliente
FO;Fornecedor Produto Acabado
FT;Fornecedor Matéria Prima
*/
vTPO_ST_CODIGO_TIPO MGMAN.PRO_TIPOORDENS.TPO_ST_CODIGO_TIPO%TYPE;
BEGIN
BEGIN
SELECT
T.TPO_CH_TPPERFILMATTERC, T.TPO_ST_CODIGO_TIPO
INTO
vTPO_CH_TPPERFILMATTERC, vTPO_ST_CODIGO_TIPO
FROM MGMAN.PRO_TIPOORDENS T
WHERE
(T.TPO_TAB_IN_CODIGO, T.TPO_PAD_IN_CODIGO, T.TPO_ST_CODIGO_TIPO) IN (
SELECT
O.TPO_TAB_IN_CODIGO, O.TPO_PAD_IN_CODIGO, O.TPO_ST_CODIGO_TIPO
FROM MGMAN.PRO_ORDENS O
WHERE
O.ORD_TAB_IN_CODIGO = :NEW.ORD_TAB_IN_CODIGO AND
O.ORD_SEQ_IN_CODIGO = :NEW.ORD_SEQ_IN_CODIGO AND
O.ORD_IN_CODIGO = :NEW.ORD_IN_CODIGO
);
END;
IF (
vTPO_CH_TPPERFILMATTERC = 'FO' AND :NEW.AGN_TAU_ST_CODIGO <> 'C'
) THEN
RAISE_APPLICATION_ERROR(-20101, 'Favor selecionar o registro com Tipo de Agente [''C''] correspondente ao Perfil de Operação de Terceiro [''Fornecedor''] do Tipo de Ordem ['|| vTPO_ST_CODIGO_TIPO ||']');
END IF;
IF (
vTPO_CH_TPPERFILMATTERC = 'CL' AND :NEW.AGN_TAU_ST_CODIGO <> 'F'
) THEN
RAISE_APPLICATION_ERROR(-20101, 'Favor selecionar o registro com Tipo de Agente [''F''] correspondente ao Perfil de Operação de Terceiro [''Cliente''] do Tipo de Ordem ['|| vTPO_ST_CODIGO_TIPO ||']');
END IF;
END;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment