Example #1
0
        public static CedentePrestatoreType GetCedentePrestatore(IFatturaDataProvider data)
        {
            CedentePrestatoreType result = new CedentePrestatoreType();

            result.DatiAnagrafici = GetDatiAnagraficiCedente(data);
            result.Sede           = GetIndirizzoType(data.CedenteCAP, data.CedenteCitta, data.CedenteIndirizzo, data.CedenteCodicePaese, data.CedenteCivico.ToString(), data.CedenteProvincia);

            //result.Contatti = GetContattiType();
            //result.IscrizioneREA = GetIscrizioneREA();
            //result.RiferimentoAmministrazione = "";
            //result.StabileOrganizzazione = GetIndirizzoType("", "", "", "", "", "");

            return(result);
        }
Example #2
0
        //body
        //public static DatiBeniServiziType[] GetDatiBeniServiziListForBody(FatturaSemplificataDataProviderWithEntity data)
        //{
        //    var result = new List<DatiBeniServiziType>();

        //    foreach(SingleBodyItemDataProvider sbid in data.prestazioni)
        //    {

        //        result.Add(GetDatiBeniServiziForBody(sbid,data.Aliquota));
        //    }

        //    return result.ToArray();
        //}

        ////body
        //public static DatiBeniServiziType GetDatiBeniServiziForBody(SingleBodyItemDataProvider data, decimal Aliquota)
        //{
        //    var result = new DatiBeniServiziType();

        //    result.RiferimentoNormativo = "";
        //    result.NaturaSpecified = false;
        //    //result.Natura = null;
        //    result.Importo = (decimal) data.Importo;
        //    result.Descrizione = data.Descrizione;
        //    result.DatiIVA = GetDatiIVAType(Aliquota, data.Iva);

        //    return result;
        //}

        //header
        public static CedentePrestatoreType GetCedentePrestatore(FatturaSemplificataDataProviderWithEntity data)
        {
            CedentePrestatoreType result = new CedentePrestatoreType();

            result.CodiceFiscale = data.CedentePIva;
            result.IdFiscaleIVA  = GetIdFiscale(data.CedentePIva, data.CedenteCodicePaese);
            result.Items         = new List <string>()
            {
                data.CedenteRagSoc
            }.ToArray();
            result.ItemsElementName = new List <ItemsChoiceType>()
            {
                ItemsChoiceType.Denominazione
            }.ToArray();
            result.StabileOrganizzazione = GetIndirizzoType(data.CedenteCAP, data.CedenteCitta, data.CedenteIndirizzo, data.CedenteNazione, data.CedenteCivico.ToString(), data.CedenteProvincia);


            //result.IscrizioneREA = new IscrizioneREAType() { CapitaleSociale = 22, NumeroREA = "", CapitaleSocialeSpecified = true, SocioUnico = SocioUnicoType.SM, SocioUnicoSpecified = true, StatoLiquidazione = StatoLiquidazioneType.LN, Ufficio = "ufficio" };
            //result.RappresentanteFiscale = GetRappresentanteFiscale(GetIdFiscale("asdf", "asdf"), new List<string>() { "uno", "due" }.ToArray(), new List<ItemsChoiceType1>() { ItemsChoiceType1.Cognome, ItemsChoiceType1.Cognome, ItemsChoiceType1.Denominazione }.ToArray());
            //result.RegimeFiscale = RegimeFiscaleType.RF01;

            return(result);
        }
Example #3
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);
            }
        }