Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NT2023.001 v1.40 - obsItem - problemas na geração #1459

Open
leandrosantoslss opened this issue Nov 3, 2023 · 6 comments
Open

NT2023.001 v1.40 - obsItem - problemas na geração #1459

leandrosantoslss opened this issue Nov 3, 2023 · 6 comments
Assignees

Comments

@leandrosantoslss
Copy link

leandrosantoslss commented Nov 3, 2023

boa tarde
estou tendo problemas na geração do xml quando informo a observacao do item, tag dessa ultima NT
Erro ao refletir tipo 'NFe.Classes.NFe'.

Detalhes:System.InvalidOperationException: Erro ao refletir propriedade 'infNFe'. ---> System.InvalidOperationException: Erro ao refletir tipo 'NFe.Classes.Informacoes.infNFe'. ---> System.InvalidOperationException: Erro ao refletir propriedade 'infAdic'. ---> System.InvalidOperationException: Erro ao refletir tipo 'NFe.Classes.Informacoes.Observacoes.infAdic'. ---> System.InvalidOperationException: Erro ao refletir propriedade 'obsCont'. ---> System.InvalidOperationException: Erro ao refletir tipo 'NFe.Classes.Informacoes.Observacoes.obsCont'. ---> System.InvalidOperationException: Tipos 'NFe.Classes.Informacoes.Observacoes.obsCont' e 'NFe.Classes.Informacoes.Detalhe.Observacao.obsCont' usam nome tipo XML, 'obsCont', no espaço para nomes 'http://www.portalfiscal.inf.br/nfe'. Use atributos XML para especificar um espaço para nome e/ou nome XML para o tipo.
O problema é o seguinte
Hoje está gerando o XML assim:

<obsItem>
<obsCont xmlns="Observacao" xCampo="InfoContribuinte">
<xTexto>ICMS monofásico sobre combustíveis cobrado anteriormente conforme Convênio ICMS 199/2022</xTexto>
</obsCont>
</obsItem>

com esse xmlns="Observacao"
e o mesmo não pode ir no XML
na clase obsItem está assim:
[XmlElement(Namespace = nameof(Observacao))]
Por isso gera o xmlns="Observacao" para não dar conflito com o obsCont e obsFisco do infAdic
se tiro o [XmlElement(Namespace = nameof(Observacao))] da o erro reportado acima
moral da história, precisa ter o [XmlElement(Namespace = nameof(Observacao))] para gerar o XML com os valores no lugar correto mais não pode gerar com o xmlns="Observacao"
Tem que ficar assim

<obsItem>
<obsCont xCampo="InfoContribuinte">
<xTexto>ICMS monofásico sobre combustíveis cobrado anteriormente conforme Convênio ICMS 199/2022</xTexto>
</obsCont>
</obsItem>
@marcosgerene
Copy link
Contributor

4cbb69b

image

Eu criei os campos, e o @adeniltonbs adicionou esses namespaces, mas isso foi em maio/2022, achei estranho só agora ter problemas. Por favor poste seu XML completo aqui para que eu possa entender.

image

@leandrosantoslss
Copy link
Author

Segue o arquivo XML gerado com o problema mencionado.

NFe41231129639780000104550010000015001182937402-assinado.zip

@leandrosantoslss
Copy link
Author

@marcosgerene bom dia, chegou a ver alguma coisa referente ao problema que mencionei?
Tentei aqui de várias formas e não consegui, por isso que acabei recorrendo aqui.

@marcosgerene
Copy link
Contributor

@leandrosantoslss

Sim, vi seu XML e a correção está diretamente ligada a sua issue. Fiz referência ao @adeniltonbs aqui e chamei ele no chat dos colaboradores. Como existe um commit dele especificamente adicionando isso estou esperando ele se manifestar.

Por favor, abra um PR desfazendo isso, se não conseguir me avise aqui que eu abro e espero um dos outros colaboradores validar.

@robertorp @danilobreda

@marcosgerene
Copy link
Contributor

A correção aplicada gerou outra issue, então reverti e vou aguardar o posicionalmento dos outros colaboradores.

GustavoSabel pushed a commit to gasola-net/DFe.NET that referenced this issue Nov 27, 2023
@MauricioSuporte
Copy link
Collaborator

Olá @leandrosantoslss,

Pelo que entendi, o problema está relacionado ao uso do atributo [XmlElement(Namespace = nameof(Observacao))], que está adicionando o namespace xmlns="Observacao" no XML gerado, mas o mesmo não deve ser incluído na tag obsItem.

Sugiro uma solução que envolva a utilização de uma estratégia de customização do XmlSerializer para evitar a inserção do namespace indesejado, sem remover completamente o atributo [XmlElement]. Isso pode ser feito utilizando a classe XmlSerializerNamespaces e definindo explicitamente os namespaces que devem ser utilizados.

Aqui está um exemplo de como você poderia ajustar a serialização:

var xmlSerializerNamespaces = new XmlSerializerNamespaces();
xmlSerializerNamespaces.Add(string.Empty, string.Empty); // Remove os namespaces desnecessários

var serializer = new XmlSerializer(typeof(NFe)); // Substitua pelo tipo correspondente
using (var writer = new StreamWriter("output.xml"))
{
    serializer.Serialize(writer, nfeObject, xmlSerializerNamespaces); // nfeObject é o objeto NFe que você está serializando
}

Esse código remove os namespaces indesejados do XML gerado, mantendo a estrutura correta das tags sem inserir o xmlns="Observacao".

Por favor, faça um teste com essa abordagem e veja se o XML é gerado corretamente sem o erro de duplicidade de namespace. Caso ainda enfrente problemas, compartilhe o resultado para que possamos ajustar conforme necessário.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants