using System; using System.Collections.Generic; using System.Linq; using System.Text; using Ease.CoreV35; using Ease.CoreV35.Model; using Ease.CoreV35.Caching; using System.Data.Linq.Mapping; namespace Payroll.BO { #region TaxMergeMaster [Serializable] public class TaxMergeMaster : AuditTrailBase { #region Cache Stores private static Cache _cache = new Cache(typeof(TaxMergeMaster)); #endregion #region Constructor public TaxMergeMaster() { _taxParameterID = null; _itemGroup = EnumIncomeTaxItemGroup.Basic_Salary; _description = string.Empty; _position = 0; _itemId = 0; _type = EnumTaxMergeType.Allowance; } #endregion #region Properties #region TaxParameterID : ID private ID _taxParameterID; public ID TaxParameterID { get { return _taxParameterID; } set { base.OnPropertyChange("TaxParameterID", _taxParameterID, value); _taxParameterID = value; } } #endregion #region itemCode : string private EnumIncomeTaxItemGroup _itemGroup; public EnumIncomeTaxItemGroup ItemGroup { get { return _itemGroup; } set { _itemGroup = value; } } #endregion #region headID : int private int _itemId; public int ItemID { get { return _itemId; } set { _itemId = value; } } #endregion #region description : string private string _description; public string Description { get { return _description; } set { base.OnPropertyChange("description", _description, value); _description = value; } } #endregion #region position : int private int _position; public int Position { get { return _position; } set { base.OnPropertyChange("position", _position, value); _position = value; } } #endregion #region Type : EnumTaxMergeType private EnumTaxMergeType _type; public EnumTaxMergeType Type { get { return _type; } set { base.OnPropertyChange("Type", (short)_type, (short)value); _type = value; } } #endregion #region TaxMergeDetail : TaxMergeDetail private ObjectsTemplate _TaxMergeDetails = null; public ObjectsTemplate TaxMergeDetails { get { if (_taxParameterID == null && !this.ID.IsUnassigned && this.ID.Integer > 0) { TaxMergeMaster ms = TaxMergeMaster.Get(this.ID); _TaxMergeDetails = ms.TaxMergeDetails; } return this._TaxMergeDetails; } set { _TaxMergeDetails = value; } } #endregion #region Service Factory ITaxMergeMasterService : ITaxMergeMasterService internal static ITaxMergeMasterService Service { get { return Services.Factory.CreateService(typeof(ITaxMergeMasterService)); } } #endregion #endregion #region Functions public static TaxMergeMaster Get(ID nID) { TaxMergeMaster oTaxMergeMaster = null; #region Cache Header oTaxMergeMaster = (TaxMergeMaster)_cache["Get", nID]; if (oTaxMergeMaster != null) return oTaxMergeMaster; #endregion oTaxMergeMaster = TaxMergeMaster.Service.Get(nID); #region Cache Footer _cache.Add(oTaxMergeMaster, "Get", nID); #endregion return oTaxMergeMaster; } public static ObjectsTemplate GetbyTaxParameter(ID TaxParameterID) { #region Cache Header ObjectsTemplate taxMergeMasters = _cache["Get"] as ObjectsTemplate; if (taxMergeMasters != null) return taxMergeMasters; #endregion try { taxMergeMasters = Service.GetbyTaxParameter(TaxParameterID); } catch (ServiceException e) { throw new Exception(e.Message, e); } #region Cache Footer _cache.Add(taxMergeMasters, "Get"); #endregion return taxMergeMasters; } public static IncomeTax Extract(ObjectsTemplate mergeItems, EnumTaxMergeType type, int itemID) { IncomeTax tax = null; foreach (TaxMergeMaster master in mergeItems) { foreach (TaxMergeMaster.TaxMergeDetail detail in master.TaxMergeDetails) { if (detail.Type == type && detail.ItemID == itemID) { tax = new IncomeTax(); tax.ItemGroup = master.ItemGroup;; tax.ItemID = master.ItemID; tax.Description = master.Description; //tax.Position = master.Position; return tax; } } } return null; } public static IncomeTax Extract(ObjectsTemplate mergeItems, EnumIncomeTaxItemGroup groupcode) { IncomeTax tax = null; foreach (TaxMergeMaster master in mergeItems) { foreach (TaxMergeMaster.TaxMergeDetail detail in master.TaxMergeDetails) { if (detail.ItemGroup == groupcode && detail.Type == EnumTaxMergeType.NONE) { tax = new IncomeTax(); tax.ItemGroup = master.ItemGroup; ; tax.ItemID = master.ItemID; tax.Description = master.Description; tax.Position = master.Position; return tax; } } } return null; } public static IncomeTax Get(ObjectsTemplate mergeItems, EnumIncomeTaxItemGroup groupcode) { IncomeTax tax = null; foreach (TaxMergeMaster master in mergeItems) { foreach (TaxMergeMaster.TaxMergeDetail detail in master.TaxMergeDetails) { if (detail.ItemGroup == groupcode) { tax = new IncomeTax(); tax.ItemGroup = master.ItemGroup; ; tax.ItemID = master.ItemID; tax.Description = master.Description; tax.Position = master.Position; return tax; } } } return null; } //public static ObjectsTemplate Get() //{ // #region Cache Header // ObjectsTemplate taxMergeMasters = _cache["Get"] as ObjectsTemplate; // if (taxMergeMasters != null) // return taxMergeMasters; // #endregion // try // { // taxMergeMasters = Service.Get(); // } // catch (ServiceException e) // { // throw new Exception(e.Message, e); // } // #region Cache Footer // _cache.Add(taxMergeMasters, "Get"); // #endregion // return taxMergeMasters; //} public static bool IsExist(ObjectsTemplate masters, EnumTaxMergeType ntype, int nItemId) { foreach (TaxMergeMaster masterItem in masters) { foreach (TaxMergeDetail item in masterItem.TaxMergeDetails) { if (item.Type == ntype && item.ItemID == nItemId) { return true; } } } return false; } public ID Save() { this.SetAuditTrailProperties(); return TaxMergeMaster.Service.Save(this); } public void Delete() { TaxMergeMaster.Service.Delete(ID); } #endregion #endregion #region TaxMergeDetail [Serializable] public class TaxMergeDetail : ObjectTemplate { #region Cache Store private static Cache _cache = new Cache(typeof(TaxMergeDetail)); #endregion #region Constructor public TaxMergeDetail() { _taxMergeID = null; _taxParameterID = null; _itemGroup = EnumIncomeTaxItemGroup.Tax_Deducted; _itemID = 0; _type = EnumTaxMergeType.Allowance; _description = ""; } #endregion #region Properties #region TaxMergeID : ID private ID _taxMergeID; public ID TaxMergeID { get { return _taxMergeID; } set { base.OnPropertyChange("TaxMergeID", _taxMergeID, value); _taxMergeID = value; } } #endregion #region TaxParameterID : ID private ID _taxParameterID; public ID TaxParameterID { get { return _taxParameterID; } set { base.OnPropertyChange("TaxParameterID", _taxParameterID, value); _taxParameterID = value; } } #endregion #region ItemGroup : EnumIncomeTaxItemGroup private EnumIncomeTaxItemGroup _itemGroup; public EnumIncomeTaxItemGroup ItemGroup { get { return _itemGroup; } set { _itemGroup = value; } } #endregion #region Description : string private string _description; public string Description { get { return _description; } set { _description = value; } } #endregion #region ItemID : int private int _itemID; public int ItemID { get { return _itemID; } set { base.OnPropertyChange("ItemGroup", (short)_itemID, value); _itemID = value; } } #endregion #region Type : EnumTaxMergeType private EnumTaxMergeType _type; public EnumTaxMergeType Type { get { return _type; } set { base.OnPropertyChange("Type", (short)_type, (short)value); _type = value; } } #endregion #endregion } #endregion } #region ITaxMergeMaster Service public interface ITaxMergeMasterService { TaxMergeMaster Get(ID id); ObjectsTemplate GetbyTaxParameter(ID TaxParameterID); //ObjectsTemplate Get(); ID Save(TaxMergeMaster item); void Delete(ID id); } #endregion }