예제 #1
0
        public async Task <ActionResult <Payroll> > PostPayrolls([FromBody] PayrollFormViewModel payroll)
        {
            VerifyUser();
            var model = new Payroll()
            {
                Salary            = payroll.Salary,
                Tax               = payroll.Tax,
                BPJSKesehatan     = payroll.BPJSKesehatan,
                BPJSTenagaKerja   = payroll.BPJSTenagaKerja,
                NPWP              = payroll.NPWP,
                NameBankAccount   = payroll.NameBankAccount,
                Bank              = payroll.Bank,
                BankAccountNumber = payroll.BankAccountNumber,
                BankBranch        = payroll.BankBranch,
                BackDatedPayment  = payroll.BackDatedPayment,
                Allowance         = payroll.Allowance,
                Incentive         = payroll.Incentive,
                PaidLeave         = payroll.PaidLeave,
                UnPaidLeave       = payroll.UnPaidLeave,
                SalaryPeriod      = payroll.SalaryPeriod,
                Month             = payroll.Month,
                Year              = payroll.Year,
                TakeHomePay       = payroll.TakeHomePay
            };

            EntityExtension.FlagForCreate(model, _identityService.Username, UserAgent);
            _context.Payrolls.Add(model);
            await _context.SaveChangesAsync();

            return(Created("", model));
        }
예제 #2
0
        public async Task <IActionResult> PutPayrolls(int id, [FromBody] PayrollFormViewModel payroll)
        {
            /*if (id != workingExperience.Id)
             * {
             *  return BadRequest();
             * }*/

            try
            {
                VerifyUser();
                var model = await _context.Payrolls.FindAsync(id);

                {
                    model.Salary            = payroll.Salary;
                    model.Tax               = payroll.Tax;
                    model.BPJSKesehatan     = payroll.BPJSKesehatan;
                    model.BPJSTenagaKerja   = payroll.BPJSTenagaKerja;
                    model.NPWP              = payroll.NPWP;
                    model.NameBankAccount   = payroll.NameBankAccount;
                    model.Bank              = payroll.Bank;
                    model.BankAccountNumber = payroll.BankAccountNumber;
                    model.BankBranch        = payroll.BankBranch;
                    model.BackDatedPayment  = payroll.BackDatedPayment;
                    model.Allowance         = payroll.Allowance;
                    model.Incentive         = payroll.Incentive;
                    model.PaidLeave         = payroll.PaidLeave;
                    model.UnPaidLeave       = payroll.UnPaidLeave;
                    model.SalaryPeriod      = payroll.SalaryPeriod;
                    model.Month             = payroll.Month;
                    model.Year              = payroll.Year;
                    model.TakeHomePay       = payroll.TakeHomePay;
                };
                EntityExtension.FlagForUpdate(model, _identityService.Username, UserAgent);
                _context.Payrolls.Update(model);
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!PayrollExist(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
        public ActionResult Details(PayrollFormViewModel model, OptionsViewModel moreInfo, PayrollDueVM grid1, SubPeriodsVM grid2)
        {
            List <Error> errors = new List <Error>();

            if (ModelState.IsValid)
            {
                if (ServerValidationEnabled)
                {
                    errors = _hrUnitOfWork.SiteRepository.CheckForm(new CheckParm
                    {
                        CompanyId    = CompanyId,
                        ObjectName   = "Payroll",
                        TableName    = "Payrolls",
                        ParentColumn = "CompanyId",
                        Columns      = Models.Utils.GetColumnViews(ModelState.Where(a => !a.Key.Contains('.'))),
                        Culture      = Language
                    });

                    if (errors.Count() > 0)
                    {
                        foreach (var e in errors)
                        {
                            foreach (var errorMsg in e.errors)
                            {
                                ModelState.AddModelError(errorMsg.field, errorMsg.message);
                            }
                        }

                        return(Json(Models.Utils.ParseFormErrors(ModelState)));
                    }
                }

                Payrolls record;
                var      PeriodIdLocal = _hrUnitOfWork.Repository <PeriodName>().Where(a => a.Id == model.PeriodId).Select(a => new { Local = a.IsLocal }).FirstOrDefault();

                //insert
                if (model.Id == 0)
                {
                    record = new Payrolls();
                    AutoMapper(new Models.AutoMapperParm
                    {
                        Destination = record,
                        Source      = model,
                        ObjectName  = "Payroll",
                        Options     = moreInfo,
                        Transtype   = TransType.Insert
                    });
                    record.CreatedUser = UserName;
                    record.CreatedTime = DateTime.Now;
                    record.IsLocal     = PeriodIdLocal.Local;
                    record.CompanyId   = record.IsLocal ? CompanyId : (int?)null;
                    _hrUnitOfWork.PayrollRepository.Add(record);
                }
                //update
                else
                {
                    record = _hrUnitOfWork.Repository <Payrolls>().FirstOrDefault(a => a.Id == model.Id);
                    AutoMapper(new Models.AutoMapperParm
                    {
                        Destination = record,
                        Source      = model,
                        ObjectName  = "Payroll",
                        Options     = moreInfo,
                        Transtype   = TransType.Update
                    });
                    record.ModifiedTime = DateTime.Now;
                    record.ModifiedUser = UserName;
                    record.IsLocal      = PeriodIdLocal.Local;
                    record.CompanyId    = record.IsLocal ? CompanyId : (int?)null;
                    _hrUnitOfWork.PayrollRepository.Attach(record);
                    _hrUnitOfWork.PayrollRepository.Entry(record).State = EntityState.Modified;
                }

                // Save grid1
                var payDueList = new PayDueListViewModel();
                payDueList = SaveGrid1(grid1, ModelState.Where(a => a.Key.Contains("grid")), record);
                errors     = payDueList.errors;
                errors     = SaveGrid2(grid2, payDueList.payDueList, ModelState.Where(a => a.Key.Contains("grid")), record, model.Period.GetValueOrDefault());

                if (errors.Count > 0)
                {
                    return(Json(errors.First().errors.First().message));
                }

                errors = SaveChanges(Language);

                var message = "OK";
                if (errors.Count > 0)
                {
                    message = errors.First().errors.First().message;
                }

                return(Json(message));
            }

            return(Json(Models.Utils.ParseFormErrors(ModelState)));
        }