public async Task <IActionResult> Edit(short id, [Bind("ProcurementPlanID,Name,Description")] ProcurementPlan procurementPlan)
        {
            if (id != procurementPlan.ProcurementPlanID)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(procurementPlan);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!ProcurementPlanExists(procurementPlan.ProcurementPlanID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(procurementPlan));
        }
示例#2
0
        public ActionResult AddPPItems2OR(ProcurementPlan model)
        {
            Model.OrderRequest     or = UserSession.CurrentSession.NewOR != null ? UserSession.CurrentSession.NewOR : orderRequestService.GetOrderRequestById(model.OrderRequestId);
            Model.OrderRequestItem orItem;
            ProcurementPlanItem    ppItem;

            foreach (ProcurementPlanItem ppItemModel in model.PPItemList)
            {
                if (!ppItemModel.AddedToOR)
                {
                    continue;
                }
                ppItem = ppService.GetProcurementPlanItemById(ppItemModel.Id);
                orItem = new OrderRequestItem();
                orItem.BudgetLineId          = ppItem.BudgetLineId;
                orItem.EstimatedUnitPrice    = exchangeRateService.GetForeignCurrencyValue(or.CurrencyId, ppItem.CurrencyId, ppItemModel.UnitCost, countryProg.Id);
                orItem.EstimatedPrice        = orItem.EstimatedUnitPrice * ppItemModel.QuantityToOrder;
                orItem.Quantity              = ppItemModel.QuantityToOrder;
                orItem.ItemDescription       = ppItem.ItemDescription;
                orItem.ItemId                = ppItem.ItemId;
                orItem.OrderRequestId        = model.OrderRequestId;
                orItem.ProcurementPlanItemId = ppItem.Id;
                orderRequestService.AddOrderRequstItem(orItem, UserSession.CurrentSession.NewOR);
                if (UserSession.CurrentSession.NewOR != null)
                {
                    UserSession.CurrentSession.NewOR = null;
                }
            }

            return(ViewOrderRequestItems(model.OrderRequestId));
        }
示例#3
0
        public ActionResult LoadAddPPItemsToPO(Guid poId, Guid?pdId = null)
        {
            PurchaseOrder   po    = poService.GetPurchaseOrderById(poId);
            ProjectDonor    pd    = pdId.HasValue ? orService.GetProjectDonorById(pdId.Value) : orService.GetProjectNosWithPP().FirstOrDefault();
            ProcurementPlan model = pd != null?ppService.GetProcurementPlanByProjectId(pd.Id) : null;

            if (model == null || !model.IsAuthorized)
            {
                model            = new ProcurementPlan();
                model.PPItemList = new List <ProcurementPlanItem>();
            }
            else
            {
                model.PPItemList = model.ProcurementPlanItems.Where(p => (p.Quantity - p.ProcuredAmount) > 0).OrderBy(p => p.Item.Name).ToList();
                foreach (ProcurementPlanItem ppItem in model.PPItemList)
                {
                    ppItem.UnitCost        = Math.Round(exchangeRateService.GetForeignCurrencyValue(po.CurrencyId, ppItem.CurrencyId, ppItem.UnitCost, countryProg.Id), 2);
                    ppItem.QuantityToOrder = ppItem.Quantity - ppItem.ProcuredAmount;
                    ppItem.TotalCost       = Math.Round((ppItem.UnitCost * ppItem.QuantityToOrder), 2);
                }
            }
            model.PurchaseOrderId = poId;
            model.ProjectId       = pd != null ? pd.ProjectId : Guid.Empty;
            model.Projects        = new SelectList(orService.GetProjectsWithPP(), "Id", "Name", pd != null ? pd.ProjectId : Guid.Empty);
            model.ProjectDonors   = new SelectList(orService.GetProjectNosWithPP(pd != null ? pd.ProjectId : Guid.Empty), "Id", "ProjectNumber", model.ProjectDonorId);
            return(View("AddPPItemsToPO", model));
        }
示例#4
0
        public ActionResult PPDetails(Guid Id)
        {
            ProcurementPlan model = ppService.GetProcurementPlanById(Id);

            model.PPItemList = model.ProcurementPlanItems.Where(p => !p.IsApproved).OrderBy(p => p.Item.Name).ToList();
            return(View("CreatePPStep2", model));
        }
        public async Task <IActionResult> Create([Bind("ProcurementPlanID,Name,Description")] ProcurementPlan procurementPlan)
        {
            if (ModelState.IsValid)
            {
                _context.Add(procurementPlan);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(procurementPlan));
        }
示例#6
0
        public ActionResult EditPP(Guid Id)
        {
            ProcurementPlan model = ppService.GetProcurementPlanById(Id);

            model.Projects      = new SelectList(orService.GetProject(), "Id", "Name", model.ProjectId);
            model.ProjectDonors = new SelectList(orService.GetProjectNos(model.ProjectDonor.ProjectId), "Id", "ProjectNumber", model.ProjectDonorId);
            model.SubOffices    = new SelectList(csoService.GetCountrySubOffices(countryProg.Id), "Id", "Name", model.PreparingOfficeId);
            ViewBag.FormHeader  = Resources.ProcurementPlanController_String_EditProcurementPlan + " :: " + model.RefNumber;
            ViewBag.Donor       = model.ProjectDonor.Donor.Name;
            return(View("CreatePP", model));
        }
