Пример #1
0
 public DAO.Rebooking CreateRebooking(Rebooking rebooking)
 {
     return(new DAO.Rebooking()
     {
         Id = rebooking.Id,
         BookId = rebooking.BookId,
         RebookDate = rebooking.RebookDate,
         Description = rebooking.Description
     });
 }
Пример #2
0
        public void FullRebookPostedFunds(Guid postedId, Guid newBudgetLineId, Staff rebooker)
        {
            using (var context = new SCMSEntities())
            {
                using (TransactionScope scope = new TransactionScope())
                {
                    try
                    {
                        var posting          = context.BudgetPostings.IncludeProjectBudgetViaRFP().FirstOrDefault(p => p.Id == postedId);
                        var fromBudgetLineId = posting.PaymentRequestBudgetLine.ProjectBudget.Id;
                        var amount           = posting.AmountPosted;
                        //Deduct amount from current budget line
                        posting.PaymentRequestBudgetLine.ProjectBudget.TotalPosted -= amount;
                        var newBL = context.ProjectBudgets.FirstOrDefault(b => b.Id == newBudgetLineId);
                        //Get amount in new budget line currency
                        var newAmount = (decimal)exchangeRateService.GetForeignCurrencyValue(newBL.BudgetCategory.ProjectDonor.Currency, posting.PaymentRequestBudgetLine.ProjectBudget.BudgetCategory.ProjectDonor.Currency, amount, newBL.BudgetCategory.ProjectDonor.Project.CountryProgrammeId);
                        //Add amount to new budget line posted amount
                        newBL.TotalPosted += newAmount;
                        //Set new budget line in BudgetPosting
                        posting.PaymentRequestBudgetLine.BudgetLineId = newBudgetLineId;
                        posting.AmountPosted = newAmount;
                        context.SaveChanges();

                        var rebooking = new Rebooking();
                        rebooking.Id = Guid.NewGuid();
                        rebooking.BudgetPostingId  = postedId;
                        rebooking.FromAmount       = amount;
                        rebooking.FromBudgetLineId = fromBudgetLineId;
                        rebooking.IsFullRebook     = true;
                        rebooking.RebookedBy       = rebooker.Id;
                        rebooking.RebookedOn       = DateTime.Now;
                        rebooking.ToAmount         = newAmount;
                        rebooking.ToBudgetLineId   = newBudgetLineId;
                        context.Rebookings.Add(rebooking);
                        context.SaveChanges();
                        scope.Complete();
                    }
                    catch (Exception ex)
                    {
                        scope.Dispose();
                    }
                }
            }
        }