ERRO AO CANCELAR NOTA FISCAL

64 views
Skip to first unread message

Thiago Coelho

unread,
Jul 2, 2021, 8:55:54 AM7/2/21
to nfe...@googlegroups.com
Bom dia  !!!

`Preciso de ajuda para cancelar nota fiscal , segue meu esquema.

 public function cancelar()
    {
        // Dados
        $id_nfe = $this->request->getvar('id_nfe');
        $id_venda = $this->request->getvar('id_venda');

        // Dados da NFe
        $nfe = $this->nfe_model->asObject()->where('id_nfe', $id_nfe)->first();

        // Justificativa para o cancelamento
        $justificativa = $this->request->getvar('justificativa');

        // Pega o numero do protocolo da XML
        $string_1 = explode('<nProt>', $nfe->protocolo);
        $string_2 = explode('</nProt>', $string_1[1]);

        $num_do_protocolo = $string_2[0];
        // ---------------------------------

        try {

            // Dados da config da NFe
             $dados = $this->config_nfce_model->asObject()->where('id_config', 1)->first();
             $dados_empresa = $this->config_empresa_model->asObject()->where('id_config', 1)->first();

          $CNPJ = str_replace(".", "",  $dados_empresa->cnpj);
          $CNPJ = str_replace("/", "", $CNPJ);
          $CNPJ = str_replace("-", "", $CNPJ);
         
           $ie = str_replace(".", "",  $dados_empresa->inscricao_estadual);
           $ie = str_replace("/", "", $ie);
           $ie = str_replace("-", "", $ie);
         
            // ------------------------------------------------------------ CONFIG
            $config  = [
            "atualizacao" => date('Y-m-d h:i:s'),
            "tpAmb" => (int) $dados->tpAmb,
            "razaosocial" =>  $dados_empresa->razao_social,
            "cnpj" => $CNPJ, // PRECISA SER VÁLIDO
            "ie" => $ie, // PRECISA SER VÁLIDO
            "siglaUF" => $dados_empresa->UF,
            "schemes" => "PL_009_V4",
            "versao" => '4.00',
            "tokenIBPT" => "AAAAAAA",
            "CSC" => "AD6A9D2E-3F93-437F-BE5B-E8FA800A08F4",
            "CSCid" => "000001"
        ];

            $configJson = json_encode($config);
           
           
            // ----------------------------------------------------------------------

            // Certificado
             $arq_certificado = WRITEPATH . "uploads/"."$this->cnpj/"."certificado_nfce.pfx";
            $certificadoDigital = file_get_contents($arq_certificado);
         
            // -----------

            $certificate = Certificate::readPfx($certificadoDigital, $dados->senha);
            $tools = new Tools($configJson, $certificate);
            $tools->model('55');

            $chave = $nfe->chave;
            $xJust = $justificativa;
            $nProt = $num_do_protocolo;

            $response = $tools->sefazCancela($chave, $xJust, $nProt);
          echo "<pre>";
              print_r (  $response);
         exit;
            //você pode padronizar os dados de retorno atraves da classe abaixo
            //de forma a facilitar a extração dos dados do XML
            //NOTA: mas lembre-se que esse XML muitas vezes será necessário,
            //      quando houver a necessidade de protocolos
            $stdCl = new Standardize($response);
            //nesse caso $std irá conter uma representação em stdClass do XML
            $std = $stdCl->toStd();
           

            // Cria sessão para mostrar os alertas
            $session = session();

            //verifique se o evento foi processado
            if ($std->cStat != 128) {
                //houve alguma falha e o evento não foi processado
                //TRATAR
               
                $session->setFlashdata('alert', 'erro_cancelamento_nfe');
            } else {
                $cStat = $std->retEvento->infEvento->cStat;
                if ($cStat == '101' || $cStat == '135' || $cStat == '155') {
                    //SUCESSO PROTOCOLAR A SOLICITAÇÂO ANTES DE GUARDAR
                    $xml = Complements::toAuthorize($tools->lastRequest, $response);

                    // Adiciona o XML Protocolado no banco de dados e altera o status
                    $this->nfe_model->save([
                        'id_nfe' => $id_nfe,
                        'xml_protocolado_cancelamento' => $xml,
                        'status' => 'Cancelada'
                    ]);

                    $session->setFlashdata('alert', 'success_cancelamento_nfe');
                } else {
                    //houve alguma falha no evento
                    //TRATAR
                    $session->setFlashdata('alert', 'erro_cancelamento_nfe');
                }
            }

            // Retorna para a página de vendas com o alerta
            return redirect()->to("/vendas/show/$id_venda");
        } catch (\Exception $e) {
            echo $e->getMessage();
        }
    }

esta dando este erro : 

2021070209530932GO4.052128Lote de Evento Processado2GO4.052215Rejeição: Falha no schema XML5221073063961600017855001000000019115976013511011112021-07-02T09:53:10-03:00

mateus...@yahoo.com.br

unread,
Jul 2, 2021, 1:53:41 PM7/2/21
to NFePHP
provavelmente algum campo não está  no padrão esperado, se salvar o xml de envio de cancelamento como fica? 
Confere a data pode ser que não tá na formatação correta, nprot tem tamanho exato de 15? xJust fica entre 15 e 255 caracteres?

Thiago Coelho

unread,
Jul 2, 2021, 4:52:54 PM7/2/21
to nfe...@googlegroups.com
Obrigado Mateus pela dica era o campo xJust eu estava mandanso com menos caracteres que 15 , nao sabia disso.

--
--
Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
Para Postar: nfe...@googlegroups.com
Para Sair do Grupo: nfephp+un...@googlegroups.com
Link: http://groups.google.com.br/group/nfephp?hl=pt-BR
-------
Repositórios: https://github.com/nfephp-org
---
Você recebeu essa mensagem porque está inscrito no grupo "NFePHP" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para nfephp+un...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/nfephp/a9dc3bf4-2b75-4168-9edd-d66b578f7057n%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages