示例#1
0
        public void TestEmployeeInfoReturnPayModel()
        {
            //Arrange
            var controller    = new PayrollController();
            var employeeModel = new EmployeeModel
            {
                AnnualSalary = 100000,
                FirstName    = "Test1",
                LastName     = "Test2",
                Month        = "2019-11",
                SuperRate    = 9.5
            };

            //Act
            var result      = controller.EmployeeInfo(employeeModel) as ViewResult;
            var outputModel = result.Model as PayModel;

            //Assert
            Assert.AreEqual("Test1 Test2", outputModel.EmployeeName);
            Assert.AreEqual("$ 8333", outputModel.GrossIncome);
            Assert.AreEqual("$ 792", outputModel.SuperAmount);
            Assert.AreEqual("$ 2269", outputModel.IncomeTax);
            Assert.AreEqual("$ 6065", outputModel.NetIncome);
            Assert.AreEqual("01 November - 30 November", outputModel.PayPeriod);
        }
        private void createPayrollButton_Click(object sender, EventArgs e)
        {
            TimeSpan validDate = endDatePeriod.Value - startDatePeriod.Value;

            if (validDate <= fetchValidDateDuration())
            {
                showErrorMessage("Invalid period.");
                return;
            }

            hideErrorMessage();
            if (!selectAllCheckBox.Checked)
            {
                EmployeeControllerInterface employeeController = new EmployeeController();
                Employee employee = employeeController.fetchEmployeeByUsername(usernameOrEmployeeId.Text);

                if (employee == null || employee.Equals(""))
                {
                    showErrorMessage("Please input a valid username.");
                    return;
                }

                PayrollControllerInterface payslipController = new PayrollController();
                Payslip payslip = payslipController.createPayslip(startDatePeriod.Value, endDatePeriod.Value, employee);
                if (thirteenMonthPayCheckBox.Checked)
                {
                    payslipController.addThirteenMonthPayToPayslip(employee, payslip);
                }

                loadPayrollList();
                adminTab.SelectedTab = payrollTab;
                showErrorMessage("Successfully created payroll to user: "******"admin" && user.status == AccountStatus.Enable)
                    {
                        EmployeeControllerInterface employeeController = new EmployeeController();
                        Employee employee = employeeController.fetchEmployeeByUsername(user.username);

                        if (employee == null || employee.Equals(""))
                        {
                            showErrorMessage("Please input a valid username.");
                            return;
                        }

                        PayrollControllerInterface payslipController = new PayrollController();
                        payslipController.createPayslip(startDatePeriod.Value, endDatePeriod.Value, employee);
                    }
                }
                selectAllCheckBox.Checked = false;
                loadPayrollList();
                adminTab.SelectedTab = payrollTab;
                showErrorMessage("Successfully create payroll to all users");
            }
        }
        private void viewPayslipButton_Click(object sender, EventArgs e)
        {
            try
            {
                if (payrollListBox.SelectedIndex != -1)
                {
                    int payslipId = Convert.ToInt32(payrollListBox.SelectedItem.ToString().Split('.')[0]);
                    PayrollControllerInterface payrollController = new PayrollController();
                    Payslip payslip = payrollController.fetchPayslipById(payslipId);

                    EmployeeControllerInterface employeeController = new EmployeeController();
                    payslip.employee = employeeController.fetchEmployeeById(payslip.employee.id);

                    FormControllerInterface formController = new FormController();
                    formController.showUserPayroll(this, payslip);
                }
                else
                {
                    showErrorMessage("Please select a record to view.");
                }
            }
            catch (FormatException ex)
            {
                Console.WriteLine("No item selected: " + ex.Message);
            }
        }
