LwvKASpitzabrechnung + LwvKASpitzabrechnungRO Zwischenstand
This commit is contained in:
1572
Report/DefaultReports/LwvKASpitzabrechnung.Designer.cs
generated
1572
Report/DefaultReports/LwvKASpitzabrechnung.Designer.cs
generated
File diff suppressed because it is too large
Load Diff
@@ -13,24 +13,8 @@ namespace BeWo.Report.DefaultReports
|
||||
}
|
||||
|
||||
public void SetReportDataSource(LwvKASpitzabrechnungRO pRO)
|
||||
{
|
||||
if (!String.IsNullOrEmpty(pRO.CustomerDC.LastName))
|
||||
{
|
||||
//pRO.CustomerDC.LastName = pRO.CustomerDC.LastName.Replace("/", "").Replace("LWL Psych", "").Replace("LWL Sucht", "").Trim();
|
||||
|
||||
|
||||
}
|
||||
//if (pRO.Transaktionen != null)
|
||||
//{
|
||||
// pRO.Transaktionen = pRO.Transaktionen.OrderBy(o => o.Belegdatum).ToList();
|
||||
//}
|
||||
|
||||
{
|
||||
bindingSource1.DataSource = pRO;
|
||||
}
|
||||
|
||||
private void xrLabel8_BeforePrint(object sender, System.ComponentModel.CancelEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,15 +20,17 @@ namespace BeWo.Report.ReportObjects
|
||||
public CustomerDC CustomerDC { get; set; }
|
||||
public DateTime BewilligtStart { get; set; }
|
||||
public DateTime BewilligtEnde { get; set; }
|
||||
public List<Preiszeitraum> Preiszeitraeume { get; set; }
|
||||
public List<LwvKASpitzabrechnungsWochenZeile> WochenZeilen { get; set; }
|
||||
public decimal SummeFLStunden { get; set; }
|
||||
public decimal SummeGesamtStunden { get; set; }
|
||||
public decimal SummeBewilligteStunden { get; set; }
|
||||
public decimal SummeErbrachteStunden { get; set; }
|
||||
public decimal SummeStundenDifferenz { get; set; }
|
||||
public decimal SummeBetragPauschal { get; set; }
|
||||
public decimal SummeBetragErbracht { get; set; }
|
||||
|
||||
public static LwvKASpitzabrechnungRO Create(long c2sOid)
|
||||
|
||||
public virtual LwvKASpitzabrechnungRO Create(long c2sOid, long? scapOid)
|
||||
{
|
||||
var ro = new LwvKASpitzabrechnungRO();
|
||||
|
||||
var c2s = DAOFactory.GenericDAO.LoadByID<CostBearer2SupportConcept>(c2sOid);
|
||||
ro.Costbearer2SupportConceptDC = MapperFactory.SupportConceptCostBearerRelDC_CostBearer2SupportConcept.MapToNewDC(c2s);
|
||||
ro.CustomerDC = MapperFactory.CustomerDC_Customer.MapToNewDC(c2s.SupportConcept.Customer);
|
||||
@@ -36,13 +38,14 @@ namespace BeWo.Report.ReportObjects
|
||||
ro.BewilligtEnde = c2s.EndDate.Value;
|
||||
|
||||
var calc = PluginLoader.FindClass<Calculations>();
|
||||
var bewilligtProWoche = calc.GetApprovedHoursPerWeek(ro.Costbearer2SupportConceptDC, ro.BewilligtStart);
|
||||
|
||||
var scap = ro.Costbearer2SupportConceptDC.ApprovalPeriodList.FirstOrDefault(i => ro.BewilligtStart.InBetween(i.Span, true)
|
||||
&& i.ServiceCategory != null && (i.ServiceCategory.Name.StartsWith("Kompensatorisch") || (i.ServiceCategory.Name.Contains("KA") && !i.ServiceCategory.Name.Contains("Fahrzeit"))));
|
||||
|
||||
var bewilligtProWoche = scap.ApprovedBEPerInterval ?? 0;
|
||||
ro.WochenZeilen = new List<LwvKASpitzabrechnungsWochenZeile>();
|
||||
var zeilenDict = new Dictionary<String, LwvKASpitzabrechnungsWochenZeile>();
|
||||
|
||||
|
||||
//Erstelle über gesamten Bewilligungszeitraum eine leere Zeile pro Kalenderwoche
|
||||
//Erstelle über gesamten Bewilligungszeitraum eine leere Zeile pro Kalenderwoche und fülle mit Bewilligungsdaten
|
||||
DateTime dt = ro.BewilligtStart;
|
||||
while (dt <= ro.BewilligtEnde)
|
||||
{
|
||||
@@ -51,16 +54,29 @@ namespace BeWo.Report.ReportObjects
|
||||
{
|
||||
//Neue KW
|
||||
var wz = new LwvKASpitzabrechnungsWochenZeile();
|
||||
var days = 1;
|
||||
wz.Kalenderwoche = GetKW(dt);
|
||||
wz.kwStartDate = dt;
|
||||
wz.kwEndDate = dt;
|
||||
while (wz.kwEndDate.DayOfWeek != DayOfWeek.Sunday)
|
||||
{
|
||||
wz.kwEndDate = wz.kwEndDate.AddDays(1);
|
||||
days += 1;
|
||||
}
|
||||
wz.bewilligteStunden = bewilligtProWoche ?? 0;
|
||||
wz.Stundensatz = BerechneStundensatz(ro.Costbearer2SupportConceptDC, wz.kwStartDate);
|
||||
wz.Betrag = wz.bewilligteStunden * wz.Stundensatz;
|
||||
wz.bewilligteStunden = Math.Round(bewilligtProWoche/60, 2, MidpointRounding.AwayFromZero);
|
||||
if (days != 7)
|
||||
{
|
||||
wz.bewilligteStunden = wz.bewilligteStunden / 7 * days;
|
||||
}
|
||||
var data = calc.GetFixedBillingData(scap, wz.kwStartDate, wz.kwEndDate);
|
||||
if (data != null && data.Count != 0)
|
||||
{
|
||||
wz.Stundensatz = data[0].AmountTotal;
|
||||
}
|
||||
// Der LWV hat für die Kompensatorische Assistenz sich vom Stundensatz auf einen
|
||||
wz.BetragPauschal = Math.Round(bewilligtProWoche * (decimal)Math.Round((double)wz.Stundensatz / 60, 4, MidpointRounding.AwayFromZero), 2, MidpointRounding.AwayFromZero);
|
||||
ro.SummeBewilligteStunden += wz.bewilligteStunden;
|
||||
ro.SummeBetragPauschal += wz.BetragPauschal ?? 0;
|
||||
|
||||
ro.WochenZeilen.Add(wz);
|
||||
zeilenDict.Add(kwKey, wz);
|
||||
@@ -68,14 +84,12 @@ namespace BeWo.Report.ReportObjects
|
||||
dt = dt.AddDays(1);
|
||||
}
|
||||
|
||||
|
||||
// ergänze jede Kalenderwoche mit erbrachten Leistungen und den darausfolgenden Daten
|
||||
var srList = c2s.ServiceRecords;
|
||||
|
||||
|
||||
foreach (var item in srList)
|
||||
{
|
||||
String kwKey = String.Format("{0}_{1}", item.Start.Value.Year, GetKW(item.Start.Value));
|
||||
if (zeilenDict.ContainsKey(kwKey))
|
||||
if (zeilenDict.ContainsKey(kwKey) && item.ServiceDescription.ServiceCategory.Oid == scap.ServiceCategory.ServiceCategoryOid)
|
||||
{
|
||||
var wz = zeilenDict[kwKey];
|
||||
wz.erbrachteStunden += item.RoundedDuration / 60;
|
||||
@@ -84,31 +98,25 @@ namespace BeWo.Report.ReportObjects
|
||||
|
||||
foreach (var wz in ro.WochenZeilen)
|
||||
{
|
||||
if (wz.erbrachteStunden < wz.bewilligteStunden)
|
||||
wz.erbrachteStunden = Math.Round(wz.erbrachteStunden, 2, MidpointRounding.AwayFromZero);
|
||||
wz.StundenDifferenz = wz.erbrachteStunden - wz.bewilligteStunden;
|
||||
if (wz.StundenDifferenz < 0)
|
||||
{
|
||||
wz.nichtErbrachteStunden = wz.bewilligteStunden - wz.erbrachteStunden;
|
||||
}
|
||||
if (wz.erbrachteStunden > wz.bewilligteStunden)
|
||||
if (wz.StundenDifferenz > 0)
|
||||
{
|
||||
wz.nachgeholteStunden = wz.erbrachteStunden - wz.bewilligteStunden;
|
||||
}
|
||||
wz.BetragErbracht = wz.erbrachteStunden * wz.Stundensatz;
|
||||
wz.BetragPauschal = Math.Round(bewilligtProWoche * (decimal)Math.Round((double)wz.Stundensatz / 60, 4, MidpointRounding.AwayFromZero), 2, MidpointRounding.AwayFromZero);
|
||||
|
||||
ro.SummeStundenDifferenz += wz.StundenDifferenz ?? 0;
|
||||
ro.SummeErbrachteStunden += wz.erbrachteStunden;
|
||||
ro.SummeBetragErbracht += wz.BetragErbracht ?? 0;
|
||||
}
|
||||
|
||||
return ro;
|
||||
|
||||
|
||||
}
|
||||
|
||||
private static decimal BerechneStundensatz(SupportConceptCostBearerRelDC c2sDc, DateTime date)
|
||||
{
|
||||
var crList = c2sDc.CostBearer.CostRatePeriods;
|
||||
var crp = crList.GetCostRatePeriodForDate(CostRatePeriodType.HourlyRate, date);
|
||||
if (crp != null && crp.CostRateValue.HasValue)
|
||||
{
|
||||
return crp.CostRateValue.Value;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
private static int GetKW(DateTime actualDate)
|
||||
@@ -131,25 +139,20 @@ namespace BeWo.Report.ReportObjects
|
||||
public decimal erbrachteStunden { get; set; }
|
||||
public decimal? nichtErbrachteStunden { get; set; }
|
||||
public decimal? nachgeholteStunden { get; set; }
|
||||
public decimal? StundenDifferenz { get; set; }
|
||||
public decimal? Stundensatz { get; set; }
|
||||
public decimal? Betrag { get; set; }
|
||||
|
||||
public decimal? BetragPauschal { get; set; }
|
||||
public decimal? BetragErbracht { get; set; }
|
||||
}
|
||||
|
||||
// ich glaube das brauche ich gar nicht
|
||||
public class Preiszeitraum
|
||||
{
|
||||
public List<ServiceRecordDC> ServiceRecords { get; set; }
|
||||
public CostRatePeriodDC CostRatePeriod { get; set; }
|
||||
public DateTime Start { get; set; }
|
||||
public DateTime Ende { get; set; }
|
||||
public int Index { get; set; }
|
||||
public decimal Stundensatz { get; set; }
|
||||
public decimal SummeBewilligteStunden { get; set; }
|
||||
public decimal SummeErbrachteStunden { get; set; }
|
||||
public decimal SummeNichtErbrachteStunden { get; set; }
|
||||
public decimal SummeNachgeholteStunden { get; set; }
|
||||
public decimal SummeBetrag { get; set; }
|
||||
public decimal? SummeNichtErbNachgeholteStd { get; set; }
|
||||
public decimal? SummeAufsuchendeStunden { get; set; }
|
||||
public int Index { get; set; }
|
||||
public decimal SummeStundenDifferenz { get; set; }
|
||||
public decimal SummeBetragPauschal { get; set; }
|
||||
public decimal SummeBetragErbracht { get; set; }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user