INSERT INTO TBPARAMETRO (
    ID, 
    TABELA, 
    CONTROLE, 
    CODIGO, 
    DESCRICAO, 
    VALOR, 
    OBSERVACAO, 
    GRUPO
) VALUES (
    GEN_ID(GTBPARAMETRO,1), 
    'SISTEMA', 
    NULL,
    'EXIGE_CENTRO_CUSTO', 
    'EXIGE CENTRO DE CUSTO NOS LANÇAMENTOS FINANCEIROS DO SISTEMA', 
    0, 
    '0 - NÃO
     1 - SIM', 
    ''            
);

CREATE OR ALTER TRIGGER TTBCAIXABANCO_LANCAMENTO_B06I FOR TBCAIXABANCO_LANCAMENTO
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
BEGIN
  IF(FN_PARAMETRO('SISTEMA.EXIGE_CENTRO_CUSTO') = '1')THEN
  BEGIN
     IF((COALESCE(NEW.CCUSTO,'') = '' OR CHAR_LENGTH(TRIM(COALESCE(NEW.CCUSTO,''))) = 0) AND (NEW.TIPO = 'L'))THEN
     BEGIN
        EXCEPTION "..." ' LANCAMENTO EXIGE CENTRO DE CUSTO VÁLIDO, OPERACAO CANCELADA.';
     END
  END
END;

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')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
END;