CREATE GENERATOR GTBCAIXABANCO_CONCILIACAO_IMP;

CREATE TABLE TBCAIXABANCO_CONCILIACAO_IMP (
    DATAHORA      TIMESTAMP DEFAULT 'NOW' NOT NULL,
    ID            INTEGER NOT NULL PRIMARY KEY,
    DATA          DATE,
    BANCO_CODIGO  INTEGER,
    BANCO_CONTA   VARCHAR(10)
);

CREATE TRIGGER TTBCAIXABANCO_CONC_IMP_B01I FOR TBCAIXABANCO_CONCILIACAO_IMP
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  if(new.id is null)then
  begin
    IF (NEW.ID IS NULL) THEN
    NEW.ID = GEN_ID(GTBCAIXABANCO_CONCILIACAO_IMP,1);
  end
end;

CREATE OR ALTER TRIGGER TTBCAIXABANCO_CONC_LANC_B021 FOR TBCAIXABANCO_CONCILIACAO_LANC
ACTIVE BEFORE INSERT POSITION 2
AS
declare variable max_data DATE;
begin
  max_data = (select max(A.DATA) FROM TBCAIXABANCO_CONCILIACAO_LANC A WHERE A.BANCO_CODIGO = NEW.BANCO_CODIGO AND A.BANCO_CONTA = NEW.BANCO_CONTA);
  /* SE A DATA DO LANÇAMENTO IMPORTADO FOR MAIOR QUE A DATA EXISTENTE NO BANCO
     INSERIR OU ATUALIZAR NOVO REGISTRO COM A MAIOR DATA*/
  if(new.DATA > max_data or max_data IS NULL)then
  begin
     UPDATE OR INSERT INTO TBCAIXABANCO_CONCILIACAO_IMP(DATA, BANCO_CODIGO, BANCO_CONTA)
        VALUES (new.DATA, NEW.BANCO_CODIGO, NEW.BANCO_CONTA)
        MATCHING(BANCO_CODIGO, BANCO_CONTA);
  end
end;
   