public function gerarNotaFiscalMagento() { include 'const.php'; $string_produto = ""; $lojaURL = DB::table('lojas')->get(); for ($contador = 0; $contador < count($lojaURL); $contador++) { $urlLoja = $lojaURL[$contador]->urlLoja; $urlAPIMagento = $urlLoja . '/api-simg/api.php'; $urlImage = $urlLoja . '/media/catalog/product'; try { $jsonFile = file_get_contents($urlAPIMagento); $listaObjetoJson = $this->retornaArrayObjectPedidos($jsonFile); } catch (Exception $e) { continue; } for ($i = 0; $i < count($listaObjetoJson); $i++) { $usuario = DB::table('usuarios')->join('pessoas', 'usuarios.codigo', '=', 'pessoas.codigo_usuario')->join('enderecos', 'usuarios.codigo_endereco', '=', 'enderecos.codigo')->join('contatos', 'usuarios.codigo_contato', '=', 'contatos.codigo')->join('cidades', 'cidades.codigo', '=', 'enderecos.codigo_cidade')->join('estados', 'estados.codigo', '=', 'cidades.codigo_estado')->select('usuarios.codigo as codigo_usuario', 'pessoas.nome as nome', 'pessoas.identidade as identidade', 'pessoas.cpf as cpf', 'contatos.email as email', 'contatos.telefone as telefone', 'enderecos.logradouro as logradouro', 'enderecos.numero as numero', 'enderecos.bairro as bairro', 'cidades.nomeCidade as cidadeUsuario', 'estados.nomeEstado as estadoUsuario')->where('contatos.email', $listaObjetoJson[$i]->customer_email)->get(); $loja = DB::table('lojas')->join('usuarios', 'lojas.codigo_usuario', '=', 'usuarios.codigo')->join('enderecos', 'usuarios.codigo_endereco', '=', 'enderecos.codigo')->join('contatos', 'usuarios.codigo_contato', '=', 'contatos.codigo')->join('cidades', 'cidades.codigo', '=', 'enderecos.codigo_cidade')->join('estados', 'estados.codigo', '=', 'cidades.codigo_estado')->select('lojas.codigo as codigo_loja', 'lojas.cnpj as cnpj', 'lojas.razaoSocial as razaoSocial', 'lojas.nomeFantasia as nomeFantasia', 'enderecos.logradouro as logradouro', 'enderecos.bairro as bairro', 'enderecos.numero as numero', 'cidades.nomeCidade as cidadeLoja', 'estados.nomeEstado as estadoLoja', 'contatos.telefone as telefoneLoja')->where('lojas.urlLoja', $urlLoja)->get(); if (!empty($usuario) && !empty($loja) && $this->verificarNotaImportada($listaObjetoJson[$i]->order_id, $urlLoja, $listaObjetoJson[$i]->sku)) { if (isset($listaObjetoJson[$i - 1]->order_id) && $listaObjetoJson[$i]->order_id != $listaObjetoJson[$i - 1]->order_id || $i == 0) { $notaFiscal = new NotaFiscal(); $notaFiscal->codigo_usuario = $usuario[0]->codigo_usuario; $notaFiscal->codigo_loja = $loja[0]->codigo_loja; $notaFiscal->order_id = $listaObjetoJson[$i]->order_id; $notaFiscal->data_pedido = $listaObjetoJson[$i]->data_pedido; $notaFiscal->save(); //Recebe o último id cadastrado de contato $codigo_notaFiscal = $notaFiscal->codigo; } //adiciona Item da Nota Fiscal $itemNotaFiscal = new ItemNotaFiscal(); $itemNotaFiscal->codigo_notaFiscal = $codigo_notaFiscal; $itemNotaFiscal->name = $listaObjetoJson[$i]->name; $itemNotaFiscal->sku = $listaObjetoJson[$i]->sku; $itemNotaFiscal->price = (double) $listaObjetoJson[$i]->price; $itemNotaFiscal->qty_ordered = $listaObjetoJson[$i]->qty_ordered; $itemNotaFiscal->product_type = $listaObjetoJson[$i]->product_type; $itemNotaFiscal->especificacao_tecnica = $listaObjetoJson[$i]->especificacao_tecnica; $image = str_replace("\\", "", $listaObjetoJson[$i]->image); $itemNotaFiscal->image = $urlImage . $image; $itemNotaFiscal->save(); $numeroAleatorio = rand(10000, 99999); $string_produto = $string_produto . $listaObjetoJson[$i]->name . "-" . $listaObjetoJson[$i]->sku . "-" . $listaObjetoJson[$i]->price . "-" . $listaObjetoJson[$i]->qty_ordered . "-" . $listaObjetoJson[$i]->total_item_count . "-" . $listaObjetoJson[$i]->subtotal . "/"; //Caso o próximo elemento do produto for de outro pedido então dispara a nota-fiscal if (isset($listaObjetoJson[$i + 1]->order_id) && $listaObjetoJson[$i]->order_id != $listaObjetoJson[$i + 1]->order_id) { //chamadas Post para nota-fiscal $url = $URL_SITE . '/framework-externo/nfephp-master/exemplos/NFe/makeNFE.php'; $string_campos = ''; $campos = array('CNPJ' => urlencode($loja[0]->cnpj), 'RazaoSocial' => urlencode($loja[0]->razaoSocial), 'NomeFantasia' => urlencode($loja[0]->nomeFantasia), 'LogradouroLoja' => urlencode($loja[0]->logradouro), 'NumeroLoja' => urlencode($loja[0]->numero), 'BairroLoja' => urlencode($loja[0]->bairro), 'CidadeLoja' => urlencode($loja[0]->cidadeLoja), 'EstadoLoja' => urlencode($loja[0]->estadoLoja), 'TelefoneLoja' => urlencode($loja[0]->telefoneLoja), 'NumeroAleatorio' => urlencode($numeroAleatorio), 'NomeCliente' => urlencode($usuario[0]->nome), 'CPF' => urlencode($usuario[0]->cpf), 'EmailCliente' => urlencode($usuario[0]->email), 'TelefoneCliente' => urlencode($usuario[0]->telefone), 'LogradouroCliente' => urlencode($usuario[0]->logradouro), 'NumeroCliente' => urlencode($usuario[0]->numero), 'BairroCliente' => urlencode($usuario[0]->bairro), 'CidadeCliente' => urlencode($usuario[0]->cidadeUsuario), 'EstadoCliente' => urlencode($usuario[0]->estadoUsuario), 'CodigoNotaFiscal' => urlencode($codigo_notaFiscal), 'ProdutoNotaFiscal' => urlencode($string_produto)); //temos que colocar os parâmetros do post no estilo de uma query string foreach ($campos as $name => $valor) { $string_campos .= $name . '=' . $valor . '&'; } $string_campos = rtrim($string_campos, '&'); $ch = curl_init(); //configurando as opções da conexão curl curl_setopt($ch, CURLOPT_URL, $url); //este parâmetro diz que queremos resgatar o retorno da requisição curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_POST, count($campos)); curl_setopt($ch, CURLOPT_POSTFIELDS, $string_campos); //manda a requisição post $resultado = curl_exec($ch); curl_close($ch); $string_produto = ""; } else { if ($i == count($listaObjetoJson) - 1) { //chamadas Post para nota-fiscal $url = $URL_SITE . '/framework-externo/nfephp-master/exemplos/NFe/makeNFE.php'; $string_campos = ''; $campos = array('CNPJ' => urlencode($loja[0]->cnpj), 'RazaoSocial' => urlencode($loja[0]->razaoSocial), 'NomeFantasia' => urlencode($loja[0]->nomeFantasia), 'LogradouroLoja' => urlencode($loja[0]->logradouro), 'NumeroLoja' => urlencode($loja[0]->numero), 'BairroLoja' => urlencode($loja[0]->bairro), 'CidadeLoja' => urlencode($loja[0]->cidadeLoja), 'EstadoLoja' => urlencode($loja[0]->estadoLoja), 'TelefoneLoja' => urlencode($loja[0]->telefoneLoja), 'NumeroAleatorio' => urlencode($numeroAleatorio), 'NomeCliente' => urlencode($usuario[0]->nome), 'CPF' => urlencode($usuario[0]->cpf), 'EmailCliente' => urlencode($usuario[0]->email), 'TelefoneCliente' => urlencode($usuario[0]->telefone), 'LogradouroCliente' => urlencode($usuario[0]->logradouro), 'NumeroCliente' => urlencode($usuario[0]->numero), 'BairroCliente' => urlencode($usuario[0]->bairro), 'CidadeCliente' => urlencode($usuario[0]->cidadeUsuario), 'EstadoCliente' => urlencode($usuario[0]->estadoUsuario), 'CodigoNotaFiscal' => urlencode($codigo_notaFiscal), 'ProdutoNotaFiscal' => urlencode($string_produto)); //temos que colocar os parâmetros do post no estilo de uma query string foreach ($campos as $name => $valor) { $string_campos .= $name . '=' . $valor . '&'; } $string_campos = rtrim($string_campos, '&'); $ch = curl_init(); //configurando as opções da conexão curl curl_setopt($ch, CURLOPT_URL, $url); //este parâmetro diz que queremos resgatar o retorno da requisição curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_POST, count($campos)); curl_setopt($ch, CURLOPT_POSTFIELDS, $string_campos); //manda a requisição post $resultado = curl_exec($ch); curl_close($ch); $string_produto = ""; } } } } } return Redirect::to('lista-nota-fiscal/1'); }
public function listaAssistenciaTecnica($codProduto) { $produto = ItemNotaFiscal::find($codProduto); $listaAssistenciaTecnica = DB::table('itemnotafiscals')->join('assistenciatecnicas', 'assistenciatecnicas.codigo_itemNotafiscal', '=', 'itemnotafiscals.codigo')->where('itemnotafiscals.codigo', $codProduto)->get(); return View::make('produto.lista-assistencia-tecnica', compact('listaAssistenciaTecnica', 'codProduto', 'produto')); }