CREATE TABLE TBMDF (
    ID INTEGER NOT NULL,
    ESTABELECIMENTO_ID INTEGER,
    NUMERO_MDF INTEGER,
    SERIE VARCHAR(3),
    CIDADE_ORIGEM INTEGER,
    CIDADE_DESTINO INTEGER,
    UF_ORIGEM VARCHAR(2),
    UF_DESTINO VARCHAR(2),
    TIPO_EMITENTE INTEGER,
    TIPO_TRANSPORTADOR INTEGER,
    FORMA_EMISSAO INTEGER,
    MODALIDADE_TRANSPORTE INTEGER,
    DATA_EMISSAO TIMESTAMP,
    DATAHORA_INICIO_VIAGEM TIMESTAMP,
    CHAVE_ACESSO VARCHAR(44),
    VEICULO_ID INTEGER,
    VEICULO_RNTRC INTEGER,
    VEICULO_CIOT INTEGER,
    VEICULO_PLACA VARCHAR(10),
    VEICULO_RENAVAM VARCHAR(20),
    VEICULO_TARA NUMERIC(10,2),
    VEICULO_CAPACIDADE NUMERIC(10,2),
    VEICULO_TIPO_RODADO CHAR(2),
    VEICULO_TIPO_CARROCERIA CHAR(2),
    VEICULO_UF_TRACAO VARCHAR(2),
    CONDUTOR_ID INTEGER,
    CONDUTOR_NOME VARCHAR(100),
    CONDUTOR_CPF VARCHAR(11),
    PROPRIETARIO_RNTRC INTEGER,
    PROPRIETARIO_TIPO_PROPRIEDADE CHAR(2),
    PROPRIETARIO_NOME VARCHAR(100),
    PROPRIETARIO_CNPJ VARCHAR(14),
    PROPRIETARIO_IE VARCHAR(20),
    PROPRIETARIO_UF VARCHAR(2),
    VALOR_TOTAL NUMERIC(15,2),
    PESO_TOTAL NUMERIC(15,2),
    INFORMACOES_COMPLEMENTARES VARCHAR(255),
    DATAHORA TIMESTAMP DEFAULT 'NOW',
    TIPO_MDF INTEGER,
    SITUACAO INTEGER);
	
ALTER TABLE TBMDF
ADD CONSTRAINT PK_TBMDF
PRIMARY KEY (ID);


CREATE SEQUENCE GTBMDF;

CREATE TRIGGER TBMDF_B01I FOR TBMDF
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.ID IS NULL) THEN
    NEW.ID = GEN_ID(GTBMDF,1);
END;


CREATE trigger tbmdf_b09i for tbmdf
active before insert position 9
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('TBMDF', NEW.ID, HISTORICO);
  END
END;


-- ÍNDICES
CREATE INDEX TBMDF_01
ON TBMDF (ESTABELECIMENTO_ID);

CREATE INDEX TBMDF_02
ON TBMDF (NUMERO_MDF);

CREATE INDEX TBMDF_03
ON TBMDF (CIDADE_ORIGEM);

CREATE INDEX TBMDF_04
ON TBMDF (CIDADE_DESTINO);

CREATE INDEX TBMDF_05
ON TBMDF (UF_ORIGEM);

CREATE INDEX TBMDF_06
ON TBMDF (UF_DESTINO);

CREATE INDEX TBMDF_07
ON TBMDF (CHAVE_ACESSO);

CREATE INDEX TBMDF_08
ON TBMDF (VEICULO_ID);

CREATE INDEX TBMDF_09
ON TBMDF (PROPRIETARIO_NOME);

CREATE INDEX TBMDF_10
ON TBMDF (PROPRIETARIO_CNPJ);


COMMENT ON COLUMN TBMDF.TIPO_EMITENTE IS
'1 - PRESTADOR DE SERVIÇO DE TRANSPORTE;
2 - TRANSPORTADOR DE CARGA PRÓPRIA;
3 - PRESTADOR DE SERVIÇO DE TRANSPORTE QUE EMITIRÁ CT-E GLOBALIZADO;';

COMMENT ON COLUMN TBMDF.TIPO_TRANSPORTADOR IS
'0 - NENHUM;
1 - ETC(EMPRESA DE TRANSPORTE DE CARGAS);
2 - TAC(TRANSPORTADOR AUTÔNOMO DE CARGAS);
3 - CTC(COOPERATIVA DE TRANSPORTE DE CARGAS);';

COMMENT ON COLUMN TBMDF.FORMA_EMISSAO IS
'1 - NORMAL;
2 - CONTINGÊNCIA;';


COMMENT ON COLUMN TBMDF.MODALIDADE_TRANSPORTE IS
'1 - RODOVIÁRIO;
2 - AÉREO;
3 - AQUAVIÁRIO;
4 - FERROVIÁRIO;';

COMMENT ON COLUMN TBMDF.TIPO_MDF IS
'0 - MDF-E PARA NF-E DE ENTRADA;
1 - MDF-E PARA NF-E DE SAÍDA;';

COMMENT ON COLUMN TBMDF.SITUACAO IS
'0 - ATIVO;
1 - AUTORIZADO;
2 - CAMCELADO;
3 - ENCERRADO;
4 - DENEGADO';