68 lines
3.1 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
} |