Exemple #1
0
        public BindingList <LabelBoxItem> GetBoxesCustomList(int orderId)
        {
            var coldWeight = _coldWeightEntryRepository.GetByOrderId(orderId);

            if (coldWeight == null)
            {
                return(new BindingList <LabelBoxItem>());
            }

            var list = new List <LabelBoxItem>();
            var animalOrderDetails = coldWeight.ColdWeightEntryDetails.SelectMany(cw => cw.AnimalOrderDetails).ToList();

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

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

                    if (!orderDetailsForSide.Any())
                    {
                        continue;
                    }

                    var cl    = orderDetailsForSide.First().CustomerLocation;
                    var count = orderDetailsForSide.SelectMany(s => s.Label)
                                .Where(s => s.TypeId == OmsLabelType.Box)
                                .GroupBy(l => l.SerialNumber)
                                .Count();


                    list.Add(new LabelBoxItem
                    {
                        QualityGrade       = detail.QualityGrade,
                        AnimalLabel        = detail.AnimalLabel,
                        OrderId            = orderId,
                        Name               = string.Format("Back Tag '{0}' {2} '{1}'", detail.AnimalNumber, cl.Name, side.Key),
                        CustomerLocationId = cl.Id,
                        ColdWeightDetailId = detail.Id,
                        CompletedCount     = count,
                        Side               = side.Key
                    });
                }
            }

            return(new BindingList <LabelBoxItem>(list));
        }
Exemple #2
0
        private void CustomCustomerEditBox(object sender, EventArgs e)
        {
            var coldWeightDetail = _coldWeightEntryRepository.GetByOrderId(_viewModel.SelectedCustomerLocation.OrderId)
                                   .ColdWeightEntryDetails.Single(c => c.Id == _viewModel.SelectedCustomerLocation.ColdWeightDetailId);
            IList <LabelEditItem> labelsToEdit = new List <LabelEditItem>();
            var sides = _coldWeightEntryDetailRepository.GetSideWeigths(coldWeightDetail.Id);

            foreach (var side in sides)
            {
                if (!side.Value.HasValue)
                {
                    continue;
                }

                var orderDetailsForSide =
                    coldWeightDetail.AnimalOrderDetails.Where(a => a.ColdWeightDetailId == coldWeightDetail.Id)
                    .Select(a => a.OrderDetail)
                    .ToList().FindAll(x => x.SideTypeId == side.Key).ToList();

                if (!orderDetailsForSide.Any())
                {
                    continue;
                }

                var items = orderDetailsForSide.SelectMany(s => s.Label)
                            .Where(s => s.TypeId == OmsLabelType.Box);
                foreach (var label in items)
                {
                    labelsToEdit.Add(new LabelEditItem()
                    {
                        LabelId      = label.Id,
                        LabelType    = label.TypeId,
                        LocationName = label.OrderDetail.CustomerLocation.Name,
                        PoundWeight  = LabelCreateService.GetGrossPoundWeight(label.PoundWeight, label.TypeId, label.OrderDetail),
                        PrintedDate  = label.CreatedDate,
                        ProductName  = ProductService.GetFormattedProductName(label.OrderDetail.Product)
                    });
                }
            }
            var selectedOrderId = (int)ComboOrder.SelectedValue;
            var form            = DIService.Resolve <EditLabelsWindow>(new ConstructorArgument("orderId", selectedOrderId, false), new ConstructorArgument("labels", labelsToEdit, false));

            form.Owner = this;
            form.ShowDialog();
            Refresh();
        }
        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));
        }