-- ------------------------------------------------------------
-- Tabela {fat_docto_i} Versao {0347} Esquema {Empresa} Descricao {Movimentacao - Documentos Itens(produtos)}
-- ------------------------------------------------------------

CREATE TABLE fat_docto_i (
  fat_docto_c_controle INT8 NOT NULL,
  fat_produto_id INT4 NOT NULL,
  cad_cadastro_id INT4 NULL,
  tabcfop_id Varchar(20) NULL,
  fat_transacao_id INT4 NULL,
  numero_docto INT8 NULL,
  cad_filial_id INT4 NULL,
  emissao DATE NULL,
  dataentradasaida DATE NULL,
  serie_id VARCHAR(3) NULL,
  seriedocto_id INT NULL,
  seriedocto_codigo CHAR(3) NULL,
  ordemdigitacao INT4 NULL,
  qtde NUMERIC(16,6) NULL,
  qtde2 NUMERIC(16,6) NULL,
  qtde3 DECIMAL(16,6) NULL,
  valor_unitario DECIMAL(16,6) NULL,
  valor_total DECIMAL(16,6) NULL,
  valor_unitario_liquido DECIMAL(16,6) NULL,
  valor_total_liquido DECIMAL(16,6) NULL,
  custo_nf DECIMAL(16,6) NULL,
  custo_digitado DECIMAL(16,6) NULL,
  custo_real DECIMAL(16,6) NULL,
  custo_inventario DECIMAL(16,6) NULL,
  desc_perc_unitario DECIMAL(16,6) NULL,
  desc_valor_unitario DECIMAL(16,6) NULL,
  desc_perc_promocao DECIMAL(16,6) NULL,
  desc_valor_promocao DECIMAL(16,6) NULL,
  desc_perc_cliente DECIMAL(16,6) NULL,
  desc_valor_cliente DECIMAL(16,6) NULL,
  desc_perc_nf DECIMAL(16,6) NULL,
  desc_valor_nf DECIMAL(16,6) NULL,
  desc_perc_avista DECIMAL(16,6) NULL,
  desc_valor_avista DECIMAL(16,6) NULL,
  desc_valor_financeiro DECIMAL(16,6) NULL,
  natopera_id VARCHAR(20) NULL,
  icms_digitacaomanual BOOL NULL,
  icms_basecalculo DECIMAL(16,6) NULL,
  icms_perc DECIMAL(16,6) NULL,
  icms_valor DECIMAL(16,6) NULL,
  icms_isentos DECIMAL(16,6) NULL,
  icms_outros DECIMAL(16,6) NULL,
  icms_subst_basecalculo DECIMAL(16,6) NULL,
  icms_subst_perc DECIMAL(16,6) NULL,
  icms_subst_valor DECIMAL(16,6) NULL,
  icms_subst_mva DECIMAL(16,6) NULL,
  icms_subst_aliq_dest DECIMAL(16,6) NULL,
  icms_subst_aliq_prop DECIMAL(16,6) NULL,
  icms_preducao DECIMAL(16,6) NULL,
  icms_pdiferimento DECIMAL(16,6) NULL,
  icms_pdiferimentoparcial DECIMAL(16,6) NULL,
  icms_classtrib CHAR(1) NULL,
  icms_classorigem CHAR(2) NULL,
  icms_ricms CHAR(3) NULL,
  ipi_digitacaomanual BOOL NULL,
  ipi_basecalculo DECIMAL(16,6) NULL,
  icms_basecalculo_2 DECIMAL(16,6) NULL,
  ipi_percentual DECIMAL(16,6) NULL,
  ipi_valor DECIMAL(16,6) NULL,
  ipi_isentos DECIMAL(16,6) NULL,
  ipi_outros DECIMAL(16,6) NULL,
  iss_digitacaomanual BOOL NULL,
  iss_basecalculo DECIMAL(16,6) NULL,
  iss_perc DECIMAL(16,6) NULL,
  iss_valor DECIMAL(16,6) NULL,
  iss_isentos DECIMAL(16,6) NULL,
  iss_outros DECIMAL(16,6) NULL,
  irf_digitacaomanual BOOL NULL,
  irf_basecalculo DECIMAL(16,6) NULL,
  irf_perc DECIMAL(16,6) NULL,
  irf_valor DECIMAL(16,6) NULL,
  irf_isentos DECIMAL(16,6) NULL,
  irf_outros DECIMAL(16,6) NULL,
  funrural_digitacaomanual BOOL NULL,
  funrural_basecalculo DECIMAL(16,6) NULL,
  funrural_perc DECIMAL(16,6) NULL,
  funrural_valor DECIMAL(16,6) NULL,
  funrural_isentos DECIMAL(16,6) NULL,
  funrural_outros DECIMAL(16,6) NULL,
  pis_basecalculo DECIMAL(16,6) NULL,
  pis_perc DECIMAL(16,6) NULL,
  pis_valor DECIMAL(16,6) NULL,
  pis_isentos DECIMAL(16,6) NULL,
  pis_outros DECIMAL(16,6) NULL,
  cofins_basecalculo DECIMAL(16,6) NULL,
  cofins_perc DECIMAL(16,6) NULL,
  cofins_valor DECIMAL(16,6) NULL,
  cofins_isentos DECIMAL(16,6) NULL,
  cofins_outros DECIMAL(16,6) NULL,
  comissao_avista DECIMAL(16,6) NULL,
  comissao_aprazo DECIMAL(16,6) NULL,
  analise_custovenda DECIMAL(16,6) NULL,
  analise_despesavenda DECIMAL(16,6) NULL,
  analise_custototal DECIMAL(16,6) NULL,
  analise_lucrovenda DECIMAL(16,6) NULL,
  analise_perc_lucrovenda DECIMAL(16,6) NULL,
  outrasdespesas DECIMAL(16,6) NULL,
  cadastro_id_vendedor INT4 NULL,
  nfe_chnfe Varchar(20) NULL,
  nfe_pedidocompra bigint NULL,
  nfe_pedidocompra_item integer NULL,
  ncm_aliq DECIMAL(16,6) NULL,
  ncm_vlimposto DECIMAL(16,6) NULL,
  dataalteracao DATE NULL,
  horaalteracao TIME NULL,
  usuarioalteracao VARCHAR(20) NULL,
  datainclusao DATE NULL,
  horainclusao TIME NULL,
  usuarioinclusao VARCHAR(20) NULL,
  seq_inclusao bigserial NOT NULL,
  flag_separado BOOLEAN NULL DEFAULT FALSE,
  flag_entregue BOOLEAN NULL DEFAULT FALSE,
  PRIMARY KEY(fat_docto_c_controle, fat_produto_id),
  FOREIGN KEY(fat_docto_c_controle)
    REFERENCES fat_docto_c(controle)
      ON DELETE CASCADE
      ON UPDATE NO ACTION
);


-- ------------------------------------------------------------
-- Tabela {fat_docto_ref} Versao {011} Esquema {Empresa} Descricao {Movimentacao - Documentos referenciados }
-- ------------------------------------------------------------