示例#4
0
        /// <summary>
        /// Delete catalog
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Delete(object sender, DirectEventArgs e)
        {
            try
            {
                var param = e.ExtraParams["Id"];
                // parse id
                if (!int.TryParse(param, out var id) || id <= 0)
                {
                    // parse error, show error
                    Dialog.ShowError("Có lỗi xảy ra trong quá trình xử lý");
                    return;
                }
                // delete
                //Xoa bang luong
                SalaryBoardInfoController.DeleteByBoardListId(id);

                //delete salary column dynamic
                SalaryBoardDynamicColumnController.DeleteByCondition(id);

                //Xoa trong danh sach bang luong
                PayrollController.Delete(id);

                // reload data
                grdSalaryBoardList.Reload();
            }
            catch (Exception ex)
            {
                Dialog.ShowError(ex.Message);
            }
        }
示例#5
0
        private void initializeDataGrid()
        {
            PayrollControllerInterface payrollController = new PayrollController();
            List <Payslip>             payrollSheet      = payrollController.fetchPayroll();

            payrollSheetDataGridView.DataSource = ConvertListToDataTable(payrollSheet);
        }
示例#6
0
        private void createPayrollButton_Click(object sender, EventArgs e)
        {
            EmployeeControllerInterface employeeController = new EmployeeController();
            Employee employee = employeeController.fetchEmployeeByUsername(usernameOrEmployeeId.Text);

            PayrollControllerInterface payslipController = new PayrollController();

            payslipController.createPayslip(startDatePeriod.Value, endDatePeriod.Value, employee);
        }
示例#7
0
        private void loadPayrollList()
        {
            PayrollControllerInterface payrollController = new PayrollController();
            List <Payslip>             payroll           = payrollController.fetchUserPayrolls(user);

            userPayrollListBox.Items.Clear();
            foreach (Payslip payslip in payroll)
            {
                userPayrollListBox.Items.Add(payslip.id + ".)" + payslip.startDatePeriod.ToString("MM/dd/yyyy") + "-" + payslip.endDatePeriod.ToString("MM/dd/yyyy"));
            }
        }
示例#8
0
        public DashboardForm(LoginForm login, User user)
        {
            this.login = login;
            this.user  = user;
            InitializeComponent();
            username.Text = user.username;
            PayrollControllerInterface payrollController = new PayrollController();
            List <Payroll>             payrolls          = payrollController.fetchUserPayrolls(user);

            loadPayrollList(payrolls);
        }
        private void loadPayrollList()
        {
            PayrollControllerInterface payrollController = new PayrollController();
            List <Payslip>             payroll           = payrollController.fetchPayroll();

            payrollListBox.Items.Clear();
            foreach (Payslip payslip in payroll)
            {
                payrollListBox.Items.Add(payslip.id + ".)" + payslip.startDatePeriod.ToString("MM/dd/yyyy") + " - " + payslip.endDatePeriod.ToString("MM/dd/yyyy") + " | " + payslip.employee.userAccount.username);
            }
        }
示例#10
0
        /// <summary>
        /// Sinh cột động
        /// </summary>
        public void InitDynamicColumn()
        {
            // get payroll
            var payroll = PayrollController.GetById(int.Parse(hdfPayrollId.Text));

            if (payroll == null)
            {
                return;
            }

            grpPayrollDetail.Title = payroll.Title;

            // get salary board config
            var salaryBoardConfigs = SalaryBoardConfigController.GetAll(payroll.ConfigId, true, null, null, null, null, null);


            //sort list by columnExcel
            salaryBoardConfigs.Sort((x, y) => CompareUtil.CompareStringByLength(x.ColumnExcel, y.ColumnExcel));


            foreach (var config in salaryBoardConfigs)
            {
                var recordField = new RecordField
                {
                    Name = config.ColumnCode
                };
                var column = new Column
                {
                    Header    = config.Display,
                    DataIndex = recordField.Name,
                    Width     = 120,
                    Align     = Alignment.Right,
                    Renderer  = { Fn = "RenderValue" },
                    Tooltip   = config.Display,
                };
                switch (config.DataType)
                {
                case SalaryConfigDataType.FieldFormula:
                case SalaryConfigDataType.Formula:
                    column.Css = "font-weight:bold;";
                    break;

                case SalaryConfigDataType.DynamicValue:
                    column.Css = "background:#e6eaf2;";
                    column.Editor.Add(new TextField());
                    break;
                }

                storePayrollDetail.AddField(recordField);
                grpPayrollDetail.ColumnModel.Columns.Add(column);
            }
        }
示例#11
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void DownloadTemplate_Click(object sender, DirectEventArgs e)
        {
            // init table
            var dataTable          = new DataTable();
            var salaryBoardConfigs = new List <SalaryBoardConfigModel>();
            var payroll            = new PayrollModel();
            var salaryBoardInfos   = new List <SalaryBoardInfoModel>();

            // adjust table
            dataTable.Rows.Add();
            dataTable.Columns.Add(new DataColumn(EmployeeCode));
            dataTable.Columns.Add(new DataColumn(FullName));

            // get config
            if (!string.IsNullOrEmpty(hdfConfigId.Text))
            {
                salaryBoardConfigs = SalaryBoardConfigController.GetAll(int.Parse(hdfConfigId.Text), null, null, null,
                                                                        SalaryConfigDataType.DynamicValue, null, null);
            }

            // get payroll
            if (!string.IsNullOrEmpty(hdfSalaryBoardListID.Text))
            {
                payroll = PayrollController.GetById(int.Parse(hdfSalaryBoardListID.Text));
            }


            if (salaryBoardConfigs != null)
            {
                foreach (var model in salaryBoardConfigs)
                {
                    dataTable.Columns.Add(new DataColumn(model.Display));
                }
            }

            // get record by department
            if (payroll != null)
            {
                salaryBoardInfos = SalaryBoardInfoController.GetAll(null, payroll.Id.ToString(), null, null);
            }

            // fill employee name and code
            for (var i = 0; i < salaryBoardInfos.Count; i++)
            {
                dataTable.Rows.Add();
                dataTable.Rows[i][EmployeeCode] = salaryBoardInfos[i].EmployeeCode;
                dataTable.Rows[i][FullName]     = salaryBoardInfos[i].FullName;
            }

            ExportToExcel(dataTable, "~/" + Constant.PathTemplate, ImportSalaryExcelFile);
        }
示例#12
0
        public void ProcessRequest(HttpContext context)
        {
            if (!string.IsNullOrEmpty(context.Request["payrollId"]))
            {
                _payrollId = int.Parse(context.Request["payrollId"]);
            }
            if (!string.IsNullOrEmpty(context.Request["keyword"]))
            {
                _keyword = context.Request["keyword"];
            }

            var result = PayrollController.GetPayrollDetail(_keyword, _payrollId, null, null);

            context.Response.Write("{{TotalRecords:{0},Data:{1}}}".FormatWith(result.Rows.Count, Ext.Net.JSON.Serialize(result)));
        }
示例#13
0
        public void ValidateInValidDataReturnsNullOutputModel()
        {
            //Arrange
            var controller = new PayrollController();

            controller.ModelState.AddModelError("AnnualSalary", "Please enter a valid Annual Salary");
            var employeeModel = new EmployeeModel();

            //Act
            var result      = controller.EmployeeInfo(employeeModel) as ViewResult;
            var outputModel = result.Model as PayModel;

            //Assert
            Assert.IsNull(outputModel);
        }
