Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Consumir webservices da NFe Bom dia, Alguém já consumiu os webservices da SEFAZ para o envio/autorização de NFe? Gostaria de saber como posso fazer isso pelo adianti... se alguém tiver um exemplo ou indicar um artigo, fico grato!...
RP
Consumir webservices da NFe  
Bom dia,
Alguém já consumiu os webservices da SEFAZ para o envio/autorização de NFe?
Gostaria de saber como posso fazer isso pelo adianti... se alguém tiver um exemplo ou indicar um artigo, fico grato!

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (34)


MG

Me interesso pelo assunto. Acompanhando.
LC

Acompanhando
FF

Olá amigos.
Tenho um exemplo pronto funcionando no Adianti.
Basta alterar segundo suas necessidades.
Espero que seja de ajuda, pois, tive muito trabalho para chegar a esse resultado.
Integrei o SPED-NFE ao Adianti.
Quem desejar, baixe o pacote que disponibilizo no link abaixo e descompacte em app/control
Para funcionar, deve ser alterado o nome do certificado digital nos lugares onde é solicitado o mesmo.
O arquivo de certificado digital deve ser colocado na pasta nfe/vendor/nfephp-org/nfephp/certs, e claro, como já sabem, deve ser do tipo A1.
Crie a entrada no menu.xml... Sugestão:
  1. <?php
  2.             <menuitem label='Gerar NF-e'>
  3.                 <icon>fa:cubes green fa-fw</icon>
  4.                 <action>NotaFiscal</action>
  5.             </menuitem>
  6. ?>

Se precisarem de ajuda com a configuração e outros problemas que "certamente ocorrerão (rssss)", estou disposto a ajudar. É só ir postando as perguntas.
O segredo do sucesso com a SPED-NFE é: "NÃO DESISTA".
Persista.
E acima de tudo, tenha paciência. Certamente todos que desejarem conseguirão fazer funcionar assim como eu consegui.
Link da pasta completa:

https://www.4shared.com/archive/G4pcuX55ee/nfe.html

Sucesso a todos.
FF

Apenas uma ressalva: tudo está programado para funcionar no linux.

Quem desejar ver as imagens da nfe funcionando, segue outro link.

https://www.4shared.com/archive/bywjcGBLgm/nfe-imagens.html
RP

Olá Fabio,
Obrigado por disponibilizar os arquivos... quando terminar o que estou fazendo, vou começar a NFe.
No seu sistema, vc autoriza uma NFe por vez, ou gera lote com mais de uma NFe?
FF

O link dos arquivos está quebrado. Reenviando...

https://www.4shared.com/archive/qSN7MZxEgm/nfe.html
FF

Rogério, nesse exemplo está sendo autorizado apenas 1 por vez.
FF

Pessoal. desculpem. Estou com um problema no 4shared. Vou reenviar novamente... desculpem o transtorno...
FF

Agora sim, segue link:

https://mega.nz/#!HQQ3mAbY!jEfYO3Vi6pqr1iFa1nN8lHUud62xD8BOqo6s2v0bv48
RB

Fabio,

