public FileStreamResult CreateRechnung(RechnungViewModel model) { RechnungData data = Mapper.Map <RechnungData>(model); if (model.BestehenderKunde != null) { SetKundenInfo(data, model.BestehenderKunde); } SetPrices(data); SetRechnungsNr(data); data = CalculateService.CalulateRechnungTotals(data); DocX doc = RechnungService.Create(data); MemoryStream ms = new MemoryStream(); doc.SaveAs(ms); ms.Position = 0; string FILENAME = $"Rechnung_{data.RechnungsNummer}.docx"; var file = new FileStreamResult(ms, CONTENTTYPEWORD) { FileDownloadName = string.Format(FILENAME) }; return(file); }
public void TestCreate_One_Product_Pizza() { // Arrange IRechnungService rechnung = new RechnungService(); RechnungData data = new RechnungData { Kunde = "Metzgerei Siegfried", AdressZeile1 = "Bottigenstrasse 22", AdressZeile2 = "3018 Bern", RechnungsDatum = DateTime.Today, LieferDatum = DateTime.Today, RechnungsNummer = "0079", EinzelpreisPizza = 10.00m, TotalPizza = 20.00m, MengePizza = 2, SubTotal = 20.00m, Total = 20.00m }; // Act DocX document = rechnung.Create(data); document.SaveAs(FILE_NAME); // Assert Assert.IsNotNull(document); Assert.IsTrue(File.Exists(FILE_NAME)); Assert.IsFalse(document.Tables.Any(x => x.Rows.Any(y => y.Cells.Any(p => p.Paragraphs.Any(t => t.Text.Contains(Bearfoods.BBQ)))))); Assert.IsFalse(document.Tables.Any(x => x.Rows.Any(y => y.Cells.Any(p => p.Paragraphs.Any(t => t.Text.Contains(Bearfoods.Jus)))))); Assert.IsTrue(document.Tables.Any(x => x.Rows.Any(y => y.Cells.Any(p => p.Paragraphs.Any(t => t.Text.Contains(Bearfoods.Pizza)))))); }
private static DocX PopulateVorlageWithRechnungData(RechnungData data) { Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(Bearfoods.RechnungPath); DocX document = DocX.Load(stream).Copy(); document.ReplaceText(nameof(data.Kunde), data.Kunde ?? string.Empty); document.ReplaceText(nameof(data.AdressZeile1), data.AdressZeile1 ?? string.Empty); document.ReplaceText(nameof(data.AdressZeile2), data.AdressZeile2 ?? string.Empty); document.ReplaceText(nameof(data.Jahr), data.Jahr ?? string.Empty); document.ReplaceText(nameof(data.RechnungsNummer), data.RechnungsNummer ?? string.Empty); document.ReplaceText(nameof(data.RechnungsDatum), data.RechnungsDatum.ToShortDateString()); document.ReplaceText(nameof(data.LieferDatum), data.LieferDatum.ToShortDateString()); document.ReplaceText(nameof(data.MengeBBQSmall), data.MengeBBQSmall == 0 ? string.Empty : data.MengeBBQSmall.ToString()); document.ReplaceText(nameof(data.MengeBBQ), data.MengeBBQ == 0 ? string.Empty : data.MengeBBQ.ToString()); document.ReplaceText(nameof(data.MengePizza), data.MengePizza == 0 ? string.Empty : data.MengePizza.ToString()); document.ReplaceText(nameof(data.MengeJusSmall), data.MengeJusSmall == 0 ? string.Empty : data.MengeJusSmall.ToString()); document.ReplaceText(nameof(data.MengeJus), data.MengeJus == 0 ? string.Empty : data.MengeJus.ToString()); document.ReplaceText(nameof(data.EinzelpreisBBQSmall), data.EinzelpreisBBQSmall == 0 ? string.Empty : data.EinzelpreisBBQSmall.ToString()); document.ReplaceText(nameof(data.EinzelpreisBBQ), data.EinzelpreisBBQ == 0 ? string.Empty : data.EinzelpreisBBQ.ToString()); document.ReplaceText(nameof(data.EinzelpreisPizza), data.EinzelpreisPizza == 0 ? string.Empty : data.EinzelpreisPizza.ToString()); document.ReplaceText(nameof(data.EinzelpreisJusSmall), data.EinzelpreisJusSmall == 0 ? string.Empty : data.EinzelpreisJusSmall.ToString()); document.ReplaceText(nameof(data.EinzelpreisJus), data.EinzelpreisJus == 0 ? string.Empty : data.EinzelpreisJus.ToString()); document.ReplaceText(nameof(data.TotalBBQSmall), data.TotalBBQSmall == 0 ? string.Empty : data.TotalBBQSmall.ToString()); document.ReplaceText(nameof(data.TotalBBQ), data.TotalBBQ == 0 ? string.Empty : data.TotalBBQ.ToString()); document.ReplaceText(nameof(data.TotalPizza), data.TotalPizza == 0 ? string.Empty : data.TotalPizza.ToString()); document.ReplaceText(nameof(data.TotalJusSmall), data.TotalJusSmall == 0 ? string.Empty : data.TotalJusSmall.ToString()); document.ReplaceText(nameof(data.TotalJus), data.TotalJus == 0 ? string.Empty : data.TotalJus.ToString()); document.ReplaceText(nameof(data.SubTotal), data.SubTotal == 0 ? string.Empty : data.SubTotal.ToString()); document.ReplaceText(nameof(data.Total), data.Total == 0 ? string.Empty : data.Total.ToString()); return(document); }
private void SetPrices(RechnungData data) { data.EinzelpreisBBQ = pricesConfig.Value.BBQPrice; data.EinzelpreisBBQSmall = pricesConfig.Value.BBQPriceSmall; data.EinzelpreisPizza = pricesConfig.Value.PizzaPrice; data.EinzelpreisJus = pricesConfig.Value.JusPrice; data.EinzelpreisJusSmall = pricesConfig.Value.JusPriceSmall; }
private void SetKundenInfo(RechnungData data, string bestehenderKunde) { Kunde kunde = kundenConfig.Value.Kunden.Find(x => x.Name == bestehenderKunde); data.Kunde = kunde.Name; data.AdressZeile1 = kunde.Adresse1; data.AdressZeile2 = kunde.Adresse2; }
public void TestCalculatePrices_Rechnung() { // Arrange RechnungData data = CreateRechnungData(); // Act data = CalculateService.CalulateRechnungTotals(data); // Assert Assert.AreEqual(76m, data.Total); Assert.AreEqual(76m, data.SubTotal); Assert.AreEqual(16m, data.TotalBBQ); Assert.AreEqual(24m, data.TotalPizza); Assert.AreEqual(36m, data.TotalJus); }
public void TestCreate_Full() { // Arrange IRechnungService rechnung = new RechnungService(); RechnungData data = CreateRechnungData(); // Act DocX document = rechnung.Create(data); document.SaveAs(FILE_NAME); // Assert Assert.IsNotNull(document); Assert.IsTrue(File.Exists(FILE_NAME)); }
private void SetRechnungsNr(RechnungData data) { if (System.IO.File.Exists("counters.json")) { Counters counters; using (StreamReader reader = new StreamReader("counters.json")) { string jsonCounters = reader.ReadToEnd(); counters = JsonConvert.DeserializeObject <Counters>(jsonCounters); } data.RechnungsNummer = counters.RechnungsNr.ToString(); counters.RechnungsNr += 1; string jsonToBeWritten = JsonConvert.SerializeObject(counters); System.IO.File.WriteAllText("counters.json", jsonToBeWritten); } }
public RechnungData CalulateRechnungTotals(RechnungData data) { const int DELIVERY_COST = 4; if (data == null) { throw new ArgumentNullException(nameof(data)); } data.TotalBBQ = data.EinzelpreisBBQ * data.MengeBBQ; data.TotalBBQSmall = data.EinzelpreisBBQSmall * data.MengeBBQSmall; data.TotalPizza = data.EinzelpreisPizza * data.MengePizza; data.TotalJus = data.EinzelpreisJus * data.MengeJus; data.TotalJusSmall = data.EinzelpreisJusSmall * data.MengeJusSmall; data.Total = data.TotalBBQ + data.TotalPizza + data.TotalJus + data.TotalBBQSmall + data.TotalJusSmall + DELIVERY_COST; data.SubTotal = data.Total - DELIVERY_COST; return(data); }
public DocX Create(RechnungData data) { DocX document = PopulateVorlageWithRechnungData(data); bool hasBBQ = data.MengeBBQ > 0; bool hasPizza = data.MengePizza > 0; bool hasJus = data.MengeJus > 0; bool hasJusSmall = data.MengeJusSmall > 0; bool hasBBQSmall = data.MengeBBQSmall > 0; if (!hasBBQ) { RemoveProductRow(document, Bearfoods.BBQ); } if (!hasPizza) { RemoveProductRow(document, Bearfoods.Pizza); } if (!hasJus) { RemoveProductRow(document, Bearfoods.Jus); } if (!hasJusSmall) { RemoveProductRow(document, Bearfoods.JusSmall); } if (!hasBBQSmall) { RemoveProductRow(document, Bearfoods.BBQSmall); } return(document); }