Files
BeWoPlaner/BeWo/View/Detail/Report/ServicesReportView.xaml.cs
Christian f8184f3912 Merge branch 'master' of ssh://float.beyondsoft.de/git/beyondSoft/BeWo
# Conflicts:
#	BeWo/View/Detail/Report/ServicesReportViewAlt.xaml
#	BeWo/View/Detail/Report/ServicesReportViewAlt.xaml.cs
#	Service/Plugins/PluginLoader.cs
2020-10-27 13:49:12 +01:00

1252 lines
49 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Text;
using System.Web.UI.WebControls;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using BeWo.Controls;
using BeWo.Core;
using BeWo.ServiceProxy;
using BeWo.ViewModel;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using BS.Shared.Extensions;
using BS.Shared.Translation;
using DevExpress.Utils;
using DevExpress.Xpf.Core;
using DevExpress.Xpf.Editors;
using DevExpress.Xpf.Editors.Helpers;
using DevExpress.Xpf.Grid;
using DevExpress.Xpf.Printing;
using DevExpress.XtraGrid.Views.Base;
using DevExpress.XtraReports.UI;
using DevExpress.XtraRichEdit.Layout;
namespace BeWo.View.Detail.Report
{
/// <summary>
/// Interaction logic for ServicesReportView.xaml
/// </summary>
public partial class ServicesReportView : BeWoView
{
private CompactCustomerDC _Customer;
private CompactTeamDC _Team;
private CompactEmployeeDC _Employee;
private CompactOrganisationDC _Organisation;
public CompactCustomerDC Customer { get { return _Customer; } set { _Customer = value; } }
public CompactTeamDC Team { get { return _Team; } set { _Team = value; } }
public CompactEmployeeDC Employee { get { return _Employee; } set { _Employee = value; } }
public CompactOrganisationDC Organisation { get { return _Organisation; } set { _Organisation = value; } }
//private List<QuittierungsCheckView> _quittierungsCheck = new List<QuittierungsCheckView>();
private Dictionary<string, DateTime> Dicdate = new Dictionary<string, DateTime>();
private Dictionary<string, DateTime> DictYear = new Dictionary<string, DateTime>();
public bool FetchReferenceNumbers { get; set; }
public ServicesReportView()
{
InitializeComponent();
InitDateCombos();
InitServiceCategoryCombo();
InitFilterCombos();
RefreshStatusGrid();
//CreateTestdaten();
//if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.ViewAll) && !BeWoApp.LoggedOnUser.HasRight(UserRightType.CustomerView_View))
//{
// checkbox_all.IsEnabled = false;
// checkbox_all.IsChecked = false;
//}
// SetMonthCombobox();
// SetYearCombobox();
//GridControlQuittierungsCheck.ItemsSource = _quittierungsCheck;
// GetQuittierungsCheckCustomerList(DateTime.Now);
combobox_month.SelectionChanged += combobox_month_SelectionChanged;
combobox_year.SelectionChanged += combobox_year_SelectionChanged;
combobox_Startday.SelectionChanged += combobox_Startday_SelectionChanged;
combobox_Endday.SelectionChanged += combobox_Endday_SelectionChanged;
ServiceCategoriesComboBox.SelectionChanged += ServiceCategoriesComboBox_SelectionChanged;
ThemeManager.SetTheme(BeWoApp.CurrentBeWo.MainWindow, Theme.Office2010Black);
Unloaded += delegate
{
ThemeManager.SetTheme(BeWoApp.CurrentBeWo.MainWindow, null);
};
}
//private void CreateTestdaten()
//{
// var liste = new List<QuittierungsbelegsstatusVM>();
// liste.Add(CreateTestdaten("Karl", "Heinz", true, false, false));
// liste.Add(CreateTestdaten("adsfa", "etrzetrij", false, false, false));
// liste.Add(CreateTestdaten("455", "jedferz5", true, true, false));
// liste.Add(CreateTestdaten("Kadfheftrl", "etzet", true, true, true));
// datagrid_quittierungsbelege_status.ItemsSource = liste;
//}
//private QuittierungsbelegsstatusVM CreateTestdaten(string vn, string nn, bool v3, bool v4, bool v5)
//{
// CompactCustomerDC c = new CompactCustomerDC();
// c.FirstName = vn;
// c.LastName = nn;
// var dc = new QuittierungsbelegsstatusDC();
// var vm = new QuittierungsbelegsstatusVM(dc);
// vm.Customer = c;
// vm.Gedruckt = v3;
// vm.Erstellt = v4;
// vm.Unterschrieben = v5;
// return vm;
//}
void combobox_month_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
InitDayCombos();
RefreshStatusGrid();
}
void combobox_year_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
InitDayCombos();
}
private void CheckBox_Checked(object sender, RoutedEventArgs e)
{
if (popupedit_customer == null)
return;
popupedit_customer.Text = string.Empty;
_Customer = null;
}
private void CustomerSearchView_CustomerSelected(object sender, EventArgs<CompactCustomerDC> e)
{
_Customer = e.Data;
popupedit_customer.Text = _Customer.ToString();
popup_customer.IsOpen = false;
RefreshStatusGrid();
}
private void TeamSearchView_CustomerSelected(object sender, EventArgs<CompactTeamDC> e)
{
_Team = e.Data;
popupedit_team.Text = _Team.ToString();
popup_team.IsOpen = false;
RefreshStatusGrid();
}
private void EmployeeSearchView_EmployeeSelected(object sender, EventArgs<CompactEmployeeDC> e)
{
_Employee = e.Data;
popupedit_employee.Text = _Employee.SimpleDescription;
popup_employee.IsOpen = false;
RefreshStatusGrid();
}
private void InitServiceCategoryCombo()
{
ServiceFacade.DoOperationsServiceSync(s => ServiceCategoriesComboBox.ItemsSource = s.GetAllServiceCategories());
ServiceCategoriesComboBox.SelectedIndex = -1;
//RefreshStatusGrid();
}
private void InitDateCombos()
{
this.combobox_month.ItemsSource = DateTimeFormatInfo.CurrentInfo.MonthNames.Where(s => !string.IsNullOrEmpty(s));
int monthIdx = DateTime.Now.Month - 1;
//if (DateTime.Now.Day < 15)
//{
monthIdx--;
if (monthIdx < 0)
monthIdx = 11;
//}
this.combobox_month.SelectedIndex = monthIdx;
var years = new List<int>();
years.Add(DateTime.Now.Year + 1);
for (int i = 0; i <= 10; i++)
{
years.Add(DateTime.Now.Year - i);
}
this.combobox_year.ItemsSource = years;
if (monthIdx == 11)
{
this.combobox_year.SelectedItem = DateTime.Now.Year - 1;
}
else
this.combobox_year.SelectedItem = DateTime.Now.Year;
InitDayCombos();
}
private void InitDayCombos()
{
int year = DateTime.Now.Year;
var yearObj = this.combobox_year.SelectedItem;
if (yearObj != null)
year = Int32.Parse(yearObj.ToString());
int month = this.combobox_month.SelectedIndex + 1;
int lastStartIndex = combobox_Startday.SelectedIndex;
//if (combobox_Startday.HasItems)
// combobox_Startday.Items.Clear();
int lastEndIndex = combobox_Endday.SelectedIndex;
//if (combobox_Endday.HasItems)
// combobox_Endday.Items.Clear();
int days = DateTime.DaysInMonth(year, month);
List<int> dayList = new List<int>();
for (int i = 1; i <= days; i++)
{
dayList.Add(i);
}
this.combobox_Startday.ItemsSource = dayList;
if (lastStartIndex >= dayList.Count)
lastStartIndex = dayList.Count - 1;
if (lastStartIndex < 0)
lastStartIndex = 0;
this.combobox_Startday.SelectedIndex = lastStartIndex;
this.combobox_Endday.ItemsSource = dayList;
if (lastEndIndex >= 27)
lastEndIndex = dayList.Count - 1;
if (lastEndIndex < 0)
lastEndIndex = dayList.Count - 1;
this.combobox_Endday.SelectedIndex = lastEndIndex;
}
private void InitFilterCombos()
{
var filterList = new List<QBFilterItem>();
if (BeWoApp.LoggedOnUser.HasRight(UserRightType.CustomerView_View) || BeWoApp.LoggedOnUser.HasRight(UserRightType.ViewAll))
{
filterList.Add(new QBFilterItem(QBFilterEnum.AlleKlienten));
}
if (BeWoApp.LoggedOnUser.HasRight(UserRightType.Customer_ViewMyTeams) || BeWoApp.LoggedOnUser.HasRight(UserRightType.ViewAll))
{
filterList.Add(new QBFilterItem(QBFilterEnum.NurKlientenMeinesTeams));
}
filterList.Add(new QBFilterItem(QBFilterEnum.MeineKlienten));
//filterList.Add(new QBFilterItem(QBFilterEnum.KlientenAuswahl));
if (BeWoApp.LoggedOnUser.HasRight(UserRightType.TeamView_ViewMyTeams) && !BeWoApp.LoggedOnUser.HasRight(UserRightType.TeamView_ViewAll))
{
//Wenn man das Recht hat nur das eigene Team zu sehen aber nicht alle, muss man zumindest auch noch das Recht haben die Klienten des eigenen Teams zu sehen
if (BeWoApp.LoggedOnUser.HasRight(UserRightType.Customer_ViewMyTeams) || BeWoApp.LoggedOnUser.HasRight(UserRightType.ViewAll))
{
filterList.Add(new QBFilterItem(QBFilterEnum.TeamAuswahl));
}
}
else if (BeWoApp.LoggedOnUser.HasRight(UserRightType.TeamView_ViewAll))
{
//Wenn man das Recht hat alle Team zu sehen muss man auch das Recht haben alle Klienten zu sehen.
if (BeWoApp.LoggedOnUser.HasRight(UserRightType.CustomerView_View) || BeWoApp.LoggedOnUser.HasRight(UserRightType.ViewAll))
{
filterList.Add(new QBFilterItem(QBFilterEnum.TeamAuswahl));
}
}
FilterComboBox.DisplayMemberPath = "Name";
FilterComboBox.ItemsSource = filterList;
FilterComboBox.SelectedIndex = 0;
FilterComboBox.SelectionChanged += FilterComboBox_SelectionChanged;
}
private void FilterComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
popupedit_customer.Visibility = Visibility.Collapsed;
popupedit_team.Visibility = Visibility.Collapsed;
QBFilterItem filterItem = FilterComboBox.SelectedItem as QBFilterItem;
if (filterItem != null)
{
if (filterItem.FilterEnum == QBFilterEnum.KlientenAuswahl)
{
popupedit_customer.Visibility = Visibility.Visible;
}
else if (filterItem.FilterEnum == QBFilterEnum.TeamAuswahl)
{
popupedit_team.Visibility = Visibility.Visible;
}
}
RefreshStatusGrid();
}
private void RefreshStatusGrid()
{
DateTime start = new DateTime((int)combobox_year.SelectedItem, combobox_month.SelectedIndex + 1, combobox_Startday.SelectedIndex + 1);
DateTime ende = new DateTime((int)combobox_year.SelectedItem, combobox_month.SelectedIndex + 1, combobox_Endday.SelectedIndex + 1);
QBFilterEnum e = (FilterComboBox.SelectedItem as QBFilterItem).FilterEnum;
long? customerOid = null;
long? teamOid = null;
long? orgaOid = null;
long? empOid = null;
long? scOid = null;
if (_Customer != null)
customerOid = Customer.CustomerOid;
if (_Team != null)
teamOid = Team.TeamOid;
if (chkForAllCostbearer.IsChecked.Value)
orgaOid = Organisation.OrganisationOid;
if (chkForAllEmployees.IsChecked.Value)
empOid = Employee.EmployeeOid;
if (ChkForAllServiceCategories.IsChecked.Value)
scOid = ((ServiceCategoryDC)ServiceCategoriesComboBox.SelectedItem).ServiceCategoryOid;
ServiceFacade.DoCustomerServiceAsync(s => s.GetQuittierungsbelegsstatusList(start, ende, e, teamOid, customerOid, orgaOid, empOid, scOid), ergebnis => QuittierungsbelegStatusListeKommtVomServerZurueck(ergebnis));
//new CustomerS
}
private void QuittierungsbelegStatusListeKommtVomServerZurueck(List<QuittierungsbelegsstatusDC> ergebnis)
{
this.Dispatch(
delegate
{
var vmListe = new BindingList<QuittierungsbelegsstatusVM>();
foreach (var dc in ergebnis)
{
vmListe.Add(new QuittierungsbelegsstatusVM(dc));
}
datagrid_quittierungsbelege_status.ItemsSource = vmListe;
});
}
private void OrganisationSearchView_OrganisationSelected(object sender, EventArgs<CompactOrganisationDC> e)
{
_Organisation = e.Data;
popupedit_costbearer.Text = _Organisation.Name;
popup_costbearer.IsOpen = false;
RefreshStatusGrid();
}
private void ServiceCategoriesComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
RefreshStatusGrid();
}
private void button_generate_Click(object sender, RoutedEventArgs e)
{
long? customerOid = 0;
long? teamOid = 0;
long? empOid = 0;
long? orgaOid = 0;
QBFilterItem filterItem = null;
if (FilterComboBox.SelectedItem != null)
{
filterItem = FilterComboBox.SelectedItem as QBFilterItem;
}
if (filterItem == null)
{
filterItem = new QBFilterItem(QBFilterEnum.AlleKlienten);
}
if (filterItem.FilterEnum != QBFilterEnum.KlientenAuswahl)
{
_Customer = null;
}
if (filterItem.FilterEnum != QBFilterEnum.TeamAuswahl)
{
_Team = null;
}
if (!chkForAllCostbearer.IsChecked.Value)
{
_Organisation = null;
}
if (!chkForAllEmployees.IsChecked.Value)
{
_Employee = null;
}
if (filterItem.FilterEnum == QBFilterEnum.KlientenAuswahl && _Customer == null)
{
MessageBox.Show(Translator.Translate("Bitte wählen Sie einen Klienten aus."), "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Information);
}
else if (filterItem.FilterEnum == QBFilterEnum.TeamAuswahl && _Team == null)
{
MessageBox.Show(Translator.Translate("Bitte wählen Sie ein Team aus."), "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Information);
}
else if (chkForAllCostbearer.IsChecked.Value && _Organisation == null)
{
MessageBox.Show(Translator.Translate("Bitte wählen Sie einen Kostenträger aus."), "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Information);
}
else if (chkForAllEmployees.IsChecked.Value && _Employee == null)
{
MessageBox.Show(Translator.Translate("Bitte wählen Sie eine/n Mitarbeiter/in aus."), "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Information);
}
else if (ChkForAllServiceCategories.IsChecked.HasValue && ChkForAllServiceCategories.IsChecked.Value && ServiceCategoriesComboBox.SelectedItem == null)
{
MessageBox.Show("Bitte wählen Sie eine Leistungskategorie aus.", "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Information);
}
else
{
if (_Organisation != null)
{
orgaOid = _Organisation.OrganisationOid;
}
if (_Employee != null)
{
empOid = _Employee.EmployeeOid;
}
if (_Team != null)
{
teamOid = _Team.TeamOid;
}
if (_Customer != null)
{
customerOid = _Customer.CustomerOid;
}
var url = BeWoApp.SiteOfOrigin + "/ReportView.aspx?";
url += "&ft=" + (int)filterItem.FilterEnum + "&cOid=" + customerOid + "&tOid=" + teamOid + "&orgaOid=" + orgaOid + "&empOid=" + empOid + "&month=" + (combobox_month.SelectedIndex + 1) + "&year=" + combobox_year.SelectedItem + "&start=" + combobox_Startday.SelectedItem + "&end=" + combobox_Endday.SelectedItem;
if (ChkForAllServiceCategories.IsChecked.HasValue && ChkForAllServiceCategories.IsChecked.Value)
{
url += "&scOid=" + ((ServiceCategoryDC)ServiceCategoriesComboBox.SelectedItem).ServiceCategoryOid;
}
url += "&type=" + Utils.EnumName(ReportTypes.ServicesOverviewNew);
//var tempToken = string.Empty;
//ServiceFacade.DoDownloadServiceSync(s => tempToken = s.CreateTemporaryToken(url, true));
//string addChar = (url.Contains("?")) ? "&" : "?";
//url = url + addChar + "token=" + tempToken;
url = BeWoWpfUtils.GetHTMLEncodedURL(url);
BeWoUtils.NavigateToReportUri(url, Translator.Translate("Quittierungsbelegsvorschau"));
//BeWoUtils.NavigateToReportUriWithDocumentPreviewControl(url, "Quittierungsbeleg", docPrevControl);
//BeWoUtils.NavigateToReportUri(url, "Quittierungsbeleg", docPrevControl);
//BeWoUtils.NavigateToReportUriSync(url, docPrevControl);
}
}
private void listbox_month_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
this.combobox_month.IsEnabled = false;
}
private void listbox_year_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
this.combobox_year.IsEnabled = false;
}
private void combobox_Startday_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
InitDayCombos();
RefreshStatusGrid();
}
private void combobox_Endday_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
InitDayCombos();
RefreshStatusGrid();
}
private void popupedit_costbearer_PopUpClick(object sender, RoutedEventArgs e)
{
popup_costbearer.IsOpen = true;
}
private void popupedit_customer_PopUpClick(object sender, RoutedEventArgs e)
{
popup_customer.IsOpen = true;
}
private void popupedit_employee_PopUpClick(object sender, RoutedEventArgs e)
{
popup_employee.IsOpen = true;
}
private void popupedit_team_PopUpClick(object sender, RoutedEventArgs e)
{
popup_team.IsOpen = true;
}
private void Popupedit_customer_OnPreviewMouseDoubleClick(object sender, MouseButtonEventArgs e)
{
if (!BeWoUtils.CheckPopupEditClickableSpace((PopUpEdit)sender, e) || _Customer == null || !BeWoApp.LoggedOnUser.HasRight(UserRightType.CustomerView_View))
return;
VMFactory.CreateCustomerVMAsync(_Customer.CustomerOid, cb => this.Dispatch(() => BeWoUtils.OpenModalViewWindow<CustomerVM, CustomerDC, ServicesReportView>(cb, this, () => this.Dispatch(
() => BeWoUtils.UpdateAllViews(_Customer)))));
}
private void Popupedit_costbearer_OnPreviewMouseDoubleClick(object sender, MouseButtonEventArgs e)
{
if (!BeWoUtils.CheckPopupEditClickableSpace((PopUpEdit)sender, e) || _Organisation == null || !BeWoApp.LoggedOnUser.HasRight(UserRightType.OrganisationView_View))
return;
VMFactory.CreateOrganisationVMAsync(_Organisation.OrganisationOid, cb => this.Dispatch(() => BeWoUtils.OpenModalViewWindow<OrganisationVM, OrganisationDC, ServicesReportView>(cb, this, () => this.Dispatch(
() => BeWoUtils.UpdateAllViews(_Organisation)))));
}
private void Popupedit_employee_OnPreviewMouseDoubleClick(object sender, MouseButtonEventArgs e)
{
if (!BeWoUtils.CheckPopupEditClickableSpace((PopUpEdit)sender, e) || _Employee == null || !BeWoApp.LoggedOnUser.HasRight(UserRightType.EmployeeView_View))
return;
VMFactory.CreateEmployeeVMAsync(_Employee.EmployeeOid, cb => this.Dispatch(() => BeWoUtils.OpenModalViewWindow<EmployeeVM, EmployeeDC, ServicesReportView>(cb, this, () => this.Dispatch(
() => BeWoUtils.UpdateAllViews(_Employee)))));
}
private void TableView_HiddenEditor(object sender, DevExpress.Xpf.Grid.EditorEventArgs e)
{
var status = e.Row as QuittierungsbelegsstatusVM;
if (status == null)
return;
if (status.Unterschrieben && !status.Erstellt)
{
MessageBox.Show("Ein noch nicht erstellter Quittierungsbeleg kann nicht als unterschrieben gekennzeichnet werden!", "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Warning);
status.Unterschrieben = false;
}
if (!status.Erstellt && status.Organisation != null)
status.Organisation = null;
if (!status.Erstellt && status.Employee != null)
status.Employee = null;
if (!status.Erstellt && status.ServiceCategory != null)
status.ServiceCategory = null;
if (status != null && status.IsDirty)
{
var dc = status.CommitToDataContract();
dc = CheckForCheckboxes(dc);
var neuerStatus = ServiceFacade.DoCustomerServiceSync(s => s.UpdateQuittierungsbelegsstatus(dc));
UpdateStatusInGrid(neuerStatus);
}
}
private QuittierungsbelegsstatusDC CheckForCheckboxes(QuittierungsbelegsstatusDC dc)
{
if(dc.Erstellt)
{
if (chkForAllCostbearer.IsChecked.Value)
{
dc.Organisation = _Organisation;
}
if (chkForAllEmployees.IsChecked.Value)
{
dc.Employee = _Employee;
}
if (ChkForAllServiceCategories.IsChecked.Value)
{
dc.ServiceCategory = (ServiceCategoryDC)ServiceCategoriesComboBox.SelectedItem;
}
}
return dc;
}
private void UpdateStatusInGrid(QuittierungsbelegsstatusDC neuerStatus)
{
var gesamteListe = datagrid_quittierungsbelege_status.ItemsSource as BindingList<QuittierungsbelegsstatusVM>;
if (gesamteListe != null)
{
QuittierungsbelegsstatusVM alterStatus = null;
foreach (var vm in gesamteListe)
{
if (vm.DataContract.QuittierungsbelegsstatusOid.HasValue && vm.DataContract.QuittierungsbelegsstatusOid == neuerStatus.QuittierungsbelegsstatusOid)
{
alterStatus = vm;
}
else if (!vm.DataContract.QuittierungsbelegsstatusOid.HasValue && vm.DataContract.Customer.Oid == neuerStatus.Customer.Oid)
{
alterStatus = vm;
}
}
if (alterStatus != null)
{
gesamteListe.Remove(alterStatus);
gesamteListe.Add(new QuittierungsbelegsstatusVM(neuerStatus));
datagrid_quittierungsbelege_status.SortBy(datagrid_quittierungsbelege_status.Columns.GetColumnByName("column_customerOid"));
//datagrid_quittierungsbelege_status.RefreshData();
//test
//var alle = datagrid_quittierungsbelege_status.ItemsSource as List<QuittierungsbelegsstatusDC>;
//var alle2 = datagrid_quittierungsbelege_status.ItemsSource as List<QuittierungsbelegsstatusDC>;
//foreach (var item in alle)
//{
// foreach (var item2 in alle2)
// {
// if (item.Customer.Oid == item2.Customer.Oid && item.QuittierungsbelegsstatusOid != item2.QuittierungsbelegsstatusOid)
// {
// //Hier stimmt was nicht
// int test = 0;
// }
// }
//}
}
}
}
private string GenerateURL(string source, bool nurFehlende)
{
string url = "";
if(source.Equals("System.Windows.Controls.Button: Alle erstellen") || source.Equals("System.Windows.Controls.Button: Fehlende erstellen"))
{
long? customerOid = 0;
long? teamOid = 0;
long? empOid = 0;
long? orgaOid = 0;
QBFilterItem filterItem = null;
if (FilterComboBox.SelectedItem != null)
{
filterItem = FilterComboBox.SelectedItem as QBFilterItem;
}
if (filterItem == null)
{
filterItem = new QBFilterItem(QBFilterEnum.AlleKlienten);
}
if (filterItem.FilterEnum != QBFilterEnum.KlientenAuswahl)
{
_Customer = null;
}
if (filterItem.FilterEnum != QBFilterEnum.TeamAuswahl)
{
_Team = null;
}
if (!chkForAllCostbearer.IsChecked.Value)
{
_Organisation = null;
}
if (!chkForAllEmployees.IsChecked.Value)
{
_Employee = null;
}
if (filterItem.FilterEnum == QBFilterEnum.KlientenAuswahl && _Customer == null)
{
MessageBox.Show(Translator.Translate("Bitte wählen Sie einen Klienten aus."), "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Information);
}
else if (filterItem.FilterEnum == QBFilterEnum.TeamAuswahl && _Team == null)
{
MessageBox.Show(Translator.Translate("Bitte wählen Sie ein Team aus."), "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Information);
}
else if (chkForAllCostbearer.IsChecked.Value && _Organisation == null)
{
MessageBox.Show(Translator.Translate("Bitte wählen Sie einen Kostenträger aus."), "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Information);
}
else if (chkForAllEmployees.IsChecked.Value && _Employee == null)
{
MessageBox.Show(Translator.Translate("Bitte wählen Sie eine/n Mitarbeiter/in aus."), "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Information);
}
else if (ChkForAllServiceCategories.IsChecked.HasValue && ChkForAllServiceCategories.IsChecked.Value && ServiceCategoriesComboBox.SelectedItem == null)
{
MessageBox.Show("Bitte wählen Sie eine Leistungskategorie aus.", "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Information);
}
else
{
if (_Organisation != null)
{
orgaOid = _Organisation.OrganisationOid;
}
if (_Employee != null)
{
empOid = _Employee.EmployeeOid;
}
if (_Team != null)
{
teamOid = _Team.TeamOid;
}
if (_Customer != null)
{
customerOid = _Customer.CustomerOid;
}
url = BeWoApp.SiteOfOrigin + "/ReportView.aspx?";
url += "&ft=" + (int)filterItem.FilterEnum + "&cOid=" + customerOid + "&tOid=" + teamOid + "&orgaOid=" + orgaOid + "&empOid=" + empOid +
"&month=" + (combobox_month.SelectedIndex + 1) + "&year=" + combobox_year.SelectedItem + "&start=" + combobox_Startday.SelectedItem + "&end=" + combobox_Endday.SelectedItem;
if (nurFehlende)
{
url += "&nf=1";
}
}
}
else if(source.Equals("System.Windows.Controls.Button: 2"))
{
var qvm = datagrid_quittierungsbelege_status.GetCurrentValue<QuittierungsbelegsstatusVM>();
QBFilterItem filterItem = new QBFilterItem(QBFilterEnum.KlientenAuswahl);
var customerOid = qvm.Customer.CustomerOid;
var teamOid = 0;
var orgaOid = 0;
var empOid = 0;
url = BeWoApp.SiteOfOrigin + "/ReportView.aspx?";
url += "&ft=" + (int)filterItem.FilterEnum + "&cOid=" + customerOid + "&tOid=" + teamOid + "&orgaOid=" + orgaOid + "&empOpd=" + empOid +
"&month=" + (combobox_month.SelectedIndex + 1) + "&year=" + combobox_year.SelectedItem + "&start=" + combobox_Startday.SelectedItem + "&end=" + combobox_Endday.SelectedItem;
}
if (ChkForAllServiceCategories.IsChecked.HasValue && ChkForAllServiceCategories.IsChecked.Value)
{
url += "&scOid=" + ((ServiceCategoryDC)ServiceCategoriesComboBox.SelectedItem).ServiceCategoryOid;
}
url += "&type=" + Utils.EnumName(ReportTypes.ServicesOverviewNew);
url = BeWoWpfUtils.GetHTMLEncodedURL(url);
return url;
}
private void button_print_Click(object sender, RoutedEventArgs e)
{
string url = GenerateURL(sender.ToString(), false);
var qvm = datagrid_quittierungsbelege_status.GetCurrentValue<QuittierungsbelegsstatusVM>();
qvm.Erstellt = true;
var dc = qvm.CommitToDataContract();
dc = CheckForCheckboxes(dc);
BeWoUtils.NavigateToReportUri(url, Translator.Translate("Quittierungsbelegsvorschau"), () =>
{
var neuerStatus = ServiceFacade.DoCustomerServiceSync(s => s.UpdateQuittierungsbelegsstatus(dc));
UpdateStatusInGrid(neuerStatus);
});
}
private void Button_alle_erstellt_Click(object sender, RoutedEventArgs e)
{
ErstelleAlleQuittierungsbelege(sender.ToString());
}
private void Button_fehlende_erstellen_Click(object sender, RoutedEventArgs e)
{
ErstelleFehlendeQuittierungsbelege(sender.ToString());
}
private void Button_alle_erstellt_rueckgaengig_Click(object sender, RoutedEventArgs e)
{
ErstellteQuittierungsbelegeWiderrufen();
}
private void Button_alle_unterschrieben_Click(object sender, RoutedEventArgs e)
{
MarkiereAlleAlsUnterschrieben();
}
private void Button_alle_unterschrieben_rueckgaengig_Click(object sender, RoutedEventArgs e)
{
AlleUnterschriftenWiderrufen();
}
private void ErstelleAlleQuittierungsbelege(string sender)
{
if (MessageBox.Show("Wollen Sie wirklich alle Quittierungsbelege erstellen?\nDer vorherige Stand kann nicht wiederhergestellt werden.",
"BeWoPlaner", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
{
var url = GenerateURL(sender.ToString(), false);
if (url == "")
MessageBox.Show("Es müssen zuerst alle Filter richtig eingestellt werden!", "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Warning);
else
{
BeWoUtils.NavigateToReportUri(url, Translator.Translate("Quittierungsbelegsvorschau"), QuittierungsbelegsstatustabelleAktualisieren);
}
}
}
private void QuittierungsbelegsstatustabelleAktualisieren()
{
var alleBelege = datagrid_quittierungsbelege_status.ItemsSource as BindingList<QuittierungsbelegsstatusVM>;
for (int i = alleBelege.Count - 1; i >= 0; i--)
{
if (!alleBelege[i].Erstellt)
{
alleBelege[i].Erstellt = true;
var dc = alleBelege[i].CommitToDataContract();
dc = CheckForCheckboxes(dc);
var neuerQBStatus = ServiceFacade.DoCustomerServiceSync(s => s.UpdateQuittierungsbelegsstatus(dc));
UpdateStatusInGrid(neuerQBStatus);
}
}
}
private void ErstelleFehlendeQuittierungsbelege(string sender)
{
if (MessageBox.Show("Wollen Sie die fehlenden Quittierungsbelege erstellen?\nDer vorherige Stand kann nicht wiederhergestellt werden.",
"BeWoPlaner", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
{
var url = GenerateURL(sender.ToString(), true);
if (url == "")
MessageBox.Show("Es müssen zuerst alle Filter richtig eingestellt werden!", "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Warning);
else
{
BeWoUtils.NavigateToReportUri(url, Translator.Translate("Quittierungsbelegsvorschau"), QuittierungsbelegsstatustabelleAktualisieren);
}
}
}
private void ErstellteQuittierungsbelegeWiderrufen()
{
if (MessageBox.Show("Wollen Sie wirklich alle Quittierungsbelegserstellungen zurücksetzen?\nDer vorherige Stand kann nicht wiederhergestellt werden." +
"\n(Entsprechende Unterschriften werden ebenfalls widerrufen)",
"BeWoPlaner", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
{
var alleBelege = datagrid_quittierungsbelege_status.ItemsSource as BindingList<QuittierungsbelegsstatusVM>;
for (int i = alleBelege.Count - 1; i >= 0; i--)
{
if (alleBelege[i].Erstellt)
{
alleBelege[i].Erstellt = false;
if (alleBelege[i].Unterschrieben)
alleBelege[i].Unterschrieben = false;
var dc = alleBelege[i].CommitToDataContract();
var neuerQBStatus = ServiceFacade.DoCustomerServiceSync(s => s.UpdateQuittierungsbelegsstatus(dc));
UpdateStatusInGrid(neuerQBStatus);
}
}
}
}
private void MarkiereAlleAlsUnterschrieben()
{
if (MessageBox.Show("Wollen Sie wirklich alle Quittierungsbelege als 'Unterschrieben' markieren?\nDer vorherige Stand kann nicht wiederhergestellt werden.",
"BeWoPlaner", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
{
var alleBelege = datagrid_quittierungsbelege_status.ItemsSource as BindingList<QuittierungsbelegsstatusVM>;
for (int i = alleBelege.Count - 1; i >= 0; i--)
{
if (!alleBelege[i].Unterschrieben && alleBelege[i].Erstellt)
{
alleBelege[i].Unterschrieben = true;
var dc = alleBelege[i].CommitToDataContract();
var neuerQBStatus = ServiceFacade.DoCustomerServiceSync(s => s.UpdateQuittierungsbelegsstatus(dc));
UpdateStatusInGrid(neuerQBStatus);
}
}
}
}
private void AlleUnterschriftenWiderrufen()
{
if (MessageBox.Show("Wollen Sie wirklich alle Quittierungsbelege als 'Nicht unterschrieben' markieren?\nDer vorherige Stand kann nicht wiederhergestellt werden.",
"BeWoPlaner", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
{
var alleBelege = datagrid_quittierungsbelege_status.ItemsSource as BindingList<QuittierungsbelegsstatusVM>;
for (int i = alleBelege.Count - 1; i >= 0; i--)
{
if (alleBelege[i].Unterschrieben)
{
alleBelege[i].Unterschrieben = false;
var dc = alleBelege[i].CommitToDataContract();
var neuerQBStatus = ServiceFacade.DoCustomerServiceSync(s => s.UpdateQuittierungsbelegsstatus(dc));
UpdateStatusInGrid(neuerQBStatus);
}
}
}
}
private void chkForAllCostbearer_Unchecked(object sender, RoutedEventArgs e)
{
RefreshStatusGrid();
}
private void chkForAllEmployees_Unchecked(object sender, RoutedEventArgs e)
{
RefreshStatusGrid();
}
private void ChkForAllServiceCategories_Unchecked(object sender, RoutedEventArgs e)
{
RefreshStatusGrid();
}
//####################### Übersicht bereich #############################################
//private void GetQuittierungsCheckCustomerList(DateTime monat)
//{
// List<QuittierungsCheckViewListItemsDC> qbCheckList = new List<QuittierungsCheckViewListItemsDC>();
// long? oid = null;
// if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.ViewAll) && !BeWoApp.LoggedOnUser.HasRight(UserRightType.CustomerView_View))
// {
// oid = BeWoApp.LoggedOnUser.Employee.EmployeeOid;
// }
// ServiceFacade.DoCustomerServiceAsync(
// s => s.GetAllActiveCustomersCompactWithQBCheckList(this.FetchReferenceNumbers, oid, monat),
// r =>
// {
// List<QuittierungsCheckViewListItemsDC> list = r;
// if (oid != null)
// {
// list = list.Where(c => c.Customer.IsRelatedToEmployee).ToList();
// }
// list.Sort((x, y) => (x.Customer.LastName + ", " + x.Customer.FirstName).CompareTo(y.Customer.LastName + ", " + y.Customer.FirstName));
// qbCheckList = list;
// #region Dispatcher Refresh and add items to Grid
// this.Dispatch(delegate
// {
// AddQuittierungsCheckToGrid(qbCheckList);
// GridControlQuittierungsCheck.RefreshData();
// GridControlQuittierungsCheck.RefreshUI();
// });
// #endregion
// });
//}
//private void AddQuittierungsCheckToGrid(List<QuittierungsCheckViewListItemsDC> customerListe)
//{
// _quittierungsCheck.Clear();
// foreach (var list in customerListe)
// {
// QuittierungsCheckView x = new QuittierungsCheckView();
// x.Klient = list.Customer.FullName;
// //############ Druck ####################
// if (list.QuittierungsbelegDruck.HasValue)
// x.QuittierungsbelegGedruckt = list.QuittierungsbelegDruck.Value;
// if (list.QuittierungsbelegDruckAm.HasValue)
// {
// x.QuittierungsbelegGedrucktAm = list.QuittierungsbelegDruckAm.Value.ToString("dd.MM.yyyy");
// x.IsQbUnterschriebenAvailable = true;
// }
// else
// {
// x.IsQbUnterschriebenAvailable = false;
// }
// x.GedrucktAm = list.QuittierungsbelegDruckAm;
// x.QuittierungsbelegGedrucktVonOid = list.QuittierungsbelegGedrucktVonOid;
// x.QuittierungsbelegGedrucktVon = list.QuittierungsbelegGedrucktVon;
// //######################################
// //############ Unterschrift ############
// if (list.QuittierungsbelegUnterschrift.HasValue)
// x.QuittierungsbelegUnterschrieben = list.QuittierungsbelegUnterschrift.Value;
// x.QuittierungsbelegUnterschriebenVonOid = list.QuittierungsbelegUnterschriftVonOid;
// x.QuittierungsbelegUnterschriebenVon = list.QuittierungsbelegUnterschriftVon;
// //######################################
// if (list.QuittierungsCheckOid.HasValue)
// x.QuittierungsCheckOid = list.QuittierungsCheckOid;
// if (list.Monat.HasValue)
// x.Monat = list.Monat.Value;
// x.CompactCustomer = list.Customer;
// _quittierungsCheck.Add(x);
// }
//}
//private void CheckBoxQBU_OnEditValueChanged(object sender, EditValueChangedEventArgs e)
//{
// var qbChanges = (QuittierungsCheckView)GridControlQuittierungsCheck.SelectedItem;
// QuittierungsCheckDC qbCheck = new QuittierungsCheckDC()
// {
// CustomerOid = qbChanges.CompactCustomer.CustomerOid,
// QuittierungsbelegGedruckt = qbChanges.QuittierungsbelegGedruckt,
// QuittierungsbelegGedrucktAm = qbChanges.GedrucktAm,
// QuittierungsbelegGedrucktVon = qbChanges.QuittierungsbelegGedrucktVonOid,
// Monat = qbChanges.Monat
// };
// if ((bool)e.NewValue == true)
// {
// qbCheck.QuittierungsbelegUnterschriebenVon = BeWoApp.LoggedOnUser.Employee.EmployeeOid;
// qbCheck.QuittierungsbelegUnterschrieben = true;
// }
// else
// {
// qbCheck.QuittierungsbelegUnterschriebenVon = null;
// qbCheck.QuittierungsbelegUnterschrieben = false;
// }
// if (qbChanges.QuittierungsCheckOid.HasValue)
// {
// qbCheck.QuittierungsCheckOid = qbChanges.QuittierungsCheckOid;
// ServiceFacade.DoCustomerServiceSync(r => r.UpdateNewQuittierungsCheck(qbCheck));
// }
// else
// {
// ServiceFacade.DoCustomerServiceSync(r => r.SaveNewQuittierungsCheck(qbCheck));
// }
// GetQuittierungsCheckCustomerList(Dicdate[(string)MonthCombobox.SelectedItem]);
//}
//private void SetMonthCombobox()
//{
// List<string> monate = new List<string>();
// monate.Add(Monat.Januar.ToString());
// monate.Add(Monat.Februar.ToString());
// monate.Add(Monat.März.ToString());
// monate.Add(Monat.April.ToString());
// monate.Add(Monat.Mai.ToString());
// monate.Add(Monat.Juni.ToString());
// monate.Add(Monat.Juli.ToString());
// monate.Add(Monat.August.ToString());
// monate.Add(Monat.September.ToString());
// monate.Add(Monat.Oktober.ToString());
// monate.Add(Monat.November.ToString());
// monate.Add(Monat.Dezember.ToString());
// MonthCombobox.ItemsSource = monate;
// var dateTime = DateTime.Now;
// var editValue = "default";
// int i = 1;
// foreach (var mon in monate)
// {
// var x = new DateTime(dateTime.Year,i,1);
// Dicdate.Add(mon,x);
// i++;
// }
// foreach (var key in Dicdate)
// {
// if (key.Value.Month == DateTime.Now.Month)
// {
// editValue = key.Key;
// }
// }
// MonthCombobox.EditValue = editValue;
//}
//private void SetYearCombobox()
//{
// List<string> year = new List<string>();
// year.Add(DateTime.Now.AddYears(-5).Year.ToString());
// year.Add(DateTime.Now.AddYears(-4).Year.ToString());
// year.Add(DateTime.Now.AddYears(-3).Year.ToString());
// year.Add(DateTime.Now.AddYears(-2).Year.ToString());
// year.Add(DateTime.Now.AddYears(-1).Year.ToString());
// year.Add(DateTime.Now.Year.ToString());
// YearCombobox.ItemsSource = year;
// YearCombobox.EditValue = DateTime.Now.Year.ToString();
// DictYear.Add(DateTime.Now.AddYears(-5).Year.ToString(), DateTime.Now.AddYears(-5));
// DictYear.Add(DateTime.Now.AddYears(-4).Year.ToString(), DateTime.Now.AddYears(-4));
// DictYear.Add(DateTime.Now.AddYears(-3).Year.ToString(), DateTime.Now.AddYears(-3));
// DictYear.Add(DateTime.Now.AddYears(-2).Year.ToString(), DateTime.Now.AddYears(-2));
// DictYear.Add(DateTime.Now.AddYears(-1).Year.ToString(), DateTime.Now.AddYears(-1));
// DictYear.Add(DateTime.Now.Year.ToString(), DateTime.Now);
//}
//private void MonthCombobox_OnEditValueChanged(object sender, EditValueChangedEventArgs e)
//{
// var monat = (string)e.NewValue;
// var year = (string) YearCombobox.SelectedItem;
// if (year == null)
// {
// year = DateTime.Now.Year.ToString();
// }
// if (Dicdate.ContainsKey(monat))
// {
// if (DictYear.ContainsKey(year))
// {
// DateTime newDate = new DateTime(DictYear[year].Date.Year, Dicdate[monat].Date.Month, 1);
// GetQuittierungsCheckCustomerList(newDate);
// }
// }
//}
//private void YearCombobox_OnEditValueChanged(object sender, EditValueChangedEventArgs e)
//{
// var year = (string)e.NewValue;
// var month = (string) MonthCombobox.SelectedItem;
// if (DictYear.ContainsKey(year))
// {
// if (Dicdate.ContainsKey(month))
// {
// DateTime newDate = new DateTime(DictYear[year].Date.Year, Dicdate[month].Date.Month, 1);
// GetQuittierungsCheckCustomerList(newDate);
// }
// }
//}
}
public class QBFilterItem
{
public QBFilterItem(QBFilterEnum e)
{
FilterEnum = e;
}
public QBFilterEnum FilterEnum { get; set; }
public String Name
{
get
{
switch (FilterEnum)
{
case QBFilterEnum.AlleKlienten:
return Translator.Translate("Für alle Klienten");
case QBFilterEnum.NurKlientenMeinesTeams:
return Translator.Translate("Für Klienten meiner Teams");
case QBFilterEnum.MeineKlienten:
return Translator.Translate("Für meine Klienten");
case QBFilterEnum.KlientenAuswahl:
return Translator.Translate("Klient/in auswählen");
case QBFilterEnum.TeamAuswahl:
return Translator.Translate("Team auswählen");
}
return "";
}
}
}
//public class QuittierungsCheckView
//{
// public string Klient { get; set; }
// public bool QuittierungsbelegGedruckt { get; set; }
// public string QuittierungsbelegGedrucktAm { get; set; }
// public string QuittierungsbelegGedrucktVon { get; set; }
// public bool QuittierungsbelegUnterschrieben { get; set; }
// public string QuittierungsbelegUnterschriebenVon { get; set; }
// public long? QuittierungsCheckOid { get; set; }
// public long? QuittierungsbelegUnterschriebenVonOid { get; set; }
// public long? QuittierungsbelegGedrucktVonOid { get; set; }
// public bool IsQbUnterschriebenAvailable { get; set; }
// public CompactCustomerDC CompactCustomer { get; set; }
// public DateTime Monat { get; set; }
// public DateTime? GedrucktAm { get; set; }
//}
}