Example #1
0
        public ActionResult PayrollReport(PayrollItem model)
        {
            List <PayrollItem> payrollItemList = new List <PayrollItem>();
            PayrollService     payrollService  = new PayrollService();
            int?cid = 0;

            if (Session["CompID"] != null)
            {
                cid = Convert.ToInt32(Session["CompID"].ToString());
            }
            if (cid == 0)
            {
                cid = model.CompId;
            }
            payrollItemList = payrollService.GetPayrollDetailsReport(model.Month, model.Year, cid);
            PayrollItem payrollitem = new PayrollItem();

            payrollitem.lstPayroll = new List <PayrollItem>();
            payrollitem.lstPayroll.AddRange(payrollItemList);
            BindMonthYear();
            List <CompanyItem> clsCompany = new List <CompanyItem>();

            clsCompany             = payrollService.BindCompany();
            payrollitem.lstCompany = new List <CompanyItem>();
            payrollitem.lstCompany.AddRange(clsCompany);
            return(View(payrollitem));
        }
        public ActionResult Edit(int CompId, int Month, int Year)
        {
            objPayService = new PayrollService();
            objPayItem    = new PayrollItem();
            List <PayrollItem>  PayItem = new List <PayrollItem>();
            List <EmployeeItem> lstEmp  = new List <EmployeeItem>();

            PayItem = objPayService.GetPayrollDetails1(Month, Year, CompId);

            if (PayItem.Count != 0)
            {
                objPayItem.lstPayroll = new List <PayrollItem>();
                TempData["Msg"]       = "EmployeeExists";
                objPayItem.lstPayroll.AddRange(PayItem);
                ViewBag.MonthList = Month;
                ViewBag.YearList  = Year;
            }

            List <CompanyItem> clsCompany = new List <CompanyItem>();

            clsCompany            = objPayService.BindCompany();
            objPayItem.lstCompany = new List <CompanyItem>();
            objPayItem.lstCompany.AddRange(clsCompany);
            BindMonthYear();

            // return View("_List", objPayItem);
            return(View(objPayItem));
        }
Example #3
0
        public void PayrollService_ShouldGetTwoWeeksPayCorrectly_TimeAndHalfCalculatorWithNoOvertime()
        {
            //Arrange
            var date = DateTime.Parse("2018-06-22");

            var timesheetGetRepoMock = new Mock <ITimesheetGetRepository>();

            timesheetGetRepoMock.Setup(x => x.GetTimesheetsForLastTwoWeeks(date))
            .Returns(GetTimesheets());

            var employeeGetRepoMock = new Mock <IEmployeeGetRepository>();

            employeeGetRepoMock.Setup(x => x.Get(1)).Returns(new Employee
            {
                FirstName  = "Test",
                HourlyRate = 100,
                State      = State.TX,
                LastName   = "Test",
                Id         = 1
            });

            var sut = new PayrollService(timesheetGetRepoMock.Object, employeeGetRepoMock.Object);

            //Act
            var paystubs     = sut.GetPaystubs(date);
            var firstPaystub = paystubs.First();

            //Assert
            Assert.That(firstPaystub.TotalOvertimeHoursWorked == 0);
            Assert.That(firstPaystub.TotalOvertimePay == 0);
            Assert.That(firstPaystub.TotalRegularHoursWorked == 80);
            Assert.That(firstPaystub.TotalRegularPay == 8000);
        }
Example #4
0
        private static void Main(string[] args)
        {
            // инициализация наших данных
            var fileData = new FileData();

            fileData.Initialize();

            // инициализация сервиса запросов
            var payrollService = new PayrollService();

            // получаем средние зарплаты
            var workPlaceAverageSalaries = payrollService.GetAverageSalaries();

            foreach (var workPlace in workPlaceAverageSalaries)
            {
                Console.WriteLine($"Средняя зарплата по {workPlace.WorkName}: {workPlace.Salary}");
            }

            // получаем самую большую зарплату
            var maxSalary = payrollService.GetTheRichestHead();

            Console.WriteLine($"Cамая высокая зарплата руководителя: {maxSalary}");

            Console.ReadKey(false);
        }
        public ActionResult Create()
        {
            objPayService = new PayrollService();
            objPayItem    = new PayrollItem();

            List <CompanyItem> clsCompany = new List <CompanyItem>();

            clsCompany            = objPayService.BindCompany();
            objPayItem.lstCompany = new List <CompanyItem>();
            objPayItem.lstCompany.AddRange(clsCompany);
            BindMonthYear();

            int cid = 0;

            if (Session["CompID"] != null)
            {
                cid = Convert.ToInt32(Session["CompID"].ToString());
            }
            List <PayrollItem> lstPayoll = new List <PayrollItem>();

            lstPayoll             = objPayService.GridPayroll(cid);
            objPayItem.lstPayroll = new List <PayrollItem>();

            objPayItem.lstPayroll.AddRange(lstPayoll);
            return(View(objPayItem));
        }
