Giter VIP home page Giter VIP logo

fatturaelettronica.core's Introduction

FatturaElettronica.Core Build Status Dependabot Status

Core services per la fatturazione elettronica sia tra privati che con la pubblica amministrazione italiana.

Questo progetto è ora incorporato in FatturaElettronica.NET v3.0+. Di conseguenza il repository non viene più aggiornato.

Questo package viene usato dai seguenti prodotti:

Licenza

FatturaElettronica.Core è un progetto open source di Nicola Iarocci e Gestionale Amica rilasciato sotto licenza BSD.

Sponsorship

Se usi FatturaElettronica.NET o qualcun altro dei miei progetti in un prodotto che genera profitto, buon senso vorrebbe che tu sponsorizzassi la mia attività open source. Contribuiresti a far sì che il progetto su cui si basa il tuo prodotto rimanga sano, attivo, e mantenuto nel tempo. Avresti inoltre, se lo desideri, un premio in visibilità per te o la tua azienda. Ogni singola sottoscrizione ha un impatto significante.

Scopri come puoi partecipare sulla mia pagina GitHub Sponsors

fatturaelettronica.core's People

Contributors

dependabot-support avatar emazv72 avatar fdipuma avatar frediani avatar mastroxc avatar nicolaiarocci avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

fatturaelettronica.core's Issues

Errore in deserializzazione

In deserializzazione delle fattura elettronica allegata (i dati sono stati resi "dummy") viene restituito l'errore:

"Text" è un XmlNodeType non valido. Riga 1, posizione 2308.

Il codice di deserializzazione è il seguente:

            var fattura = Fattura.CreateInstance(Instance.Privati);

            try
            {
                using (var r = XmlReader.Create(new MemoryStream(File.ReadAllBytes("C:\\Users\\dominin\\Desktop\\ErroreInDeserialize.xml")), new XmlReaderSettings { IgnoreWhitespace = true, IgnoreComments = true, IgnoreProcessingInstructions = true }))
                {
                    fattura.ReadXml(r);
                }
            }
            catch (Exception ex)
            {
            }

Sono presenti diverse fatture che restituiscono l'errore segnalato, validando con AdE e altri validatori risultano corrette. A giudicare dalla linea unica e spazi sembra sia generata come se fosse un tracciato ASCII con output su xml.

Avete già gestito casi simili?
ErroreInDeserialize.zip

JsonSerialization issues

Quoting from #1 (comment)

There are also some issues with json serialization:

  • some internal properties should not be serialized, e.g. Anagrafica1.
  • wrong property name, e.g Header

I nodi XML di tipo ProcessingInstruction dovrebbero essere supportati

Se l'XML contiene un nodo del tipo in oggetto (es: xml-stylesheet), viene sollevata eccezione durante la de-serializzazione. Sarebbe opportuno supportare questo tipo di elementi, anche perchè abbiamo avuto almeno un caso di XML con stylesheet incluso, per altro accettato da SDI.

Errore in deserializzazione

In deserializzazione delle fattura elettronica allegata (i dati sono stati resi "dummy") viene restituito l'errore:

Content cannot be converted to the type System.DateTime. Line 69, position 57.

Analizzando la fattura è presente una data ora consegna pari a:
<DataOraConsegna>221019-01-21T00:00:00</DataOraConsegna>

il cui anno è un po' alto :-); considerando che la fattura è stata inoltrata da SdI al nostro sistema, è possibile cambiare il controllo in TryParse per le date (da valutare se per tutte o no).

In allegato la fattura incriminata: ErroreInDeserialize.zip

Errore in deserializzazione DateTime

Riprendo la issue: #22

Abbiamo ricevuto centinaia di fatture nella forma della issue da SdI (generate da altri software a cui non possiamo risalire), evidentemente non fanno un controllo stretto sulle date, ma non abbiamo modo leggerle con FatturaElettronica; abbiamo la sola necessità di leggere alcuni dati della fattura non finalizzata a riscriverla, sarebbe ideale un setting per evitare gli errori in deserializzazione delle date non well-formed?

Errore Validator Object reference not set to an instance of an object

Ho seguito i passi indicati nel doc di esempio per validare il mio oggetto fattura prima di salvarlo su file.
Ma quando eseguo validator.validate(fattura) va in errore "Object reference not set to an instance of an object".
Ho verificato di avere le ultime versioni disponibili sia dei pacchetti.

Preciso che lavoro in vb.net ma non credo sia questo il problema.

Suggerimenti?

Grazie
Diego

Spazi - Errore in deserializzazione

Sto ricevendo centinaia di fatture con molti spazi vuoti, e continua a verificarsi il problema di seguito:

se riduco il numero di spazi presenti nel nodo funziona correttamente, questo mi ha un po' stupito...

wow, questo è interessante.
il limite è 4095 caratteri che probabilmente è la dimensione di qualche buffer interno della classe 'XmlReader

@nicolaiarocci circa questa problematica sei riuscito a gestirla? Ho ancora il problema con la release 2.0.6.0

Originally posted by @IrvinDominin in #23 (comment)

Exception on deserialization of an official xml sample

The sample is basically the same of the FatturaElettronica.NET home page:
https://github.com/FatturaElettronica/FatturaElettronica.NET
The only difference is that is running inside an ASP.NET Core 2.1 application.

I posted here the issue since the call stack points to the FatturaElettronica.Common.BaseClassSerializable class.

Sample

