public void FatturaValidateAgainstError00472()
        {
            var cedente     = Challenge.FatturaElettronicaHeader.CedentePrestatore.DatiAnagrafici;
            var cessionario = Challenge.FatturaElettronicaHeader.CessionarioCommittente.DatiAnagrafici;
            var id123       = new IdFiscaleIVA {
                IdPaese = "IT", IdCodice = "123"
            };
            var id456 = new IdFiscaleIVA {
                IdPaese = "IT", IdCodice = "456"
            };

            var body = new FatturaElettronicaBody();

            body.DatiGenerali.DatiGeneraliDocumento.TipoDocumento = "TD21";
            Challenge.FatturaElettronicaBody.Add(body);

            cedente.IdFiscaleIVA     = id123;
            cessionario.IdFiscaleIVA = id456;
            Assert.IsNotNull(Challenge.Validate().Errors.FirstOrDefault(x => x.ErrorCode == "00472"));

            cessionario.IdFiscaleIVA = id123;
            Assert.IsNull(Challenge.Validate().Errors.FirstOrDefault(x => x.ErrorCode == "00472"));

            cedente.CodiceFiscale = "123";
            cedente.CodiceFiscale = "456";
            Assert.IsNotNull(Challenge.Validate().Errors.FirstOrDefault(x => x.ErrorCode == "00472"));

            cedente.CodiceFiscale = "123";
            Assert.IsNotNull(Challenge.Validate().Errors.FirstOrDefault(x => x.ErrorCode == "00472"));

            body.DatiGenerali.DatiGeneraliDocumento.TipoDocumento = "TD01";
            Assert.IsNull(Challenge.Validate().Errors.FirstOrDefault(x => x.ErrorCode == "00472"));
        }
        public void FatturaValidateAgainstError00475()
        {
            var tipiDocumento  = new[] { "TD16", "TD17", "TD18", "TD19", "TD20", "TD22", "TD23" };
            var datiAnagrafici = Challenge.FatturaElettronicaHeader.CessionarioCommittente.DatiAnagrafici;
            var idEmpty        = new IdFiscaleIVA();
            var id123          = new IdFiscaleIVA {
                IdPaese = "IT", IdCodice = "123"
            };

            foreach (var tipoDocumento in tipiDocumento)
            {
                Challenge.FatturaElettronicaBody.Clear();
                var body = new FatturaElettronicaBody();
                body.DatiGenerali.DatiGeneraliDocumento.TipoDocumento = tipoDocumento;
                Challenge.FatturaElettronicaBody.Add(body);

                datiAnagrafici.IdFiscaleIVA = idEmpty;
                var result = Challenge.Validate();
                Assert.IsNotNull(result.Errors.FirstOrDefault(x => x.ErrorCode == "00475"));

                datiAnagrafici.IdFiscaleIVA = id123;
                result = Challenge.Validate();
                Assert.IsNull(result.Errors.FirstOrDefault(x => x.ErrorCode == "00475"));
            }
        }
        public void FatturaValidateAgainstError00473()
        {
            var tipiDocumento = new[] { "TD17", "TD18", "TD19" };
            var cedente       = Challenge.FatturaElettronicaHeader.CedentePrestatore.DatiAnagrafici;

            cedente.IdFiscaleIVA = new() { IdPaese = "IT" };
            var body = new FatturaElettronicaBody();

            Challenge.FatturaElettronicaBody.Add(body);

            foreach (var tipoDocumento in tipiDocumento)
            {
                body.DatiGenerali.DatiGeneraliDocumento.TipoDocumento = tipoDocumento;
                Assert.IsNotNull(Challenge.Validate().Errors.FirstOrDefault(x => x.ErrorCode == "00473"));
            }

            body.DatiGenerali.DatiGeneraliDocumento.TipoDocumento = "TD01";
            Assert.IsNull(Challenge.Validate().Errors.FirstOrDefault(x => x.ErrorCode == "00473"));

            cedente.IdFiscaleIVA = new() { IdPaese = "XX" };
            foreach (var tipoDocumento in tipiDocumento)
            {
                body.DatiGenerali.DatiGeneraliDocumento.TipoDocumento = tipoDocumento;
                Assert.IsNull(Challenge.Validate().Errors.FirstOrDefault(x => x.ErrorCode == "00473"));
            }
        }

        [TestMethod]
        public void BodyValidateAgainstError00443()
        {
            var body = new FatturaElettronicaBody();

            body.DatiBeniServizi.DettaglioLinee.Add(new() { AliquotaIVA = 1m });
            body.DatiBeniServizi.DettaglioLinee.Add(new() { AliquotaIVA = 2m });
            body.DatiGenerali.DatiGeneraliDocumento.DatiCassaPrevidenziale.Add(
                new() { AliquotaIVA = 3m });
            body.DatiBeniServizi.DatiRiepilogo.Add(new() { AliquotaIVA = 1m });
            Challenge.FatturaElettronicaBody.Add(body);

            var result = Validator.Validate(Challenge);

            Assert.IsNotNull(result.Errors.FirstOrDefault(x => x.ErrorCode == "00443"));

            body.DatiBeniServizi.DatiRiepilogo.Add(new() { AliquotaIVA = 2m });
            Assert.IsNotNull(result.Errors.FirstOrDefault(x => x.ErrorCode == "00443"));

            body.DatiBeniServizi.DatiRiepilogo.Add(new() { AliquotaIVA = 3m });
            result = Validator.Validate(Challenge);
            Assert.IsNull(result.Errors.FirstOrDefault(x => x.ErrorCode == "00443"));

            body.DatiBeniServizi.DatiRiepilogo.Add(new() { AliquotaIVA = 4m });
            result = Validator.Validate(Challenge);
            Assert.IsNotNull(result.Errors.FirstOrDefault(x => x.ErrorCode == "00443"));
        }
Esempio n. 5
0
        private void AggiungiRiepilogoIva(FatturaElettronicaBody body, FatturaHeader itemFattura)
        {
            foreach (var itemIva in itemFattura.Righe.ToList().GroupBy(a => a.AliquotaIVA).ToList())
            {
                var riepilogoLinea = new FatturaElettronica.Ordinaria.FatturaElettronicaBody.DatiBeniServizi.DatiRiepilogo();
                riepilogoLinea.AliquotaIVA       = itemIva.Key;
                riepilogoLinea.ImponibileImporto = itemIva.Sum(a => a.PrezzoTotale);
                riepilogoLinea.Imposta           = riepilogoLinea.ImponibileImporto * (decimal)itemIva.Key / (decimal)100;

                body.DatiBeniServizi.DatiRiepilogo.Add(riepilogoLinea);
            }
        }
