- Lettura e scrittura nel formato XML conforme alle specifiche tecniche ufficiali.
- Convalida offline in osservanza alle specifiche tecniche.
- Supporto sia per fatture elettroniche tra privati che verso la Pubblica Amministrazione.
- Supporto per de/serializzazione JSON.
using FatturaElettronica;
using FatturaElettronica.Common;
using FatturaElettronica.Defaults;
using FatturaElettronica.Validators;
using FatturaElettronica.FatturaElettronicaHeader.CedentePrestatore;
using System;
using System.Xml;
using System.IO;
using Newtonsoft.Json;
namespace DemoApp
{
class Program
{
static void Main(string[] args)
{
var fattura = new Fattura();
// In alternativa usare CreateInstance() per ottenere una istanza già tipizzata.
// Questa chiamata restituisce fattura con CodiceDestinatario = "0000000"
// FormatoTrasmissione = "FPR12":
fattura = Fattura.CreateInstance(Instance.Privati);
// Lettura da file XML
using (var r = XmlReader.Create("IT01234567890_FPA01.xml", new XmlReaderSettings { IgnoreWhitespace = true, IgnoreComments = true }))
{
fattura.ReadXml(r);
}
// Ogni file di fattura contiene un array di elementi FatturaElettronicaBody.
Console.WriteLine($"Numero di documenti: {fattura.FatturaElettronicaBody.Count}.");
Console.WriteLine("Documenti inclusi nel file FatturaPA:");
foreach (var doc in fattura.FatturaElettronicaBody)
{
Console.WriteLine($"Numero: {doc.DatiGenerali.DatiGeneraliDocumento.Numero}");
Console.WriteLine($"Data: {doc.DatiGenerali.DatiGeneraliDocumento.Data.ToShortDateString()}");
Console.WriteLine($"Totale documento: {doc.DatiGenerali.DatiGeneraliDocumento.ImportoTotaleDocumento}");
Console.WriteLine();
}
// Convalida del documento.
var validator = new FatturaValidator();
var result = validator.Validate(fattura);
Console.WriteLine(result.IsValid);
// Introspezione errori di convalida.
foreach (var error in result.Errors)
{
Console.WriteLine(error.PropertyName);
Console.WriteLine(error.ErrorMessage);
// Nei casi di errore 2xx e 4xx ErrorCode conterrà il codice errore (es: "00423").
Console.WriteLine(error.ErrorCode);
}
// Per brevità è possibile usare un extension method.
result = fattura.Validate();
Console.WriteLine(result.IsValid);
// Sono disponibili validatori per ogni classe esposta da FatturaElettronica.
var anagrafica = new DatiAnagraficiCedentePrestatore();
var anagraficaValidator = new DatiAnagraficiCedentePrestatoreValidator();
Console.WriteLine(anagraficaValidator.Validate(anagrafica).IsValid);
// Oppure come già visto:
Console.WriteLine(anagrafica.Validate().IsValid);
// Modifica proprietà Header.
fattura.FatturaElettronicaHeader.CedentePrestatore.DatiAnagrafici.Anagrafica.Denominazione = "Bianchi Srl";
// Modifica proprietà Body
fattura.FatturaElettronicaBody[0].DatiGenerali.DatiGeneraliDocumento.Numero = "12345";
// Serializzazione XML
using (var w = XmlWriter.Create("IT01234567890_FPA01.xml", new XmlWriterSettings { Indent = true }))
{
fattura.WriteXml(w);
}
// Serializzazione JSON.
var json = fattura.ToJson(JsonOptions.Indented);
Console.WriteLine(json);
// Deserializzazione da JSON.
var fatturaFromJson = new Fattura();
fatturaFromJson.FromJson(new JsonTextReader(new StringReader(json)));
}
}
}
In convalida non sono supportati gli errori di tipo 3xx
in quanto risultato dei riscontri fatti da PA sui propri server.
FatturaElettronica supporta .NET Standard v1.1 cosa che le permette di supportare un ampio numero di piattaforme.
FatturaElettronica è su NuGet.
Dalla command line, con .NET Core:
dotnet add package FatturaElettronica
Dalla Package Console, in Visual Studio:
PM> Install-Package FatturaElettronica
Oppure usare il comando equivalente nella UI di Visual Studio.
FatturaElettronica.Extensions aggiunge features a FatturaElettronica.NET, come la lettura e creazione di file firmati digitalmente (.p7m).
FatturaElettronica è un progetto open source di Nicola Iarocci e Gestionale Amica rilasciato sotto licenza BSD.