//Calculate package fee from declared weight in RMB private decimal CalculatePackageFee(Package Package) { ServicePackageFee hehe = db.ServicePackageFees.SingleOrDefault(a => a.PackageTypeID == Package.PackageTypeID && a.ServiceTypeID == Package.Shipment.ServiceTypeID); PackageTypeSize haha = db.PackageTypeSizes.Single(a => a.PackageTypeSizeID == Package.PackageTypeSizeID); decimal price = 0; switch (Package.PackageTypeID) { //Envelop case 1: price = hehe.Fee; break; //Pak or Box case 2: case 4: price = Package.DeclaredWeight * hehe.Fee > hehe.MinimumFee ? (decimal)Package.DeclaredWeight * hehe.Fee : hehe.MinimumFee; int limit = 0; string limitString = haha.WeightLimit; bool convertResult = Int32.TryParse(limitString.Substring(0, limitString.Length - 2), out limit); if (limit != 0 && convertResult && Package.DeclaredWeight > (decimal)limit) { price += 500; } break; //Tube or Custmoer case 3: case 5: price = Package.DeclaredWeight * hehe.Fee > hehe.MinimumFee ? (decimal)Package.DeclaredWeight * hehe.Fee : hehe.MinimumFee; break; } return(price); }
public ActionResult DeleteConfirmed(int id) { PackageTypeSize packageTypeSize = db.PackageTypeSizes.Find(id); db.PackageTypeSizes.Remove(packageTypeSize); db.SaveChanges(); return(RedirectToAction("Index")); }
// GET: Packages/Create public ActionResult Create() { if (Session["HandlingWaybillId"] != null) { ViewBag.PackageTypeSizeId = PackageTypeSize.GetSelectList(); return(View()); } return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); }
public ActionResult Edit([Bind(Include = "PackageTypeSizeID,Type,Description,PackageTypeID")] PackageTypeSize packageTypeSize) { if (ModelState.IsValid) { db.Entry(packageTypeSize).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.PackageTypeID = new SelectList(db.PackageTypes, "PackageTypeID", "Type", packageTypeSize.PackageTypeID); return(View(packageTypeSize)); }
public ActionResult Create([Bind(Include = "PackageTypeSizeID,Type,Description,PackageTypeID")] PackageTypeSize packageTypeSize) { if (ModelState.IsValid) { db.PackageTypeSizes.Add(packageTypeSize); db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.PackageTypeID = new SelectList(db.PackageTypes, "PackageTypeID", "Type", packageTypeSize.PackageTypeID); return(View(packageTypeSize)); }
// GET: Shipments/ConfirmShipment public ActionResult ConfirmShipment() { if (Session["newShipment"] == null) { return(RedirectToAction("Index", "Home")); } ArrangeShipmentViewModel shipment = (ArrangeShipmentViewModel)Session["newShipment"]; Session.Remove("newShipment"); shipment.ServiceType = db.ServiceTypes.Find(shipment.ServiceTypeID).Type; shipment.RecipientProvince = GetProvince(shipment.Destination); ViewBag.NumberOfPackages = shipment.NumberOfPackages; shipment.ShipmentCost = 0; for (int i = 0; i < 10; i++) { if (i >= shipment.NumberOfPackages || shipment.Packages[i].CustomerWeight == 0) { shipment.Packages[i].PackageTypeSizeID = 1; shipment.Packages[i].CustomerWeight = 0; continue; } PackageTypeSize packageTypeSize = db.PackageTypeSizes.Find(shipment.Packages[i].PackageTypeSizeID); ServicePackageFee servicePackageFee = db.ServicePackageFees.First(s => (s.ServiceTypeID == shipment.ServiceTypeID) && (s.PackageTypeID == packageTypeSize.PackageTypeID)); shipment.Packages[i].PackageTypeSize = packageTypeSize.PackageType.Type + " (" + packageTypeSize.Size + ")"; decimal packageCost = 0; float weightLimit = db.PackageTypeSizes.Find(shipment.Packages[i].PackageTypeSizeID).WeightLimit; packageCost = (decimal)shipment.Packages[i].CustomerWeight * servicePackageFee.Fee; if (weightLimit > 0 && shipment.Packages[i].CustomerWeight > weightLimit) { packageCost += 500; } packageCost = (packageCost < servicePackageFee.MinimumFee) ? servicePackageFee.MinimumFee : packageCost; packageCost = ConvertCurrency(shipment.CurrencyCode, packageCost); shipment.Packages[i].PackageCost = packageCost; shipment.ShipmentCost += packageCost; SaveToSessionState("newPackage" + i.ToString(), shipment.Packages[i]); } if (Session["newShipment"] != null) { Session.Remove("newShipment"); } SaveToSessionState("newShipment", shipment); return(View(shipment)); }
// GET: PackageTypeSizes/Details/5 public ActionResult Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } PackageTypeSize packageTypeSize = db.PackageTypeSizes.Find(id); if (packageTypeSize == null) { return(HttpNotFound()); } return(View(packageTypeSize)); }
// GET: PackageTypeSizes/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } PackageTypeSize packageTypeSize = db.PackageTypeSizes.Find(id); if (packageTypeSize == null) { return(HttpNotFound()); } ViewBag.PackageTypeID = new SelectList(db.PackageTypes, "PackageTypeID", "Type", packageTypeSize.PackageTypeID); return(View(packageTypeSize)); }
public ActionResult Edit([Bind(Include = "PackageId,PackageTypeSizeId,Description,ValueOfContent,ContentCurrency,EstimatedWeight,Weight")] Package package) { if (ModelState.IsValid && Session["HandlingWaybillId"] != null) { package.WaybillId = (int)Session["HandlingWaybillId"]; db.Entry(package).State = EntityState.Modified; db.SaveChanges(); UpdateShipmentFee(package.WaybillId, true); return(RedirectToAction("Index")); } if (Session["HandlingWaybillId"] == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } ViewBag.PackageTypeSizeId = PackageTypeSize.GetSelectList(package.PackageTypeSizeId); return(View(package)); }
// POST: ShipmentCostCalculator public ActionResult ShipmentCostCalculator(CalculatorShipmentViewModel shipment) { shipment.Destinations = PopulateDestinationsDropDownList().ToList(); shipment.ServiceTypes = PopulateServiceTypesDropDownList().ToList(); shipment.CurrencyCodes = PopulateCurrenciesDropDownList().ToList(); for (int i = 0; i < 10; i++) { shipment.Packages[i].PackageTypeSizes = PopulatePackageTypeSizesDropDownList().ToList(); } shipment.ShipmentCost = 0; ViewBag.NumberOfPackages = shipment.NumberOfPackages; for (int i = 0; i < 10; i++) { if (i >= shipment.NumberOfPackages || shipment.Packages[i].Weight == 0) { shipment.Packages[i].PackageTypeSizeID = 1; shipment.Packages[i].Weight = 0; continue; } PackageTypeSize packageTypeSize = db.PackageTypeSizes.Find(shipment.Packages[i].PackageTypeSizeID); ServicePackageFee servicePackageFee = db.ServicePackageFees.First(s => (s.ServiceTypeID == shipment.ServiceTypeID) && (s.PackageTypeID == packageTypeSize.PackageTypeID)); decimal packageCost = 0; float weightLimit = db.PackageTypeSizes.Find(shipment.Packages[i].PackageTypeSizeID).WeightLimit; packageCost = (decimal)shipment.Packages[i].Weight * servicePackageFee.Fee; if (weightLimit > 0 && shipment.Packages[i].Weight > weightLimit) { packageCost += 500; } packageCost = (packageCost < servicePackageFee.MinimumFee) ? servicePackageFee.MinimumFee : packageCost; packageCost = ConvertCurrency(shipment.CurrencyCode, packageCost); shipment.Packages[i].PackageCost = packageCost; shipment.ShipmentCost += packageCost; } return(View(shipment)); }
// GET: Packages/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } if (Session["HandlingWaybillId"] == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Package package = db.Packages.Find(id); if (package == null) { return(HttpNotFound()); } ViewBag.PackageTypeSizeId = PackageTypeSize.GetSelectList(package.PackageTypeSizeId); return(View(package)); }
//Calculate package fee from declared weight in RMB private decimal PackageFee(Package Package) { ServicePackageFee servicePackageFees = db.ServicePackageFees.SingleOrDefault(a => a.PackageTypeID == Package.PackageTypeID && a.ServiceTypeID == Package.Shipment.ServiceTypeID); PackageTypeSize packageTypeSizes = db.PackageTypeSizes.Single(a => a.PackageTypeSizeID == Package.PackageTypeSizeID); decimal price = 0; switch (Package.PackageTypeID) { //Envelop case 1: price = servicePackageFees.Fee; break; //Pack/Box case 2: if (Package.Weight * servicePackageFees.Fee > servicePackageFees.MinimumFee) { price = (decimal)Package.Weight * servicePackageFees.Fee; } else { price = servicePackageFees.MinimumFee; } int limit = 0; string limitString = packageTypeSizes.WeightLimit; bool convertResult = Int32.TryParse(limitString.Substring(0, limitString.Length - 2), out limit); if (limit != 0 && convertResult && Package.Weight > (decimal)limit) { price += 500; } break; case 4: if (Package.Weight * servicePackageFees.Fee > servicePackageFees.MinimumFee) { price = (decimal)Package.Weight * servicePackageFees.Fee; } else { price = servicePackageFees.MinimumFee; } int weightLimit = 0; string limitInString = packageTypeSizes.WeightLimit; bool result = Int32.TryParse(limitInString.Substring(0, limitInString.Length - 2), out weightLimit); if (weightLimit != 0 && result && Package.Weight > (decimal)weightLimit) { price += 500; } break; //Tube or Customer case 3: if (Package.Weight * servicePackageFees.Fee > servicePackageFees.MinimumFee) { price = (decimal)Package.Weight * servicePackageFees.Fee; } else { price = servicePackageFees.MinimumFee; } break; case 5: if (Package.Weight * servicePackageFees.Fee > servicePackageFees.MinimumFee) { price = (decimal)Package.Weight * servicePackageFees.Fee; } else { price = servicePackageFees.MinimumFee; } break; } return(price); }