Esempio n. 6
0
        private bool BodyValidateAgainstError00444(FatturaElettronicaBody body)
        {
            var cassaPrevidenziale = body.DatiGenerali.DatiGeneraliDocumento.DatiCassaPrevidenziale;
            var dettaglioLinee     = body.DatiBeniServizi.DettaglioLinee;

            var nature = dettaglioLinee.Select(x => x.Natura)
                         .Concat(cassaPrevidenziale.Select(x => x.Natura))
                         .ToArray();

            var riepilogo = body.DatiBeniServizi.DatiRiepilogo.Select(x => x.Natura);

            return(nature.All(natura => riepilogo.Contains(natura)));
        }
        private static bool BodyValidateAgainstError00443(FatturaElettronicaBody body)
        {
            var cassaPrevidenziale = body.DatiGenerali.DatiGeneraliDocumento.DatiCassaPrevidenziale;
            var dettaglioLinee     = body.DatiBeniServizi.DettaglioLinee;

            var aliquote = dettaglioLinee.Select(x => x.AliquotaIVA)
                           .Concat(cassaPrevidenziale.Select(x => x.AliquotaIVA))
                           .ToArray();

            var riepilogo = body.DatiBeniServizi.DatiRiepilogo.Select(x => x.AliquotaIVA);

            return(aliquote.All(aliquota => riepilogo.Contains(aliquota)) &&
                   riepilogo.All(aliquota => aliquote.Contains(aliquota)));
        }
Esempio n. 8
0
        private void AddInvoiceBodyToPDFPage(FatturaElettronicaBody _FatturaElettronicaBody, Document _Document, int _PageNumber)
        {
            AddGeneralDocumentData(_FatturaElettronicaBody.DatiGenerali.DatiGeneraliDocumento, _Document);

            AddExternalDocumentReferences(_FatturaElettronicaBody.DatiGenerali, _Document);

            List <DettaglioLinee> _InvoiceDetails         = _FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee;
            List <DatiRiepilogo>  _Summeries              = _FatturaElettronicaBody.DatiBeniServizi.DatiRiepilogo;
            List <DatiPagamento>  _PaymentInformationList = _FatturaElettronicaBody.DatiPagamento;

            TryAddInvoiceDetails(_InvoiceDetails, _Document);
            TryAddGeneralSummery(_Summeries, _Document);
            TryAddPaymentInformation(_PaymentInformationList, _Document);
            TryAddCostSummery(_Summeries, _FatturaElettronicaBody.DatiGenerali.DatiGeneraliDocumento.Divisa, _Document);
        }
        public void BodyValidateAgainstError00444()
        {
            var body = new FatturaElettronicaBody();

            body.DatiBeniServizi.DettaglioLinee.Add(new DettaglioLinee {
                Natura = "N1"
            });
            body.DatiBeniServizi.DettaglioLinee.Add(new DettaglioLinee {
                Natura = "N2"
            });
            body.DatiGenerali.DatiGeneraliDocumento.DatiCassaPrevidenziale.Add(
                new DatiCassaPrevidenziale {
                Natura = "N3"
            });
            body.DatiBeniServizi.DatiRiepilogo.Add(new DatiRiepilogo {
                Natura = "N1"
            });
            Challenge.FatturaElettronicaBody.Add(body);

            var result = Validator.Validate(Challenge);

            Assert.IsNotNull(result.Errors.FirstOrDefault(x => x.ErrorCode == "00444"));

            body.DatiBeniServizi.DatiRiepilogo.Add(new DatiRiepilogo {
                Natura = "N2"
            });
            Assert.IsNotNull(result.Errors.FirstOrDefault(x => x.ErrorCode == "00444"));

            body.DatiBeniServizi.DatiRiepilogo.Add(new DatiRiepilogo {
                Natura = "N3"
            });
            result = Validator.Validate(Challenge);
            Assert.IsNull(result.Errors.FirstOrDefault(x => x.ErrorCode == "00444"));

            body.DatiBeniServizi.DettaglioLinee.Add(new DettaglioLinee {
                Natura = null
            });
            result = Validator.Validate(Challenge);
            Assert.IsNotNull(result.Errors.FirstOrDefault(x => x.ErrorCode == "00444"));

            body.DatiBeniServizi.DatiRiepilogo.Add(new DatiRiepilogo {
                Natura = null
            });
            result = Validator.Validate(Challenge);
            Assert.IsNull(result.Errors.FirstOrDefault(x => x.ErrorCode == "00444"));
        }
Esempio n. 10
0
        private void AggiungiRighe(FatturaElettronicaBody body, FatturaHeader item)
        {
            foreach (var itemLine in item.Righe)
            {
                var linea = new FatturaElettronica.Ordinaria.FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee();

                linea.Descrizione    = itemLine.Descrizione;
                linea.Quantita       = itemLine.QTA;
                linea.UnitaMisura    = "NR";
                linea.PrezzoUnitario = itemLine.PrezzoUnitario;
                linea.PrezzoTotale   = itemLine.PrezzoTotale;
                linea.AliquotaIVA    = itemLine.AliquotaIVA;

                linea.NumeroLinea = body.DatiBeniServizi.DettaglioLinee.Count + 1;

                body.DatiBeniServizi.DettaglioLinee.Add(linea);
            }
        }
Esempio n. 11
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);
            }
        }
        public void FatturaValidateAgainstError00471()
        {
            var tipiDocumento = new[] { "TD16", "TD17", "TD18", "TD19", "TD20" };
            var cedente       = Challenge.FatturaElettronicaHeader.CedentePrestatore.DatiAnagrafici;
            var cessionario   = Challenge.FatturaElettronicaHeader.CessionarioCommittente.DatiAnagrafici;
            var id123         = new IdFiscaleIVA {
                IdPaese = "IT", IdCodice = "123"
            };
            var id456 = new IdFiscaleIVA {
                IdPaese = "IT", IdCodice = "456"
            };

            foreach (var tipoDocumento in tipiDocumento)
            {
                var body = new FatturaElettronicaBody();
                body.DatiGenerali.DatiGeneraliDocumento.TipoDocumento = tipoDocumento;
                Challenge.FatturaElettronicaBody.Add(body);

                cedente.CodiceFiscale     = null;
                cessionario.CodiceFiscale = null;

                cedente.IdFiscaleIVA     = id123;
                cessionario.IdFiscaleIVA = id123;
                var result = Challenge.Validate();
                Assert.IsNotNull(result.Errors.FirstOrDefault(x => x.ErrorCode == "00471"));

                cedente.IdFiscaleIVA = id456;
                result = Challenge.Validate();
                Assert.IsNull(result.Errors.FirstOrDefault(x => x.ErrorCode == "00471"));

                cedente.IdFiscaleIVA      = new();
                cessionario.IdFiscaleIVA  = new();
                cedente.CodiceFiscale     = "123";
                cessionario.CodiceFiscale = "123";
                result = Challenge.Validate();
                Assert.IsNotNull(result.Errors.FirstOrDefault(x => x.ErrorCode == "00471"));

                cessionario.CodiceFiscale = "456";
                result = Challenge.Validate();
                Assert.IsNull(result.Errors.FirstOrDefault(x => x.ErrorCode == "00471"));
            }
        }
