cancel
Showing results for 
Search instead for 
Did you mean: 

B2B NFe 10 - Envio e-mail Dinâmico ( XML Cancelamento )

pl_mateus
Explorer
0 Kudos

Bom dia.

Estou desenvolvendo a solução para o envio de XML com e-mail dinâmico. Segui as instruções de outra thead (http://scn.sap.com/thread/3209547) e fiz um javamapping que pega o e-mail que vem preenchido no XML da NFe ( quando é preenchido na BADI do ECC). Até ai tudo certo, funcionou perfeitamente, então parti para fazer o cancelamento mas percebi que no XML de cancelamento não contém a tag e-mail.

Minha dúvida é se essa tag existe também no XML de cancelamento e tem que ser preenchida via BADI também ( se existe gostaria de saber o nome da BADI), ou se terei que buscar outra alternativa.

Obrigado!

Mateus Pires.

Accepted Solutions (1)

Accepted Solutions (1)

rhviana
Active Contributor
0 Kudos

Oi Matheus bom dia,

Da uma olhada na minha wiki:

http://wiki.sdn.sap.com/wiki/pages/viewpage.action?pageId=315524420

Veja esse post tb, que já coloquei o ajuste do código para enviar Cancelamento Por Evento

http://scn.sap.com/thread/3273370

Segue código abaixo:

   if ( inptxml.indexOf("infEvento") > 0){

    cancelEvento = inptxml.substring(inptxml.indexOf("<descEvento>")+12,inptxml.indexOf("</descEvento>"));

    if("Cancelamento".equals(cancelEvento)){

                    this.setPrefixoDocumento(this.getPrefixoDocumento().replaceAll("NFE", "CancNFe"));

                    this.setPrefixoSubject(this.getPrefixoSubject().replaceAll("NFE AUTORIZADA", "NFE CANCELADA COMO EVENTO"));

              }

    else{

    this.setPrefixoDocumento(this.getPrefixoDocumento().replaceAll("NFE", "CCE"));

    this.setPrefixoSubject(this.getPrefixoSubject().replaceAll("NFE AUTORIZADA", "CARTA DE CORREÇÃO ELETRÔNICA"));

    }

   }

Abraço,

Ricardo Viana.

pl_mateus
Explorer
0 Kudos

Boa dia Ricardo.

Primeiramente obrigado pela rápida ajuda e parabéns pelo material, está muito bom.

Estou com um problema ao executar o teste no Interface Mapping de NullPointerException:

" 11:40:05 Start of test

Call method execute of the application Java mapping sap.com.xi.nfe.map.ProxyNamespaceCleaner

Java mapping sap/com/xi/nfe/map/ProxyNamespaceCleaner completed. (execute() of sap.com.xi.nfe.map.ProxyNamespaceCleaner

Call method execute of the application Java mapping XmlNFe_To_Mail

Error during appliction Java mapping XmlNFe_To_Mail

java.lang.NullPointerException at XmlNFe_To_Mail.execute(XmlNFe_To_Mail.java:162) ... "

Verificando a linha 162 está o código onde ele pega o valor do e-mail no nó:

     email = node.getFirstChild().getNodeValue();

Aparentemente ele está acessando um objeto vazio, então não sei nem se ele está conseguindo acessar a RFC e tento algum retorno.

Gostaria de saber se existe um modo de debugar o código ou de executar o jar fora do PI ( da máquina do PI, mas fora do cenário), pois como o eclipse está na minha máquina local ele da 'dump' ao tentar fazer o LookupService.

Obrigado.

Att.

Mateus Pires Leite.

rhviana
Active Contributor
0 Kudos

Olá Matheus bom dia,

Disponha, sempre estou tentando ajudar o pessoal do forum !

Sobre a sua pergunta, eu desconheço como você vai fazer isso fora do PI, pq voce precisa acessar a RFC e tals.

Pergunta, você colocou o nome da sua RFC correta ? BS do GRC ? E outras ?

Acho que não esta conseguindo acessar a sua RFC cara, da uma olhada no usuario da conexao que esta sendo utilizada, sem esta bloquado e outros, se ele não achar o e-mail realmente essa variavel email vai ficar em branco.

Att,

Ricardo Viana.

pl_mateus
Explorer
0 Kudos

Bom dia Ricardo.

O problema era que eu não tinha flegado a função como de acesso remoto (RFC). Agora está acessando a RFC, recebendo o retorno e enviando o e-mail.

Mas agora estou com uma dúvida, no meu caso o XML foi enviado no corpo do e-mail e não como anexo. Você sabe o que pode estar acontecendo?

Obrigado.

Att.

Mateus Pires Leite.

rhviana
Active Contributor
0 Kudos

Oi Matheus,

Desconfiava que era isso também, um outro usuário teve essa mesma situação.

Bom sobre o corpo do e-mail, ele é feito baseado e MIMES, que estão sendo utilizados na função BodyText.

Provavelmente você deve ter modificado alguma coisa no texto de dexei na Wiki, na sua adaptação você reparou se você apagou alguma linha ou traço ?

Da uma olhada nessa linha, é aqui que forma o XML em anexo:

"\r\n----AaZz\r\nContent-Disposition: attachment; filename="+ "NF-e EMPRESA X - " + chaveNFe + ".xml" +"\r\n\r\n" + xmlString + "\r\n";

Da uma olhada na função de XmlToMail se você está mandando as infos para BodyText:

BodyText texto = new BodyText(idNFe,inptxml);

inptXML é o stream do XML todo.

Verifica isso ai e posta aqui.

Att,

Ricardo Viana.

rhviana
Active Contributor
0 Kudos

Lembrando,

No meu código a funcao  BodyText texto = new BodyText(idNFe,getFrase(),inptxml); - recebe frase também devido um processo específico do cliente, a sua função não precisa passar isso.

Att,

pl_mateus
Explorer
0 Kudos

Ricardo.

A única alteração que eu fiz no texto foi o nome da empresa, o resto está do mesmo jeito.

O e-mail visualizado no outlook está ficando nesse formato:

Será que o Content-Disposition não precisa virar um elemento da "arvore" como as outras tags? (FROM, TO, CONTENT,...)

Att.

Mateus Pires Leite.

rhviana
Active Contributor
0 Kudos

Olá Matheus,

Acho que você esqueceu de algo ai ou na hora de colocar as infos da sua empresa deve ter apagado algo sem querer, por isso está saindo tudo no corpo do e-mail.

O content-disposition já está sendo referênciado aqui:

"\r\n----AaZz\r\nContent-Disposition: attachment; filename="+ "NF-e EMPRESA X - " + chaveNFe +

        ".xml" +"\r\n\r\n" + xmlString + "\r\n";

Cara demorei umas duas semanas para conseguir colocar esse Mime (multipart/mixed;boundary) para funcionar, sugiro você verificar primeiro corpo de texto depois ajustar o anexo.

O código está exatamente como está implementado e funcionando em um cliente que eu desenvolvi.

Qualquer coisa me adiciona no gtalk.

Abraço,

Ricardo Viana.

pl_mateus
Explorer
0 Kudos

Ricardo.

Problemas resolvidos, os e-mails estão sendo enviados com o XML em anexo. Só não fiz o teste de Evento por um problema com o fuso do ambiente mas creio que não terei problemas.

Muito obrigado pela ajuda e pela paciência!

Att.

Mateus Pires Leite.

rhviana
Active Contributor
0 Kudos

Mateus,

Que isso cara, estamos a disposição, estou testando agora uma outra solução mais complexa, utilizando UDF + Message Mapping + Javamapping, se funcionar crio outra wiki.

Essa outra solução e pegando o XML aberto da solução NF-e 10.0, converter para string utilizando as estruturas do namespace COMMON e passando por um message mapping posteriormente que mapeia para estrutura Mail. É maneiro o negócio

Qual foi o ajuste que estava faltando ?

Não esqueça de implementar o código que postei acima para o funcionamento do Cancelamento Por Evento.

Abraço;

Ricardo Viana.

Answers (0)