drop table if exists produto_caixa;
drop table if exists produto_vendas_pag;
drop table if exists produto_vendas_itens;
drop table if exists produto_vendas_pagamentos;
drop table if exists produto_vendas_itens;
drop table if exists produto_vendedor;
drop table if exists produto_cliente;
drop table if exists produto_vendas;
drop table if exists produto_siglas;
drop table if exists produto_sub;
drop table if exists produto_inventario;
drop table if exists produto_imagens;
drop table if exists produto_fornecedor;
drop table if exists produto_estoque;
drop table if exists produto;

create table if not exists produto_vendedor (
	idinstituicao_produto_vendedor int(11) not null,
	id_produto_vendedor int(11) not null auto_increment primary key,
	idpessoa_produto_vendedor int(11),
	porcentagem_produto_vendedor double(15,2) not null,
	obs_produto_vendedor varchar(20),
	
	criacao_produto_vendedor timestamp default current_timestamp(),
	idcriacao_produto_vendedor int(11),
	modificacao_produto_vendedor timestamp default current_timestamp() on update current_timestamp,
	idmodificacao_produto_vendedor int(11),
	delete_produto_vendedor int(1),
	iddelete_produto_vendedor int(11),
	
	constraint fk_instituicao_produto_vendedor foreign key (idinstituicao_produto_vendedor) references global_instituicao (id_instituicao),
	constraint fk_pessoa_produto_vendedor foreign key (idpessoa_produto_vendedor) references global_pessoa (id_pessoa)
) engine=innodb;

create table if not exists produto_cliente (
	idinstituicao_produto_cliente int(11) not null,
	id_produto_cliente int(11) not null auto_increment primary key,
	idpessoa_produto_cliente int(11),
	desconto_produto_cliente double(15,2) not null,
	obs_produto_cliente varchar(20),
	
	criacao_produto_cliente timestamp default current_timestamp(),
	idcriacao_produto_cliente int(11),
	modificacao_produto_cliente timestamp default current_timestamp() on update current_timestamp,
	idmodificacao_produto_cliente int(11),
	delete_produto_cliente int(1),
	iddelete_produto_cliente int(11),
	
	constraint fk_instituicao_produto_cliente foreign key (idinstituicao_produto_cliente) references global_instituicao (id_instituicao),
	constraint fk_pessoa_produto_cliente foreign key (idpessoa_produto_cliente) references global_pessoa (id_pessoa)
) engine=innodb;

create table if not exists produto (
	idinstituicao_produto int(11) not null,
	id_produto int(11) not null auto_increment primary key,
	nome_produto varchar(40),
	minimo_produto double(15,2) default 0,
	
	criacao_estet_item timestamp default current_timestamp(),
	idcriacao_estet_item int(11),
	modificacao_estet_item timestamp default current_timestamp() on update current_timestamp,
	idmodificacao_estet_item int(11),
	delete_estet_item int(1),
	iddelete_estet_item int(11),
	
	constraint fk_instituicao_produto foreign key (idinstituicao_produto) references global_instituicao (id_instituicao)
) engine=innodb;

create table if not exists produto_sub (
	idinstituicao_produto_sub int(11) not null,
	id_produto_sub int(11) not null auto_increment primary key,
	idproduto_produto_sub int(11) not null,
	idfornecedor_produto_sub int(11) not null,
	codbarras_produto_sub varchar(60),
	desc_produto_sub varchar(40),
	sigla_produto_sub varchar(4),
	tipo_produto_sub varchar(60),
	cfop_produto_sub varchar(8),
	ncm_produto_sub varchar(8),
	valor_produto_sub double(15,2) default 0,
	baixa_produto_sub double(15,2) default 0,
	natureza_produto_sub int(1),
   
	criacao_produto_sub timestamp default current_timestamp(),
	idcriacao_produto_sub int(11),
	modificacao_produto_sub timestamp default current_timestamp() on update current_timestamp,
	idmodificacao_produto_sub int(11),
	delete_produto_sub int(1),
	iddelete_produto_sub int(11),
	
	constraint fk_instituicao_produto_sub foreign key (idinstituicao_produto_sub) references global_instituicao (id_instituicao),
	constraint fk_produto_sub foreign key (idproduto_produto_sub) references produto (id_produto)  
) engine=innodb;

