Quittierungsbeleg von Prof. Dr. Eggers Stiftung angepasst.
This commit is contained in:
@@ -248,22 +248,22 @@ namespace BeWo.Scheduler.View
|
||||
|
||||
private bool CheckCats2ResourcesForEqualitiy(Dictionary<ValueListEntryDC, List<ResourceDC>> dic2)
|
||||
{
|
||||
if(_Category2ResourcesDictionary == null && dic2 != null || dic2 == null && _Category2ResourcesDictionary != null)
|
||||
if(_Category2ResourcesDictionary is null && dic2 != null || dic2 is null && _Category2ResourcesDictionary != null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return _Category2ResourcesDictionary == null && dic2 == null || _Category2ResourcesDictionary != null && dic2 != null && _Category2ResourcesDictionary.Count == dic2.Count && _Category2ResourcesDictionary.Except(dic2).Any();
|
||||
return _Category2ResourcesDictionary is null && dic2 is null || _Category2ResourcesDictionary != null && dic2 != null && _Category2ResourcesDictionary.Count == dic2.Count && _Category2ResourcesDictionary.Except(dic2).Any();
|
||||
}
|
||||
|
||||
private static bool ListEquals<T>(IReadOnlyCollection<T> list1, ICollection<T> list2)
|
||||
{
|
||||
if(list1 == null && list2 == null)
|
||||
if(list1 is null && list2 is null)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if(list1 == null && list2 != null || list1 != null && list2 == null)
|
||||
if(list1 is null && list2 != null || list1 != null && list2 is null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -636,20 +636,20 @@ namespace BeWo.Scheduler.View
|
||||
var ausnahmen = item.GetExceptions();
|
||||
foreach(var exc in ausnahmen)
|
||||
{
|
||||
var b = exc.GetSourceObject(Scheduler.GetCoreStorage()) as IBeWoAppointment;
|
||||
if(b?.CustomFields == null)
|
||||
var beWoAppointment = exc.GetSourceObject(Scheduler.GetCoreStorage()) as IBeWoAppointment;
|
||||
if(beWoAppointment?.CustomFields is null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
foreach(var field in b.CustomFields)
|
||||
foreach(var field in beWoAppointment.CustomFields)
|
||||
{
|
||||
exc.CustomFields[field.Key] = field.Value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(bapp?.CustomFields == null)
|
||||
if(bapp?.CustomFields is null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -1313,14 +1313,14 @@ namespace BeWo.Scheduler.View
|
||||
|
||||
if(_IsNew)
|
||||
{
|
||||
var n = new ObservableCollection<Employee2SchedulerAppointmentDC>(SelectedEmployees.Select(item => new Employee2SchedulerAppointmentDC {Employee = item, ParticipationAnswer = ParticipationAnswer.Offen}).ToList());
|
||||
e.Appointment.CF_EmployeeList(n);
|
||||
var employees2Appointments = new ObservableCollection<Employee2SchedulerAppointmentDC>(SelectedEmployees.Select(item => new Employee2SchedulerAppointmentDC {Employee = item, ParticipationAnswer = ParticipationAnswer.Offen}).ToList());
|
||||
e.Appointment.CF_EmployeeList(employees2Appointments);
|
||||
e.Appointment.CF_CustomerList(new List<CompactCustomerDC>(SelectedCustomers));
|
||||
e.Appointment.CF_ResourceList(new List<ResourceDC>(SelectedResources));
|
||||
}
|
||||
|
||||
var form = ViewModel.GetEditAppointmentForm(control, e.Appointment);
|
||||
if(form == null)
|
||||
if(form is null)
|
||||
{
|
||||
if(_IsNew)
|
||||
{
|
||||
@@ -1955,14 +1955,14 @@ namespace BeWo.Scheduler.View
|
||||
|
||||
private void MeinTB_OnChecked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
var tb = (ToggleButton) sender;
|
||||
var toggleButton = (ToggleButton) sender;
|
||||
|
||||
if(tb?.IsChecked == null)
|
||||
if(toggleButton?.IsChecked is null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(!tb.IsChecked.Value)
|
||||
if(!toggleButton.IsChecked.Value)
|
||||
{
|
||||
MitarbeiterSuchGrid.Visibility = Visibility.Collapsed;
|
||||
MitarbeiterSuchTextBox.Clear();
|
||||
@@ -1976,14 +1976,14 @@ namespace BeWo.Scheduler.View
|
||||
|
||||
private void MeinTB2_OnChecked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
var tb = (ToggleButton) sender;
|
||||
var toggleButton = (ToggleButton) sender;
|
||||
|
||||
if(tb?.IsChecked == null)
|
||||
if(toggleButton?.IsChecked is null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(!tb.IsChecked.Value)
|
||||
if(!toggleButton.IsChecked.Value)
|
||||
{
|
||||
KlientenSuchGrid.Visibility = Visibility.Collapsed;
|
||||
KlientenSuchTextBox.Clear();
|
||||
@@ -2021,12 +2021,21 @@ namespace BeWo.Scheduler.View
|
||||
|
||||
_ReloadingViewModel = true;
|
||||
|
||||
if(ViewModel == null)
|
||||
if(ViewModel is null)
|
||||
{
|
||||
_ReloadingViewModel = false;
|
||||
return;
|
||||
}
|
||||
|
||||
var stopwatch = new Stopwatch();
|
||||
stopwatch.Start();
|
||||
#if DEBUG
|
||||
var stackTrace = new StackTrace();
|
||||
var callingMethodName = stackTrace.GetFrame(1).GetMethod().Name;
|
||||
|
||||
BeWoApp.LogMessage(callingMethodName + "->ReloadVM");
|
||||
#endif
|
||||
|
||||
var range = Scheduler.ActiveView.GetVisibleIntervals();
|
||||
var start = range.Start;
|
||||
var end = range.End;
|
||||
@@ -2051,10 +2060,11 @@ namespace BeWo.Scheduler.View
|
||||
|
||||
_LastFetchedInterval = FetchingInterval;
|
||||
|
||||
ReloadAppointmentViewModel(start, end, selectedEmployeeOids, selectedCustomerOids, selectedResourceOids, employeesOnly, customersOnly, resourcesOnly, onlyPrivateAppointments, showOnlyMyAppointments, showAbsenceTimes);
|
||||
ReloadAppointmentViewModel(start, end, selectedEmployeeOids, selectedCustomerOids, selectedResourceOids, employeesOnly, customersOnly, resourcesOnly, onlyPrivateAppointments, showOnlyMyAppointments, showAbsenceTimes,
|
||||
delegate { this.Dispatch(() => { stopwatch.Stop(); BeWoApp.LogMessage($"Das Laden der Termine und Abwesenheiten dauerte {stopwatch.ElapsedMilliseconds}ms."); }); });
|
||||
}
|
||||
|
||||
public void ReloadAppointmentViewModel(DateTime pIntervalStart, DateTime pIntervalEnd, List<long> pSelectedEmployees, List<long> pSelectedCustomer, List<long> pSelectedResources, bool pEmployeesOnly, bool pCustomersOnly, bool pResourcesOnly, bool pPrivateAppointmentsOnly, bool pOnlyMyAppointments, bool pShouldShowAbsenceTimes)
|
||||
public void ReloadAppointmentViewModel(DateTime pIntervalStart, DateTime pIntervalEnd, List<long> pSelectedEmployees, List<long> pSelectedCustomer, List<long> pSelectedResources, bool pEmployeesOnly, bool pCustomersOnly, bool pResourcesOnly, bool pPrivateAppointmentsOnly, bool pOnlyMyAppointments, bool pShouldShowAbsenceTimes, Action callback = null)
|
||||
{
|
||||
ResetDeletionMode();
|
||||
|
||||
@@ -2086,7 +2096,7 @@ namespace BeWo.Scheduler.View
|
||||
{
|
||||
var prefilteredAppointments = appointments.Where(w => (w.EmployeeList.Count == 0 && w.Originator.EmployeeOid.Equals(BeWoApp.LoggedOnEmployee.EmployeeOid) ||
|
||||
w.EmployeeList.Count > 0 && w.EmployeeList.Any(a => a.Employee.EmployeeOid.Equals(BeWoApp.LoggedOnEmployee.EmployeeOid)) ||
|
||||
BeWoUtils.HasRight(UserRightType.KalenderMitarbeitertermineAnsehen)) && (!w.EmployeeList.TrueForAll(e2a => e2a.ParticipationAnswer == ParticipationAnswer.Absage) || w.EmployeeList == null || w.EmployeeList.Count == 0)).ToList();
|
||||
BeWoUtils.HasRight(UserRightType.KalenderMitarbeitertermineAnsehen)) && (!w.EmployeeList.TrueForAll(e2a => e2a.ParticipationAnswer == ParticipationAnswer.Absage) || w.EmployeeList is null || w.EmployeeList.Count == 0)).ToList();
|
||||
|
||||
var anonymizedAppointments = appointments.Where(w => w.CanBeEdited == false && w.IsTask == false).ToList();
|
||||
|
||||
@@ -2121,9 +2131,9 @@ namespace BeWo.Scheduler.View
|
||||
SelectedCustomers = AllCustomers.Where(w => SelectedCustomers.Any(a => a.CustomerOid.Equals(w.CustomerOid))).ToList();
|
||||
SelectedResources = AllResources.Where(w => SelectedResources.Any(a => a.ResourceOid.Equals(w.ResourceOid))).ToList();
|
||||
|
||||
var items = SelectedItems;
|
||||
//var items = SelectedItems;
|
||||
|
||||
var testtesttest = ViewModel.ActiveAppointmentViewModel;
|
||||
//var testtesttest = ViewModel.ActiveAppointmentViewModel;
|
||||
|
||||
_ReloadingViewModel = false;
|
||||
|
||||
@@ -2165,6 +2175,8 @@ namespace BeWo.Scheduler.View
|
||||
|
||||
_IsComingFromHomeDragPanel = false;
|
||||
}
|
||||
|
||||
callback?.Invoke();
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -2183,7 +2195,9 @@ namespace BeWo.Scheduler.View
|
||||
var dialog = new SaveFileDialog {Filter = "iCalendar files (*.ics)|*.ics", FilterIndex = 1};
|
||||
|
||||
if(dialog.ShowDialog() != true)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
using(var stream = dialog.OpenFile())
|
||||
{
|
||||
@@ -2193,11 +2207,14 @@ namespace BeWo.Scheduler.View
|
||||
|
||||
private void ExportAppointmentsAs_iCal(Stream stream)
|
||||
{
|
||||
if(stream == null)
|
||||
if(stream is null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var productIdentifier = string.Format("-//{0}//DXScheduler iCalendarExchange Example//DE", BeWoApp.Mandator);
|
||||
var productIdentifier = $"-//{BeWoApp.Mandator}//DXScheduler iCalendarExchange Example//DE";
|
||||
var exporter = new iCalendarExporter(Scheduler.GetCoreStorage()) {ProductIdentifier = productIdentifier};
|
||||
|
||||
exporter.AppointmentExporting += OnAppointmentExporting;
|
||||
@@ -2205,7 +2222,7 @@ namespace BeWo.Scheduler.View
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
MessageBox.Show(string.Format("Der Kalender konnte leider nicht exportiert werden.\n{0}", e.Message), "Fehler beim Export", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
MessageBox.Show($"Der Kalender konnte leider nicht exportiert werden.\n{e.Message}", "Fehler beim Export", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2308,7 +2325,7 @@ namespace BeWo.Scheduler.View
|
||||
|
||||
var neu = new List<Appointment>();
|
||||
|
||||
foreach (var app in kollektionOhneAusnahmen.Where(w => !ausnahmen.Select(s => s.RecurrenceIndex).Contains(w.RecurrenceIndex)))
|
||||
foreach(var app in kollektionOhneAusnahmen.Where(w => !ausnahmen.Select(s => s.RecurrenceIndex).Contains(w.RecurrenceIndex)))
|
||||
{
|
||||
var recurrenceId = app.RecurrenceInfo.Id.ToString();
|
||||
|
||||
@@ -2320,7 +2337,7 @@ namespace BeWo.Scheduler.View
|
||||
neu.AddIfNotIn(app);
|
||||
}
|
||||
|
||||
if (ausnahmen.Count > 0)
|
||||
if(ausnahmen.Count > 0)
|
||||
{
|
||||
kollektionOhneAusnahmen = kollektionOhneAusnahmen.Where(w => !ausnahmen.Select(s => s.RecurrenceIndex).Contains(w.RecurrenceIndex)).ToList();
|
||||
}
|
||||
@@ -2330,7 +2347,7 @@ namespace BeWo.Scheduler.View
|
||||
var recurrenceId = appointment.RecurrenceInfo.Id.ToString();
|
||||
var recurrenceIndex = appointment.RecurrenceIndex;
|
||||
|
||||
if (!(appointment.IsOccurrence && deletedOccurrences.Any(a => a.RecurrenceIdReference == recurrenceId && a.RecurrenceIndexReference == recurrenceIndex)))
|
||||
if(!(appointment.IsOccurrence && deletedOccurrences.Any(a => a.RecurrenceIdReference == recurrenceId && a.RecurrenceIndexReference == recurrenceIndex)))
|
||||
{
|
||||
serienTermine.AddIfNotIn(new SchedulerAppointmentDC
|
||||
{
|
||||
@@ -2400,14 +2417,16 @@ namespace BeWo.Scheduler.View
|
||||
|
||||
public void PreselectCustomer(long pCustomerOid)
|
||||
{
|
||||
if(AllCustomers.Any(c => c.CustomerOid.Equals(pCustomerOid)))
|
||||
if(!AllCustomers.Any(c => c.CustomerOid.Equals(pCustomerOid)))
|
||||
{
|
||||
SelectedCustomers = new List<CompactCustomerDC> {AllCustomers.Find(f => f.CustomerOid.Equals(pCustomerOid))};
|
||||
|
||||
OnPropertyChanged(nameof(SelectedCustomers));
|
||||
OnPropertyChanged(nameof(SelectedItems));
|
||||
OnPropertyChanged(nameof(GefilterteKlienten));
|
||||
return;
|
||||
}
|
||||
|
||||
SelectedCustomers = new List<CompactCustomerDC> {AllCustomers.Find(f => f.CustomerOid.Equals(pCustomerOid))};
|
||||
|
||||
OnPropertyChanged(nameof(SelectedCustomers));
|
||||
OnPropertyChanged(nameof(SelectedItems));
|
||||
OnPropertyChanged(nameof(GefilterteKlienten));
|
||||
}
|
||||
|
||||
private void DateNavigator_OnSelectedDatesChanged(object sender, EventArgs e)
|
||||
@@ -2419,6 +2438,7 @@ namespace BeWo.Scheduler.View
|
||||
var selectedDates = navigator.SelectedDates;
|
||||
|
||||
var isSelectedDateFetched = _LastFetchedInterval.ContainsEveryDateFromList(selectedDates);
|
||||
|
||||
if(!isSelectedDateFetched && !(_LastFetchedInterval.Start.Equals(new DateTime(1, 1, 1, 0, 0, 0)) && _LastFetchedInterval.End.Equals(new DateTime(1, 1, 1, 0, 30, 0))))
|
||||
{
|
||||
ReloadVM();
|
||||
@@ -2467,26 +2487,28 @@ namespace BeWo.Scheduler.View
|
||||
|
||||
private void NurMeineTermineEinAusCheckBox_OnChecked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
var cb = (CheckBox) sender;
|
||||
var checkBox = (CheckBox) sender;
|
||||
|
||||
if(CheckBoxConverter != null && BeWoApp.CompactLoggedOnEmployee != null)
|
||||
if(CheckBoxConverter is null || BeWoApp.CompactLoggedOnEmployee is null)
|
||||
{
|
||||
if(cb.IsChecked != null && cb.IsChecked.Value)
|
||||
{
|
||||
SelectedEmployees = new List<CompactEmployeeDC> {BeWoApp.CompactLoggedOnEmployee};
|
||||
CheckBoxConverter.AktuellerMitarbeiter = BeWoApp.CompactLoggedOnEmployee;
|
||||
}
|
||||
else if(cb.IsChecked != null && !cb.IsChecked.Value && SelectedEmployees.Count == 1)
|
||||
{
|
||||
SelectedEmployees.Remove(BeWoApp.CompactLoggedOnEmployee);
|
||||
CheckBoxConverter.AktuellerMitarbeiter = null;
|
||||
}
|
||||
|
||||
OnPropertyChanged(nameof(SelectedEmployees));
|
||||
OnPropertyChanged(nameof(SelectedItems));
|
||||
|
||||
ReloadVM(true);
|
||||
return;
|
||||
}
|
||||
|
||||
if(checkBox.IsChecked != null && checkBox.IsChecked.Value)
|
||||
{
|
||||
SelectedEmployees = new List<CompactEmployeeDC> {BeWoApp.CompactLoggedOnEmployee};
|
||||
CheckBoxConverter.AktuellerMitarbeiter = BeWoApp.CompactLoggedOnEmployee;
|
||||
}
|
||||
else if(checkBox.IsChecked != null && !checkBox.IsChecked.Value && SelectedEmployees.Count == 1)
|
||||
{
|
||||
SelectedEmployees.Remove(BeWoApp.CompactLoggedOnEmployee);
|
||||
CheckBoxConverter.AktuellerMitarbeiter = null;
|
||||
}
|
||||
|
||||
OnPropertyChanged(nameof(SelectedEmployees));
|
||||
OnPropertyChanged(nameof(SelectedItems));
|
||||
|
||||
ReloadVM(true);
|
||||
}
|
||||
|
||||
private void AbwesenheitenEinAusCheckBox_OnChecked(object sender, RoutedEventArgs e)
|
||||
@@ -2529,15 +2551,17 @@ namespace BeWo.Scheduler.View
|
||||
|
||||
private void Scheduler_OnInplaceEditorShowing(object sender, InplaceEditorEventArgs e)
|
||||
{
|
||||
if(_IsNew)
|
||||
if(!_IsNew)
|
||||
{
|
||||
var n = new ObservableCollection<Employee2SchedulerAppointmentDC>(SelectedEmployees.Select(item => new Employee2SchedulerAppointmentDC {Employee = item, ParticipationAnswer = ParticipationAnswer.Offen}).ToList());
|
||||
e.Appointment.CF_EmployeeList(n);
|
||||
e.Appointment.CF_CustomerList(new List<CompactCustomerDC>(SelectedCustomers));
|
||||
e.Appointment.CF_ResourceList(new List<ResourceDC>(SelectedResources));
|
||||
|
||||
_IsNew = false;
|
||||
return;
|
||||
}
|
||||
|
||||
var n = new ObservableCollection<Employee2SchedulerAppointmentDC>(SelectedEmployees.Select(item => new Employee2SchedulerAppointmentDC {Employee = item, ParticipationAnswer = ParticipationAnswer.Offen}).ToList());
|
||||
e.Appointment.CF_EmployeeList(n);
|
||||
e.Appointment.CF_CustomerList(new List<CompactCustomerDC>(SelectedCustomers));
|
||||
e.Appointment.CF_ResourceList(new List<ResourceDC>(SelectedResources));
|
||||
|
||||
_IsNew = false;
|
||||
}
|
||||
|
||||
private void ButtonDeleteAppointmentsInInterval_Click(object sender, RoutedEventArgs e)
|
||||
@@ -2633,14 +2657,14 @@ namespace BeWo.Scheduler.View
|
||||
|
||||
var appointmentDC = appointmentVM?.CommitToDataContract();
|
||||
|
||||
if(appointmentDC?.SchedulerAppointmentOid == null || appointmentDC.NewSchedulerAppointmentVersion == null || appointmentToRestore.Type != AppointmentType.ChangedOccurrence)
|
||||
if(appointmentDC?.SchedulerAppointmentOid is null || appointmentDC.NewSchedulerAppointmentVersion is null || appointmentToRestore.Type != AppointmentType.ChangedOccurrence)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ServiceFacade.DoResourceServiceAsync(s => s.GetSchedulerAppointmentByid(appointmentDC.SchedulerAppointmentOid.Value), appointment =>
|
||||
{
|
||||
if(appointment.SchedulerAppointmentOid == null || appointment.NewSchedulerAppointmentVersion == null)
|
||||
if(appointment.SchedulerAppointmentOid is null || appointment.NewSchedulerAppointmentVersion is null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -2671,8 +2695,8 @@ namespace BeWo.Scheduler.View
|
||||
|
||||
private void ShowTasksCheckBox_OnClick(object sender, RoutedEventArgs e)
|
||||
{
|
||||
var cb = (CheckBox) sender;
|
||||
IsTasksVisible = cb.IsChecked ?? false;
|
||||
var checkBox = (CheckBox) sender;
|
||||
IsTasksVisible = checkBox.IsChecked ?? false;
|
||||
|
||||
ReloadVM(true);
|
||||
}
|
||||
@@ -2712,15 +2736,15 @@ namespace BeWo.Scheduler.View
|
||||
{
|
||||
var storageAppointments = Scheduler.Storage.AppointmentStorage.Items.ToList();
|
||||
|
||||
var sb = new StringBuilder();
|
||||
sb.Append("AppointmentStorage-Inhalt:\n");
|
||||
var stringBuilder = new StringBuilder();
|
||||
stringBuilder.Append("AppointmentStorage-Inhalt:\n");
|
||||
|
||||
foreach(var app in storageAppointments)
|
||||
{
|
||||
sb.Append($"{app.Subject} {app.Start:dd.MM.yyyy HH:mm}-{app.End:dd.MM.yyyy HH:mm}\n");
|
||||
stringBuilder.Append($"{app.Subject} {app.Start:dd.MM.yyyy HH:mm}-{app.End:dd.MM.yyyy HH:mm}\n");
|
||||
}
|
||||
|
||||
WriteToDebug(sb.ToString());
|
||||
WriteToDebug(stringBuilder.ToString());
|
||||
}
|
||||
|
||||
private void Scheduler_OnAppointmentDrop(object sender, AppointmentDragEventArgs e)
|
||||
@@ -2833,9 +2857,9 @@ namespace BeWo.Scheduler.View
|
||||
|
||||
public static class ViewTypeConvert
|
||||
{
|
||||
public static AppointmentViewType ToAppointmentViewType(SchedulerViewType svt)
|
||||
public static AppointmentViewType ToAppointmentViewType(SchedulerViewType schedulerViewType)
|
||||
{
|
||||
switch(svt)
|
||||
switch(schedulerViewType)
|
||||
{
|
||||
case SchedulerViewType.Day:
|
||||
return AppointmentViewType.Day;
|
||||
@@ -2893,7 +2917,7 @@ namespace BeWo.Scheduler.View
|
||||
{
|
||||
var customFieldStorage = (CustomFieldStorage)customFields[nameof(CustomFieldStorage)];
|
||||
|
||||
if (customFieldStorage != null && parameter != null && parameter.Equals("AlleRessourcen"))
|
||||
if(customFieldStorage != null && parameter != null && parameter.Equals("AlleRessourcen"))
|
||||
{
|
||||
return customFieldStorage.ResourceList;
|
||||
}
|
||||
@@ -3155,7 +3179,7 @@ namespace BeWo.Scheduler.View
|
||||
{
|
||||
var customFields = (CustomFieldCollection) value;
|
||||
|
||||
if(customFields == null)
|
||||
if(customFields is null)
|
||||
{
|
||||
return new SolidColorBrush(Color.FromRgb(192, 255, 208));
|
||||
}
|
||||
@@ -3185,32 +3209,32 @@ namespace BeWo.Scheduler.View
|
||||
{
|
||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
if(value is Employee2SchedulerAppointmentDC employee2SchedulerAppointment)
|
||||
if(!(value is Employee2SchedulerAppointmentDC employee2SchedulerAppointment))
|
||||
{
|
||||
if (parameter != null && parameter.Equals("GibName"))
|
||||
{
|
||||
return employee2SchedulerAppointment.Employee.DetailDescription;
|
||||
}
|
||||
|
||||
var color = Color.FromRgb(255, 255, 255);
|
||||
|
||||
switch (employee2SchedulerAppointment.ParticipationAnswer)
|
||||
{
|
||||
case ParticipationAnswer.Vorbehalt:
|
||||
color = Color.FromRgb(185, 39, 217);
|
||||
break;
|
||||
case ParticipationAnswer.Zusage:
|
||||
color = Color.FromRgb(72, 212, 78);
|
||||
break;
|
||||
case ParticipationAnswer.Absage:
|
||||
color = Color.FromRgb(171, 0, 48);
|
||||
break;
|
||||
}
|
||||
|
||||
return new SolidColorBrush(color);
|
||||
return null;
|
||||
}
|
||||
|
||||
return null;
|
||||
if(parameter != null && parameter.Equals("GibName"))
|
||||
{
|
||||
return employee2SchedulerAppointment.Employee.DetailDescription;
|
||||
}
|
||||
|
||||
var color = Color.FromRgb(255, 255, 255);
|
||||
|
||||
switch(employee2SchedulerAppointment.ParticipationAnswer)
|
||||
{
|
||||
case ParticipationAnswer.Vorbehalt:
|
||||
color = Color.FromRgb(185, 39, 217);
|
||||
break;
|
||||
case ParticipationAnswer.Zusage:
|
||||
color = Color.FromRgb(72, 212, 78);
|
||||
break;
|
||||
case ParticipationAnswer.Absage:
|
||||
color = Color.FromRgb(171, 0, 48);
|
||||
break;
|
||||
}
|
||||
|
||||
return new SolidColorBrush(color);
|
||||
}
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
@@ -3223,19 +3247,13 @@ namespace BeWo.Scheduler.View
|
||||
{
|
||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
if (BeWoApp.AppSettings.ShowInfoButtonInCalender == true)
|
||||
{
|
||||
return Visibility.Visible;
|
||||
}
|
||||
else
|
||||
return Visibility.Collapsed;
|
||||
return BeWoApp.AppSettings.ShowInfoButtonInCalender ? Visibility.Visible : Visibility.Collapsed;
|
||||
}
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
@@ -70,13 +70,13 @@ namespace BeWo.View.Detail
|
||||
|
||||
public DebugWindowMessage(string messageText)
|
||||
{
|
||||
MessageText = $"{DateTime.Now:dd.MM.yyyy HH:mm:ss}: {messageText}";
|
||||
MessageText = $"{DateTime.Now:dd.MM.yyyy HH:mm:ss.fff}: {messageText}";
|
||||
CustomColor = Colors.Black;
|
||||
}
|
||||
|
||||
public DebugWindowMessage(string messageText, Color customColor)
|
||||
{
|
||||
MessageText = $"{DateTime.Now:dd.MM.yyyy HH:mm:ss}: {messageText}";
|
||||
MessageText = $"{DateTime.Now:dd.MM.yyyy HH:mm:ss.fff}: {messageText}";
|
||||
CustomColor = customColor;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<IISExpressWindowsAuthentication />
|
||||
<IISExpressUseClassicPipelineMode />
|
||||
<UseGlobalApplicationHostFile />
|
||||
<LastActiveSolutionConfig>Release|Any CPU</LastActiveSolutionConfig>
|
||||
<LastActiveSolutionConfig>Debug|Any CPU</LastActiveSolutionConfig>
|
||||
<ProjectView>ShowAllFiles</ProjectView>
|
||||
<WebStackScaffolding_ViewDialogWidth>600</WebStackScaffolding_ViewDialogWidth>
|
||||
<Controller_SelectedScaffolderID>MvcControllerEmptyScaffolder</Controller_SelectedScaffolderID>
|
||||
@@ -28,7 +28,7 @@
|
||||
<VisualStudio>
|
||||
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
|
||||
<WebProjectProperties>
|
||||
<StartPageUrl>Views/Login/Index.cshtml</StartPageUrl>
|
||||
<StartPageUrl>http://localhost/BeWoPlanerMobil/</StartPageUrl>
|
||||
<StartAction>CurrentPage</StartAction>
|
||||
<AspNetDebugging>True</AspNetDebugging>
|
||||
<SilverlightDebugging>False</SilverlightDebugging>
|
||||
|
||||
@@ -62,8 +62,6 @@ namespace BeWoPlanerMobil.Controllers
|
||||
{
|
||||
LoadCustomerToModel(id);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
@@ -218,13 +216,16 @@ namespace BeWoPlanerMobil.Controllers
|
||||
|
||||
Model.Report = null;
|
||||
|
||||
if(int.TryParse(formCollection["report-type-input"], out var selectedReportTypeInt))
|
||||
if(!int.TryParse(formCollection["report-type-input"], out var selectedReportTypeInt))
|
||||
{
|
||||
var selectedReportType = (CustomerReportType) selectedReportTypeInt;
|
||||
|
||||
SelectReport(selectedReportType);
|
||||
return RedirectToActionPermanent("Customer");
|
||||
}
|
||||
|
||||
var selectedReportType = (CustomerReportType) selectedReportTypeInt;
|
||||
|
||||
SelectReport(selectedReportType);
|
||||
|
||||
//return RedirectToActionPermanent("Customer", Model);
|
||||
return RedirectToActionPermanent("Customer");
|
||||
}
|
||||
|
||||
@@ -235,6 +236,18 @@ namespace BeWoPlanerMobil.Controllers
|
||||
GenerateMobileMedListForSelectedCustomer();
|
||||
}
|
||||
|
||||
public string SelectReportType(int reportType)
|
||||
{
|
||||
if(Model is null)
|
||||
{
|
||||
return "Die Auswahl des Berichts ist fehlgeschlagen. Bitte wenden Sie sich an den Administrator.";
|
||||
}
|
||||
|
||||
Model.SelectedReportType = (CustomerReportType) reportType;
|
||||
|
||||
return LeerzeichenFuerGetMethoden;
|
||||
}
|
||||
|
||||
public void GenerateMobileMedListForSelectedCustomer(long? selectedMedListOid = null)
|
||||
{
|
||||
if(Model.SelectedCustomerOid is null)
|
||||
@@ -373,6 +386,8 @@ namespace BeWoPlanerMobil.Controllers
|
||||
|
||||
CustomerService.UpdateCustomer(customer);
|
||||
|
||||
LoadCustomerToModel(customer.CustomerOid);
|
||||
|
||||
return RedirectToActionPermanent("Customer", new { id = customer.CustomerOid });
|
||||
}
|
||||
|
||||
@@ -380,13 +395,15 @@ namespace BeWoPlanerMobil.Controllers
|
||||
[HttpPost]
|
||||
public ActionResult ViewMedListFromHistoryList(FormCollection formCollection)
|
||||
{
|
||||
if(long.TryParse(formCollection["med-list-oid"], out var medListOid))
|
||||
if(!long.TryParse(formCollection["med-list-oid"], out var medListOid))
|
||||
{
|
||||
Model.SelectedReportType = CustomerReportType.Historie;
|
||||
|
||||
GenerateMobileMedListForSelectedCustomer(medListOid);
|
||||
return RedirectToActionPermanent("Customer");
|
||||
}
|
||||
|
||||
Model.SelectedReportType = CustomerReportType.Historie;
|
||||
|
||||
GenerateMobileMedListForSelectedCustomer(medListOid);
|
||||
|
||||
return RedirectToActionPermanent("Customer");
|
||||
}
|
||||
|
||||
@@ -394,13 +411,15 @@ namespace BeWoPlanerMobil.Controllers
|
||||
[HttpPost]
|
||||
public ActionResult DeleteMedListFromHistoryList(FormCollection formCollection)
|
||||
{
|
||||
if(long.TryParse(formCollection["med-list-oid"], out var medListOid))
|
||||
if(!long.TryParse(formCollection["med-list-oid"], out var medListOid))
|
||||
{
|
||||
Model.SelectedReportType = CustomerReportType.Historie;
|
||||
|
||||
CustomerService.DeleteMedikamentenverordnungsliste(medListOid);
|
||||
return RedirectToActionPermanent("Customer");
|
||||
}
|
||||
|
||||
Model.SelectedReportType = CustomerReportType.Historie;
|
||||
|
||||
CustomerService.DeleteMedikamentenverordnungsliste(medListOid);
|
||||
|
||||
return RedirectToActionPermanent("Customer");
|
||||
}
|
||||
|
||||
|
||||
@@ -3950,6 +3950,12 @@ namespace BeWoPlanerMobil.Controllers
|
||||
|
||||
return RedirectToActionPermanent("Main");
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
public string ProvokeJsonError()
|
||||
{
|
||||
return "<!DOCTYPE html>\r\n<html lang=\"en\">\r\n <head>\r\n <meta charset=\"UTF-8\">\r\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n <meta http-equiv=\"X-UA-Compatible\" content=\"ie=edge\">\r\n <title>HTML 5 Boilerplate</title>\r\n <link rel=\"stylesheet\" href=\"style.css\">\r\n </head>\r\n <body>\r\n\t<script src=\"index.js\"></script>\r\n </body>\r\n</html>";
|
||||
}
|
||||
}
|
||||
|
||||
public class ServiceRecord2Monatsunterschrift
|
||||
|
||||
@@ -14,6 +14,8 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Web.Mvc;
|
||||
using BeWo.Service.Plugins;
|
||||
using DevExpress.Mvvm.Native;
|
||||
using NHibernate.Util;
|
||||
|
||||
namespace BeWoPlanerMobil.Controllers
|
||||
{
|
||||
@@ -1266,15 +1268,76 @@ namespace BeWoPlanerMobil.Controllers
|
||||
var endDate = Model.SelectedEndDay ?? date.GetLastOfMonth().Day;
|
||||
var filterType = Model.SelectedFilterItem;
|
||||
|
||||
Model.QuittierungsbelegsReportObject = Model.ReportCreator.CreateServiceOverviewReportNew(month, year, filterType.FilterEnum, customerOid, teamOid, employeeOid, organisationOid, serviceCategoryOid, startDate, endDate, false);
|
||||
var report = Model.ReportCreator.CreateServiceOverviewReportNew(month, year, filterType.FilterEnum, customerOid, teamOid, employeeOid, organisationOid, serviceCategoryOid, startDate, endDate, false);
|
||||
|
||||
//var employeeOid = Model.Employee.EmployeeOid;
|
||||
//var report = Model.ReportCreator.CreateEmployeeHourReport(employeeOid, null, new DateTime(2023, 10, 1), new DateTime(2023, 10, 31), 0);
|
||||
report.ExportOptions.PrintPreview.DefaultFileName = CreateFileName();
|
||||
report.DisplayName = CreateFileName();
|
||||
|
||||
//Model.QuittierungsbelegsReportObject = report;
|
||||
Model.QuittierungsbelegsReportObject = report;
|
||||
|
||||
return RedirectToActionPermanent("InitReports");
|
||||
}
|
||||
|
||||
private string CreateFileName()
|
||||
{
|
||||
// Quittierungsbeleg_AlleKlienten_Jetten-Lyndon_LWL_Oktober-01-15-2023.pdf
|
||||
var fileName = "Quittierungsbeleg_";
|
||||
|
||||
var selectedFilter = Model.SelectedFilterItem.FilterEnum;
|
||||
var filterText = string.Empty;
|
||||
switch(selectedFilter)
|
||||
{
|
||||
case QBFilterEnum.AlleKlienten:
|
||||
filterText = "AlleKlienten";
|
||||
break;
|
||||
case QBFilterEnum.NurKlientenMeinesTeams:
|
||||
filterText = "KlientenMeinerTeams";
|
||||
break;
|
||||
case QBFilterEnum.MeineKlienten:
|
||||
filterText = "MeineKlienten";
|
||||
break;
|
||||
case QBFilterEnum.KlientenAuswahl:
|
||||
filterText = "KlientenAuswahl";
|
||||
break;
|
||||
case QBFilterEnum.TeamAuswahl:
|
||||
filterText = "TeamAuswahl";
|
||||
break;
|
||||
}
|
||||
|
||||
fileName += $"{filterText}_";
|
||||
|
||||
if(Model.IsForSelectedEmployeesOnly)
|
||||
{
|
||||
var selectedEmployee = Model.SelectedEmployee;
|
||||
var employeeName = $"{selectedEmployee.LastName}-{selectedEmployee.FirstName}_";
|
||||
|
||||
fileName += $"{employeeName}_";
|
||||
}
|
||||
|
||||
if(Model.IsForSelectedCostbearersOnly)
|
||||
{
|
||||
var selectedCostbearer = Model.SelectedOrganisation;
|
||||
fileName += $"{selectedCostbearer.Name}_";
|
||||
}
|
||||
|
||||
if(Model.IsForSelectedCategoryOnly)
|
||||
{
|
||||
var selectedServiceCategory = Model.SelectedServiceCategory;
|
||||
fileName += $"{selectedServiceCategory.Name}_";
|
||||
}
|
||||
|
||||
if(!Model.SelectedMonth.HasValue || !Model.SelectedYear.HasValue || !Model.SelectedStartDay.HasValue || !Model.SelectedEndDay.HasValue)
|
||||
{
|
||||
return fileName;
|
||||
}
|
||||
|
||||
var start = new DateTime(Model.SelectedYear.Value, Model.SelectedMonth.Value, Model.SelectedStartDay.Value);
|
||||
var end = new DateTime(Model.SelectedYear.Value, Model.SelectedMonth.Value, Model.SelectedEndDay.Value);
|
||||
|
||||
fileName += $"{start:MMMM}-{start:dd}-{end:dd}-{start:yyyy}";
|
||||
|
||||
return fileName;
|
||||
}
|
||||
}
|
||||
|
||||
public class ConfirmationReceiptSignatureObject
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
@using BeWoPlanerMobil.Models;
|
||||
@using BeWoPlanerMobil.Controllers
|
||||
@using BeWoPlanerMobil.Models;
|
||||
@using BeWoPlanerMobil.Util
|
||||
@using BS.Shared
|
||||
|
||||
@@ -105,6 +106,11 @@
|
||||
var historyList = $("#med-list-history-list");
|
||||
$("#show-med-list-btn").prop("disabled", selectedReportType === "2");
|
||||
|
||||
$.get("@Url.Action("SelectReportType")", {reportType: selectedReportType}).success(function(result) {
|
||||
if(result.length > 1) {
|
||||
showErrorMessagePopup(result);
|
||||
}
|
||||
});
|
||||
|
||||
if (selectedReportType !== "2") {
|
||||
historyList.hide();
|
||||
@@ -175,7 +181,7 @@
|
||||
var inputDisabled = !AbstractModel.HasRightToEditCustomers ? "disabled" : string.Empty;
|
||||
|
||||
<div class="row my-3" id="stammdaten-container">
|
||||
<div class="col-sm-6 col-md-6 col-lg-3 mt-3">
|
||||
<div class="col-sm-6 col-md-6 col-lg-6 mt-3">
|
||||
<div class="card">
|
||||
<div class="card-body pb-0">
|
||||
<div class="card-title text-bewo-customer-card-header">
|
||||
@@ -255,7 +261,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-6 col-lg-3 mt-3">
|
||||
<div class="col-sm-6 col-md-6 col-lg-6 mt-3">
|
||||
<div class="card">
|
||||
<div class="card-body pb-0">
|
||||
<div class="card-title text-bewo-customer-card-header">
|
||||
@@ -312,7 +318,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-6 col-lg-3 mt-3">
|
||||
<div class="col-sm-6 col-md-6 col-lg-6 mt-3">
|
||||
<div class="card">
|
||||
<div class="card-body pb-0">
|
||||
<div class="card-title text-bewo-customer-card-header">
|
||||
@@ -369,7 +375,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-6 col-lg-3 mt-3">
|
||||
<div class="col-sm-6 col-md-6 col-lg-6 mt-3">
|
||||
<div class="card">
|
||||
<div class="card-body pb-0">
|
||||
<div class="card-title text-bewo-customer-card-header">
|
||||
@@ -432,7 +438,7 @@
|
||||
<input type="text" @inputDisabled class="form-control" id="mail" name="mail" value="@Model.SelectedJsonCustomer.EMail" />
|
||||
<div class="input-group-append">
|
||||
<button type="button" class="btn btn-primary px-2" onclick="window.open('mailto:@Model.SelectedJsonCustomer.EMail')">
|
||||
<i class="fas fa-at"></i>
|
||||
<i class="fas fa-envelope"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -772,12 +778,17 @@
|
||||
@Html.DropDownListFor(m => m.SelectedReportType, Model.ReportTypeItems, new { @class = "custom-select", id = "report-type-select", onchange = "changeReportTypeSelection()" })
|
||||
</div>
|
||||
<div class="col-sm-6 col-lg-auto mb-3">
|
||||
<button class="btn btn-primary" type="button" onclick="submitReportTypeSelectionForm();" id="show-med-list-btn">Bericht anzeigen</button>
|
||||
@{
|
||||
var showReportBtnDisabledValue = Model.SelectedReportType == CustomerReportType.Historie ? "disabled" : string.Empty;
|
||||
}
|
||||
<button @showReportBtnDisabledValue class="btn btn-primary" type="button" onclick="submitReportTypeSelectionForm();" id="show-med-list-btn">Bericht anzeigen</button>
|
||||
</div>
|
||||
<div class="col-sm-12 col-lg">
|
||||
@if(!(Model.SelectedCustomer is null))
|
||||
{
|
||||
<table class="table d-none" id="med-list-history-list" style="table-layout: fixed !important;">
|
||||
var displayValue = Model.SelectedReportType == CustomerReportType.Historie ? string.Empty : "d-none";
|
||||
|
||||
<table class="table @displayValue" id="med-list-history-list" style="table-layout: fixed !important;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="px-0">
|
||||
@@ -1046,7 +1057,7 @@
|
||||
@if(!(Model?.Report is null) && Html.IsInDebugMode())
|
||||
{
|
||||
<div class="modal" data-backdrop="static" tabindex="-1" role="dialog" id="report-popup">
|
||||
<div class="modal-dialog modal-xl" role="document">
|
||||
<div class="modal-dialog modal-xl modal-dialog-scrollable" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">@Model.ReportName</h5>
|
||||
|
||||
@@ -589,9 +589,35 @@
|
||||
function getRateSelectedGoalUrl() {
|
||||
return "@Url.Action("RateSelectedGoal")";
|
||||
}
|
||||
|
||||
@if(Html.IsInDebugMode())
|
||||
{
|
||||
<text>
|
||||
function provokeJsonError() {
|
||||
try {
|
||||
$.get("@Url.Action("ProvokeJsonError")").success(function (data) {
|
||||
var test = $.parseJSON(data);
|
||||
});
|
||||
} catch (error) {
|
||||
|
||||
}
|
||||
}
|
||||
</text>
|
||||
}
|
||||
</script>
|
||||
|
||||
<div class="container mt-3" id="checkbox-container">
|
||||
@if(Html.IsInDebugMode())
|
||||
{
|
||||
<text>
|
||||
<div class="row">
|
||||
<div class="col-md">
|
||||
<button class="btn btn-bewo-dev" type="button" onclick="provokeJsonError()">JSON-Fehler provozieren</button>
|
||||
</div>
|
||||
</div>
|
||||
</text>
|
||||
}
|
||||
|
||||
<div class="row">
|
||||
@if(AbstractModel.IsAllowedToSeeSupportConceptFilter)
|
||||
{
|
||||
|
||||
@@ -380,7 +380,7 @@
|
||||
{
|
||||
<div class="form-group">
|
||||
<label for="dokufeld">Dokumentation</label>
|
||||
<textarea class="form-control" name="Dokumentation6" id="dokufeld">@Model.NoticeToEdit</textarea>
|
||||
<textarea class="form-control" style="overflow: scroll;" name="Dokumentation6" id="dokufeld">@Model.NoticeToEdit</textarea>
|
||||
</div>
|
||||
}
|
||||
else
|
||||
@@ -403,7 +403,7 @@
|
||||
var textareaName = i + 1 < 1 ? "Dokumentation" : "Dokumentation" + (i + 1);
|
||||
|
||||
<div class="tab-pane show@(i == 0 ? " active" : string.Empty)" id="doku_@i" role="tabpanel" aria-labelledby="doku_@i-tab">
|
||||
<textarea class="form-control doku-form-control" id="doku-textarea-@i" name="@textareaName">@Model.NoticeListToEdit[i]</textarea>
|
||||
<textarea class="form-control doku-form-control" style="overflow: scroll;" id="doku-textarea-@i" name="@textareaName">@Model.NoticeListToEdit[i]</textarea>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
|
||||
@@ -1,5 +1,18 @@
|
||||
@model BeWoPlanerMobil.Models.ReportModel
|
||||
|
||||
<script type="text/javascript">
|
||||
function quittierungsbelegsViewerInit(s, e) {
|
||||
try {
|
||||
s.UpdateLocalization({
|
||||
'Page': 'Seite',
|
||||
'of': 'von'
|
||||
});
|
||||
} catch (error) {
|
||||
showErrorPopup(error);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@if(Model.QuittierungsbelegsReportObject != null)
|
||||
{
|
||||
@Html.DevExpress().WebDocumentViewer(settings =>
|
||||
@@ -10,5 +23,6 @@
|
||||
settings.MobileMode = true;
|
||||
settings.SettingsMobile.ReaderMode = true;
|
||||
settings.SettingsMobile.AnimationEnabled = false;
|
||||
settings.ClientSideEvents.Init = "quittierungsbelegsViewerInit";
|
||||
}).Bind(Model.QuittierungsbelegsReportObject).GetHtml()
|
||||
}
|
||||
@@ -182,58 +182,60 @@
|
||||
{
|
||||
<input type="hidden" name="deleteEmployeeSignatureInfo" value="@result.Identifier" />
|
||||
}
|
||||
<div class="btn-toolbar">
|
||||
<div class="btn-group pr-1 w-auto customer-sig-group" role="group">
|
||||
@if(AbstractModel.HasRightToDeleteReceiptSignatures && result.CustomerSignatureOids.Any())
|
||||
{
|
||||
<button class="btn btn-danger mx-0" type="button" onclick="deleteCustomerSignatures('#collapse-result-@result.Identifier', '@result.Identifier', '@result.CustomerName', '@timeSpan_ssp')">
|
||||
<span class="fas fa-trash"></span>
|
||||
</button>
|
||||
}
|
||||
<button class="btn btn-bewo-customers" type="button" onclick="loadConfirmationReceiptSignatures('@cardBodyId_ssp', '@result.Identifier', false, @result.HasCustomerSignature.ToString().ToLower(), @canCustomerSign.ToString().ToLower(), @result.CustomerOid)">
|
||||
<span class="fas fa-signature mr-0 pr-0"></span>
|
||||
@if(customerSignatureState != SignatureState.All)
|
||||
{
|
||||
<span class="fa-stack align-middle mx-0 px-0" style="height: auto !important">
|
||||
<i class="fas fa-check fa-stack-1x mx-0 px-0"></i>
|
||||
<i class="fas fa-slash fa-stack-1x mx-0 px-0" style="color: tomato;"></i>
|
||||
</span>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span class="fas fa-check-double" style="color: yellowgreen !important"></span>
|
||||
}
|
||||
K
|
||||
<div class="btn-toolbar">
|
||||
<!-- w-auto -->
|
||||
<div class="btn-group pr-1" role="group" style="width: 150px !important;">
|
||||
@if(AbstractModel.HasRightToDeleteReceiptSignatures && result.CustomerSignatureOids.Any())
|
||||
{
|
||||
<button class="btn btn-danger mx-0" type="button" onclick="deleteCustomerSignatures('#collapse-result-@result.Identifier', '@result.Identifier', '@result.CustomerName', '@timeSpan_ssp')">
|
||||
<span class="fas fa-trash"></span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="btn-group w-auto employee-sig-group" role="group">
|
||||
@if(AbstractModel.HasRightToDeleteReceiptSignatures && result.EmployeeSignatureOids.Any())
|
||||
}
|
||||
<button class="btn btn-bewo-customers" type="button" onclick="loadConfirmationReceiptSignatures('@cardBodyId_ssp', '@result.Identifier', false, @result.HasCustomerSignature.ToString().ToLower(), @canCustomerSign.ToString().ToLower(), @result.CustomerOid)">
|
||||
<span class="fas fa-signature mr-0 pr-0"></span>
|
||||
@if(customerSignatureState != SignatureState.All)
|
||||
{
|
||||
<button class="btn btn-danger mx-0" type="button" onclick="deleteEmployeeSignature('#collapse-result-@result.Identifier', '@result.Identifier', '@employeeName', '@result.CustomerName', '@timeSpan_ssp')">
|
||||
<span class="fas fa-trash"></span>
|
||||
</button>
|
||||
<span class="fa-stack align-middle mx-0 px-0" style="height: auto !important">
|
||||
<i class="fas fa-check fa-stack-1x mx-0 px-0"></i>
|
||||
<i class="fas fa-slash fa-stack-1x mx-0 px-0" style="color: tomato;"></i>
|
||||
</span>
|
||||
}
|
||||
<button class="btn btn-bewo-employee" @disabledString type="button" onclick="loadConfirmationReceiptSignatures('@cardBodyId_ssp', '@result.Identifier', true, @overwrite_ssp, @canEmployeeSign.ToString().ToLower(), @result.CustomerOid)">
|
||||
<span class="fas fa-signature mr-0 pr-0"></span>
|
||||
@if(employeeSignatureState == SignatureState.Some || employeeSignatureState == SignatureState.None)
|
||||
{
|
||||
<span class="fa-stack align-middle mx-0 px-0" style="height: auto !important">
|
||||
<i class="fas fa-check fa-stack-1x mx-0 px-0"></i>
|
||||
<i class="fas fa-slash fa-stack-1x mx-0 px-0" style="color: tomato;"></i>
|
||||
</span>
|
||||
}
|
||||
else if(employeeSignatureState == SignatureState.AllOwnServiceRecords && !AbstractModel.HasRightToProvideEmployeeSignatureForOthers)
|
||||
{
|
||||
<span class="fas fa-ban" style="color: tomato;"></span>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span class="fas fa-check-double" style="color: yellowgreen !important"></span>
|
||||
}
|
||||
M
|
||||
</button>
|
||||
</div>
|
||||
else
|
||||
{
|
||||
<span class="fas fa-check-double" style="color: yellowgreen !important"></span>
|
||||
}
|
||||
K
|
||||
</button>
|
||||
</div>
|
||||
<!-- w-auto -->
|
||||
<div class="btn-group role="group" style="width: 150px !important;">
|
||||
@if(AbstractModel.HasRightToDeleteReceiptSignatures && result.EmployeeSignatureOids.Any())
|
||||
{
|
||||
<button class="btn btn-danger mx-0" type="button" onclick="deleteEmployeeSignature('#collapse-result-@result.Identifier', '@result.Identifier', '@employeeName', '@result.CustomerName', '@timeSpan_ssp')">
|
||||
<span class="fas fa-trash"></span>
|
||||
</button>
|
||||
}
|
||||
<button class="btn btn-bewo-employee" @disabledString type="button" onclick="loadConfirmationReceiptSignatures('@cardBodyId_ssp', '@result.Identifier', true, @overwrite_ssp, @canEmployeeSign.ToString().ToLower(), @result.CustomerOid)">
|
||||
<span class="fas fa-signature mr-0 pr-0"></span>
|
||||
@if(employeeSignatureState == SignatureState.Some || employeeSignatureState == SignatureState.None)
|
||||
{
|
||||
<span class="fa-stack align-middle mx-0 px-0" style="height: auto !important">
|
||||
<i class="fas fa-check fa-stack-1x mx-0 px-0"></i>
|
||||
<i class="fas fa-slash fa-stack-1x mx-0 px-0" style="color: tomato;"></i>
|
||||
</span>
|
||||
}
|
||||
else if(employeeSignatureState == SignatureState.AllOwnServiceRecords && !AbstractModel.HasRightToProvideEmployeeSignatureForOthers)
|
||||
{
|
||||
<span class="fas fa-ban" style="color: tomato;"></span>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span class="fas fa-check-double" style="color: yellowgreen !important"></span>
|
||||
}
|
||||
M
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -367,6 +367,7 @@
|
||||
|
||||
</div>
|
||||
<!-- /Container für die Mitarbeiterunterschrift -->
|
||||
|
||||
<!-- Container für die Unterschrift -->
|
||||
<div class="container-fluid d-none my-3" id="report-signature-container-div">
|
||||
<div class="container-fluid">
|
||||
@@ -402,6 +403,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<!-- /Container für die Unterschrift -->
|
||||
|
||||
<!-- Popup der Legende -->
|
||||
<div class="modal" tabindex="-1" role="dialog" id="qb-info-popup">
|
||||
<div class="modal-dialog" role="document">
|
||||
@@ -471,6 +473,11 @@
|
||||
</span>
|
||||
- Dieser Zeiterfassungseinträge kann von Ihnen nicht unterschrieben werden, da Ihnen das dazu notwendige Recht "Unterschriften für den Quittierungsbeleg stellvertretend leisten (monatlich)." fehlt.
|
||||
</p>
|
||||
|
||||
<br />
|
||||
<hr />
|
||||
|
||||
<p>Um einen Quittierungsbeleg aus der Vorschau herunterzuladen, klicken oder tippen Sie auf den Bericht. Dann erscheint ein Button zur Formatsauswahl.</p>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div class="clearfix">
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
@using BeWoPlanerMobil.Controllers
|
||||
@using BeWoPlanerMobil.Models
|
||||
@using BeWoPlanerMobil.Service
|
||||
@using BeWoPlanerMobil.Util
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
@@ -451,6 +452,13 @@
|
||||
|
||||
$(document).ready(function() {
|
||||
try {
|
||||
@if(Html.IsInDebugMode())
|
||||
{
|
||||
<text>
|
||||
logColorfulMessage(`Browser JavaScript engine: ${navigator.userAgent}`, "#59FF00");
|
||||
</text>
|
||||
}
|
||||
|
||||
$("textarea").each(function () {
|
||||
var id = this.getAttribute("id");
|
||||
|
||||
@@ -459,7 +467,8 @@
|
||||
return;
|
||||
}
|
||||
|
||||
this.setAttribute("style", "height:" + (this.scrollHeight) + "px;overflow-y:hidden;");
|
||||
//this.setAttribute("style", "height:" + (this.scrollHeight) + "px;overflow-y:hidden;");
|
||||
this.setAttribute("style", "height:"+(this.scrollHeight) + "px;overflow-y:scroll;");
|
||||
}).on("input", function () {
|
||||
this.style.height = 0;
|
||||
this.style.height = (this.scrollHeight) + "px";
|
||||
|
||||
@@ -4792,8 +4792,12 @@ namespace BeWo.Data.Access
|
||||
var result = new List<SchedulerAppointment>();
|
||||
var intervals = IntervalFinderHelper.CreateIntervals(duration, intervalStart, intervalEnd, skipWeekends, intervalBuffer);
|
||||
|
||||
// Das subset enthält die zu prüfenden Tage im angegebenen Intervall.
|
||||
// 04.12.2023 15:00 bis 06.12.2023 12:00 wären 04.12.2023, 05.12.2023, 06.12.2023 im subset.
|
||||
var subset = IntervalFinderHelper.GenereateIntervalsForChecking(intervalStart, intervalEnd);
|
||||
|
||||
// Es werden im subset nach überschneidenden Terminen gesucht.
|
||||
//
|
||||
foreach (var dts in subset)
|
||||
{
|
||||
var start = dts.StartDate.MergeDatesByDate(intervalStart);
|
||||
|
||||
@@ -152,7 +152,11 @@ namespace BeWo.Data.Utils
|
||||
}
|
||||
|
||||
DateTime e;
|
||||
var end = start.MergeDatesByDate(intervalEnd);
|
||||
// Beim Intervall (z.B. 04.12.2023 15:00 und 06.12.2023 12:00) wird nur zwischen Start- und Enduhrzeit geprüft.
|
||||
// Startdatum+Enduhrzeit
|
||||
// -> end = 04.12.2023 12:00
|
||||
//var end = start.MergeDatesByDate(intervalEnd);
|
||||
var end = intervalEnd;
|
||||
|
||||
while ((e = start.AddMinutes(duration)) <= end && start <= end.AddMinutes(-1 * duration))
|
||||
{
|
||||
@@ -166,6 +170,13 @@ namespace BeWo.Data.Utils
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Liefert DateTimeSpan-Objekte für ganze Tage zwischen zwei Datumsangaben zurück.
|
||||
/// Z.B. 04.12.2023 bis 06.12.2023 liefert drei DateTimeSpan für den 04.12., 05.12. und 06.12. zurück.
|
||||
/// </summary>
|
||||
/// <param name="intervalStart">Intervallstart</param>
|
||||
/// <param name="intervalEnd">Intervallende</param>
|
||||
/// <returns>Liste der DateTimeSpan-Objekte für die Anzahl der Tage im angegebenen Intervall.</returns>
|
||||
public static List<DateTimeSpan> GenereateIntervalsForChecking(DateTime intervalStart, DateTime intervalEnd)
|
||||
{
|
||||
var start = intervalStart.Date;
|
||||
|
||||
@@ -68,9 +68,9 @@ namespace ProfEggersStiftung
|
||||
this.xrTableCell15 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell14 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell2 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.picSignature = new DevExpress.XtraReports.UI.XRPictureBox();
|
||||
this.xrTableCell28 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell11 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.picSignature = new DevExpress.XtraReports.UI.XRPictureBox();
|
||||
this.GroupHeader1 = new DevExpress.XtraReports.UI.GroupHeaderBand();
|
||||
this.GroupFooter4 = new DevExpress.XtraReports.UI.GroupFooterBand();
|
||||
this.xrLabel8 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
@@ -135,6 +135,8 @@ namespace ProfEggersStiftung
|
||||
this.fieldTeilnehmerZahl = new DevExpress.XtraReports.UI.CalculatedField();
|
||||
this.fieldBetreuerZahl = new DevExpress.XtraReports.UI.CalculatedField();
|
||||
this.GroupHeader2 = new DevExpress.XtraReports.UI.GroupHeaderBand();
|
||||
this.xrPictureBox2 = new DevExpress.XtraReports.UI.XRPictureBox();
|
||||
this.xrPictureBox1 = new DevExpress.XtraReports.UI.XRPictureBox();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTableServiceRecords1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.tableGroup1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.tableGroup2)).BeginInit();
|
||||
@@ -524,6 +526,18 @@ namespace ProfEggersStiftung
|
||||
this.xrTableCell2.Name = "xrTableCell2";
|
||||
this.xrTableCell2.Weight = 0.15151510307201618D;
|
||||
//
|
||||
// picSignature
|
||||
//
|
||||
this.picSignature.Borders = DevExpress.XtraPrinting.BorderSide.None;
|
||||
this.picSignature.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Tag", null, "Services.Signature")});
|
||||
this.picSignature.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
|
||||
this.picSignature.Name = "picSignature";
|
||||
this.picSignature.SizeF = new System.Drawing.SizeF(121F, 18F);
|
||||
this.picSignature.Sizing = DevExpress.XtraPrinting.ImageSizeMode.ZoomImage;
|
||||
this.picSignature.StylePriority.UseBorders = false;
|
||||
this.picSignature.BeforePrint += new System.Drawing.Printing.PrintEventHandler(this.picSignature_BeforePrint);
|
||||
//
|
||||
// xrTableCell28
|
||||
//
|
||||
this.xrTableCell28.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
@@ -541,18 +555,6 @@ namespace ProfEggersStiftung
|
||||
this.xrTableCell11.Name = "xrTableCell11";
|
||||
this.xrTableCell11.Weight = 0.18939388291629064D;
|
||||
//
|
||||
// picSignature
|
||||
//
|
||||
this.picSignature.Borders = DevExpress.XtraPrinting.BorderSide.None;
|
||||
this.picSignature.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Tag", null, "Services.Signature")});
|
||||
this.picSignature.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
|
||||
this.picSignature.Name = "picSignature";
|
||||
this.picSignature.SizeF = new System.Drawing.SizeF(121F, 18F);
|
||||
this.picSignature.Sizing = DevExpress.XtraPrinting.ImageSizeMode.ZoomImage;
|
||||
this.picSignature.StylePriority.UseBorders = false;
|
||||
this.picSignature.BeforePrint += new System.Drawing.Printing.PrintEventHandler(this.picSignature_BeforePrint);
|
||||
//
|
||||
// GroupHeader1
|
||||
//
|
||||
this.GroupHeader1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
|
||||
@@ -704,6 +706,8 @@ namespace ProfEggersStiftung
|
||||
// GroupFooter5
|
||||
//
|
||||
this.GroupFooter5.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
|
||||
this.xrPictureBox1,
|
||||
this.xrPictureBox2,
|
||||
this.xrLabel18,
|
||||
this.xrLabel20,
|
||||
this.xrTableAbwesenheiten,
|
||||
@@ -1258,6 +1262,25 @@ namespace ProfEggersStiftung
|
||||
this.GroupHeader2.Name = "GroupHeader2";
|
||||
this.GroupHeader2.RepeatEveryPage = true;
|
||||
//
|
||||
// xrPictureBox2
|
||||
//
|
||||
this.xrPictureBox2.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Image", null, "CustomerSignature")});
|
||||
this.xrPictureBox2.LocationFloat = new DevExpress.Utils.PointFloat(518.7495F, 95.45823F);
|
||||
this.xrPictureBox2.Name = "xrPictureBox2";
|
||||
this.xrPictureBox2.SizeF = new System.Drawing.SizeF(261.2503F, 36.54176F);
|
||||
this.xrPictureBox2.Sizing = DevExpress.XtraPrinting.ImageSizeMode.ZoomImage;
|
||||
//
|
||||
// xrPictureBox1
|
||||
//
|
||||
this.xrPictureBox1.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Image", null, "EmployeeSignature")});
|
||||
this.xrPictureBox1.LocationFloat = new DevExpress.Utils.PointFloat(788.7497F, 95.45822F);
|
||||
this.xrPictureBox1.Name = "xrPictureBox1";
|
||||
this.xrPictureBox1.Scripts.OnBeforePrint = "xrPictureBox1_BeforePrint";
|
||||
this.xrPictureBox1.SizeF = new System.Drawing.SizeF(261.2503F, 36.54175F);
|
||||
this.xrPictureBox1.Sizing = DevExpress.XtraPrinting.ImageSizeMode.ZoomImage;
|
||||
//
|
||||
// Stundenzettel
|
||||
//
|
||||
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
|
||||
@@ -1407,5 +1430,7 @@ namespace ProfEggersStiftung
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel18;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel20;
|
||||
private DevExpress.XtraReports.UI.XRPictureBox picSignature;
|
||||
private DevExpress.XtraReports.UI.XRPictureBox xrPictureBox2;
|
||||
private DevExpress.XtraReports.UI.XRPictureBox xrPictureBox1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ namespace BeWo.Service.Plugins
|
||||
//t = "1076891970"; // Assistenza
|
||||
//t = "0216265667"; // LH Hannover
|
||||
//t = "1774789565"; // LH Essen
|
||||
t = "9342168675"; // ABC Betreuungen - jetzt Schubkraft
|
||||
//t = "9342168675"; // ABC Betreuungen - jetzt Schubkraft
|
||||
//t = "1193188501"; // Aids Hilfe Dortmund
|
||||
//t = "7860351957"; // SKF Alsdorf
|
||||
//t = "3311520228"; // Die Düne
|
||||
@@ -53,7 +53,7 @@ namespace BeWo.Service.Plugins
|
||||
//t = "7375324044"; // Diakonie KK Kleve
|
||||
//t = "1441747891"; // BeWo Mobil Köln
|
||||
//t = "5120047701"; // Trialog
|
||||
t = "3629696651"; // Soziale Dienste Niederrhein (SDN)
|
||||
//t = "3629696651"; // Soziale Dienste Niederrhein (SDN)
|
||||
//t = "9893557471"; // Caritas Frankfurt
|
||||
//t = "2918696314"; // Caritas Frankfurt 2
|
||||
//t = "6923790936"; // Integra e.V.
|
||||
@@ -147,7 +147,7 @@ namespace BeWo.Service.Plugins
|
||||
//t = "9975231461"; // Selwo
|
||||
//t = "8181286349"; // BeWo am Rhein
|
||||
//t = "4595275645"; // Eigenständig
|
||||
//t = "7912635399"; // Prof. Dr. Eggers Stiftung
|
||||
t = "7912635399"; // Prof. Dr. Eggers Stiftung
|
||||
//t = "3549726254"; // Socia
|
||||
//t = "1992495802"; // Monvita
|
||||
//t = "7381352241"; // Ressource e.V.
|
||||
@@ -173,7 +173,7 @@ namespace BeWo.Service.Plugins
|
||||
//t = "6586058528"; // Freundeskreis Suchtkrankenhilfe e.V. (FFS)
|
||||
//t = "2632162696"; // Hand in Hand (ehemals Pro BeWo Düren)
|
||||
//t = "6340891020"; // Caritas Ahlen
|
||||
t = "3659854106"; // alpha e.V.
|
||||
//t = "3659854106"; // alpha e.V.
|
||||
//t = "5809130435"; // Lebenshilfe Kusel
|
||||
//t = "3367947706"; // PaS Mönchengladbach
|
||||
//t = "2331203795"; // BeWo für dich
|
||||
@@ -197,7 +197,7 @@ namespace BeWo.Service.Plugins
|
||||
//t = "9883255779"; // VKM Menden (mobil GmbH)
|
||||
//t = "9556218062"; // Diakonie Landshut
|
||||
//t = "2279593936"; // Diakonie Mülheim
|
||||
t = "3623837005"; // Betreuwo Wesel
|
||||
//t = "3623837005"; // Betreuwo Wesel
|
||||
//t = "8407321888"; // AWO Wesel
|
||||
//t = "8454426692"; // Mit-Menschen Wuppertal
|
||||
//t = "0629004412"; // BeWo-Colonia Basaran (Projekt
|
||||
@@ -371,7 +371,8 @@ namespace BeWo.Service.Plugins
|
||||
//t = "1143768898"; // Diakonisches Werk im Ev. Kirchenkreis Dinslaken - Soziotherapie
|
||||
//t = "8164797250"; // Diakonisches Werk im Ev. Kirchenkreis Dinslaken - Ambulante Jugendhilfe JUDI
|
||||
//t = "4431610343"; // B-B-C-Terwort GmbH
|
||||
t = "2235342307"; // Suchtkrankenhilfe Ostfriesland
|
||||
//t = "2235342307"; // Suchtkrankenhilfe Ostfriesland
|
||||
//t = "1733934665"; // Auf eigenen Füßen stehen (Birgit Apel de Santos & Stefan Haefs)
|
||||
return t;
|
||||
#else
|
||||
if (MultitenancyOperationContextExt.Current != null)
|
||||
|
||||
Reference in New Issue
Block a user