using System; using System.Runtime.Serialization; namespace Tanshu.Accounts.Contracts { [DataContract] public class SalesBillItemBO { [DataMember] public Guid productID; [DataMember] public string Name { get; set; } private decimal price; [DataMember] public decimal Price { get { return price; } set { if (value <= 0) throw new ArgumentException("Price has to be non-negative greater than zero."); else price = value; } } private decimal quantity = 1; [DataMember] public decimal Quantity { get { return quantity; } set { if (value <= 0) throw new ArgumentException("Quantity has to be non-negative greater than zero."); quantity = value; } } private decimal discount = 0; [DataMember] public decimal Discount { get { return discount; } set { if (value < 0) throw new ArgumentException("Discount has to be non-negative greater than or equal to zero."); else if (value > 1) throw new ArgumentException("Discount has to be less than one."); else discount = value; } } [DataMember] public decimal Tax { get; set; } public decimal TaxAmount { get { return quantity * price * Tax * (1 - discount); } } public decimal DiscountAmount { get { return quantity * price * discount; } } public decimal GrossAmount { get { return quantity * price * (1 - discount); } } private decimal printed = 0; [DataMember] public decimal Printed { get { return printed; } set { if (value < 0) throw new ArgumentException("Printed has to be non-negative greater than or equal to zero."); else printed = value; } } [DataMember] public string location; public decimal Value { get { return price * quantity * (1 - discount) * (1 + Tax); } } public decimal Additional { get { return quantity - printed; } } [DataMember] public bool isNew = true; public string Display { get { string output = string.Format("{0} @ Rs. {1:#.##}", Name, price); if (discount != 0) output += string.Format(" - {0:#.##%}", discount); return output; } } } }