示例#14
0
        public void SelectSalaryBoard()
        {
            if (!string.IsNullOrEmpty(hdfSalaryBoardListId.Text))
            {
                //Lay danh sach bang luong
                var boardList = PayrollController.GetById(Convert.ToInt32(hdfSalaryBoardListId.Text));

                if (boardList != null)
                {
                    //get all event
                    var lisEvents = GetAllEvents(boardList, false);
                    //TH chua ton tai bang luong thi di tao moi bang luong
                    var salaryBoard = SalaryBoardInfoController.GetAll(null, hdfSalaryBoardListId.Text, null, null);
                    if (salaryBoard != null && salaryBoard.Count > 0)
                    {
                        if (bool.Parse(hdfChkIsUpdateTimeSheet.Text))
                        {
                            //Truong hop da co bang luong, thi cap nhat lai du lieu tu cham cong cho moi recordId
                            foreach (var salary in salaryBoard)
                            {
                                var salaryInfo = SalaryBoardInfoController.GetById(salary.Id);

                                //Lay tu timeSheet
                                GetDataFromTimeSheet(salaryInfo, lisEvents);
                                //Update
                                SalaryBoardInfoController.Update(salaryInfo);
                            }
                        }

                        if (bool.Parse(hdfChkIsUpdateSalary.Text))
                        {
                            //Truong hop da co bang luong, thi cap nhat lai du lieu tu luong cho moi recordId
                            foreach (var salary in salaryBoard)
                            {
                                var salaryInfo = SalaryBoardInfoController.GetById(salary.Id);

                                //Lay tu sal_SalaryDecision
                                EditDataSalary(salary.RecordId, salaryInfo);

                                //Update
                                SalaryBoardInfoController.Update(salaryInfo);
                            }
                        }
                    }
                }
                Response.Redirect(SalaryBoardInfoUrl + "?mId=" + MenuId + "&id=" + hdfSalaryBoardListId.Text, true);
            }
        }
示例#15
0
        /// <summary>
        /// Init setting window
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void InitWindow(object sender, DirectEventArgs e)
        {
            ResetForm();
            var param = e.ExtraParams["Id"];

            if (int.TryParse(param, out var id))
            {
                if (id > 0)
                {
                    // edit
                    EmployeeGrid.Disabled  = true;
                    cbxDepartment.Disabled = true;
                    wdSetting.Title        = @"Sửa bảng lương";
                    wdSetting.Icon         = Icon.Pencil;
                }
                else
                {
                    // insert
                    EmployeeGrid.Disabled  = false;
                    cbxDepartment.Disabled = false;
                    wdSetting.Title        = @"Thêm mới bảng lương";
                    wdSetting.Icon         = Icon.Add;
                }
                hdfSalaryBoardListId.Text = id.ToString();
                var payrollModel = new PayrollModel();

                if (id > 0)
                {
                    var result = PayrollController.GetById(Convert.ToInt32(hdfSalaryBoardListId.Text));
                    if (result != null)
                    {
                        payrollModel = result;
                    }
                    //data
                    txtName.Text       = payrollModel.Title;
                    txtCode.Text       = payrollModel.Code;
                    txtNote.Text       = payrollModel.Description;
                    hdfConfigId.Text   = payrollModel.ConfigId.ToString();
                    cbxConfigList.Text = payrollModel.ConfigName;
                }
                hdfMonth.Text = payrollModel.Month.ToString();
                cbxMonth.Text = payrollModel.Month.ToString();
                hdfYear.Text  = payrollModel.Year.ToString();
                spnYear.Text  = payrollModel.Year.ToString();
                // show window
                wdSetting.Show();
            }
        }
示例#16
0
        protected void Page_Load(object sender, EventArgs e)
        {
            hdfPayrollId.Text = Request.QueryString["id"];
            // get payroll
            _payroll = PayrollController.GetById(int.Parse(hdfPayrollId.Text));

            if (!ExtNet.IsAjaxRequest)
            {
                if (_payroll != null)
                {
                    hdfConfigId.Text = _payroll.ConfigId.ToString();
                    ReloadGrid();
                }
            }

            InitDynamicColumn();
        }
示例#17
0
 public void GetConfig()
 {
     try
     {
         if (!string.IsNullOrEmpty(hdfPayrollId.Text))
         {
             var payroll = PayrollController.GetById(Convert.ToInt32(hdfPayrollId.Text));
             if (payroll != null)
             {
                 hdfConfigId.Text = payroll.ConfigId.ToString();
             }
         }
     }
     catch (Exception exception)
     {
         Dialog.Alert(exception.Message);
     }
 }
