コード例 #1
0
    protected void btnConfirm_Click(object sender, EventArgs e)
    {
        PageErrors errors = PageErrors.getErrors(db, Page.Master);

        errors.clear();

        if (CurID > 0)
        {
            ESalaryIncrementBatch m_process = ESalaryIncrementBatch.GetObject(dbConn, CurID);

            if (m_process.Status == ESalaryIncrementBatch.STATUS_OPEN) // not Confirmed/Applied
            {
                DBFilter m_filterByBatchID = new DBFilter();
                m_filterByBatchID.add(new Match("BatchID", m_process.BatchID));
                m_filterByBatchID.add("EmpID", true);

                try
                {
                    WebUtils.StartFunction(Session, FUNCTION_CODE, true);
                    dbConn.BeginTransaction();
                    foreach (ESalaryIncrementBatchDetail d in ESalaryIncrementBatchDetail.db.select(dbConn, m_filterByBatchID))
                    {
                        if (d.CurrentPoint != d.NewPoint)
                        {
                            DBFilter m_cpFilter = new DBFilter();
                            m_cpFilter.add(new NullTerm("EmpRPEffTo"));
                            m_cpFilter.add(new Match("EmpID", d.EmpID));
                            m_cpFilter.add(new Match("SchemeCode", AppUtils.Encode(EEmpRecurringPayment.db.getField("SchemeCode"), d.SchemeCode)));
                            m_cpFilter.add(new Match("Capacity", AppUtils.Encode(EEmpRecurringPayment.db.getField("Capacity"), d.Capacity)));
                            m_cpFilter.add(new Match("Point", d.CurrentPoint));

                            DBFilter m_payTypeCodeFilter = new DBFilter();
                            m_payTypeCodeFilter.add(new Match("PaymentTypeCode", "BASICSAL"));

                            DBFilter m_payTypeFilter = new DBFilter();
                            m_payTypeFilter.add(new IN("PaymentTypeID", "SELECT PaymentTypeID FROM PaymentType", m_payTypeCodeFilter));
                            m_cpFilter.add(new IN("PayCodeID", "SELECT PaymentCodeID FROM PaymentCode", m_payTypeFilter));

                            foreach (EEmpRecurringPayment m_cp in EEmpRecurringPayment.db.select(dbConn, m_cpFilter))
                            {
                                DBFilter m_payScaleFilter = new DBFilter();

                                m_payScaleFilter.add(new Match("SchemeCode", AppUtils.Encode(EEmpRecurringPayment.db.getField("SchemeCode"), d.SchemeCode)));
                                m_payScaleFilter.add(new Match("EffectiveDate", "<=", m_process.AsAtDate));

                                OR m_orDate = new OR();
                                m_orDate.add(new Match("ExpiryDate", ">=", m_process.AsAtDate));
                                m_orDate.add(new NullTerm("ExpiryDate"));

                                m_payScaleFilter.add(m_orDate);
                                m_payScaleFilter.add(new Match("Point", d.NewPoint));

                                ArrayList m_payScaleMapList = EPayScaleMap.db.select(dbConn, m_payScaleFilter);
                                if (m_payScaleMapList.Count > 0)
                                {
                                    EEmpRecurringPayment m_newCp = new EEmpRecurringPayment();

                                    m_newCp.EmpRPAmount = System.Convert.ToDouble(((EPayScaleMap)m_payScaleMapList[0]).Salary);
                                    m_newCp.EmpRPAmount = Math.Round(m_newCp.EmpRPAmount, 2);
                                    m_newCp.EmpRPEffFr  = m_process.AsAtDate;
                                    m_newCp.Point       = d.NewPoint;

                                    //m_newCp.EmpRPEffTo = m_cp.EmpRPEffTo;
                                    m_newCp.Capacity                        = m_cp.Capacity;
                                    m_newCp.CostCenterID                    = m_cp.CostCenterID;
                                    m_newCp.CurrencyID                      = m_cp.CurrencyID;
                                    m_newCp.EmpAccID                        = m_cp.EmpAccID;
                                    m_newCp.EmpID                           = m_cp.EmpID;
                                    m_newCp.EmpRPID                         = m_cp.EmpRPID;
                                    m_newCp.EmpRPIsNonPayrollItem           = m_cp.EmpRPIsNonPayrollItem;
                                    m_newCp.EmpRPMethod                     = m_cp.EmpRPMethod;
                                    m_newCp.EmpRPRemark                     = m_cp.EmpRPRemark;
                                    m_newCp.EmpRPUnit                       = m_cp.EmpRPUnit;
                                    m_newCp.EmpRPUnitPeriodAsDaily          = m_cp.EmpRPUnitPeriodAsDaily;
                                    m_newCp.EmpRPUnitPeriodAsDailyPayFormID = m_cp.EmpRPUnitPeriodAsDailyPayFormID;
                                    m_newCp.PayCodeID                       = m_cp.PayCodeID;
                                    m_newCp.SchemeCode                      = m_cp.SchemeCode;

                                    m_cp.EmpRPEffTo = m_process.AsAtDate.AddDays(-1);
                                    if (EEmpRecurringPayment.db.update(dbConn, m_cp))
                                    {
                                        EEmpRecurringPayment.db.insert(dbConn, m_newCp);
                                    }
                                }
                                else
                                {
                                    errors.addError(string.Format("Cannot map salary setting (Scheme Code={0}, Capacity={1}, Point={2})", new string[] { d.SchemeCode, d.Capacity, d.NewPoint.ToString("0.00") }));
                                    dbConn.RollbackTransaction();
                                    WebUtils.EndFunction(dbConn);
                                    return;
                                }
                            }
                        }
                        EEmpPersonalInfo m_empInfo = EEmpPersonalInfo.GetObject(dbConn, d.EmpID);
                        if (m_empInfo.EmpNextSalaryIncrementDate == m_process.AsAtDate)
                        {
                            m_empInfo.EmpNextSalaryIncrementDate = m_process.AsAtDate.AddYears(1);
                            EEmpPersonalInfo.db.update(dbConn, m_empInfo);
                        }
                    }

                    m_process.Status          = ESalaryIncrementBatch.STATUS_CONFIRMED;
                    m_process.ConfirmDateTime = AppUtils.ServerDateTime();
                    m_process.ConfirmBy       = WebUtils.GetCurUser(Session).UserID;

                    ESalaryIncrementBatch.db.update(dbConn, m_process);

                    //errors.addError("Salary Increment Batch confirmed!");

                    dbConn.CommitTransaction();
                    WebUtils.EndFunction(dbConn);
                }
                catch (Exception ex)
                {
                    dbConn.RollbackTransaction();
                    errors.addError(ex.Message);
                    WebUtils.EndFunction(dbConn);
                    return;
                }
                if (errors.isEmpty())
                {
                    string m_message = "Salary Increment Batch confirmed!";
                    string m_url     = "Payroll_SalaryIncrementBatch_View.aspx?BatchID=" + CurID;

                    WebUtils.RegisterRedirectJavaScript(this, m_url, HROne.Common.WebUtility.GetLocalizedString(m_message));
                }
            }
            else
            {
                errors.addError("Batch is confirmed.");
            }
        }
    }