create table if not exists produto_fornecedor (
	idinstituicao_produto_fornecedor int(11) not null,
	id_produto_fornecedor int(11) not null auto_increment primary key,
	idpessoa_produto_fornecedor int(11),
	idprod_produto_fornecedor int(11),
	
	criacao_produto_fornecedor timestamp default current_timestamp(),
	idcriacao_produto_fornecedor int(11),
	modificacao_produto_fornecedor timestamp default current_timestamp() on update current_timestamp,
	idmodificacao_produto_fornecedor int(11),
	delete_produto_fornecedor int(1),
	iddelete_produto_fornecedor int(11),
  
	constraint fk_instituicao_produto_fornecedor foreign key (idinstituicao_produto_fornecedor) references global_instituicao (id_instituicao),
	constraint fk_pessoa_fornecedor foreign key (idpessoa_produto_fornecedor) references global_pessoa (id_pessoa),
	constraint fk_produto_fornecedor foreign key (idprod_produto_fornecedor) references produto (id_produto)
) engine=innodb;

create table if not exists produto_estoque (
	idinstituicao_produto_estoque int(11) not null,
	id_produto_estoque int(11) not null auto_increment primary key,
	idprodutoproduto_estoque int(11),
	estoque_produto_estoque double(15,2),
	data_produto_estoque datetime,
	tipo_produto_estoque varchar(15),

	criacao_produto_estoque timestamp default current_timestamp(),
	idcriacao_produto_estoque int(11),
	modificacao_produto_estoque timestamp default current_timestamp() on update current_timestamp,
	idmodificacao_produto_estoque int(11),
	delete_produto_estoque int(1),
	iddelete_produto_estoque int(11),
	
	constraint fk_instituicao_produto_estoque foreign key (idinstituicao_produto_estoque) references global_instituicao (id_instituicao),
	constraint fk_estet_item foreign key (idprodutoproduto_estoque) references produto (id_produto)
) engine=innodb;

create table if not exists produto_imagens (
	idinstituicao_produto_imagens int(11) not null,
	id_produto_imagens int(11) not null auto_increment primary key,
	idprod_produto_imagens int(11),
	arq_produto_imagens longtext,
  
	criacao_produto_imagens timestamp default current_timestamp(),
	idcriacao_produto_imagens int(11),
	modificacao_produto_imagens timestamp default current_timestamp() on update current_timestamp,
	idmodificacao_produto_imagens int(11),
	delete_produto_imagens int(1),
	iddelete_produto_imagens int(11),
	
	constraint fk_instituicao_produto_imagens foreign key (idinstituicao_produto_imagens) references global_instituicao (id_instituicao),
	constraint fk_produto_imagens foreign key (idprod_produto_imagens) references produto (id_produto)  
) engine=innodb;

create table if not exists produto_inventario (
	idinstituicao_produto_inventario int(11) not null,
	id_produto_inventario int(11) not null auto_increment primary key,
	idprod_produto_inventario int(11),
	motivo_produto_inventario varchar(40),
	data_produto_inventario datetime,
	tipo_produto_inventario varchar(10),
	ajuste_produto_inventario float,
	estoque_produto_inventario float,
  
	criacao_produto_inventario timestamp default current_timestamp(),
	idcriacao_produto_inventario int(11),
	modificacao_produto_inventario timestamp default current_timestamp() on update current_timestamp,
	idmodificacao_produto_inventario int(11),
	delete_produto_inventario int(1),
	iddelete_produto_inventario int(11),
	
	constraint fk_instituicao_produto_inventario foreign key (idinstituicao_produto_inventario) references global_instituicao (id_instituicao),
	constraint fk_produto_inventario foreign key (idprod_produto_inventario) references produto (id_produto)  
) engine=innodb;

create table if not exists produto_siglas (
	idinstituicao_produto_siglas int(11) not null,
	id_produto_siglas int(11) not null auto_increment primary key,
	legenda_produto_siglas varchar(3),
	descricao_produto_siglas varchar(20),
	
	criacao_produto_siglas timestamp default current_timestamp(),
	idcriacao_produto_siglas int(11),
	modificacao_produto_siglas timestamp default current_timestamp() on update current_timestamp,
	idmodificacao_produto_siglas int(11),
	delete_produto_siglas int(1),
	iddelete_produto_siglas int(11),
	
	constraint fk_instituicao_produto_siglas foreign key (idinstituicao_produto_siglas) references global_instituicao (id_instituicao)
) engine=innodb;

create table if not exists produto_caixa (
	idinstituicao_produto_caixa int(11) not null,
	id_produto_caixa int(11) not null auto_increment primary key,
	idpessoa_produto_caixa int(11) not null,
	idusuario_produto_caixa int(11) not null,
	troco_produto_caixa double(15,2),
	obs_produto_caixa varchar(20),
	
	criacao_produto_caixa timestamp default current_timestamp(),
	idcriacao_produto_caixa int(11),
	modificacao_produto_caixa timestamp default current_timestamp() on update current_timestamp,
	idmodificacao_produto_caixa int(11),
	delete_produto_caixa int(1),
	iddelete_produto_caixa int(11),
	
	constraint fk_instituicao_produto_caixa foreign key (idinstituicao_produto_caixa) references global_instituicao (id_instituicao),
	constraint fk_pessoa_produto_caixa foreign key (idpessoa_produto_caixa) references global_pessoa (id_pessoa),	
	constraint fk_usuario_produto_caixa foreign key (idusuario_produto_caixa) references global_usuario (id_usuario)
) engine=innodb;

