From 64ab1519d8a45425bb1364dc37e81ceef71253ef Mon Sep 17 00:00:00 2001 From: Christian Date: Wed, 25 Nov 2020 11:40:05 +0100 Subject: [PATCH] cb: Reports, bugfixing etc. --- BeWo.sln | 38 + BeWo/BeWoApp.xaml.cs | 2 +- BeWo/LoginControl.xaml.cs | 13 +- .../View/SchedulerAppointmentEditForm.xaml.cs | 5 +- BeWo/View/Detail/AbsenceTimesView.xaml | 6 +- BeWo/View/Detail/AbsenceTimesView.xaml.cs | 15 +- .../Detail/Report/FlexibleReportView.xaml.cs | 25 +- BeWo/View/Detail/ServiceRecordEditView.xaml | 8 +- .../View/Detail/ServiceRecordEditView.xaml.cs | 36 +- .../Detail/ServiceRecordGroupEditView.xaml | 6 +- .../Detail/ServiceRecordGroupEditView.xaml.cs | 30 +- BeWo/View/Detail/ServiceRecordView2.xaml | 8 +- BeWo/View/Detail/ServiceRecordView2.xaml.cs | 46 +- BeWo/View/Master/ReportView.xaml.cs | 3 +- BeWo/ViewModel/AbsenceTimeVM.cs | 30 +- BeWo/ViewModel/UserGroupVM.cs | 12 +- BeWo/app.config | 4 +- Data/Access/SearchDAO.cs | 10 +- Host/Host.csproj.user | 2 +- Host/Multitenancy/demo.config | 2 +- Report/DefaultReportCreator.cs | 2 +- .../QueryListReport.Designer.cs | 459 ++--- Report/DefaultReports/QueryListReport.cs | 2 +- Report/ReportObjects/ServicesOverviewRO.cs | 13 + .../ApiMitarbeiterstundenkontoBerechnung.cs | 97 +- .../Mitarbeiterstundenkonto.designer.cs | 23 +- .../ApiBerlin/Teamstundenkonto.designer.cs | 13 +- ReportImp/BeWoImFlow/CustomReportCreator.cs | 9 +- .../QuittierungsbelegMitDatum.Designer.cs | 22 +- .../BeWoWalzPaiva/CustomReportCreator.cs | 8 +- .../BetreuWoReports/BetreuWoReports.csproj | 1 + .../Service/ResourceService.cs | 23 + ReportImp/Club74/GeneralReport.resx | 1571 +++++++++-------- ReportImp/Club74/InvoiceCustomerReport.resx | 1571 +++++++++-------- ReportImp/Club74/ServiceInvoiceReport.resx | 1571 +++++++++-------- ReportImp/Club74/SettlementReport.resx | 1571 +++++++++-------- ReportImp/Club74/SettlementReport2.resx | 1571 +++++++++-------- ReportImp/Club74/briefbogenNov2020.jpg | Bin 0 -> 1787669 bytes ...MitarbeiterstundenkontoBerechnungMonate.cs | 20 + .../DiakonieKKKleve/DiakonieKKKleve.csproj | 11 + ...KKleveMitarbeiterstundenkontoBerechnung.cs | 407 ++++- .../Mitarbeiterstundenkonto.cs | 2 +- .../Mitarbeiterstundenkonto.designer.cs | 2 +- .../MitarbeiterstundenkontoJahr.cs | 28 + .../MitarbeiterstundenkontoJahr.designer.cs | 761 ++++++++ .../MitarbeiterstundenkontoJahr.resx | 123 ++ ReportImp/DiakonieKKKleve/Teamstundenkonto.cs | 2 +- .../Teamstundenkonto.designer.cs | 2 +- .../DiakonischesWerkWesel.csproj | 1 + .../DiakonischesWerkWesel/Finanzauswertung.cs | 12 +- .../Invoicing/DefaultInvoiceCreation.cs | 56 + .../Export/CustomDataExporter.cs | 29 + .../Export/DatevExporter.cs | 313 ++++ .../FlingernMobilReports.csproj | 2 + .../SPZLeverkusen/CustomReportCreator.cs | 4 +- .../SPZLeverkusen/InvoiceCustomerReport.resx | 2 +- .../SPZLeverkusen/ServiceInvoiceReport.resx | 2 +- .../SettlementReport.Designer.cs | 4 +- .../SettlementReport2.Designer.cs | 4 +- .../MitarbeiterVertraege.cs | 1 + Service/Plugins/PluginLoader.cs | 4 +- Service/Plugins/ResourceService.cs | 25 + Service/Plugins/ServiceRecordValidator.cs | 22 +- Service/Service.csproj | 1 + .../AnalysisServiceImp.cs | 2 +- .../OperationsServiceImp.cs | 38 +- .../ResourceServiceImp.cs | 20 +- Shared/BeWoEntityEnums.cs | 1 + Shared/Core/EnumTranslations.cs | 3 + 69 files changed, 6319 insertions(+), 4413 deletions(-) create mode 100644 ReportImp/BetreuWoReports/Service/ResourceService.cs create mode 100644 ReportImp/Club74/briefbogenNov2020.jpg create mode 100644 ReportImp/DiakonieKKKleve/CustomMitarbeiterstundenkontoBerechnungMonate.cs create mode 100644 ReportImp/DiakonieKKKleve/MitarbeiterstundenkontoJahr.cs create mode 100644 ReportImp/DiakonieKKKleve/MitarbeiterstundenkontoJahr.designer.cs create mode 100644 ReportImp/DiakonieKKKleve/MitarbeiterstundenkontoJahr.resx create mode 100644 ReportImp/DiakonischesWerkWesel/Invoicing/DefaultInvoiceCreation.cs create mode 100644 ReportImp/FlingernMobilReports/Export/CustomDataExporter.cs create mode 100644 ReportImp/FlingernMobilReports/Export/DatevExporter.cs create mode 100644 Service/Plugins/ResourceService.cs diff --git a/BeWo.sln b/BeWo.sln index 2f18d4c2c..7de66079b 100644 --- a/BeWo.sln +++ b/BeWo.sln @@ -411,6 +411,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LebenshilfeFrankfurtOder", EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BeWoImFlow", "ReportImp\BeWoImFlow\BeWoImFlow.csproj", "{1D106ED2-9E3C-4F22-8083-188BC11D4A5B}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NahDran", "ReportImp\NahDran\NahDran.csproj", "{57B95F8E-BF79-4106-AE98-C9B14CE949BA}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ApiBerlin", "ReportImp\ApiBerlin\ApiBerlin.csproj", "{B4E9D5AF-7B46-47F8-B918-052D341A378B}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|.NET = Debug|.NET @@ -3082,6 +3086,38 @@ Global {1D106ED2-9E3C-4F22-8083-188BC11D4A5B}.Release|Mixed Platforms.Build.0 = Release|Any CPU {1D106ED2-9E3C-4F22-8083-188BC11D4A5B}.Release|x86.ActiveCfg = Release|Any CPU {1D106ED2-9E3C-4F22-8083-188BC11D4A5B}.Release|x86.Build.0 = Release|Any CPU + {57B95F8E-BF79-4106-AE98-C9B14CE949BA}.Debug|.NET.ActiveCfg = Debug|Any CPU + {57B95F8E-BF79-4106-AE98-C9B14CE949BA}.Debug|.NET.Build.0 = Debug|Any CPU + {57B95F8E-BF79-4106-AE98-C9B14CE949BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {57B95F8E-BF79-4106-AE98-C9B14CE949BA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {57B95F8E-BF79-4106-AE98-C9B14CE949BA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {57B95F8E-BF79-4106-AE98-C9B14CE949BA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {57B95F8E-BF79-4106-AE98-C9B14CE949BA}.Debug|x86.ActiveCfg = Debug|Any CPU + {57B95F8E-BF79-4106-AE98-C9B14CE949BA}.Debug|x86.Build.0 = Debug|Any CPU + {57B95F8E-BF79-4106-AE98-C9B14CE949BA}.Release|.NET.ActiveCfg = Release|Any CPU + {57B95F8E-BF79-4106-AE98-C9B14CE949BA}.Release|.NET.Build.0 = Release|Any CPU + {57B95F8E-BF79-4106-AE98-C9B14CE949BA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {57B95F8E-BF79-4106-AE98-C9B14CE949BA}.Release|Any CPU.Build.0 = Release|Any CPU + {57B95F8E-BF79-4106-AE98-C9B14CE949BA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {57B95F8E-BF79-4106-AE98-C9B14CE949BA}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {57B95F8E-BF79-4106-AE98-C9B14CE949BA}.Release|x86.ActiveCfg = Release|Any CPU + {57B95F8E-BF79-4106-AE98-C9B14CE949BA}.Release|x86.Build.0 = Release|Any CPU + {B4E9D5AF-7B46-47F8-B918-052D341A378B}.Debug|.NET.ActiveCfg = Debug|Any CPU + {B4E9D5AF-7B46-47F8-B918-052D341A378B}.Debug|.NET.Build.0 = Debug|Any CPU + {B4E9D5AF-7B46-47F8-B918-052D341A378B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B4E9D5AF-7B46-47F8-B918-052D341A378B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B4E9D5AF-7B46-47F8-B918-052D341A378B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {B4E9D5AF-7B46-47F8-B918-052D341A378B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {B4E9D5AF-7B46-47F8-B918-052D341A378B}.Debug|x86.ActiveCfg = Debug|Any CPU + {B4E9D5AF-7B46-47F8-B918-052D341A378B}.Debug|x86.Build.0 = Debug|Any CPU + {B4E9D5AF-7B46-47F8-B918-052D341A378B}.Release|.NET.ActiveCfg = Release|Any CPU + {B4E9D5AF-7B46-47F8-B918-052D341A378B}.Release|.NET.Build.0 = Release|Any CPU + {B4E9D5AF-7B46-47F8-B918-052D341A378B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B4E9D5AF-7B46-47F8-B918-052D341A378B}.Release|Any CPU.Build.0 = Release|Any CPU + {B4E9D5AF-7B46-47F8-B918-052D341A378B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {B4E9D5AF-7B46-47F8-B918-052D341A378B}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {B4E9D5AF-7B46-47F8-B918-052D341A378B}.Release|x86.ActiveCfg = Release|Any CPU + {B4E9D5AF-7B46-47F8-B918-052D341A378B}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -3283,6 +3319,8 @@ Global {FE709CF1-6579-4A69-8E43-5C3BF7BD96D7} = {D8A691C5-146D-4613-86CC-438F02FE9106} {B9CBB680-9D7A-47C9-8FE5-C9D1DFDB6F99} = {D8A691C5-146D-4613-86CC-438F02FE9106} {1D106ED2-9E3C-4F22-8083-188BC11D4A5B} = {D8A691C5-146D-4613-86CC-438F02FE9106} + {57B95F8E-BF79-4106-AE98-C9B14CE949BA} = {D8A691C5-146D-4613-86CC-438F02FE9106} + {B4E9D5AF-7B46-47F8-B918-052D341A378B} = {D8A691C5-146D-4613-86CC-438F02FE9106} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {FBE985BB-9F0F-4DBB-8F94-ABC37A803FF9} diff --git a/BeWo/BeWoApp.xaml.cs b/BeWo/BeWoApp.xaml.cs index a8c7b4515..7fa167f2f 100644 --- a/BeWo/BeWoApp.xaml.cs +++ b/BeWo/BeWoApp.xaml.cs @@ -536,7 +536,7 @@ namespace BeWo #if DEBUG url = String.Format("http://localhost:3777/Host"); - //return new Uri("https://app4.bewoplaner.de/servicesbd"); + //return new Uri("https://app4.bewoplaner.de/service"); //url = String.Format("app1.bewoplaner.de/service"); #endif diff --git a/BeWo/LoginControl.xaml.cs b/BeWo/LoginControl.xaml.cs index 91c826215..6932ab71f 100644 --- a/BeWo/LoginControl.xaml.cs +++ b/BeWo/LoginControl.xaml.cs @@ -260,7 +260,9 @@ namespace BeWo ServicePointManager.ServerCertificateValidationCallback = PinPublicKey; } - private static String PUB_KEY = "3082010A02820101009CD30CF05AE52E47B7725D3783B3686330EAD735261925E1BDBE35F170922FB7B84B4105ABA99E350858ECB12AC468870BA3E375E4E6F3A76271BA7981601FD7919A9FF3D0786771C8690E9591CFFEE699E9603C48CC7ECA4D7712249D471B5AEBB9EC1E37001C9CAC7BA705EACE4AEBBD41E53698B9CBFD6D3C9668DF232A42900C867467C87FA59AB8526114133F65E98287CBDBFA0E56F68689F3853F9786AFB0DC1AEF6B0D95167DC42BA065B299043675806BAC4AF31B9049782FA2964F2A20252904C674C0D031CD8F31389516BAA833B843F1B11FC3307FA27931133D2D36F8E3FCF2336AB93931C5AFC48D0D1D641633AAFA8429B6D40BC0D87DC3930203010001"; + private static String PUB_KEY_X3 = "3082010A02820101009CD30CF05AE52E47B7725D3783B3686330EAD735261925E1BDBE35F170922FB7B84B4105ABA99E350858ECB12AC468870BA3E375E4E6F3A76271BA7981601FD7919A9FF3D0786771C8690E9591CFFEE699E9603C48CC7ECA4D7712249D471B5AEBB9EC1E37001C9CAC7BA705EACE4AEBBD41E53698B9CBFD6D3C9668DF232A42900C867467C87FA59AB8526114133F65E98287CBDBFA0E56F68689F3853F9786AFB0DC1AEF6B0D95167DC42BA065B299043675806BAC4AF31B9049782FA2964F2A20252904C674C0D031CD8F31389516BAA833B843F1B11FC3307FA27931133D2D36F8E3FCF2336AB93931C5AFC48D0D1D641633AAFA8429B6D40BC0D87DC3930203010001"; + + private static String PUB_KEY_R3 = "3082010A0282010100BB021528CCF6A094D30F12EC8D5592C3F882F199A67A4288A75D26AAB52BB9C54CB1AF8E6BF975C8A3D70F4794145535578C9EA8A23919F5823C42A94E6EF53BC32EDB8DC0B05CF35938E7EDCF69F05A0B1BBEC094242587FA3771B313E71CACE19BEFDBE43B45524596A9C153CE34C852EEB5AEED8FDE6070E2A554ABB66D0E97A540346B2BD3BC66EB66347CFA6B8B8F572999F830175DBA726FFB81C5ADD286583D17C7E709BBF12BF786DCC1DA715DD446E3CCAD25C188BC60677566B3F118F7A25CE653FF3A88B647A5FF1318EA9809773F9D53F9CF01E5F5A6701714AF63A4FF99B3939DDC53A706FE48851DA169AE2575BB13CC5203F5ED51A18BDB150203010001"; @@ -269,21 +271,20 @@ namespace BeWo { try { - if (null == certificate || chain == null) + if (certificate == null || chain == null) return false; - ; + bool chainContainsPk = false; - + foreach (var element in chain.ChainElements) { String pk = element.Certificate.GetPublicKeyString(); - if (pk == PUB_KEY) + if (pk == PUB_KEY_X3 || pk == PUB_KEY_R3) { chainContainsPk = true; } } - //bool subjectAccepted = Regex.IsMatch(certificate.Subject, @"app[\d]*.bewoplaner.de"); bool subjectAccepted = certificate.Subject.Trim().ToLower().EndsWith(".bewoplaner.de") || certificate.Subject.Trim().ToLower().EndsWith(".ownchat.de"); return chainContainsPk && subjectAccepted; diff --git a/BeWo/Scheduler/View/SchedulerAppointmentEditForm.xaml.cs b/BeWo/Scheduler/View/SchedulerAppointmentEditForm.xaml.cs index 664d8ea1a..3afb52fd7 100644 --- a/BeWo/Scheduler/View/SchedulerAppointmentEditForm.xaml.cs +++ b/BeWo/Scheduler/View/SchedulerAppointmentEditForm.xaml.cs @@ -192,7 +192,7 @@ namespace BeWo.Scheduler.View private void InitRights() { - var darfKlientenAnsehen = BeWoUtils.HasRight(UserRightType.CustomerView_View); + var darfKlientenAnsehen = BeWoUtils.HasRight(UserRightType.CustomerView_View) || BeWoUtils.HasRight(UserRightType.Customer_ViewMyTeams) || BeWoUtils.HasRight(UserRightType.Customer_ViewMyCustomers); var darfKliententermineAnlegen = BeWoUtils.HasRight(UserRightType.KalenderKliententermineAnlegen); var darfKliententermineAendern = BeWoUtils.HasRight(UserRightType.KalenderKliententermineAendern); @@ -202,9 +202,6 @@ namespace BeWo.Scheduler.View var darfRessourcentermineAnlegen = BeWoUtils.HasRight(UserRightType.KalenderRessourcentermineAnlegen); var darfRessourcentermineAendern = BeWoUtils.HasRight(UserRightType.KalenderRessourcentermineAendern); - var darfAllesAnsehen = BeWoUtils.HasRight(UserRightType.ViewAll); - var darfAllesAendern = BeWoUtils.HasRight(UserRightType.EditAll); - var darfAllesLoeschen = BeWoUtils.HasRight(UserRightType.DeleteAll); if(IsNew && !darfKliententermineAnlegen) { diff --git a/BeWo/View/Detail/AbsenceTimesView.xaml b/BeWo/View/Detail/AbsenceTimesView.xaml index c25c0f2d4..3a7da8b7d 100644 --- a/BeWo/View/Detail/AbsenceTimesView.xaml +++ b/BeWo/View/Detail/AbsenceTimesView.xaml @@ -108,7 +108,11 @@ - + + + + + diff --git a/BeWo/View/Detail/AbsenceTimesView.xaml.cs b/BeWo/View/Detail/AbsenceTimesView.xaml.cs index 514e780d0..b50d28af2 100644 --- a/BeWo/View/Detail/AbsenceTimesView.xaml.cs +++ b/BeWo/View/Detail/AbsenceTimesView.xaml.cs @@ -9,7 +9,18 @@ namespace BeWo.View.Detail { public partial class AbsenceTimesView { - public static readonly DependencyProperty AbsenceTimesDependency = DependencyProperty.Register("AbsenceTimes", typeof(AbsenceTimeListVM), typeof(AbsenceTimesView), new PropertyMetadata(null)); + public static readonly DependencyProperty AbsenceTimesDependency = DependencyProperty.Register("AbsenceTimes", typeof(AbsenceTimeListVM), typeof(AbsenceTimesView), new UIPropertyMetadata(AbsenceTimesChanged)); + + private static void AbsenceTimesChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + var view = d as AbsenceTimesView; + var list = e.NewValue as AbsenceTimeListVM; + if (view != null && list != null) + { + view.AbsenceReasonComboBox.ItemsSource = list.PossibleReasons; + } + + } public ButtonClickCommand AddAbsenceTimesCommand { get; set; } public ButtonClickCommand RemoveAbsenceTimeCommand { get; set; } @@ -25,7 +36,7 @@ namespace BeWo.View.Detail InitializeComponent(); DataContext = this; - + AddAbsenceTimesCommand = new ButtonClickCommand(AddAbsenceTimes); RemoveAbsenceTimeCommand = new ButtonClickCommand(RemoveAbsenceTime); } diff --git a/BeWo/View/Detail/Report/FlexibleReportView.xaml.cs b/BeWo/View/Detail/Report/FlexibleReportView.xaml.cs index 9e5c67b99..545474e1d 100644 --- a/BeWo/View/Detail/Report/FlexibleReportView.xaml.cs +++ b/BeWo/View/Detail/Report/FlexibleReportView.xaml.cs @@ -119,8 +119,8 @@ namespace BeWo.View.Detail.Report //checkHilepläne.IsChecked = true; //checkIst.IsChecked = true; //checkKilometer.IsChecked = true; - checkKlienten.IsChecked = true; - checkMitarbeiter.IsChecked = true; + checkKlienten.IsChecked = false; + checkMitarbeiter.IsChecked = false; //checkRecords.IsChecked = true; //checkSoll.IsChecked = true; @@ -176,13 +176,14 @@ namespace BeWo.View.Detail.Report private void GridControl_CustomCellDisplayText(object sender, PivotCellDisplayTextEventArgs e) { - if (e.DataField.Name == nameof(FlexibleArbeitszeitStdSoll)) - { - if (e.RowField != null && (e.RowField.Name == nameof(FlexibleLeistungskategorie) || e.RowField.Name == nameof(FlexibleLeistung))) - { - //e.DisplayText = ""; - } - } + //if (e.data) + //if (e.DataField.Name == nameof(FlexibleArbeitszeitStdSoll)) + //{ + // if (e.RowField != null && (e.RowField.Name == nameof(FlexibleLeistungskategorie) || e.RowField.Name == nameof(FlexibleLeistung))) + // { + // //e.DisplayText = ""; + // } + //} if (e.Value != null && decimal.TryParse(e.Value.ToString(), out decimal d) && d == 0) e.DisplayText = ""; @@ -706,11 +707,11 @@ namespace BeWo.View.Detail.Report { ServiceRecordOid = entryDC.ServiceRecordOid, CustomerOid = entryDC.CustomerOid, - CustomerString = entryDC.CustomerString ?? "", + CustomerString = entryDC.CustomerString ?? Translator.Translate(" Ohne Klient/in"), EmployeeOid = entryDC.EmployeeOid, - EmployeeString = entryDC.EmployeeString ?? "", + EmployeeString = entryDC.EmployeeString ?? Translator.Translate(" Ohne Mitarbeiter/in"), SupportConceptOid = entryDC.SupportConceptOid, - SupportConceptString = entryDC.SupportConceptString ?? "", + SupportConceptString = entryDC.SupportConceptString ?? Translator.Translate(" Ohne Hilfeplan"), IstArbeitszeitMinuten = entryDC.IstArbeitszeitMinuten, IstBetreuungszeitMinuten = entryDC.IstBetreuungszeitMinuten, StartDatum = entryDC.StartDatum, diff --git a/BeWo/View/Detail/ServiceRecordEditView.xaml b/BeWo/View/Detail/ServiceRecordEditView.xaml index a37902e35..e6a7d6636 100644 --- a/BeWo/View/Detail/ServiceRecordEditView.xaml +++ b/BeWo/View/Detail/ServiceRecordEditView.xaml @@ -125,7 +125,7 @@ -