コード例 #1
0
        public ActionResult DeleteConfirmed(int id)
        {
            BirthInfoOnPayBenefit birthInfoOnPayBenefit = db.BirthInfoOnPayBenefits.Find(id);

            db.BirthInfoOnPayBenefits.Remove(birthInfoOnPayBenefit);
            db.SaveChanges();
            return(RedirectToAction("Details", "LegalReportSections", new { id = birthInfoOnPayBenefit.ReportId }));
        }
コード例 #2
0
 public ActionResult Edit([Bind(Include = "Id,ReportId,PIN,LastName,FirstName,MiddleName,BirthDate,GenderId,PassportSeries,PassportNo,PassportDate,PassportOrg,BirthCertificateNo,DateFrom,DateTo,Citizenship,DeadCadThrowRepublicBudget,SixDay,Highlands,SalaryOf3Months,BirthCountWorkingDays,AmountAverageEarnings,BirthCashThrowLegalOrg,BirthCadThrowRepublicBudget")] BirthInfoOnPayBenefit birthInfoOnPayBenefit)
 {
     if (ModelState.IsValid)
     {
         db.Entry(birthInfoOnPayBenefit).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Details", "LegalReportSections", new { id = birthInfoOnPayBenefit.ReportId }));
     }
     ViewBag.GenderId = new SelectList(db.Genders, "Id", "Name", birthInfoOnPayBenefit.GenderId);
     ViewBag.ReportId = new SelectList(db.LegalReportSections, "Id", "Id", birthInfoOnPayBenefit.ReportId);
     return(View(birthInfoOnPayBenefit));
 }
コード例 #3
0
        // GET: BirthInfoOnPayBenefits/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            BirthInfoOnPayBenefit birthInfoOnPayBenefit = db.BirthInfoOnPayBenefits.Find(id);

            if (birthInfoOnPayBenefit == null)
            {
                return(HttpNotFound());
            }
            return(View(birthInfoOnPayBenefit));
        }
コード例 #4
0
        // GET: BirthInfoOnPayBenefits/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            BirthInfoOnPayBenefit birthInfoOnPayBenefit = db.BirthInfoOnPayBenefits.Find(id);

            if (birthInfoOnPayBenefit == null)
            {
                return(HttpNotFound());
            }
            ViewBag.GenderId = new SelectList(db.Genders, "Id", "Name", birthInfoOnPayBenefit.GenderId);
            ViewBag.ReportId = new SelectList(db.LegalReportSections, "Id", "Id", birthInfoOnPayBenefit.ReportId);
            return(View(birthInfoOnPayBenefit));
        }
コード例 #5
0
        public ActionResult Create([Bind(Include = "Id,ReportId,PIN,LastName,FirstName,MiddleName,BirthDate,GenderId,PassportSeries,PassportNo,PassportDate,PassportOrg,BirthCertificateNo,DateFrom,DateTo,Citizenship,DeadCadThrowRepublicBudget,SixDay,Highlands,SalaryOf3Months,BirthCountWorkingDays,AmountAverageEarnings,BirthCashThrowLegalOrg,BirthCadThrowRepublicBudget")] BirthInfoOnPayBenefit birthInfoOnPayBenefit)
        {
            if (ModelState.IsValid)
            {
                var positionId = new Guid("{DF1C36BB-85B0-4C53-8729-F18A5D6615F4}");

                var report  = db.LegalReportSections.Find(birthInfoOnPayBenefit.ReportId);
                var company = db.Companies.Find(report.CompanyId);
                if (company != null)
                {
                    //var RGUSOrgId = new Guid("{6853C82D-751E-40DD-AA14-21AF0AB7C64E}");
                    var cissameta = new CissaMeta.MetaProxy();
                    //var code = cissameta.OrgCode(company.OrgId ?? Guid.Empty);
                    var cissa_portal_users = cissameta.GetUsersByPositionId(positionId, company.OrgId ?? Guid.Empty);
                    if (cissa_portal_users != null && cissa_portal_users.Count() > 0)
                    {
                        var user    = cissa_portal_users.First();
                        var context = CreateContext(user.User_Name, user.Id);
                        try
                        {
                            CalcBirthInfoOnPayBenefits.Execute(context, birthInfoOnPayBenefit);

                            db.BirthInfoOnPayBenefits.Add(birthInfoOnPayBenefit);
                            db.SaveChanges();
                            return(RedirectToAction("Details", "LegalReportSections", new { id = birthInfoOnPayBenefit.ReportId }));
                        }
                        catch (Exception e)
                        {
                            ModelState.AddModelError("", e.Message);
                        }
                    }
                }
            }

            ViewBag.GenderId = new SelectList(db.Genders, "Id", "Name", birthInfoOnPayBenefit.GenderId);
            return(View(birthInfoOnPayBenefit));
        }
