Пример #1
0
    protected void Delete_Click(object sender, EventArgs e)
    {
        ArrayList list = new ArrayList();

        foreach (DataListItem item in Repeater.Items)
        {
            CheckBox        c = (CheckBox)item.FindControl("DeleteItem");
            HtmlInputHidden h = (HtmlInputHidden)item.FindControl("PayScaleID");
            if (c.Checked)
            {
                EPayScale obj = new EPayScale();
                obj.PayScaleID = Int32.Parse(h.Value);
                list.Add(obj);
            }
        }
        foreach (EPayScale obj in list)
        {
            if (EPayScale.db.select(dbConn, obj))
            {
                WebUtils.StartFunction(Session, FUNCTION_CODE);
                db.delete(dbConn, obj);
                WebUtils.EndFunction(dbConn);
            }
        }
        view = loadData(info, db, Repeater);
        //Response.Redirect(Request.Url.LocalPath);
    }
Пример #2
0
    protected void Repeater_ItemDataBound(object sender, DataListItemEventArgs e)
    {
        HROne.Common.WebUtility.WebControlsLocalization(Session, e.Item.Controls);

        e.Item.FindControl("DeleteItem").Visible = IsAllowEdit;
        if (e.Item.ItemIndex == Repeater.EditItemIndex)
        {
            ebinding = new Binding(dbConn, db);
            ebinding.add((HtmlInputHidden)e.Item.FindControl("PayScaleID"));
            ebinding.add((TextBox)e.Item.FindControl("SchemeCode"));
            ebinding.add((TextBox)e.Item.FindControl("Capacity"));
            ebinding.add((TextBox)e.Item.FindControl("FirstPoint"));
            ebinding.add((TextBox)e.Item.FindControl("MidPoint"));
            ebinding.add((TextBox)e.Item.FindControl("LastPoint"));
            ebinding.init(Request, Session);


            EPayScale obj = new EPayScale();
            db.toObject(((DataRowView)e.Item.DataItem).Row, obj);
            Hashtable values = new Hashtable();
            db.populate(obj, values);
            ebinding.toControl(values);
        }
        else
        {
            e.Item.FindControl("Edit").Visible = IsAllowEdit;
            HtmlInputHidden h = (HtmlInputHidden)e.Item.FindControl("PayScaleID");
            h.Value = ((DataRowView)e.Item.DataItem)["PayScaleID"].ToString();
        }
    }
Пример #3
0
    protected void Repeater_ItemCommand(object source, DataListCommandEventArgs e)
    {
        Button b = (Button)e.CommandSource;

        if (b.ID.Equals("Edit"))
        {
            Repeater.EditItemIndex = e.Item.ItemIndex;
            view = loadData(info, db, Repeater);
            WebUtils.SetEnabledControlSection(AddPanel, false);
        }
        else if (b.ID.Equals("Cancel"))
        {
            Repeater.EditItemIndex = -1;
            view = loadData(info, db, Repeater);
            WebUtils.SetEnabledControlSection(AddPanel, true);
        }
        else if (b.ID.Equals("Save"))
        {
            ebinding = new Binding(dbConn, db);
            ebinding.add((HtmlInputHidden)e.Item.FindControl("PayScaleID"));
            //ebinding.add(new TextBoxBinder(db, ((WebDatePicker)e.Item.FindControl("StatutoryHolidayDate")).TextBox, "StatutoryHolidayDate"));
            ebinding.add((TextBox)e.Item.FindControl("SchemeCode"));
            ebinding.add((TextBox)e.Item.FindControl("Capacity"));
            ebinding.add((TextBox)e.Item.FindControl("FirstPoint"));
            ebinding.add((TextBox)e.Item.FindControl("MidPoint"));
            ebinding.add((TextBox)e.Item.FindControl("LastPoint"));
            ebinding.init(Request, Session);


            EPayScale obj    = new EPayScale();
            Hashtable values = new Hashtable();

            PageErrors errors = PageErrors.getErrors(db, Page.Master);
            errors.clear();


            ebinding.toValues(values);
            db.validate(errors, values);

            if (!errors.isEmpty())
            {
                return;
            }

            db.parse(values, obj);
            //if (!AppUtils.checkDuplicate(dbConn, db, obj, errors, "PayScaleID"))
            //    return;

            WebUtils.StartFunction(Session, FUNCTION_CODE);
            db.update(dbConn, obj);
            WebUtils.EndFunction(dbConn);

            Repeater.EditItemIndex = -1;
            view = loadData(info, db, Repeater);
            WebUtils.SetEnabledControlSection(AddPanel, true);
        }
    }