Esempio n. 13
0
        public BodyModel(FatturaElettronicaBody body,
                         FatturaElettronicaHeader header)
        {
            if (body != null)
            {
                this.Simplified = false;

                this.TipoDocumento           = body.DatiGenerali.DatiGeneraliDocumento.TipoDocumento;
                this.Divisa                  = body.DatiGenerali.DatiGeneraliDocumento.Divisa;
                this.Data                    = body.DatiGenerali.DatiGeneraliDocumento.Data;
                this.Numero                  = body.DatiGenerali.DatiGeneraliDocumento.Numero;
                this.BolloVirtuale           = body.DatiGenerali.DatiGeneraliDocumento.DatiBollo.BolloVirtuale;
                this.ImportoBollo            = body.DatiGenerali.DatiGeneraliDocumento.DatiBollo.ImportoBollo;
                this.ImportoTotaleDocumento  = body.DatiGenerali.DatiGeneraliDocumento.ImportoTotaleDocumento;
                this.Arrotondamento          = body.DatiGenerali.DatiGeneraliDocumento.Arrotondamento;
                this.Art73                   = body.DatiGenerali.DatiGeneraliDocumento.Art73;
                this.NumeroFatturaPrincipale = body.DatiGenerali.FatturaPrincipale.NumeroFatturaPrincipale;
                this.DataFatturaPrincipale   = body.DatiGenerali.FatturaPrincipale.DataFatturaPrincipale;

                this.MezzoTrasporto      = body.DatiGenerali.DatiTrasporto.MezzoTrasporto;
                this.CausaleTrasporto    = body.DatiGenerali.DatiTrasporto.CausaleTrasporto;
                this.NumeroColli         = body.DatiGenerali.DatiTrasporto.NumeroColli;
                this.Descrizione         = body.DatiGenerali.DatiTrasporto.Descrizione;
                this.UnitaMisuraPeso     = body.DatiGenerali.DatiTrasporto.UnitaMisuraPeso;
                this.PesoLordo           = body.DatiGenerali.DatiTrasporto.PesoLordo;
                this.PesoNetto           = body.DatiGenerali.DatiTrasporto.PesoNetto;
                this.DataOraRitiro       = body.DatiGenerali.DatiTrasporto.DataOraRitiro;
                this.DataInizioTrasporto = body.DatiGenerali.DatiTrasporto.DataInizioTrasporto;
                this.TipoResa            = body.DatiGenerali.DatiTrasporto.TipoResa;
                this.DataOraConsegna     = body.DatiGenerali.DatiTrasporto.DataOraConsegna;

                if (body.DatiGenerali.DatiTrasporto != null &&
                    body.DatiGenerali.DatiTrasporto.IndirizzoResa != null &&
                    body.DatiGenerali.DatiTrasporto.IndirizzoResa.CAP != null)
                {
                    this.LuogoResa = new SediModel(body.DatiGenerali.DatiTrasporto.IndirizzoResa);
                }

                int causaleLength = body.DatiGenerali.DatiGeneraliDocumento.Causale.Count;
                if (causaleLength > 0)
                {
                    this.Causale = new List <CausaleModel>();
                }
                foreach (var c in body.DatiGenerali.DatiGeneraliDocumento.Causale)
                {
                    this.Causale.Add(new CausaleModel(c));
                }

                int ddtLength = body.DatiGenerali.DatiDDT.Count;
                if (ddtLength > 0)
                {
                    this.DatiDDT = new List <DatiDDTModel>();
                }
                foreach (var ddt in body.DatiGenerali.DatiDDT)
                {
                    this.DatiDDT.Add(new DatiDDTModel(ddt));
                }

                int cassaLength = body.DatiGenerali.DatiGeneraliDocumento.DatiCassaPrevidenziale.Count;
                if (cassaLength > 0)
                {
                    this.DatiCassaPrevidenziale = new List <DatiCassaPrevidenzialeModel>();
                }
                foreach (var cassa in body.DatiGenerali.DatiGeneraliDocumento.DatiCassaPrevidenziale)
                {
                    this.DatiCassaPrevidenziale.Add(new DatiCassaPrevidenzialeModel(cassa));
                }

                // ---DatiModel---
                int acquistoLength    = body.DatiGenerali.DatiOrdineAcquisto.Count;
                int contrattoLength   = body.DatiGenerali.DatiContratto.Count;
                int convenzioneLength = body.DatiGenerali.DatiConvenzione.Count;
                int ricezioneLength   = body.DatiGenerali.DatiRicezione.Count;
                int fCollegateLength  = body.DatiGenerali.DatiFattureCollegate.Count;
                if (acquistoLength > 0 ||
                    contrattoLength > 0 ||
                    convenzioneLength > 0 ||
                    ricezioneLength > 0 ||
                    fCollegateLength > 0
                    )
                {
                    this.Dati = new List <DatiModel>();
                }

                foreach (var acquisto in body.DatiGenerali.DatiOrdineAcquisto)
                {
                    this.Dati.Add(new DatiModel(acquisto));
                }

                foreach (var contratto in body.DatiGenerali.DatiContratto)
                {
                    this.Dati.Add(new DatiModel(contratto));
                }

                foreach (var convenzione in body.DatiGenerali.DatiConvenzione)
                {
                    this.Dati.Add(new DatiModel(convenzione));
                }

                foreach (var ricezione in body.DatiGenerali.DatiRicezione)
                {
                    this.Dati.Add(new DatiModel(ricezione));
                }

                foreach (var collegate in body.DatiGenerali.DatiFattureCollegate)
                {
                    this.Dati.Add(new DatiModel(collegate));
                }

                //---End DatiModel---

                this.DatiPagamento = new List <DatiPagamentoModel>();
                int pagamentoLength = body.DatiPagamento.Count;
                if (pagamentoLength > 0)
                {
                    foreach (var pagamento in body.DatiPagamento)
                    {
                        this.DatiPagamento.Add(new DatiPagamentoModel(pagamento));
                    }
                }
                else
                {
                    var defaultDettaglio = new DettaglioPagamentoModel
                                           (
                        "MP05",
                        body.DatiGenerali.DatiGeneraliDocumento.ImportoTotaleDocumento ?? default(int),
                        body.DatiGenerali.DatiGeneraliDocumento.Data
                                           );

                    var defaultPagamento = new DatiPagamentoModel
                                           (
                        "TP02",
                        defaultDettaglio
                                           );

                    this.DatiPagamento.Add(defaultPagamento);
                }

                this.DatiPagamento[0].Active = true;

                int riepilogoLength = body.DatiBeniServizi.DatiRiepilogo.Count;
                if (riepilogoLength > 0)
                {
                    this.DatiRiepilogo = new List <DatiRiepilogoModel>();
                }
                foreach (var riepilogo in body.DatiBeniServizi.DatiRiepilogo)
                {
                    this.DatiRiepilogo.Add(new DatiRiepilogoModel(riepilogo));
                }

                int salLength = body.DatiGenerali.DatiSAL.Count;
                if (salLength > 0)
                {
                    this.DatiSAL = new List <DatiSALModel>();
                }
                foreach (var sal in body.DatiGenerali.DatiSAL)
                {
                    this.DatiSAL.Add(new DatiSALModel(sal));
                }

                int lineeLength = body.DatiBeniServizi.DettaglioLinee.Count;
                if (lineeLength > 0)
                {
                    this.DettaglioLinee = new List <DettaglioLineeModel>();
                }
                foreach (var linea in body.DatiBeniServizi.DettaglioLinee)
                {
                    this.DettaglioLinee.Add(new DettaglioLineeModel(linea));
                }

                int ritenutaLength = body.DatiGenerali.DatiGeneraliDocumento.DatiRitenuta.Count;
                if (ritenutaLength > 0)
                {
                    this.DatiRitenuta = new List <DatiRitenutaModel>();

                    foreach (var r in body.DatiGenerali.DatiGeneraliDocumento.DatiRitenuta)
                    {
                        this.DatiRitenuta.Add(new DatiRitenutaModel(r));
                    }
                }

                DettaglioPagamento dettaglioPagamento = new DettaglioPagamento();
                if (body.DatiPagamento.Count > 0 && body.DatiPagamento[0].DettaglioPagamento.Count > 0)
                {
                    dettaglioPagamento = body.DatiPagamento[0].DettaglioPagamento[0];
                }

                this.CedentePrestatore = new CliForModel(header.CedentePrestatore, header.Rappresentante, dettaglioPagamento);

                this.CessionarioCommittente = new CliForModel(header.CessionarioCommittente);

                if (body.DatiGenerali.DatiTrasporto.DatiAnagraficiVettore != null)
                {
                    this.Vettore = new CliForModel(body.DatiGenerali.DatiTrasporto.DatiAnagraficiVettore);
                }
            }
        }
