public decimal geteAllocatedAmount(ReliefRequisition req)
 {
     List<Cats.Models.ProjectCodeAllocation> pcAllocations = req.HubAllocations.ToList()[0].ProjectCodeAllocations.ToList();
     var siAllocation = pcAllocations.Where(item => item.SINumberID != null).Sum(item => item.Amount_FromSI);
     var pcAllocation = pcAllocations.Where(item => item.ProjectCodeID != null).Sum(item => item.Amount_FromProject);
     return (decimal)(siAllocation + pcAllocation);
 }
 public static ReliefRequisitionViewModel BindReliefRequisitionViewModel(ReliefRequisition reliefRequisition, List<WorkflowStatus> statuses, string datePref)
 {
     var requisition = new ReliefRequisitionViewModel();
     requisition.ProgramID = reliefRequisition.ProgramID;
     requisition.Program = reliefRequisition.Program.Name;
     requisition.Region = reliefRequisition.AdminUnit.Name;
     requisition.RequisitionNo = reliefRequisition.RequisitionNo;
     requisition.RegionID = reliefRequisition.RegionID;
     requisition.RegionalRequestID = reliefRequisition.RegionalRequestID;
     if (reliefRequisition.RequestedDate.HasValue)
         requisition.RequestedDateEt = reliefRequisition.RequestedDate.Value.ToCTSPreferedDateFormat(datePref);
     //);
     requisition.Round = reliefRequisition.Round;
     requisition.Status = statuses.Find(t => t.WorkflowID == (int)WORKFLOW.RELIEF_REQUISITION && t.StatusID == reliefRequisition.Status.Value).Description;
     requisition.RequestedDate = reliefRequisition.RequestedDate.Value;
     requisition.StatusID = reliefRequisition.Status;
     requisition.RequisitionID = reliefRequisition.RequisitionID;
     requisition.CommodityID = reliefRequisition.CommodityID;
     requisition.ZoneID = reliefRequisition.ZoneID;
     requisition.Zone = reliefRequisition.AdminUnit1.Name;
     requisition.Commodity = reliefRequisition.Commodity.Name;
     requisition.Month = RequestHelper.MonthName(reliefRequisition.Month);
     return requisition;
 }
 public bool AddReliefRequisition(ReliefRequisition reliefRequisition)
 {
     _unitOfWork.ReliefRequisitionRepository.Add(reliefRequisition);
     _unitOfWork.Save();
     return true;
 }
        public ReliefRequisition GenerateRequisition(RegionalRequest regionalRequest, List<RegionalRequestDetail> regionalRequestDetails, int commodityId, int zoneId)
        {
            var relifRequisition = new ReliefRequisition()
            {
                //TODO:Please Include Regional Request ID in Requisition
                RegionalRequestID = regionalRequest.RegionalRequestID,
                Round = regionalRequest.Round,
                Month = regionalRequest.Month,
                ProgramID = regionalRequest.ProgramId,
                CommodityID = commodityId,
                RequestedDate = DateTime.Today

                //TODO:Please find another way how to specify Requistion No
                ,
                RequisitionNo = Guid.NewGuid().ToString(),
                RegionID = regionalRequest.RegionID,
                ZoneID = zoneId,
                Status = (int)ReliefRequisitionStatus.Draft,
                //RequestedBy =itm.RequestedBy,
                //ApprovedBy=itm.ApprovedBy,
                //ApprovedDate=itm.ApprovedDate,

            };

            foreach (var regionalRequestDetail in regionalRequestDetails)
            {
                var relifRequistionDetail = new ReliefRequisitionDetail();
                var commodity = regionalRequestDetail.RequestDetailCommodities.First(t => t.CommodityID == commodityId);
                relifRequistionDetail.DonorID = regionalRequest.DonorID;
                relifRequistionDetail.FDPID = regionalRequestDetail.Fdpid;
                relifRequistionDetail.BenficiaryNo = regionalRequestDetail.Beneficiaries;
                relifRequistionDetail.CommodityID = commodity.CommodityID;
                relifRequistionDetail.Amount = commodity.Amount;
                relifRequisition.ReliefRequisitionDetails.Add(relifRequistionDetail);
            }
            return relifRequisition;
        }
 public bool DeleteReliefRequisition(ReliefRequisition reliefRequisition)
 {
     if (reliefRequisition == null) return false;
     _unitOfWork.ReliefRequisitionRepository.Delete(reliefRequisition);
     _unitOfWork.Save();
     return true;
 }
 public List<FDPRequestViewModel> getRequestDetail(ReliefRequisition Request)
 {
     var result = Request.ReliefRequisitionDetails.ToList().Select(item => new FDPRequestViewModel
     {
         RequisitionId=Request.RequisitionID,
         RequestDetailId = item.RequisitionDetailID,
         FDPId=item.FDPID,
         FDPName=item.FDP.Name,
         Name = item.FDP.Name,
         RequestedAmount=item.Amount.ToPreferedWeightUnit(),
         WoredaId=item.FDP.AdminUnitID,
         WoredaName=item.FDP.AdminUnit.Name,
         Commodity = item.Commodity.Name,
         Allocations = ToAllocationViewModel(item.SIPCAllocations.ToList())
     }).ToList();
     return result;
 }
        private void SendNotification(ReliefRequisition requisition)
        {
            try
            {
                string destinationURl;
                if (Request.Url.Host != null)
                {
                    if (Request.Url.Host == "localhost")
                    {
                        destinationURl = "http://" + Request.Url.Authority +
                                         "/Logistics/DispatchAllocation/IndexFromNotification?paramRegionId=" +
                                         requisition.RegionID +
                                         "&recordId=" + requisition.RequisitionID;
                    }
                    else
                    {
                        destinationURl = "http://" + Request.Url.Authority +
                                        Request.ApplicationPath +
                                         "/Logistics/DispatchAllocation/IndexFromNotification?paramRegionId=" +
                                         requisition.RegionID +
                                         "&recordId=" + requisition.RequisitionID;
                    }

                    _notificationService.AddNotificationForLogistcisFromEarlyWaring(destinationURl,
                                                                                    requisition.RequisitionID,
                                                                                    (int) requisition.RegionID,
                                                                                    requisition.RequisitionNo);
                }
            }
            catch (Exception)
            {

                throw;
            }
        }
        public ActionResult Requisition_Destroy([DataSourceRequest] DataSourceRequest request,
                                                  ReliefRequisition reliefRequisition)
        {
            if (reliefRequisition != null)
            {
                _reliefRequisitionDetailService.DeleteById(reliefRequisition.RequisitionID);
            }

            return Json(ModelState.ToDataSourceResult());
        }
 public ActionResult Edit(ReliefRequisition reliefrequisition)
 {
     if (ModelState.IsValid)
     {
         _reliefRequisitionService.EditReliefRequisition(reliefrequisition);
         return RedirectToAction("Index", "ReliefRequisition");
     }
     return View(reliefrequisition);
 }
        private IEnumerable<WoredaDistributionDetailViewModel> GetWoredaStockDistributionDetail(IEnumerable<WoredaStockDistributionDetail> woredaStockDistributionDetails,ReliefRequisition requisition)
        {
            return (from woredaStockDistributionDetail in woredaStockDistributionDetails
                    select new WoredaDistributionDetailViewModel()
                        {
                            FdpId = woredaStockDistributionDetail.FdpId,
                            FDP = woredaStockDistributionDetail.FDP.Name,
                            WoredaStockDistributionID = woredaStockDistributionDetail.WoredaStockDistributionID,
                            WoredaStockDistributionDetailID = woredaStockDistributionDetail.WoredaStockDistributionDetailID,
                            DistributedAmount = woredaStockDistributionDetail.DistributedAmount,
                            BeginingBalance = woredaStockDistributionDetail.StartingBalance,
                            EndingBalance = woredaStockDistributionDetail.EndingBalance,
                            TotalIn = woredaStockDistributionDetail.TotalIn,
                            TotalOut = woredaStockDistributionDetail.TotoalOut,
                            LossAmount = woredaStockDistributionDetail.LossAmount,
                            RequistionNo = requisition.RequisitionNo,
                            Round = requisition.Round,
                            Month = RequestHelper.MonthName(requisition.RegionalRequest.Month),
                            CommodityName = requisition.Commodity.Name,
                            RequisitionDetailViewModel = GetRequisionInfo(requisition.RequisitionID, woredaStockDistributionDetail.FdpId)

                        });
        }
        private IEnumerable<WoredaDistributionDetailViewModel> GetWoredaStockDistribution(IEnumerable<FDP> fdps,ReliefRequisition reliefRequisition)
        {
            if (reliefRequisition != null)
            {
                return (from fdp in fdps
                        select new WoredaDistributionDetailViewModel()
                        {
                            FdpId = fdp.FDPID,
                            FDP = fdp.Name,
                            DistributedAmount = 0,
                            RequistionNo = reliefRequisition.RequisitionNo,
                            Round = reliefRequisition.Round,
                            Month = RequestHelper.MonthName(reliefRequisition.RegionalRequest.Month),
                            RequisitionDetailViewModel = GetRequisionInfo(reliefRequisition.RequisitionID, fdp.FDPID)

                        });
            }
            return (from fdp in fdps
                    select new WoredaDistributionDetailViewModel()
                    {
                        FdpId = fdp.FDPID,
                        FDP = fdp.Name,
                        DistributedAmount = 0,

                    });
        }
 public ActionResult Edit(ReliefRequisition reliefrequisition,FormCollection collection)
 {
     if (ModelState.IsValid)
     {
         var requisition = _reliefRequisitionService.FindById(reliefrequisition.RequisitionID);
         if (requisition.ReliefRequisitionDetails.Count > 0)
         {
             foreach (var oldRequisitionDetail in requisition.ReliefRequisitionDetails)
             {
                 var commodityAmount = (decimal)0.00;
                 if (reliefrequisition.RationID != null)
                 {
                     var detail = oldRequisitionDetail;
                     var ration = _rationDetailService.FindBy(t => t.RationID == (int)reliefrequisition.RationID && t.CommodityID == detail.CommodityID).FirstOrDefault();
                     if (ration != null) commodityAmount = ration.Amount/1000;
                 }
                 var newRequisitionDetail = new ReliefRequisitionDetail()
                                             {
                                                 RequisitionID = oldRequisitionDetail.RequisitionID,
                                                 RequisitionDetailID = oldRequisitionDetail.RequisitionDetailID,
                                                 CommodityID = oldRequisitionDetail.CommodityID,
                                                 BenficiaryNo = oldRequisitionDetail.BenficiaryNo,
                                                 Amount = oldRequisitionDetail.BenficiaryNo * commodityAmount,
                                                 FDPID = oldRequisitionDetail.FDPID,
                                                 DonorID = oldRequisitionDetail.DonorID,
                                                 Contingency = oldRequisitionDetail.Contingency
                                             };
                 //oldRequisitionDetail.Amount = oldRequisitionDetail.BenficiaryNo*commodityAmount;
                 _reliefRequisitionDetailService.DeleteById(oldRequisitionDetail.RequisitionDetailID);
                 _reliefRequisitionDetailService.AddReliefRequisitionDetail(newRequisitionDetail);
             }
         }
         requisition.RationID = reliefrequisition.RationID;
         requisition.RequisitionNo = reliefrequisition.RequisitionNo;
         requisition.RequestedDate = reliefrequisition.RequestedDate;
         _reliefRequisitionService.EditReliefRequisition(requisition);
         return RedirectToAction("Index", "ReliefRequisition");
     }
     return View(reliefrequisition);
 }
        private List<WoredaDistributionDetailViewModel> GetWoredaStockDistribution(IEnumerable<FDP> fdps, ReliefRequisition reliefRequisition)
        {
            return (from fdp in fdps
                        from detail in reliefRequisition.ReliefRequisitionDetails
                        where fdp.FDPID==detail.FDPID
                        select new WoredaDistributionDetailViewModel()
                        {
                            FdpId = fdp.FDPID,
                            FDP = fdp.Name,
                            DistributedAmount = 0,
                            RequistionNo = reliefRequisition.RequisitionNo,
                            Round = reliefRequisition.Round,
                            Month = RequestHelper.MonthName(reliefRequisition.RegionalRequest.Month),
                            CommodityID = detail.CommodityID,
                            CommodityName = detail.Commodity.Name,
                            AllocatedAmount = detail.Amount,
                            NumberOfBeneficiaries = detail.BenficiaryNo,
                            dispatched = GetDispatchAllocation(reliefRequisition.RequisitionNo, fdp.FDPID),
                            delivered = GetDelivered(reliefRequisition.RequisitionNo, fdp.FDPID),
                            RequisitionId = reliefRequisition.RequisitionID,
                            TotalIn = _utilizationService.GetTotalIn(fdp.FDPID, (int)reliefRequisition.RequisitionID) != 0 ? _utilizationService.GetTotalIn(fdp.FDPID, (int)reliefRequisition.RequisitionID) : 0,

                            //RequisitionDetailViewModel = new RequisitionDetailViewModel()
                            //    {
                            //        CommodityID = detail.CommodityID,
                            //        CommodityName = detail.Commodity.Name,
                            //        AllocatedAmount = detail.Amount,
                            //        BeneficaryNumber = detail.BenficiaryNo

                            //    },
                            //GetRequisionInfo(reliefRequisition.RequisitionID, fdp.FDPID)

                        }).ToList();

            //return (from fdp in fdps
            //        select new WoredaDistributionDetailViewModel()
            //        {
            //            FdpId = fdp.FDPID,
            //            FDP = fdp.Name,
            //            DistributedAmount = 0,

            //        }).ToList();
        }
        private WoredaDistributionDetailViewModel GetWoredaStockDistribution(IEnumerable<FDP> fdps, ReliefRequisition reliefRequisition)
        {
            return (from fdp in fdps
                        from detail in reliefRequisition.ReliefRequisitionDetails
                        where fdp.FDPID==detail.FDPID
                        select new WoredaDistributionDetailViewModel()
                        {
                            FdpId = fdp.FDPID,
                            FDP = fdp.Name,
                            DistributedAmount = 0,
                            RequistionNo = reliefRequisition.RequisitionNo,
                            Round = reliefRequisition.Round,
                            Month = RequestHelper.MonthName(reliefRequisition.RegionalRequest.Month),
                            CommodityID = detail.CommodityID,
                            CommodityName = detail.Commodity.Name,
                            AllocatedAmount = detail.Amount,
                            NumberOfBeneficiaries = detail.BenficiaryNo,
                            //RequisitionDetailViewModel = new RequisitionDetailViewModel()
                            //    {
                            //        CommodityID = detail.CommodityID,
                            //        CommodityName = detail.Commodity.Name,
                            //        AllocatedAmount = detail.Amount,
                            //        BeneficaryNumber = detail.BenficiaryNo

                            //    },
                            //GetRequisionInfo(reliefRequisition.RequisitionID, fdp.FDPID)

                        }).FirstOrDefault();

            //return (from fdp in fdps
            //        select new WoredaDistributionDetailViewModel()
            //        {
            //            FdpId = fdp.FDPID,
            //            FDP = fdp.Name,
            //            DistributedAmount = 0,

            //        }).ToList();
        }
