628 lines
25 KiB
C#
628 lines
25 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Documents;
|
|
using System.Windows.Media;
|
|
using System.Windows.Navigation;
|
|
using System.Windows.Threading;
|
|
using BeWo.Core;
|
|
using BeWo.ServiceProxy;
|
|
using BeWo.ViewModel;
|
|
using BeWo.ViewModel.ListViewModel;
|
|
|
|
using BS.Shared;
|
|
using BS.Shared.Core;
|
|
using BS.Shared.DataContracts;
|
|
using BS.Shared.Extensions;
|
|
using BS.Shared.Translation;
|
|
using DevExpress.Xpf.Editors;
|
|
using DevExpress.Xpf.Grid;
|
|
using Microsoft.Win32;
|
|
|
|
namespace BeWo.View.Detail.Accounting
|
|
{
|
|
public partial class InvoiceOverview : BeWoView
|
|
{
|
|
private readonly EquityInvoiceItemEditView _EquityInvoiceItemEditView;
|
|
|
|
private readonly GeneralInvoiceItemEditView _GeneralInvoiceItemEditView;
|
|
|
|
private readonly SettlementInvoiceItemEditView _SettlementInvoiceItemEditView;
|
|
|
|
private readonly SettlementInvoiceItemEditView2 _SettlementInvoiceItemEditView2;
|
|
|
|
private readonly ServiceInvoiceItemEditView _ServiceInvoiceItemEditView;
|
|
|
|
private InvoiceBaseListVM _Viewmodel;
|
|
|
|
private bool mIgnoreCheckChanges = false;
|
|
|
|
public InvoiceOverview(InvoiceBaseListVM vm)
|
|
{
|
|
this.InitializeComponent();
|
|
this.ViewModel = vm;
|
|
this.DownloadLinkEngine = new DownloadLinkEngine();
|
|
this.linkExcelExport.NavigateUri = this.DownloadLinkEngine.GenerateNewExcelLink();
|
|
this.linkPdfExport.NavigateUri = new Uri("http://www.ownsoft.de");
|
|
|
|
this.gridView.ShownEditor += this.gridView_ShownEditor;
|
|
//this.gridView.HiddenEditor += new EditorEventHandler(gridView_HiddenEditor);
|
|
this._EquityInvoiceItemEditView = new EquityInvoiceItemEditView();
|
|
this._GeneralInvoiceItemEditView = new GeneralInvoiceItemEditView();
|
|
this._SettlementInvoiceItemEditView = new SettlementInvoiceItemEditView();
|
|
this._SettlementInvoiceItemEditView2 = new SettlementInvoiceItemEditView2();
|
|
this._ServiceInvoiceItemEditView = new ServiceInvoiceItemEditView();
|
|
|
|
this.ViewModel.DateTimeSpanFilter = this.yearMonthFilter.FilterSpan;
|
|
RefreshInvoiceList();
|
|
|
|
CheckRights();
|
|
|
|
this._EquityInvoiceItemEditView.EditingFinished += (s, e) =>
|
|
{
|
|
this.MainControl.CloseCurrentPopUp();
|
|
ServiceFacade.DoAccountingServiceAsync(se => se.LoadInvoiceBaseByOid(this._EquityInvoiceItemEditView.ViewModel.DataContract.InvoiceBaseOid.Value), cb => this.RefreshItemInList(cb));
|
|
};
|
|
|
|
this._GeneralInvoiceItemEditView.EditingFinished += (s, e) =>
|
|
{
|
|
this.MainControl.CloseCurrentPopUp();
|
|
ServiceFacade.DoAccountingServiceAsync(se => se.LoadInvoiceBaseByOid(this._GeneralInvoiceItemEditView.ViewModel.DataContract.InvoiceBaseOid.Value), cb => this.RefreshItemInList(cb));
|
|
};
|
|
|
|
this._SettlementInvoiceItemEditView.EditingFinished += (s, e) =>
|
|
{
|
|
this.MainControl.CloseCurrentPopUp();
|
|
ServiceFacade.DoAccountingServiceAsync(se => se.LoadInvoiceBaseByOid(this._SettlementInvoiceItemEditView.ViewModel.DataContract.InvoiceBaseOid.Value), cb => this.RefreshItemInList(cb));
|
|
};
|
|
|
|
this._SettlementInvoiceItemEditView2.EditingFinished += (s, e) =>
|
|
{
|
|
this.MainControl.CloseCurrentPopUp();
|
|
ServiceFacade.DoAccountingServiceAsync(se => se.LoadInvoiceBaseByOid(this._SettlementInvoiceItemEditView2.ViewModel.DataContract.InvoiceBaseOid.Value), cb => this.RefreshItemInList(cb));
|
|
};
|
|
|
|
this._ServiceInvoiceItemEditView.EditingFinished += (s, e) =>
|
|
{
|
|
this.MainControl.CloseCurrentPopUp();
|
|
ServiceFacade.DoAccountingServiceAsync(se => se.LoadInvoiceBaseByOid(this._ServiceInvoiceItemEditView.ViewModel.DataContract.InvoiceBase.InvoiceBaseOid.Value), cb => this.RefreshItemInList(cb));
|
|
};
|
|
}
|
|
|
|
private void CheckRights()
|
|
{
|
|
if (!BeWoApp.AppSettings.AllowStorno)
|
|
{
|
|
ColumnButtons.MinWidth = 67;
|
|
}
|
|
|
|
}
|
|
|
|
private void RefreshInvoiceList()
|
|
{
|
|
DateTime? start = null;
|
|
DateTime? end = null;
|
|
if (ViewModel.DateTimeSpanFilter != null)
|
|
{
|
|
start = ViewModel.DateTimeSpanFilter.StartDate;
|
|
end = ViewModel.DateTimeSpanFilter.EndDate;
|
|
}
|
|
bool filterByInvoiceDate = radioFilterByInvoiceDate.IsChecked.Value;
|
|
|
|
ServiceFacade.DoAccountingServiceAsync(s => s.GetInvoiceBases2(start, end, filterByInvoiceDate), UpdateInvoiceList);
|
|
}
|
|
|
|
private void UpdateInvoiceList(IList<InvoiceBaseDC> dcList)
|
|
{
|
|
this.Dispatcher.BeginInvoke(
|
|
DispatcherPriority.Normal,
|
|
(Action)delegate
|
|
{
|
|
ViewModel.UpdateList(dcList);
|
|
this.gridView.BestFitColumns();
|
|
});
|
|
}
|
|
|
|
public DownloadLinkEngine DownloadLinkEngine { get; set; }
|
|
|
|
private InvoiceBaseListVM ViewModel
|
|
{
|
|
get
|
|
{
|
|
return this._Viewmodel;
|
|
}
|
|
|
|
set
|
|
{
|
|
this.DataContext = value;
|
|
this._Viewmodel = value;
|
|
}
|
|
}
|
|
|
|
private void RefreshItemInList(InvoiceBaseDC cb)
|
|
{
|
|
this.Dispatch(
|
|
delegate
|
|
{
|
|
var old = this.ViewModel.VMList.Single(i => i.DataContract.InvoiceBaseOid.Equals(cb.InvoiceBaseOid));
|
|
var lNew = new InvoiceBaseVM(cb);
|
|
|
|
this.ViewModel.VMList.Remove(old);
|
|
this.ViewModel.VMList.Add(lNew);
|
|
this.datagrid_invoices.RefreshData();
|
|
this.gridView.FocusedRow = lNew;
|
|
});
|
|
}
|
|
|
|
private void YearMonthFilter_FilterSpanChanged(object sender, EventArgs<DateTimeSpan> e)
|
|
{
|
|
mIgnoreCheckChanges = true;
|
|
this.ViewModel.DateTimeSpanFilter = e.Data;
|
|
RefreshInvoiceList();
|
|
mIgnoreCheckChanges = false;
|
|
}
|
|
|
|
private void btn_delete_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
var vm = this.datagrid_invoices.GetCurrentValue<InvoiceBaseVM>();
|
|
if (vm.IsSent && !BeWoApp.LoggedOnUser.HasRight(UserRightType.FinanzenRechnungenNachVersandBearbeiten))
|
|
{
|
|
MessageBox.Show(Translator.Translate("Sie besitzen nicht das Recht Rechnungen nach Versand zu bearbeiten. Bitte wenden Sie sich an den Administrator!"), "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Exclamation);
|
|
return;
|
|
}
|
|
mIgnoreCheckChanges = true;
|
|
|
|
if (MessageBox.Show("Sind Sie sicher, dass Sie die gewählte Rechnung löschen möchten?", "Rechnung löschen", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
|
|
{
|
|
if (vm.DataContract.Type == InvoiceType.Settlement)
|
|
{
|
|
this.ViewModel.VMList.Remove(vm);
|
|
ServiceFacade.DoAccountingServiceAsync(s => s.GetSettlementByInvoiceBaseOid(vm.DataContract.InvoiceBaseOid.Value), cb => ServiceFacade.DoAccountingServiceAsync(s1 => s1.DeactivateSettlementInvoice(new[] { cb }.ToList())));
|
|
}
|
|
else
|
|
{
|
|
this.ViewModel.VMList.Remove(vm);
|
|
ServiceFacade.DoAccountingServiceAsync(s => s.DeactivateInvoiceBases(new[] { vm.DataContract }.ToList()));
|
|
}
|
|
}
|
|
mIgnoreCheckChanges = false;
|
|
}
|
|
|
|
private void btn_storno_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
mIgnoreCheckChanges = true;
|
|
var vm = this.datagrid_invoices.GetCurrentValue<InvoiceBaseVM>();
|
|
|
|
if (MessageBox.Show("Sind Sie sicher, dass Sie die gewählte Rechnung stornieren möchten?", "Rechnung stornieren", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
|
|
{
|
|
ServiceFacade.DoAccountingServiceAsync(s => s.StorniereInvoiceBases(new[] { vm.DataContract }.ToList()),
|
|
() => this.Dispatch(
|
|
delegate
|
|
{
|
|
RefreshInvoiceList();
|
|
}));
|
|
}
|
|
|
|
mIgnoreCheckChanges = false;
|
|
}
|
|
|
|
private void btn_edit_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
var vm = this.datagrid_invoices.GetCurrentValue<InvoiceBaseVM>();
|
|
if (vm.IsSent && !BeWoApp.LoggedOnUser.HasRight(UserRightType.FinanzenRechnungenNachVersandBearbeiten))
|
|
{
|
|
MessageBox.Show(Translator.Translate("Sie besitzen nicht das Recht Rechnungen nach Versand zu bearbeiten. Bitte wenden Sie sich an den Administrator!"), "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Exclamation);
|
|
return;
|
|
}
|
|
switch (vm.DataContract.Type)
|
|
{
|
|
case InvoiceType.CustomerEquity:
|
|
this._EquityInvoiceItemEditView.ViewModel = vm;
|
|
this.MainControl.ShowControlAsModalPopup(this._EquityInvoiceItemEditView);
|
|
break;
|
|
|
|
case InvoiceType.General:
|
|
this._GeneralInvoiceItemEditView.ViewModel = vm;
|
|
this.MainControl.ShowControlAsModalPopup(this._GeneralInvoiceItemEditView);
|
|
break;
|
|
|
|
case InvoiceType.Settlement:
|
|
ServiceFacade.DoAccountingServiceAsync(
|
|
s => s.GetSettlementByInvoiceBaseOid(vm.DataContract.InvoiceBaseOid.Value),
|
|
cb => this.Dispatch(
|
|
delegate
|
|
{
|
|
if (cb.InvoiceItems == null || cb.InvoiceItems.Count == 0 || cb.DifferentHourlyRateCount > 0)
|
|
{
|
|
this._SettlementInvoiceItemEditView.ViewModel = new SettlementVM(cb);
|
|
this.MainControl.ShowControlAsModalPopup(this._SettlementInvoiceItemEditView);
|
|
}
|
|
else
|
|
{
|
|
this._SettlementInvoiceItemEditView2.ViewModel = new SettlementVM(cb);
|
|
this.MainControl.ShowControlAsModalPopup(this._SettlementInvoiceItemEditView2);
|
|
}
|
|
}));
|
|
break;
|
|
|
|
case InvoiceType.Service:
|
|
ServiceFacade.DoAccountingServiceAsync(
|
|
s => s.GetServiceInvoiceByInvoiceBaseOid(vm.DataContract.InvoiceBaseOid.Value),
|
|
cb => this.Dispatch(
|
|
delegate
|
|
{
|
|
this._ServiceInvoiceItemEditView.ViewModel = new ServiceInvoiceVM(cb);
|
|
this.MainControl.ShowControlAsModalPopup(this._ServiceInvoiceItemEditView);
|
|
}));
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void gridView_Loaded(object sender, RoutedEventArgs e)
|
|
{
|
|
this.gridView.BestFitColumns();
|
|
}
|
|
|
|
private void gridView_ShownEditor(object sender, EditorEventArgs e)
|
|
{
|
|
if (e.Editor is CheckEdit)
|
|
{
|
|
var ed = (CheckEdit)e.Editor;
|
|
ed.Tag = e.Row;
|
|
|
|
//ed.Unchecked -= this.checked_changed;
|
|
//ed.Unchecked += this.checked_changed;
|
|
//ed.Checked -= this.checked_changed;
|
|
//ed.Checked += this.checked_changed;
|
|
}
|
|
}
|
|
|
|
//void gridView_HiddenEditor(object sender, EditorEventArgs e)
|
|
//{
|
|
// //if (e.Column != null && e.Column.FieldName == "IsPaid")
|
|
// //{
|
|
// // if (e.Value is bool b && e.Row is InvoiceBaseVM vm)
|
|
// // {
|
|
// // SaveIsPaidChange(vm, b);
|
|
// // }
|
|
// //}
|
|
//}
|
|
|
|
private void linkExcelExport_RequestNavigate(object sender, RequestNavigateEventArgs e)
|
|
{
|
|
var list = ViewModel.VMList;
|
|
var lHeaderCaptions = new List<string>();
|
|
var lContent = new List<List<string>>();
|
|
|
|
lHeaderCaptions.Add("Art der Rechnung");
|
|
lHeaderCaptions.Add("Klient/in");
|
|
lHeaderCaptions.Add("Zeitraum");
|
|
lHeaderCaptions.Add("Nummer");
|
|
lHeaderCaptions.Add("Datum");
|
|
lHeaderCaptions.Add(BS.Shared.Translation.Translator.Translate("EmpfängerSingular"));
|
|
lHeaderCaptions.Add("Betrag");
|
|
lHeaderCaptions.Add("Bemerkung");
|
|
lHeaderCaptions.Add("Geprüft");
|
|
lHeaderCaptions.Add("Versendet");
|
|
lHeaderCaptions.Add("Exportiert");
|
|
lHeaderCaptions.Add("Bezahlt");
|
|
lHeaderCaptions.Add("Teilzahlung");
|
|
|
|
if (list != null)
|
|
{
|
|
lContent.AddRange(list.Select(vm => new List<string>
|
|
{
|
|
vm.TypeString, vm.CustomerName, vm.AccountingPeriodString, vm.InvoiceNumber, vm.InvoiceDate.Value.ToShortDateString(),
|
|
vm.RecipientString, string.Format("{0:0.00}", vm.TotalAmount), vm.Notice, vm.IsReviewed ? "Ja" : "", vm.IsSent ? "Ja" : "",
|
|
vm.IsExported ? "Ja" : "", vm.IsPaid ? "Ja" : "", vm.PartialPayment
|
|
}));
|
|
}
|
|
var path = BeWoApp.GetAndCreateUserAppDataPath() + "\\Rechnungen.xls";
|
|
|
|
var sf = new SaveFileDialog { FileName = Path.GetFileName(path), Filter = "Microsoft Excel 97-2003-Arbeitsblatt|*.xls|Alle Dateien|*.*" };
|
|
if (sf.ShowDialog() != true)
|
|
return;
|
|
ServiceFacade.DoDownloadServiceSync(s => BeWoUtils.WriteExcelFile(s.PrepareExcelFile(DownloadLinkEngine.ExcelFileId, lHeaderCaptions, lContent), sf.FileName));
|
|
}
|
|
|
|
private void linkPdfExport_RequestNavigate(object sender, RequestNavigateEventArgs e)
|
|
{
|
|
var list = ViewModel.VMList;
|
|
var oids = list.Select(r => r.DataContract.InvoiceBaseOid.Value).ToList();
|
|
|
|
ServiceFacade.DoReportServiceAsync(s => s.CreateInvoiceOverviewReport(oids), r =>
|
|
{
|
|
this.Dispatch(() =>
|
|
{
|
|
BeWoUtils.ShowReportWindow(r, Translator.Translate("Rechnungen"));
|
|
});
|
|
});
|
|
}
|
|
|
|
private void Hyperlink_OnRequestNavigate(object sender, RequestNavigateEventArgs e)
|
|
{
|
|
BeWoUtils.NavigateToReportUri(((Hyperlink)sender).NavigateUri.ToString(), "Druckvorschau");
|
|
}
|
|
|
|
private void ReloadButton_OnClick(object sender, RoutedEventArgs e)
|
|
{
|
|
RefreshInvoiceList();
|
|
}
|
|
|
|
private void btn_storno_Initialized(object sender, EventArgs e)
|
|
{
|
|
if (!BeWoApp.AppSettings.AllowStorno)
|
|
{
|
|
Button btn = sender as Button;
|
|
btn.Visibility = Visibility.Collapsed;
|
|
}
|
|
}
|
|
|
|
private void gridView_CellValueChanged(object sender, CellValueChangedEventArgs e)
|
|
{
|
|
var vm = e.Row as InvoiceBaseVM;
|
|
|
|
if (vm != null)
|
|
{
|
|
if (e.Column != null && e.Column.FieldName == "PartialPayment")
|
|
{
|
|
var dc = vm.CommitToDataContract();
|
|
dc.PartialPayment = (String)e.Value;
|
|
ServiceFacade.DoAccountingServiceAsync(s => s.UpdateInvoiceBases(new[] { dc }.ToList()), cb => vm.DataContract.InvoiceBaseVersion = cb[0], false);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void gridView_CellValueChanging(object sender, CellValueChangedEventArgs e)
|
|
{
|
|
var vm = e.Row as InvoiceBaseVM;
|
|
|
|
if (vm != null)
|
|
{
|
|
bool save = false;
|
|
var dc = vm.CommitToDataContract();
|
|
|
|
if (e.Column != null && e.Column.FieldName == "IsPaid")
|
|
{
|
|
dc.IsPaid = (bool)e.Value;
|
|
save = true;
|
|
}
|
|
|
|
if (e.Column != null && e.Column.FieldName == "IsReviewed")
|
|
{
|
|
dc.IsReviewed = (bool)e.Value;
|
|
save = true;
|
|
}
|
|
|
|
if (e.Column != null && e.Column.FieldName == "IsSent")
|
|
{
|
|
if (vm.IsSent && (bool)e.Value == false && !BeWoApp.LoggedOnUser.HasRight(UserRightType.FinanzenRechnungenNachVersandBearbeiten))
|
|
{
|
|
MessageBox.Show(Translator.Translate("Sie besitzen nicht das Recht Rechnungen nach Versand zu bearbeiten. Bitte wenden Sie sich an den Administrator!"), "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Exclamation);
|
|
RefreshInvoiceList();
|
|
return;
|
|
}
|
|
dc.IsSent = (bool)e.Value;
|
|
save = true;
|
|
}
|
|
|
|
if (e.Column != null && e.Column.FieldName == "IsExported")
|
|
{
|
|
dc.IsExported = (bool)e.Value;
|
|
save = true;
|
|
}
|
|
|
|
if (save)
|
|
{
|
|
ServiceFacade.DoAccountingServiceAsync(s => s.UpdateInvoiceBases(new[] { dc }.ToList()), cb => vm.DataContract.InvoiceBaseVersion = cb[0], false);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void TableView_OnCustomRowAppearance(object sender, CustomRowAppearanceEventArgs e)
|
|
{
|
|
if (e.Property != null && e.Property.Name == "Background")
|
|
{
|
|
var ib = datagrid_invoices.GetRow(e.RowHandle) as InvoiceBaseVM;
|
|
if (ib != null && !String.IsNullOrEmpty(ib.BackgroundColor))
|
|
{
|
|
e.Result = new SolidColorBrush((Color)ColorConverter.ConvertFromString(ib.BackgroundColor));
|
|
e.Handled = true;
|
|
}
|
|
}
|
|
|
|
//var data = srGridControl.rowhan
|
|
}
|
|
|
|
private void button_checkAll_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
var visible = GetVisibleVMs();
|
|
foreach (var item in visible)
|
|
{
|
|
item.IsChecked = true;
|
|
}
|
|
}
|
|
|
|
private void button_uncheckAll_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
var visible = GetVisibleVMs();
|
|
foreach (var item in visible)
|
|
{
|
|
item.IsChecked = false;
|
|
}
|
|
}
|
|
|
|
private void button_printInvoices_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
var list = new List<InvoiceBaseVM>();
|
|
|
|
var items = datagrid_invoices.ItemsSource as IList<InvoiceBaseVM>;
|
|
|
|
if (items != null)
|
|
{
|
|
for (int i = 0; i < items.Count; i++)
|
|
{
|
|
var vm = datagrid_invoices.GetRow(i) as InvoiceBaseVM;
|
|
if (vm != null && vm.IsChecked)
|
|
{
|
|
list.Add(vm);
|
|
}
|
|
}
|
|
}
|
|
|
|
PrintInvoices(list);
|
|
}
|
|
|
|
private void button_reviewInvoices_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
var list = new List<InvoiceBaseVM>();
|
|
var items = datagrid_invoices.ItemsSource as IList<InvoiceBaseVM>;
|
|
if (items != null)
|
|
{
|
|
for (int i = 0; i < items.Count; i++)
|
|
{
|
|
var vm = datagrid_invoices.GetRow(i) as InvoiceBaseVM;
|
|
if (vm != null && vm.IsChecked)
|
|
{
|
|
list.Add(vm);
|
|
}
|
|
}
|
|
}
|
|
|
|
ChangeAllInvoices(list, "reviewed");
|
|
}
|
|
|
|
private void button_sentInvoices_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
var list = new List<InvoiceBaseVM>();
|
|
var items = datagrid_invoices.ItemsSource as IList<InvoiceBaseVM>;
|
|
if (items != null)
|
|
{
|
|
for (int i = 0; i < items.Count; i++)
|
|
{
|
|
var vm = datagrid_invoices.GetRow(i) as InvoiceBaseVM;
|
|
if (vm != null && vm.IsChecked)
|
|
{
|
|
list.Add(vm);
|
|
}
|
|
}
|
|
}
|
|
ChangeAllInvoices(list, "sent");
|
|
}
|
|
|
|
private void button_exportedInvoices_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
var list = new List<InvoiceBaseVM>();
|
|
var items = datagrid_invoices.ItemsSource as IList<InvoiceBaseVM>;
|
|
if (items != null)
|
|
{
|
|
for (int i = 0; i < items.Count; i++)
|
|
{
|
|
var vm = datagrid_invoices.GetRow(i) as InvoiceBaseVM;
|
|
if (vm != null && vm.IsChecked)
|
|
{
|
|
list.Add(vm);
|
|
}
|
|
}
|
|
}
|
|
ChangeAllInvoices(list, "export");
|
|
}
|
|
|
|
private void button_paidInvoices_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
var list = new List<InvoiceBaseVM>();
|
|
var items = datagrid_invoices.ItemsSource as IList<InvoiceBaseVM>;
|
|
if (items != null)
|
|
{
|
|
for (int i = 0; i < items.Count; i++)
|
|
{
|
|
var vm = datagrid_invoices.GetRow(i) as InvoiceBaseVM;
|
|
if (vm != null && vm.IsChecked)
|
|
{
|
|
list.Add(vm);
|
|
}
|
|
}
|
|
}
|
|
ChangeAllInvoices(list, "paid");
|
|
}
|
|
|
|
private void ChangeAllInvoices(List<InvoiceBaseVM> list, String function)
|
|
{
|
|
var dcList = new List<InvoiceBaseDC>();
|
|
foreach (var item in list)
|
|
{
|
|
if (function == "reviewed" && !item.IsReviewed)
|
|
{
|
|
item.IsReviewed = true;
|
|
var dc = item.CommitToDataContract();
|
|
dc.IsReviewed = true;
|
|
dcList.Add(dc);
|
|
}
|
|
else if (function == "sent" && !item.IsSent)
|
|
{
|
|
item.IsSent = true;
|
|
var dc = item.CommitToDataContract();
|
|
dc.IsSent = true;
|
|
dcList.Add(dc);
|
|
}
|
|
else if (function == "export" && !item.IsExported)
|
|
{
|
|
item.IsExported = true;
|
|
var dc = item.CommitToDataContract();
|
|
dc.IsExported = true;
|
|
dcList.Add(dc);
|
|
}
|
|
else if (function == "paid" && !item.IsPaid)
|
|
{
|
|
item.IsPaid = true;
|
|
var dc = item.CommitToDataContract();
|
|
dc.IsPaid = true;
|
|
dcList.Add(dc);
|
|
}
|
|
}
|
|
if (dcList.Count > 0)
|
|
{
|
|
ServiceFacade.DoAccountingServiceSync(s => s.UpdateInvoiceBases(dcList));
|
|
foreach (var item in dcList)
|
|
{
|
|
item.InvoiceBaseVersion++;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void PrintInvoices(List<InvoiceBaseVM> list)
|
|
{
|
|
var oidList = list.Select(i => i.DataContract.InvoiceBaseOid.Value).ToList();
|
|
|
|
ServiceFacade.DoReportServiceAsync(s => s.CreateInvoiceListReport(oidList), ms => BeWoApp.MainControl.Dispatch(() => BeWoUtils.ShowReportWindow(ms, "Rechnungen")));
|
|
|
|
}
|
|
|
|
private IList<InvoiceBaseVM> GetVisibleVMs()
|
|
{
|
|
var list = new List<InvoiceBaseVM>();
|
|
|
|
var items = datagrid_invoices.ItemsSource as IList<InvoiceBaseVM>;
|
|
|
|
if (items != null)
|
|
{
|
|
for (int i = 0; i < items.Count; i++)
|
|
{
|
|
if (datagrid_invoices.IsRowVisible(i))
|
|
{
|
|
var vm = datagrid_invoices.GetRow(i) as InvoiceBaseVM;
|
|
if (vm != null)
|
|
{
|
|
list.Add(vm);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return list;
|
|
}
|
|
}
|
|
} |