示例#18
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnUnlock_Click(object sender, DirectEventArgs e)
        {
            // get payroll
            _payroll = PayrollController.GetById(int.Parse(hdfPayrollId.Text));

            if (_payroll == null)
            {
                return;
            }

            // lock payroll
            _payroll.Status = PayrollStatus.Active;

            // update payroll
            PayrollController.Update(_payroll);

            ReloadGrid();
        }
示例#19
0
        public async Task CanGetDatesPaid()
        {
            foreach (var testAccount in TestAccounts.TyLinAccounts.Accounts)
            {
                var employer = EmployerCache.Employers.FirstOrDefault(e =>
                                                                      e.Id == testAccount.EmployerId);

                var repository = new PayrollRepository();
                repository.Initialize(employer.ConnectionString);

                var dispatcher = new PayrollDispatcher(repository);
                var controller = new PayrollController(dispatcher);

                var result = await controller.GetDatesPaidAsync(employer, testAccount.CchId);

                Assert.IsNotNull(result);
                //Assert.IsNotNull(result.Content);
            }
        }
示例#20
0
        public void TestEmployeeInfoReturnViewName()
        {
            //Arrange
            var controller    = new PayrollController();
            var employeeModel = new EmployeeModel
            {
                AnnualSalary = 10000,
                FirstName    = "Test1",
                LastName     = "Test2",
                Month        = "2019-11",
                SuperRate    = 9.5
            };

            //Act
            var result = controller.EmployeeInfo(employeeModel) as ViewResult;

            //Assert
            Assert.AreEqual("EmployeePayDetails", result.ViewName);
        }
示例#21
0
        /// <summary>
        /// Sinh cột và record field động
        /// </summary>
        private void InitDynamicColumn()
        {
            if (string.IsNullOrEmpty(hdfSalaryBoardListID.Text))
            {
                return;
            }

            // get payroll
            var payroll = PayrollController.GetById(Convert.ToInt32(hdfSalaryBoardListID.Text));

            if (payroll == null)
            {
                return;
            }

            // get payroll config
            var salaryBoardConfigs = SalaryBoardConfigController.GetAll(payroll.ConfigId, true, null, null,
                                                                        SalaryConfigDataType.DynamicValue, null, null);

            foreach (var salaryBoardConfig in salaryBoardConfigs)
            {
                // init record field
                var recordField = new RecordField
                {
                    Name = salaryBoardConfig.ColumnCode,
                };

                // init column
                var column = new Column
                {
                    DataIndex = recordField.Name,
                    Header    = salaryBoardConfig.Display,
                    Width     = 120,
                    Align     = Alignment.Right,
                    Tooltip   = salaryBoardConfig.Description,
                    Editor    = { new TextField() },
                    Renderer  = { Fn = "RenderValue" }
                };

                storeAdjustment.AddField(recordField);
                gridColumnDynamic.ColumnModel.Columns.Add(column);
            }
        }
示例#22
0
        private void resetLeaveCreditsButton_Click(object sender, EventArgs e)
        {
            hideErrorMessage();
            if (!selectAllCheckBox.Checked)
            {
                EmployeeControllerInterface employeeController = new EmployeeController();
                Employee employee = employeeController.fetchEmployeeByUsername(usernameOrEmployeeId.Text);

                if (employee == null || employee.Equals(""))
                {
                    showErrorMessage("Please input a valid username.");
                    return;
                }
                LeaveCreditsControllerInteface leaveCreditsController = new LeaveCreditsController();
                EmployeeLeaveCredits           employeeLeaveCredits   = leaveCreditsController.resetEmployeeLeaveCredits(employee);
                showErrorMessage("Successfully created payroll to user: "******"admin")
                    {
                        EmployeeControllerInterface employeeController = new EmployeeController();
                        Employee employee = employeeController.fetchEmployeeByUsername(user.username);

                        if (employee == null || employee.Equals(""))
                        {
                            showErrorMessage("Please input a valid username.");
                            return;
                        }

                        PayrollControllerInterface payslipController = new PayrollController();
                        payslipController.createPayslip(startDatePeriod.Value, endDatePeriod.Value, employee);
                    }
                }
                selectAllCheckBox.Checked = false;
                showErrorMessage("Successfully create payroll to all users");
            }
        }
