SET TERM ^ ;
CREATE OR ALTER trigger ttbnf_ocorrencia_b02i for tbnf_ocorrencia
active before insert position 1
AS
DECLARE VARIABLE DESC_OCORRENCIA VARCHAR(500);
DECLARE VARIABLE DESC_ESTAB VARCHAR(500);
DECLARE VARIABLE DATA_OCORRENCIA VARCHAR(500);
DECLARE VARIABLE DOCUMENTO VARCHAR(500);
DECLARE VARIABLE ID INTEGER;
DECLARE VARIABLE ERROR_MSG VARCHAR(500);
BEGIN
SELECT FIRST 1
A.CODIGO||' - '||A.DESCRICAO AS DESC_OCORRENCIA,
FN_LPAD(B.CODIGO, 4, '0')||' - '||B.NOMEFANTASIA AS DESC_ESTAB,
FORMATDATE(T.DATA_OCORRENCIA) AS DATA_OCORRENCIA,
CASE
WHEN T.NFS_CONTROLE > 0 THEN FN_LPAD(C.NUMERO_NOTAFISCAL, 9, '0')
WHEN T.NFE_CONTROLE > 0 THEN FN_LPAD(D.NUMERO_NOTAFISCAL, 9, '0')
ELSE ''
END AS DOCUMENTO,
T.ID
FROM TBNF_OCORRENCIA T
LEFT JOIN TBFISCAL_OCORRENCIA A ON A.CODIGO = T.CODIGO_OCORRENCIA
LEFT JOIN TBESTABELECIMENTO B ON B.CODIGO = T.ESTABELECIMENTO_CODIGO
LEFT JOIN TBNFS C ON C.CONTROLE = T.NFS_CONTROLE
LEFT JOIN TBNFE D ON D.CONTROLE = T.NFE_CONTROLE
WHERE
T.ESTABELECIMENTO_CODIGO = NEW.ESTABELECIMENTO_CODIGO
AND T.CODIGO_OCORRENCIA = NEW.CODIGO_OCORRENCIA
AND T.DATA_OCORRENCIA = NEW.DATA_OCORRENCIA
AND T.ID <> NEW.ID
AND (IIF(NEW.NFS_CONTROLE > 0, T.NFS_CONTROLE = NEW.NFS_CONTROLE, FALSE) OR IIF(NEW.NFE_CONTROLE > 0, T.NFE_CONTROLE = NEW.NFE_CONTROLE, FALSE))
INTO DESC_OCORRENCIA, DESC_ESTAB, DATA_OCORRENCIA, DOCUMENTO, ID;
ERROR_MSG = '';
IF (ID IS NOT NULL) THEN
BEGIN
ERROR_MSG = ERROR_MSG || 'Registro ja existente com os seguintes dados:';
ERROR_MSG = ERROR_MSG || 'Estabelecimento: ' || DESC_ESTAB || '';
ERROR_MSG = ERROR_MSG || 'Ocorrencia: ' || DESC_OCORRENCIA || '';
ERROR_MSG = ERROR_MSG || 'Data Ocorrencia: ' || DATA_OCORRENCIA || '';
ERROR_MSG = ERROR_MSG || 'Documento: ' || DOCUMENTO || '';
EXCEPTION "..." ERROR_MSG;
END
END
^
SET TERM ; ^