Ejemplo n.º 1
0
        private void DatiCommittenteFattura(FatturaOrdinaria fattura)
        {
            var rel = fattura.FatturaElettronicaHeader.CessionarioCommittente.DatiAnagrafici;

            if (DatiDestinatario.PersonaGiuridica)
            {
                rel.IdFiscaleIVA.IdPaese  = "IT";
                rel.IdFiscaleIVA.IdCodice = DatiDestinatario.PIVA;
            }

            /* CodiceFiscale=  il campo, se valorizzato, deve contenere il
             *          codice fiscale del cedente/prestatore che sarà composto di 11 caratteri
             *          numerici, se trattasi di persona giuridica, oppure di 16 caratteri
             *          alfanumerici, se trattasi di persona fisica.
             */

            if (DatiDestinatario.PersonaGiuridica)
            {
                rel.Anagrafica.Denominazione = DatiDestinatario.RagioneSociale;
            }
            else
            {
                rel.Anagrafica.Nome    = DatiDestinatario.Nome;
                rel.Anagrafica.Cognome = DatiDestinatario.Cognome;
                rel.CodiceFiscale      = DatiDestinatario.CodiceFiscale;
            }
            var sede = fattura.FatturaElettronicaHeader.CessionarioCommittente.Sede;

            sede.Indirizzo = DatiDestinatario.Indirizzo.IndirizzoConCivico;
            sede.CAP       = DatiDestinatario.Indirizzo.Cap.Trim();
            sede.Comune    = DatiDestinatario.Indirizzo.Comune;
            sede.Provincia = DatiDestinatario.Indirizzo.ProvinciaSigla;
            sede.Nazione   = "IT";
        }
Ejemplo n.º 2
0
        public void WriteHtmlThrowsOnInvalidArguments()
        {
            var f = new FatturaOrdinaria();

            Assert.ThrowsException <ArgumentNullException>(() => f.WriteHtml(outPath: null, xslPath: "xslPath"));
            Assert.ThrowsException <ArgumentNullException>(() => f.WriteHtml(outPath: "fileName", xslPath: null));
        }
Ejemplo n.º 3
0
        public void ReadXMLStream()
        {
            var f = FatturaOrdinaria.CreateInstance(Instance.Privati);

            f.ReadXml(File.OpenRead("Samples/IT02182030391_32.xml"));
            Assert.AreEqual("32", f.FatturaElettronicaHeader.DatiTrasmissione.ProgressivoInvio);
        }
        public void ReadXMLSignedFallbacksToBase64Attempt()
        {
            var f = FatturaOrdinaria.CreateInstance(Instance.Privati);

            f.ReadXmlSigned("Samples/IT02182030391_31.Base64.xml.p7m");
            Assert.AreEqual("31", f.FatturaElettronicaHeader.DatiTrasmissione.ProgressivoInvio);
        }
Ejemplo n.º 5
0
        private static void WriteFattura(FatturaOrdinaria fattura, FatturaHeader item, int idFattura)
        {
            var dir = Path.Combine(Application.StartupPath, "FattureXml");

            if (!Directory.Exists(dir))
            {
                Directory.CreateDirectory(dir);
            }
            Regex illegalInFileName = new Regex(@"[\\/:*?""<>|]");


            string nomeFile = illegalInFileName.Replace(item.Numero + ".xml", "_");
            var    file     = Path.Combine(dir, nomeFile);

            using (var w = XmlWriter.Create(file, new XmlWriterSettings {
                Indent = true
            }))
            {
                fattura.WriteXml(w);
            }
            using (var uof = new UnitOfWork())
            {
                uof.FattureGenerateInvioRepository.Add(new FattureGenerateInvio()
                {
                    NomeFile         = nomeFile,
                    ProgressivoInvio = fattura.FatturaElettronicaHeader.DatiTrasmissione.ProgressivoInvio,
                    FatturaID        = idFattura,
                    FileInviato      = false
                });
                uof.Commit();

                Process.Start("notepad.exe", file);
            }
        }
        public void WriteXmlSignedThrowsOnMissingPfxFile()
        {
            var f = FatturaOrdinaria.CreateInstance(Instance.Privati);

            Assert.ThrowsException <SignatureException>(() =>
                                                        f.WriteXmlSigned("Samples/notreally.pfx", "idsrv3test", "Samples/IT02182030391_32.xml.p7m"));
        }
 public void CreatePrivatiInstance()
 {
     _challenge = FatturaOrdinaria.CreateInstance(Instance.Privati);
     Assert.AreEqual(FormatoTrasmissione.Privati,
                     ((FatturaOrdinaria)_challenge).FatturaElettronicaHeader.DatiTrasmissione.FormatoTrasmissione);
     Assert.AreEqual("0000000",
                     ((FatturaOrdinaria)_challenge).FatturaElettronicaHeader.DatiTrasmissione.CodiceDestinatario);
 }
        public void SerializePubblicaAmministrazioneHeader()
        {
            var f = FatturaOrdinaria.CreateInstance(Instance.PubblicaAmministrazione);

            Assert.IsNull(f.SistemaEmittente);
            SerializeAndAssertRootElementAttributes(f);

            f.SistemaEmittente = "sistema emittente";
            SerializeAndAssertRootElementAttributes(f);
        }