示例#23
0
        public async Task CanGetPaycheck()
        {
            foreach (var testAccount in TestAccounts.TyLinAccounts.Accounts)
            {
                var employer = EmployerCache.Employers.FirstOrDefault(e =>
                                                                      e.Id == testAccount.EmployerId);

                var repository = new PayrollRepository();
                repository.Initialize(employer.ConnectionString);

                var dispatcher = new PayrollDispatcher(repository);
                var controller = new PayrollController(dispatcher);

                controller.ControllerContext.Request = new System.Net.Http.HttpRequestMessage();
                controller.ControllerContext.Request.CCHID(testAccount.CchId);

                var result = await controller.GetPaycheckAsync(employer, testAccount.PaycheckDocumentId);

                Assert.IsNotNull(result);
                //Assert.IsNotNull(result.Content);
            }
        }
示例#24
0
        public void SaveData(string json)
        {
            // get payroll
            _payroll = PayrollController.GetById(int.Parse(hdfPayrollId.Text));

            if (_payroll == null)
            {
                return;
            }

            // save data
            _payroll.Data = json;

            var table = PayrollController.GetPayrollDetail(null, _payroll.Id, null, null);

            if (table.Rows.Count > 0)
            {
                for (var i = 0; i < table.Rows.Count; i++)
                {
                    //save payrollInfo
                    var payrollInfo = new PayrollInfoModel()
                    {
                        SalaryBoardId = _payroll.Id,
                        RecordId      = table.Rows[i]["RecordId"] != null?Convert.ToInt32(table.Rows[i]["RecordId"].ToString()) : 0,
                                            TotalIncome      = 0,
                                            IndividualTax    = 0,
                                            EnterpriseSocial = 0,
                                            LaborerSocial    = 0,
                                            ActualSalary     = 0,
                                            Month            = _payroll.Month,
                                            Year             = _payroll.Year,
                                            CreatedBy        = "admin",
                                            CreatedDate      = DateTime.Now,
                                            EditedBy         = "",
                                            EditedDate       = DateTime.Now,
                                            IsDeleted        = false
                    };

                    //check exist column
                    if (table.Columns.Contains("{0}".FormatWith(Constant.IndividualTax)))
                    {
                        payrollInfo.IndividualTax = table.Rows[i]["IndividualTax"] != null
                            ? Convert.ToDecimal(table.Rows[i]["IndividualTax"].ToString())
                            : 0;
                    }
                    if (table.Columns.Contains("{0}".FormatWith(Constant.TotalIncome)))
                    {
                        payrollInfo.TotalIncome = table.Rows[i]["TotalIncome"] != null
                            ? Convert.ToInt32(table.Rows[i]["TotalIncome"].ToString())
                            : 0;
                    }
                    if (table.Columns.Contains("{0}".FormatWith(Constant.EnterpriseSocialInsurance)))
                    {
                        payrollInfo.EnterpriseSocial = table.Rows[i]["EnterpriseSocialInsurance"] != null
                            ? Convert.ToInt32(table.Rows[i]["EnterpriseSocialInsurance"].ToString())
                            : 0;
                    }
                    if (table.Columns.Contains("{0}".FormatWith(Constant.LaborerSocialInsurance)))
                    {
                        payrollInfo.LaborerSocial = table.Rows[i]["LaborerSocialInsurance"] != null
                            ? Convert.ToInt32(table.Rows[i]["LaborerSocialInsurance"].ToString())
                            : 0;
                    }
                    if (table.Columns.Contains("{0}".FormatWith(Constant.ActualSalary)))
                    {
                        payrollInfo.ActualSalary = table.Rows[i]["ActualSalary"] != null
                            ? Convert.ToInt32(table.Rows[i]["ActualSalary"].ToString())
                            : 0;
                    }

                    var checkExistModel = PayrollInfoController.GetUnique(payrollInfo.SalaryBoardId, payrollInfo.RecordId, payrollInfo.Month, payrollInfo.Year);
                    if (checkExistModel != null)
                    {
                        payrollInfo.Id         = checkExistModel.Id;
                        payrollInfo.EditedDate = DateTime.Now;
                        payrollInfo.EditedBy   = CurrentUser.User.UserName;
                        //update
                        PayrollInfoController.Update(payrollInfo);
                    }
                    else
                    {
                        //create
                        PayrollInfoController.Create(payrollInfo);
                    }
                }
            }

            // update payroll
            PayrollController.Update(_payroll);
        }
