public function exportarProdutos($id_empreendimento) { $ProdutoDao = new ProdutoDao(); $produtos = $ProdutoDao->getProdutos(null, null, array("tpe->id_empreendimento" => 1)); $produtos = $produtos['produtos']; foreach ($produtos as $key => $value) { $sql = " INSERT INTO tbl_produtos(`codigo_barra`, `nome`, `img`, `descricao`,`sabor`, `peso`) VALUES\n\t\t\t\t\t\t\t\t ('" . $value['codigo_barra'] . "','" . $value['nome'] . "','" . $value['img'] . "','" . $value['descricao'] . "','" . $value['sabor'] . "','" . $value['peso'] . "')"; $sql_prd = $this->conn->prepare($sql); $sql_prd->execute(); $last_id_produto = $this->conn->lastInsertId(); $PrecoProdutoTO = new PrecoProdutoTO(); $PrecoProdutoDao = new PrecoProdutoDao(); $PrecoProdutoTO->id_produto = $last_id_produto; $PrecoProdutoTO->vlr_custo = $value['vlr_venda_atacado']; if (!$PrecoProdutoDao->atualizaPreco($PrecoProdutoTO)) { return false; } $ProdutoEmpreendimentoTO = new ProdutoEmpreendimentoTO(); $ProdutoEmpreendimentoTO->id_produto = $last_id_produto; $ProdutoEmpreendimentoTO->id_empreendimento = $id_empreendimento; if (!$ProdutoDao->produtoEmpreendimento($ProdutoEmpreendimentoTO)) { return false; } } return true; }
public function getEstoque($offset, $limit, $busca) { $offset = $offset == null ? 0 : $offset; $limit = $limit == null ? 0 : $limit; $group = false; $orderby = false; $id_deposito = null; $id_empreendimento = null; if (array_key_exists('group', $busca)) { $group = $busca['group']; unset($busca['group']); } if (array_key_exists('qtd->id_deposito', $busca)) { $id_deposito = $busca['qtd->id_deposito']; unset($busca['qtd->id_deposito']); } if (array_key_exists('emp->id_empreendimento', $busca)) { $id_empreendimento = $busca['emp->id_empreendimento']; } if (array_key_exists('orderby', $busca)) { $orderby = ' ORDER BY ' . $busca['orderby']; unset($busca['orderby']); } $sql = "SELECT\n\t\t\t\t\tpro.id,dep.id AS id_deposito,\n\t\t\t\t\tpro.nome AS nome,\n\t\t\t\t\tpro.codigo_barra,\n\t\t\t\t\tcor.nome_cor as sabor,\n\t\t\t\t\tdep.nme_deposito AS nome_deposito,\n\t\t\t\t\test.id_produto,\n\t\t\t\t\tSUM(est.qtd_item) AS qtd_item,\n\t\t\t\t\test.dta_validade,\n\t\t\t\t\tpro.flg_excluido\n\t\t\t\tFROM `tbl_estoque` AS est\n\t\t\t\tINNER JOIN `tbl_produtos` AS pro ON est.id_produto = pro.id\n\t\t\t\tLEFT JOIN tbl_cor_produto as cor on cor.id = pro.id_cor\n\t\t\t\tLEFT JOIN tbl_tamanho as tam on tam.id = pro.id_tamanho\n\t\t\t\tLEFT JOIN `tbl_fabricante` AS fab ON pro.id_fabricante = fab.id\n\t\t\t\tINNER JOIN `tbl_deposito` AS dep ON dep.id = est.id_deposito\n\t\t\t\tINNER JOIN `tbl_produto_empreendimento` AS tpe ON tpe.id_produto = pro.id"; if (is_array($busca) && count($busca) > 0) { $where = prepareWhere($busca); $sql .= " WHERE " . $where . ""; } $sql .= $group ? " GROUP BY " . $group . " HAVING qtd_item > 0 AND (flg_excluido = 0 OR flg_excluido IS NULL) " : ""; $sql .= $orderby ? $orderby : " "; $sql .= " ORDER BY pro.nome ASC"; if ($limit > 0) { $pag = $offset / $limit + 1; $Paginacao = new PaginacaoController($sql); $Paginacao->num_paginas = 10; $Paginacao->resultados_pagina = $limit; $Paginacao->paginarResultado($pag); $links_paginacao = $Paginacao->paginasDisponiveis($pag); $sql = $Paginacao->_sql_paginacao; } $select = $this->conn->prepare($sql); if ($select->execute()) { $ProdutoDao = new ProdutoDao(); if ($select->rowCount() > 0) { $saida['produtos'] = $select->fetchAll(PDO::FETCH_ASSOC); //Flight::json($aux); //var_dump($saida['produtos']);die; foreach ($saida['produtos'] as $key => $value) { $aux = $ProdutoDao->getProdutos(null, null, array("pro.id" => $value['id_produto'])); $aux = $aux['produtos'][0]; $saida['produtos'][$key]['nome_fabricante'] = $aux['nome_fabricante']; $saida['produtos'][$key]['peso'] = $aux['peso']; $saida['produtos'][$key]['vlr_custo_real'] = $aux['vlr_custo_real']; $saida['produtos'][$key]['vlr_venda_atacado'] = $aux['vlr_venda_atacado']; $saida['produtos'][$key]['vlr_venda_intermediario'] = $aux['vlr_venda_intermediario']; $saida['produtos'][$key]['vlr_venda_varejo'] = $aux['vlr_venda_varejo']; $saida['produtos'][$key]['vlr_desconto_cliente'] = $aux['valor_desconto_cliente'] == "" ? 0 : (double) $aux['valor_desconto_cliente']; $saida['produtos'][$key]['perc_imposto_compra'] = $aux['perc_imposto_compra']; $saida['produtos'][$key]['perc_desconto_compra'] = $aux['perc_desconto_compra']; $saida['produtos'][$key]['margem_atacado'] = (double) $aux['perc_venda_atacado']; $saida['produtos'][$key]['margem_intermediario'] = (double) $aux['perc_venda_intermediario']; $saida['produtos'][$key]['margem_varejo'] = (double) $aux['perc_venda_varejo']; $saida['produtos'][$key]['vlr_custo'] = (double) $aux['vlr_custo']; } $saida['paginacao'] = isset($links_paginacao) ? $links_paginacao : null; return $saida; } else { return false; } } else { return false; } }
public function getGradeProdutosEcommerce($offset, $limit, $busca = array(), $id_produto = null) { $offset = $offset == null ? 0 : $offset; $limit = $limit == null ? 0 : $limit; if (array_key_exists('grd->id_empreendimento', $busca)) { $id_empreendimento = $busca['grd->id_empreendimento']; } $sql = "SELECT grd.*,\n\t\t\t\t(SELECT ( (CASE WHEN SUM(est.qtd_item) IS NULL THEN 0 ELSE SUM(est.qtd_item) END) - ( CASE WHEN (SELECT SUM(item.qtd) FROM `tbl_vendas` AS ven INNER JOIN tbl_itens_venda AS item ON ven.id = item.id_venda WHERE venda_confirmada = 0 AND id_empreendimento = grd.id_empreendimento AND item.id_produto = prd.id) IS NULL THEN 0 ELSE (SELECT SUM(item.qtd) FROM `tbl_vendas` AS ven INNER JOIN tbl_itens_venda AS item ON ven.id = item.id_venda WHERE venda_confirmada = 0 AND id_empreendimento = grd.id_empreendimento AND item.id_produto = prd.id) END ) ) AS qtd FROM tbl_produtos\tAS prd_sub INNER JOIN tbl_estoque\tAS est ON prd_sub.id = est.id_produto INNER JOIN tbl_produto_empreendimento AS rel ON prd_sub.id = rel.id_produto WHERE rel.id_empreendimento = grd.id_empreendimento AND prd_sub.id = prd.id) AS qtd_real_estoque\n\t\t\t \tFROM `tbl_grade_produtos_ecommerce` AS grd\n\t\t\t\tINNER JOIN `tbl_produtos` AS prd ON grd.id_produto = prd.id\n\t\t\t\tLEFT JOIN `tbl_fabricante` AS fab ON prd.id_fabricante = fab.id "; if (is_numeric($id_produto)) { $busca['prd.id'] = $id_produto; } if (is_array($busca) && count($busca) > 0) { $where = prepareWhere($busca); $sql .= " WHERE "; $sql .= "" . $where; } $sql .= " GROUP BY prd.id ORDER BY fab.nome_fabricante, prd.nome "; if ($limit > 0) { $pag = $offset / $limit + 1; $Paginacao = new PaginacaoController($sql); $Paginacao->num_paginas = 10; $Paginacao->resultados_pagina = $limit; $Paginacao->paginarResultado($pag); $links_paginacao = $Paginacao->paginasDisponiveis($pag); $sql = $Paginacao->_sql_paginacao; } $EstoqueDao = new EstoqueDao(); $select = $this->conn->prepare($sql); $ProdutoDao = new ProdutoDao(); if ($select->execute()) { if ($select->rowCount() > 0) { $saida['produtos'] = $select->fetchAll(PDO::FETCH_ASSOC); foreach ($saida['produtos'] as $key => $value) { $id_empreendimento = $saida['produtos'][$key]['id_empreendimento']; $aux = $ProdutoDao->getProdutos(null, null, array("pro.id" => $value['id_produto'], "tpe->id_empreendimento" => $id_empreendimento)); $aux = $aux['produtos'][0]; $saida['produtos'][$key]['nome'] = $aux['nome']; $saida['produtos'][$key]['vlr_custo_real'] = $aux['vlr_custo_real']; $saida['produtos'][$key]['vlr_venda_atacado'] = $aux['vlr_venda_atacado']; $saida['produtos'][$key]['vlr_venda_intermediario'] = $aux['vlr_venda_intermediario']; $saida['produtos'][$key]['vlr_venda_varejo'] = $aux['vlr_venda_varejo']; $saida['produtos'][$key]['vlr_desconto_cliente'] = $aux['valor_desconto_cliente'] == "" ? 0 : (double) $aux['valor_desconto_cliente']; $saida['produtos'][$key]['descricao'] = $aux['descricao']; $saida['produtos'][$key]['nome_fabricante'] = $aux['nome_fabricante']; $saida['produtos'][$key]['peso'] = $aux['peso']; $saida['produtos'][$key]['qtd_real_estoque'] = (int) $saida['produtos'][$key]['qtd_real_estoque']; //$EstoqueDao->getQtdProduto($id_empreendimento,$aux['id_produto']); if (is_file(CAMINHO_UPLOAD_IMG_PRODUTO . $aux['img'])) { $saida['produtos'][$key]['img'] = "assets/imagens/produtos/" . $aux['img']; } else { $saida['produtos'][$key]['img'] = null; } if (is_file(CAMINHO_UPLOAD_FILE_PRODUTO . $aux['nme_arquivo_nutricional'])) { $saida['produtos'][$key]['nme_arquivo_nutricional'] = "assets/arquivos/produtos/" . $aux['nme_arquivo_nutricional']; } else { $saida['produtos'][$key]['nme_arquivo_nutricional'] = null; } /*if($saida['produtos'][$key]['qtd_real_estoque'] <= 0){ unset($saida['produtos'][$key]); }*/ } if (!is_numeric($id_produto)) { $saida['paginacao'] = isset($links_paginacao) ? $links_paginacao : null; } else { $saida = $saida['produtos'][0]; } return $saida; } else { return false; } } else { return false; } }
public static function getProdutos($offset, $limit) { $ProdutoDao = new ProdutoDao(); $Produtos = $ProdutoDao->getProdutos($offset, $limit, $_GET); if ($Produtos) { Flight::json($Produtos); } else { Flight::halt(404, 'Não há resultado para a busca'); } }
public function getEstoque($offset, $limit, $busca) { $offset = $offset == null ? 0 : $offset; $limit = $limit == null ? 0 : $limit; $group = false; $orderby = false; $id_deposito = null; $id_empreendimento = null; if (array_key_exists('group', $busca)) { $group = true; unset($busca['group']); } if (isset($busca['depositos'])) { $id_deposito = $busca['depositos']; unset($busca['depositos']); } else { if (array_key_exists('qtd->id_deposito', $busca)) { $id_deposito = $busca['qtd->id_deposito']; unset($busca['qtd->id_deposito']); } } if (array_key_exists('emp->id_empreendimento', $busca)) { $id_empreendimento = $busca['emp->id_empreendimento']; } if (array_key_exists('orderby', $busca)) { $orderby = ' ORDER BY ' . $busca['orderby']; unset($busca['orderby']); } $sql = "SELECT prd.nome AS nome_produto,prd.codigo_barra, tcp.nome_cor AS sabor , tt.nome_tamanho AS peso, dep.nme_deposito AS nome_deposito,etq.*,tde.flg_visivel\n\t\t\t\tFROM `tbl_estoque` AS etq\n\t\t\t\tINNER JOIN `tbl_produtos` AS prd ON etq.id_produto = prd.id\n\t\t\t\tLEFT JOIN `tbl_fabricante` AS fab ON prd.id_fabricante = fab.id\n\t\t\t\tINNER JOIN `tbl_deposito` AS dep ON dep.id = etq.id_deposito\n\t\t\t\tLEFT JOIN tbl_caixa_deposito AS tcd ON etq.id_deposito = tcd.id_deposito \n\t\t\t\tINNER JOIN `tbl_produto_empreendimento` AS emp ON emp.id_produto = prd.id\n\t\t\t\tINNER JOIN tbl_deposito_empreendimento AS tde ON dep.id = tde.id_deposito AND tde.id_empreendimento = emp.id_empreendimento\n\t\t\t\tLEFT JOIN tbl_tamanho AS tt ON tt.id = prd.id_tamanho\n\t\t\t\tLEFT JOIN tbl_cor_produto AS tcp ON tcp.id = prd.id_cor "; if (is_array($busca) && count($busca) > 0) { $where = prepareWhere($busca); $sql .= " WHERE " . $where . ""; } $sql .= $group ? " GROUP BY prd.id " : " GROUP BY etq.id"; $sql .= $orderby ? $orderby : " "; if ($limit > 0) { $pag = $offset / $limit + 1; $Paginacao = new PaginacaoController($sql); $Paginacao->num_paginas = 10; $Paginacao->resultados_pagina = $limit; $Paginacao->paginarResultado($pag); $links_paginacao = $Paginacao->paginasDisponiveis($pag); $sql = $Paginacao->_sql_paginacao; } $select = $this->conn->prepare($sql); if ($select->execute()) { $ProdutoDao = new ProdutoDao(); if ($select->rowCount() > 0) { $saida['produtos'] = $select->fetchAll(PDO::FETCH_ASSOC); //Flight::json($aux); //var_dump($saida['produtos']);die; foreach ($saida['produtos'] as $key => $value) { $aux = $ProdutoDao->getProdutos(null, null, array("pro.id" => $value['id_produto'], "tpe.id_empreendimento" => $id_empreendimento)); $aux = $aux['produtos'][0]; $saida['produtos'][$key]['nome_fabricante'] = $aux['nome_fabricante']; $saida['produtos'][$key]['codigo_barra'] = $aux['codigo_barra']; $saida['produtos'][$key]['peso'] = $aux['peso']; $saida['produtos'][$key]['vlr_custo_real'] = $aux['vlr_custo_real']; $saida['produtos'][$key]['vlr_venda_atacado'] = $aux['vlr_venda_atacado']; $saida['produtos'][$key]['vlr_venda_intermediario'] = $aux['vlr_venda_intermediario']; $saida['produtos'][$key]['vlr_venda_varejo'] = $aux['vlr_venda_varejo']; $saida['produtos'][$key]['vlr_desconto_cliente'] = $aux['valor_desconto_cliente'] == "" ? 0 : (double) $aux['valor_desconto_cliente']; $saida['produtos'][$key]['perc_imposto_compra'] = $aux['perc_imposto_compra']; $saida['produtos'][$key]['perc_desconto_compra'] = $aux['perc_desconto_compra']; $saida['produtos'][$key]['margem_atacado'] = (double) $aux['perc_venda_atacado']; $saida['produtos'][$key]['margem_intermediario'] = (double) $aux['perc_venda_intermediario']; $saida['produtos'][$key]['margem_varejo'] = (double) $aux['perc_venda_varejo']; $saida['produtos'][$key]['vlr_custo'] = (double) $aux['vlr_custo']; if (!is_null($id_empreendimento)) { $saida['produtos'][$key]['qtd_real_estoque'] = $this->getQtdProduto($id_empreendimento, $value['id_produto'], null, $id_deposito); } if (is_file(CAMINHO_UPLOAD_IMG_PRODUTO . $aux['img'])) { $saida['produtos'][$key]['img'] = "assets/imagens/produtos/" . $aux['img']; } else { $saida['produtos'][$key]['img'] = null; } } $saida['paginacao'] = isset($links_paginacao) ? $links_paginacao : null; return $saida; } else { return false; } } else { $e = $select->errorInfo(); throw new Exception($e[2], 1); } }
public static function importarNFe() { try { // Iniciando uma transação no banco de dados, caso já não acha uma ativa $conn = Conexao::getInstance(); if (!$conn->inTransaction()) { $conn->beginTransaction(); } $filename = ''; $xml = null; // Verifica se o arquivo XML foi carregado if (isset($_FILES['arquivo-nota'])) { $filename = $_FILES['arquivo-nota']['tmp_name']; } else { Flight::halt(406, 'Nenhum arquivo selecionado!'); } // Carrega os dados do arquivo XML $xml = simplexml_load_file($filename); // Captura as informações de totais da NF-e $vTotalNF = (double) $xml->NFe->infNFe->total->ICMSTot->vNF; $vTotalProd = (double) $xml->NFe->infNFe->total->ICMSTot->vProd; // Calcula o % de imposto aplicado na NF-e $prcImposto = round(($vTotalNF / $vTotalProd - 1) * 100, 2); // Pequisa se fornecedor existe no BD $paramsPesquisaFornecedor = array(); $paramsPesquisaFornecedor['frn->id_empreendimento'] = $_GET['id_empreendimento']; $paramsPesquisaFornecedor['frn->num_cnpj'] = $xml->NFe->infNFe->emit->CNPJ; $fornecedorDao = new FornecedorDao(); $data['nNF'] = (string) $xml->NFe->infNFe->ide->nNF; $data['fornecedor'] = array(); $aux = $fornecedorDao->getFornecedores(null, null, $paramsPesquisaFornecedor); $data['fornecedor']['dados'] = $aux['fornecedores'][0]; $data['fornecedor']['flg_localizado'] = $data['fornecedor']['dados'] != null; // Captura a lista de itens da NF-e $itensNF = $xml->NFe->infNFe->det; // Percorre a lista de itens da NF-e produrando os mesmo no BD $data['itensBD'] = array(); foreach ($itensNF as $key => $value) { // Captura os dados do produto informados na NF-e $item = array(); $item['id_produto'] = null; $item['codigo_barra'] = !empty($value->prod->cEAN) ? (string) $value->prod->cEAN : (string) $value->prod->cEANTrib; $item['cod_ncm'] = !empty($value->prod->NCM) ? (string) $value->prod->NCM : ''; $item['dsc_unidade_medida'] = !empty($value->prod->uCom) ? (string) $value->prod->uCom : (string) $value->prod->uTrib; $item['num_cest'] = !empty($value->prod->CEST) ? (string) $value->prod->CEST : ''; $item['nome_produto'] = (string) $value->prod->xProd; $item['custo'] = (double) $value->prod->vUnCom; $item['qtd'] = (int) $value->prod->qCom; $item['imposto'] = $prcImposto; $item['vlr_imposto'] = (double) ($item['custo'] * $prcImposto) / 100; $item['flg_localizado'] = false; $item['nome_fabricante'] = ''; $item['peso'] = ''; $item['margem_atacado'] = 0; $item['margem_intermediario'] = 0; $item['margem_varejo'] = 0; if (!empty($item['codigo_barra'])) { // Pesquisa se o produto existe no BD $paramsPesquisaProduto = array(); $paramsPesquisaProduto['tpe->id_empreendimento'] = $_GET['id_empreendimento']; $paramsPesquisaProduto['pro->codigo_barra'] = $item['codigo_barra']; $produtoDao = new ProdutoDao(); $aux = $produtoDao->getProdutos(null, null, $paramsPesquisaProduto); $produto = $produtoDao->getProdutos(null, null, $paramsPesquisaProduto)['produtos'][0]; if ($produto) { // Se o produto foi localizado no BD... // Captura os dados do cadastro do produto no BD $item['id_produto'] = $produto['id_produto']; $item['nome_produto'] = $produto['nome']; $item['nome_fabricante'] = $produto['nome_fabricante']; $item['peso'] = $produto['peso']; //$item['custo'] = (($produto['vlr_custo']) ? $produto['vlr_custo'] : $item['custo']); $item['custo'] = $item['custo']; $item['margem_atacado'] = $produto['perc_venda_atacado']; $item['margem_intermediario'] = $produto['perc_venda_intermediario']; $item['margem_varejo'] = $produto['perc_venda_varejo']; $item['flg_localizado'] = true; $PrecoProdutoTO = new PrecoProdutoTO(); $PrecoProdutoDao = new PrecoProdutoDao(); $PrecoProdutoTO->id_produto = $produto['id']; $PrecoProdutoTO->id_empreendimento = $_GET['id_empreendimento']; $PrecoProdutoTO->vlr_custo = $item['custo']; $PrecoProdutoTO->perc_imposto_compra = $item['imposto']; $PrecoProdutoTO->perc_desconto_compra = $produto['perc_desconto_compra']; $PrecoProdutoTO->perc_venda_atacado = $produto['perc_venda_atacado']; $PrecoProdutoTO->perc_venda_intermediario = $produto['perc_venda_intermediario']; $PrecoProdutoTO->perc_venda_varejo = $produto['perc_venda_varejo']; if (!$PrecoProdutoDao->atualizaPreco($PrecoProdutoTO)) { if ($conn->inTransaction()) { $conn->rollback(); } Flight::halt(500, 'erro ao atualizar preço'); } } else { if (isset($_GET['flg_cpne']) && (int) $_GET['flg_cpne'] == 1) { // Se marcou para cadastrar produtos não localizados no BD... $prodTO = new ProdutoTO(); $prodTO->codigo_barra = $item['codigo_barra']; $prodTO->nome = $item['nome_produto']; $prodTO->cod_ncm = $item['cod_ncm']; $prodTO->dsc_unidade_medida = $item['dsc_unidade_medida']; $prodTO->num_cest = $item['num_cest']; $id_produto = $produtoDao->saveProduto($prodTO); // Cadastro o produto no BD if ($id_produto) { // Se o produto foi cadastrado com sucesso... $prodEmprTO = new ProdutoEmpreendimentoTO(); $prodEmprTO->id_produto = $id_produto; $prodEmprTO->id_empreendimento = $_GET['id_empreendimento']; // Associa o produto ao empreendimento if (!$produtoDao->produtoEmpreendimento($prodEmprTO)) { if ($conn->inTransaction()) { $conn->rollback(); } Flight::halt(500, 'Erro ao associar produto [' . $prodTO->nome . '] ao empreendimento [' . $_GET['id_empreendimento'] . ']'); } if ($data['fornecedor']['flg_localizado']) { // Se o fornecedor foi localizado no BD... $prodFornTO = new ProdutoFornecedorTO(); $prodFornTO->id_produto = (int) $id_produto; $prodFornTO->id_fornecedor = $data['fornecedor']['dados']['id']; // Associa o produto ao fornecedor if (!$produtoDao->fornecedorProduto($prodFornTO)) { if ($conn->inTransaction()) { $conn->rollback(); } Flight::halt(500, 'Erro ao associar produto [' . $prodTO->nome . '] ao fornecedor [' . $data['fornecedor']['dados']['nome_fornecedor'] . ']'); } } $prdProdDao = new PrecoProdutoDao(); $prcProdTO = new PrecoProdutoTO(); $prcProdTO->id_produto = (int) $id_produto; $prcProdTO->id_empreendimento = $_GET['id_empreendimento']; $prcProdTO->vlr_custo = $item['custo']; $prcProdTO->perc_imposto_compra = $item['imposto'] / 100; $prcProdTO->perc_desconto_compra = 0; $prcProdTO->perc_venda_atacado = 0; $prcProdTO->perc_venda_intermediario = 0; $prcProdTO->perc_venda_varejo = 0; //Cadastra o preço do produto e associa if (!$prdProdDao->atualizaPreco($prcProdTO)) { if ($conn->inTransaction()) { $conn->rollback(); } Flight::halt(500, 'Erro ao atualizar preço do produto [' . $prodTO->nome . ']'); } $item['id_produto'] = $id_produto; $item['flg_localizado'] = true; } else { if ($conn->inTransaction()) { $conn->rollback(); } Flight::halt(500, 'erro ao cadastrar produto'); } } } } // Adiciona o item na lista de produtos $data['itensBD'][] = $item; } if ($conn->inTransaction()) { $conn->commit(); } // Exclui o arquivo XML criado temporáriamente unlink($filename); // Retorna os dados da NF-e em formato de JSON Flight::json($data); } catch (Exception $e) { if ($conn->inTransaction()) { $conn->rollback(); } jsonException($e); } }