Ejemplo n.º 9
0
        public void ReadXMLSignedStream()
        {
            var f = new FatturaOrdinaria();

            using (var inputStream = new FileStream("Samples/IT02182030391_31.xml.p7m", FileMode.Open, FileAccess.Read))
            {
                f.ReadXmlSigned(inputStream);
            }
            Assert.AreEqual("31", f.FatturaElettronicaHeader.DatiTrasmissione.ProgressivoInvio);
        }
        public void ReadXMLSignedBase64ValidateSignatureDisabled()
        {
            // TODO: ideally we'd need a .p7m with an invalid signature in order
            // to properly test this.

            var f = FatturaOrdinaria.CreateInstance(Instance.Privati);

            f.ReadXmlSignedBase64("Samples/IT02182030391_31.Base64.xml.p7m", validateSignature: false);
            Assert.AreEqual("31", f.FatturaElettronicaHeader.DatiTrasmissione.ProgressivoInvio);
        }
Ejemplo n.º 11
0
        public void NomeCognomeIsIgnored()
        {
            FatturaOrdinaria f = FatturaOrdinaria.CreateInstance(Instance.Privati);
            var anagrafica     = f.FatturaElettronicaHeader.CedentePrestatore.DatiAnagrafici.Anagrafica;

            anagrafica.Nome = "nome";
            var json = f.FatturaElettronicaHeader.CedentePrestatore.DatiAnagrafici.Anagrafica.ToJson();

            Assert.AreEqual("nome", anagrafica.CognomeNome);
            Assert.IsFalse(json.Contains("CognomeNome"));
        }
        private void button1_Click(object sender, EventArgs e)
        {
            var f = FatturaOrdinaria.CreateInstance(Instance.Privati);

            f.FatturaElettronicaHeader.DatiTrasmissione.CodiceDestinatario = "1234567";
            f.FatturaElettronicaHeader.DatiTrasmissione.PECDestinatario    = "pec";
            var form = new FatturaElettronicaForm();

            form.FatturaElettronica = f;
            form.ShowDialog();
        }
        public void WriteXmlSigned()
        {
            if (File.Exists("Samples/IT02182030391_32.xml.p7m"))
            {
                File.Delete("Samples/IT02182030391_32.xml.p7m");
            }
            var f = FatturaOrdinaria.CreateInstance(Instance.Privati);

            f.WriteXmlSigned("Samples/idsrv3test.pfx", "idsrv3test", "Samples/IT02182030391_32.xml.p7m");
            Assert.IsTrue(File.Exists("Samples/IT02182030391_32.xml.p7m"));
        }
        private FatturaOrdinaria Deserialize(string fileName)
        {
            var f = FatturaOrdinaria.CreateInstance(Instance.Privati);

            using (var r = XmlReader.Create(fileName, new() { IgnoreWhitespace = true }))
            {
                f.ReadXml(r);
            }

            return(f);
        }
Ejemplo n.º 15
0
        public void DeserializeAndThenSerializeOfficialPRSample()
        {
            var f = Deserialize("Samples/IT01234567890_FPR02.xml");

            Assert.IsTrue(f.Validate().IsValid);

            var json = f.ToJson();

            var challenge = FatturaOrdinaria.CreateInstance(Instance.Privati);

            challenge.FromJson(new JsonTextReader(new StringReader(json)));
            Assert.IsTrue(challenge.Validate().IsValid);
        }
        public void FromJson()
        {
            var f = FatturaOrdinaria.CreateInstance(Instance.Privati);

            f.ReadXml("Samples/IT02182030391_32.xml");
            Assert.AreEqual("32", f.FatturaElettronicaHeader.DatiTrasmissione.ProgressivoInvio);

            var json      = f.ToJson();
            var challenge = FatturaOrdinaria.CreateInstance(Instance.Privati);

            challenge.FromJson(json);
            Assert.AreEqual("32", challenge.FatturaElettronicaHeader.DatiTrasmissione.ProgressivoInvio);
        }
Ejemplo n.º 17
0
        public void WriteHtml()
        {
            var f       = new FatturaOrdinaria();
            var outFile = Path.GetTempFileName();

            f.ReadXml("Samples/IT02182030391_32.xml");

            f.WriteHtml(outFile, "Samples/fatturaPA_v1.2.1.xsl");

            var bytes = File.ReadAllBytes(outFile);

            Assert.IsTrue(bytes.Length > 2048);
        }
