Пример #1
0
        public ActionResult UpdateCustomerLocation(CustomerLocationViewModel model, CustomerLocationAction submit)
        {
            switch (submit)
            {
            case CustomerLocationAction.Add:
                if (ModelState.IsValid && model.IsValid())
                {
                    var location = model.ToCustomerLocation();

                    var customer = _customerRepository.Get(model.CustomerId);
                    customer.CustomerLocation.Add(location);

                    _customerRepository.Save();

                    return(Json(new { Success = true }, JsonRequestBehavior.AllowGet));
                }
                foreach (var pair in model.Validate())
                {
                    ModelState.AddModelError(pair.Key, pair.Value);
                }
                break;

            case CustomerLocationAction.Update:
                if (ModelState.IsValid && model.IsValid())
                {
                    var location = _customerLocationRepository.Get(model.LocationId);
                    location = model.ToCustomerLocation(location);

                    _customerLocationRepository.Update(location);
                    _customerLocationRepository.Save();

                    return(Json(new { Success = true }, JsonRequestBehavior.AllowGet));
                }
                foreach (var pair in model.Validate())
                {
                    ModelState.AddModelError(pair.Key, pair.Value);
                }
                break;

            case CustomerLocationAction.Remove:
                try
                {
                    var customerLocation = _customerLocationRepository.Get(model.LocationId);
                    _customerLocationRepository.Remove(customerLocation);
                    _customerLocationRepository.Save();

                    return(Json(new { Success = true }, JsonRequestBehavior.AllowGet));
                }
                catch
                {
                    ModelState.Clear();
                    ModelState.AddModelError("", "Location can not be deleted");

                    return(PartialView("CustomerLocation", model));
                }
            }

            return(PartialView("CustomerLocation", model));
        }
Пример #2
0
        private void Offals_Add(object sender, OrderEventArgs e)
        {
            var newOrderDetails = AddOffallabel((double)e.Weight, OmsScaleWeighStatus.Success, e, quantity: e.Quantity);

            foreach (var ordDet in newOrderDetails)
            {
                int count = _viewModel.OffalsSource.Orders.Count();
                var label = _labelService.GetLabels(ordDet.Id).LastOrDefault();
                _viewModel.OffalsSource.Orders.Add(new OrderConstructorViewModel
                {
                    OrderDetailId = ordDet.Id,
                    LocationId    = ordDet.CustomerLocationId,
                    ProductId     = ordDet.ProductId,
                    ProductName   = ordDet.Product.Upc,
                    ShipTo        = _customerLocationRepository.Get(e.LocationId).Name,
                    Weight        = (decimal)LabelCreateService.GetGrossPoundWeight(label.PoundWeight, label.TypeId, ordDet),
                    Id            = ++count
                });
            }
        }
Пример #3
0
        public IEnumerable <SideWeightItem> GetSideWeigths(int coldWeightDetailId, int orderId)
        {
            var sideWeigths     = _coldWeightEntryDetailRepository.GetSideWeigths(coldWeightDetailId);
            var coldWeightEntry = _coldWeightEntryDetailRepository.Get(coldWeightDetailId);
            var speciesId       = coldWeightEntry.AnimalLabel.SpeciesId;
            var animalPart      = coldWeightEntry.ColdWeightEntry.TrackAnimalId.GetEnumDescription();
            Dictionary <OmsSideType, string> sideParts = null;

            if (coldWeightEntry.ColdWeightEntry.TrackAnimalId == TrackAnimal.Half)
            {
                sideParts = new Dictionary <OmsSideType, string>()
                {
                    { OmsSideType.FirstSide, "Half 1" },
                    { OmsSideType.SecondSide, "Half 2" },
                    { OmsSideType.ThirdSide, "" },
                    { OmsSideType.FourthSide, "" }
                };
            }
            else if (coldWeightEntry.ColdWeightEntry.TrackAnimalId == TrackAnimal.HalfAndTwoQuaters)
            {
                sideParts = new Dictionary <OmsSideType, string>()
                {
                    { OmsSideType.FirstSide, "Half" },
                    { OmsSideType.SecondSide, "Quater 1" },
                    { OmsSideType.ThirdSide, "Quater 2" },
                    { OmsSideType.FourthSide, "" }
                };
            }
            else if (coldWeightEntry.ColdWeightEntry.TrackAnimalId == TrackAnimal.Quarter)
            {
                sideParts = new Dictionary <OmsSideType, string>()
                {
                    { OmsSideType.FirstSide, "Quater 1" },
                    { OmsSideType.SecondSide, "Quater 2" },
                    { OmsSideType.ThirdSide, "Quater 3" },
                    { OmsSideType.FourthSide, "Quater 4" }
                };
            }
            else if (coldWeightEntry.ColdWeightEntry.TrackAnimalId == TrackAnimal.ThreeQuatersAndQuater)
            {
                sideParts = new Dictionary <OmsSideType, string>()
                {
                    { OmsSideType.FirstSide, "3/4" },
                    { OmsSideType.SecondSide, "Quater" },
                    { OmsSideType.ThirdSide, "" },
                    { OmsSideType.FourthSide, "" }
                };
            }
            return((from sideWeigt in sideWeigths
                    select new SideWeightItem
            {
                AnimalPart = animalPart,
                IsWeight = sideWeigt.Value.HasValue,
                Name = sideWeigt.Value.HasValue ? _customerLocationRepository.Get(sideWeigt.Value.Value).Name : null,
                CustomerLocationId = sideWeigt.Value ?? 0,
                OrderId = orderId,
                ColdWeightDetailId = coldWeightDetailId,
                SpeciesId = speciesId,
                Products = GetProductsList(sideWeigt.Value, coldWeightDetailId, sideWeigt.Key),
                SideNumber = sideWeigt.Key,
                QualityGrade = coldWeightEntry.QualityGrade,
                AnimalLabel = coldWeightEntry.AnimalLabel,
                SideMark = sideParts != null? sideParts[sideWeigt.Key]:""
            }).ToList());
        }
