CreateRBDisclaimer

pull/1/head
Sascha Woitschetzki 2021-06-16 13:45:48 +07:00 committed by Sascha Woitschetzki
parent 9fd3339ac8
commit 0d34c3614b
2 changed files with 80 additions and 38 deletions

@ -1,6 +1,7 @@
using Gremlin.GremlinUI.ViewModels; using Gremlin.GremlinUI.ViewModels;
using Gremlin.Models; using Gremlin.Models;
using Gremlin.ViewModels; using Gremlin.ViewModels;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
@ -9,12 +10,12 @@ using static Gremlin.GremlinData.EntityClasses.Enums;
namespace Gremlin.Operations namespace Gremlin.Operations
{ {
internal class TexFileHandler internal class TexHandler
{ {
internal static void CreateTexAndOpen(QuoteVM quoteVM, bool? brutto = false, string fileName = "test", string quotePath = "") internal static void CreateTexAndOpen(QuoteVM quoteVM)
{ {
StringBuilder texStringBuilder = CreateTexFile(quoteVM, brutto); StringBuilder texStringBuilder = CreateTexFile(quoteVM);
WriteTextToFile(texStringBuilder, quotePath == "" ? $"{fileName}.tex" : $"{quotePath}\\{fileName}.tex"); WriteTextToFile(texStringBuilder, $"{quoteVM.QuoteNumber}.tex");
//FileIO.OpenFile(quotePath, fileName, "tex"); //FileIO.OpenFile(quotePath, fileName, "tex");
} }
@ -26,7 +27,7 @@ namespace Gremlin.Operations
} }
} }
private static StringBuilder CreateTexFile(QuoteVM quoteVM, bool? brutto) private static StringBuilder CreateTexFile(QuoteVM quoteVM)
{ {
string rand = RUSettingModel.GetSettingValue(Properties.Settings.Default.userSettingID, "texRand"); string rand = RUSettingModel.GetSettingValue(Properties.Settings.Default.userSettingID, "texRand");
@ -51,7 +52,13 @@ namespace Gremlin.Operations
: texFile.AppendLine($"Sehr geehrte Frau {quoteVM.Recipient.LastName},\\par "); : texFile.AppendLine($"Sehr geehrte Frau {quoteVM.Recipient.LastName},\\par ");
//Anschreiben //Anschreiben
_ = texFile.Append(CreateHeading(quoteVM)); _ = texFile.AppendLine(CreateCoverletter(quoteVM));
//RB-Disclaimer
if (quoteVM.QuoteContainsRB)
{
_ = texFile.AppendLine(CreateRBDisclaimer(quoteVM));
}
//Tabelle //Tabelle
_ = texFile.AppendLine("\\begin{center}"); _ = texFile.AppendLine("\\begin{center}");
@ -98,7 +105,7 @@ namespace Gremlin.Operations
_ = texFile.AppendLine($"\\textbf{{Gesamtsumme netto}} & \\SI{{{quoteVM.TotalNet}}}{{\\sieuro}}\\\\"); _ = texFile.AppendLine($"\\textbf{{Gesamtsumme netto}} & \\SI{{{quoteVM.TotalNet}}}{{\\sieuro}}\\\\");
//mit Mehrwertsteuer //mit Mehrwertsteuer
if (brutto == true) if (quoteVM.Brutto == true)
{ {
_ = texFile.AppendLine($"\\textbf{{Mehrwertsteuer {quoteVM.VAT}\\%}} & \\SI{{{(float)quoteVM.TotalNet * quoteVM.VAT / 100}}}{{\\sieuro}}\\\\"); _ = texFile.AppendLine($"\\textbf{{Mehrwertsteuer {quoteVM.VAT}\\%}} & \\SI{{{(float)quoteVM.TotalNet * quoteVM.VAT / 100}}}{{\\sieuro}}\\\\");
_ = texFile.AppendLine($"\\textbf{{Gesamtsumme brutto}} & \\SI{{{(float)quoteVM.TotalNet * (1 + (quoteVM.VAT / 100))}}}{{\\sieuro}}\\\\"); _ = texFile.AppendLine($"\\textbf{{Gesamtsumme brutto}} & \\SI{{{(float)quoteVM.TotalNet * (1 + (quoteVM.VAT / 100))}}}{{\\sieuro}}\\\\");
@ -110,44 +117,75 @@ namespace Gremlin.Operations
//3PP-Disclaimer //3PP-Disclaimer
if (quoteVM.QuoteContains3PP) if (quoteVM.QuoteContains3PP)
{ {
_ = texFile.AppendLine("\\textbf{Hinweis zu Non-Agilent-Produkten}"); _ = texFile.AppendLine(Create3PPDisclaimer(quoteVM));
_ = texFile.Append($"Bitte beachten Sie, dass das/die o.g. Produkt/e "); }
//List all 3PP product numbers _ = texFile.AppendLine("\\textbf{Hinweis:}\\\\ \r\nFür den Verkauf der in diesem Angebot aufgeführten Standard-Produkte und -Services gelten die aktuellen \\emph{Agilent Geschäftsbedingungen} und alle sonstigen anwendbaren Zusatzbedingungen sowie zusätzliche Bedingungen, soweit darauf hier Bezug genommen wird. Soweit Produkte oder Services nach speziellen Kundenanforderungen hergestellt, konfiguriert oder angepasst werden, gelten für den Verkauf aller in diesem Angebot aufgeführten Produkte und Services die aktuellen \\emph{Agilent Geschäftsbedingungen für kundenspezifische Produkte} und alle sonstigen anwendbaren Zusatzbedingungen sowie zusätzliche Bedingungen, soweit darauf hier Bezug genommen wird. Eine Kopie der maßgeblichen Bedingungen ist entweder beigefügt oder wurde Ihnen bereits zur Verfügung gestellt. Sollten Sie keine Kopie erhalten haben oder eine weitere Kopie benötigen, setzen Sie sich bitte mit uns in Verbindung. Soweit Sie mit Agilent eine gesonderte Vereinbarung getroffen haben, die den Verkauf der in diesem Angebot aufgeführten Produkte und Services umfasst, sind die Bestimmungen dieser Vereinbarung anwendbar. Abweichende oder ergänzende Vereinbarungen, insbesondere widersprechende Geschäftsbedingungen, sind nur gültig, wenn sie ausdrücklich schriftlich vereinbart worden sind. Die angegebenen Daten zur Verfügbarkeit von Produkten und Services sind vorläufig. Die tatsächlichen Lieferzeiten bzw. Lieferperioden werden Ihnen bei Auftragsbestätigung mitgeteilt. Waren, Technologien oder Software, die aus den Vereinigten Staaten von Amerika (\\emph{USA}) oder anderen exportierenden Ländern ausgeführt werden, unterliegen den Ausfuhrbestimmungen der USA sowie anderer Rechtsordnungen. Bei Ausfuhr ist der Kunde dafür verantwortlich, dass die anwendbaren Ausfuhrbestimmungen eingehalten werden.\r\n\\end{small}\r\n \r\n\\begin{scriptsize}\r\nAgilent Technologies Sales \\& Services GmbH \\& Co. KG, Hewlett-Packard-Str. 8, 76337 Waldbronn\\\\\r\nSitz der Gesellschaft: Waldbronn, Amtsgericht: Mannheim, HRA 706631, WEEE-Reg.-Nr. DE 86631749\\\\\r\nPersönlich haftende Gesellschafterin: Agilent Technologies Sales \\& Services Verwaltungs-GmbH, Hewlett-Packard-Str. 8, 76337 Waldbronn\\\\\r\nSitz der persönlich haftenden Gesellschafterin: Waldbronn, Amtsgericht Mannheim, HRB 723773\\\\\r\nGeschäftsführer: Armin Jehle\r\n\\href{www.agilent.com}{www.agilent.com}\r\n\\end{scriptsize}\r\n\\end{document}");
List<LineItemVM> lineItemsWith3PP = quoteVM.LineItemsVM.Where(lI => lI.ProductLine == "3PP").ToList();
for (int i = 0; i < lineItemsWith3PP.Count; i++)
{
_ = i < lineItemsWith3PP.Count - 1
? texFile.Append($"{lineItemsWith3PP[i].ProductNumber}, ")
: texFile.Append($"{lineItemsWith3PP[i].ProductNumber}");
//Get all 3PP Supplier return texFile;
//List<Supllier> supllier3PP = lineItemWith3PP.ProductLine.Supplier; }
}
private static string CreateRBDisclaimer(QuoteVM quoteVM)
{
Random r = new();
string rbDisclaimer = "\\textbf{Wichtiger Hinweis zur Bestellung von überholten Geräten}\\\\\n";
rbDisclaimer += "Bitte beachten Sie, dass in der Regel nur wenige gebrauchte Geräte auf Lager sind und diese ohne die Möglichkeit einer Reservierung auf „first come, first serve“-Basis verkauft werden. Um lange Lieferzeiten zu vermeiden, sollte daher bei konkretem Interesse zunächst der Lagerstand überprüft werden. Die aktuellen Lagerbestände sind:\n";
List<LineItemVM> lineItemsWithRB = quoteVM.LineItemsVM.Where(lI => lI.ProductLine == "RB").ToList();
rbDisclaimer += "\\begin{center}\n\\begin{tabular}{clc}\n";
rbDisclaimer += "\\textbf{Modul} & \\textbf{Beschreibung} &\\textbf{Bestand}\\\\ \\hline \n";
_ = texFile.Append(" nicht von Agilent Technologies hergestellt wird/werden. Agilent Technologies lehnt daher jede Art der Haftung für Leistung, Qualität, Zuverlässigkeitund Lieferung für dieses/r Produkt/e ab."); foreach (LineItemVM lineItemWithRB in lineItemsWithRB)
_ = texFile.AppendLine($"Die Standardgewährleistung, einschließlich Schadensersatz für die Rechtsverletzung von intellektuellem Eigentum, liegt beim Hersteller bzw. Lieferanten des/r Produkt/e, solange nichts anders im Angebot von Agilent Technologies spezifiziert wird."); {
//_ = texFile.AppendLine("\\textbf{Hersteller:}"); int rbcount = r.Next(20) - 5; //Get count of RB?
//supllier3PP rbDisclaimer += $"{lineItemWithRB.ProductNumber} & {lineItemWithRB.CustomDescription.Heading} & {rbcount}\\\\ \n";
} }
rbDisclaimer += "\\end{tabular}\n\\end{center}\n";
_ = texFile.AppendLine("\\textbf{Hinweis:}\\\\ \r\nFür den Verkauf der in diesem Angebot aufgeführten Standard-Produkte und -Services gelten die aktuellen \\emph{Agilent Geschäftsbedingungen} und alle sonstigen anwendbaren Zusatzbedingungen sowie zusätzliche Bedingungen, soweit darauf hier Bezug genommen wird. Soweit Produkte oder Services nach speziellen Kundenanforderungen hergestellt, konfiguriert oder angepasst werden, gelten für den Verkauf aller in diesem Angebot aufgeführten Produkte und Services die aktuellen \\emph{Agilent Geschäftsbedingungen für kundenspezifische Produkte} und alle sonstigen anwendbaren Zusatzbedingungen sowie zusätzliche Bedingungen, soweit darauf hier Bezug genommen wird. Eine Kopie der maßgeblichen Bedingungen ist entweder beigefügt oder wurde Ihnen bereits zur Verfügung gestellt. Sollten Sie keine Kopie erhalten haben oder eine weitere Kopie benötigen, setzen Sie sich bitte mit uns in Verbindung. Soweit Sie mit Agilent eine gesonderte Vereinbarung getroffen haben, die den Verkauf der in diesem Angebot aufgeführten Produkte und Services umfasst, sind die Bestimmungen dieser Vereinbarung anwendbar. Abweichende oder ergänzende Vereinbarungen, insbesondere widersprechende Geschäftsbedingungen, sind nur gültig, wenn sie ausdrücklich schriftlich vereinbart worden sind. Die angegebenen Daten zur Verfügbarkeit von Produkten und Services sind vorläufig. Die tatsächlichen Lieferzeiten bzw. Lieferperioden werden Ihnen bei Auftragsbestätigung mitgeteilt. Waren, Technologien oder Software, die aus den Vereinigten Staaten von Amerika (\\emph{USA}) oder anderen exportierenden Ländern ausgeführt werden, unterliegen den Ausfuhrbestimmungen der USA sowie anderer Rechtsordnungen. Bei Ausfuhr ist der Kunde dafür verantwortlich, dass die anwendbaren Ausfuhrbestimmungen eingehalten werden.\r\n\\end{small}\r\n \r\n\\begin{scriptsize}\r\nAgilent Technologies Sales \\& Services GmbH \\& Co. KG, Hewlett-Packard-Str. 8, 76337 Waldbronn\\\\\r\nSitz der Gesellschaft: Waldbronn, Amtsgericht: Mannheim, HRA 706631, WEEE-Reg.-Nr. DE 86631749\\\\\r\nPersönlich haftende Gesellschafterin: Agilent Technologies Sales \\& Services Verwaltungs-GmbH, Hewlett-Packard-Str. 8, 76337 Waldbronn\\\\\r\nSitz der persönlich haftenden Gesellschafterin: Waldbronn, Amtsgericht Mannheim, HRB 723773\\\\\r\nGeschäftsführer: Armin Jehle\r\n\\href{www.agilent.com}{www.agilent.com}\r\n\\end{scriptsize}\r\n\\end{document}"); return rbDisclaimer;
}
return texFile; private static string Create3PPDisclaimer(QuoteVM quoteVM)
{
string dreipp = "\\textbf{Hinweis zu Non-Agilent-Produkten}\\\\ \n"
+ $"Bitte beachten Sie, dass das/die o.g. Produkt/e ";
//List all 3PP product numbers
List<LineItemVM> lineItemsWith3PP = quoteVM.LineItemsVM.Where(lI => lI.ProductLine == "3PP").ToList();
for (int i = 0; i < lineItemsWith3PP.Count; i++)
{
_ = i < lineItemsWith3PP.Count - 1
? dreipp += $"{lineItemsWith3PP[i].ProductNumber}, "
: dreipp += $"{lineItemsWith3PP[i].ProductNumber}";
//Get all 3PP Supplier
//List<Supllier> supllier3PP = lineItemWith3PP.ProductLine.Supplier;
}
dreipp += " nicht von Agilent Technologies hergestellt wird/werden. Agilent Technologies lehnt daher jede Art der Haftung für Leistung, Qualität, Zuverlässigkeitund Lieferung für dieses/r Produkt/e ab.\\\\\n"
+ $"Die Standardgewährleistung, einschließlich Schadensersatz für die Rechtsverletzung von intellektuellem Eigentum, liegt beim Hersteller bzw. Lieferanten des/r Produkt/e, solange nichts anders im Angebot von Agilent Technologies spezifiziert wird.\n";
//dreipp += "\\textbf{Hersteller:}";
//supllier3PP
return dreipp;
} }
private static string GetAnschreibenZeile(LineItemVM lineItemVM) private static string GetCoverletterRow(LineItemVM lineItemVM)
{ {
return lineItemVM.CustomDescription.CoverletterText is null or "" return lineItemVM.CustomDescription.CoverletterText is null or ""
? $"\\item {lineItemVM.CustomDescription.Heading} (\\#{lineItemVM.Position})" ? $"\\item {lineItemVM.CustomDescription.Heading} (\\#{lineItemVM.Position})\n"
: $"\\item {lineItemVM.CustomDescription.CoverletterText} (\\#{lineItemVM.Position})"; : $"\\item {lineItemVM.CustomDescription.CoverletterText} (\\#{lineItemVM.Position})\n";
} }
private static StringBuilder CreateHeading(QuoteVM quoteVM) private static string CreateCoverletter(QuoteVM quoteVM)
{ {
bool subitem = false; bool subitem = false;
StringBuilder anschreibenListe = new($"nachfolgend erhalten Sie Ihr gewünschtes Angebot über eine {quoteVM.QuoteType}.\\\\" + $"Es umfasst im Einzelnen:\n" + $"\\begin{{itemize}}"); string coverLetter = $"nachfolgend erhalten Sie Ihr gewünschtes Angebot über {quoteVM.QuoteType}.\\\\\n"
+ "Es umfasst im Einzelnen:\n"
+ "\\begin{itemize}\n";
foreach (LineItemVM lineItemVM in quoteVM.LineItemsVM) foreach (LineItemVM lineItemVM in quoteVM.LineItemsVM)
{ {
@ -157,7 +195,7 @@ namespace Gremlin.Operations
if (subitem) if (subitem)
{ {
//vorheriges Subitem schließen //vorheriges Subitem schließen
_ = anschreibenListe.AppendLine(@"\end{itemize}"); coverLetter += "\\end{itemize}\n";
subitem = false; subitem = false;
} }
} }
@ -167,21 +205,25 @@ namespace Gremlin.Operations
{ {
//neues Subitem //neues Subitem
subitem = true; subitem = true;
_ = anschreibenListe.AppendLine("\\begin{itemize}"); coverLetter += "\\begin{itemize}\n";
} }
} }
anschreibenListe.AppendLine(GetAnschreibenZeile(lineItemVM)); coverLetter += GetCoverletterRow(lineItemVM);
} }
if (subitem) if (subitem)
{ {
//wenn das letzte Item ein Subitem war //wenn das letzte Item ein Subitem war
_ = anschreibenListe.AppendLine("\\end{itemize}"); coverLetter += "\\end{itemize}\n";
} }
_ = anschreibenListe.AppendLine($"\\end{{itemize}}\r\n Für Rückfragen und Änderungswünsche stehe ich Ihnen gerne zur Verfügung.\\par \r\n Mit freundlichen Grüßen\\\\\r\n \\includegraphics[width = 5cm]{{signWoitschetzki.png}}\r\n \\vspace{{1cm}}"); coverLetter += $"\\end{{itemize}}\r\n"
+ "Für Rückfragen und Änderungswünsche stehe ich Ihnen gerne zur Verfügung.\\par\n"
+ "Mit freundlichen Grüßen\\\\\n"
+ "\\includegraphics[width = 5cm]{signWoitschetzki.png}\n"
+ "\\vspace{1cm} \\\\ \n";
return anschreibenListe; return coverLetter;
} }
} }

@ -80,7 +80,7 @@ namespace Gremlin.GremlinUI
private void ButCreateTex_Click(object sender, RoutedEventArgs e) private void ButCreateTex_Click(object sender, RoutedEventArgs e)
{ {
TexFileHandler.CreateTexAndOpen(quoteVM, cbBrutto.IsChecked, quoteVM.QuoteNumber, tbQuotePath.Text); TexHandler.CreateTexAndOpen(quoteVM);
} }
private void ButCreateQuote_Click(object sender, RoutedEventArgs e) private void ButCreateQuote_Click(object sender, RoutedEventArgs e)