コード例 #6
0
        public static void Execute(WorkflowContext context, BirthInfoOnPayBenefit birthInfoOnPayBenefit)
        {
            var sixDay    = birthInfoOnPayBenefit.SixDay;
            var highlands = birthInfoOnPayBenefit.Highlands;

            var dateFrom = birthInfoOnPayBenefit.DateFrom;
            var dateTo   = birthInfoOnPayBenefit.DateTo;

            var salary = birthInfoOnPayBenefit.SalaryOf3Months;

            //Расчет по ИП/КФХ, для примера период с 15.09 по 18.01
            var amount          = GetAmount(context);
            var fdBeginMonthDay = new DateTime(dateFrom.Value.Year, dateFrom.Value.Month, 1); //01.09
            var fd = fdBeginMonthDay.AddMonths(-3);                                           //01.06
            var holidayDaysPrevM  = GetHolidays(context, fd, fdBeginMonthDay);                //количество праздничных дней с 01.06 по 31.08
            var workingDaysPrevM  = CalcWorkingDays(fd, fdBeginMonthDay);                     //количество рабочих дней 5 дневка (5д) с 01.06 по 31.08
            var factWorkDaysPrevM = workingDaysPrevM - holidayDaysPrevM - 1;                  //фактические рабочие дни, за исключением праздников (5д)

            var workingSixDaysPrevM  = CalcWorkingSixDays(fd, fdBeginMonthDay);               //количество рабочих дней (6д) с 01.06 по 31.08
            var factWorkSixDaysPrevM = workingSixDaysPrevM - holidayDaysPrevM - 1;            //фактические рабочие дни, за исключением праздников (6д)

            //расчет количество рабочих дней с 15.09 по 18.01
            var holidayDays  = GetHolidays(context, dateFrom.Value, dateTo.Value);  //количество праздничных дней с 15.09 по 18.01
            var workingDays  = CalcWorkingDays(dateFrom.Value, dateTo.Value);       //количество рабочих дней (5д) с 15.09 по 18.01
            var factWorkDays = workingDays - holidayDays;                           //фактические рабочие дни, за исключением праздников (5д)

            var workingSixDays  = CalcWorkingSixDays(dateFrom.Value, dateTo.Value); //количество рабочих дней (6д) с 15.09 по 18.01
            var factWorkSixDays = workingSixDays - holidayDays;                     //фактические рабочие дни, за исключением праздников (6д)

            //расчет количество рабочих дней с 15.09 по 30.09
            var beginDateFrom    = dateFrom;                                                                                                                                     //15.09
            var beginDateTo      = new DateTime(beginDateFrom.Value.Year, beginDateFrom.Value.Month, DateTime.DaysInMonth(beginDateFrom.Value.Year, beginDateFrom.Value.Month)); //30.09
            var countBeginDays   = CalcWorkingDays(beginDateFrom.Value, beginDateTo);                                                                                            //15.09 по 30.09 (5д)
            var beginHolidayDays = GetHolidays(context, beginDateFrom.Value, beginDateTo);                                                                                       //кол. праздничных дней с 15.09 по 30.09
            var beginWorkDays    = countBeginDays - beginHolidayDays;                                                                                                            //рабочие дни с 15.09 по 30.09 без праздников (5д)

            var countBeginSixDays = CalcWorkingSixDays(beginDateFrom.Value, beginDateTo);                                                                                        //15.09 по 30.09 ( рабочих дней) (6д)
            var beginWorkSixDays  = countBeginSixDays - beginHolidayDays;                                                                                                        //рабочие дни с 15.09 по 30.09 без праздников (6д)

            //расчет количество рабочих дней с 01.09 по 30.09
            var startMonthDay    = new DateTime(beginDateFrom.Value.Year, beginDateFrom.Value.Month, 1); //01.09
            var countStartDays   = CalcWorkingDays(startMonthDay, beginDateTo);                          //01.09 по 30.09 ( рабочих дней) (5д)
            var startHolidayDays = GetHolidays(context, startMonthDay, beginDateTo);                     //кол. праздничных дней с 01.09 по 30.09
            var startWorkDays    = countStartDays - startHolidayDays;                                    //рабочие дни с 01.09 по 30.09 без праздников (5д)

            var countStartSixDays = CalcWorkingSixDays(startMonthDay, beginDateTo);                      //01.09 по 30.09 ( рабочих дней) (6д)
            var startWorkSixDays  = countStartSixDays - startHolidayDays;                                //рабочие дни с 01.09 по 30.09 без праздников (6д)

            //расчет количество рабочих дней с 01.01 по 18.01
            var endDateTo      = dateTo;                                                       //18.01
            var endDateFrom    = new DateTime(endDateTo.Value.Year, endDateTo.Value.Month, 1); //01.01
            var countEndDays   = CalcWorkingDays(endDateFrom, endDateTo.Value);                //01.01 по 18.01 (5д)
            var endHolidayDays = GetHolidays(context, endDateFrom, endDateTo.Value);           //кол. праздничных дней с 01.01 по 18.01
            var endWorkDays    = countEndDays - endHolidayDays;                                //рабочие дни с 01.01 по 18.01 без праздников (5д)

            var countEndSixDays = CalcWorkingSixDays(endDateFrom, endDateTo.Value);            //01.01 по 18.01 (6д)
            var endWorkSixDays  = countEndSixDays - endHolidayDays;                            //рабочие дни с 01.01 по 18.01 без праздников (6д)

            //расчет количество рабочих дней с 01.01 по 31.01
            var endMonthFirstDay   = new DateTime(endDateFrom.Year, endDateFrom.Month, 1);                                                         //01.01
            var endMonthDateTo     = new DateTime(endDateFrom.Year, endDateFrom.Month, DateTime.DaysInMonth(endDateFrom.Year, endDateFrom.Month)); //31.01
            var countEndWorkDays   = CalcWorkingDays(endMonthFirstDay, endMonthDateTo);                                                            //01.01 по 31.01 ( рабочих дня)(5д)
            var endFullHolidayDays = GetHolidays(context, endMonthFirstDay, endMonthDateTo);                                                       //кол. праздничных дней с 01.01 по 31.01
            var endFullWorkDays    = countEndWorkDays - endFullHolidayDays;                                                                        //рабочие дни с 01.01 по 31.01 без праздников (5д)

            var countEndWorkSixDays = CalcWorkingSixDays(endMonthFirstDay, endMonthDateTo);                                                        //01.01 по 31.01 ( рабочих дня)(6д)
            var endFullWorkSixDays  = countEndWorkSixDays - endFullHolidayDays;                                                                    //рабочие дни с 01.01 по 31.01 без праздников (6д)

            //throw new ApplicationException(factWorkSixDaysPrevM.ToString() + " : " + beginWorkSixDays.ToString() + " : " + startWorkSixDays.ToString() + " : " + endWorkSixDays.ToString() + " : " + endFullWorkSixDays.ToString());
            //расчет количество полных месяцев
            var allMonths  = (((dateTo.Value.Year - dateFrom.Value.Year) * 12) + (dateTo.Value.Month - dateFrom.Value.Month) + 1);
            var countMonth = allMonths - 2; //2=первый и последний месяц

            //для высокогорье
            var countMonthSixAmount = factWorkSixDays - beginWorkSixDays;
            var countMonthAmount    = factWorkDays - beginWorkDays;


            //calc
            if (sixDay)                                                        //6д
            {
                var amountFor3Month    = salary / factWorkSixDaysPrevM;        //средний зп в день за (июнь, июль, август)
                var tenWorkDayIP       = amountFor3Month * 10;                 //10 раб дней за счет средств работодателя
                var amountDay          = (decimal)amount / startWorkSixDays;   //заработок в день 1000/21д
                var firstMonthWD       = beginWorkSixDays - 10;                //рабочие дни первого месяца c 15.09 по 30.09 - 10 дней
                var paymentDays        = firstMonthWD * amountDay;             //оплата за 1 день первого месяца
                var amountMonth        = (decimal)amount * countMonth;         //каждый месяц по 1000
                var amountDayLastMonth = (decimal)amount / endFullWorkSixDays; //заработок в день на кпоследний месяц
                var paymentLastDays    = amountDayLastMonth * endWorkSixDays;
                var totalAmountRB      = paymentDays + amountMonth + paymentLastDays;

                birthInfoOnPayBenefit.BirthCountWorkingDays       = factWorkSixDays;
                birthInfoOnPayBenefit.AmountAverageEarnings       = Math.Round(amountFor3Month.Value);
                birthInfoOnPayBenefit.BirthCashThrowLegalOrg      = Math.Round(tenWorkDayIP.Value); //За счет средств работодателя
                birthInfoOnPayBenefit.BirthCadThrowRepublicBudget = totalAmountRB;                  //За счет республиканского бюджета
                //obj.BirthTotalAmount = Math.Round((decimal?)appMaternity["BirthCashThrowLegalOrg"] ?? 0) + Math.Round((decimal?)appMaternity["BirthCadThrowRepublicBudget"] ?? 0);
            }
            else //5д
            {
                var amountFor3Month    = salary / factWorkDaysPrevM; //средний зп в день за (июнь, июль, август)
                var tenWorkDayIP       = amountFor3Month * 10;                        //10 раб дней за счет средств работодателя
                var amountDay          = (decimal)amount / startWorkDays;             //заработок в день
                var firstMonthWD       = beginWorkDays - 10;                          //рабочие дни первого месяца c 15.09 по 30.09
                var paymentDays        = firstMonthWD * amountDay;                    //оплата за 1 день первого месяца
                var amountMonth        = (decimal)amount * countMonth;                //каждый месяц по 1000
                var amountDayLastMonth = (decimal)amount / endFullWorkDays;           //заработок в день на кпоследний месяц 1000/21д = 47,61
                var paymentLastDays    = amountDayLastMonth * endWorkDays;            //47,61 * 12д = 571,428
                var totalAmountRB      = paymentDays + amountMonth + paymentLastDays; //47,61 + 3000 + 571,428 = 3619,038;

                birthInfoOnPayBenefit.BirthCountWorkingDays       = factWorkDays;
                birthInfoOnPayBenefit.AmountAverageEarnings       = Math.Round(amountFor3Month.Value);
                birthInfoOnPayBenefit.BirthCashThrowLegalOrg      = Math.Round(tenWorkDayIP.Value);
                birthInfoOnPayBenefit.BirthCadThrowRepublicBudget = totalAmountRB;
                //obj.BirthTotalAmount = Math.Round((decimal?)appMaternity["BirthCashThrowLegalOrg"] ?? 0) + Math.Round((decimal?)appMaternity["BirthCadThrowRepublicBudget"] ?? 0);
            }
            //высокогорье
            if (highlands)
            {
                if (sixDay) //6д
                {
                    var amountFor3Month = salary / factWorkSixDaysPrevM;
                    var tenWorkDayIP    = amountFor3Month * 10; //10 раб дней за счет средств работодателя
                    var firstMonthWD    = beginWorkSixDays - 10;
                    var amountDay       = amountFor3Month * firstMonthWD;
                    var allMonthAmount  = countMonthSixAmount * amountFor3Month;
                    var totalAmountRB   = amountDay + allMonthAmount;

                    birthInfoOnPayBenefit.BirthCountWorkingDays       = factWorkSixDays;
                    birthInfoOnPayBenefit.AmountAverageEarnings       = Math.Round(amountFor3Month.Value);
                    birthInfoOnPayBenefit.BirthCashThrowLegalOrg      = Math.Round(tenWorkDayIP.Value);
                    birthInfoOnPayBenefit.BirthCadThrowRepublicBudget = totalAmountRB;
                    //obj.BirthTotalAmount = Math.Round((decimal?)appMaternity["BirthCashThrowLegalOrg"] ?? 0) + Math.Round((decimal?)appMaternity["BirthCadThrowRepublicBudget"] ?? 0);
                }
                else //5д
                {
                    var amountFor3Month = salary / factWorkDaysPrevM;
                    var tenWorkDayIP    = amountFor3Month * 10; //10 раб дней за счет средств работодателя
                    var firstMonthWD    = beginWorkDays - 10;
                    var amountDay       = amountFor3Month * firstMonthWD;
                    var allMonthAmount  = countMonthAmount * amountFor3Month;
                    var totalAmountRB   = amountDay + allMonthAmount;

                    birthInfoOnPayBenefit.BirthCountWorkingDays       = factWorkDays;
                    birthInfoOnPayBenefit.AmountAverageEarnings       = Math.Round(amountFor3Month.Value);
                    birthInfoOnPayBenefit.BirthCashThrowLegalOrg      = Math.Round(tenWorkDayIP.Value);
                    birthInfoOnPayBenefit.BirthCadThrowRepublicBudget = totalAmountRB;
                    //obj.BirthTotalAmount = Math.Round((decimal?)appMaternity["BirthCashThrowLegalOrg"] ?? 0) + Math.Round((decimal?)appMaternity["BirthCadThrowRepublicBudget"] ?? 0);
                }
            }
        }