
-- ------------------------------------------------------------
-- Tabela {financ_rp_cl} Versao {001}  Esquema {Empresa} Descricao {Movimentacao classes do receber/pagar}
-- ------------------------------------------------------------

CREATE TABLE financ_rp_cl (
  id SERIAL NOT NULL,
  financ_classificacao_g_id INT NOT NULL,
  financ_rp_id INT NOT NULL,
  cad_cadastro_id INT NOT NULL,
  tipo CHAR(2) NOT NULL,
  regimecaixa BOOL NULL,
  regimecompetencia BOOL NULL,
  natureza CHAR(7) NOT NULL,
  datalcto DATE NULL,
  valor DECIMAL(14,2) NULL,
  PRIMARY KEY(id),
  CONSTRAINT unique_index_movtocl UNIQUE(id, financ_classificacao_g_id, cad_cadastro_id, financ_rp_id),
  FOREIGN KEY(financ_classificacao_g_id)
    REFERENCES financ_classificacao_g(id)
      ON DELETE CASCADE
      ON UPDATE NO ACTION,
  FOREIGN KEY(financ_rp_id)
    REFERENCES financ_rp(id)
      ON DELETE CASCADE
      ON UPDATE NO ACTION    
);


-- ------------------------------------------------------------
-- Tabela {financ_cc_saldo} Versao {002}  Esquema {Empresa} Descricao {Saldo Conta Correntes}
-- ------------------------------------------------------------

CREATE TABLE financ_cc_saldo (
  idcc INT NOT NULL,
  datasaldo DATE NOT NULL,
  naturezasaldo char(1) NOT NULL,
  saldo NUMERIC(16,4) NULL DEFAULT 0,
  PRIMARY KEY(idcc, naturezasaldo, datasaldo)
);

-- ------------------------------------------------------------
-- Tabela {financ_cc_movto} Versao {011}  Esquema {Empresa} Descricao {Movimenta??o Conta Correntes}
-- ------------------------------------------------------------

CREATE TABLE financ_cc_movto (
  controle SERIAL NOT NULL,
  financ_cc_id INT NOT NULL,
  documento VARCHAR(50) NULL,
  nominal VARCHAR(50) NULL,
  cad_filial_id INT4 NULL,
  fat_transacao_id INT4 NOT NULL,
  cad_cadastro_id INT4 NULL,
  data_emissao DATE NOT NULL,
  data_vencimento DATE NULL,
  data_referencia DATE NULL,
  historico VARCHAR(1024) NULL,
  natureza VARCHAR(20) NULL,
  valor NUMERIC(13,2) NULL,
  conciliado BOOL NULL,
  data_conciliacao DATE NULL,
  conta_transf INT4 NULL,
  cc_controle_conta_transf INT4 NULL,
  contas_receber_pagar BOOL NULL,
  chave_receber_pagar VARCHAR(30) NULL,
  cancelado BOOL NULL,
  valor_cancelado NUMERIC(13,2) NULL,
  integracao VARCHAR(100) NULL,
  financ_rpbaixa_lcto INT NULL,
  financ_rp_lctobaixa_lcto INT NULL,
  dataalteracao DATE NULL,
  horaalteracao TIME NULL,
  usuarioalteracao VARCHAR(20) NULL,
  datainclusao DATE NULL,
  horainclusao TIME NULL,
  usuarioinclusao VARCHAR(20) NULL,
  PRIMARY KEY(controle)
);

-- ------------------------------------------------------------
-- Tabela {financ_cc_movto_transf} Versao {001}  Esquema {Empresa} Descricao {Movimentao Conta Correntes - Transferencia entre contas}
-- ------------------------------------------------------------

CREATE TABLE financ_cc_movto_transf (
  id SERIAL NOT NULL,
  financ_cc_movto_controle_origem  INT NOT NULL,
  financ_cc_movto_controle_destino INT NOT NULL,
  PRIMARY KEY(id),
  FOREIGN KEY(financ_cc_movto_controle_origem)
    REFERENCES financ_cc_movto(controle)
      ON DELETE CASCADE
      ON UPDATE CASCADE,
  FOREIGN KEY(financ_cc_movto_controle_destino)
    REFERENCES financ_cc_movto(controle)
      ON DELETE CASCADE
      ON UPDATE CASCADE    
);

-- ------------------------------------------------------------
-- Tabela {cad_cadastro_complemento} Versao {001}  Esquema {Empresa} Descricao {Cadastro  Geral - Complemento}
-- ------------------------------------------------------------

