Files
BeWoPlaner/ReportImp/SkmViersen/Invoicing/CustomInvoiceCreation.cs

68 lines
3.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
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 SkmViersen.Invoicing
{
public class CustomInvoiceCreation : InvoiceCreation
{
public override void SetRecipientInformation(ServiceInvoice serviceInvoice, CostBearer costBearer)
{
base.SetRecipientInformation(serviceInvoice, costBearer);
if (serviceInvoice.InvoiceBase.CostBearer2SupportConcept != null &&
serviceInvoice.InvoiceBase.CostBearer2SupportConcept.CostBearerContactPerson != null)
{
if (serviceInvoice.InvoiceBase.CostBearer2SupportConcept.CostBearerContactPerson.Title != null && !serviceInvoice.InvoiceBase.CostBearer2SupportConcept.CostBearerContactPerson.Title.Value.IsNullOrEmpty())
serviceInvoice.InvoiceBase.RecipientPersonFirstName = serviceInvoice.InvoiceBase.CostBearer2SupportConcept.CostBearerContactPerson.Title.Value + " " + serviceInvoice.InvoiceBase.CostBearer2SupportConcept.CostBearerContactPerson.FirstName;
else
serviceInvoice.InvoiceBase.RecipientPersonFirstName = serviceInvoice.InvoiceBase.CostBearer2SupportConcept.CostBearerContactPerson.FirstName;
serviceInvoice.InvoiceBase.RecipientPersonLastName = serviceInvoice.InvoiceBase.CostBearer2SupportConcept.CostBearerContactPerson.LastName;
}
}
public override void BerechneSummaryItemsSummen(List<InvoiceItem> newlist, bool addRateFactorToUnitCount)
{
// Rundung nach Stundenzahl * Faktor plus die OriginalStunden ohne Faktor nachher wieder ausgewiesen!
foreach (InvoiceItem invoiceItem in newlist)
{
if (!invoiceItem.AmountPerUnit.HasValue)
{
invoiceItem.AmountPerUnit = 0;
}
invoiceItem.AmountPerUnit = Math.Round(invoiceItem.AmountPerUnit.Value, 2, MidpointRounding.AwayFromZero);
if (!invoiceItem.UnitCount.HasValue)
{
invoiceItem.UnitCount = 0;
}
var UnitOld = invoiceItem.UnitCount;
if (invoiceItem.RateFactor.HasValue)
{
invoiceItem.UnitCount = (invoiceItem.UnitCount ?? 0) * ((invoiceItem.RateFactor + 100) / 100);
}
invoiceItem.UnitCount = Math.Round(invoiceItem.UnitCount.Value, 2, MidpointRounding.AwayFromZero);
invoiceItem.AmountTotal = invoiceItem.AmountPerUnit * invoiceItem.UnitCount;
invoiceItem.AmountTotal = Math.Round(invoiceItem.AmountTotal.Value, 2, MidpointRounding.AwayFromZero);
invoiceItem.UnitCount = Math.Round(UnitOld.Value, 2, MidpointRounding.AwayFromZero);
invoiceItem.GrossAmountTotal = invoiceItem.AmountTotal;
}
}
}
}