<?php
require_once "connect.php";




$ar_tabelas = array(
    array(   "tabela" => "erpc_dom_forma_pagamento"
            ,"nr_registros" => 10    
    )  
);

$ar_views_names = array( "vw_erpc_comanda_geraxml_produtos"
    
                        ,"vw_erpc_nfccode_geraxml_cancelar"
                        ,"vw_erpc_nfccode_geraxml_entrega"
                        ,"vw_erpc_nfccode_geraxml_prod_imposto"                    
                        ,"vw_erpc_nfccode_geraxml_produtos"
                        ,"vw_erpc_nfccode_geraxml_totais"

                        ,"vw_erpc_nfecode_geraxml_cliente"
                        ,"vw_erpc_nfecode_geraxml_documento"
                        ,"vw_erpc_nfecode_geraxml_emitente"
                        ,"vw_erpc_nfecode_geraxml_pagamentos"
                        ,"vw_erpc_nfecode_geraxml_produtos"
                        ,"vw_erpc_nfecode_geraxml_transporte"
                        ,"vw_erpc_nfecode_geraxml_volumes"
    
                        ,"vw_erpc_orcamento_geraxml_prod_imposto"
                        ,"vw_erpc_orcamento_geraxml_produtos"
                        ,"vw_erpc_orcamento_geraxml_totais"

                        ,"vw_erpc_recibo_geraxml_prod_imposto"
                        ,"vw_erpc_recibo_geraxml_produtos"
                        ,"vw_erpc_recibo_geraxml_produtos_os"
                        ,"vw_erpc_recibo_geraxml_totais"
                    );


