public JsonResult GetTransportContractExecution() { var contracts = _transportOrderService.FindBy(t => t.StatusID >= 3); var requisitions = from contract in contracts select new { contract.TransportOrderNo, details = from detail in _transportOrderDetailService.FindBy( d => d.TransportOrderID == contract.TransportOrderID) select new { detail.RequisitionID, detail.FDP.Name, sum = from dispatch in _dispatchService.FindBy(r => r.RequisitionNo == detail.ReliefRequisition.RequisitionNo) group dispatch by dispatch.RequisitionNo into d select new { d.Key, d } } }; //from requisition in requisitions //select requisition.details. return(Json(requisitions, JsonRequestBehavior.AllowGet)); }
public ActionResult MultipleApproval() { var draftTransportOrders = _transportOrderService.FindBy(m => m.StatusID == (int)TransportOrderStatus.Draft); if (draftTransportOrders == null) { TempData["CustomError"] = "There are no draft Transport Orders to be Approved! "; return(RedirectToAction("Index")); } var transportOrderModels = GetTransportOrderApprovalViewModel(draftTransportOrders); return(View(transportOrderModels.ToList())); }
public JsonResult GetTransporter(int transportOrderId) { var transporter = _transportOrderService.FindBy(t => t.TransportOrderID == transportOrderId).Select(r => new { Name = r.Transporter.Name, subCity = r.Transporter.SubCity, kebele = r.Transporter.Kebele, houseNo = r.Transporter.HouseNo, TelephoneNo = r.Transporter.TelephoneNo, MobileNo = r.Transporter.MobileNo, Email = r.Transporter.Email, ContratNo = r.ContractNumber, bidNo = r.BidDocumentNo, TransporOrderStartDate = r.StartDate, TransportOrderEndDate = r.EndDate, TransportOrderNo = r.TransportOrderNo }).FirstOrDefault(); return(Json(transporter, JsonRequestBehavior.AllowGet)); }
public ActionResult IdentifyWinners(int bidNumber, int regionID) { //bool result = false; var f = new WinnersGeneratorParameters() { BidID = bidNumber, RegionID = regionID }; var comparable = new List <TransportBidQuotationHeader>(); var bid = _bidService.FindById(bidNumber); if (bid != null) { var transportOrderCreated = _transportOrderService.FindBy(m => m.BidDocumentNo == bid.BidNumber).FirstOrDefault(); if (transportOrderCreated != null) { TempData["CustomErrorMessage"] = "Bid Winner Can not be generated (Transport Order already created from this bid)"; return(RedirectToAction("GenerateWinners", "PriceQuotation")); } } var bidWinners = _bidWinnerService.FindBy(m => m.BidID == bidNumber); if (bidWinners != null) { comparable = _transportBidQuotationHeaderService.FindBy(m => m.RegionID == regionID && m.BidId == bidNumber && m.Status >= 2); foreach (var winner in bidWinners) { _bidWinnerService.DeleteBidWinner(winner); } } else { comparable = _transportBidQuotationHeaderService.FindBy(m => m.RegionID == regionID && m.BidId == bidNumber && m.Status == 2); } ViewBag.Status = comparable == null ? 1 : 2; //TempData["Error"] = "There are no new proposals, winners may already have been identified"; var tr = new List <TransportBidQuotation>(); foreach (var transportBidQuotationHeader in comparable) { tr.AddRange(transportBidQuotationHeader.TransportBidQuotations); //transportBidQuotationHeader.TransportBidQuotations } var rawData = tr; if (rawData.Count > 0) { var grouped = ( from r in rawData group r by new { r.DestinationID, r.SourceID } into g select g ); foreach (var eachgroup in grouped) { var candidates = eachgroup.ToList(); var firstWinners = ( candidates.Where(candidate => candidate.Tariff == candidates.Min(t => t.Tariff)) ); var secondCandidates = candidates.Where(t => t.Tariff > candidates.Min(d => d.Tariff)); var transportBidQuotations = secondCandidates as List <TransportBidQuotation> ?? secondCandidates.ToList(); var secondWinners = ( transportBidQuotations.Where( secondCadidate => secondCadidate.Tariff == transportBidQuotations.Min(t => t.Tariff)) ); var firstBidWinners = TransformBidQuotationToBidWinner(firstWinners.ToList(), 1); var secondBidWinners = TransformBidQuotationToBidWinner(secondWinners.ToList(), 2); int bpid = _ApplicationSettingService.getBidWinnerWorkflow(); foreach (var firstBidWinner in firstBidWinners) { _bidWinnerService.AddBidWinner(firstBidWinner); //BusinessProcess bp = _BusinessProcessService.CreateBusinessProcessForObject(bpid, firstBidWinner.BidWinnerID, "Bid Winner"); //firstBidWinner.BusinessProcess = bp; //firstBidWinner.BusinessProcessID = bp.BusinessProcessID; } foreach (var secondBidWinner in secondBidWinners) { _bidWinnerService.AddBidWinner(secondBidWinner); //BusinessProcess bp = _BusinessProcessService.CreateBusinessProcessForObject(bpid, secondBidWinner.BidWinnerID, "Bid Winner"); //secondBidWinner.BusinessProcess = bp; } } foreach (var transportBidQuotationHeader in comparable) { transportBidQuotationHeader.Status = 3; _transportBidQuotationHeaderService.UpdateTransportBidQuotationHeader(transportBidQuotationHeader); } //result = true; } _bidWinnerService.Save(); return(RedirectToAction("Winners", new { BidID = bidNumber, RegionID = regionID })); }
public List <TransporterPaymentRequestViewModel> TransporterPaymentRequestViewModelBinder( List <TransporterPaymentRequest> transporterPaymentRequests) { var currentUser = _userAccountService.GetUserInfo(HttpContext.User.Identity.Name); var datePref = currentUser.DatePreference; var transporterPaymentRequestViewModels = new List <TransporterPaymentRequestViewModel>(); foreach (var transporterPaymentRequest in transporterPaymentRequests) { var request = transporterPaymentRequest; var dispatch = _dispatchService.Get(t => t.DispatchID == request.Delivery.DispatchID, null, "Hub, FDP"). FirstOrDefault(); var transportOrderdetail = _transportOrderDetailService.FindBy( m => m.TransportOrderID == request.TransportOrderID && m.SourceWarehouseID == dispatch.HubID && m.FdpID == dispatch.FDPID).FirstOrDefault(); //var firstOrDefault = _bidWinnerService.Get(t => t.SourceID == dispatch.HubID && t.DestinationID == dispatch.FDPID // && t.TransporterID == request.TransportOrder.TransporterID && t.Bid.BidNumber == dispatch.BidNumber).FirstOrDefault(); var tarrif = (decimal)0.00; var bidDocNo = string.Empty; if (transportOrderdetail != null) { tarrif = (decimal)transportOrderdetail.TariffPerQtl; bidDocNo = transportOrderdetail.TransportOrder.BidDocumentNo; } if (dispatch != null && request.Delivery.DeliveryDetails.FirstOrDefault() != null) { { var dispathedAmount = (decimal)0.0; var childCommodity = string.Empty; var firstOrDefault = dispatch.DispatchDetails.FirstOrDefault(); if (firstOrDefault != null) { dispathedAmount = firstOrDefault.DispatchedQuantityInMT.ToQuintal(); } var dispatchedDate = dispatch.DispatchDate.Date; var dispatchDetail = dispatch.DispatchDetails.FirstOrDefault(); if (dispatchDetail != null) { var childCommodityId = dispatchDetail.CommodityChildID; var orDefault = _commodityService.GetCommodities(c => c.CommodityID == childCommodityId).FirstOrDefault(); if (orDefault != null) { childCommodity = orDefault.Name; } } var deliveryDetail = request.Delivery.DeliveryDetails.FirstOrDefault(); var businessProcess = _BusinessProcessService.FindById(request.BusinessProcessID); if (request.LabourCost == null) { request.LabourCost = (decimal)0.00; } if (request.RejectedAmount == null) { request.RejectedAmount = (decimal)0.00; } if (deliveryDetail != null) { var transporterPaymentRequestViewModel = new TransporterPaymentRequestViewModel() { RequisitionNo = dispatch.RequisitionNo, GIN = request.Delivery.InvoiceNo, GRN = request.Delivery.ReceivingNumber, Commodity = deliveryDetail.Commodity.Name, Source = dispatch.Hub.Name, Destination = dispatch.FDP.Name, Region = dispatch.FDP.AdminUnit.AdminUnit2.AdminUnit2.Name, ReceivedQty = deliveryDetail.ReceivedQuantity. ToQuintal(), Tarrif = tarrif, ShortageQty = request.ShortageQty != null ? (decimal)(request.ShortageQty) : (deliveryDetail.SentQuantity.ToQuintal()) - (deliveryDetail.ReceivedQuantity. ToQuintal()), ShortageBirr = request.ShortageBirr, SentQty = deliveryDetail.SentQuantity, BusinessProcessID = request.BusinessProcessID, DeliveryID = request.DeliveryID, ReferenceNo = request.ReferenceNo, TransportOrderID = request.TransportOrderID, TransporterPaymentRequestID = request.TransporterPaymentRequestID, FreightCharge = (decimal) (request.ShortageBirr != null ? (Math.Min(deliveryDetail.ReceivedQuantity .ToQuintal(), dispathedAmount) * tarrif) - ( request.ShortageBirr + request.LabourCost - request.RejectedAmount) : (deliveryDetail.ReceivedQuantity .ToQuintal() * tarrif) + request.LabourCost - request.RejectedAmount), BusinessProcess = businessProcess, LabourCost = request.LabourCost, LabourCostRate = request.LabourCostRate, RejectedAmount = request.RejectedAmount, RejectionReason = request.RejectionReason, RequestedDate = request.RequestedDate, Program = dispatch.DispatchAllocation.Program, Transporter = dispatch.Transporter, ChildCommodity = childCommodity, DispatchDate = dispatchedDate.ToCTSPreferedDateFormat(datePref), DispatchedAmount = dispathedAmount, BidDocumentNo = bidDocNo, Checked = false, ContractNumber = _TransportOrderService.FindBy(t => t.TransportOrderID == dispatch.DispatchAllocation.TransportOrderID).FirstOrDefault().ContractNumber }; transporterPaymentRequestViewModels.Add(transporterPaymentRequestViewModel); } } } } return(transporterPaymentRequestViewModels); }