377 lines
12 KiB
C#
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
|
|
}
|
|
} |