private Task<bool> ProcessFile(FileInfo fileInfo)
{
    // Usare il factory method CreateInstance() per ottenere una istanza di Fattura.
    var fattura = Fattura.CreateInstance(Instance.PubblicaAmministrazione);

    // Lettura da file XML
    using (var r = XmlReader.Create(fileInfo.FullName, new XmlReaderSettings { IgnoreWhitespace = true, IgnoreComments = true }))
    {
        fattura.ReadXml(r);
    }

    // Ogni file di fattura contiene un array di elementi FatturaElettronicaBody.
    _logger.LogInformation($"Numero di documenti: {fattura.Body.Count}.");
    _logger.LogInformation("Documenti inclusi nel file FatturaPA:");
    foreach (var doc in fattura.Body)
    {
        _logger.LogInformation($"Numero: {doc.DatiGenerali.DatiGeneraliDocumento.Numero}");
        _logger.LogInformation($"Data: {doc.DatiGenerali.DatiGeneraliDocumento.Data.ToShortDateString()}");
        _logger.LogInformation($"Totale documento: {doc.DatiGenerali.DatiGeneraliDocumento.ImportoTotaleDocumento}");
        _logger.LogInformation("");
    }

    // Convalida del documento.
    var validator = new FatturaValidator();
    var result = validator.Validate(fattura);
    _logger.LogInformation(result.IsValid ? "Validated!" : "Xml is not valid");

    // Introspezione errori di convalida.
    foreach (var error in result.Errors)
    {
        _logger.LogError(error.PropertyName);
        _logger.LogError(error.ErrorMessage);
        // Nei casi di errore 2xx e 4xx ErrorCode conterrà il codice errore (es: "00423").
        _logger.LogError(error.ErrorCode);
    }

    if (!result.IsValid)
        return Task.FromResult(false);

    return Task.FromResult(true);
}

The tested file is the one provided as a sample here:
http://www.fatturapa.gov.it/export/fatturazione/it/a-3.htm

Call stack

System.Xml.XmlException: Content cannot be converted to the type System.DateTime. Line 131, position 44. ---> System.FormatException: The string '2017-02-30' is not a valid AllXsd value.
   at System.Xml.Schema.XsdDateTime..ctor(String text, XsdDateTimeFlags kinds)
   at System.Xml.Schema.XmlUntypedStringConverter.FromString(String value, Type destinationType, IXmlNamespaceResolver nsResolver)
   at System.Xml.XmlReader.ReadContentAs(Type returnType, IXmlNamespaceResolver namespaceResolver)
   --- End of inner exception stack trace ---
   at System.Xml.XmlReader.ReadContentAs(Type returnType, IXmlNamespaceResolver namespaceResolver)
   at System.Xml.XmlReader.ReadElementContentAs(Type returnType, IXmlNamespaceResolver namespaceResolver)
   at FatturaElettronica.Common.BaseClassSerializable.ReadXml(XmlReader r)
   at FatturaElettronica.Common.BaseClassSerializable.ReadXmlList(Object propertyValue, Type propertyType, String elementName, XmlReader r)
   at FatturaElettronica.Common.BaseClassSerializable.ReadXml(XmlReader r)
   at FatturaElettronica.Common.BaseClassSerializable.ReadXmlList(Object propertyValue, Type propertyType, String elementName, XmlReader r)
   at FatturaElettronica.Common.BaseClassSerializable.ReadXml(XmlReader r)
   at FatturaElettronica.Common.BaseClassSerializable.ReadXmlList(Object propertyValue, Type propertyType, String elementName, XmlReader r)
   at FatturaElettronica.Common.BaseClassSerializable.ReadXml(XmlReader r)
   at FatturaElettronica.Fattura.ReadXml(XmlReader r)
   at ProcessFile(FileInfo fileInfo) in ...

More Info.

The user profile is configured with en-us settings. My guess is that the FatturaElettronica.Core assumes the localization happens with it-it settings (which rarely happens in case of server deploy such as Windows Service or Linux container).

Suggestion.

Please consider using the Linq to Xml (XElement / XDocument) classes instead of System.Xml set of classes.

Dipendenza da Newtonsoft.Json con versione specifica (10.0.0.0)

Sembra che la versione 0.4.0.0 (scaricata manualmente da nuget) richiede la versione esatta (10.0.0.0) della libreria Newtonsoft.Json.

Questa è l'eccezione che ricevo quando compilo l'eseguibile:

Non è stato possibile caricare il file o l'assembly 'Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' o una delle relative dipendenze. La definizione di manifesto dell'assembly specificato non corrisponde al riferimento all'assembly. (Eccezione da HRESULT: 0x80131040)

Con la versione precedente di FatturaElettronicaCore la 0.2.0.0 non ho mai avuto problemi ad utilizzare l'ultima versione di Newtonsoft.Json, credo sia la 11.0.2.0

Problema di serializzazione XmlOption

Ciao, Nonostante l'aggiunta dell'attributo "JsonIgnore", il la proprietà XmlOption continua a venire serializzata.

Per far si che non venga serializzata sarebbe necessario modificare il file "BaseClassSerializable.cs" aggiungendo l'attributo "XmlIgnore" e modificando la proprietà da public a private

[XmlIgnore]
[JsonIgnore]
private XmlOptions XmlOptions { get; set; }

Ho provato queste modifiche facendo il clone e la soluzione sembra funzionare.

NullReferenceException nel metodo Equals

Se si prova ad eseguire questo codice si ottiene una eccezione System.NullReferenceException.

DatiBeniServizi a = new DatiBeniServizi();
a.DatiIVA.Aliquota = 22;

DatiBeniServizi b = new DatiBeniServizi();
b.Descrizione = "ldakflkjasdf";
b.Importo = 340;
b.DatiIVA.Aliquota = 22;
b.DatiIVA.Imposta = 61.31m;

bool result = a.Equals(b);

Credo che l'eccezione si verifichi nella seguente riga, se v1 == null

if ( v1 != v2 && !v1.Equals(v2)) {

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.