Git Product home page Git Product logo

fatturaelettronica.net's Introduction

Fattura Elettronica per piattaforme .NET Build status

Caratteristiche

  • Lettura e scrittura nel formato aderente alle specifiche tecniche (Allegato A, v1.1 del 22 Giugno 2018).
  • Supporta sia fatture elettroniche tra privati che con la Pubblica Amministrazione.
  • Convalida in osservanza delle specifiche tecniche ufficiali.
  • Supporto per de-serializzazione in formato JSON

Utilizzo

using FatturaElettronica;
using FatturaElettronica.Validators;
using FatturaElettronica.Impostazioni;
using FatturaElettronica.FatturaElettronicaHeader.CedentePrestatore;

using System.Xml;
using FatturaElettronica.Common;
using System;

namespace DemoApp
{
    class Program
    {
        static void Main(string[] args)
        {

            // 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("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.Body.Count}.");
            Console.WriteLine("Documenti inclusi nel file FatturaPA:");
            foreach(var doc in fattura.Body)
            {
                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.Header.CedentePrestatore.DatiAnagrafici.Anagrafica.Denominazione = "Bianchi Srl";
            //  Modifica proprietà Body
            fattura.Body[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 = Fattura.CreateInstance(Instance.Privati);
            fatturaFromJson.FromJson(new JsonTextReader(new StringReader(json)));
        }
    }
}

Limitazioni

In convalida non sono supportati gli errori di tipo 3xx in quanto risultato dei riscontri fatti da PA sui propri server.

Portabilità

FatturaElettronica supporta .NET Standard v1.1, cosa che le permette di supportare un ampio numero di piattaforme.

Installazione

FatturaElettronica è su NuGet quindi tutto quel che serve è eseguire:

    PM> Install-Package FatturaElettronica

dalla Package Console, oppure usare il comando equivalente in Visual Studio.

Estensioni

FatturaElettronica.Extensions aggiunge features a FatturaElettronica.NET, come la lettura di file firmati digitalmente (.p7m).

Licenza

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

fatturaelettronica.net's People

Contributors

nicolaiarocci avatar dependabot-support avatar diegomartelli avatar tanogae avatar fabiocalvigioni avatar

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.