create table if not exists produto_vendas (
	idinstituicao_produto_vendas int(11) not null,
	id_produto_vendas int(11) not null auto_increment primary key ,
	idcaixa_produto_vendas int(11) not null,
	idcliente_produto_vendas int(11) not null,
	idpessoa_produto_vendas int(11) not null,
	idtrans_produto_vendas int(11) not null,
	vtrans_produto_vendas double(15,2),
	data_produto_vendas datetime not null,
	dataf_produto_vendas datetime,
	valor_produto_vendas double(15,2),
	tipoen_produto_vendas varchar(20),
	status_produto_vendas varchar(20) not null,
	juros_produto_vendas double(15,2),
	desconto_produto_vendas double(15,2),
	total_produto_vendas double(15,2),
	notas_produto_vendas varchar(20),
	obs_produto_vendas varchar(200),
	avaliacao_produto_vendas int(1),
	agenda_produto_vendas datetime,
  
	criacao_produto_vendas timestamp default current_timestamp(),
	idcriacao_produto_vendas int(11),
	modificacao_produto_vendas timestamp default current_timestamp() on update current_timestamp,
	idmodificacao_produto_vendas int(11),
	delete_produto_vendas int(1),
	iddelete_produto_vendas int(11),  
  
	constraint fk_instituicao_produto_vendas foreign key (idinstituicao_produto_vendas) references global_instituicao (id_instituicao),
	constraint fk_caixa_produto_vendas foreign key (idcaixa_produto_vendas) references produto_caixa (id_produto_caixa),	
	constraint fk_cliente_produto_vendas foreign key (idcliente_produto_vendas) references produto_cliente (id_produto_cliente),	
	constraint fk_pessoa_produto_vendas foreign key (idpessoa_produto_vendas) references global_pessoa (id_pessoa)	
) engine=innodb;

create table if not exists produto_vendas_itens (
	idinstituicao_produto_vendas_itens int(11) not null,
	id_produto_vendas_itens int(11) not null auto_increment primary key,
	idvendas_produto_vendas_itens int(11) not null,
	idproduto_produto_vendas_itens int(11) not null,
	descricao_produto_vendas_itens varchar(80) not null,
	qtd_produto_vendas_itens float not null,
	sigla_produto_vendas_itens varchar(3),
	unitario_produto_vendas_itens float not null,
	desconto_produto_vendas_itens float,
	impostos_produto_vendas_itens float,
	total_produto_vendas_itens float not null,
	serie_produto_vendas_itens varchar(200),

	criacao_produto_vendas_itens timestamp default current_timestamp(),
	idcriacao_produto_vendas_itens int(11),
	modificacao_produto_vendas_itens timestamp default current_timestamp() on update current_timestamp,
	idmodificacao_produto_vendas_itens int(11),
	delete_produto_vendas_itens int(1),
	iddelete_produto_vendas_itens int(11),
	
	constraint fk_instituicao_produto_vendas_itens foreign key (idinstituicao_produto_vendas_itens) references global_instituicao (id_instituicao),
	constraint fk_vendas_produto_vendas_itens foreign key (idvendas_produto_vendas_itens) references produto_vendas (id_produto_vendas),
	constraint fk_produto_vendas_itens foreign key (idproduto_produto_vendas_itens) references produto (id_produto)
) engine=innodb;

create table produto_vendas_pag (
	idinstituicao_produto_vendas_pag int(11) not null,
	id_produto_vendas_pag int(11) not null auto_increment primary key,
	idvendas_produto_vendas_pag int(11),
	idcaixa_produto_vendas_pag int(11),
	valor_produto_vendas_pag float,
	tipo_produto_vendas_pag varchar(20),
	credito_produto_vendas_pag date,


	criacao_produto_vendas_pag timestamp default current_timestamp(),
	idcriacao_produto_vendas_pag int(11),
	modificacao_produto_vendas_pag timestamp default current_timestamp() on update current_timestamp,
	idmodificacao_produto_vendas_pag int(11),
	delete_produto_vendas_pag int(1),
	iddelete_produto_vendas_pag int(11),
	
	constraint fk_instituicao_produto_vendas_pag foreign key (idinstituicao_produto_vendas_pag) references global_instituicao (id_instituicao),
	constraint fk_vendas_produto_vendas_pag foreign key (idvendas_produto_vendas_pag) references produto_vendas (id_produto_vendas),
	constraint fk_produto_caixa_vendas_pag foreign key (idcaixa_produto_vendas_pag) references produto_caixa (id_produto_caixa)
) engine=innodb;