//Account
[Custom("ImageName", "BO_Product")]
[DefaultClassOptions]
public class Account : BaseObject
{
public override void AfterConstruction()
{
base.AfterConstruction();
if (this.Session.IsNewObject(this))
{
this.Reprint = true;
}
}
[NonPersistent]
public int InStock
{
get
{
int sales = 0;
foreach (SaleItem item in this.SaleItemCollection)
sales += item.Packages;
return (this.Packages - sales);
}
}
int mPackages;
public int Packages
{
get { return mPackages; }
set { SetPropertyValue("Packages", ref mPackages, value); }
}
[Association("Account.SaleItem"), Aggregated]
public XPCollection<SaleItem> SaleItemCollection
{
get { return GetCollection<SaleItem>("SaleItemCollection"); }
}
//....
public Account(Session session) : base(session) { }
}
//Sale
[Custom("ImageName", "BO_Sale")]
[DefaultClassOptions]
public class Sale : BaseObject
{
public override void AfterConstruction()
{
base.AfterConstruction();
if (this.Session.IsNewObject(this))
{
}
}
[Custom("Caption", "Sale Items")]
[Association("Sale.SaleItem"), Aggregated]
public XPCollection<SaleItem> SaleItemCollection
{
get { return GetCollection<SaleItem>("SaleItemCollection"); }
}
//...
public Sale(Session session) : base(session) { }
}
//SaleItem
[Custom("ImageName", "BO_SaleItem")]
[CreatableItem(false), NavigationItem(false), VisibleInReports(true)]
public class SaleItem : BaseObject
{
public override void AfterConstruction()
{
base.AfterConstruction();
if (this.Session.IsNewObject(this))
{
}
}
int mPackages;
public int Packages
{
get { return mPackages; }
set { SetPropertyValue("Packages", ref mPackages, value); }
}
Account mAccount;
[Association("Account.SaleItem", typeof(Account))]
public Account Account
{
get { return mAccount; }
set { SetPropertyValue("Account", ref mAccount, value); }
}
//...
public SaleItem(Session session) : base(session) { }
}