$ar_views = array(
    array('view_name' => "vw_erpc_comanda_geraxml_produtos",
          'view_text' => "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
                            ;"
    ),
    array('view_name' => "vw_erpc_nfccode_geraxml_cancelar",
          'view_text' => "create view vw_erpc_nfccode_geraxml_cancelar AS
                            SELECT 
                                dc.id AS id,
                                dc.ds_numnf AS ds_numnf,
                                dc.ds_chave AS chCanc,
                                '07494091000108' AS CNPJ,
                        		    'rdjsiqxIfJsdSy8TBFZTWiNqp4bBhO48qM2cvoHiOJioNZCW8/EpPb5HgwN7myOz3IZt8UpJWL8ohe/6vPqnFObCqZ0gv6GVUxMcR5ZtW3O9diRGGDtV+tTPBIamgMMrXLAnNAHVaBQE+t3G7tU8wjtW6eHJ+7B7PzGyl061DYeyQTT4Nvswj8xmDPFwWzX/hse3CDnRGLumrDP7ee7Vx/L145OAlBxcp6nVLTQR7cdzKg1uD9HV+lKqa3mND6G9lDhgl+3lKUmPdYsBG9HEUkUlg5yd8oWq4jpLrvt12etWSTnSTDKnzMtvkvCtUfbNsxU/paQsIuLTfmqlusUJww=='
                                      AS signAC,
                                '001' AS numeroCaixa,
                                dc.cd_status_nfe AS cd_status_nfe,
                                SUM(pv.vl_total_pedido) AS vl_total_cfe
                            FROM erpc_documentos_saida dc
                                JOIN erpc_pedidos_documentos_saida pd ON dc.id = pd.id_documento_saida
                                JOIN erpc_pedidos_venda_liberados pv ON pv.id = pd.id_pedido_liberados
                                JOIN erpc_unidades un ON un.id = pv.id_unidade
                            WHERE
                                dc.id_status_transmissao = 4
                                    AND dc.cd_status_nfe = '06000'
                                    AND dc.ds_modelo = 59
                            GROUP BY dc.id , dc.ds_numnf , dc.ds_chave , dc.cd_status_nfe
                            ;"
    ),
    array('view_name' => "vw_erpc_nfccode_geraxml_entrega",
          'view_text' => "Create View vw_erpc_nfccode_geraxml_entrega
                            as
                            select 
                              ds.id			as nr_documento
                            , ds_endereco	as xLgr
                            , ''		    as nro	   -- ds_numero
                            , ''			as xCpl   -- ds_complemento
                            , ds_bairro		as xBairro
                            , m.ds_municipio   	as xMun
                            , m.ds_uf		 as UF     -- m.ds_uf
                            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
                            ;
                            "
    ),
    array('view_name' => "vw_erpc_nfccode_geraxml_prod_imposto",
          'view_text' => "Create View vw_erpc_nfccode_geraxml_prod_imposto
                            as
                            select 
                              
                              ped.id			as nItem
                            , 1
                            , 'ICMS'	as tipo
                            /*, Concat('<ICMSSN'
                            	, tri.cd_tributacao, '><Orig>', org.cd_origem, '</Orig><CSOSN>' 
                            	, tri.cd_tributacao, '</CSOSN></ICMSSN'
                            	, tri.cd_tributacao, '>') as valor*/
                            , /*Case	When uni.id_regime = 4 and org.cd_origem in ( '00', '30', '60') then
                            		Concat(
                            		'<ICMSSN101><Orig>'	, org.cd_origem, '</Orig>'
                            		'<pCredSN>'			, ped.nr_perc_icms, '</pCredSN>',
                            		'<vCredICMSSN>'		, ped.vl_icms, '</vCredICMSSN>',
                            		'<CSOSN>101</CSOSN></ICMSSN101>')
                                    When uni.id_regime = 4 and not org.cd_origem in ( '00', '30', '60') then
                                    */
                                    Concat(
                            		'<ICMSSN102><Orig>'	, org.cd_origem, '</Orig><CSOSN>102</CSOSN></ICMSSN102>')
                                    /*else 
                                    
                                    Concat(
                            		'<ICMS'  , tri.cd_tributacao, '><Orig>'  , org.cd_origem, '</Orig>'
                            		'<pICMS>', ped.nr_perc_icms , '</pICMS>' ,
                            		'<vICMS>', ped.vl_icms		, '</vICMS>' ,
                            		'<CST>'  , tri.cd_tributacao, '</CST></ICMS' , tri.cd_tributacao, '>')
                                    -- end 
                                    */
                                    as valor
                            from erpc_pedidos_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_pedidos_venda_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
                            , 'PIS'	as tipo
                            , Concat('<PISSN><CST>49</CST></PISSN>') as valor
                            from erpc_pedidos_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
                            , 'COFINS'	as tipo
                            , Concat('<COFINSSN><CST>49</CST></COFINSSN>') as valor
                            from erpc_pedidos_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 1, 2
                            ;
                            "
    ),
    array('view_name' => "vw_erpc_nfccode_geraxml_produtos",
          'view_text' => "Create View vw_erpc_nfccode_geraxml_produtos
                            as
                            select
                              ped.id		as nItem
                            , ds.id 		as nr_documento
                            , ds.ds_numnf 	as nr_nota
                            , 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
                            , 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_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
                            left join erpc_tributos_ncm ncm on pro.ds_ncm = ncm.ds_ncm
                            	and ifnull(pro.ds_ex_ncm, '') = ncm.ds_ex_tipi
                            ;
                            "
    ),
    array('view_name' => "vw_erpc_nfccode_geraxml_totais",
          'view_text' => "create view vw_erpc_nfccode_geraxml_totais AS
                            SELECT 
                                ds.id AS nr_documento,
                                ds.ds_numnf 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_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
                        ;
                        "
    ),
    array('view_name' => "vw_erpc_nfecode_geraxml_cliente",
        'view_text' => "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)))
                            ;"
    ),
    array('view_name' => "vw_erpc_nfecode_geraxml_documento",
          'view_text' => "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
                            ;
                            "
    ),
    array('view_name' => "vw_erpc_nfecode_geraxml_emitente",
          'view_text' => "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`)))
                        ;
                        "
    ),
    array('view_name' => "vw_erpc_nfecode_geraxml_pagamentos",
          'view_text' => "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
                        ;
                        "
    ),
    array('view_name' => "vw_erpc_nfecode_geraxml_produtos",
          'view_text' => "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
                            ;"
    ),
    array('view_name' => "vw_erpc_nfecode_geraxml_transporte",
          'view_text' => "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))
                        	;"
    ),
    array('view_name' => "vw_erpc_nfecode_geraxml_volumes",
          'view_text' => "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
                            ;"
    ),
    array('view_name' => "vw_erpc_orcamento_geraxml_prod_imposto",
          'view_text' => "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`;"
    ),
    array('view_name' => "vw_erpc_orcamento_geraxml_produtos",
          'view_text' => "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
                            ;"
    ),
    array('view_name' => "vw_erpc_orcamento_geraxml_totais",
        'view_text' => "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;"
    ),
    array('view_name' => "vw_erpc_recibo_geraxml_prod_imposto",
          'view_text' => "CREATE VIEW`vw_erpc_recibo_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_pedidos_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_pedidos_venda_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_pedidos_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_pedidos_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`;"
    ),
    array('view_name' => "vw_erpc_recibo_geraxml_produtos",
           'view_text' => "CREATE VIEW vw_erpc_recibo_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_pedidos_itens_liberados   ped  
                            join  erpc_pedidos_venda_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
                            ;
                            "
    ),
    array('view_name' => "vw_erpc_recibo_geraxml_produtos_os",
           'view_text' => "CREATE 
                              VIEW `vw_erpc_recibo_geraxml_produtos_os`  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`
                                        ,510 AS `CFOP`
                                        ,'UN' AS `uCom`
                                        ,NULL AS `EXTIPI`
                                        ,`ped`.`nr_quantidade` AS `qCom`
                                        ,`ped`.`vl_unitario` AS `vUnCom`
                                        ,`ped`.`vl_desconto` AS `vDesc`
                                        ,((`ped`.`vl_unitario` * `ped`.`nr_quantidade`) - `ped`.`vl_desconto`) 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_ordem_servico_itens` `ped` join `erpc_ordem_servico` `ven` 
                                                            on((`ped`.`id_ordem_servico` = `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_tributos_ncm` `ncm` 
                                                            on(((`pro`.`ds_ncm` = `ncm`.`ds_ncm`) 
                                    and ((case when isnull(`pro`.`ds_ex_ncm`) then '' else `pro`.`ds_ex_ncm` end) = `ncm`.`ds_ex_tipi`)))) ;
                        "
    ),
    array('view_name' => "vw_erpc_recibo_geraxml_totais",
          'view_text' => "Create View vw_erpc_recibo_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_pedidos_venda_liberados pv 
                            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 pv.id,pv.vl_total_pedido,fp.cd_forma ;"
    )
);




?>


<html>
<body>







<?php
$ds_tabela = "erpc_dom_forma_pagamento";
$nr_registros = 10;

validaTabela($ar_tabelas);
verificaViews($ar_views_names);
validaViews($ar_views);



?>

</table>
</body>
</html>
<style>
table {
    border-collapse: collapse;
}

table, td, th {
    border: 1px solid black;
}
td {
    text-align: right;
}
</style>


<?php 

//function validaTabela($ds_tabela, $nr_registros){
function validaTabela($ar_tabelas){
    global $conexao;
    echo    "<table>
                    <tr>
                        <th colspan='3'>Verificação dos Registros das Tabelas</th>
                    </tr>
                    <tr>
                        <th>Tabela</th>
                        <th>Status</th>
                        <th>Descrição</th>
                    </tr>";
    foreach($ar_tabelas as $row){
    
        $ds_tabela      =   $row['tabela'];
        $nr_registros   =   $row['nr_registros'];
    
    
        
        
        
        $sql = "select count(*) $ds_tabela from $ds_tabela";
        $result = mysqli_query($conexao, $sql) or die(mysqli_error($conexao));
        if(mysqli_num_rows($result)>0){
            while($registro = mysqli_fetch_assoc($result)){
                echo "<tr>
                        <td>$ds_tabela</td>";
                if($registro[$ds_tabela] == $nr_registros){
                    echo "<td style='color: green'>OK</td>";
                    echo "<td></td>";
                }else{
                    echo "<td style='color: red'>NOK</td>";
                    echo "<td>Existe(m) $registro[$ds_tabela] registros, quando deveria(m) existir $nr_registros </td>";
                }
                echo "</tr>";
            }
        }
    }
    
    echo    "</table><br><br>";
}

function verificaViews($ar_views){
    global $conexao;
    echo   "<table>
                <tr>
                    <th colspan='3'>Verificação da Existência dos Objetos</th>
                </tr>
                <tr>
                    <th>View</th>
                    <th>Status</th>
                    <th>Descrição</th>
                </tr>";
    
    foreach($ar_views as $view){
        $sql = "SELECT count(*) as resultado
                FROM information_schema.VIEwS
                WHERE TABLE_NAME = '$view'";
        $result = mysqli_query($conexao, $sql) or die(mysqli_error($conexao));
        if(mysqli_num_rows($result)>0){
            while($registro = mysqli_fetch_assoc($result)){
                echo "<tr>
                    <td>$view</td>";
                if($registro["resultado"] >= 1){
                    echo "<td style='color: green'>OK</td>";
                    echo "<td></td>";
                }else{
                    echo "<td style='color: red'>NOK</td>";
                    echo "<td>Objeto não existe na base de dados</td>";
                }
                echo "</tr>";
            }
        }
    }
    
    echo "</table><br><br>";
}




function validaViews($ar_views){
    global $conexao;
    global $database;
    echo   "<table>
                <tr>
                    <th colspan='3'>Verifica se os objetos existentes estão atualizados</th>
                </tr>
                <tr>
                    <th>View</th>
                    <th>Status</th>
                    <th>Descrição</th>
                </tr>";
    
    foreach($ar_views as $view){
        $view_check = $view['view_name'] . "_check";
        $sql1 = "drop view if exists $view_check";
        if(mysqli_query($conexao, $sql1)){

            $sql2 = str_replace($view['view_name'], $view_check, $view['view_text']);

            if(mysqli_query($conexao, $sql2)){
                
                $sql3 = "SELECT IF((SELECT VIEW_DEFINITION
                        			 FROM information_schema.VIEwS
                        			 WHERE TABLE_NAME = '$view[view_name]'
                        			 AND  TABLE_SCHEMA = '$database') = (SELECT VIEW_DEFINITION
                        			 FROM information_schema.VIEwS
                        			 WHERE TABLE_NAME = '$view_check'
                        			 AND  TABLE_SCHEMA = '$database')
                                   , 1, 0) as resultado;";       
                

                
                $result = mysqli_query($conexao, $sql3) or die(mysqli_error($conexao));
                
                if(mysqli_num_rows($result)>0){
                    while($registro = mysqli_fetch_assoc($result)){
                        echo "<tr>
                                    <td>$view[view_name]</td>";
                        if($registro['resultado'] == 1){
                            echo    "<td style='color: green'>OK</td>
                                     <td></td>";
                        }else{
                            echo    "<td style='color: red'>NOK</td>
                                     <td>A View está desatualizada com relação a view cadastrada na validação</td>";
                        }
                         
                        
                    }
                }
                
            }
            

        }else{
            die($conexao);
        }
        
        
    }
    
    echo "</table><br>";
}



?>