Пример #4
0
        public PartialViewResult GenerateReport(OrderReportViewModel viewModel)
        {
            string reportType = ReportService.GetReportType(viewModel.ReportType);

            if (reportType == null)
            {
                ModelState.AddModelError("ReportType", "Report Type is invalid");
            }

            if (!viewModel.ReportIds.Any())
            {
                ModelState.AddModelError("ReportIds", "Report type is required");
            }

            Dictionary <string, string> files = null;

            if (ModelState.IsValid)
            {
                var  orderId       = viewModel.OrderId;
                var  reportsFolder = string.Format("~/Documents/Reports/{0}/", orderId);
                var  order         = _orderRepository.Get(orderId);
                bool isCustom      = order.Customer.CustomerTypeId == OmsCustomerType.Custom;

                List <CustomerLocation>      locations          = null;
                List <AnimalOrderDetail>     animalOrderDetails = null;
                List <ColdWeightEntryDetail> coldWeightDetails  = null;

                if (isCustom)
                {
                    var coldWeightEntry = _coldWeightEntryRepository.GetByOrderId(orderId);
                    if (coldWeightEntry == null)
                    {
                        ModelState.AddModelError("ColdWeight", "No AnimalNumbers");

                        OrderReportViewModel reportViewModel = _orderReportService.Get(viewModel.OrderId);
                        return(PartialView("_Report", reportViewModel));
                    }
                    coldWeightDetails = coldWeightEntry.ColdWeightEntryDetails.ToList();

                    // All records from dbo.AnimalOrderDetail by Order
                    animalOrderDetails = coldWeightDetails.SelectMany(cw => cw.AnimalOrderDetails).ToList();
                }

                foreach (var report in viewModel.ReportIds)
                {
                    var reportName = ReportService.GetReportName(report);

                    DeleteOldReports(reportsFolder, reportName + "*." + reportType);

                    if (isCustom)
                    {
                        foreach (var detail in coldWeightDetails)
                        {
                            var sides = _coldWeightEntryDetailRepository.GetSideWeigths(detail.Id);
                            foreach (var side in sides)
                            {
                                if (!side.Value.HasValue)
                                {
                                    continue;
                                }

                                var orderDetailsForSides = animalOrderDetails.Where(a => a.ColdWeightDetailId == detail.Id)
                                                           .Select(a => a.OrderDetail).ToList()
                                                           .FindAll(x => x.SideTypeId == side.Key);

                                var path = string.Format("{0}{1}BackTag{2}{3}{4}.{5}", reportsFolder, reportName,
                                                         detail.AnimalNumber, side.Key, side.Value, reportType);

                                var filename = GetFilenameSafe(path);

                                switch (reportName)
                                {
                                case OrderReportViewModel.ReportTypes.ProductionManifest:
                                    ReportService.GenerateProductionManifest(order, orderDetailsForSides, filename,
                                                                             reportType, (UnitsType)viewModel.UnitsType, viewModel.SuppressWeights);
                                    break;

                                case OrderReportViewModel.ReportTypes.ShippingManifest:
                                    var location = _customerLocationRepository.Get(side.Value.Value);

                                    ReportService.GenerateShippingManifest(order, orderDetailsForSides, filename,
                                                                           location, reportType, (UnitsType)viewModel.UnitsType, viewModel.SuppressWeights);
                                    break;

                                case OrderReportViewModel.ReportTypes.ProductionDetail:
                                {
                                    var currentLocation = _customerLocationRepository.Get(side.Value.Value);
                                    var labels          = GetLabelsByOrderDetailsId(orderDetailsForSides);

                                    ReportService.GenerateProductionManifestDetail(order, labels, filename,
                                                                                   currentLocation, reportType, (UnitsType)viewModel.UnitsType, viewModel.SuppressWeights);
                                    break;
                                }

                                case OrderReportViewModel.ReportTypes.YieldReport:
                                {
                                    var coldWeightsDeatails = _coldWeightEntryService.GetItems(orderId).ToList();
                                    var labels = GetLabelsByOrderDetailsId(orderDetailsForSides);

                                    ReportService.GenerateYield(order, labels, filename, reportType, coldWeightsDeatails, (UnitsType)viewModel.UnitsType);
                                    break;
                                }
                                }
                            }
                        }
                    }
                    else
                    {
                        if (reportName == OrderReportViewModel.ReportTypes.ProductionManifest)
                        {
                            var path     = string.Format("{0}{1}.{2}", reportsFolder, reportName, reportType);
                            var filename = GetFilenameSafe(path);

                            var orderDetails = _orderDetailRepository.FindAll(x => x.OrderId == order.Id).ToList();

                            ReportService.GenerateProductionManifest(order, orderDetails, filename, reportType, (UnitsType)viewModel.UnitsType, viewModel.SuppressWeights);
                        }

                        if (reportName == OrderReportViewModel.ReportTypes.ShippingManifest)
                        {
                            locations = GetLocations(order).ToList();

                            foreach (var currentLocation in locations)
                            {
                                var location = currentLocation;
                                var path     = string.Format("{0}{1}_{2}.{3}", reportsFolder, reportName, location.Id, reportType);
                                var filename = GetFilenameSafe(path);

                                var orderDetails = _orderDetailRepository
                                                   .FindAll(x => x.OrderId == orderId && x.CustomerLocationId == location.Id)
                                                   .ToArray();

                                ReportService.GenerateShippingManifest(order, orderDetails, filename, location,
                                                                       reportType, (UnitsType)viewModel.UnitsType, viewModel.SuppressWeights);
                            }
                        }

                        if (reportName == OrderReportViewModel.ReportTypes.ProductionDetail)
                        {
                            locations = locations ?? GetLocations(order).ToList();

                            foreach (var currentLocation in locations)
                            {
                                var location = currentLocation;

                                var path = string.Format("{0}{1}{2}.{3}", reportsFolder, reportName,
                                                         location.Id,
                                                         reportType);
                                var filename = GetFilenameSafe(path);

                                var orderDetailsForSides = _orderDetailRepository
                                                           .FindAll(x => x.OrderId == orderId && x.CustomerLocationId == location.Id).ToList();

                                var labels = GetLabelsByOrderDetailsId(orderDetailsForSides);

                                ReportService.GenerateProductionManifestDetail(order, labels, filename, currentLocation,
                                                                               reportType, (UnitsType)viewModel.UnitsType, viewModel.SuppressWeights);
                            }
                        }
                        if (reportName == OrderReportViewModel.ReportTypes.YieldReport)
                        {
                            var path                = string.Format("{0}{1}.{2}", reportsFolder, reportName, reportType);
                            var filename            = GetFilenameSafe(path);
                            var coldWeightsDeatails = _coldWeightEntryService.GetItems(order.Id).ToList();
                            var orderDetails        = _orderDetailRepository.FindAll(x => x.OrderId == order.Id).ToList();
                            var labels              = GetLabelsByOrderDetailsId(orderDetails);

                            ReportService.GenerateYield(order, labels, filename, reportType, coldWeightsDeatails);
                        }
                    }
                }

                files = Directory.GetFiles(GetFilenameSafe(reportsFolder), "*." + reportType,
                                           SearchOption.TopDirectoryOnly)
                        .Select(Path.GetFileName)
                        .ToDictionary(x => x, x => string.Format("{0}{1}", reportsFolder, x));
            }

            FillLookups();
            OrderReportViewModel model = _orderReportService.Get(viewModel.OrderId);

            model.ReportIds   = viewModel.ReportIds;
            model.ReportFiles = files;
            return(PartialView("_Report", model));
        }