Spesometro o comunicazione delle fatture emesse e ricevute
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
ConsoleApp
Spesometro
Tests
.editorconfig
.gitignore
AUTHORS
CHANGES
LICENSE
README.md
Spesometro.sln
appveyor.yml

README.md

Spesometro Build status

Anche detto "Comunicazione delle Fatture Emesse e Ricevute"

Caratteristiche

Utilizzo

using System;
using System.Xml;
using Spesometro.Common;
using Spesometro.FattureEmesse;
using Spesometro.Validators;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var comunicazione = new Spesometro.Spesometro();

            // Lettura da file XML
            using (var file = XmlReader.Create("IT01180680397_DF_00001.xml", new XmlReaderSettings { IgnoreWhitespace = true, IgnoreComments = true }))
            {
                comunicazione.ReadXml(file);
            }

            // La classe Spesometro segue lo schema del tracciato ufficiale, vedi:
            // http://www.agenziaentrate.gov.it/wps/file/Nsilib/Nsi/Strumenti/Specifiche+tecniche/Specifiche+tecniche+comunicazioni/Fatture+e+corrispettivi+ST/Allegato+XML+Dati+Fattura/Formato+XMLdati_fattura.xls
            Console.WriteLine($"Progressivo invio: {comunicazione.Header.ProgressivoInvio}");
            Console.WriteLine($"Numero di destinatari fatture emesse: {comunicazione.FattureEmesse.CessionarioCommittente.Count}");

            // Aggiunta di una fattura per nuovo committente
            var committente = new CessionarioCommittente();
            committente.IdentificativiFiscali.CodiceFiscale = "01180680397";
            committente.AltriDatiIdentificativi.Denominazione = "CIR 2000";
            committente.AltriDatiIdentificativi.Sede.Indirizzo = "Via Sansovino 45";
            committente.AltriDatiIdentificativi.Sede.CAP = "48124";
            committente.AltriDatiIdentificativi.Sede.Comune = "Ravenna";

            var fattura = new DatiFatturaBody();
            fattura.DatiGenerali.Data = DateTime.Now;
            fattura.DatiGenerali.TipoDocumento = "TD01";
            fattura.DatiGenerali.Numero = "345";

            var riepilogo = new DatiRiepilogo { ImponibileImporto = 100, EsigibilitaIVA = "I" };
            riepilogo.DatiIVA.Aliquota = 22;
            riepilogo.DatiIVA.Imposta = 0.22m;

            fattura.DatiRiepilogo.Add(riepilogo);
            committente.DatiFatturaBody.Add(fattura);

            // Sono disponibili validatori per tutte le classi esposte dalla libreria.
            var v = new CessionarioCommittenteDTEValidator();
            var result = v.Validate(committente);

            if (result.IsValid)
            {
                comunicazione.FattureEmesse.CessionarioCommittente.Add(committente);

                // Serializzazione XML 
                using (var w = XmlWriter.Create("IT01180680397_DF_00001.xml", new XmlWriterSettings { Indent = true }))
                {
                    comunicazione.WriteXml(w);
                }
            }
            else
            {
                // Introspezione errori.
                foreach (var error in result.Errors)
                {
                    Console.WriteLine(error.PropertyName);
                    Console.WriteLine(error.ErrorMessage);
                    Console.WriteLine(error.ErrorCode);
                }
            }
            Console.ReadKey();
        }
    }
}

Installazione

Spesometro è un package NuGet quindi tutto quel che serve è eseguire:

	PM> Install-Package Spesometro

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

Licenza

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