Пример #4
0
    protected void Add_Click(object sender, EventArgs e)
    {
        Repeater.EditItemIndex = -1;
        EPayScale c = new EPayScale();

        Hashtable values = new Hashtable();

        binding.toValues(values);

        PageErrors errors = PageErrors.getErrors(db, Page.Master);

        errors.clear();


        db.validate(errors, values);

        if (!errors.isEmpty())
        {
            return;
        }


        db.parse(values, c);

        AND andFilterTerm = new AND();

        andFilterTerm.add(new Match("SchemeCode", AppUtils.Encode(EPayScale.db.getField("SchemeCode"), c.SchemeCode)));
        andFilterTerm.add(new Match("Capacity", AppUtils.Encode(EPayScale.db.getField("Capacity"), c.Capacity)));
        if (!AppUtils.checkDuplicate(dbConn, db, c, errors, "Capacity", andFilterTerm))
        {
            return;
        }

        WebUtils.StartFunction(Session, FUNCTION_CODE);
        db.insert(dbConn, c);
        WebUtils.EndFunction(dbConn);

        SchemeCode.Text = string.Empty;
        Capacity.Text   = string.Empty;
        FirstPoint.Text = "0.00";
        MidPoint.Text   = "0.00";
        LastPoint.Text  = "0.00";

        view = loadData(info, db, Repeater);
    }
Пример #5
0
    protected void RefreshPoint()
    {
        PointSelect.Items.Clear();

        if (SchemeCode.SelectedIndex > 0 && CapacitySelect.SelectedIndex > 0)
        {
            DBFilter filter = new DBFilter();
            filter.add(new Match("SchemeCode", AppUtils.Encode(EPayScale.db.getField("SchemeCode"), SchemeCode.SelectedValue)));
            filter.add(new Match("Capacity", AppUtils.Encode(EPayScale.db.getField("Capacity"), CapacitySelect.SelectedValue)));
            ArrayList m_payscaleList = EPayScale.db.select(dbConn, filter);
            if (m_payscaleList.Count > 0)
            {
                EPayScale m_payscale = (EPayScale)m_payscaleList[0];

                DBFilter m_pointsFilter = new DBFilter();
                OR       m_OR           = new OR();
                m_pointsFilter.add(new Match("SchemeCode", AppUtils.Encode(EPayScaleMap.db.getField("SchemeCode"), m_payscale.SchemeCode)));
                m_pointsFilter.add(new Match("Point", ">=", m_payscale.FirstPoint));
                m_pointsFilter.add(new Match("Point", "<=", m_payscale.LastPoint));

                if (EmpRPEffFr.Value != "")
                {
                    m_pointsFilter.add(new Match("EffectiveDate", "<=", DateTime.Parse(EmpRPEffFr.Value)));
                    m_OR.add(new Match("ExpiryDate", ">=", DateTime.Parse(EmpRPEffFr.Value)));
                    m_OR.add(new NullTerm("ExpiryDate"));
                }
                else
                {
                    m_pointsFilter.add(new Match("EffectiveDate", "<=", AppUtils.ServerDateTime()));
                    m_OR.add(new Match("ExpiryDate", ">=", AppUtils.ServerDateTime()));
                    m_OR.add(new NullTerm("ExpiryDate"));
                }
                m_pointsFilter.add(m_OR);

                foreach (EPayScaleMap m_point in EPayScaleMap.db.select(dbConn, m_pointsFilter))
                {
                    PointSelect.Items.Add(m_point.Point.ToString("0.00"));
                }
            }
        }
    }
