using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Windows; using System.Windows.Input; using BS.Shared.Core; using BS.Shared.DataContracts; using BS.Shared.Extensions; using BS.Shared.Translation; using DevExpress.Xpf.Grid; namespace BeWo.View.Detail.Accounting { public partial class ServiceInvoiceCreatePopUpView : BeWoView { private BindingList _Dcs; private List _InvoiceNumbers; public ServiceInvoiceCreatePopUpView() { this.InitializeComponent(); this.CommandBindings.Add(new CommandBinding(ApplicationCommands.Close, (s, e) => { this._Dcs.Clear(); this.Fire(); })); this.grid_newInvoices.View.Loaded += (s, e) => ((TableView)this.grid_newInvoices.View).BestFitColumns(); } public event EventHandler>> Closed; public List ServiceInvoiceDcs { set { this._InvoiceNumbers = value.Select(i => i.InvoiceBase.InvoiceNumber).ToList(); this._Dcs = new BindingList(value); this.grid_newInvoices.ItemsSource = this._Dcs; SetzeWarnhinweis(); } } private void SetzeWarnhinweis() { if (_Dcs.Any(s => s.InvoiceBase.DiffErstellen)) { txtWarnhinweis.Text = Translator.Translate("Es wurden bereits Rechnungen im gewählten Zeitraum erstellt.\nWenn Sie keine Differenzrechnungen erstellen möchten,\nentfernen Sie bitte die entsprechenden Häkchen."); } } private void btn_SelectAllNeu(object sender, RoutedEventArgs e) { SetAllRowsSelection(true, false); } private void btn_SelectAllDiff(object sender, RoutedEventArgs e) { SetAllRowsSelection(false, true); } private void btn_DeselectAll(object sender, RoutedEventArgs e) { SetAllRowsSelection(false, false); } private void SetAllRowsSelection(bool selectNew, bool selectDiff) { var list = this.grid_newInvoices.ItemsSource as BindingList; if (list != null) { foreach (var item in list) { item.InvoiceBase.NeuErstellen = selectNew; item.InvoiceBase.DiffErstellen = selectDiff; } grid_newInvoices.RefreshData(); } } private void Fire() { if (this.Closed != null) { for (int i = 0; i < this._Dcs.Count; i++) { this._Dcs[i].InvoiceBase.InvoiceNumber = this._InvoiceNumbers[i]; } this.Closed(this, new EventArgs>(new List(this._Dcs))); } } private void btn_cancel_Click(object sender, RoutedEventArgs e) { this._Dcs.Clear(); this.Fire(); } private void btn_create_Click(object sender, RoutedEventArgs e) { this.Fire(); } private void btn_delete_Click(object sender, RoutedEventArgs e) { this._Dcs.Remove(this.grid_newInvoices.GetCurrentValue()); } private void TableView_CellValueChanging(object sender, CellValueChangedEventArgs e) { var si = e.Row as ServiceInvoiceDC; if (e.Column.FieldName.Contains("NeuErstellen") && ((bool)e.Value)) { if (si.InvoiceBase.DiffErstellen) { si.InvoiceBase.DiffErstellen = false; grid_newInvoices.RefreshData(); } } else if (e.Column.FieldName.Contains("DiffErstellen") && ((bool)e.Value)) { if (si.InvoiceBase.NeuErstellen) { si.InvoiceBase.NeuErstellen = false; grid_newInvoices.RefreshData(); } } } } }