cancel
Showing results for 
Search instead for 
Did you mean: 

Status para atualizar Z na volta do SEFAZ quando estornar NFe pelo monitor

Former Member
0 Kudos

Srs,

Temos o seguinte cenário no módulo MM:

Quando estornar uma NFe pelo monitor, ao voltar do SEFAZ, precisamos atualizar registros nas tabelas Z como cancelado.

Fiz este código na BADi IF_EX_CL_NFE_PRINT~CHECK_SUBSEQUENT_DOCUMENTS, colocando "IF sy-uname = 'usuário GRC'." para garantir que só vai ser executado os meus códigos no retorno da SEFAZ.

Para saber se NFe já foi cancelada pela SEFAZ, coloquei as seguintes condições:

IF is_active-docsta = '1' AND

is_active-scssta = '1'.

Quando a rotina entrou na produção, o usuário alegou que em alguns casos de estorno os códigos de status de retorno não eram 1 e 1, e pode variar para outros status e mesmo assim a nota é estornada. Além disso, o usuário me disse que pela minha condição is_active-docsta = '1' e is_active-scssta = '1' não quer dizer nada em relação se a nota já foi cancelada pelo SEFAZ e me pediu para procurar uma outra BADi no retorno da SEFAZ quando is_active-cancel é igual a 'X'.

Favor me ajudar esclarecendo se a minha condição está certa ou falta alguma coisa ou se existe outra BADi para esta finalidade.

Obrigado.

Accepted Solutions (1)

Accepted Solutions (1)

former_member182114
Active Contributor
0 Kudos

Bom dia Chan Chung Chi,

Este método é chamado não apenas no retorno mas também no pedido de cancelamento, e vincular ao usuário que está efetuando o cancelamento é um vínculo muito fraco, pois em algum momento outro usuário certamente disparará o cancelamento (exemplo J1BNFE -> NF-e -> Cancel Source Document, chama esta mesma função para a resincronia).

Tem outro ponto que só é chamado no processamento do retorno, método CALL_RSNAST00, originalmente para impressão automática irá atender bem.

Quando aos checks, a autorização para cancelamento pela Sefaz pode ser recebida com os status 101, 102, 301 e 302 (is_active-code), só que tem outros detalhes... mesmo recebendo estes códigos a nota talvez já tenha sido cancelada manualmente direto na transação.. Situação, por exemplo de contingência, isso muda alguma coisa no seu Z ?

Se você tem como controlar se já mexeu no Z ou não, talvez o mais simples no seu caso seja se ater a recebendo code=102, 102, 301 e 302 AND cancel = 'X' AND seu Z ainda não foi mexido.

Atenciosamente, Fernando Da Ró

Former Member
0 Kudos

Fernando,

Conforme sua dica, mudei meus códigos para IF_EX_CL_NFE_PRINT~CALL_RSNAST00 e coloquei as condições que você mencionou e funcoinou perfeitamente.

Muito obrigado.

Answers (0)