Esempio n. 14
0
        private void ImpostaDatiSingolaFattura(FatturaElettronicaBody body, FatturaHeader itemFattura)
        {
            body.DatiGenerali.DatiGeneraliDocumento.TipoDocumento = itemFattura.TipoDocumento.ToString();
            body.DatiGenerali.DatiGeneraliDocumento.Divisa        = "EUR";
            body.DatiGenerali.DatiGeneraliDocumento.Numero        = itemFattura.Numero;
            body.DatiGenerali.DatiGeneraliDocumento.Data          = itemFattura.Data;

            if (DatiMittente.SoggettoARitenuta)
            {
                if (DatiMittente.PersonaGiuridica)
                {
                    body.DatiGenerali.DatiGeneraliDocumento.DatiRitenuta.Add(new DatiRitenuta()
                    {
                        TipoRitenuta = "RT02"
                    });
                }
                else
                {
                    body.DatiGenerali.DatiGeneraliDocumento.DatiRitenuta.Add(new DatiRitenuta()
                    {
                        TipoRitenuta = "RT01"
                    });
                }
                /*[2.1.1.5.3] AliquotaRitenuta TODO*/
            }

            /*[2.1.1.6] DatiBollo sulla tipologia di documento/operazione è previsto l’assolvimento
             *                          dell’imposta di bollo*/

            body.DatiGenerali.DatiGeneraliDocumento.ImportoTotaleDocumento = itemFattura.ImportoTotaleDocumento;
            if (itemFattura.TipoDocumento == enTipoDocumento.TD04)
            {
                //body.DatiGenerali.DatiFattureCollegate.Add(new FatturaElettronica.FatturaElettronicaBody.DatiGenerali.DatiFattureCollegate() { IdDocumento})
            }
            /*DatiDDT*/
            AggiungiRighe(body, itemFattura);
            AggiungiRiepilogoIva(body, itemFattura);

            var datiPg = new FatturaElettronica.Ordinaria.FatturaElettronicaBody.DatiPagamento.DatiPagamento();

            datiPg.CondizioniPagamento = "TP02";
            var dettPg = new FatturaElettronica.Ordinaria.FatturaElettronicaBody.DatiPagamento.DettaglioPagamento();

            switch (itemFattura.ModalitaPagamento)
            {
            case enTipoPagamento.Contanti:
                dettPg.ModalitaPagamento = "MP01";
                break;

            case enTipoPagamento.Bonifico:
                dettPg.ModalitaPagamento = "MP05";
                if (string.IsNullOrEmpty(DatiMittente.IBAN))
                {
                    throw new MessageException("Codice iban mancante del mandante!");
                }
                dettPg.IBAN = DatiMittente.IBAN;
                break;

            case enTipoPagamento.Contrassegno:
                throw new MessageException("Pagamento contrassegno ancora non gestito");

            default:
                throw new MessageException("Manca il tipo pagamento");
            }

            dettPg.ImportoPagamento = body.DatiBeniServizi.DatiRiepilogo.Select(a => a.ImponibileImporto + a.Imposta).Sum();

            datiPg.DettaglioPagamento.Add(dettPg);
            body.DatiPagamento.Add(datiPg);
        }