Ejemplo n.º 18
0
        private static FatturaBase CreateInstanceFromPlainXml(Stream stream)
        {
            FatturaBase ret;

            using (var r = XmlReader.Create(stream,
                                            new XmlReaderSettings
            {
                IgnoreWhitespace = true,
                IgnoreComments = true,
                IgnoreProcessingInstructions = true
            }))
            {
                while (r.Read() && !r.LocalName.Contains("Fattura"))
                {
                }

                var att = r.GetAttribute("versione");

                if (att == FormatoTrasmissione.Semplificata)
                {
                    ret = Semplificata.FatturaSemplificata.CreateInstance(Instance.Semplificata);
                }
                else
                {
                    ret = FatturaOrdinaria.CreateInstance(
                        att == FormatoTrasmissione.PubblicaAmministrazione
                            ? Instance.PubblicaAmministrazione
                            : Instance.Privati);
                }
                stream.Position = 0;
            }

            using (var r = XmlReader.Create(stream,
                                            new XmlReaderSettings
            {
                IgnoreWhitespace = true,
                IgnoreComments = true,
                IgnoreProcessingInstructions = true
            }))
            {
                ret.ReadXml(r);
            }

            return(ret);
        }
Ejemplo n.º 19
0
 private void IscrizioneRegistroImpresa(FatturaOrdinaria fattura)
 {
     if (DatiMittente.IscrittoRegistroImprese)
     {
         fattura.FatturaElettronicaHeader.CedentePrestatore.IscrizioneREA.Ufficio         = DatiMittente.UfficioRegistroImp.SiglaProv;
         fattura.FatturaElettronicaHeader.CedentePrestatore.IscrizioneREA.NumeroREA       = DatiMittente.UfficioRegistroImp.NumeroRea;
         fattura.FatturaElettronicaHeader.CedentePrestatore.IscrizioneREA.CapitaleSociale = DatiMittente.UfficioRegistroImp.CapitaleSociale;
         if (DatiMittente.UfficioRegistroImp.SocioUnico)
         {
             fattura.FatturaElettronicaHeader.CedentePrestatore.IscrizioneREA.SocioUnico = "SU";
         }
         if (DatiMittente.UfficioRegistroImp.SocioMultiplo)
         {
             fattura.FatturaElettronicaHeader.CedentePrestatore.IscrizioneREA.SocioUnico = "SM";
         }
         fattura.FatturaElettronicaHeader.CedentePrestatore.IscrizioneREA.StatoLiquidazione = "LN";
     }
 }
Ejemplo n.º 20
0
        private void DatiMittenteFattura(FatturaOrdinaria fattura)
        {
            fattura.FatturaElettronicaHeader.CedentePrestatore.DatiAnagrafici.IdFiscaleIVA.IdPaese  = "IT";
            fattura.FatturaElettronicaHeader.CedentePrestatore.DatiAnagrafici.IdFiscaleIVA.IdCodice = DatiMittente.PIVA;

            if (string.IsNullOrEmpty(DatiMittente.PIVA))
            {
                throw new MessageException("Occorre impostare la PIVA del mittente!");
            }

            /* CodiceFiscale=  il campo, se valorizzato, deve contenere il
             *          codice fiscale del cedente/prestatore che sarà composto di 11 caratteri
             *          numerici, se trattasi di persona giuridica, oppure di 16 caratteri
             *          alfanumerici, se trattasi di persona fisica.
             */

            fattura.FatturaElettronicaHeader.CedentePrestatore.DatiAnagrafici.CodiceFiscale = DatiMittente.PersonaGiuridica ? DatiMittente.PIVA : DatiMittente.CodiceFiscale;
            if (DatiMittente.PersonaGiuridica)
            {
                fattura.FatturaElettronicaHeader.CedentePrestatore.DatiAnagrafici.Anagrafica.Denominazione = DatiMittente.RagioneSociale;
                if (string.IsNullOrEmpty(DatiMittente.RagioneSociale))
                {
                    throw new MessageException("Occorre impostare la Ragione Sociale del mittente!");
                }
            }
            else
            {
                fattura.FatturaElettronicaHeader.CedentePrestatore.DatiAnagrafici.Anagrafica.Nome    = DatiMittente.Nome;
                fattura.FatturaElettronicaHeader.CedentePrestatore.DatiAnagrafici.Anagrafica.Cognome = DatiMittente.Cognome;


                if (string.IsNullOrEmpty(DatiMittente.Nome) || string.IsNullOrEmpty(DatiMittente.Cognome))
                {
                    throw new MessageException("Occorre impostare nome e cognome del mittente!");
                }
            }

            fattura.FatturaElettronicaHeader.CedentePrestatore.DatiAnagrafici.RegimeFiscale = DatiMittente.RegimeFiscale;
            fattura.FatturaElettronicaHeader.CedentePrestatore.Sede.Indirizzo = DatiMittente.Indirizzo.IndirizzoConCivico;
            fattura.FatturaElettronicaHeader.CedentePrestatore.Sede.CAP       = DatiMittente.Indirizzo.Cap;
            fattura.FatturaElettronicaHeader.CedentePrestatore.Sede.Comune    = DatiMittente.Indirizzo.Comune;
            fattura.FatturaElettronicaHeader.CedentePrestatore.Sede.Provincia = DatiMittente.Indirizzo.ProvinciaSigla;
            fattura.FatturaElettronicaHeader.CedentePrestatore.Sede.Nazione   = "IT";
        }
