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;
 }
Пример #2
0
 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');
     }
 }
Пример #5
0
 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);
     }
 }