CREATE TABLE TBCONSUMO_REQUISICAO (
	ID INTEGER NOT NULL,
	DATA DATE DEFAULT 'NOW',
	DATAHORA TIMESTAMP DEFAULT 'NOW',
	USUARIO_ID INTEGER,
	ESTABELECIMENTO_ID INTEGER,
	DOCUMENTO INTEGER,
	CCUSTO VARCHAR(8),
	TURNO_ID INTEGER,
	PRODUTO_ID INTEGER,
	QUANTIDADE NUMERIC(15,4),
	TAMANHO INTEGER,
	OBSERVACAO VARCHAR(200),
	SALDO NUMERIC(15,4),
	STATUS CHAR(1) DEFAULT '1'
);

ALTER TABLE TBCONSUMO_REQUISICAO ADD CONSTRAINT PK_TBCONSUMO_REQUISICAO PRIMARY KEY (ID);

CREATE INDEX ITBCONSUMO_REQUISICAO_01 ON TBCONSUMO_REQUISICAO (STATUS);
CREATE INDEX ITBCONSUMO_REQUISICAO_02 ON TBCONSUMO_REQUISICAO (DATA);
CREATE INDEX ITBCONSUMO_REQUISICAO_03 ON TBCONSUMO_REQUISICAO (CCUSTO);
CREATE INDEX ITBCONSUMO_REQUISICAO_04 ON TBCONSUMO_REQUISICAO (PRODUTO_ID,TAMANHO);
CREATE INDEX ITBCONSUMO_REQUISICAO_05 ON TBCONSUMO_REQUISICAO (ESTABELECIMENTO_ID);
CREATE INDEX ITBCONSUMO_REQUISICAO_06 ON TBCONSUMO_REQUISICAO (DOCUMENTO);

CREATE SEQUENCE GTBCONSUMO_REQUISICAO;

CREATE OR ALTER TRIGGER TTBCONSUMO_REQUISICAO_B0I_01 FOR TBCONSUMO_REQUISICAO
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  IF (NEW.ID IS NULL) THEN
      NEW.ID = GEN_ID(GTBCONSUMO_REQUISICAO, 1);
end;

CREATE TRIGGER TTBCONSUMO_REQUISICAO_B0U_01 FOR TBCONSUMO_REQUISICAO
ACTIVE BEFORE UPDATE POSITION 0
AS
begin

    /* DEFINIR DOCUMENTO */
    IF (NEW.DOCUMENTO IS NULL) THEN
        BEGIN
        NEW.DOCUMENTO = OLD.ID;
        END
    
	/* DEFINIR STATUS */
    IF (NEW.SALDO > 0) THEN
        BEGIN
        NEW.STATUS = '1';
        END ELSE
        BEGIN
        NEW.STATUS = '0';
        END

end;

--
--

CREATE TABLE TBESTOQUE_BAIXA (
	ID INTEGER NOT NULL,
	TIPO CHAR(1),
	TABELA_ID INTEGER,
	DATAHORA TIMESTAMP DEFAULT 'NOW',
	LOCALIZACAO_ID INTEGER,
	OPERACAO_CODIGO VARCHAR(3),
	QUANTIDADE NUMERIC(15,4),
	USUARIO_ID INTEGER,
	ESTOQUE_ID INTEGER
);

ALTER TABLE TBESTOQUE_BAIXA ADD CONSTRAINT PK_TBESTOQUE_BAIXA PRIMARY KEY (ID);

CREATE INDEX ITBESTOQUE_BAIXA_01 ON TBESTOQUE_BAIXA (TIPO,TABELA_ID);
CREATE INDEX ITBESTOQUE_BAIXA_02 ON TBESTOQUE_BAIXA (ESTOQUE_ID);

COMMENT ON COLUMN TBESTOQUE_BAIXA.TIPO IS 'R = Requisicao de Consumo (TBCONSUMO_REQUISICAO)';
CREATE SEQUENCE GTBESTOQUE_BAIXA;

CREATE TRIGGER TTBESTOQUE_BAIXA_B0I_01 FOR TBESTOQUE_BAIXA
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  IF (NEW.ID IS NULL) THEN
      NEW.ID = GEN_ID(GTBESTOQUE_BAIXA, 1);
end;