diff --git a/BeWo/BeWoApp.xaml.cs b/BeWo/BeWoApp.xaml.cs
index ebebee1c3..6f5c56b59 100644
--- a/BeWo/BeWoApp.xaml.cs
+++ b/BeWo/BeWoApp.xaml.cs
@@ -49,8 +49,8 @@ namespace BeWo
public static LoginControl LoginControl;
public static MainControl MainControl;
- public static string ShortVersion = "3.17";
- public static string Version = "Version 3.17";
+ public static string ShortVersion = "3.18";
+ public static string Version = "Version 3.18";
public static int RenderTier = 0;
diff --git a/BeWo/ConfirmDemoDialog.xaml b/BeWo/ConfirmDemoDialog.xaml
index 2dc733b88..84ead9ecf 100644
--- a/BeWo/ConfirmDemoDialog.xaml
+++ b/BeWo/ConfirmDemoDialog.xaml
@@ -17,7 +17,7 @@
-
+
diff --git a/BeWo/Core/Service/SupportConceptService.cs b/BeWo/Core/Service/SupportConceptService.cs
index 40137c3f7..731437aec 100644
--- a/BeWo/Core/Service/SupportConceptService.cs
+++ b/BeWo/Core/Service/SupportConceptService.cs
@@ -344,6 +344,7 @@ namespace BeWo.Core.Service
public static CompactSupportConceptDC HoleHilfeplanAusListe(List scList, CompactCustomerDC customerCompact, DateTime firstTime, DateTime lastTime)
{
+ CompactSupportConceptDC result = null;
foreach (var sc in scList)
{
if (sc.Customer.Oid == customerCompact.Oid)
@@ -353,10 +354,14 @@ namespace BeWo.Core.Service
{
return sc;
}
+ if (result == null || sc.EndDate.HasValue && sc.EndDate > result.EndDate)
+ {
+ result = sc;
+ }
}
}
- return null;
+ return result;
}
}
}
\ No newline at end of file
diff --git a/BeWo/EnterTenantDialog.xaml b/BeWo/EnterTenantDialog.xaml
index eb9cabc18..acc081ec9 100644
--- a/BeWo/EnterTenantDialog.xaml
+++ b/BeWo/EnterTenantDialog.xaml
@@ -17,7 +17,7 @@
-
+
diff --git a/BeWo/MainControl.xaml.cs b/BeWo/MainControl.xaml.cs
index bc8748827..e6e71515f 100644
--- a/BeWo/MainControl.xaml.cs
+++ b/BeWo/MainControl.xaml.cs
@@ -1188,7 +1188,8 @@ namespace BeWo
var cancelButton = new Button {Content = "Schließen"};
cancelButton.Margin = new Thickness(5);
-
+ cancelButton.Width = 100;
+ cancelButton.HorizontalAlignment = HorizontalAlignment.Right;
var mailLabel = new Label
{
Content = "Support-Mail schreiben",
diff --git a/BeWo/SchulbegleitenderDienst/VertretungsMainViewV2.xaml.cs b/BeWo/SchulbegleitenderDienst/VertretungsMainViewV2.xaml.cs
index a970cfae7..5ce8857f5 100644
--- a/BeWo/SchulbegleitenderDienst/VertretungsMainViewV2.xaml.cs
+++ b/BeWo/SchulbegleitenderDienst/VertretungsMainViewV2.xaml.cs
@@ -1136,13 +1136,6 @@ namespace BeWo.SchulbegleitenderDienst
e.Customizations.Add(btn);
}
}
-
-
-
-
-
-
-
}
private void DeleteAbsenceTime_OnClick(object sender, RoutedEventArgs e)
diff --git a/BeWo/SchulbegleitenderDienst/VertretungsSearchView.xaml b/BeWo/SchulbegleitenderDienst/VertretungsSearchView.xaml
index 1a5b69251..b6054938f 100644
--- a/BeWo/SchulbegleitenderDienst/VertretungsSearchView.xaml
+++ b/BeWo/SchulbegleitenderDienst/VertretungsSearchView.xaml
@@ -148,7 +148,7 @@
-
+
diff --git a/BeWo/SchulbegleitenderDienst/VertretungsSearchView.xaml.cs b/BeWo/SchulbegleitenderDienst/VertretungsSearchView.xaml.cs
index 55126fa07..7c6679f06 100644
--- a/BeWo/SchulbegleitenderDienst/VertretungsSearchView.xaml.cs
+++ b/BeWo/SchulbegleitenderDienst/VertretungsSearchView.xaml.cs
@@ -15,6 +15,9 @@ using BS.Shared.DataContracts.Compact;
using DevExpress.Xpf.Editors;
using DevExpress.Xpf.Grid;
using BS.Shared.DataContracts;
+using BS.Shared.Translation;
+using DevExpress.Xpf.Bars;
+using BeWo.Core;
namespace BeWo.SchulbegleitenderDienst
{
@@ -793,6 +796,38 @@ namespace BeWo.SchulbegleitenderDienst
CloseSearchView(item);
}
+ private void TableView_OnShowGridMenu(object sender, GridMenuEventArgs e)
+ {
+ AddContextMenu(e);
+ }
+
+ private void AddContextMenu(GridMenuEventArgs e)
+ {
+ var item = e.Source.DataControl.SelectedItem;
+
+
+ var btn = new BarButtonItem { Content = Translator.Translate("Steckbrief anzeigen") };
+ btn.ItemClick += ShowCharacteristics;
+ btn.Tag = item;
+
+ e.Customizations.Add(btn);
+
+ }
+
+ private void ShowCharacteristics(object sender, RoutedEventArgs e)
+ {
+
+ var url = $"{BeWoApp.SiteOfOrigin}/ReportView.aspx";
+
+ var btn = sender as BarButtonItem;
+ var sd = btn.Tag as SearchViewDaten;
+ url += $"?type={ReportTypes.SBDEmployeeReport}&employeeOid={sd.EmployeeDC.EmployeeOid}";
+
+
+ BeWoUtils.NavigateToReportUri(url, "Steckbrief");
+
+ }
+
private void CloseSearchView(SearchViewDaten item)
{
var vertreter = item.EmployeeDC.CompactEmployee;
diff --git a/BeWo/ServiceProxy/Generated.cs b/BeWo/ServiceProxy/Generated.cs
index 671ca8e91..2164ed113 100644
--- a/BeWo/ServiceProxy/Generated.cs
+++ b/BeWo/ServiceProxy/Generated.cs
@@ -1709,6 +1709,7 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.Sex))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.PersonType))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.ControlType))]
+ [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.AbsenceReasonVisibilityType))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.SubstitutionNeed))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.AppointmentDayOfWeek))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.SystemEntryID))]
@@ -1859,17 +1860,19 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary>))]
- [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.SignatureType))]
- [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.ServiceRecordValidationResult))]
- [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.HomeViewPanelType))]
- [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.Auszahlungsintervall))]
- [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.Zahlungstyp))]
- [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.VertretungsStatus))]
- [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.SchulbegleitenderZugehoerigkeitsTyp))]
- [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.MessageType))]
- [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.StatementType))]
- [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List))]
- [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.UiElementType))]
+ [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary>))]
+ [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List>))]
+ [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary))]
+ [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary))]
+ [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary))]
+ [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary))]
+ [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary))]
+ [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary))]
+ [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary>))]
+ [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary))]
+ [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary))]
+ [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary))]
+ [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.ConfirmationReceiptSignatureDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List))]
@@ -1897,6 +1900,7 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.DienstplanerMonthlySummaryDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.ServiceRecordValidationResultDC))]
+ [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.SbdConfigDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.SignatureDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List))]
@@ -1915,6 +1919,8 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.ReportTemplateDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.ReportTypes))]
+ [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List))]
+ [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.TextModuleDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.BargeldkassenDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List))]
@@ -1935,7 +1941,9 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.AccountingTransactionDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.TextbausteinDC))]
- [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.SbdConfigDC))]
+ [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Settlement2DC))]
+ [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List))]
+ [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.InvoiceItemDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.InvoiceDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.MandatorDC))]
@@ -1959,18 +1967,15 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.AdditionalServiceBookingDC))]
+ [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List))]
+ [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.AdditionalServiceNoticeDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.LicenseInfoDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GroupDurationDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.BeWoMobilBrowserInfoDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.UiElementDC))]
- [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List))]
- [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.TextModuleDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List))]
- [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Settlement2DC))]
- [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List))]
- [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.InvoiceItemDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.CustomerInfoDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.SupportConcetInfoDC))]
@@ -1985,19 +1990,18 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.FLSAnalysisDataDetailDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.ServiceRecordFLSOverviewDC))]
- [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary>))]
- [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List>))]
- [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary))]
- [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary))]
- [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary))]
- [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary))]
- [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary))]
- [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary>))]
- [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary))]
- [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary))]
- [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary))]
- [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary))]
- [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary>))]
+ [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.SignatureType))]
+ [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.ServiceRecordValidationResult))]
+ [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.HomeViewPanelType))]
+ [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.Auszahlungsintervall))]
+ [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.Zahlungstyp))]
+ [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.VertretungsStatus))]
+ [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.SchulbegleitenderZugehoerigkeitsTyp))]
+ [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.MessageType))]
+ [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.StatementType))]
+ [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.SignatureStateType))]
+ [System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List))]
+ [System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.UiElementType))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Reports.AuslastungAnalysisRootDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List))]
@@ -5254,6 +5258,25 @@ namespace BeWo.ServiceProxy
public interface IOperationsService
{
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetServiceRecordsByIds", ReplyAction="http://tempuri.org/IOperationsService/GetServiceRecordsByIdsResponse")]
+ [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetServiceRecordsByIdsBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
+ System.Collections.Generic.List GetServiceRecordsByIds(System.Collections.Generic.List serviceRecordOids);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetUrlaubskontoByEmployee", ReplyAction="http://tempuri.org/IOperationsService/GetUrlaubskontoByEmployeeResponse")]
+ [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetUrlaubskontoByEmployeeBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
+ BS.Shared.DataContracts.UrlaubskontoDC GetUrlaubskontoByEmployee(long empOid, int year);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetOwnChatSettingsUrl", ReplyAction="http://tempuri.org/IOperationsService/GetOwnChatSettingsUrlResponse")]
+ [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetOwnChatSettingsUrlBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
+ string GetOwnChatSettingsUrl();
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/HasConfirmationReceiptSignaturesByEmployeeA" +
+ "ndServiceRecords", ReplyAction="http://tempuri.org/IOperationsService/HasConfirmationReceiptSignaturesByEmployeeA" +
+ "ndServiceRecordsResponse")]
+ [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/HasConfirmationReceiptSignaturesByEmployeeA" +
+ "ndServiceRecordsBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
+ bool HasConfirmationReceiptSignaturesByEmployeeAndServiceRecords(long employeeOid, System.Collections.Generic.List serviceRecordOids);
+
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/HasConfirmationReceiptSignatureByDateAndCus" +
"tomer", ReplyAction="http://tempuri.org/IOperationsService/HasConfirmationReceiptSignatureByDateAndCus" +
"tomerResponse")]
@@ -5535,6 +5558,25 @@ namespace BeWo.ServiceProxy
"iceRecordBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
bool CheckForConfirmationReceiptSignatureForServiceRecord(long serviceRecordOid, BS.Shared.SignatureType signatureType);
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetMessageFromServerForDeletingAppointments" +
+ "", ReplyAction="http://tempuri.org/IOperationsService/GetMessageFromServerForDeletingAppointments" +
+ "Response")]
+ [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetMessageFromServerForDeletingAppointments" +
+ "BeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
+ string GetMessageFromServerForDeletingAppointments(bool pHasRightToSeeAllEmployeeAppointments, long pEmployeeOid, System.DateTime pIntervalEnd, System.Collections.Generic.List pSelectedEmployees, System.Collections.Generic.List pSelectedCustomers, System.Collections.Generic.List pSelectedResources, bool pEmployeesOnly, bool pCustomersOnly, bool pResourcesOnly, bool pPrivateAppointmentsOnly, bool pOnlyMyAppointments, System.Collections.Generic.Dictionary pUserRights);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/DeleteAppointmentsInInterval", ReplyAction="http://tempuri.org/IOperationsService/DeleteAppointmentsInIntervalResponse")]
+ [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/DeleteAppointmentsInIntervalBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
+ void DeleteAppointmentsInInterval(bool pHasRightToSeeAllEmployeeAppointments, long pEmployeeOid, System.DateTime pIntervalEnd, System.Collections.Generic.List pSelectedEmployees, System.Collections.Generic.List pSelectedCustomers, System.Collections.Generic.List pSelectedResources, bool pEmployeesOnly, bool pCustomersOnly, bool pResourcesOnly, bool pPrivateAppointmentsOnly, bool pOnlyMyAppointments, System.Collections.Generic.Dictionary pUserRights);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetSbdConfig", ReplyAction="http://tempuri.org/IOperationsService/GetSbdConfigResponse")]
+ [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetSbdConfigBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
+ BS.Shared.DataContracts.SbdConfigDC GetSbdConfig();
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/SaveSbdConfig", ReplyAction="http://tempuri.org/IOperationsService/SaveSbdConfigResponse")]
+ [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/SaveSbdConfigBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
+ void SaveSbdConfig(BS.Shared.DataContracts.SbdConfigDC config);
+
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetSignature", ReplyAction="http://tempuri.org/IOperationsService/GetSignatureResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetSignatureBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
BS.Shared.DataContracts.SignatureDC GetSignature(long pSignatureOid);
@@ -5796,24 +5838,23 @@ namespace BeWo.ServiceProxy
"ltFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
void DeleteCertainDienstEintragOutOfTable(long dienstEintragOid);
- [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetServiceRecordsByIds", ReplyAction="http://tempuri.org/IOperationsService/GetServiceRecordsByIdsResponse")]
- [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetServiceRecordsByIdsBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
- System.Collections.Generic.List GetServiceRecordsByIds(System.Collections.Generic.List serviceRecordOids);
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/DeleteTextModules", ReplyAction="http://tempuri.org/IOperationsService/DeleteTextModulesResponse")]
+ [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/DeleteTextModulesBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
+ void DeleteTextModules(System.Collections.Generic.Dictionary pOid2Version);
- [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetUrlaubskontoByEmployee", ReplyAction="http://tempuri.org/IOperationsService/GetUrlaubskontoByEmployeeResponse")]
- [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetUrlaubskontoByEmployeeBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
- BS.Shared.DataContracts.UrlaubskontoDC GetUrlaubskontoByEmployee(long empOid, int year);
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetTextModulesByServiceCategory", ReplyAction="http://tempuri.org/IOperationsService/GetTextModulesByServiceCategoryResponse")]
+ [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetTextModulesByServiceCategoryBeWoFaultFau" +
+ "lt", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
+ System.Collections.Generic.List GetTextModulesByServiceCategory(long pServiceCategoryOid);
- [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetOwnChatSettingsUrl", ReplyAction="http://tempuri.org/IOperationsService/GetOwnChatSettingsUrlResponse")]
- [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetOwnChatSettingsUrlBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
- string GetOwnChatSettingsUrl();
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/FindServiceRecordsInSpan", ReplyAction="http://tempuri.org/IOperationsService/FindServiceRecordsInSpanResponse")]
+ [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/FindServiceRecordsInSpanBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
+ System.Collections.Generic.List FindServiceRecordsInSpan(long pCostBearer2SupportConceptOid, BS.Shared.Core.DateTimeSpan period);
- [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/HasConfirmationReceiptSignaturesByEmployeeA" +
- "ndServiceRecords", ReplyAction="http://tempuri.org/IOperationsService/HasConfirmationReceiptSignaturesByEmployeeA" +
- "ndServiceRecordsResponse")]
- [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/HasConfirmationReceiptSignaturesByEmployeeA" +
- "ndServiceRecordsBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
- bool HasConfirmationReceiptSignaturesByEmployeeAndServiceRecords(long employeeOid, System.Collections.Generic.List serviceRecordOids);
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetEmployeesServiceRecordsInSpan", ReplyAction="http://tempuri.org/IOperationsService/GetEmployeesServiceRecordsInSpanResponse")]
+ [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetEmployeesServiceRecordsInSpanBeWoFaultFa" +
+ "ult", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
+ System.Collections.Generic.List GetEmployeesServiceRecordsInSpan(long pEmployeeOid, BS.Shared.Core.DateTimeSpan limitinDateTimeSpan);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/InsertSignature", ReplyAction="http://tempuri.org/IOperationsService/InsertSignatureResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/InsertSignatureBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
@@ -6078,24 +6119,9 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/AnonymizeEmployeeBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
void AnonymizeEmployee(long pEmployeeOid);
- [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetMessageFromServerForDeletingAppointments" +
- "", ReplyAction="http://tempuri.org/IOperationsService/GetMessageFromServerForDeletingAppointments" +
- "Response")]
- [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetMessageFromServerForDeletingAppointments" +
- "BeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
- string GetMessageFromServerForDeletingAppointments(bool pHasRightToSeeAllEmployeeAppointments, long pEmployeeOid, System.DateTime pIntervalEnd, System.Collections.Generic.List pSelectedEmployees, System.Collections.Generic.List pSelectedCustomers, System.Collections.Generic.List pSelectedResources, bool pEmployeesOnly, bool pCustomersOnly, bool pResourcesOnly, bool pPrivateAppointmentsOnly, bool pOnlyMyAppointments, System.Collections.Generic.Dictionary pUserRights);
-
- [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/DeleteAppointmentsInInterval", ReplyAction="http://tempuri.org/IOperationsService/DeleteAppointmentsInIntervalResponse")]
- [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/DeleteAppointmentsInIntervalBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
- void DeleteAppointmentsInInterval(bool pHasRightToSeeAllEmployeeAppointments, long pEmployeeOid, System.DateTime pIntervalEnd, System.Collections.Generic.List pSelectedEmployees, System.Collections.Generic.List pSelectedCustomers, System.Collections.Generic.List pSelectedResources, bool pEmployeesOnly, bool pCustomersOnly, bool pResourcesOnly, bool pPrivateAppointmentsOnly, bool pOnlyMyAppointments, System.Collections.Generic.Dictionary pUserRights);
-
- [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetSbdConfig", ReplyAction="http://tempuri.org/IOperationsService/GetSbdConfigResponse")]
- [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetSbdConfigBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
- BS.Shared.DataContracts.SbdConfigDC GetSbdConfig();
-
- [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/SaveSbdConfig", ReplyAction="http://tempuri.org/IOperationsService/SaveSbdConfigResponse")]
- [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/SaveSbdConfigBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
- void SaveSbdConfig(BS.Shared.DataContracts.SbdConfigDC config);
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/PrepareSettlementReport", ReplyAction="http://tempuri.org/IOperationsService/PrepareSettlementReportResponse")]
+ [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/PrepareSettlementReportBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
+ string PrepareSettlementReport(BS.Shared.DataContracts.Settlement2DC pSettlementDC);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/UpdateAccountingTransactions", ReplyAction="http://tempuri.org/IOperationsService/UpdateAccountingTransactionsResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/UpdateAccountingTransactionsBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
@@ -6213,6 +6239,16 @@ namespace BeWo.ServiceProxy
"lt", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.Collections.Generic.List GetAllAdditionalServiceBookings(System.Nullable regionOid, System.DateTime start, System.DateTime end);
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetAdditionalServiceNoticeList", ReplyAction="http://tempuri.org/IOperationsService/GetAdditionalServiceNoticeListResponse")]
+ [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetAdditionalServiceNoticeListBeWoFaultFaul" +
+ "t", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
+ System.Collections.Generic.List GetAdditionalServiceNoticeList(System.Nullable regionOid, System.DateTime start, System.DateTime end);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/UpdateAdditionalServiceNoticeList", ReplyAction="http://tempuri.org/IOperationsService/UpdateAdditionalServiceNoticeListResponse")]
+ [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/UpdateAdditionalServiceNoticeListBeWoFaultF" +
+ "ault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
+ System.Collections.Generic.List UpdateAdditionalServiceNoticeList(System.Collections.Generic.List additionalServiceNoticeList);
+
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/InsertNewAdditionalServiceBookings", ReplyAction="http://tempuri.org/IOperationsService/InsertNewAdditionalServiceBookingsResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/InsertNewAdditionalServiceBookingsBeWoFault" +
"Fault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
@@ -6228,6 +6264,11 @@ namespace BeWo.ServiceProxy
"lt", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
void DeleteAdditionalServiceBookings(System.Collections.Generic.Dictionary pOid2Version);
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/RemoveAdditionalServiceCustomer", ReplyAction="http://tempuri.org/IOperationsService/RemoveAdditionalServiceCustomerResponse")]
+ [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/RemoveAdditionalServiceCustomerBeWoFaultFau" +
+ "lt", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
+ void RemoveAdditionalServiceCustomer(System.Collections.Generic.List customerOids, System.Nullable regionOid, System.DateTime monat);
+
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/InsertNewAdditionalServiceRegion", ReplyAction="http://tempuri.org/IOperationsService/InsertNewAdditionalServiceRegionResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/InsertNewAdditionalServiceRegionBeWoFaultFa" +
"ult", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
@@ -6382,24 +6423,6 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/UpdateTextModulesBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
void UpdateTextModules(System.Collections.Generic.List pTextbausteine);
- [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/DeleteTextModules", ReplyAction="http://tempuri.org/IOperationsService/DeleteTextModulesResponse")]
- [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/DeleteTextModulesBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
- void DeleteTextModules(System.Collections.Generic.Dictionary pOid2Version);
-
- [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetTextModulesByServiceCategory", ReplyAction="http://tempuri.org/IOperationsService/GetTextModulesByServiceCategoryResponse")]
- [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetTextModulesByServiceCategoryBeWoFaultFau" +
- "lt", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
- System.Collections.Generic.List GetTextModulesByServiceCategory(long pServiceCategoryOid);
-
- [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/FindServiceRecordsInSpan", ReplyAction="http://tempuri.org/IOperationsService/FindServiceRecordsInSpanResponse")]
- [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/FindServiceRecordsInSpanBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
- System.Collections.Generic.List FindServiceRecordsInSpan(long pCostBearer2SupportConceptOid, BS.Shared.Core.DateTimeSpan period);
-
- [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetEmployeesServiceRecordsInSpan", ReplyAction="http://tempuri.org/IOperationsService/GetEmployeesServiceRecordsInSpanResponse")]
- [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetEmployeesServiceRecordsInSpanBeWoFaultFa" +
- "ult", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
- System.Collections.Generic.List GetEmployeesServiceRecordsInSpan(long pEmployeeOid, BS.Shared.Core.DateTimeSpan limitinDateTimeSpan);
-
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/DeactivateInvoices", ReplyAction="http://tempuri.org/IOperationsService/DeactivateInvoicesResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/DeactivateInvoicesBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
void DeactivateInvoices(System.Collections.Generic.List invoices);
@@ -6471,6 +6494,11 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GenerateInitialSettlementDCBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
BS.Shared.DataContracts.Settlement2DC GenerateInitialSettlementDC(long pCostBearer2SupportConceptOid);
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GenerateDifferenzSettlementDC", ReplyAction="http://tempuri.org/IOperationsService/GenerateDifferenzSettlementDCResponse")]
+ [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GenerateDifferenzSettlementDCBeWoFaultFault" +
+ "", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
+ BS.Shared.DataContracts.Settlement2DC GenerateDifferenzSettlementDC(long pCostBearer2SupportConceptOid);
+
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GenerateInitialSettlementDCForPeriod", ReplyAction="http://tempuri.org/IOperationsService/GenerateInitialSettlementDCForPeriodRespons" +
"e")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GenerateInitialSettlementDCForPeriodBeWoFau" +
@@ -6677,10 +6705,6 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/PrepareAuslastungReport", ReplyAction="http://tempuri.org/IOperationsService/PrepareAuslastungReportResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/PrepareAuslastungReportBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
string PrepareAuslastungReport(BS.Shared.DataContracts.Reports.AuslastungAnalysisRootDC pReport, string id);
-
- [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/PrepareSettlementReport", ReplyAction="http://tempuri.org/IOperationsService/PrepareSettlementReportResponse")]
- [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/PrepareSettlementReportBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
- string PrepareSettlementReport(BS.Shared.DataContracts.Settlement2DC pSettlementDC);
}
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
@@ -6717,6 +6741,26 @@ namespace BeWo.ServiceProxy
{
}
+ public System.Collections.Generic.List GetServiceRecordsByIds(System.Collections.Generic.List serviceRecordOids)
+ {
+ return base.Channel.GetServiceRecordsByIds(serviceRecordOids);
+ }
+
+ public BS.Shared.DataContracts.UrlaubskontoDC GetUrlaubskontoByEmployee(long empOid, int year)
+ {
+ return base.Channel.GetUrlaubskontoByEmployee(empOid, year);
+ }
+
+ public string GetOwnChatSettingsUrl()
+ {
+ return base.Channel.GetOwnChatSettingsUrl();
+ }
+
+ public bool HasConfirmationReceiptSignaturesByEmployeeAndServiceRecords(long employeeOid, System.Collections.Generic.List serviceRecordOids)
+ {
+ return base.Channel.HasConfirmationReceiptSignaturesByEmployeeAndServiceRecords(employeeOid, serviceRecordOids);
+ }
+
public bool HasConfirmationReceiptSignatureByDateAndCustomer(long customerOid, BS.Shared.Core.DateTimeSpan timeSpan, BS.Shared.SignatureType signatureType)
{
return base.Channel.HasConfirmationReceiptSignatureByDateAndCustomer(customerOid, timeSpan, signatureType);
@@ -6997,6 +7041,26 @@ namespace BeWo.ServiceProxy
return base.Channel.CheckForConfirmationReceiptSignatureForServiceRecord(serviceRecordOid, signatureType);
}
+ public string GetMessageFromServerForDeletingAppointments(bool pHasRightToSeeAllEmployeeAppointments, long pEmployeeOid, System.DateTime pIntervalEnd, System.Collections.Generic.List pSelectedEmployees, System.Collections.Generic.List pSelectedCustomers, System.Collections.Generic.List pSelectedResources, bool pEmployeesOnly, bool pCustomersOnly, bool pResourcesOnly, bool pPrivateAppointmentsOnly, bool pOnlyMyAppointments, System.Collections.Generic.Dictionary pUserRights)
+ {
+ return base.Channel.GetMessageFromServerForDeletingAppointments(pHasRightToSeeAllEmployeeAppointments, pEmployeeOid, pIntervalEnd, pSelectedEmployees, pSelectedCustomers, pSelectedResources, pEmployeesOnly, pCustomersOnly, pResourcesOnly, pPrivateAppointmentsOnly, pOnlyMyAppointments, pUserRights);
+ }
+
+ public void DeleteAppointmentsInInterval(bool pHasRightToSeeAllEmployeeAppointments, long pEmployeeOid, System.DateTime pIntervalEnd, System.Collections.Generic.List pSelectedEmployees, System.Collections.Generic.List pSelectedCustomers, System.Collections.Generic.List pSelectedResources, bool pEmployeesOnly, bool pCustomersOnly, bool pResourcesOnly, bool pPrivateAppointmentsOnly, bool pOnlyMyAppointments, System.Collections.Generic.Dictionary pUserRights)
+ {
+ base.Channel.DeleteAppointmentsInInterval(pHasRightToSeeAllEmployeeAppointments, pEmployeeOid, pIntervalEnd, pSelectedEmployees, pSelectedCustomers, pSelectedResources, pEmployeesOnly, pCustomersOnly, pResourcesOnly, pPrivateAppointmentsOnly, pOnlyMyAppointments, pUserRights);
+ }
+
+ public BS.Shared.DataContracts.SbdConfigDC GetSbdConfig()
+ {
+ return base.Channel.GetSbdConfig();
+ }
+
+ public void SaveSbdConfig(BS.Shared.DataContracts.SbdConfigDC config)
+ {
+ base.Channel.SaveSbdConfig(config);
+ }
+
public BS.Shared.DataContracts.SignatureDC GetSignature(long pSignatureOid)
{
return base.Channel.GetSignature(pSignatureOid);
@@ -7297,24 +7361,24 @@ namespace BeWo.ServiceProxy
base.Channel.DeleteCertainDienstEintragOutOfTable(dienstEintragOid);
}
- public System.Collections.Generic.List GetServiceRecordsByIds(System.Collections.Generic.List serviceRecordOids)
+ public void DeleteTextModules(System.Collections.Generic.Dictionary pOid2Version)
{
- return base.Channel.GetServiceRecordsByIds(serviceRecordOids);
+ base.Channel.DeleteTextModules(pOid2Version);
}
- public BS.Shared.DataContracts.UrlaubskontoDC GetUrlaubskontoByEmployee(long empOid, int year)
+ public System.Collections.Generic.List GetTextModulesByServiceCategory(long pServiceCategoryOid)
{
- return base.Channel.GetUrlaubskontoByEmployee(empOid, year);
+ return base.Channel.GetTextModulesByServiceCategory(pServiceCategoryOid);
}
- public string GetOwnChatSettingsUrl()
+ public System.Collections.Generic.List FindServiceRecordsInSpan(long pCostBearer2SupportConceptOid, BS.Shared.Core.DateTimeSpan period)
{
- return base.Channel.GetOwnChatSettingsUrl();
+ return base.Channel.FindServiceRecordsInSpan(pCostBearer2SupportConceptOid, period);
}
- public bool HasConfirmationReceiptSignaturesByEmployeeAndServiceRecords(long employeeOid, System.Collections.Generic.List serviceRecordOids)
+ public System.Collections.Generic.List GetEmployeesServiceRecordsInSpan(long pEmployeeOid, BS.Shared.Core.DateTimeSpan limitinDateTimeSpan)
{
- return base.Channel.HasConfirmationReceiptSignaturesByEmployeeAndServiceRecords(employeeOid, serviceRecordOids);
+ return base.Channel.GetEmployeesServiceRecordsInSpan(pEmployeeOid, limitinDateTimeSpan);
}
public BS.Shared.DataContracts.SignatureDC InsertSignature(BS.Shared.DataContracts.SignatureDC sig)
@@ -7617,24 +7681,9 @@ namespace BeWo.ServiceProxy
base.Channel.AnonymizeEmployee(pEmployeeOid);
}
- public string GetMessageFromServerForDeletingAppointments(bool pHasRightToSeeAllEmployeeAppointments, long pEmployeeOid, System.DateTime pIntervalEnd, System.Collections.Generic.List pSelectedEmployees, System.Collections.Generic.List pSelectedCustomers, System.Collections.Generic.List pSelectedResources, bool pEmployeesOnly, bool pCustomersOnly, bool pResourcesOnly, bool pPrivateAppointmentsOnly, bool pOnlyMyAppointments, System.Collections.Generic.Dictionary pUserRights)
+ public string PrepareSettlementReport(BS.Shared.DataContracts.Settlement2DC pSettlementDC)
{
- return base.Channel.GetMessageFromServerForDeletingAppointments(pHasRightToSeeAllEmployeeAppointments, pEmployeeOid, pIntervalEnd, pSelectedEmployees, pSelectedCustomers, pSelectedResources, pEmployeesOnly, pCustomersOnly, pResourcesOnly, pPrivateAppointmentsOnly, pOnlyMyAppointments, pUserRights);
- }
-
- public void DeleteAppointmentsInInterval(bool pHasRightToSeeAllEmployeeAppointments, long pEmployeeOid, System.DateTime pIntervalEnd, System.Collections.Generic.List pSelectedEmployees, System.Collections.Generic.List pSelectedCustomers, System.Collections.Generic.List pSelectedResources, bool pEmployeesOnly, bool pCustomersOnly, bool pResourcesOnly, bool pPrivateAppointmentsOnly, bool pOnlyMyAppointments, System.Collections.Generic.Dictionary pUserRights)
- {
- base.Channel.DeleteAppointmentsInInterval(pHasRightToSeeAllEmployeeAppointments, pEmployeeOid, pIntervalEnd, pSelectedEmployees, pSelectedCustomers, pSelectedResources, pEmployeesOnly, pCustomersOnly, pResourcesOnly, pPrivateAppointmentsOnly, pOnlyMyAppointments, pUserRights);
- }
-
- public BS.Shared.DataContracts.SbdConfigDC GetSbdConfig()
- {
- return base.Channel.GetSbdConfig();
- }
-
- public void SaveSbdConfig(BS.Shared.DataContracts.SbdConfigDC config)
- {
- base.Channel.SaveSbdConfig(config);
+ return base.Channel.PrepareSettlementReport(pSettlementDC);
}
public void UpdateAccountingTransactions(System.Collections.Generic.List pAccountingTransactions)
@@ -7752,6 +7801,16 @@ namespace BeWo.ServiceProxy
return base.Channel.GetAllAdditionalServiceBookings(regionOid, start, end);
}
+ public System.Collections.Generic.List GetAdditionalServiceNoticeList(System.Nullable regionOid, System.DateTime start, System.DateTime end)
+ {
+ return base.Channel.GetAdditionalServiceNoticeList(regionOid, start, end);
+ }
+
+ public System.Collections.Generic.List UpdateAdditionalServiceNoticeList(System.Collections.Generic.List additionalServiceNoticeList)
+ {
+ return base.Channel.UpdateAdditionalServiceNoticeList(additionalServiceNoticeList);
+ }
+
public System.Collections.Generic.List InsertNewAdditionalServiceBookings(System.Collections.Generic.List pAdditionalServiceBookings)
{
return base.Channel.InsertNewAdditionalServiceBookings(pAdditionalServiceBookings);
@@ -7767,6 +7826,11 @@ namespace BeWo.ServiceProxy
base.Channel.DeleteAdditionalServiceBookings(pOid2Version);
}
+ public void RemoveAdditionalServiceCustomer(System.Collections.Generic.List customerOids, System.Nullable regionOid, System.DateTime monat)
+ {
+ base.Channel.RemoveAdditionalServiceCustomer(customerOids, regionOid, monat);
+ }
+
public long InsertNewAdditionalServiceRegion(BS.Shared.DataContracts.AdditionalServiceRegionDC pAdditionalServiceRegionDC)
{
return base.Channel.InsertNewAdditionalServiceRegion(pAdditionalServiceRegionDC);
@@ -7937,26 +8001,6 @@ namespace BeWo.ServiceProxy
base.Channel.UpdateTextModules(pTextbausteine);
}
- public void DeleteTextModules(System.Collections.Generic.Dictionary pOid2Version)
- {
- base.Channel.DeleteTextModules(pOid2Version);
- }
-
- public System.Collections.Generic.List GetTextModulesByServiceCategory(long pServiceCategoryOid)
- {
- return base.Channel.GetTextModulesByServiceCategory(pServiceCategoryOid);
- }
-
- public System.Collections.Generic.List FindServiceRecordsInSpan(long pCostBearer2SupportConceptOid, BS.Shared.Core.DateTimeSpan period)
- {
- return base.Channel.FindServiceRecordsInSpan(pCostBearer2SupportConceptOid, period);
- }
-
- public System.Collections.Generic.List GetEmployeesServiceRecordsInSpan(long pEmployeeOid, BS.Shared.Core.DateTimeSpan limitinDateTimeSpan)
- {
- return base.Channel.GetEmployeesServiceRecordsInSpan(pEmployeeOid, limitinDateTimeSpan);
- }
-
public void DeactivateInvoices(System.Collections.Generic.List invoices)
{
base.Channel.DeactivateInvoices(invoices);
@@ -8042,6 +8086,11 @@ namespace BeWo.ServiceProxy
return base.Channel.GenerateInitialSettlementDC(pCostBearer2SupportConceptOid);
}
+ public BS.Shared.DataContracts.Settlement2DC GenerateDifferenzSettlementDC(long pCostBearer2SupportConceptOid)
+ {
+ return base.Channel.GenerateDifferenzSettlementDC(pCostBearer2SupportConceptOid);
+ }
+
public BS.Shared.DataContracts.Settlement2DC GenerateInitialSettlementDCForPeriod(long pCostBearer2SupportConceptOid, System.Nullable periodStart, System.Nullable periodEnd)
{
return base.Channel.GenerateInitialSettlementDCForPeriod(pCostBearer2SupportConceptOid, periodStart, periodEnd);
@@ -8271,11 +8320,6 @@ namespace BeWo.ServiceProxy
{
return base.Channel.PrepareAuslastungReport(pReport, id);
}
-
- public string PrepareSettlementReport(BS.Shared.DataContracts.Settlement2DC pSettlementDC)
- {
- return base.Channel.PrepareSettlementReport(pSettlementDC);
- }
}
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
diff --git a/BeWo/View/Detail/Accounting/SettlementInvoiceView.xaml.cs b/BeWo/View/Detail/Accounting/SettlementInvoiceView.xaml.cs
index 0ff7cd364..7e075d35f 100644
--- a/BeWo/View/Detail/Accounting/SettlementInvoiceView.xaml.cs
+++ b/BeWo/View/Detail/Accounting/SettlementInvoiceView.xaml.cs
@@ -1,5 +1,6 @@
using System.Linq;
using System.Windows;
+using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Navigation;
using BS.Shared;
@@ -13,6 +14,9 @@ using BeWo.ViewModel.ListViewModel;
using BS.Shared.Core;
using BS.Shared.DataContracts.Compact;
using BS.Shared.Extensions;
+using BS.Shared.Translation;
+using System.Windows.Media;
+using System;
namespace BeWo.View.Detail.Accounting
{
@@ -128,28 +132,126 @@ namespace BeWo.View.Detail.Accounting
}
private void button_addCostBearer_Click(object sender, RoutedEventArgs e)
+ {
+ if (ViewModel.VMList.Count > 0)
+ {
+ FrageNachRechnungsart();
+ }
+ else
+ {
+ ErstelleNeueSpitzabrechnung();
+ }
+
+ }
+
+ private void ErstelleNeueSpitzabrechnung()
{
ServiceFacade.DoOperationsServiceAsync(
- s => s.GenerateInitialSettlementDC(this._SelectedSupportConcept.CostBearerRelOids[0]),
+ s => s.GenerateInitialSettlementDC(this._SelectedSupportConcept.CostBearerRelOids[0]),
dc =>
- {
- dc.SupportConceptOid = this._SelectedSupportConcept.SupportConceptOid;
- this.Dispatch(
- delegate
- {
- var vm = new SettlementVM(dc);
- if (ShowOldEditView(vm))
- {
- this._EditView.ViewModel = new SettlementVM(dc);
- this.MainControl.ShowControlAsModalPopup(this._EditView);
- }
- else
- {
- this._EditView2.ViewModel = new SettlementVM(dc);
- this.MainControl.ShowControlAsModalPopup(this._EditView2);
- }
- });
- });
+ {
+ dc.SupportConceptOid = this._SelectedSupportConcept.SupportConceptOid;
+ this.Dispatch(
+ delegate
+ {
+ var vm = new SettlementVM(dc);
+ if (ShowOldEditView(vm))
+ {
+ this._EditView.ViewModel = new SettlementVM(dc);
+ this.MainControl.ShowControlAsModalPopup(this._EditView);
+ }
+ else
+ {
+ this._EditView2.ViewModel = new SettlementVM(dc);
+ this.MainControl.ShowControlAsModalPopup(this._EditView2);
+ }
+ });
+ });
+ }
+
+ private void ErstelleDifferenzrechnung()
+ {
+ ServiceFacade.DoOperationsServiceAsync(
+ s => s.GenerateDifferenzSettlementDC(this._SelectedSupportConcept.CostBearerRelOids[0]),
+ dc =>
+ {
+ dc.SupportConceptOid = this._SelectedSupportConcept.SupportConceptOid;
+ this.Dispatch(
+ delegate
+ {
+ var vm = new SettlementVM(dc);
+ this._EditView2.ViewModel = new SettlementVM(dc);
+ this.MainControl.ShowControlAsModalPopup(this._EditView2);
+ });
+ });
+ }
+
+ private void FrageNachRechnungsart()
+ {
+ //return 0 = Cancel, 1 = Neue Rechnung, 2 = DiffRechnung
+
+ var cancelButton = new Button { Content = " Abbrechen " };
+ cancelButton.Margin = new Thickness(5);
+
+
+ var btnNeueRechnung = new Button { Content = Translator.Translate(" Neue Rechnung erstellen ") };
+ btnNeueRechnung.Margin = new Thickness(5);
+
+ var btnDiffRechnung = new Button { Content = Translator.Translate(" Differenzrechnung erstellen ") };
+ btnDiffRechnung.Margin = new Thickness(5);
+
+ var textBlock = new TextBlock
+ {
+ Foreground = Brushes.Black,
+ Margin = new Thickness(10, 20, 10, 20),
+ Text = Translator.Translate("Es wurde bereits eine Spitzabrechnung für den ausgewählten Hilfeplan erstellt.\n" +
+ "Möchten Sie eine neue Rechnung oder eine Differenzrechnung zur letzten\nSpitzabrechnung erstellen?")
+ };
+ textBlock.FontSize = 12;
+
+ BeWoWindow bewoWindow = BeWoWpfUtils.CreateBeWoPopupWindow(100, 800, true);
+
+ cancelButton.Click += delegate { bewoWindow.Close(); };
+
+
+ btnNeueRechnung.Click += delegate
+ {
+ bewoWindow.Close();
+ ErstelleNeueSpitzabrechnung();
+ };
+
+ btnDiffRechnung.Click += delegate
+ {
+ bewoWindow.Close();
+ ErstelleDifferenzrechnung();
+ };
+
+ var centeredStackPanel = new StackPanel { Orientation = Orientation.Vertical, VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Center };
+ var buttonStackPanel = new StackPanel { Orientation = Orientation.Horizontal };
+ buttonStackPanel.HorizontalAlignment = HorizontalAlignment.Right;
+
+ buttonStackPanel.Children.Add(btnNeueRechnung);
+ buttonStackPanel.Children.Add(btnDiffRechnung);
+ buttonStackPanel.Children.Add(cancelButton);
+
+
+ centeredStackPanel.Children.Add(textBlock);
+ centeredStackPanel.Children.Add(buttonStackPanel);
+
+
+
+
+ var grid = new Grid
+ {
+ Background = (LinearGradientBrush)FindResource("ObjectEditBackgroundBrush")
+ };
+
+ grid.Children.Add(centeredStackPanel);
+
+ bewoWindow.GroupBoxContent = grid;
+ bewoWindow.rootGroupBox.Header = "Spitzabrechnung erstellen";
+ bewoWindow.Owner = BeWoApp.CurrentBeWo.MainWindow;
+ bewoWindow.Show();
}
private bool ShowOldEditView(SettlementVM vm)
diff --git a/BeWo/View/Detail/AdditionalServiceView.xaml b/BeWo/View/Detail/AdditionalServiceView.xaml
index b3ae2649e..632a4edf7 100644
--- a/BeWo/View/Detail/AdditionalServiceView.xaml
+++ b/BeWo/View/Detail/AdditionalServiceView.xaml
@@ -672,7 +672,7 @@
-
+
@@ -703,10 +703,17 @@
+
+
+
+
+
+
+
-
+
diff --git a/BeWo/View/Detail/AdditionalServiceView.xaml.cs b/BeWo/View/Detail/AdditionalServiceView.xaml.cs
index 9741fecb4..0736b37c4 100644
--- a/BeWo/View/Detail/AdditionalServiceView.xaml.cs
+++ b/BeWo/View/Detail/AdditionalServiceView.xaml.cs
@@ -29,6 +29,7 @@ using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using BS.Shared.Extensions;
using BS.Shared.Translation;
+using DevExpress.Xpf.Bars;
using DevExpress.Xpf.Docking;
using DevExpress.Xpf.Editors;
using DevExpress.Xpf.Grid;
@@ -161,6 +162,9 @@ namespace BeWo.View.Detail
public List AdditionalServiceRegions { get; set; }
public AdditionalServiceBookingListVM AdditionalServiceBookings { get; set; }
+
+ public List AdditionalServiceNoticeList { get; set; }
+
public int GridColumnCount { get; set; }
public int[] Years { get; set; }
@@ -291,8 +295,25 @@ namespace BeWo.View.Detail
//{
// int test = 0;
//}
+
+ //Notice raussuchen
+ var region = Angebotscombobox.SelectedItem as AdditionalServiceRegionDC;
+
+ AdditionalServiceNoticeDC notice = null;
+ if (region != null && customer != null)
+ {
+ notice = AdditionalServiceNoticeList.Where(n => n.RegionOid == region.AdditionalServiceRegionOid && n.CustomerOid == customer.CustomerOid).FirstOrDefault();
+ }
+ if (notice == null)
+ {
+ notice = new AdditionalServiceNoticeDC();
+ notice.Monat = new DateTime(booking.StartDate.Value.Year, booking.StartDate.Value.Month, 1);
+ notice.RegionOid = region?.AdditionalServiceRegionOid;
+ notice.CustomerOid = customer?.Oid;
+ }
- TeilnehmerListe.Add(new Teilnehmer(customer, anwesenheiten, bookingRel));
+
+ TeilnehmerListe.Add(new Teilnehmer(customer, anwesenheiten, bookingRel, notice));
var klienten = new Dictionary();
foreach (var test2 in TeilnehmerListe)
@@ -348,6 +369,12 @@ namespace BeWo.View.Detail
private void pg_ShownEditor(object sender, EditorEventArgs e)
{
+ //if (!CheckEditRight())
+ //{
+ // e.Handled = true;
+ // return;
+ //}
+
if (!(e.Editor is CheckEdit))
return;
@@ -358,7 +385,20 @@ namespace BeWo.View.Detail
(e.Editor as CheckEdit).Checked += checked_changed;
}
- private void GridViewBase_OnHiddenEditor(object sender, EditorEventArgs e)
+ private bool CheckEditRight(bool showMessage)
+ {
+ if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.AdditionalService_Edit))
+ {
+ if (showMessage)
+ {
+ MessageBox.Show("Sie besitzen leider nicht das benötigte Recht \"Ergänzenden Dienste bearbeiten\".", "Speichern", MessageBoxButton.OK, MessageBoxImage.Exclamation);
+ }
+ return false;
+ }
+ return true;
+ }
+
+ private void GridViewBase_OnHiddenEditor(object sender, EditorEventArgs e)
{
if (!(e.Editor is CheckEdit))
return;
@@ -368,6 +408,9 @@ namespace BeWo.View.Detail
}
private readonly List _BookingsToUpdate = new List();
+ private readonly List _NoticesToUpdate = new List();
+ private readonly List _Customer2Delete = new List();
+
private void checked_changed(object sender, RoutedEventArgs e)
{
var s = sender as CheckEdit;
@@ -433,7 +476,18 @@ namespace BeWo.View.Detail
ServiceFacade.DoOperationsServiceSync(
o => o.InsertNewAdditionalServiceBookings(new List(newShortAddAD)));
}
- if (updateGrid)
+ if (_NoticesToUpdate.Count > 0)
+ {
+ ServiceFacade.DoOperationsServiceSync(o => o.UpdateAdditionalServiceNoticeList(_NoticesToUpdate));
+ }
+ if (_Customer2Delete.Count > 0)
+ {
+ var start = new DateTime(SelectedYear, (int)SelectedMonth, 1);
+ var bereich = Angebotscombobox.SelectedItem as AdditionalServiceRegionDC;
+
+ ServiceFacade.DoOperationsServiceSync(o => o.RemoveAdditionalServiceCustomer(_Customer2Delete.Select(c => c.CustomerOid).ToList(), bereich?.AdditionalServiceRegionOid, start));
+ }
+ if (updateGrid)
UpdateTeilnahmeGrid();
SaveBtn.IsEnabled = false;
}
@@ -447,7 +501,7 @@ namespace BeWo.View.Detail
public override bool IsDirty
{
- get { return ViewModel != null && ViewModel.AddedCount != 0; }
+ get { return (ViewModel != null && ViewModel.AddedCount != 0) || IsGridDirty(); }
}
public override string Title
@@ -543,8 +597,28 @@ namespace BeWo.View.Detail
SrListBox.SelectedItem = vm;
}
- //SRV2
- protected override void Save()
+ internal override bool DoSaveCheck()
+ {
+ if (this.IsDirty)
+ {
+ MessageBoxResult lResult = this.ShowSaveQuestion();
+ if (lResult == MessageBoxResult.Cancel)
+ {
+ this.Focus();
+ return false;
+ }
+
+ if (lResult == MessageBoxResult.Yes)
+ {
+ this.SaveData();
+ SaveGridChanges(false);
+ }
+ }
+
+ return true;
+ }
+ //SRV2
+ protected override void Save()
{
var lToDos = new List>();
@@ -601,8 +675,11 @@ namespace BeWo.View.Detail
newShortAddAD.Clear();
if (_BookingsToUpdate != null)
_BookingsToUpdate.Clear();
-
- var start = new DateTime(SelectedYear, (int)SelectedMonth, 1);
+ if (_NoticesToUpdate != null)
+ _NoticesToUpdate.Clear();
+ if (_Customer2Delete != null)
+ _Customer2Delete.Clear();
+ var start = new DateTime(SelectedYear, (int)SelectedMonth, 1);
var end = start.AddMonths(1);
AdditionalServiceBookings.VMList.Clear();
@@ -620,7 +697,11 @@ namespace BeWo.View.Detail
}
AdditionalServiceBookings.NewVM.AdditionalServiceRegion = (AdditionalServiceRegionDC)Angebotscombobox.SelectedItem;
- }
+
+
+ AdditionalServiceNoticeList = ServiceFacade.DoOperationsServiceSync(t => t.GetAdditionalServiceNoticeList(regionOid, start, end));
+
+ }
private void ClosePopupView()
{
@@ -786,92 +867,104 @@ namespace BeWo.View.Detail
private void GridViewBase_OnCellValueChanging(object sender, CellValueChangedEventArgs e)
{
- //if (BeWoApp.LoggedOnUser.HasRight(UserRightType.AssessmentSheet_Edit))
- //{
- // MessageBox.Show("Sie besitzen leider nicht das benötigte Recht \"Ergänzenden Dienste bearbeiten\".", "Speichern", MessageBoxButton.OK, MessageBoxImage.Exclamation);
- // e.Value = e.OldValue;
- // e.Handled = true;
- // return;
- //}
// Das Datum ist der eindeutige Identifikator
- var tableView = (TableView)sender;
- var spalten = (List) tableView.Grid.ItemsSource;
- var alleTeilnehmer = spalten.Select(s => s.Customer);
+ var ausgewaehlterTeilnehmer = (Teilnehmer)e.Row;
- var ausgewaehlterTeilnehmer = (Teilnehmer) e.Row;
- var ausgewaehlterTag = Convert.ToInt32(e.Column.Header.ToString().Split('.')[0]);
- var ausgewaehltesDatum = new DateTime(SelectedYear, (int)_SelectedMonth, ausgewaehlterTag);
-
- var existiert = ausgewaehlterTeilnehmer.BookingRelation.Any(br => br.Value.Datum.Equals(ausgewaehltesDatum));
- if (existiert) return;
-
- if (_SelectedBookings.Any(vm => vm.Date.Equals(ausgewaehltesDatum)))
- {
- var btu = _SelectedBookings.First(vm => vm.Date.Equals(ausgewaehltesDatum));
- if (btu.CustomerOidDict.ContainsKey(ausgewaehlterTeilnehmer.Customer.CustomerOid))
- btu.CustomerOidDict.Remove(ausgewaehlterTeilnehmer.Customer.CustomerOid);
- btu.CustomerOidDict.Add(ausgewaehlterTeilnehmer.Customer.CustomerOid, Convert.ToBoolean(e.Value));
- _BookingsToUpdate.Add(btu.CommitToDataContract());
- SaveBtn.IsEnabled = true;
- return;
- }
-
- if (newShortAddAD.Any(ad => ad.Date.Equals(ausgewaehltesDatum)))
- {
- newShortAddAD.First(ad => ad.Date.Equals(ausgewaehltesDatum)).CustomerOidDict[ausgewaehlterTeilnehmer.Customer.CustomerOid] = Convert.ToBoolean(e.Value);
- return;
- }
-
- var mitarbeiter = MultiEmployeeControlAddServ.SelectedEmployees.Select(emp => emp.EmployeeOid).ToList();
- var temp = alleTeilnehmer.ToList();
-
-
- //Dictionary klienten = new Dictionary();
- //foreach (var customer in alleTeilnehmer)
- //{
- // if (!klienten.ContainsKey(customer.CustomerOid))
- // {
- // klienten.Add(customer.CustomerOid, customer.Equals(ausgewaehlterTeilnehmer.Customer) && Convert.ToBoolean(e.Value));
- // }
- // else
- // {
- // //Fehler
- // //int test = 0;
- // }
- //}
- var klienten = new Dictionary();
- foreach (var teilnehmer in alleTeilnehmer)
+ if (e.Column.FieldName.Contains("Notice"))
{
- if (teilnehmer.CustomerOid == 0)
+ if (e.Value == null)
{
- int test = 0;
+ ausgewaehlterTeilnehmer.Notice.Notice = "";
}
- if (!klienten.ContainsKey(teilnehmer.CustomerOid))
+ else
{
- klienten.Add(teilnehmer.CustomerOid, teilnehmer.Equals(ausgewaehlterTeilnehmer.Customer) && Convert.ToBoolean(e.Value));
+ ausgewaehlterTeilnehmer.Notice.Notice = e.Value.ToString();
}
+
+ _NoticesToUpdate.Add(ausgewaehlterTeilnehmer.Notice);
}
- //var klienten = alleTeilnehmer.ToDictionary(teilnehmer => teilnehmer.CustomerOid, teilnehmer => (teilnehmer.Equals(ausgewaehlterTeilnehmer.Customer) && Convert.ToBoolean(e.Value)));
- var bereich = (AdditionalServiceRegionDC) Angebotscombobox.SelectedItem;
- var neueBuchung = new AdditionalServiceBookingDC
- {
- AdditionalServiceRegion = bereich,
- CustomerOidDict = klienten,
- EmployeeOidList = mitarbeiter,
- Date = ausgewaehltesDatum,
- StartDate = ausgewaehltesDatum,
- EndDate = ausgewaehltesDatum.AddHours(23).AddMinutes(59).AddSeconds(59)
- };
+ else
+ {
- if(neueBuchung.EndDate.HasValue && neueBuchung.StartDate.HasValue)
- {
- var roundedDuration = Convert.ToDecimal((neueBuchung.EndDate.Value - neueBuchung.StartDate.Value).GetTotalMinutes());
- neueBuchung.RoundedDuration = roundedDuration;
- }
+ var tableView = (TableView)sender;
+ var spalten = (List)tableView.Grid.ItemsSource;
+ var alleTeilnehmer = spalten.Select(s => s.Customer);
- newShortAddAD.Add(neueBuchung);
+ var ausgewaehlterTag = Convert.ToInt32(e.Column.Header.ToString().Split('.')[0]);
+ var ausgewaehltesDatum = new DateTime(SelectedYear, (int)_SelectedMonth, ausgewaehlterTag);
+
+ var existiert = ausgewaehlterTeilnehmer.BookingRelation.Any(br => br.Value.Datum.Equals(ausgewaehltesDatum));
+ if (existiert) return;
+
+ if (_SelectedBookings.Any(vm => vm.Date.Equals(ausgewaehltesDatum)))
+ {
+ var btu = _SelectedBookings.First(vm => vm.Date.Equals(ausgewaehltesDatum));
+ if (btu.CustomerOidDict.ContainsKey(ausgewaehlterTeilnehmer.Customer.CustomerOid))
+ btu.CustomerOidDict.Remove(ausgewaehlterTeilnehmer.Customer.CustomerOid);
+ btu.CustomerOidDict.Add(ausgewaehlterTeilnehmer.Customer.CustomerOid, Convert.ToBoolean(e.Value));
+ _BookingsToUpdate.Add(btu.CommitToDataContract());
+ SaveBtn.IsEnabled = true;
+ return;
+ }
+
+ if (newShortAddAD.Any(ad => ad.Date.Equals(ausgewaehltesDatum)))
+ {
+ newShortAddAD.First(ad => ad.Date.Equals(ausgewaehltesDatum)).CustomerOidDict[ausgewaehlterTeilnehmer.Customer.CustomerOid] = Convert.ToBoolean(e.Value);
+ return;
+ }
+
+ var mitarbeiter = MultiEmployeeControlAddServ.SelectedEmployees.Select(emp => emp.EmployeeOid).ToList();
+ var temp = alleTeilnehmer.ToList();
+
+
+ //Dictionary klienten = new Dictionary();
+ //foreach (var customer in alleTeilnehmer)
+ //{
+ // if (!klienten.ContainsKey(customer.CustomerOid))
+ // {
+ // klienten.Add(customer.CustomerOid, customer.Equals(ausgewaehlterTeilnehmer.Customer) && Convert.ToBoolean(e.Value));
+ // }
+ // else
+ // {
+ // //Fehler
+ // //int test = 0;
+ // }
+ //}
+ var klienten = new Dictionary();
+ foreach (var teilnehmer in alleTeilnehmer)
+ {
+ if (teilnehmer.CustomerOid == 0)
+ {
+ int test = 0;
+ }
+ if (!klienten.ContainsKey(teilnehmer.CustomerOid))
+ {
+ klienten.Add(teilnehmer.CustomerOid, teilnehmer.Equals(ausgewaehlterTeilnehmer.Customer) && Convert.ToBoolean(e.Value));
+ }
+
+ }
+ //var klienten = alleTeilnehmer.ToDictionary(teilnehmer => teilnehmer.CustomerOid, teilnehmer => (teilnehmer.Equals(ausgewaehlterTeilnehmer.Customer) && Convert.ToBoolean(e.Value)));
+ var bereich = (AdditionalServiceRegionDC)Angebotscombobox.SelectedItem;
+ var neueBuchung = new AdditionalServiceBookingDC
+ {
+ AdditionalServiceRegion = bereich,
+ CustomerOidDict = klienten,
+ EmployeeOidList = mitarbeiter,
+ Date = ausgewaehltesDatum,
+ StartDate = ausgewaehltesDatum,
+ EndDate = ausgewaehltesDatum.AddHours(23).AddMinutes(59).AddSeconds(59)
+ };
+
+ if (neueBuchung.EndDate.HasValue && neueBuchung.StartDate.HasValue)
+ {
+ var roundedDuration = Convert.ToDecimal((neueBuchung.EndDate.Value - neueBuchung.StartDate.Value).GetTotalMinutes());
+ neueBuchung.RoundedDuration = roundedDuration;
+ }
+
+ newShortAddAD.Add(neueBuchung);
+ }
SaveBtn.IsEnabled = true;
}
@@ -1051,12 +1144,11 @@ namespace BeWo.View.Detail
private void button_ADadd_Click(object sender, RoutedEventArgs e)
{
- if (BeWoApp.LoggedOnUser.HasRight(UserRightType.AssessmentSheet_Edit))
+ if (!CheckEditRight(true))
{
- MessageBox.Show("Sie besitzen leider nicht das benötigte Recht \"Ergänzenden Dienste bearbeiten\".", "Speichern", MessageBoxButton.OK, MessageBoxImage.Exclamation);
return;
}
-
+
if (AdditionalServiceBookings.NewVM == null ||
AdditionalServiceBookings.NewVM.CustomerOidDict == null)
return;
@@ -1188,7 +1280,7 @@ namespace BeWo.View.Detail
private bool IsGridDirty()
{
- return _BookingsToUpdate.Count > 0 || newShortAddAD.Any();
+ return _BookingsToUpdate.Count > 0 || newShortAddAD.Any() || _NoticesToUpdate.Count > 0 || _Customer2Delete.Count > 0;
}
private void button_add_Click(object sender, RoutedEventArgs e)
@@ -1461,6 +1553,63 @@ namespace BeWo.View.Detail
{
BeWoUtils.NavigateToReportUri(((Hyperlink)sender).NavigateUri.ToString(), "Druckvorschau");
}
+
+ private void TableView_ShowingEditor(object sender, ShowingEditorEventArgs e)
+ {
+ if (!CheckEditRight(true))
+ {
+ e.Cancel = true;
+ e.Handled = true;
+ }
+ }
+
+ private void TableView_ShowGridMenu(object sender, GridMenuEventArgs e)
+ {
+ AddContextMenu(e);
+ }
+
+ private void AddContextMenu(GridMenuEventArgs e)
+ {
+ var item = e.Source.DataControl.SelectedItem as Teilnehmer;
+
+ if (item != null)
+ {
+ e.Customizations.Add(new DevExpress.Xpf.Bars.BarItemSeparator());
+
+ var btn = new BarButtonItem { Content = "Zeile löschen", Tag = item };
+ btn.ItemClick += DeleteRow_OnClick;
+ e.Customizations.Add(btn);
+ }
+
+ //if (tvm != null)
+ //{
+
+ // if (tvm.Absencetime != null)
+ // {
+ // e.Customizations.Add(new DevExpress.Xpf.Bars.BarItemSeparator());
+
+ // var btn = new BarButtonItem { Content = "Abwesenheit löschen", Tag = tvm };
+ // btn.ItemClick += DeleteRow_OnClick;
+ // e.Customizations.Add(btn);
+ // }
+ //}
+ }
+
+ private void DeleteRow_OnClick(object sender, RoutedEventArgs e)
+ {
+ var barButtonItem = (BarButtonItem)sender;
+ var item = barButtonItem.Tag as Teilnehmer;
+
+ if (item != null && MessageBox.Show(String.Format("Möchten Sie '{0}' wirklich aus der Liste entfernen?", item.Customer), "Löschen", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
+ {
+ _Customer2Delete.Add(item.Customer);
+ var teilnehmer = (List)TeilnahmeGrid.ItemsSource;
+ teilnehmer.Remove(item);
+ TeilnahmeGrid.RefreshData();
+ SaveBtn.IsEnabled = true;
+ }
+
+ }
}
public class Teilnehmer
@@ -1509,9 +1658,12 @@ namespace BeWo.View.Detail
public bool ContainsOneRelationOnly { get; set; }
- public Teilnehmer(CompactCustomerDC customer, IList teilnahmen, Dictionary bookingRelation, bool containsOneRelationOnly = false)
+ public AdditionalServiceNoticeDC Notice { get; set; }
+
+ public Teilnehmer(CompactCustomerDC customer, IList teilnahmen, Dictionary bookingRelation, AdditionalServiceNoticeDC notice, bool containsOneRelationOnly = false)
{
Customer = customer;
+ Notice = notice;
ContainsOneRelationOnly = containsOneRelationOnly;
diff --git a/BeWo/View/Detail/EmployeeView.xaml b/BeWo/View/Detail/EmployeeView.xaml
index 3de47d2c8..6450e1c0d 100644
--- a/BeWo/View/Detail/EmployeeView.xaml
+++ b/BeWo/View/Detail/EmployeeView.xaml
@@ -72,6 +72,7 @@
+
diff --git a/BeWo/View/MessageDialog.xaml b/BeWo/View/MessageDialog.xaml
index e7a5c8c6e..d1401a74c 100644
--- a/BeWo/View/MessageDialog.xaml
+++ b/BeWo/View/MessageDialog.xaml
@@ -20,7 +20,7 @@
-
+
diff --git a/BeWo/View/TwoFactorAuthMessageDialog.xaml b/BeWo/View/TwoFactorAuthMessageDialog.xaml
index 1c738ca78..c3573ec93 100644
--- a/BeWo/View/TwoFactorAuthMessageDialog.xaml
+++ b/BeWo/View/TwoFactorAuthMessageDialog.xaml
@@ -20,7 +20,7 @@
-
+
diff --git a/BeWo/ViewModel/ListViewModel/ServiceRecordListVM.cs b/BeWo/ViewModel/ListViewModel/ServiceRecordListVM.cs
index dacdf6314..3727b8080 100644
--- a/BeWo/ViewModel/ListViewModel/ServiceRecordListVM.cs
+++ b/BeWo/ViewModel/ListViewModel/ServiceRecordListVM.cs
@@ -684,7 +684,7 @@ namespace BeWo.ViewModel.ListViewModel
foreach (ServiceRecordVM vm in VMList)
{
- if (vm.GroupOid != null)
+ if (vm.GroupOid != null && vm.Customer != null)
{
string key = String.Format("{0}_{1}", vm.GroupOid.Value, vm.Customer.Oid.Value);
if (!groupVMs.ContainsKey(key))
@@ -701,7 +701,7 @@ namespace BeWo.ViewModel.ListViewModel
contained = true;
break;
}
- if (dc.GroupOid != null)
+ if (dc.GroupOid != null && dc.Customer != null)
{
contained = true;
diff --git a/BeWo/ViewModel/OvertimeVM.cs b/BeWo/ViewModel/OvertimeVM.cs
index 33fa432bf..5eff395fe 100644
--- a/BeWo/ViewModel/OvertimeVM.cs
+++ b/BeWo/ViewModel/OvertimeVM.cs
@@ -86,6 +86,11 @@ namespace BeWo.ViewModel
}
}
+ public String InsUser
+ {
+ get { return DataContract.InsUser; }
+ }
+
protected override void InitByDataContract(OvertimeDC pDataContract)
{
if (IsNew) return;
diff --git a/BeWoPlanerMobil/BeWoPlanerMobil.csproj b/BeWoPlanerMobil/BeWoPlanerMobil.csproj
index f21cb4db4..ec28a9047 100644
--- a/BeWoPlanerMobil/BeWoPlanerMobil.csproj
+++ b/BeWoPlanerMobil/BeWoPlanerMobil.csproj
@@ -5114,7 +5114,7 @@
- True
+ False
False
8808
/
diff --git a/Data/Access/SearchDAO.cs b/Data/Access/SearchDAO.cs
index 4e81a8518..3854898ef 100644
--- a/Data/Access/SearchDAO.cs
+++ b/Data/Access/SearchDAO.cs
@@ -1238,6 +1238,19 @@ namespace BeWo.Data.Access
return criteria.List();
}
+ public IEnumerable GetAdditionalServiceNoticeList(long? regionOid, DateTime start, DateTime end)
+ {
+ var c = CreateCriteriaIsActive()
+ .Add(Restrictions.Between("Monat", start, end));
+
+ if (regionOid.HasValue)
+ {
+ c.Add(Restrictions.Eq("RegionOid", regionOid));
+ }
+
+ return c.List();
+ }
+
public IEnumerable GetAdditionalServiceBookingsForCustomer(long customerOid, DateTime start, DateTime end)
{
return CreateCriteriaIsActive()
diff --git a/Data/Data.csproj b/Data/Data.csproj
index 8b4b88a72..561470c41 100644
--- a/Data/Data.csproj
+++ b/Data/Data.csproj
@@ -280,6 +280,7 @@
+
@@ -679,6 +680,7 @@
PreserveNewest
+
diff --git a/Data/Entities/AdditionalServiceNotice.cs b/Data/Entities/AdditionalServiceNotice.cs
new file mode 100644
index 000000000..22bc976e1
--- /dev/null
+++ b/Data/Entities/AdditionalServiceNotice.cs
@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+
+using BS.Shared;
+
+namespace BeWo.Data.Entities
+{
+ public class AdditionalServiceNotice : BeWoEntityBase
+ {
+
+ public AdditionalServiceNotice()
+ {
+ this._Tid = TableID.AdditionalServiceNotice;
+ }
+
+ public virtual long? RegionOid { get; set; }
+
+ public virtual long? CustomerOid { get; set; }
+
+ public virtual DateTime Monat { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/Data/Entities/ValidationMessage.cs b/Data/Entities/ValidationMessage.cs
index 703130e84..3c93821b1 100644
--- a/Data/Entities/ValidationMessage.cs
+++ b/Data/Entities/ValidationMessage.cs
@@ -103,6 +103,7 @@ namespace BeWo.Data.Entities
}
}
}
+
public virtual string ServiceCategory
{
get => _ServiceCategory;
diff --git a/Data/Mappings/AdditionalServiceNotice.hbm.xml b/Data/Mappings/AdditionalServiceNotice.hbm.xml
new file mode 100644
index 000000000..0259a6c61
--- /dev/null
+++ b/Data/Mappings/AdditionalServiceNotice.hbm.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Model/Changes_2023_12_13_AdditionalServiceNotice.txt b/Model/Changes_2023_12_13_AdditionalServiceNotice.txt
new file mode 100644
index 000000000..94610576f
--- /dev/null
+++ b/Model/Changes_2023_12_13_AdditionalServiceNotice.txt
@@ -0,0 +1,17 @@
+
+CREATE TABLE `AdditionalServiceNotice` (
+ `Oid` bigint NOT NULL AUTO_INCREMENT,
+ `Tid` int NOT NULL,
+ `Notice` mediumtext,
+ `InsTs` datetime DEFAULT NULL,
+ `InsUser` varchar(256) DEFAULT NULL,
+ `Version` bigint DEFAULT NULL,
+ `UpdTs` varchar(256) DEFAULT NULL,
+ `UdpUser` varchar(256) DEFAULT NULL,
+ `IsActive` tinyint DEFAULT NULL,
+ `SystemEntryID` int DEFAULT NULL,
+ `RegionOid` bigint DEFAULT NULL,
+ `CustomerOid` bigint DEFAULT NULL,
+ `Monat` datetime DEFAULT NULL,
+ PRIMARY KEY (`Oid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
\ No newline at end of file
diff --git a/Model/Changes_alle_fuer_neue_db.txt b/Model/Changes_alle_fuer_neue_db.txt
index b74185569..b2519c641 100644
--- a/Model/Changes_alle_fuer_neue_db.txt
+++ b/Model/Changes_alle_fuer_neue_db.txt
@@ -961,8 +961,8 @@ ALTER TABLE `Employee2Customer` ADD COLUMN `EndDate` datetime NULL;
ALTER TABLE `Mandator` ADD COLUMN `LastModules` MEDIUMTEXT NULL;
ALTER TABLE `validationmessage`
-ADD COLUMN `ServiceCategory` VARCHAR(512) NULL DEFAULT NULL AFTER `SupportConceptOid`,
-ADD COLUMN `ServiceDescription` VARCHAR(512) NULL DEFAULT NULL AFTER `ServiceCategory`;
+ADD COLUMN `ServiceCategory` VARCHAR(512) NULL DEFAULT NULL,
+ADD COLUMN `ServiceDescription` VARCHAR(512) NULL DEFAULT NULL;
ALTER TABLE `AbsenceReason` ADD COLUMN `Sichtbarkeit` int NULL;
@@ -975,4 +975,22 @@ ALTER TABLE servicerecordhistory ADD COLUMN `CustomerConfirmationReceiptSignatur
ALTER TABLE servicerecordhistory ADD COLUMN `EmployeeConfirmationReceiptSignatureStateType` int DEFAULT 0;
ALTER TABLE servicerecordhistory ADD COLUMN `ServiceRecordSignatureStateType` int DEFAULT 0;
-ALTER TABLE servicerecordhistory ADD COLUMN `CustomerConfirmationReceiptSignatureOid` BIGINT(18) DEFAULT NULL, ADD COLUMN `EmployeeConfirmationReceiptSignatureOid` BIGINT(18) DEFAULT NULL;
\ No newline at end of file
+ALTER TABLE servicerecordhistory ADD COLUMN `CustomerConfirmationReceiptSignatureOid` BIGINT(18) DEFAULT NULL, ADD COLUMN `EmployeeConfirmationReceiptSignatureOid` BIGINT(18) DEFAULT NULL;
+
+
+CREATE TABLE `AdditionalServiceNotice` (
+ `Oid` bigint NOT NULL AUTO_INCREMENT,
+ `Tid` int NOT NULL,
+ `Notice` mediumtext,
+ `InsTs` datetime DEFAULT NULL,
+ `InsUser` varchar(256) DEFAULT NULL,
+ `Version` bigint DEFAULT NULL,
+ `UpdTs` varchar(256) DEFAULT NULL,
+ `UdpUser` varchar(256) DEFAULT NULL,
+ `IsActive` tinyint DEFAULT NULL,
+ `SystemEntryID` int DEFAULT NULL,
+ `RegionOid` bigint DEFAULT NULL,
+ `CustomerOid` bigint DEFAULT NULL,
+ `Monat` datetime DEFAULT NULL,
+ PRIMARY KEY (`Oid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
\ No newline at end of file
diff --git a/Report/ReportObjects/AuslastungBerechnung.cs b/Report/ReportObjects/AuslastungBerechnung.cs
index afbc9caed..810175a09 100644
--- a/Report/ReportObjects/AuslastungBerechnung.cs
+++ b/Report/ReportObjects/AuslastungBerechnung.cs
@@ -364,7 +364,7 @@ namespace BeWo.Report.ReportObjects
return true;
}
- private MitarbeiterauslastungRO.SupportConceptDetail GetOrCreateSupportConceptDetail(Employee emp, Customer customer, SupportConceptApprovalPeriod scap, CostBearer2SupportConcept cb2sc, DateTime start, DateTime ende, AuslastungBerechnungHelper anteil, bool ausHauptbetreuung)
+ protected virtual MitarbeiterauslastungRO.SupportConceptDetail GetOrCreateSupportConceptDetail(Employee emp, Customer customer, SupportConceptApprovalPeriod scap, CostBearer2SupportConcept cb2sc, DateTime start, DateTime ende, AuslastungBerechnungHelper anteil, bool ausHauptbetreuung)
{
bool inTimeRange = true;
var realEnd = scap.EndDate;
diff --git a/Report/ReportObjects/MitarbeiterstundenkontoBerechnung.cs b/Report/ReportObjects/MitarbeiterstundenkontoBerechnung.cs
index 6b96a55f9..9864b2ac5 100644
--- a/Report/ReportObjects/MitarbeiterstundenkontoBerechnung.cs
+++ b/Report/ReportObjects/MitarbeiterstundenkontoBerechnung.cs
@@ -20,18 +20,18 @@ namespace BeWo.Report.ReportObjects
{
private decimal maxWochenstunden = 40;
private AppSettings appSettings;
- private const int ANZ_WOCHENTAGE = 5;
+ private const int ANZ_WOCHENTAGE = 5;
protected VacationService vacationService;
- public MitarbeiterstundenkontoRO.EmployeeDetail AktuellBearbeitetesEmployeeDetail { get; set; }
+ public MitarbeiterstundenkontoRO.EmployeeDetail AktuellBearbeitetesEmployeeDetail { get; set; }
+
-
public MitarbeiterstundenkontoBerechnung()
{
appSettings = AppSettings.CreateSettings();
- CheckIst = true;
-
+ CheckIst = true;
+
vacationService = PluginLoader.FindClass();
}
@@ -40,7 +40,7 @@ namespace BeWo.Report.ReportObjects
this.maxWochenstunden = maxWochenstunden;
}
- public bool CheckIst { get; set; }
+ public bool CheckIst { get; set; }
public virtual void CreateReport(MitarbeiterstundenkontoRO ro)
{
@@ -49,15 +49,13 @@ namespace BeWo.Report.ReportObjects
CreateTeamDetails(ro);
CreateTotals(ro);
-
-
}
public virtual void CreateTotals(MitarbeiterstundenkontoRO ro)
{
foreach (var empDetail in ro.EmployeeDetailList)
{
-
+
ro.SollGesamt += empDetail.StundenSollOhneUrlaubKrankheit;
ro.FlsSollGesamt += empDetail.FlsSoll;
ro.FlsIstGesamt += empDetail.FlsIst;
@@ -77,7 +75,7 @@ namespace BeWo.Report.ReportObjects
{
foreach (var teamDetail in ro.TeamDetailList)
{
- teamDetail.EmployeeDetailList = FilterEmployeeList(teamDetail.EmployeeDetailList);
+ teamDetail.EmployeeDetailList = FilterEmployeeList(teamDetail.EmployeeDetailList);
foreach (var empDetail in teamDetail.EmployeeDetailList)
{
teamDetail.SollGesamt += empDetail.StundenSollOhneUrlaubKrankheit;
@@ -94,25 +92,25 @@ namespace BeWo.Report.ReportObjects
teamDetail.RelationFlsZuMittelbar = (teamDetail.FlsIstGesamt / (teamDetail.FlsIstGesamt + teamDetail.MittelbarIst)) * 100;
}
-
+
}
public virtual void CreateEmployeeDetails(MitarbeiterstundenkontoRO ro)
{
foreach (var empDetail in ro.EmployeeDetailList)
{
-
+
DateTime monatsAnfang = ro.ReportStartDate;
DateTime monatsEnde = monatsAnfang.AddMonths(1);
DateTime berichtsAnfang = monatsAnfang;
DateTime berichtsEnde = monatsEnde;
Employee emp = empDetail.Employee;
-
+
decimal bu = 0;
-
- var c = GetContractForDate(emp, ro.ReportStartDate, ro.ReportEndDate);
-
+
+ var c = GetContractForDate(emp, ro.ReportStartDate, ro.ReportEndDate);
+
if (c != null)
{
if (c.EntryDate.HasValue && c.EntryDate > monatsAnfang)
@@ -126,12 +124,12 @@ namespace BeWo.Report.ReportObjects
empDetail.HasContract = true;
}
- ServiceRecordSummary summaryTotal = new ServiceRecordSummary();
- summaryTotal.RecordsImBerichtszeitraum = new List();
-
- decimal pause1 = 0;
- decimal pause2 = 0;
- decimal weeklyTotalHours = 0;
+ ServiceRecordSummary summaryTotal = new ServiceRecordSummary();
+ summaryTotal.RecordsImBerichtszeitraum = new List();
+
+ decimal pause1 = 0;
+ decimal pause2 = 0;
+ decimal weeklyTotalHours = 0;
decimal flsSollGesamt = 0;
decimal? fehlZeitenGesamt = null;
decimal? tageUrlaubGesamt = null;
@@ -169,110 +167,110 @@ namespace BeWo.Report.ReportObjects
}
while (berichtsAnfang < berichtsEnde)
{
- StarteBerechnung(berichtsAnfang, berichtsEnde, empDetail);
+ StarteBerechnung(berichtsAnfang, berichtsEnde, empDetail);
- empDetail.ArbeitstageImBerichtszeitraum = GetArbeitstageImBereich(berichtsAnfang, berichtsEnde, emp);
- empDetail.ArbeitstageProWoche = ANZ_WOCHENTAGE;
-
+ empDetail.ArbeitstageImBerichtszeitraum = GetArbeitstageImBereich(berichtsAnfang, berichtsEnde, emp);
+ empDetail.ArbeitstageProWoche = ANZ_WOCHENTAGE;
- workdaysTotal += empDetail.ArbeitstageImBerichtszeitraum;
+
+ workdaysTotal += empDetail.ArbeitstageImBerichtszeitraum;
weeklyTotalHours = 0;
-
- if (c != null)
+
+ if (c != null)
{
if (c.WeeklyTotalHours.HasValue)
{
weeklyTotalHours = c.WeeklyTotalHours.Value;
- bu = c.WeeklyTotalHours.Value/this.maxWochenstunden;
+ bu = c.WeeklyTotalHours.Value / this.maxWochenstunden;
+ }
+ if (c.WeeklyDays.HasValue && c.WeeklyDays.Value > 0)
+ {
+ empDetail.ArbeitstageProWoche = c.WeeklyDays.Value;
}
- if (c.WeeklyDays.HasValue && c.WeeklyDays.Value > 0)
- {
- empDetail.ArbeitstageProWoche = c.WeeklyDays.Value;
- }
-
- empDetail.WeeklyFLS = c.WeeklyFLS;
- empDetail.HourlyRate = c.HourlyRate;
- empDetail.EmploymentType = c.EmploymentType;
-
- }
- empDetail.SollProTag = (weeklyTotalHours / empDetail.ArbeitstageProWoche);
- empDetail.SollProWoche = BerechneSollProWoche(c, empDetail);
-
- HandleServiceRecords(empDetail, groupFilteredRecords, c);
-
- if (CheckIst)
- {
-
- var summary = BerechneStunden(empDetail, groupFilteredRecords, berichtsAnfang, berichtsEnde);
- summaryTotal.IstAbrechenbar += summary.IstAbrechenbar;
- summaryTotal.IstNichtAbrechenbar += summary.IstNichtAbrechenbar;
- summaryTotal.RecordsImBerichtszeitraum.AddRange(summary.RecordsImBerichtszeitraum);
-
- if (SollPauseBerechnen())
- {
- pause1 += BerechnePauseMinuten(summary.RecordsImBerichtszeitraum);
- pause2 += BerechneAutoPausen(summary.RecordsImBerichtszeitraum);
-
- }
- }
+ empDetail.WeeklyFLS = c.WeeklyFLS;
+ empDetail.HourlyRate = c.HourlyRate;
+ empDetail.EmploymentType = c.EmploymentType;
- decimal? stundenSollProMonat = null;
- decimal? stundenSollImVertragsUndBerichtzeitraum = null;
- if (empDetail.HasContract)
- {
- stundenSollImVertragsUndBerichtzeitraum = GetSollNachArbeitszeiten(empDetail.Employee, berichtsAnfang, berichtsEnde);
- }
+ }
+ empDetail.SollProTag = (weeklyTotalHours / empDetail.ArbeitstageProWoche);
+ empDetail.SollProWoche = BerechneSollProWoche(c, empDetail);
- if (!stundenSollImVertragsUndBerichtzeitraum.HasValue)
- {
- stundenSollProMonat = BerechneSollProMonat(emp, berichtsAnfang, berichtsEnde);
- stundenSollImVertragsUndBerichtzeitraum = stundenSollProMonat;
- }
+ HandleServiceRecords(empDetail, groupFilteredRecords, c);
- if (!stundenSollImVertragsUndBerichtzeitraum.HasValue)
- {
- if (!stundenSollImVertragsUndBerichtzeitraum.HasValue)
- {
- if (empDetail.ArbeitstageProWoche <= 5)
- {
- stundenSollImVertragsUndBerichtzeitraum =
- empDetail.ArbeitstageImBerichtszeitraum * (weeklyTotalHours / 5);
- }
- else
- {
- stundenSollImVertragsUndBerichtzeitraum =
- empDetail.ArbeitstageImBerichtszeitraum * (weeklyTotalHours / empDetail.ArbeitstageProWoche);
- }
- }
- }
-
+ if (CheckIst)
+ {
- stundenSollGesamt += stundenSollImVertragsUndBerichtzeitraum ?? 0;
+ var summary = BerechneStunden(empDetail, groupFilteredRecords, berichtsAnfang, berichtsEnde);
+ summaryTotal.IstAbrechenbar += summary.IstAbrechenbar;
+ summaryTotal.IstNichtAbrechenbar += summary.IstNichtAbrechenbar;
+ summaryTotal.RecordsImBerichtszeitraum.AddRange(summary.RecordsImBerichtszeitraum);
-
- empDetail.StundenSollMax = stundenSollGesamt;
+ if (SollPauseBerechnen())
+ {
+ pause1 += BerechnePauseMinuten(summary.RecordsImBerichtszeitraum);
+ pause2 += BerechneAutoPausen(summary.RecordsImBerichtszeitraum);
+
+ }
+ }
- var tatSollStdImVertragsUndBerichtzeitraum = stundenSollImVertragsUndBerichtzeitraum ?? 0;
+ decimal? stundenSollProMonat = null;
+ decimal? stundenSollImVertragsUndBerichtzeitraum = null;
+ if (empDetail.HasContract)
+ {
+ stundenSollImVertragsUndBerichtzeitraum = GetSollNachArbeitszeiten(empDetail.Employee, berichtsAnfang, berichtsEnde);
+ }
-
- decimal? fehlZeiten = GetFehlzeiten(groupFilteredRecords, berichtsAnfang, berichtsEnde);
+ if (!stundenSollImVertragsUndBerichtzeitraum.HasValue)
+ {
+ stundenSollProMonat = BerechneSollProMonat(emp, berichtsAnfang, berichtsEnde);
+ stundenSollImVertragsUndBerichtzeitraum = stundenSollProMonat;
+ }
+
+ if (!stundenSollImVertragsUndBerichtzeitraum.HasValue)
+ {
+ if (!stundenSollImVertragsUndBerichtzeitraum.HasValue)
+ {
+ if (empDetail.ArbeitstageProWoche <= 5)
+ {
+ stundenSollImVertragsUndBerichtzeitraum =
+ empDetail.ArbeitstageImBerichtszeitraum * (weeklyTotalHours / 5);
+ }
+ else
+ {
+ stundenSollImVertragsUndBerichtzeitraum =
+ empDetail.ArbeitstageImBerichtszeitraum * (weeklyTotalHours / empDetail.ArbeitstageProWoche);
+ }
+ }
+ }
+
+
+ stundenSollGesamt += stundenSollImVertragsUndBerichtzeitraum ?? 0;
+
+
+ empDetail.StundenSollMax = stundenSollGesamt;
+
+
+ var tatSollStdImVertragsUndBerichtzeitraum = stundenSollImVertragsUndBerichtzeitraum ?? 0;
+
+
+ decimal? fehlZeiten = GetFehlzeiten(groupFilteredRecords, berichtsAnfang, berichtsEnde);
if (fehlZeiten.HasValue)
{
if (!fehlZeitenGesamt.HasValue)
fehlZeitenGesamt = 0;
fehlZeitenGesamt += fehlZeiten;
- tatSollStdImVertragsUndBerichtzeitraum -= fehlZeiten.Value;
+ tatSollStdImVertragsUndBerichtzeitraum -= fehlZeiten.Value;
}
- AktuellBearbeitetesEmployeeDetail = empDetail;
+ AktuellBearbeitetesEmployeeDetail = empDetail;
var ath = GetAbsenceTimeDaysWithWorkWeeks(emp, berichtsAnfang, berichtsEnde, empDetail.ArbeitstageProWoche);
- empDetail.AbsenceTimeDays = ath;
+ empDetail.AbsenceTimeDays = ath;
- if (ath.TageUrlaub.HasValue)
+ if (ath.TageUrlaub.HasValue)
{
if (!tageUrlaubGesamt.HasValue)
tageUrlaubGesamt = 0;
@@ -284,72 +282,72 @@ namespace BeWo.Report.ReportObjects
tageKrankheitGesamt = 0;
tageKrankheitGesamt += ath.TageKrankheit;
}
-
- if (ath.TageGesamt.HasValue)
+
+ if (ath.TageGesamt.HasValue)
{
if (!abwesenheitTageGesamt.HasValue)
abwesenheitTageGesamt = 0;
abwesenheitTageGesamt += ath.TageGesamt;
- var minusStunden = BerechneStundenDurchAbwesenheiten(ath, berichtsAnfang, berichtsEnde, c, empDetail);
- tatSollStdImVertragsUndBerichtzeitraum -= minusStunden;
- if (tatSollStdImVertragsUndBerichtzeitraum < 0 && !StundenDurchAbwesenheitenDuerfenNegativSein())
- {
+ var minusStunden = BerechneStundenDurchAbwesenheiten(ath, berichtsAnfang, berichtsEnde, c, empDetail);
+ tatSollStdImVertragsUndBerichtzeitraum -= minusStunden;
+ if (tatSollStdImVertragsUndBerichtzeitraum < 0 && !StundenDurchAbwesenheitenDuerfenNegativSein())
+ {
- tatSollStdImVertragsUndBerichtzeitraum = 0;
+ tatSollStdImVertragsUndBerichtzeitraum = 0;
+
+ }
- }
-
}
-
- var ath2 = GetAbwesenheitenDurchServiceRecords(empDetail, c, groupFilteredRecords, berichtsAnfang, berichtsEnde);
- if (ath2 != null)
- {
-
- var stunden = ath2.StundenKrankheit + ath2.StundenUrlaub + ath2.StundenSonstiges;
+ var ath2 = GetAbwesenheitenDurchServiceRecords(empDetail, c, groupFilteredRecords, berichtsAnfang, berichtsEnde);
- tatSollStdImVertragsUndBerichtzeitraum -= stunden;
+ if (ath2 != null)
+ {
- if (tatSollStdImVertragsUndBerichtzeitraum < 0 && !StundenDurchAbwesenheitenDuerfenNegativSein())
- {
- tatSollStdImVertragsUndBerichtzeitraum = 0;
- }
+ var stunden = ath2.StundenKrankheit + ath2.StundenUrlaub + ath2.StundenSonstiges;
- if (empDetail.SollProTag > 0)
- {
- if (!abwesenheitTageGesamt.HasValue)
- abwesenheitTageGesamt = 0;
- abwesenheitTageGesamt += stunden / empDetail.SollProTag;
+ tatSollStdImVertragsUndBerichtzeitraum -= stunden;
- if (ath2.StundenKrankheit > 0)
- {
- if (!tageKrankheitGesamt.HasValue)
- {
- tageKrankheitGesamt = 0;
- }
- tageKrankheitGesamt += ath2.StundenKrankheit / empDetail.SollProTag;
- }
+ if (tatSollStdImVertragsUndBerichtzeitraum < 0 && !StundenDurchAbwesenheitenDuerfenNegativSein())
+ {
+ tatSollStdImVertragsUndBerichtzeitraum = 0;
+ }
- if (ath2.StundenUrlaub > 0)
- {
- if (!tageUrlaubGesamt.HasValue)
- {
- tageUrlaubGesamt = 0;
- }
- tageUrlaubGesamt += ath2.StundenUrlaub / empDetail.SollProTag;
- }
- }
+ if (empDetail.SollProTag > 0)
+ {
+ if (!abwesenheitTageGesamt.HasValue)
+ abwesenheitTageGesamt = 0;
+ abwesenheitTageGesamt += stunden / empDetail.SollProTag;
-
- }
+ if (ath2.StundenKrankheit > 0)
+ {
+ if (!tageKrankheitGesamt.HasValue)
+ {
+ tageKrankheitGesamt = 0;
+ }
+ tageKrankheitGesamt += ath2.StundenKrankheit / empDetail.SollProTag;
+ }
- tatSollStdGesamt += tatSollStdImVertragsUndBerichtzeitraum;
-
+ if (ath2.StundenUrlaub > 0)
+ {
+ if (!tageUrlaubGesamt.HasValue)
+ {
+ tageUrlaubGesamt = 0;
+ }
+ tageUrlaubGesamt += ath2.StundenUrlaub / empDetail.SollProTag;
+ }
+ }
- flsSollGesamt += BerechneFlsSoll(emp, c, berichtsAnfang, berichtsEnde, tatSollStdImVertragsUndBerichtzeitraum, stundenSollProMonat);
+
+ }
+
+ tatSollStdGesamt += tatSollStdImVertragsUndBerichtzeitraum;
+
+
+ flsSollGesamt += BerechneFlsSoll(emp, c, berichtsAnfang, berichtsEnde, tatSollStdImVertragsUndBerichtzeitraum, stundenSollProMonat);
if (ath.StundenAlsIst > 0)
{
@@ -377,14 +375,14 @@ namespace BeWo.Report.ReportObjects
if (AddRateFactorToIst() != 1)
{
- summaryTotal.IstAbrechenbar *= AddRateFactorToIst();
+ summaryTotal.IstAbrechenbar *= AddRateFactorToIst();
}
- summaryTotal.IstAbrechenbar /= 60m;
- summaryTotal.IstNichtAbrechenbar /= 60m;
+ summaryTotal.IstAbrechenbar /= 60m;
+ summaryTotal.IstNichtAbrechenbar /= 60m;
empDetail.WorkDaysThisMonth = workdaysTotal;
//decimal stundenSollMax = arbeitstage * (maxWochenstunden / xxx) * bu;
-
+
empDetail.Fehlzeiten = fehlZeitenGesamt;
@@ -396,7 +394,7 @@ namespace BeWo.Report.ReportObjects
empDetail.FlsSoll = flsSollGesamt;
-
+
empDetail.MittelbarIst = summaryTotal.IstNichtAbrechenbar;
empDetail.Bu = bu;
@@ -405,13 +403,13 @@ namespace BeWo.Report.ReportObjects
empDetail.StundenMittelbarIst = summaryTotal.IstNichtAbrechenbar;
empDetail.StundenGesamtIst = summaryTotal.IstAbrechenbar + summaryTotal.IstNichtAbrechenbar;
- empDetail.StundenGesamtIst -= pause1/60;
- empDetail.StundenGesamtIst -= pause2/60;
+ empDetail.StundenGesamtIst -= pause1 / 60;
+ empDetail.StundenGesamtIst -= pause2 / 60;
empDetail.StundenGesamtIst += azDurchFeiertage;
- if (empDetail.FlsSoll != 0)
- empDetail.RelationIstSoll = (empDetail.FlsIst/empDetail.FlsSoll)*100m;
+ if (empDetail.FlsSoll != 0)
+ empDetail.RelationIstSoll = (empDetail.FlsIst / empDetail.FlsSoll) * 100m;
decimal? ueberstunden = empDetail.StundenGesamtIst - empDetail.StundenSollOhneUrlaubKrankheit;
@@ -420,17 +418,17 @@ namespace BeWo.Report.ReportObjects
decimal alteExtraUeberstunden = 0;
BerechneUeberstundenBis(empDetail, groupFilteredRecords, ro.ReportStartDate, out ueberstundenVormonat,
- out alteExtraUeberstunden);
+ out alteExtraUeberstunden);
var alleDiensteintraege = DAOFactory.GenericDAO.GetAllActive().Where(d => d.EmployeeOid == empDetail.Employee.Oid).ToList();
var alleDienstvertretungen = DAOFactory.GenericDAO.GetAllActive().Where(d => d.EmployeeOid == empDetail.Employee.Oid).ToList();
decimal? ueberstundenVormonatFuerDienstplanung;
decimal? alteExtraUeberstundenDienstplanung;
- empDetail.DienstplanIst += BerechneDienstplanIst(empDetail, alleDiensteintraege, alleDienstvertretungen, ro.ReportStartDate,
- out ueberstundenVormonatFuerDienstplanung, out alteExtraUeberstundenDienstplanung); // ABCDEF
+ empDetail.DienstplanIst += BerechneDienstplanIst(empDetail, alleDiensteintraege, alleDienstvertretungen, ro.ReportStartDate,
+ out ueberstundenVormonatFuerDienstplanung, out alteExtraUeberstundenDienstplanung); // ABCDEF
- var dienstplanIstAlsStunden = empDetail.DienstplanIst / 60;
+ var dienstplanIstAlsStunden = empDetail.DienstplanIst / 60;
decimal extraStunden = 0;
@@ -438,7 +436,7 @@ namespace BeWo.Report.ReportObjects
if (ShouldCreateDayDetails())
{
-
+
empDetail.Days = CreateDayDetails(monatsAnfang, monatsEnde, empDetail, summaryTotal.RecordsImBerichtszeitraum);
var ah = GetAdditionalHours(empDetail.Days, monatsAnfang, monatsEnde, empDetail, summaryTotal.RecordsImBerichtszeitraum);
ueberstunden += ah;
@@ -460,16 +458,16 @@ namespace BeWo.Report.ReportObjects
empDetail.UrlaubGesamtImAktuellenJahr =
GetAbsenceTimeDaysWithWorkWeeks(emp, new DateTime(monatsAnfang.Year, 1, 1), monatsEnde, empDetail.ArbeitstageProWoche).TageUrlaub;
- CalculateEmployeeSalary(empDetail, berichtsAnfang, berichtsEnde);
+ CalculateEmployeeSalary(empDetail, berichtsAnfang, berichtsEnde);
}
- ro.EmployeeDetailList = FilterEmployeeList(ro.EmployeeDetailList);
+ ro.EmployeeDetailList = FilterEmployeeList(ro.EmployeeDetailList);
}
- #region Ist-Berechnung für Dienstplanung
- public decimal BerechneDienstplanIst(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, List eintraege, List vertretungen, DateTime monat, out decimal? ueberstunden, out decimal? alteExtraUeberstunden) // ABCDEF
- {
+ #region Ist-Berechnung für Dienstplanung
+ public decimal BerechneDienstplanIst(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, List eintraege, List vertretungen, DateTime monat, out decimal? ueberstunden, out decimal? alteExtraUeberstunden) // ABCDEF
+ {
ueberstunden = null;
alteExtraUeberstunden = 0;
@@ -483,73 +481,73 @@ namespace BeWo.Report.ReportObjects
// Der Einfachheit halber: Vertretungen in Einträge umwandeln
eintraege.AddRange(VertretungenUmwandeln(vertretungen.ToList()));
- if (c != null)
- {
- Dictionary> eintragDict = CreateDiensteintragDictByDate(eintraege); // Anzahl der Einträge korrekt
+ if (c != null)
+ {
+ Dictionary> eintragDict = CreateDiensteintragDictByDate(eintraege); // Anzahl der Einträge korrekt
- DateTime start = c.EntryDate.HasValue ? c.EntryDate.Value : new DateTime(2011, 1, 1);
- while (c != null && start < monat)
- {
- DateTime contractEnd = c.ContractEndDate.HasValue ? c.ContractEndDate.Value : DateTime.MaxValue;
- decimal bu = 0;
- decimal weeklyTotalHours = this.maxWochenstunden;
- int anzWochentage = ANZ_WOCHENTAGE;
+ DateTime start = c.EntryDate.HasValue ? c.EntryDate.Value : new DateTime(2011, 1, 1);
+ while (c != null && start < monat)
+ {
+ DateTime contractEnd = c.ContractEndDate.HasValue ? c.ContractEndDate.Value : DateTime.MaxValue;
+ decimal bu = 0;
+ decimal weeklyTotalHours = this.maxWochenstunden;
+ int anzWochentage = ANZ_WOCHENTAGE;
- if (c.WeeklyTotalHours.HasValue)
- {
- weeklyTotalHours = c.WeeklyTotalHours.Value;
- bu = c.WeeklyTotalHours.Value / maxWochenstunden;
- }
+ if (c.WeeklyTotalHours.HasValue)
+ {
+ weeklyTotalHours = c.WeeklyTotalHours.Value;
+ bu = c.WeeklyTotalHours.Value / maxWochenstunden;
+ }
- while (start < monat && start < contractEnd)
- {
- decimal flsIst = 0;
- decimal mittelbarIst = 0;
- decimal minutenMonat = 0;
- DateTime ende = new DateTime(start.Year, start.Month, 1).AddMonths(1);
- if (contractEnd < DateTime.MaxValue && contractEnd.AddDays(1) < ende)
- ende = contractEnd.AddDays(1);
+ while (start < monat && start < contractEnd)
+ {
+ decimal flsIst = 0;
+ decimal mittelbarIst = 0;
+ decimal minutenMonat = 0;
+ DateTime ende = new DateTime(start.Year, start.Month, 1).AddMonths(1);
+ if (contractEnd < DateTime.MaxValue && contractEnd.AddDays(1) < ende)
+ ende = contractEnd.AddDays(1);
- List entriesThisMonth = new List();
- string key = string.Format("{0:yyyyMM}", start);
+ List entriesThisMonth = new List();
+ string key = string.Format("{0:yyyyMM}", start);
- if (eintragDict.ContainsKey(key))
- {
- foreach (var item in eintragDict[key])
- {
- minutenMonat += Convert.ToDecimal(item.DauerInStunden * 60);
- entriesThisMonth.Add(item);
- }
- }
+ if (eintragDict.ContainsKey(key))
+ {
+ foreach (var item in eintragDict[key])
+ {
+ minutenMonat += Convert.ToDecimal(item.DauerInStunden * 60);
+ entriesThisMonth.Add(item);
+ }
+ }
dpIst += minutenMonat;
- decimal arbeitstage = GetArbeitstageImBereich(start, ende, emp);
+ decimal arbeitstage = GetArbeitstageImBereich(start, ende, emp);
- var arbeitstageProWoche = anzWochentage;
- if (c != null && c.WeeklyDays.HasValue && c.WeeklyDays.Value > 0)
- arbeitstageProWoche = c.WeeklyDays.Value;
+ var arbeitstageProWoche = anzWochentage;
+ if (c != null && c.WeeklyDays.HasValue && c.WeeklyDays.Value > 0)
+ arbeitstageProWoche = c.WeeklyDays.Value;
- var soll = GetSollNachArbeitszeiten(emp, start, ende);
- if (!soll.HasValue)
- {
- var stundenSollProMonat = BerechneSollProMonat(emp, start, ende);
- soll = stundenSollProMonat;
- }
+ var soll = GetSollNachArbeitszeiten(emp, start, ende);
+ if (!soll.HasValue)
+ {
+ var stundenSollProMonat = BerechneSollProMonat(emp, start, ende);
+ soll = stundenSollProMonat;
+ }
- if (!soll.HasValue)
- {
+ if (!soll.HasValue)
+ {
- if (!soll.HasValue)
- {
- decimal maxSollMonat = arbeitstage * (maxWochenstunden / arbeitstageProWoche);
- if (arbeitstageProWoche <= 5)
- {
- maxSollMonat = arbeitstage * (maxWochenstunden / 5);
- }
+ if (!soll.HasValue)
+ {
+ decimal maxSollMonat = arbeitstage * (maxWochenstunden / arbeitstageProWoche);
+ if (arbeitstageProWoche <= 5)
+ {
+ maxSollMonat = arbeitstage * (maxWochenstunden / 5);
+ }
- soll = maxSollMonat * bu;
- }
- }
+ soll = maxSollMonat * bu;
+ }
+ }
@@ -566,10 +564,10 @@ namespace BeWo.Report.ReportObjects
AktuellBearbeitetesEmployeeDetail = ed;
var ath = GetAbsenceTimeDaysWithWorkWeeks(emp, start, ende, arbeitstageProWoche);
-
-
+
+
ed.AbsenceTimeDays = ath;
-
+
if (ath.TageGesamt.HasValue)
{
@@ -633,19 +631,19 @@ namespace BeWo.Report.ReportObjects
}
}
}
- }
- return dpIst;
- }
+ }
+ return dpIst;
+ }
- private Dictionary> CreateDiensteintragDictByDate(List eintraege)
- {
+ private Dictionary> CreateDiensteintragDictByDate(List eintraege)
+ {
var dict = new Dictionary>();
foreach (var item in eintraege)
{
//if (!IsServiceRecordFehlzeit(item))
//{
-
+
string key = string.Format("{0:yyyyMM}", item.Datum);
List list;
@@ -659,14 +657,14 @@ namespace BeWo.Report.ReportObjects
list = dict[key];
}
list.Add(item);
-
+
//}
}
return dict;
}
private List VertretungenUmwandeln(List vertretungen)
- {
+ {
List eintraege = new List();
foreach (var v in vertretungen)
@@ -687,406 +685,406 @@ namespace BeWo.Report.ReportObjects
return eintraege;
}
- #endregion
+ #endregion
protected virtual void StarteBerechnung(DateTime berichtsAnfang, DateTime berichtsEnde, MitarbeiterstundenkontoRO.EmployeeDetail empDetail)
- {
- //do nothing
- }
+ {
+ //do nothing
+ }
- protected virtual AbsenceTimeHours GetAbwesenheitenDurchServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, Contract c, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde)
- {
- return null;
- }
+ protected virtual AbsenceTimeHours GetAbwesenheitenDurchServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, Contract c, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde)
+ {
+ return null;
+ }
- protected virtual decimal BerechneFlsSoll(Employee emp, Contract contract, DateTime berichtsAnfang, DateTime berichtsEnde, decimal tatSollStdImVertragsUndBerichtzeitraum, decimal? stundenSollProMonat)
- {
- var festeflsSollProMonat = BerechneFlsSollProMonat(emp, berichtsAnfang, berichtsEnde);
- decimal flsSollImVertragsUndBerichtzeitraum = 0;
+ protected virtual decimal BerechneFlsSoll(Employee emp, Contract contract, DateTime berichtsAnfang, DateTime berichtsEnde, decimal tatSollStdImVertragsUndBerichtzeitraum, decimal? stundenSollProMonat)
+ {
+ var festeflsSollProMonat = BerechneFlsSollProMonat(emp, berichtsAnfang, berichtsEnde);
+ decimal flsSollImVertragsUndBerichtzeitraum = 0;
- if (festeflsSollProMonat.HasValue)
- {
- flsSollImVertragsUndBerichtzeitraum = tatSollStdImVertragsUndBerichtzeitraum;
+ if (festeflsSollProMonat.HasValue)
+ {
+ flsSollImVertragsUndBerichtzeitraum = tatSollStdImVertragsUndBerichtzeitraum;
- if (stundenSollProMonat.HasValue)
- {
- flsSollImVertragsUndBerichtzeitraum *= (festeflsSollProMonat.Value / stundenSollProMonat.Value);
- }
- }
- else
- {
- if (contract != null && contract.WeeklyFLS.HasValue)
- {
- flsSollImVertragsUndBerichtzeitraum = tatSollStdImVertragsUndBerichtzeitraum;
+ if (stundenSollProMonat.HasValue)
+ {
+ flsSollImVertragsUndBerichtzeitraum *= (festeflsSollProMonat.Value / stundenSollProMonat.Value);
+ }
+ }
+ else
+ {
+ if (contract != null && contract.WeeklyFLS.HasValue)
+ {
+ flsSollImVertragsUndBerichtzeitraum = tatSollStdImVertragsUndBerichtzeitraum;
- if (HatArbeitszeitImZeitraum(emp.Arbeitszeiten, berichtsAnfang, berichtsEnde))
- {
- var wochenArbeitszeit = GetWochenArbeitszeit(emp.Arbeitszeiten, berichtsAnfang, berichtsEnde);
+ if (HatArbeitszeitImZeitraum(emp.Arbeitszeiten, berichtsAnfang, berichtsEnde))
+ {
+ var wochenArbeitszeit = GetWochenArbeitszeit(emp.Arbeitszeiten, berichtsAnfang, berichtsEnde);
- if (wochenArbeitszeit > 0)
- {
- flsSollImVertragsUndBerichtzeitraum *= contract.WeeklyFLS.Value / wochenArbeitszeit;
- }
+ if (wochenArbeitszeit > 0)
+ {
+ flsSollImVertragsUndBerichtzeitraum *= contract.WeeklyFLS.Value / wochenArbeitszeit;
+ }
- }
- else if (contract.WeeklyTotalHours.HasValue && contract.WeeklyTotalHours.Value != 0)
- {
- flsSollImVertragsUndBerichtzeitraum *= contract.WeeklyFLS.Value / contract.WeeklyTotalHours.Value;
- }
+ }
+ else if (contract.WeeklyTotalHours.HasValue && contract.WeeklyTotalHours.Value != 0)
+ {
+ flsSollImVertragsUndBerichtzeitraum *= contract.WeeklyFLS.Value / contract.WeeklyTotalHours.Value;
+ }
- }
- }
+ }
+ }
- return flsSollImVertragsUndBerichtzeitraum;
- }
+ return flsSollImVertragsUndBerichtzeitraum;
+ }
- private decimal GetWochenArbeitszeit(IList arbeitszeiten, DateTime start, DateTime ende)
- {
- if (arbeitszeiten != null)
- {
- foreach (var az in arbeitszeiten)
- {
- if ((!az.GueltigVon.HasValue || az.GueltigVon.Value < ende) &&
- (!az.GueltigBis.HasValue || az.GueltigBis.Value >= start))
- {
+ private decimal GetWochenArbeitszeit(IList arbeitszeiten, DateTime start, DateTime ende)
+ {
+ if (arbeitszeiten != null)
+ {
+ foreach (var az in arbeitszeiten)
+ {
+ if ((!az.GueltigVon.HasValue || az.GueltigVon.Value < ende) &&
+ (!az.GueltigBis.HasValue || az.GueltigBis.Value >= start))
+ {
- DateTime wochenStart = start;
- while (wochenStart.DayOfWeek != DayOfWeek.Monday)
- {
- wochenStart = wochenStart.AddDays(1);
- }
+ DateTime wochenStart = start;
+ while (wochenStart.DayOfWeek != DayOfWeek.Monday)
+ {
+ wochenStart = wochenStart.AddDays(1);
+ }
- decimal stunden = 0;
- for (int i = 0; i < 7; i++)
- {
- stunden += GetArbeitszeitStundenFuerTag(az, wochenStart);
+ decimal stunden = 0;
+ for (int i = 0; i < 7; i++)
+ {
+ stunden += GetArbeitszeitStundenFuerTag(az, wochenStart);
- wochenStart = wochenStart.AddDays(1);
- }
+ wochenStart = wochenStart.AddDays(1);
+ }
- return stunden;
- }
- }
- }
+ return stunden;
+ }
+ }
+ }
- return 0;
- }
+ return 0;
+ }
- protected virtual bool StundenDurchAbwesenheitenDuerfenNegativSein()
- {
- return false;
- }
+ protected virtual bool StundenDurchAbwesenheitenDuerfenNegativSein()
+ {
+ return false;
+ }
protected virtual bool SchneideZuvieleAbwesenheitsstundenAb()
{
return true;
}
-
+
protected virtual decimal? GetSollNachArbeitszeiten(Employee emp, DateTime start, DateTime ende)
- {
+ {
if (BerechneSollNurBisZumAktuellenTag())
- {
+ {
if (ende > DateTime.Now.Date.AddDays(1))
- {
+ {
ende = DateTime.Now.Date.AddDays(1);
- }
- }
+ }
+ }
- if (emp.Arbeitszeiten != null && emp.Arbeitszeiten.Count > 0)
- {
- if (HatArbeitszeitImZeitraum(emp.Arbeitszeiten, start, ende))
- {
- decimal soll = 0;
+ if (emp.Arbeitszeiten != null && emp.Arbeitszeiten.Count > 0)
+ {
+ if (HatArbeitszeitImZeitraum(emp.Arbeitszeiten, start, ende))
+ {
+ decimal soll = 0;
- DateTime startTemp = start;
+ DateTime startTemp = start;
- while (startTemp < ende)
- {
- soll += GetSollNachArbeitszeitenFuerTag(emp, startTemp);
- startTemp = startTemp.AddDays(1);
- }
+ while (startTemp < ende)
+ {
+ soll += GetSollNachArbeitszeitenFuerTag(emp, startTemp);
+ startTemp = startTemp.AddDays(1);
+ }
- return soll;
- }
- }
+ return soll;
+ }
+ }
- return null;
- }
+ return null;
+ }
- protected virtual bool HatArbeitszeitImZeitraum(IList arbeitszeiten, DateTime start, DateTime ende)
- {
- if (arbeitszeiten != null)
- {
- foreach (var az in arbeitszeiten)
- {
- if ((!az.GueltigVon.HasValue || az.GueltigVon.Value < ende) && (!az.GueltigBis.HasValue || az.GueltigBis.Value >= start) && az.ArbeitszeitEintraege != null && az.ArbeitszeitEintraege.Count > 0)
- {
- return true;
- }
- }
- }
+ protected virtual bool HatArbeitszeitImZeitraum(IList arbeitszeiten, DateTime start, DateTime ende)
+ {
+ if (arbeitszeiten != null)
+ {
+ foreach (var az in arbeitszeiten)
+ {
+ if ((!az.GueltigVon.HasValue || az.GueltigVon.Value < ende) && (!az.GueltigBis.HasValue || az.GueltigBis.Value >= start) && az.ArbeitszeitEintraege != null && az.ArbeitszeitEintraege.Count > 0)
+ {
+ return true;
+ }
+ }
+ }
- return false;
- }
+ return false;
+ }
- protected virtual decimal GetSollNachArbeitszeitenFuerTag(Employee emp, DateTime tag)
- {
- decimal soll = 0;
- var fak = GetFeiertagsFaktor(tag);
+ protected virtual decimal GetSollNachArbeitszeitenFuerTag(Employee emp, DateTime tag)
+ {
+ decimal soll = 0;
+ var fak = GetFeiertagsFaktor(tag);
- if (fak < 1)
- {
- if (emp.Arbeitszeiten != null)
- {
- foreach (var az in emp.Arbeitszeiten)
- {
- if ((!az.GueltigVon.HasValue || az.GueltigVon.Value <= tag) &&
- (!az.GueltigBis.HasValue || az.GueltigBis.Value >= tag))
- {
- var std = GetArbeitszeitStundenFuerTag(az, tag);
- soll += (std * (1 - fak));
- }
- }
- }
- }
+ if (fak < 1)
+ {
+ if (emp.Arbeitszeiten != null)
+ {
+ foreach (var az in emp.Arbeitszeiten)
+ {
+ if ((!az.GueltigVon.HasValue || az.GueltigVon.Value <= tag) &&
+ (!az.GueltigBis.HasValue || az.GueltigBis.Value >= tag))
+ {
+ var std = GetArbeitszeitStundenFuerTag(az, tag);
+ soll += (std * (1 - fak));
+ }
+ }
+ }
+ }
- return soll;
- }
+ return soll;
+ }
- protected decimal GetArbeitszeitStundenFuerTag(Arbeitszeit az, DateTime tag)
- {
- var day = tag.DayOfWeek;
- decimal stunden = 0;
- foreach (var ae in az.ArbeitszeitEintraege)
- {
- if (SindAmGleichenWochentag(day, ae.Tag))
- {
- String dateStr1 = String.Format("{0:dd.MM.yyyy} {1}", tag, ae.UhrzeitVon);
- String dateStr2 = String.Format("{0:dd.MM.yyyy} {1}", tag, ae.UhrzeitBis);
+ protected decimal GetArbeitszeitStundenFuerTag(Arbeitszeit az, DateTime tag)
+ {
+ var day = tag.DayOfWeek;
+ decimal stunden = 0;
+ foreach (var ae in az.ArbeitszeitEintraege)
+ {
+ if (SindAmGleichenWochentag(day, ae.Tag))
+ {
+ String dateStr1 = String.Format("{0:dd.MM.yyyy} {1}", tag, ae.UhrzeitVon);
+ String dateStr2 = String.Format("{0:dd.MM.yyyy} {1}", tag, ae.UhrzeitBis);
- DateTime date1;
- DateTime date2;
+ DateTime date1;
+ DateTime date2;
- if (DateTime.TryParse(dateStr1, out date1) && DateTime.TryParse(dateStr2, out date2))
- {
+ if (DateTime.TryParse(dateStr1, out date1) && DateTime.TryParse(dateStr2, out date2))
+ {
- stunden += (decimal)date2.Subtract(date1).TotalHours;
- }
- }
- }
+ stunden += (decimal)date2.Subtract(date1).TotalHours;
+ }
+ }
+ }
- return stunden;
- }
+ return stunden;
+ }
- private bool SindAmGleichenWochentag(DayOfWeek day, AppointmentDayOfWeek aeTag)
- {
- if (day == DayOfWeek.Monday && aeTag == AppointmentDayOfWeek.Montag)
- {
- return true;
- }
- if (day == DayOfWeek.Tuesday && aeTag == AppointmentDayOfWeek.Dienstag)
- {
- return true;
- }
- if (day == DayOfWeek.Wednesday && aeTag == AppointmentDayOfWeek.Mittwoch)
- {
- return true;
- }
- if (day == DayOfWeek.Thursday && aeTag == AppointmentDayOfWeek.Donnerstag)
- {
- return true;
- }
- if (day == DayOfWeek.Friday && aeTag == AppointmentDayOfWeek.Freitag)
- {
- return true;
- }
- if (day == DayOfWeek.Saturday && aeTag == AppointmentDayOfWeek.Samstag)
- {
- return true;
- }
- return false;
- }
+ private bool SindAmGleichenWochentag(DayOfWeek day, AppointmentDayOfWeek aeTag)
+ {
+ if (day == DayOfWeek.Monday && aeTag == AppointmentDayOfWeek.Montag)
+ {
+ return true;
+ }
+ if (day == DayOfWeek.Tuesday && aeTag == AppointmentDayOfWeek.Dienstag)
+ {
+ return true;
+ }
+ if (day == DayOfWeek.Wednesday && aeTag == AppointmentDayOfWeek.Mittwoch)
+ {
+ return true;
+ }
+ if (day == DayOfWeek.Thursday && aeTag == AppointmentDayOfWeek.Donnerstag)
+ {
+ return true;
+ }
+ if (day == DayOfWeek.Friday && aeTag == AppointmentDayOfWeek.Freitag)
+ {
+ return true;
+ }
+ if (day == DayOfWeek.Saturday && aeTag == AppointmentDayOfWeek.Samstag)
+ {
+ return true;
+ }
+ return false;
+ }
- protected virtual void CalculateEmployeeSalary(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, DateTime start, DateTime ende)
- {
- decimal maxpayment = 0;
+ protected virtual void CalculateEmployeeSalary(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, DateTime start, DateTime ende)
+ {
+ decimal maxpayment = 0;
- Contract cstart = empDetail.Employee.GetValidContractForDate(start);
- Contract cend = empDetail.Employee.GetValidContractForDate(ende);
- if (cstart != null && cstart.HourlyRate.HasValue && cstart.WeeklyTotalHours.HasValue && cend != null)
- {
- if (cstart.Oid.Value == cend.Oid.Value || !cend.EntryDate.HasValue)
- {
- maxpayment = cstart.HourlyRate.Value * cstart.WeeklyTotalHours.Value * 4;
- }
- else
- {
- decimal totalHoursPerDay = cstart.WeeklyTotalHours.Value / 7m;
- DateTime end = cend.EntryDate.Value;
- TimeSpan ts = end.Subtract(start);
- int days = (int)ts.TotalDays;
+ Contract cstart = empDetail.Employee.GetValidContractForDate(start);
+ Contract cend = empDetail.Employee.GetValidContractForDate(ende);
+ if (cstart != null && cstart.HourlyRate.HasValue && cstart.WeeklyTotalHours.HasValue && cend != null)
+ {
+ if (cstart.Oid.Value == cend.Oid.Value || !cend.EntryDate.HasValue)
+ {
+ maxpayment = cstart.HourlyRate.Value * cstart.WeeklyTotalHours.Value * 4;
+ }
+ else
+ {
+ decimal totalHoursPerDay = cstart.WeeklyTotalHours.Value / 7m;
+ DateTime end = cend.EntryDate.Value;
+ TimeSpan ts = end.Subtract(start);
+ int days = (int)ts.TotalDays;
- maxpayment = totalHoursPerDay * cstart.HourlyRate.Value * days;
+ maxpayment = totalHoursPerDay * cstart.HourlyRate.Value * days;
- Contract c2 = empDetail.Employee.GetValidContractForDate(end.AddDays(1));
- if (c2 != null && c2.HourlyRate.HasValue && c2.WeeklyTotalHours.HasValue)
- {
- decimal totalHoursPerDay2 = c2.WeeklyTotalHours.Value / 7m;
- TimeSpan ts2 = ende.Subtract(end);
- int days2 = (int)ts2.TotalDays + 1;
+ Contract c2 = empDetail.Employee.GetValidContractForDate(end.AddDays(1));
+ if (c2 != null && c2.HourlyRate.HasValue && c2.WeeklyTotalHours.HasValue)
+ {
+ decimal totalHoursPerDay2 = c2.WeeklyTotalHours.Value / 7m;
+ TimeSpan ts2 = ende.Subtract(end);
+ int days2 = (int)ts2.TotalDays + 1;
- maxpayment += totalHoursPerDay2 * c2.HourlyRate.Value * days2;
- }
- }
+ maxpayment += totalHoursPerDay2 * c2.HourlyRate.Value * days2;
+ }
+ }
- }
- empDetail.EmployeeSalaryByContract = maxpayment;
+ }
+ empDetail.EmployeeSalaryByContract = maxpayment;
- decimal salary = 0;
+ decimal salary = 0;
- if (empDetail.ServiceRecordsInSelectedTimeSpan != null)
- {
- foreach (var sr in empDetail.ServiceRecordsInSelectedTimeSpan)
- {
- if (sr.ServiceDescription.Name != "Freizeit" || sr.ServiceDescription.ServiceCategory.Name != "Selbstzahler Freizeit")
- {
- Contract con = empDetail.Employee.GetValidContractForDate(sr.Start);
- if (con != null && con.HourlyRate.HasValue)
- {
- salary += con.HourlyRate.Value * (sr.RoundedDuration / 60);
- }
+ if (empDetail.ServiceRecordsInSelectedTimeSpan != null)
+ {
+ foreach (var sr in empDetail.ServiceRecordsInSelectedTimeSpan)
+ {
+ if (sr.ServiceDescription.Name != "Freizeit" || sr.ServiceDescription.ServiceCategory.Name != "Selbstzahler Freizeit")
+ {
+ Contract con = empDetail.Employee.GetValidContractForDate(sr.Start);
+ if (con != null && con.HourlyRate.HasValue)
+ {
+ salary += con.HourlyRate.Value * (sr.RoundedDuration / 60);
+ }
- }
- }
- }
+ }
+ }
+ }
- empDetail.EmployeeSalaryByHours = salary;
- }
+ empDetail.EmployeeSalaryByHours = salary;
+ }
- protected virtual ServiceRecordSummary BerechneStunden(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde)
- {
- var sum = new ServiceRecordSummary();
- sum.RecordsImBerichtszeitraum = new List();
+ protected virtual ServiceRecordSummary BerechneStunden(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde)
+ {
+ var sum = new ServiceRecordSummary();
+ sum.RecordsImBerichtszeitraum = new List();
- empDetail.ServiceRecordsInSelectedTimeSpan = new List();
+ empDetail.ServiceRecordsInSelectedTimeSpan = new List();
- foreach (var item in groupFilteredRecords)
- {
- if (!IsServiceRecordFehlzeit(item))
- {
- if (item.Start.Value >= berichtsAnfang && item.Start.Value < berichtsEnde)
- {
- //String test = String.Format("{0:dd.MM.yyyy HH:mm}, {1:0} Minuten, {2}, {3}", item.Start, item.RoundedDuration, item.ServiceDescription.Name, item.Notice);
+ foreach (var item in groupFilteredRecords)
+ {
+ if (!IsServiceRecordFehlzeit(item))
+ {
+ if (item.Start.Value >= berichtsAnfang && item.Start.Value < berichtsEnde)
+ {
+ //String test = String.Format("{0:dd.MM.yyyy HH:mm}, {1:0} Minuten, {2}, {3}", item.Start, item.RoundedDuration, item.ServiceDescription.Name, item.Notice);
- HandleServiceRecord(empDetail, item);
- if (AddServiceRecordToDuration(item))
- {
- empDetail.ServiceRecordsInSelectedTimeSpan.Add(item);
+ HandleServiceRecord(empDetail, item);
+ if (AddServiceRecordToDuration(item))
+ {
+ empDetail.ServiceRecordsInSelectedTimeSpan.Add(item);
- String test = String.Format("{0:dd.MM. HH:mm} - {1:HH:mm}, {2}", item.Start, item.End, item.RoundedDuration);
+ String test = String.Format("{0:dd.MM. HH:mm} - {1:HH:mm}, {2}", item.Start, item.End, item.RoundedDuration);
+
+ decimal duration = GetDuration(item, empDetail);
- decimal duration = GetDuration(item, empDetail);
-
//System.Diagnostics.Debug.WriteLine("{0:0.##}", duration);
- if (item.ServiceDescription != null &&
- item.ServiceDescription.ServiceCategory != null &&
- item.ServiceDescription.ServiceCategory.IsBillable)
- sum.IstAbrechenbar += duration;
- else
- sum.IstNichtAbrechenbar += duration;
+ if (item.ServiceDescription != null &&
+ item.ServiceDescription.ServiceCategory != null &&
+ item.ServiceDescription.ServiceCategory.IsBillable)
+ sum.IstAbrechenbar += duration;
+ else
+ sum.IstNichtAbrechenbar += duration;
- }
- sum.RecordsImBerichtszeitraum.Add(item);
- }
- }
- }
+ }
+ sum.RecordsImBerichtszeitraum.Add(item);
+ }
+ }
+ }
- return sum;
- }
+ return sum;
+ }
- public virtual bool UseServiceDescriptionPercentage()
- {
- return false;
- }
+ public virtual bool UseServiceDescriptionPercentage()
+ {
+ return false;
+ }
- public virtual decimal BerechneAutoPausen(IList recordsThisMonth)
- {
- return 0;
- }
+ public virtual decimal BerechneAutoPausen(IList recordsThisMonth)
+ {
+ return 0;
+ }
- public virtual decimal BerechnePauseMinuten(IList srList)
- {
- decimal pausenZeit = 0;
+ public virtual decimal BerechnePauseMinuten(IList srList)
+ {
+ decimal pausenZeit = 0;
- List pausen = new List();
- List nichtpausen = new List();
+ List pausen = new List();
+ List nichtpausen = new List();
- foreach (var sr in srList)
- {
- if (sr.ServiceDescription.Name == "Pause")
- {
- pausen.Add(sr);
- }
- else
- {
- nichtpausen.Add(sr);
- }
- }
+ foreach (var sr in srList)
+ {
+ if (sr.ServiceDescription.Name == "Pause")
+ {
+ pausen.Add(sr);
+ }
+ else
+ {
+ nichtpausen.Add(sr);
+ }
+ }
- foreach (var pause in pausen)
- {
- foreach (var arbeitszeit in nichtpausen)
- {
- var pauseSpan = new DateTimeSpan
- {
- StartDateTime = pause.Start.Value,
- EndDateTime = pause.Start.Value.AddMinutes((double) pause.RoundedDuration)
- };
+ foreach (var pause in pausen)
+ {
+ foreach (var arbeitszeit in nichtpausen)
+ {
+ var pauseSpan = new DateTimeSpan
+ {
+ StartDateTime = pause.Start.Value,
+ EndDateTime = pause.Start.Value.AddMinutes((double)pause.RoundedDuration)
+ };
- var arbeitszeitSpan = new DateTimeSpan
- {
- StartDateTime = arbeitszeit.Start.Value,
- EndDateTime = arbeitszeit.Start.Value.AddMinutes((double) arbeitszeit.RoundedDuration)
- };
+ var arbeitszeitSpan = new DateTimeSpan
+ {
+ StartDateTime = arbeitszeit.Start.Value,
+ EndDateTime = arbeitszeit.Start.Value.AddMinutes((double)arbeitszeit.RoundedDuration)
+ };
- if (arbeitszeit.GroupOid.HasValue)
- {
- arbeitszeitSpan.EndDateTime =
- arbeitszeit.Start.Value.AddMinutes((double) (arbeitszeit.GroupRoundedDuration ?? 0));
- }
+ if (arbeitszeit.GroupOid.HasValue)
+ {
+ arbeitszeitSpan.EndDateTime =
+ arbeitszeit.Start.Value.AddMinutes((double)(arbeitszeit.GroupRoundedDuration ?? 0));
+ }
- if (pauseSpan.Overlaps(arbeitszeitSpan))
- {
- DateTime startUeberlappung = pauseSpan.StartDateTime;
- if (arbeitszeitSpan.StartDateTime > startUeberlappung)
- startUeberlappung = arbeitszeitSpan.StartDateTime;
+ if (pauseSpan.Overlaps(arbeitszeitSpan))
+ {
+ DateTime startUeberlappung = pauseSpan.StartDateTime;
+ if (arbeitszeitSpan.StartDateTime > startUeberlappung)
+ startUeberlappung = arbeitszeitSpan.StartDateTime;
- DateTime endUeberlappung = pauseSpan.EndDateTime;
+ DateTime endUeberlappung = pauseSpan.EndDateTime;
- if (arbeitszeitSpan.EndDateTime < endUeberlappung)
- endUeberlappung = arbeitszeitSpan.EndDateTime;
+ if (arbeitszeitSpan.EndDateTime < endUeberlappung)
+ endUeberlappung = arbeitszeitSpan.EndDateTime;
- var overlapping = (decimal) endUeberlappung.Subtract(startUeberlappung).TotalMinutes;
+ var overlapping = (decimal)endUeberlappung.Subtract(startUeberlappung).TotalMinutes;
- pausenZeit += overlapping;
- }
- }
- }
- return pausenZeit;
- }
+ pausenZeit += overlapping;
+ }
+ }
+ }
+ return pausenZeit;
+ }
- public virtual bool SollPauseBerechnen()
- {
- return false;
- }
+ public virtual bool SollPauseBerechnen()
+ {
+ return false;
+ }
public virtual bool BerechneSollNurBisZumAktuellenTag()
{
@@ -1094,142 +1092,142 @@ namespace BeWo.Report.ReportObjects
}
public virtual List FilterEmployeeList(List employeeDetailList)
- {
- List newEmpList = new List();
+ {
+ List newEmpList = new List();
- foreach (var ed in employeeDetailList)
- {
- if (ed.Employee.IsActive == ActivationTypeId.Active)
- {
- newEmpList.Add(ed);
- }
- else if (ed.Employee.IsActive == ActivationTypeId.Archived)
- {
- if (ed.StundenGesamtIst != 0)
- {
- newEmpList.Add(ed);
- }
- }
- }
+ foreach (var ed in employeeDetailList)
+ {
+ if (ed.Employee.IsActive == ActivationTypeId.Active)
+ {
+ newEmpList.Add(ed);
+ }
+ else if (ed.Employee.IsActive == ActivationTypeId.Archived)
+ {
+ if (ed.StundenGesamtIst != 0)
+ {
+ newEmpList.Add(ed);
+ }
+ }
+ }
- return newEmpList;
- }
+ return newEmpList;
+ }
- public virtual void HandleServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, Contract contract)
- {
- //do nothing
- }
+ public virtual void HandleServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, Contract contract)
+ {
+ //do nothing
+ }
- public virtual void CorrectOverlappingTimes(IList serviceRecords)
- {
- List oldRecords = new List();
+ public virtual void CorrectOverlappingTimes(IList serviceRecords)
+ {
+ List oldRecords = new List();
- foreach (var newRecord in serviceRecords)
- {
- if (!CorrectOverlappingTime(newRecord))
- {
- continue;
- }
- if (newRecord.Start.HasValue && newRecord.Start.Value.Second > 0)
- {
- continue;
- }
-
- bool isGroup = false;
- var minuten = newRecord.RoundedDuration;
- if (newRecord.GroupRoundedDuration.HasValue)
- {
- minuten = newRecord.GroupRoundedDuration.Value;
- isGroup = true;
- }
- var newSpan = new DateTimeSpan
- {
- StartDateTime = newRecord.Start.Value,
- EndDateTime = newRecord.Start.Value.AddMinutes((double)minuten)
- };
+ foreach (var newRecord in serviceRecords)
+ {
+ if (!CorrectOverlappingTime(newRecord))
+ {
+ continue;
+ }
+ if (newRecord.Start.HasValue && newRecord.Start.Value.Second > 0)
+ {
+ continue;
+ }
- foreach (var oldRecord in oldRecords)
- {
+ bool isGroup = false;
+ var minuten = newRecord.RoundedDuration;
+ if (newRecord.GroupRoundedDuration.HasValue)
+ {
+ minuten = newRecord.GroupRoundedDuration.Value;
+ isGroup = true;
+ }
+ var newSpan = new DateTimeSpan
+ {
+ StartDateTime = newRecord.Start.Value,
+ EndDateTime = newRecord.Start.Value.AddMinutes((double)minuten)
+ };
+
+ foreach (var oldRecord in oldRecords)
+ {
if (!CorrectOverlappingTime(oldRecord, newRecord))
{
continue;
}
var oldSpan = new DateTimeSpan
- {
- StartDateTime = oldRecord.Start.Value,
- EndDateTime = oldRecord.Start.Value.AddMinutes((double)oldRecord.RoundedDuration)
- };
- if (oldRecord.GroupRoundedDuration.HasValue)
- {
- oldSpan.EndDateTime = oldRecord.Start.Value.AddMinutes((double)oldRecord.GroupRoundedDuration);
- }
+ {
+ StartDateTime = oldRecord.Start.Value,
+ EndDateTime = oldRecord.Start.Value.AddMinutes((double)oldRecord.RoundedDuration)
+ };
+ if (oldRecord.GroupRoundedDuration.HasValue)
+ {
+ oldSpan.EndDateTime = oldRecord.Start.Value.AddMinutes((double)oldRecord.GroupRoundedDuration);
+ }
- if (oldSpan.Overlaps(newSpan))
- {
- DateTime start = newSpan.StartDateTime;
- if (oldSpan.StartDateTime > start)
- start = oldSpan.StartDateTime;
+ if (oldSpan.Overlaps(newSpan))
+ {
+ DateTime start = newSpan.StartDateTime;
+ if (oldSpan.StartDateTime > start)
+ start = oldSpan.StartDateTime;
- DateTime end = newSpan.EndDateTime;
+ DateTime end = newSpan.EndDateTime;
- if (oldSpan.EndDateTime < end)
- end = oldSpan.EndDateTime;
+ if (oldSpan.EndDateTime < end)
+ end = oldSpan.EndDateTime;
- if (newSpan.StartDateTime >= oldSpan.StartDateTime)
- {
- newSpan.StartDateTime = oldSpan.EndDateTime;
- if (newSpan.StartDateTime > newSpan.EndDateTime)
- {
- newSpan.StartDateTime = newSpan.EndDateTime;
- }
- newRecord.Start = newSpan.StartDateTime;
- newRecord.End = newSpan.EndDateTime;
+ if (newSpan.StartDateTime >= oldSpan.StartDateTime)
+ {
+ newSpan.StartDateTime = oldSpan.EndDateTime;
+ if (newSpan.StartDateTime > newSpan.EndDateTime)
+ {
+ newSpan.StartDateTime = newSpan.EndDateTime;
+ }
+ newRecord.Start = newSpan.StartDateTime;
+ newRecord.End = newSpan.EndDateTime;
- if (!isGroup)
- {
- newRecord.RoundedDuration =
- (decimal)newRecord.End.Value.Subtract(newRecord.Start.Value).TotalMinutes;
- }
- else
- {
- newRecord.GroupRoundedDuration = (decimal)newRecord.End.Value.Subtract(newRecord.Start.Value).TotalMinutes;
- }
- }
- else
- {
- oldSpan.StartDateTime = newSpan.EndDateTime;
- if (oldSpan.StartDateTime > oldSpan.EndDateTime)
- {
- oldSpan.StartDateTime = oldSpan.EndDateTime;
- }
- oldRecord.Start = oldSpan.StartDateTime;
- oldRecord.End = oldSpan.EndDateTime;
+ if (!isGroup)
+ {
+ newRecord.RoundedDuration =
+ (decimal)newRecord.End.Value.Subtract(newRecord.Start.Value).TotalMinutes;
+ }
+ else
+ {
+ newRecord.GroupRoundedDuration = (decimal)newRecord.End.Value.Subtract(newRecord.Start.Value).TotalMinutes;
+ }
+ }
+ else
+ {
+ oldSpan.StartDateTime = newSpan.EndDateTime;
+ if (oldSpan.StartDateTime > oldSpan.EndDateTime)
+ {
+ oldSpan.StartDateTime = oldSpan.EndDateTime;
+ }
+ oldRecord.Start = oldSpan.StartDateTime;
+ oldRecord.End = oldSpan.EndDateTime;
- if (!oldRecord.GroupRoundedDuration.HasValue)
- //if (!isGroup)
- {
- oldRecord.RoundedDuration = (decimal)oldRecord.End.Value.Subtract(oldRecord.Start.Value).TotalMinutes;
- }
- else
- {
- oldRecord.GroupRoundedDuration = (decimal)oldRecord.End.Value.Subtract(oldRecord.Start.Value).TotalMinutes;
- }
+ if (!oldRecord.GroupRoundedDuration.HasValue)
+ //if (!isGroup)
+ {
+ oldRecord.RoundedDuration = (decimal)oldRecord.End.Value.Subtract(oldRecord.Start.Value).TotalMinutes;
+ }
+ else
+ {
+ oldRecord.GroupRoundedDuration = (decimal)oldRecord.End.Value.Subtract(oldRecord.Start.Value).TotalMinutes;
+ }
- }
+ }
- }
- }
- oldRecords.Add(newRecord);
+ }
+ }
+ oldRecords.Add(newRecord);
- }
- }
+ }
+ }
- public virtual bool CorrectOverlappingTime(ServiceRecord newRecord)
- {
- return true;
- }
+ public virtual bool CorrectOverlappingTime(ServiceRecord newRecord)
+ {
+ return true;
+ }
public virtual bool CorrectOverlappingTime(ServiceRecord record1, ServiceRecord record2)
{
@@ -1237,92 +1235,92 @@ namespace BeWo.Report.ReportObjects
}
public virtual decimal? BerechneSollProMonat(Employee emp, DateTime start, DateTime ende)
- {
- Contract c = GetContractForDate(emp, start, ende);
-
-
- if (c != null && c.MonthlyTotalHours.HasValue && c.MonthlyTotalHours.Value > 0)
- {
- return c.MonthlyTotalHours.Value;
-
- DateTime monatsAnfang = start;
- DateTime monatsEnde = ende;
-
- if (c.EntryDate.HasValue && c.EntryDate > monatsAnfang)
- {
- monatsAnfang = c.EntryDate.Value;
- }
- if (c.ContractEndDate.HasValue && c.ContractEndDate < monatsEnde)
- {
- monatsEnde = c.ContractEndDate.Value.Date.AddDays(1);
- }
-
- if (monatsAnfang < monatsEnde)
- {
- //if (monatsAnfang.Day == 1 && monatsEnde.Day == 1)
- //{
- return c.MonthlyTotalHours.Value;
- //}
- }
- }
-
- return null;
- }
-
- public virtual decimal? BerechneFlsSollProMonat(Employee emp, DateTime start, DateTime ende)
- {
- Contract c = GetContractForDate(emp, start, ende);
+ {
+ Contract c = GetContractForDate(emp, start, ende);
- if (c != null && c.MonthlyFLS.HasValue && c.MonthlyFLS.Value > 0)
- {
- return c.MonthlyFLS.Value;
+ if (c != null && c.MonthlyTotalHours.HasValue && c.MonthlyTotalHours.Value > 0)
+ {
+ return c.MonthlyTotalHours.Value;
- DateTime monatsAnfang = start;
- DateTime monatsEnde = ende;
+ DateTime monatsAnfang = start;
+ DateTime monatsEnde = ende;
- if (c.EntryDate.HasValue && c.EntryDate > monatsAnfang)
- {
- monatsAnfang = c.EntryDate.Value;
- }
- if (c.ContractEndDate.HasValue && c.ContractEndDate < monatsEnde)
- {
- monatsEnde = c.ContractEndDate.Value.Date.AddDays(1);
- }
+ if (c.EntryDate.HasValue && c.EntryDate > monatsAnfang)
+ {
+ monatsAnfang = c.EntryDate.Value;
+ }
+ if (c.ContractEndDate.HasValue && c.ContractEndDate < monatsEnde)
+ {
+ monatsEnde = c.ContractEndDate.Value.Date.AddDays(1);
+ }
- if (monatsAnfang < monatsEnde)
- {
- //if (monatsAnfang.Day == 1 && monatsEnde.Day == 1)
- //{
- return c.MonthlyFLS.Value;
- //}
- }
- }
+ if (monatsAnfang < monatsEnde)
+ {
+ //if (monatsAnfang.Day == 1 && monatsEnde.Day == 1)
+ //{
+ return c.MonthlyTotalHours.Value;
+ //}
+ }
+ }
- return null;
- }
+ return null;
+ }
- public virtual void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, ServiceRecord item)
- {
- //do nothing
- }
+ public virtual decimal? BerechneFlsSollProMonat(Employee emp, DateTime start, DateTime ende)
+ {
+ Contract c = GetContractForDate(emp, start, ende);
- public virtual bool ShouldCreateDayDetails()
+
+ if (c != null && c.MonthlyFLS.HasValue && c.MonthlyFLS.Value > 0)
+ {
+ return c.MonthlyFLS.Value;
+
+ DateTime monatsAnfang = start;
+ DateTime monatsEnde = ende;
+
+ if (c.EntryDate.HasValue && c.EntryDate > monatsAnfang)
+ {
+ monatsAnfang = c.EntryDate.Value;
+ }
+ if (c.ContractEndDate.HasValue && c.ContractEndDate < monatsEnde)
+ {
+ monatsEnde = c.ContractEndDate.Value.Date.AddDays(1);
+ }
+
+ if (monatsAnfang < monatsEnde)
+ {
+ //if (monatsAnfang.Day == 1 && monatsEnde.Day == 1)
+ //{
+ return c.MonthlyFLS.Value;
+ //}
+ }
+ }
+
+ return null;
+ }
+
+ public virtual void HandleServiceRecord(MitarbeiterstundenkontoRO.EmployeeDetail emp, ServiceRecord item)
+ {
+ //do nothing
+ }
+
+ public virtual bool ShouldCreateDayDetails()
{
return false;
}
- public virtual bool ShouldCreateDayDetailsForEachServiceRecord()
- {
- return false;
- }
-
- public virtual IList CreateDayDetails(DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList recordsAll)
+ public virtual bool ShouldCreateDayDetailsForEachServiceRecord()
{
- if (ShouldCreateDayDetailsForEachServiceRecord())
- {
- return CreateDayDetailsForEachServiceRecord(berichtStart, berichtEnde, ed, recordsAll);
- }
+ return false;
+ }
+
+ public virtual IList CreateDayDetails(DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList recordsAll)
+ {
+ if (ShouldCreateDayDetailsForEachServiceRecord())
+ {
+ return CreateDayDetailsForEachServiceRecord(berichtStart, berichtEnde, ed, recordsAll);
+ }
Dictionary dayToDetail = new Dictionary();
@@ -1340,9 +1338,9 @@ namespace BeWo.Report.ReportObjects
if (!IsServiceRecordFehlzeit(sr) && AddServiceRecordToDuration(sr))
{
- decimal duration = GetDuration(sr, ed);
-
-
+ decimal duration = GetDuration(sr, ed);
+
+
dd.MinutesTotal += duration;
if (dd.ServiceRecords == null)
dd.ServiceRecords = new List();
@@ -1357,10 +1355,10 @@ namespace BeWo.Report.ReportObjects
foreach (var ddKeyValue in dayToDetail)
{
var dd = ddKeyValue.Value;
- if (dd.ZusammenhaengendeZeitraeume == null)
- {
- dd.ZusammenhaengendeZeitraeume = new List();
- }
+ if (dd.ZusammenhaengendeZeitraeume == null)
+ {
+ dd.ZusammenhaengendeZeitraeume = new List();
+ }
if (dd.ServiceRecords != null)
{
@@ -1371,47 +1369,47 @@ namespace BeWo.Report.ReportObjects
foreach (var sr in orderedList)
{
- if (sr.Start.HasValue && sr.Start.Value.Hour == 0 && sr.Start.Value.Second > 0)
- {
- continue;
- }
- decimal duration = GetDuration(sr, ed);
-
+ if (sr.Start.HasValue && sr.Start.Value.Hour == 0 && sr.Start.Value.Second > 0)
+ {
+ continue;
+ }
+ decimal duration = GetDuration(sr, ed);
+
DateTime dtEnd = sr.Start.Value.AddMinutes((double)duration);
if (sr.Start > lastEnd)
{
gapCount++;
-
+
}
if (dtEnd > lastEnd)
{
lastEnd = dtEnd;
}
- DateTimeSpan currentSpan = null;
- if (gapCount + 1 > dd.ZusammenhaengendeZeitraeume.Count)
- {
- currentSpan = new DateTimeSpan();
- currentSpan.StartDateTime = DateTime.MaxValue;
- currentSpan.EndDateTime = DateTime.MinValue;
- dd.ZusammenhaengendeZeitraeume.Add(currentSpan);
- }
- else
- {
- currentSpan = dd.ZusammenhaengendeZeitraeume[gapCount];
- }
+ DateTimeSpan currentSpan = null;
+ if (gapCount + 1 > dd.ZusammenhaengendeZeitraeume.Count)
+ {
+ currentSpan = new DateTimeSpan();
+ currentSpan.StartDateTime = DateTime.MaxValue;
+ currentSpan.EndDateTime = DateTime.MinValue;
+ dd.ZusammenhaengendeZeitraeume.Add(currentSpan);
+ }
+ else
+ {
+ currentSpan = dd.ZusammenhaengendeZeitraeume[gapCount];
+ }
- if (sr.Start < currentSpan.StartDateTime)
- {
- currentSpan.StartDateTime = sr.Start.Value;
- }
- if (dtEnd > currentSpan.EndDateTime)
- {
- currentSpan.EndDateTime = dtEnd;
- }
+ if (sr.Start < currentSpan.StartDateTime)
+ {
+ currentSpan.StartDateTime = sr.Start.Value;
+ }
+ if (dtEnd > currentSpan.EndDateTime)
+ {
+ currentSpan.EndDateTime = dtEnd;
+ }
- if (gapCount == 0)
+ if (gapCount == 0)
{
if (!dd.StartDateTime1.HasValue || sr.Start < dd.StartDateTime1)
{
@@ -1444,7 +1442,7 @@ namespace BeWo.Report.ReportObjects
dd.EndDateTime3 = dtEnd;
}
}
- else
+ else
{
if (!dd.StartDateTime4.HasValue || sr.Start < dd.StartDateTime4)
{
@@ -1459,64 +1457,64 @@ namespace BeWo.Report.ReportObjects
}
}
-
+
return dayToDetail.Values.OrderBy(dd => dd.Date).ToList();
}
- public virtual IList CreateDayDetailsForEachServiceRecord(DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList recordsAll)
- {
- var details = new List();
-
- foreach (var sr in recordsAll)
- {
- if (sr.Start.HasValue && sr.Start >= berichtStart && sr.Start < berichtEnde && sr.End.HasValue)
- {
- if (sr.Start.Value.Day == 8)
- {
- int test = 0;
- }
- if (!IsServiceRecordFehlzeit(sr) && AddServiceRecordToDuration(sr))
- {
- var dd = CreateDayDetail(sr.Start.Value, ed);
- details.Add(dd);
+ public virtual IList CreateDayDetailsForEachServiceRecord(DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList recordsAll)
+ {
+ var details = new List();
- decimal duration = GetDuration(sr, ed);
+ foreach (var sr in recordsAll)
+ {
+ if (sr.Start.HasValue && sr.Start >= berichtStart && sr.Start < berichtEnde && sr.End.HasValue)
+ {
+ if (sr.Start.Value.Day == 8)
+ {
+ int test = 0;
+ }
+ if (!IsServiceRecordFehlzeit(sr) && AddServiceRecordToDuration(sr))
+ {
+ var dd = CreateDayDetail(sr.Start.Value, ed);
+ details.Add(dd);
+
+ decimal duration = GetDuration(sr, ed);
- dd.MinutesTotal += duration;
- if (dd.ServiceRecords == null)
- dd.ServiceRecords = new List();
- dd.ServiceRecords.Add(sr);
+ dd.MinutesTotal += duration;
+ if (dd.ServiceRecords == null)
+ dd.ServiceRecords = new List();
+ dd.ServiceRecords.Add(sr);
- dd.Date = sr.Start.Value;
+ dd.Date = sr.Start.Value;
- if (sr.Start.Value.Second == 0)
- {
- DateTime dtEnd = sr.Start.Value.AddMinutes((double)duration);
- dd.StartDateTime1 = sr.Start;
+ if (sr.Start.Value.Second == 0)
+ {
+ DateTime dtEnd = sr.Start.Value.AddMinutes((double)duration);
+ dd.StartDateTime1 = sr.Start;
- dd.EndDateTime1 = dtEnd;
+ dd.EndDateTime1 = dtEnd;
- }
-
- CalculateSpecialHours(dd, sr, duration);
-
- }
- }
- }
-
- return details.OrderBy(dd => dd.Date).ToList();
- }
+ }
- protected virtual decimal GetDuration(ServiceRecord sr, MitarbeiterstundenkontoRO.EmployeeDetail ed)
- {
-
- foreach (var at in ed.Employee.AbsenceTimes)
- {
+ CalculateSpecialHours(dd, sr, duration);
+
+ }
+ }
+ }
+
+ return details.OrderBy(dd => dd.Date).ToList();
+ }
+
+ protected virtual decimal GetDuration(ServiceRecord sr, MitarbeiterstundenkontoRO.EmployeeDetail ed)
+ {
+
+ foreach (var at in ed.Employee.AbsenceTimes)
+ {
if (!StundenBeiAbwesenheitBerechnen(at))
- {
+ {
DateTime start = DateTime.MinValue;
DateTime end = DateTime.MaxValue;
@@ -1538,9 +1536,9 @@ namespace BeWo.Report.ReportObjects
return 0;
}
}
-
- }
-
+
+ }
+
decimal duration = 0;
if (sr.GroupRoundedDuration.HasValue)
@@ -1587,10 +1585,10 @@ namespace BeWo.Report.ReportObjects
return duration;
- }
+ }
//Mit "SpecialHours" sind Sonderzeiten wie Nachtzeiten oder Arbeitszeiten an Sonn und Feiertags gemeint. Da diese gesondert abgerechnet werden können.
- public virtual void CalculateSpecialHours(MitarbeiterstundenkontoRO.DayDetail dd, ServiceRecord sr, decimal duration)
+ public virtual void CalculateSpecialHours(MitarbeiterstundenkontoRO.DayDetail dd, ServiceRecord sr, decimal duration)
{
if (sr.Start.Value.DayOfWeek == DayOfWeek.Sunday)
{
@@ -1602,102 +1600,102 @@ namespace BeWo.Report.ReportObjects
}
if (sr.Start.Value.Second == 0 && dd.NightEnd.HasValue && dd.NightStart.HasValue)
{
- var minuten = CheckNachtzeiten(sr.Start.Value, dd.NightStart.Value, dd.NightEnd.Value, (double)duration);
+ var minuten = CheckNachtzeiten(sr.Start.Value, dd.NightStart.Value, dd.NightEnd.Value, (double)duration);
- if (minuten > 0)
- {
- dd.SpecialHours += (decimal)(Math.Round(minuten, 0) / 60);
- }
+ if (minuten > 0)
+ {
+ dd.SpecialHours += (decimal)(Math.Round(minuten, 0) / 60);
+ }
- //DateTime dtEnd = sr.Start.Value.AddMinutes((double)duration);
+ //DateTime dtEnd = sr.Start.Value.AddMinutes((double)duration);
- //if (dtEnd.Hour >= dd.NightStart.Value)
- //{
- // DateTime dtStart = dtEnd.Date.AddHours(dd.NightStart.Value);
- // if (sr.Start.Value > dtStart)
- // dtStart = sr.Start.Value;
+ //if (dtEnd.Hour >= dd.NightStart.Value)
+ //{
+ // DateTime dtStart = dtEnd.Date.AddHours(dd.NightStart.Value);
+ // if (sr.Start.Value > dtStart)
+ // dtStart = sr.Start.Value;
- // TimeSpan ts = dtEnd.Subtract(dtStart);
- // dd.SpecialHours += (decimal)ts.TotalMinutes / 60;
- //}
+ // TimeSpan ts = dtEnd.Subtract(dtStart);
+ // dd.SpecialHours += (decimal)ts.TotalMinutes / 60;
+ //}
- //if (sr.Start.Value.Hour < dd.NightEnd)
- //{
- // DateTime dtEnd2 = sr.Start.Value.Date.AddHours(dd.NightEnd.Value);
- // if (dtEnd < dtEnd2)
- // dtEnd2 = dtEnd;
- // TimeSpan ts = dtEnd2.Subtract(sr.Start.Value);
- // dd.SpecialHours += (decimal)(Math.Round(ts.TotalMinutes, 0) / 60);
- //}
- }
+ //if (sr.Start.Value.Hour < dd.NightEnd)
+ //{
+ // DateTime dtEnd2 = sr.Start.Value.Date.AddHours(dd.NightEnd.Value);
+ // if (dtEnd < dtEnd2)
+ // dtEnd2 = dtEnd;
+ // TimeSpan ts = dtEnd2.Subtract(sr.Start.Value);
+ // dd.SpecialHours += (decimal)(Math.Round(ts.TotalMinutes, 0) / 60);
+ //}
+ }
}
- private double CheckNachtzeiten(DateTime start, int nightStart, int nightEnd, double minuten)
- {
- DateTime nightStartDt = start.Date.AddHours(nightStart);
- DateTime nightEndDt = start.Date.AddDays(1).AddHours(nightEnd);
+ private double CheckNachtzeiten(DateTime start, int nightStart, int nightEnd, double minuten)
+ {
+ DateTime nightStartDt = start.Date.AddHours(nightStart);
+ DateTime nightEndDt = start.Date.AddDays(1).AddHours(nightEnd);
- DateTime dtEnd = start.AddMinutes(minuten);
+ DateTime dtEnd = start.AddMinutes(minuten);
- double minutes = GetOverlappingMinutes(start, dtEnd, nightStartDt, nightEndDt);
- minutes += GetOverlappingMinutes(start, dtEnd, nightStartDt.AddDays(-1), nightEndDt.AddDays(-1));
- minutes += GetOverlappingMinutes(start, dtEnd, nightStartDt.AddDays(1), nightEndDt.AddDays(1));
+ double minutes = GetOverlappingMinutes(start, dtEnd, nightStartDt, nightEndDt);
+ minutes += GetOverlappingMinutes(start, dtEnd, nightStartDt.AddDays(-1), nightEndDt.AddDays(-1));
+ minutes += GetOverlappingMinutes(start, dtEnd, nightStartDt.AddDays(1), nightEndDt.AddDays(1));
- return minutes;
-
- }
+ return minutes;
- private double GetOverlappingMinutes(DateTime start, DateTime end, DateTime nightStart, DateTime nightEnd)
- {
- if (end > nightStart && start < nightEnd)
- {
- DateTime dtStart = start;
+ }
- if (dtStart < nightStart)
- dtStart = nightStart;
+ private double GetOverlappingMinutes(DateTime start, DateTime end, DateTime nightStart, DateTime nightEnd)
+ {
+ if (end > nightStart && start < nightEnd)
+ {
+ DateTime dtStart = start;
- DateTime dtEnd = end;
+ if (dtStart < nightStart)
+ dtStart = nightStart;
- if (dtEnd > nightEnd)
- dtEnd = nightEnd;
- TimeSpan ts = dtEnd.Subtract(dtStart);
+ DateTime dtEnd = end;
- return ts.TotalMinutes;
+ if (dtEnd > nightEnd)
+ dtEnd = nightEnd;
+ TimeSpan ts = dtEnd.Subtract(dtStart);
- }
+ return ts.TotalMinutes;
- return 0;
- }
+ }
- public virtual MitarbeiterstundenkontoRO.DayDetail CreateDayDetail(DateTime date, MitarbeiterstundenkontoRO.EmployeeDetail ed)
+ return 0;
+ }
+
+ public virtual MitarbeiterstundenkontoRO.DayDetail CreateDayDetail(DateTime date, MitarbeiterstundenkontoRO.EmployeeDetail ed)
{
MitarbeiterstundenkontoRO.DayDetail dd = new MitarbeiterstundenkontoRO.DayDetail();
- dd.ZusammenhaengendeZeitraeume = new List();
-
+ dd.ZusammenhaengendeZeitraeume = new List();
+
dd.Date = date.Date;
dd.NightStart = 20;
dd.NightEnd = 6;
dd.MaxHoursUntilBreak = 6;
dd.BreakMinutes = 30;
- if (date.Year == 2023 && date.Month == 9 && date.Day == 15)
+ if (date.Year == 2022 && date.Month == 12 && date.Day == 27)
{
int test = 0;
}
CalculateAbsenceTimesForDay(dd, ed);
-
+
dd.Feiertag = vacationService.GetFeiertag(date);
BerechneSollStundenFuerDayDetail(ed, dd);
if (BerechneFeiertageAlsArbeitszeit())
- {
+ {
if (dd.Feiertag != null)
- {
+ {
dd.MinutesTotal = dd.SollStunden * 60;
- }
- }
-
+ }
+ }
+
return dd;
}
@@ -1719,16 +1717,16 @@ namespace BeWo.Report.ReportObjects
}
public virtual decimal BerechneSollStundenFuerTag(MitarbeiterstundenkontoRO.EmployeeDetail ed, DateTime date)
- {
+ {
decimal sollDiesenTag = 0;
var faktor = GetFeiertagsFaktor(date);
if (BerechneFeiertageAlsArbeitszeit())
- {
+ {
if (faktor == 1)
- {
+ {
faktor = 0;
- }
- }
+ }
+ }
if (faktor < 1)
{
//Berechne Soll, entweder aus Vertrag oder Arbeitszeiten
@@ -1755,11 +1753,11 @@ namespace BeWo.Report.ReportObjects
wth = c.WeeklyTotalHours.Value;
}
else if (c.MonthlyTotalHours.HasValue && ed.ArbeitstageImBerichtszeitraum > 0)
- {
+ {
wth = c.MonthlyTotalHours.Value / ed.ArbeitstageImBerichtszeitraum;
wth *= apw;
- }
-
+ }
+
sollDiesenTag = wth / apw;
@@ -1773,9 +1771,9 @@ namespace BeWo.Report.ReportObjects
istWochenende = false;
}
if (istWochenende)
- {
+ {
sollDiesenTag = 0;
- }
+ }
}
if (faktor != 0)
{
@@ -1788,45 +1786,45 @@ namespace BeWo.Report.ReportObjects
}
- public virtual void CalculateAbsenceTimesForDay(MitarbeiterstundenkontoRO.DayDetail dd, MitarbeiterstundenkontoRO.EmployeeDetail ed)
+ public virtual void CalculateAbsenceTimesForDay(MitarbeiterstundenkontoRO.DayDetail dd, MitarbeiterstundenkontoRO.EmployeeDetail ed)
{
- var absenceTimes = ed.Employee.AbsenceTimes;
-
+ var absenceTimes = ed.Employee.AbsenceTimes;
+
if (absenceTimes != null)
{
foreach (var absenceTime in absenceTimes)
{
-
+
//if (IsUrlaubAbsenceTime(absenceTime) || IsKrankheitAbsenceTime(absenceTime))
//{
- DateTimeSpan span = new DateTimeSpan();
+ DateTimeSpan span = new DateTimeSpan();
- span.StartDate = dd.Date;
+ span.StartDate = dd.Date;
- if (absenceTime.Start.HasValue && absenceTime.Start.Value > span.StartDate)
+ if (absenceTime.Start.HasValue && absenceTime.Start.Value > span.StartDate)
+ {
+ span.StartDate = absenceTime.Start.Value;
+ }
+
+ if (absenceTime.End.HasValue && absenceTime.End.Value.Date == span.StartDate.Date &&
+ absenceTime.End.Value.Hour > 0)
+ {
+ span.EndDate = absenceTime.End.Value;
+ }
+ else
+ {
+ span.EndDate = dd.Date.AddDays(1);
+ if (absenceTime.End.HasValue && absenceTime.End.Value.Date.AddDays(1) < span.EndDate)
{
- span.StartDate = absenceTime.Start.Value;
+ span.EndDate = absenceTime.End.Value.Date.AddDays(1);
}
-
- if (absenceTime.End.HasValue && absenceTime.End.Value.Date == span.StartDate.Date &&
- absenceTime.End.Value.Hour > 0)
- {
- span.EndDate = absenceTime.End.Value;
- }
- else
- {
- span.EndDate = dd.Date.AddDays(1);
- if (absenceTime.End.HasValue && absenceTime.End.Value.Date.AddDays(1) < span.EndDate)
- {
- span.EndDate = absenceTime.End.Value.Date.AddDays(1);
- }
- }
+ }
if (span.EndDate > dd.Date && span.StartDate < dd.Date.AddDays(1))
{
DateTime day = span.StartDate;
var faktor = GetFeiertagsFaktor(day);
-
+
if (faktor < 1 && day.DayOfWeek != DayOfWeek.Saturday && day.DayOfWeek != DayOfWeek.Sunday)
{
@@ -1848,12 +1846,12 @@ namespace BeWo.Report.ReportObjects
{
var ssa = GetSollStundenForAbsenceTime(ed, absenceTime, dd.Date);
if (ssa.HasValue)
- {
+ {
sollDiesenTag = ssa.Value;
checkMaxWochenSoll = false;
}
- else
+ else
{
var c = ed.Employee.GetValidContractForDate(dd.Date);
if (c != null)
@@ -1896,7 +1894,7 @@ namespace BeWo.Report.ReportObjects
{
sollDiesenTag = 0;
}
-
+
faktor = 1; // Keine halben Feiertag berücksichtigen, wenn die Abwesenheit in Stunden angegeben wurde
}
@@ -1920,8 +1918,9 @@ namespace BeWo.Report.ReportObjects
if (day.Date >= week.StartDate && day.Date <= week.EndDate && checkMaxWochenSoll)
{
+
var rest = ed.AbsenceTimeDays.RestStundenProWocheDict[week];
- if (rest < abwesenheitsDauer )
+ if (rest < abwesenheitsDauer)
{
abwesenheitsDauer = rest;
}
@@ -1936,7 +1935,7 @@ namespace BeWo.Report.ReportObjects
}
}
-
+
if (!AbsenceTimeAufIstStundenAddieren(absenceTime) && IsUrlaubAbsenceTime(absenceTime))
{ // Vermutlich diese Methode in CustomMitarbeiterStundenKontoBerechnung überschreiben und hier Prüfung machen, ob absenceReason ohne Fortzahlung ist
//und wenn ja, HoursSick oder Soll oder so für den Tag auf 0 setzen
@@ -1948,7 +1947,7 @@ namespace BeWo.Report.ReportObjects
dd.HoursSick = abwesenheitsDauer;
}
else
- {
+ {
if (istGanztaegig)
{
//Bei ganztägigen Abwesenheiten darf nicht noch zusätzlich gearbeitet werden
@@ -1966,23 +1965,23 @@ namespace BeWo.Report.ReportObjects
}
}
//}
-
+
//}
}
}
-
+
}
- public virtual bool IstAnrechenbareAbsenceTime(AbsenceTime item)
- {
- return true;
- }
+ public virtual bool IstAnrechenbareAbsenceTime(AbsenceTime item)
+ {
+ return true;
+ }
- public virtual bool IsKrankheitAbsenceTime(AbsenceTime absenceTime)
+ public virtual bool IsKrankheitAbsenceTime(AbsenceTime absenceTime)
{
return !String.IsNullOrEmpty(absenceTime.AbsenceReason.Description) &&
- (absenceTime.AbsenceReason.Description.ToLower().IndexOf("arbeitsunfähig") >= 0
- || absenceTime.AbsenceReason.Description.ToLower().IndexOf("krank") >= 0 || absenceTime.AbsenceReason.Description.ToLower() == "au");
+ (absenceTime.AbsenceReason.Description.ToLower().IndexOf("arbeitsunfähig") >= 0
+ || absenceTime.AbsenceReason.Description.ToLower().IndexOf("krank") >= 0 || absenceTime.AbsenceReason.Description.ToLower() == "au");
}
public virtual bool IsUrlaubAbsenceTime(AbsenceTime absenceTime)
@@ -1993,7 +1992,7 @@ namespace BeWo.Report.ReportObjects
public virtual decimal? GetSollStundenForAbsenceTime(MitarbeiterstundenkontoRO.EmployeeDetail ed, AbsenceTime at, DateTime datum)
{
- return null;
+ return null;
}
@@ -2013,20 +2012,20 @@ namespace BeWo.Report.ReportObjects
return 1;
}
- public virtual MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, out decimal alteExtraUeberstunden)
+ public virtual MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList records, DateTime monat, out decimal? ueberstunden, out decimal alteExtraUeberstunden)
{
- MitarbeiterstundenkontoRO.EmployeeDetail edTotal = new MitarbeiterstundenkontoRO.EmployeeDetail();
+ MitarbeiterstundenkontoRO.EmployeeDetail edTotal = new MitarbeiterstundenkontoRO.EmployeeDetail();
- ueberstunden = null;
+ ueberstunden = null;
alteExtraUeberstunden = 0;
- var emp = edOrig.Employee;
+ var emp = edOrig.Employee;
Contract c = emp.FirstContract;
-
+
if (c != null)
{
-
+
Dictionary> srDict = CreateServiceRecordDictByDate(records);
DateTime start = c.EntryDate.HasValue ? c.EntryDate.Value : new DateTime(2011, 1, 1);
@@ -2035,14 +2034,14 @@ namespace BeWo.Report.ReportObjects
DateTime contractEnd = c.ContractEndDate.HasValue ? c.ContractEndDate.Value : DateTime.MaxValue;
decimal bu = 0;
decimal weeklyTotalHours = this.maxWochenstunden;
- int anzWochentage = ANZ_WOCHENTAGE;
+ int anzWochentage = ANZ_WOCHENTAGE;
- //if (c.WeeklyDays.HasValue && c.WeeklyDays.Value > 0)
- //{
- // anzWochentage = c.WeeklyDays.Value;
- //}
+ //if (c.WeeklyDays.HasValue && c.WeeklyDays.Value > 0)
+ //{
+ // anzWochentage = c.WeeklyDays.Value;
+ //}
- if (c.WeeklyTotalHours.HasValue)
+ if (c.WeeklyTotalHours.HasValue)
{
weeklyTotalHours = c.WeeklyTotalHours.Value;
bu = c.WeeklyTotalHours.Value / maxWochenstunden;
@@ -2057,7 +2056,7 @@ namespace BeWo.Report.ReportObjects
DateTime ende = new DateTime(start.Year, start.Month, 1).AddMonths(1);
if (contractEnd < DateTime.MaxValue && contractEnd.AddDays(1) < ende)
ende = contractEnd.AddDays(1);
-
+
IList recordsThisMonth = new List();
String key = String.Format("{0:yyyyMM}", start);
@@ -2072,66 +2071,66 @@ namespace BeWo.Report.ReportObjects
decimal duration = GetDuration(item, edOrig);
-
+
minutenMonat += duration;
if (item.ServiceDescription != null &&
item.ServiceDescription.ServiceCategory != null &&
item.ServiceDescription.ServiceCategory.IsBillable)
flsIst += duration;
- else
- mittelbarIst += duration;
-
+ else
+ mittelbarIst += duration;
+
}
- recordsThisMonth.Add(item);
- }
+ recordsThisMonth.Add(item);
+ }
}
}
-
-
- decimal arbeitstage = GetArbeitstageImBereich(start, ende, emp);
- var arbeitstageProWoche = anzWochentage;
- if (c != null && c.WeeklyDays.HasValue && c.WeeklyDays.Value > 0)
- {
- arbeitstageProWoche = c.WeeklyDays.Value;
- }
- //if (anzWochentage != 5)
- //{
- // arbeitstage *= anzWochentage / 5m;
- //}
- var soll = GetSollNachArbeitszeiten(emp, start, ende);
- if (!soll.HasValue)
- {
- var stundenSollProMonat = BerechneSollProMonat(emp, start, ende);
- soll = stundenSollProMonat;
- }
+ decimal arbeitstage = GetArbeitstageImBereich(start, ende, emp);
+ var arbeitstageProWoche = anzWochentage;
+ if (c != null && c.WeeklyDays.HasValue && c.WeeklyDays.Value > 0)
+ {
+ arbeitstageProWoche = c.WeeklyDays.Value;
+ }
- if (!soll.HasValue)
- {
+ //if (anzWochentage != 5)
+ //{
+ // arbeitstage *= anzWochentage / 5m;
+ //}
+ var soll = GetSollNachArbeitszeiten(emp, start, ende);
- if (!soll.HasValue)
- {
- decimal maxSollMonat = arbeitstage * (maxWochenstunden / arbeitstageProWoche);
- if (arbeitstageProWoche <= 5)
- {
- maxSollMonat = arbeitstage * (maxWochenstunden / 5);
- }
+ if (!soll.HasValue)
+ {
+ var stundenSollProMonat = BerechneSollProMonat(emp, start, ende);
+ soll = stundenSollProMonat;
+ }
- soll = maxSollMonat * bu;
- }
- }
+ if (!soll.HasValue)
+ {
- decimal sollMitarbeiter = soll ?? 0;
+ if (!soll.HasValue)
+ {
+ decimal maxSollMonat = arbeitstage * (maxWochenstunden / arbeitstageProWoche);
+ if (arbeitstageProWoche <= 5)
+ {
+ maxSollMonat = arbeitstage * (maxWochenstunden / 5);
+ }
+
+ soll = maxSollMonat * bu;
+ }
+ }
+
+ decimal sollMitarbeiter = soll ?? 0;
MitarbeiterstundenkontoRO.EmployeeDetail ed = new MitarbeiterstundenkontoRO.EmployeeDetail();
ed.SollProTag = weeklyTotalHours / arbeitstageProWoche;
ed.ArbeitstageProWoche = arbeitstageProWoche;
ed.ArbeitstageImBerichtszeitraum = arbeitstage;
ed.SollProWoche = BerechneSollProWoche(c, ed);
-
+
ed.Employee = emp;
AktuellBearbeitetesEmployeeDetail = ed;
@@ -2143,83 +2142,83 @@ namespace BeWo.Report.ReportObjects
if (fehlzeit.HasValue)
{
sollMitarbeiter -= fehlzeit.Value;
-
+
}
-
- ed.StundenSollMax = sollMitarbeiter;
+
+ ed.StundenSollMax = sollMitarbeiter;
- if (ath.TageGesamt.HasValue)
- {
- var minusStunden = BerechneStundenDurchAbwesenheiten(ath, start, ende, c, ed);
- sollMitarbeiter -= minusStunden;
- if (sollMitarbeiter < 0 && !StundenDurchAbwesenheitenDuerfenNegativSein())
- {
- sollMitarbeiter = 0;
- }
- //if (stundenSollProMonat.HasValue)
- //{
- // decimal stundenProTag = stundenSollProMonat.Value;
- // if (arbeitstage != 0)
- // {
- // stundenProTag = stundenSollProMonat.Value/arbeitstage;
- // }
- // sollMitarbeiter -= (ath.TageGesamt.Value * stundenProTag);
- //}
- //else
- //{
- // decimal sollProWoche = maxWochenstunden*bu;
+ if (ath.TageGesamt.HasValue)
+ {
+ var minusStunden = BerechneStundenDurchAbwesenheiten(ath, start, ende, c, ed);
+ sollMitarbeiter -= minusStunden;
+ if (sollMitarbeiter < 0 && !StundenDurchAbwesenheitenDuerfenNegativSein())
+ {
+ sollMitarbeiter = 0;
+ }
+ //if (stundenSollProMonat.HasValue)
+ //{
+ // decimal stundenProTag = stundenSollProMonat.Value;
+ // if (arbeitstage != 0)
+ // {
+ // stundenProTag = stundenSollProMonat.Value/arbeitstage;
+ // }
+ // sollMitarbeiter -= (ath.TageGesamt.Value * stundenProTag);
+ //}
+ //else
+ //{
+ // decimal sollProWoche = maxWochenstunden*bu;
-
- // var minusStunden = BerechneStundenDurchAbwesenheiten(ath, start, ende, c, sollProWoche);
-
-
- //}
- }
- var ath2 = GetAbwesenheitenDurchServiceRecords(ed, c, records, start, ende);
+ // var minusStunden = BerechneStundenDurchAbwesenheiten(ath, start, ende, c, sollProWoche);
- if (ath2 != null)
- {
- var stunden = ath2.StundenKrankheit + ath2.StundenUrlaub + ath2.StundenSonstiges;
+ //}
+ }
- sollMitarbeiter -= stunden;
+ var ath2 = GetAbwesenheitenDurchServiceRecords(ed, c, records, start, ende);
- if (sollMitarbeiter < 0 && !StundenDurchAbwesenheitenDuerfenNegativSein())
- {
- sollMitarbeiter = 0;
- }
+ if (ath2 != null)
+ {
-
- }
+ var stunden = ath2.StundenKrankheit + ath2.StundenUrlaub + ath2.StundenSonstiges;
+
+ sollMitarbeiter -= stunden;
+
+ if (sollMitarbeiter < 0 && !StundenDurchAbwesenheitenDuerfenNegativSein())
+ {
+ sollMitarbeiter = 0;
+ }
+
+
+ }
var azDurchFeiertage = BerechneGesamtArbeitszeitDurchFeiertage(ed, start, ende);
sollMitarbeiter -= azDurchFeiertage;
- decimal stundenMonat = minutenMonat/60m;
- stundenMonat = ((flsIst*AddRateFactorToIst()) + mittelbarIst)/60m;
-
+ decimal stundenMonat = minutenMonat / 60m;
+ stundenMonat = ((flsIst * AddRateFactorToIst()) + mittelbarIst) / 60m;
+
if (!ueberstunden.HasValue)
ueberstunden = 0;
ueberstunden += stundenMonat - sollMitarbeiter;
- if (SollPauseBerechnen())
- {
- var pause1 = BerechnePauseMinuten(recordsThisMonth);
- var pause2 = BerechneAutoPausen(recordsThisMonth);
+ if (SollPauseBerechnen())
+ {
+ var pause1 = BerechnePauseMinuten(recordsThisMonth);
+ var pause2 = BerechneAutoPausen(recordsThisMonth);
- ueberstunden -= pause1/60;
- ueberstunden -= pause2/60;
- }
+ ueberstunden -= pause1 / 60;
+ ueberstunden -= pause2 / 60;
+ }
- decimal extraUeberstunden = 0;
+ decimal extraUeberstunden = 0;
BerechneExtraUeberstunden(emp, start, ende, out extraUeberstunden);
ueberstunden += extraUeberstunden;
alteExtraUeberstunden += extraUeberstunden;
-
+
if (ShouldCreateDayDetails())
{
var days = CreateDayDetails(start, ende, ed, records);
@@ -2227,23 +2226,23 @@ namespace BeWo.Report.ReportObjects
ueberstunden += ah;
}
- ed.StundenSollOhneUrlaubKrankheit = sollMitarbeiter;
- ed.FlsIst = flsIst / 60;
- ed.MittelbarIst = mittelbarIst / 60;
- ed.StundenGesamtIst = stundenMonat;
- ed.Ueberstunden = ueberstunden;
- ed.UeberstundenVormonat = edTotal.Ueberstunden;
+ ed.StundenSollOhneUrlaubKrankheit = sollMitarbeiter;
+ ed.FlsIst = flsIst / 60;
+ ed.MittelbarIst = mittelbarIst / 60;
+ ed.StundenGesamtIst = stundenMonat;
+ ed.Ueberstunden = ueberstunden;
+ ed.UeberstundenVormonat = edTotal.Ueberstunden;
- ueberstunden = BerechneUeberstunden(ed, ueberstunden, c, start, ende);
+ ueberstunden = BerechneUeberstunden(ed, ueberstunden, c, start, ende);
- edTotal.StundenSollOhneUrlaubKrankheit += sollMitarbeiter;
- edTotal.StundenSollMax += soll ?? 0;
- edTotal.FlsIst += flsIst / 60;
- edTotal.MittelbarIst += mittelbarIst / 60;
- edTotal.StundenGesamtIst += stundenMonat;
- edTotal.Ueberstunden = ueberstunden;
+ edTotal.StundenSollOhneUrlaubKrankheit += sollMitarbeiter;
+ edTotal.StundenSollMax += soll ?? 0;
+ edTotal.FlsIst += flsIst / 60;
+ edTotal.MittelbarIst += mittelbarIst / 60;
+ edTotal.StundenGesamtIst += stundenMonat;
+ edTotal.Ueberstunden = ueberstunden;
- start = ende;
+ start = ende;
}
if (start >= contractEnd)
@@ -2257,7 +2256,7 @@ namespace BeWo.Report.ReportObjects
{
c = null;
}
-
+
if (c != null && c.EntryDate.HasValue && c.EntryDate >= start)
start = c.EntryDate.Value;
else
@@ -2269,50 +2268,50 @@ namespace BeWo.Report.ReportObjects
}
}
}
-
+
}
- return edTotal;
+ return edTotal;
}
- protected virtual decimal? BerechneUeberstunden(MitarbeiterstundenkontoRO.EmployeeDetail ed, decimal? ueberstundenStd, Contract contract, DateTime start, DateTime ende)
- {
- return ueberstundenStd;
- }
+ protected virtual decimal? BerechneUeberstunden(MitarbeiterstundenkontoRO.EmployeeDetail ed, decimal? ueberstundenStd, Contract contract, DateTime start, DateTime ende)
+ {
+ return ueberstundenStd;
+ }
- public virtual decimal BerechneSollProWoche(Contract c, MitarbeiterstundenkontoRO.EmployeeDetail ed)
- {
- if (c != null)
- {
- if (c.MonthlyTotalHours.HasValue && c.MonthlyTotalHours.Value > 0)
- {
- if (ed.ArbeitstageImBerichtszeitraum > 0)
- {
+ public virtual decimal BerechneSollProWoche(Contract c, MitarbeiterstundenkontoRO.EmployeeDetail ed)
+ {
+ if (c != null)
+ {
+ if (c.MonthlyTotalHours.HasValue && c.MonthlyTotalHours.Value > 0)
+ {
+ if (ed.ArbeitstageImBerichtszeitraum > 0)
+ {
- decimal stundenProTag = GetSollArbeitszeitProArbeitstag(c, ed);
+ decimal stundenProTag = GetSollArbeitszeitProArbeitstag(c, ed);
+
+ return stundenProTag * 5;
+ //return stundenProTag * ed.ArbeitstageProWoche;
+ //sollStundenProWoche = stundenProTag * ed.ArbeitstageProWoche;
+
+ //return (ath.TageGesamt.Value * stundenProTag);
+ }
+ }
+ else if (c.WeeklyTotalHours.HasValue)
+ {
+ return c.WeeklyTotalHours.Value;
+ }
+ }
+ return 0;
+ }
- return stundenProTag * ed.ArbeitstageProWoche;
- //sollStundenProWoche = stundenProTag * ed.ArbeitstageProWoche;
-
- //return (ath.TageGesamt.Value * stundenProTag);
- }
- }
- else if (c.WeeklyTotalHours.HasValue)
- {
- return c.WeeklyTotalHours.Value;
- }
- }
- return 0;
- }
-
-
- public virtual decimal BerechneStundenDurchAbwesenheiten(AbsenceTimeDays ath, DateTime start, DateTime ende, Contract c, MitarbeiterstundenkontoRO.EmployeeDetail ed)
- {
- if (BerechneAlteAbwesenheitsStunden(start))
- {
- return BerechneStundenDurchAbwesenheitenAlt(ath, start, ende, c, ed);
- }
+ public virtual decimal BerechneStundenDurchAbwesenheiten(AbsenceTimeDays ath, DateTime start, DateTime ende, Contract c, MitarbeiterstundenkontoRO.EmployeeDetail ed)
+ {
+ if (BerechneAlteAbwesenheitsStunden(start))
+ {
+ return BerechneStundenDurchAbwesenheitenAlt(ath, start, ende, c, ed);
+ }
//if (ath.StundenGesamt.HasValue)
//{
@@ -2320,236 +2319,236 @@ namespace BeWo.Report.ReportObjects
//}
decimal stunden = 0;
-
- if (c != null)
- {
- if (ath.TageGesamt.HasValue)
- {
- if (HatArbeitszeitImZeitraum(ed.Employee.Arbeitszeiten, start, ende))
- {
- return BerechneAbwesenheitsStundenDurchArbeitszeiten(ed.Employee, start, ende);
- }
- decimal sollStundenProWoche = BerechneSollProWoche(c, ed);
-
- if (sollStundenProWoche > 0)
- {
- if (ed.ArbeitstageProWoche == 5)
- {
- stunden = ath.TageGesamt.Value * (sollStundenProWoche / 5);
- }
- else if (ath.TageProWocheDict != null && ed.ArbeitstageProWoche > 0)
- {
- foreach (var week in ath.TageProWocheDict.Keys)
- {
- var tage = ath.TageProWocheDict[week];
+ if (c != null)
+ {
+ if (ath.TageGesamt.HasValue)
+ {
+ if (HatArbeitszeitImZeitraum(ed.Employee.Arbeitszeiten, start, ende))
+ {
+ return BerechneAbwesenheitsStundenDurchArbeitszeiten(ed.Employee, start, ende);
- if (tage > 0)
- {
- if (tage > ed.ArbeitstageProWoche)
- {
- tage = ed.ArbeitstageProWoche;
+ }
+ decimal sollStundenProWoche = BerechneSollProWoche(c, ed);
- }
+ if (sollStundenProWoche > 0)
+ {
+ if (ed.ArbeitstageProWoche == 5)
+ {
+ stunden = ath.TageGesamt.Value * (sollStundenProWoche / 5);
+ }
+ else if (ath.TageProWocheDict != null && ed.ArbeitstageProWoche > 0)
+ {
+ foreach (var week in ath.TageProWocheDict.Keys)
+ {
+ var tage = ath.TageProWocheDict[week];
- stunden += tage * (sollStundenProWoche / ed.ArbeitstageProWoche);
- }
- }
- }
- }
- }
- }
+ if (tage > 0)
+ {
+ if (tage > ed.ArbeitstageProWoche)
+ {
+ tage = ed.ArbeitstageProWoche;
- return stunden;
- }
+ }
- public virtual decimal BerechneAbwesenheitsStundenDurchArbeitszeiten(Employee emp, DateTime start, DateTime ende)
- {
- decimal stunden = 0;
+ stunden += tage * (sollStundenProWoche / ed.ArbeitstageProWoche);
+ }
+ }
+ }
+ }
+ }
+ }
- DateTime startTemp = start;
+ return stunden;
+ }
- while (startTemp < ende)
- {
- stunden += BerechneAlleAbwesenheitsStundenFuerArbeitszeiten(emp, startTemp);
+ public virtual decimal BerechneAbwesenheitsStundenDurchArbeitszeiten(Employee emp, DateTime start, DateTime ende)
+ {
+ decimal stunden = 0;
- startTemp = startTemp.AddDays(1);
- }
+ DateTime startTemp = start;
- return stunden;
- }
+ while (startTemp < ende)
+ {
+ stunden += BerechneAlleAbwesenheitsStundenFuerArbeitszeiten(emp, startTemp);
- public virtual decimal BerechneAlleAbwesenheitsStundenFuerArbeitszeiten(Employee emp, DateTime tag)
- {
- decimal stunden = 0;
+ startTemp = startTemp.AddDays(1);
+ }
- foreach (var az in emp.Arbeitszeiten)
- {
- if ((!az.GueltigVon.HasValue || az.GueltigVon.Value <= tag) &&
- (!az.GueltigBis.HasValue || az.GueltigBis.Value >= tag))
- {
+ return stunden;
+ }
- var day = tag.DayOfWeek;
- foreach (var ae in az.ArbeitszeitEintraege)
- {
- if (SindAmGleichenWochentag(day, ae.Tag))
- {
+ public virtual decimal BerechneAlleAbwesenheitsStundenFuerArbeitszeiten(Employee emp, DateTime tag)
+ {
+ decimal stunden = 0;
- String dateStr1 = String.Format("{0:dd.MM.yyyy} {1}", tag, ae.UhrzeitVon);
- String dateStr2 = String.Format("{0:dd.MM.yyyy} {1}", tag, ae.UhrzeitBis);
+ foreach (var az in emp.Arbeitszeiten)
+ {
+ if ((!az.GueltigVon.HasValue || az.GueltigVon.Value <= tag) &&
+ (!az.GueltigBis.HasValue || az.GueltigBis.Value >= tag))
+ {
- DateTime date1;
- DateTime date2;
+ var day = tag.DayOfWeek;
+ foreach (var ae in az.ArbeitszeitEintraege)
+ {
+ if (SindAmGleichenWochentag(day, ae.Tag))
+ {
- if (DateTime.TryParse(dateStr1, out date1) && DateTime.TryParse(dateStr2, out date2))
- {
- stunden += BerechneAbwesenheitsStundenFuerArbeitstag(emp, date1, date2);
+ String dateStr1 = String.Format("{0:dd.MM.yyyy} {1}", tag, ae.UhrzeitVon);
+ String dateStr2 = String.Format("{0:dd.MM.yyyy} {1}", tag, ae.UhrzeitBis);
- }
- }
- }
- }
- }
+ DateTime date1;
+ DateTime date2;
- return stunden;
- }
+ if (DateTime.TryParse(dateStr1, out date1) && DateTime.TryParse(dateStr2, out date2))
+ {
+ stunden += BerechneAbwesenheitsStundenFuerArbeitstag(emp, date1, date2);
- public virtual decimal BerechneAbwesenheitsStundenFuerArbeitstag(Employee emp, DateTime arbeitstagStart, DateTime arbeitstagEnde)
- {
- foreach (var at in emp.AbsenceTimes)
- {
+ }
+ }
+ }
+ }
+ }
+
+ return stunden;
+ }
+
+ public virtual decimal BerechneAbwesenheitsStundenFuerArbeitstag(Employee emp, DateTime arbeitstagStart, DateTime arbeitstagEnde)
+ {
+ foreach (var at in emp.AbsenceTimes)
+ {
if ((!at.Start.HasValue || at.Start.Value <= arbeitstagEnde) && (!at.End.HasValue || at.End.Value >= arbeitstagStart))
{
- var faktor = GetFeiertagsFaktor(arbeitstagStart);
+ var faktor = GetFeiertagsFaktor(arbeitstagStart);
- if (faktor < 1)
- {
- var hours = (decimal)arbeitstagEnde.Subtract(arbeitstagStart).TotalHours;
+ if (faktor < 1)
+ {
+ var hours = (decimal)arbeitstagEnde.Subtract(arbeitstagStart).TotalHours;
// Prüfen, ob halber Tag
if ((at.Start.HasValue && at.Start.Value.Date != at.Start.Value) || (at.End.HasValue && at.End.Value.Date != at.End.Value))
hours /= 2;
if (faktor != 0)
- {
- hours *= faktor;
- }
+ {
+ hours *= faktor;
+ }
- return hours;
- }
+ return hours;
+ }
-
- }
- }
- return 0;
- }
+ }
+ }
- //CB 12.4.18: Die Abwesenheitsstunden wurden bei Arbeitstagen < 5 früher falsch berechnet. Damit bereits erstellte Stundenkonto nicht zu veränderten Werten führen, habe
- //ich einen Schalter eingebaut, mit dem bestimmt werden kann, ob die alte Berechnung angewendet werden soll oder nicht (Standard ist ja)
- public virtual bool BerechneAlteAbwesenheitsStunden(DateTime monatAnfang)
- {
- if (monatAnfang < new DateTime(2018, 4, 1))
- {
- return true;
- }
+ return 0;
+ }
- return false;
- }
+ //CB 12.4.18: Die Abwesenheitsstunden wurden bei Arbeitstagen < 5 früher falsch berechnet. Damit bereits erstellte Stundenkonto nicht zu veränderten Werten führen, habe
+ //ich einen Schalter eingebaut, mit dem bestimmt werden kann, ob die alte Berechnung angewendet werden soll oder nicht (Standard ist ja)
+ public virtual bool BerechneAlteAbwesenheitsStunden(DateTime monatAnfang)
+ {
+ if (monatAnfang < new DateTime(2018, 4, 1))
+ {
+ return true;
+ }
- private decimal BerechneStundenDurchAbwesenheitenAlt(AbsenceTimeDays ath, DateTime start, DateTime ende, Contract c, MitarbeiterstundenkontoRO.EmployeeDetail ed)
- {
+ return false;
+ }
- decimal? sollProMonat = BerechneSollProMonat(ed.Employee, start, ende);
+ private decimal BerechneStundenDurchAbwesenheitenAlt(AbsenceTimeDays ath, DateTime start, DateTime ende, Contract c, MitarbeiterstundenkontoRO.EmployeeDetail ed)
+ {
- if (sollProMonat.HasValue)
- {
- decimal stundenProTag = sollProMonat.Value / ed.ArbeitstageImBerichtszeitraum;
- return (ath.TageGesamt.Value * stundenProTag);
- }
- else
- {
- decimal sollProWoche = BerechneSollProWoche(c, ed);
- decimal stunden = 0;
-
- if (ath.TageGesamt.HasValue)
- {
- if (ed.ArbeitstageProWoche == 5)
- {
- stunden = ath.TageGesamt.Value * (sollProWoche / ed.ArbeitstageProWoche);
- }
- else if (ath.TageProWocheDict != null && ed.ArbeitstageProWoche > 0)
- {
- foreach (var week in ath.TageProWocheDict.Keys)
- {
- var tage = ath.TageProWocheDict[week];
+ decimal? sollProMonat = BerechneSollProMonat(ed.Employee, start, ende);
- if (tage > 0)
- {
- if (tage > ed.ArbeitstageProWoche)
- {
- tage = ed.ArbeitstageProWoche;
+ if (sollProMonat.HasValue)
+ {
+ decimal stundenProTag = sollProMonat.Value / ed.ArbeitstageImBerichtszeitraum;
+ return (ath.TageGesamt.Value * stundenProTag);
+ }
+ else
+ {
+ decimal sollProWoche = BerechneSollProWoche(c, ed);
+ decimal stunden = 0;
- }
- stunden += tage * (sollProWoche / ed.ArbeitstageProWoche);
- }
- }
- }
- }
-
- return stunden;
- }
- }
+ if (ath.TageGesamt.HasValue)
+ {
+ if (ed.ArbeitstageProWoche == 5)
+ {
+ stunden = ath.TageGesamt.Value * (sollProWoche / ed.ArbeitstageProWoche);
+ }
+ else if (ath.TageProWocheDict != null && ed.ArbeitstageProWoche > 0)
+ {
+ foreach (var week in ath.TageProWocheDict.Keys)
+ {
+ var tage = ath.TageProWocheDict[week];
- public virtual decimal GetSollArbeitszeitProArbeitstag(Contract contract, MitarbeiterstundenkontoRO.EmployeeDetail ed)
- {
- if (contract.MonthlyTotalHours.HasValue && contract.MonthlyTotalHours.Value > 0 && ed.ArbeitstageImBerichtszeitraum > 0)
- {
- return contract.MonthlyTotalHours.Value / ed.ArbeitstageImBerichtszeitraum;
- }
- else if (contract.WeeklyTotalHours.HasValue && ed.ArbeitstageProWoche > 0)
- {
- return contract.WeeklyTotalHours.Value / ed.ArbeitstageProWoche;
- }
+ if (tage > 0)
+ {
+ if (tage > ed.ArbeitstageProWoche)
+ {
+ tage = ed.ArbeitstageProWoche;
- return 0;
- }
+ }
+ stunden += tage * (sollProWoche / ed.ArbeitstageProWoche);
+ }
+ }
+ }
+ }
- //Wird nicht mehr benutzt
- public virtual decimal BerechneStundenDurchAbwesenheiten(AbsenceTimeDays ath, DateTime start, DateTime ende, int arbeitstageProWoche, decimal sollProWoche)
- {
- decimal stunden = 0;
+ return stunden;
+ }
+ }
- if (ath.TageGesamt.HasValue)
- {
- if (arbeitstageProWoche == 5)
- {
- stunden = ath.TageGesamt.Value*(sollProWoche/arbeitstageProWoche);
- }
- else if (ath.TageProWocheDict != null && arbeitstageProWoche > 0)
- {
- foreach (var week in ath.TageProWocheDict.Keys)
- {
- var tage = ath.TageProWocheDict[week];
+ public virtual decimal GetSollArbeitszeitProArbeitstag(Contract contract, MitarbeiterstundenkontoRO.EmployeeDetail ed)
+ {
+ if (contract.MonthlyTotalHours.HasValue && contract.MonthlyTotalHours.Value > 0 && ed.ArbeitstageImBerichtszeitraum > 0)
+ {
+ return contract.MonthlyTotalHours.Value / ed.ArbeitstageImBerichtszeitraum;
+ }
+ else if (contract.WeeklyTotalHours.HasValue && ed.ArbeitstageProWoche > 0)
+ {
+ return contract.WeeklyTotalHours.Value / ed.ArbeitstageProWoche;
+ }
- if (tage > 0)
- {
- if (tage > arbeitstageProWoche)
- {
- tage = arbeitstageProWoche;
-
- }
- stunden += tage * (sollProWoche / arbeitstageProWoche);
- }
- }
- }
- }
+ return 0;
+ }
- return stunden;
- }
+ //Wird nicht mehr benutzt
+ public virtual decimal BerechneStundenDurchAbwesenheiten(AbsenceTimeDays ath, DateTime start, DateTime ende, int arbeitstageProWoche, decimal sollProWoche)
+ {
+ decimal stunden = 0;
- public virtual Dictionary> CreateServiceRecordDictByDate(IList records)
+ if (ath.TageGesamt.HasValue)
+ {
+ if (arbeitstageProWoche == 5)
+ {
+ stunden = ath.TageGesamt.Value * (sollProWoche / arbeitstageProWoche);
+ }
+ else if (ath.TageProWocheDict != null && arbeitstageProWoche > 0)
+ {
+ foreach (var week in ath.TageProWocheDict.Keys)
+ {
+ var tage = ath.TageProWocheDict[week];
+
+ if (tage > 0)
+ {
+ if (tage > arbeitstageProWoche)
+ {
+ tage = arbeitstageProWoche;
+
+ }
+ stunden += tage * (sollProWoche / arbeitstageProWoche);
+ }
+ }
+ }
+ }
+
+ return stunden;
+ }
+
+ public virtual Dictionary> CreateServiceRecordDictByDate(IList records)
{
var dict = new Dictionary>();
foreach (var item in records)
@@ -2583,13 +2582,13 @@ namespace BeWo.Report.ReportObjects
foreach (var dayDetail in days)
{
- if (dayDetail.Date >= new DateTime(2023, 1, 1))
- {
- addHours += CalculateBreakMinutesNeu(dayDetail);
- }
- else
- {
- if (dayDetail.BreakMinutes2.HasValue && dayDetail.MaxHoursUntilBreak2.HasValue)
+ if (dayDetail.Date >= new DateTime(2023, 1, 1))
+ {
+ addHours += CalculateBreakMinutesNeu(dayDetail);
+ }
+ else
+ {
+ if (dayDetail.BreakMinutes2.HasValue && dayDetail.MaxHoursUntilBreak2.HasValue)
{
addHours += CalculateBreakMinutes(dayDetail, dayDetail.MaxHoursUntilBreak2.Value, dayDetail.BreakMinutes2.Value);
}
@@ -2597,68 +2596,68 @@ namespace BeWo.Report.ReportObjects
{
addHours += CalculateBreakMinutes(dayDetail, dayDetail.MaxHoursUntilBreak.Value, dayDetail.BreakMinutes.Value);
}
- }
- }
+ }
+ }
return addHours;
}
- public virtual decimal CalculateBreakMinutesNeu(MitarbeiterstundenkontoRO.DayDetail dayDetail)
- {
- decimal addHours = 0;
+ public virtual decimal CalculateBreakMinutesNeu(MitarbeiterstundenkontoRO.DayDetail dayDetail)
+ {
+ decimal addHours = 0;
- if (dayDetail.ZusammenhaengendeZeitraeume != null && dayDetail.ZusammenhaengendeZeitraeume.Count > 0)
- {
- foreach (var span in dayDetail.ZusammenhaengendeZeitraeume)
- {
- addHours -= BerechneGesetzlichePauseInMinuten(dayDetail, span.StartDateTime, span.EndDateTime) / 60;
- }
+ if (dayDetail.ZusammenhaengendeZeitraeume != null && dayDetail.ZusammenhaengendeZeitraeume.Count > 0)
+ {
+ foreach (var span in dayDetail.ZusammenhaengendeZeitraeume)
+ {
+ addHours -= BerechneGesetzlichePauseInMinuten(dayDetail, span.StartDateTime, span.EndDateTime) / 60;
+ }
- return addHours;
- }
-
- if (dayDetail.EndDateTime1.HasValue && dayDetail.StartDateTime1.HasValue)
- {
- addHours -= BerechneGesetzlichePauseInMinuten(dayDetail, dayDetail.StartDateTime1.Value, dayDetail.EndDateTime1.Value) / 60;
+ return addHours;
}
- if (dayDetail.EndDateTime2.HasValue && dayDetail.StartDateTime2.HasValue)
- {
- addHours -= BerechneGesetzlichePauseInMinuten(dayDetail, dayDetail.StartDateTime2.Value, dayDetail.EndDateTime2.Value) / 60;
- }
- if (dayDetail.EndDateTime3.HasValue && dayDetail.StartDateTime3.HasValue)
- {
- addHours -= BerechneGesetzlichePauseInMinuten(dayDetail, dayDetail.StartDateTime3.Value, dayDetail.EndDateTime3.Value) / 60;
- }
- if (dayDetail.EndDateTime4.HasValue && dayDetail.StartDateTime4.HasValue)
- {
+
+ if (dayDetail.EndDateTime1.HasValue && dayDetail.StartDateTime1.HasValue)
+ {
+ addHours -= BerechneGesetzlichePauseInMinuten(dayDetail, dayDetail.StartDateTime1.Value, dayDetail.EndDateTime1.Value) / 60;
+ }
+ if (dayDetail.EndDateTime2.HasValue && dayDetail.StartDateTime2.HasValue)
+ {
+ addHours -= BerechneGesetzlichePauseInMinuten(dayDetail, dayDetail.StartDateTime2.Value, dayDetail.EndDateTime2.Value) / 60;
+ }
+ if (dayDetail.EndDateTime3.HasValue && dayDetail.StartDateTime3.HasValue)
+ {
+ addHours -= BerechneGesetzlichePauseInMinuten(dayDetail, dayDetail.StartDateTime3.Value, dayDetail.EndDateTime3.Value) / 60;
+ }
+ if (dayDetail.EndDateTime4.HasValue && dayDetail.StartDateTime4.HasValue)
+ {
addHours -= BerechneGesetzlichePauseInMinuten(dayDetail, dayDetail.StartDateTime4.Value, dayDetail.EndDateTime4.Value) / 60;
}
- return addHours;
- }
+ return addHours;
+ }
- private decimal BerechneGesetzlichePauseInMinuten(MitarbeiterstundenkontoRO.DayDetail dayDetail, DateTime startDateTime, DateTime endDateTime)
- {
+ private decimal BerechneGesetzlichePauseInMinuten(MitarbeiterstundenkontoRO.DayDetail dayDetail, DateTime startDateTime, DateTime endDateTime)
+ {
decimal arbeitsstunden = (decimal)endDateTime.Subtract(startDateTime).TotalHours;
decimal gesetzlichePauseMinuten = 0;
if (dayDetail.MaxHoursUntilBreak.HasValue && arbeitsstunden > dayDetail.MaxHoursUntilBreak)
- {
+ {
gesetzlichePauseMinuten += dayDetail.BreakMinutes ?? 0;
- }
+ }
arbeitsstunden -= gesetzlichePauseMinuten / 60;
if (dayDetail.MaxHoursUntilBreak2.HasValue && arbeitsstunden > dayDetail.MaxHoursUntilBreak2)
{
gesetzlichePauseMinuten += dayDetail.BreakMinutes2 ?? 0;
}
-
+
dayDetail.MinutesTotal -= gesetzlichePauseMinuten;
dayDetail.PauseInMinuten += gesetzlichePauseMinuten;
return gesetzlichePauseMinuten;
}
- public virtual decimal CalculateBreakMinutes(MitarbeiterstundenkontoRO.DayDetail dayDetail, int maxHoursUntilBreak, int breakMinutes)
+ public virtual decimal CalculateBreakMinutes(MitarbeiterstundenkontoRO.DayDetail dayDetail, int maxHoursUntilBreak, int breakMinutes)
{
decimal addHours = 0;
@@ -2720,7 +2719,7 @@ namespace BeWo.Report.ReportObjects
public virtual void BerechneExtraUeberstunden(Employee emp, DateTime start, DateTime ende, out decimal stunden)
{
stunden = 0;
-
+
if (emp.Overtimes != null)
{
foreach (var ot in emp.Overtimes)
@@ -2756,244 +2755,261 @@ namespace BeWo.Report.ReportObjects
return contractNextToStartDate;
}
- public virtual AbsenceTimeDays GetAbsenceTimeDaysWithWorkWeeks(Employee emp, DateTime start, DateTime end, int arbeitstageProWoche)
- {
- if (HatArbeitszeitImZeitraum(emp.Arbeitszeiten, start, end))
- {
- return GetAbsenceTimeDaysNachArbeitszeiten(emp, start, end, arbeitstageProWoche);
- }
- return GetAbsenceTimeDaysWithWorkWeeks(emp.AbsenceTimes, start, end, arbeitstageProWoche);
-
- }
+ public virtual AbsenceTimeDays GetAbsenceTimeDaysWithWorkWeeks(Employee emp, DateTime start, DateTime end, int arbeitstageProWoche)
+ {
+ if (HatArbeitszeitImZeitraum(emp.Arbeitszeiten, start, end))
+ {
+ return GetAbsenceTimeDaysNachArbeitszeiten(emp, start, end, arbeitstageProWoche);
+ }
+ return GetAbsenceTimeDaysWithWorkWeeks(emp.AbsenceTimes, start, end, arbeitstageProWoche);
- public virtual AbsenceTimeDays GetAbsenceTimeDaysNachArbeitszeiten(Employee emp, DateTime start, DateTime end, int arbeitstageProWoche)
- {
- var atd = new AbsenceTimeDays();
+ }
- decimal? tage = null;
+ public virtual AbsenceTimeDays GetAbsenceTimeDaysNachArbeitszeiten(Employee emp, DateTime start, DateTime end, int arbeitstageProWoche)
+ {
+ var atd = new AbsenceTimeDays();
- DateTime startTemp = start;
+ decimal? tage = null;
- while (startTemp < end)
- {
- AddAbsenceDaysNachArbeitszeitenFuerTag(atd, emp, startTemp);
+ DateTime startTemp = start;
- startTemp = startTemp.AddDays(1);
- }
+ while (startTemp < end)
+ {
+ AddAbsenceDaysNachArbeitszeitenFuerTag(atd, emp, startTemp);
-
- return atd;
- }
-
- public virtual void AddAbsenceDaysNachArbeitszeitenFuerTag(AbsenceTimeDays atd, Employee emp, DateTime tag)
- {
- Dictionary daysDict = new Dictionary();
- foreach (var az in emp.Arbeitszeiten)
- {
- if ((!az.GueltigVon.HasValue || az.GueltigVon.Value <= tag) &&
- (!az.GueltigBis.HasValue || az.GueltigBis.Value >= tag))
- {
+ startTemp = startTemp.AddDays(1);
+ }
- var day = tag.DayOfWeek;
- foreach (var ae in az.ArbeitszeitEintraege)
- {
- if (SindAmGleichenWochentag(day, ae.Tag))
- {
- String dateStr1 = String.Format("{0:dd.MM.yyyy} {1}", tag, ae.UhrzeitVon);
- String dateStr2 = String.Format("{0:dd.MM.yyyy} {1}", tag, ae.UhrzeitBis);
+ return atd;
+ }
- DateTime date1; // Startzeit der AZ
- DateTime date2; // Endzeit der AZ
+ public virtual void AddAbsenceDaysNachArbeitszeitenFuerTag(AbsenceTimeDays atd, Employee emp, DateTime tag)
+ {
+ Dictionary daysDict = new Dictionary();
+ foreach (var az in emp.Arbeitszeiten)
+ {
+ if ((!az.GueltigVon.HasValue || az.GueltigVon.Value <= tag) &&
+ (!az.GueltigBis.HasValue || az.GueltigBis.Value >= tag))
+ {
+
+ var day = tag.DayOfWeek;
+ foreach (var ae in az.ArbeitszeitEintraege)
+ {
+ if (SindAmGleichenWochentag(day, ae.Tag))
+ {
+
+ String dateStr1 = String.Format("{0:dd.MM.yyyy} {1}", tag, ae.UhrzeitVon);
+ String dateStr2 = String.Format("{0:dd.MM.yyyy} {1}", tag, ae.UhrzeitBis);
+
+ DateTime date1; // Startzeit der AZ
+ DateTime date2; // Endzeit der AZ
if (DateTime.TryParse(dateStr1, out date1) && DateTime.TryParse(dateStr2, out date2))
- {
- String dayKey = String.Format("{0:dd.MM.yyyy}", date1);
- if (!daysDict.ContainsKey(dayKey))
- {
- AddAbsenceDaysFuerTag(atd, emp, date1, date2);
- daysDict.Add(dayKey, true);
- }
+ {
+ String dayKey = String.Format("{0:dd.MM.yyyy}", date1);
+ if (!daysDict.ContainsKey(dayKey))
+ {
+ AddAbsenceDaysFuerTag(atd, emp, date1, date2);
+ daysDict.Add(dayKey, true);
+ }
- }
- }
- }
- }
- }
- }
+ }
+ }
+ }
+ }
+ }
+ }
- private void AddAbsenceDaysFuerTag(AbsenceTimeDays atd, Employee emp, DateTime arbeitstagStart, DateTime arbeitstagEnde)
- {
- var hours = (decimal)arbeitstagEnde.Subtract(arbeitstagStart).TotalHours;
+ private void AddAbsenceDaysFuerTag(AbsenceTimeDays atd, Employee emp, DateTime arbeitstagStart, DateTime arbeitstagEnde)
+ {
+ var hours = (decimal)arbeitstagEnde.Subtract(arbeitstagStart).TotalHours;
- foreach (var at in emp.AbsenceTimes)
- {
+ foreach (var at in emp.AbsenceTimes)
+ {
if ((!at.Start.HasValue || at.Start.Value <= arbeitstagEnde) && (!at.End.HasValue || at.End.Value >= arbeitstagStart))
- {
+ {
- var faktor = GetFeiertagsFaktor(arbeitstagStart);
+ var faktor = GetFeiertagsFaktor(arbeitstagStart);
- if (faktor < 1)
- {
+ if (faktor < 1)
+ {
var tag = 1m;
// Prüfen, ob halber Tag
if ((at.Start.HasValue && at.Start.Value.Date != at.Start.Value) || (at.End.HasValue && at.End.Value.Date != at.End.Value))
tag = 0.5m;
- if (faktor != 0)
- {
- tag *= faktor;
- hours *= faktor;
- }
+ if (faktor != 0)
+ {
+ tag *= faktor;
+ hours *= faktor;
+ }
- //if (at.Start.HasValue && at.End.HasValue && at.Start.Value.Day == at.End.Value.Day &&
- // at.Start.Value.Month == at.End.Value.Month)
- //{
- // var std = at.End.Value.Subtract(at.Start.Value)
- //}
+ //if (at.Start.HasValue && at.End.HasValue && at.Start.Value.Day == at.End.Value.Day &&
+ // at.Start.Value.Month == at.End.Value.Month)
+ //{
+ // var std = at.End.Value.Subtract(at.Start.Value)
+ //}
- if (IsKrankheitAbsenceTime(at))
- {
- if (!atd.TageKrankheit.HasValue)
- atd.TageKrankheit = 0;
+ if (IsKrankheitAbsenceTime(at))
+ {
+ if (!atd.TageKrankheit.HasValue)
+ atd.TageKrankheit = 0;
- atd.TageKrankheit += tag;
- }
+ atd.TageKrankheit += tag;
+ }
- if (IsUrlaubAbsenceTime(at))
- {
- if (!atd.TageUrlaub.HasValue)
- atd.TageUrlaub = 0;
+ if (IsUrlaubAbsenceTime(at))
+ {
+ if (!atd.TageUrlaub.HasValue)
+ atd.TageUrlaub = 0;
- atd.TageUrlaub += tag;
- }
- if (!atd.TageGesamt.HasValue)
- atd.TageGesamt = 0;
-
+ atd.TageUrlaub += tag;
+ }
+ if (!atd.TageGesamt.HasValue)
+ atd.TageGesamt = 0;
- atd.TageGesamt += tag;
- }
- }
- }
-
- }
- public virtual AbsenceTimeDays GetAbsenceTimeDaysWithWorkWeeks(IList absenceTimes, DateTime start, DateTime end, int arbeitstageProWoche)
- {
- var atd = new AbsenceTimeDays();
- var totalSpan = new DateTimeSpan();
- totalSpan.StartDate = start;
- totalSpan.EndDate = end.AddDays(-1);
+ atd.TageGesamt += tag;
+ }
+ }
+ }
- var weeks = totalSpan.GetWeeks(true, false);
- if (BerechneAlteAbwesenheitsStunden(start))
- {
- totalSpan.EndDate = end;
+ }
- weeks = totalSpan.GetWholeWeeks();
- }
+ public virtual AbsenceTimeDays GetAbsenceTimeDaysWithWorkWeeks(IList absenceTimes, DateTime start, DateTime end, int arbeitstageProWoche)
+ {
+ var atd = new AbsenceTimeDays();
+ var totalSpan = new DateTimeSpan();
+ totalSpan.StartDate = start;
+ totalSpan.EndDate = end.AddDays(-1);
- atd.TageProWocheDict = new Dictionary();
+ var weeks = totalSpan.GetWeeks(true, false);
+ if (BerechneAlteAbwesenheitsStunden(start))
+ {
+ totalSpan.EndDate = end;
+
+ weeks = totalSpan.GetWholeWeeks();
+ }
+
+ atd.TageProWocheDict = new Dictionary();
atd.StundenProTagDict = new Dictionary();
+ atd.RestStundenProWocheDict = new Dictionary();
DateTime idt = start;
while (idt < end)
- {
+ {
atd.StundenProTagDict.Add(idt.Date, 0);
idt = idt.AddDays(1);
- }
+ }
foreach (var week in weeks)
- {
- atd.TageProWocheDict.Add(week, 0);
- }
- decimal? stunden = null;
- if (absenceTimes != null)
- {
- foreach (var item in absenceTimes)
+ {
+ atd.TageProWocheDict.Add(week, 0);
+ }
+
+ foreach (var week in weeks)
+ {
+ if (AktuellBearbeitetesEmployeeDetail != null)
{
+ atd.RestStundenProWocheDict.Add(week, AktuellBearbeitetesEmployeeDetail.SollProWoche);
+ }
+
+ }
+
+ decimal? stunden = null;
+ if (absenceTimes != null)
+ {
+ foreach (var item in absenceTimes)
+ {
if (IstAnrechenbareAbsenceTime(item))
- {
- DateTimeSpan span = new DateTimeSpan();
+ {
+ DateTimeSpan span = new DateTimeSpan();
- span.StartDate = start;
+ span.StartDate = start;
- if (item.Start.HasValue && item.Start.Value > span.StartDate)
- {
- span.StartDate = item.Start.Value;
- }
+ if (item.Start.HasValue && item.Start.Value > span.StartDate)
+ {
+ span.StartDate = item.Start.Value;
+ }
- span.EndDate = end;
- if (item.End.HasValue && item.End.Value.Date.AddDays(1) < span.EndDate)
- {
- span.EndDate = item.End.Value.Date.AddDays(1);
- }
+ span.EndDate = end;
+ if (item.End.HasValue && item.End.Value.Date.AddDays(1) < span.EndDate)
+ {
+ span.EndDate = item.End.Value.Date.AddDays(1);
+ }
- if (span.EndDate >= start && span.StartDate < end)
- {
- DateTime day = span.StartDate;
- while (day < end && day < span.EndDate)
- {
-
+ if (span.EndDate >= start && span.StartDate < end)
+ {
+ DateTime day = span.StartDate;
+ while (day < end && day < span.EndDate)
+ {
- var faktor = GetFeiertagsFaktor(day);
- bool istWochenende =
- day.DayOfWeek == DayOfWeek.Saturday || day.DayOfWeek == DayOfWeek.Sunday;
- if (arbeitstageProWoche == 6)
- {
- istWochenende = day.DayOfWeek == DayOfWeek.Sunday;
- }
- else if (arbeitstageProWoche > 6)
- {
- istWochenende = false;
- }
- if (faktor < 1 && !istWochenende)
- {
+ var faktor = GetFeiertagsFaktor(day);
+ bool istWochenende =
+ day.DayOfWeek == DayOfWeek.Saturday || day.DayOfWeek == DayOfWeek.Sunday;
+ if (arbeitstageProWoche == 6)
+ {
+ istWochenende = day.DayOfWeek == DayOfWeek.Sunday;
+ }
+ else if (arbeitstageProWoche > 6)
+ {
+ istWochenende = false;
+ }
- if (!stunden.HasValue)
+ if (faktor < 1 && !istWochenende)
+ {
+
+ if (!stunden.HasValue)
stunden = 0;
- var tag = 1m;
- var std = 24m;
+ var tag = 1m;
+ var std = 24m;
+
+ bool checkMaxWochenSoll = true;
var sollAmTag = GetSollStundenForAbsenceTime(AktuellBearbeitetesEmployeeDetail, item, day);
if (!sollAmTag.HasValue)
- {
+ {
sollAmTag = AktuellBearbeitetesEmployeeDetail.SollProTag;
}
-
- if (item.Start.HasValue && item.End.HasValue && item.Start.Value.Date == item.End.Value.Date &&
- item.Start.Value.Hour > 0)
+ else
{
- if (AktuellBearbeitetesEmployeeDetail != null)
- {
- faktor = 1;
- decimal hours = (decimal)item.End.Value.Subtract(item.Start.Value).TotalHours;
+ checkMaxWochenSoll = false;
+ }
+
+ if (item.Start.HasValue && item.End.HasValue && item.Start.Value.Date == item.End.Value.Date &&
+ item.Start.Value.Hour > 0)
+ {
+ if (AktuellBearbeitetesEmployeeDetail != null)
+ {
+ faktor = 1;
+ decimal hours = (decimal)item.End.Value.Subtract(item.Start.Value).TotalHours;
if (SchneideZuvieleAbwesenheitsstundenAb() && hours > sollAmTag)
- {
- hours = sollAmTag.Value;
- }
+ {
+ hours = sollAmTag.Value;
+ }
- if (sollAmTag > 0)
- {
- tag = hours / sollAmTag.Value;
- std = tag * 24;
- }
+ if (sollAmTag > 0)
+ {
+ tag = hours / sollAmTag.Value;
+ std = tag * 24;
+ }
sollAmTag = hours;
}
-
- }
-
- if (faktor != 0)
- {
- tag *= faktor;
- std *= faktor;
- }
+ }
+
+
+ if (faktor != 0)
+ {
+ tag *= faktor;
+ std *= faktor;
+ }
stunden += std;
@@ -3003,55 +3019,78 @@ namespace BeWo.Report.ReportObjects
atd.TageAlsIst += tag;
atd.StundenAlsIst += sollAmTag ?? 0;
}
- if (IsKrankheitAbsenceTime(item))
- {
- if (!atd.TageKrankheit.HasValue)
- atd.TageKrankheit = 0;
+ if (IsKrankheitAbsenceTime(item))
+ {
+ if (!atd.TageKrankheit.HasValue)
+ atd.TageKrankheit = 0;
if (!atd.StundenKrankheit.HasValue)
atd.StundenKrankheit = 0;
atd.TageKrankheit += tag;
atd.StundenKrankheit += sollAmTag;
- }
- if (IsUrlaubAbsenceTime(item))
- {
- if (!atd.TageUrlaub.HasValue)
- atd.TageUrlaub = 0;
+ }
+ if (IsUrlaubAbsenceTime(item))
+ {
+ if (!atd.TageUrlaub.HasValue)
+ atd.TageUrlaub = 0;
if (!atd.StundenUrlaub.HasValue)
atd.StundenUrlaub = 0;
atd.TageUrlaub += tag;
- atd.StundenUrlaub += sollAmTag;
+ atd.StundenUrlaub += sollAmTag;
}
+
+
+ foreach (var week in weeks)
+ {
+ if (checkMaxWochenSoll && day >= week.StartDate && day <= week.EndDate)
+ {
+ if (atd.TageProWocheDict.ContainsKey(week))
+ {
+ atd.TageProWocheDict[week] += 1;
+ }
+
+ //Prüfe RestBudget für die Woche. Damit überlappende Abwesenheiten nicht doppelt abgerechnet werden oder
+ //bei einer Arbeitszeit von 2 Tage Woche und einer Abwesenheit für die ganze Woche nicht mehr als die 2 Tage abgerechnet werden
+ if (atd.RestStundenProWocheDict.ContainsKey(week))
+ {
+ var rest = atd.RestStundenProWocheDict[week];
+
+
+ if (rest < sollAmTag)
+ {
+ sollAmTag = rest;
+ }
+ rest -= sollAmTag ?? 0;
+ if (rest < 0)
+ {
+ rest = 0;
+ }
+ atd.RestStundenProWocheDict[week] = rest;
+ }
+ }
+ }
+
if (!atd.StundenGesamt.HasValue)
atd.StundenGesamt = 0;
atd.StundenGesamt += sollAmTag;
- foreach (var week in weeks)
- {
- if (day >= week.StartDate && day <= week.EndDate)
- {
- if (atd.TageProWocheDict.ContainsKey(week))
- {
- atd.TageProWocheDict[week] += 1;
- }
- }
- }
- }
+ }
- day = day.AddDays(1);
- }
+ day = day.AddDays(1);
+ }
- }
- }
- }
- }
- if (stunden.HasValue)
+ }
+ }
+ }
+ }
+ if (stunden.HasValue)
stunden /= 24;
- atd.TageGesamt = stunden;
-
+ atd.TageGesamt = stunden;
- return atd;
- }
+ atd.RestStundenProWocheDict = new Dictionary();
+
+ return atd;
+ }
public virtual AbsenceTimeDays GetAbsenceTimeDaysWithWorkWeeksAlt(IList absenceTimes, DateTime start, DateTime end, int arbeitstageProWoche)
{
@@ -3199,11 +3238,11 @@ namespace BeWo.Report.ReportObjects
}
public virtual AbsenceTimeDays GetAbsenceTimeDays(IList absenceTimes, DateTime start, DateTime end)
- {
- return GetAbsenceTimeDaysWithWorkWeeks(absenceTimes, start, end, ANZ_WOCHENTAGE);
- }
-
- public virtual decimal? GetFehlzeiten(IList records, DateTime monat)
+ {
+ return GetAbsenceTimeDaysWithWorkWeeks(absenceTimes, start, end, ANZ_WOCHENTAGE);
+ }
+
+ public virtual decimal? GetFehlzeiten(IList records, DateTime monat)
{
return GetFehlzeiten(records, monat, monat.AddMonths(1));
@@ -3245,13 +3284,13 @@ namespace BeWo.Report.ReportObjects
return stunden;
}
-
+
public virtual decimal GetArbeitstageImMonat(DateTime datum, Employee emp)
{
Contract c = GetNextValidContractForDate(datum, emp);
if (c == null)
return 0;
-
+
DateTime start = new DateTime(datum.Year, datum.Month, 1);
DateTime end = start.AddMonths(1);
@@ -3290,51 +3329,51 @@ namespace BeWo.Report.ReportObjects
while (start < end)
{
- int arbeitstageProWoche = ANZ_WOCHENTAGE;
+ int arbeitstageProWoche = ANZ_WOCHENTAGE;
- var c = GetContractForDate(emp, start, start);
+ var c = GetContractForDate(emp, start, start);
- if (c != null && c.WeeklyDays.HasValue && c.WeeklyDays > 0)
- {
- arbeitstageProWoche = c.WeeklyDays.Value;
- }
+ if (c != null && c.WeeklyDays.HasValue && c.WeeklyDays > 0)
+ {
+ arbeitstageProWoche = c.WeeklyDays.Value;
+ }
if (arbeitstageProWoche <= 5 && (start.DayOfWeek == DayOfWeek.Saturday || start.DayOfWeek == DayOfWeek.Sunday))
{
- maxDays -= 1;
+ maxDays -= 1;
}
- else if (arbeitstageProWoche == 6 && start.DayOfWeek == DayOfWeek.Sunday)
+ else if (arbeitstageProWoche == 6 && start.DayOfWeek == DayOfWeek.Sunday)
{
- maxDays -= 1;
+ maxDays -= 1;
}
- else
+ else
{
if (!BerechneFeiertageAlsArbeitszeit())
{
maxDays -= GetFeiertagsFaktor(start);
}
- }
+ }
start = start.AddDays(1);
}
return maxDays;
}
- public virtual Contract GetContractForDate(Employee emp, DateTime start, DateTime ende)
- {
- Contract c = emp.GetValidContractForDate(start);
- if (c == null) // Kein Vertrag vom 1. gefunden, gucken, ob es einen gibt, der mitten im Monat beginnt.
- {
- var c2 = GetNextValidContractForDate(start, emp);
- if (c2 != null && c2.EntryDate.HasValue && c2.EntryDate.Value < ende)
- c = c2;
- }
- return c;
- }
+ public virtual Contract GetContractForDate(Employee emp, DateTime start, DateTime ende)
+ {
+ Contract c = emp.GetValidContractForDate(start);
+ if (c == null) // Kein Vertrag vom 1. gefunden, gucken, ob es einen gibt, der mitten im Monat beginnt.
+ {
+ var c2 = GetNextValidContractForDate(start, emp);
+ if (c2 != null && c2.EntryDate.HasValue && c2.EntryDate.Value < ende)
+ c = c2;
+ }
+ return c;
+ }
- //gibt 1 zurück wenn ganzer Feiertag und z.B. 0.5 bei halben etc.
- public virtual decimal GetFeiertagsFaktor(DateTime start)
+ //gibt 1 zurück wenn ganzer Feiertag und z.B. 0.5 bei halben etc.
+ public virtual decimal GetFeiertagsFaktor(DateTime start)
{
if (IstFeiertag(start))
{
@@ -3381,9 +3420,9 @@ namespace BeWo.Report.ReportObjects
}
public virtual bool BerechneFeiertageAlsArbeitszeit()
- {
+ {
return false;
- }
+ }
public virtual bool AbsenceTimeAufIstStundenAddieren(AbsenceTime at)
{
@@ -3399,17 +3438,17 @@ namespace BeWo.Report.ReportObjects
{
decimal az = 0;
if (BerechneFeiertageAlsArbeitszeit() && ed.Employee.IsActive == ActivationTypeId.Active)
- {
+ {
DateTime dt = start;
while (dt <= ende)
- {
+ {
if (GetFeiertagsFaktor(dt) > 0)
{
az += BerechneSollStundenFuerTag(ed, dt);
}
dt = dt.AddDays(1);
- }
- }
+ }
+ }
return az;
}
}
@@ -3428,21 +3467,21 @@ namespace BeWo.Report.ReportObjects
public Dictionary TageProWocheDict;
public Dictionary StundenProTagDict;
public Dictionary RestStundenProWocheDict;
- }
+ }
- public class AbsenceTimeHours
- {
- public decimal StundenUrlaub;
- public decimal StundenKrankheit;
- public decimal StundenSonstiges;
- }
+ public class AbsenceTimeHours
+ {
+ public decimal StundenUrlaub;
+ public decimal StundenKrankheit;
+ public decimal StundenSonstiges;
+ }
- public class ServiceRecordSummary
- {
- public decimal IstAbrechenbar { get; set; }
+ public class ServiceRecordSummary
+ {
+ public decimal IstAbrechenbar { get; set; }
- public decimal IstNichtAbrechenbar { get; set; }
+ public decimal IstNichtAbrechenbar { get; set; }
- public IList RecordsImBerichtszeitraum { get; set; }
- }
+ public IList RecordsImBerichtszeitraum { get; set; }
+ }
}
diff --git a/ReportImp/AkggMid/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/AkggMid/CustomMitarbeiterstundenkontoBerechnung.cs
index 7cf3ab8f0..7211751c0 100644
--- a/ReportImp/AkggMid/CustomMitarbeiterstundenkontoBerechnung.cs
+++ b/ReportImp/AkggMid/CustomMitarbeiterstundenkontoBerechnung.cs
@@ -217,7 +217,6 @@ namespace AkggMid
public override decimal BerechneStundenDurchAbwesenheiten(AbsenceTimeDays ath, DateTime start, DateTime ende, Contract c, MitarbeiterstundenkontoRO.EmployeeDetail ed)
{
-
if (ath.StundenGesamt.HasValue)
{
return ath.StundenGesamt.Value;
@@ -234,5 +233,10 @@ namespace AkggMid
}
return true;
}
- }
+
+ protected override bool StundenDurchAbwesenheitenDuerfenNegativSein()
+ {
+ return true;
+ }
+ }
}
diff --git a/ReportImp/AkggMid/LeistungsnachweisHelper.cs b/ReportImp/AkggMid/LeistungsnachweisHelper.cs
index 5db09665e..08c221aeb 100644
--- a/ReportImp/AkggMid/LeistungsnachweisHelper.cs
+++ b/ReportImp/AkggMid/LeistungsnachweisHelper.cs
@@ -1,7 +1,11 @@
-using BeWo.Data.Access;
+using AkggMid.Service;
+using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Report.ReportObjects;
+using BeWo.Service.DCEntityMapper;
+using BS.Shared;
using BS.Shared.Core;
+using BS.Shared.DataContracts;
using System;
using System.Collections.Generic;
using System.Globalization;
@@ -62,63 +66,67 @@ namespace AkggMid
{
Dictionary day2Detail = new Dictionary();
+ var abrAbwTagDict = GetAbrechenbareAbwesenheiten(pRO);
+
var result = new List();
foreach (var sr in pRO.Services)
{
//result.Add(sr);
-
- if (!day2Detail.ContainsKey(sr.StartDate.Day))
+ if (!abrAbwTagDict.ContainsKey(sr.StartDate.Date))
{
- sr.StartDateString = String.Format("{0:dddd dd.MM.}", sr.StartDate);
- day2Detail.Add(sr.StartDate.Day, sr);
- result.Add(sr);
- }
- else
- {
- var dsr = day2Detail[sr.StartDate.Day];
- dsr.Minutes += sr.Minutes;
-
- if (!String.IsNullOrWhiteSpace(sr.Notice))
+ if (!day2Detail.ContainsKey(sr.StartDate.Day))
{
- if (!String.IsNullOrWhiteSpace(dsr.Notice))
- {
- dsr.Notice += ", " + sr.Notice;
- }
- else
- {
- dsr.Notice = sr.Notice;
- }
-
+ sr.StartDateString = String.Format("{0:dddd dd.MM.}", sr.StartDate);
+ day2Detail.Add(sr.StartDate.Day, sr);
+ result.Add(sr);
}
-
- if (!String.IsNullOrWhiteSpace(sr.Notice3))
+ else
{
- if (!String.IsNullOrWhiteSpace(dsr.Notice3))
+ var dsr = day2Detail[sr.StartDate.Day];
+ dsr.Minutes += sr.Minutes;
+
+ if (!String.IsNullOrWhiteSpace(sr.Notice))
{
- dsr.Notice3 += ", " + sr.Notice3;
- }
- else
- {
- dsr.Notice3 = sr.Notice3;
+ if (!String.IsNullOrWhiteSpace(dsr.Notice))
+ {
+ dsr.Notice += ", " + sr.Notice;
+ }
+ else
+ {
+ dsr.Notice = sr.Notice;
+ }
+
}
- }
- if (!String.IsNullOrWhiteSpace(sr.Notice4))
- {
- if (!String.IsNullOrWhiteSpace(dsr.Notice4))
+ if (!String.IsNullOrWhiteSpace(sr.Notice3))
{
- dsr.Notice4 += ", " + sr.Notice4;
- }
- else
- {
- dsr.Notice4 = sr.Notice4;
- }
+ if (!String.IsNullOrWhiteSpace(dsr.Notice3))
+ {
+ dsr.Notice3 += ", " + sr.Notice3;
+ }
+ else
+ {
+ dsr.Notice3 = sr.Notice3;
+ }
+ }
+ if (!String.IsNullOrWhiteSpace(sr.Notice4))
+ {
+ if (!String.IsNullOrWhiteSpace(dsr.Notice4))
+ {
+ dsr.Notice4 += ", " + sr.Notice4;
+ }
+ else
+ {
+ dsr.Notice4 = sr.Notice4;
+ }
+
+ }
}
}
}
- var abrAbwTagDict = GetAbrechenbareAbwesenheiten(pRO);
+
double wochensumme = 0;
for (int i = 1; i <= pRO.EndDate.Day; i++)
@@ -134,8 +142,11 @@ namespace AkggMid
if (abrAbwTagDict.ContainsKey(newSr.StartDate))
{
- newSr.Minutes = BerechneMinutenProTag(BerechneStundenProWoche(pRO, newSr.StartDate));
- newSr.Notice = "Abwesenheit (erstattet)";
+ var info = abrAbwTagDict[newSr.StartDate];
+ newSr.Minutes = (double)info.MinutenLautStundenplan;
+ //newSr.Minutes = BerechneMinutenProTag(BerechneStundenProWoche(pRO, newSr.StartDate));
+ newSr.Notice = info.AbwesenheitsNotiz;
+ newSr.Notice5 = "x";
}
}
else
@@ -174,14 +185,14 @@ namespace AkggMid
double stdGesamt = 0;
foreach (var record in result)
{
- if (record.StartDate.DayOfWeek != DayOfWeek.Saturday && record.StartDate.DayOfWeek != DayOfWeek.Sunday && IstAbwesend(record.StartDate))
- {
- record.Notice5 = "x";
- }
- else
- {
- record.Notice5 = "";
- }
+ //if (record.StartDate.DayOfWeek != DayOfWeek.Saturday && record.StartDate.DayOfWeek != DayOfWeek.Sunday && IstAbwesend(record.StartDate))
+ //{
+ // record.Notice5 = "x";
+ //}
+ //else
+ //{
+ // record.Notice5 = "";
+ //}
if (record.IstFerien) // Wochensumme
{
stdGesamt += Math.Round(record.Minutes / 60, 2, MidpointRounding.AwayFromZero); //Anpassung, das Wochensumme nicht mehr gerundet auf 15 min
@@ -383,14 +394,22 @@ where scap2e.EmployeeOid = {0} and scap.Start <= '{1:yyyy-MM-dd}' and scap.EndDa
}
- public Dictionary GetAbrechenbareAbwesenheiten(ServicesOverviewRO ro)
+ public Dictionary GetAbrechenbareAbwesenheiten(ServicesOverviewRO ro)
{
//Herr Kloss meint, der erste Tag einer Abwesenheit darf ein fünftel der Wochenstundenzahl abgerechnet werden,
//aber nur bis 5 mal im Zeitraum 01.01.2023 bis 21.07.2023 // PLUS zusätzlich ein 6. Tag ABER nur im Juli 2023, nicht träglich
- //und bis 10 mal im Schuljahr ab 2023/2024
-
- DateTime startSchuljahr = DateTime.MinValue;
- DateTime endeSchuljahr = DateTime.MinValue;
+ //und bis 6 mal im Schuljahr ab 2023/2024
+
+ // Abwesensheiten <24h_a dürfen immer abgerechnet werden, da das Bescheidsagen weniger als 24h vor Betreuung geschah
+ // Abwesensheiten <24h_n.a dürfen bis 6 mal im Jahr abgerechnet werden, da das Bescheidsagen weniger als 24h vor Betreuung geschah
+ // Abwesensheiten >24h dürfen beim Jugendamt nicht abgerechnet werden, das rechtzeitig > 24 h Bescheid gesagt wurde
+ // Abwesensheiten >24h dürfen nur beim Sozialamt abgerechnet werden aber nur bis 6 mal im Schuljahr
+ // Abwesenheit S_oA soll ignoriert werden
+ // Abwesenheit "S_Abwesenheit nicht abrechenbar" soll nur als x angezeigt werden
+
+ bool istJugendamt = !String.IsNullOrEmpty(ro.Costbearer) && ro.Costbearer.StartsWith("SEK -Jugend und Familie-");
+
+
Dictionary serviceRecordDates = new Dictionary();
@@ -404,69 +423,155 @@ where scap2e.EmployeeOid = {0} and scap.Start <= '{1:yyyy-MM-dd}' and scap.EndDa
}
}
}
- DateTime dt;
- if (DateTime.TryParse(servicesOverviewRO.ApprovedStartDate, out dt))
+
+ DateTime startSchuljahr = DateTime.MinValue;
+ DateTime endeSchuljahr = DateTime.MinValue;
+
+ //Berechne Schuljahrstart
+ var vs = new CustomVacationService();
+ var ferien = vs.GetFerien(vs.Bundesland);
+ FerienDC sommerFerienVorjahr = null;
+ FerienDC sommerFerienAktuellesJahr = null;
+ FerienDC sommerFerienNaechstesJahr = null;
+ foreach (var f in ferien)
{
- startSchuljahr = dt;
+ if (f.Name.Contains(String.Format("Sommerferien {0}", ro.StartDate.Year - 1)))
+ {
+ sommerFerienVorjahr = f;
+ }
+ else if (f.Name.Contains(String.Format("Sommerferien {0}", ro.StartDate.Year)))
+ {
+ sommerFerienAktuellesJahr = f;
+ }
+ else if (f.Name.Contains(String.Format("Sommerferien {0}", ro.StartDate.Year + 1)))
+ {
+ sommerFerienNaechstesJahr = f;
+ }
}
- if (DateTime.TryParse(servicesOverviewRO.ApprovedEndDate, out dt))
+
+ if (sommerFerienAktuellesJahr != null)
{
- endeSchuljahr = dt;
+ if (ro.StartDate <= sommerFerienAktuellesJahr.Ende)
+ {
+ endeSchuljahr = sommerFerienAktuellesJahr.Start.AddDays(-1);
+ if (sommerFerienVorjahr != null)
+ {
+ startSchuljahr = sommerFerienVorjahr.Ende.AddDays(1);
+ }
+ }
+ else
+ {
+ startSchuljahr = sommerFerienAktuellesJahr.Ende.AddDays(1);
+ if (sommerFerienNaechstesJahr != null)
+ {
+ endeSchuljahr = sommerFerienNaechstesJahr.Start.AddDays(-1);
+ }
+ }
}
+
+ int maxAnzahl = 6;
+
+ //Sonderregelung
+ //if (endeSchuljahr <= new DateTime(2023, 7, 21))
+ //{
+ // startSchuljahr = new DateTime(2023, 1, 1);
+ // endeSchuljahr = new DateTime(2023, 7, 21);
+
+ // maxAnzahl = 5;
+ //}
+
-
- int maxAnzahl = 10;
-
- if (startSchuljahr < new DateTime(2023, 7, 21))
- {
- startSchuljahr = new DateTime(2023, 1, 1);
- endeSchuljahr = new DateTime(2023, 7, 21);
-
- maxAnzahl = 5;
- }
-
int gesamtAnzahl = 0;
- Dictionary abrechenbareTage = new Dictionary();
+ var abrechenbareTage = new Dictionary();
var c = DAOFactory.GenericDAO.LoadByID(servicesOverviewRO.CustomerOid);
foreach (AbsenceTime at in c.AbsenceTimes.OrderBy(a => a.Start))
{
- if (at.Start >= startSchuljahr && at.Start <= endeSchuljahr && (at.End == null || at.End >= startSchuljahr))
+ if (at.AbsenceReason.Description.Contains("<24h") || at.AbsenceReason.Description.Contains(">24h") || at.AbsenceReason.Description.StartsWith("S_Abwesenheit nicht abrechenbar") || at.AbsenceReason.Description.StartsWith("S_JA"))
{
-
- DateTime dtIterator = at.Start.Value;
- DateTime end = endeSchuljahr;
- if (at.End.HasValue)
+ if (at.Start >= startSchuljahr && at.Start <= endeSchuljahr && (at.End == null || at.End >= startSchuljahr))
{
- end = at.End.Value;
- }
+ var maxAnzahlIntern = maxAnzahl;
- // PLUS zusätzlich ein 6. Tag ABER nur im Juli 2023, nicht nachträglich
- while (dtIterator <= end && (gesamtAnzahl < maxAnzahl
- || (end > new DateTime(2023, 06, 30) && end <= new DateTime(2023, 07, 21) && gesamtAnzahl < maxAnzahl + 1)))
- {
- if (dtIterator.DayOfWeek != DayOfWeek.Saturday && dtIterator.DayOfWeek != DayOfWeek.Sunday && !serviceRecordDates.ContainsKey(String.Format("{0:dd.MM.yyyy}", dtIterator)))
+ if (at.AbsenceReason.Description.Contains("<24h_SA"))
{
- bool istAbrechenbar = true;
- if (tandemBetreuungHelper != null)
+ maxAnzahlIntern = Int32.MaxValue; // Dürfen immer abgerechnet werden
+ }
+ else if ((at.AbsenceReason.Description.Contains(">24h") && istJugendamt) || at.AbsenceReason.Description.StartsWith("S_Abwesenheit nicht abrechenbar"))
+ {
+ maxAnzahlIntern = 0; // Darf beim Jugendamt nie abgerechnet werden
+ }
+
+ DateTime dtIterator = at.Start.Value;
+ DateTime end = endeSchuljahr;
+ if (at.End.HasValue)
+ {
+ end = at.End.Value;
+ }
+
+ // PLUS zusätzlich ein 6. Tag ABER nur im Juli 2023, nicht nachträglich
+ //while (dtIterator <= end && (gesamtAnzahl < maxAnzahlIntern
+ // || (end > new DateTime(2023, 06, 30) && end <= new DateTime(2023, 07, 21) && gesamtAnzahl < maxAnzahlIntern + 1)))
+ while (dtIterator <= end)
+ {
+ //if (dtIterator.DayOfWeek != DayOfWeek.Saturday && dtIterator.DayOfWeek != DayOfWeek.Sunday && !serviceRecordDates.ContainsKey(String.Format("{0:dd.MM.yyyy}", dtIterator)))
+ if (dtIterator.DayOfWeek != DayOfWeek.Saturday && dtIterator.DayOfWeek != DayOfWeek.Sunday && !vs.IstFeiertag(dtIterator))
{
- istAbrechenbar = false;
-
- if (tandemBetreuungHelper.IstAbwesend(dtIterator))
+
+ bool istAbrechenbar = true;
+ if (tandemBetreuungHelper != null)
{
- istAbrechenbar = true;
+ istAbrechenbar = false;
+
+ if (tandemBetreuungHelper.IstAbwesend(dtIterator))
+ {
+ istAbrechenbar = true;
+ }
+ }
+
+
+ if (istAbrechenbar)
+ {
+ decimal stunden = BerechneStundenplanZeit(c, dtIterator);
+ if (stunden > 0)
+ {
+
+ var info = new AbwesenheitsInfo();
+
+ info.AbsenceTime = MapperFactory.AbsenceTimeDC_AbsenceTime.MapToNewDC(at);
+ info.AbwesenheitsNotiz = "Abwesenheit nicht abrechenbar";
+
+ if (gesamtAnzahl < maxAnzahlIntern)
+ {
+
+ info.MinutenLautStundenplan = stunden * 60;
+
+ if (maxAnzahlIntern < Int32.MaxValue)
+ {
+ gesamtAnzahl++;
+
+ info.NummerAbrechenbarerTag = gesamtAnzahl;
+
+ info.AbwesenheitsNotiz = String.Format("Tag {0:0}/{1:0} (Abwesenheit gem. §6 LV)", info.NummerAbrechenbarerTag, maxAnzahl);
+ }
+ }
+
+
+ if (at.AbsenceReason.Description.Contains("<24h_SA"))
+ {
+ info.AbwesenheitsNotiz = "Abwesenheit gem. §8 Ziff3 LV";
+ }
+
+
+ abrechenbareTage.Add(dtIterator, info);
+ }
}
}
- if (istAbrechenbar)
- {
- abrechenbareTage.Add(dtIterator, true);
- gesamtAnzahl++;
- }
+ dtIterator = dtIterator.AddDays(1);
}
- dtIterator = dtIterator.AddDays(1);
- }
+ }
}
}
@@ -506,6 +611,81 @@ where scap2e.EmployeeOid = {0} and scap.Start <= '{1:yyyy-MM-dd}' and scap.EndDa
return abrechenbareTage;
}
+
+ private decimal BerechneStundenplanZeit(Customer kind, DateTime tag)
+ {
+ decimal stunden = 0;
+
+ if (kind.Arbeitszeiten != null)
+ {
+ foreach (var az in kind.Arbeitszeiten)
+ {
+ if ((!az.GueltigVon.HasValue || az.GueltigVon.Value <= tag) &&
+ (!az.GueltigBis.HasValue || az.GueltigBis.Value >= tag))
+ {
+ stunden = GetArbeitszeitStundenFuerTag(az, tag);
+ }
+ }
+ }
+
+
+ return stunden;
+ }
+
+ protected decimal GetArbeitszeitStundenFuerTag(Arbeitszeit az, DateTime tag)
+ {
+ var day = tag.DayOfWeek;
+ decimal stunden = 0;
+ foreach (var ae in az.ArbeitszeitEintraege)
+ {
+ if (SindAmGleichenWochentag(day, ae.Tag))
+ {
+ String dateStr1 = String.Format("{0:dd.MM.yyyy} {1}", tag, ae.UhrzeitVon);
+ String dateStr2 = String.Format("{0:dd.MM.yyyy} {1}", tag, ae.UhrzeitBis);
+
+ DateTime date1;
+ DateTime date2;
+
+ if (DateTime.TryParse(dateStr1, out date1) && DateTime.TryParse(dateStr2, out date2))
+ {
+
+ stunden += (decimal)date2.Subtract(date1).TotalHours;
+ }
+ }
+ }
+
+ return stunden;
+ }
+
+ private bool SindAmGleichenWochentag(DayOfWeek day, AppointmentDayOfWeek aeTag)
+ {
+ if (day == DayOfWeek.Monday && aeTag == AppointmentDayOfWeek.Montag)
+ {
+ return true;
+ }
+ if (day == DayOfWeek.Tuesday && aeTag == AppointmentDayOfWeek.Dienstag)
+ {
+ return true;
+ }
+ if (day == DayOfWeek.Wednesday && aeTag == AppointmentDayOfWeek.Mittwoch)
+ {
+ return true;
+ }
+ if (day == DayOfWeek.Thursday && aeTag == AppointmentDayOfWeek.Donnerstag)
+ {
+ return true;
+ }
+ if (day == DayOfWeek.Friday && aeTag == AppointmentDayOfWeek.Freitag)
+ {
+ return true;
+ }
+ if (day == DayOfWeek.Saturday && aeTag == AppointmentDayOfWeek.Samstag)
+ {
+ return true;
+ }
+ return false;
+ }
+
public double BerechneMinutenProTag(double flsPerWeek)
{
var minutenProTag = flsPerWeek * 60 / 5;
@@ -533,4 +713,14 @@ where scap2e.EmployeeOid = {0} and scap.Start <= '{1:yyyy-MM-dd}' and scap.EndDa
return minutenGerundet;
}
}
+
+ public class AbwesenheitsInfo
+ {
+ public AbsenceTimeDC AbsenceTime { get; set; }
+
+ public decimal MinutenLautStundenplan { get; set; }
+
+ public String AbwesenheitsNotiz { get; set; }
+ public int NummerAbrechenbarerTag { get; set; }
+ }
}
diff --git a/ReportImp/DiakonieKKKleve/AuslastungBerechnung.cs b/ReportImp/DiakonieKKKleve/AuslastungBerechnung.cs
new file mode 100644
index 000000000..548a53578
--- /dev/null
+++ b/ReportImp/DiakonieKKKleve/AuslastungBerechnung.cs
@@ -0,0 +1,71 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using BeWo.Report;
+using BeWo.Data.Entities;
+using BeWo.Data.Access;
+using BeWo.Service.DCEntityMapper;
+using BeWo.Service.Plugins;
+using BeWo.Service.ServiceImplementations;
+using BS.Shared.Core;
+using BS.Shared;
+using BS.Shared.Extensions;
+using BS.Shared.Services;
+using BeWo.Report.ReportObjects;
+
+namespace DiakonieKKKleve
+{
+ public class CustomAuslastungBerechnung : AuslastungBerechnung
+ {
+ protected override MitarbeiterauslastungRO.SupportConceptDetail GetOrCreateSupportConceptDetail(Employee emp, Customer customer, SupportConceptApprovalPeriod scap, CostBearer2SupportConcept cb2sc, DateTime start, DateTime ende, AuslastungBerechnungHelper anteil, bool ausHauptbetreuung)
+ {
+ if (customer.Person.LastName == "Fischer")
+ {
+ int test = 0;
+ }
+
+ bool isSozioMainAttendant = false;
+ bool isHauptbetreuung = false;
+ foreach (Employee2Customer e2c in emp.Employee2CustomerList)
+ {
+ if (e2c.Customer.Oid == customer.Oid && e2c.ValueList.Count > 0)
+ {
+ var v = e2c.ValueList[0];
+ if (v.Entry.Value.Contains("Soziotherapeut"))
+ {
+ isSozioMainAttendant = true;
+ }
+ else if (v.Entry.Value.Contains("Hauptbetreuung"))
+ {
+ isHauptbetreuung = true;
+ }
+ }
+
+ }
+
+ if (scap.ServiceCategory != null && scap.ServiceCategory.Name.ToLower().Contains("therapie") && !isSozioMainAttendant)
+ {
+ return null;
+ }
+ if (scap.ServiceCategory == null || !scap.ServiceCategory.Name.ToLower().Contains("therapie") && isSozioMainAttendant)
+ {
+ return null;
+ }
+ return base.GetOrCreateSupportConceptDetail(emp, customer, scap, cb2sc, start, ende, anteil, ausHauptbetreuung);
+ }
+
+ public override void CalculateSoll(MitarbeiterauslastungRO.SupportConceptDetail scDC, DateTime date)
+ {
+ base.CalculateSoll(scDC, date);
+
+ if (scDC.Customer != null)
+ {
+ var c = DAOFactory.GenericDAO.LoadByID(scDC.Customer.Oid.Value);
+
+
+ }
+
+ }
+
+ }
+}
diff --git a/ReportImp/DiakonieKKKleve/DiakonieKKKleve.csproj b/ReportImp/DiakonieKKKleve/DiakonieKKKleve.csproj
index 907aa761d..762ac6e6a 100644
--- a/ReportImp/DiakonieKKKleve/DiakonieKKKleve.csproj
+++ b/ReportImp/DiakonieKKKleve/DiakonieKKKleve.csproj
@@ -63,6 +63,7 @@
+
@@ -144,6 +145,12 @@
FinanzauswertungVP.cs
+
+ Component
+
+
+ Mitarbeiterauslastung.cs
+
Component
@@ -275,6 +282,9 @@
FinanzauswertungVP.cs
+
+ Mitarbeiterauslastung.cs
+
MitarbeiterstundenkontoJahr.cs
Designer
diff --git a/ReportImp/DiakonieKKKleve/Mitarbeiterauslastung.cs b/ReportImp/DiakonieKKKleve/Mitarbeiterauslastung.cs
new file mode 100644
index 000000000..ef915afdd
--- /dev/null
+++ b/ReportImp/DiakonieKKKleve/Mitarbeiterauslastung.cs
@@ -0,0 +1,28 @@
+using System;
+using BeWo.Report;
+using BeWo.Report.ReportObjects;
+using BS.Shared.Core;
+
+
+namespace DiakonieKKKleve
+{
+ [IDSpecificClass(Identifier = "Mitarbeiterauslastung")]
+ public partial class Mitarbeiterauslastung : DevExpress.XtraReports.UI.XtraReport, IBeWoReport
+ {
+
+
+ public Mitarbeiterauslastung()
+ {
+ InitializeComponent();
+ }
+
+ public void SetReportDataSource(MitarbeiterauslastungRO pRO)
+ {
+ AuslastungBerechnung b = new CustomAuslastungBerechnung();
+ b.CreateReport(pRO);
+
+ this.bindingSource1.DataSource = pRO;
+ }
+
+ }
+}
diff --git a/ReportImp/DiakonieKKKleve/Mitarbeiterauslastung.designer.cs b/ReportImp/DiakonieKKKleve/Mitarbeiterauslastung.designer.cs
new file mode 100644
index 000000000..d27590306
--- /dev/null
+++ b/ReportImp/DiakonieKKKleve/Mitarbeiterauslastung.designer.cs
@@ -0,0 +1,546 @@
+using BeWo.Report.ReportObjects;
+namespace DiakonieKKKleve
+{
+ partial class Mitarbeiterauslastung
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ this.Detail = new DevExpress.XtraReports.UI.DetailBand();
+ this.Detail1 = new DevExpress.XtraReports.UI.DetailBand();
+ this.xrLabel2 = new DevExpress.XtraReports.UI.XRLabel();
+ this.xrLabel1 = new DevExpress.XtraReports.UI.XRLabel();
+ this.xrTableDetail = new DevExpress.XtraReports.UI.XRTable();
+ this.xrTableRowDetail = new DevExpress.XtraReports.UI.XRTableRow();
+ this.xrTableCell3 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.xrTableCell19 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.xrTableCell2 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.xrTableCell28 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.DetailReport = new DevExpress.XtraReports.UI.DetailReportBand();
+ this.DetailReport1 = new DevExpress.XtraReports.UI.DetailReportBand();
+ this.Detail2 = new DevExpress.XtraReports.UI.DetailBand();
+ this.GroupHeader2 = new DevExpress.XtraReports.UI.GroupHeaderBand();
+ this.xrTableHeader = new DevExpress.XtraReports.UI.XRTable();
+ this.xrTableRowHeader = new DevExpress.XtraReports.UI.XRTableRow();
+ this.xrTableCell5 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.xrTableCell4 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.xrTableCell1 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.xrTableCell9 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.GroupFooter1 = new DevExpress.XtraReports.UI.GroupFooterBand();
+ this.xrTable1 = new DevExpress.XtraReports.UI.XRTable();
+ this.xrTableRow1 = new DevExpress.XtraReports.UI.XRTableRow();
+ this.xrTableCell35 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.xrTableCell38 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.xrTableCell6 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.cellSollGesamt = new DevExpress.XtraReports.UI.XRTableCell();
+ this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand();
+ this.lblMonat = new DevExpress.XtraReports.UI.XRLabel();
+ this.pageFooterBand1 = new DevExpress.XtraReports.UI.PageFooterBand();
+ this.xrPageInfo2 = new DevExpress.XtraReports.UI.XRPageInfo();
+ this.xrPageInfo1 = new DevExpress.XtraReports.UI.XRPageInfo();
+ this.Title = new DevExpress.XtraReports.UI.XRControlStyle();
+ this.FieldCaption = new DevExpress.XtraReports.UI.XRControlStyle();
+ this.PageInfo = new DevExpress.XtraReports.UI.XRControlStyle();
+ this.DataField = new DevExpress.XtraReports.UI.XRControlStyle();
+ this.fieldFLS = new DevExpress.XtraReports.UI.CalculatedField();
+ this.topMarginBand1 = new DevExpress.XtraReports.UI.TopMarginBand();
+ this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand();
+ this.fieldTotalSC = new DevExpress.XtraReports.UI.CalculatedField();
+ this.fieldTotalEmp = new DevExpress.XtraReports.UI.CalculatedField();
+ this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
+ ((System.ComponentModel.ISupportInitialize)(this.xrTableDetail)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.xrTableHeader)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
+ //
+ // Detail
+ //
+ this.Detail.Expanded = false;
+ this.Detail.HeightF = 0F;
+ this.Detail.Name = "Detail";
+ this.Detail.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
+ this.Detail.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
+ //
+ // Detail1
+ //
+ this.Detail1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
+ this.xrLabel2,
+ this.xrLabel1});
+ this.Detail1.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.Detail1.HeightF = 50F;
+ this.Detail1.KeepTogether = true;
+ this.Detail1.KeepTogetherWithDetailReports = true;
+ this.Detail1.Name = "Detail1";
+ this.Detail1.StylePriority.UseFont = false;
+ //
+ // xrLabel2
+ //
+ this.xrLabel2.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Bold);
+ this.xrLabel2.LocationFloat = new DevExpress.Utils.PointFloat(0F, 25F);
+ this.xrLabel2.Multiline = true;
+ this.xrLabel2.Name = "xrLabel2";
+ this.xrLabel2.SizeF = new System.Drawing.SizeF(676.9999F, 25F);
+ this.xrLabel2.StyleName = "Title";
+ this.xrLabel2.StylePriority.UseFont = false;
+ this.xrLabel2.Text = "Wochenstunden: [WeeklyTotalHoursByContract!0.00], FLS/Woche: [FLSTotalHoursByCont" +
+ "ract!0.00]";
+ //
+ // xrLabel1
+ //
+ this.xrLabel1.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
+ new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.FullName")});
+ this.xrLabel1.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Bold);
+ this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
+ this.xrLabel1.Multiline = true;
+ this.xrLabel1.Name = "xrLabel1";
+ this.xrLabel1.SizeF = new System.Drawing.SizeF(676.9999F, 25F);
+ this.xrLabel1.StyleName = "Title";
+ this.xrLabel1.StylePriority.UseFont = false;
+ this.xrLabel1.Text = "xrLabel1";
+ //
+ // xrTableDetail
+ //
+ this.xrTableDetail.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
+ | DevExpress.XtraPrinting.BorderSide.Bottom)));
+ this.xrTableDetail.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.xrTableDetail.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
+ this.xrTableDetail.Name = "xrTableDetail";
+ this.xrTableDetail.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
+ this.xrTableDetail.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
+ this.xrTableRowDetail});
+ this.xrTableDetail.SizeF = new System.Drawing.SizeF(640F, 25F);
+ this.xrTableDetail.StylePriority.UseBorders = false;
+ this.xrTableDetail.StylePriority.UseFont = false;
+ this.xrTableDetail.StylePriority.UsePadding = false;
+ this.xrTableDetail.StylePriority.UseTextAlignment = false;
+ this.xrTableDetail.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
+ //
+ // xrTableRowDetail
+ //
+ this.xrTableRowDetail.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
+ this.xrTableCell3,
+ this.xrTableCell19,
+ this.xrTableCell2,
+ this.xrTableCell28});
+ this.xrTableRowDetail.Name = "xrTableRowDetail";
+ this.xrTableRowDetail.Weight = 1D;
+ //
+ // xrTableCell3
+ //
+ this.xrTableCell3.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
+ new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.SupportConceptDetailList.CustomerFullName")});
+ this.xrTableCell3.Name = "xrTableCell3";
+ this.xrTableCell3.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 2, 0, 0, 100F);
+ this.xrTableCell3.StylePriority.UseFont = false;
+ this.xrTableCell3.StylePriority.UsePadding = false;
+ this.xrTableCell3.StylePriority.UseTextAlignment = false;
+ this.xrTableCell3.Text = "xrTableCell3";
+ this.xrTableCell3.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
+ this.xrTableCell3.Weight = 0.18034265103697025D;
+ //
+ // xrTableCell19
+ //
+ this.xrTableCell19.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
+ new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.SupportConceptDetailList.TimeRangeString", "{0:0.00}")});
+ this.xrTableCell19.Name = "xrTableCell19";
+ this.xrTableCell19.Text = "xrTableCell19";
+ this.xrTableCell19.Weight = 0.15329125338142471D;
+ //
+ // xrTableCell2
+ //
+ this.xrTableCell2.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
+ new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.SupportConceptDetailList.OrganisationName")});
+ this.xrTableCell2.Name = "xrTableCell2";
+ this.xrTableCell2.Text = "xrTableCell2";
+ this.xrTableCell2.Weight = 0.15329125338142469D;
+ //
+ // xrTableCell28
+ //
+ this.xrTableCell28.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
+ new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.SupportConceptDetailList.ApprovedHoursPerWeek", "{0:0.00}")});
+ this.xrTableCell28.Name = "xrTableCell28";
+ this.xrTableCell28.Text = "xrTableCell28";
+ this.xrTableCell28.Weight = 0.090171325518485085D;
+ //
+ // DetailReport
+ //
+ this.DetailReport.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
+ this.Detail1,
+ this.DetailReport1});
+ this.DetailReport.DataMember = "EmployeeDetailList";
+ this.DetailReport.DataSource = this.bindingSource1;
+ this.DetailReport.Level = 0;
+ this.DetailReport.Name = "DetailReport";
+ //
+ // DetailReport1
+ //
+ this.DetailReport1.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
+ this.Detail2,
+ this.GroupHeader2,
+ this.GroupFooter1});
+ this.DetailReport1.DataMember = "EmployeeDetailList.SupportConceptDetailList";
+ this.DetailReport1.DataSource = this.bindingSource1;
+ this.DetailReport1.Level = 0;
+ this.DetailReport1.Name = "DetailReport1";
+ //
+ // Detail2
+ //
+ this.Detail2.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
+ this.xrTableDetail});
+ this.Detail2.HeightF = 25F;
+ this.Detail2.Name = "Detail2";
+ //
+ // GroupHeader2
+ //
+ this.GroupHeader2.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
+ this.xrTableHeader});
+ this.GroupHeader2.HeightF = 40F;
+ this.GroupHeader2.Name = "GroupHeader2";
+ this.GroupHeader2.RepeatEveryPage = true;
+ //
+ // xrTableHeader
+ //
+ this.xrTableHeader.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
+ | DevExpress.XtraPrinting.BorderSide.Right)
+ | DevExpress.XtraPrinting.BorderSide.Bottom)));
+ this.xrTableHeader.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Bold);
+ this.xrTableHeader.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
+ this.xrTableHeader.Name = "xrTableHeader";
+ this.xrTableHeader.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
+ this.xrTableHeader.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
+ this.xrTableRowHeader});
+ this.xrTableHeader.SizeF = new System.Drawing.SizeF(640F, 40F);
+ this.xrTableHeader.StylePriority.UseBorders = false;
+ this.xrTableHeader.StylePriority.UseFont = false;
+ this.xrTableHeader.StylePriority.UsePadding = false;
+ this.xrTableHeader.StylePriority.UseTextAlignment = false;
+ this.xrTableHeader.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
+ //
+ // xrTableRowHeader
+ //
+ this.xrTableRowHeader.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
+ this.xrTableCell5,
+ this.xrTableCell4,
+ this.xrTableCell1,
+ this.xrTableCell9});
+ this.xrTableRowHeader.Name = "xrTableRowHeader";
+ this.xrTableRowHeader.Weight = 1.5999999999999996D;
+ //
+ // xrTableCell5
+ //
+ this.xrTableCell5.Name = "xrTableCell5";
+ this.xrTableCell5.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 2, 0, 0, 100F);
+ this.xrTableCell5.StylePriority.UsePadding = false;
+ this.xrTableCell5.StylePriority.UseTextAlignment = false;
+ this.xrTableCell5.Text = "Klient/in";
+ this.xrTableCell5.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
+ this.xrTableCell5.Weight = 0.18034264782021736D;
+ //
+ // xrTableCell4
+ //
+ this.xrTableCell4.Name = "xrTableCell4";
+ this.xrTableCell4.Text = "Zeitraum";
+ this.xrTableCell4.Weight = 0.15329125478030675D;
+ //
+ // xrTableCell1
+ //
+ this.xrTableCell1.Name = "xrTableCell1";
+ this.xrTableCell1.Text = "Kostenträger";
+ this.xrTableCell1.Weight = 0.15329125478030678D;
+ //
+ // xrTableCell9
+ //
+ this.xrTableCell9.Multiline = true;
+ this.xrTableCell9.Name = "xrTableCell9";
+ this.xrTableCell9.Text = "Bewilligt/Woche";
+ this.xrTableCell9.Weight = 0.090171325937473845D;
+ //
+ // GroupFooter1
+ //
+ this.GroupFooter1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
+ this.xrTable1});
+ this.GroupFooter1.HeightF = 60F;
+ this.GroupFooter1.Level = 1;
+ this.GroupFooter1.Name = "GroupFooter1";
+ //
+ // xrTable1
+ //
+ this.xrTable1.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.xrTable1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
+ this.xrTable1.Name = "xrTable1";
+ this.xrTable1.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
+ this.xrTable1.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
+ this.xrTableRow1});
+ this.xrTable1.SizeF = new System.Drawing.SizeF(639.9999F, 25F);
+ this.xrTable1.StylePriority.UseBorders = false;
+ this.xrTable1.StylePriority.UseFont = false;
+ this.xrTable1.StylePriority.UsePadding = false;
+ this.xrTable1.StylePriority.UseTextAlignment = false;
+ this.xrTable1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
+ //
+ // xrTableRow1
+ //
+ this.xrTableRow1.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
+ this.xrTableCell35,
+ this.xrTableCell38,
+ this.xrTableCell6,
+ this.cellSollGesamt});
+ this.xrTableRow1.Name = "xrTableRow1";
+ this.xrTableRow1.Weight = 1D;
+ //
+ // xrTableCell35
+ //
+ this.xrTableCell35.Name = "xrTableCell35";
+ this.xrTableCell35.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 2, 0, 0, 100F);
+ this.xrTableCell35.StylePriority.UseFont = false;
+ this.xrTableCell35.StylePriority.UsePadding = false;
+ this.xrTableCell35.StylePriority.UseTextAlignment = false;
+ this.xrTableCell35.Text = "Gesamt";
+ this.xrTableCell35.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
+ this.xrTableCell35.Weight = 0.18034254096455143D;
+ //
+ // xrTableCell38
+ //
+ this.xrTableCell38.Name = "xrTableCell38";
+ this.xrTableCell38.Weight = 0.15329111579090118D;
+ //
+ // xrTableCell6
+ //
+ this.xrTableCell6.Name = "xrTableCell6";
+ this.xrTableCell6.Weight = 0.15329140580312939D;
+ //
+ // cellSollGesamt
+ //
+ this.cellSollGesamt.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
+ new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.ApprovedHoursPerWeek", "{0:0.00}")});
+ this.cellSollGesamt.Name = "cellSollGesamt";
+ this.cellSollGesamt.Text = "cellSollGesamt";
+ this.cellSollGesamt.Weight = 0.090171342851318267D;
+ //
+ // ReportHeader
+ //
+ this.ReportHeader.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
+ this.lblMonat});
+ this.ReportHeader.HeightF = 60F;
+ this.ReportHeader.Name = "ReportHeader";
+ //
+ // lblMonat
+ //
+ this.lblMonat.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
+ new DevExpress.XtraReports.UI.XRBinding("Text", null, "ReportStartDate", "Auslastung {0:MMMM yy}")});
+ this.lblMonat.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold);
+ this.lblMonat.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
+ this.lblMonat.Multiline = true;
+ this.lblMonat.Name = "lblMonat";
+ this.lblMonat.SizeF = new System.Drawing.SizeF(676.9999F, 25F);
+ this.lblMonat.StyleName = "Title";
+ this.lblMonat.StylePriority.UseFont = false;
+ this.lblMonat.Text = "lblMonat";
+ //
+ // pageFooterBand1
+ //
+ this.pageFooterBand1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
+ this.xrPageInfo2,
+ this.xrPageInfo1});
+ this.pageFooterBand1.HeightF = 48F;
+ this.pageFooterBand1.Name = "pageFooterBand1";
+ //
+ // xrPageInfo2
+ //
+ this.xrPageInfo2.Font = new System.Drawing.Font("Arial", 8F);
+ this.xrPageInfo2.Format = "Seite {0} von {1}";
+ this.xrPageInfo2.LocationFloat = new DevExpress.Utils.PointFloat(342.4169F, 25F);
+ this.xrPageInfo2.Name = "xrPageInfo2";
+ this.xrPageInfo2.SizeF = new System.Drawing.SizeF(297.5831F, 23F);
+ this.xrPageInfo2.StyleName = "PageInfo";
+ this.xrPageInfo2.StylePriority.UseFont = false;
+ this.xrPageInfo2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
+ //
+ // xrPageInfo1
+ //
+ this.xrPageInfo1.Font = new System.Drawing.Font("Arial", 8F);
+ this.xrPageInfo1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 25F);
+ this.xrPageInfo1.Name = "xrPageInfo1";
+ this.xrPageInfo1.PageInfo = DevExpress.XtraPrinting.PageInfo.DateTime;
+ this.xrPageInfo1.SizeF = new System.Drawing.SizeF(287F, 23F);
+ this.xrPageInfo1.StyleName = "PageInfo";
+ this.xrPageInfo1.StylePriority.UseFont = false;
+ //
+ // Title
+ //
+ this.Title.BackColor = System.Drawing.Color.White;
+ this.Title.BorderColor = System.Drawing.SystemColors.ControlText;
+ this.Title.Borders = DevExpress.XtraPrinting.BorderSide.None;
+ this.Title.BorderWidth = 1;
+ this.Title.Font = new System.Drawing.Font("Times New Roman", 24F);
+ this.Title.ForeColor = System.Drawing.Color.Black;
+ this.Title.Name = "Title";
+ //
+ // FieldCaption
+ //
+ this.FieldCaption.BackColor = System.Drawing.Color.White;
+ this.FieldCaption.BorderColor = System.Drawing.SystemColors.ControlText;
+ this.FieldCaption.Borders = DevExpress.XtraPrinting.BorderSide.None;
+ this.FieldCaption.BorderWidth = 1;
+ this.FieldCaption.Font = new System.Drawing.Font("Times New Roman", 10F, System.Drawing.FontStyle.Bold);
+ this.FieldCaption.ForeColor = System.Drawing.Color.Black;
+ this.FieldCaption.Name = "FieldCaption";
+ //
+ // PageInfo
+ //
+ this.PageInfo.BackColor = System.Drawing.Color.White;
+ this.PageInfo.BorderColor = System.Drawing.SystemColors.ControlText;
+ this.PageInfo.Borders = DevExpress.XtraPrinting.BorderSide.None;
+ this.PageInfo.BorderWidth = 1;
+ this.PageInfo.Font = new System.Drawing.Font("Times New Roman", 8F);
+ this.PageInfo.ForeColor = System.Drawing.Color.Black;
+ this.PageInfo.Name = "PageInfo";
+ //
+ // DataField
+ //
+ this.DataField.BackColor = System.Drawing.Color.White;
+ this.DataField.BorderColor = System.Drawing.SystemColors.ControlText;
+ this.DataField.Borders = DevExpress.XtraPrinting.BorderSide.None;
+ this.DataField.BorderWidth = 1;
+ this.DataField.Font = new System.Drawing.Font("Times New Roman", 8F);
+ this.DataField.ForeColor = System.Drawing.SystemColors.ControlText;
+ this.DataField.Name = "DataField";
+ //
+ // fieldFLS
+ //
+ this.fieldFLS.DataMember = "FLSReportGroups";
+ this.fieldFLS.Expression = "[TotalFLM] / 60";
+ this.fieldFLS.FieldType = DevExpress.XtraReports.UI.FieldType.Decimal;
+ this.fieldFLS.Name = "fieldFLS";
+ //
+ // topMarginBand1
+ //
+ this.topMarginBand1.HeightF = 50F;
+ this.topMarginBand1.Name = "topMarginBand1";
+ //
+ // bottomMarginBand1
+ //
+ this.bottomMarginBand1.HeightF = 30F;
+ this.bottomMarginBand1.Name = "bottomMarginBand1";
+ //
+ // fieldTotalSC
+ //
+ this.fieldTotalSC.DataMember = "EmployeeDetailList.SupportConceptDetailList";
+ this.fieldTotalSC.Expression = "[DirectIst]+[MittelbarIst]";
+ this.fieldTotalSC.FieldType = DevExpress.XtraReports.UI.FieldType.Decimal;
+ this.fieldTotalSC.Name = "fieldTotalSC";
+ //
+ // fieldTotalEmp
+ //
+ this.fieldTotalEmp.DataMember = "EmployeeDetailList";
+ this.fieldTotalEmp.Expression = "[DirectIst]+[MittelbarIst]";
+ this.fieldTotalEmp.FieldType = DevExpress.XtraReports.UI.FieldType.Decimal;
+ this.fieldTotalEmp.Name = "fieldTotalEmp";
+ //
+ // bindingSource1
+ //
+ this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.MitarbeiterauslastungRO);
+ //
+ // Mitarbeiterauslastung
+ //
+ this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
+ this.Detail,
+ this.DetailReport,
+ this.ReportHeader,
+ this.pageFooterBand1,
+ this.topMarginBand1,
+ this.bottomMarginBand1});
+ this.CalculatedFields.AddRange(new DevExpress.XtraReports.UI.CalculatedField[] {
+ this.fieldFLS,
+ this.fieldTotalSC,
+ this.fieldTotalEmp});
+ this.DataSource = this.bindingSource1;
+ this.Margins = new System.Drawing.Printing.Margins(100, 30, 50, 30);
+ this.PageHeight = 1169;
+ this.PageWidth = 827;
+ this.PaperKind = System.Drawing.Printing.PaperKind.A4;
+ this.StyleSheet.AddRange(new DevExpress.XtraReports.UI.XRControlStyle[] {
+ this.Title,
+ this.FieldCaption,
+ this.PageInfo,
+ this.DataField});
+ this.Version = "13.1";
+ ((System.ComponentModel.ISupportInitialize)(this.xrTableDetail)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.xrTableHeader)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.xrTable1)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this)).EndInit();
+
+ }
+
+ #endregion
+
+ private DevExpress.XtraReports.UI.DetailBand Detail;
+ private System.Windows.Forms.BindingSource bindingSource1;
+ private DevExpress.XtraReports.UI.DetailBand Detail1;
+ private DevExpress.XtraReports.UI.DetailReportBand DetailReport;
+ private DevExpress.XtraReports.UI.ReportHeaderBand ReportHeader;
+ private DevExpress.XtraReports.UI.XRLabel lblMonat;
+ private DevExpress.XtraReports.UI.PageFooterBand pageFooterBand1;
+ private DevExpress.XtraReports.UI.XRPageInfo xrPageInfo2;
+ private DevExpress.XtraReports.UI.XRPageInfo xrPageInfo1;
+ private DevExpress.XtraReports.UI.XRControlStyle Title;
+ private DevExpress.XtraReports.UI.XRControlStyle FieldCaption;
+ private DevExpress.XtraReports.UI.XRControlStyle PageInfo;
+ private DevExpress.XtraReports.UI.XRControlStyle DataField;
+ private DevExpress.XtraReports.UI.XRTable xrTableHeader;
+ private DevExpress.XtraReports.UI.XRTableRow xrTableRowHeader;
+ private DevExpress.XtraReports.UI.XRTableCell xrTableCell5;
+ private DevExpress.XtraReports.UI.XRTable xrTableDetail;
+ private DevExpress.XtraReports.UI.XRTableRow xrTableRowDetail;
+ private DevExpress.XtraReports.UI.XRTableCell xrTableCell3;
+ private DevExpress.XtraReports.UI.CalculatedField fieldFLS;
+ private DevExpress.XtraReports.UI.TopMarginBand topMarginBand1;
+ private DevExpress.XtraReports.UI.BottomMarginBand bottomMarginBand1;
+ private DevExpress.XtraReports.UI.XRTableCell xrTableCell4;
+ private DevExpress.XtraReports.UI.XRTableCell xrTableCell9;
+ private DevExpress.XtraReports.UI.XRTableCell xrTableCell19;
+ private DevExpress.XtraReports.UI.XRTableCell xrTableCell28;
+ private DevExpress.XtraReports.UI.XRTable xrTable1;
+ private DevExpress.XtraReports.UI.XRTableRow xrTableRow1;
+ private DevExpress.XtraReports.UI.XRTableCell xrTableCell35;
+ private DevExpress.XtraReports.UI.XRTableCell xrTableCell38;
+ private DevExpress.XtraReports.UI.XRTableCell cellSollGesamt;
+ private DevExpress.XtraReports.UI.DetailReportBand DetailReport1;
+ private DevExpress.XtraReports.UI.DetailBand Detail2;
+ private DevExpress.XtraReports.UI.GroupHeaderBand GroupHeader2;
+ private DevExpress.XtraReports.UI.XRLabel xrLabel1;
+ private DevExpress.XtraReports.UI.CalculatedField fieldTotalSC;
+ private DevExpress.XtraReports.UI.CalculatedField fieldTotalEmp;
+ private DevExpress.XtraReports.UI.GroupFooterBand GroupFooter1;
+ private DevExpress.XtraReports.UI.XRLabel xrLabel2;
+ private DevExpress.XtraReports.UI.XRTableCell xrTableCell1;
+ private DevExpress.XtraReports.UI.XRTableCell xrTableCell2;
+ private DevExpress.XtraReports.UI.XRTableCell xrTableCell6;
+ }
+}
diff --git a/ReportImp/DiakonieKKKleve/Mitarbeiterauslastung.resx b/ReportImp/DiakonieKKKleve/Mitarbeiterauslastung.resx
new file mode 100644
index 000000000..d25f3eba2
--- /dev/null
+++ b/ReportImp/DiakonieKKKleve/Mitarbeiterauslastung.resx
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
\ No newline at end of file
diff --git a/ReportImp/Fortis/CustomReportCreator.cs b/ReportImp/Fortis/CustomReportCreator.cs
index c0ea4b099..c2d24778c 100644
--- a/ReportImp/Fortis/CustomReportCreator.cs
+++ b/ReportImp/Fortis/CustomReportCreator.cs
@@ -76,6 +76,19 @@ namespace Fortis
public override XtraReport CreateServiceOverviewSingleCustomerReport(long customerOid, int month, int year, long orgaOid, long empOid, long? serviceCategoryOid, int startDay, int endDay)
{
+ var customer = DAOFactory.GenericDAO.LoadByID(customerOid);
+ if (customer.Person.LastName.ToLower().Contains("test") || customer.Person.FirstName.ToLower().Contains("test"))
+ {
+ DateTime startDate = new DateTime(year, month, 1);
+
+ if (startDay == 1 && endDay == DateTime.DaysInMonth(year, month))
+ {
+ int months = 3;
+ var endDate = startDate.AddMonths(months);
+
+ endDay = (int)endDate.Subtract(startDate).TotalDays;
+ }
+ }
var ro = ServicesOverviewRO.Create(customerOid, month, year, false, orgaOid, empOid, startDay, endDay, serviceCategoryOid);
return CreateServicesOverviewReportForRo(ro, serviceCategoryOid);
diff --git a/ReportImp/Fortis/Quittierungsbeleg.Designer.cs b/ReportImp/Fortis/Quittierungsbeleg.Designer.cs
index 83aaeac68..8744de7c8 100644
--- a/ReportImp/Fortis/Quittierungsbeleg.Designer.cs
+++ b/ReportImp/Fortis/Quittierungsbeleg.Designer.cs
@@ -91,6 +91,7 @@ namespace Fortis
this.xrTableCell21 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell22 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell49 = new DevExpress.XtraReports.UI.XRTableCell();
+ this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
this.formattingRuleStartDate = new DevExpress.XtraReports.UI.FormattingRule();
this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand();
this.xrLabel3 = new DevExpress.XtraReports.UI.XRLabel();
@@ -123,11 +124,14 @@ namespace Fortis
this.fieldKontaktArt = new DevExpress.XtraReports.UI.CalculatedField();
this.Dauer = new DevExpress.XtraReports.UI.CalculatedField();
this.True = new DevExpress.XtraReports.UI.FormattingRule();
- this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
+ this.xrLabel5 = new DevExpress.XtraReports.UI.XRLabel();
+ this.xrLabel6 = new DevExpress.XtraReports.UI.XRLabel();
+ this.xrLabel7 = new DevExpress.XtraReports.UI.XRLabel();
+ this.xrLabel8 = new DevExpress.XtraReports.UI.XRLabel();
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTableServiceRecords1)).BeginInit();
- ((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
//
// Detail
@@ -715,7 +719,7 @@ namespace Fortis
this.xrTableCell38.StylePriority.UseBorders = false;
this.xrTableCell38.StylePriority.UseFont = false;
this.xrTableCell38.StylePriority.UseTextAlignment = false;
- this.xrTableCell38.Text = "KL";
+ this.xrTableCell38.Text = "LiA";
this.xrTableCell38.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell38.Weight = 0.12290502352575627D;
//
@@ -843,6 +847,10 @@ namespace Fortis
this.xrTableCell49.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter;
this.xrTableCell49.Weight = 0.13966474814693633D;
//
+ // bindingSource1
+ //
+ this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServicesOverviewRO);
+ //
// formattingRuleStartDate
//
this.formattingRuleStartDate.Condition = "[StartDate2] < [StartDate]";
@@ -853,11 +861,15 @@ namespace Fortis
// ReportHeader
//
this.ReportHeader.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
+ this.xrLabel8,
+ this.xrLabel7,
+ this.xrLabel6,
+ this.xrLabel5,
this.xrLabel3,
this.xrLabel2,
this.xrLabel1,
this.xrLabel4});
- this.ReportHeader.HeightF = 74.33334F;
+ this.ReportHeader.HeightF = 157.6667F;
this.ReportHeader.Name = "ReportHeader";
//
// xrLabel3
@@ -1235,9 +1247,82 @@ namespace Fortis
//
this.True.Name = "True";
//
- // bindingSource1
+ // xrLabel5
//
- this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServicesOverviewRO);
+ this.xrLabel5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(217)))), ((int)(((byte)(102)))));
+ this.xrLabel5.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
+ | DevExpress.XtraPrinting.BorderSide.Right)
+ | DevExpress.XtraPrinting.BorderSide.Bottom)));
+ this.xrLabel5.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Bold);
+ this.xrLabel5.LocationFloat = new DevExpress.Utils.PointFloat(484.5138F, 0F);
+ this.xrLabel5.Name = "xrLabel5";
+ this.xrLabel5.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
+ this.xrLabel5.SizeF = new System.Drawing.SizeF(405.7206F, 61.00006F);
+ this.xrLabel5.StylePriority.UseBackColor = false;
+ this.xrLabel5.StylePriority.UseBorders = false;
+ this.xrLabel5.StylePriority.UseFont = false;
+ this.xrLabel5.StylePriority.UsePadding = false;
+ this.xrLabel5.StylePriority.UseTextAlignment = false;
+ this.xrLabel5.Text = "Personenbezogene Leistungen im Einzelkontakt oder als gemeinschaftliche Inanspruc" +
+ "hnahmenach §7 Abs. 5 Nr. 1 LV: Direkte Leistung";
+ this.xrLabel5.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
+ //
+ // xrLabel6
+ //
+ this.xrLabel6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(230)))), ((int)(((byte)(153)))));
+ this.xrLabel6.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
+ | DevExpress.XtraPrinting.BorderSide.Right)
+ | DevExpress.XtraPrinting.BorderSide.Bottom)));
+ this.xrLabel6.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Bold);
+ this.xrLabel6.LocationFloat = new DevExpress.Utils.PointFloat(484.5138F, 61.00006F);
+ this.xrLabel6.Name = "xrLabel6";
+ this.xrLabel6.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
+ this.xrLabel6.SizeF = new System.Drawing.SizeF(31.55F, 20F);
+ this.xrLabel6.StylePriority.UseBackColor = false;
+ this.xrLabel6.StylePriority.UseBorders = false;
+ this.xrLabel6.StylePriority.UseFont = false;
+ this.xrLabel6.StylePriority.UsePadding = false;
+ this.xrLabel6.StylePriority.UseTextAlignment = false;
+ this.xrLabel6.Text = "H";
+ this.xrLabel6.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
+ //
+ // xrLabel7
+ //
+ this.xrLabel7.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(242)))), ((int)(((byte)(204)))));
+ this.xrLabel7.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
+ | DevExpress.XtraPrinting.BorderSide.Right)
+ | DevExpress.XtraPrinting.BorderSide.Bottom)));
+ this.xrLabel7.Font = new System.Drawing.Font("Arial", 10F);
+ this.xrLabel7.LocationFloat = new DevExpress.Utils.PointFloat(516.0637F, 61.00006F);
+ this.xrLabel7.Name = "xrLabel7";
+ this.xrLabel7.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
+ this.xrLabel7.SizeF = new System.Drawing.SizeF(280.004F, 20F);
+ this.xrLabel7.StylePriority.UseBackColor = false;
+ this.xrLabel7.StylePriority.UseBorders = false;
+ this.xrLabel7.StylePriority.UseFont = false;
+ this.xrLabel7.StylePriority.UsePadding = false;
+ this.xrLabel7.StylePriority.UseTextAlignment = false;
+ this.xrLabel7.Text = "Hausbesuch";
+ this.xrLabel7.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
+ //
+ // xrLabel8
+ //
+ this.xrLabel8.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(242)))), ((int)(((byte)(204)))));
+ this.xrLabel8.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
+ | DevExpress.XtraPrinting.BorderSide.Right)
+ | DevExpress.XtraPrinting.BorderSide.Bottom)));
+ this.xrLabel8.Font = new System.Drawing.Font("Arial", 10F);
+ this.xrLabel8.LocationFloat = new DevExpress.Utils.PointFloat(516.0637F, 81.00006F);
+ this.xrLabel8.Name = "xrLabel8";
+ this.xrLabel8.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
+ this.xrLabel8.SizeF = new System.Drawing.SizeF(355.8374F, 20.00001F);
+ this.xrLabel8.StylePriority.UseBackColor = false;
+ this.xrLabel8.StylePriority.UseBorders = false;
+ this.xrLabel8.StylePriority.UseFont = false;
+ this.xrLabel8.StylePriority.UsePadding = false;
+ this.xrLabel8.StylePriority.UseTextAlignment = false;
+ this.xrLabel8.Text = "Kontakt mit Leistungsberechtigten in der Dienststelle";
+ this.xrLabel8.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
//
// Quittierungsbeleg
//
@@ -1267,8 +1352,8 @@ namespace Fortis
this.Version = "17.1";
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTableServiceRecords1)).EndInit();
- ((System.ComponentModel.ISupportInitialize)(this.xrTable1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.xrTable1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this)).EndInit();
}
@@ -1358,5 +1443,9 @@ namespace Fortis
private DevExpress.XtraReports.UI.XRLabel xrLabel1;
private DevExpress.XtraReports.UI.XRLabel xrLabel3;
private DevExpress.XtraReports.UI.XRLabel xrLabel2;
+ private DevExpress.XtraReports.UI.XRLabel xrLabel6;
+ private DevExpress.XtraReports.UI.XRLabel xrLabel5;
+ private DevExpress.XtraReports.UI.XRLabel xrLabel7;
+ private DevExpress.XtraReports.UI.XRLabel xrLabel8;
}
}
diff --git a/ReportImp/Fortis/Quittierungsbeleg.cs b/ReportImp/Fortis/Quittierungsbeleg.cs
index 1ce376fcf..c820d9d3f 100644
--- a/ReportImp/Fortis/Quittierungsbeleg.cs
+++ b/ReportImp/Fortis/Quittierungsbeleg.cs
@@ -22,7 +22,7 @@ namespace Fortis
{
if (pRO.Services != null)
{
- Dictionary tag2Details = new Dictionary();
+ Dictionary tag2Details = new Dictionary();
foreach (var sr in pRO.Services)
{
@@ -32,14 +32,14 @@ namespace Fortis
}
FortisServiceRecord fsr = null;
- if (!tag2Details.ContainsKey(sr.StartDate.Day))
+ if (!tag2Details.ContainsKey(String.Format("{0:yyyyMMdd}", sr.StartDate)))
{
fsr = new FortisServiceRecord();
- tag2Details.Add(sr.StartDate.Day, fsr);
+ tag2Details.Add(String.Format("{0:yyyyMMdd}", sr.StartDate), fsr);
}
else
{
- fsr = tag2Details[sr.StartDate.Day];
+ fsr = tag2Details[String.Format("{0:yyyyMMdd}", sr.StartDate)];
}
if (sr.ServiceDescription.Contains("Wohnraum"))
@@ -92,15 +92,16 @@ namespace Fortis
List newServices = new List();
-
- for (int i = pRO.StartDate.Day; i <= pRO.EndDate.Day; i++)
+ DateTime dt = pRO.StartDate;
+ while (dt <= pRO.EndDate)
{
- if (tag2Details.ContainsKey(i))
+ String key = String.Format("{0:yyyyMMdd}", dt);
+ if (tag2Details.ContainsKey(key))
{
- var fsr = tag2Details[i];
+ var fsr = tag2Details[key];
var sr = new ServicesOverviewRO.ServiceDetail();
- sr.StartDate = new DateTime(pRO.StartDate.Year, pRO.StartDate.Month, i);
+ sr.StartDate = dt;
//H Hausbesuch = Notice
//B Begleitung im Sozialraum = Notice2
@@ -159,6 +160,8 @@ namespace Fortis
newServices.Add(sr);
}
+
+ dt = dt.AddDays(1);
}
pRO.Services = newServices;
diff --git a/ReportImp/Fortis/ZeitdokumentationPlanIst.Designer.cs b/ReportImp/Fortis/ZeitdokumentationPlanIst.Designer.cs
index a60800df7..7aa02bf27 100644
--- a/ReportImp/Fortis/ZeitdokumentationPlanIst.Designer.cs
+++ b/ReportImp/Fortis/ZeitdokumentationPlanIst.Designer.cs
@@ -861,7 +861,7 @@ namespace Fortis
this.xrLabel2,
this.xrLabel1,
this.xrLabel4});
- this.ReportHeader.HeightF = 74.33334F;
+ this.ReportHeader.HeightF = 186F;
this.ReportHeader.Name = "ReportHeader";
//
// xrLabel3
diff --git a/ReportImp/LebenshilfeFrankfurtOder/CustomReportCreator.cs b/ReportImp/LebenshilfeFrankfurtOder/CustomReportCreator.cs
index 700656aa4..28603c3cb 100644
--- a/ReportImp/LebenshilfeFrankfurtOder/CustomReportCreator.cs
+++ b/ReportImp/LebenshilfeFrankfurtOder/CustomReportCreator.cs
@@ -561,7 +561,7 @@ namespace LebenshilfeFrankfurtOder
var invoices3 = CreateAbrechnungHortbetreuung(start, start.AddMonths(1).AddTicks(-1), customerOid, serviceCategoryOid);
invoices.AddRange(invoices3);
}
- if (cat != null && cat.Name.Contains("EFH Pool"))
+ if (cat != null && cat.Name.Contains("Pool"))
{
var invoices4 = CreateAbrechnungSbdPool(start, start.AddMonths(1).AddTicks(-1), customerOid, serviceCategoryOid);
invoices.AddRange(invoices4);
@@ -1291,7 +1291,7 @@ namespace LebenshilfeFrankfurtOder
{
var invoicePeriod = new DateTimeSpan(start, end);
- IList supportConcepts = GetSupportConcepts(start, end, "Familienentlastender Dienst", "efh pool", customerOid);
+ IList supportConcepts = GetSupportConcepts(start, end, "Familienentlastender Dienst", "pool", customerOid);
var supportConcepts2ServiceRecords = new Dictionary>();
diff --git a/ReportImp/LebenshilfeFrankfurtOder/Invoicing/SbdPoolInvoiceCreation.cs b/ReportImp/LebenshilfeFrankfurtOder/Invoicing/SbdPoolInvoiceCreation.cs
index bffa9179b..798d844a2 100644
--- a/ReportImp/LebenshilfeFrankfurtOder/Invoicing/SbdPoolInvoiceCreation.cs
+++ b/ReportImp/LebenshilfeFrankfurtOder/Invoicing/SbdPoolInvoiceCreation.cs
@@ -308,7 +308,7 @@ namespace LebenshilfeFrankfurtOder.Invoicing
{
String name = scap.ServiceCategory.Name.ToLower().Trim();
- if (name.Contains("efh pool"))
+ if (name.Contains("pool"))
{
tsc.SupportConceptApprovalPeriod = scap;
//leistungstyp = name;
diff --git a/Service/DCEntityMapper/AdditionalServiceNoticeDC_AdditionalServiceNotice.cs b/Service/DCEntityMapper/AdditionalServiceNoticeDC_AdditionalServiceNotice.cs
new file mode 100644
index 000000000..414341290
--- /dev/null
+++ b/Service/DCEntityMapper/AdditionalServiceNoticeDC_AdditionalServiceNotice.cs
@@ -0,0 +1,46 @@
+using BeWo.Data.Entities;
+
+using BS.Shared.DataContracts;
+
+namespace BeWo.Service.DCEntityMapper
+{
+ public class AdditionalServiceNoticeDC_AdditionalServiceNotice : AbstractIDCEntityMapper
+ {
+
+ public override AdditionalServiceNoticeDC MergeWithDC(AdditionalServiceNotice pEntity, AdditionalServiceNoticeDC pDataContract)
+ {
+ pDataContract.Oid = pEntity.Oid;
+ pDataContract.Version = pEntity.Version;
+ pDataContract.RegionOid = pEntity.RegionOid;
+ pDataContract.CustomerOid = pEntity.CustomerOid;
+ pDataContract.Monat = pEntity.Monat;
+ pDataContract.Notice = pEntity.Notice;
+ pDataContract.InsUser = pEntity.InsUser;
+
+ return pDataContract;
+ }
+
+ public override AdditionalServiceNotice MergeWithEntity(AdditionalServiceNoticeDC pDataContract, AdditionalServiceNotice pEntity)
+ {
+ this.ConcurrencyCheck(pDataContract.Version, pEntity);
+
+ pEntity.Oid = pDataContract.Oid;
+ pEntity.RegionOid = pDataContract.RegionOid;
+ pEntity.CustomerOid = pDataContract.CustomerOid;
+ pEntity.Monat = pDataContract.Monat;
+ pEntity.Notice = pDataContract.Notice;
+
+ return pEntity;
+ }
+
+ protected override bool AreDCAndEntityEqual(AdditionalServiceNoticeDC pDC, AdditionalServiceNotice pEntity)
+ {
+ if (pDC.Oid == null)
+ {
+ return false;
+ }
+
+ return pDC.Oid == pEntity.Oid;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Service/DCEntityMapper/MapperFactory.cs b/Service/DCEntityMapper/MapperFactory.cs
index a34c246a7..b397ef47b 100644
--- a/Service/DCEntityMapper/MapperFactory.cs
+++ b/Service/DCEntityMapper/MapperFactory.cs
@@ -204,6 +204,8 @@ namespace BeWo.Service.DCEntityMapper
private static AdditionalServiceBookingDC_AdditionalServiceBooking _AdditionalServiceBookingDC_AdditionalServiceBooking;
+ private static AdditionalServiceNoticeDC_AdditionalServiceNotice _AdditionalServiceNoticeDC_AdditionalServiceNotice;
+
private static SupportPinDC_SupportPin _SupportPinDC_SupportPin;
private static OvertimeDC_Overtime _OvertimeDC_Overtime;
@@ -382,6 +384,10 @@ namespace BeWo.Service.DCEntityMapper
(_AdditionalServiceGroupOfPeopleCD_AdditionalServiceGroupOfPeople =
new AdditionalServiceGroupOfPeopleCD_AdditionalServiceGroupOfPeople());
+ public static AdditionalServiceNoticeDC_AdditionalServiceNotice AdditionalServiceNoticeDC_AdditionalServiceNotice =>
+ _AdditionalServiceNoticeDC_AdditionalServiceNotice ??
+ (_AdditionalServiceNoticeDC_AdditionalServiceNotice = new AdditionalServiceNoticeDC_AdditionalServiceNotice());
+
public static ContractDC_Contract ContractDC_Contract =>
_ContractDC_Contract ?? (_ContractDC_Contract = new ContractDC_Contract());
diff --git a/Service/DCEntityMapper/OvertimeDC_Overtime.cs b/Service/DCEntityMapper/OvertimeDC_Overtime.cs
index c40c50986..f248748e2 100644
--- a/Service/DCEntityMapper/OvertimeDC_Overtime.cs
+++ b/Service/DCEntityMapper/OvertimeDC_Overtime.cs
@@ -19,6 +19,7 @@ namespace BeWo.Service.DCEntityMapper
pDataContract.Notice = pEntity.Notice;
pDataContract.OvertimeOid = pEntity.Oid;
pDataContract.OvertimeVersion = pEntity.Version;
+ pDataContract.InsUser = pEntity.InsUser;
return pDataContract;
}
diff --git a/Service/Plugins/AccountingService.cs b/Service/Plugins/AccountingService.cs
index 1f0761714..20e902cbd 100644
--- a/Service/Plugins/AccountingService.cs
+++ b/Service/Plugins/AccountingService.cs
@@ -353,5 +353,17 @@ namespace BeWo.Service.Plugins
copyItem.ServiceRecord = existingItem.ServiceRecord;
}
- }
+
+ public virtual Settlement2DC ErstelleDifferenzSpitzabrechnung(Settlement2DC neueRechnung, Settlement2DC letzteRechnung)
+ {
+ var diff = neueRechnung.Claim - letzteRechnung.Claim;
+ var ii = new InvoiceItemDC();
+
+ neueRechnung.Claim = diff;
+ neueRechnung.InvoiceItems = new List();
+ neueRechnung.InvoiceItems.Add(ii);
+
+ return neueRechnung;
+ }
+ }
}
\ No newline at end of file
diff --git a/Service/Plugins/PluginLoader.cs b/Service/Plugins/PluginLoader.cs
index 6ea16d261..958efa4ab 100644
--- a/Service/Plugins/PluginLoader.cs
+++ b/Service/Plugins/PluginLoader.cs
@@ -70,7 +70,7 @@ namespace BeWo.Service.Plugins
//t = "5351926758"; // Viva a Vida
//t = "2215396183"; // Diakonie Remscheid Lennep
//t = "5157599087"; // SHG Schwerte
- //t = "4526293996"; // Fortis
+ t = "4526293996"; // Fortis
//t = "3647969417"; // Caritas Bottrop
//t = "3057313346"; // SSB Mainz
//t = "6246287823"; // BeWo Alsdorf
@@ -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.
@@ -232,7 +232,7 @@ namespace BeWo.Service.Plugins
//t = "2141858509"; // INKOMM GmbH
//t = "8975059766"; // Quer-Fällt-Ein
//t = "8928179244"; // ASB Ruhr e.V. Regionalverband
- t = "4423043131"; // Die Perspektive e.V.
+ //t = "4423043131"; // Die Perspektive e.V.
//t = "5263375280"; // LH Wolfsburg
//t = "4900722829"; // Evangelische Kirchengemeinde Bottrop
//t = "9853685258"; // Input
diff --git a/Service/Service.csproj b/Service/Service.csproj
index 0a0ae312c..1a58f532c 100644
--- a/Service/Service.csproj
+++ b/Service/Service.csproj
@@ -223,6 +223,7 @@
+
diff --git a/Service/ServiceContracts/IOperationsService.cs b/Service/ServiceContracts/IOperationsService.cs
index b459f33c7..4f6cde334 100644
--- a/Service/ServiceContracts/IOperationsService.cs
+++ b/Service/ServiceContracts/IOperationsService.cs
@@ -82,6 +82,10 @@ namespace BeWo.Service.ServiceContracts
[OperationContract]
Settlement2DC GenerateInitialSettlementDC(long pCostBearer2SupportConceptOid);
+ [FaultContract(typeof(BeWoFault))]
+ [OperationContract]
+ Settlement2DC GenerateDifferenzSettlementDC(long pCostBearer2SupportConceptOid);
+
[FaultContract(typeof(BeWoFault))]
[OperationContract]
Settlement2DC GenerateInitialSettlementDCForPeriod(long pCostBearer2SupportConceptOid, DateTime? periodStart, DateTime? periodEnd);
@@ -373,6 +377,14 @@ namespace BeWo.Service.ServiceContracts
[OperationContract]
List GetAllAdditionalServiceBookings(long? regionOid, DateTime start, DateTime end);
+ [FaultContract(typeof(BeWoFault))]
+ [OperationContract]
+ List GetAdditionalServiceNoticeList(long? regionOid, DateTime start, DateTime end);
+
+ [FaultContract(typeof(BeWoFault))]
+ [OperationContract]
+ List UpdateAdditionalServiceNoticeList(List additionalServiceNoticeList);
+
[FaultContract(typeof(BeWoFault))]
[OperationContract]
List InsertNewAdditionalServiceBookings(List pAdditionalServiceBookings);
@@ -385,6 +397,10 @@ namespace BeWo.Service.ServiceContracts
[OperationContract]
void DeleteAdditionalServiceBookings(Dictionary pOid2Version);
+ [FaultContract(typeof(BeWoFault))]
+ [OperationContract]
+ void RemoveAdditionalServiceCustomer(List customerOids, long? regionOid, DateTime monat);
+
[FaultContract(typeof (BeWoFault))]
[OperationContract]
long InsertNewAdditionalServiceRegion(AdditionalServiceRegionDC pAdditionalServiceRegionDC);
diff --git a/Service/ServiceImplementations/OperationsServiceImp.cs b/Service/ServiceImplementations/OperationsServiceImp.cs
index 851e48f96..e9d83aa03 100644
--- a/Service/ServiceImplementations/OperationsServiceImp.cs
+++ b/Service/ServiceImplementations/OperationsServiceImp.cs
@@ -415,6 +415,33 @@ namespace BeWo.Service.ServiceImplementations
.ToList();
}
+ public Settlement2DC GenerateDifferenzSettlementDC(long pCostBearer2SupportConceptOid)
+ {
+ try
+ {
+ var newInvoice = GenerateInitialSettlementDC(pCostBearer2SupportConceptOid);
+
+ var existingInvoices = DAOFactory.SearchDAO.GetSettlementInvoiceByCostBearer2SupportConceptOid(pCostBearer2SupportConceptOid);
+ if (existingInvoices.Count == 0) //Sollte eigentlich nicht sein
+ {
+ return newInvoice;
+ }
+
+ var juengsteRechnung = existingInvoices.OrderByDescending(i => i.InvoiceBase.AccountingPeriodEnd).First();
+ var acs = PluginLoader.FindClass();
+
+
+ return acs.ErstelleDifferenzSpitzabrechnung(newInvoice, MapperFactory.SettlementDC_SettlementInvoice.MapToNewDC(juengsteRechnung));
+
+
+
+ }
+ catch (Exception e)
+ {
+ throw Utils.CreateBeWoFaultException(e);
+ }
+ }
+
public List GetAccountingTransactions(DateTimeSpan pSpan, long? pSupportConceptOid, long? pSupportConceptCostBearerRelOid)
{
try
@@ -1721,6 +1748,45 @@ namespace BeWo.Service.ServiceImplementations
}
}
+ public void RemoveAdditionalServiceCustomer(List customerOids, long? regionOid, DateTime monat)
+ {
+ try
+ {
+ foreach (var oid in customerOids)
+ {
+ var bookings = DAOFactory.SearchDAO.GetAdditionalServiceBookingsForCustomer(oid, monat, monat.AddMonths(1).AddDays(-1));
+
+
+
+ foreach (var item in bookings)
+ {
+ if (item.AdditionalServiceRegion.Oid == regionOid)
+ {
+ var entries2Delete = new List();
+ foreach (var c2a in item.Customer2AddServiceBookings)
+ {
+ if (c2a.CustomerOid == oid)
+ {
+ entries2Delete.Add(c2a);
+ }
+ }
+ item.Customer2AddServiceBookings.RemoveRange(entries2Delete);
+ DAOFactory.GenericDAO.Update(item);
+ }
+ }
+
+
+
+ }
+
+
+ }
+ catch (Exception e)
+ {
+ throw Utils.CreateBeWoFaultException(e);
+ }
+ }
+
public void UpdateAdditionalServiceGroupOfPeopleRelations(List pAdditionalServiceGroupOfPeopleRelations)
{
try
@@ -1739,8 +1805,27 @@ namespace BeWo.Service.ServiceImplementations
{
try
{
- List lOriginals = DAOFactory.GenericDAO.LoadByIDs(pAdditionalServiceBookings.Select(dc => dc.AdditionalServiceBookingOid.Value));
- MapperFactory.AdditionalServiceBookingDC_AdditionalServiceBooking.MergeWithEntitys(pAdditionalServiceBookings, lOriginals);
+ //Bugfix: die AdditionalServiceBookingList enthält manchmal mehrere Objekte mit gleicher OID
+
+ //var distinctDcs = pAdditionalServiceBookings.Distinct().ToList();
+ var distinctDcs = new List();
+ var dict = new Dictionary();
+
+ foreach (var item in pAdditionalServiceBookings)
+ {
+ if (!item.AdditionalServiceBookingOid.HasValue)
+ {
+ distinctDcs.Add(item);
+ }
+ else if (!dict.ContainsKey(item.AdditionalServiceBookingOid.Value))
+ {
+ distinctDcs.Add(item);
+ dict.Add(item.AdditionalServiceBookingOid.Value, true);
+ }
+ }
+
+ List lOriginals = DAOFactory.GenericDAO.LoadByIDs(distinctDcs.Select(dc => dc.AdditionalServiceBookingOid.Value));
+ MapperFactory.AdditionalServiceBookingDC_AdditionalServiceBooking.MergeWithEntitys(distinctDcs, lOriginals);
DAOFactory.GenericDAO.Update(lOriginals);
var entries2Update = new List();
@@ -2503,6 +2588,49 @@ namespace BeWo.Service.ServiceImplementations
}
}
+ public List GetAdditionalServiceNoticeList(long? regionOid, DateTime start, DateTime end)
+ {
+ try
+ {
+ var result =
+ MapperFactory.AdditionalServiceNoticeDC_AdditionalServiceNotice.MapToNewDCs(
+ DAOFactory.SearchDAO.GetAdditionalServiceNoticeList(regionOid, start, end)).ToList();
+
+ return result;
+ }
+ catch (Exception e)
+ {
+ throw Utils.CreateBeWoFaultException(e);
+ }
+ }
+
+
+ public List UpdateAdditionalServiceNoticeList(List additionalServiceNoticeList)
+ {
+ try
+ {
+ var newDcs = additionalServiceNoticeList.Where(dc => !dc.Oid.HasValue);
+ var newEntities = MapperFactory.AdditionalServiceNoticeDC_AdditionalServiceNotice.MapToNewEntities(newDcs);
+ DAOFactory.GenericDAO.Insert(newEntities);
+
+ var existingNotices = additionalServiceNoticeList.Where(dc => dc.Oid.HasValue).ToList();
+
+ List originals = DAOFactory.GenericDAO.LoadByIDs(existingNotices.Select(dc => dc.Oid.Value));
+
+ MapperFactory.AdditionalServiceNoticeDC_AdditionalServiceNotice.MergeWithEntitys(existingNotices, originals);
+
+ DAOFactory.GenericDAO.Update(originals);
+
+ var result = MapperFactory.AdditionalServiceNoticeDC_AdditionalServiceNotice.MapToNewDCs(originals);
+ result.AddRange(MapperFactory.AdditionalServiceNoticeDC_AdditionalServiceNotice.MapToNewDCs(newEntities));
+ return result;
+ }
+ catch (Exception e)
+ {
+ throw Utils.CreateBeWoFaultException(e);
+ }
+ }
+
public Dictionary> ValidateGroupServiceRecordEntry(ServiceRecordDC pServiceRecord, List groupServiceRecords, List employees, DateTime? date, int maxDaysEditServiceRecordsAllowed, decimal flsTotalRounded, out Dictionary overlappingRecords, out Dictionary overlappingEmployees)
{
var validator = PluginLoader.FindClass();
@@ -4943,7 +5071,7 @@ namespace BeWo.Service.ServiceImplementations
// multiPartContent.Add(new StringContent(chatcode + ""), "chatcode");
// multiPartContent.Add(new StringContent(login + ""), "login");
// multiPartContent.Add(new StringContent(password + ""), "password");
- // multiPartContent.Add(new StringContent("https://support.bewoplaner.de/bewoplaner_logo_big.png"), "custom_logo_url");
+ // multiPartContent.Add(new StringContent("https://support.bewoplaner.de/bewoplaner_logo_small.png"), "custom_logo_url");
// httpRequest = new HttpRequestMessage();
// httpRequest.Method = HttpMethod.Post;
@@ -4974,7 +5102,7 @@ namespace BeWo.Service.ServiceImplementations
//dic.Add("chatcode", "Hier ChatCode");
//dic.Add("login", "hier benutzername");
//dic.Add("password", "hier passwort");
- //dic.Add("custom_logo_url", "https://support.bewoplaner.de/bewoplaner_logo_big.png");
+ //dic.Add("custom_logo_url", "https://support.bewoplaner.de/bewoplaner_logo_small.png");
//string postdaten = "";
//foreach (var key in dic.Keys)
diff --git a/Shared/BeWoEntityEnums.cs b/Shared/BeWoEntityEnums.cs
index f99658a41..8d951b7c6 100644
--- a/Shared/BeWoEntityEnums.cs
+++ b/Shared/BeWoEntityEnums.cs
@@ -167,7 +167,8 @@ namespace BS.Shared
ContractHistory = 160,
ErrorMessage = 161,
AddressRoute = 162,
- ValidationMessage = 163
+ ValidationMessage = 163,
+ AdditionalServiceNotice = 164
}
public enum SystemEntryID
diff --git a/Shared/DataContracts/AdditionalServiceNoticeDC.cs b/Shared/DataContracts/AdditionalServiceNoticeDC.cs
new file mode 100644
index 000000000..9b8f1ef7d
--- /dev/null
+++ b/Shared/DataContracts/AdditionalServiceNoticeDC.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Collections.Generic;
+using System.Runtime.Serialization;
+
+namespace BS.Shared.DataContracts
+{
+ [DataContract]
+ public class AdditionalServiceNoticeDC : IDataContract
+ {
+ [DataMember]
+ public long? Oid { get; set; }
+
+ [DataMember]
+ public long? Version { get; set; }
+
+ [DataMember]
+ public long? RegionOid { get; set; }
+
+ [DataMember]
+ public long? CustomerOid { get; set; }
+
+ [DataMember]
+ public DateTime Monat { get; set; }
+
+ [DataMember]
+ public string Notice { get; set; }
+
+ [DataMember]
+ public string InsUser { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/Shared/DataContracts/CostRatePeriodDC.cs b/Shared/DataContracts/CostRatePeriodDC.cs
index a0c56cf96..d17129902 100644
--- a/Shared/DataContracts/CostRatePeriodDC.cs
+++ b/Shared/DataContracts/CostRatePeriodDC.cs
@@ -69,7 +69,7 @@ namespace BS.Shared.DataContracts
public virtual decimal? GetHoursInBE(decimal? hours)
{
decimal? crv = this.CostRateValue;
- if (!crv.HasValue)
+ if (!crv.HasValue || crv.Value == 0)
crv = 60;
return (hours * 60m) / crv.Value;
@@ -86,7 +86,7 @@ namespace BS.Shared.DataContracts
public virtual decimal? GetMinutesInBE(decimal? minutes)
{
decimal? crv = this.CostRateValue;
- if (!crv.HasValue)
+ if (!crv.HasValue || crv.Value == 0)
crv = 60;
return minutes / crv.Value;
@@ -95,7 +95,7 @@ namespace BS.Shared.DataContracts
public virtual decimal GetMinutesInBE(decimal minutes)
{
decimal? crv = this.CostRateValue;
- if (!crv.HasValue)
+ if (!crv.HasValue || crv.Value == 0)
crv = 60;
return minutes / crv.Value;
}
diff --git a/Shared/DataContracts/OvertimeDC.cs b/Shared/DataContracts/OvertimeDC.cs
index 8f12b9e37..d7f8a4008 100644
--- a/Shared/DataContracts/OvertimeDC.cs
+++ b/Shared/DataContracts/OvertimeDC.cs
@@ -26,5 +26,8 @@ namespace BS.Shared.DataContracts
[DataMember]
public decimal Betrag { get; set; }
+
+ [DataMember]
+ public String InsUser { get; set; }
}
}
diff --git a/Shared/Shared.csproj b/Shared/Shared.csproj
index 96c6fe327..b4cb37427 100644
--- a/Shared/Shared.csproj
+++ b/Shared/Shared.csproj
@@ -171,6 +171,7 @@
+