CREATE TABLE TBAPP_BANCOS_UPDATE (
    ID INTEGER NOT NULL,
    APP_BANCOS_ID INTEGER,
    DISPOSITIVO_ID INTEGER,
    USUARIO_ID INTEGER);

ALTER TABLE TBAPP_BANCOS_UPDATE
ADD CONSTRAINT PK_TBAPP_BANCOS_UPDATE
PRIMARY KEY (ID);

CREATE SEQUENCE GTBAPP_BANCOS_UPDATE;

SET TERM ^ ;

create trigger ttbapp_bancos_update_b01i for tbapp_bancos_update
active before insert position 0
as
begin
  if (new.id is null) then
    new.id = gen_id(gtbapp_bancos_update,1);
end
^

SET TERM ; ^

ALTER TABLE TBAPP_BANCOS_UPDATE
    ADD DATA_UPDATE TIMESTAMP DEFAULT 'NOW';


/******************************************************************************/
/******************************************************************************/

CREATE GENERATOR GTBAPP_BANCOS_AGENDAMENTO;

CREATE TABLE TBAPP_BANCOS_AGENDAMENTO (
    ID                  INTEGER NOT NULL,
    DESCRICAO           VARCHAR(300),
    TIPO                CHAR(1),
    HORAINICIO          TIME,
    HORAFIM             TIME,
    INTERVALO           INTEGER,
    TIPO_DB             INTEGER,
    STATUS              INTEGER DEFAULT 1,
    SEG                 INTEGER DEFAULT 0,
    TER                 INTEGER DEFAULT 0,
    QUA                 INTEGER DEFAULT 0,
    QUI                 INTEGER DEFAULT 0,
    SEX                 INTEGER DEFAULT 0,
    SAB                 INTEGER DEFAULT 0,
    DOM                 INTEGER DEFAULT 0,
    DIA                 INTEGER DEFAULT 0,
    DATAHORAULTIMOEXEC  TIMESTAMP DEFAULT 'NOW',
    REPETIVEL           INTEGER
);

ALTER TABLE TBAPP_BANCOS_AGENDAMENTO ADD CONSTRAINT PK_TBAPP_BANCOS_AGENDAMENTO PRIMARY KEY (ID);

SET TERM ^ ;

/* Trigger: TTBAPP_BANCOS_AGENDAMENTO_B01D */
CREATE OR ALTER TRIGGER TTBAPP_BANCOS_AGENDAMENTO_B01D FOR TBAPP_BANCOS_AGENDAMENTO
ACTIVE BEFORE DELETE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( OLD.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Registro Excluido';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBAPP_BANCOS_AGENDAMENTO',old.ID, HISTORICO);
    END
end
^


/* Trigger: TTBAPP_BANCOS_AGENDAMENTO_B01I */
CREATE OR ALTER TRIGGER TTBAPP_BANCOS_AGENDAMENTO_B01I FOR TBAPP_BANCOS_AGENDAMENTO
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.id is null) then
    new.id = gen_id(gTBAPP_BANCOS_AGENDAMENTO,1);
end
^