Пример #6
0
    protected void btnUpload_Click(object sender, EventArgs e)
    {
        PageErrors errors = PageErrors.getErrors(db, Page.Master);

        errors.clear();

        if (BatchFile.HasFile)
        {
            string strTmpFolder = HROne.Common.Folder.GetOrCreateSessionTempFolder(Session.SessionID).FullName;;  //Environment.GetFolderPath(Environment.SpecialFolder.InternetCache);
            string strTmpFile   = System.IO.Path.Combine(strTmpFolder, AppUtils.ServerDateTime().ToString("~yyyyMMddHHmmss_") + BatchFile.FileName);
            BatchFile.SaveAs(strTmpFile);

            ArrayList pendingList = new ArrayList();

            try
            {
                DataTable rawDataTable = HROne.Import.ExcelImport.parse(strTmpFile, string.Empty).Tables[TABLE_NAME];

                if (rawDataTable.Columns.Contains("Scheme Code") &&
                    rawDataTable.Columns.Contains("Capacity") &&
                    rawDataTable.Columns.Contains("First Point") &&
                    rawDataTable.Columns.Contains("Mid Point") &&
                    rawDataTable.Columns.Contains("Last Point"))
                {
                    int     row_count = 0;
                    Decimal point;
                    //int id;
                    foreach (DataRow row in rawDataTable.Rows)
                    {
                        row_count++;

                        EPayScale c = new EPayScale();

                        if (!row.IsNull("Scheme Code"))
                        {
                            c.SchemeCode = ((String)row["Scheme Code"]).Trim();
                        }
                        else
                        {
                            errors.addError("Missing Scheme Code in row " + row_count.ToString());
                            if (errors.errors.Count > 10)
                            {
                                return;
                            }
                        }

                        if (!row.IsNull("Capacity"))
                        {
                            c.Capacity = ((String)row["Capacity"]).Trim();
                        }
                        else
                        {
                            errors.addError("Missing Capacity in row " + row_count.ToString());
                            if (errors.errors.Count > 10)
                            {
                                return;
                            }
                        }

                        if (!row.IsNull("First Point") && Decimal.TryParse(((String)row["First Point"]), out point))
                        {
                            c.FirstPoint = point;
                        }
                        else
                        {
                            errors.addError("Missing First Point in row " + row_count.ToString());
                            if (errors.errors.Count > 10)
                            {
                                return;
                            }
                        }

                        if (!row.IsNull("Mid Point") && Decimal.TryParse(((String)row["Mid Point"]), out point))
                        {
                            c.MidPoint = point;
                        }
                        else
                        {
                            errors.addError("Missing Mid Point in row " + row_count.ToString());
                            if (errors.errors.Count > 10)
                            {
                                return;
                            }
                        }

                        if (!row.IsNull("Last Point") && Decimal.TryParse(((String)row["Last Point"]), out point))
                        {
                            c.LastPoint = point;
                        }
                        else
                        {
                            errors.addError("Missing Mid Point in row " + row_count.ToString());
                            if (errors.errors.Count > 10)
                            {
                                return;
                            }
                        }
                        pendingList.Add(c);
                    }
                }
                else
                {
                    errors.addError(HROne.Translation.PageErrorMessage.ERROR_INVALID_FILE);
                }
            }
            catch (Exception)
            {
                errors.addError(HROne.Translation.PageErrorMessage.ERROR_INVALID_FILE);
            }

            pendingList.Sort(new PayScaleComparer());

            if (pendingList.Count > 0)
            {
                try
                {
                    dbConn.BeginTransaction();
                    WebUtils.StartFunction(Session, FUNCTION_CODE);

                    DBFilter filter = sbinding.createFilter();
                    filter.add("SchemeCode", true);
                    filter.add("Capacity", true);
                    ArrayList currentList = EPayScale.db.select(dbConn, filter);
                    foreach (EPayScale currentItem in currentList)
                    {
                        EPayScale updateItem = null;
                        foreach (EPayScale pendingItem in pendingList)
                        {
                            if (pendingItem.SchemeCode.Equals(currentItem.SchemeCode) && pendingItem.Capacity.Equals(currentItem.Capacity))
                            {
                                updateItem = pendingItem;

                                if (//!currentItem.PayScaleCDesc.Equals(pendingItem.PayScaleCDesc) ||
                                    !currentItem.FirstPoint.Equals(pendingItem.FirstPoint) ||
                                    !currentItem.MidPoint.Equals(pendingItem.MidPoint) ||
                                    !currentItem.LastPoint.Equals(pendingItem.LastPoint))
                                {
                                    //currentItem.FirstPoint = pendingItem.FirstPoint;
                                    //currentItem.MidPoint = pendingItem.MidPoint;
                                    //currentItem.LastPoint = pendingItem.LastPoint;
                                    EPayScale.db.update(dbConn, currentItem);
                                }
                                break;
                            }
                        }
                        if (updateItem != null)
                        {
                            pendingList.Remove(updateItem);
                        }
                        else
                        {
                            if (!EPayScale.db.delete(dbConn, currentItem))
                            {
                                // failed to delete
                            }
                        }
                    }
                    foreach (EPayScale insertItem in pendingList)
                    {
                        AND andFilterTerm = new AND();
                        andFilterTerm.add(new Match("SchemeCode", insertItem.SchemeCode));
                        andFilterTerm.add(new Match("Capacity", insertItem.Capacity));
                        //if (!AppUtils.checkDuplicate(dbConn, db, insertItem, errors, "Capacity", andFilterTerm))
                        //{
                        //    //errors.addError("Duplicated Rank Description : " + insertItem.PayScaleDesc);
                        //    break;
                        //}
                        try
                        {
                            //                            throw new SqlException();

                            EPayScale.db.insert(dbConn, insertItem);
                        }
                        catch (Exception ex)
                        {
                            System.Diagnostics.Debug.WriteLine("Fail to clear temp table: " + ex.Message);
                        }
                    }

                    if (errors.errors.Count > 0)
                    {
                        dbConn.RollbackTransaction();
                    }
                    else
                    {
                        dbConn.CommitTransaction();
                    }

                    WebUtils.EndFunction(dbConn);
                }

                catch (Exception ex)
                {
                    errors.addError(HROne.Translation.PageErrorMessage.ERROR_INVALID_FILE);
                    dbConn.RollbackTransaction();
                    WebUtils.EndFunction(dbConn);
                }
            }
            else
            {
                errors.addError(HROne.Translation.PageErrorMessage.ERROR_NO_RECORD_IMPORT);
            }
            System.IO.File.Delete(strTmpFile);
        }
        else
        {
            errors.addError(HROne.Translation.PageErrorMessage.ERROR_INVALID_FILE);
        }

        Repeater.EditItemIndex = -1;
        view = loadData(info, db, Repeater);
        if (errors.isEmpty())
        {
            errors.addError(HROne.Translation.PageMessage.IMPORT_SUCCESSFUL);
        }
    }