Esempio n. 15
0
        private bool genera_xml(string percorso, string nome_file)
        {
            bool esito = false;

            try
            {
                FatturaElettronicaXMLNodes nodoPrincipale     = new FatturaElettronicaXMLNodes();
                FatturaElettronicaHeader   overviewHeader     = new FatturaElettronicaHeader();
                DatiTrasmissione           datiTrasmissione   = new DatiTrasmissione();
                IdTrasmittente             idTrasmittente_111 = new IdTrasmittente();
                idTrasmittente_111.IdPaese           = "IT";
                idTrasmittente_111.IdCodice          = "01234567890";
                datiTrasmissione.IdTrasmittente      = idTrasmittente_111;
                datiTrasmissione.ProgressivoInvio    = "00001";
                datiTrasmissione.FormatoTrasmissione = "FPR12";
                datiTrasmissione.CodiceDestinatario  = "ABC1234";
                ContattiTrasmittente contattiTrasmittente_115 = new ContattiTrasmittente();
                contattiTrasmittente_115.Telefono     = "";
                contattiTrasmittente_115.Email        = "";
                datiTrasmissione.ContattiTrasmittente = contattiTrasmittente_115;
                datiTrasmissione.PECDestinatario      = "";
                overviewHeader.DatiTrasmissione       = datiTrasmissione;
                CedentePrestatore cedentePrestatore  = new CedentePrestatore();
                DatiAnagrafici    datiAnagrafici_121 = new DatiAnagrafici();
                IdFiscaleIVA      idFiscaleIVA_121   = new IdFiscaleIVA();
                idFiscaleIVA_121.IdPaese         = "IT";
                idFiscaleIVA_121.IdCodice        = "01234567890";
                datiAnagrafici_121.IdFiscaleIVA  = idFiscaleIVA_121;
                datiAnagrafici_121.CodiceFiscale = "";
                Anagrafica anagrafica_121 = new Anagrafica();
                anagrafica_121.Denominazione            = "SOCIETA' ALPHA SRL";
                anagrafica_121.Nome                     = "";
                anagrafica_121.Cognome                  = "";
                anagrafica_121.Titolo                   = "";
                anagrafica_121.CodEORI                  = "";
                datiAnagrafici_121.Anagrafica           = anagrafica_121;
                datiAnagrafici_121.AlboProfessionale    = "";
                datiAnagrafici_121.ProvinciaAlbo        = "";
                datiAnagrafici_121.NumeroIscrizioneAlbo = "";
                datiAnagrafici_121.DataIscrizioneAlbo   = "";
                datiAnagrafici_121.RegimeFiscale        = "RF19";
                cedentePrestatore.DatiAnagrafici        = datiAnagrafici_121;
                Sede sede_122 = new Sede();
                sede_122.Indirizzo     = "VIALE ROMA";
                sede_122.NumeroCivico  = "543";
                sede_122.CAP           = "07100";
                sede_122.Comune        = "SASSARI";
                sede_122.Provincia     = "SS";
                sede_122.Nazione       = "IT";
                cedentePrestatore.Sede = sede_122;
                StabileOrganizzazione stabileOrganizzazione_123 = new StabileOrganizzazione();
                stabileOrganizzazione_123.Indirizzo     = "";
                stabileOrganizzazione_123.NumeroCivico  = "";
                stabileOrganizzazione_123.CAP           = "";
                stabileOrganizzazione_123.Comune        = "";
                stabileOrganizzazione_123.Provincia     = "";
                stabileOrganizzazione_123.Nazione       = "";
                cedentePrestatore.StabileOrganizzazione = stabileOrganizzazione_123;
                IscrizioneREA iscrizioneREA_124 = new IscrizioneREA();
                iscrizioneREA_124.Ufficio           = "";
                iscrizioneREA_124.NumeroREA         = "";
                iscrizioneREA_124.CapitaleSociale   = "";
                iscrizioneREA_124.SocioUnico        = "";
                iscrizioneREA_124.StatoLiquidazione = "";
                cedentePrestatore.IscrizioneREA     = iscrizioneREA_124;
                Contatti contatti_125 = new Contatti();
                contatti_125.Telefono      = "";
                contatti_125.Fax           = "";
                contatti_125.Email         = "";
                cedentePrestatore.Contatti = contatti_125;
                cedentePrestatore.RiferimentoAmministrazione = "";
                overviewHeader.CedentePrestatore             = cedentePrestatore;
                RappresentanteFiscale rappresentanteFiscale = new RappresentanteFiscale();
                DatiAnagrafici        datiAnagrafici_131    = new DatiAnagrafici();
                IdFiscaleIVA          idFiscaleIVA_131      = new IdFiscaleIVA();
                idFiscaleIVA_131.IdPaese         = "";
                idFiscaleIVA_131.IdPaese         = "";
                datiAnagrafici_131.IdFiscaleIVA  = idFiscaleIVA_131;
                datiAnagrafici_131.CodiceFiscale = "";
                Anagrafica anagrafica_131 = new Anagrafica();
                anagrafica_131.Denominazione         = "";
                anagrafica_131.Nome                  = "";
                anagrafica_131.Cognome               = "";
                anagrafica_131.Titolo                = "";
                anagrafica_131.CodEORI               = "";
                datiAnagrafici_131.Anagrafica        = anagrafica_131;
                rappresentanteFiscale.DatiAnagrafici = datiAnagrafici_131;
                overviewHeader.RappresentanteFiscale = rappresentanteFiscale;
                CessionarioCommittente cessionarioCommittente = new CessionarioCommittente();
                DatiAnagrafici         datiAnagrafici_141     = new DatiAnagrafici();
                IdFiscaleIVA           idFiscaleIVA_141       = new IdFiscaleIVA();
                idFiscaleIVA_141.IdPaese         = "";
                idFiscaleIVA_141.IdCodice        = "";
                datiAnagrafici_141.IdFiscaleIVA  = idFiscaleIVA_141;
                datiAnagrafici_141.CodiceFiscale = "09876543210";
                Anagrafica anagrafica_141 = new Anagrafica();
                anagrafica_141.Denominazione          = "AMMINISTRAZIONE BETA";
                anagrafica_141.Nome                   = "";
                anagrafica_141.Cognome                = "";
                anagrafica_141.Titolo                 = "";
                anagrafica_141.CodEORI                = "";
                datiAnagrafici_141.Anagrafica         = anagrafica_141;
                cessionarioCommittente.DatiAnagrafici = datiAnagrafici_141;
                Sede sede_142 = new Sede();
                sede_142.Indirizzo          = "VIA TORINO";
                sede_142.NumeroCivico       = "38";
                sede_142.CAP                = "00145";
                sede_142.Comune             = "ROMA";
                sede_142.Provincia          = "RM";
                sede_142.Nazione            = "IT";
                cessionarioCommittente.Sede = sede_142;
                StabileOrganizzazione stabileOrganiccazione_143 = new StabileOrganizzazione();
                stabileOrganiccazione_143.Indirizzo          = "";
                stabileOrganiccazione_143.NumeroCivico       = "";
                stabileOrganiccazione_143.CAP                = "";
                stabileOrganiccazione_143.Comune             = "";
                stabileOrganiccazione_143.Provincia          = "";
                stabileOrganiccazione_143.Nazione            = "";
                cessionarioCommittente.StabileOrganizzazione = stabileOrganiccazione_143;
                RappresentanteFiscale rappresentanteFiscale_144 = new RappresentanteFiscale();
                DatiAnagrafici        datiAnagrafici_144        = new DatiAnagrafici();
                IdFiscaleIVA          idFiscaleIVA_144          = new IdFiscaleIVA();
                idFiscaleIVA_144.IdPaese        = "";
                idFiscaleIVA_144.IdCodice       = "";
                datiAnagrafici_144.IdFiscaleIVA = idFiscaleIVA_144;
                Anagrafica anagrafica_144 = new Anagrafica();
                anagrafica_144.Denominazione             = "";
                anagrafica_144.Nome                      = "";
                anagrafica_144.Cognome                   = "";
                datiAnagrafici_144.Anagrafica            = anagrafica_144;
                rappresentanteFiscale_144.DatiAnagrafici = datiAnagrafici_144;
                overviewHeader.CessionarioCommittente    = cessionarioCommittente;
                TerzoIntermediarioOSoggettoEmittente terzoIntermediarioOSoggettoEmittente = new TerzoIntermediarioOSoggettoEmittente();
                DatiAnagrafici datiAnagrafici_151 = new DatiAnagrafici();
                IdFiscaleIVA   idFiscaleIVA_151   = new IdFiscaleIVA();
                idFiscaleIVA_151.IdPaese         = "";
                idFiscaleIVA_151.IdCodice        = "";
                datiAnagrafici_151.IdFiscaleIVA  = idFiscaleIVA_151;
                datiAnagrafici_151.CodiceFiscale = "";
                datiAnagrafici_151.CodiceFiscale = "";
                Anagrafica anagrafica_151 = new Anagrafica();
                anagrafica_151.Denominazione  = "";
                anagrafica_151.Nome           = "";
                anagrafica_151.Cognome        = "";
                anagrafica_151.Titolo         = "";
                anagrafica_151.CodEORI        = "";
                datiAnagrafici_151.Anagrafica = anagrafica_151;
                overviewHeader.TerzoIntermediarioOSoggettoEmittente = terzoIntermediarioOSoggettoEmittente;
                overviewHeader.SoggettoEmittente = "";
                FatturaElettronicaBody overviewBody          = new FatturaElettronicaBody();
                DatiGenerali           datiGenerali          = new DatiGenerali();
                DatiGeneraliDocumento  datiGeneraliDocumento = new DatiGeneraliDocumento();
                datiGeneraliDocumento.TipoDocumento = "TD01";
                datiGeneraliDocumento.Divisa        = "EUR";
                datiGeneraliDocumento.Data          = "2017-01-18";
                datiGeneraliDocumento.Numero        = "123";
                DatiRitenuta datiRitenuta = new DatiRitenuta();
                datiRitenuta.TipoRitenuta          = "";
                datiRitenuta.ImportoRitenuta       = "";
                datiRitenuta.AliquotaRitenuta      = "";
                datiRitenuta.CausalePagamento      = "";
                datiGeneraliDocumento.DatiRitenuta = datiRitenuta;
                DatiBollo datiBollo = new DatiBollo();
                datiBollo.BolloVirtuale         = "";
                datiBollo.ImportoBollo          = "";
                datiGeneraliDocumento.DatiBollo = datiBollo;
                DatiCassaPrevidenziale        datiCassaPrevidenziale     = new DatiCassaPrevidenziale();
                List <DatiCassaPrevidenziale> datiCassaPrevidenzialeList = new List <DatiCassaPrevidenziale>();
                datiCassaPrevidenziale.TipoCassa = "";
                datiCassaPrevidenziale.AlCassa   = "";
                datiCassaPrevidenziale.ImportoContributoCassa = "";
                datiCassaPrevidenziale.ImponibileCassa        = "";
                datiCassaPrevidenziale.AliquotaIVA            = "";
                datiCassaPrevidenziale.Ritenuta = "";
                datiCassaPrevidenziale.Natura   = "";
                datiCassaPrevidenziale.RiferimentoAmministrazione = "";
                datiCassaPrevidenzialeList.Add(datiCassaPrevidenziale);
                datiGeneraliDocumento.DatiCassaPrevidenziale = datiCassaPrevidenzialeList;
                ScontoMaggiorazione        scontoMaggiorazione     = new ScontoMaggiorazione();
                List <ScontoMaggiorazione> scontoMaggiorazioneList = new List <ScontoMaggiorazione>();
                scontoMaggiorazione.Tipo        = "";
                scontoMaggiorazione.Percentuale = "";
                scontoMaggiorazione.Importo     = "";
                scontoMaggiorazioneList.Add(scontoMaggiorazione);
                datiGeneraliDocumento.ScontoMaggiorazione    = scontoMaggiorazioneList;
                datiGeneraliDocumento.ImportoTotaleDocumento = "";
                datiGeneraliDocumento.Arrotondamento         = "";
                datiGeneraliDocumento.Causale      = "";
                datiGeneraliDocumento.Art73        = "";
                datiGenerali.DatiGeneraliDocumento = datiGeneraliDocumento;
                DatiOrdineAcquisto        datiOrdineAcquisto     = new DatiOrdineAcquisto();
                List <DatiOrdineAcquisto> datiOrdineAcquistoList = new List <DatiOrdineAcquisto>();
                datiOrdineAcquisto.RiferimentoNumeroLinea = "1";
                datiOrdineAcquisto.IdDocumento            = "66685";
                datiOrdineAcquisto.Data    = "2016-09-0";
                datiOrdineAcquisto.NumItem = "";
                datiOrdineAcquisto.CodiceCommessaConvenzione = "";
                datiOrdineAcquisto.CodiceCUP = "";
                datiOrdineAcquisto.CodiceCIG = "";
                datiOrdineAcquistoList.Add(datiOrdineAcquisto);
                datiGenerali.DatiOrdineAcquisto = datiOrdineAcquistoList;
                DatiContratto        datiContratto     = new DatiContratto();
                List <DatiContratto> datiContrattoList = new List <DatiContratto>();
                datiContratto.RiferimentoNumeroLinea = "";
                datiContratto.IdDocumento            = "";
                datiContratto.Data    = "";
                datiContratto.NumItem = "";
                datiContratto.CodiceCommessaConvenzione = "";
                datiContratto.CodiceCUP = "";
                datiContratto.CodiceCIG = "";
                datiContrattoList.Add(datiContratto);
                datiGenerali.DatiContratto = datiContrattoList;
                DatiConvenzione        datiConvenzione     = new DatiConvenzione();
                List <DatiConvenzione> datiConvenzioneList = new List <DatiConvenzione>();
                datiConvenzione.RiferimentoNumeroLinea = "";
                datiConvenzione.IdDocumento            = "";
                datiConvenzione.Data    = "";
                datiConvenzione.NumItem = "";
                datiConvenzione.CodiceCommessaConvenzione = "";
                datiConvenzione.CodiceCUP = "";
                datiConvenzione.CodiceCIG = "";
                datiConvenzioneList.Add(datiConvenzione);
                datiGenerali.DatiConvenzione = datiConvenzioneList;
                DatiRicezione        datiRicezione     = new DatiRicezione();
                List <DatiRicezione> datiRicezioneList = new List <DatiRicezione>();
                datiRicezione.RiferimentoNumeroLinea = "";
                datiRicezione.IdDocumento            = "";
                datiRicezione.Data    = "";
                datiRicezione.NumItem = "";
                datiRicezione.CodiceCommessaConvenzione = "";
                datiRicezione.CodiceCUP = "";
                datiRicezione.CodiceCIG = "";
                datiRicezioneList.Add(datiRicezione);
                datiGenerali.DatiRicezione = datiRicezioneList;
                DatiFattureCollegate        datiFattureCollegate     = new DatiFattureCollegate();
                List <DatiFattureCollegate> datiFattureCollegateList = new List <DatiFattureCollegate>();
                datiFattureCollegate.RiferimentoNumeroLinea = "";
                datiFattureCollegate.IdDocumento            = "";
                datiFattureCollegate.Data    = "";
                datiFattureCollegate.NumItem = "";
                datiFattureCollegate.CodiceCommessaConvenzione = "";
                datiFattureCollegate.CodiceCUP = "";
                datiFattureCollegate.CodiceCIG = "";
                datiFattureCollegateList.Add(datiFattureCollegate);
                datiGenerali.DatiFattureCollegate = datiFattureCollegateList;
                DatiSAL        datiSAL     = new DatiSAL();
                List <DatiSAL> datiSALList = new List <DatiSAL>();
                datiSAL.RiferimentoFase = "";
                datiSALList.Add(datiSAL);
                datiGenerali.DatiSAL = datiSALList;
                DatiDDT        datiDDT     = new DatiDDT();
                List <DatiDDT> datiDDTList = new List <DatiDDT>();
                datiDDT.NumeroDDT = "";
                datiDDT.DataDDT   = "";
                datiDDT.RiferimentoNumeroLinea = "";
                datiDDTList.Add(datiDDT);
                datiGenerali.DatiDDT = datiDDTList;
                DatiTrasporto         datiTrasporto         = new DatiTrasporto();
                DatiAnagraficiVettore datiAnagraficiVettore = new DatiAnagraficiVettore();
                IdFiscaleIVA          idFiscaleIva          = new IdFiscaleIVA();
                idFiscaleIva.IdCodice = "";
                idFiscaleIva.IdPaese  = "";
                datiAnagraficiVettore.IdFiscaleIVA  = idFiscaleIva;
                datiAnagraficiVettore.CodiceFiscale = "";
                Anagrafica anagraficaVettore = new Anagrafica();
                anagraficaVettore.Denominazione          = "";
                anagraficaVettore.Nome                   = "";
                anagraficaVettore.Cognome                = "";
                anagraficaVettore.Titolo                 = "";
                anagraficaVettore.CodEORI                = "";
                datiAnagraficiVettore.Anagrafica         = anagraficaVettore;
                datiAnagraficiVettore.NumeroLicenzaGuida = "";
                datiTrasporto.MezzoTrasporto             = "";
                datiTrasporto.CausaleTrasporto           = "";
                datiTrasporto.NumeroColli                = "";
                datiTrasporto.Descrizione                = "";
                datiTrasporto.UnitaMisuraPeso            = "";
                datiTrasporto.PesoLordo                  = "";
                datiTrasporto.PesoNetto                  = "";
                datiTrasporto.DataOraRitiro              = "";
                datiTrasporto.DataInizioTrasporto        = "";
                datiTrasporto.TipoResa                   = "";
                IndirizzoResa indirizzoResa = new IndirizzoResa();
                indirizzoResa.Indirizzo       = "";
                indirizzoResa.NumeroCivico    = "";
                indirizzoResa.CAP             = "";
                indirizzoResa.Comune          = "";
                indirizzoResa.Provincia       = "";
                indirizzoResa.Nazione         = "";
                datiTrasporto.IndirizzoResa   = indirizzoResa;
                datiTrasporto.DataOraConsegna = "";
                datiGenerali.DatiTrasporto    = datiTrasporto;
                FatturaPrincipale fatturaPrincipale = new FatturaPrincipale();
                fatturaPrincipale.NumeroFatturaPrincipale = "";
                fatturaPrincipale.DataFatturaPrincipale   = "";
                datiGenerali.FatturaPrincipale            = fatturaPrincipale;
                overviewBody.DatiGenerali = datiGenerali;
                DatiBeniServizi       datiBeniServizi    = new DatiBeniServizi();
                DettaglioLinee        dettaglioLinee     = new DettaglioLinee();
                List <DettaglioLinee> dettaglioLineeList = new List <DettaglioLinee>();
                dettaglioLinee.NumeroLinea             = "";
                dettaglioLinee.TipoCessionePrestazione = "";
                CodiceArticolo codiceArticolo = new CodiceArticolo();
                codiceArticolo.CodiceTipo        = "";
                codiceArticolo.CodiceValore      = "";
                dettaglioLinee.CodiceArticolo    = codiceArticolo;
                dettaglioLinee.Descrizione       = "";
                dettaglioLinee.Quantita          = "";
                dettaglioLinee.UnitaMisura       = "";
                dettaglioLinee.DataInizioPeriodo = "";
                dettaglioLinee.DataFinePeriodo   = "";
                dettaglioLinee.PrezzoUnitario    = "";
                ScontoMaggiorazione scontoMaggiorazione_221 = new ScontoMaggiorazione();
                scontoMaggiorazione_221.Tipo        = "";
                scontoMaggiorazione_221.Percentuale = "";
                scontoMaggiorazione_221.Importo     = "";
                dettaglioLinee.ScontoMaggiorazione  = scontoMaggiorazione_221;
                dettaglioLinee.PrezzoTotale         = "";
                dettaglioLinee.AliquotaIVA          = "";
                dettaglioLinee.Ritenuta             = "";
                dettaglioLinee.Natura = "";
                dettaglioLinee.RiferimentoAmministrazione = "";
                AltriDatiGestionali altriDatiGestionali = new AltriDatiGestionali();
                altriDatiGestionali.TipoDato          = "";
                altriDatiGestionali.RiferimentoTesto  = "";
                altriDatiGestionali.RiferimentoNumero = "";
                altriDatiGestionali.RiferimentoData   = "";
                dettaglioLinee.AltriDatiGestionali    = altriDatiGestionali;
                dettaglioLineeList.Add(dettaglioLinee);
                datiBeniServizi.DettaglioLinee = dettaglioLineeList;
                DatiRiepilogo        datiRiepilogo     = new DatiRiepilogo();
                List <DatiRiepilogo> datiRiepilogoList = new List <DatiRiepilogo>();
                datiRiepilogo.AliquotaIVA          = "";
                datiRiepilogo.Natura               = "";
                datiRiepilogo.SpeseAccessorie      = "";
                datiRiepilogo.Arrotondamento       = "";
                datiRiepilogo.ImponibileImporto    = "";
                datiRiepilogo.Imposta              = "";
                datiRiepilogo.EsigibilitaIVA       = "";
                datiRiepilogo.RiferimentoNormativo = "";
                datiRiepilogoList.Add(datiRiepilogo);
                datiBeniServizi.DatiRiepilogo = datiRiepilogoList;
                overviewBody.DatiBeniServizi  = datiBeniServizi;
                DatiVeicoli datiVeicoli = new DatiVeicoli();
                datiVeicoli.Data           = "";
                datiVeicoli.TotalePercorso = "";
                overviewBody.DatiVeicoli   = datiVeicoli;
                DatiPagamento datiPagamento = new DatiPagamento();
                datiPagamento.CondizioniPagamento = "";
                DettaglioPagamento dettaglioPagamento = new DettaglioPagamento();
                dettaglioPagamento.Beneficiario      = "";
                dettaglioPagamento.ModalitaPagamento = "";
                dettaglioPagamento.DataRiferimentoTerminiPagamento = "";
                dettaglioPagamento.GiorniTerminiPagamento          = "";
                dettaglioPagamento.DataScadenzaPagamento           = "";
                dettaglioPagamento.ImportoPagamento    = "";
                dettaglioPagamento.CodUfficioPostale   = "";
                dettaglioPagamento.CognomeQuietanzante = "";
                dettaglioPagamento.NomeQuietanzante    = "";
                dettaglioPagamento.CFQuietanzante      = "";
                dettaglioPagamento.TitoloQuietanzante  = "";
                dettaglioPagamento.IstitutoFinanziario = "";
                dettaglioPagamento.IBAN = "";
                dettaglioPagamento.ABI  = "";
                dettaglioPagamento.CAB  = "";
                dettaglioPagamento.BIC  = "";
                dettaglioPagamento.ScontoPagamentoAnticipato     = "";
                dettaglioPagamento.DataLimitePagamentoAnticipato = "";
                dettaglioPagamento.PenalitaPagamentiRitardati    = "";
                dettaglioPagamento.DataDecorrenzaPenale          = "";
                dettaglioPagamento.CodicePagamento = "";
                datiPagamento.DettaglioPagamento   = dettaglioPagamento;
                overviewBody.DatiPagamento         = datiPagamento;
                Allegati allegati = new Allegati();
                allegati.NomeAttachment                 = "";
                allegati.AlgoritmoCompressione          = "";
                allegati.FormatoAttachment              = "";
                allegati.DescrizioneAttachment          = "";
                allegati.Attachment                     = "";
                overviewBody.Allegati                   = allegati;
                nodoPrincipale.FatturaElettronicaHeader = overviewHeader;
                nodoPrincipale.FatturaElettronicaBody   = overviewBody;
                XmlRootAttribute XmlRoot = new XmlRootAttribute();
                XmlRoot.Namespace = "http://www.fatturapa.gov.it/sdi/fatturapa/v1.2";
                XmlAttributes myxmlAttribute = new XmlAttributes();
                myxmlAttribute.XmlRoot = XmlRoot;
                XmlAttributeOverrides xmlAttributeOverrides = new XmlAttributeOverrides();
                xmlAttributeOverrides.Add(typeof(FatturaElettronicaXMLNodes), myxmlAttribute);
                XmlAttributes       emptyNsAttribute = new XmlAttributes();
                XmlElementAttribute xElement1        = new XmlElementAttribute();
                xElement1.Namespace = "";
                emptyNsAttribute.XmlElements.Add(xElement1);
                xmlAttributeOverrides.Add(typeof(FatturaElettronicaXMLNodes), "FatturaElettronicaHeader", emptyNsAttribute);
                xmlAttributeOverrides.Add(typeof(FatturaElettronicaXMLNodes), "FatturaElettronicaBody", emptyNsAttribute);
                nodoPrincipale.versione = "FPA12";
                XmlSerializer ser = new XmlSerializer(nodoPrincipale.GetType(), xmlAttributeOverrides);
                ser = new XmlSerializer(nodoPrincipale.GetType(), new XmlRootAttribute("pX"));
                XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
                ns.Add("ds", "http://www.w3.org/2000/09/xmldsig#");
                ns.Add("p", "http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2");
                ns.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance");
                var path = percorso + nome_file;
                System.IO.FileStream file = System.IO.File.Create(path);
                ser.Serialize(new System.IO.StreamWriter(file, new System.Text.UTF8Encoding()), nodoPrincipale, ns);
                file.Close();
                string delimiterToBeReplaced = "pX";
                string newDelimiter          = "p:FatturaElettronica";
                string contents = System.IO.File.ReadAllText(path);
                contents = contents.Replace(delimiterToBeReplaced, newDelimiter);
                System.IO.File.WriteAllText(path, contents);
                esito = true;
            }
            catch (Exception ex)
            {
                string eccezione = ex.ToString();
                return(esito);
            }
            return(esito);
        }