예제 #1
0
        public void GenerateStandardBonusData(ArrayList pEmpList)
        {
            //double m_targetSalary = 0;
            EBonusProcess m_bonusProcess = EBonusProcess.GetObject(dbConn, m_BonusProcessID);

            if (m_bonusProcess != null)
            {
                foreach (EEmpPersonalInfo empInfo in pEmpList)
                {
                    if (EEmpPersonalInfo.db.select(dbConn, empInfo) && empInfo.EmpProbaLastDate <= m_bonusProcess.BonusProcessPeriodTo)
                    {
                        EEmpRecurringPayment m_recurringPayment = GetSalaryMonthRecurringPayment(empInfo.EmpID, m_bonusProcess.BonusProcessSalaryMonth);
                        if (m_recurringPayment != null)
                        {
                            EEmpBonusProcess m_empBonusProcess = new EEmpBonusProcess();
                            m_empBonusProcess.BonusProcessID = m_BonusProcessID;
                            m_empBonusProcess.EmpID          = empInfo.EmpID;
                            m_empBonusProcess.EmpBonusProcessTargetSalary = m_recurringPayment.EmpRPBasicSalary;

                            System.TimeSpan m_totalDaysInPeriod = m_bonusProcess.BonusProcessPeriodTo.Subtract(m_bonusProcess.BonusProcessPeriodFr);
                            System.TimeSpan m_totalDaysJoint    = m_bonusProcess.BonusProcessPeriodTo.Subtract((empInfo.EmpDateOfJoin < m_bonusProcess.BonusProcessPeriodFr) ? m_bonusProcess.BonusProcessPeriodFr : empInfo.EmpDateOfJoin);

                            m_empBonusProcess.EmpBonusProcessBonusProportion = Math.Round(Convert.ToDouble(m_totalDaysJoint.Days + 1) / Convert.ToDouble(m_totalDaysInPeriod.Days + 1), 4);
                            m_empBonusProcess.EmpBonusProcessType            = "S";
                            m_empBonusProcess.EmpBonusProcessBonusAmount     = Math.Round(m_recurringPayment.EmpRPBasicSalary *
                                                                                          m_empBonusProcess.EmpBonusProcessBonusProportion *
                                                                                          m_bonusProcess.BonusProcessStdRate, 2);

                            EEmpBonusProcess.db.insert(dbConn, m_empBonusProcess);
                        }
                    }
                }
            }
        }
예제 #2
0
        public void ImportStandardEmpBonusProcess(int pBonussProcessID, DataTable pRawDataTable, PageErrors pErrors)
        {
            if (!pRawDataTable.Columns.Contains(FIELD_EMP_NO) ||
                !pRawDataTable.Columns.Contains(FIELD_BONUS_AMOUNT) ||
                !pRawDataTable.Columns.Contains(FIELD_TARGET_SALARY) ||
                !pRawDataTable.Columns.Contains(FIELD_STD_RATE))
            {
                pErrors.addError("Invalid file selected");
                return;
            }


            int    m_uploadedCount = 0;
            int    m_skippedCount  = 0;
            int    m_empID         = 0;
            double m_bonusAmount   = 0;
            double m_targetSalary  = 0;
            string m_empNo         = "";
            bool   m_dbUpdated     = false;

            foreach (DataRow m_row in pRawDataTable.Rows)
            {
                m_empNo = m_row[FIELD_EMP_NO].ToString();

                if (!string.IsNullOrEmpty(m_empNo))
                {
                    if (double.TryParse(m_row[FIELD_BONUS_AMOUNT].ToString(), out m_bonusAmount) &&
                        double.TryParse(m_row[FIELD_TARGET_SALARY].ToString(), out m_targetSalary))
                    {
                        m_empID = Parse.GetEmpID(dbConn, m_empNo, m_UserID);
                        if (m_empID > 0)
                        {
                            // check if the empID exists in the current EmpBonusProcess
                            DBFilter m_filter = new DBFilter();
                            m_filter.add(new Match("BonusProcessID", m_BonusProcessID));
                            m_filter.add(new Match("EmpID", m_empID));
                            m_filter.add(new Match("EmpBonusProcessType", "S"));
                            ArrayList m_list = EEmpBonusProcess.db.select(dbConn, m_filter);
                            if (m_list.Count > 0)
                            {
                                EEmpBonusProcess m_empBonusProcess = (EEmpBonusProcess)m_list[0];

                                if (m_bonusAmount <= 0)
                                {
                                    m_dbUpdated = EEmpBonusProcess.db.delete(dbConn, m_empBonusProcess);
                                }
                                else
                                {
                                    m_empBonusProcess.EmpBonusProcessTargetSalary = m_targetSalary;
                                    m_empBonusProcess.EmpBonusProcessBonusAmount  = m_bonusAmount;
                                    m_dbUpdated = EEmpBonusProcess.db.update(dbConn, m_empBonusProcess);
                                }
                            }
                            else
                            {
                                // add new
                                if (m_bonusAmount > 0)
                                {
                                    EEmpBonusProcess m_newEmpBonusProcess = new EEmpBonusProcess();
                                    m_newEmpBonusProcess.EmpID                       = m_empID;
                                    m_newEmpBonusProcess.BonusProcessID              = m_BonusProcessID;
                                    m_newEmpBonusProcess.EmpBonusProcessType         = "S";
                                    m_newEmpBonusProcess.EmpBonusProcessTargetSalary = m_targetSalary;
                                    m_newEmpBonusProcess.EmpBonusProcessBonusAmount  = m_bonusAmount;

                                    m_dbUpdated = EEmpBonusProcess.db.insert(dbConn, m_newEmpBonusProcess);
                                }
                                else
                                {
                                    m_dbUpdated = false;
                                }
                            }

                            if (m_dbUpdated)
                            {
                                m_uploadedCount++;
                            }
                            else
                            {
                                pErrors.addError("DB update failed. (Employee No.=" + m_empNo + ")");
                                m_skippedCount++;
                            }
                        }
                        else
                        {
                            pErrors.addError("You are not authorized to handle specified employee (Employee No=" + m_empNo + ")");
                        }
                    }
                    else
                    {
                        m_skippedCount++;
                        pErrors.addError("Employee Target Salary/Bonus Amount is not available (Employee No=" + m_empNo + ")");
                    }
                }
            }
        }