Example #6
0
        public void Should_Return_Payslip_When_Employee_Is_Valid()
        {
            // Arrange
            var taxCalculatorService = Substitute.For <ITaxCalculatorService>();

            taxCalculatorService.CalculateIncomeTax(Arg.Any <int>()).Returns(90);
            var employee = new Employee()
            {
                FirstName    = "Abc",
                LastName     = "Test",
                AnnualSalary = 8000,
                PayPeriod    = "Jan-Dec",
                SuperRate    = 0.09m
            };
            // Act
            var payrollService = new PayrollService(taxCalculatorService);
            var paySlip        = payrollService.GeneratePaySlip(employee);

            // Assert
            Assert.NotNull(paySlip);
            Assert.Equal(employee.FirstName + ' ' + employee.LastName, paySlip.Name);
            Assert.Equal(90, paySlip.IncomeTax);
            Assert.Equal(667, paySlip.GrossIncome);
            Assert.Equal(60, paySlip.Super);
            Assert.Equal(577, paySlip.NetIncome);
        }
        public void GetAllIncludedDeductions_Should_GetAllEmployeesDeductions()
        {
            var service        = new PayrollService(empStub, uowStub);
            var listDeductions = new List <EmployeeDeductions>();

            listDeductions.Add(new EmployeeDeductions()
            {
                FixedAmtDeduction = 150M,
                Name = "SSS"
            });
            listDeductions.Add(new EmployeeDeductions()
            {
                FixedAmtDeduction = 500M,
                Name = "PagIbig"
            });
            listDeductions.Add(new EmployeeDeductions()
            {
                FixedAmtDeduction = 1000M,
                Name = "Philhealth"
            });

            empStub
            .FindItem(Arg.Any <int>())
            .Returns(new Employee()
            {
                EmployeeIncludedDeductions = new EmployeeIncludedDeductions()
                {
                    EmployeeDeductions = listDeductions
                }
            });

            decimal result = service.GetAllIncludedDeductions(Arg.Any <int>());

            Assert.AreEqual(1650M, result);
        }
Example #8
0
 public PayrollTests()
 {
     _service = new PayrollService(new PayrollConfig {
         Username = "******",
         Password = "******",
         ApiKey   = "iGF9UtaLc526poWWNgUpiCoO3BckcZUKNF3nhyKul8A=",
         Timeout  = -1
     });
 }
Example #9
0
 public PayrollTests()
 {
     _service = new PayrollService(new PayrollConfig {
         Username   = "******",
         Password   = "******",
         ApiKey     = "iGF9UtaLc526poWWNgUpiCoO3BckcZUKNF3nhyKul8A=",
         ServiceUrl = "https://taapi.heartlandpayrollonlinetest.com/PosWebUI/Test/Test",
         Timeout    = -1
     });
 }
        public void AddDeductionType_Should_AddADeduction()
        {
            var service = new PayrollService(empDeduStub, uowStub);
            EmployeeDeductions result = service.AddDeductionType(new EmployeeDeductions()
            {
                IsFixedAmt        = true,
                FixedAmtDeduction = 2450M,
                Name = "SSS"
            });

            Assert.AreEqual("SSS", result.Name);
        }
Example #11
0
        public void Should_Throw_Exception_When_EmployeeInfo_Is_Null()
        {
            // Arrange
            var taxCalculatorService = Substitute.For <ITaxCalculatorService>();

            // Act
            var payrollService = new PayrollService(taxCalculatorService);

            // Assert
            var exception = Assert.Throws <Exception>(() => payrollService.GeneratePaySlip(null));

            Assert.Equal("Employee details is not setup", exception.Message);
        }
