Files
BeWoPlaner/BeWo/View/Detail/Accounting/ServiceInvoiceCreatePopUpView.xaml.cs

137 lines
4.6 KiB
C#

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<ServiceInvoiceDC> _Dcs;
private List<string> _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<EventArgs<List<ServiceInvoiceDC>>> Closed;
public List<ServiceInvoiceDC> ServiceInvoiceDcs
{
set
{
this._InvoiceNumbers = value.Select(i => i.InvoiceBase.InvoiceNumber).ToList();
this._Dcs = new BindingList<ServiceInvoiceDC>(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<ServiceInvoiceDC>;
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<List<ServiceInvoiceDC>>(new List<ServiceInvoiceDC>(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<ServiceInvoiceDC>());
}
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();
}
}
}
}
}