Ejemplo n.º 21
0
        public void ScriviFattura(int idFattura)
        {
            FatturaOrdinaria fattura = FatturaElettronica.Ordinaria.FatturaOrdinaria.CreateInstance(DatiDestinatario.FatturaVersoPA ? Instance.PubblicaAmministrazione : Instance.Privati);

            try
            {
                DatiTrasmissione(fattura);
                DatiMittenteFattura(fattura);
                DatiCommittenteFattura(fattura);
                IscrizioneRegistroImpresa(fattura);


                CheckValidate(new CessionarioCommittenteValidator().Validate(fattura.FatturaElettronicaHeader.CessionarioCommittente));

                CheckValidate(new DatiTrasmissioneValidator().Validate(fattura.FatturaElettronicaHeader.DatiTrasmissione));

                CheckValidate(new DatiAnagraficiCedentePrestatoreValidator().Validate(fattura.FatturaElettronicaHeader.CedentePrestatore.DatiAnagrafici));
            }
            catch (MessageException ex)
            {
                MessageManager.NotificaWarnig(ex.Messages);
                return;
            }

            foreach (var item in FattureList)
            {
                var body = new FatturaElettronicaBody();
                fattura.FatturaElettronicaBody.Add(body);
                try
                {
                    ImpostaDatiSingolaFattura(body, item);
                    var validator = new FatturaOrdinariaValidator();
                    CheckValidate(validator.Validate(fattura));
                }
                catch (MessageException ex)
                {
                    MessageManager.NotificaWarnig(ex.Messages.Replace("Header.CedentePrestatore", " [Mittente Fattura] "));
                    return;
                }


                WriteFattura(fattura, item, idFattura);
            }
        }
Ejemplo n.º 22
0
        public void WriteXML()
        {
            var f = FatturaOrdinaria.CreateInstance(Instance.Privati);

            f.FatturaElettronicaHeader.DatiTrasmissione.ProgressivoInvio = "99";

            var outFile = Path.GetTempFileName();

            f.WriteXml(outFile);

            var challenge = FatturaOrdinaria.CreateInstance(Instance.Privati);

            using (var r = XmlReader.Create(outFile,
                                            new() { IgnoreWhitespace = true, IgnoreComments = true }))
            {
                challenge.ReadXml(r);
            }

            Assert.AreEqual("99", f.FatturaElettronicaHeader.DatiTrasmissione.ProgressivoInvio);
        }
Ejemplo n.º 23
0
        public void InitializeInvoice(FatturaOrdinaria fatturaElettronica, OwnerOptions ownerOptions)
        {
            FatturaElettronicaHeader header = fatturaElettronica.FatturaElettronicaHeader;

            this.ProgressivoInvio    = header.DatiTrasmissione.ProgressivoInvio;
            this.FormatoTrasmissione = header.DatiTrasmissione.FormatoTrasmissione;
            this.CodiceDestinatario  = header.DatiTrasmissione.CodiceDestinatario;
            this.SoggettoEmittente   = header.SoggettoEmittente;
            this.PECDestinatario     = header.DatiTrasmissione.PECDestinatario;

            this.Trasmittente = new CliForModel(header.DatiTrasmissione);

            if (header.TerzoIntermediarioOSoggettoEmittente != null)
            {
                this.IntermediarioOEmittente = new CliForModel(header.TerzoIntermediarioOSoggettoEmittente);
            }

            this.Bodies = new List <BodyModel>();
            foreach (var body in fatturaElettronica.FatturaElettronicaBody)
            {
                this.Bodies.Add(new BodyModel(body, header));
            }
        }
