Skip to content
This repository has been archived by the owner on Jun 20, 2023. It is now read-only.

Spesometro o comunicazione delle fatture emesse e ricevute

License

Notifications You must be signed in to change notification settings

FatturaElettronica/Spesometro.NET

Repository files navigation

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.

About

Spesometro o comunicazione delle fatture emesse e ricevute

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages