delimiter ;

insert into instalacao_log(ds_passo) values ('passo 201');
/* Devolução de Compra : Finalidade = 4 */
update erpc_dom_tipos_pedidos_nfs set id_finalidade = 4 where id = 4;

insert into instalacao_log(ds_passo) values ('passo 202');
/* Configuração do ambiente sefaz 1 Produção ou 2 Homologação */
insert into erpc_parametros( ds_parametro, ds_valor, st_ativo)values('P_TIPO_AMBIENTE_SEFAZ', '2', 1);

insert into instalacao_log(ds_passo) values ('passo 203');
/* Status Faltantes do Lote */
insert into erpc_status_transmissao_nfe( id, ds_status_transmissao, st_ativo)values(2, 'Nfe assinada com sucesso', 1);
insert into erpc_status_transmissao_nfe( id, ds_status_transmissao, st_ativo)values(3, 'Lote recebido com sucesso', 1);

insert into instalacao_log(ds_passo) values ('passo 204');
/* Motivo / Justificativa do Cancelamento ou Devolução da Nfe */
alter table erpc_cfop add ds_complementar_nfe varchar(5000);

insert into instalacao_log(ds_passo) values ('passo 205');
/* Tipo de Nfe 0 Entrada ou 1 Saida */
alter table erpc_documentos_saida add id_tipo_nfe int not null default 1;

insert into instalacao_log(ds_passo) values ('passo 206');
drop view if exists vw_erpc_nfecode_geraxml_documento;
drop view if exists vw_erpc_nfecode_geraxml_emitente;
drop view if exists vw_erpc_nfecode_geraxml_produtos;
drop view if exists vw_erpc_nfecode_geraxml_cliente;

insert into instalacao_log(ds_passo) values ('passo 207');
/* Atualização das Views */
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`,
        '' 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.ds_tipo_documento = 'J') 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`)))
        ;
        
insert into instalacao_log(ds_passo) values ('passo 208');
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, /* Tipo de Nfe 0 Entrada e 1 Saida */
        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,
        (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) 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
;

insert into instalacao_log(ds_passo) values ('passo 209');
CREATE VIEW `vw_erpc_nfecode_geraxml_emitente` AS
    SELECT DISTINCT
        `ds`.`id` AS `nr_documento`,
        `ds`.`ds_numnf` AS `nr_nota`,
        35 AS `cUF`,
        `m`.`ds_codigo_ibge` AS `cMunFG`,
        `u`.`ds_endereco` AS `xLgr`,
        `u`.`ds_numero` AS `nro`,
        `u`.`ds_complemento` AS `xCpl`,
        `u`.`ds_bairro` AS `xBairro`,
        `m`.`ds_codigo_ibge` AS `cMun`,
        `m`.`ds_municipio` AS `xMun`,
        `m`.`ds_uf` AS `UF`,
        `u`.`ds_cep` AS `CEP`,
        1058 AS `cPais`,
        `p`.`ds_pais` AS `xPais`,
        NULL AS `fone`,
        `u`.`ds_logo` AS `logo`,
        `un`.`id_regime` AS `cRegTrib`
    FROM
        ((((((((`erpc_documentos_saida` `ds`
        JOIN `erpc_unidades` `un` ON ((`ds`.`id_unidade` = `un`.`id`)))
        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_pedidos_itens_liberados` `il` ON ((`vl`.`id` = `il`.`id_pedido_venda_liberado`)))
        JOIN `erpc_unidades` `u` ON ((`vl`.`id_unidade` = `u`.`id`)))
        JOIN `erpc_municipios` `m` ON ((`u`.`id_municipio` = `m`.`id`)))
        JOIN `erpc_estados` `e` ON ((`m`.`ds_uf` = `e`.`ds_uf`)))
        JOIN `erpc_paises` `p` ON ((`e`.`id_pais` = `p`.`id`)))
;

insert into instalacao_log(ds_passo) values ('passo 210');
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,
        ped.vl_unitario AS vUnCom,
        (ped.vl_unitario * ped.nr_quantidade) AS vProd,
        pro.ds_ean AS cEANTrib,
        ped.id_unidade_medida AS uTrib,
        ped.nr_quantidade AS qTrib,
        ped.vl_unitario AS vUnTrib,
        0 AS vFrete,
        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,
        /* Removido em 18/09/2017 Solicitação Henrique
        (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,*/
		Case When ifnull(ped.nr_perc_icms, 0)=0 then 0 else  
			 (ped.vl_unitario * ped.nr_quantidade) end AS vBC,
		ifnull(ped.nr_perc_icms,0) as pICMS,
        ROUND((((ped.vl_unitario * ped.nr_quantidade) * ifnull(ped.nr_perc_icms,0)) / 100),
                2) AS vICMS,
        0 AS vBCST,
        0 AS pICMSST,
        0 AS vICMSST,
        0 AS cst,
        IFNULL(pro.nr_perc_pis, 0) AS pPIS,
        ROUND((((ped.vl_unitario * ped.nr_quantidade) * IFNULL(pro.nr_perc_pis, 0)) / 100),
                2) AS vPIS,
        IFNULL(pro.nr_perc_cofins, 0) AS pCof,
        ROUND((((ped.vl_unitario * ped.nr_quantidade) * IFNULL(pro.nr_perc_cofins, 0)) / 100),
                2) AS vCof,
		/*
        pro.nr_perc_aliq_ipi AS pIPI,
        ROUND((((ped.vl_unitario * ped.nr_quantidade) * IFNULL(pro.nr_perc_aliq_ipi, 0)) / 100),
                2) AS vIPI,*/
        ifnull(ped.nr_perc_ipi, 0) AS pIPI,
        case when ifnull(ped.nr_perc_ipi, 0)=0 then 0 else
        ROUND((((ped.vl_unitario * ped.nr_quantidade) * IFNULL(ped.nr_perc_ipi, 0)) / 100),
                2) end AS vIPI,
        pro.vl_perc_mva AS pIVA,
        exc.nr_aliq_externa AS pInter,
        exc.nr_aliq_interna AS pIntra
    FROM erpc_pedidos_itens_liberados ped
        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
;
insert into instalacao_log(ds_passo) values ('passo 211');