Example #12
0
        public ActionResult PayrollReport()
        {
            PayrollService payrollService = new PayrollService();
            PayrollItem    payrollitem    = new PayrollItem();
            //List<PayrollItem> payrollItemList = new List<PayrollItem>();
            //payrollItemList = payrollService.GetPayrollDetails1();
            //payrollitem.lstPayroll = new List<PayrollItem>();
            //payrollitem.lstPayroll.AddRange(payrollItemList);

            List <CompanyItem> clsCompany = new List <CompanyItem>();

            clsCompany             = payrollService.BindCompany();
            payrollitem.lstCompany = new List <CompanyItem>();
            payrollitem.lstCompany.AddRange(clsCompany);
            BindMonthYear();
            //return View(objPayItem);
            return(View(payrollitem));
        }
Example #13
0
        protected void ProcessData(object sender, DirectEventArgs e)
        {
            try
            {
                PayCodeImportingService service = null;
                service = new PayCodeImportingService(new CSVImporter(CurrentPath.Text));
                List <PayCode> shifts = service.ImportUnvalidated(CurrentPath.Text);

                File.Delete(CurrentPath.Text);



                DictionarySessionStorage storage = new DictionarySessionStorage();
                storage.Save("AccountId", _systemService.SessionHelper.Get("AccountId"));
                storage.Save("UserId", _systemService.SessionHelper.Get("UserId"));
                storage.Save("key", _systemService.SessionHelper.Get("Key"));
                SessionHelper            h        = new SessionHelper(storage, new APIKeyBasedTokenGenerator());
                IPayrollService          PS       = new PayrollService(new PayrollRepository(), h);
                ICompanyStructureService _timeAtt = new CompanyStructureService(new CompanyStructureRepository(), h);
                SystemService            _system  = new SystemService(new SystemRepository(), h);
                PayCodeBatchRunner       runner   = new PayCodeBatchRunner(storage, _system, _timeAtt, PS)
                {
                    Items = shifts, OutputPath = MapPath("~/Imports/" + _systemService.SessionHelper.Get("AccountId") + "/")
                };
                runner.Process();
                this.ResourceManager1.AddScript("{0}.startTask('longactionprogress');", this.TaskManager1.ClientID);
            }
            catch (Exception exp)
            {
                string[] errorDetails = exp.Source.Split(';');
                if (errorDetails.Length == 3)
                {
                    X.Msg.Alert(Resources.Common.Error, Resources.Common.ErrorOperation + "<br />" + Resources.Common.LineNO + errorDetails[2] + "<br />" + GetGlobalResourceObject("Common", "FieldDetails") + ":" + errorDetails[0] + " " + errorDetails[1] + "<br />" + GetGlobalResourceObject("Common", "ExceptionMessage") + exp.Message).Show();
                }
                else
                {
                    X.Msg.Alert(Resources.Common.Error, Resources.Common.ErrorOperation + "<br />" + Resources.Common.LineNO + errorDetails[1] + "<br />" + GetGlobalResourceObject("Common", "FieldDetails") + ":" + errorDetails[0] + "<br />" + GetGlobalResourceObject("Common", "ExceptionMessage") + exp.Message).Show();
                }
                //X.Msg.Alert(Resources.Common.Error, Resources.Common.ErrorOperation + "<br /> " + Resources.Common.LineNO + exp.HelpLink + "<br />" + GetGlobalResourceObject("Common", "FieldDetails") + ":" + exp.Source + " " + exp.Message).Show();
                this.ResourceManager1.AddScript("{0}.stopTask('longactionprogress');", this.TaskManager1.ClientID);
                Viewport1.ActiveIndex = 0;
            }
        }
