Files
BeWoPlaner/Data/Entities/ServiceInvoice.cs
2025-09-27 16:34:57 +02:00

136 lines
3.6 KiB
C#

using System.Collections.Generic;
using System.Linq;
using BS.Shared;
namespace BeWo.Data.Entities
{
public class ServiceInvoice : BeWoEntityBase
{
public static string PropertyName_AmountAdvancePayments = "AmountAdvancePayments";
public static string PropertyName_AmountEquityContribution = "AmountEquityContribution";
public static string PropertyName_InvoiceBase = "InvoiceBase";
public static string PropertyName_ServiceInvoicePeriodList = "ServiceInvoicePeriodList";
public static string PropertyName_ServiceUnitOid = "ServiceUnitOid";
private decimal? _AmountAdvancePayments;
private decimal? _AmountEquityContribution;
private InvoiceBase _InvoiceBase;
private IList<ServiceInvoicePeriod> _ServiceInvoicePeriodList;
private long? _ServiceUnitOid;
public ServiceInvoice()
{
this._Tid = TableID.ServiceInvoice;
}
public virtual decimal? AmountAdvancePayments
{
get
{
return this._AmountAdvancePayments;
}
set
{
if (this.AreDifferent(this._AmountAdvancePayments, value))
{
this._AmountAdvancePayments = value;
}
}
}
public virtual decimal? AmountEquityContribution
{
get
{
return this._AmountEquityContribution;
}
set
{
if (this.AreDifferent(this._AmountEquityContribution, value))
{
this._AmountEquityContribution = value;
}
}
}
public virtual InvoiceBase InvoiceBase
{
get
{
return this._InvoiceBase ?? (this._InvoiceBase = new InvoiceBase());
}
set
{
if (this.AreDifferent(this._InvoiceBase, value))
{
this._InvoiceBase = value;
}
}
}
public virtual IList<ServiceInvoicePeriod> ServiceInvoicePeriodList
{
get
{
return this._ServiceInvoicePeriodList ?? (this._ServiceInvoicePeriodList = new List<ServiceInvoicePeriod>());
}
set
{
if (this.AreDifferent(this._ServiceInvoicePeriodList, value))
{
this._ServiceInvoicePeriodList = value;
}
}
}
public virtual long? ServiceUnitOid
{
get
{
return this._ServiceUnitOid;
}
set
{
if (this.AreDifferent(this._ServiceUnitOid, value))
{
this._ServiceUnitOid = value;
}
}
}
public virtual decimal? GetTotalClaim()
{
var res = this._ServiceInvoicePeriodList.Sum(i => i.Claim);
if (this.AmountAdvancePayments.HasValue)
{
res -= this.AmountAdvancePayments;
}
if (this.AmountEquityContribution.HasValue)
{
res -= this.AmountEquityContribution;
}
return res;
}
public virtual IEnumerable<InvoiceItem> GetInvoiceItems()
{
return ServiceInvoicePeriodList.SelectMany(x => x.InvoiceItemList);
}
}
}