CREATE TABLE cad_cadastro_complemento (
  id SERIAL NOT NULL,
  cad_cadastro_id INT NOT NULL,
  classificacao VARCHAR(80) NULL,
  descricao VARCHAR(250) NULL,
  PRIMARY KEY(id),
  FOREIGN KEY(cad_cadastro_id)
    REFERENCES cad_cadastro(id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {fat_diretiva_regra_propriedade} Versao {009}  Esquema {padrao} Descricao {Cadastro de  Regras - Propriedades} 
-- ------------------------------------------------------------

CREATE TABLE fat_diretiva_regra_propriedade (
  fat_diretiva_id INT NOT NULL,
  fat_diretiva_regra_id INT NOT NULL,
  propriedade VARCHAR(60) NOT NULL,
  regra_descricao VARCHAR(120) NULL,
  dataalteracao DATE NULL,
  horaalteracao TIME NULL,
  usuarioalteracao VARCHAR(20) NULL,
  datainclusao DATE NULL,
  horainclusao TIME NULL,
  usuarioinclusao VARCHAR(20) NULL,
  PRIMARY KEY(fat_diretiva_id, fat_diretiva_regra_id, propriedade),
  FOREIGN KEY(fat_diretiva_regra_id, fat_diretiva_id)
    REFERENCES fat_diretiva_regra(id, fat_diretiva_id)
      ON DELETE NO ACTION
      ON UPDATE CASCADE
);

-- ------------------------------------------------------------
-- Tabela {ef_cartacorrecao} Versao {005} Esquema {Empresa} Descricao {Escrita Fiscal - Lcto carta de correcao}
-- ------------------------------------------------------------

CREATE TABLE ef_cartacorrecao (
  id SERIAL NOT NULL,
  dataemissao DATE NULL,
  cad_cadastro_id INT NOT NULL,
  cadastro_razaosocial VARCHAR(60) NULL,
  cadastro_fantasia VARCHAR(50) NULL,
  cadastro_endereco VARCHAR(80) NULL,
  cadastro_numero VARCHAR(20) NULL,
  cadastro_complemento VARCHAR(80) NULL,
  cadastro_bairro VARCHAR(40) NULL,
  cadastro_cep VARCHAR(20) NULL,
  cadastro_mun_id INT4 NULL,
  cadastro_municipio VARCHAR(30) NULL,
  cadastro_uf VARCHAR(02) NULL,
  suanfnumero INT4 NULL,
  suaserie_id VARCHAR(04) NULL,
  suaemissao DATE NULL,
  nossanfnumero INT4 NULL,
  nossaserie_id VARCHAR(04) NULL,
  nossaemissao DATE NULL,
  cad_filial_id INT4 NULL,
  dataalteracao DATE NULL,
  horaalteracao TIME NULL,
  usuarioalteracao VARCHAR(20) NULL,
  datainclusao DATE NULL,
  horainclusao TIME NULL,
  usuarioinclusao VARCHAR(20) NULL,
  seqevento int,
  cstatus int,
  status VARCHAR(80),
  log TEXT,
  xmlassinado TEXT,
  xmlretorno TEXT,
  xmldistribuicao TEXT,
  ambiente char(1),
  protocolo varchar(15),
  PRIMARY KEY(id),
  FOREIGN KEY(cad_cadastro_id)
    REFERENCES cad_cadastro(id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {fat_cotacao_f_p} Versao {002}  Esquema {Empresa} Descricao {Cotacao - Fornecedor  produtos}
-- ------------------------------------------------------------

CREATE TABLE fat_cotacao_f_p (
  fat_produto_id INT NOT NULL,
  fat_cotacao_f_fat_cotacao_id SERIAL NOT NULL,
  fat_cotacao_f_cad_cadastro_id INT NOT NULL,
  fat_cotacao_id Varchar(20) NULL,
  valor_unitario DECIMAL(16,4) NULL,
  percentual_desconto DECIMAL(10,6) NULL,
  percentual_acrescimo DECIMAL(10,6) NULL,
  valor_unitario_liquido DECIMAL(16,4) NULL,
  valor_total DECIMAL(16,4) NULL,
  valor_total_liquido DECIMAL(16,4) NULL,
  observacao TEXT NULL,
  PRIMARY KEY(fat_produto_id),
  FOREIGN KEY(fat_cotacao_f_cad_cadastro_id, fat_cotacao_f_fat_cotacao_id)
    REFERENCES fat_cotacao_f(cad_cadastro_id, fat_cotacao_id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {fat_listapre_tabela_condpg} Versao {003}  Esquema {Empresa} Descricao {Cadastro Produto - Precos-condicoes pgto}
-- ------------------------------------------------------------

CREATE TABLE fat_listapre_tabela_condpg (
  fat_condpg_id INT NOT NULL,
  fat_listapre_tabela_tabela_id INT NOT NULL,
  fat_listapre_tabela_fat_listapre_id INT NOT NULL,
  PRIMARY KEY(fat_listapre_tabela_tabela_id, fat_listapre_tabela_fat_listapre_id, fat_condpg_id),
  FOREIGN KEY(fat_listapre_tabela_tabela_id, fat_listapre_tabela_fat_listapre_id)
    REFERENCES fat_listapre_tabela(tabela_id, fat_listapre_id)
      ON DELETE CASCADE
      ON UPDATE NO ACTION
);


-- ------------------------------------------------------------
-- Tabela {fat_docto_pi} Versao {006}  Esquema {Empresa} Descricao {Movimentacao  Documentos pedido  itens}
-- ------------------------------------------------------------

CREATE TABLE fat_docto_pi (
  fat_produto_id INT4 NOT NULL,
  fat_docto_pc_fat_docto_c_controle INT8 NOT NULL,
  cad_filial_id INT4 NULL,
  tipo VARCHAR(20) NULL,
  data_p DATE NULL,
  qtde DECIMAL(16,6) NULL,
  qtde_atendida DECIMAL(16,6) NULL,
  qtde_naoatendida DECIMAL(16,6) NULL,
  qtde_cancelada DECIMAL(16,6) NULL,
  qtde_pendente DECIMAL(16,6) NULL,
  PRIMARY KEY(fat_produto_id, fat_docto_pc_fat_docto_c_controle),
  FOREIGN KEY(fat_docto_pc_fat_docto_c_controle)
    REFERENCES fat_docto_pc(fat_docto_c_controle)
      ON DELETE CASCADE
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {fat_docto_nfe_notafiscal} Versao {001} Esquema {Empresa} Descricao {docto - integracao com nfe - nota fiscal}
-- ------------------------------------------------------------

CREATE TABLE fat_docto_nfe_notafiscal (
  fat_docto_c_controle INT8 NOT NULL,
  id_documento INT8 NOT NULL,
  tipo_emissao_enum INT NULL,
  n_nf VARCHAR(9) NULL,
  c_nf VARCHAR(9) NULL,
  c_dv VARCHAR(1) NULL,
  recibo VARCHAR(15) NULL,
  documento_dest VARCHAR(14) NULL,
  uf_dest VARCHAR(2) NULL,
  data_emissao_nf DATE NULL,
  data_atualizacao_nf DATE NULL,
  data_danfe DATE NULL,
  situacao_nf_enum INT NULL,
  c_erro VARCHAR(3) NULL,
  mensagem_erro VARCHAR(255) NULL,
  exportada CHAR(1) NULL,
  PRIMARY KEY(fat_docto_c_controle),
  FOREIGN KEY(id_documento)
    REFERENCES fat_docto_nfe_documento(id_documento)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {ef_lctocorrecao} Versao {001} Esquema {Empresa} Descricao {Escrita Fiscal - Lcto carta de correcao (2)}
-- ------------------------------------------------------------

CREATE TABLE ef_lctocorrecao (
  ef_irregularidade_id INT NOT NULL,
  ef_cartacorrecao_id INT NOT NULL,
  retificacao VARCHAR(80) NULL,
  dataalteracao DATE NULL,
  horaalteracao TIME NULL,
  usuarioalteracao VARCHAR(20) NULL,
  datainclusao DATE NULL,
  horainclusao TIME NULL,
  usuarioinclusao VARCHAR(20) NULL,
  FOREIGN KEY(ef_irregularidade_id)
    REFERENCES ef_irregularidade(id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION,
  FOREIGN KEY(ef_cartacorrecao_id)
    REFERENCES ef_cartacorrecao(id)
      ON DELETE CASCADE
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {ef_cartacorrecao_anexos} Versao {002} Esquema {Empresa} Descricao {Carta Correcao - anexos}
-- ------------------------------------------------------------

CREATE TABLE ef_cartacorrecao_anexos (
  ef_cartacorrecao_id INT NOT NULL,
  cad_arquivos_id INT NOT NULL,
  observacao TEXT NULL,
  PRIMARY KEY(ef_cartacorrecao_id, cad_arquivos_id),
  FOREIGN KEY(ef_cartacorrecao_id)
    REFERENCES ef_cartacorrecao(id)
      ON DELETE CASCADE
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {financ_rp_chpd} Versao {009}  Esquema {Empresa} Descricao {Receber - Cheques pre datados}
-- ------------------------------------------------------------

CREATE TABLE financ_rp_chpd (
  lcto SERIAL NOT NULL,
  financ_cc_movto_controle INT NULL,
  fat_transacao_id INT NULL,
  cad_cadastro_id INT NULL,
  cad_filial_id INT NULL,
  valor DECIMAL(16,4) NULL,
  emissao DATE NULL,
  vcto DATE NULL,
  prorrogacao DATE NULL,
  documento VARCHAR(40) NULL,
  banco_id INT NULL,
  agencia_id VARCHAR(15) NULL,
  numeroconta VARCHAR(20) NULL,
  cpf VARCHAR(20) NULL,
  cnpj VARCHAR(30) NULL,
  nomeemitente VARCHAR(60) NULL,
  baixado BOOL NULL,
  databaixa DATE NULL,
  financ_cc_movto_controle_bxchpd INT8 NULL,
  financ_rp_lctobaixa_lcto INT NULL,
  datainclusao DATE NULL,
  horainclusao TIME NULL,
  usuarioinclusao VARCHAR(20) NULL,
  dataalteracao DATE NULL,
  horaalteracao TIME NULL,
  usuarioalteracao VARCHAR(20) NULL,
  PRIMARY KEY(lcto),
  FOREIGN KEY(cad_cadastro_id)
    REFERENCES cad_cadastro(id)
      ON DELETE CASCADE
      ON UPDATE NO ACTION,
  FOREIGN KEY(financ_cc_movto_controle)
    REFERENCES financ_cc_movto(controle)
      ON DELETE CASCADE
      ON UPDATE NO ACTION
);
-- ------------------------------------------------------------
-- Tabela {fat_produto_preco} Versao {009}  Esquema {Empresa} Descricao {Cadastro Produto - Precos}
-- ------------------------------------------------------------

CREATE TABLE fat_produto_preco (
  id SERIAL NOT NULL,
  fat_produto_id INT NOT NULL,
  fat_listapre_tabela_tabela_id INT NOT NULL,
  fat_listapre_tabela_fat_listapre_id INT NOT NULL,
  preco DECIMAL(20,6) NULL,
  observacao TEXT NULL,
  dataalteracao DATE NULL,
  horaalteracao TIME NULL,
  usuarioalteracao VARCHAR(40) NULL,
  datainclusao DATE NULL,
  horainclusao TIME NULL,
  usuarioinclusao VARCHAR(40) NULL,
  PRIMARY KEY(id),
  CONSTRAINT  unique_index_produto_preco UNIQUE (fat_produto_id, fat_listapre_tabela_tabela_id, fat_listapre_tabela_fat_listapre_id),
  FOREIGN KEY(fat_listapre_tabela_tabela_id, fat_listapre_tabela_fat_listapre_id)
    REFERENCES fat_listapre_tabela(tabela_id, fat_listapre_id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {financ_cc_movcl} Versao {004}  Esquema  {Empresa} Descricao {Movimentacao Classe Gerencial Regime Caixa}
-- ------------------------------------------------------------

CREATE TABLE financ_cc_movcl (
  lancamento SERIAL NOT NULL,
  financ_cc_id INT NULL,
  financ_classificacao_g_id INT NOT NULL,
  financ_cc_movto_controle INT NOT NULL,
  datalcto DATE NULL,
  natureza VARCHAR(20) NULL,
  valor NUMERIC(16,4) NULL,
  tipolcto VARCHAR(20) NULL,
  dataalteracao DATE NULL,
  horaalteracao TIME NULL,
  usuarioalteracao VARCHAR(20) NULL,
  datainclusao DATE NULL,
  horainclusao TIME NULL,
  usuarioinclusao VARCHAR(20) NULL,
  PRIMARY KEY(lancamento),
  FOREIGN KEY(financ_cc_movto_controle)
    REFERENCES financ_cc_movto(controle)
      ON DELETE CASCADE
      ON UPDATE CASCADE,
  FOREIGN KEY(financ_classificacao_g_id)
    REFERENCES financ_classificacao_g(id)
      ON DELETE CASCADE
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {financ_rp_lctobaixa} Versao {007}  Esquema {Empresa} Descricao {Lcto baixa contas receber e pagar}
-- ------------------------------------------------------------

CREATE TABLE financ_rp_lctobaixa (
  lcto SERIAL NOT NULL,
  tiporp VARCHAR(40) NULL,
  financ_cc_movto_controle INT NULL,
  financ_cc_id INT NOT NULL,
  financ_rp_baixas_id INT NULL,
  fat_transacao_id INT NOT NULL,
  cad_cadastro_id INT NULL,
  nominal VARCHAR(50) NULL,
  natureza Varchar(20) NULL,
  valorbruto DECIMAL(14,4) NULL,
  valortroco DECIMAL(14,4) NULL,
  valorjuros DECIMAL(14,4) NULL,
  valordesconto DECIMAL(14,4) NULL,
  valordespesa DECIMAL(14,4) NULL,
  valordevolucao DECIMAL(14,4) NULL,
  valorliquido DECIMAL(14,4) NULL,
  emissao DATE NULL,
  vcto DATE NULL,
  docto VARCHAR(40) NULL,
  banco_id INT4 NULL,
  agencia_id Varchar(20) NULL,
  numerocc VARCHAR(20) NULL,
  emitente VARCHAR(50) NULL,
  cpf VARCHAR(20) NULL,
  cnpj VARCHAR(20) NULL,
  numerocartaocredito VARCHAR(40) NULL,
  dvcartaocredito Varchar(20) NULL,
  vctocartaocredito VARCHAR(20) NULL,
  obs TEXT NULL,
  PRIMARY KEY(lcto),
  FOREIGN KEY(financ_cc_movto_controle)
    REFERENCES financ_cc_movto(controle)
      ON DELETE CASCADE
      ON UPDATE NO ACTION   
);

-- ------------------------------------------------------------
-- Tabela {financ_rp_baixas} Versao {005}  Esquema {Empresa} Descricao {Contas a Receber e Pagar - Baixas}
-- ------------------------------------------------------------

CREATE TABLE financ_rp_baixas (
  id SERIAL NOT NULL,
  financ_rp_id INT NOT NULL,
  financ_rp_lctobaixa_lcto INT NOT NULL,
  datapgto DATE NULL,
  valor_recebido DECIMAL(14,2) NULL,
  valor_juros DECIMAL(14,2) NULL,
  valor_despesasac DECIMAL(14,2) NULL,
  valor_devolucaom DECIMAL(14,2) NULL,
  valor_descontos DECIMAL(14,2) NULL,
  valor_liquido DECIMAL(14,2) NULL,
  docto VARCHAR(40) NULL,
  historico TEXT NULL,
  fat_docto_c_controle BIGINT NULL,
  financ_cc_movto_controle BIGINT NULL,
  fat_transacao_id INT NULL,
  datainclusao DATE NULL,
  horainclusao TIME NULL,
  usuarioinclusao VARCHAR(20) NULL,
  dataalteracao DATE NULL,
  horaaleracao TIME NULL,
  usuarioalteracao VARCHAR(20) NULL,
  PRIMARY KEY(id),
  FOREIGN KEY(financ_rp_id)
    REFERENCES financ_rp(id)
      ON DELETE CASCADE
      ON UPDATE NO ACTION,  
  FOREIGN KEY(financ_rp_lctobaixa_lcto)
    REFERENCES financ_rp_lctobaixa(lcto)
      ON DELETE CASCADE
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {fat_textoadic} Versao {001}  Esquema {padrao} Descricao {Texto Adicional}
-- ------------------------------------------------------------

CREATE TABLE fat_textoadic(
  id SERIAL NOT NULL,
  texto TEXT NOT NULL,
  PRIMARY KEY(id)
);

-- ------------------------------------------------------------
-- Tabela {financ_reciboavulso} Versao {007}  Esquema {Empresa} Descricao {Recibo de Pagamento e Recebimento}
-- ------------------------------------------------------------

CREATE TABLE financ_reciboavulso(
  numero SERIAL NOT NULL,
  valor DECIMAL(14,2) NULL,
  cad_cadastro_recebedor INT4 NULL,
  rec_nome VARCHAR(60) NULL,
  cad_mun_recebedor INT NULL,
  rec_municipio VARCHAR(40) NULL,
  rec_uf VARCHAR(2) NULL,
  rec_pessoa character varying(20),
  rec_cnpj_cpf VARCHAR(20) NULL,
  rec_ie_rg VARCHAR(20) NULL,
  rec_telefone VARCHAR(20) NULL,
  cad_cadastro_pagador INT4 NULL,
  pag_nome VARCHAR(60) NULL,
  cad_mun_pagador INT NULL,
  pag_municipio VARCHAR(40) NULL,
  pag_uf VARCHAR(2) NULL,
  pag_endereco VARCHAR(60) NULL,
  pag_complemento VARCHAR(60) NULL,
  pag_bairro VARCHAR(60) NULL,
  pag_pessoa character varying(20),
  pag_cpf_cnpj VARCHAR(20) NULL,
  pag_telefone VARCHAR(20) NULL,
  referencia TEXT NULL,
  tiporp VARCHAR(40) NULL,
  numerocc VARCHAR(20) NULL,
  numerocheque INT NULL,
  financ_banco_id INT NULL,
  financ_agencia_id VARCHAR(15) NULL,
  numerocartao VARCHAR(40) NULL,
  dvcartao VARCHAR(20) NULL,
  data_pagamento DATE NOT NULL,
  PRIMARY KEY(numero)
);

-- ------------------------------------------------------------
-- Tabela {fat_manutencaoprecos} Versao {007}  Esquema {Empresa} Descricao {Manutencao de Precos}
-- ------------------------------------------------------------

CREATE TABLE fat_manutencaoprecos(
  id SERIAL NOT NULL,
  tipocusto VARCHAR NULL,
  fat_produto_id INT NULL,
  fat_encargo_id INT NULL,
  imposto_s_venda DECIMAL(14,2) NULL,
  custocompra DECIMAL(14,2) NULL,
  acrescimofinanceiro DECIMAL(14,2) NULL,
  despesaoperacional DECIMAL(14,2) NULL,
  outros DECIMAL(14,2),
  comissao DECIMAL(14,2) NULL,
  totalencargos DECIMAL(14,2) NULL,
  rec_telefone DECIMAL(14,2) NULL,
  valorencargo DECIMAL(14,2) NULL,
  totalcustovenda DECIMAL(14,2) NULL,
  valorcustovenda DECIMAL(14,2) NULL,
  lucros_s_precovenda DECIMAL(14,2) NULL,
  valorprecovenda DECIMAL(14,2) NULL,
  lucro_s_precocusto DECIMAL(14,2) NULL,
  valorprecocusto DECIMAL(14,2) NULL,
  precovenda DECIMAL(14,2) NULL,
  precovendaatual DECIMAL(14,2),
  cad_filial_id int NULL,
  data DATE null,	
  PRIMARY KEY(id)
);

-- ------------------------------------------------------------
-- Tabela {fat_notapesagem} Versao {011}  Esquema {Empresa} Descricao {Nota de Pesagem}
-- ------------------------------------------------------------

CREATE TABLE fat_notapesagem(
  id SERIAL 	   NOT NULL,
  cad_filial_id    INT,
  fat_transacao_id INT,
  cad_motorista_id INT,
  cad_produto_id   INT,
  cad_produtor_id  INT,
  tipopesagem      VARCHAR(20),
  dataemissao      DATE,
  datachegada      DATE,
  anosafra         VARCHAR(4),
  notafiscal       VARCHAR(20),
  placa            VARCHAR(8),
  unidadedescarga  VARCHAR(10),
  renda1           NUMERIC(9,4),
  renda2           NUMERIC(9,4),
  renda3           NUMERIC(9,4),
  renda            NUMERIC(9,4),
  precoporgrama    DECIMAL(14,4),
  precoporkilo     DECIMAL(14,4),
  precoportonelada DECIMAL(14,4),
  precofreteportonelada DECIMAL(14,4),
  valortotal       DECIMAL(14,4),
  valortotalliquido  DECIMAL(14,4),
  horapesobruto    TIME,
  horatara         TIME,
  datatara         DATE,
  pesobruto        DECIMAL(14,4),
  tara             DECIMAL(14,4),
  pesoliquido      DECIMAL(14,4),
  pesoembalagem    DECIMAL(14,4),
  pesoliquido2     DECIMAL(14,4),
  pesoumidade      DECIMAL(14,4),
  pesoimpureza     DECIMAL(14,4),
  pesoavariado     DECIMAL(14,4),
  pesoquirera      DECIMAL(14,4),
  pesopagar        DECIMAL(14,4),
  umidade          DECIMAL(14,4),
  impureza         DECIMAL(14,4),
  avariado         DECIMAL(14,4),
  quirera          DECIMAL(14,4),
  emitida          BOOLEAN,
  documentogerado  BOOLEAN,
  basecalculoicms  DECIMAL(14,2),
  percentualicms   DECIMAL(14,2),
  valorfunrural    DECIMAL(14,2),
  valorfrete       DECIMAL(14,2),
  basecalculofunrural  DECIMAL(14,2),
  percentualfunrural   DECIMAL(14,2),
  valoricms        DECIMAL(14,2),
  observacao       VARCHAR(100),
  localentrega     VARCHAR(30),
  nopatio          BOOLEAN,
  ultimaalteracao  TIME,
  datainclusao     DATE,
  horainclusao     TIME,
  usuarioinclusao  VARCHAR(20),
  dataalteracao    DATE,
  horaalteracao    TIME,
  usuarioalteracao VARCHAR(20),
  PRIMARY KEY(id)
);

-- ------------------------------------------------------------
-- Tabela {fat_notapesagem_p} Versao {001}  Esquema {Empresa} Descricao {Nota de Pesagem - Parceiros}
-- ------------------------------------------------------------

CREATE TABLE fat_notapesagem_p(
  id                 SERIAL NOT NULL,
  fat_notapesagem_id INT    NOT NULL,
  cad_cadastro_id    INT    NOT NULL, 
  percentual         DECIMAL(8,2),
  fat_condpg_id      INT4 NULL,
  peso_pagar         DECIMAL(14,4),
  qtde               DECIMAL(14,4),
  valor_unitario     DECIMAL(16,6),
  valor_total        DECIMAL(16,6),
  PRIMARY KEY(id),
  FOREIGN KEY(fat_notapesagem_id)
    REFERENCES fat_notapesagem(id)
      ON DELETE CASCADE
      ON UPDATE NO ACTION
);


-- ------------------------------------------------------------
-- Tabela {fat_etiqprod} Versao {003}  Esquema {Empresa} Descricao {Etiqueta de produto}
-- ------------------------------------------------------------

CREATE TABLE fat_etiqprod(
  id SERIAL 	   NOT NULL,
  fat_produto_id   INT,
  linha            INT,
  coluna           INT,
  data             DATE,
  qtde             INT,
  PRIMARY KEY(id),
  FOREIGN KEY(fat_produto_id) REFERENCES fat_produto(id)
);

-- ------------------------------------------------------------
-- Tabela {cad_veiculo} Versao {005}  Esquema {Empresa} Descricao {Cadastro de veiculos}
-- ------------------------------------------------------------

Create table cad_veiculo(
	id SERIAL NOT NULL,
	descricaoveiculo VARCHAR(40),
	ano INT,
	modelo INT,
	cor VARCHAR(15),
	tipo VARCHAR(20),
	placa1 VARCHAR(8),
	placa2 VARCHAR(8),
	placa3 VARCHAR(8),
	capacidadecarga NUMERIC(10,4),
	chassi VARCHAR(17),
	renavam VARCHAR(13),
	hp INT,
	combustivel VARCHAR(30),
	velocidademaxima INT,
	numeixo INT,
	seguradora VARCHAR(30),
	vigenciaini DATE,
	vigenciafin DATE,
	cad_cadastro_id_proprietario INT,
	cad_cadastro_id_motorista INT,
	fat_marca_id INT REFERENCES fat_marca (id),
	cad_mun_id INT REFERENCES cad_mun (id),
 	PRIMARY KEY (id)
);

-- ------------------------------------------------------------
-- Tabela {fat_ordemservico} Versao {001}  Esquema {Empresa} Descricao {Ordem de servico}
-- ------------------------------------------------------------

Create table fat_ordemservico(
	id SERIAL NOT NULL,
	usuario VARCHAR(30),
	cad_consignatario_id INT ,
	fretepago BOOLEAN,
	exportacao BOOLEAN,
	tarifafrete DECIMAL(10,2),
	tipopedagio Char(1),
	pedagio DECIMAL(10,2),
	motpedagio DECIMAL(10,2),
	fretecombinado DECIMAL(10,2),
	tolerancia DECIMAL(10,2),
	numpedido INT,
	qtdetonelada DECIMAL(10,2),
	saldotonelada DECIMAL(10,4),
	ondermconcluida BOOLEAN,
	emissao DATE,
	tipoveiculo VARCHAR(50),
	obs VARCHAR(50),
 	cad_remetente_id INT REFERENCES cad_cadastro (id),
	cad_destinatario_id INT REFERENCES cad_cadastro (id),
	cad_mun_coleta_id INT REFERENCES cad_mun (id),
	cad_mun_entrega_id INT REFERENCES cad_mun (id),
	cad_mun_calcular_id INT REFERENCES cad_mun (id),
	fat_condpgto_id INT REFERENCES fat_condpg (id),
 	PRIMARY KEY (id)
);

-- ------------------------------------------------------------
-- Tabela {fat_ordemcarregamento} Versao {001}  Esquema {Empresa} Descricao {Ordem de carregamento}
-- ------------------------------------------------------------

Create table fat_ordemcarregamento(
	id SERIAL NOT NULL,
	emissao DATE,
	qtde INT,
	obs VARCHAR(50),
	obsinterna VARCHAR(50),
	usuario VARCHAR(40),
	cad_veiculo_id INT REFERENCES cad_veiculo (id),
	fat_ordemservico_id INT REFERENCES fat_ordemservico (id),
	cad_motorista_id INT REFERENCES cad_cadastro (id),
 	PRIMARY KEY (id)
);

-- ------------------------------------------------------------
-- Tabela {fat_ctrc} Versao {001}  Esquema {Empresa} Descricao {Reconhecimento de carga eletronica}
-- ------------------------------------------------------------

Create table fat_ctrc(
	id SERIAL NOT NULL,
	emissao DATE,
	fretepago BOOLEAN,
	calculafrete Char(1),
	tarifa DECIMAL(10,2),
	tonelada DECIMAL(10,2),
	arredonda DECIMAL(10,2),
	segoutros DECIMAL(10,2),
	segoutrosd DECIMAL(10,2),
	calcfaltmerc Char(1),
	faltamerc DECIMAL(10,2),
	pedagio DECIMAL(10,2),
	total DECIMAL(10,2),
	placa VARCHAR(50),
	obs1 VARCHAR(50),
	obs2 VARCHAR(40),
	fretecombinado DECIMAL(10,2),
	tolerancia DECIMAL(10,2),
	pesotolerancia DECIMAL(10,2),
	pesochegada DECIMAL(10,2),
	valorfrete DECIMAL(10,2),
	sestsenat DECIMAL(10,2),
	fundocapita DECIMAL(10,2),
	medidaprovisoria2025 DECIMAL(10,2),
	irrf DECIMAL(10,2),
	adto DECIMAL(10,2),
	adtocartafrete BOOLEAN,
	adtocliente DECIMAL(10,2),
	faltmerc DECIMAL(10,2),
	pedagpagadiant DECIMAL(10,2),
	motpedagio DECIMAL(10,2),
	icms DECIMAL(10,2),
	classificacao DECIMAL(10,2),
	estadia DECIMAL(10,2),
	areceber DECIMAL(10,2),
	complfrete DECIMAL(10,2),
	recebercf BOOLEAN,
	calcfalta Char(1),
	rfc VARCHAR(20),
	comissao DECIMAL(10,2),
	qtdeembar INT,
	datachegada DATE,
	horachegada TIME,
	datadescarga DATE,
	horadescarga TIME,
	totalhora TIME,
	horaestadia TIME,
	horatolerancia TIME,
	horareducai TIME,
	precoestadia DECIMAL(10,2),
	estadiav DECIMAL(10,2),
	ordemcarga INT,
	descadto BOOLEAN,
	tituloadto VARCHAR(12),
	exportacao BOOLEAN,
	kminicial INT,
	kmfinal INT,
	obs INT,
	calcseg BOOLEAN,
	segcarga DECIMAL(10,2),
	fretemes DECIMAL(10,2),
	tipoinss Char(1),
 	fat_ordemserv_id INT REFERENCES fat_ordemservico (id),
	cad_motorista_id INT REFERENCES cad_cadastro (id),
 	PRIMARY KEY (id)
);

-- ------------------------------------------------------------
-- Tabela {fat_crtc_item} Versao {001}  Esquema {Empresa} Descricao {Item do reconhecimento de carga eletronica}
-- ------------------------------------------------------------

Create table fat_crtc_item(
	natureza VARCHAR(10),
	fat_ctrc_id INT NOT NULL,
	fat_produto_id INT NOT NULL,
	fat_ordemcagto_id INT NOT NULL,
	nf VARCHAR(10),
	valor DECIMAL(10,2),
	kg DECIMAL(7,3),
	qtde INT,
	especie VARCHAR(10),
	cad_marca_id INT  REFERENCES fat_marca (id),
	numero INT,
 	PRIMARY KEY (fat_ctrc_id, fat_produto_id, fat_ordemcagto_id),
 	FOREIGN KEY (fat_ctrc_id) REFERENCES fat_ctrc (id),
 	FOREIGN KEY (fat_produto_id) REFERENCES fat_produto (id),
 	FOREIGN KEY (fat_ordemcagto_id) REFERENCES fat_ordemcarregamento (id)
);

-- ------------------------------------------------------------
-- Tabela {ef_inutilizacao} Versao {071}  Esquema {Empresa} Descricao {Cadastro de inutilizacao NFe}
-- ------------------------------------------------------------

Create table ef_inutilizacao(
	id SERIAL NOT NULL,
	justificativa VARCHAR(150) NOT NULL,
	serie_id VARCHAR(3) NOT NULL,
	seriedocto_codigo VARCHAR(3) NULL,
	seriedocto_id INT NULL,
	ano int NOT NULL,
	numeroinicial int NOT NULL,
	numerofinal int NOT NULL,
	status VARCHAR(80),
	statuslcto INT NULL,
	log TEXT,
	xmlassinado TEXT,
	ambiente char(1),
	protocolo VARCHAR(30),
 	PRIMARY KEY (id)
);

-- ------------------------------------------------------------
-- Tabela {financ_analisecred} Versao {004}  Esquema {Empresa} Descricao {Analise de Credito}
-- ------------------------------------------------------------

CREATE TABLE financ_analisecred (
    cad_cadastro_id  int NOT NULL,        
    valor_ultima_compra numeric(14,4) ,
    date_ultima_compra  date,
    valor_primeira_Compra numeric(14,4) ,
    date_primeira_Compra date,
    valor_maior numeric(14,4) ,
    date_maior   date,
    valor_Maior_Receber numeric(14,4) ,
    date_maior_receber date,
    valor_debito numeric(14,4) DEFAULT 0.0000,
    qtde_titulos_aberto integer DEFAULT 0,
    limite_credito_saldo NUMERIC(16,3) DEFAULT 0.000,
    PRIMARY KEY (cad_cadastro_id),
    FOREIGN KEY(cad_cadastro_id)
    REFERENCES cad_cadastro(id)
      ON DELETE CASCADE
      ON UPDATE NO ACTION
   
);


-- ------------------------------------------------------------
-- Tabela {fat_produto_lote} Versao {001}  Esquema {Empresa} Descricao {Lote de produtos}
-- ------------------------------------------------------------

CREATE TABLE fat_produto_lote (
    id SERIAL NOT NULL,
    fat_produto_id  int NOT NULL,        
    fat_docto_c_controle  int8 NOT NULL,        
    lote VARCHAR(30) NOT NULL,
    data_fabricacao  date,
    data_validade  date,
    data_certificacao  date,
    qtde numeric(14,4) ,
    qtde_saida numeric(14,4) DEFAULT 0,
    qtde_cancelada numeric(14,4) DEFAULT 0 ,
    qtde_atual numeric(14,4) DEFAULT 0,
    loteemaberto boolean DEFAULT false,
    PRIMARY KEY (id),
    CONSTRAINT unique_index_fat_produto_lote UNIQUE (fat_produto_id, lote),
    FOREIGN KEY(fat_produto_id)
    REFERENCES fat_produto(id)
      ON DELETE CASCADE
      ON UPDATE NO ACTION,
    FOREIGN KEY(fat_docto_c_controle)
    REFERENCES fat_docto_c(controle)
      ON DELETE CASCADE
      ON UPDATE NO ACTION  
);

-- ------------------------------------------------------------
-- Tabela {fat_docto_il} Versao {002} Esquema {Empresa} Descricao {Movimentacao - Documentos Itens(Produtos) lotes}
-- ------------------------------------------------------------

CREATE TABLE fat_docto_il (
  id SERIAL NOT NULL,
  fat_produto_lote_id INT NOT NULL,
  fat_produto_id INT NOT NULL,
  fat_docto_c_controle INT8 NOT NULL,
  qtde numeric(14,4) DEFAULT 0,
  tipo_lcto VARCHAR(20) NULL,
  natureza char(1) NOT NULL,
  PRIMARY KEY(id),
  CONSTRAINT unique_index_fat_docto_il UNIQUE (fat_docto_c_controle, fat_produto_id, fat_produto_lote_id)
);

-- ------------------------------------------------------------
-- Tabela {cad_email} Versao {003}  Esquema {Empresa} Descricao {Emais enviados }
-- ------------------------------------------------------------

Create table cad_email(
	id SERIAL NOT NULL,
	data_envio  timestamp,
	de   varchar(100),
	para varchar(100),
	assunto varchar(100),
	texto Text,
	html boolean DEFAULT false,
	smtpHostMail varchar(100),
	smtpPortMail varchar(10),
	smtpAuth boolean,
	smtpStarttls boolean,
	fromNameMail varchar(100),
	userMail varchar(100),
 	PRIMARY KEY (id)
);

-- ------------------------------------------------------------
-- Tabela {cad_email_anexos} Versao {001}  Esquema {Empresa} Descricao {Emais enviados - anexos }
-- ------------------------------------------------------------

CREATE TABLE cad_email_anexos (
  cad_email_id INT NOT NULL,
  cad_arquivos_id INT NOT NULL,
  observacao TEXT NULL,
  PRIMARY KEY(cad_email_id, cad_arquivos_id),
  FOREIGN KEY(cad_email_id)
    REFERENCES cad_email(id)
      ON DELETE CASCADE
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {fat_docto_c_cce} Versao {001} Esquema {Empresa} Descricao {Carta de correcao}
-- ------------------------------------------------------------

CREATE TABLE fat_docto_c_cce (
  id SERIAL NOT NULL,
  fat_docto_c_controle INT8 NOT NULL,
  dataemissao DATE NULL,
  seqevento int,
  cstatus int,
  status VARCHAR(80),
  correcao TEXT,
  log TEXT,
  xmlassinado TEXT,
  xmlretorno TEXT,
  xmldistribuicao TEXT,
  ambiente char(1),
  protocolo varchar(15),
  PRIMARY KEY(id),
  FOREIGN KEY(fat_docto_c_controle)
    REFERENCES fat_docto_c(controle)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {fat_produto_alternativo} Versao {001}  Esquema {Empresa} Descricao {Importa XML -fat_produto_alternativo}
-- ------------------------------------------------------------

CREATE TABLE fat_produto_alternativo(
  id serial NOT NULL,
  codigo_alternativo character varying(255),
  codigo_de_barras character varying(255),
  issue_date timestamp without time zone,
  item_na_nota text,
  nr_item integer,
  uuid character varying(255),
  produto_id integer,
  CONSTRAINT fat_produto_alternativo_pkey PRIMARY KEY (id)
);

-- ------------------------------------------------------------
-- Tabela {core_importa_notas} Versao {001}  Esquema {Empresa} Descricao {Importa XML}
-- ------------------------------------------------------------

CREATE TABLE core_importa_notas(
  id serial NOT NULL,
  imported boolean NOT NULL,
  issue_date timestamp without time zone,
  nota_id character varying(255),
  uuid character varying(255),
  CONSTRAINT core_importa_notas_pkey PRIMARY KEY (id)
);

-- ------------------------------------------------------------
-- Tabela {fat_modelo} Versao {002}  Esquema {Empresa} Descricao {Tabela de modelo}
-- ------------------------------------------------------------

CREATE TABLE fat_modelo(
  id serial NOT NULL,
  descricao VARCHAR(100),
  PRIMARY KEY(id)
);

-- ------------------------------------------------------------
-- Tabela {fat_mdfeutils} Versao {001}  Esquema {Empresa} Descricao {MDF-e Utilitario - Concultar, Encerrar, Cancelar mdfe nao lancado }
-- ------------------------------------------------------------

Create table fat_mdfeutils(
	id SERIAL NOT NULL,
	data_processo  timestamp without time zone DEFAULT now(),
	chave_acesso   varchar(100),
	protocolo varchar(50),
	obs text,
	log Text,
	uuid character varying(255),
 	PRIMARY KEY (id)
);