DomizielAnsbach/Invoicing/InvoiceHelper und Anpassungen ZV
This commit is contained in:
@@ -17,10 +17,8 @@ namespace DomizielAnsbach.Invoicing
|
||||
{
|
||||
public static IList<InvoiceItem> BerechneRechnungsPositionenFuerStationaer(DateTimeSpan invoicePeriod, SupportConceptApprovalPeriod scap)
|
||||
{
|
||||
|
||||
IList<InvoiceItem> ergebnis = new List<InvoiceItem>();
|
||||
var customer = scap.CostBearer2SupportConcept.SupportConcept.Customer;
|
||||
|
||||
DateTime start;
|
||||
DateTime ende;
|
||||
if (scap.StartDate <= invoicePeriod.StartDate)
|
||||
@@ -33,11 +31,9 @@ namespace DomizielAnsbach.Invoicing
|
||||
ende = (DateTime)scap.EndDate.Value.AddDays(-1); //Auszugstag wird NICHT abgerechnet
|
||||
|
||||
var preise = DAOFactory.GenericDAO.GetAllActive<Preis>();
|
||||
|
||||
var tagessatz = GetPreis(preise, "Tagessatz stationär", start);
|
||||
var freihalte = GetPreis(preise, "Platzfreihaltegebühr", start);
|
||||
|
||||
|
||||
while (start <= ende)
|
||||
{
|
||||
DateTime monatStart = start; //new DateTime(start.Year, start.Month, 1);
|
||||
@@ -57,30 +53,30 @@ namespace DomizielAnsbach.Invoicing
|
||||
DateTime? startAbw = at.Start;
|
||||
DateTime? endAbw = at.End;
|
||||
//18.04.2023: Frau Sachsenhauser sagt, jeder Tag Abwesenheit muss mit Platzfreihaltepauschale bezahlt werden
|
||||
//if (at.Start.HasValue && at.End.HasValue && at.End.Value.Date.Subtract(at.Start.Value.Date).TotalDays > 0)
|
||||
//{
|
||||
// endAbw = at.End.Value.AddDays(-1);
|
||||
//}
|
||||
if (startAbw.HasValue && startAbw.Value < monatEnde && (!endAbw.HasValue || endAbw.Value >= monatStart))
|
||||
if (at.Start.HasValue && at.End.HasValue && at.End.Value.Date.Subtract(at.Start.Value.Date).TotalDays > 2)
|
||||
{
|
||||
DateTime abwStart = at.Start.Value;
|
||||
if (start > abwStart)
|
||||
{
|
||||
abwStart = start;
|
||||
}
|
||||
endAbw = at.End.Value.AddDays(-1);
|
||||
|
||||
DateTime abwEnd = monatEnde.AddDays(-1);
|
||||
if (endAbw.HasValue && endAbw < monatEnde)
|
||||
if (startAbw.HasValue && startAbw.Value < monatEnde && (!endAbw.HasValue || endAbw.Value >= monatStart)
|
||||
&& !at.AbsenceReason.Description.Contains("ZV") && !at.AbsenceReason.Description.Contains("Urlaub stationär im Haus"))
|
||||
{
|
||||
abwEnd = endAbw.Value;
|
||||
}
|
||||
DateTime abwStart = at.Start.Value;
|
||||
if (start > abwStart)
|
||||
{
|
||||
abwStart = start;
|
||||
}
|
||||
|
||||
DateTime dt = abwStart;
|
||||
|
||||
while (dt <= abwEnd)
|
||||
{
|
||||
tageAbwesendImMonat++;
|
||||
dt = dt.AddDays(1);
|
||||
DateTime abwEnd = monatEnde.AddDays(-1);
|
||||
if (endAbw.HasValue && endAbw < monatEnde)
|
||||
{
|
||||
abwEnd = endAbw.Value;
|
||||
}
|
||||
DateTime dt = abwStart;
|
||||
while (dt <= abwEnd)
|
||||
{
|
||||
tageAbwesendImMonat++;
|
||||
dt = dt.AddDays(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -127,12 +123,10 @@ namespace DomizielAnsbach.Invoicing
|
||||
|
||||
private static decimal GetPreis(IList<Preis> allePreise, String name, DateTime datum)
|
||||
{
|
||||
|
||||
var tagessatz = allePreise.Where(p => p.Name.Contains(name)).FirstOrDefault();
|
||||
if (tagessatz != null)
|
||||
{
|
||||
var crlist = MapperFactory.CostRatePeriodDC_CostRatePeriod.MapToNewDCs(tagessatz.CostRatePeriods);
|
||||
|
||||
var cr = crlist.GetCostRatePeriodForDate(CostRatePeriodType.AmountOfMoney, datum);
|
||||
if (cr != null && cr.CostRateValue.HasValue)
|
||||
{
|
||||
@@ -146,12 +140,12 @@ namespace DomizielAnsbach.Invoicing
|
||||
private static string GetAbwesenheiten(Customer c, DateTime start, DateTime end)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
if (c.AbsenceTimes != null)
|
||||
{
|
||||
foreach (var at in c.AbsenceTimes)
|
||||
{
|
||||
if ((!at.Start.HasValue || at.Start.Value <= end) && (!at.End.HasValue || at.End.Value >= start))
|
||||
if ((!at.Start.HasValue || at.Start.Value <= end) && (!at.End.HasValue || at.End.Value >= start)
|
||||
&& !at.AbsenceReason.Description.Contains("ZV") && !at.AbsenceReason.Description.Contains("Urlaub stationär im Haus"))
|
||||
{
|
||||
if (sb.Length > 0)
|
||||
{
|
||||
|
||||
@@ -19,8 +19,6 @@ namespace DomizielAnsbach.Invoicing
|
||||
{
|
||||
//private const decimal TAGESPAUSCHALE = 129.55m;
|
||||
//private const decimal FREIHALTEGEBUEHR = 103.64m;
|
||||
|
||||
|
||||
private DateTime? accountingPeriodStart = null;
|
||||
private DateTime? accountingPeriodEnd = null;
|
||||
|
||||
@@ -95,10 +93,7 @@ namespace DomizielAnsbach.Invoicing
|
||||
public override IList<InvoiceItem> CreateInvoiceItems(List<ServiceRecordDC> serviceRecordsInPeriod, DateTimeSpan invoicePeriod, SupportConceptApprovalPeriod scap,
|
||||
Calculations calc)
|
||||
{
|
||||
|
||||
return InvoiceHelper.BerechneRechnungsPositionenFuerStationaer(invoicePeriod, scap);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -85,8 +85,7 @@ namespace DomizielAnsbach.Invoicing
|
||||
stundensatz = 0;
|
||||
tagessatz = 0;
|
||||
var reason = at.AbsenceReason.Description.Substring(5);
|
||||
if (reason.Contains("Urlaub") || reason.Contains("Feiertag") || reason.Contains("Krank")
|
||||
|| reason.Contains("entschuldigt") || reason.Contains("unentschuldigt"))
|
||||
if (reason.Contains("Urlaub") || reason.Contains("Feiertag") || reason.Contains("Krank"))
|
||||
{
|
||||
var std = GetFeiertagsstunden(customer.Arbeitszeiten, customer, tag);
|
||||
if (std > 0)
|
||||
@@ -107,8 +106,7 @@ namespace DomizielAnsbach.Invoicing
|
||||
uCount += 1;
|
||||
|
||||
}
|
||||
else if ((reason.Contains("Krank") || reason.Contains("entschuldigt") || reason.Contains("unentschuldigt"))
|
||||
&& (pausch.krank != 0 || pausch.krankMot))
|
||||
else if (reason.Contains("Krank") && (pausch.krank != 0 || pausch.krankMot))
|
||||
{
|
||||
decimal kranktage = 0;
|
||||
if (pausch.anzKrank != 0)
|
||||
|
||||
@@ -100,7 +100,8 @@ namespace DomizielAnsbach
|
||||
{
|
||||
foreach (var at in c.AbsenceTimes)
|
||||
{
|
||||
if ((!at.Start.HasValue || at.Start.Value <= end) && (!at.End.HasValue || at.End.Value >= start))
|
||||
if ((!at.Start.HasValue || at.Start.Value <= end) && (!at.End.HasValue || at.End.Value >= start)
|
||||
&& !at.AbsenceReason.Description.Contains("ZV") && !at.AbsenceReason.Description.Contains("Urlaub stationär im Haus"))
|
||||
{
|
||||
if (sb.Length > 0)
|
||||
{
|
||||
|
||||
@@ -80,6 +80,10 @@ namespace DomizielAnsbach
|
||||
|
||||
var ro = new FinanceRO.SupportConceptFinanceRO();
|
||||
ro.CustomerName = sc.CustomerName;
|
||||
if (ro.CustomerName.Contains("Dauer"))
|
||||
{
|
||||
int tuao = 1;
|
||||
}
|
||||
ro.CostBearerName = sc.CostBearerName;
|
||||
rowOrder += 1;
|
||||
ro.RateFactor = rowOrder;
|
||||
@@ -92,6 +96,11 @@ namespace DomizielAnsbach
|
||||
ro.ApprovedHours = GetVertraglicheZeit(c, periodEnd, monthStart);
|
||||
}
|
||||
|
||||
if (ro.ApprovedHours == 0 && sc.Costbearer2Supportconcept.EndDate < monthEnd)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
ro.Custom1 = String.Format("{0:dd.MM.yyyy}", monthStart);
|
||||
|
||||
if (periodEnd != DateTime.MinValue && periodEnd != monthEnd || monthStart != new DateTime(monthEnd.Year, monthEnd.Month, 1))
|
||||
@@ -124,6 +133,11 @@ namespace DomizielAnsbach
|
||||
{
|
||||
monthStart = krankEnd.AddDays(1);
|
||||
periodEnd = monthEnd;
|
||||
if (monthStart == monthEnd.AddDays(1))
|
||||
{
|
||||
periodEnd = monthEnd.AddMonths(1);
|
||||
m++;
|
||||
}
|
||||
}
|
||||
else if ((periodEnd == DateTime.MinValue || periodEnd == monthEnd) && monthEnd == end)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user