From eb7f4aed9f73bccc4a74d4bf96c735cd5c707c87 Mon Sep 17 00:00:00 2001 From: Alexandra Date: Wed, 3 Aug 2022 16:46:41 +0200 Subject: [PATCH 1/3] Zuverdienst --- .../Invoicing/ZVInvoiceCreation.cs | 146 ++++++++++++++++++ .../Service/ZuverdienstHelper.cs | 2 +- 2 files changed, 147 insertions(+), 1 deletion(-) diff --git a/ReportImp/DomizielAnsbach/Invoicing/ZVInvoiceCreation.cs b/ReportImp/DomizielAnsbach/Invoicing/ZVInvoiceCreation.cs index 100e86a0c..f47b05a48 100644 --- a/ReportImp/DomizielAnsbach/Invoicing/ZVInvoiceCreation.cs +++ b/ReportImp/DomizielAnsbach/Invoicing/ZVInvoiceCreation.cs @@ -50,6 +50,108 @@ namespace DomizielAnsbach.Invoicing serviceInvoice.InvoiceBase.RecipientAddress = address.CopyToNew(); } + public override IList CreateInvoiceItems(List serviceRecordsInPeriod, DateTimeSpan invoicePeriod, SupportConceptApprovalPeriod scap, + BS.Shared.Services.Calculations calc) + { + var list = base.CreateInvoiceItems(serviceRecordsInPeriod, invoicePeriod, scap, calc); + var cb2sc = scap.CostBearer2SupportConcept; + + IList ergebnis = new List(); + var customer = cb2sc.SupportConcept.Customer; + + DateTime start = invoicePeriod.StartDate; + DateTime ende = invoicePeriod.EndDate; + ////decimal tageMonat; + //int count = 0; + //decimal firstDays = 0; + + //var c = scap.CostBearer2SupportConcept.SupportConcept.Customer; + var cbOid = scap.CostBearer2SupportConcept.CostBearer.Oid ?? 0; + var pausch = ZuverdienstHelper.GetPauschalen(cbOid, customer, DateTime.Today); + //var tage = ZuverdienstHelper.SetArbeitszeiten(pRO, cbOid, c); + + var crList = MapperFactory.CostRatePeriodDC_CostRatePeriod.MapToNewDCs(scap.ServiceCategory.CostRatePeriods); + AddCostRatePeriods(crList, pausch, scap); + + var mot = crList.GetCostRatePeriodForDate(BS.Shared.CostRatePeriodType.AmountOfMoney, start); + decimal? stundensatz; + + //if (crp != null && crp.CostRateValue.HasValue) + // monatssatz = crp.CostRateValue; + //var tagessatz = Convert.ToInt32(monatssatz) / 30.42; + + foreach (var at in customer.AbsenceTimes) + { + if (at.AbsenceReason.BillableMinutes.HasValue && at.AbsenceReason.Description.Contains("ZV")) + { + if (at.Start.HasValue && at.End.HasValue && (at.Start.Value >= start || at.End.Value >= ende) && at.Start.Value <= ende) + { + for (int i = 0; i <= (at.End.Value - at.Start.Value).Days; i++) + { + var tag = at.Start.Value.AddDays(i); + var reason = at.AbsenceReason.Description.Substring(5); + if (reason.Contains("Urlaub") || reason.Contains("Feiertag") || reason.Contains("krank")) + { + var std = GetFeiertagsstunden(customer.Arbeitszeiten, customer, tag); + if (std > 0) + { + if (reason.Contains("Urlaub") && (pausch.urlaub != 0 || pausch.urlaubMot == true)) + { + if (pausch.urlaub != 0) + stundensatz = pausch.urlaub; + else + stundensatz = mot.CostRateValue; + } + else if (reason.Contains("krank") && (pausch.krank != 0 || pausch.krankMot == true)) + { + if (pausch.krank != 0) + stundensatz = pausch.krank; + else + stundensatz = mot.CostRateValue; + } + else if (reason.Contains("Feiertag") && (pausch.feiertag != 0 || pausch.feiertagMot == true)) + { + if (pausch.feiertag != 0) + stundensatz = pausch.feiertag; + else + stundensatz = mot.CostRateValue; + } + else + stundensatz = 0; + if (stundensatz != 0) + { + var ii = new InvoiceItem(); + //stundensatz = mot.CostRateValue; + ii.AmountPerUnit = std * stundensatz; + ii.UnitCount = 1; + ii.AmountTotal = std * stundensatz; + ii.GrossAmountTotal = std * stundensatz; + ii.ItemPeriodStart = start; + ii.ItemPeriodEnd = ende; + ii.UnitDescription = "Tag"; + //ii.RateFactor = 1; + //ii.AccountingInterval = bd.AccountingInterval; + ii.ItemDescription = String.Format("bezahlte Freistellung ({0})", reason); + + ergebnis.Add(ii); + } + } + } + } + } + } + } + //var aitem = CreateAbwesenheitsItem(serviceRecordsInPeriod, invoicePeriod, scap); + + if (ergebnis != null) + foreach (var i in ergebnis) + { + list.Add(i); + } + + return list; + } + public override InvoiceItem CreateInvoiceItem(ServiceRecordDC iServiceRecord, SupportConceptApprovalPeriod scap, Calculations calc) { var invoiceItem = new InvoiceItem(); @@ -176,5 +278,49 @@ namespace DomizielAnsbach.Invoicing } } } + + public static decimal GetFeiertagsstunden(IList zeiten, Customer c, DateTime tag) + { + decimal std = 0; + if (zeiten != null) + { + foreach (var az in zeiten) + { + if ((!az.GueltigVon.HasValue || az.GueltigVon <= tag) && + (!az.GueltigBis.HasValue || az.GueltigBis >= tag) && az.ArbeitszeitEintraege != null) + { + foreach (var e in az.ArbeitszeitEintraege) + { + if ((((int)e.Tag) + 1) == ((int)tag.DayOfWeek)) + { + if (e.Notice != "Pause") + std += GetZeitenFuerTag(e); + else + std -= GetZeitenFuerTag(e); + } + } + } + } + } + std = Math.Round(std / 60, 2, MidpointRounding.AwayFromZero); + return std; + } + + private static decimal GetZeitenFuerTag(ArbeitszeitEintrag e) + { + var day = DateTime.Now; + decimal min = 0; + + String dateStr1 = String.Format("{0:dd.MM.yyyy} {1}", day, e.UhrzeitVon); + String dateStr2 = String.Format("{0:dd.MM.yyyy} {1}", day, e.UhrzeitBis); + + DateTime date1; + DateTime date2; + + if (DateTime.TryParse(dateStr1, out date1) && DateTime.TryParse(dateStr2, out date2)) + min += (decimal)date2.Subtract(date1).TotalMinutes; + + return min; + } } } diff --git a/ReportImp/DomizielAnsbach/Service/ZuverdienstHelper.cs b/ReportImp/DomizielAnsbach/Service/ZuverdienstHelper.cs index 20318e874..19bbc399b 100644 --- a/ReportImp/DomizielAnsbach/Service/ZuverdienstHelper.cs +++ b/ReportImp/DomizielAnsbach/Service/ZuverdienstHelper.cs @@ -261,7 +261,7 @@ namespace DomizielAnsbach.Service return count; } - private static decimal GetFeiertagsstunden(List zeiten, Customer c, DateTime tag) + public static decimal GetFeiertagsstunden(List zeiten, Customer c, DateTime tag) { decimal std = 0; if (zeiten != null) From 06b3ad850f3e5044b51a6fa71ebcd151fb8018bb Mon Sep 17 00:00:00 2001 From: Marcel Hirschle Date: Thu, 4 Aug 2022 08:18:13 +0200 Subject: [PATCH 2/3] =?UTF-8?q?MH:=20Sichtbarkeitsbedingung=20f=C3=BCr=20T?= =?UTF-8?q?eams=20in=20CustomerNavigationView?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ServicesOverviewReport.cs | 2 +- Service/Plugins/CustomerService.cs | 19 ++++++++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/ReportImp/DiakonieLandshut/ServicesOverviewReport.cs b/ReportImp/DiakonieLandshut/ServicesOverviewReport.cs index bd90356b1..85e95dbc7 100644 --- a/ReportImp/DiakonieLandshut/ServicesOverviewReport.cs +++ b/ReportImp/DiakonieLandshut/ServicesOverviewReport.cs @@ -150,7 +150,7 @@ namespace DiakonieLandshut } else if (maLastName.Contains("Hoss") || maLastName.Contains("Hoß")) { - xrBox.Image = xrPictureBox2.Image; + xrBox.Image = picMasterHoß.Image; } } else diff --git a/Service/Plugins/CustomerService.cs b/Service/Plugins/CustomerService.cs index 6847bdbf6..ba1ebb333 100644 --- a/Service/Plugins/CustomerService.cs +++ b/Service/Plugins/CustomerService.cs @@ -86,6 +86,23 @@ namespace BeWo.Service.Plugins teamOids = CreateTeamOidDict(currentEmployeeOid.Value); } + UserDC user; + if (LoggedInUserOperationContextExt.Current != null && LoggedInUserOperationContextExt.Current.User != null) + { + user = MapperFactory.UserDC_User.MapToNewDC(LoggedInUserOperationContextExt.Current.User); + } + else + { + user = MapperFactory.UserDC_User.MapToNewDC(SessionFacade.LoggedInUser); + } + var hasRight1 = user.HasRight(UserRightType.TeamView_ViewAll); + var hasRight2 = user.HasRight(UserRightType.CustomerView_View); + if (teamOids.Count == 0 && hasRight1 && hasRight2) + { + foreach (var t in teams) + teamOids.Add(t.TeamOid, t.TeamOid); + } + foreach (Customer customer in customers) { if (!cProcessed.ContainsKey(customer.Oid.Value)) @@ -93,7 +110,7 @@ namespace BeWo.Service.Plugins CompactCustomerDC dc = CreateCompactCustomerDCWithEmployeeRelation(customer, fetchReferenceNumbers, true, currentEmployeeOid, teamOids); // Alle zugehörigen Teamnamen setzen - if (dc.RelatedTeamOids != null) + if (dc.RelatedTeamOids != null) // Hier muss entweder eine neue Bedingung festgelegt werden oder es muss ganz weg, sonst wird man keine Teamzuordnungen sehen, wenn man selbst in keinem Team ist { foreach (var oid in dc.RelatedTeamOids) { From 163865674d56f79a2369182a4eb6684a246a65ab Mon Sep 17 00:00:00 2001 From: Marcel Hirschle Date: Fri, 5 Aug 2022 13:23:01 +0200 Subject: [PATCH 3/3] =?UTF-8?q?MH:=20Sichtbarkeitsanpassung=20CustomerServ?= =?UTF-8?q?ice=20und=20Bugfix=20f=C3=BCr=20Pusteblume?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ReportImp/PraxisPusteblume/Invoicing/IFSInvoiceCreation.cs | 2 ++ Service/Plugins/CustomerService.cs | 4 +--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ReportImp/PraxisPusteblume/Invoicing/IFSInvoiceCreation.cs b/ReportImp/PraxisPusteblume/Invoicing/IFSInvoiceCreation.cs index 37a3bd7f2..87acc2b0f 100644 --- a/ReportImp/PraxisPusteblume/Invoicing/IFSInvoiceCreation.cs +++ b/ReportImp/PraxisPusteblume/Invoicing/IFSInvoiceCreation.cs @@ -40,6 +40,8 @@ namespace PraxisPusteblume.Invoicing foreach (var data in splitList) { var invoice = CreateSingleInvoice(invoiceCounter, costBearer, invoicePeriod, iSupportConcept2ServiceRecords.Key, data.ServiceRecords); + if (invoice == null) + continue; invoice.InvoiceBase.InvoiceId = data.InvoiceId; invoice.InvoiceBase.InvoiceTypeText = data.Title; invoiceList.Add(invoice); diff --git a/Service/Plugins/CustomerService.cs b/Service/Plugins/CustomerService.cs index ba1ebb333..df010bc32 100644 --- a/Service/Plugins/CustomerService.cs +++ b/Service/Plugins/CustomerService.cs @@ -95,9 +95,7 @@ namespace BeWo.Service.Plugins { user = MapperFactory.UserDC_User.MapToNewDC(SessionFacade.LoggedInUser); } - var hasRight1 = user.HasRight(UserRightType.TeamView_ViewAll); - var hasRight2 = user.HasRight(UserRightType.CustomerView_View); - if (teamOids.Count == 0 && hasRight1 && hasRight2) + if (teamOids.Count == 0) { foreach (var t in teams) teamOids.Add(t.TeamOid, t.TeamOid);