118 lines
4.5 KiB
C#
118 lines
4.5 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 BS.Shared;
|
|
using BS.Shared.Core;
|
|
using BS.Shared.DataContracts;
|
|
using BS.Shared.DataContracts.Compact;
|
|
using BS.Shared.Extensions;
|
|
using BS.Shared.Services;
|
|
|
|
namespace PsychosozialeProjekteSaarpfalz.Invoicing
|
|
{
|
|
|
|
public class CustomInvoiceCreation : InvoiceCreation
|
|
{
|
|
private DateTime? accountingPeriodStart = null;
|
|
private DateTime? accountingPeriodEnd = null;
|
|
private decimal AMOUNT_PER_KM1 = 6.12m;
|
|
private decimal AMOUNT_PER_KM2 = 8.58m;
|
|
|
|
|
|
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);
|
|
}
|
|
|
|
public override void SetInvoiceId(ServiceInvoice invoice)
|
|
{
|
|
invoice.InvoiceBase.InvoiceId = "Sozio";
|
|
invoice.InvoiceBase.InvoiceTypeText = "Soziotherapie";
|
|
}
|
|
|
|
public override void SetServiceInvoicePeriods(ServiceInvoice invoice, CostBearer2SupportConcept c2s, DateTimeSpan invoicePeriod, List<ServiceRecordDC> serviceRecords)
|
|
{
|
|
base.SetServiceInvoicePeriods(invoice, c2s, invoicePeriod, serviceRecords);
|
|
}
|
|
|
|
public override IList<InvoiceItem> CreateInvoiceItems(List<ServiceRecordDC> serviceRecordsInPeriod, DateTimeSpan invoicePeriod, SupportConceptApprovalPeriod scap, Calculations calc)
|
|
{
|
|
var preise = DAOFactory.GenericDAO.GetAllActive<Preis>();
|
|
var pauschVar = GetPreis(preise, "Fahrtpauschale 1", (DateTime)accountingPeriodStart);
|
|
if (pauschVar != 0)
|
|
{
|
|
AMOUNT_PER_KM1 = pauschVar;
|
|
}
|
|
pauschVar = 0;
|
|
pauschVar = GetPreis(preise, "Fahrtpauschale 2", (DateTime)accountingPeriodStart);
|
|
if (pauschVar != 0)
|
|
{
|
|
AMOUNT_PER_KM2 = pauschVar;
|
|
}
|
|
|
|
var list = base.CreateInvoiceItems(serviceRecordsInPeriod, invoicePeriod, scap, calc);
|
|
|
|
return list;
|
|
}
|
|
|
|
public override InvoiceItem CreateInvoiceItem(ServiceRecordDC iServiceRecord, SupportConceptApprovalPeriod scap, Calculations calc)
|
|
{
|
|
//if (!iServiceRecord.ServiceDescription.CategoryName.ToLower().Contains("assistenz"))
|
|
// return null;
|
|
|
|
var ii = base.CreateInvoiceItem(iServiceRecord, scap, calc);
|
|
DateTime start = ii.ItemPeriodStart.Value;
|
|
ii.ApprovedPerUnit= iServiceRecord.RoundedDuration;
|
|
ii.ItemPeriodStart = iServiceRecord.Start;
|
|
if (iServiceRecord.DistanceInMeter.HasValue && iServiceRecord.DistanceInMeter > 0)
|
|
{
|
|
if (iServiceRecord.DistanceInMeter <= 15)
|
|
{
|
|
ii.UnitDescription = String.Format("{0:0.00 €}", AMOUNT_PER_KM1);
|
|
ii.GrossAmountTotal += AMOUNT_PER_KM1;
|
|
}
|
|
else if (iServiceRecord.DistanceInMeter > 15)
|
|
{
|
|
ii.UnitDescription = String.Format("{0:0.00 €}", AMOUNT_PER_KM2);
|
|
ii.GrossAmountTotal += AMOUNT_PER_KM2;
|
|
}
|
|
}
|
|
return ii;
|
|
}
|
|
|
|
public override IList<InvoiceItem> CreateSummaryInvoiceItems(IList<InvoiceItem> itemList, DateTimeSpan invoicePeriod, SupportConceptApprovalPeriod scap, Calculations calc)
|
|
{
|
|
return itemList;
|
|
}
|
|
|
|
private static decimal GetPreis(IList<Preis> allePreise, String name, DateTime datum)
|
|
{
|
|
|
|
var pausch = allePreise.Where(p => p.Name.Contains(name)).FirstOrDefault();
|
|
if (pausch != null)
|
|
{
|
|
var crlist = MapperFactory.CostRatePeriodDC_CostRatePeriod.MapToNewDCs(pausch.CostRatePeriods);
|
|
|
|
var cr = crlist.GetCostRatePeriodForDate(CostRatePeriodType.AmountOfMoney, datum);
|
|
if (cr != null && cr.CostRateValue.HasValue)
|
|
{
|
|
return cr.CostRateValue.Value;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
}
|
|
}
|