61 lines
1.3 KiB
C#
61 lines
1.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
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.Extensions;
|
|
using BS.Shared.Services;
|
|
|
|
namespace BeWo.SprungbrettTheresia
|
|
{
|
|
|
|
public class CustomSettlementInvoiceCreation : SettlementInvoiceCreation
|
|
{
|
|
public override void CalculateInvoiceItemAmounts(Settlement2DC si)
|
|
{
|
|
|
|
decimal maxApprovedFls = si.ApprovedFLS ?? 0;
|
|
|
|
foreach (var ii in si.InvoiceItems)
|
|
{
|
|
if (ii.UnitCount.HasValue)
|
|
{
|
|
decimal uc = ii.UnitCount ?? 0;
|
|
|
|
if (maxApprovedFls < uc)
|
|
uc = maxApprovedFls;
|
|
|
|
maxApprovedFls -= uc;
|
|
|
|
ii.UnitCount = uc;
|
|
|
|
if (ii.RateFactor.HasValue && ii.RateFactor.Value != 0)
|
|
{
|
|
ii.UnitCount *= ((100m + ii.RateFactor.Value) / 100m);
|
|
|
|
}
|
|
ii.UnitCount = Math.Round(ii.UnitCount ?? 0, 2, MidpointRounding.AwayFromZero);
|
|
|
|
|
|
if (ii.AmountPerUnit.HasValue)
|
|
{
|
|
ii.AmountTotal = ii.UnitCount.Value * ii.AmountPerUnit.Value;
|
|
ii.GrossAmountTotal = ii.AmountTotal;
|
|
|
|
}
|
|
if (ii.MaxApprovedUnitCount < ii.UnitCount)
|
|
{
|
|
ii.MaxApprovedUnitCount = ii.UnitCount;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|