Files
BeWoPlaner/BeWo/ViewModel/ServiceInvoicePeriodVM.cs

425 lines
14 KiB
C#
Raw Normal View History

2016-06-27 01:45:38 +02:00
using System;
using BS.Shared;
using BeWo.ViewModel.ListViewModel;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
using System.Linq;
namespace BeWo.ViewModel
{
public class ServiceInvoicePeriodVM : AbstractDCMapperVM<ServiceInvoicePeriodDC>
{
public static string PropertyName_ApprovedAmount = "ApprovedAmount";
public static string PropertyName_ApprovedAmountDefaultHourlyRate = "ApprovedAmountDefaultHourlyRate";
public static string PropertyName_ApprovedBE = "ApprovedBE";
public static string PropertyName_ApprovedFixedAmount = "ApprovedFixedAmount";
public static string PropertyName_ApprovedHours = "ApprovedHours";
public static string PropertyName_BEString = "BEString";
public static string PropertyName_Claim = "Claim";
public static string PropertyName_End = "End";
public static string PropertyName_HoursNotBillableAbsence = "HoursNotBillableAbsence";
public static string PropertyName_HoursNotBillableNotApproved = "HoursNotBillableNotApproved";
public static string PropertyName_InvoiceItemList = "InvoiceItemList";
public static string PropertyName_NotBillableString = "NotBillableString";
public static string PropertyName_PeriodString = "PeriodString";
public static string PropertyName_ServiceUnitName = "ServiceUnitName";
public static string PropertyName_Start = "Start";
public static string PropertyName_AccountingInterval = "AccountingInterval";
private decimal? _ApprovedAmountDefaultHourlyRate;
private decimal? _ApprovedBE;
private decimal? _ApprovedFixedAmount;
private decimal? _ApprovedHours;
private decimal? _Claim;
private DateTime? _End;
private decimal _HoursNotBillableAbsence;
private decimal _HoursNotBillableNotApproved;
private InvoiceItemListVM _InvoiceItemList;
private string _ServiceUnitName;
private DateTime? _Start;
private AccountingIntervalType? _AccountingInterval;
public ServiceInvoicePeriodVM(ServiceInvoicePeriodDC pDC)
: base(pDC, !pDC.ServiceInvoicePeriodOid.HasValue) {}
public decimal? ApprovedAmount
{
get
{
return this._ApprovedAmountDefaultHourlyRate.HasValue
? this._ApprovedAmountDefaultHourlyRate
: this._ApprovedFixedAmount;
}
}
public decimal? ApprovedAmountDefaultHourlyRate
{
get
{
return this._ApprovedAmountDefaultHourlyRate;
}
set
{
if (this.AreDifferent(this._ApprovedAmountDefaultHourlyRate, value))
{
this._ApprovedAmountDefaultHourlyRate = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.ApprovedAmountDefaultHourlyRate, value), PropertyName_ApprovedAmountDefaultHourlyRate);
this.FirePropertyChanged(PropertyName_ApprovedAmountDefaultHourlyRate);
}
}
}
public decimal? ApprovedBE
{
get
{
return this._ApprovedBE;
}
set
{
if (this.AreDifferent(this._ApprovedBE, value))
{
this._ApprovedBE = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.ApprovedBE, value), PropertyName_ApprovedBE);
this.FirePropertyChanged(PropertyName_ApprovedBE);
}
}
}
public decimal? ApprovedFixedAmount
{
get
{
return this._ApprovedFixedAmount;
}
set
{
if (this.AreDifferent(this._ApprovedFixedAmount, value))
{
this._ApprovedFixedAmount = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.ApprovedFixedAmount, value), PropertyName_ApprovedFixedAmount);
this.FirePropertyChanged(PropertyName_ApprovedFixedAmount);
}
}
}
public decimal? ApprovedHours
{
get
{
if (this._ApprovedHours.HasValue)
return Math.Round(this._ApprovedHours.Value, 2, MidpointRounding.AwayFromZero);
return null;
}
set
{
if (this.AreDifferent(this._ApprovedHours, value))
{
this._ApprovedHours = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.ApprovedHours, value), PropertyName_ApprovedHours);
this.FirePropertyChanged(PropertyName_ApprovedHours);
}
}
}
public string BEString
{
get
{
return String.Format("({0:0.00} {1})", this._ApprovedBE, this._ServiceUnitName);
}
}
public decimal? Claim
{
get
{
return this._Claim;
}
set
{
if (this.AreDifferent(this._Claim, value))
{
this._Claim = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.Claim, value), PropertyName_Claim);
this.FirePropertyChanged(PropertyName_Claim);
}
}
}
public AccountingIntervalType? AccountingInterval
{
get { return this._AccountingInterval; }
set
{
if (this.AreDifferent(this._AccountingInterval, value))
{
this._AccountingInterval = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.AccountingInterval, value), PropertyName_AccountingInterval);
this.FirePropertyChanged(PropertyName_AccountingInterval);
}
}
}
public DateTime? End
{
get
{
return this._End;
}
set
{
if (this.AreDifferent(this._End, value))
{
this._End = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.End, value), PropertyName_End);
this.FirePropertyChanged(PropertyName_End);
this.FirePropertyChanged(PropertyName_PeriodString);
}
}
}
public decimal HoursNotBillableAbsence
{
get
{
return this._HoursNotBillableAbsence;
}
set
{
if (this.AreDifferent(this._HoursNotBillableAbsence, value))
{
this._HoursNotBillableAbsence = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.HoursNotBillableAbsence, value), PropertyName_HoursNotBillableAbsence);
this.FirePropertyChanged(PropertyName_HoursNotBillableAbsence);
}
}
}
public decimal HoursNotBillableNotApproved
{
get
{
return this._HoursNotBillableNotApproved;
}
set
{
if (this.AreDifferent(this._HoursNotBillableNotApproved, value))
{
this._HoursNotBillableNotApproved = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.HoursNotBillableNotApproved, value), PropertyName_HoursNotBillableNotApproved);
this.FirePropertyChanged(PropertyName_HoursNotBillableNotApproved);
}
}
}
public InvoiceItemListVM InvoiceItemList
{
get
{
return this._InvoiceItemList;
}
set
{
if (this.AreDifferent(this._InvoiceItemList, value))
{
this._InvoiceItemList = value;
this.FirePropertyChanged(PropertyName_InvoiceItemList);
}
}
}
public string NotBillableString
{
get
{
if (this._HoursNotBillableAbsence == 0 && this._HoursNotBillableNotApproved == 0)
{
return string.Empty;
}
else
{
var s = "Nicht abrechenbare geleistete Stunden im Zeitraum: ";
if (this._HoursNotBillableAbsence > 0)
{
s += string.Format("{0:0.00} (Klient abwesend) ", this._HoursNotBillableAbsence);
if (this._HoursNotBillableNotApproved > 0)
{
s += " + ";
}
}
if (this._HoursNotBillableNotApproved > 0)
{
s += string.Format("{0:0.00} (nicht bewilligt) ", this._HoursNotBillableNotApproved);
}
return s;
}
}
}
public string ShortDescription
{
get
{
String str = CustomerString;
if (String.IsNullOrEmpty(str))
str = PeriodString;
else
{
if (this.DataContract.SupportConceptApprovalPeriod != null && this.DataContract.SupportConceptApprovalPeriod.ServiceCategory != null)
{
str += ", " + this.DataContract.SupportConceptApprovalPeriod.ServiceCategory.Name;
}
}
return str;
}
}
public string PeriodString
{
get
{
String periodString = String.Empty;
if (this.DataContract.SupportConceptApprovalPeriod != null && this.DataContract.SupportConceptApprovalPeriod.ServiceCategory != null)
{
periodString = this.DataContract.SupportConceptApprovalPeriod.ServiceCategory.Name;
}
if (this._Start.HasValue && this._End.HasValue)
{
if (periodString.Length > 0)
periodString += " ";
periodString += this._Start.Value.ToShortDateString() + " - " +
this._End.Value.ToShortDateString();
}
return periodString;
}
}
public string CustomerString
{
get
{
if (this.DataContract.Customer != null)
{
return this.DataContract.Customer.ToString();
}
return null;
}
}
public string ServiceUnitName
{
get
{
return this._ServiceUnitName;
}
set
{
if (this.AreDifferent(this._ServiceUnitName, value))
{
this._ServiceUnitName = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.ServiceUnitName, value), PropertyName_ServiceUnitName);
this.FirePropertyChanged(PropertyName_ServiceUnitName);
}
}
}
public DateTime? Start
{
get
{
return this._Start;
}
set
{
if (this.AreDifferent(this._Start, value))
{
this._Start = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.Start, value), PropertyName_Start);
this.FirePropertyChanged(PropertyName_Start);
this.FirePropertyChanged(PropertyName_PeriodString);
}
}
}
protected override void InitByDataContract(ServiceInvoicePeriodDC pDataContract)
{
this._ApprovedFixedAmount = pDataContract.ApprovedFixedAmount;
this._ApprovedHours = pDataContract.ApprovedHours;
this._End = pDataContract.End;
this._InvoiceItemList = new InvoiceItemListVM(pDataContract.InvoiceItems);
this._Start = pDataContract.Start;
this._ApprovedBE = pDataContract.ApprovedBE;
this._ServiceUnitName = pDataContract.ServiceUnitName;
this._Claim = pDataContract.Claim;
this._ApprovedAmountDefaultHourlyRate = pDataContract.ApprovedAmountDefaultHourlyRate;
this._HoursNotBillableAbsence = pDataContract.HoursNotBillableAbsence;
this._HoursNotBillableNotApproved = pDataContract.HoursNotBillableNotApproved;
this._AccountingInterval = pDataContract.AccountingInterval;
}
protected override ServiceInvoicePeriodDC MapToDataContract(ServiceInvoicePeriodDC pDataContract, bool doCommit)
{
pDataContract.ApprovedFixedAmount = this._ApprovedFixedAmount;
pDataContract.ApprovedHours = this._ApprovedHours;
pDataContract.End = this._End;
pDataContract.InvoiceItems = this._InvoiceItemList.CopyToDCList(true);
pDataContract.Start = this._Start;
pDataContract.ApprovedBE = this._ApprovedBE;
pDataContract.ServiceUnitName = this._ServiceUnitName;
pDataContract.Claim = this._Claim;
pDataContract.ApprovedAmountDefaultHourlyRate = this._ApprovedAmountDefaultHourlyRate;
pDataContract.HoursNotBillableAbsence = this._HoursNotBillableAbsence;
pDataContract.HoursNotBillableNotApproved = this._HoursNotBillableNotApproved;
pDataContract.AccountingInterval = this._AccountingInterval;
return pDataContract;
}
}
}