Пример #7
0
        protected bool ValidateBusinessRule(ESalaryIncrementBatchDetail inputObject, out string errorMessage)
        {
            // validate if new point is .5 or .0

            if (inputObject.NewPoint % Decimal.One != (decimal)0.5 && inputObject.NewPoint % Decimal.One != Decimal.Zero)
            {
                errorMessage = String.Format("Point({0}) must be a mupltiple of 0.5.", new string[] { inputObject.NewPoint.ToString("0.00") });
                return(false);
            }

            if (inputObject.CurrentPoint + ALLOWABLE_POINT_CHANGE_IN_BACKPAY < inputObject.NewPoint || inputObject.CurrentPoint - ALLOWABLE_POINT_CHANGE_IN_BACKPAY > inputObject.NewPoint)
            {
                errorMessage = String.Format("Point change violation. New Point ({0}) is cannot be 0.5 point more / less than the Original Point({1})", new string[] { inputObject.NewPoint.ToString("0.00"), inputObject.CurrentPoint.ToString("0.00") });
                return(false);
            }

            if (inputObject.SchemeCode != "" && inputObject.Capacity != "" && inputObject.CurrentPoint >= 0)
            {
                DBFilter m_recurringFilter = new DBFilter();

                m_recurringFilter.add(new NullTerm("EmpRPEffTo"));
                m_recurringFilter.add(new Match("EmpID", inputObject.EmpID));

                string m_schemeCode = AppUtils.Encode(EEmpRecurringPayment.db.getField("SchemeCode"), inputObject.SchemeCode);
                string m_capacity   = AppUtils.Encode(EEmpRecurringPayment.db.getField("Capacity"), inputObject.Capacity);

                m_recurringFilter.add(new Match("SchemeCode", m_schemeCode));
                m_recurringFilter.add(new Match("Capacity", m_capacity));
                m_recurringFilter.add(new Match("Point", inputObject.CurrentPoint));

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

                DBFilter m_paymentCodeFilter = new DBFilter();
                m_paymentCodeFilter.add(new IN("PaymentTypeID", "SELECT PaymentTypeID FROM PaymentType", m_paymentTypeFilter));

                m_recurringFilter.add(new IN("PayCodeID", "SELECT PaymentCodeID FROM PaymentCode", m_paymentCodeFilter));
                m_recurringFilter.add("EmpRPID", false);

                ArrayList m_recurringList = EEmpRecurringPayment.db.select(dbConn, m_recurringFilter);

                if (m_recurringList.Count > 0)  // recurring payment matched
                {
                    EEmpRecurringPayment m_recurringPayment = (EEmpRecurringPayment)m_recurringList[0];

                    // cross check if payscale is out of range
                    DBFilter m_payScaleFilter = new DBFilter();
                    m_payScaleFilter.add(new Match("SchemeCode", m_schemeCode));
                    m_payScaleFilter.add(new Match("Capacity", m_capacity));

                    ArrayList m_payScaleList = EPayScale.db.select(dbConn, m_payScaleFilter);
                    if (m_payScaleList.Count > 0)
                    {
                        EPayScale m_payScale = (EPayScale)m_payScaleList[0];
                        if (inputObject.NewPoint < m_payScale.FirstPoint || inputObject.NewPoint > m_payScale.LastPoint)
                        {
                            errorMessage = string.Format("New Point({0}) is out of range({1}-{2}) according to PayScale Setup.", new string[] { inputObject.NewPoint.ToString("0.00"), m_payScale.FirstPoint.ToString("0.00"), m_payScale.LastPoint.ToString("0.00") });
                            return(false);
                        }
                    }
                }
                else
                {
                    errorMessage = string.Format("Recurring Payment not matched. (Scheme Code={0}, Capacity={1}, Point={2})", new string[] { inputObject.SchemeCode, inputObject.Capacity, inputObject.CurrentPoint.ToString("0.00") });
                    return(false);
                }
            }
            else
            {
                errorMessage = string.Format("Recurring Payment not matched. (Scheme Code={0}, Capacity={1}, Point={2})", new string[] { inputObject.SchemeCode, inputObject.Capacity, inputObject.CurrentPoint.ToString("0.00") });
                return(false);
            }
            errorMessage = "";
            return(true);
        }