From 042b059f2a5ff3f4cb13bd50c661b21d13e7dd88 Mon Sep 17 00:00:00 2001 From: Damian Wessels Date: Fri, 23 Aug 2024 19:36:40 +0200 Subject: [PATCH] Sanierungsarten und weitere Berechnungen --- Schnittstelle/Export/Excel.cs | 55 ++++++++++++++++++++----- Schnittstelle/Sanierung/Sanierungart.cs | 36 ++++++++++++++++ 2 files changed, 81 insertions(+), 10 deletions(-) create mode 100644 Schnittstelle/Sanierung/Sanierungart.cs diff --git a/Schnittstelle/Export/Excel.cs b/Schnittstelle/Export/Excel.cs index 14121ba..ee76b8e 100644 --- a/Schnittstelle/Export/Excel.cs +++ b/Schnittstelle/Export/Excel.cs @@ -1,4 +1,5 @@ using Schnittstelle.Import.XML.v2013.Model; +using Schnittstelle.Sanierung; using Syncfusion.XlsIO; using System; using System.Collections.Generic; @@ -12,7 +13,7 @@ namespace Schnittstelle.Export public static class Excel { const string LizenceKey = "Ngo9BigBOggjHTQxAR8/V1NCaF5cXmZCf1FpRmJGdld5fUVHYVZUTXxaS00DNHVRdkdnWXdccXRQQ2NZWEBxWUM="; - public static void MakeWorkbook(List KanalObjekte) + public static void MakeWorkbook(List KanalObjekte, List sanierungsarten) { Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense(LizenceKey); ExcelEngine excelEngine = new ExcelEngine(); @@ -30,23 +31,23 @@ namespace Schnittstelle.Export { IWorksheet worksheet = workbook.Worksheets[i]; KanalObjekt k = KanalObjekte[i]; - CalculateHaltung(k, worksheet, CellStyle); + CalculateHaltung(k, worksheet, sanierungsarten , CellStyle); } FileStream stream = new FileStream("beurteilung.xlsx", FileMode.Create, FileAccess.ReadWrite); workbook.SaveAs(stream); stream.Dispose(); } - private static void CalculateHaltung(KanalObjekt haltung, IWorksheet worksheet, IStyle cellStyle) + private static void CalculateHaltung(KanalObjekt haltung, IWorksheet worksheet, List sanierungsarten, IStyle cellStyle) { worksheet.Name = string.Format("{0}", haltung.Stammdaten.Objektbezeichnung); - int wiederholungen = 3; int row = 1; - for (int i = 0; i < wiederholungen; i++) + for (int i = 0; i < sanierungsarten.Count; i++) { + Sanierungart sanArt = sanierungsarten[i]; int mainrow = row; worksheet.Range[row, 1].Text = "Haltung"; worksheet.Range[row, 2].Text = "Länge"; @@ -67,7 +68,9 @@ namespace Schnittstelle.Export worksheet.Range[mainrow,1,row,10].CellStyle = cellStyle; - row += 4; + row += 2; + worksheet.Range[row, 2].Text = sanArt.Sanierungsbezeichnung; + row+= 2; int temprow = row; worksheet.Range[row, 1].Text = "Stat"; worksheet.Range[row, 2].Text = "Kürzel"; @@ -81,6 +84,7 @@ namespace Schnittstelle.Export worksheet.Range[row, 10].Text = "Kosten"; row++; + int codestart_row = row; //int rows = 7; decimal inspizierteLaenge = 0m; for (int j = 0; j < haltung.Inspektionsdaten.OptischeInspektion.Count; j++) @@ -112,14 +116,45 @@ namespace Schnittstelle.Export worksheet.Range[row + j, 7].Text = code.KodeDescription; worksheet.Range[row + j, 8].Text = code.Streckenschaden; - worksheet.Range[row + j, 9].Text = ""; - worksheet.Range[row + j, 10].Text = ""; + + Tuple d; + + if (sanArt.Sanierungen.TryGetValue(code.Inspektionskode, out d)) + { + worksheet.Range[row + j, 9].Text = d.Item1; + worksheet.Range[row + j, 10].Number = d.Item2; + } row++; } } - worksheet.Range[mainrow+1, 4].Text = inspizierteLaenge.ToString(); worksheet.Range[temprow, 1, row, 10].CellStyle = cellStyle; - row += 15; + temprow = row; + worksheet.Range[row, 7].Text = "Zwischensumme"; + worksheet.Range[row, 10].Formula = string.Format("=SUM(J{0}:J{1})", codestart_row, row-1); + row++; + worksheet.Range[row, 7].Text = "Baustelleneinrichtung"; //10% + row++; + worksheet.Range[row, 7].Text = "Verkehrssicherung"; // 5% + row++; + worksheet.Range[row, 7].Text = "Aufrechterhaltung der Vorflut"; // 12% + row++; + worksheet.Range[row, 7].Text = "Kanalreinigung"; // 2€ /m + row++; + worksheet.Range[row, 7].Text = "Kamerainspektion"; // 3€ /m + row++; + worksheet.Range[row, 7].Text = "Reinigung verstopfter Abzweiger"; //250€ + row++; + worksheet.Range[row, 7].Text = "Summe netto"; + row++; + worksheet.Range[row, 7].Text = "Mehrwertsteuer"; // 19% + row++; + worksheet.Range[row, 7].Text = "Summe brutto"; + + worksheet.Range[temprow, 7, row, 10].CellStyle = cellStyle; + + worksheet.Range[mainrow+1, 4].Text = inspizierteLaenge.ToString(); + + row += 5; } } } diff --git a/Schnittstelle/Sanierung/Sanierungart.cs b/Schnittstelle/Sanierung/Sanierungart.cs new file mode 100644 index 0000000..87c9289 --- /dev/null +++ b/Schnittstelle/Sanierung/Sanierungart.cs @@ -0,0 +1,36 @@ +using Syncfusion.XlsIO.Parser.Biff_Records; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Schnittstelle.Sanierung +{ + + public abstract class Sanierungart + { + string sanierungsbezeichnung = string.Empty; + public string Sanierungsbezeichnung { get => sanierungsbezeichnung; } + public Dictionary> Sanierungen = new Dictionary>(); + public Sanierungart(string art) + { + sanierungsbezeichnung = art; + } + } + + public class Reparatur : Sanierungart + { + + public Reparatur() : base("Reparatur") + { + Sanierungen.Add("BAB", new Tuple("Kurzliner 2,4m", 300.30)); + } + } + + public class Renovation : Sanierungart + { + public Renovation() : base("Renovation") + { + Sanierungen.Add("BCA", new Tuple("Einmessen, Öffnen, Hut", 800)); + } + } +}