Files
BeWoPlaner/BeWo/ViewModel/InvoiceVM.cs
2016-06-27 01:45:38 +02:00

377 lines
12 KiB
C#

using System;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
namespace BeWo.ViewModel
{
public class InvoiceVM : AbstractDCMapperVM<InvoiceDC>
{
#region Constants and Fields
public static string PropertyName_Amount = "Amount";
public static string PropertyName_Customer = "CustomerOid";
public static string PropertyName_InvoiceDate = "InvoiceDate";
public static string PropertyName_InvoiceNumber = "InvoiceNumber";
public static string PropertyName_InvoicingPeriodEnd = "InvoicingPeriodEnd";
public static string PropertyName_InvoicingPeriodStart = "InvoicingPeriodStart";
public static string PropertyName_InvoicingPeriodString = "InvoicingPeriodString";
public static string PropertyName_Notice = "Notice";
public static string PropertyName_Organisation = "OrganisationOid";
public static string PropertyName_PaidDate = "PaidDate";
public static string PropertyName_Recipient = "Recipient";
public static string PropertyName_RecipientAddress = "RecipientAddress";
public static string PropertyName_RecipientName = "RecipientName";
public static string PropertyName_SupportConcept = "SupportConceptOid";
private decimal _Amount;
private long? _CustomerOid;
private DateTime? _InvoiceDate = DateTime.Now.Date;
private string _InvoiceNumber;
private DateTime? _InvoicingPeriodEnd;
private DateTime? _InvoicingPeriodStart;
private string _Notice;
private long? _OrganisationOid;
private DateTime? _PaidDate;
private IInvoiceRecipient _Recipient;
private string _RecipientAddress;
private string _RecipientName;
private long? _SupportConceptOid;
#endregion
#region Constructors and Destructors
public InvoiceVM(InvoiceDC pDC) : base(pDC, !pDC.InvoiceOid.HasValue) {}
#endregion
#region Properties
public decimal Amount
{
get
{
return this._Amount;
}
set
{
if (this.AreDifferent(this._Amount, value))
{
this._Amount = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.Amount, value), PropertyName_Amount);
this.FirePropertyChanged(PropertyName_Amount);
}
}
}
public long? CustomerOid
{
get
{
return this._CustomerOid;
}
set
{
if (this.AreDifferent(this._CustomerOid, value))
{
this._CustomerOid = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.CustomerOid, value), PropertyName_Customer);
this.FirePropertyChanged(PropertyName_Customer);
}
}
}
public DateTime? InvoiceDate
{
get
{
return this._InvoiceDate;
}
set
{
if (this.AreDifferent(this._InvoiceDate, value))
{
this._InvoiceDate = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.InvoiceDate, value), PropertyName_InvoiceDate);
this.FirePropertyChanged(PropertyName_InvoiceDate);
}
}
}
public string InvoiceNumber
{
get
{
return this._InvoiceNumber;
}
set
{
if (this.AreDifferent(this._InvoiceNumber, value))
{
this._InvoiceNumber = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.InvoiceNumber, value), PropertyName_InvoiceNumber);
this.FirePropertyChanged(PropertyName_InvoiceNumber);
}
}
}
public DateTime? InvoicingPeriodEnd
{
get
{
return this._InvoicingPeriodEnd;
}
set
{
if (this.AreDifferent(this._InvoicingPeriodEnd, value))
{
this._InvoicingPeriodEnd = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.InvoicingPeriodEnd, value), PropertyName_InvoicingPeriodEnd);
this.FirePropertyChanged(PropertyName_InvoicingPeriodEnd);
this.FirePropertyChanged(PropertyName_InvoicingPeriodString);
}
}
}
public DateTime? InvoicingPeriodStart
{
get
{
return this._InvoicingPeriodStart;
}
set
{
if (this.AreDifferent(this._InvoicingPeriodStart, value))
{
this._InvoicingPeriodStart = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.InvoicingPeriodStart, value), PropertyName_InvoicingPeriodStart);
this.FirePropertyChanged(PropertyName_InvoicingPeriodStart);
this.FirePropertyChanged(PropertyName_InvoicingPeriodString);
}
}
}
public string InvoicingPeriodString
{
get
{
return this._InvoicingPeriodEnd.HasValue && this._InvoicingPeriodStart.HasValue
? this._InvoicingPeriodStart.Value.ToShortDateString() + " - " + this._InvoicingPeriodEnd.Value.ToShortDateString()
: string.Empty;
}
set {}
}
public string Notice
{
get
{
return this._Notice;
}
set
{
if (this.AreDifferent(this._Notice, value))
{
this._Notice = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.Notice, value), PropertyName_Notice);
this.FirePropertyChanged(PropertyName_Notice);
}
}
}
public long? OrganisationOid
{
get
{
return this._OrganisationOid;
}
set
{
if (this.AreDifferent(this._OrganisationOid, value))
{
this._OrganisationOid = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.OrganisationOid, value), PropertyName_Organisation);
this.FirePropertyChanged(PropertyName_Organisation);
}
}
}
public DateTime? PaidDate
{
get
{
return this._PaidDate;
}
set
{
if (this.AreDifferent(this._PaidDate, value))
{
this._PaidDate = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.PaidDate, value), PropertyName_PaidDate);
this.FirePropertyChanged(PropertyName_PaidDate);
}
}
}
public IInvoiceRecipient Recipient
{
get
{
return this._Recipient;
}
set
{
if (this.AreDifferent(this._Recipient, value))
{
this._Recipient = value;
this.RecipientAddress = value.InvoiceAddressString;
this.RecipientName = value.Name;
this.Amount = value.DefaultAmount ?? 0;
if (value is CompactCostBearerDC)
{
this.OrganisationOid = value.Oid;
}
else if (value is CompactCustomerDC)
{
this.CustomerOid = value.Oid;
}
this.FirePropertyChanged(PropertyName_Recipient);
}
}
}
public string RecipientAddress
{
get
{
return this._RecipientAddress;
}
set
{
if (this.AreDifferent(this._RecipientAddress, value))
{
this._RecipientAddress = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.RecipientAddress, value), PropertyName_RecipientAddress);
this.FirePropertyChanged(PropertyName_RecipientAddress);
}
}
}
public string RecipientName
{
get
{
return this._RecipientName;
}
set
{
if (this.AreDifferent(this._RecipientName, value))
{
this._RecipientName = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.RecipientName, value), PropertyName_RecipientName);
this.FirePropertyChanged(PropertyName_RecipientName);
}
}
}
public long? SupportConceptOid
{
get
{
return this._SupportConceptOid;
}
set
{
if (this.AreDifferent(this._SupportConceptOid, value))
{
this._SupportConceptOid = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.SupportConceptOid, value), PropertyName_SupportConcept);
this.FirePropertyChanged(PropertyName_SupportConcept);
}
}
}
#endregion
#region Methods
protected override void InitByDataContract(InvoiceDC pDataContract)
{
this._Amount = pDataContract.Amount;
this._InvoiceDate = pDataContract.InvoiceDate;
this._InvoiceNumber = pDataContract.InvoiceNumber;
this._InvoicingPeriodStart = pDataContract.InvoicingPeriodStart;
this._InvoicingPeriodEnd = pDataContract.InvoicingPeriodEnd;
this._Notice = pDataContract.Notice;
this._OrganisationOid = pDataContract.OrganisationOid;
this._PaidDate = pDataContract.PaidDate;
this._SupportConceptOid = pDataContract.SupportConceptOid;
this._CustomerOid = pDataContract.CustomerOid;
this._RecipientAddress = pDataContract.RecipientAddress;
this._RecipientName = pDataContract.RecipientName;
}
protected override InvoiceDC MapToDataContract(InvoiceDC pDataContract, bool doCommit)
{
pDataContract.Amount = this._Amount;
pDataContract.InvoiceDate = this._InvoiceDate;
pDataContract.InvoiceNumber = this._InvoiceNumber;
pDataContract.InvoicingPeriodEnd = this._InvoicingPeriodEnd;
pDataContract.InvoicingPeriodStart = this._InvoicingPeriodStart;
pDataContract.Notice = this._Notice;
pDataContract.OrganisationOid = this._OrganisationOid;
pDataContract.PaidDate = this._PaidDate;
pDataContract.SupportConceptOid = this._SupportConceptOid;
pDataContract.CustomerOid = this._CustomerOid;
pDataContract.RecipientName = this._RecipientName;
pDataContract.RecipientAddress = this._RecipientAddress;
return pDataContract;
}
#endregion
}
}