106 lines
4.2 KiB
C#
106 lines
4.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using BeWo.Data.Access;
|
|
using BeWo.Data.Entities;
|
|
using BeWo.Service.DCEntityMapper;
|
|
using BeWo.Service.Invoicing;
|
|
using BeWo.Service.Plugins;
|
|
using BS.Shared;
|
|
using BS.Shared.Core;
|
|
using BS.Shared.DataContracts;
|
|
using BS.Shared.DataContracts.Compact;
|
|
using BS.Shared.Extensions;
|
|
using BS.Shared.Services;
|
|
|
|
namespace Ruhrstern.Invoicing
|
|
{
|
|
|
|
public class CustomInvoiceCreation : InvoiceCreation
|
|
{
|
|
private DateTime? accountingPeriodStart = null;
|
|
private DateTime? accountingPeriodEnd = null;
|
|
private decimal AMOUNT_PER_KM = 0.30m;
|
|
|
|
public override ServiceInvoice CreateSingleInvoice(int invoiceCounter, CostBearer costBearer, DateTimeSpan invoicePeriod, CompactSupportConceptDC supportConcept, List<ServiceRecordDC> serviceRecords)
|
|
{
|
|
if (supportConcept.IsApproved || !supportConcept.IsDeleted && !supportConcept.IsArchived) // Standard, außer dass auch nicht bewilligte abgerechnet werden
|
|
{
|
|
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)
|
|
{
|
|
SetAmountAdvancePayments(invoice);
|
|
SetAmountEquityContribution(invoice);
|
|
}
|
|
|
|
return invoice;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
|
|
public override void SetInvoiceBaseData(int invoiceCounter, ServiceInvoice invoice, CostBearer costBearer, DateTimeSpan invoicePeriod,
|
|
IList<CompactSupportConceptDC> supportConceptList)
|
|
{
|
|
if (invoicePeriod != null)
|
|
{
|
|
accountingPeriodStart = invoicePeriod.StartDate;
|
|
accountingPeriodEnd = invoicePeriod.EndDate;
|
|
}
|
|
base.SetInvoiceBaseData(invoiceCounter, invoice, costBearer, invoicePeriod, supportConceptList);
|
|
invoice.InvoiceBase.InvoiceDate = invoice.InvoiceBase.AccountingPeriodEnd;
|
|
}
|
|
|
|
|
|
public override InvoiceItem CreateInvoiceItem(ServiceRecordDC iServiceRecord, SupportConceptApprovalPeriod scap, Calculations calc)
|
|
{
|
|
var ii = base.CreateInvoiceItem(iServiceRecord, scap, calc);
|
|
if (iServiceRecord.ServiceDescription.CategoryName.Contains("Assistenz"))
|
|
{
|
|
ii.ItemDescription = "Unterstützende Leistungen";
|
|
}
|
|
else if (iServiceRecord.ServiceDescription.CategoryName.Contains("Begleitet"))
|
|
{
|
|
ii.ItemDescription = "Begleiteter Umgang";
|
|
}
|
|
else
|
|
{
|
|
ii.ItemDescription = "Fachleistungsstunde";
|
|
}
|
|
|
|
return ii;
|
|
}
|
|
public override void SetRecipientInformation(ServiceInvoice serviceInvoice, CostBearer costBearer)
|
|
{
|
|
base.SetRecipientInformation(serviceInvoice, costBearer);
|
|
if (costBearer.Organisation.Name.ToLower() == "selbstzahler")
|
|
{
|
|
serviceInvoice.InvoiceBase.InvoiceId = "BeWo";
|
|
}
|
|
}
|
|
|
|
public override IList<InvoiceItem> CreateSummaryInvoiceItems(IList<InvoiceItem> itemList, DateTimeSpan invoicePeriod, SupportConceptApprovalPeriod scap, Calculations calc)
|
|
{
|
|
return itemList;
|
|
}
|
|
|
|
public virtual void CheckMaxApprovedAmount(ServiceInvoice invoice, ServiceInvoicePeriod sip, SupportConceptApprovalPeriodDC scap, CostBearer2SupportConcept costBearer2SupportConcept, DateTimeSpan invoicePeriod, List<ServiceRecordDC> serviceRecords)
|
|
{
|
|
// Do nothing
|
|
}
|
|
}
|
|
}
|