MH: FFS AZ-Nachweis + LH Coburg

This commit is contained in:
2023-01-02 15:48:41 +01:00
parent 94e12adef5
commit bbda0adf5a
6 changed files with 968 additions and 770 deletions

View File

@@ -571,6 +571,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HausDuelken", "ReportImp\Ha
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PsychosozialeHilfenBochum", "ReportImp\PsychosozialeHilfenBochum\PsychosozialeHilfenBochum.csproj", "{8CC19D28-E0C0-473F-A465-D2E5990C7789}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AwoDortmund", "ReportImp\AwoDortmund\AwoDortmund.csproj", "{E8EDD4DA-61CC-49E2-8337-5E91D8C47417}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|.NET = Debug|.NET
@@ -4526,6 +4528,22 @@ Global
{8CC19D28-E0C0-473F-A465-D2E5990C7789}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{8CC19D28-E0C0-473F-A465-D2E5990C7789}.Release|x86.ActiveCfg = Release|Any CPU
{8CC19D28-E0C0-473F-A465-D2E5990C7789}.Release|x86.Build.0 = Release|Any CPU
{E8EDD4DA-61CC-49E2-8337-5E91D8C47417}.Debug|.NET.ActiveCfg = Debug|Any CPU
{E8EDD4DA-61CC-49E2-8337-5E91D8C47417}.Debug|.NET.Build.0 = Debug|Any CPU
{E8EDD4DA-61CC-49E2-8337-5E91D8C47417}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E8EDD4DA-61CC-49E2-8337-5E91D8C47417}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E8EDD4DA-61CC-49E2-8337-5E91D8C47417}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{E8EDD4DA-61CC-49E2-8337-5E91D8C47417}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{E8EDD4DA-61CC-49E2-8337-5E91D8C47417}.Debug|x86.ActiveCfg = Debug|Any CPU
{E8EDD4DA-61CC-49E2-8337-5E91D8C47417}.Debug|x86.Build.0 = Debug|Any CPU
{E8EDD4DA-61CC-49E2-8337-5E91D8C47417}.Release|.NET.ActiveCfg = Release|Any CPU
{E8EDD4DA-61CC-49E2-8337-5E91D8C47417}.Release|.NET.Build.0 = Release|Any CPU
{E8EDD4DA-61CC-49E2-8337-5E91D8C47417}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E8EDD4DA-61CC-49E2-8337-5E91D8C47417}.Release|Any CPU.Build.0 = Release|Any CPU
{E8EDD4DA-61CC-49E2-8337-5E91D8C47417}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{E8EDD4DA-61CC-49E2-8337-5E91D8C47417}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{E8EDD4DA-61CC-49E2-8337-5E91D8C47417}.Release|x86.ActiveCfg = Release|Any CPU
{E8EDD4DA-61CC-49E2-8337-5E91D8C47417}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -4807,6 +4825,7 @@ Global
{13735B44-C4A2-467A-85C3-BDFD9939EE77} = {D8A691C5-146D-4613-86CC-438F02FE9106}
{ED3DBD24-B774-41E5-A856-99FF78D828A8} = {D8A691C5-146D-4613-86CC-438F02FE9106}
{8CC19D28-E0C0-473F-A465-D2E5990C7789} = {D8A691C5-146D-4613-86CC-438F02FE9106}
{E8EDD4DA-61CC-49E2-8337-5E91D8C47417} = {D8A691C5-146D-4613-86CC-438F02FE9106}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {FBE985BB-9F0F-4DBB-8F94-ABC37A803FF9}

View File

