Biblioteca para leitura, auditoria e escrita das obrigações acessórias, documentos e escriturações do projeto SPED (Federal, B2G), Operações Financeiras (B2B) e documentos fiscais eletrônicos (NFe, CTe, NFSe).
Devemos implementar melhor versionamento desta obrigação assessória, uma vez que toda vez que uma nova versão é lançada pelo Governo, faz-se necessária clonar as classes para um novo namespace, uma vez que utiliza-se atributos XmlType e XmlRoot para definir o namespace do arquivo XML a ser gerado, conforme exemplo abaixo:
Conforme citado na introdução, a proposta desta Issue consiste em remover tais atributos, definindo o namespace nos métodos IEfdReinfEvt.Serialize() e IEfdReinfEvt.Deserialize().
Partindo desta implementação, a definição do evento em classes ficaria totalmente limpa de atributos:
public partial class R1000 : IEfdReinfEvt, INotifyPropertyChanged
A escrita (serialização) do arquivo XML deverá passar o namespace (ou a verão em algum Enum ?) para que seja adicionado o namespace no ato da escrita:
/// <summary>
/// Serializa o evento da EFD-Reinf para a representação em string do conteúdo do XML.
/// </summary>
/// <returns>string XML value</returns>
public string Serialize()
{
System.IO.StreamReader streamReader = null;
System.IO.MemoryStream memoryStream = null;
try
{
memoryStream = new System.IO.MemoryStream();
sSerializer = DefineSerializer();
using (var xmlwriter = XmlWriter.Create(memoryStream, new XmlWriterSettings()
{
Indent = true,
}))
{
sSerializer.Serialize(xmlwriter, this, --> namespaceAQUI <--);
}
memoryStream.Seek(0L, System.IO.SeekOrigin.Begin);
streamReader = new System.IO.StreamReader(memoryStream);
return streamReader.ReadToEnd();
}
finally
{
if (streamReader != null)
{
streamReader.Dispose();
}
if (memoryStream != null)
{
memoryStream.Dispose();
}
}
}
Devemos implementar melhor versionamento desta obrigação assessória, uma vez que toda vez que uma nova versão é lançada pelo Governo, faz-se necessária clonar as classes para um novo namespace, uma vez que utiliza-se atributos XmlType e XmlRoot para definir o namespace do arquivo XML a ser gerado, conforme exemplo abaixo:
Conforme citado na introdução, a proposta desta Issue consiste em remover tais atributos, definindo o namespace nos métodos IEfdReinfEvt.Serialize() e IEfdReinfEvt.Deserialize().
Partindo desta implementação, a definição do evento em classes ficaria totalmente limpa de atributos:
public partial class R1000 : IEfdReinfEvt, INotifyPropertyChanged
A escrita (serialização) do arquivo XML deverá passar o namespace (ou a verão em algum Enum ?) para que seja adicionado o namespace no ato da escrita: