Jump to content

Recommended Posts

Senhores, boa tarde.

 

Estou com um probleminha... rss', preciso fazer a listagem de uma função da biblioteca "SPED-NFe"   na qual consulto quais as NFe que emitiram contra meu CNPJ, porém o ele executa toda a função e depois me trás o resultado, eu gostaria de trazer o resultado instantaneamente, como se fosse uma atualização segundo a segundo.

 

Citar

//PHP DA COISA

 

$tools->model('55');
    //este serviço somente opera em ambiente de produção
    $tools->setEnvironment(1);

    //este numero deverá vir do banco de dados nas proximas buscas para reduzir
    //a quantidade de documentos, e para não baixar várias vezes as mesmas coisas.
    $ultNSU = 0;
    $maxNSU = $ultNSU;
    $loopLimit = 50;
    $iCount = 0;
    $count_nfe_resumida = 0;
    //executa a busca de DFe em loop
    while ($ultNSU <= $maxNSU) {
        $iCount++;
        if ($iCount >= $loopLimit) {
            break;
        }
        try {
            //executa a busca pelos documentos
            $resp = $tools->sefazDistDFe($ultNSU);
        } catch (\Exception $e) {
            echo $e->getMessage();
            //tratar o erro
        }

        //extrair e salvar os retornos
        $dom = new \DOMDocument();
        $dom->loadXML($resp);
        $node = $dom->getElementsByTagName('retDistDFeInt')->item(0);
        $tpAmb = $node->getElementsByTagName('tpAmb')->item(0)->nodeValue;
        $verAplic = $node->getElementsByTagName('verAplic')->item(0)->nodeValue;
        $cStat = $node->getElementsByTagName('cStat')->item(0)->nodeValue;
        $xMotivo = $node->getElementsByTagName('xMotivo')->item(0)->nodeValue;
        $dhResp = $node->getElementsByTagName('dhResp')->item(0)->nodeValue;
        $ultNSU = $node->getElementsByTagName('ultNSU')->item(0)->nodeValue;
        $maxNSU = $node->getElementsByTagName('maxNSU')->item(0)->nodeValue;
        $lote = $node->getElementsByTagName('loteDistDFeInt')->item(0);
        if (empty($lote)) {
            //lote vazio
            continue;
        }
        //essas tags irão conter os documentos zipados
        $docs = $lote->getElementsByTagName('docZip');
        foreach ($docs as $doc) {
            $numnsu = $doc->getAttribute('NSU');
            $schema = $doc->getAttribute('schema');
            //descompacta o documento e recupera o XML original
            $content = gzdecode(base64_decode($doc->nodeValue));
            //identifica o tipo de documento
            $tipo = substr($schema, 0, 6);
            //processar o conteudo do NSU, da forma que melhor lhe interessar
            //esse processamento depende do seu aplicativo
        }
        
        if(strpos($content,"<xNome>",0) > 0)
        {
            
            $count_nfe_resumida++;
            $pos_ini2 = strpos($content,"<xNome>",0)+7;
            $pos_fim2 = strpos($content,"</xNome>",0);
            $res_forn[$count_nfe_resumida] = utf8_decode(substr($content,$pos_ini2,$pos_fim2-$pos_ini2));


            $pos_ini2 = strpos($content,"<chNFe>",0)+7;
            $pos_fim2 = strpos($content,"</chNFe>",0);
            $res_chave[$count_nfe_resumida] = utf8_decode(substr($content,$pos_ini2,$pos_fim2-$pos_ini2));
            
            $res_num_nfe[$count_nfe_resumida] = substr($res_chave[$count_nfe_resumida],25,9);

            $pos_ini2 = strpos($content,"<CNPJ>",0)+6;
            $pos_fim2 = strpos($content,"</CNPJ>",0);
            $res_cnpj[$count_nfe_resumida] = utf8_decode(substr($content,$pos_ini2,$pos_fim2-$pos_ini2));

            /*$pos_ini2 = strpos($content,"<IE>",0)+2;
            $pos_fim2 = strpos($content,"</IE>",0);
            $res_ie = utf8_decode(substr($content,$pos_ini2,$pos_fim2-$pos_ini2));*/

            $pos_ini2 = strpos($content,"<vNF>",0)+5;
            $pos_fim2 = strpos($content,"</vNF>",0);
            $res_vlr_nfe[$count_nfe_resumida] = utf8_decode(substr($content,$pos_ini2,$pos_fim2-$pos_ini2));

            $pos_ini2 = strpos($content,"<nProt>",0)+7;
            $pos_fim2 = strpos($content,"</nProt>",0);
            $res_protocolo[$count_nfe_resumida] = utf8_decode(substr($content,$pos_ini2,$pos_fim2-$pos_ini2));
            
            

            sleep(2);

            file_put_contents('NF/xml/compras/'.$res_forn[$count_nfe_resumida].' - '.$res_num_nfe[$count_nfe_resumida].'.xml',$content);

 

 

 

 

 

<!-- PARTE HTML DA COISA -->

<div class="row " style="padding: 0 10px 10px 10px;width:100%;text-align:center;">


        <h1 style=" padding-top: 10px; padding-bottom: 20px;">NFe - Emitidas Contra o CNPJ</h1>
        <form method="post" style="text-align:center">
            <br>
            
            
            <table  class='table table-striped table-bordered table-hover' style= 'max-width: 800px'>
                                        <tr>
                                            <th>  Chave de Acesso  </th>
                                            <th>  Nome do Fornecedor </th>
                                            <th>  CNPJ         </th>
                                            <th>  Valor    </th>
                                            <th>  Nº Protocolo      </th>
                                        </tr>
                <? $x=0;
                    while($x<=count($count_nfe_resumida)){ $x++;?>
                
                
            <div class="row " style="padding: 0 10px 10px 10px;width:100%;text-align:left;">
            <label style=" padding-top: 0px; padding-bottom: 0px;" class="control-label">Quantidades de NFe Encontrada</label>
            <div style="max-width: 60px;margin:0px 0px 30px 0px;">
            <input type='text' class='form-control onlyInteger' style='width:100%;' name='qnt_nf' id='qnt_nf' placeholder='0' value="<? echo $count_nfe_resumida;?>" readonly>
            </div>
                                        <tr>
                                              <td><? echo $res_chave[$x]; ?></td>
                                              <td><? echo $res_forn[$x]; ?></td>
                                              <td><? echo $res_cnpj[$x]; ?></td>
                                              <td><? echo $res_vlr_nfe[$x]; ?></td>
                                              <td><? echo $res_protocolo[$x]; ?></td>
                                        </tr>
                
                
                <? } ?>
                
            </table>
                
            <div style="clear: both; height: 30px"></div>
        <input type="submit" class=" form-control" style="max-width:120px;margin:0 0px 0px 0;" value="Buscar NFe" name="bt_enviar" id="bt_enviar">
        <br><br>    
        </form>


    </div>

 

Essas informações não são salvas em DB, é apenas para consulta.

Se alguém puder ajudar serei muito grato,

 

Abraço.

 

Michael Douglas

Share this post


Link to post
Share on other sites

Oi Machel, boa noite.

 

Você como deixa claro na linha 5 este ambiente opera apenas em produção, você tentou operar ele em produção para ver o resultado ou tentou postar no grupo da NFePHP no Google Groups ?

 

Eu não conheço a SPED-NFe, mas qual classe você precisa acessar ?

Share this post


Link to post
Share on other sites

caramba precisava de uma aplicação assim tbm, peguei seu codigo so q ta dando erro no meu, eu preciso pega uns dados no xml quando eles descompacta com o $content, so q nao to consegundo, to usando a função, simplexml_load_string

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By fabioamorais
      Ola pessoal, sou novo aqui no fórum e também no mundo da programação. 

      Estou criando um sistema de cadastro de clientes em PHP 7 e mysql
      para meu serviço para fins de organização, tenho ja pronto o sistema de cadastro e edição do cliente, tenho login por usuário e senha.
      preciso colocar nesse sistema uma forma que registre a ação e o usuário que fez a ação quando houver uma alteração no cadastro.
      exemplo;
      O usuario (jose) alterou o status de analise para concluído .
      o usuario (pedro) alterou a localização de mesa para armario.
      e que fosse exibido como um tipo de histórico de eventos no próprio cadastro do cliente.
      e nesse campo se ainda tiver como add cometários.
      Usuario (jose): Precisa entrar em contato com o cliente francisco. 
      Usuario (pedro): cliente foi avisado e está sabendo.
       
      quem souber uma forma de fazer isso, ficaria muito grato.

    • By proflupin
      Estou com a seguinte dificuldade, possuo um <a> que busca uma id numa tabela do banco de dados, conforme abaixo:
       
      <a href="self_service.php?id=<?php echo $row_produto['id_categoria_chamado']?>" class="btn btn-primary"data-toggle="collapse" data-target="#subcategoria" aria-expanded="false" aria-controls="collapseExample">Visitar</a> A consulta é realizada, pois vejo que um novo link é mostrado no rodapé da página:

       
      Esta página self_service.php mostrada acima, é minha página principal, onde tudo é trabalhado. Se por exemplo eu mudar para outro arquivo php, teste.php por exemplo, uma nova página é aberta e consigo exibir os resultados normalmente.
       
      O problema é: quero abrir este ID na mesma página, dentro de um collapse. Exemplo:
       
      Cliquei em visitar na categoria Totvs...
       
       
      Um collapse abre-se logo abaixo:

       
      O que não consigo fazer é resgatar o ID passado pelo botão VISITAR em meu collapse, se eu tenter o $_GET['id'], não vai retornar nenhum valor, pois a URL não muda quando trabalhamos com collapse.
    • By lamorim1904
      Caros, boa tarde!
       
      Primeiramente me desculpem se estou abrindo tópico repetido ou de maneira errada, procurei aqui no fórum mas talvez a forma que estou procurando ou a minha falta de conhecimento sobre a área não está me permitindo encontrar a solução.
      Não entendo quase NADA de programação e estou realizando um projeto que me cobra um pouco neste sentido, vou tentar explicar:
       
      Estou criando um hotspot inteligente onde o próprio cliente se cadastra, ele preenche um formulário e posterior a isso eu libero a conexão dele.
      O meu problema está depois que ele cria o seu cadastro, as informações vão para meu banco de dados mas nao retornam ao cliente, portanto a conexão não é liberada.
       
      Eu encontrei uma solução mas não estou conseguindo usa-la da maneira que gostaria, após usuário se cadastrar, eu direciono ele para a pagina de login e senha e caso ele digite os dados que ele acabou de preencher, a conexão é liberada. 
       
      Eu gostaria de automatizar esse processo, identificar a variavel X que eu usei para escrever no meu banco de dados e inseri-la no campo de usuario e senha e se possivel submeter a informação para o usuario nem ver essa tela de login e senha. Sabem me dizer se tem como?
       
      Para ficar mais claro, vou postar os codigos;
       
      <NESTE PONTO O CLIENTE JA PREENCHEU O CADASTRO E EU USO AS VARIAVEIS PARA ESCREVER NO MEU BANCO DE DADOS>
      <EU GOSTARIA DE USAR A VARIAVEL $MOBILE COMO USUARIO E SENHA NA PARTE DE JAVA ABAIXO>

      $sql = "INSERT INTO radcheck (UserName, Attribute, op, Value) VALUES ";
      $sql .= "('$MOBILE', 'Cleartext-Password', ':=', '$MOBILE')";
      mysqli_query($strcon,$sql) or die("Erro ao tentar cadastrar registro");

      $sql = "INSERT INTO radreply (UserName, Attribute, op, Value) VALUES ";
      $sql .= "('$MOBILE', 'Mikrotik-Rate-Limit', ':=', '512k/1024k')";
      mysqli_query($strcon,$sql) or die("Erro ao tentar cadastrar registro");
      mysqli_close($strcon);
      echo "Cliente cadastrado com sucesso!";
      ?>
      <html>
      <head><title>...</title></head>
      <body>
      $(if chap-id)
      <noscript>
      <center><b>JavaScript required. Enable JavaScript to continue.</b></center>
      </noscript>
      $(endif)
      <center>If you are not redirected in a few seconds, click 'continue' below<br>
      <form name="redirect" action="http://201.82.110.3/mkloginteste2.php" method="post">
      <input type="hidden" name="mac" value="$(mac)">
      <input type="hidden" name="ip" value="$(ip)">
      <input type="hidden" name="username" value="$MOBILE">
      <input type="hidden" name="link-login" value="$(link-login)">
      <input type="hidden" name="link-orig" value="$(link-orig)">
      <input type="hidden" name="error" value="$(error)">
      <input type="hidden" name="chap-id" value="$(chap-id)">
      <input type="hidden" name="chap-challenge" value="$(chap-challenge)">
      <input type="hidden" name="link-login-only" value="$(link-login-only)">
      <input type="hidden" name="link-orig-esc" value="$(link-orig-esc)">
      <input type="hidden" name="mac-esc" value="$(mac-esc)">
      <input type="submit" value="continue">
      </form>
      <script language="JavaScript">
      <!--
         document.redirect.submit();
      //-->
      </script></center>
      </body>
      </html>
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.