INSERT INTO TBPARAMETRO (
    ID, 
    TABELA, 
    CONTROLE, 
    CODIGO, 
    DESCRICAO, 
    VALOR, 
    OBSERVACAO, 
    GRUPO
) VALUES (
    GEN_ID(GTBPARAMETRO,1), 
    'TBUSUARIO', 
    NULL,
    'REG_DOC_RETROATIVO', 
    'PERMITE INCLUIR DOCUMENTOS RETROATIVOS NO LANÇAMENTO DE PAGAMENTO OU RECEBIMENTO', 
    0, 
    '0 - NÃO
     1 - SIM', 
    'WEB20320'            
);

INSERT INTO TBPARAMETRO (
    ID, 
    TABELA, 
    CONTROLE, 
    CODIGO, 
    DESCRICAO, 
    VALOR, 
    OBSERVACAO, 
    GRUPO
) VALUES (
    GEN_ID(GTBPARAMETRO,1), 
    'TBUSUARIO', 
    NULL,
    'ALTERAR_SALDO_ANTECIPACAO', 
    'PERMITE ALTERAR SALDO DE ANTECIPAÇÕES DE CLASSIFICAÇÕES FINANCEIRAS', 
    0, 
    '0 - NÃO
     1 - SIM', 
    'WEB20300'            
);

CREATE OR ALTER TRIGGER TTBCAIXABANCO_LANC_REG_B4I FOR TBCAIXABANCO_LANCAMENTO_REG
ACTIVE BEFORE INSERT POSITION 4
AS
declare variable vDATA DATE;
BEGIN

   if (NEW.NFE_PARCELAMENTO_CONTROLE > 0) then                                     
       vData = (Select First 1 Data_Entrada From TbNfe_Parcelamento Where Controle = NEW.NFE_PARCELAMENTO_CONTROLE);
   if (NEW.NFS_PARCELAMENTO_CONTROLE > 0) then
       vData = (Select First 1 Data_Emissao From TbNfs_Parcelamento Where Controle = NEW.NFS_PARCELAMENTO_CONTROLE);

   if (vData > New.Data and FN_PARAMETRO('TBUSUARIO.REG_DOC_RETROATIVO',FN_CURRENT_USER_ID()) = 0) then
       Exception "..." 'ATENCAO, A DATA DO LANCAMENTO NAO PODE SER SUPERIOR A DATA BASE DA PARCELA! DATA DO LANCAMENTO: '||
       FORMATDATE(NEW.DATA)||' DOCUMENTO FISCAL: '||NEW.DOCUMENTO_NUMERO||' DATA BASE: '||FORMATDATE(VDATA);

END;

CREATE OR ALTER TRIGGER TTBCAIXABANCO_LANC_REG_B4U FOR TBCAIXABANCO_LANCAMENTO_REG
ACTIVE BEFORE UPDATE POSITION 4
AS
declare variable vDATA DATE;
BEGIN

   IF (NEW.DATA <> OLD.DATA) then
       begin
       if (NEW.NFE_PARCELAMENTO_CONTROLE > 0) then                                     
           vData = (Select First 1 Data_Entrada From TbNfe_Parcelamento Where Controle = NEW.NFE_PARCELAMENTO_CONTROLE);
       if (NEW.NFS_PARCELAMENTO_CONTROLE > 0) then
           vData = (Select First 1 Data_Emissao From TbNfs_Parcelamento Where Controle = NEW.NFS_PARCELAMENTO_CONTROLE);

       if (vData > New.Data and FN_PARAMETRO('TBUSUARIO.REG_DOC_RETROATIVO',FN_CURRENT_USER_ID()) = 0) then
           Exception "..." 'ATENCAO, A DATA DO LANCAMENTO NAO PODE SER SUPERIOR A DATA BASE DA PARCELA! DATA DO LANCAMENTO: '||
           FORMATDATE(NEW.DATA)||' DOCUMENTO FISCAL: '||NEW.DOCUMENTO_NUMERO||' DATA BASE: '||FORMATDATE(VDATA);
       End

END;