Exemplo n.º 1
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);
            }
        }
Exemplo n.º 2
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);
            }
        }
Exemplo n.º 3
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);
            }
        }
Exemplo n.º 4
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);
        }