alter table erpc_transportadoras modify id_municipio int null;
alter table erpc_transportadoras modify id_operadora int null;
alter table erpc_transportadoras modify id_banco int null;
CALL AddColumnUnlessExists('erpc_pedidos_venda', 'qt_volumes', ' decimal(14,4) null');


CALL AddColumnUnlessExists('erpc_produtos', 'ds_controle_lote', ' varchar(20) null');
CALL AddColumnUnlessExists('erpc_produtos', 'qt_produto_lote', ' decimal(15,4) null default 1');
CALL AddColumnUnlessExists('erpc_produtos', 'dt_fabrica_lote', ' date null');
CALL AddColumnUnlessExists('erpc_produtos', 'dt_validae_lote', ' date null');
CALL AddColumnUnlessExists('erpc_produtos', 'cd_produto_ANVISA', ' varchar(13) null');
CALL AddColumnUnlessExists('erpc_produtos', 'nr_perc_fcp', ' decimal( 5, 2) null');

CALL AddColumnUnlessExists('erpc_pedidos_venda_liberados', 'qt_volumes', ' decimal(14,4) null');

CALL AddColumnUnlessExists('erpc_pedidos_venda', 'ds_modelo_frete', ' char(1) null');
CALL AddColumnUnlessExists('erpc_pedidos_venda', 'vl_servico', ' decimal(14,4) null');
CALL AddColumnUnlessExists('erpc_pedidos_venda_liberados', 'ds_modelo_frete', ' char(1) null');
CALL AddColumnUnlessExists('erpc_pedidos_venda_liberados', 'vl_servico', ' decimal(14,4) null');

CALL AddColumnUnlessExists('erpc_pedidos_venda', 'ds_especie', ' varchar(20) null');
CALL AddColumnUnlessExists('erpc_pedidos_venda', 'ds_marca', ' varchar(20) null');
CALL AddColumnUnlessExists('erpc_pedidos_venda', 'nr_volumes', ' varchar(20) null');
CALL AddColumnUnlessExists('erpc_pedidos_venda', 'nr_peso_liquido', ' decimal(14, 4) null');
CALL AddColumnUnlessExists('erpc_pedidos_venda', 'nr_peso_bruto', ' decimal(14, 4) null');
CALL AddColumnUnlessExists('erpc_pedidos_venda', 'nr_lacres', ' varchar(20) null');

CALL AddColumnUnlessExists('erpc_pedidos_venda_liberados', 'ds_especie', ' varchar(20) null');
CALL AddColumnUnlessExists('erpc_pedidos_venda_liberados', 'ds_marca', ' varchar(20) null');
CALL AddColumnUnlessExists('erpc_pedidos_venda_liberados', 'nr_volumes', ' varchar(20) null');
CALL AddColumnUnlessExists('erpc_pedidos_venda_liberados', 'nr_peso_liquido', ' decimal(14, 4) null');
CALL AddColumnUnlessExists('erpc_pedidos_venda_liberados', 'nr_peso_bruto', ' decimal(14, 4) null');
CALL AddColumnUnlessExists('erpc_pedidos_venda_liberados', 'nr_lacres', ' varchar(20) null');

CALL AddColumnUnlessExists('erpc_dom_forma_pagamento', 'cd_forma', ' varchar(20) DEFAULT null');
CALL AddColumnUnlessExists('erpc_cfop', 'ds_complementar_nfe', ' varchar(5000) null');

CALL AddColumnUnlessExists('erpc_pedidos_venda', 'id_forma_pagamento', ' int(11) DEFAULT NULL');
CALL AddColumnUnlessExists('erpc_pedidos_venda', 'qt_volumes', ' decimal(14,4) DEFAULT NULL');
CALL AddColumnUnlessExists('erpc_pedidos_venda', 'vl_pagamento', ' decimal(12,2) NOT NULL');

CALL AddColumnUnlessExists('erpc_pedidos_venda_liberados', 'id_forma_pagamento', ' int(11) DEFAULT NULL');
CALL AddColumnUnlessExists('erpc_pedidos_venda_liberados', 'qt_volumes', ' decimal(14,4) DEFAULT NULL');
CALL AddColumnUnlessExists('erpc_pedidos_venda_liberados', 'vl_pagamento', ' decimal(12,2) NOT NULL');


create table if not exists erpc_categorias_produtos(
id int primary key auto_increment,
ds_categoria varchar(255),
ds_imagem varchar(255),
st_ativo tinyint
);


/*alterando tabela de produtos para referenciar a categoria*/
-- alter table erpc_produtos add id_categoria int null;
CALL AddColumnUnlessExists('erpc_produtos', 'id_categoria', ' int null');


CREATE TABLE if not exists `erpc_comanda` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `id_unidade` int(11) NOT NULL,
 `nr_comanda` int(11) NOT NULL,
 `id_produto` int(11) NOT NULL,
 `id_unidade_medida` varchar(2) NOT NULL,
 `qt_pedido` decimal(15,4) NOT NULL,
 `vl_unitario` decimal(15,4) NOT NULL,
 `ds_pedido` varchar(100) DEFAULT NULL,
 `st_comanda` char(1) DEFAULT NULL,
 `st_entrega` bit(1) DEFAULT b'0',
 `id_usuario` int(11) NOT NULL,
 `ts_alteracao` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
 PRIMARY KEY (`id`),
 KEY `fk_comanda_usuario` (`id_usuario`),
 KEY `fk_comanda_produtos` (`id_produto`),
 KEY `fk_comanda_unidade_medida` (`id_unidade_medida`),
 KEY `fk_comanda_unidade` (`id_unidade`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;

-- alter table erpc_comanda add column st_impressao bool after st_comanda;
CALL AddColumnUnlessExists('erpc_comanda', 'st_impressao', ' bool after st_comanda');

drop view if exists vw_erpc_comanda_geraxml_produtos;

Create View vw_erpc_comanda_geraxml_produtos
as
select   c.nr_comanda as xComanda
		,p.cd_produto as cProd
		,p.ds_produto as xProd
        ,c.qt_pedido  as qCom
        ,c.id_unidade_medida as uCom
		,c.id_unidade as id_unidade
		,c.ds_pedido as Obs
FROM 
		`erpc_comanda` c
			inner join erpc_produtos p
				on c.id_produto = p.id 
WHERE 
		st_comanda = 1
		and st_impressao != 1
;

-- alter table erpc_pedidos_venda add column dh_criacao datetime;
CALL AddColumnUnlessExists('erpc_pedidos_venda', 'dh_criacao', ' datetime');


create table if not exists erpc_orcamento select * from erpc_pedidos_venda;
alter table erpc_orcamento change id id int(11) AUTO_INCREMENT PRIMARY KEY;
alter table erpc_orcamento AUTO_INCREMENT = 1;

create table if not exists erpc_orcamento_itens select * from erpc_pedidos_itens;
truncate table erpc_orcamento_itens;
alter table erpc_orcamento_itens change id id int(11) AUTO_INCREMENT PRIMARY KEY;
alter table erpc_orcamento_itens AUTO_INCREMENT = 1;

create table if not exists erpc_orcamento_liberados select * from erpc_pedidos_venda_liberados;
truncate table erpc_orcamento_liberados;
alter table erpc_orcamento_liberados change id id int(11) AUTO_INCREMENT PRIMARY KEY;
alter table erpc_orcamento_liberados AUTO_INCREMENT = 1;

create table if not exists erpc_orcamento_itens_liberados select * from erpc_pedidos_itens_liberados;
truncate table erpc_orcamento_itens_liberados;
alter table erpc_orcamento_itens_liberados change id id int(11) AUTO_INCREMENT PRIMARY KEY;
alter table erpc_orcamento_itens_liberados AUTO_INCREMENT = 1;


drop view if exists vw_erpc_orcamento_geraxml_totais;

Create View vw_erpc_orcamento_geraxml_totais  AS  
select pv.id AS nr_documento,
NULL AS ds_numnf,pv.vl_total_pedido AS vl_total_pedido,fp.cd_forma AS cMP,
IF(IFNULL(pv.vl_pagamento,0)=0, pv.vl_total_pedido, vl_pagamento) AS vMP
from ((erpc_orcamento_liberados pv 
join erpc_orcamento_itens_liberados pp 
on((pv.id = pp.id_pedido_venda_liberado))) 
join erpc_dom_forma_pagamento fp on((pv.id_forma_pagamento = fp.id))) 
group by pv.id,pv.vl_total_pedido,fp.cd_forma ;


drop view if exists vw_erpc_orcamento_geraxml_produtos;
CREATE VIEW vw_erpc_orcamento_geraxml_produtos  
AS select  ped . id  AS  nItem ,
 ven . id  AS  nr_documento ,
 ven . id  AS  nr_nota ,
 ven . id  AS  nr_pedido ,
 pro . cd_produto  AS  cProd ,
 pro . ds_ean  AS  cEAN , pro .
 ds_produto  AS  xProd ,
 pro . ds_ncm  AS  NCM ,
 mov . ds_cfop  AS  CFOP ,
NULL AS  EXTIPI ,
 ped . id_unidade_medida  AS  uCom ,
 ped . nr_quantidade  AS  qCom ,
 ped . vl_unitario  AS  vUnCom ,
 ped . vl_desconto_produto  AS  vDesc ,
(( ped . vl_unitario  *  ped . nr_quantidade ) -  ped . vl_desconto_produto ) AS  vProd ,
'A' AS  indRegra ,( ncm . nr_perc_nacional  / 100) AS  vTribFed ,
( ncm . nr_perc_estadual  / 100) AS  vTribEst ,
( ncm . nr_perc_municipal  / 100) AS  vTribMun ,
 ncm . ds_chave_acesso  AS  ds_chave_ibpt  
from  erpc_orcamento_itens_liberados   ped  
join  erpc_orcamento_liberados   ven  on  ped . id_pedido_venda_liberado  =  ven . id  
join  erpc_produtos   pro  on ped . id_produto  =  pro . id 
join  erpc_origem_produto   org  on pro . id_origem_produto  =  org . id 
left join  erpc_grupo_tributacao   grp  on pro . id_grupo_tributacao  =  grp . id 
left join  erpc_excecao_fiscal   exc  on grp . id  =  exc . id_grupo_tributacao 
left join  erpc_tipos_movimentacao   mov  on ped . id_tipo_movimentacao  =  mov . id 
left join  erpc_dom_situacao_tributaria   tri  on mov . id_situacao_tributaria  =  tri . id 
left join  erpc_tributos_ncm   ncm  on
     pro . ds_ncm  =  ncm . ds_ncm
 and case when pro.ds_ex_ncm is null then '' else pro.ds_ex_ncm end = ncm.ds_ex_tipi
;

drop view if exists vw_erpc_orcamento_geraxml_prod_imposto;
CREATE VIEW`vw_erpc_orcamento_geraxml_prod_imposto` AS select `ped`.`id` AS `nItem`,
1 AS `1`,
'ICMS' AS `tipo`,
concat('<ICMSSN102><Orig>',`org`.`cd_origem`,'</Orig><CSOSN>102</CSOSN></ICMSSN102>') AS `valor` 
from ((((((`erpc_orcamento_itens_liberados` `ped` 
     join `erpc_produtos` `pro` on((`ped`.`id_produto` = `pro`.`id`))) 
     join `erpc_origem_produto` `org` on((`pro`.`id_origem_produto` = `org`.`id`))) 
left join `erpc_tipos_movimentacao` `mov` on((`ped`.`id_tipo_movimentacao` = `mov`.`id`))) 
left join `erpc_dom_situacao_tributaria` `tri` on((`mov`.`id_situacao_tributaria` = `tri`.`id`))) 
left join `erpc_orcamento_liberados` `ven` on((`ped`.`id_pedido_venda_liberado` = `ven`.`id`))) 
left join `erpc_unidades` `uni` on((`ven`.`id_unidade` = `uni`.`id`))) 
union all select `ped`.`id` AS `id_item_liberado`,2 AS `2`,'PIS' AS `tipo`,concat('<PISSN><CST>49</CST></PISSN>') AS `valor` from (((`erpc_orcamento_itens_liberados` `ped` join `erpc_produtos` `pro` on((`ped`.`id_produto` = `pro`.`id`))) left join `erpc_tipos_movimentacao` `mov` on((`ped`.`id_tipo_movimentacao` = `mov`.`id`))) left join `erpc_dom_situacao_tributaria` `tri` on((`mov`.`id_situacao_tributaria` = `tri`.`id`))) union all select `ped`.`id` AS `id_item_liberado`,3 AS `3`,'COFINS' AS `tipo`,concat('<COFINSSN><CST>49</CST></COFINSSN>') AS `valor` from (((`erpc_orcamento_itens_liberados` `ped` join `erpc_produtos` `pro` on((`ped`.`id_produto` = `pro`.`id`))) left join `erpc_tipos_movimentacao` `mov` on((`ped`.`id_tipo_movimentacao` = `mov`.`id`))) left join `erpc_dom_situacao_tributaria` `tri` on((`mov`.`id_situacao_tributaria` = `tri`.`id`))) order by `nItem`,`1`;


DELIMITER $$

DROP PROCEDURE IF EXISTS pr_orcamento_cliente$$

CREATE PROCEDURE `pr_orcamento_cliente`(IN _ID_PED INT)
BEGIN
	/*CORPO DO PROCEDIMENTO*/
select	 cl.ds_cnpj_cpf, 
		 cl.ds_nome, 
         cl.ds_tipo_documento,
         cl.ds_endereco,
         cl.ds_bairro,
		 cl.ds_contato
into @documento, @nome, @tipo, @end, @bairro, @contato
  from	erpc_orcamento_liberados  pv
  join	erpc_clientes cl
  	on  pv.id_cliente = cl.id
where   pv.id = _ID_PED;

if @documento='' then
	select @nome  as xNome, @end as xEnd, @bairro as xBairro, @contato as xContato;
elseif @tipo='J' then
	select @documento as CNPJ, @nome as xNome, @end as xEnd, @bairro as xBairro, @contato as xContato;
elseif @tipo='F' then 
	select @documento as CPF, @nome as xNome, @end as xEnd, @bairro as xBairro, @contato as xContato;
end if;    

END$$
DELIMITER ;
   

CALL AddColumnUnlessExists('erpc_produtos', 'ds_controle_lote', ' varchar(20) null');
CALL AddColumnUnlessExists('erpc_produtos', 'qt_produto_lote', ' decimal(15,4) null default 1');
CALL AddColumnUnlessExists('erpc_produtos', 'dt_fabrica_lote', ' date null');
CALL AddColumnUnlessExists('erpc_produtos', 'dt_validae_lote', ' date null');
CALL AddColumnUnlessExists('erpc_produtos', 'cd_produto_ANVISA', ' varchar(13) null');
CALL AddColumnUnlessExists('erpc_produtos', 'nr_perc_fcp', ' decimal( 5, 2) null');

CALL AddColumnUnlessExists('erpc_pedidos_venda_liberados', 'qt_volumes', ' decimal(14,4) null');

CALL AddColumnUnlessExists('erpc_pedidos_venda', 'ds_modelo_frete', ' char(1) null');
CALL AddColumnUnlessExists('erpc_pedidos_venda', 'vl_servico', ' decimal(14,4) null');
CALL AddColumnUnlessExists('erpc_pedidos_venda_liberados', 'ds_modelo_frete', ' char(1) null');
CALL AddColumnUnlessExists('erpc_pedidos_venda_liberados', 'vl_servico', ' decimal(14,4) null');

CALL AddColumnUnlessExists('erpc_pedidos_venda', 'ds_especie', ' varchar(20) null');
CALL AddColumnUnlessExists('erpc_pedidos_venda', 'ds_marca', ' varchar(20) null');
CALL AddColumnUnlessExists('erpc_pedidos_venda', 'nr_volumes', ' varchar(20) null');
CALL AddColumnUnlessExists('erpc_pedidos_venda', 'nr_peso_liquido', ' decimal(14, 4) null');
CALL AddColumnUnlessExists('erpc_pedidos_venda', 'nr_peso_bruto', ' decimal(14, 4) null');
CALL AddColumnUnlessExists('erpc_pedidos_venda', 'nr_lacres', ' varchar(20) null');

CALL AddColumnUnlessExists('erpc_pedidos_venda_liberados', 'ds_especie', ' varchar(20) null');
CALL AddColumnUnlessExists('erpc_pedidos_venda_liberados', 'ds_marca', ' varchar(20) null');
CALL AddColumnUnlessExists('erpc_pedidos_venda_liberados', 'nr_volumes', ' varchar(20) null');
CALL AddColumnUnlessExists('erpc_pedidos_venda_liberados', 'nr_peso_liquido', ' decimal(14, 4) null');
CALL AddColumnUnlessExists('erpc_pedidos_venda_liberados', 'nr_peso_bruto', ' decimal(14, 4) null');
CALL AddColumnUnlessExists('erpc_pedidos_venda_liberados', 'nr_lacres', ' varchar(20) null');

CALL AddColumnUnlessExists('erpc_dom_forma_pagamento', 'cd_forma', ' varchar(20) DEFAULT null');
CALL AddColumnUnlessExists('erpc_cfop', 'ds_complementar_nfe', ' varchar(5000) null');

CALL AddColumnUnlessExists('erpc_pedidos_venda', 'id_forma_pagamento', ' int(11) DEFAULT NULL');
CALL AddColumnUnlessExists('erpc_pedidos_venda', 'qt_volumes', ' decimal(14,4) DEFAULT NULL');
CALL AddColumnUnlessExists('erpc_pedidos_venda', 'vl_pagamento', ' decimal(12,2) NOT NULL');

CALL AddColumnUnlessExists('erpc_pedidos_venda_liberados', 'id_forma_pagamento', ' int(11) DEFAULT NULL');
CALL AddColumnUnlessExists('erpc_pedidos_venda_liberados', 'qt_volumes', ' decimal(14,4) DEFAULT NULL');
CALL AddColumnUnlessExists('erpc_pedidos_venda_liberados', 'vl_pagamento', ' decimal(12,2) NOT NULL');



SET FOREIGN_KEY_CHECKS=0;
delete from erpc_dom_forma_pagamento;
INSERT INTO erpc_dom_forma_pagamento VALUES (1,'Dinheiro',1,'01');
INSERT INTO erpc_dom_forma_pagamento VALUES (2,'Cheque',1,'02');
INSERT INTO erpc_dom_forma_pagamento VALUES (3,'Cartão de Crédito',1,'03');
INSERT INTO erpc_dom_forma_pagamento VALUES (4,'Cartão de Débito',1,'04');
INSERT INTO erpc_dom_forma_pagamento VALUES (5,'Crédito Loja',1,'05');
INSERT INTO erpc_dom_forma_pagamento VALUES (6,'Vale Alimentação',1,'10');
INSERT INTO erpc_dom_forma_pagamento VALUES (7,'Vale Refeição',1,'11');
INSERT INTO erpc_dom_forma_pagamento VALUES (8,'Vale Presente',1,'12');
INSERT INTO erpc_dom_forma_pagamento VALUES (9,'Vale Combustível',1,'13');
INSERT INTO erpc_dom_forma_pagamento VALUES (10,'Outros',1,'99');
SET FOREIGN_KEY_CHECKS=1;

SET FOREIGN_KEY_CHECKS=0;
CALL AddColumnUnlessExists('erpc_documentos_saida', 'id_tipo_nfe', ' int default 1');
SET FOREIGN_KEY_CHECKS=1;

SET FOREIGN_KEY_CHECKS=0;
delete from erpc_status_transmissao_nfe;
INSERT INTO erpc_status_transmissao_nfe VALUES (1,'Não Transmitido',1);
INSERT INTO erpc_status_transmissao_nfe VALUES (2,'Nfe assinada com sucesso',1);
INSERT INTO erpc_status_transmissao_nfe VALUES (3,'Lote recebido com sucesso',1);
INSERT INTO erpc_status_transmissao_nfe VALUES (4,'Transmitido com Sucesso',1);
INSERT INTO erpc_status_transmissao_nfe VALUES (5,'Documento Cancelado',1);
SET FOREIGN_KEY_CHECKS=1;



drop view if exists vw_erpc_nfecode_geraxml_pagamentos;
drop view if exists vw_erpc_nfecode_geraxml_documento;

Create View vw_erpc_nfecode_geraxml_pagamentos as
	SELECT 
        ds.id AS nr_documento,
        ds.ds_numnf AS ds_numnf,
        fp.cd_forma AS tPag,
        IF(IFNULL(pv.vl_pagamento,0) = 0, pv.vl_total_pedido, vl_pagamento) AS vPag,
        ROUND(
            IF(IFNULL(pv.vl_pagamento,0) >    pv.vl_total_pedido, pv.vl_pagamento - pv.vl_total_pedido, 0), 2) AS vTroco,
        '2' AS tpIntegra,
					/*
					1=Pagamento integrado com o sistema de automação da empresa (Ex.: equipamento TEF, Comércio Eletrônico);
					2= Pagamento não integrado com o sistema de automação da empresa (Ex.: equipamento POS);
					*/
        ''  AS CNPJ, 
        '99' AS tBand,
					/*
					01=Visa
					02=Mastercard
					03=American Express
					04=Sorocred 05=Diners Club 06=Elo 07=Hipercard 08=Aura 09=Cabal
					99=Outros
					*/
        ''   AS cAut
    FROM erpc_documentos_saida ds
         JOIN erpc_pedidos_documentos_saida dp ON ds.id = dp.id_documento_saida
         JOIN erpc_pedidos_venda_liberados pv  ON dp.id_pedido_liberados = pv.id
         JOIN erpc_pedidos_itens_liberados pp  ON pv.id = pp.id_pedido_venda_liberado
         JOIN erpc_dom_forma_pagamento fp      ON pv.id_forma_pagamento = fp.id
    GROUP BY ds.id , ds.ds_numnf , pv.vl_total_pedido , fp.cd_forma
;

Create View vw_erpc_nfecode_geraxml_documento
AS
select 
distinct ds.id AS nr_documento,
ds.ds_numnf AS nr_nota,
ds.dt_emissao AS dt_nfe,
ds.ds_modelo AS 'mod',
ds.ds_serie AS serie,
ds.id_tipo_ambiente AS tpAmb,
ds.ds_numnf AS nNF,
(select distinct cc.ds_categoria 
from erpc_cfop_categorias cc 
join erpc_cfop cf                    on cc.id      = cf.id_categoria
join erpc_tipos_movimentacao tp      on tp.ds_cfop = cf.ds_cfop 
join erpc_pedidos_itens_liberados il on il.id_tipo_movimentacao = tp.id
where (il.id_pedido_venda_liberado = vl.id) limit 1) AS natOp,
(case when (cp.nr_qtde_parcelas <= 1) then 0 else 1 end) AS indPag,
ds.id_tipo_nfe AS tpNF,
ds.id_destino_operacao AS idDest,
1 AS tpImp,
ds.id_tipo_emissao AS tpEmis,
tp.id_finalidade AS finNfe,
ds.fl_consumidor_final AS indFinal,
ds.id_operacao_presencial AS indPres,
ds.id_processamento_emissao AS procEmi,
ds.ds_chave AS ds_chave,
ds.ds_recibo_sefaz AS nr_recibo_nfe,
ds.ds_numnf_referencia AS refNfe,
Concat((select   distinct cf.ds_complementar_nfe 
	from  erpc_cfop cf 
    join  erpc_tipos_movimentacao tp on tp.ds_cfop = cf.ds_cfop
	join  erpc_pedidos_itens_liberados il on il.id_tipo_movimentacao = tp.id
	where il.id_pedido_venda_liberado = vl.id limit 1), IF(IFNULL(vl.ds_mensagem_nf, '')='', '', '|Obs NF: '), vl.ds_mensagem_nf) AS infCpl,
(select   distinct cc.id 
    from  erpc_cfop_categorias cc 
	join  erpc_cfop cf on cc.id = cf.id_categoria
	join  erpc_tipos_movimentacao tp on tp.ds_cfop = cf.ds_cfop
	join erpc_pedidos_itens_liberados il on il.id_tipo_movimentacao = tp.id
	where il.id_pedido_venda_liberado = vl.id limit 1) AS natOpID 
from erpc_documentos_saida ds 
join erpc_pedidos_documentos_saida dp on ds.id = dp.id_documento_saida 
join erpc_pedidos_venda_liberados vl  on dp.id_pedido_liberados = vl.id
join erpc_clientes cl on vl.id_cliente = cl.id
join erpc_condicao_pagamento cp on vl.id_condicao_pagamento = cp.id
left join erpc_dom_tipos_pedidos_nfs tp on vl.id_tipo_pedido_nf = tp.id
;



drop view if exists vw_erpc_nfecode_geraxml_cliente ;
drop view if exists vw_erpc_nfecode_geraxml_produtos;
drop view if exists vw_erpc_nfecode_geraxml_transporte;
drop view if exists vw_erpc_nfecode_geraxml_volumes;

Create View vw_erpc_nfecode_geraxml_cliente AS
    SELECT DISTINCT
        ds.id AS nr_documento,
        ds.ds_numnf AS nr_nota,
        35 AS cUF,
        m.ds_codigo_ibge AS cMunFG,
        cl.ds_endereco AS xLgr,
        IFNULL(cl.ds_numero,'')   AS nro,
        '' AS xCpl,
        cl.ds_bairro AS xBairro,
        m.ds_codigo_ibge AS cMun,
        m.ds_municipio AS xMun,
        m.ds_uf AS UF,
        cl.ds_cep AS CEP,
        1058 AS cPais,
        'Brasil' AS xPais,
        (CASE
            WHEN (cl.ds_tipo_documento = 'J') THEN cl.ds_cnpj_cpf
            ELSE ''
        END) AS CNPJ,
        (CASE
            WHEN (cl.ds_tipo_documento = 'F') THEN cl.ds_cnpj_cpf
            ELSE ''
        END) AS CPF,
        cl.ds_nome AS xNome,
        (CASE
            WHEN
                ((cl.ds_tipo_documento = 'F')
                    OR (cl.id_tipo_cliente = 1))
            THEN
                9
            WHEN (cl.id_tipo_cliente IN (3 , 4, 5, 6)) THEN 1
            ELSE 2
        END) AS indIEDest,
        (CASE
            WHEN (cl.id_tipo_cliente IN (3 , 4, 5, 6)) THEN cl.ds_ie
            ELSE ''
        END) AS IE,
        cl.ds_suframa AS ISUF,
        '' AS idEstrangeiro,
        cl.ds_im AS IM,
        cl.ds_email_nfe AS email,
        (SELECT 
                CONCAT(ct.ds_ddi, ct.ds_telefone)
            FROM
                erpc_clientes_telefones ct
            WHERE
                (ct.id_cliente = cl.id)
            LIMIT 1) AS fone
    FROM
        (((((erpc_documentos_saida ds
        JOIN erpc_pedidos_documentos_saida dp ON ((ds.id = dp.id_documento_saida)))
        JOIN erpc_pedidos_venda_liberados pv ON ((dp.id_pedido_liberados = pv.id)))
        JOIN erpc_pedidos_itens_liberados pp ON ((pv.id = pp.id_pedido_venda_liberado)))
        JOIN erpc_clientes cl ON ((pv.id_cliente = cl.id)))
        JOIN erpc_municipios m ON ((cl.id_municipio = m.id)))
;

/* Inclusão dos campos de rastreamento de produtos */
Create View vw_erpc_nfecode_geraxml_produtos as
Select
        ds.id AS nr_documento,
        ds.ds_numnf AS nr_nota,
        '' AS nItem,
        ped.id_pedido_venda_liberado AS nr_pedido,
        pro.cd_produto AS cProd,
        pro.ds_ean AS cEAN,
        pro.ds_produto AS xProd,
        pro.ds_ncm AS NCM,
        NULL AS EXTIPI,
        mov.ds_cfop AS CFOP,
        ped.id_unidade_medida AS uCom,
        ped.nr_quantidade AS qCom,
		Round(ped.vl_unitario * ped.nr_quantidade - ped.vl_desconto_produto, 2) / ped.nr_quantidade AS vUnCom,
        Round(ped.vl_unitario * ped.nr_quantidade - ped.vl_desconto_produto, 2)  AS vProd,
        pro.ds_ean            AS cEANTrib,
        ped.id_unidade_medida AS uTrib,
        ped.nr_quantidade     AS qTrib,
        Round(ped.vl_unitario * ped.nr_quantidade - ped.vl_desconto_produto, 2) / ped.nr_quantidade AS vUnTrib,
        /* Realizar o Rateio do Frete para os produtos */
        Case When IFNULL(ven.vl_frete,0)=0 Then 0 Else
		  Round(
          Round( ped.vl_unitario * ped.nr_quantidade - ped.vl_desconto_produto, 2)  /  -- valor unitário
          (ven.vl_total_produtos - ven.vl_desconto) * ven.vl_frete                     -- valor total produtos - desconto geral - frete
          , 2)
          End AS vFrete,
          ven.vl_frete , -- Utilizado para calcular a diferença no último item para o frete
        0 AS vSeg,
        0 AS vDesc,
        0 AS vOutro,
        1 AS indTot,
        ped.id_pedido_venda_liberado AS xPed,
        '' AS nFCI,
        org.cd_origem AS orig,
        tri.cd_tributacao AS trib,
        (ped.vl_unitario * ped.nr_quantidade) AS vBC,
        pro.nr_perc_aliq_icms AS pICMS,
        ROUND((((ped.vl_unitario * ped.nr_quantidade) * pro.nr_perc_aliq_icms) / 100),
                2) AS vICMS,
        0 AS vBCST,
        0 AS pICMSST,
        0 AS vICMSST,
        pis.cd_sit_trib_pis AS cst,
        pro.nr_perc_pis AS pPIS,
        ROUND((((ped.vl_unitario * ped.nr_quantidade) * pro.nr_perc_pis) / 100),
                2) AS vPIS,
        pro.nr_perc_cofins AS pCof,
        ROUND((((ped.vl_unitario * ped.nr_quantidade) * pro.nr_perc_cofins) / 100),
                2) AS vCof,
        pro.nr_perc_aliq_ipi AS pIPI,
        ROUND((((ped.vl_unitario * ped.nr_quantidade) * pro.nr_perc_aliq_ipi) / 100),
                2) AS vIPI,
        pro.vl_perc_mva AS pIVA,
        exc.nr_aliq_externa AS pInter,
        exc.nr_aliq_interna AS pIntra
		, IFNULL(pro.tp_rastro, '0') AS tp_rastro
		, IFNULL(pro.ds_controle_lote ,'') AS nLote
		, IFNULL(pro.qt_produto_lote  ,'') AS qLote
		, IFNULL(pro.dt_fabrica_lote  ,'') AS dFab
		, IFNULL(pro.dt_validae_lote  ,'') AS dVal	
		, IFNULL(pro.cd_produto_ANVISA,'') AS cProdANVISA
		
		/* FUNDO DE COMBATE A POBREZA FCP */
		, IF(
		  IFNULL(pro.nr_perc_aliq_icms,0)=0, 0,     ped.vl_unitario * ped.nr_quantidade) as vBCFCP
		, ROUND(   IFNULL(pro.nr_perc_fcp, 0)  , 2) AS pFCP
		, ROUND(IF(IFNULL(pro.nr_perc_fcp, 0)=0, 0, ped.vl_unitario * ped.nr_quantidade * pro.nr_perc_fcp / 100)
			, 2) as vFCP
    FROM erpc_pedidos_itens_liberados ped
	join erpc_pedidos_venda_liberados ven on ped.id_pedido_venda_liberado = ven.id
        JOIN erpc_pedidos_documentos_saida dp ON dp.id_pedido_liberados = ped.id_pedido_venda_liberado
        JOIN erpc_documentos_saida ds ON ds.id = dp.id_documento_saida
        JOIN erpc_produtos pro ON ped.id_produto = pro.id
        JOIN erpc_origem_produto org ON pro.id_origem_produto = org.id
        LEFT JOIN erpc_grupo_tributacao grp ON pro.id_grupo_tributacao = grp.id
        LEFT JOIN erpc_excecao_fiscal exc ON grp.id = exc.id_grupo_tributacao
        LEFT JOIN erpc_tipos_movimentacao mov ON ped.id_tipo_movimentacao = mov.id
        LEFT JOIN erpc_dom_situacao_tributaria tri ON mov.id_situacao_tributaria = tri.id
		LEFT JOIN erpc_dom_sit_trib_cof cof on mov.erpc_dom_sit_trib_cof_id = cof.id
		LEFT JOIN erpc_dom_sit_trib_pis pis on mov.erpc_dom_sit_trib_pis_id = pis.id
;

Create VIEW vw_erpc_nfecode_geraxml_transporte AS
    SELECT DISTINCT
        ds.id AS nr_documento,
        ds.ds_numnf AS nr_nota,
        IFNULL(pv.ds_modelo_frete, 0) AS modFrete,
        pv.ds_placa_veiculo AS placa,
        pv.ds_uf_placa_veiculo AS UF,
        pv.ds_codigo_antt AS RNTC,
        (CASE
            WHEN (LENGTH(tr.ds_cpf_cnpj) > 11) THEN tr.ds_cpf_cnpj
            ELSE ''
        END) AS CNPJ,
        (CASE
            WHEN (LENGTH(tr.ds_cpf_cnpj) = 11) THEN tr.ds_cpf_cnpj
            ELSE ''
        END) AS CPF,
        tr.ds_razao AS xNome,
        tr.ds_ie AS IE,
        tr.ds_endereco AS xEnder,
        m.ds_municipio AS xMun,
        m.ds_uf AS xUF,
        m.ds_codigo_ibge AS cMunFG,
        5352 AS CFOP,
        0 AS vServ,
        0 AS vBCRet,
        0 AS pICMSRet,
        0 AS vICMSRet
    FROM
        (((((erpc_documentos_saida ds
        JOIN erpc_pedidos_documentos_saida dp ON ((ds.id = dp.id_documento_saida)))
        JOIN erpc_pedidos_venda_liberados pv ON ((dp.id_pedido_liberados = pv.id)))
        JOIN erpc_pedidos_itens_liberados pp ON ((pv.id = pp.id_pedido_venda_liberado)))
        LEFT JOIN erpc_transportadoras tr ON ((pv.id_transportadora = tr.id)))
        LEFT JOIN erpc_municipios m ON ((tr.id_municipio = m.id)))
    WHERE
        ((pv.ds_placa_veiculo <> '')
            OR (pv.id_transportadora IS NOT NULL))
	;

create view vw_erpc_nfecode_geraxml_volumes
as
select distinct s.id as nr_documento,
ds_modelo_frete as modFrete,
qt_volumes as qVol,
ds_especie as esp,
ds_marca   as marca,
nr_volumes as nVol,
nr_peso_liquido as pesoL,
nr_peso_bruto   as pesoB,
nr_lacres  as aLacres
from erpc_documentos_saida s
join erpc_pedidos_documentos_saida p on s.id = p.id_documento_saida
join erpc_pedidos_venda_liberados  l on p.id_pedido_liberados = l.id
;
