Groups keyboard shortcuts have been updated
Dismiss
See shortcuts

Fluxo da emisão da nota

81 views
Skip to first unread message

Jéssica De Souza Lima

unread,
Jan 20, 2025, 8:59:30 AMJan 20
to NFePHP
Bom dia! Seguinte, ao emitir uma nota com o CFOP inválido causa a rejeição, porém preciso garantir o fluxo do sistema sem comprometer o funcionamento, alguém tem alguma sugestão?

No momento meu código está assim:

try {
            if ($emite_nota && !empty($tipo_da_nota)):
                $dados['codigo_sefaz_forma_de_pagamento'] = $codigo_sefaz_forma_de_pagamento;
                if ($tipo_da_nota == 2):
                    $this->nfce->emitir($dados);
                elseif ($tipo_da_nota == 1):
                    $this->nfe->emitir($dados);
                endif;
            endif;
        } catch (Exception $e) {
            log_message('error', 'Erro ao emitir nota fiscal: ' . $e->getMessage());
        }

Mas toda vez que a nota é rejeitada para o fluxo do sistema. Sugestão? A qualidade do código não tá das melhores pois estou buscando a solução para depois deixá-lo melhor. Grato.

Gabriel

unread,
Jan 21, 2025, 10:09:22 AMJan 21
to NFePHP
Bom dia, o correto seria validar os dados antes de dar início ao processo de geração da nota, permitindo a quem estiver preenchendo a mesma sanar os problemas. A biblioteca também possuí um método para obter os errors, mas é necessário estudá-la um pouco para entender como usar.
 Ex de validação antes da emissão:

$errors = [ ];

 if(strlen($codigo_cfop) != 4) $errors[ ] = "CFOP Inválido";

if(!empty($errors)) return json_encode([ "status" => false, 'errors'=>$errors]);

Snooping Tecnologia

unread,
Jan 21, 2025, 12:54:23 PMJan 21
to NFePHP
Boa tarde pessoal,
Alem da sugestão do gkro, como alternativa para não mudar muita coisa em seu código, levando em conta que você não está realizando a validação prévia, seria colocar esse trecho dentro de uma função que retornaria "true" ou "false", fora da função teria uma variável que receberia a mensagem de erro para você fazer os devidos tratamentos, você executaria a função validando o retorno. 
Não sei como está seu código, mas abaixo segue uma sugestão para você analisar se cabe ou não implementar algo do tipo.

private $erros_na_transmissao;

private function Transmissao( $codigo_sefaz_forma_de_pagamento, $tipo_da_nota ){
    try{
       $dados['codigo_sefaz_forma_de_pagamento'] = $codigo_sefaz_forma_de_pagamento;
         if ($tipo_da_nota == 2):
             $this->nfce->emitir($dados);
        elseif ($tipo_da_nota == 1):
             $this->nfe->emitir($dados);
        endif;
        return true;
    }
    catch(Exception $e){
        $this->erros_na_transmissao = $e->getMessage();
        return false;
    }
}

if ($emite_nota && !empty($tipo_da_nota){
   if (!$this->Transmissao( $codigo_sefaz_forma_de_pagamento, $tipo_da_nota)){
       "Você pode fazer o tratamento da mensagem retornada"
Reply all
Reply to author
Forward
0 new messages