Ejemplo n.º 24
0
        static void Main(string[] args)
        {
            var fattura = FatturaOrdinaria.CreateInstance(Instance.Privati);

            // Lettura diretta da XML (senza necessità di uno stream aperto)
            fattura.ReadXml("IT02182030391_32.xml");
            // Lettura da stream
            fattura.ReadXml(File.OpenRead("IT02182030391_32.xml"));

            // Firma digitale del file xml con file pfx
            fattura.WriteXmlSigned("idsrv3test.pfx", "idsrv3test", "IT02182030391_32.xml.pm7");

            // Legge file con firma digitale. Solleva eccezione se firma invalida.
            fattura.ReadXmlSigned("IT02182030391_31.xml.p7m");
            // Legge file con firma digitale evitando di convalidarne la firma
            fattura.ReadXmlSigned("IT02182030391_31.xml.p7m", validateSignature: false);

            // Scrive direttamente su XML (senza necessità passare uno stream)
            fattura.WriteXml("Copia di IT02182030391_31.xml");

            // Crea HTML della fattura. Usa foglio di stile PA
            // (https://www.fatturapa.gov.it/export/fatturazione/sdi/fatturapa/v1.2.1/fatturaPA_v1.2.1.xsl)
            fattura.WriteHtml("fattura.htm", "fatturaPA_v1.2.1.xsl");

            // Serializza fattura in JSON.
            var json = fattura.ToJson();

            var copia = FatturaOrdinaria.CreateInstance(Instance.Privati);

            // Deserializza da JSON
            copia.FromJson(json);
            // Le due fatture sono uguali.
            Console.WriteLine($"{fattura.FatturaElettronicaHeader.DatiTrasmissione.CodiceDestinatario}");
            Console.WriteLine($"{copia.FatturaElettronicaHeader.DatiTrasmissione.CodiceDestinatario}");

            GetNextFileName();
        }
Ejemplo n.º 25
0
 public void SerializePrivatiHeader()
 {
     SerializeAndAssertRootElementAttributes(FatturaOrdinaria.CreateInstance(Instance.Privati));
 }
        public void ReadXMLSignedBase64ThrowsOnNonSignedFile()
        {
            var f = FatturaOrdinaria.CreateInstance(Instance.Privati);

            Assert.ThrowsException <FormatException>(() => f.ReadXmlSigned("Samples/IT02182030391_32.xml"));
        }
 public void CreatePubblicaAmministrazioneInstance()
 {
     challenge = FatturaOrdinaria.CreateInstance(Instance.PubblicaAmministrazione);
     Assert.AreEqual(FormatoTrasmissione.PubblicaAmministrazione, ((FatturaOrdinaria)challenge).FatturaElettronicaHeader.DatiTrasmissione.FormatoTrasmissione);
 }
Ejemplo n.º 28
0
        private void DatiTrasmissione(FatturaOrdinaria fattura)
        {
            fattura.FatturaElettronicaHeader.DatiTrasmissione.IdTrasmittente.IdPaese  = "IT";
            fattura.FatturaElettronicaHeader.DatiTrasmissione.IdTrasmittente.IdCodice = DatiMittente.CodiceFiscale;
            if (string.IsNullOrEmpty(fattura.FatturaElettronicaHeader.DatiTrasmissione.IdTrasmittente.IdCodice))
            {
                throw new MessageException("Impostare il codice fiscale del mittente. Sistemare i dati mittente fattura");
            }


            fattura.FatturaElettronicaHeader.DatiTrasmissione.ProgressivoInvio = CalcolaProgressivo();

            /*assume valore fisso pari a “FPA12”, se la fattura è
             *                  destinata ad una pubblica amministrazione, oppure “FPR12”, se la fattura è
             *                  destinata ad un soggetto privato.
             */
            fattura.FatturaElettronicaHeader.DatiTrasmissione.FormatoTrasmissione = DatiDestinatario.FatturaVersoPA ? "FPA12" : "FPR12";

            if (!DatiDestinatario.FatturaVersoPA)
            {
                /*se la fattura è destinata ad una pubblica amministrazione, il campo deve
                 *              contenere il codice di 6 caratteri, presente su IndicePA tra le informazioni
                 *              relative al servizio di fatturazione elettronica, associato all’ufficio che,
                 *              all’interno dell’amministrazione destinataria, svolge la funzione di ricezione
                 *              (ed eventualmente lavorazione) della fattura; in alternativa, è possibile
                 *              valorizzare il campo con il codice Ufficio “centrale” o con il valore di default
                 *              “999999”, quando ricorrono le condizioni previste dalle disposizioni della
                 *              circolare interpretativa del Ministero dell’Economia e delle Finanze n.1 del
                 *              31 marzo 2014;
                 *              se la fattura è destinata ad un soggetto privato, il campo deve contenere il
                 *              codice di 7 caratteri che il Sistema di Interscambio ha attribuito a chi, in
                 *              qualità di titolare di un canale di trasmissione diverso dalla PEC abilitato a
                 *              ricevere fatture elettroniche, ne abbia fatto richiesta attraverso l’apposita
                 *              funzionalità presente sul sito www.fatturapa.gov.it; se la fattura deve
                 *              essere recapitata ad un soggetto che intende ricevere le fatture
                 *              elettroniche attraverso il canale PEC, il campo deve essere valorizzato con
                 *              sette zeri (“0000000”) e deve essere valorizzato il campo PECDestinatario
                 *              (1.1.6).
                 */
                if (DatiDestinatario.PecConfig.RicezioneConCodicePec &&
                    !string.IsNullOrEmpty(DatiDestinatario.PecConfig.CodicePec))
                {
                    fattura.FatturaElettronicaHeader.DatiTrasmissione.CodiceDestinatario = DatiDestinatario.PecConfig.CodicePec;

                    if (string.IsNullOrEmpty(DatiDestinatario.PecConfig.CodicePec))
                    {
                        throw new MessageException("Al cliente è impostata ricezione con codice PEC, ma non è impostato. Sistemare il cliente");
                    }
                }
                else
                {
                    fattura.FatturaElettronicaHeader.DatiTrasmissione.CodiceDestinatario = "0000000";
                }
            }
            else
            {
                fattura.FatturaElettronicaHeader.DatiTrasmissione.CodiceDestinatario = "999999";
            }
            fattura.FatturaElettronicaHeader.DatiTrasmissione.ContattiTrasmittente.Email    = DatiMittente.Email;
            fattura.FatturaElettronicaHeader.DatiTrasmissione.ContattiTrasmittente.Telefono = DatiMittente.Telefono;
            if (!DatiDestinatario.FatturaVersoPA && !DatiDestinatario.PecConfig.RicezioneConCodicePec)
            {
                fattura.FatturaElettronicaHeader.DatiTrasmissione.PECDestinatario = DatiDestinatario.PecConfig.EmailPec;

                if (string.IsNullOrEmpty(DatiDestinatario.PecConfig.EmailPec))
                {
                    throw new MessageException("Al cliente non è impostata la Email-PEC. Sistemare il cliente");
                }
            }
        }
Ejemplo n.º 29
0
 public void SerializePubblicaAmministrazioneHeader()
 {
     SerializeAndAssertRootElementAttributes(FatturaOrdinaria.CreateInstance(Instance.PubblicaAmministrazione));
 }
Ejemplo n.º 30
0
        private void ValidateInvoice(FatturaOrdinaria f, string expectedFormat)
        {
            var header = f.FatturaElettronicaHeader;

            // DatiTrasmissione
            Assert.AreEqual("00001", header.DatiTrasmissione.ProgressivoInvio);
            Assert.AreEqual((expectedFormat == FormatoTrasmissione.Privati) ? "0000000" : "AAAAAA", header.DatiTrasmissione.CodiceDestinatario);

            Assert.AreEqual("IT", header.DatiTrasmissione.IdTrasmittente.IdPaese);
            Assert.AreEqual("01234567890", header.DatiTrasmissione.IdTrasmittente.IdCodice);
            Assert.AreEqual((expectedFormat == FormatoTrasmissione.Privati) ? "*****@*****.**" : null, header.DatiTrasmissione.PECDestinatario);

            // CedentePrestatore
            Assert.AreEqual("IT", header.CedentePrestatore.DatiAnagrafici.IdFiscaleIVA.IdPaese);
            Assert.AreEqual("01234567890", header.CedentePrestatore.DatiAnagrafici.IdFiscaleIVA.IdCodice);
            Assert.AreEqual("SOCIETA' ALPHA SRL", header.CedentePrestatore.DatiAnagrafici.Anagrafica.Denominazione);
            Assert.AreEqual("Titolo", header.CedentePrestatore.DatiAnagrafici.Anagrafica.Titolo);
            Assert.AreEqual("RF01", header.CedentePrestatore.DatiAnagrafici.RegimeFiscale);
            Assert.AreEqual("VIALE ROMA 543", header.CedentePrestatore.Sede.Indirizzo);
            Assert.AreEqual("07100", header.CedentePrestatore.Sede.CAP);
            Assert.AreEqual("SASSARI", header.CedentePrestatore.Sede.Comune);
            Assert.AreEqual("IT", header.CedentePrestatore.Sede.Nazione);
            // CessionarioCommittente
            Assert.AreEqual("09876543210", header.CessionarioCommittente.DatiAnagrafici.CodiceFiscale);
            Assert.AreEqual((expectedFormat == FormatoTrasmissione.Privati) ? "BETA GAMMA" : "AMMINISTRAZIONE BETA", header.CessionarioCommittente.DatiAnagrafici.Anagrafica.Denominazione);
            Assert.AreEqual("Titolo", header.CessionarioCommittente.DatiAnagrafici.Anagrafica.Titolo);
            Assert.AreEqual("VIA TORINO 38-B", header.CessionarioCommittente.Sede.Indirizzo);
            Assert.AreEqual("00145", header.CessionarioCommittente.Sede.CAP);
            Assert.AreEqual("ROMA", header.CessionarioCommittente.Sede.Comune);
            Assert.AreEqual("RM", header.CessionarioCommittente.Sede.Provincia);
            Assert.AreEqual("IT", header.CessionarioCommittente.Sede.Nazione);

            var body = f.FatturaElettronicaBody[0];

            // DatiGeneraliDocumento
            Assert.AreEqual("TD01", body.DatiGenerali.DatiGeneraliDocumento.TipoDocumento);
            Assert.AreEqual("EUR", body.DatiGenerali.DatiGeneraliDocumento.Divisa);
            Assert.AreEqual(new DateTime(2014, 12, 18), body.DatiGenerali.DatiGeneraliDocumento.Data);
            Assert.AreEqual("123", body.DatiGenerali.DatiGeneraliDocumento.Numero);
            Assert.AreEqual("LA FATTURA FA RIFERIMENTO AD UNA OPERAZIONE AAAA BBBBBBBBBBBBBBBBBB CCC DDDDDDDDDDDDDDD E FFFFFFFFFFFFFFFFFFFF GGGGGGGGGG HHHHHHH II LLLLLLLLLLLLLLLLL MMM NNNNN OO PPPPPPPPPPP QQQQ RRRR SSSSSSSSSSSSSS", body.DatiGenerali.DatiGeneraliDocumento.Causale[0]);
            Assert.AreEqual("SEGUE DESCRIZIONE CAUSALE NEL CASO IN CUI NON SIANO STATI SUFFICIENTI 200 CARATTERI AAAAAAAAAAA BBBBBBBBBBBBBBBBB", body.DatiGenerali.DatiGeneraliDocumento.Causale[1]);
            // DatiOrdineAcquisto
            Assert.AreEqual(1, body.DatiGenerali.DatiOrdineAcquisto[0].RiferimentoNumeroLinea[0]);
            Assert.AreEqual("66685", body.DatiGenerali.DatiOrdineAcquisto[0].IdDocumento);
            Assert.AreEqual("1", body.DatiGenerali.DatiOrdineAcquisto[0].NumItem);

            if (expectedFormat == FormatoTrasmissione.PubblicaAmministrazione)
            {
                Assert.AreEqual("123abc", body.DatiGenerali.DatiOrdineAcquisto[0].CodiceCUP);
                Assert.AreEqual("456def", body.DatiGenerali.DatiOrdineAcquisto[0].CodiceCIG);
                // DatiContratto
                Assert.AreEqual(1, body.DatiGenerali.DatiContratto[0].RiferimentoNumeroLinea[0]);
                Assert.AreEqual("123", body.DatiGenerali.DatiContratto[0].IdDocumento);
                Assert.AreEqual(new DateTime(2016, 9, 1), body.DatiGenerali.DatiContratto[0].Data.Value);
                Assert.AreEqual("5", body.DatiGenerali.DatiContratto[0].NumItem);
                Assert.AreEqual("123abc", body.DatiGenerali.DatiContratto[0].CodiceCUP);
                Assert.AreEqual("456def", body.DatiGenerali.DatiContratto[0].CodiceCIG);
                // DatiConvenzione
                Assert.AreEqual(1, body.DatiGenerali.DatiConvenzione[0].RiferimentoNumeroLinea[0]);
                Assert.AreEqual("456", body.DatiGenerali.DatiConvenzione[0].IdDocumento);
                Assert.AreEqual("5", body.DatiGenerali.DatiConvenzione[0].NumItem);
                Assert.AreEqual("123abc", body.DatiGenerali.DatiConvenzione[0].CodiceCUP);
                Assert.AreEqual("456def", body.DatiGenerali.DatiConvenzione[0].CodiceCIG);
                // DatiRicezione
                Assert.AreEqual(1, body.DatiGenerali.DatiRicezione[0].RiferimentoNumeroLinea[0]);
                Assert.AreEqual("789", body.DatiGenerali.DatiRicezione[0].IdDocumento);
                Assert.AreEqual("5", body.DatiGenerali.DatiRicezione[0].NumItem);
                Assert.AreEqual("123abc", body.DatiGenerali.DatiRicezione[0].CodiceCUP);
                Assert.AreEqual("456def", body.DatiGenerali.DatiRicezione[0].CodiceCIG);
            }

            // DatiAnagraficiVettore
            Assert.AreEqual("IT", body.DatiGenerali.DatiTrasporto.DatiAnagraficiVettore.IdFiscaleIVA.IdPaese);
            Assert.AreEqual("24681012141", body.DatiGenerali.DatiTrasporto.DatiAnagraficiVettore.IdFiscaleIVA.IdCodice);
            Assert.AreEqual("Trasporto spa", body.DatiGenerali.DatiTrasporto.DatiAnagraficiVettore.Anagrafica.Denominazione);
            // DataOraConsegna
            Assert.AreEqual(new DateTime(2012, 10, 22, 16, 46, 12), body.DatiGenerali.DatiTrasporto.DataOraConsegna);
            // DatiBeniServizi
            Assert.AreEqual(1, body.DatiBeniServizi.DettaglioLinee[0].NumeroLinea);
            Assert.AreEqual("LA DESCRIZIONE DELLA FORNITURA PUO' SUPERARE I CENTO CARATTERI CHE RAPPRESENTAVANO IL PRECEDENTE LIMITE DIMENSIONALE. TALE LIMITE NELLA NUOVA VERSIONE E' STATO PORTATO A MILLE CARATTERI", body.DatiBeniServizi.DettaglioLinee[0].Descrizione);
            Assert.AreEqual(5m, body.DatiBeniServizi.DettaglioLinee[0].Quantita);
            Assert.AreEqual(1m, body.DatiBeniServizi.DettaglioLinee[0].PrezzoUnitario);
            Assert.AreEqual(5m, body.DatiBeniServizi.DettaglioLinee[0].PrezzoTotale);
            Assert.AreEqual(22m, body.DatiBeniServizi.DettaglioLinee[0].AliquotaIVA);
            Assert.AreEqual(2, body.DatiBeniServizi.DettaglioLinee[1].NumeroLinea);
            Assert.AreEqual("FORNITURE VARIE PER UFFICIO", body.DatiBeniServizi.DettaglioLinee[1].Descrizione);
            Assert.AreEqual(10m, body.DatiBeniServizi.DettaglioLinee[1].Quantita);
            Assert.AreEqual(2m, body.DatiBeniServizi.DettaglioLinee[1].PrezzoUnitario);
            Assert.AreEqual(20m, body.DatiBeniServizi.DettaglioLinee[1].PrezzoTotale);
            Assert.AreEqual(22m, body.DatiBeniServizi.DettaglioLinee[1].AliquotaIVA);
            Assert.AreEqual(3, body.DatiBeniServizi.DettaglioLinee[2].NumeroLinea);
            Assert.AreEqual("TUBI RITORNO GASOLIO", body.DatiBeniServizi.DettaglioLinee[2].Descrizione);
            Assert.AreEqual(2m, body.DatiBeniServizi.DettaglioLinee[2].Quantita);
            Assert.AreEqual(5m, body.DatiBeniServizi.DettaglioLinee[2].PrezzoUnitario);
            Assert.AreEqual(6.58m, body.DatiBeniServizi.DettaglioLinee[2].PrezzoTotale);
            Assert.AreEqual(22m, body.DatiBeniServizi.DettaglioLinee[2].AliquotaIVA);
            Assert.AreEqual("SC", body.DatiBeniServizi.DettaglioLinee[2].ScontoMaggiorazione[0].Tipo);
            Assert.AreEqual(-1.71m, body.DatiBeniServizi.DettaglioLinee[2].ScontoMaggiorazione[0].Importo);
            Assert.AreEqual("TUBI RITORNO GASOLIO", body.DatiBeniServizi.DettaglioLinee[2].Descrizione);
            Assert.AreEqual(1m, body.DatiBeniServizi.DettaglioLinee[3].Quantita);
            Assert.AreEqual(5m, body.DatiBeniServizi.DettaglioLinee[3].PrezzoUnitario);
            Assert.AreEqual(4.5m, body.DatiBeniServizi.DettaglioLinee[3].PrezzoTotale);
            Assert.AreEqual(22m, body.DatiBeniServizi.DettaglioLinee[3].AliquotaIVA);
            Assert.AreEqual("SC", body.DatiBeniServizi.DettaglioLinee[3].ScontoMaggiorazione[0].Tipo);
            Assert.AreEqual(10.0m, body.DatiBeniServizi.DettaglioLinee[3].ScontoMaggiorazione[0].Percentuale);
            // DatiRiepilogo
            Assert.AreEqual(22m, body.DatiBeniServizi.DatiRiepilogo[0].AliquotaIVA);
            Assert.AreEqual(36.08m, body.DatiBeniServizi.DatiRiepilogo[0].ImponibileImporto);
            Assert.AreEqual(7.94m, body.DatiBeniServizi.DatiRiepilogo[0].Imposta);
            Assert.AreEqual("D", body.DatiBeniServizi.DatiRiepilogo[0].EsigibilitaIVA);
            // DatiPagamento
            Assert.AreEqual("TP01", body.DatiPagamento[0].CondizioniPagamento);
            Assert.AreEqual("MP01", body.DatiPagamento[0].DettaglioPagamento[0].ModalitaPagamento);
            Assert.AreEqual(new DateTime(2015, 01, 30), body.DatiPagamento[0].DettaglioPagamento[0].DataScadenzaPagamento.Value);
            Assert.AreEqual(36.08m, body.DatiPagamento[0].DettaglioPagamento[0].ImportoPagamento);
        }