Ejemplo n.º 1
0
 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');
 }
Ejemplo n.º 2
0
 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'));
 }