@@ -21,6 +21,7 @@ namespace FreundeskreisSuchthilfe.Alt
public void SetReportDataSource(MitarbeiterstundenkontoRO pRO)
{
var msb = new CustomMitarbeiterstundenkontoBerechnung();
msb.CreateReport(pRO);
@@ -38,9 +39,37 @@ namespace FreundeskreisSuchthilfe.Alt
ed.Regelarbeitszeit = String.Format("{0:0.00} Stunden pro Woche", c.WeeklyTotalHours);
}
}
}
this.bindingSource1.DataSource = pRO;
// Datum in erster Spalte austauschen durch Custom1 und da dann immer entweder das formatierte Datum reinschreiben oder "Gesamt". Je nachdem kann dann auch
// in den FormatingRules für die GANZE ZEILE die Farbe geändert werden
// Mit foreach durch die Tage laufen, und bis zu jedem Sonntag die Tage in eine Liste sammeln, um dann nach einem Sonntag ein neues Objekt (Datum Sonntag Abend
// für Sortierung) erzeugen, wo in Custom1 dann "Gesamt steht" und die summierten Wochenstunden drin stehen, restlichen Datenfelder können dann leer sein.
decimal wochenstunden = 0;
var daysInMonth = ed.Days.Count;
List<MitarbeiterstundenkontoRO.DayDetail> wochenSummaries = new List<MitarbeiterstundenkontoRO.DayDetail>();
foreach (var day in ed.Days)
{
day.Custom1 = string.Format("{0:dd ddd.}", day.Date);
day.Custom2 = string.Format("{0:0.00}", ed.SollProTag);
day.MinutesTotal = day.MinutesTotal / 60;
day.Custom3 = (day.MinutesTotal - ed.SollProTag > 0) ? string.Format("{0:0.00}", day.MinutesTotal - ed.SollProTag) : "";
day.Custom4 = string.Format("{0:0}", day.PauseInMinuten);
wochenstunden += day.MinutesTotal;
if (day.IstSonntag || day.Date.Day == daysInMonth)
{
var summary = new MitarbeiterstundenkontoRO.DayDetail();
summary.Date = new DateTime(day.Date.Year, day.Date.Month, day.Date.Day, 18, 0, 0);
summary.Custom1 = "Gesamt";
summary.MinutesTotal = wochenstunden;
wochenSummaries.Add(summary);
wochenstunden = 0;
}
}
foreach (var s in wochenSummaries)
ed.Days.Add(s);
ed.Days = ed.Days.OrderBy(d => d.Date).ToList();
}
this.bindingSource1.DataSource = pRO;
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -117,6 +117,184 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="xrPictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
/9j/4AAQSkZJRgABAQEA3ADcAAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcI
CQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwM
DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCADhAQMDASIAAhEBAxEB/8QA
HwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh
MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVW
V1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG
x8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQF
BgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV
YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE
hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq
8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9/KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKyvGPjPS/APh661XWL630/T7Rd0s0zbVX0A9SewHJPSgDTmlWCFpHZURAWZicBQO5NfKfxo/4KCXO
u+Jo/D3wfg03xRq1jqMUN68t7Ei3C5O+KCMnzJPeRQAnvzXl/wDwUL/blvdP8ECxVZtHh1hc2WiyHy76
9iPS4uwCTFCeqxcM/wDEQPlP5v6V4kvNC8RwatZzta39rcC4hli+Xy3DbgR6YP4UAfvh8Gfi5YfGPwgm
pWiyWt1C5t76ynG2ewuF4eKQdiD+BHSuur8yv2Lf2+L7W/GP9sawyzeJoYvL16GGMIdes16XKouFNxAP
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
KKACiiigAooooAKKKKACiiigAooooA//2Q==
</value>
</data>
<metadata name="bindingSource1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text.RegularExpressions;
using System.Windows.Forms.VisualStyles;
@@ -232,7 +233,8 @@ namespace LebenshilfeCoburg.Invoicing
// Für jede der bewilligten Leistungen die entsprechende Regel zur Berechnung des Betrags anwenden.
foreach (var leistung in bewilligteLeistungen)
{
InvoiceItem invoiceItem = ErstelleInvoiceItemBasierendAufLeistungskategorie(leistung, bookings, serviceRecords, supportConcept);
serviceInvoicePeriod.InvoiceItemList.Add(invoiceItem);
}
@@ -245,15 +247,101 @@ namespace LebenshilfeCoburg.Invoicing
// {
// AmountTotal = billingData.AmountTotal,
// GrossAmountTotal = billingData.GrossAmountTotal,
// ItemPeriodStart = billingData.BillingPeriodStart,
// ItemPeriodEnd = billingData.BillingPeriodEnd,
// AccountingInterval = billingData.AccountingInterval,
// AmountPerUnit = billingData.AmountPerUnit,
// UnitCount = billingData.UnitCount
// -ItemPeriodStart = billingData.BillingPeriodStart,
// -ItemPeriodEnd = billingData.BillingPeriodEnd,
// -AccountingInterval = billingData.AccountingInterval,
// -AmountPerUnit = billingData.AmountPerUnit,
// -UnitCount = billingData.UnitCount
// });
//}
#endregion
}
private InvoiceItem ErstelleInvoiceItemBasierendAufLeistungskategorie(SupportConceptApprovalPeriodDC leistung, List<AdditionalServiceBooking> bookings, List<ServiceRecordDC> serviceRecords, SupportConcept supportConcept)
{
if (leistung.ServiceCategory.Name == "ind. P/B FK")
return ErstelleIndPBFKInvoiceItem(leistung, bookings, supportConcept);
else if (leistung.ServiceCategory.Name == "NW FK")
return ErstelleNWFKInvoiceItem(leistung, bookings, serviceRecords);
else
return new InvoiceItem();
}
private InvoiceItem ErstelleIndPBFKInvoiceItem(SupportConceptApprovalPeriodDC leistung, List<AdditionalServiceBooking> bookings, SupportConcept supportConcept)
{
InvoiceItem ii = new InvoiceItem();
ii.AmountPerUnit = leistung.ServiceCategory.CostRatePeriods[0].CostRateValue;
ii.ItemPeriodStart = leistung.StartDate;
ii.ItemPeriodEnd = leistung.EndDate;
ii.AccountingInterval = leistung.ServiceCategory.AccountingInterval;
decimal? anzahlStunden = 0;
var leistungsstundenProTag = leistung.ApprovedBEPerInterval / 7;
// Jetzt für jeden Tag, wo Klient anwesend war, auf Gesamtstunden die leistungsstundenProTag addieren
foreach (var b in bookings)
{
if (PersonWarAnwesend(b, supportConcept.Customer))
anzahlStunden += leistungsstundenProTag;
else
Debug.WriteLine(""); // Nur Debugzwecke und kann nach Abschluss weg
}
decimal? preisGesamt = anzahlStunden * ii.AmountPerUnit;
// Rest des InvoiceItems setzen
ii.UnitCount = anzahlStunden;
ii.GrossAmountTotal = preisGesamt;
return ii;
}
private InvoiceItem ErstelleNWFKInvoiceItem(SupportConceptApprovalPeriodDC leistung, List<AdditionalServiceBooking> bookings, List<ServiceRecordDC> serviceRecords)
{
InvoiceItem ii = new InvoiceItem();
foreach (var b in bookings)
{
var eintraegeAnTag = serviceRecords.Where(s => s.Start.Value.Date == b.Datum && s.ServiceDescription.Category.Name == "Nachtdienst").ToList();
if (eintraegeAnTag.Count > 0)
{
var dauerInMinuten = eintraegeAnTag[0].RoundedDuration;
var anzAnwesendeKlienten = AnzahlAnwesendePersonenAmTag(bookings, eintraegeAnTag[0].Start.Value);
var leistungsstundenProTag = (dauerInMinuten / anzAnwesendeKlienten) / 60;
Console.WriteLine();
}
}
return ii;
}
private int AnzahlAnwesendePersonenAmTag(List<AdditionalServiceBooking> bookings, DateTime datum)
{
int anwesendePersonen = 0;
foreach (var tag in bookings)
{
if (tag.Datum == datum)
{
foreach (var customer in tag.Customer2AddServiceBookings)
{
if (customer.Participated == true)
anwesendePersonen++;
}
}
}
return anwesendePersonen;
}
private bool PersonWarAnwesend(AdditionalServiceBooking booking, Customer customer)
{
foreach (var c2Asb in booking.Customer2AddServiceBookings)
{
if (customer.Oid == c2Asb.CustomerOid)
return c2Asb.Participated == true ? true : false;
}
return false;
}
}
}