/* endereço local da Makenfe

localhost:90\nfephp\exemplos\NFe\4.00testaMakeNFe.php

C:\Apache24\htdocs\nfephp\exemplos\NFe\4.00testaMakeNFe.php

*/

delimiter $$

/* id da filial emissora da nota fiscal */
create table if not exists nfe_filial (
	id int not null auto_increment primary key,
	cnpj			numeric( 16) not null ,
	ds_filial		varchar( 40) not null ,
	id_cep	  		varchar( 08) not null ,
    ds_endereco		varchar(100) not null ,
	ds_numero 		varchar( 20) not null ,
	ds_complemento	varchar( 50) null     ,

	nm_bairro 		varchar( 50) not null ,
	nm_cidade 		varchar( 50) not null ,
	ds_uf	  		varchar( 02) not null ,
	ds_pais			varchar( 50) not null ,
	nr_telefone		numeric( 15) not null ,

	/* informações vindas do IBGE  */
	id_municipio	numeric( 08) not null ,
	id_uf			numeric( 02) not null ,
	id_pais			numeric( 05) not null ,

	/*  controles de edição do usuário final */
	ts_atualizacao 	timestamp not null default now(),
	st_ativo		bit default 1 	,
	id_usuario		int default 1
)$$


/* cabeçalho da nfe */
create table if not exists nfe_cab(
	id			 int not null auto_increment primary key ,
	id_filial	 int 		  not null ,
	ds_natureza  varchar( 20) not null ,
	id_pagamento int 				   ,
	nr_modelo	 numeric( 02) not null ,
	ds_serie	 varchar( 02) not null ,
	/* campo com numeração de controle com o retorno do sefaz */
	nr_nota		 int not null	   ,
	dt_emissao   datetime not null ,
	dt_saida	 datetime not null ,
    tp_nota      numeric( 01) Default 1,
	id_destino	 numeric( 01) ,
	tp_geracao	 numeric( 02) ,
	tp_emissao	 numeric( 02) ,
	nr_ambiente	 numeric( 01) Default 2,
	nr_finalnfe	 numeric( 01) ,
	id_finaltipo numeric( 01) ,
	id_presenca  numeric( 02) ,
	id_emissao	numeric( 02)  ,
	st_emissao	int default 0 ,

	/*  controles de edição do usuário final */
	ts_atualizacao 	timestamp not null default now(),
	st_ativo		bit default 1 	,
	id_usuario		int default 1
)$$

/* informações do destinarario */
create table if not exists nfe_cliente(
	id_documento 	int not null auto_increment primary key ,
	nr_cnpj		 	numeric( 16) null	 ,
	nr_cpf			numeric( 11) null	 ,
	fl_emissao		bit not null 		 ,
	id_estrangeiro	varchar( 50) null	 ,
	nm_cliente		varchar(100) not null,
	nr_ietipo		varchar( 02) not null,
	id_ie			numeric( 16) null	 ,
	ds_ieuf			varchar( 02) null	 ,
	ds_iemunicipio	varchar( 12) not null,
	id_email		varchar( 50) null	 ,
/*  controles de edição do usuário final */
	ts_atualizacao 	timestamp not null default now(),
	st_ativo		bit default 1 	,
	id_usuario		int default 1
)$$

/* Endereço do destinatário */
create table if not exists nfe_cliente_endereco(
	id_documento 	int not null auto_increment primary key ,
	id_cep	  		varchar( 08) ,
    ds_endereco		varchar(100) not null ,
	ds_numero 		varchar( 20) not null ,
	ds_complemento	varchar( 50) null     ,

	nm_bairro 		varchar( 50) not null ,
	nm_cidade 		varchar( 50) not null ,
	ds_uf	  		varchar( 02) not null ,
	ds_pais			varchar( 50) not null ,
	nr_telefone		numeric( 15) not null ,

	/* informações vindas do IBGE  */
	id_municipio	numeric( 08) not null ,
	id_uf			numeric( 02) not null ,
	id_pais			numeric( 05) not null ,

	/*  controles de edição do usuário final */
	ts_atualizacao 	timestamp not null default now(),
	st_ativo		bit default 1 	,
	id_usuario		int default 1
)$$

/* informações do produto */
create table if not exists nfe_produto(
	id			int not null auto_increment primary key,
	ds_produto	varchar( 100) not null ,
	id_ncm		numeric( 16) ,
	ds_extipi	varchar( 02) ,
    nr_cfop		int	,
	ds_unidcom	varchar( 10),
	ds_unidtrib	varchar( 10),
	vl_unidcom	numeric( 15,02) not null ,

/*  controles de edição do usuário final */
	ts_atualizacao 	timestamp not null default now(),
	st_ativo		bit default 1 	,
	id_usuario		int default 1
)$$

