Example #1
0
 public void Initialize()
 {
     ReportDateTime = DateTime.Now;
     Locations      = LocationsSelect
                      .Where(l => l.IsGroup(GroupName))
                      .Select(l =>
     {
         string street;
         int row;
         LocationDescriptionHelper.GetStreetRow(l.Location, out street, out row);
         return(new
         {
             Street = street,
             Row = row,
             Select = l
         });
     })
                      .OrderBy(l => l.Street).ThenBy(l => l.Row)
                      .Select(l => new InventoryCycleCountLocationReturn
     {
         Location  = LocationDescriptionHelper.FormatLocationDescription(l.Select.Location),
         Inventory = l.Select.InventorySelect.GroupBy(i => new
         {
             lotKey       = i.LotKeyReturn.ToLotKey(),
             productKey   = i.ProductSelect.ToProductKey(),
             packagingKey = i.PackagingSelect.ProductKeyReturn.ToProductKey(),
             treatmentKey = i.TreatmentSelect.InventoryTreatmentKeyReturn.ToInventoryTreatmentKey()
         }).Select(g => new InventoryCycleCountInventoryReturn
         {
             LotKey         = g.Key.lotKey,
             ProductionDate = g.First().ProductionDate,
             ProductCode    = g.First().ProductSelect.ProductCode,
             ProductName    = g.First().ProductSelect.ProductName,
             Packaging      = g.First().PackagingSelect.ProductName,
             Treatment      = g.First().TreatmentSelect.TreatmentNameShort,
             Quantity       = g.Sum(i => i.Quantity),
             Weight         = g.Sum(i => i.Weight)
         })
                     .OrderBy(i => i.LotKey)
                     .ToList()
     })
                      .ToList();
 }
        private static void SetupProductionBatchPacketReport()
        {
            Mapper.CreateMap <IProductionPacketReturn, IEnumerable <ProductionBatchPacketReportModel> >()
            .ConstructUsing(ps => ps.Batches.Select(b => new ProductionBatchPacketReportModel
            {
                Header = new ProductionBatchPacketReportModel.ProductionBatchPacketReportHeader
                {
                    BatchType          = ps.WorkType.Description,
                    LotNumber          = b.LotKey,
                    PSNum              = ps.PSNum ?? 0,
                    PackScheduleKey    = ps.PackScheduleKey,
                    PackScheduleDate   = ps.DateCreated,
                    ProductNameDisplay = ps.ChileProduct.ProductCodeAndName,
                    Description        = ps.SummaryOfWork,
                    TargetWeight       = b.TargetParameters.BatchTargetWeight,
                    TargetAsta         = b.TargetParameters.BatchTargetAsta,
                    TargetScan         = b.TargetParameters.BatchTargetScan,
                    TargetScoville     = b.TargetParameters.BatchTargetScoville,
                    CalculatedAsta     = b.CalculatedParameters.BatchTargetAsta,
                    CalculatedScan     = b.CalculatedParameters.BatchTargetScan,
                    CalculatedScoville = b.CalculatedParameters.BatchTargetScoville,
                    BatchNotes         = b.Notes,
                },
                PickedChileInventoryItemsByChileType = b.PickedItems
                                                       .Where(p => p.LotProduct.ProductType.HasValue && p.LotProduct.ProductType.Value == ProductTypeEnum.Chile)
                                                       .GroupBy(
                    item => item.LotKey.Substring(0, 2),
                    item => new ProductionBatchPacketReportModel.PickedChileInventoryItem
                {
                    LotNumber     = item.LotKey,
                    LotStatus     = item.QualityStatus.ToString(),
                    PackagingName = item.PackagingProduct.ProductName,
                    PickedFromWarehouseLocationName = LocationDescriptionHelper.FormatLocationDescription(item.Location.Description),
                    ProductNameDisplay = item.LotProduct.ProductName,
                    Quantity           = item.QuantityPicked,
                    WeightPicked       = item.QuantityPicked * item.PackagingProduct.Weight,
                    Treatment          = item.InventoryTreatment.TreatmentNameShort,
                },
                    (g, items) => new KeyValuePair <string, IEnumerable <ProductionBatchPacketReportModel.PickedChileInventoryItem> >(ConvertLotType(g),
                                                                                                                                      items.OrderBy(i => i.PickedFromWarehouseLocationName))),

                PickedAdditiveInventoryItemsByAdditiveType = b.PickedItems
                                                             .Where(p => p.LotProduct.ProductType.HasValue && p.LotProduct.ProductType.Value == ProductTypeEnum.Additive)
                                                             .GroupBy(
                    item => item.LotKey.Substring(0, 2),
                    item => new ProductionBatchPacketReportModel.PickedAdditiveInventoryItem
                {
                    LotNumber     = item.LotKey,
                    PackagingName = item.PackagingReceived.ProductName,            // ?? item.PackagingProduct.ProductName,
                    PickedFromWarehouseLocationName = LocationDescriptionHelper.FormatLocationDescription(item.Location.Description),
                    ProductNameDisplay = item.LotProduct.ProductName,
                    Quantity           = item.QuantityPicked,
                    WeightPicked       = item.QuantityPicked * item.PackagingProduct.Weight,
                },
                    (g, items) => new KeyValuePair <string, IEnumerable <ProductionBatchPacketReportModel.PickedAdditiveInventoryItem> >(ConvertLotType(g),
                                                                                                                                         items.OrderBy(i => i.PickedFromWarehouseLocationName))),

                PickedPackagingInventoryItems = b.PickedItems
                                                .Where(p => p.LotProduct.ProductType.HasValue && p.LotProduct.ProductType.Value == ProductTypeEnum.Packaging)
                                                .Select(item => new ProductionBatchPacketReportModel.PickedPackagingInventoryItem
                {
                    LotNumber = item.LotKey,
                    PickedFromWarehouseLocationName = LocationDescriptionHelper.FormatLocationDescription(item.Location.Description),
                    ProductNameDisplay = item.LotProduct.ProductName,
                    Quantity           = item.QuantityPicked,
                })
                                                .OrderBy(i => i.PickedFromWarehouseLocationName),

                BatchInstructions = b.Instructions.Notes.Select(n => new KeyValuePair <int, string>(0, n.Text)).Distinct(),    // fix indexer
                ExpectedOutputs   = b.PickedItems
                                    .Where(i => i.LotProduct.ProductType.HasValue && i.LotProduct.ProductType.Value == ProductTypeEnum.Packaging)
                                    .Select(p => p.LotProduct.ProductName)
                                    .Concat(new[] { "", "" })
                                    .Select(s => new ProductionBatchPacketReportModel.ExpectedOutput
                {
                    PackagingName = s
                }),
            }));
        }
 public static void ResolveWithWarehouseLocationFormatting <T>(this IMemberConfigurationExpression <T> scope, Func <T, string> resolver)
 {
     scope.ResolveUsing(m => LocationDescriptionHelper.FormatLocationDescription(resolver.Invoke(m)));
 }