From fc2718c81e30c6c028f6da107cd19c0180e6fa9e Mon Sep 17 00:00:00 2001 From: Sascha Woitschetzki Date: Thu, 1 Jul 2021 21:27:57 +0200 Subject: [PATCH] added LineItemViewModel to ShellView --- Gremlin/MVVM/MainWindow.xaml.cs | 4 +-- Gremlin/MVVM/Operations/TexHandler.cs | 14 ++++---- Gremlin/MVVM/QuoteUI.xaml.cs | 16 ++++----- .../{AccountVM.cs => AccountViewModel.cs} | 16 ++++----- .../{BaseVM.cs => BaseViewModel.cs} | 2 +- .../{ContactVM.cs => ContactViewModel.cs} | 34 +++++++++---------- .../ViewModels/CustomDescriptionViewModel.cs | 2 +- .../{LineItemVM.cs => LineItemViewModel.cs} | 24 ++++++------- Gremlin/MVVM/ViewModels/QuoteViewModel.cs | 22 ++++++------ Gremlin/MVVM/ViewModels/ShellViewModel.cs | 8 ++--- Gremlin/MVVM/Views/LineItemView.xaml | 14 ++++++++ Gremlin/MVVM/Views/LineItemView.xaml.cs | 12 +++++++ Gremlin/MVVM/Views/ShellView.xaml | 3 +- 13 files changed, 98 insertions(+), 73 deletions(-) rename Gremlin/MVVM/ViewModels/{AccountVM.cs => AccountViewModel.cs} (80%) rename Gremlin/MVVM/ViewModels/{BaseVM.cs => BaseViewModel.cs} (89%) rename Gremlin/MVVM/ViewModels/{ContactVM.cs => ContactViewModel.cs} (83%) rename Gremlin/MVVM/ViewModels/{LineItemVM.cs => LineItemViewModel.cs} (87%) create mode 100644 Gremlin/MVVM/Views/LineItemView.xaml create mode 100644 Gremlin/MVVM/Views/LineItemView.xaml.cs diff --git a/Gremlin/MVVM/MainWindow.xaml.cs b/Gremlin/MVVM/MainWindow.xaml.cs index 13d494b..30c4862 100644 --- a/Gremlin/MVVM/MainWindow.xaml.cs +++ b/Gremlin/MVVM/MainWindow.xaml.cs @@ -109,13 +109,13 @@ namespace Gremlin.MVVM private void BtnShowAccountList_Click(object sender, RoutedEventArgs e) { - ObservableCollection accounts = new(AccountVM.GetAllAccountsVM()); + ObservableCollection accounts = new(AccountViewModel.GetAllAccountsVM()); dg_Test.ItemsSource = accounts; } private void BtnShowContactList_Click(object sender, RoutedEventArgs e) { - ObservableCollection contacts = new(ContactVM.GetAllContactsVM()); + ObservableCollection contacts = new(ContactViewModel.GetAllContactsVM()); dg_Test.ItemsSource = contacts; } } diff --git a/Gremlin/MVVM/Operations/TexHandler.cs b/Gremlin/MVVM/Operations/TexHandler.cs index aa17218..633fea2 100644 --- a/Gremlin/MVVM/Operations/TexHandler.cs +++ b/Gremlin/MVVM/Operations/TexHandler.cs @@ -41,7 +41,7 @@ namespace Gremlin.MVVM _ = texFile.AppendLine($"Mobil:&{RUSettingModel.GetSettingValue(Properties.Settings.Default.userSettingID, "userMobile")}\\\\"); _ = texFile.AppendLine($"E-Mail:&\\href{{mailto:{RUSettingModel.GetSettingValue(Properties.Settings.Default.userSettingID, "userMail")}}}{{{RUSettingModel.GetSettingValue(Properties.Settings.Default.userSettingID, "userMail")}}}\\\\"); _ = texFile.AppendLine("\\textbf{Auftragsannahme:}&\\href{mailto:salesservices\\_germany@agilent.com}{salesservices\\_germany@agilent.com}\\\\\n\\hline\n\\end{tabular}\n}\\\\"); - if (quoteVM.Recipient != null) _ = texFile.Append(ContactVM.CreateBriefkopf(quoteVM.Recipient, true)); + if (quoteVM.Recipient != null) _ = texFile.Append(ContactViewModel.CreateBriefkopf(quoteVM.Recipient, true)); _ = texFile.AppendLine("&\\\\\n&\\\\\n\\end{tabular}\n\\vspace{1cm}\\par "); //Anrede @@ -84,7 +84,7 @@ namespace Gremlin.MVVM _ = texFile.AppendLine(@"\textbf{\#} & \textbf{Produktbeschreibung} (Produktnummer) & \textbf{Menge}\\ \hline \endhead"); } - foreach (LineItemVM lI in quoteVM.LineItemsVM) + foreach (LineItemViewModel lI in quoteVM.LineItemsVM) { string lineItemTex = ""; @@ -156,11 +156,11 @@ namespace Gremlin.MVVM 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 lineItemsWithRB = quoteVM.LineItemsVM.Where(lI => lI.ProductLine == "RB").ToList(); + List 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"; - foreach (LineItemVM lineItemWithRB in lineItemsWithRB) + foreach (LineItemViewModel lineItemWithRB in lineItemsWithRB) { int rbcount = r.Next(20) - 5; //Get count of RB? rbDisclaimer += $"{lineItemWithRB.ProductNumber} & {lineItemWithRB.CustomDescriptionVM.Heading} & {rbcount}\\\\ \n"; @@ -176,7 +176,7 @@ namespace Gremlin.MVVM + $"Bitte beachten Sie, dass das/die o.g. Produkt/e "; //List all 3PP product numbers - List lineItemsWith3PP = quoteVM.LineItemsVM.Where(lI => lI.ProductLine == "3PP").ToList(); + List lineItemsWith3PP = quoteVM.LineItemsVM.Where(lI => lI.ProductLine == "3PP").ToList(); for (int i = 0; i < lineItemsWith3PP.Count; i++) { _ = i < lineItemsWith3PP.Count - 1 @@ -196,7 +196,7 @@ namespace Gremlin.MVVM return dreipp; } - private static string GetCoverletterRow(LineItemVM lineItemVM) + private static string GetCoverletterRow(LineItemViewModel lineItemVM) { return lineItemVM.CustomDescriptionVM.CoverletterText is null or "" ? $"\\item {lineItemVM.CustomDescriptionVM.Heading} (\\#{lineItemVM.Position})\n" @@ -211,7 +211,7 @@ namespace Gremlin.MVVM + "Es umfasst im Einzelnen:\n" + "\\begin{itemize}\n"; - foreach (LineItemVM lineItemVM in quoteVM.LineItemsVM) + foreach (LineItemViewModel lineItemVM in quoteVM.LineItemsVM) { if (lineItemVM.OptionNumber == "") { diff --git a/Gremlin/MVVM/QuoteUI.xaml.cs b/Gremlin/MVVM/QuoteUI.xaml.cs index cc142cd..361e9a4 100644 --- a/Gremlin/MVVM/QuoteUI.xaml.cs +++ b/Gremlin/MVVM/QuoteUI.xaml.cs @@ -9,8 +9,8 @@ namespace Gremlin.MVVM public partial class QuoteUI : Window { private static ListCollectionView listCollectionContacts = new(new ObservableCollection()); - private static ListCollectionView lineItems = new(new ObservableCollection()); - private QuoteViewModel quoteVM = new(ContactVM.GetSalesRepAsContact(1)); + private static ListCollectionView lineItems = new(new ObservableCollection()); + private QuoteViewModel quoteVM = new(ContactViewModel.GetSalesRepAsContact(1)); public QuoteUI() { @@ -25,20 +25,20 @@ namespace Gremlin.MVVM private void LoadContacts() { - listCollectionContacts = new(ContactVM.GetAllContactsVM()); - listCollectionContacts.Filter = ContactVM.SearchContact(listCollectionContacts, tbContactSearch.Text); + listCollectionContacts = new(ContactViewModel.GetAllContactsVM()); + listCollectionContacts.Filter = ContactViewModel.SearchContact(listCollectionContacts, tbContactSearch.Text); dgFoundContacts.ItemsSource = listCollectionContacts; UpdateUI(); } private void TbContactSearch_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e) { - listCollectionContacts.Filter = ContactVM.SearchContact(listCollectionContacts, tbContactSearch.Text); + listCollectionContacts.Filter = ContactViewModel.SearchContact(listCollectionContacts, tbContactSearch.Text); } private void DgFoundContacts_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e) { - quoteVM.Recipient = ContactVM.ConvertObjectToContactVM(dgFoundContacts.SelectedItem); + quoteVM.Recipient = ContactViewModel.ConvertObjectToContactVM(dgFoundContacts.SelectedItem); } private void BtnPasteQuote_Click(object sender, RoutedEventArgs e) @@ -48,7 +48,7 @@ namespace Gremlin.MVVM int validity = int.TryParse(tbValidity.Text, out int defaultValidity) ? defaultValidity : 60; quoteVM = QuoteViewModel.CreateQuote(tbQuoteNumber.Text, - ContactVM.ConvertObjectToContactVM(dgFoundContacts.SelectedItem), + ContactViewModel.ConvertObjectToContactVM(dgFoundContacts.SelectedItem), quoteVM.SalesRep, vat, tbQuoteType.Text, @@ -65,7 +65,7 @@ namespace Gremlin.MVVM if (quoteVM == null) return; - ObservableCollection lineItemsViewModel = new(quoteVM.LineItemsVM); + ObservableCollection lineItemsViewModel = new(quoteVM.LineItemsVM); lineItems = new(lineItemsViewModel); UpdateUI(); } diff --git a/Gremlin/MVVM/ViewModels/AccountVM.cs b/Gremlin/MVVM/ViewModels/AccountViewModel.cs similarity index 80% rename from Gremlin/MVVM/ViewModels/AccountVM.cs rename to Gremlin/MVVM/ViewModels/AccountViewModel.cs index 57c1f46..22b5abf 100644 --- a/Gremlin/MVVM/ViewModels/AccountVM.cs +++ b/Gremlin/MVVM/ViewModels/AccountViewModel.cs @@ -8,7 +8,7 @@ using System.Linq; namespace Gremlin.MVVM { - internal class AccountVM : BaseVM + internal class AccountViewModel : BaseViewModel { public uint SAPAccountNumber { get; set; } public string AccountName { get; set; } @@ -19,18 +19,18 @@ namespace Gremlin.MVVM public string FaxNumber { get; set; } public string Webpage { get; set; } public string EMail { get; set; } - public ICollection Contacts { get; set; } + public ICollection Contacts { get; set; } public AccountType AccountType { get; set; } public SubMarket SubMarket { get; set; } - public static ObservableCollection GetAllAccountsVM() + public static ObservableCollection GetAllAccountsVM() { try { using (GremlinContext gremlinContext = new()) { List accounts = gremlinContext.Accounts.Include(account => account.Contacts).ToList(); - ObservableCollection accountsVM = new(); + ObservableCollection accountsVM = new(); foreach (Account account in accounts) { @@ -48,9 +48,9 @@ namespace Gremlin.MVVM } } - public static AccountVM ConvertAccountToVM(Account account) + public static AccountViewModel ConvertAccountToVM(Account account) { - AccountVM accountVM = new(); + AccountViewModel accountVM = new(); accountVM.AccountType = account.AccountType; accountVM.SubMarket = account.SubMarket; @@ -64,10 +64,10 @@ namespace Gremlin.MVVM accountVM.EMail = account.EMail; accountVM.SAPAccountNumber = account.SAPAccountNumber; - List contactsVM = new(); + List contactsVM = new(); foreach (Contact contact in account.Contacts) { - contactsVM.Add(ContactVM.ConvertContactToVM(contact)); + contactsVM.Add(ContactViewModel.ConvertContactToVM(contact)); } accountVM.Contacts = contactsVM; diff --git a/Gremlin/MVVM/ViewModels/BaseVM.cs b/Gremlin/MVVM/ViewModels/BaseViewModel.cs similarity index 89% rename from Gremlin/MVVM/ViewModels/BaseVM.cs rename to Gremlin/MVVM/ViewModels/BaseViewModel.cs index 982916a..e12f732 100644 --- a/Gremlin/MVVM/ViewModels/BaseVM.cs +++ b/Gremlin/MVVM/ViewModels/BaseViewModel.cs @@ -4,7 +4,7 @@ using System.Runtime.CompilerServices; namespace Gremlin.MVVM { - public class BaseVM : INotifyPropertyChanged + public class BaseViewModel : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; diff --git a/Gremlin/MVVM/ViewModels/ContactVM.cs b/Gremlin/MVVM/ViewModels/ContactViewModel.cs similarity index 83% rename from Gremlin/MVVM/ViewModels/ContactVM.cs rename to Gremlin/MVVM/ViewModels/ContactViewModel.cs index dc3f7f6..783f27b 100644 --- a/Gremlin/MVVM/ViewModels/ContactVM.cs +++ b/Gremlin/MVVM/ViewModels/ContactViewModel.cs @@ -10,7 +10,7 @@ using Gremlin.GremlinData.EntityClasses; namespace Gremlin.MVVM { - public class ContactVM : BaseVM + public class ContactViewModel : BaseViewModel { public byte Gender { get; private set; } public string FirstName { get; private set; } @@ -21,9 +21,9 @@ namespace Gremlin.MVVM public uint AccountZIP { get; private set; } public string AccountCity { get; private set; } - public ContactVM() { } + public ContactViewModel() { } - public ContactVM(byte gender, string firstName, string lastName, string eMail, string accountName, string accountStreet, uint accountZIP, string accountCity) + public ContactViewModel(byte gender, string firstName, string lastName, string eMail, string accountName, string accountStreet, uint accountZIP, string accountCity) { Gender = gender; FirstName = firstName ?? throw new ArgumentNullException(nameof(firstName)); @@ -35,14 +35,14 @@ namespace Gremlin.MVVM AccountCity = accountCity ?? throw new ArgumentNullException(nameof(accountCity)); } - internal static ContactVM ConvertObjectToContactVM(object selectedItem) + internal static ContactViewModel ConvertObjectToContactVM(object selectedItem) { - ContactVM selectedContact = new(); + ContactViewModel selectedContact = new(); if (selectedItem != CollectionView.NewItemPlaceholder) { //TryCast - selectedContact = selectedItem as ContactVM; + selectedContact = selectedItem as ContactViewModel; //if failed == null if (selectedContact == null) @@ -65,7 +65,7 @@ namespace Gremlin.MVVM { return listCollectionContacts.Filter = (c) => { - ContactVM contact = c as ContactVM; + ContactViewModel contact = c as ContactViewModel; return contact.LastName.ToLower().Contains(search.ToLower()) || contact.FirstName.ToLower().Contains(search.ToLower()) || contact.AccountName.ToLower().Contains(search.ToLower()) @@ -78,17 +78,17 @@ namespace Gremlin.MVVM return selectedItem != null ? selectedItem == CollectionView.NewItemPlaceholder ? "Bitte neuen Kontakt erstellen" - : CreateBriefkopf(selectedItem as ContactVM).ToString() + : CreateBriefkopf(selectedItem as ContactViewModel).ToString() : "Kein Kontakt gefunden!"; } - internal static ContactVM GetSalesRepAsContact(int SalesRepCode) + internal static ContactViewModel GetSalesRepAsContact(int SalesRepCode) { switch (SalesRepCode) { case 1: { - ContactVM salesRepWoitschetzki = new((byte)Enums.Gender.Male, + ContactViewModel salesRepWoitschetzki = new((byte)Enums.Gender.Male, "Sascha", "Woitschetzki", "sascha.woitschetzki@non.agilent.com", @@ -101,7 +101,7 @@ namespace Gremlin.MVVM case 2: { - ContactVM salesRepWelsch = new((byte)Enums.Gender.Male, + ContactViewModel salesRepWelsch = new((byte)Enums.Gender.Male, "Sebastian", "Welsch", "sebastian.welsch@non.agilent.com", @@ -114,20 +114,20 @@ namespace Gremlin.MVVM default: { - ContactVM salesRep = new(); + ContactViewModel salesRep = new(); return salesRep; } } } - public static ObservableCollection GetAllContactsVM() + public static ObservableCollection GetAllContactsVM() { try { using (GremlinContext gremlinContext = new()) { List contacts = gremlinContext.Contacts.Include(contact => contact.Account).ToList(); - ObservableCollection contactsVM = new(); + ObservableCollection contactsVM = new(); foreach (Contact contact in contacts) { @@ -145,9 +145,9 @@ namespace Gremlin.MVVM } } - public static ContactVM ConvertContactToVM(Contact contact) + public static ContactViewModel ConvertContactToVM(Contact contact) { - ContactVM contactVM = new(); + ContactViewModel contactVM = new(); contactVM.Gender = contact.Gender; contactVM.LastName = contact.LastName; contactVM.FirstName = contact.FirstName; @@ -162,7 +162,7 @@ namespace Gremlin.MVVM return contactVM; } - internal static StringBuilder CreateBriefkopf(ContactVM contactVM, bool tex = false) + internal static StringBuilder CreateBriefkopf(ContactViewModel contactVM, bool tex = false) { StringBuilder briefkopf = new(); diff --git a/Gremlin/MVVM/ViewModels/CustomDescriptionViewModel.cs b/Gremlin/MVVM/ViewModels/CustomDescriptionViewModel.cs index 69d02ac..fac7ed0 100644 --- a/Gremlin/MVVM/ViewModels/CustomDescriptionViewModel.cs +++ b/Gremlin/MVVM/ViewModels/CustomDescriptionViewModel.cs @@ -14,7 +14,7 @@ namespace Gremlin.MVVM public override string ToString() => $"{Heading}"; - internal static CustomDescriptionViewModel GetCustomDescription(LineItemVM lineItemVM) + internal static CustomDescriptionViewModel GetCustomDescription(LineItemViewModel lineItemVM) { string tempOptionNumber; using (GremlinContext gremlinContext = new()) diff --git a/Gremlin/MVVM/ViewModels/LineItemVM.cs b/Gremlin/MVVM/ViewModels/LineItemViewModel.cs similarity index 87% rename from Gremlin/MVVM/ViewModels/LineItemVM.cs rename to Gremlin/MVVM/ViewModels/LineItemViewModel.cs index 83eb172..d06bd47 100644 --- a/Gremlin/MVVM/ViewModels/LineItemVM.cs +++ b/Gremlin/MVVM/ViewModels/LineItemViewModel.cs @@ -5,7 +5,7 @@ using System.Windows; namespace Gremlin.MVVM { - public class LineItemVM : BaseVM + public class LineItemViewModel : BaseViewModel { public ushort Position { get; private set; } public ushort Amount { get; internal set; } @@ -19,10 +19,10 @@ namespace Gremlin.MVVM public decimal CalcTotalNet { get; private set; } public decimal ListPrice { get; private set; } - internal static ObservableCollection ReadLineItemsFromClipboard () + internal static ObservableCollection ReadLineItemsFromClipboard () { if (Clipboard.GetText() != "") - { + { string clipboard = Clipboard.GetText(); //Zeilen aufteilen @@ -48,9 +48,9 @@ namespace Gremlin.MVVM } } - public static ObservableCollection ParseClipboardList(IEnumerable lineItemStrings) + public static ObservableCollection ParseClipboardList(IEnumerable lineItemStrings) { - ObservableCollection lineItems = new(); + ObservableCollection lineItems = new(); int countError = 0; int countEmpty = 0; @@ -67,7 +67,7 @@ namespace Gremlin.MVVM } //Dateiinhalt in Klasse schreiben - LineItemVM lineItem = new(); + LineItemViewModel lineItem = new(); lineItem.Position = ushort.Parse(lineItemString[0]); lineItem.ProductNumber = lineItemString[1]; lineItem.OptionNumber = lineItemString[2]; @@ -105,30 +105,30 @@ namespace Gremlin.MVVM return lineItems; } - internal static decimal GetTotalNet(ObservableCollection lineItems) + internal static decimal GetTotalNet(ObservableCollection lineItems) { decimal totalNet = 0; - foreach (LineItemVM lineItem in lineItems) + foreach (LineItemViewModel lineItem in lineItems) { totalNet += lineItem.CalcNetPrice; } return totalNet; } - internal static decimal GetTotalDiscount(ObservableCollection lineItems) + internal static decimal GetTotalDiscount(ObservableCollection lineItems) { decimal totalDiscount = 0; - foreach (LineItemVM lineItem in lineItems) + foreach (LineItemViewModel lineItem in lineItems) { totalDiscount += lineItem.TotalDiscount; } return totalDiscount; } - internal static decimal GetTotalListprice(ObservableCollection lineItems) + internal static decimal GetTotalListprice(ObservableCollection lineItems) { decimal totalListprice = 0; - foreach (LineItemVM lineItem in lineItems) + foreach (LineItemViewModel lineItem in lineItems) { totalListprice += lineItem.ListPrice; } diff --git a/Gremlin/MVVM/ViewModels/QuoteViewModel.cs b/Gremlin/MVVM/ViewModels/QuoteViewModel.cs index 24ad641..f7040f6 100644 --- a/Gremlin/MVVM/ViewModels/QuoteViewModel.cs +++ b/Gremlin/MVVM/ViewModels/QuoteViewModel.cs @@ -10,9 +10,9 @@ namespace Gremlin.MVVM { private string _quoteType = "ein Analysegerät"; private string _quotePath; - private List _lineItemsVM; - private ContactVM _recipient; - private ContactVM _salesRep; + private List _lineItemsVM; + private ContactViewModel _recipient; + private ContactViewModel _salesRep; private string _quoteNumber; private int _warranty = 12; private int _validity = 60; @@ -41,9 +41,9 @@ namespace Gremlin.MVVM public bool? UseMailTemplate { get => _useMailTemplate; internal set { _useMailTemplate = value; NotifyOfPropertyChange(() => UseMailTemplate); } } public bool? ShowDiscounts { get => _showDiscounts; internal set { _showDiscounts = value; NotifyOfPropertyChange(() => ShowDiscounts); } } - public List LineItemsVM { get => _lineItemsVM; private set => _lineItemsVM = value; } - public ContactVM Recipient { get => _recipient; internal set => _recipient = value; } - public ContactVM SalesRep { get => _salesRep; private set => _salesRep = value; } + public List LineItemsVM { get => _lineItemsVM; private set => _lineItemsVM = value; } + public ContactViewModel Recipient { get => _recipient; internal set => _recipient = value; } + public ContactViewModel SalesRep { get => _salesRep; private set => _salesRep = value; } public decimal TotalListprice { get => _totalListprice; private set => _totalListprice = value; } public decimal AverageDiscount { get => _averageDiscount; private set => _averageDiscount = value; } public decimal TotalNet { get => _totalNet; private set => _totalNet = value; } @@ -51,7 +51,7 @@ namespace Gremlin.MVVM public bool QuoteContains3PP { get => _quoteContains3PP; private set => _quoteContains3PP = value; } public bool QuoteContainsRB { get => _quoteContainsRB; private set => _quoteContainsRB = value; } - internal QuoteViewModel(ContactVM salesRep) + internal QuoteViewModel(ContactViewModel salesRep) { Random random = new(); SalesRep = salesRep; @@ -65,7 +65,7 @@ namespace Gremlin.MVVM public QuoteViewModel() { } - private QuoteViewModel(string quoteNumber, string quoteType, ContactVM recipient, ContactVM salesRep, bool? brutto, float vAT, int warranty, int validity, string quotePath, bool? singlePrices, bool? brochures, bool? dataSheets, bool? mailTemplate, bool? showDiscounts) + private QuoteViewModel(string quoteNumber, string quoteType, ContactViewModel recipient, ContactViewModel salesRep, bool? brutto, float vAT, int warranty, int validity, string quotePath, bool? singlePrices, bool? brochures, bool? dataSheets, bool? mailTemplate, bool? showDiscounts) { QuoteNumber = quoteNumber; QuoteType = quoteType; @@ -83,7 +83,7 @@ namespace Gremlin.MVVM ShowDiscounts = showDiscounts; } - internal static QuoteViewModel CreateQuote(string quoteNumber, ContactVM recipient, ContactVM salesRep, float vAT = 19f, string quoteType = "ein Analysegerät", bool? brutto = true, int warranty = 12, bool? singlePrices = true, bool? brochures = true, bool? dataSheets = true, bool? mailTemplate = true, string quotePath = "", int validity = 60, bool? showDiscounts = true) + internal static QuoteViewModel CreateQuote(string quoteNumber, ContactViewModel recipient, ContactViewModel salesRep, float vAT = 19f, string quoteType = "ein Analysegerät", bool? brutto = true, int warranty = 12, bool? singlePrices = true, bool? brochures = true, bool? dataSheets = true, bool? mailTemplate = true, string quotePath = "", int validity = 60, bool? showDiscounts = true) { decimal totalListprice = 0, totalDiscount = 0, calcTotalNet = 0; bool quoteContains3PP = false, quoteContainsRB = false; @@ -91,11 +91,11 @@ namespace Gremlin.MVVM QuoteViewModel quoteVM = new(quoteNumber, quoteType, recipient, salesRep, brutto, vAT, warranty, validity, quotePath, singlePrices, brochures, dataSheets, mailTemplate, showDiscounts); quoteVM.LineItemsVM = new(); - ObservableCollection lineItemsVM = LineItemVM.ReadLineItemsFromClipboard(); + ObservableCollection lineItemsVM = LineItemViewModel.ReadLineItemsFromClipboard(); if (lineItemsVM == null) return null; - foreach (LineItemVM lineItemVM in lineItemsVM) + foreach (LineItemViewModel lineItemVM in lineItemsVM) { totalListprice += lineItemVM.ListPrice; totalDiscount += lineItemVM.TotalDiscount; diff --git a/Gremlin/MVVM/ViewModels/ShellViewModel.cs b/Gremlin/MVVM/ViewModels/ShellViewModel.cs index 0c396f3..ab760a6 100644 --- a/Gremlin/MVVM/ViewModels/ShellViewModel.cs +++ b/Gremlin/MVVM/ViewModels/ShellViewModel.cs @@ -2,15 +2,13 @@ { public class ShellViewModel { - public QuoteViewModel QuoteVM - { - get; - set; - } + public QuoteViewModel QuoteVM { get; set; } + public LineItemViewModel LineVM { get; set; } public ShellViewModel() { QuoteVM = new QuoteViewModel(); + LineVM = new LineItemViewModel(); } } } diff --git a/Gremlin/MVVM/Views/LineItemView.xaml b/Gremlin/MVVM/Views/LineItemView.xaml new file mode 100644 index 0000000..345ff91 --- /dev/null +++ b/Gremlin/MVVM/Views/LineItemView.xaml @@ -0,0 +1,14 @@ + + + + + + + + diff --git a/Gremlin/MVVM/Views/LineItemView.xaml.cs b/Gremlin/MVVM/Views/LineItemView.xaml.cs new file mode 100644 index 0000000..0d1bf1f --- /dev/null +++ b/Gremlin/MVVM/Views/LineItemView.xaml.cs @@ -0,0 +1,12 @@ +using System.Windows.Controls; + +namespace Gremlin.MVVM +{ + public partial class LineItemView : UserControl + { + public LineItemView() + { + InitializeComponent(); + } + } +} diff --git a/Gremlin/MVVM/Views/ShellView.xaml b/Gremlin/MVVM/Views/ShellView.xaml index 6063fb7..3edcf03 100644 --- a/Gremlin/MVVM/Views/ShellView.xaml +++ b/Gremlin/MVVM/Views/ShellView.xaml @@ -6,7 +6,8 @@ xmlns:cal="http://www.caliburnproject.org" xmlns:local="clr-namespace:Gremlin.MVVM" mc:Ignorable="d" > - + + \ No newline at end of file