/* informações do produto */
create table if not exists nfe_produto_ean(
	id			int not null auto_increment primary key	,
	id_ean		numeric( 15),
	id_eabtrib	numeric( 15),
    nr_fci		varchar( 20),
	vl_unidtrib numeric( 15,02) not null ,

	/*  controles de edição do usuário final */
	ts_atualizacao 	timestamp not null default now(),
	st_ativo		bit default 1 	,
	id_usuario		int default 1
)$$

/* informações do item da nota nfe, produto */
create table if not exists nfe_item(
	id			int not null auto_increment primary key,
	id_nfe		int,
	nr_item 	numeric( 03) not null ,
    id_produto	int not null 		  ,
	id_ean		numeric( 15) not null ,
	nr_qtdecom	int not null   ,
    vl_unidcom	numeric( 15,02) not null ,
    vl_totalcom	numeric( 15,02) not null ,
	nr_qtdetrib	numeric( 15,02) not null ,
	vl_unidtrib numeric( 15,02) not null ,
    vl_frete	numeric( 15,02) not null default 0,
    vl_seguro	numeric( 15,02) not null default 0,
	vl_desconto	numeric( 15,02) not null default 0,
	vl_outro	numeric( 15,02) not null default 0,
	fl_indtotal int ,
    nr_pedido	int ,
    nr_fci		varchar( 20),

	/*  controles de edição do usuário final */
	ts_atualizacao 	timestamp not null default now(),
	st_ativo		bit default 1 	,
	id_usuario		int default 1
)$$

/* final da nota em observações
$nItem = 2; //produtos 2
$vDesc = 'Caixa com 1000 unidades';
*/

/* tabela de impostos composta por estado / produto com valores de ICMS + PIS + CODFINS*/
 create table nfe_produto_imposto(
	id			int not null auto_increment primary key,
	id_produto	int not null ,
	ds_uf	  	varchar( 02) not null ,
	tp_imposto	varchar( 20) not null ,
	vp_ipi		numeric( 04, 02) not null default 0 ,
    vp_icms		numeric( 04, 02) not null default 0 ,
	vp_pis		numeric( 04, 02) not null default 0 ,
	vp_cofins	numeric( 04, 02) not null default 0 ,
	vp_RedBC	numeric( 04, 02) not null default 0 ,
	vp_MVAST	numeric( 04,02) null,
	vp_RedBCST	numeric( 04,02) null,
	vp_ICMSST	numeric( 04,02) null,
	vp_Dif		numeric( 04,02) null,

	/*  controles de edição do usuário final */
	ts_atualizacao 	timestamp not null default now(),
	st_ativo		bit default 1 	,
	id_usuario		int default 1
)$$

/* tabela detalhada do imposto do item */
create table nfe_item_imposto(
	id 				int not null auto_increment primary key,
	id_item			int not null   ,
	nr_origem		numeric( 04,02),
	ds_cst			numeric( 04,02),
	ds_modBC		numeric( 04,02),
	vp_RedBC		numeric( 04,02),
	vl_BC			numeric( 15,02),
	vl_ICMS			numeric( 15,02),
	vl_ICMSDes		numeric( 15,02),
	ds_motICMSDes	varchar( 50),
	ds_motBCST		varchar( 50),
	vl_BCST			numeric( 15,02),
	vl_ICMSST		numeric( 15,02),
	vl_ICMSDif		numeric( 15,02),
	vl_ICMSOp		numeric( 15,02),
	vl_BCSTRet		numeric( 15,02),
	vl_ICMSSTRet 	numeric( 15,02),

	/*  controles de edição do usuário final */
	ts_atualizacao 	timestamp not null default now(),
	st_ativo		bit default 1 	,
	id_usuario		int default 1
)$$

create table nfe_geracao_status(
	id 			int not null auto_increment primary key,
	id_nfe		int not null ,
	id_status	int	not null ,
	ds_chave	varchar( 1000) null,
	ds_link		text null,
	ds_erro		varchar( 1000) null,

	/*  controles de edição do usuário final */
	ts_atualizacao 	timestamp not null default now(),
	st_ativo		bit default 1 	,
	id_usuario		int default 1
)$$


alter table estados add id_ibge int null
$$

insert into nfe_filial(
	cnpj, ds_filial, id_cep, ds_endereco, ds_numero, ds_complemento,
	nm_bairro, nm_cidade, ds_uf, ds_pais,
	id_municipio, id_uf, id_pais, nr_telefone)
values( '23401454000170', 'CODE CRM TECNOLOGIA', '08710530', 'Rua João Cardoso de Siqueira Primo', 55, 'cj 23',
	'Centro', 'Mogi das Cruzes', 'SP', 'Brasil',
	3530607, 1, 1058, '1126290025' )
$$
	
ALTER 	TABLE nfe_cab 
	ADD COLUMN ds_chave VARCHAR(1000) NULL  AFTER id_cliente, 
	ADD COLUMN `ds_link` TEXT NULL  AFTER `ds_chave` 
$$

