Ejemplo n.º 1
0
        private void btnGeneratePayslips_Click(object sender, EventArgs e)
        {
            ServiceEmployee service = new ServiceEmployee();

            this.Cursor = Cursors.WaitCursor;
            try
            {
                int idx = 1;
                headerGroupMain.ValuesSecondary.Heading = string.Format("Processing Payroll for {0}", dtSalaryMonth.Value.ToString("MMMM yyyy"));
                _EmployeesList = AppCommon.ConvertToBindingList <SelectListItem>((new ServiceAttendance()).GetDistinctEmployeesListForMonthInAttendance(dtSalaryMonth.Value));
                headerGroupMain.ValuesSecondary.Heading = string.Format("Generating Payslip [{0}/{1}].Employees", idx, _EmployeesList.Count);
                foreach (SelectListItem emp in _EmployeesList)
                {
                    //if (emp.ID == 8) // for debugging
                    //{
                    //    MessageBox.Show(emp.ID.ToString());
                    //}


                    EmployeePayslipModel model = (new ServiceEmployee()).GetEmployeePayslipModel(emp.ID, dtSalaryMonth.Value);
                    (new ServiceEmployee()).SaveEmployeePayslip(model);
                    headerGroupMain.ValuesSecondary.Heading = string.Format("Processed [{0}/{1}].\n{2}", idx++, _EmployeesList.Count, emp.Description);
                    Application.DoEvents();
                }
                gridActiveEmployees.DataSource = _EmployeesList;
                FormatEmployeeGrid();
                headerGroupMain.ValuesSecondary.Heading = string.Format("Select Employee to View/Modify Salary");
                Application.DoEvents();
            }
            catch (Exception ex)
            {
                string errMessage = ex.Message;
                if (ex.InnerException != null)
                {
                    errMessage += string.Format("\n{0}", ex.InnerException.Message);
                }
                MessageBox.Show(errMessage, "PageGeneratePayslips::btnGeneratePayslips_Click", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            this.Cursor = Cursors.Default;
        }
Ejemplo n.º 2
0
        public void RecalculateEmployeeSalaryHeads(EmployeePayslipModel model)
        {
            try
            {
                int basicSalaryHeadID = _dbContext.APP_DEFAULTS.Where(X => X.ID == (int)APP_DEFAULT_VALUES.BasicSalaryHeadID).FirstOrDefault().DEFAULT_VALUE;
                int daSalaryHeadID    = _dbContext.APP_DEFAULTS.Where(X => X.ID == (int)APP_DEFAULT_VALUES.daSalaryHeadID).FirstOrDefault().DEFAULT_VALUE;

                foreach (EmployeePayslipItemModel item in model.MonthlyAllounces)
                {
                    if (item.SalaryHeadID == basicSalaryHeadID)
                    {
                        item.SalaryHeadAmount = model.BasicSalaryApplied;
                    }

                    switch (item.ChargesType)
                    {
                    case ITEM_CHARGE_TYPE.LUMPSUM:
                        item.SalaryHeadAmount = item.SalaryHeadAmount;
                        break;

                    case ITEM_CHARGE_TYPE.PERCENTAGE:
                        if (item.HeadForCalculation == SalaryHeadCalculatedOn.PERCENT_OF_BASIC)
                        {
                            item.SalaryHeadAmount = (model.BasicSalaryApplied * item.SalaryHeadValue) / 100;
                        }
                        if (item.HeadForCalculation == SalaryHeadCalculatedOn.PERCENT_OF_GROSS)
                        {
                            item.SalaryHeadAmount = (model.GrossSalaryAmount * item.SalaryHeadValue) / 100;
                        }
                        if (item.HeadForCalculation == SalaryHeadCalculatedOn.PERCENT_OF_BASIC_AND_DA)
                        {
                            decimal daAmount = model.MonthlyAllounces.Where(x => x.SalaryHeadID == daSalaryHeadID).FirstOrDefault().SalaryHeadAmount;
                            item.SalaryHeadAmount = ((model.BasicSalaryApplied + daAmount) * item.SalaryHeadValue) / 100;
                        }
                        break;
                    }
                }
                foreach (EmployeePayslipItemModel item in model.MonthlyDeducations)
                {
                    if (item.SalaryHeadID == basicSalaryHeadID)
                    {
                        item.SalaryHeadAmount = model.BasicSalaryApplied;
                    }

                    switch (item.ChargesType)
                    {
                    case ITEM_CHARGE_TYPE.LUMPSUM:
                        item.SalaryHeadAmount = item.SalaryHeadValue;
                        break;

                    case ITEM_CHARGE_TYPE.PERCENTAGE:
                        if (item.HeadForCalculation == SalaryHeadCalculatedOn.PERCENT_OF_BASIC)
                        {
                            item.SalaryHeadAmount = (model.BasicSalaryApplied * item.SalaryHeadValue) / 100;
                        }
                        if (item.HeadForCalculation == SalaryHeadCalculatedOn.PERCENT_OF_GROSS)
                        {
                            item.SalaryHeadAmount = (model.GrossSalaryAmount * item.SalaryHeadValue) / 100;
                        }
                        if (item.HeadForCalculation == SalaryHeadCalculatedOn.PERCENT_OF_BASIC_AND_DA)
                        {
                            decimal daAmount = model.MonthlyAllounces.Where(x => x.SalaryHeadID == daSalaryHeadID).FirstOrDefault().SalaryHeadAmount;
                            item.SalaryHeadAmount = ((model.BasicSalaryApplied + daAmount) * item.SalaryHeadValue) / 100;
                        }
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                string errMessage = ex.Message;
                if (ex.InnerException != null)
                {
                    errMessage += string.Format("\n{0}", ex.InnerException.Message);
                }
                MessageBox.Show(errMessage, "ServicePayRoll::RecalculateEmployeeSalaryHeads", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Ejemplo n.º 3
0
        public DataTable GeneratePayrollDatatableForMonth(DateTime dateSalaryMonth)
        {
            // MONTH FORMAT -> JAN-2019
            DataTable dtMain      = new DataTable();
            string    strPayMonth = string.Format("{0}", dateSalaryMonth.ToString("MMM-yyyy")).ToUpper();

            try
            {
                #region PREPARE DATATABLE COLUMNS
                // ADD COLUMNS TO THE DATATABLE
                dtMain.Columns.Add(new DataColumn()
                {
                    ColumnName = payroll_col_PAYSLIP_ID, DataType = typeof(int), DefaultValue = 0
                });
                dtMain.Columns.Add(new DataColumn()
                {
                    ColumnName = payroll_col_EMP_ID, DataType = typeof(int), DefaultValue = 0
                });
                dtMain.Columns.Add(new DataColumn()
                {
                    ColumnName = payroll_col_EMP_CODE, DataType = typeof(int), DefaultValue = 0
                });
                dtMain.Columns.Add(new DataColumn()
                {
                    ColumnName = payroll_col_EMP_NAME, DataType = typeof(string), DefaultValue = 0
                });
                dtMain.Columns.Add(new DataColumn()
                {
                    ColumnName = payroll_col_TOT_DAYS, DataType = typeof(int), DefaultValue = 0
                });
                dtMain.Columns.Add(new DataColumn()
                {
                    ColumnName = payroll_col_PRESENT_DAYS, DataType = typeof(int), DefaultValue = 0
                });
                dtMain.Columns.Add(new DataColumn()
                {
                    ColumnName = payroll_col_ABSENT_DAYS, DataType = typeof(int), DefaultValue = 0
                });
                dtMain.Columns.Add(new DataColumn()
                {
                    ColumnName = payroll_col_PAID_HOLIDAYS, DataType = typeof(int), DefaultValue = 0
                });
                dtMain.Columns.Add(new DataColumn()
                {
                    ColumnName = payroll_col_WEEKLY_OFF, DataType = typeof(int), DefaultValue = 0
                });
                dtMain.Columns.Add(new DataColumn()
                {
                    ColumnName = payroll_col_LEAVES, DataType = typeof(int), DefaultValue = 0
                });
                dtMain.Columns.Add(new DataColumn()
                {
                    ColumnName = payroll_col_PAID_DAYS, DataType = typeof(int), DefaultValue = 0
                });
                dtMain.Columns.Add(new DataColumn()
                {
                    ColumnName = payroll_col_TOT_EARNINGS, DataType = typeof(decimal), DefaultValue = 0
                });
                dtMain.Columns.Add(new DataColumn()
                {
                    ColumnName = payroll_col_TOT_DEDUCTIONS, DataType = typeof(decimal), DefaultValue = 0
                });
                dtMain.Columns.Add(new DataColumn()
                {
                    ColumnName = payroll_col_GROSS_SALARY, DataType = typeof(decimal), DefaultValue = 0
                });
                dtMain.Columns.Add(new DataColumn()
                {
                    ColumnName = payroll_col_NET_SALARY, DataType = typeof(decimal), DefaultValue = 0
                });
                dtMain.Columns.Add(new DataColumn()
                {
                    ColumnName = payroll_col_IS_APPROVED, DataType = typeof(bool), DefaultValue = 0
                });

                int stIndex = dtMain.Columns[payroll_col_TOT_EARNINGS].Ordinal;
                // ADDEND COLUMNS OF EARNING TYPE
                int ALLOUNCE_CATAGAORY_ID          = _dbContext.APP_DEFAULTS.Where(X => X.ID == (int)APP_DEFAULT_VALUES.SalaryHeadEARNINGType).FirstOrDefault().DEFAULT_VALUE;
                List <SelectListItem> lstAllounces = (new ServiceSalaryHead()).GetSelectListItemSalaryHeadsofType(ALLOUNCE_CATAGAORY_ID);
                foreach (SelectListItem item in lstAllounces)
                {
                    dtMain.Columns.Add(new DataColumn()
                    {
                        ColumnName = string.Format("{0}", item.Description), DataType = typeof(decimal), DefaultValue = false
                    });
                    dtMain.Columns[item.Description].SetOrdinal(stIndex++);
                }
                dtMain.Columns[payroll_col_TOT_EARNINGS].SetOrdinal(stIndex++);
                // ADDEND COLUMNS OF DEDUCTION TYPE
                stIndex = dtMain.Columns[payroll_col_TOT_DEDUCTIONS].Ordinal;
                int DEDUCTION_CATAGAORY_ID          = _dbContext.APP_DEFAULTS.Where(X => X.ID == (int)APP_DEFAULT_VALUES.SalaryHeadDEDUCTIONType).FirstOrDefault().DEFAULT_VALUE;
                List <SelectListItem> lstDeductions = (new ServiceSalaryHead()).GetSelectListItemSalaryHeadsofType(DEDUCTION_CATAGAORY_ID);
                foreach (SelectListItem item in lstDeductions)
                {
                    dtMain.Columns.Add(new DataColumn()
                    {
                        ColumnName = item.Description, DataType = typeof(decimal), DefaultValue = false
                    });
                    dtMain.Columns[item.Description].SetOrdinal(stIndex++);
                }
                dtMain.Columns[payroll_col_TOT_DEDUCTIONS].SetOrdinal(stIndex++);
                dtMain.Columns[payroll_col_GROSS_SALARY].SetOrdinal(stIndex++);
                dtMain.Columns[payroll_col_NET_SALARY].SetOrdinal(stIndex++);
                #endregion

                List <TBL_MP_HR_PayslipMaster> lstPayroll = _dbContext.TBL_MP_HR_PayslipMaster.Where(x => x.PayslipMonth == strPayMonth).ToList();
                foreach (TBL_MP_HR_PayslipMaster item in lstPayroll)
                {
                    DataRow dtrow = dtMain.NewRow();
                    dtrow[payroll_col_PAYSLIP_ID]  = item.PayslipID;
                    dtrow[payroll_col_EMP_ID]      = item.FK_EmployeeID;
                    dtrow[payroll_col_EMP_NAME]    = _dbContext.vEMPLOYEE_DESCRIPTION.Where(x => x.PK_EmployeeId == item.FK_EmployeeID).FirstOrDefault().EmployeeDescription;
                    dtrow[payroll_col_IS_APPROVED] = item.IsApproved;
                    #region POPULATE DATABALE BY GETTING ATTENDANCE INFO
                    EmployeeAttendanceSummaryModel attendance = (new ServiceAttendance()).GetAttendanceSummaryOfEmployeeForMonth(item.FK_EmployeeID, dateSalaryMonth);
                    if (attendance != null)
                    {
                        dtrow[payroll_col_TOT_DAYS]      = attendance.TotalDays.Days;
                        dtrow[payroll_col_PRESENT_DAYS]  = attendance.Present.Days;
                        dtrow[payroll_col_ABSENT_DAYS]   = attendance.Absent.Days;
                        dtrow[payroll_col_PAID_DAYS]     = attendance.PaidDays.Days;
                        dtrow[payroll_col_PAID_HOLIDAYS] = attendance.NonWorkingDays.Days;
                        //dtrow[payroll_col_WEEKLY_OFF] = attendance.Present;
                        dtrow[payroll_col_LEAVES] = attendance.TotalLeaves;
                    }
                    #endregion
                    #region POPULATE DATATABLE WITH ALLOUNCES & DEDUCTIONS
                    EmployeePayslipModel SALARY = (new ServiceEmployee()).GetEmployeePayslipModel(item.FK_EmployeeID, dateSalaryMonth);
                    if (SALARY != null)
                    {
                        foreach (EmployeePayslipItemModel payslipItem in SALARY.MonthlyAllounces)
                        {
                            dtrow[payslipItem.SalaryHeadName] = payslipItem.SalaryHeadAmount;
                        }
                        foreach (EmployeePayslipItemModel payslipItem in SALARY.MonthlyDeducations)
                        {
                            dtrow[payslipItem.SalaryHeadName] = payslipItem.SalaryHeadAmount;
                        }

                        dtrow[payroll_col_TOT_EARNINGS]   = SALARY.StandardAllouncesAmount + SALARY.AdditionalAllouncesAmount;
                        dtrow[payroll_col_TOT_DEDUCTIONS] = SALARY.StandardDeducationAmount + SALARY.AdditionalDeducationAmount;
                        dtrow[payroll_col_GROSS_SALARY]   = SALARY.GrossSalaryAmount;
                        dtrow[payroll_col_NET_SALARY]     = SALARY.NetSalaryAmount;
                    }



                    #endregion
                    dtMain.Rows.Add(dtrow);
                }
            }
            catch (Exception ex)
            {
                string errMessage = ex.Message;
                if (ex.InnerException != null)
                {
                    errMessage += string.Format("\n{0}", ex.InnerException.Message);
                }
                MessageBox.Show(errMessage, "ServicePayRoll::GeneratePayrollDatatableForMonth", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            return(dtMain);
        }