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 SalaryProcess [Serializable] public class SalaryProcess : AuditTrailBase { #region Cache Store private static Cache _cache = new Cache(typeof(SalaryProcess)); #endregion #region Constructor public SalaryProcess() { _salaryMonth = DateTime.MinValue; _processDate = DateTime.MinValue; _paymentDate = DateTime.MinValue; _monthEndDate = DateTime.MinValue; _workDays = 0; _isFinalized = false; _processCode = ""; _remarks = ""; _payrollTypeID = null; _showInDesktop = false; _showInDesktopDate = DateTime.MinValue; } #endregion #region Properties #region Salary Month : DateTime private DateTime _salaryMonth; public DateTime SalaryMonth { get { return _salaryMonth; } set { base.OnPropertyChange("SalaryMonth", _salaryMonth, value); _salaryMonth = value; } } #endregion #region processDate : DateTime private DateTime _processDate; public DateTime ProcessDate { get { return _processDate; } set { base.OnPropertyChange("processDate", _processDate, value); _processDate = value; } } #endregion #region paymentDate : System.DateTime private System.DateTime? _paymentDate; public System.DateTime? PaymentDate { get { return _paymentDate; } set { base.OnPropertyChange("paymentDate", _paymentDate, value); _paymentDate = value; } } #endregion #region workDays : int private int _workDays; public int WorkDays { get { return _workDays; } set { base.OnPropertyChange("workDays", _workDays, value); _workDays = value; } } #endregion #region isFinalized : bool private bool _isFinalized; public bool IsFinalized { get { return _isFinalized; } set { base.OnPropertyChange("isFinalized", _isFinalized, value); _isFinalized = value; } } #endregion #region payrollTypeID : int private ID _payrollTypeID; public ID PayrollTypeID { get { return _payrollTypeID; } set { base.OnPropertyChange("payrollTypeID", _payrollTypeID, value); _payrollTypeID = value; } } #endregion #region ProcessCode : string private string _processCode; public string ProcessCode { get { return _processCode; } set { base.OnPropertyChange("ProcessCode", _processCode, value); _processCode = value; } } #endregion #region Remarks : string private string _remarks; public string Remarks { get { return _remarks; } set { base.OnPropertyChange("Remarks", _remarks, value); _remarks = value; } } #endregion #region ShowInDesktop : int private bool _showInDesktop; public bool ShowInDesktops { get { return _showInDesktop; } set { base.OnPropertyChange("ShowInDesktops", _showInDesktop, value); _showInDesktop = value; } } #endregion #region ShowInDesktopDate : DateTime private DateTime _showInDesktopDate; public DateTime ShowInDesktopDate { get { return _showInDesktopDate; } set { base.OnPropertyChange("ShowInDesktopDate", _showInDesktopDate, value); _showInDesktopDate = value; } } #endregion #region MonthEndDate : System.DateTime private System.DateTime? _monthEndDate; public System.DateTime? MonthEndDate { get { return _monthEndDate; } set { base.OnPropertyChange("MonthEndDate", _monthEndDate, value); _monthEndDate = value; } } #endregion #region Service Factory ISalaryProcessService : ISalaryProcessService internal static ISalaryProcessService Service { get { return Services.Factory.CreateService(typeof(ISalaryProcessService)); } } #endregion #endregion #region Functions public static SalaryProcess Get(ID nID) { SalaryProcess oSalaryProcess = null; #region Cache Header oSalaryProcess = (SalaryProcess)_cache["Get", nID]; if (oSalaryProcess != null) return oSalaryProcess; #endregion oSalaryProcess = SalaryProcess.Service.Get(nID); #region Cache Footer _cache.Add(oSalaryProcess, "Get", nID); #endregion return oSalaryProcess; } public static ObjectsTemplate Get(DateTime dMonthDate) { #region Cache Header ObjectsTemplate salaryProcesss = _cache["Get", dMonthDate] as ObjectsTemplate; if (salaryProcesss != null) return salaryProcesss; #endregion try { salaryProcesss = Service.Get(dMonthDate,Payroll.BO.SystemInformation.CurrentSysInfo.PayrollTypeID.Integer); } catch (ServiceException e) { throw new Exception(e.Message, e); } #region Cache Footer _cache.Add(salaryProcesss, "Get", dMonthDate); #endregion return salaryProcesss; } public static ObjectsTemplate Get() { #region Cache Header ObjectsTemplate salaryProcesss = _cache["Get"] as ObjectsTemplate; if (salaryProcesss != null) return salaryProcesss; #endregion try { salaryProcesss = Service.Get(SystemInformation.CurrentSysInfo.PayrollTypeID.Integer); } catch (ServiceException e) { throw new Exception(e.Message, e); } #region Cache Footer _cache.Add(salaryProcesss, "Get"); #endregion return salaryProcesss; } public static ObjectsTemplate GetSP() { #region Cache Header ObjectsTemplate salaryProcesss = _cache["Get"] as ObjectsTemplate; if (salaryProcesss != null) return salaryProcesss; #endregion try { salaryProcesss = Service.GetSP(); } catch (ServiceException e) { throw new Exception(e.Message, e); } #region Cache Footer _cache.Add(salaryProcesss, "GetSP"); #endregion return salaryProcesss; } public bool GetBySMonth(DateTime dSMonth) { bool bShowInDesktop; bShowInDesktop = SalaryProcess.Service.GetBySMonth(dSMonth,Payroll.BO.SystemInformation.CurrentSysInfo.PayrollTypeID.Integer); return bShowInDesktop; } public ID Save() { return SalaryProcess.Service.Save(this); } public void SetAuditTraiProperty() { base.SetAuditTrailProperties(); } public void Delete() { SalaryProcess.Service.Delete(this.ID); } public static int GetProcessID(DateTime nextPayProcessDate, int payrollTypeID) { int nTotlalProcessID = 0; nTotlalProcessID = Service.GetProcessID(SystemInformation.CurrentSysInfo.NextPayProcessDate, Payroll.BO.SystemInformation.CurrentSysInfo.PayrollTypeID.Integer); return nTotlalProcessID; } public void UndoSalary() { SalaryProcess.Service.UndoSalary(this.ID); } public static void UndoMonthlySalaryByEmpIDs(string ids, DateTime salaryMonth) { SalaryProcess.Service.UndoMonthlySalaryByEmpIDs(ids, salaryMonth); } public void Update(SalaryProcess oSProcess) { this.SetAuditTraiProperty(); SalaryProcess.Service.Update(oSProcess); } public void SPApprove(SalaryProcess oSProcess) { SalaryProcess.Service.SPApprove(oSProcess); } public static ObjectsTemplate GetAllProcess() { ObjectsTemplate salaryProcesss = new ObjectsTemplate (); salaryProcesss = SalaryProcess.Service.GetAllProcess(SystemInformation.CurrentSysInfo.NextPayProcessDate,Payroll.BO.SystemInformation.CurrentSysInfo.PayrollTypeID.Integer); return salaryProcesss; } #endregion } #endregion #region ISalaryProcess Service public interface ISalaryProcessService { SalaryProcess Get(ID id); ObjectsTemplate Get(int payrollTypeID); ObjectsTemplate GetSP(); bool GetBySMonth(DateTime sMonth, int payrollTypeID); ID Save(SalaryProcess item); int GetProcessID(DateTime nextPayProcessDate, int payrollTypeID); void Delete(ID id); void UndoSalary(ID id); void Update(SalaryProcess oSProcess); void SPApprove(SalaryProcess oSProcess); ObjectsTemplate Get(DateTime dMonthDate, int payrollTypeID); void MonthEnd(DateTime month, ObjectsTemplate pftransaction, ObjectsTemplate loanshedule, ObjectsTemplate oESBProvisions, int payrollTypeID); ObjectsTemplate GetAllProcess(DateTime nextPayProcessDate, int payrollTypeID); void UndoMonthlySalaryByEmpIDs(string ids, DateTime salaryMonth); } #endregion }