Example #14
0
        public async Task <IActionResult> OnGet()
        {
            payrun = await PayrunAppService.GetAsync(payrunId.Value);

            if (payrun != null)
            {
                List <PayrunDetail_Dto> payrunDetails = payrun.PayrunDetails.ToList();

                for (int i = 0; i < payrunDetails.Count; i++)
                {
                    PayrunDetail_Dto curDetail        = payrunDetails[i];
                    dynamic          paymentSlipDSRow = PayrollService.GetPaymentSheet(curDetail, JsonSerializer);
                    paymentSlipDSRow.isPosted = payrun.IsPSPosted;

                    dynamicDS.Add(paymentSlipDSRow);
                    dynamicDSS = JsonSerializer.Serialize(dynamicDS);
                }
            }
            return(Page());
        }
        public ActionResult BindEmp(int CompId, int Month, int Year)
        {
            objPayService = new PayrollService();
            objPayItem    = new PayrollItem();
            List <PayrollItem>  PayItem = new List <PayrollItem>();
            List <EmployeeItem> lstEmp  = new List <EmployeeItem>();

            PayItem = objPayService.GetPayrollDetails1(Month, Year, CompId);

            if (PayItem.Count != 0)
            {
                objPayItem.lstPayroll = new List <PayrollItem>();
                TempData["Msg"]       = "EmployeeExists";
                objPayItem.lstPayroll.AddRange(PayItem);
                ViewBag.MonthList = Month;
                ViewBag.YearList  = Year;

                //lstEmp = objPayService.BindEmployee(CompId);
                //objPayItem.lstEmployee = new List<EmployeeItem>();
                //objPayItem.lstEmployee.AddRange(lstEmp);
            }
            else
            {
                TempData["Msg"] = "";
                if (CompId != 0)
                {
                    lstEmp = objPayService.BindEmployee(CompId);
                    objPayItem.lstEmployee = new List <EmployeeItem>();

                    objPayItem.lstEmployee.AddRange(lstEmp);
                }

                PayItem = objPayService.BindPayroll(CompId);
                objPayItem.lstPayroll = new List <PayrollItem>();
                objPayItem.lstPayroll.AddRange(PayItem);
                ViewBag.MonthList = Month;
                ViewBag.YearList  = Year;
            }
            return(PartialView("_List", objPayItem));
        }
