Desde o Support Package 12, do component SLL-NFE, temos a possibilidade de reenviar o XML de aprovação de uma NFe(interface NTB2B), porém não temos a mesma funcionalidade para reenviar o XML de um cancelamento.
Graças ao Enhancement framework podemos adicionar esta funcionalidade no monitor web do GRC.
Passos:
Transação SE80 => Componente Webdynpro = /XNFE/NFE_MONITOR_NEW
Clicar no botão Botão para criar um Enhancement para o component acima.
Adicionar um ToolBarButton na View “VI_NDETAIL”
Adicionar um label para o botão e criar uma action, aonde iremos disparar a interface “ETB2B” para o envio do XML do evento de cancelamento.
CODIFICAÇÃO:
Clicamos duas vezes na action que criamos:
Buscamos do contexto a chave da NFe e o seu código de status(100, 101 etc).
Caso a NFe esteja cancelada selecionamos seu registro do evento de cancelamento(tabela “/XNFE/EVENTS”) e o seu respectivo XML(tabela “/XNFE/EVENT_XML”) e chamamos a função ”/XNFE/PROCSTEP_EV_B2BOUTBD” para disparar a interface(ETB2B) que envia o XML do evento para o parceiro da nota.
Caso a nota não esteja cancelada disparamos uma mensagem de erro.
Classe de Mensagem “ZXNFE_B2B2”
Resultado:
Layout do monitor web da NFe - apresenta o botão "Z" criado pelo nosso enhancement.
Após clicar no botão “Enviar XML Cancelamento” a interface "ETB2B" é disparada(envio do e-mail do xml de cancelamento) e uma mensagem de sucesso é exibida para o usuário
Transação: SXI_MONITOR - podemos ver que a interface ETB2B(envia XML do b2b de eventos) foi executada com sucesso.
Caso de NFe aprovada
Após clicar no botão “Enviar XMl Cancelamento” o usuário recebe uma mensagem de erro informando que a NFe não está cancelada.
Observações:
Caso haja a necessidade de também enviar o XML para a transportadora basta chamar a função “/XNFE/PROCSTEP_EV_B2BOUTCA” da mesma forma que a anterior.
Assim como fizemos o enhacement no monitor principal da NFe, poderíamos criar a mesma funcionalidade no monitor de Eventos e criar um botão que seja capaz de reenviar o XML de qualquer evento(CCe ou Cancelamento) a lógica será a mesma mudando basicamente o component webdynpro, a qual faremos o enhancement.