コード例 #2
0
    protected DataView loadData(ListInfo info, DBManager db, Repeater repeater)
    {
        DBFilter filter = detailBinding.createFilter();

        if (info != null && info.orderby != null && !info.orderby.Equals(""))
        {
            filter.add(info.orderby, info.order);
        }
        else
        {
            filter.add("emp.EmpNo", true);
        }

        filter.add(new Match("d.BatchID", CurID));

        //filter.add(WebUtils.AddRankFilter(Session, "e.EmpID", true));

        /****************************************************************************
        * SELECT d.BatchID, d.DetailID, emp.EmpNo, emp.EmpEngSurname, emp.EmpEngOthername, emp.EmpAlias, d.SchemeCode, d.Capacity, d.CurrentPoint, d.NewPoint
        * FROM [PS_SalaryIncrementBatchDetail] AS d
        * INNER JOIN [EmpPersonalInfo] AS emp ON d.EmpID = emp.EmpID
        ****************************************************************************/

        string select = "d.BatchID, d.DetailID, emp.EmpID, emp.EmpNo, emp.EmpEngSurname, emp.EmpEngOthername, emp.EmpAlias, d.SchemeCode, d.Capacity, d.CurrentPoint, d.NewPoint ";
        string from   = "FROM [PS_SalaryIncrementBatchDetail] AS d " +
                        "INNER JOIN [EmpPersonalInfo] AS emp ON d.EmpID = emp.EmpID ";

        DataTable table = filter.loadData(dbConn, null, select, from);

        foreach (DataColumn col in table.Columns)
        {
            if (col.DataType.Equals(typeof(string)))
            {
                DBAESEncryptStringFieldAttribute.decode(table, col.ColumnName);
            }
        }

        //table = EmployeeSearchControl1.FilterEncryptedEmpInfoField(table, info);
        view = new DataView(table);

        ListFooter.Refresh();
        if (repeater != null)
        {
            repeater.DataSource = view;
            repeater.DataBind();
        }

        // get BackpayProcess
        ESalaryIncrementBatch m_process = ESalaryIncrementBatch.GetObject(dbConn, CurID);

        if (m_process != null)
        {
            EUser m_user;
            int   m_id;

            UploadBy.Text  = "";
            ConfirmBy.Text = "";
            if (m_process.UploadBy > 0)
            {
                m_user = EUser.GetObject(dbConn, m_process.UploadBy);
                if (m_user != null)
                {
                    UploadBy.Text = m_user.UserName;
                }
            }
            if (m_process.ConfirmBy > 0)
            {
                m_user = EUser.GetObject(dbConn, m_process.ConfirmBy);
                if (m_user != null)
                {
                    ConfirmBy.Text = m_user.UserName;
                }
            }
        }
        return(view);
    }
