SET TERM ^ ;

CREATE OR ALTER TRIGGER TTBCAIXABANCO_LANC_CLASS_B05IU FOR TBCAIXABANCO_LANCAMENTO_CLASS
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
DECLARE VARIABLE EMPRESA_DESCRICAO VARCHAR(500);
DECLARE VARIABLE CLASS_DESCRICAO VARCHAR(500);
BEGIN
     IF(FN_PARAMETRO('SISTEMA.EXIGE_CENTRO_CUSTO') = '1' AND FN_PARAMETRO('SISTEMA.VALOR_SERVICO_CAD') = '0')THEN
     BEGIN
          IF(COALESCE(NEW.CCUSTO,'') = '' OR CHAR_LENGTH(TRIM(COALESCE(NEW.CCUSTO,''))) = 0)THEN
          BEGIN
            EMPRESA_DESCRICAO = '';
            CLASS_DESCRICAO   = '';
            IF(COALESCE(NEW.EMPRESA_ID, 0) > 0)THEN
            BEGIN
               EMPRESA_DESCRICAO = COALESCE((SELECT FIRST 1 ', EMPRESA '||FN_LPAD(C.CODIGO,6,0)||' - '||C.NOMEFANTASIA FROM TBEMPRESA C WHERE C.CODIGO = NEW.EMPRESA_ID),'');
            END

            IF(COALESCE(NEW.CLASSIFICACAO_CONTABIL,'') <> '')THEN
            BEGIN
               CLASS_DESCRICAO = COALESCE((SELECT FIRST 1 FN_MASK(D.CODIGO,'CLASS')||' - '||D.DESCRICAO FROM TBCLASSIFICACAO_CONTABIL D WHERE D.CODIGO = NEW.CLASSIFICACAO_CONTABIL),'');
            END

            EXCEPTION "..." ' CLASSIFICACAO '||:CLASS_DESCRICAO||:EMPRESA_DESCRICAO||', VALOR R$ '||CAST(NEW.VALOR AS NUMERIC(15,2))||' EXIGE CENTRO DE CUSTO V??LIDO, OPERACAO CANCELADA.';
          END
     END

     IF(CHAR_LENGTH(TRIM(COALESCE(NEW.CLASSIFICACAO_CONTABIL,''))) < 6)THEN
     BEGIN
         EMPRESA_DESCRICAO = '';
         CLASS_DESCRICAO   = '';
         IF(COALESCE(NEW.EMPRESA_ID, 0) > 0)THEN
         BEGIN
            EMPRESA_DESCRICAO = COALESCE((SELECT FIRST 1 ', EMPRESA '||FN_LPAD(C.CODIGO,6,0)||' - '||C.NOMEFANTASIA FROM TBEMPRESA C WHERE C.CODIGO = NEW.EMPRESA_ID),'');
            EXCEPTION "..." ' LANC.ID: '||NEW.CONTROLE||', EMPRESA: '||:EMPRESA_DESCRICAO||', VALOR R$ '||CAST(NEW.VALOR AS NUMERIC(15,2))||' <BR> EXIGE CLASSIFICACAO FINANCEIRA VALIDA, OPERACAO CANCELADA.';
         END
         ELSE
         BEGIN
            EXCEPTION "..." ' LANC.ID: '||NEW.CONTROLE||', VALOR R$ '||CAST(NEW.VALOR AS NUMERIC(15,2))||' <BR> EXIGE CLASSIFICACAO FINANCEIRA VALIDA, OPERACAO CANCELADA.';
         END
     END

     IF(COALESCE(NEW.PREVISAO_ID,0) < 0 AND INSERTING)THEN
     BEGIN
        EXCEPTION "..." 'ATENCAO<BR> O SISTEMA TENTOU GRAVAR UMA PROVISAO INVALIDA NO LANC.ID: '||NEW.CONTROLE||', VALOR R$ '||CAST(NEW.VALOR AS NUMERIC(15,2))||'.<BR> CONTATE O SUPORTE TECNICO.';
     END

     IF(COALESCE(NEW.PREVISAO_ID,0) < 0 AND UPDATING)THEN
     BEGIN
        EXCEPTION "..." 'ATENCAO<BR> O SISTEMA TENTOU GRAVAR UMA PROVISAO INVALIDA NO LANC.ID: '||NEW.CONTROLE||', VALOR R$ '||CAST(NEW.VALOR AS NUMERIC(15,2))||'.<BR> CONTATE O SUPORTE TECNICO.';
     END
END^

SET TERM ; ^

