private TransportOrderDetailViewModel BindTransportOrderDetailViewModel(TransportOrderDetail transportOrderDetail) { TransportOrderDetailViewModel transportOrderDetailViewModel = null; if (transportOrderDetail != null) { transportOrderDetailViewModel = new TransportOrderDetailViewModel { FdpID = transportOrderDetail.FdpID, FDP = transportOrderDetail.FDP.Name, CommodityID = transportOrderDetail.CommodityID, Commodity = transportOrderDetail.Commodity.Name, DonorID = transportOrderDetail.DonorID, OriginWarehouse = transportOrderDetail.Hub.Name, QuantityQtl = transportOrderDetail.QuantityQtl, RequisitionID = transportOrderDetail.RequisitionID, RequisitionNo = transportOrderDetail.ReliefRequisition.RequisitionNo, SourceWarehouseID = transportOrderDetail.SourceWarehouseID, TariffPerQtl = transportOrderDetail.TariffPerQtl, Woreda = transportOrderDetail.FDP.AdminUnit.Name }; } return(transportOrderDetailViewModel); }
public bool DeleteTransportOrderDetail(TransportOrderDetail transportOrderDetail) { if (transportOrderDetail == null) { return(false); } _unitOfWork.TransportOrderDetailRepository.Delete(transportOrderDetail); _unitOfWork.Save(); return(true); }
private IList<TransportOrderDetail> PrepareTransportOrderDetail(string orderNo, TransportMode transportMode, bool multiSitePick, IList<string> ipNoList, IList<TransportOrderRoute> transportOrderRouteList) { IList<TransportOrderDetail> transportOrderDetailList = new List<TransportOrderDetail>(); if (ipNoList != null && ipNoList.Count > 0) { StringBuilder selectIpMasterHql = null; StringBuilder selectIpDetailHql = null; StringBuilder selectItemHql = null; StringBuilder verifyIpNoHql = null; IList<object> parms = new List<object>(); foreach (string ipNo in ipNoList) { if (selectIpMasterHql == null) { selectIpMasterHql = new StringBuilder("from IpMaster where IpNo in (?"); selectIpDetailHql = new StringBuilder("from IpDetail where IpNo in (?"); selectItemHql = new StringBuilder("from Item where code in (select Item from IpDetail where IpNo in (?"); verifyIpNoHql = new StringBuilder("select IpNo from TransportOrderDetail where IpNo in (?"); } else { selectIpMasterHql.Append(", ?"); selectIpDetailHql.Append(", ?"); selectItemHql.Append(", ?"); verifyIpNoHql.Append(", ?"); } parms.Add(ipNo); } selectIpMasterHql.Append(")"); selectIpDetailHql.Append(")"); selectItemHql.Append("))"); verifyIpNoHql.Append(")"); IList<IpMaster> ipMasterList = genericMgr.FindAll<IpMaster>(selectIpMasterHql.ToString(), parms.ToArray()); IList<IpDetail> ipDetailList = genericMgr.FindAll<IpDetail>(selectIpDetailHql.ToString(), parms.ToArray()); IList<Item> itemList = genericMgr.FindAll<Item>(selectItemHql.ToString(), parms.ToArray()); IList<string> createdIpNoList = genericMgr.FindAll<string>(verifyIpNoHql.ToString(), parms.ToArray()); if (createdIpNoList.Count > 0) { throw new BusinessException("ASN号{0}已经创建了运输单。", String.Join(", ", createdIpNoList.ToArray())); } int seq = 1; foreach (string ipNo in ipNoList) { IpMaster ipMaster = ipMasterList.Where(m => m.IpNo == ipNo).SingleOrDefault(); if (ipMaster == null) { throw new BusinessException("ASN号{0}不存在。", ipNo); } if (ipMaster.Status != IpStatus.Submit) { throw new BusinessException("ASN号{0}状态不是{1}不能添加至运输单。", ipNo, systemMgr.GetCodeDetailDescription(com.Sconit.CodeMaster.CodeMaster.IpStatus, ((int)IpStatus.Submit)).ToString()); } TransportOrderRoute transportOrderRouteFrom = transportOrderRouteList.Where(r => r.ShipAddress == ipMaster.ShipFrom && !r.IsArrive).OrderBy(r => r.Sequence).FirstOrDefault(); if (!multiSitePick && transportOrderRouteFrom.Sequence != 1) { throw new BusinessException("ASN号{0}发货地址不是运输单的始发站点。", ipNo); } if (transportOrderRouteFrom == null) { throw new BusinessException("ASN号{0}发货地址不是运输单经过的站点。", ipNo); } TransportOrderRoute transportOrderRouteTo = transportOrderRouteList.Where(r => r.ShipAddress == ipMaster.ShipTo && !r.IsArrive && r.Sequence > transportOrderRouteFrom.Sequence).OrderBy(r => r.Sequence).FirstOrDefault(); if (transportOrderRouteTo == null) { throw new BusinessException("ASN号{0}收货地址不是运输单经过的站点。", ipNo); } TransportOrderDetail transportOrderDetail = new TransportOrderDetail(); transportOrderDetail.OrderNo = orderNo; transportOrderDetail.Sequence = seq++; transportOrderDetail.IpNo = ipNo; transportOrderDetail.OrderRouteFrom = transportOrderRouteFrom.Id; transportOrderDetail.OrderRouteTo = transportOrderRouteTo.Id; transportOrderDetail.EstPalletQty = Convert.ToInt32(Math.Ceiling(ipDetailList.Sum( d => (d.PalletLotSize > 0 ? (d.Qty / d.PalletLotSize) : ((itemList.Where(i => i.Code == d.Item).Single().PalletLotSize > 0 ? (d.Qty / itemList.Where(i => i.Code == d.Item).Single().PalletLotSize) : 0)))))); transportOrderDetail.EstVolume = ipDetailList.Sum( d => (d.UnitCount > 0 ? (d.Qty / d.UnitCount) : ((itemList.Where(i => i.Code == d.Item).Single().UnitCount > 0 ? (d.Qty / itemList.Where(i => i.Code == d.Item).Single().UnitCount) : 0))) * d.PackageVolume); transportOrderDetail.EstVolume = ipDetailList.Sum( d => (d.UnitCount > 0 ? (d.Qty / d.UnitCount) : ((itemList.Where(i => i.Code == d.Item).Single().UnitCount > 0 ? (d.Qty / itemList.Where(i => i.Code == d.Item).Single().UnitCount) : 0))) * d.PackageWeight); transportOrderDetail.EstBoxCount = Convert.ToInt32(ipDetailList.Sum( d => Math.Ceiling((d.UnitCount > 0 ? (d.Qty / d.UnitCount) : ((itemList.Where(i => i.Code == d.Item).Single().UnitCount > 0 ? (d.Qty / itemList.Where(i => i.Code == d.Item).Single().UnitCount) : 0)))))); transportOrderDetail.LoadTime = DateTime.Now; transportOrderDetail.PartyFrom = ipMaster.PartyFrom; transportOrderDetail.PartyFromName = ipMaster.PartyFromName; transportOrderDetail.PartyTo = ipMaster.PartyTo; transportOrderDetail.PartyToName = ipMaster.PartyToName; transportOrderDetail.ShipFrom = ipMaster.ShipFrom; transportOrderDetail.ShipFromAddress = ipMaster.ShipFromAddress; transportOrderDetail.ShipFromTel = ipMaster.ShipFromTel; transportOrderDetail.ShipFromCell = ipMaster.ShipFromCell; transportOrderDetail.ShipFromFax = ipMaster.ShipFromFax; transportOrderDetail.ShipFromContact = ipMaster.ShipFromContact; transportOrderDetail.ShipTo = ipMaster.ShipTo; transportOrderDetail.ShipToAddress = ipMaster.ShipToAddress; transportOrderDetail.ShipToTel = ipMaster.ShipToTel; transportOrderDetail.ShipToCell = ipMaster.ShipToCell; transportOrderDetail.ShipToFax = ipMaster.ShipToFax; transportOrderDetail.ShipToContact = ipMaster.ShipToContact; transportOrderDetail.Dock = ipMaster.Dock; transportOrderDetail.Distance = CalculateShipDistance(transportOrderDetail.ShipFrom, transportOrderDetail.ShipTo, transportMode); transportOrderDetail.IsReceived = false; transportOrderDetailList.Add(transportOrderDetail); } } return transportOrderDetailList; }
public void PrepareTransportOrderDetail(TransportOrderDetail transportOrderDetail) { #region 计算体积和重量 IList<IpDetail> ipDetailList = genericMgr.FindAll<IpDetail>("from IpDetail where IpNo = ?", transportOrderDetail.IpNo); decimal totalPackageVolume = ipDetailList.Sum(p => p.PackageVolume * p.Qty / p.UnitCount); decimal totalPackageWeight = ipDetailList.Sum(p => p.PackageWeight * p.Qty / p.UnitCount); transportOrderDetail.Volume = totalPackageVolume; transportOrderDetail.Weight = totalPackageWeight; #endregion }
public ActionResult ChangeTransporters([DataSourceRequest] DataSourceRequest request, List <SubstituteTransporterOrder> listOfSubTransporterOrders, int changedTransportOrderID) { var changedTransportOrderObj = _transportOrderService.FindById(changedTransportOrderID); var returnedObj = new List <TransportOrder>(); foreach (var subTransporterOrders in listOfSubTransporterOrders) { var transporterCount = subTransporterOrders.TransportersStandingList.Count(); foreach (var transporter in subTransporterOrders.TransportersStandingList) { changedTransportOrderObj = _transportOrderService.FindById(changedTransportOrderID); var transporterObj = _transporterService.FindById(transporter.TransporterID); var transportOrder = _transportOrderService.Get(t => t.TransporterID == transporterObj.TransporterID && t.StatusID == (int)TransportOrderStatus.Draft). FirstOrDefault(); if (transportOrder != null) { foreach (var transportOrderDetail in changedTransportOrderObj.TransportOrderDetails.ToList()) { if (transportOrderDetail.FDP.AdminUnitID == subTransporterOrders.WoredaID) { var transportOrderDetailObj = new TransportOrderDetail { CommodityID = transportOrderDetail.CommodityID, FdpID = transportOrderDetail.FdpID, RequisitionID = transportOrderDetail.RequisitionID, QuantityQtl = transportOrderDetail.QuantityQtl.ToPreferedWeightUnit() / transporterCount, TariffPerQtl = transportOrderDetail.TariffPerQtl, SourceWarehouseID = transportOrderDetail.Hub.HubID, //transportOrderDetailObj.ZoneID = transportOrderDetail.ReliefRequisition.ZoneID; }; transportOrder.TransportOrderDetails.Add(transportOrderDetailObj); _transportOrderService.EditTransportOrder(transportOrder); } } returnedObj.Add(transportOrder); } else { var transportOrderObj = new TransportOrder { TransporterID = transporter.TransporterID, OrderDate = DateTime.Today, TransportOrderNo = Guid.NewGuid().ToString(), OrderExpiryDate = DateTime.Today.AddDays(10), BidDocumentNo = "BID-DOC-No", PerformanceBondReceiptNo = "PERFORMANCE-BOND-NO", ContractNumber = Guid.NewGuid().ToString(), TransporterSignedDate = DateTime.Today, RequestedDispatchDate = DateTime.Today, ConsignerDate = DateTime.Today, StatusID = (int)TransportOrderStatus.Draft, StartDate = DateTime.Today, EndDate = DateTime.Today.AddDays(10), }; _transportOrderService.AddTransportOrder(transportOrderObj); var transporterName = _transporterService.FindById(transportOrderObj.TransporterID).Name; transportOrderObj.TransportOrderNo = string.Format("TRN-ORD-{0}", transportOrderObj.TransportOrderID); transportOrderObj.ContractNumber = string.Format("{0}/{1}/{2}/{3}", "LTCD", DateTime.Today.Day, DateTime.Today.Year, transporterName.Substring(0, 2)); _transportOrderService.EditTransportOrder(transportOrderObj); //var transportOrderDetailList = subTransporterOrders.TransportOrderDetails; foreach (var transportOrderDetail in changedTransportOrderObj.TransportOrderDetails.ToList()) { if (transportOrderDetail.FDP.AdminUnitID == subTransporterOrders.WoredaID) { var transportOrderDetailObj = new TransportOrderDetail { TransportOrderID = transportOrderObj.TransportOrderID, CommodityID = transportOrderDetail.CommodityID, FdpID = transportOrderDetail.FdpID, RequisitionID = transportOrderDetail.RequisitionID, QuantityQtl = transportOrderDetail.QuantityQtl.ToPreferedWeightUnit() / transporterCount, TariffPerQtl = transportOrderDetail.TariffPerQtl, SourceWarehouseID = transportOrderDetail.Hub.HubID }; //transportOrderDetail.ZoneID = reliefRequisitionDetail.ReliefRequisition.ZoneID; _transportOrderDetailService.AddTransportOrderDetail(transportOrderDetailObj); } } returnedObj.Add(transportOrderObj); } } } changedTransportOrderObj.StatusID = (int)TransportOrderStatus.Failed; _transportOrderService.EditTransportOrder(changedTransportOrderObj); return(RedirectToAction("Index", "TransportOrder", returnedObj)); //return Json(returnedObj.ToDataSourceResult(request), JsonRequestBehavior.AllowGet); }
public bool EditTransportOrderDetail(TransportOrderDetail transportOrderDetail) { _unitOfWork.TransportOrderDetailRepository.Edit(transportOrderDetail); _unitOfWork.Save(); return(true); }