コード例 #3
0
    protected DataSet GenerateCND(int ProcessID, int PaymentCodeID, DateTime PaymentDate)
    {
        DateTime m_paymentDate = new DateTime();
        string   m_paymentCode = "";

        ESalaryIncrementBatch m_process = ESalaryIncrementBatch.GetObject(dbConn, ProcessID);

        DataSet   dataSet   = new DataSet();//export.GetDataSet();
        DataTable dataTable = new DataTable("ClaimsAndDeduction$");

        dataSet.Tables.Add(dataTable);

        dataTable.Columns.Add(HROne.Import.ImportClaimsAndDeductionsProcess.FIELD_EMP_NO, typeof(string));
        dataTable.Columns.Add("English Name", typeof(string));
        dataTable.Columns.Add(HROne.Import.ImportClaimsAndDeductionsProcess.FIELD_EFFECTIVE_DATE, typeof(DateTime));
        dataTable.Columns.Add(HROne.Import.ImportClaimsAndDeductionsProcess.FIELD_PAYMENT_CODE, typeof(string));
        dataTable.Columns.Add(HROne.Import.ImportClaimsAndDeductionsProcess.FIELD_PAYMENT_METHOD, typeof(string));
        dataTable.Columns.Add(HROne.Import.ImportClaimsAndDeductionsProcess.FIELD_BANK_ACCOUNT_NO, typeof(string));
        dataTable.Columns.Add(HROne.Import.ImportClaimsAndDeductionsProcess.FIELD_AMOUNT, typeof(double));
        dataTable.Columns.Add(HROne.Import.ImportClaimsAndDeductionsProcess.FIELD_NUM_OF_DAY_ADJUST, typeof(double));
        dataTable.Columns.Add(HROne.Import.ImportClaimsAndDeductionsProcess.FIELD_REST_PAYMENT, typeof(string));
        dataTable.Columns.Add(HROne.Import.ImportClaimsAndDeductionsProcess.FIELD_REMARK, typeof(string));
        dataTable.Columns.Add(HROne.Import.ImportClaimsAndDeductionsProcess.FIELD_COST_CENTER, typeof(string));

        DBFilter m_detailFilter = new DBFilter();

        m_detailFilter.add(new Match("BatchID", m_process.BatchID));
        m_detailFilter.add("DetailID", true);

        foreach (ESalaryIncrementBatchDetail m_detail in ESalaryIncrementBatchDetail.db.select(dbConn, m_detailFilter))
        {
            DBFilter m_rpFilter = new DBFilter();
            m_rpFilter.add(new Match("EmpRPID", m_detail.EmpRPID));
            //m_rpFilter.add(new IN("EmpRPID", "SELECT EmpRPID FROM PS_SalaryIncrementBatchDetail ", m_detailFilter));
            foreach (EEmpRecurringPayment m_empRP in EEmpRecurringPayment.db.select(dbConn, m_rpFilter))
            {
                DBFilter m_mapFilter = new DBFilter();
                m_mapFilter.add(new Match("SchemeCode", AppUtils.Encode(EPayScaleMap.db.getField("SchemeCode"), m_empRP.SchemeCode)));
                m_mapFilter.add(new Match("Point", m_detail.NewPoint));
                m_mapFilter.add(new NullTerm("ExpiryDate"));

                foreach (EPayScaleMap m_map in EPayScaleMap.db.select(dbConn, m_mapFilter))
                {
                    decimal m_newSalary = m_map.Salary;
                    string  m_remarks   = "";
                    double  m_amount    = System.Convert.ToDouble(m_newSalary) - m_empRP.EmpRPAmount;

                    if (Math.Abs(m_amount) > 0.01)
                    {
                        m_remarks = String.Format("Backpay {0}: {1}-{2}.", m_process.AsAtDate.ToString("yyyy-MM"),
                                                  m_newSalary.ToString("#,##0.00"),
                                                  m_empRP.EmpRPAmount.ToString("#,##0.00"));

                        EEmpPersonalInfo m_empInfo = new EEmpPersonalInfo();
                        m_empInfo.EmpID = m_empRP.EmpID;
                        EEmpPersonalInfo.db.select(dbConn, m_empInfo);

                        DataRow m_row = dataTable.NewRow();
                        m_row[HROne.Import.ImportClaimsAndDeductionsProcess.FIELD_EMP_NO] = m_empInfo.EmpNo;
                        m_row["English Name"] = m_empInfo.EmpEngFullName;
                        m_row[HROne.Import.ImportClaimsAndDeductionsProcess.FIELD_EFFECTIVE_DATE] = m_paymentDate;
                        m_row[HROne.Import.ImportClaimsAndDeductionsProcess.FIELD_PAYMENT_CODE]   = m_paymentCode;
                        switch (m_empRP.EmpRPMethod)
                        {
                        case "A":
                            m_row[HROne.Import.ImportClaimsAndDeductionsProcess.FIELD_PAYMENT_METHOD] = "Autopay";
                            break;

                        case "Q":
                            m_row[HROne.Import.ImportClaimsAndDeductionsProcess.FIELD_PAYMENT_METHOD] = "Cheque";
                            break;

                        case "C":
                            m_row[HROne.Import.ImportClaimsAndDeductionsProcess.FIELD_PAYMENT_METHOD] = "Cash";
                            break;

                        default:
                            m_row[HROne.Import.ImportClaimsAndDeductionsProcess.FIELD_PAYMENT_METHOD] = "Other";
                            break;
                        }
                        m_row[HROne.Import.ImportClaimsAndDeductionsProcess.FIELD_AMOUNT]            = Math.Round(m_amount, 2);
                        m_row[HROne.Import.ImportClaimsAndDeductionsProcess.FIELD_NUM_OF_DAY_ADJUST] = 0; //DateTime.DaysInMonth(m_process.AsAtDate);
                        m_row[HROne.Import.ImportClaimsAndDeductionsProcess.FIELD_REST_PAYMENT]      = "No";
                        m_row[HROne.Import.ImportClaimsAndDeductionsProcess.FIELD_REMARK]            = m_remarks;

                        EEmpBankAccount m_bank = new EEmpBankAccount();
                        m_bank.EmpBankAccountID = m_empRP.EmpAccID;
                        if (EEmpBankAccount.db.select(dbConn, m_bank))
                        {
                            m_row[HROne.Import.ImportClaimsAndDeductionsProcess.FIELD_BANK_ACCOUNT_NO] = m_bank.EmpAccountNo;
                        }

                        ECostCenter m_costCenter = new ECostCenter();
                        m_costCenter.CostCenterID = m_empRP.CostCenterID;
                        if (ECostCenter.db.select(dbConn, m_costCenter))
                        {
                            m_row[HROne.Import.ImportClaimsAndDeductionsProcess.FIELD_COST_CENTER] = m_costCenter.CostCenterCode;
                        }
                        dataTable.Rows.Add(m_row);
                    }
                }
            }
        }
        return(dataSet);
    }
