fix(legacy): popular descEvento em RecepcaoEventoCancelamentoAsync (alinhado com upstream)#79
Open
fix(legacy): popular descEvento em RecepcaoEventoCancelamentoAsync (alinhado com upstream)#79
Conversation
…escricao() Alinha o metodo legado com o upstream ZeusAutomacao/DFe.NET master, que popula descEvento explicitamente via tipoEventoCancelamento.Descricao() (linhas 640-650 do upstream). Antes, fork dependia de side-effect do setter de nProt em detEvento (removido no refactor PR #78 ao alinhar detEvento.cs com upstream). Sem descEvento, schema XSD e110111_v1.00 rejeita com cStat 493: "Rejeicao: Evento nao atende o Schema XML especifico (Elemento: envEvento/evento[1]/infEvento/detEvento/nProt)" — descEvento e o primeiro elemento da sequence, e validador encontra nProt no lugar errado. Usa NFeTipoEvento.TeNfeCancelamento.Descricao() (retorna "Cancelamento" via [Description] attribute) pra ficar identico ao upstream. Outros consumers da lib que usavam RecepcaoEventoCancelamentoAsync estavam quebrando silenciosamente. Apps que constroem o detEvento manualmente (ex: nfeio-product-invoice via CreateEventToCancel) ja faziam fix proprio fora da lib.
a086671 to
1647088
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Contexto
O fork mantém o método
RecepcaoEventoCancelamentoAsynccom a signature original (assíncrona,long idlote). Antes, ele construía odetEventosemdescEvento— funcionava por side-effect do setter denProtemdetEvento.cs. O setter foi removido no PR #78 deste fork ao alinhardetEvento.cscom upstreamZeusAutomacao/DFe.NETmaster.Sintoma
SEFAZ rejeita o evento de cancelamento (110111) com:
descEventoé o primeiro elemento da sequence no XSDe110111_v1.00.xsd. Sem ele, o validador encontranProtna primeira posição e falha.Fix — refactor estrutural alinhando com upstream
Em vez de simplesmente adicionar
descEvento = "Cancelamento"no público, replico a estrutura do upstream master:RecepcaoEventoCancelamentoAsync→ delegator que hardcodaNFeTipoEvento.TeNfeCancelamentoRecepcaoEventoCancelamentoPorSubstituicaoAsync(NOVO) → suporte a NFe cancelamento por substituição (quando aplicável)RecepcaoEventoCancelamentoAsync(NFeTipoEvento, ...)→ implementação compartilhada, body byte-a-byte idêntico ao upstream master (linhas 627-672 deServicosNFe.cs)A motivação é manter a method body alinhada com upstream pra que diffs futuros não acusem divergência semântica desta linha. A única divergência inerente é o sufixo
Async+ tipo de retornoTask<>+ helperRecepcaoEventoEAssinaAsync(vs upstream syncRecepcaoEvento) — pre-existente do fork, não introduzida aqui.Diff vs upstream master para o body
— idêntico ao upstream.
Test plan
dotnet build NFe.Servicos/NFe.Servicos.csproj— 0 errosnfeio-product-invoice) consegue cancelar NFe em homologação sem cStat 493 (viaCreateEventToCancellegado, não via essa method, mas validação cruzada do schema)Task<>async wrapping)Notas
detEventomanualmente (ex:nfeio-product-invoiceviaCreateEventToCancelemGatewayService.cs) podem continuar fazendo seu próprio fix em código do app — este PR não afeta.RecepcaoEventoCartaCorrecaoAsynceRecepcaoEventoEpecAsyncjá populavamdescEventoexplicitamente.RecepcaoEventoCancelamentoPorSubstituicaoAsyncé nova — adicionada pra simetria com upstream, mesmo que ainda não tenha call-site neste fork.🤖 Generated with Claude Code