Merge branch 'master' of ssh://float.ownsoft.de/git/beyondSoft/BeWo
This commit is contained in:
@@ -91,25 +91,38 @@ namespace HshCologne.Export
|
||||
{
|
||||
|
||||
String sql = @"
|
||||
select
|
||||
SUM(sip.Claim),
|
||||
org.DebitorNumber,
|
||||
ib.InvoiceDate,
|
||||
ib.invoicenumber,
|
||||
SUBSTRING_INDEX(org.Name2, ';', 1) AS JA,
|
||||
SUBSTRING_INDEX(org.Name2, ';', -1) AS BTxt,
|
||||
ib.Oid
|
||||
FROM
|
||||
invoicebase ib
|
||||
inner join serviceinvoice si on si.invoicebaseoid = ib.oid
|
||||
inner join serviceinvoiceperiod sip on sip.serviceinvoiceoid = si.oid
|
||||
inner join costbearer cb on ib.recipientcostbeareroid = cb.oid
|
||||
inner join organisation org on org.costbeareroid = cb.oid
|
||||
WHERE ib.InvoiceDate >= ':Monat_Start' AND ib.InvoiceDate < ':Monat_End' and ib.IsActive = 1 AND ib.`IsExported` = 0
|
||||
GROUP BY ib.Oid
|
||||
order by ib.invoicenumber
|
||||
";
|
||||
|
||||
SELECT * FROM
|
||||
(SELECT
|
||||
SUM(sip.Claim),
|
||||
org.DebitorNumber,
|
||||
ib.InvoiceDate,
|
||||
ib.invoicenumber,
|
||||
SUBSTRING_INDEX(org.Name2, ';', 1) AS JA,
|
||||
SUBSTRING_INDEX(org.Name2, ';', -1) AS BTxt,
|
||||
ib.Oid
|
||||
FROM
|
||||
invoicebase ib
|
||||
inner join serviceinvoice si on si.invoicebaseoid = ib.oid
|
||||
inner join serviceinvoiceperiod sip on sip.serviceinvoiceoid = si.oid
|
||||
inner join costbearer cb on ib.recipientcostbeareroid = cb.oid
|
||||
inner join organisation org on org.costbeareroid = cb.oid
|
||||
WHERE ib.InvoiceDate >= ':Monat_Start' AND ib.InvoiceDate < ':Monat_End' and ib.IsActive = 1 AND ib.`IsExported` = 0
|
||||
GROUP BY ib.Oid
|
||||
UNION
|
||||
SELECT
|
||||
sum(ii.AmountTotal),
|
||||
org.DebitorNumber,
|
||||
ib.InvoiceDate,
|
||||
ib.invoicenumber,
|
||||
SUBSTRING_INDEX(org.Name2, ';', 1) AS JA,
|
||||
SUBSTRING_INDEX(org.Name2, ';', -1) AS BTxt,
|
||||
ib.Oid
|
||||
FROM invoicebase ib
|
||||
INNER JOIN organisation org ON org.costbeareroid = ib.RecipientOrganisationOid
|
||||
INNER JOIN invoiceitem ii ON ii.invoicebaseoid = ib.Oid
|
||||
WHERE ib.InvoiceDate >= ':Monat_Start' AND ib.InvoiceDate < ':Monat_End' AND ib.IsActive = 1 AND ib.`IsExported` = 0 and ib.Type = 2) qry
|
||||
ORDER BY qry.invoicenumber
|
||||
";
|
||||
return sql;
|
||||
}
|
||||
|
||||
|
||||
@@ -14,21 +14,23 @@ namespace LebenshilfeBadKreuznach.Statistics
|
||||
{
|
||||
public class CustomServiceRecordStatisticFactory : ServiceRecordStatisticFactory
|
||||
{
|
||||
// Bei der LH Bad Kreuznach sollen die Stunden pro Quartal hochgerechnet werden. Die Formel ist wöchentliche Stunden * 4.33 pro Monat und dann mal 3 fürs Quartal.
|
||||
// Die bewilligten Stunden pro Quartal werden in der Klasse in MinutesApprovedPerMonth gespeichert, die geleisteten in MinutesProvidedThisMonth
|
||||
// Bei der LH Bad Kreuznach sollen die Stunden pro Quartal hochgerechnet werden. Die Formel ist wöchentliche Stunden * 4.33 pro Monat
|
||||
// Bis 30.06.2026 dann nochmal 3 fürs Quartal.
|
||||
public override ServiceRecordStatisticsInfoDC GetServiceRecordStatisticInfo(long costBearer2SupportConceptOid, DateTime statisticsDate)
|
||||
{
|
||||
var stats = CreateSupportConceptStatisticsImpl(costBearer2SupportConceptOid, statisticsDate);
|
||||
|
||||
var dc = new ServiceRecordStatisticsInfoDC();
|
||||
|
||||
|
||||
|
||||
dc.Header = new string[4];
|
||||
dc.Header[0] = "Bewilligungszeitraum:";
|
||||
dc.Header[1] = "Geleistet diese Woche/im Quartal:";
|
||||
dc.Header[2] = "Bewilligt diese Woche/im Quartal:";
|
||||
dc.Header[3] = "Frei pro Woche(Ø)/im Quartal:";
|
||||
|
||||
//dc.Header[1] = "Geleistet diese Woche/im Quartal:";
|
||||
//dc.Header[2] = "Bewilligt diese Woche/im Quartal:";
|
||||
//dc.Header[3] = "Frei pro Woche(Ø)/im Quartal:";
|
||||
// AB: Bitte oben löschen und das hier einkommentieren
|
||||
dc.Header[1] = "Geleistet diese Woche/im Monat:";
|
||||
dc.Header[2] = "Bewilligt diese Woche/im Monat:";
|
||||
dc.Header[3] = "Frei pro Woche(Ø)/im Monat:";
|
||||
|
||||
dc.ForegroundColor = new string[4];
|
||||
dc.ForegroundColor[0] = "#FF2B508B";
|
||||
@@ -38,12 +40,8 @@ namespace LebenshilfeBadKreuznach.Statistics
|
||||
|
||||
dc.PeriodStatisticInfos = new List<ServiceRecordPeriodStatisticsInfoDC>();
|
||||
|
||||
|
||||
if (stats != null)
|
||||
{
|
||||
//if (stats.PeriodStatistics.Count > 1 && !TimeSpanIsEqual(stats))
|
||||
// dc.PeriodStatisticInfos.Add(CreateTotalStatistics(stats, statisticsDate));
|
||||
|
||||
foreach (var pdc in stats.PeriodStatistics)
|
||||
{
|
||||
dc.PeriodStatisticInfos.Add(CreateServiceRecordPeriodStatisticsInfo(stats, pdc, statisticsDate));
|
||||
@@ -53,24 +51,6 @@ namespace LebenshilfeBadKreuznach.Statistics
|
||||
return dc;
|
||||
}
|
||||
|
||||
|
||||
//public ServiceRecordPeriodStatisticsInfoDC CreateTotalStatistics(SupportConceptStatisticsDC stats, DateTime statisticsDate)
|
||||
//{
|
||||
// var dc = CreateDefaultServiceRecordPeriodStatisticsInfo(4);
|
||||
// dc.LeftValues[0] = "Gesamt";
|
||||
|
||||
// dc.LeftValues[1] = String.Format("{0:0.00}", stats.MinutesProvidedThisMonth / 60);
|
||||
// dc.RightValues[1] = String.Format("{0:0.00}", stats.MinutesProvidedTotalRounded / 60);
|
||||
|
||||
// dc.LeftValues[2] = String.Format("{0:0.00}", stats.MinutesApprovedPerMonth / 60);
|
||||
// dc.RightValues[2] = String.Format("{0:0.00}", stats.MinutesApprovedTotal / 60);
|
||||
|
||||
// dc.LeftValues[3] = String.Format("{0:0.00}", (stats.MinutesApprovedPerMonth - stats.MinutesProvidedThisMonth) / 60);
|
||||
// dc.RightValues[3] = String.Format("{0:0.00}", (stats.MinutesApprovedTotal - stats.MinutesProvidedTotalRounded) / 60);
|
||||
|
||||
// return dc;
|
||||
//}
|
||||
|
||||
public ServiceRecordPeriodStatisticsInfoDC CreateServiceRecordPeriodStatisticsInfo(SupportConceptStatisticsDC stats, SupportConceptPeriodStatisticsDC periodStats, DateTime statisticsDate)
|
||||
{
|
||||
var dc = CreateDefaultServiceRecordPeriodStatisticsInfo(4);
|
||||
@@ -156,42 +136,30 @@ namespace LebenshilfeBadKreuznach.Statistics
|
||||
minutesProvidedQuartalOld = periodStats.MinutesProvidedThisMonth;
|
||||
minutesProvidedWeekOld = periodStats.MinutesProvidedThisWeek;
|
||||
}
|
||||
base.ProcessServiceRecord(sr, cb2sc, stats, statisticsDate, calc);
|
||||
base.ProcessServiceRecord(sr, cb2sc, stats, statisticsDate, calc);
|
||||
|
||||
|
||||
|
||||
//bool billable = false;
|
||||
//if (sr.ServiceDescription != null && sr.ServiceDescription.ServiceCategory != null)
|
||||
// AB, die komplette if-Schleife kann weg. Die war fürs Quartal
|
||||
//if (periodStats != null)
|
||||
//{
|
||||
// billable = sr.ServiceDescription.ServiceCategory.IsBillable;
|
||||
//}
|
||||
// var srDc = MapToServiceRecordDCForStatistic(sr);
|
||||
// var minutes = calc.GetBillableDurationInMinutes(srDc, false);
|
||||
// var firstOfQuarterDt = GetFirstDateOfQuarter(statisticsDate);
|
||||
|
||||
|
||||
|
||||
|
||||
if (periodStats != null)
|
||||
{
|
||||
var srDc = MapToServiceRecordDCForStatistic(sr);
|
||||
var minutes = calc.GetBillableDurationInMinutes(srDc, false);
|
||||
|
||||
|
||||
var firstOfQuarterDt = GetFirstDateOfQuarter(statisticsDate);
|
||||
|
||||
if (sr.Start >= firstOfQuarterDt && sr.Start < firstOfQuarterDt.AddMonths(3))
|
||||
{
|
||||
minutesProvidedQuartalNew = minutes;
|
||||
}
|
||||
DateTime mondayDt = statisticsDate.GetLast(DayOfWeek.Monday).Date;
|
||||
// if (sr.Start >= firstOfQuarterDt && sr.Start < firstOfQuarterDt.AddMonths(3))
|
||||
// {
|
||||
// minutesProvidedQuartalNew = minutes;
|
||||
// }
|
||||
// DateTime mondayDt = statisticsDate.GetLast(DayOfWeek.Monday).Date;
|
||||
|
||||
if (sr.Start >= mondayDt && sr.Start < mondayDt.AddDays(7))
|
||||
{
|
||||
minutesProvidedWeekNew = minutes;
|
||||
}
|
||||
periodStats.MinutesProvidedThisMonth = minutesProvidedQuartalOld + minutesProvidedQuartalNew;
|
||||
periodStats.MinutesProvidedThisWeek = minutesProvidedWeekOld + minutesProvidedWeekNew;
|
||||
|
||||
}
|
||||
// if (sr.Start >= mondayDt && sr.Start < mondayDt.AddDays(7))
|
||||
// {
|
||||
// minutesProvidedWeekNew = minutes;
|
||||
// }
|
||||
// periodStats.MinutesProvidedThisMonth = minutesProvidedQuartalOld + minutesProvidedQuartalNew;
|
||||
// periodStats.MinutesProvidedThisWeek = minutesProvidedWeekOld + minutesProvidedWeekNew;
|
||||
|
||||
//}
|
||||
}
|
||||
|
||||
protected SupportConceptPeriodStatisticsDC GetPeriodFromServiceRecord(CostBearer2SupportConcept cb2sc, List<SupportConceptPeriodStatisticsDC> stats, ServiceRecord sr)
|
||||
@@ -218,14 +186,12 @@ namespace LebenshilfeBadKreuznach.Statistics
|
||||
}
|
||||
|
||||
return letztePeriod;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return ps;
|
||||
}
|
||||
|
||||
// AB: Kann gelöscht werden:
|
||||
private DateTime GetFirstDateOfQuarter(DateTime dateTime)
|
||||
{
|
||||
var firstOfQuarterDt = new DateTime(dateTime.Year, 1, 1);
|
||||
@@ -254,7 +220,9 @@ namespace LebenshilfeBadKreuznach.Statistics
|
||||
{
|
||||
if (periodStats.SupportConceptApprovalPeriod.ApprovedBEPerInterval.HasValue && periodStats.SupportConceptApprovalPeriod.ApprovedBEInterval.HasValue && periodStats.SupportConceptApprovalPeriod.ApprovedBEInterval.Value == SupportConceptApprovalInterval.Weekly)
|
||||
{
|
||||
return periodStats.SupportConceptApprovalPeriod.ApprovedBEPerInterval.Value * 4.33m * 3m * 60m; // Bewilligt pro Woche mal 4.33 (Anzahl Stunden pro Monat laut Frau Ruta) mal 3 Monate fürs Quartal * 60 Minuten
|
||||
//return periodStats.SupportConceptApprovalPeriod.ApprovedBEPerInterval.Value * 4.33m * 3m * 60m; // Bewilligt pro Woche mal 4.33 (Anzahl Stunden pro Monat laut Frau Ruta) mal 3 Monate fürs Quartal * 60 Minuten
|
||||
// AB: Bitte oben löschen und das hier einkommentieren
|
||||
return periodStats.SupportConceptApprovalPeriod.ApprovedBEPerInterval.Value * 4.33m * 60m; // Bewilligt pro Woche mal 4.33 (Anzahl Stunden pro Monat laut Frau Ruta) * 60 Minuten
|
||||
}
|
||||
}
|
||||
return base.GetApprovedMinutesPerMonth(periodStats);
|
||||
|
||||
@@ -28,16 +28,14 @@ namespace MalteserJohanniterJohanneshaus.Invoicing
|
||||
invoice.InvoiceBase.InvoiceTypeText = "RgTSH";
|
||||
}
|
||||
|
||||
// die haben 2 Standorte f<EFBFBD>r TSH, die <EFBFBD>ber Kostenstellen unter Notiz im Hilfeplan identifiziert werden
|
||||
// Es werden grunds<EFBFBD>tzlich volle Tagess<EFBFBD>tze aus der Verwaltung abgerechnet
|
||||
// die haben 2 Standorte für TSH, die über Kostenstellen unter Notiz im Hilfeplan identifiziert werden
|
||||
// Es werden grundsätzlich volle Tagessätze aus der Verwaltung abgerechnet
|
||||
// alle Abwesenheitstage werden nur mit 75 % berechnet
|
||||
public override List<ServiceInvoiceDC> GenerateServiceInvoices(long costBearerOid,
|
||||
DateTimeSpan invoicePeriod,
|
||||
public override List<ServiceInvoiceDC> GenerateServiceInvoices(long costBearerOid, DateTimeSpan invoicePeriod,
|
||||
Dictionary<CompactSupportConceptDC, List<ServiceRecordDC>> supportConcepts2ServiceRecords)
|
||||
{
|
||||
var costBearer = DAOFactory.GenericDAO.LoadByID<CostBearer>(costBearerOid);
|
||||
var invoiceList = new List<ServiceInvoice>();
|
||||
|
||||
bool isLvr = costBearer.Organisation.Name != null && costBearer.Organisation.Name.Contains("LVR");
|
||||
|
||||
if (isLvr)
|
||||
|
||||
Reference in New Issue
Block a user