コード例 #4
0
        public override DataTable UploadToTempDatabase(string Filename, int UserID, string ZipPassword)
        {
            ESalaryIncrementBatch m_processHeader = ESalaryIncrementBatch.GetObject(dbConn, m_processID);

            if (m_processHeader == null)
            {
                errors.addError("Salary Increment Batch ID is not initialized!", new string[] { "" });
                return(null);
            }

            DataTable rawDataTable = HROne.Import.ExcelImport.parse(Filename, ZipPassword).Tables[0];
            ArrayList results      = new ArrayList();
            int       rowCount     = 0;
            string    m_errorMessage;
            string    m_colName;

            foreach (DataRow row in rawDataTable.Rows)
            {
                rowCount++;
                if (!ValidateInputData(row, out m_errorMessage, out m_colName))
                {
                    errors.addError(m_errorMessage, new string[] { rowCount.ToString("0"), m_colName });
                }
                else
                {
                    ESalaryIncrementBatchDetail m_upload = Transform(row, UserID);  // m_util.Transform(row);
                    m_upload.BatchID = m_processID;

                    // check batch detail existenc
                    DBFilter m_existingRecordFilter = new DBFilter();
                    m_existingRecordFilter.add(new Match("BatchID", m_processID));
                    m_existingRecordFilter.add(new Match("EmpID", m_upload.EmpID));
                    m_existingRecordFilter.add(new Match("SchemeCode", AppUtils.Encode(ESalaryIncrementBatchDetail.db.getField("SchemeCode"), m_upload.SchemeCode)));
                    m_existingRecordFilter.add(new Match("Capacity", AppUtils.Encode(ESalaryIncrementBatchDetail.db.getField("Capacity"), m_upload.Capacity)));
                    m_existingRecordFilter.add(new Match("CurrentPoint", m_upload.CurrentPoint));

                    ArrayList m_existingRecordList = ESalaryIncrementBatchDetail.db.select(dbConn, m_existingRecordFilter);

                    if (m_existingRecordList.Count > 0)
                    {
                        if (!ValidateBusinessRule(m_upload, out m_errorMessage))
                        {
                            errors.addError(m_errorMessage + "(row#={0})", new string[] { rowCount.ToString("0") });
                        }
                        else
                        {
                            ESalaryIncrementBatchDetail m_currentRecord = (ESalaryIncrementBatchDetail)m_existingRecordList[0];

                            m_currentRecord.NewPoint = m_upload.NewPoint;

                            ESalaryIncrementBatchDetail.db.update(dbConn, m_currentRecord);
                        }
                    }
                    else
                    {
                        errors.addError("Cannot find record from batch. (Row# : {0})", new string[] { rowCount.ToString("0") });
                    }
                }
            }
            if (errors.List.Count <= 0)
            {
                // update process header
                m_processHeader.Status         = ESalaryIncrementBatch.STATUS_OPEN;
                m_processHeader.UploadDateTime = AppUtils.ServerDateTime();
                m_processHeader.UploadBy       = UserID;
                ESalaryIncrementBatch.db.update(dbConn, m_processHeader);
            }

            return(rawDataTable);
        }