on 08-11-2011 2:44 PM
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.
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ó
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
16 | |
3 | |
2 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.