FatturaElettronica / FatturaElettronica.NET

Fattura Elettronica per le aziende e la Pubblica Amministrazione Italiana
https://fatturaelettronicaopensource.org
Other
189 stars 65 forks source link

Nuova validazione in v. 3.0.3 per numeri decimali #277

Closed Elisa1508 closed 4 years ago

Elisa1508 commented 4 years ago

Ho riscontrato un problema nella validazione delle fatture con la nuova versione 3.0.3. Ad esempio con la validazione ottengo il seguente messaggio: "Importo totale documento potrebbe non avere più di 13 cifre in totale, con una tolleranza per 2 decimali. Sono stati trovate 3 cifre e 8 decimali.", ma il tag dell'importo è il seguente:

549.00

Un messaggio analogo viene riportato per tutti gli importi, anche se questi sono nello stesso formato precedente. Ho sbagliato qualcosa?

nicolaiarocci commented 4 years ago

@michaelmairegger can you please take a look at this ticket?

michaelmairegger commented 4 years ago

@nicolaiarocci si, certo

michaelmairegger commented 4 years ago

@Elisa1508 Sarebbe possibile aggiungere il file XML? Se possibile, può anche essere anonimizzato. Per me, la convalida funziona senza problemi in tutte le fatture

Elisa1508 commented 4 years ago

fattura.zip Allego, come richiesto il file xml a cui ho tolto i dati sensibili.

michaelmairegger commented 4 years ago

@Elisa1508 La creazione di uno unit test con questo file non causa errori di convalida.

[TestMethod]
public void Test()
{
    var fattura = FatturaBase.CreateInstanceFromXml(File.OpenRead(@"........"));
    var validator = new FatturaOrdinariaValidator();
    var result = validator.Validate((FatturaOrdinaria)fattura);
    Assert.AreEqual(result.IsValid, true);
}
AlexBream commented 4 years ago

Ho riscontrato un problema nella validazione delle fatture con la nuova versione 3.0.3. Ad esempio con la validazione ottengo il seguente messaggio: "Importo totale documento potrebbe non avere più di 13 cifre in totale, con una tolleranza per 2 decimali. Sono stati trovate 3 cifre e 8 decimali.", ma il tag dell'importo è il seguente:

549.00

Un messaggio analogo viene riportato per tutti gli importi, anche se questi sono nello stesso formato precedente. Ho sbagliato qualcosa?

Anche io ho lo stesso problema, però uso validator.Validate(); inferendo il tipo.

Elisa1508 commented 4 years ago

Il mio codice è il seguente: FatturaOrdinaria fattura = CreaFattura(idFattura); FluentValidation.Results.ValidationResult risultato = fattura.Validate();

Ho provato a modificarlo seguendo l'esempio, ma comunque la fattura non viene validata. Allego l'immagine in cui si vedono due esempi degli importi non validati Immagine 2020-10-06 100026

AlexBream commented 4 years ago

Ciao a tutti, oggi ho trovato il tempo di fare qualche test con il sorgente e ho notato che nella v 3.0.3 sono state aggiunte le validazioni sui decimali, p.e. .ScalePrecision(2, 13).

Il problema che ho riscontrato (nel mio caso) è che i valori sono memorizzati su MS Sql con un tipo Money e Entity Framework che uso per l'accesso ai dati lo trasforma in un Decimal con 4 cifre decimali anche se il valore ha solo due decimali. Per risolvere nel mio caso è bastato forzare questo valore a due decimali con un Decmal.Round(d, 2). per esempio: body.DatiGenerali.DatiGeneraliDocumento.ImportoTotaleDocumento = Decimal.Round(importoTotaleDocumento , 2);

Ciao e ancora complimenti per l'ottimo lavoro.

nicolaiarocci commented 4 years ago

@Elisa1508 il suggerimento del buon @AlexBream (ciao!) ti è tornato utile?

Elisa1508 commented 4 years ago

Scusate, ma ho avuto modo di fare le prove sono ora. Si, il suggerimento di @AlexBream è stato utile e ha risolto il problema. Grazie mille.