MH: Pflege Wessel Bugfix
This commit is contained in:
@@ -47,5 +47,67 @@ namespace PflegedienstWessel.Invoicing
|
||||
else
|
||||
base.CreateFixedAmounts(serviceInvoicePeriod, supportConceptApprovalPeriod, cb2sc);
|
||||
}
|
||||
|
||||
public override void SetServiceInvoicePeriods(ServiceInvoice invoice, CostBearer2SupportConcept costBearer2SupportConcept, DateTimeSpan invoicePeriod, List<ServiceRecordDC> serviceRecords)
|
||||
{
|
||||
var invoiceAccountingPeriodSpan = new DateTimeSpan
|
||||
{
|
||||
StartDateTime = invoice.InvoiceBase.AccountingPeriodStart.Value,
|
||||
EndDateTime = invoice.InvoiceBase.AccountingPeriodEnd.Value
|
||||
};
|
||||
|
||||
foreach (SupportConceptApprovalPeriod iPeriod in costBearer2SupportConcept.ApprovalPeriodList)
|
||||
{
|
||||
SupportConceptApprovalPeriodDC approvalPeriodDC = MapperFactory.SupportConceptApprovalPeriodDC_SupportConceptApprovalPeriod.MapToNewDC(iPeriod);
|
||||
|
||||
|
||||
if (approvalPeriodDC.Span.EndDateTime < invoiceAccountingPeriodSpan.StartDateTime || approvalPeriodDC.Span.StartDateTime > invoiceAccountingPeriodSpan.EndDate)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
ServiceInvoicePeriod serviceInvoicePeriod = CreateServiceInvoicePeriod(approvalPeriodDC, invoiceAccountingPeriodSpan);
|
||||
serviceInvoicePeriod.SupportConceptApprovalPeriod = iPeriod;
|
||||
serviceInvoicePeriod.Customer = costBearer2SupportConcept.SupportConcept.Customer;
|
||||
|
||||
CostBearer costBearer = costBearer2SupportConcept.CostBearer;
|
||||
List<CostRatePeriodDC> costRates = MapperFactory.CostRatePeriodDC_CostRatePeriod.MapToNewDCs(costBearer.CostRatePeriods);
|
||||
|
||||
CostRatePeriodDC serviceUnit = costRates.GetCostRatePeriodForDate(CostRatePeriodType.MinutesPerServiceUnit, DateTime.Now);
|
||||
serviceInvoicePeriod.ServiceUnitName = serviceUnit.UnitName;
|
||||
|
||||
Calculations calc = PluginLoader.FindClass<Calculations>(_SpecificID) ?? Calculations.GetInstance(_SpecificID);
|
||||
|
||||
decimal amountPerUnit;
|
||||
decimal unitCount;
|
||||
|
||||
serviceInvoicePeriod.ApprovedFixedAmount = calc.GetApprovedFixedAmountForPeriod(approvalPeriodDC, serviceInvoicePeriod.Start.Value, serviceInvoicePeriod.End.Value, out amountPerUnit, out unitCount);
|
||||
|
||||
if (!serviceInvoicePeriod.ApprovedFixedAmount.HasValue)
|
||||
{
|
||||
serviceInvoicePeriod.ApprovedHours = calc.GetApprovedHoursForPeriod(approvalPeriodDC,
|
||||
costRates,
|
||||
serviceInvoicePeriod.Start.Value,
|
||||
serviceInvoicePeriod.End.Value);
|
||||
if (serviceInvoicePeriod.ApprovedHours.HasValue)
|
||||
serviceInvoicePeriod.ApprovedBE = serviceUnit.GetHoursInBE(serviceInvoicePeriod.ApprovedHours.Value);
|
||||
|
||||
serviceInvoicePeriod.ApprovedAmountDefaultHourlyRate = calc.GetApprovedAmountDefaultHourlyRateForPeriod(approvalPeriodDC,
|
||||
costRates,
|
||||
serviceInvoicePeriod.Start,
|
||||
serviceInvoicePeriod.End);
|
||||
}
|
||||
SetInvoiceItems(invoice, serviceInvoicePeriod, approvalPeriodDC, costBearer2SupportConcept, invoicePeriod, serviceRecords);
|
||||
|
||||
CheckMaxApprovedAmount(invoice, serviceInvoicePeriod, approvalPeriodDC, costBearer2SupportConcept, invoicePeriod, serviceRecords);
|
||||
|
||||
if (serviceInvoicePeriod.InvoiceItemList.Count > 0)
|
||||
invoice.ServiceInvoicePeriodList.Add(serviceInvoicePeriod);
|
||||
|
||||
// Da im Standard bei CreateFixedAmount ein Item PRO BEWILLIGUNG erstellt wird, nach erstem Item abbrechen.
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user