AwoIntegrationsGGmbH/Invoicing/DefaultInvoiceCreation.cs - auch nicht bew. HP bzw. nach Ablauf abrechnen
SupportOID=160109
This commit is contained in:
@@ -79,16 +79,37 @@ namespace AwoIntegrationsGGmbH.Invoicing
|
||||
|
||||
public override ServiceInvoice CreateSingleInvoice(int invoiceCounter, CostBearer costBearer, DateTimeSpan invoicePeriod, CompactSupportConceptDC supportConcept, List<ServiceRecordDC> serviceRecords)
|
||||
{
|
||||
var i = base.CreateSingleInvoice(invoiceCounter, costBearer, invoicePeriod, supportConcept, serviceRecords);
|
||||
if (i != null)
|
||||
if (supportConcept.IsApproved || !supportConcept.IsDeleted && !supportConcept.IsArchived) // auch nicht bewilligte abgerechnet werden
|
||||
{
|
||||
var claim = i.GetTotalClaim();
|
||||
if (!claim.HasValue || claim.Value == 0)
|
||||
var invoice = new ServiceInvoice();
|
||||
var supportConceptList = new List<CompactSupportConceptDC> { supportConcept };
|
||||
|
||||
SetSenderInformation(invoice);
|
||||
SetInvoiceBaseData(invoiceCounter, invoice, costBearer, invoicePeriod, supportConceptList);
|
||||
SetSingleInvoiceBaseData(invoiceCounter, invoice, costBearer, invoicePeriod, supportConcept);
|
||||
SetRecipientInformation(invoice, costBearer);
|
||||
SetServiceInvoicePeriods(invoice, invoice.InvoiceBase.CostBearer2SupportConcept, invoicePeriod,
|
||||
serviceRecords);
|
||||
|
||||
SetServiceInvoicePeriodAmounts(invoice);
|
||||
|
||||
// Spitzabrechnung
|
||||
if (invoicePeriod == null)
|
||||
{
|
||||
return null;
|
||||
SetAmountAdvancePayments(invoice);
|
||||
SetAmountEquityContribution(invoice);
|
||||
}
|
||||
if (invoice != null)
|
||||
{
|
||||
var claim = invoice.GetTotalClaim();
|
||||
if (!claim.HasValue || claim.Value == 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
return invoice;
|
||||
}
|
||||
return i;
|
||||
return null;
|
||||
}
|
||||
|
||||
public override void SetInvoiceBaseData(int invoiceCounter, ServiceInvoice invoice, CostBearer costBearer, DateTimeSpan invoicePeriod,
|
||||
@@ -116,11 +137,10 @@ namespace AwoIntegrationsGGmbH.Invoicing
|
||||
{
|
||||
SupportConceptApprovalPeriodDC approvalPeriodDC = MapperFactory.SupportConceptApprovalPeriodDC_SupportConceptApprovalPeriod.MapToNewDC(iPeriod);
|
||||
|
||||
|
||||
if (approvalPeriodDC.Span.EndDateTime < invoiceAccountingPeriodSpan.StartDateTime || approvalPeriodDC.Span.StartDateTime > invoiceAccountingPeriodSpan.EndDate)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
//if (approvalPeriodDC.Span.EndDateTime < invoiceAccountingPeriodSpan.StartDateTime || approvalPeriodDC.Span.StartDateTime > invoiceAccountingPeriodSpan.EndDate)
|
||||
//{
|
||||
// continue;
|
||||
//}
|
||||
|
||||
ServiceInvoicePeriod serviceInvoicePeriod = CreateServiceInvoicePeriod(approvalPeriodDC, invoiceAccountingPeriodSpan);
|
||||
serviceInvoicePeriod.SupportConceptApprovalPeriod = iPeriod;
|
||||
@@ -139,6 +159,69 @@ namespace AwoIntegrationsGGmbH.Invoicing
|
||||
}
|
||||
}
|
||||
|
||||
public override ServiceInvoicePeriod CreateServiceInvoicePeriod(SupportConceptApprovalPeriodDC approvalPeriodDC, DateTimeSpan invoiceAccountingPeriodSpan)
|
||||
{
|
||||
var sip = new ServiceInvoicePeriod
|
||||
{
|
||||
Start = invoiceAccountingPeriodSpan.StartDateTime,
|
||||
End = invoiceAccountingPeriodSpan.EndDateTime,
|
||||
};
|
||||
|
||||
return sip;
|
||||
}
|
||||
|
||||
public override void SetInvoiceItems(ServiceInvoice invoice, ServiceInvoicePeriod serviceInvoicePeriod, SupportConceptApprovalPeriodDC supportConceptApprovalPeriod,
|
||||
CostBearer2SupportConcept cb2sc, DateTimeSpan invoicePeriod, List<ServiceRecordDC> serviceRecords)
|
||||
{
|
||||
BS.Shared.Services.Calculations calc = PluginLoader.FindClass<BS.Shared.Services.Calculations>(_SpecificID) ?? BS.Shared.Services.Calculations.GetInstance(_SpecificID);
|
||||
|
||||
if (ShouldCreateFixedAmounts(serviceInvoicePeriod, supportConceptApprovalPeriod, cb2sc))
|
||||
{
|
||||
CreateFixedAmounts(serviceInvoicePeriod, supportConceptApprovalPeriod, cb2sc);
|
||||
}
|
||||
else
|
||||
{
|
||||
List<ServiceRecordDC> serviceRecordsInPeriod = serviceRecords.Where(
|
||||
i =>
|
||||
{
|
||||
bool valid = i.Start.Value.InBetween(serviceInvoicePeriod.Start.Value,
|
||||
serviceInvoicePeriod.End.Value, true);
|
||||
|
||||
if (valid && serviceInvoicePeriod.SupportConceptApprovalPeriod != null && serviceInvoicePeriod.SupportConceptApprovalPeriod.ServiceCategory != null)
|
||||
valid = serviceInvoicePeriod.SupportConceptApprovalPeriod.ServiceCategory.Oid ==
|
||||
i.ServiceDescription.Category.ServiceCategoryOid;
|
||||
return valid;
|
||||
}).ToList();
|
||||
|
||||
if (serviceRecordsInPeriod.Count > 0)
|
||||
{
|
||||
//var approvalPeriodDC = DAOFactory.GenericDAO
|
||||
// .LoadByID<SupportConceptApprovalPeriod>(serviceInvoicePeriod.SupportConceptApprovalPeriodOid.Value)
|
||||
// .MapToNewDC();
|
||||
|
||||
//Dictionary<DateTimeSpan, decimal> span2HoursTest = cb2sc.SupportConcept.Customer.GetAbsencesTimesNotBillableWholeWeeks();
|
||||
var absenceTimes = MapperFactory.AbsenceTimeDC_AbsenceTime.MapToNewDCs(cb2sc.SupportConcept.Customer.AbsenceTimes);
|
||||
Dictionary<DateTimeSpan, decimal> span2Hours = calc.GetAbsencesTimesNotBillable(absenceTimes);
|
||||
|
||||
serviceInvoicePeriod.HoursNotBillableAbsence +=
|
||||
calc.GetHoursNotBillableDueToAbsenceTimes(supportConceptApprovalPeriod,
|
||||
cb2sc.CostBearer.CostRatePeriods.MapToNewDCs(),
|
||||
serviceRecordsInPeriod,
|
||||
span2Hours,
|
||||
true, true);
|
||||
|
||||
//serviceInvoicePeriod.HoursNotBillableNotApproved +=
|
||||
// calc.GetHoursNotBillableDueToMoreThanApproved(supportConceptApprovalPeriod,
|
||||
// cb2sc.CostBearer.CostRatePeriods.MapToNewDCs(),
|
||||
// serviceRecordsInPeriod,
|
||||
// true, true);
|
||||
|
||||
var itemList = CreateInvoiceItems(serviceRecordsInPeriod, invoicePeriod, serviceInvoicePeriod.SupportConceptApprovalPeriod, calc);
|
||||
serviceInvoicePeriod.InvoiceItemList.AddRange(itemList);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public override InvoiceItem CreateInvoiceItem(ServiceRecordDC iServiceRecord, SupportConceptApprovalPeriod scap, BS.Shared.Services.Calculations calc)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user