
CREATE GENERATOR GTBPROGRAMACAO_UP_HORARIO;

CREATE TABLE TBPROGRAMACAO_UP_HORARIO (
    ID                 INTEGER NOT NULL,
    DATA               DATE,
    UP_ID              INTEGER,
    HORARIO_ID         INTEGER,
    PREVISAO           NUMERIC(15,4),
    DATAHORA           TIMESTAMP,
    PROX_DATAHORA      TIMESTAMP,
    DATAHORA_FIM       TIMESTAMP,
    PROX_DATAHORA_FIM  TIMESTAMP
);

ALTER TABLE TBPROGRAMACAO_UP_HORARIO ADD PRIMARY KEY (ID);

CREATE INDEX ITBPROGRAMACAO_UP_HORARIO_01 ON TBPROGRAMACAO_UP_HORARIO (DATA);
CREATE INDEX ITBPROGRAMACAO_UP_HORARIO_02 ON TBPROGRAMACAO_UP_HORARIO (UP_ID);
CREATE INDEX ITBPROGRAMACAO_UP_HORARIO_03 ON TBPROGRAMACAO_UP_HORARIO (HORARIO_ID);
CREATE INDEX ITBPROGRAMACAO_UP_HORARIO_04 ON TBPROGRAMACAO_UP_HORARIO (HORARIO_ID, UP_ID, DATA);
CREATE INDEX ITBPROGRAMACAO_UP_HORARIO_05 ON TBPROGRAMACAO_UP_HORARIO (DATAHORA, DATAHORA_FIM, HORARIO_ID, DATA, UP_ID);


CREATE OR ALTER TRIGGER TTBPROG_UP_HORARIO_B01I FOR TBPROGRAMACAO_UP_HORARIO
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.id is null) then
    new.id = gen_id(gTBPROGRAMACAO_UP_HORARIO,1);
end;

UPDATE OR INSERT INTO TBMENU (CONTROLE, GRUPO, SUBGRUPO, TIPO, URL, DESCRICAO, DATAHORA)
                      VALUES (22630, 'PCP', 'PCP', '1   ', '', 'REGISTRO DE PREVISÃO DE PRODUÇÃO POR GP', '2020-09-14 15:37:10')
                    MATCHING (CONTROLE);
UPDATE OR INSERT INTO TBMENU (CONTROLE, GRUPO, SUBGRUPO, TIPO, URL, DESCRICAO, DATAHORA)
                      VALUES (22670, 'PCP', 'PCP', '1   ', '', 'REGISTRO DE PREVISÃO DE PRODUÇÃO POR UP', '2021-07-02 09:34:53')
                    MATCHING (CONTROLE);
					
					
CREATE TABLE TBPROGRAMACAO_UP (
    ESTABELECIMENTO_CODIGO  INTEGER NOT NULL,
    FAMILIA_CODIGO          INTEGER NOT NULL,
    TURNO                   INTEGER NOT NULL,
    DATA                    DATE NOT NULL,
    CONTROLE                INTEGER NOT NULL,
    SEQUENCIA               INTEGER NOT NULL,
    UP_ID          			INTEGER,
    LINHA_CODIGO            INTEGER,
    SETOR_CODIGO            INTEGER,
    CLARO                   CHAR(1),
    ESCURO                  CHAR(1),
    TAMANHO                 INTEGER,
    QUANTIDADE              NUMERIC(10,5),
    PROCESSADO              CHAR(1) DEFAULT 0,
    QUANTIDADE_PROCESSADA   NUMERIC(10,5),
    PREVISAO                NUMERIC(10,5) DEFAULT 0
);

ALTER TABLE TBPROGRAMACAO_UP ADD PRIMARY KEY (ESTABELECIMENTO_CODIGO, FAMILIA_CODIGO, TURNO, DATA, CONTROLE, SEQUENCIA);

CREATE INDEX ITBPROGRAMACAO_UP_01 ON TBPROGRAMACAO_UP (ESTABELECIMENTO_CODIGO);
CREATE INDEX ITBPROGRAMACAO_UP_02 ON TBPROGRAMACAO_UP (FAMILIA_CODIGO);
CREATE INDEX ITBPROGRAMACAO_UP_03 ON TBPROGRAMACAO_UP (TURNO);
CREATE INDEX ITBPROGRAMACAO_UP_04 ON TBPROGRAMACAO_UP (DATA);
CREATE INDEX ITBPROGRAMACAO_UP_05 ON TBPROGRAMACAO_UP (UP_ID);
CREATE INDEX ITBPROGRAMACAO_UP_06 ON TBPROGRAMACAO_UP (SETOR_CODIGO);