Beispiel #1
0
        public static XmlDocument GenerateXMLFromFattura(FatturaElettronicaType fattura)
        {
            XmlDocument XmlDoc = new XmlDocument();
            var         stream = new System.IO.MemoryStream();
            string      xml    = "";

            try
            {
                var serializer = new XmlSerializer(typeof(NttDatalLibrary.FatturaElettronicaType));
                var writer     = new NttDatalLibrary.CloserTagXMLWriter(stream);
                serializer.Serialize(writer, fattura);
                xml = Encoding.UTF8.GetString(stream.ToArray());
                int _indexFirstElement = xml.IndexOf("<");
                xml = xml.Substring(_indexFirstElement);

                XmlDoc.LoadXml(xml);
            }
            catch (Exception)
            {
                return(null);
            }
            finally
            {
                stream.Dispose();
            }
            return(XmlDoc);
        }
Beispiel #2
0
        public static FatturaResult CreateFatturaOrdinaria(int numFattura)
        {
            IFatturaDataProvider dataProvider = new FatturaOrdinariaDataProviderWithSqlCommands(numFattura);

            List <string> errors = Validate(dataProvider);

            if (errors.Count() > 0)
            {
                return(new FatturaResult()
                {
                    xml = null, filename = "", errors = errors
                });
            }

            FatturaElettronicaType fatturaGenerated = FatturaOrdinariaBuilder.GetFatturaOrdinaria(dataProvider);

            XmlSerializer xsSubmit = new XmlSerializer(typeof(FatturaElettronicaOrdinaria.FatturaElettronicaType));

            var xml = "";

            using (var sww = new Utf8StringWriter())
            {
                using (XmlWriter writer = XmlWriter.Create(sww))
                {
                    xsSubmit.Serialize(writer, fatturaGenerated);
                    xml = sww.ToString();
                }
            }


            return(new FatturaResult()
            {
                xml = xml, filename = dataProvider.CedenteCodicePaese + dataProvider.CedentePIva + "_" + dataProvider.NumeroProgressivo + ".xml", errors = new List <string>()
            });
        }
Beispiel #3
0
        //root
        public static FatturaElettronicaType GetFattura(FatturaSemplificataDataProviderWithEntity data)
        {
            var result = new FatturaElettronicaType();

            result.FatturaElettronicaBody   = GetFatturaElettronicaBodyList(data);
            result.FatturaElettronicaHeader = GetFatturaElettronicaHeader(data);
            result.versione = FormatoTrasmissioneType.FSM10;

            return(result);
        }
Beispiel #4
0
        public static FatturaElettronicaType GetFatturaOrdinaria(IFatturaDataProvider data)
        {
            FatturaElettronicaType result = new FatturaElettronicaType();

            result.FatturaElettronicaHeader = GetFatturaElettronicaHeader(data);
            result.FatturaElettronicaBody   = GetFatturaElettronicaBodyList(data);
            result.versione = FormatoTrasmissioneType.FPR12;

            return(result);
        }
