From 731809fcd68ca5b4634e8f2af298feca7708fb69 Mon Sep 17 00:00:00 2001 From: Christian Date: Thu, 7 Dec 2023 10:12:07 +0100 Subject: [PATCH] =?UTF-8?q?Fortis=20Plan/Ist=20=C3=9Cbersicht,=20Bugfix=20?= =?UTF-8?q?im=20Punktebogen=20Ausdruck?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../View/Detail/AdditionalServiceView.xaml.cs | 17 +++++- Report/ReportObjects/AssessmentSheetRO.cs | 14 +++-- Report/ReportObjects/ServicesOverviewRO.cs | 7 +++ ReportImp/Fortis/Quittierungsbeleg.cs | 9 +++ .../ZeitdokumentationPlanIstUebersicht.cs | 58 ++++++++++++++----- .../Quittierungsbeleg.cs | 2 +- Service/Plugins/PluginLoader.cs | 4 +- .../Plugins/SupportConceptAnalysisCreator.cs | 2 +- Shared/Services/Calculations.cs | 2 +- 9 files changed, 87 insertions(+), 28 deletions(-) diff --git a/BeWo/View/Detail/AdditionalServiceView.xaml.cs b/BeWo/View/Detail/AdditionalServiceView.xaml.cs index b40527385..9741fecb4 100644 --- a/BeWo/View/Detail/AdditionalServiceView.xaml.cs +++ b/BeWo/View/Detail/AdditionalServiceView.xaml.cs @@ -786,8 +786,15 @@ namespace BeWo.View.Detail private void GridViewBase_OnCellValueChanging(object sender, CellValueChangedEventArgs e) { - // Das Datum ist der eindeutige Identifikator - var tableView = (TableView)sender; + //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); @@ -1044,6 +1051,12 @@ namespace BeWo.View.Detail private void button_ADadd_Click(object sender, RoutedEventArgs 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); + return; + } + if (AdditionalServiceBookings.NewVM == null || AdditionalServiceBookings.NewVM.CustomerOidDict == null) return; diff --git a/Report/ReportObjects/AssessmentSheetRO.cs b/Report/ReportObjects/AssessmentSheetRO.cs index ea0849133..fdfb211ac 100644 --- a/Report/ReportObjects/AssessmentSheetRO.cs +++ b/Report/ReportObjects/AssessmentSheetRO.cs @@ -46,25 +46,29 @@ namespace BeWo.Report.ReportObjects foreach (var e in entrylist) { - AssessmentSheetRow row; + AssessmentSheetRow row = null; if (catOid2RowDict.ContainsKey(e.AssessmentSheetCategory.Oid.Value)) { row = catOid2RowDict[e.AssessmentSheetCategory.Oid.Value]; } else { - row = new AssessmentSheetRow + + if (!e.AssessmentSheetCategory.ScopeType.HasValue || e.AssessmentSheetCategory.ScopeType.Value == BS.Shared.ScopeTypeId.Global || e.AssessmentSheetCategory.Customers.Count > 0) + { + row = new AssessmentSheetRow { Category = e.AssessmentSheetCategory.Description, Position = e.AssessmentSheetCategory.Position }; - result.Rows.Add(row); - catOid2RowDict.Add(e.AssessmentSheetCategory.Oid.Value, row); + result.Rows.Add(row); + catOid2RowDict.Add(e.AssessmentSheetCategory.Oid.Value, row); + } } - if (e.Day >= dt && e.Day < dt.AddMonths(1)) + if (row != null && e.Day >= dt && e.Day < dt.AddMonths(1)) { var sv = new SheetValue {Value = e.AssessmentSheetValue.Sign, Color = e.AssessmentSheetValue.Color}; if (e.Day.Value.Day == 1) diff --git a/Report/ReportObjects/ServicesOverviewRO.cs b/Report/ReportObjects/ServicesOverviewRO.cs index f74c2c0bd..c25a25653 100644 --- a/Report/ReportObjects/ServicesOverviewRO.cs +++ b/Report/ReportObjects/ServicesOverviewRO.cs @@ -1003,6 +1003,11 @@ namespace BeWo.Report.ReportObjects decimal flmOFehlkontakte = 0; decimal flmFehlkontakte = 0; + sd.ProzentAbrechenbar = iSr.ServiceDescription.ServiceCategory.ProzentAbrechnung; + if (iSr.ServiceDescription.ProzentAbrechnung.HasValue) + { + sd.ProzentAbrechenbar = iSr.ServiceDescription.ProzentAbrechnung.Value; + } if (iSr.ServiceDescription.ServiceCategory.IsBillable) { if (iSr.ServiceDescription.Name.ToLower().Contains("fehlkontakt") || (iSr.ServiceDescription.ProzentAbrechnung.HasValue && iSr.ServiceDescription.ProzentAbrechnung.Value < 100)) @@ -1621,6 +1626,8 @@ namespace BeWo.Report.ReportObjects public double MinutesUnqualified { get; set; } + public decimal ProzentAbrechenbar { get; set; } + public string Notice { get; set; } public string Notice2 { get; set; } diff --git a/ReportImp/Fortis/Quittierungsbeleg.cs b/ReportImp/Fortis/Quittierungsbeleg.cs index 0b23af794..1ce376fcf 100644 --- a/ReportImp/Fortis/Quittierungsbeleg.cs +++ b/ReportImp/Fortis/Quittierungsbeleg.cs @@ -26,6 +26,11 @@ namespace Fortis foreach (var sr in pRO.Services) { + if (sr.ProzentAbrechenbar < 100) + { + sr.Minutes = (sr.Minutes / 100) * (double)sr.ProzentAbrechenbar; + } + FortisServiceRecord fsr = null; if (!tag2Details.ContainsKey(sr.StartDate.Day)) { @@ -77,6 +82,10 @@ namespace Fortis fsr.FehlkontaktBeginn = sr.StartDate; fsr.FehlkontaktEnde = sr.EndDate; } + else + { + fsr.MinutenH += sr.Minutes; + } fsr.AnzahlMA += sr.EmployeeCount; fsr.Groesse += sr.CustomerCount; } diff --git a/ReportImp/Fortis/ZeitdokumentationPlanIstUebersicht.cs b/ReportImp/Fortis/ZeitdokumentationPlanIstUebersicht.cs index 1aae0a4d0..926cd0f8e 100644 --- a/ReportImp/Fortis/ZeitdokumentationPlanIstUebersicht.cs +++ b/ReportImp/Fortis/ZeitdokumentationPlanIstUebersicht.cs @@ -44,7 +44,7 @@ namespace Fortis } if (ro.DokuzeitraumStart.HasValue && ro.DokuzeitraumEnde.HasValue) { - ro.AnzahlTagePlan = (int)ro.DokuzeitraumEnde.Value.Subtract(ro.DokuzeitraumEnde.Value).TotalDays + 1; + ro.AnzahlTagePlan = (int)ro.DokuzeitraumEnde.Value.Subtract(ro.DokuzeitraumStart.Value).TotalDays + 1; } ro.StufeGeplant = ""; @@ -52,7 +52,7 @@ namespace Fortis if (pRO.ApprovedFLSPerWeek > 0) { - decimal minuten = pRO.ApprovedFLSPerWeek / 60; + decimal minuten = pRO.ApprovedFLSPerWeek * 60; if (minuten < 30) { ro.StufeGeplant = ""; @@ -156,20 +156,9 @@ namespace Fortis { ro.AnzahlTage = (int)ro.AktuellesDatum.Subtract(ro.DokuzeitraumStart.Value).TotalDays + 1; } - if (pRO.Services != null) - { - foreach (var sr in pRO.Services) - { - if (sr.ServiceDescription != null && sr.ServiceDescription.Contains("abgesagt")) - { - ro.SummeAbgesagt += (decimal)sr.Minutes; - } - else - { - ro.SummeDirekt += (decimal)sr.Minutes; - } - } - } + + BerechneGesamtSummenIst(pRO, ro); + if (ro.AnzahlTage.HasValue && ro.AnzahlTage.Value > 0) { @@ -268,6 +257,43 @@ namespace Fortis return ro; } + + private void BerechneGesamtSummenIst(ServicesOverviewRO pRO, PlanIstUebersichtRO ro) + { + if (pRO.CostBearer2SupportConceptList != null && pRO.CostBearer2SupportConceptList.Count > 0) + { + IList allServiceRecords = pRO.CostBearer2SupportConceptList[0].ServiceRecords; + Dictionary groupBookingDict = new Dictionary(); + foreach (var item in allServiceRecords) + { + if (!item.GroupOid.HasValue || !groupBookingDict.ContainsKey(item.GroupOid.Value)) + { + + decimal prozent = item.ServiceDescription.ServiceCategory.ProzentBudget ?? 100; + if (item.ServiceDescription.ProzentBudget.HasValue) + { + prozent = item.ServiceDescription.ProzentBudget.Value; + + } + var minutenIst = (item.RoundedDuration * prozent) / 100; + + if (item.ServiceDescription != null && item.ServiceDescription.Name.Contains("abgesagt")) + { + ro.SummeAbgesagt += minutenIst; + } + else + { + ro.SummeDirekt += minutenIst; + } + + if (item.GroupOid.HasValue) + groupBookingDict.Add(item.GroupOid.Value, true); + + } + } + + } + } } public class PlanIstUebersichtRO diff --git a/ReportImp/IlkaLinkAmbulanteHilfen/Quittierungsbeleg.cs b/ReportImp/IlkaLinkAmbulanteHilfen/Quittierungsbeleg.cs index 4adab8b84..6b713869b 100644 --- a/ReportImp/IlkaLinkAmbulanteHilfen/Quittierungsbeleg.cs +++ b/ReportImp/IlkaLinkAmbulanteHilfen/Quittierungsbeleg.cs @@ -40,7 +40,7 @@ namespace IlkaLinkAmbulanteHilfen { foreach (var eintrag in item.NotizenEintraege) { - if (eintrag.Datum.Value.Month == pRO.StartDate.Month && eintrag.Datum.Value.Year == pRO.StartDate.Year && eintrag.EintragKategorieDC.DisplayName.Contains("Bemerkung")) + if (eintrag.Datum.Value.Month == pRO.StartDate.Month && eintrag.Datum.Value.Year == pRO.StartDate.Year && eintrag.EintragKategorieDC != null && eintrag.EintragKategorieDC.DisplayName.Contains("Bemerkung")) notizenFuerQB.Add(eintrag); } } diff --git a/Service/Plugins/PluginLoader.cs b/Service/Plugins/PluginLoader.cs index 367b00d22..0f7c8460e 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 @@ -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/Plugins/SupportConceptAnalysisCreator.cs b/Service/Plugins/SupportConceptAnalysisCreator.cs index c30f822b6..e3efb63e4 100644 --- a/Service/Plugins/SupportConceptAnalysisCreator.cs +++ b/Service/Plugins/SupportConceptAnalysisCreator.cs @@ -668,7 +668,7 @@ namespace BeWo.Service.Plugins decimal lDurationInWeeksTillNow = 0; decimal lDurationInWeeks = 0; - if (iDC.CustomerLastName == "Yavuz") + if (iDC.CustomerLastName == "Krzizok") { int test = 0; } diff --git a/Shared/Services/Calculations.cs b/Shared/Services/Calculations.cs index 982e6c4f4..ac3754b30 100644 --- a/Shared/Services/Calculations.cs +++ b/Shared/Services/Calculations.cs @@ -1382,7 +1382,7 @@ namespace BS.Shared.Services var span = keyValuePair.Value; var rf = keyValuePair.Key; - if (rf.CostRateValue.HasValue && rf.CostRateValue.Value > 0) + if (rf.CostRateValue.HasValue) { var spanDays = (span.EndDate - span.StartDate).Days + 1; var approvedHoursPerDayRf = (approvedHoursPerDay * 100) / (rf.CostRateValue.Value + 100);