Repository navigation
feat: DC-e (modelo 99) e DACE - #202
Open
vision-digital wants to merge 3 commits into
Open
vision-digital wants to merge 3 commits into
vision-digital wants to merge 3 commits into
Conversation
…a e validação Implementa o modelo 99 conforme os leiautes da NT da DC-e e XSDs v1.00. Preserva chave, assinatura XML, serialização e validações do documento fiscal. Embarca os XSDs oficiais, com CaminhoSchemas opcional sem fallback silencioso. Os testes compartilhados com serviços entram no próximo commit.
Implementa autorização, consulta, status e eventos conforme NT e XSDs v1.00 da DC-e. Usa SOAP 1.2 com action no Content-Type e transporte próprio sem bypass de certificado. Mantém o autorizador nacional SEFAZ-PR e os XMLs brutos nos retornos. Inclui toda a suíte DCe.Testes por compartilhar projeto e referências de serviços. Permite CaminhoSchemas opcional sobre os XSDs embutidos.
Implementa DACE completa e resumida conforme Anexo II e leiautes da NT da DC-e. Consome o modelo XML tipado validado pelos XSDs v1.00, sem recalcular valores fiscais. Publica os pacotes com dependência explícita da impressão no núcleo Hercules.NET.DCe. Inclui CI, testes de impressão e catálogo no README. Preserva SOAP 1.2 com action no Content-Type, SEFAZ-PR e CaminhoSchemas opcional.
vision-digital
force-pushed
the
feat/dce-declaracao-conteudo
branch
from
October 29, 2026 17:21
77d6589 to
166705a
Compare
Collaborator
|
Top demais agradeço a contribuição, nessa vou precisar de ajuda @marcosgerene @robertorp @adrbarros |
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.
Adiciona suporte à Declaração de Conteúdo eletrônica (DC-e, modelo 99), instituída pelo Ajuste SINIEF 05/2021, e à sua representação impressa (DACE). É o documento que acompanha o trânsito de bens quando o remetente não é contribuinte do ICMS — pessoa física, marketplace, transportadora ou ECT emitindo em nome do cliente — e que o CT-e passou a referenciar no grupo infDCe (NT 2025.001, já incorporado pelo #188).
A estrutura segue a das famílias MDFe/CTe:
[XmlRoot]/[XmlElement]), enums emFlags/com[XmlEnum], datas comoDateTimeOffsetcom propriedadesProxy*que preservam o deslocamento informado, retornos tipados (retDCe, retConsSitDCe, retConsStatServDCe, retEventoDCe, procDCe, procEventoDCe) e os 22 XSDs oficiais v1.00 embutidos.ExtDCe(ObterXmlString, Assina, Valida, SalvarXmlEmDisco, CarregarDeArquivoXml), montagem da chave de acesso e validador. A assinatura usaAssinaturaDigitaldo DFe.Utils.EnvioStr,RetornoStreRetornoCompletoStr, comoRetornoBasedo MDFe.Hercules.NET.DCeeHercules.NET.Impressao.DCe.QuestPdf(este dependendo do primeiro), no mesmo formato dos pacotes atuais e já nos TFMs do Atualiza para .NET 10, remove warning de APIs obsoletas e corrige certificado A3 CNG #193 (net462, netstandard2.0, net8.0, net10.0; impressão em net8.0 e net10.0). Workflow e README atualizados.Regras do leiaute que a biblioteca aplica, por serem as que mais induzem a erro:
cUFda chave é a UF do emitente (na emissão por transportadora, a UF de origem do frete), e não a do autorizador; o CNPJ da chave é o do signatário. Divergir devolve cStat 220.AAMMda chave sai dodhEmicom o seu próprio deslocamento, nunca do UTC: de UTC, toda emissão entre 00:00 e 03:00 UTC do dia 1º cairia em cStat 502.cOrgaoé o cUF da chave e o usuário emitente vai emCPFUsEmit, com o CPF doemit(comCNPJUsEmitda transportadora a SEFAZ devolve cStat 299).Três pontos diferem do padrão das outras famílias, de propósito:
actiondentro doContent-Type(application/soap+xml; charset=utf-8; action=...), e não em cabeçalho separado. O cliente usa mTLS com o certificado carregado porCertificadoDigitaldo DFe.Utils e deixa a validação do certificado do servidor com a plataforma.CaminhoSchemasopcional. Sem pasta configurada, a validação usa os XSDs do assembly; com pasta, usa os dela (respeitando as subpastas, que têm arquivos homônimos de conteúdo diferente), e pasta inexistente é erro explícito, como no Validador do MDFe.Testes: DCe.Testes (168) e DCe.Dace.QuestPdf.Testes (28), MSTest, em net10.0, rodando no workflow. Cobrem ida e volta XML → objeto → XML idêntico, validação contra os XSDs, chave e DV, preservação do deslocamento em culturas e fusos distintos, assinatura, envelope SOAP e renderização da DACE.
Validado também contra a SEFAZ real, em homologação, a partir desta branch (Linux, .NET 10, certificado A1): status do serviço cStat 107, autorização cStat 100 e consulta pela chave cStat 100, com a DACE gerada do procDCe autorizado. A implementação de origem desta contribuição está em produção, e as regras acima foram apuradas contra a SEFAZ, em homologação, nas 27 UFs.
Fontes: Ajuste SINIEF 05/2021 e NT/esquemas da DC-e publicados pela SEFAZ-PR (https://www.fazenda.pr.gov.br/dce).