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); } }
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); } }
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); } }
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); }