/* Trigger: TTBAPP_BANCOS_AGENDAMENTO_B01U */
CREATE OR ALTER TRIGGER TTBAPP_BANCOS_AGENDAMENTO_B01U FOR TBAPP_BANCOS_AGENDAMENTO
ACTIVE BEFORE UPDATE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( OLD.DESCRICAO <> NEW.DESCRICAO) THEN
    BEGIN
        HISTORICO = HISTORICO||',Descricao:'|| OLD.DESCRICAO||'->'||NEW.DESCRICAO;
    END

    IF ( OLD.TIPO <> NEW.TIPO) THEN
    BEGIN
        HISTORICO = HISTORICO||'Tipo:'|| OLD.TIPO||'->'||NEW.TIPO;
    END

    IF ( OLD.HORAINICIO <> NEW.HORAINICIO) THEN
    BEGIN
        HISTORICO = HISTORICO||'Hora Inicio:'|| OLD.HORAINICIO||'->'||NEW.HORAINICIO;
    END

    IF ( OLD.HORAFIM <> NEW.HORAFIM) THEN
    BEGIN
        HISTORICO = HISTORICO||'Hora Fim:'|| OLD.HORAFIM||'->'||NEW.HORAFIM;
    END

    IF ( OLD.INTERVALO <> NEW.INTERVALO) THEN
    BEGIN
        HISTORICO = HISTORICO||'Intervalo:'|| OLD.INTERVALO||'->'||NEW.INTERVALO;
    END

    IF ( OLD.TIPO_DB <> NEW.TIPO_DB) THEN
    BEGIN
        HISTORICO = HISTORICO||'TIPO DB:'|| OLD.TIPO_DB||'->'||NEW.TIPO_DB;
    END

    IF ( OLD.STATUS <> NEW.STATUS) THEN
    BEGIN
        HISTORICO = HISTORICO||'Status:'|| OLD.STATUS||'->'||NEW.STATUS;
    END

    IF ( OLD.SEG <> NEW.SEG) THEN
    BEGIN
        HISTORICO = HISTORICO||'Segunda:'|| OLD.SEG||'->'||NEW.SEG;
    END

    IF ( OLD.TER <> NEW.TER) THEN
    BEGIN
        HISTORICO = HISTORICO||'Terca-Feira:'|| OLD.TER||'->'||NEW.TER;
    END

    IF ( OLD.QUA <> NEW.QUA) THEN
    BEGIN
        HISTORICO = HISTORICO||'Quarta-Feira:'|| OLD.QUA||'->'||NEW.QUA;
    END

    IF ( OLD.QUI <> NEW.QUI) THEN
    BEGIN
        HISTORICO = HISTORICO||'Quinta-Feira:'|| OLD.QUI||'->'||NEW.QUI;
    END

    IF ( OLD.SEX <> NEW.SEX) THEN
    BEGIN
        HISTORICO = HISTORICO||'Sexta-Feira:'|| OLD.SEX||'->'||NEW.SEX;
    END

    IF ( OLD.SAB <> NEW.SAB) THEN
    BEGIN
        HISTORICO = HISTORICO||'Sabado:'|| OLD.SAB||'->'||NEW.SAB;
    END

    IF ( OLD.DOM <> NEW.DOM) THEN
    BEGIN
        HISTORICO = HISTORICO||'Domingo:'|| OLD.DOM||'->'||NEW.DOM;
    END

    IF ( OLD.DIA <> NEW.DIA) THEN
    BEGIN
        HISTORICO = HISTORICO||'Dia:'|| OLD.DIA||'->'||NEW.DIA;
    END

    IF ( OLD.DATAHORAULTIMOEXEC <> NEW.DATAHORAULTIMOEXEC) THEN
    BEGIN
        HISTORICO = HISTORICO||'Data Hora Ultima Execucao:'|| OLD.DATAHORAULTIMOEXEC||'->'||NEW.DATAHORAULTIMOEXEC;
    END

    IF ( OLD.REPETIVEL <> NEW.REPETIVEL) THEN
    BEGIN
        HISTORICO = HISTORICO||'Repetivel:'|| OLD.REPETIVEL||'->'||NEW.REPETIVEL;
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBAPP_BANCOS_AGENDAMENTO',NEW.ID, HISTORICO);
    END
end
^


/* Trigger: TTBAPP_BANCOS_AGENDAMENTO_B02I */
CREATE OR ALTER TRIGGER TTBAPP_BANCOS_AGENDAMENTO_B02I FOR TBAPP_BANCOS_AGENDAMENTO
ACTIVE BEFORE INSERT POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( NEW.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Registro Incluido';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBAPP_BANCOS_AGENDAMENTO',NEW.ID, HISTORICO);
    END
end
^


/* Trigger: TTBAPP_BANCOS_AGENDAMENTO_B03IU */
CREATE OR ALTER TRIGGER TTBAPP_BANCOS_AGENDAMENTO_B03IU FOR TBAPP_BANCOS_AGENDAMENTO
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
DECLARE VARIABLE MINUTO_HORA_INICIO1 INTEGER;
DECLARE VARIABLE MINUTO_HORA_INICIO2 INTEGER;
DECLARE VARIABLE MINUTO_HORA_FIM INTEGER;
DECLARE VARIABLE MINUTO_PARAMETRO INTEGER;
BEGIN   
        
    :MINUTO_PARAMETRO = FN_PARAMETRO('SISTEMA.TEMPO_FINAL_AGENDAMENTO');
    
    IF(NEW.REPETIVEL = 0) THEN
    BEGIN
        IF(:MINUTO_PARAMETRO > 0) THEN
        BEGIN
           NEW.HORAFIM = DATEADD(MINUTE, MINUTO_PARAMETRO, NEW.HORAINICIO);
        END ELSE
        BEGIN
            NEW.HORAFIM = DATEADD(MINUTE, 60, NEW.HORAINICIO);
        END
    END

END
^


/* Trigger: TTBAPP_BANCOS_AGENDAMENTO_B0I */
CREATE OR ALTER TRIGGER TTBAPP_BANCOS_AGENDAMENTO_B0I FOR TBAPP_BANCOS_AGENDAMENTO
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.id is null) then
    new.id = gen_id(gTBAPP_BANCOS_AGENDAMENTO,1);
end
^

SET TERM ; ^