private static Accrual CreateAccrualInstance(Ending ending) { var accrualActionRecords = new List <AccrualActionRecord> { new AccrualActionRecord("e1520621-a182-4404-b927-1a9b4a2c0c80", AccrualAction.Created, null, null, null, new DateTime(2018, 10, 10)) }; var accrual = new Accrual( accrualId: Guid.Parse("34bb297c-630e-4036-84c6-8925eaa88f80"), userId: "unittest|784734738", name: "Test Name", startingHours: 50, accrualRate: 10, startingDate: new DateTime(2018, 7, 4), accrualFrequency: AccrualFrequency.Biweekly, ending: ending, lastModified: new DateTime(2018, 10, 4, 16, 43, 14, 549), isHeart: false, isArchived: false, hourlyRate: 15, dayOfPayA: 5, dayOfPayB: 20, minHours: 40, maxHours: 255, actions: accrualActionRecords); return(accrual); }
public ActionResult Index() { ApplicationUser currentUser = (from u in _context.Users where u.UserName == User.Identity.Name select u).FirstOrDefault(); LeaveList list = new LeaveList(); list.Holidays = _context.PublicHoliday.ToList(); list.UserLeaves = (from u in _context.Users where u.Manager.Id == currentUser.Id select new UserLeave() { UserID = u.Id, Leaves = (from tbl in _context.Leave where tbl.User.Id == u.Id select tbl).ToList(), Name = u.FullName, EmploymentStartDate = u.EmploymentStartDate }).ToList(); List <UserLeave> subLeaves = (from u in _context.Users where u.Manager.Manager.Id == currentUser.Id select new UserLeave() { UserID = u.Id, Leaves = (from tbl in _context.Leave where tbl.User.Id == u.Id select tbl).ToList(), Name = u.FullName, EmploymentStartDate = u.EmploymentStartDate }).ToList(); list.UserLeaves.AddRange(subLeaves); list.Leaves = _context.Leave.Where(tbl => tbl.User.Id == currentUser.Id).ToList(); list.Leaves = Deferral.AddDeferral(list.Leaves, list.Holidays); list.Leaves = Accrual.AddAccrual(currentUser.EmploymentStartDate, currentUser.FullName, list.Leaves); foreach (UserLeave userLeave in list.UserLeaves) { userLeave.Leaves = Deferral.AddDeferral(userLeave.Leaves, list.Holidays); userLeave.Leaves = Accrual.AddAccrual(userLeave.EmploymentStartDate, userLeave.Name, userLeave.Leaves); } list.FormModel = new LeaveFormModel() { StartDate = DateTime.Now.Date, EndDate = DateTime.Now.Date, UserID = currentUser.Id, RequestDate = DateTime.Now, LeaveStateID = 1, Note = "", Attachement = "", Institution = "", StudentNumber = "" }; ViewBag.LeaveStateID = new SelectList(_context.LeaveState, "LeaveStateID", "Description", 1); return(View(list)); }
private static Accrual CreateAccrualInstance(AccrualFrequency frequency, Ending ending, int?dayOfPayA = null, int?dayOfPayB = null) { var accrual = new Accrual( accrualId: Guid.Parse("34bb297c-630e-4036-84c6-8925eaa88f80"), name: "Test Name", userId: "unittest|784734738", startingHours: 50, maxHours: 255, accrualRate: 10, accrualFrequency: frequency, dayOfPayA: dayOfPayA, dayOfPayB: dayOfPayB, startingDate: new DateTime(2018, 12, 1), ending: ending, isHeart: false, isArchived: false, minHours: 40, lastModified: new DateTime(2018, 10, 10, 3, 1, 12, 154), hourlyRate: 15, actions: new List <AccrualActionRecord> { new AccrualActionRecord("c153da22-6df0-4fab-8069-7ef52946c635", AccrualAction.Created, null, null, null, new DateTime(2018, 10, 10)), new AccrualActionRecord("e74f6d32-7ca8-4d6c-beab-89a6ff18aec3", AccrualAction.Adjustment, new DateTime(2018, 12, 3), 8, "jury duty 12/3/18", new DateTime(2018, 10, 10)), new AccrualActionRecord("1fdfb091-0c99-4141-8943-82df48759ebd", AccrualAction.Adjustment, new DateTime(2018, 12, 4), 8, "jury duty 12/4/18", new DateTime(2018, 10, 10)), new AccrualActionRecord("912304e3-ac13-4782-aa19-1be009ef164f", AccrualAction.Adjustment, new DateTime(2018, 12, 5), 8, "jury duty 12/5/18", new DateTime(2018, 10, 10)), new AccrualActionRecord("2badfd74-d3ee-435a-88c9-4a5f604cfca2", AccrualAction.Adjustment, new DateTime(2018, 12, 25), 8, "christmas 2018", new DateTime(2018, 10, 10)), }); return(accrual); }
public static AccrualViewModel FromAccrual(Accrual accrual) => new AccrualViewModel { Id = accrual.Id, ContractId = accrual.ContractId, InvoiceNumber = accrual.InvoiceNumber, AccrualDate = accrual.AccrualDate, Summ = accrual.Summ };
public async Task <bool> ModifyAccrualAsync(Accrual accrual) { var filter = Builders <Accrual> .Filter.And( Builders <Accrual> .Filter.Eq(e => e.AccrualId, accrual.AccrualId), Builders <Accrual> .Filter.Eq(e => e.UserId, accrual.UserId) ); await Accruals.ReplaceOneAsync(filter, accrual); return(true); }
public void EndingCurrentYear_EndDateIsCorrect(Ending ending, string currentDateString, string dateTimeString) { var dnp = new Mock <IDotNetProvider>(); dnp.Setup(_ => _.DateTimeNow).Returns(DateTime.Parse(currentDateString)); Accrual accrual = CreateAccrualInstance(ending); DateTime end = accrual.GetEndDate(dnp.Object); end.ShouldBe(DateTime.Parse(dateTimeString)); }
private List <AccrualRow> CreateAccrualTable(Accrual config) { DateTime previous = config.StartingDate; DateTime current = config.StartingDate; DateTime end = config.GetEndDate(_dotNetProvider); var rows = new List <AccrualRow> { new AccrualRow(0, null, 0, config.StartingHours, null) }; double accrual = config.StartingHours; int counter = 1; while (current <= end) { DateTime c = current, p = previous; var actions = config.Actions .Where(a => a.AccrualAction != AccrualAction.Created) .Where(a => a.ActionDate >= p && a.ActionDate < c); double sum = actions.Sum(x => x.Amount).GetValueOrDefault(); accrual += config.AccrualRate + sum; rows.Add(new AccrualRow(counter++, current, sum, accrual, actions)); previous = current; if (config.AccrualFrequency == AccrualFrequency.Biweekly) { current = current.AddDays(14); } else { int day = current.Day; if (day >= config.DayOfPayB) { current = current.AddMonths(1); current = new DateTime(current.Year, current.Month, config.DayOfPayA.Value); } else { current = new DateTime(current.Year, current.Month, config.DayOfPayB.Value); } } } return(rows); }
public List <AccrualRow> Calculate(Accrual config) { List <AccrualRow> rows = new List <AccrualRow>(); foreach (var action in config.Actions) { switch (action.AccrualAction) { case AccrualAction.Created: rows = CreateAccrualTable(config); break; } } return(rows); }
public void SaveAccrual(AccrualViewModel accrualViewModel) { var accrual = _accrualRepository.GetExist(accrualViewModel.EmployeId, accrualViewModel.Date); if (accrual != null) { accrual.Amount = accrualViewModel.Amount; } else { accrual = new Accrual() { Date = accrualViewModel.Date, Amount = accrualViewModel.Amount, Employe = _employeRepository.Get(accrualViewModel.EmployeId) }; } _accrualRepository.Save(accrual); }
/// <summary> /// Parses the response received from the server. /// </summary> protected override void UnpackResponse() { base.UnpackResponse(); // Create the streams we will be reading from. using (var responseStream = new MemoryStream(m_responsePayload)) using (var reader = new BinaryReader(responseStream, Encoding.Unicode)) { // Try to unpack the data. try { // Seek past return code. reader.BaseStream.Seek(sizeof(int), SeekOrigin.Begin); // Get the count of Product Types. var productItemCount = reader.ReadUInt16(); // Clear the Product Item array. m_products = new List <ProductItem>(); // Get all the Product Items for (ushort x = 0; x < productItemCount; x++) { var productItem = new ProductItem(); productItem.ProductItemId = reader.ReadInt32(); productItem.ProductTypeId = reader.ReadInt32(); productItem.SalesSourceId = reader.ReadInt32(); productItem.IsActive = reader.ReadBoolean(); // Product Item Name productItem.ProductItemName = ReadString(reader); // Product Type Name productItem.ProductTypeName = ReadString(reader); // Product Sales Source Name productItem.ProductSalesSourceName = ReadString(reader); // Product Group Id productItem.ProductGroupId = reader.ReadInt32(); // Product Group Name productItem.ProductGroupName = ReadString(reader); //START RALLY TA 5744 // Paper Layout Id productItem.PaperLayoutId = reader.ReadInt32(); // Paper Layout Name productItem.PaperLayoutName = ReadString(reader); // Paper Layout Count productItem.PaperLayoutCount = reader.ReadInt32(); //END RALLY TA 5744 //START RALLY US1796 List <Accrual> accuralList = new List <Accrual>(); ushort accuralCount = reader.ReadUInt16(); for (ushort i = 0; i < accuralCount; i++) { Accrual accural = new Accrual(); accural.Id = reader.ReadInt32(); accural.Name = ReadString(reader); accuralList.Add(accural); } productItem.AccuralList = accuralList; // US2826 productItem.BarcodedPaper = reader.ReadBoolean(); //US4059 Perm File productItem.PermFileId = reader.ReadInt32(); var cardColorSetId = reader.ReadInt32(); productItem.Validate = reader.ReadBoolean(); m_products.Add(productItem); } } catch (EndOfStreamException e) { throw new MessageWrongSizeException(m_strMessageName, e); } catch (Exception e) { throw new ServerException(m_strMessageName, e); } } }
public async Task DoWork(CancellationToken stoppingToken) { while (!stoppingToken.IsCancellationRequested) { _logger.Log(LogLevel.Information, message: "Call method UpdateDeposit"); var deposits = await _deposit.GetAll(); foreach (var item in deposits) { if (item.EndDateDeposit < DateTime.Now) { var closedDeposit = new Deposit { Id = item.Id, IdAccount = item.IdAccount, StartDateDeposit = item.StartDateDeposit, EndDateDeposit = item.EndDateDeposit, TypeOfDeposit = item.TypeOfDeposit, Amount = item.Amount, PercentDeposit = item.PercentDeposit, Status = false }; await _deposit.UpdateAsync(closedDeposit); } if (item.Status == true) { var accural = new Accrual { IdDeposit = item.Id, DateAccrual = DateTime.Now, }; if (item.Accruals.Count != 0) { accural.Amount += accural.Amount; await _accural.UpdateAsync(accural); } else { accural.Amount = item.Amount * item.PercentDeposit / 365; await _accural.AddAsync(accural); } var deposit = new Deposit { Id = item.Id, IdAccount = item.IdAccount, StartDateDeposit = item.StartDateDeposit, EndDateDeposit = item.EndDateDeposit, TypeOfDeposit = item.TypeOfDeposit, Amount = item.Amount, PercentDeposit = item.PercentDeposit, Status = item.Status, Accruals = new List <Accrual> { accural } }; await _deposit.UpdateAsync(deposit); } } _logger.Log(LogLevel.Information, message: "Start delay"); await Task.Delay(millisecondsDelay : 60_000, cancellationToken : stoppingToken); } }
public async Task <bool> AddAccrual(Accrual accrual) { await Accruals.InsertOneAsync(accrual); return(true); }
private void AccrualPayment(PostingEngineEnvironment env, Transaction element, Accrual accrual) { var accountToFrom = GetFromToAccount(element); if (accountToFrom.To == null || accountToFrom.From == null) { env.AddMessage($"Unable to identify From/To accounts for trade {element.OrderSource} :: {element.Side}"); return; } new AccountUtils().SaveAccountDetails(env, accountToFrom.From); new AccountUtils().SaveAccountDetails(env, accountToFrom.To); double fxrate = 1.0; if (!element.SettleCurrency.Equals(env.BaseCurrency)) { fxrate = Convert.ToDouble(FxRates.Find(env.ValueDate, element.SettleCurrency).Rate); } var moneyUSD = element.LocalNetNotional * fxrate; var debit = new Journal(element) { Account = accountToFrom.From, When = env.ValueDate, FxRate = fxrate, CreditDebit = env.DebitOrCredit(accountToFrom.From, moneyUSD), Value = env.SignedValue(accountToFrom.From, accountToFrom.To, true, moneyUSD), Event = "prepaid-expense", Fund = env.GetFund(element), }; var credit = new Journal(element) { Account = accountToFrom.To, When = env.ValueDate, FxRate = fxrate, CreditDebit = env.DebitOrCredit(accountToFrom.To, moneyUSD), Value = env.SignedValue(accountToFrom.From, accountToFrom.To, false, moneyUSD), Event = "prepaid-expense", Fund = env.GetFund(element), }; env.Journals.Add(debit); env.Journals.Add(credit); }
public AppMutation( IAirportRepository airportRepository, IDashboardRepository dashboardRepository, IHttpContextAccessor httpContextAccessor, IDotNetProvider dotNetProvider) { _airportRepository = airportRepository; _dashboardRepository = dashboardRepository; _httpContextAccessor = httpContextAccessor; _dotNetProvider = dotNetProvider; Field <AirportGraphType>("addAirport", "", arguments: new QueryArguments( new QueryArgument <NonNullGraphType <AirportInputType> > { Name = "airport", Description = "The airport to add." } ), resolve: context => { AirportInput airport = context.GetArgument <AirportInput>("airport"); Airport a = _airportRepository.GetAirport(airport.Code); if (a == null) { _airportRepository.AddAirport(airport); return(_airportRepository.GetAirport(airport.Code)); } return(a); }); Field <AccrualGraphType>("addAccrualAction", "", arguments: new QueryArguments( new QueryArgument <NonNullGraphType <IdGraphType> > { Name = "accrualId", Description = "The accrual to modify." }, new QueryArgument <NonNullGraphType <AccrualActionRecordInputType> > { Name = "action", Description = "The action to add." } ), resolve: context => { AccrualActionRecordInput input = context.GetArgument <AccrualActionRecordInput>("action"); if (AccrualActionRecordValidator.TryValidate(input, out var errors)) { string accrualIdArgument = context.GetArgument <string>("accrualId"); Guid.TryParse(accrualIdArgument, out var id); string userId = _httpContextAccessor.HttpContext.User.UserId(); var action = new AccrualActionRecord(_dotNetProvider.NewGuid.ToString(), input.AccrualAction, input.ActionDate, input.Amount, input.Note, _dotNetProvider.DateTimeNow); bool added = _dashboardRepository.AddActionForAccrualAsync(userId, id, action).Result; if (added) { return(_dashboardRepository.GetAccrualForUserByAccrualIdAsync(userId, id)); } context.Errors.Add(new ExecutionError("Error adding new accrual.")); return(null); } context.Errors.Add(new ExecutionError(string.Join(Environment.NewLine, errors))); return(null); }); Field <AccrualGraphType>("deleteAccrualAction", "", arguments: new QueryArguments( new QueryArgument <NonNullGraphType <IdGraphType> > { Name = "accrualId", Description = "The accrual to modify." }, new QueryArgument <NonNullGraphType <StringGraphType> > { Name = "accrualActionId", Description = "The action to remove." } ), resolve: context => { string accrualIdArgument = context.GetArgument <string>("accrualId"); string accrualActionIdArgument = context.GetArgument <string>("accrualActionId"); Guid.TryParse(accrualIdArgument, out var accrualId); Guid.TryParse(accrualActionIdArgument, out var accrualActionId); string userId = _httpContextAccessor.HttpContext.User.UserId(); bool removed = _dashboardRepository.DeleteActionAsync(userId, accrualId, accrualActionId).Result; if (removed) { return(_dashboardRepository.GetAccrualForUserByAccrualIdAsync(userId, accrualId)); } context.Errors.Add(new ExecutionError("Error removing accrual action.")); return(null); }); Field <AccrualGraphType>("modifyAccrual", "", arguments: new QueryArguments( new QueryArgument <NonNullGraphType <IdGraphType> > { Name = "accrualId", Description = "The accrual to add." }, new QueryArgument <NonNullGraphType <AccrualInputType> > { Name = "accrual", Description = "The accrual to update." } ), resolve: context => { string accrualIdArgument = context.GetArgument <string>("accrualId"); var accrualInput = context.GetArgument <AccrualInput>("accrual"); string userId = _httpContextAccessor.HttpContext.User.UserId(); Guid.TryParse(accrualIdArgument, out var accrualId); bool result = AccrualValidator.TryValidate(accrualInput, out var errors); if (result) { var accrual = _dashboardRepository.GetAccrualForUserByAccrualIdAsync(userId, accrualId).Result; accrual.Name = accrualInput.Name; accrual.StartingHours = accrualInput.StartingHours; accrual.AccrualRate = accrualInput.AccrualRate; accrual.StartingDate = accrualInput.StartingDate; accrual.Ending = accrualInput.Ending; accrual.AccrualFrequency = accrualInput.AccrualFrequency; accrual.LastModified = _dotNetProvider.DateTimeNow; accrual.HourlyRate = accrualInput.HourlyRate; accrual.MinHours = accrualInput.MinHours; accrual.MaxHours = accrualInput.MaxHours; accrual.IsHeart = accrualInput.IsHeart; accrual.IsArchived = accrualInput.IsArchived; accrual.DayOfPayA = accrualInput.AccrualFrequency == AccrualFrequency.SemiMonthly ? accrualInput.DayOfPayA : null; accrual.DayOfPayB = accrualInput.AccrualFrequency == AccrualFrequency.SemiMonthly ? accrualInput.DayOfPayB : null; bool modified = _dashboardRepository.ModifyAccrualAsync(accrual).Result; if (modified) { return(_dashboardRepository.GetAccrualForUserByAccrualIdAsync(userId, accrualId)); } context.Errors.Add(new ExecutionError("Failed to update accrual.")); return(null); } context.Errors.Add(new ExecutionError(string.Join(Environment.NewLine, errors))); return(null); }); Field <AccrualGraphType>("addAccrual", "", arguments: new QueryArguments( new QueryArgument <NonNullGraphType <AccrualInputType> > { Name = "accrual", Description = "The accrual to add." } ), resolve: context => { AccrualInput input = context.GetArgument <AccrualInput>("accrual"); bool result = AccrualValidator.TryValidate(input, out var errors); if (result) { string userId = _httpContextAccessor.HttpContext.User.UserId(); Guid accrualId = _dotNetProvider.NewGuid; DateTime now = _dotNetProvider.DateTimeNow; var a = new Accrual { UserId = userId, AccrualId = accrualId, Name = input.Name, StartingHours = input.StartingHours, AccrualRate = input.AccrualRate, StartingDate = input.StartingDate, Ending = input.Ending, AccrualFrequency = input.AccrualFrequency, LastModified = _dotNetProvider.DateTimeNow, HourlyRate = input.HourlyRate, IsHeart = input.IsHeart, IsArchived = input.IsArchived, MinHours = input.MinHours, MaxHours = input.MaxHours, DayOfPayA = input.AccrualFrequency == AccrualFrequency.SemiMonthly ? input.DayOfPayA : null, DayOfPayB = input.AccrualFrequency == AccrualFrequency.SemiMonthly ? input.DayOfPayB : null, Actions = new List <AccrualActionRecord> { new AccrualActionRecord(_dotNetProvider.NewGuid.ToString(), AccrualAction.Created, null, null, null, now) } }; bool added = _dashboardRepository.AddAccrual(a).Result; if (added) { return(_dashboardRepository.GetAccrualForUserByAccrualIdAsync(userId, accrualId)); } context.Errors.Add(new ExecutionError("Error adding new accrual.")); return(null); } context.Errors.Add(new ExecutionError(string.Join(Environment.NewLine, errors))); return(null); }); }