Beispiel #5
0
        /// <summary>
        /// main method
        /// </summary>
        /// <param name="args">arguments from console</param>
        public static void Main(string[] args)
        {
            bool preview = true;

            FatturaElettronicaType fatturaElettronica = new FatturaElettronicaType();

            fatturaElettronica.versione = Program.formatoTrasmissioneType;

            XmlSerializerNamespaces xmlSerializerNamespaces = new XmlSerializerNamespaces();

            xmlSerializerNamespaces.Add("xsi", Program.xsiNamespace);
            xmlSerializerNamespaces.Add("p", Program.pNamespace);
            xmlSerializerNamespaces.Add("ds", Program.dsNamespace);

            XmlSerializer xmlSerializer = new XmlSerializer(typeof(FatturaElettronicaType));

            FatturaElettronicaHeaderType fatturaElettronicaHeaderType = new FatturaElettronicaHeaderType();

            DatiTrasmissioneType datiTrasmissioneType      = new DatiTrasmissioneType();
            IdFiscaleType        idFiscaleTypeTrasmissione = new IdFiscaleType();
            IdFiscaleType        idFiscaleTypeCedente      = new IdFiscaleType();

            idFiscaleTypeTrasmissione.IdCodice = "";

            idFiscaleTypeTrasmissione.IdPaese = "";

            idFiscaleTypeCedente.IdPaese  = "";
            idFiscaleTypeCedente.IdCodice = "";

            datiTrasmissioneType.IdTrasmittente      = idFiscaleTypeTrasmissione;
            datiTrasmissioneType.ProgressivoInvio    = ""; //esempio "1"
            datiTrasmissioneType.FormatoTrasmissione = Program.formatoTrasmissioneType;
            datiTrasmissioneType.CodiceDestinatario  = "";

            fatturaElettronicaHeaderType.DatiTrasmissione = datiTrasmissioneType;

            CedentePrestatoreType cedentePrestatoreType = new CedentePrestatoreType();

            DatiAnagraficiCedenteType datiAnagraficiCedenteType = new DatiAnagraficiCedenteType();

            datiAnagraficiCedenteType.IdFiscaleIVA = idFiscaleTypeCedente;

            AnagraficaType anagraficaType = new AnagraficaType();

            //if (societa)
            //{
            //    anagraficaType.Items = new string[] { "Company srl" };
            //    anagraficaType.ItemsElementName = new ItemsChoiceType[] { ItemsChoiceType.Denominazione };
            //}
            //else if (professionista)
            //{
            //    anagraficaType.Items = new string[] { "Mario", "Rossi" };
            //    anagraficaType.ItemsElementName = new ItemsChoiceType[] { ItemsChoiceType.Nome, ItemsChoiceType.Cognome };
            //}

            datiAnagraficiCedenteType.Anagrafica = anagraficaType;

            cedentePrestatoreType.DatiAnagrafici = datiAnagraficiCedenteType;

            datiAnagraficiCedenteType.RegimeFiscale = RegimeFiscaleType.RF01;

            IndirizzoType indirizzoType = new IndirizzoType();

            indirizzoType.Indirizzo    = "";
            indirizzoType.NumeroCivico = "";
            indirizzoType.CAP          = "";
            indirizzoType.Comune       = "";
            indirizzoType.Provincia    = "";
            indirizzoType.Nazione      = "";
            cedentePrestatoreType.Sede = indirizzoType;

            fatturaElettronicaHeaderType.CedentePrestatore = cedentePrestatoreType;

            CessionarioCommittenteType cessionarioCommittenteType = new CessionarioCommittenteType();

            DatiAnagraficiCessionarioType datiAnagraficiCessionarioType = new DatiAnagraficiCessionarioType();

            //if (pivaCommittente))
            //{
            //    IdFiscaleType idFiscaleTypeCommittente = new IdFiscaleType();
            //    idFiscaleTypeCommittente.IdCodice = pivaCommittente;
            //    idFiscaleTypeCommittente.IdPaese = idPaeseCommittente;
            //    datiAnagraficiCessionarioType.IdFiscaleIVA = idFiscaleTypeCommittente;
            //}

            //if (cfCommittente)
            //{
            //    datiAnagraficiCessionarioType.CodiceFiscale = cfCommittente;
            //}

            AnagraficaType anagraficaTypeCommittente = new AnagraficaType();

            anagraficaTypeCommittente.Items            = new string[] { "LaDenominazione" };
            anagraficaTypeCommittente.ItemsElementName = new ItemsChoiceType[] { ItemsChoiceType.Denominazione };

            datiAnagraficiCessionarioType.Anagrafica = anagraficaTypeCommittente;

            cessionarioCommittenteType.DatiAnagrafici = datiAnagraficiCessionarioType;

            IndirizzoType indirizzoTypeCommittente = new IndirizzoType();

            //indirizzoTypeCommittente.Indirizzo = indirizzoCommittente;
            //indirizzoTypeCommittente.CAP = capCommittente;
            //indirizzoTypeCommittente.Comune = comuneCommittente;
            //indirizzoTypeCommittente.Provincia = provinciaCommittente;
            //indirizzoTypeCommittente.Nazione = idPaeseCommittente;

            cessionarioCommittenteType.Sede = indirizzoTypeCommittente;

            fatturaElettronicaHeaderType.CessionarioCommittente = cessionarioCommittenteType;
            fatturaElettronica.FatturaElettronicaHeader         = fatturaElettronicaHeaderType;

            FatturaElettronicaBodyType fatturaElettronicaBodyType = new FatturaElettronicaBodyType();
            DatiGeneraliType           datiGeneraliType           = new DatiGeneraliType();
            DatiGeneraliDocumentoType  datiGeneraliDocumentoType  = new DatiGeneraliDocumentoType();

            datiGeneraliDocumentoType.TipoDocumento = TipoDocumentoType.TD01;
            datiGeneraliDocumentoType.Divisa        = "";
            datiGeneraliDocumentoType.Data          = DateTime.Now;
            //datiGeneraliDocumentoType.Numero = string.Format("{0}{1}E", numero.ToString(), siglaNotaAccredito);

            //if (professionista)
            //{
            //    DatiRitenutaType datiRitenutaType = new DatiRitenutaType();
            //    datiRitenutaType.TipoRitenuta = TipoRitenutaType.RT01; //ritenuta persone fisiche
            //    datiRitenutaType.ImportoRitenuta = ritenuta.Value;
            //    datiRitenutaType.AliquotaRitenuta = ritenutaCorrente.Value;
            //    datiRitenutaType.CausalePagamento = CausalePagamentoType.A; //da mod. 770semplificato

            //    datiGeneraliDocumentoType.DatiRitenuta = datiRitenutaType;

            //    DatiCassaPrevidenzialeType datiCassaPrevidenzialeType = new DatiCassaPrevidenzialeType();
            //    datiCassaPrevidenzialeType.TipoCassa = TipoCassaType.TC04;
            //    datiCassaPrevidenzialeType.AlCassa = aliquotaCassaCorrente.Value;
            //    datiCassaPrevidenzialeType.ImportoContributoCassa = importoContributoCassa.Value;
            //    datiCassaPrevidenzialeType.ImponibileCassa = importo.Value;
            //    datiCassaPrevidenzialeType.AliquotaIVA = aliquotaIVA.Value;

            //    datiGeneraliDocumentoType.DatiCassaPrevidenziale = new DatiCassaPrevidenzialeType[] { datiCassaPrevidenzialeType };

            //}

            datiGeneraliType.DatiGeneraliDocumento = datiGeneraliDocumentoType;

            fatturaElettronicaBodyType.DatiGenerali = datiGeneraliType;

            //if ((!string.IsNullOrEmpty(idDocumentoDOAFE)) || (dataDOAFE.HasValue) || (!string.IsNullOrEmpty(codiceCommessaConvenzioneDOAFE)) || (!string.IsNullOrEmpty(codiceCUPDOAFE)) || (!string.IsNullOrEmpty(codiceCIGDOAFE)))
            //{
            //    DatiDocumentiCorrelatiType datiDocumentiCorrelatiType = new DatiDocumentiCorrelatiType();

            //    if (!string.IsNullOrEmpty(idDocumentoDOAFE))
            //    {
            //        datiDocumentiCorrelatiType.IdDocumento = idDocumentoDOAFE;
            //    }

            //    datiDocumentiCorrelatiType.DataSpecified = dataDOAFE.HasValue;
            //    if (dataDOAFE.HasValue)
            //    {
            //        datiDocumentiCorrelatiType.Data = dataDOAFE.Value;
            //    }

            //    if (!string.IsNullOrEmpty(codiceCommessaConvenzioneDOAFE))
            //    {
            //        datiDocumentiCorrelatiType.CodiceCommessaConvenzione = codiceCommessaConvenzioneDOAFE;
            //    }

            //    if (!string.IsNullOrEmpty(codiceCUPDOAFE))
            //    {
            //        datiDocumentiCorrelatiType.CodiceCUP = codiceCUPDOAFE;
            //    }

            //    if (!string.IsNullOrEmpty(codiceCIGDOAFE))
            //    {
            //        datiDocumentiCorrelatiType.CodiceCIG = codiceCIGDOAFE;
            //    }

            //    datiGeneraliType.DatiOrdineAcquisto = new DatiDocumentiCorrelatiType[] { datiDocumentiCorrelatiType };
            //}

            //if ((!string.IsNullOrEmpty(idDocumentoDCFE)) || (dataDCFE.HasValue) || (!string.IsNullOrEmpty(codiceCommessaConvenzioneDCFE)) || (!string.IsNullOrEmpty(codiceCUPDCFE)) || (!string.IsNullOrEmpty(codiceCIGDCFE)))
            //{
            //    DatiDocumentiCorrelatiType datiDocumentiCorrelatiType = new DatiDocumentiCorrelatiType();

            //    if (!string.IsNullOrEmpty(idDocumentoDCFE))
            //    {
            //        datiDocumentiCorrelatiType.IdDocumento = idDocumentoDCFE;
            //    }

            //    datiDocumentiCorrelatiType.DataSpecified = dataDCFE.HasValue;
            //    if (dataDCFE.HasValue)
            //    {
            //        datiDocumentiCorrelatiType.Data = dataDCFE.Value;
            //    }

            //    if (!string.IsNullOrEmpty(codiceCommessaConvenzioneDCFE))
            //    {
            //        datiDocumentiCorrelatiType.CodiceCommessaConvenzione = codiceCommessaConvenzioneDCFE;
            //    }

            //    if (!string.IsNullOrEmpty(codiceCUPDCFE))
            //    {
            //        datiDocumentiCorrelatiType.CodiceCUP = codiceCUPDCFE;
            //    }

            //    if (!string.IsNullOrEmpty(codiceCIGDCFE))
            //    {
            //        datiDocumentiCorrelatiType.CodiceCIG = codiceCIGDCFE;
            //    }

            //    datiGeneraliType.DatiContratto = new DatiDocumentiCorrelatiType[] { datiDocumentiCorrelatiType };
            //}

            //if (salFE.HasValue)
            //{
            //    DatiSALType datiSALType = new DatiSALType();
            //    datiSALType.RiferimentoFase = salFE.Value.ToString();
            //    datiGeneraliType.DatiSAL = new DatiSALType[] { datiSALType };
            //}

            DatiBeniServiziType datiBeniServiziType = new DatiBeniServiziType();
            DettaglioLineeType  dettaglioLineeType  = new DettaglioLineeType();

            dettaglioLineeType.NumeroLinea = ""; // "1";

            //if (oggetto.Length > Program.DescrizioneLunghezzaMax)
            //{
            //    throw new Exception(string.Format("La lunghezza dell'oggetto della fattura supera il limite consentito {0}!", Program.DescrizioneLunghezzaMax));
            //}

            dettaglioLineeType.Descrizione = "";

            //dettaglioLineeType.PrezzoUnitario = imponibile.Value;
            //dettaglioLineeType.PrezzoTotale = imponibile.Value;

            //dettaglioLineeType.AliquotaIVA = aliquotaIVA.Value;
            datiBeniServiziType.DettaglioLinee = new DettaglioLineeType[] { dettaglioLineeType };

            DatiRiepilogoType datiRiepilogoType = new DatiRiepilogoType();

            //datiRiepilogoType.AliquotaIVA = aliquotaIVA.Value;

            //datiRiepilogoType.ImponibileImporto = imponibile.Value;

            //datiRiepilogoType.Imposta = iva.Value;

            //datiRiepilogoType.EsigibilitaIVASpecified = (esigibilitaIVAFE != null);
            if (datiRiepilogoType.EsigibilitaIVASpecified)
            {
                //EsigibilitaIVAType esigibilitaIVAType;
                //if (Enum.TryParse(esigibilitaIVAFE, out esigibilitaIVAType))
                //{
                //    datiRiepilogoType.EsigibilitaIVA = esigibilitaIVAType;
                //}
                //else
                //{
                //    throw new Exception(string.Format("L'esigibilità '{0}' non è stata trovata!", esigibilitaIVAFE));
                //}
            }

            datiBeniServiziType.DatiRiepilogo          = new DatiRiepilogoType[] { datiRiepilogoType };
            fatturaElettronicaBodyType.DatiBeniServizi = datiBeniServiziType;

            DatiPagamentoType datiPagamentoType = new DatiPagamentoType();
            //datiPagamentoType.CondizioniPagamento = condizioniPagamento;
            DettaglioPagamentoType dettaglioPagamentoType = new DettaglioPagamentoType();

            //dettaglioPagamentoType.ModalitaPagamento = modalitaPagamento;
            dettaglioPagamentoType.DataScadenzaPagamentoSpecified = true;
            //dettaglioPagamentoType.DataScadenzaPagamento = dataPagamento.Value;
            //dettaglioPagamentoType.ImportoPagamento = importoConIVA.Value;
            dettaglioPagamentoType.IBAN          = "";
            datiPagamentoType.DettaglioPagamento = new DettaglioPagamentoType[] { dettaglioPagamentoType };

            fatturaElettronicaBodyType.DatiPagamento = new DatiPagamentoType[] { datiPagamentoType };

            fatturaElettronica.FatturaElettronicaBody = new FatturaElettronicaBodyType[] { fatturaElettronicaBodyType };

            string nameFile = null;

            if (preview)
            {
                //nameFile = Program.fileNamePreview;
            }
            else
            {
                //nameFile = string.Format("{0}{1}_{2}", idPaese, piva, string.Format("{0}", progressivoNumero.Value).PadLeft(Program.ProgressivoFileLunghezzaMax, '0'));
            }

            string pathFileName = null;

            //pathFileName = Path.ChangeExtension(System.IO.Path.Combine(Settings.Default.PathFattureElettroniche, nameFile), Enum.GetName(typeof(EstensioniFile), EstensioniFile.xml)));

            if (!preview)
            {
                string msg = null;
                if (File.Exists(pathFileName))
                {
                    msg = string.Format("Attenzione è già presente il file ('{0}'). Se si continua verrà sovrascritto.", nameFile);
                }

                if (File.Exists(Path.ChangeExtension(pathFileName, Enum.GetName(typeof(EstensioniFile), EstensioniFile.p7m))))
                {
                    msg += "Inoltre è presente anche il file firmato. Se si continua dovrà essere rifirmato.";
                }

                if (msg != null)
                {
                    msg += "Confermi?";
                    if (MessageBox.Show(msg, "File già esistente", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
                    {
                        return;
                    }
                }
            }

            using (TextWriter textWriter = new StreamWriter(pathFileName))
            {
                if (preview)
                {
                    using (XmlTextWriter xmlWriter = new XmlTextWriter(textWriter))
                    {
                        xmlWriter.WriteStartDocument();
                        xmlWriter.WriteProcessingInstruction("xml-stylesheet", string.Format("type=\"text/xsl\" href=\"{0}\"", Program.fileNameStyle));
                        xmlSerializer.Serialize(xmlWriter, fatturaElettronica, xmlSerializerNamespaces);
                    }
                }
                else
                {
                    xmlSerializer.Serialize(textWriter, fatturaElettronica, xmlSerializerNamespaces);
                }
            }

            if (preview)
            {
                System.Diagnostics.Process.Start(pathFileName);
            }
            else
            {
                MessageBox.Show(string.Format("Il file {0} è stato creato con successo!", nameFile), "Informazione", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }