예제 #1
0
        //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);
        }
예제 #2
0
        public ActionResult DeleteConfirmed(int id)
        {
            PackageTypeSize packageTypeSize = db.PackageTypeSizes.Find(id);

            db.PackageTypeSizes.Remove(packageTypeSize);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
예제 #3
0
 // GET: Packages/Create
 public ActionResult Create()
 {
     if (Session["HandlingWaybillId"] != null)
     {
         ViewBag.PackageTypeSizeId = PackageTypeSize.GetSelectList();
         return(View());
     }
     return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
 }
예제 #4
0
 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));
 }
예제 #5
0
        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));
        }
예제 #7
0
        // 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));
        }
예제 #8
0
        // 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));
        }
예제 #9
0
 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));
        }
예제 #11
0
        // 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));
        }
예제 #12
0
        //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);
        }