CREATE TABLE fat_docto_ref (
  id SERIAL NOT NULL,
  fat_docto_c_controle INT8 NOT NULL,
  nferef_documento VARCHAR(20),
  nferef_chaveacesso VARCHAR(44) NULL,
  nferef_emissao DATE,
  nferef_cad_cadastro_id INT,
  cpfcnpj_emitente VARCHAR(20),
  nferef_numerodocto INT,
  nferef_numerocoo INT,
  nferef_serie VARCHAR(5) DEFAULT '',
  nferef_modelo VARCHAR(5) DEFAULT '',
  chave_nfe VARCHAR(44) NULL,
  nferef_cfop VARCHAR(4) DEFAULT '',
  nf_ref_valor_bc_icms DECIMAL(15,2) DEFAULT 0,
  nf_ref_valor_icms DECIMAL(15,2) DEFAULT 0,
  nf_ref_valor_bc_icms_st DECIMAL(15,2) DEFAULT 0,
  nf_ref_valor_icms_st DECIMAL(15,2) DEFAULT 0,
  nf_ref_valor_total_nf DECIMAL(15,2) DEFAULT 0,
  nf_ref_valor_total_produtos DECIMAL(15,2) DEFAULT 0,
  nf_ref_valor_peso_total DECIMAL(15,3) DEFAULT 0,
  PRIMARY KEY(id),
  FOREIGN KEY(fat_docto_c_controle)
    REFERENCES fat_docto_c(controle)
      ON DELETE CASCADE
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {fat_docto_orig} Versao {003} Esquema {Empresa} Descricao {Movimentacao - Documentos originarios (cte)}
-- ------------------------------------------------------------

CREATE TABLE fat_docto_orig (
  id SERIAL NOT NULL,
  fat_docto_c_controle INT8 NOT NULL,
  tipo_docto VARCHAR(10) NOT NULL,
  cpfcnpj_emitente VARCHAR(20) NULL,
  serie VARCHAR(03) NULL,
  numero int4 NULL,
  chave_nfe VARCHAR(44) NULL,
  PRIMARY KEY(id),
  FOREIGN KEY(fat_docto_c_controle)
    REFERENCES fat_docto_c(controle)
      ON DELETE CASCADE
      ON UPDATE NO ACTION
);
      
-- ------------------------------------------------------------
-- Tabela {fat_docto_loccarga} Versao {005} Esquema {Empresa} Descricao {Movimentacao - MDFe - Locais  Carregamento}
-- ------------------------------------------------------------

CREATE TABLE fat_docto_loccarga (
  id SERIAL NOT NULL,
  fat_docto_c_controle INT8 NOT NULL,
  cad_mun_id INT NOT NULL,
  PRIMARY KEY(id),
  FOREIGN KEY(fat_docto_c_controle)
    REFERENCES fat_docto_c(controle)
      ON DELETE CASCADE
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {fat_docto_ufpercurso} Versao {003} Esquema {Empresa} Descricao {Movimentacao - MDFe - UFs do percurso}
-- ------------------------------------------------------------

CREATE TABLE fat_docto_ufpercurso (
  id SERIAL NOT NULL,
  fat_docto_c_controle INT8 NOT NULL,
  cad_estado_id INT NOT NULL,
  PRIMARY KEY(id),
  FOREIGN KEY(fat_docto_c_controle)
    REFERENCES fat_docto_c(controle)
      ON DELETE CASCADE
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {ef_apuracao} Versao {003}  Esquema {Empresa} Descricao {Escrita Fiscal - Dados para Apuracao do Imposto}
-- ------------------------------------------------------------

CREATE TABLE ef_apuracao (
  id SERIAL NOT NULL,
  periodo VARCHAR(05) NOT NULL,
  tipoapuracao VARCHAR(30) NOT NULL,
  cad_filial_id INT NOT NULL,
  outrosdebitos1 VARCHAR(80) NULL,
  outrosdebitos1_valor NUMERIC(16,4) NULL,
  outrosdebitos2 VARCHAR(80) NULL,
  outrosdebitos2_valor NUMERIC(16,4) NULL,
  outrosdebitos3 VARCHAR(80) NULL,
  outrosdebitos3_valor NUMERIC(16,4) NULL,
  periodo_2 NUMERIC(16,4) NULL,
  estornodebito1 VARCHAR(80) NULL,
  estornodebito1_valor NUMERIC(16,4) NULL,
  estornodebito2 VARCHAR(80) NULL,
  estornodebito2_valor NUMERIC(16,4) NULL,
  estornodebito3 VARCHAR(80) NULL,
  estornodebito3_valor NUMERIC(16,4) NULL,
  outroscreditos1 VARCHAR(80) NULL,
  outroscreditos1_valor NUMERIC(16,4) NULL,
  outroscreditos2 VARCHAR(80) NULL,
  outroscreditos2_valor NUMERIC(16,4) NULL,
  outroscreditos3 VARCHAR(80) NULL,
  outroscreditos3_valor NUMERIC(16,4) NULL,
  estornocredito1 VARCHAR(80) NULL,
  estornocredito1_valor NUMERIC(16,4) NULL,
  estornocredito2 VARCHAR(80) NULL,
  estornocredito2_valor NUMERIC(16,4) NULL,
  estornocredito3 VARCHAR(80) NULL,
  estornocredito3_valor NUMERIC(16,4) NULL,
  deducoes1 VARCHAR(80) NULL,
  deducoes1_valor NUMERIC(16,4) NULL,
  deducoes2 VARCHAR(80) NULL,
  deduceos2_valor NUMERIC(16,4) NULL,
  deducoes3 VARCHAR(80) NULL,
  deducoes3_valor NUMERIC(16,4) NULL,
  numerofuncionarios INT4 NULL,
  folhapgto NUMERIC(16,4) NULL,
  materialconsumo NUMERIC(16,4) NULL,
  despesamensal NUMERIC(16,4) NULL,
  servicos NUMERIC(16,4) NULL,
  icms_gr NUMERIC(16,4) NULL,
  fat_produtosprimario NUMERIC(16,4) NULL,
  datainventario DATE NULL,
  valorinventario NUMERIC(16,4) NULL,
  saldocredoranterior NUMERIC(16,4) NULL,
  movtoentradas NUMERIC(16,4) NULL,
  movtosaidas NUMERIC(16,4) NULL,
  saldocredoratual NUMERIC(16,4) NULL,
  icmsarecolher NUMERIC(16,4) NULL,
  outrosdebitos NUMERIC(16,4) NULL,
  outroscreditos NUMERIC(16,4) NULL,
  estornoscreditos NUMERIC(16,4) NULL,
  estornosdebitos NUMERIC(16,4) NULL,
  deducoes NUMERIC(16,4) NULL,
  calculado BOOL NULL,
  observacoes VARCHAR(1024) NULL,
  diferencialaliquota VARCHAR(80) NULL,
  diferencialaliquota_valor NUMERIC(16,4) NULL,
  estornocrbemativo VARCHAR(80) NULL,
  estornocrbemativo_valor NUMERIC(16,4) NULL,
  transfcracumulados VARCHAR(80) NULL,
  transfcracumulados_valor NUMERIC(16,4) NULL,
  ativoimobilizado VARCHAR(80) NULL,
  ativoimobilizado_valor NUMERIC(16,4) NULL,
  materialusoconsumo VARCHAR(80) NULL,
  materialusoconsumo_valor NUMERIC(16,4) NULL,
  icmsrecolhidoantecipado VARCHAR(80) NULL,
  icmsrecolhidoantecipado_2 NUMERIC(16,4) NULL,
  creditosrectransferencia VARCHAR(80) NULL,
  creditosrectransferencia_valor NUMERIC(16,4) NULL,
  simplesrecolhido VARCHAR(80) NULL,
  simplesrecolhido_valor NUMERIC(16,4) NULL,
  cfoptransffilial VARCHAR(80) NULL,
  cfoptransffilial_valor NUMERIC(16,4) NULL,
  dataalteracao DATE NULL,
  horaalteracao TIME NULL,
  usuarioalteracao VARCHAR(20) NULL,
  datainclusao DATE NULL,
  horainclusao TIME NULL,
  usuarioinclusao VARCHAR(20) NULL,
  PRIMARY KEY(id, periodo, tipoapuracao),
  FOREIGN KEY(cad_filial_id)
    REFERENCES cad_filial(id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {fat_condpg_pv} Versao {001} Esquema {Empresa} Descricao {Cadastro de Condicoes de Pagamanto - Periodos de Vencimento}
-- ------------------------------------------------------------

CREATE TABLE fat_condpg_pv (
  fat_condpg_id INT NOT NULL,
  sequencia SERIAL NOT NULL,
  emissaodiainicial INT4 NULL,
  emissaomesinicial INT4 NULL,
  emissaoanoinicial INT4 NULL,
  emissaodiafinal INT4 NULL,
  emissaomesfinal INT4 NULL,
  emissaoanofinal INT4 NULL,
  vencimentodia INT4 NULL,
  vencimentomes INT4 NULL,
  vencimentoano INT4 NULL,
  vencimentoperiodo VARCHAR(20) NULL,
  dataalteracao DATE NULL,
  horaalteracao TIME NULL,
  usuarioalteracao VARCHAR(40) NULL,
  datainclusao DATE NULL,
  horainclusao TIME NULL,
  usuarioinclusao VARCHAR(40) NULL,
  PRIMARY KEY(fat_condpg_id, sequencia),
  FOREIGN KEY(fat_condpg_id)
    REFERENCES fat_condpg(id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {fat_condpg_p} Versao {003}  Esquema {Empresa} Descricao {Cadastro de Condicoes de Pagamento - Parcelas}
-- ------------------------------------------------------------

CREATE TABLE fat_condpg_p (
  fat_condpg_id INT NOT NULL,
  parcela INT4 NOT NULL,
  diasemissao INT4 NULL,
  percentual DECIMAL(9,5) NULL,
  financ_portador_id INT NULL,
  financ_tipocobranca_id INT NULL,
  dataalteracao DATE NULL,
  horaalteracao TIME NULL,
  usuarioalteracao VARCHAR(40) NULL,
  datainclusao DATE NULL,
  horainclusao TIME NULL,
  usuarioinclusao VARCHAR(40) NULL,
  PRIMARY KEY(fat_condpg_id, parcela),
  FOREIGN KEY(fat_condpg_id)
    REFERENCES fat_condpg(id)
      ON DELETE CASCADE
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {fac_pmed_i} Versao {007}  Esquema {empresa} Descricao {Factoring - Prazo medio - itens}
-- ------------------------------------------------------------

CREATE TABLE fac_pmed_i (
  fac_pmed_c_id INT NOT NULL,
  lcto SERIAL NOT NULL,
  financ_banco_id INT NULL,
  financ_agencia_id VARCHAR(15) NULL,
  numerocc VARCHAR(10) NULL,
  numeroch INT NULL,
  valorch DECIMAL(16,4) NULL,
  nome VARCHAR(50) NULL,
  cpf CHAR(14) NULL,
  cnpj CHAR(18) NULL,
  vctoch DATE NULL,
  compensacao INT NULL,
  diasvcto INT NULL,
  juros DECIMAL(12,6) NULL,
  valor_iof DECIMAL(12,6) NULL,
  valor_iof_adicional DECIMAL(12,6) NULL,
  taxa DECIMAL(12,6) NULL,
  valor_tac DECIMAL(12,6) NULL,
  PRIMARY KEY(fac_pmed_c_id,lcto),
  FOREIGN KEY(fac_pmed_c_id)
    REFERENCES fac_pmed_c(id)
      ON DELETE CASCADE
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {co_totalcontab} Versao {001}  Esquema {Empresa} Descricao {Contabilidade - Totais das contas}
-- ------------------------------------------------------------

CREATE TABLE co_totalcontab (
  co_planocon_id INT NOT NULL,
  cad_filial_id INT4 NOT NULL,
  tipototal VARCHAR(20) NOT NULL,
  data_total DATE NULL,
  total_debito NUMERIC(16,4) NULL,
  total_credito NUMERIC(16,4) NULL,
  status_2 Varchar(20) NULL,
  dataalteracao DATE NULL,
  horaalteracao TIME NULL,
  usuariolteracao VARCHAR(20) NULL,
  datainclusao DATE NULL,
  horainclusao TIME NULL,
  usuarioinclusao VARCHAR(20) NULL,
  PRIMARY KEY(co_planocon_id, cad_filial_id, tipototal),
  FOREIGN KEY(co_planocon_id)
    REFERENCES co_planocon(id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {fat_cotacao_p} Versao {001}  Esquema {Empresa} Descricao {Cotacao - Produtos}
-- ------------------------------------------------------------

CREATE TABLE fat_cotacao_p (
  fat_produto_id INT NOT NULL,
  fat_cotacao_id SERIAL NOT NULL,
  qtde DECIMAL(14,6) NULL,
  PRIMARY KEY(fat_produto_id),
  FOREIGN KEY(fat_cotacao_id)
    REFERENCES fat_cotacao(id)
      ON DELETE CASCADE
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {fat_cotacao_f} Versao {001}  Esquema {Empresa} Descricao {Cotacao - Fornecedores}
-- ------------------------------------------------------------

CREATE TABLE fat_cotacao_f (
  cad_cadastro_id INT NOT NULL,
  fat_cotacao_id SERIAL NOT NULL,
  contato VARCHAR(60) NULL,
  contato_email VARCHAR(60) NULL,
  contato_telefone Varchar(20) NULL,
  data_entrega DATE NULL,
  data_validade DATE NULL,
  valor_frete DECIMAL(16,4) NULL,
  total DECIMAL(16,4) NULL,
  observacao TEXT NULL,
  PRIMARY KEY(cad_cadastro_id, fat_cotacao_id),
  FOREIGN KEY(fat_cotacao_id)
    REFERENCES fat_cotacao(id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {co_movto} Versao {002} Esquema {Empresa} Descricao {Contabilidade - Movimentacao}
-- ------------------------------------------------------------

CREATE TABLE co_movto (
  id SERIAL NOT NULL,
  ano INT4 NOT NULL,
  lote INT8 NOT NULL,
  cad_filial_id INT NOT NULL,
  datalcto DATE NULL,
  co_planocon_id_debito INT4 NULL,
  planocon_id_credito INT4 NULL,
  valor NUMERIC(16,4) NULL,
  co_histopad_id INT4 NULL,
  historico VARCHAR(120) NULL,
  modulo VARCHAR(30) NULL,
  rotina 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(id, ano, lote),
  FOREIGN KEY(cad_filial_id)
    REFERENCES cad_filial(id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {fat_listapre_tabela} Versao {009} Esquema {Empresa} Descricao {Cadastro de Lista de Precos  Tabela}
-- ------------------------------------------------------------

CREATE TABLE fat_listapre_tabela (
  fat_listapre_id INT NOT NULL,
  tabela_id INT NOT NULL,
  descricao VARCHAR(20) NULL,
  percentualacrescimo DECIMAL(14,6) NULL,
  fatoracrescimo DECIMAL(14,6) NULL,
  fatortipo VARCHAR(20) NULL,
  desativado BOOL NULL,
  dataalteracao DATE NULL,
  horaalteracao TIME NULL,
  usuarioalteracao VARCHAR(40) NULL,
  datainclusao DATE NULL,
  horainclusao TIME NULL,
  usuarioinclusao VARCHAR(40) NULL,
  PRIMARY KEY(fat_listapre_id, tabela_id),
  FOREIGN KEY(fat_listapre_id)
    REFERENCES fat_listapre(id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {ef_maparesumo_aliq} Versao {001} Esquema {Empresa} Descricao {Escrita Fiscal - Mapa resumo ECF - Aliquotas}
-- ------------------------------------------------------------

CREATE TABLE ef_maparesumo_aliq (
  ef_maparesumo_numeroserieecf VARCHAR(40) NOT NULL,
  aliquota NUMERIC NOT NULL,
  ef_maparesumo_cad_filial_id INT4 NOT NULL,
  ef_maparesumo_numeroecf INT4 NOT NULL,
  ef_maparesumo_emissao DATE NOT NULL,
  ef_maparesumo_numeromapa SERIAL NOT NULL,
  basecalculo NUMERIC NULL,
  imposto NUMERIC NULL,
  dataalteracao DATE NULL,
  horaalteracao TIME NULL,
  usuarioalteracao VARCHAR(20) NULL,
  datainclusao DATE NULL,
  horainclusao TIME NULL,
  usuarioalteracao_2 VARCHAR(20) NULL,
  PRIMARY KEY(ef_maparesumo_numeroserieecf, aliquota),
  FOREIGN KEY(ef_maparesumo_numeromapa, ef_maparesumo_emissao, ef_maparesumo_numeroecf, ef_maparesumo_numeroserieecf, ef_maparesumo_cad_filial_id)
    REFERENCES ef_maparesumo(numeromapa, emissao, numeroecf, numeroserieecf, cad_filial_id)
      ON DELETE CASCADE
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {cad_setor_vendedor} Versao {001} Esquema {Empresa} Descricao {setor - vendedrores }
-- ------------------------------------------------------------

CREATE TABLE cad_setor_vendedor (
  cad_setor_id INT NOT NULL,
  cad_cadastro_id INT8 NOT NULL,
  PRIMARY KEY(cad_setor_id, cad_cadastro_id),
  FOREIGN KEY(cad_setor_id)
    REFERENCES cad_setor(id)
      ON DELETE CASCADE
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {cad_sugestoes} Versao {010} Esquema {Empresa} Descricao {Cadastro de Sugestoes}
-- ------------------------------------------------------------

CREATE TABLE cad_sugestoes (
  id SERIAL NOT NULL,
  cad_atendimento_protocolo INT NOT NULL,
  solicitante VARCHAR(60) NULL,
  efetuado BOOL NULL,
  referente VARCHAR(80) NULL,
  classificacao VARCHAR(30) NULL,
  usuario VARCHAR(20) NULL,
  cad_cadastro_id INT4 NULL,
  cliente VARCHAR(60) NULL,
  descricao TEXT NULL,
  doc_html_rtf TEXT NULL,
  dataefetuado DATE NULL,
  horaefetuado TIME NULL,
  datainclusao DATE NULL,
  horainclusao TIME NULL,
  usuarioinclusao VARCHAR(30) NULL,
  dataalteracao DATE NULL,
  horaalteracao TIME NULL,
  usuarioalteracao VARCHAR(20) NULL,
  usuarioefetuado VARCHAR(20) NULL,
  databaixado DATE NULL,
  horabaixado TIME NULL,
  usuariobaixado VARCHAR(20) NULL,
  baixado BOOL NULL,
  prioridade VARCHAR(30) NULL,
  descricaoefetuado TEXT NULL,
  descricaobaixado TEXT NULL,
  emissao DATE NULL,
  horaemissao TIME NULL,
  classificacao_atendimento VARCHAR(30) NULL,
  efetuadoemailenviado BOOL NULL,
  baixadoemailenviado BOOL NULL,
  usuarioresponsavel VARCHAR(20) NULL,
  dataencaminhadoresponsavel TIMESTAMP NULL,
  PRIMARY KEY(id),
  FOREIGN KEY(cad_atendimento_protocolo, solicitante)
    REFERENCES cad_atendimento(protocolo, solicitante)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {cad_sugestoes_anexos} Versao {001} Esquema {Empresa} Descricao {Cadastro de Sugestoes - anexos}
-- ------------------------------------------------------------

CREATE TABLE cad_sugestoes_anexos (
  cad_sugestoes_id INT NOT NULL,
  cad_arquivos_id INT NOT NULL,
  observacao TEXT NULL,
  PRIMARY KEY(cad_sugestoes_id, cad_arquivos_id),
  FOREIGN KEY(cad_sugestoes_id)
    REFERENCES cad_sugestoes(id)
      ON DELETE CASCADE
      ON UPDATE NO ACTION
);


-- ------------------------------------------------------------
-- Tabela {fat_docto_o} Versao {017} Esquema  {Empresa} Descricao {Movimenta??o Documentos outros dados}
-- ------------------------------------------------------------

CREATE TABLE fat_docto_o (
  fat_docto_c_controle INT8 NOT NULL,
  numero_docto VARCHAR(20) NULL,
  volumes NUMERIC(14,3) NULL,
  especie VARCHAR(40) NULL,
  marca VARCHAR(40) NULL,
  pesobruto DECIMAL(16,4) NULL,
  pesoliquido DECIMAL(16,4) NULL,
  cad_cadastro_idtransp INT4 NULL,
  transp_nome VARCHAR(60) NULL,
  transp_endereco VARCHAR(60) NULL,
  transp_cidade VARCHAR(30) NULL,
  transp_uf VARCHAR(2) NULL,
  transp_cnpj_cpf VARCHAR(20) NULL,
  transp_ie_rg VARCHAR(20) NULL,
  transp_placaveiculo VARCHAR(20) NULL,
  transp_placaveiculo_reboque1 Varchar(20) NULL,
  transp_placaveiculo_reboque2 Varchar(20) NULL,
  transp_placaveiculo_reboque3 Varchar(20) NULL,
  transp_descricaoveiculo VARCHAR(50) NULL,
  transp_ufveiculo VARCHAR(2) NULL,
  transp_rntrc VARCHAR(10) NULL,
  transp_idmotorista INT4 NULL,
  transp_tipocarroceria VARCHAR(30) NULL,
  transp_tiporodado VARCHAR(30) NULL,
  transp_taraveiculo NUMERIC(14,3) NULL,
  transp_ciot VARCHAR(12) NULL,
  frete VARCHAR(30) NULL,
  descarga VARCHAR(30) NULL,
  observacao TEXT NULL,
  observacaocontribuinte TEXT NULL,
  PRIMARY KEY(fat_docto_c_controle),
  FOREIGN KEY(fat_docto_c_controle)
    REFERENCES fat_docto_c(controle)
      ON DELETE CASCADE
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {fat_docto_pc} Versao {005}  Esquema  {Empresa} Descricao {Movimenta??o Documentos pedidos  Cabecalho}
-- ------------------------------------------------------------

CREATE TABLE fat_docto_pc (
  fat_docto_c_controle INT8 NOT NULL,
  tipo VARCHAR(2) NULL,
  cad_cadastro_id INT4 NULL,
  cad_filial_id INT4 NULL,
  data_p DATE NULL,
  status_p VARCHAR(20) NULL,
  PRIMARY KEY(fat_docto_c_controle),
  FOREIGN KEY(fat_docto_c_controle)
    REFERENCES fat_docto_c(controle)
      ON DELETE CASCADE
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {fat_docto_nfe_documento} Versao {001} Esquema {Empresa} Descricao {docto - integracao com nfe - documento}
-- ------------------------------------------------------------

CREATE TABLE fat_docto_nfe_documento (
  id_documento INT8 NOT NULL,
  id_lote INT8 NOT NULL,
  ano VARCHAR(2) NULL,
  doc_xml BYTEA NULL,
  serie VARCHAR(3) NULL,
  protocolo BYTEA NULL,
  modelo VARCHAR(2) NULL,
  data_sistema TIMESTAMP NULL,
  n_protocolo VARCHAR(15) NULL,
  versao VARCHAR(60) NULL,
  data_protocolo TIMESTAMP NULL,
  c_uf VARCHAR(2) NULL,
  PRIMARY KEY(id_documento),
  FOREIGN KEY(id_lote)
    REFERENCES fat_docto_nfe_lote(id_lote)
      ON DELETE CASCADE
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {cad_cadastro} Versao {20}  Esquema {Empresa} Descricao {Cadastro  Geral}
-- ------------------------------------------------------------

CREATE TABLE cad_cadastro (
  id SERIAL NOT NULL,
  cad_mun_id INT NOT NULL,
  cad_cadastro_grupo_id INT NOT NULL,
  razaosocial VARCHAR(120) NOT NULL,
  pessoa VARCHAR(20) NULL,
  desativado BOOL NULL,
  nomefantasia VARCHAR(60) NULL,
  endereco VARCHAR(60) NULL,
  numero VARCHAR(20) NULL,
  complemento VARCHAR(60) NULL,
  cep VARCHAR(20) NULL,
  bairro VARCHAR(60) NULL,
  municipio VARCHAR(40) NULL,
  uf VARCHAR(2) NULL,
  telefone1 VARCHAR(15) NULL,
  obstelefone1 VARCHAR(60) NULL,
  telefone2 VARCHAR(15) NULL,
  obstelefone2 VARCHAR(60) NULL,
  celular VARCHAR(15) NULL,
  fax VARCHAR(15) NULL,
  cobranca_endereco VARCHAR(60) NULL,
  cobranca_numero VARCHAR(20) NULL,
  cobranca_complemento VARCHAR(60) NULL,
  cobranca_cep VARCHAR(20) NULL,
  cobranca_bairro VARCHAR(60) NULL,
  cobranca_cad_mun_id INT,
  cobranca_telefone1 VARCHAR(15) NULL,
  cobranca_obstelefone1 VARCHAR(60) NULL,
  cobranca_email VARCHAR(60) NULL,
  email VARCHAR(120) NULL,
  webSite VARCHAR(120) NULL,
  inscricaocadpro VARCHAR(30) NULL,
  inscricaoestadual VARCHAR(30) NULL,
  rg VARCHAR(30) NULL,
  cpf VARCHAR(20) NOT NULL,
  inscricaofederal VARCHAR(30) NOT NULL,
  obs TEXT NULL,
  datanasc DATE NULL,
  datacadastro DATE NULL,
  cliente BOOL NULL,
  fornecedor BOOL NULL,
  produtor BOOL NULL,
  vendedor BOOL NULL,
  tecnico BOOL NULL,
  motorista BOOL NULL,
  transportador BOOL NULL,
  sindicato BOOL NULL,
  funcionario BOOL NULL,
  trabalhador BOOL NULL,
  contribuinteicms VARCHAR(30) NULL,
  calculoicmssobre_ipi BOOL NULL,
  calculast BOOL NULL,
  fat_listapre_id INT4 NULL,
  fat_listapre_tabela_tabela INT4 NULL,
  fat_condpg_id INT4 NULL,
  limite_credito NUMERIC(16,3) DEFAULT 0.000,
  data_contrato DATE 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 uniquekey_inscricao UNIQUE (inscricaofederal,cpf,inscricaocadpro),
  FOREIGN KEY(cad_mun_id) REFERENCES cad_mun(id) ON DELETE NO ACTION ON UPDATE NO ACTION,
  FOREIGN KEY(cad_cadastro_grupo_id)REFERENCES cad_cadastro_grupo(id) ON DELETE NO ACTION ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {cad_cadastro_anexos} Versao {002} Esquema {Empresa} Descricao {Cadastro geral - anexos}
-- ------------------------------------------------------------

CREATE TABLE cad_cadastro_anexos (
  cad_cadastro_id INT NOT NULL,
  cad_arquivos_id INT NOT NULL,
  observacao TEXT NULL,
  PRIMARY KEY(cad_cadastro_id, cad_arquivos_id),
  FOREIGN KEY(cad_cadastro_id)
    REFERENCES cad_cadastro(id)
      ON DELETE CASCADE
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {cad_cadastro_ocorr} Versao {001} Esquema {Empresa} Descricao {Cadastro geral - ocorrencias}
-- ------------------------------------------------------------

CREATE TABLE cad_cadastro_ocorr (
  id BIGSERIAL NOT NULL,
  cad_cadastro_id INT NOT NULL,
  data_ocorr timestamp NOT NULL DEFAULT localtimestamp,
  status char(1)  DEFAULT ' ',
  usuario character varying(20) DEFAULT current_user,
  avisar varchar(20) DEFAULT '9 - Nao Avisar',
  avisar_data_inicial DATE NULL,
  avisar_data_final DATE NULL,
  ocorrencia TEXT NULL,
  PRIMARY KEY(id),
  FOREIGN KEY(cad_cadastro_id)
    REFERENCES cad_cadastro(id)
      ON DELETE CASCADE
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {cad_cadastro_contato} Versao {003} Esquema {Empresa} Descricao {Cadastro geral - Contatos}
-- ------------------------------------------------------------

CREATE TABLE cad_cadastro_contato (
  id BIGSERIAL NOT NULL,
  cad_cadastro_id INT NOT NULL,
  nome character varying(50),
  cargo character varying(30),
  data_nasc DATE NULL,
  telefone VARCHAR(15) NULL,
  obstelefone VARCHAR(60) NULL,
  PRIMARY KEY(id),
  FOREIGN KEY(cad_cadastro_id)
    REFERENCES cad_cadastro(id)
      ON DELETE CASCADE
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {fat_docto_c_anexos} Versao {003} Esquema {Empresa} Descricao {Lancamento - anexos}
-- ------------------------------------------------------------

CREATE TABLE fat_docto_c_anexos (
  fat_docto_c_controle INT8 NOT NULL,
  cad_arquivos_id INT NOT NULL,
  observacao TEXT NULL,
  dadosadicionais TEXT NULL,
  PRIMARY KEY(fat_docto_c_controle, cad_arquivos_id),
  FOREIGN KEY(fat_docto_c_controle)
    REFERENCES fat_docto_c(controle)
      ON DELETE CASCADE
      ON UPDATE NO ACTION
);
-- ------------------------------------------------------------
-- Tabela {fat_docto_pa} Versao {007}  Esquema  {Empresa} Descricao {Movimenta??o  Documentos  pedidos atendido}
-- ------------------------------------------------------------

CREATE TABLE fat_docto_pa (
  id SERIAL NOT NULL,
  fat_produto_id INT NOT NULL,
  fat_docto_pc_controle INT8 NOT NULL,
  fat_docto_c_controle INT8 NOT NULL,
  qtde DECIMAL(16,6) NULL,
  qtde_naoatendida DECIMAL(16,6) NULL,
  qtde_cancelada DECIMAL(16,6) NULL,
  PRIMARY KEY(id),
  FOREIGN KEY(fat_docto_pc_controle)
    REFERENCES fat_docto_pc(fat_docto_c_controle)
      ON DELETE CASCADE
      ON UPDATE NO ACTION,
  FOREIGN KEY(fat_docto_c_controle, fat_produto_id)
    REFERENCES fat_docto_i(fat_docto_c_controle, fat_produto_id)
      ON DELETE CASCADE
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {fat_docto_cfop} Versao {003} Esquema {Empresa} Descricao {Movimenta??o Documentos CFOPs}
-- ------------------------------------------------------------

CREATE TABLE fat_docto_cfop (
  ef_tabcfop_id VARCHAR(10) NOT NULL,
  fat_docto_c_controle INT8 NOT NULL,
  cfop_id VARCHAR(20) NOT NULL,
  cfop_descricao_abv VARCHAR(40) NULL,
  cfop_descricao VARCHAR(120) NULL,
  dataalteracao DATE NULL,
  horaalteracao TIME NULL,
  usuarioalteracao VARCHAR(20) NULL,
  datainclusao DATE NULL,
  horainclusao TIME NULL,
  usuarioinclusao VARCHAR(20) NULL,
  FOREIGN KEY(fat_docto_c_controle)
    REFERENCES fat_docto_c(controle)
      ON DELETE CASCADE
      ON UPDATE NO ACTION,
  FOREIGN KEY(ef_tabcfop_id)
    REFERENCES ef_tabcfop(id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {ef_livrofiscal} Versao {001} Esquema {Empresa} Descricao {Lcto Escrita Fiscal - Livro de Entrada e Saida}
-- ------------------------------------------------------------

CREATE TABLE ef_livrofiscal (
  lcto SERIAL NOT NULL,
  ef_tabcfop_id VARCHAR(10) NOT NULL,
  natureza VARCHAR(20) NULL,
  dataentradasaida DATE NULL,
  especie VARCHAR(20) NULL,
  serie_id VARCHAR(20) NULL,
  numeronfs VARCHAR(20) NULL,
  cad_cadastro_id INT NOT NULL,
  cadastro_razaosocial VARCHAR(50) NULL,
  cadastro_uf Varchar(20) NULL,
  datadocto DATE NULL,
  co_planocontas_id INT4 NULL,
  valorcontabil NUMERIC(16,4) NULL,
  basecalculo_icms NUMERIC(16,4) NULL,
  aliquota_icms NUMERIC(8,4) NULL,
  valor_icms NUMERIC(16,4) NULL,
  basecalculo_ipi NUMERIC(16,4) NULL,
  aliquota_ipi NUMERIC(8,4) NULL,
  valor_ipi NUMERIC(16,4) NULL,
  isento_naotrib NUMERIC(16,4) NULL,
  diferido BOOL NULL,
  substituicao_trib BOOL NULL,
  outras NUMERIC(16,4) NULL,
  valores_fechar NUMERIC(16,4) NULL,
  obs VARCHAR(100) NULL,
  lcto_automatico BOOL NULL,
  cad_filial_id INT4 NULL,
  fat_transacao_id INT4 NULL,
  rotina VARCHAR(40) NULL,
  fat_docto_c_controle INT8 NOT NULL,
  classificacao_trib VARCHAR(1) NULL,
  Outras_ipi NUMERIC(16,4) NULL,
  Isentas_ipi NUMERIC(16,4) NULL,
  basecalculo_pis NUMERIC(16,4) NULL,
  aliquota_pis NUMERIC(8,4) NULL,
  valor_pis NUMERIC(16,4) NULL,
  outras_pis NUMERIC(16,4) NULL,
  isentas_pis NUMERIC(8,4) NULL,
  basecalculo_cofins NUMERIC(16,4) NULL,
  aliquota_cofins NUMERIC(8,4) NULL,
  valor_cofins NUMERIC(16,4) NULL,
  outras_cofins NUMERIC(16,4) NULL,
  isentas_cofins NUMERIC(16,4) NULL,
  dataalteracao DATE NULL,
  horaalteracao TIME NULL,
  usuarioalteracao VARCHAR(20) NULL,
  datainclusao DATE NULL,
  horainclusao TIME NULL,
  usuarioinclusao VARCHAR(20) NULL,
  PRIMARY KEY(lcto),
  FOREIGN KEY(ef_tabcfop_id)
    REFERENCES ef_tabcfop(id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION,
  FOREIGN KEY(cad_cadastro_id)
    REFERENCES cad_cadastro(id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION,
  FOREIGN KEY(fat_docto_c_controle)
    REFERENCES fat_docto_c(controle)
      ON DELETE CASCADE
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {financ_cc} Versao {0022}  Esquema {Empresa} Descricao {Cadastro de Contas Correntes}
-- ------------------------------------------------------------

CREATE TABLE financ_cc (
  id SERIAL NOT NULL,
  desativado BOOL NULL DEFAULT false,
  financ_agencia_financ_banco_id INT4 NOT NULL,
  financ_agencia_id VARCHAR(15) NOT NULL,
  financ_tipocc_id INT NOT NULL,
  descricao VARCHAR(40) NULL,
  numeroconta VARCHAR(10) NULL,
  dv INT NULL,
  codigocedente VARCHAR(20) NULL,
  convenio VARCHAR(20) NULL,
  instrucao_sacado VARCHAR(250) DEFAULT 'OBRIGADO PELA PREFERENCIA',
  dias_protesto INT DEFAULT 5,
  carteira_cobranca VARCHAR(10) DEFAULT '',
  carteira_variacao VARCHAR(10) DEFAULT '',
  frm_padrao_boleto VARCHAR(60) DEFAULT 'BoletoRazao',
  boletos_em_teste BOOL NULL DEFAULT true,
  conciliarlancamentos BOOL DEFAULT false,
  baixatitulooutrasfilias BOOL NULL,
  ccapuracao BOOL DEFAULT true,
  cad_filial_id INT NOT NULL,
  dataalteracao DATE NULL,
  horaalteracao TIME NULL,
  usuarioalteracao VARCHAR(40) NULL,
  datainclusao DATE NULL,
  horainclusao TIME NULL,
  usuarioinclusao VARCHAR(40) NULL,
  PRIMARY KEY(id),
  FOREIGN KEY(financ_tipocc_id)
    REFERENCES financ_tipo_cc(id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {fat_produto} Versao {058}  Esquema {Empresa} Descricao {Cadasro de Produtos}
-- ------------------------------------------------------------

CREATE TABLE fat_produto (
  id SERIAL NOT NULL,
  cad_unidade3 VARCHAR(4) NULL,
  cad_unidade2 VARCHAR(4) NULL,
  cad_unidade1 VARCHAR(4) NOT NULL,
  cad_unidade4 VARCHAR(4) NULL,
  fat_marca_id INT NOT NULL,
  desativado BOOL NULL,
  fat_grupoprodutos_id INT NOT NULL,
  referencia VARCHAR(150) NULL,
  descricao VARCHAR(150) NULL,
  dadosadicionais TEXT NULL,
  complemento VARCHAR(40) NULL,
  marca VARCHAR(30) NULL,
  tipo VARCHAR(20) NULL,
  fatorunidade1 DECIMAL(20,10) NULL,
  fatorunidade2 DECIMAL(20,10) NULL,
  fatorunidade3 DECIMAL(20,10) NULL,
  unidadepadraovenda VARCHAR(4) NOT NULL,
  codigobarra1 Varchar(20) NULL,
  codigobarra2 Varchar(20) NULL,
  codigobarra3 Varchar(20) NULL,
  codigobarra4 Varchar(20) NULL,
  pesoliquido DECIMAL(14,6) NULL,
  pesobruto DECIMAL(14,6) NULL,
  volume DECIMAL(14,6) NULL,
  ultimocusto DECIMAL(14,6) NULL,
  dataultimocusto DATE NULL,
  classorigem_id VARCHAR(02) NULL,
  classtributaria_id VARCHAR(10) NULL,
  modalidade_bc_icms CHAR(1) NULL,
  modalidade_bc_icms_st CHAR(1) NULL,
  classfiscal_id VARCHAR(20) NULL,
  classfiscal_entrada_id VARCHAR(03) NULL,
  classtipi_codigonbm VARCHAR(20) NULL,
  cest VARCHAR(10) NULL,
  codigoanp VARCHAR(20) NULL,
  comb_numero_bico INT NULL,
  comb_numero_tanque INT NULL,
  aliquotas_normal_id INT4 NULL,
  aliquotas_reducaos_id INT4 NULL,
  aliquotas_reducaoe_id INT4 NULL,
  aliquotas_diferimento_id INT4 NULL,
  aliquota_ipi_entrada DECIMAL(14,6) NULL,
  aliquota_ipi_saida DECIMAL(14,6) NULL,
  aliquota_cofins DECIMAL(14,6) NULL,
  aliquota_pis DECIMAL(14,6) NULL,
  comissao_aliq_vista DECIMAL(14,6) NULL,
  comissao_aliq_prazo DECIMAL(14,6) NULL,
  ncm_aliq_imp DECIMAL(14,6) NULL,
  ncm_aliq_imp DECIMAL(14,6) NULL,
  ncm_ex VARCHAR(20) NULL,
  ncm_tabela VARCHAR(20) NULL,
  percentual_ipi DECIMAL(14,6) NULL,
  cst_ipi_saida CHAR(02) NULL,
  cst_ipi_entrada CHAR(02) NULL,
  cst_pis CHAR(02) NULL,
  cst_cofins CHAR(02) NULL,
  aliqissqn_id INT4 NULL,
  ind_iss CHAR(1) NULL,
  ind_incentivo CHAR(1) NULL,
  aliqirrf_id INT4 NULL,
  localizacao VARCHAR(60) NULL,
  aliqinss_id INT4 NULL,
  dataalteracao DATE NULL,
  horaalteracao TIME NULL,
  usuarioalteracao VARCHAR(40) NULL,
  datainclusao DATE NULL,
  horainclusao TIME NULL,
  usuarioinclusao VARCHAR(40) NULL,
  csosn character varying(60)NULL,
  class_g_id INT NULL,
  PRIMARY KEY(id),
  CONSTRAINT unique_index_codigobarra1 UNIQUE(codigobarra1),
  CONSTRAINT unique_index_codigobarra2 UNIQUE(codigobarra2),
  CONSTRAINT unique_index_codigobarra3 UNIQUE(codigobarra3),
  CONSTRAINT unique_index_codigobarra4 UNIQUE(codigobarra4),
  FOREIGN KEY(fat_grupoprodutos_id)
    REFERENCES fat_grupoprodutos(id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION,
  FOREIGN KEY(fat_marca_id)
    REFERENCES fat_marca(id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION,
  FOREIGN KEY(cad_unidade1)
    REFERENCES fat_unmedida(id)
      ON DELETE NO ACTION
      ON UPDATE CASCADE,
  FOREIGN KEY(cad_unidade2)
    REFERENCES fat_unmedida(id)
      ON DELETE NO ACTION
      ON UPDATE CASCADE,
  FOREIGN KEY(cad_unidade3)
    REFERENCES fat_unmedida(id)
      ON DELETE NO ACTION
      ON UPDATE CASCADE,
  FOREIGN KEY(cad_unidade4)
    REFERENCES fat_unmedida(id)
      ON DELETE NO ACTION
      ON UPDATE CASCADE
);

-- ------------------------------------------------------------------------------------------------------------
-- Tabela {fat_produto_movto} Versao {003} Esquema {Empresa} Descricao {Produto - Movimentacao de estoque}
-- --------------------------------------------------------------------------------------------------------------

CREATE TABLE fat_produto_movto (
  id SERIAL NOT NULL,
  fat_produto_id INT NOT NULL,
  fat_docto_c_controle INT8 NOT NULL,
  cad_filial_id INT4 NOT NULL,
  tipomovto CHAR(2) NOT NULL,
  serie_id CHAR(3) NULL,
  numero_docto INT8 NULL,
  cad_cadastro_id INT NOT NULL,
  fat_transacao_id INT4 NULL,
  datamovto DATE NOT NULL,
  natureza VARCHAR(20) NULL,
  devolucao BOOL NULL,
  atualizaestoque BOOL NULL,
  alteracustomedio BOOL NULL,
  alteracustoultimacompra BOOL NULL,
  fat_almoxarifado_id_origem INT4 NULL,
  fat_almoxarifado_id_destino INT4 NULL,
  qtde NUMERIC(16,4) NULL,
  valorunitario NUMERIC(16,4) NULL,
  valortotal NUMERIC(16,4) NULL,
  custoinventario NUMERIC(16,4) NULL,
  custoinventariototal NUMERIC(16,4) NULL,
  custonf NUMERIC(16,4) NULL,
  custodigitado NUMERIC(16,4) NULL,
  custoreal NUMERIC(16,4) NULL,
  customedio NUMERIC(16,4) NULL,
  customediototal NUMERIC(16,4) NULL,
  saldo NUMERIC(16,4) NULL,
  saldo2 NUMERIC(16,4) NULL,
  saldoinventario NUMERIC(16,4) NULL,
  dataalteracao DATE NULL,
  horaalteracao TIME NULL,
  usuarioalteracao VARCHAR(20) NULL,
  datainclusao DATE NULL,
  horainclusao TIME NULL,
  usuarioinclusao VARCHAR(20) NULL,
  PRIMARY KEY(id),
  CONSTRAINT unique_index_tipomovto UNIQUE(fat_produto_id,fat_docto_c_controle,cad_filial_id,tipomovto),
  FOREIGN KEY(fat_produto_id)   REFERENCES fat_produto(id)  ON DELETE CASCADE ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {fat_produto_saldo} Versao {001}  Esquema {Empresa} Descricao {Produto - Saldo}
-- ------------------------------------------------------------
CREATE TABLE fat_produto_saldo (
  fat_produto_id INT NOT NULL,
  cad_filial_id INT4 NULL,
  fat_almoxarifado_id INT4 NULL,
  ultimaentrada DATE NULL,
  ultimasaida DATE NULL,
  ultimomovto DATE NULL,
  customedio NUMERIC(16,4) NULL,
  customediototal NUMERIC(16,4) NULL,
  custonf NUMERIC(16,4) NULL,
  custoreal NUMERIC(16,4) NULL,
  custodigitado NUMERIC(16,4) NULL,
  saldo NUMERIC(16,4) NULL,
  saldo2 NUMERIC(16,4) NULL,
  saldoinventario NUMERIC(16,4) NULL,
  comdefeito NUMERIC(16,4) NULL,
  consginacaocliente NUMERIC(16,4) NULL,
  pedidocliente NUMERIC(16,4) NULL,
  reservacliente NUMERIC(16,4) NULL,
  orcamentocliente NUMERIC(16,4) NULL,
  demonstracaocliente NUMERIC(16,4) NULL,
  consertocliente NUMERIC(16,4) NULL,
  entregafuturacliente NUMERIC(16,4) NULL,
  consignacaofornecedor NUMERIC(16,4) NULL,
  pedidofornecedor NUMERIC(16,4) NULL,
  reservafornecedor NUMERIC(16,4) NULL,
  orcamentofornecedor NUMERIC(16,4) NULL,
  demonstracaofornecedor NUMERIC(16,4) NULL,
  consertofornecedor NUMERIC(16,4) NULL,
  entregafuturafornecedor NUMERIC(16,4) NULL,
  dataalteracao DATE NULL,
  horaalteracao TIME NULL,
  usuarioalteracao VARCHAR(20) NULL,
  datainclusao DATE NULL,
  horainclusao TIME NULL,
  usuarioinclusao VARCHAR(20) NULL,
  PRIMARY KEY(fat_produto_id),
  FOREIGN KEY(fat_produto_id)
    REFERENCES fat_produto(id)
      ON DELETE CASCADE
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {fat_produto_a} Versao {001}  Esquema {Empresa} Descricao {Produto - alternativo}
-- ------------------------------------------------------------
CREATE TABLE fat_produto_a (
  id SERIAL NOT NULL,
  fat_produto_id INT NOT NULL,
  cad_cadastro_id INT NOT NULL,
  codigo_alternativo VARCHAR(20) NULL,
  PRIMARY KEY(id),
  CONSTRAINT unique_index_fat_produto_a UNIQUE (fat_produto_id, cad_cadastro_id),
  FOREIGN KEY(fat_produto_id)
    REFERENCES fat_produto(id)
      ON DELETE CASCADE
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {fat_produto_c} Versao {001}  Esquema {Empresa} Descricao {Produto - composicao}
-- ------------------------------------------------------------
CREATE TABLE fat_produto_c (
  id BIGSERIAL NOT NULL,
  fat_produto_id INT NOT NULL,
  fat_produto_id_composicao INT NOT NULL,
  qtde NUMERIC(16,6) NULL,
  qtdetipo CHAR(1)NOT NULL DEFAULT '1',  
  natureza VARCHAR(20) NOT NULL DEFAULT '1-MESMA',
  tipo_custo INT4 NOT NULL DEFAULT 1003,
  valor_unitario DECIMAL(16,6) NULL,
  valor_total DECIMAL(16,6) NULL,
  CONSTRAINT unique_index_fat_produto_c UNIQUE (fat_produto_id, fat_produto_id_composicao),
  PRIMARY KEY(id),
  FOREIGN KEY(fat_produto_id)
    REFERENCES fat_produto(id)
      ON DELETE CASCADE
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {cad_cadastro_vendedor} Versao {001}  Esquema {Empresa} Descricao {Cadastro  Geral - Vendedores} 
-- ------------------------------------------------------------

CREATE TABLE cad_cadastro_vendedor (
  cad_cadastro_id INT NOT NULL,
  cad_cadastro_id_vendedor INT NOT NULL,
  PRIMARY KEY(cad_cadastro_id, cad_cadastro_id_vendedor),
  FOREIGN KEY(cad_cadastro_id)
    REFERENCES cad_cadastro(id)
      ON DELETE CASCADE
      ON UPDATE NO ACTION
);

-- ------------------------------------------------------------
-- Tabela {financ_rp} Versao {017}  Esquema {Empresa} Descricao {Contas a Natureza:(R)eceber (P)agar}
-- ------------------------------------------------------------

CREATE TABLE financ_rp (
  id SERIAL NOT NULL,
  natureza CHAR(1) NOT NULL,
  cad_cadastro_id INT NOT NULL,
  fatura INT4 NULL,
  financ_cc_movto_controle BIGINT NULL,
  parcela INT NOT NULL,
  nossonumero VARCHAR(30) NULL,
  cad_filial_id INT NULL,
  emissao DATE NULL,
  vcto DATE NULL,
  prorrogacao DATE NULL,
  dataref DATE NULL,
  docto VARCHAR(40) NULL,
  portador_id INT NULL,
  tipocobranca_id INT NULL,
  status_reg CHAR(1) NOT NULL,
  moeda_id VARCHAR(20) NULL,
  valor_total DECIMAL(14,4) NULL,
  valor_saldo DECIMAL(14,4) NULL,
  valor_jurosmora DECIMAL(14,4) NULL,
  valor_desconto DECIMAL(14,4) NULL,
  valor_acrescimo DECIMAL(14,4) NULL,
  numeroboleto VARCHAR(40) NULL,
  per_jurosmora DECIMAL(10,6) NULL,
  per_acrescimo DECIMAL(10,6) NULL,
  per_multa DECIMAL(10,6) NULL,
  vendedor_id INT NULL,
  carencia NUMERIC (4) NULL,
  desconto NUMERIC (14,4) NULL,
  desc_ate DATE NULL,
  desc_valor NUMERIC (14,4) NULL,
  datainclusao DATE NULL,
  horainclusao TIME NULL,
  usuarioinclusao VARCHAR(20) NULL,
  dataalteracao DATE NULL,
  horaalteracao TIME NULL,
  usuarioalteracao VARCHAR(20) NULL,
  PRIMARY KEY(id),
  CONSTRAINT unique_index_fatura UNIQUE(cad_cadastro_id, fatura, parcela),
  FOREIGN KEY(cad_cadastro_id)
    REFERENCES cad_cadastro(id)
      ON DELETE CASCADE
      ON UPDATE NO ACTION,
  FOREIGN KEY(fatura)
    REFERENCES fat_docto_c(controle)
      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
);