示例#7
0
        public ActionResult ViewPP(Guid id)
        {
            ProcurementPlan model = ppService.GetProcurementPlanById(id);

            model.CanApprove   = notificationService.CanApprove(currentUser, NotificationHelper.ppCode, NotificationHelper.approvalCode, model.Id);
            model.CanApproveII = notificationService.CanApprove(currentUser, NotificationHelper.ppCode, NotificationHelper.approvalIICode, model.Id);
            model.CanReview    = notificationService.CanApprove(currentUser, NotificationHelper.ppCode, NotificationHelper.reviewCode, model.Id);
            model.CanAuthorize = notificationService.CanApprove(currentUser, NotificationHelper.ppCode, NotificationHelper.authorizationCode, model.Id);

            model.PPItemList = model.ProcurementPlanItems.Where(p => p.IsAuthorized).OrderBy(p => p.Item.Name).ToList();
            return(View("ViewPP", model));
        }
示例#8
0
        public ActionResult SubmitPP(Guid id)
        {
            ProcurementPlan pp = ppService.GetProcurementPlanById(id);

            pp.IsSubmitted = true;
            pp.IsRejected  = pp.IsApproved1 = pp.IsApproved2 = pp.IsAuthorized = pp.IsReviewed = false;
            pp.PreparedBy  = currentStaff.Id;
            pp.PreparedOn  = DateTime.Now;
            ppService.SaveProcurementPlan(pp);
            notificationService.SendToAppropriateApprover(NotificationHelper.ppCode, NotificationHelper.approvalCode, pp.Id);
            return(ViewPPList());
        }
示例#9
0
        public ActionResult CreatePP()
        {
            ProcurementPlan model = new ProcurementPlan();

            model.RefNumber     = "--NEW PP--";
            model.Projects      = new SelectList(orService.GetProjectsWithoutPP(), "Id", "Name");
            model.ProjectDonors = new SelectList(orService.GetProjectNosWithoutPP(Guid.Empty), "Id", "ProjectNumber");
            model.SubOffices    = new SelectList(csoService.GetCountrySubOffices(countryProg.Id), "Id", "Name");
            model.PreparedOn    = DateTime.Today;
            ViewBag.FormHeader  = Resources.ProcurementPlanController_String_NewProcurementPlan;
            return(View("CreatePP", model));
        }
示例#10
0
        public ActionResult CreatePPItem(Guid ppId)
        {
            ProcurementPlanItem model = new ProcurementPlanItem();
            ProcurementPlan     pp    = ppService.GetProcurementPlanById(ppId);

            model.ProcurementPlanId = ppId;
            model.Items             = new SelectList(orService.GetItems(), "Id", "Name");
            model.BudgetLines       = new SelectList(orService.GetProjectBugdetLines(pp.ProjectDonorId), "Id", "Description");
            model.CurrencyId        = countryProg.Country.CurrencyId.Value;
            model.Currencies        = new SelectList(orService.GetCurrencies(), "Id", "ShortName", countryProg.Country.CurrencyId);
            ViewBag.Action          = Resources.Global_String_AddItem;
            return(View("CreatePPItem", model));
        }
示例#11
0
        public ActionResult AddPPItems2OR(Guid pdId, Model.OrderRequest or)
        {
            ProcurementPlan model = ppService.GetProcurementPlanByProjectId(pdId);

            if (model == null)
            {
                return(Content("<i style=\"color: Red\">" + Resources.OrderRequestController_String_NoPPItems + "</i>", "text/html"));
            }
            model.PPItemList     = model.ProcurementPlanItems.Where(p => (p.Quantity - p.ProcuredAmount) > 0).OrderBy(p => p.Item.Name).ToList();
            model.OrderRequestId = or.Id;
            Currency orCurr = currencyService.GetCurrency(or.CurrencyId);

            foreach (ProcurementPlanItem ppItem in model.PPItemList)
            {
                ppItem.UnitCost        = Math.Round(exchangeRateService.GetForeignCurrencyValue(or.CurrencyId, ppItem.CurrencyId, ppItem.UnitCost, countryProg.Id), 2);
                ppItem.QuantityToOrder = ppItem.Quantity - ppItem.ProcuredAmount;
                ppItem.TotalCost       = Math.Round((ppItem.UnitCost * ppItem.QuantityToOrder), 2);
            }
            //model.PPItemList = model.ProcurementPlanItems.Where(p => !p.AddedToOR && p.IsApproved && !p.IsRemoved).OrderBy(p => p.Item.Name).ToList();
            ViewBag.Currency = orCurr.ShortName;
            return(View("AddPPItems2OR", model));
        }
示例#12
0
 public int Update(ProcurementPlan procurementPlan)
 {
     return(ProcurementPlanRepository.Update(procurementPlan));
 }
示例#13
0
 public int Insert(ProcurementPlan procurementPlan)
 {
     return(ProcurementPlanRepository.Insert(procurementPlan));
 }
示例#14
0
 public ActionResult SaveProcPlan(ProcurementPlan model)
 {
     model.PreparedBy = currentStaff.Id;
     ppService.SaveProcurementPlan(model);
     return(PPDetails(model.Id));
 }