示例#25
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        private XtraReport InitPayrollReport(ReportDynamicModel report)
        {
            // check payroll config id
            if (!int.TryParse(report.Argument, out var payrollConfigId) || payrollConfigId <= 0)
            {
                // invalid argument
                return(null);
            }

            // set current payroll config id
            hdfPayrollConfigId.Text = payrollConfigId.ToString();

            // check payroll id
            if (!int.TryParse(hdfPayrollId.Text, out var payrollId) || payrollId <= 0)
            {
                // get last payroll
                var payrolls = PayrollController.GetAll(null, payrollConfigId, hdfSelectedDepartmentIds.Text, null, null, null, false, null, 1);

                // check result
                if (payrolls.Count > 0)
                {
                    // set current payroll id
                    hdfPayrollId.Text = payrolls.First().Id.ToString();

                    // payroll selected
                    cboPayroll.Text = payrolls.First().Title;
                }
                else
                {
                    // no payroll found
                    return(null);
                }
            }
            else
            {
                // get payroll by id
                var payroll = PayrollController.GetById(payrollId);

                if (payroll != null)
                {
                    // get month and year
                    var payrollMonth = payroll.Month;
                    var payrollYear  = payroll.Year;

                    // set payroll start date
                    report.StartDate = new DateTime(payrollYear, payrollMonth, 1);

                    // set payroll end date
                    report.EndDate = new DateTime(payrollYear, payrollMonth, DateTime.DaysInMonth(payrollYear, payrollMonth));

                    // payroll selected
                    cboPayroll.Text = payroll.Title;
                }
                else
                {
                    // no payroll found
                    return(null);
                }
            }

            // init payroll report
            XtraReport rpHRM_Payroll = new rpHRM_Payroll_A4_Landscape(report.Id, payrollId);

            // check paper kind and orientation
            switch (report.PaperKind)
            {
            case ReportPaperKind.A4:
                switch (report.Orientation)
                {
                case ReportOrientation.Landscape:
                    rpHRM_Payroll = new rpHRM_Payroll_A4_Landscape(report.Id, payrollId);
                    break;

                case ReportOrientation.Portrait:
                    rpHRM_Payroll = new rpHRM_Payroll_A4_Potrait(report.Id, payrollId);
                    break;
                }
                break;

            case ReportPaperKind.A3:
                switch (report.Orientation)
                {
                case ReportOrientation.Landscape:
                    rpHRM_Payroll = new rpHRM_Payroll_A3_Landscape(report.Id, payrollId);
                    break;

                case ReportOrientation.Portrait:
                    rpHRM_Payroll = new rpHRM_Payroll_A3_Potrait(report.Id, payrollId);
                    break;
                }
                break;

            case ReportPaperKind.A2:
                switch (report.Orientation)
                {
                case ReportOrientation.Landscape:
                    rpHRM_Payroll = new rpHRM_Payroll_A2_Landscape(report.Id, payrollId);
                    break;

                case ReportOrientation.Portrait:
                    rpHRM_Payroll = new rpHRM_Payroll_A2_Landscape(report.Id, payrollId);
                    break;
                }
                break;
            }

            // init extra report
            return(rpHRM_Payroll);
        }
 public PayrollControllerUnitTests()
 {
     _controller = new PayrollController(_appSettingsMock.Object, _serviceMock.Object);
 }