O link (https://mega.nz/#!HQQ3mAbY!jEfYO3Vi6pqr1iFa1nN8lHUud62xD8BOqo6s2v0bv48) esta quebrado.
JA

acompanhando...
AN

Tutorial de envio da nfe terminado.

link para baixar

https://www.dropbox.com/s/8g33a5tmixhubig/nfephp.pdf?dl=0
AN

Segue código para cancelamento NFe

  1. <?php
  2.             // 5. Carrega certificado  
  3.             $tools TNfe::Certificado($empresa->razao_social,trim($estado->uf),$empresa->cgc,$empresa->certificado_nfe,$empresa->senha_certificado,'A',$ambiente);
  4.             $tools->model('55');
  5.             $chave $cabnota->chave_acesso;
  6.             $xJust $motivo;
  7.             $nProt $cabnota->nprot;
  8.             // 6. pega resposta do cancelamento na sefaz
  9.             $resp $tools->sefazCancela($chave$xJust$nProt);
  10.             $st = new NFePHP\NFe\Common\Standardize();
  11.             $std $st->toStd($resp);
  12.            if ($std->cStat == 128)  // lote do evento processado
  13.            {
  14.                $cStat $std->retEvento->infEvento->cStat;
  15.                if ($cStat == '101' or $cStat == '155' or $cStat == '135'// sucesso no cancelamento
  16.                {
  17.                   //pegar xml
  18.                   $lnprot $std->retEvento->infEvento->nProt;                 
  19.                   $protocol =  new NFePHP\NFe\Complements();
  20.                   $xml_final $protocol->toAuthorize($tools->lastRequest$resp);
  21.                   
  22.                   //gravar o XML protocolado e atualizacoes no BD 
  23.                   $cabnota->xml_cancelado $xml_final;
  24.                   $cabnota->tipo_nf 'X'// seta nota como cancelada
  25.                   $cabnota->cstat '101';
  26.                   $cabnota->nprot_cancelamento $lnprot;
  27.                   $cabnota->store();
  28.  
  29.                   // b) grava dados na tabela temporaria
  30.                   $tempnf tempemitenf::find($lid_temp);
  31.                   $tempnf->status '101';
  32.                   $tempnf->retorno 'Cancelada';
  33.                   $tempnf->store();
  34.                  
  35.                   // atualiza cabecalho da nota fiscal
  36.                   $lsql $conn->prepare('update cab_saida set tipo_nf=? where empresa=? and filial=? and id=?');
  37.                   $lsql->execute(array('X',TSession::getValue('gempresa'),TSession::getValue('gfilial'),$id_nota));
  38.                   // atualiza itens da nota fiscal
  39.                   $lsql $conn->prepare('update item_saida set tipo_nf=? where empresa=? and filial=? and id_nota=?');
  40.                   $lsql->execute(array('X',TSession::getValue('gempresa'),TSession::getValue('gfilial'),$id_nota));
  41.                   TTransaction::close(); // grava em definitivo
  42.                   
  43.                   // altera o xml de enviada para cancelada
  44.                   $xml simplexml_load_string($cabnota->xml);
  45.                   $xml->protNFe->infProt->cStat 101;
  46.                   $xml->protNFe->infProt->xMotivo 'Cancelamento de NF-e homologado';
  47.                   $lpasta trim($empresa->diretorio_xml);
  48.                   file_put_contents($arq_cancelado,$xml->asXML());
  49.                   chmod($arq_cancelado0777);                   
  50.                    
  51.                   // apaga o arquivo enviado                         
  52.                   unlink($arq_eliminado);
  53.                   TNfe::Refaz_saldo($id_nota);
  54.                   $retorno 'ok';
  55.                } else   
  56.              {
  57.                   $retorno '2 - Erro: Cstat' $cStat ' - Motivo: ' TNfe::Le_cstat($cStat);
  58.             }
  59.         } else
  60.         {
  61.                 $retorno '3 - Erro: Cstat' $std->cStat ' - Motivo: ' TNfe::Le_cstat($std->cStat); 
  62.         }      
  63. ?>
AN

Código para Inutilizar número da NFe

  1. <?php
  2.             // 5. Carrega certificado  
  3.             $tools TNfe::Certificado($empresa->razao_social,trim($estado->uf),$empresa->cgc,$empresa->certificado_nfe,$empresa->senha_certificado,'A',$ambiente);
  4.             $nSerie trim($cabnota->serie_id);
  5.             $nIni intval(trim($cabnota->nf_id));
  6.             $nFin $nIni;
  7.             $xJust 'Inutilizacao de numero homologado';
  8.  
  9.             // 6. pega resposta da inutilizacao na sefaz
  10.             $resp $tools->sefazInutiliza($nSerie$nIni$nFin$xJust$ambiente);
  11.             $st = new NFePHP\NFe\Common\Standardize();
  12.             $std $st->toStd($resp);
  13.             $posicao stripos($st,'cStat>');
  14.             $cStat substr($st,$posicao+6,3);
  15.             if ($cStat == '102')  // numero inutilizado
  16.             {                  
  17.                 // a) gravar atualizacoes no BD 
  18.                 $cabnota->tipo_nf 'Z'// seta nota como inutilizada
  19.                 $cabnota->cstat '102';
  20.                 $cabnota->store();
  21.  
  22.                 // b) grava dados na tabela temporaria
  23.                 $tempnf tempemitenf::find($lid_temp);
  24.                 $tempnf->status '102';
  25.                 $tempnf->retorno 'Inutilizad';
  26.                 $tempnf->store();
  27.                  
  28.                 // c) atualiza itens da nota fiscal
  29.                 $lsql $conn->prepare('update item_saida set tipo_nf=? where empresa=? and filial=? and id_nota=?');
  30.                 $lsql->execute(array('Z',TSession::getValue('gempresa'),TSession::getValue('gfilial'),$id_nota));
  31.                 TTransaction::close(); // grava em definitivo
  32.                   
  33.                 // d) refaz situacao dos dados como antes da inutilizacao 
  34.                 TNfe::Refaz_saldo($id_nota);
  35.                 $retorno 'ok';
  36.          } else
  37.          {
  38.                $retorno 'Erro: Cstat' $cStat ' - Motivo: ' TNfe::Le_cstat($cStat); 
  39.          }      
  40. ?>
AN

Rotina para ler erro e retornar motivo do erro

  1. <?php
  2.     // rotina para ler status de retorno da nfe - recebe o numero do erro e retorna o motivo do erro 
  3.     public static function Le_cstat($erro)
  4.     {
  5.        $retorno '';
  6.        $arquivo file_get_contents('nfephp/storage/cstat.json');
  7.  
  8.        // Decodifica o formato JSON e retorna um objeto
  9.        $json json_decode($arquivo);
  10.  
  11.        // Loop para percorrer o Objeto
  12.        foreach ($json as $registro)
  13.        {
  14.          if ($registro->cod == $erro)
  15.          {
  16.              $retorno $registro->msg;
  17.              break; 
  18.          }
  19.        }
  20.        return $retorno;
  21.     }
  22. ?>
AN

Imprimir danfe

  1. <?php
  2. //*** incluir
  3. use NFePHP\DA\NFe\Danfe;  
  4. //
  5. //rotina de impressao
  6. $lpasta trim($empresa->diretorio_xml);
  7. if ($lstatus == '100'// nota aprovada
  8. {
  9.    $arq_destino $lpasta 'validas/' $cabnota->chave_acesso '-NFe.xml';
  10. }
  11. if ($lstatus == '101'// nota cancelada
  12. {
  13.     $arq_destino $lpasta 'canceladas/' $cabnota->chave_acesso '-NFe.xml';
  14. }
  15. if ($lstatus == '110' or $lstatus == '301' or $lstatus == '302'// nota denegada
  16. {
  17.    $arq_destino $lpasta 'denegadas/' $cabnota->chave_acesso '-NFe.xml';
  18. }
  19. if (!file_exists($arq_destino))
  20. {
  21.    throw new Exception('Arquivo XML Não Encontrado : '$arq_destino);
  22. }                
  23. $docxml file_get_contents($arq_destino);
  24. $pdfDanfe trim($empresa->diretorio_xml) . 'pdf/emitidas/' $cabnota->chave_acesso'-danfe.pdf';
  25.     
  26. $danfe = new Danfe($docxml'P''A4''''I''');
  27. $id $danfe->montaDANFE();
  28. $pdf $danfe->render();
  29. file_put_contents($pdfDanfe$pdf);
  30. chmod($pdfDanfe0777); 
  31. parent::openFile($pdfDanfe);
  32. ?>
AN

Segue uma gravação do desktop mostrando o funcionamento de envio e cancelamento da NFe.

https://www.dropbox.com/s/ktsv1menfjke37r/danfe-2018-11-19_08.36.09?dl=0
RP

Armando, obrigado por compartilhar.!!!
Não querendo abusar, mas será que vc poderia disponibilizar o seu arquivo de geração do DANFE também?
Me pouparia trabalho aqui e acho que outros tb gostariam... seremos gratos! :)
AN

Rogério eu postei.

Imprimir Danfe. Foi o último código postado.
JA

é possível ficar monitorando as notas emitidas para meu cnpj, sem ter a chave?
AN

Você deseja saber se é possível verificar quais notas o seu fornecedor emitiu contra a sua empresa sem a chave de acesso dessas notas? Se for isso é possível sim. Usar as classes da Dfe. Funciona 100% . Você faz a manifestação da nota dando ciência. Daí já pode fazer por download do XML dessa nota. Em seguida pode confirmar a operação, recusar ou desconhecer a operação.
JA

É isso mesmo, pelo que entendi, eu faço uma pesquisa e ele me retorna que existe uma nota emitida para mim, daí eu faço o manifesto e o download da nota. Vou tentar.
AN

Ok Júnior.
Se você esbarrar em algum problema nisso me avisa que tento ajudar.. Tenho que terminar o bloco K do SPED e isso está me tomando todo o tempo.. essa parte do dfe e NF-e graças a Deus terminei aqui. Funciona muito bem
VP

Olá Armando, boa tarde!

Por um acaso você já conseguiu desenvolver, via Adianti, a rotina para fazer o download das notas emitidas pelo fornecedor (DF-e) ?
Se já conseguiu, gostaria de saber da possibilidade de compartilhar.

Obrigado!

Valdiney
AN

Já consegui Valdiney.

Me passa seu email., daí envio para você.
VP

envia para
sistemas.vlp@gmail.com

Obrigado!
AN

Ok.
Amanhã faço um breve resumo e te envio tudo.

Abraço
NC

Armando Ribeiro poderia me enviar um email com seu contato ?
NC

nillcamargo@visageplus.com.br
FN

Prezados,
Alguém tem algum exemplo funcionando de Nf-e e/ou e-Sat no Adianti Builder? Podemos negociar. Favor contactar fcopedro@gmail.com
RM

Parabéns pelo trabalho ,poderia me enviar rbtmarques@gmail.com
CM

Será se eu também poderia receber?
Se puder, amigo, favor enviar para: celiommorais@yahoo.com.br

Obrigado!
VN

alguem tem os arquivos para me mandar por favor?

diony@vyanetwork.com.br
DJ

Também posso receber?
Agradeço se for possível: daniel.pinheirojr@gmail.com
Grato.