Exemple #15
0
        public bool CreateRequisitonForTransfer(Transfer transfer)
        {
            if (transfer != null)
               {
               var fdp = _unitOfWork.FDPRepository.FindBy(m => m.HubID == transfer.DestinationHubID).FirstOrDefault();
               if (fdp != null)
               {
                   List<LedgerService.AvailableShippingCodes> availableSINumbers=new List<LedgerService.AvailableShippingCodes>();
                   var relifRequisition = new ReliefRequisition()
                       {

                           //RegionalRequestID = regionalRequest.RegionalRequestID,
                           //Round = regionalRequest.Round,
                           Month = transfer.CreatedDate.Month,
                           ProgramID = transfer.ProgramID,
                           CommodityID = transfer.CommodityID,
                           RequestedDate = transfer.CreatedDate,
                           //RationID = regionalRequest.RationID

                           RequisitionNo = Guid.NewGuid().ToString(),
                           RegionID = fdp.AdminUnit.AdminUnit2.AdminUnit2.AdminUnitID,
                           ZoneID = fdp.AdminUnit.AdminUnit2.AdminUnitID,
                           Status = (int) ReliefRequisitionStatus.Draft,

                       };
                   _unitOfWork.ReliefRequisitionRepository.Add(relifRequisition);

                   var relifRequistionDetail = new ReliefRequisitionDetail();

                   relifRequistionDetail.DonorID = 1;

                   relifRequistionDetail.FDPID = fdp.FDPID;

                   relifRequistionDetail.BenficiaryNo = 0; //since there is no need of benficiaryNo on transfer
                   relifRequistionDetail.CommodityID = transfer.CommodityID;
                   relifRequistionDetail.Amount = transfer.Quantity;
                   relifRequisition.ReliefRequisitionDetails.Add(relifRequistionDetail);

                   // save hub allocation
                   var hubAllocation = new HubAllocation
                       {
                           AllocatedBy = 1,
                           RequisitionID = relifRequisition.RequisitionID,
                           AllocationDate = transfer.CreatedDate,
                           ReferenceNo = "001",
                           HubID = transfer.SourceHubID
                       };
                   _unitOfWork.HubAllocationRepository.Add(hubAllocation);
                   //relifRequisition.RequisitionNo = String.Format("REQ-{0}", relifRequisition.RequisitionID);
                   relifRequisition.RequisitionNo = transfer.ReferenceNumber;
                   relifRequisition.Status = (int)ReliefRequisitionStatus.HubAssigned;
                   if(transfer.Commodity.ParentID==null)
                   {
                       availableSINumbers = GetFreeSICodesByCommodity(transfer.SourceHubID, transfer.CommodityID);
                   }
                   else
                   {
                       availableSINumbers = GetFreeSICodesByCommodityChild(transfer.SourceHubID, transfer.CommodityID);
                   }

                   var siNumberExist = availableSINumbers.Any(availableShippingCode => availableShippingCode.siCodeId == transfer.ShippingInstructionID);

                   if (!siNumberExist)
                   {
                       return false;
                   }
                   _unitOfWork.Save();

                   SIPCAllocation allocation = new SIPCAllocation
                   {
                       Code = transfer.ShippingInstructionID,
                       AllocatedAmount = transfer.Quantity,
                       AllocationType = "SI",
                       RequisitionDetailID = relifRequistionDetail.RequisitionDetailID
                   };
                   _unitOfWork.SIPCAllocationRepository.Add(allocation);

                   relifRequisition.Status = (int) ReliefRequisitionStatus.ProjectCodeAssigned;
                   relifRequisition.RequisitionNo = String.Format("REQ-{0}", relifRequisition.RequisitionID);
                   _unitOfWork.Save();
                   if (!PostSIAllocation(relifRequisition.RequisitionID,transfer.CommoditySourceID))
                   {
                       return false;
                   }
                   return true;

               }
               }
               return false;
        }