示例#27
0
        /// <summary>
        /// Insert or Update Catalog
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void InsertOrUpdate(object sender, DirectEventArgs e)
        {
            var payrollModel = new PayrollModel();

            // check id
            if (!string.IsNullOrEmpty(hdfSalaryBoardListId.Text) && Convert.ToInt32(hdfSalaryBoardListId.Text) > 0)
            {
                var result = PayrollController.GetById(Convert.ToInt32(hdfSalaryBoardListId.Text));
                if (result != null)
                {
                    payrollModel = result;
                }
            }
            // set new props
            if (!string.IsNullOrEmpty(hdfConfigId.Text))
            {
                payrollModel.ConfigId = Convert.ToInt32(hdfConfigId.Text);
            }

            if (!string.IsNullOrEmpty(hdfMonth.Text))
            {
                payrollModel.Month = Convert.ToInt32(hdfMonth.Text);
            }
            if (!string.IsNullOrEmpty(hdfYear.Text))
            {
                payrollModel.Year = Convert.ToInt32(hdfYear.Text);
            }
            payrollModel.Title       = txtName.Text;
            payrollModel.Code        = txtCode.Text;
            payrollModel.Description = txtNote.Text;
            if (payrollModel.Id > 0)
            {
                payrollModel.EditedDate = DateTime.Now;
                payrollModel.EditedBy   = CurrentUser.User.UserName;
                // update
                var resultModel = PayrollController.Update(payrollModel);
                // check if payroll code exists
                if (resultModel != null)
                {
                    // show success message
                    Dialog.ShowNotification("Lưu thành công");
                    wdSetting.Hide();
                    ResetForm();
                }
                else
                {
                    Dialog.ShowNotification("Mã bảng lương đã tồn tại");
                }
            }
            else
            {
                payrollModel.CreatedDate = DateTime.Now;
                payrollModel.CreatedBy   = CurrentUser.User.UserName;
                payrollModel.EditedDate  = DateTime.Now;
                payrollModel.EditedBy    = CurrentUser.User.UserName;
                // create payroll
                var resultModel = PayrollController.Create(payrollModel);
                // check if payroll code exists
                if (resultModel != null)
                {
                    // init list
                    var listEvents = GetAllEvents(resultModel, true);
                    // create  salaryBoardInfo
                    foreach (var employee in chkEmployeeRowSelection.SelectedRows)
                    {
                        var salaryInfo = new SalaryBoardInfoModel(new hr_SalaryBoardInfo())
                        {
                            RecordId      = Convert.ToInt32(employee.RecordID),
                            SalaryBoardId = resultModel.Id,
                            CreatedDate   = DateTime.Now,
                            EditedDate    = DateTime.Now
                        };

                        //Lay tu timeSheet
                        GetDataFromTimeSheet(salaryInfo, listEvents);
                        //Lay tu sal_SalaryDecision
                        EditDataSalary(salaryInfo.RecordId, salaryInfo);

                        //create
                        SalaryBoardInfoController.Create(salaryInfo);
                    }
                    // show success message
                    Dialog.ShowNotification("Lưu thành công");
                    wdSetting.Hide();
                    ResetForm();
                }
                else
                {
                    Dialog.ShowNotification("Mã bảng lương đã tồn tại");
                }
            }
            grdSalaryBoardList.Reload();
        }