示例#1
0
        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));
        }
示例#2
0
        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()));
        }
示例#3
0
        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));
        }
示例#4
0
        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);
        }