Example #16
0
        static void Main(string[] args)
        {
            //ContactService.ReadContactFile(@"C:\Projects\PSC\CSVFiles\Contacts.csv");
            //P60Service.ReadP60File(@"C:\Projects\PSC\CSVFiles\P60s-2013.csv");
            PayrollService.ReadPayrollFile(@"C:\Projects\PSC\CsvOut2\OutPayroll.csv");

            //Filtered Columns
            //List<CsvHeader> requested = new List<CsvHeader>();
            //requested.Add(new CsvHeader("MobileNo",typeof(string)));
            //requested.Add(new CsvHeader("Title",typeof(int)));
            //ContactService.ReadContactFileWithRequestedFields(@"C:\Projects\PSC\CSVFiles\Contacts.csv", requested);


            /*Write CSV*/
            //PayrollService.WritePayrollCSVFile(@"C:\Projects\PSC\CSVFiles\Payroll.csv", @"C:\Projects\PSC\CsvOut2\OutPayroll.csv");

            PayrollService.WritePayrollCSVFile(@"C:\Projects\PSC\CsvOut2\OutPayroll.csv", @"C:\Projects\PSC\CsvOut3\", "488");

            ContactService.WriteCSVFile(@"C:\Projects\PSC\CSVFiles\Contacts.csv", @"C:\Projects\PSC\CsvOut3\", "488");

            Console.ReadLine();
        }
        public void GetEmployeePayrollHistoryTotalNetpay_Should_GetTotal()
        {
            var service = new PayrollService(empStub, uowStub);
            var list    = new List <PayrollHistory>();

            for (int i = 0; i < 4; i++)
            {
                list.Add(new PayrollHistory()
                {
                    GrossIncome = 25000M,
                    NetIncome   = 15000M
                });
            }

            empStub.FindItem(Arg.Any <int>()).Returns(new Employee()
            {
                PayrollHistories = list
            });

            decimal result = service.GetEmployeePayrollHistoryTotalNetpay(Arg.Any <int>());

            Assert.AreEqual(60000M, result);
        }
        public ActionResult Create(IEnumerable <EmployeeItem> lstEmployee, PayrollItem payroll, IEnumerable <PayrollItem> lstPayroll)
        {
            string strMsg = "";

            if (TempData["Msg"] != "")
            {
                strMsg = TempData["Msg"].ToString();
            }

            objPayService = new PayrollService();
            List <CompanyItem> clsCompany = new List <CompanyItem>();

            clsCompany            = objPayService.BindCompany();
            objPayItem.lstCompany = new List <CompanyItem>();
            objPayItem.lstCompany.AddRange(clsCompany);
            BindMonthYear();
            var lstEmp = lstEmployee.ToList();

            for (int i = 0; i < lstEmployee.ToList().Count; i++)
            {
                objPayItem = new PayrollItem();

                var ID = lstEmp[i].id;

                objPayItem.Month  = Convert.ToInt32(payroll.Month);
                objPayItem.Year   = Convert.ToInt32(payroll.Year);
                objPayItem.CompId = Convert.ToInt32(payroll.CompId);
                objPayItem.Empid  = lstEmp[i].id;
                objPayItem.OT     = lstEmp[i].OT;
                objPayItem.DA     = lstEmp[i].DA;
                if (payroll.Month == 2)
                {
                    if ((payroll.Year % 4 == 0 && payroll.Year % 100 != 0) || (payroll.Year % 400 == 0))
                    {
                        objPayItem.TotalDays = 29;

                        objPayItem.Days = lstEmp[i].Days;
                    }
                    else
                    {
                        objPayItem.TotalDays = 28;
                        objPayItem.Days      = lstEmp[i].Days;
                    }
                }
                if (payroll.Month == 1 || payroll.Month == 3 || payroll.Month == 5 || payroll.Month == 7 || payroll.Month == 8 || payroll.Month == 10 || payroll.Month == 12)
                {
                    objPayItem.TotalDays = 31;
                    if (lstEmp[i].Days > 31)
                    {
                        objPayItem.lstEmployee = new List <EmployeeItem>();
                        objPayItem.lstEmployee.AddRange(lstEmp);
                        ViewBag.ErrorMsg = "Data Not Successfully Added..Check Proper Days";
                        ModelState.AddModelError(string.Empty, "The item cannot be removed");
                        return(View());
                    }
                    else
                    {
                        objPayItem.Days = lstEmp[i].Days;
                    }
                }
                if (payroll.Month == 4 || payroll.Month == 6 || payroll.Month == 9 || payroll.Month == 11)
                {
                    objPayItem.TotalDays = 30;
                    if (lstEmp[i].Days > 30)
                    {
                        ViewBag.ErrorMsg = "Data Not Successfully Added..Check Proper Days";
                        return(View(objPayItem));
                    }
                    else
                    {
                        objPayItem.Days = lstEmp[i].Days;
                    }
                }
                List <CompanyItem> clsCompany1 = new List <CompanyItem>();
                clsCompany1           = objPayService.BindCompany();
                objPayItem.lstCompany = new List <CompanyItem>();
                objPayItem.lstCompany.AddRange(clsCompany1);
                if (strMsg.ToString() == "")
                {
                    objPayService.InsertPayroll(objPayItem);
                }
                else
                {
                    objPayService.UpdatePayroll(objPayItem);
                }
            }
            int cid = 0;

            if (Session["CompID"] != null)
            {
                cid = Convert.ToInt32(Session["CompID"].ToString());
            }
            List <PayrollItem> lstPayoll = new List <PayrollItem>();

            lstPayoll             = objPayService.GridPayroll(cid);
            objPayItem.lstPayroll = new List <PayrollItem>();
            objPayItem.lstPayroll.AddRange(lstPayoll);
            ModelState.Clear();
            return(View(objPayItem));
        }
Example #19
0
        /// <summary>
        /// 保存表单(新增、修改)
        /// </summary>
        /// <param name="keyValue">主键值</param>
        /// <param name="entity">实体对象</param>
        /// <returns></returns>
        public void SaveForm(string keyValue, string inport, PayrollEntity entity)
        {
            try
            {
                string searchColumnName = "员工编号";
                string totalColumnName  = "总计";

                if (inport != "")
                {
                    // 1.导入功能
                    DataTable dt = ExcelHelper.ExcelImport(Utils.GetMapPath(inport));

                    // 2.取出所有得薪资项
                    PayitemService payservice = new PayitemService();
                    IEnumerable <PayitemEntity> payitemlist = payservice.GetList(w => w.disable == "1");

                    #region 3.取出所有的人员信息

                    List <string> employIds = new List <string>();
                    foreach (DataRow row in dt.Rows)
                    {
                        if (dt.Columns.Contains(searchColumnName))
                        {
                            employIds.Add(row[searchColumnName].ToString());
                        }
                    }

                    EmployinfoService employservice           = new EmployinfoService();
                    IEnumerable <EmployinfoEntity> employlist = employservice.GetAllList(employIds);

                    #endregion

                    #region 4.获取excel中需要遍历的薪资项

                    List <string> payitems = new List <string>();
                    foreach (PayitemEntity item in payitemlist)
                    {
                        if (dt.Columns.Contains(item.dispName))
                        {
                            payitems.Add(item.dispName);
                        }
                    }

                    #endregion

                    PayrollService payrollService = new PayrollService();
                    int            PayrollId      = payrollService.FindMaxID() + 1;

                    int     employCount = 0; // 本次导入人数
                    decimal TotalAmount = 0; // 本次应发总金额

                    #region 5.新增子表

                    List <PaydetailEntity> detailList   = new List <PaydetailEntity>();
                    PaydetailEntity        detailEntity = null;
                    if (dt != null && dt.Rows.Count > 0)
                    {
                        PaydetailService detailService = new PaydetailService();
                        foreach (DataRow row in dt.Rows)
                        {
                            int?empid = 0;  // 员工编号

                            #region 获取员工信息
                            if (row[searchColumnName] != null && row[searchColumnName].ToString().Length != 0)
                            {
                                EmployinfoEntity employEntity = employlist.Where(w => w.empid == Convert.ToInt32(row[searchColumnName])).FirstOrDefault();
                                if (employEntity != null)
                                {
                                    empid = employEntity.empid;
                                    employCount++;
                                }
                                else
                                {
                                    continue;
                                }
                            }
                            #endregion

                            #region 总计列不存在,或者 总计 非数字类型,不记入数据库
                            if (row[totalColumnName] == null || row[totalColumnName].ToString().Length == 0)
                            {
                                continue;
                            }
                            else
                            {
                                try
                                {
                                    TotalAmount += decimal.Round(Convert.ToDecimal(row[totalColumnName]), 2, MidpointRounding.AwayFromZero);
                                }
                                catch (Exception)
                                {
                                    continue;
                                }
                            }
                            #endregion

                            #region 遍历行中的项,一项存一条数据
                            foreach (string item in payitems)
                            {
                                detailEntity       = new PaydetailEntity();
                                detailEntity.empid = empid;

                                PayitemEntity itemEntity = payitemlist.Where(w => w.dispName == item).FirstOrDefault();
                                if (itemEntity != null)
                                {
                                    detailEntity.itemcode = itemEntity.itemcode;
                                    detailEntity.amount   = Convert.ToDecimal(row[itemEntity.dispName]);
                                }

                                detailEntity.payrollid = PayrollId;

                                detailEntity.CreatorName = Code.OperatorProvider.Provider.Current().UserName;;
                                detailEntity.CreateDate  = DateTime.Now;

                                detailList.Add(detailEntity);
                            }
                            #endregion
                        }
                    }

                    #endregion

                    #region 6.新增主表

                    // 组合主表字段
                    PayrollEntity parollEntity = new PayrollEntity();
                    parollEntity.PayrollId   = PayrollId;
                    parollEntity.period      = entity.period;
                    parollEntity.status      = 0;
                    parollEntity.employnum   = employCount;
                    parollEntity.Totalamount = decimal.Round(TotalAmount, 2, MidpointRounding.AwayFromZero);

                    parollEntity.CreatorId   = 0;
                    parollEntity.CreatorName = Code.OperatorProvider.Provider.Current().UserName;
                    parollEntity.CreateDate  = DateTime.Now;

                    #endregion

                    payrollService.SaveUploadData(parollEntity, detailList);
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
 public PayrollServiceTests()
 {
     sut = new PayrollService();
 }