private FCRegularLocationDetail CreateRegularLocationV2(RegularCartonDetail cartonDetailInDb)
        {
            var result = new FCRegularLocationDetail
            {
                Container          = cartonDetailInDb.POSummary.Container,
                PurchaseOrder      = cartonDetailInDb.PurchaseOrder,
                Style              = cartonDetailInDb.Style,
                Color              = cartonDetailInDb.Color,
                CustomerCode       = cartonDetailInDb.Customer,
                SizeBundle         = cartonDetailInDb.SizeBundle,
                PcsBundle          = cartonDetailInDb.PcsBundle,
                Cartons            = cartonDetailInDb.ToBeAllocatedCtns,
                Quantity           = cartonDetailInDb.ToBeAllocatedPcs,
                Location           = "FLOOR",
                PcsPerCaron        = cartonDetailInDb.PcsPerCarton,
                Status             = "In Stock",
                AvailableCtns      = cartonDetailInDb.ToBeAllocatedCtns,
                PickingCtns        = 0,
                ShippedCtns        = 0,
                AvailablePcs       = cartonDetailInDb.ToBeAllocatedPcs,
                PickingPcs         = 0,
                ShippedPcs         = 0,
                PreReceiveOrder    = cartonDetailInDb.POSummary.PreReceiveOrder,
                RegularCaronDetail = cartonDetailInDb,
                CartonRange        = cartonDetailInDb.CartonRange,
                Allocator          = _userName,
                Batch              = cartonDetailInDb.Batch,
                Vendor             = cartonDetailInDb.Vendor
            };

            cartonDetailInDb.ToBeAllocatedCtns = 0;
            cartonDetailInDb.ToBeAllocatedPcs  = 0;

            return(result);
        }
        public IHttpActionResult CreateBulk([FromBody] RegualrCartonBulkJsonObj obj)
        {
            var poSummaryInDb = _context.POSummaries.Find(obj.Id);

            var newCartonDetail = new RegularCartonDetail
            {
                PurchaseOrder     = poSummaryInDb.PurchaseOrder,
                Style             = obj.Style,
                Color             = obj.Color,
                Customer          = poSummaryInDb.Customer,
                Container         = poSummaryInDb.Container,
                CartonRange       = obj.CartonRange,
                SizeBundle        = obj.Size,
                PcsBundle         = obj.Pcs,
                PcsPerCarton      = obj.Pack,
                Quantity          = 0,
                Cartons           = 0,
                ActualCtns        = 0,
                ActualPcs         = 0,
                ToBeAllocatedCtns = 0,
                ToBeAllocatedPcs  = 0,
                Status            = "To Be Allocated",
                Comment           = "This is a bulk sku",
                Operator          = _userName,
                Receiver          = "",
                Adjustor          = "system",
                Vendor            = poSummaryInDb.Vendor,
                Batch             = poSummaryInDb.Batch,
                POSummary         = poSummaryInDb
            };

            if (newCartonDetail.SizeBundle.Split(' ').Count() > 1)
            {
                newCartonDetail.OrderType = OrderType.Prepack;
            }
            else
            {
                newCartonDetail.OrderType = OrderType.SolidPack;
            }

            _context.RegularCartonDetails.Add(newCartonDetail);
            _context.SaveChanges();

            var sample = _context.RegularCartonDetails.OrderByDescending(x => x.Id).First();

            return(Created(Request.RequestUri + "/" + sample.Id, Mapper.Map <RegularCartonDetail, RegularCartonDetailDto>(sample)));
        }
        private string CombineSize(RegularCartonDetail cartonDetail)
        {
            var summary = cartonDetail.POSummary;

            var oneBoxItems = summary.RegularCartonDetails
                              .Where(x => x.CartonRange == cartonDetail.CartonRange &&
                                     x.Batch == cartonDetail.Batch);

            var size = string.Empty;

            foreach (var c in oneBoxItems)
            {
                size += c.SizeBundle + "/" + c.PcsBundle + " ";
            }

            return(size);
        }
Esempio n. 4
0
        private PermanentSKU FindPermanentSKU(RegularCartonDetail cartonDetail, IEnumerable <PermanentSKU> permanentSKUsInDb)
        {
            //cartonDetail.PurchaseOrder = _transfer.TransName("PurchaseOrder", cartonDetail.PurchaseOrder);
            //cartonDetail.Style = _transfer.TransName("Style", cartonDetail.Style);
            //cartonDetail.Color = _transfer.TransName("Color", cartonDetail.Color);
            //cartonDetail.SizeBundle = _transfer.TransName("Size", cartonDetail.SizeBundle);

            var po    = _transfer.TransName("PurchaseOrder", cartonDetail.PurchaseOrder);
            var style = _transfer.TransName("Style", cartonDetail.Style);
            var color = _transfer.TransName("Color", cartonDetail.Color);
            var size  = _transfer.TransName("Size", cartonDetail.SizeBundle);

            var sku = permanentSKUsInDb.SingleOrDefault(x => x.PurchaseOrder == po &&
                                                        x.Style == style &&
                                                        x.Color == color &&
                                                        x.Size == size &&
                                                        x.Status == Status.Active);

            return(sku);
        }
Esempio n. 5
0
        private IEnumerable <FCRegularLocationDetail> CreateRegularLocation(ApplicationDbContext context, RegularCartonDetail detailInDb, int cartons, string location)
        {
            var cartonRange = context.RegularCartonDetails
                              .Include(c => c.POSummary.PreReceiveOrder)
                              .SingleOrDefault(c => c.Id == detailInDb.Id)
                              .CartonRange;

            var poSummaryId = context.RegularCartonDetails
                              .Include(c => c.POSummary.PreReceiveOrder)
                              .SingleOrDefault(c => c.Id == detailInDb.Id)
                              .POSummary
                              .Id;

            var inOneBoxSKUs = context.RegularCartonDetails
                               .Include(c => c.POSummary.PreReceiveOrder)
                               .Where(c => c.CartonRange == cartonRange &&
                                      c.POSummary.Id == poSummaryId &&
                                      c.Batch == detailInDb.Batch &&
                                      (c.Cartons != 0 || c.Quantity != 0));

            var list = new List <FCRegularLocationDetail>();

            var index = 1;      //用来甄别多种SKU在同一箱的情况

            foreach (var cartonDetailInDb in inOneBoxSKUs)
            {
                cartonDetailInDb.Status = "Allocating";

                if (cartonDetailInDb.Container == null || cartonDetailInDb.Container == "Unknown")
                {
                    throw new Exception("Invalid contaier number. Container must be assigned first.");
                }

                if (index == 1)
                {
                    //当理论入库数量小于实际可用数量的时候,入库实际数量
                    var allocatedPcs = cartons * cartonDetailInDb.PcsPerCarton < cartonDetailInDb.ToBeAllocatedPcs ? cartons * cartonDetailInDb.PcsPerCarton : cartonDetailInDb.ToBeAllocatedPcs;
                    cartonDetailInDb.ToBeAllocatedCtns -= cartons;
                    cartonDetailInDb.ToBeAllocatedPcs  -= allocatedPcs;

                    list.Add(new FCRegularLocationDetail
                    {
                        Container          = cartonDetailInDb.POSummary.Container,
                        PurchaseOrder      = cartonDetailInDb.PurchaseOrder,
                        Style              = cartonDetailInDb.Style,
                        UPCNumber          = cartonDetailInDb.UPCNumber,
                        Color              = cartonDetailInDb.Color,
                        CustomerCode       = cartonDetailInDb.Customer,
                        SizeBundle         = cartonDetailInDb.SizeBundle,
                        PcsBundle          = cartonDetailInDb.PcsBundle,
                        Cartons            = cartons,
                        Quantity           = allocatedPcs,
                        Location           = location,
                        PcsPerCaron        = cartonDetailInDb.PcsPerCarton,
                        Status             = "In Stock",
                        AvailableCtns      = cartons,
                        PickingCtns        = 0,
                        ShippedCtns        = 0,
                        AvailablePcs       = allocatedPcs,
                        PickingPcs         = 0,
                        ShippedPcs         = 0,
                        PreReceiveOrder    = detailInDb.POSummary.PreReceiveOrder,
                        RegularCaronDetail = cartonDetailInDb,
                        CartonRange        = cartonRange,
                        Allocator          = _userName,
                        Batch              = cartonDetailInDb.Batch,
                        Vendor             = cartonDetailInDb.Vendor
                    });

                    index++;
                }
                else
                {
                    cartonDetailInDb.ToBeAllocatedPcs -= cartons * cartonDetailInDb.PcsPerCarton;

                    list.Add(new FCRegularLocationDetail
                    {
                        Container          = cartonDetailInDb.POSummary.Container,
                        PurchaseOrder      = cartonDetailInDb.PurchaseOrder,
                        Style              = cartonDetailInDb.Style,
                        Color              = cartonDetailInDb.Color,
                        CustomerCode       = cartonDetailInDb.Customer,
                        SizeBundle         = cartonDetailInDb.SizeBundle,
                        PcsBundle          = cartonDetailInDb.PcsBundle,
                        UPCNumber          = cartonDetailInDb.UPCNumber,
                        Cartons            = 0,
                        Quantity           = cartons * cartonDetailInDb.PcsPerCarton,
                        Location           = location,
                        PcsPerCaron        = cartonDetailInDb.PcsPerCarton,
                        Status             = "In Stock",
                        AvailableCtns      = 0,
                        PickingCtns        = 0,
                        ShippedCtns        = 0,
                        AvailablePcs       = cartons * cartonDetailInDb.PcsPerCarton,
                        PickingPcs         = 0,
                        ShippedPcs         = 0,
                        PreReceiveOrder    = detailInDb.POSummary.PreReceiveOrder,
                        RegularCaronDetail = cartonDetailInDb,
                        CartonRange        = cartonRange,
                        Allocator          = _userName,
                        Batch              = cartonDetailInDb.Batch,
                        Vendor             = cartonDetailInDb.Vendor
                    });
                }
            }

            return(list);
        }
        //解析FreeCountry的packing List(不需要summary的版本)
        public void ParseFreeCountryPackingListV2(int preId)
        {
            var preReceiveOrderInDb = _context.PreReceiveOrders.Find(preId);

            _ws = _wb.Worksheets[2];
            //首先检查文件是否符合FC模板格式,并计算PO summary的数量
            var poList = CheckFCTemplateAndReturnPOSummaryIndexList(preReceiveOrderInDb);

            _context.POSummaries.AddRange(poList);

            var cartonList = new List <RegularCartonDetail>();

            foreach (var po in poList)
            {
                var startIndex = po.Id;
                po.Id = 0;

                //获取size的数量
                var endColumnIndex = 12;

                while (_ws.Cells[startIndex + 2, endColumnIndex].Value2 != "Pack")
                {
                    endColumnIndex += 1;
                }

                //获取SKU的数量
                var endRowIndex = startIndex + 3;

                while (_ws.Cells[endRowIndex, 1].Value2 != "Totals")
                {
                    endRowIndex += 1;
                }

                endColumnIndex -= 1;
                endRowIndex    -= 1;

                for (int i = startIndex + 3; i <= endRowIndex; i++)
                {
                    var cartonRange   = _ws.Cells[i, 1].Value2.ToString();
                    var purchaseOrder = _ws.Cells[i, 2].Value2.ToString();
                    var style         = _ws.Cells[i, 3].Value2.ToString();
                    var customer      = _ws.Cells[i, 4].Value2.ToString();
                    var colorCode     = _ws.Cells[i, 9].Value2.ToString();
                    var color         = _ws.Cells[i, 10].Value2.ToString();
                    var cartons       = (int)_ws.Cells[i, 11].Value2;

                    for (int j = 12; j <= endColumnIndex; j++)
                    {
                        var size = _ws.Cells[startIndex + 2, j].Value2.ToString();
                        var pcs  = (int)_ws.Cells[i, j].Value2;

                        var newCartnDetail = new RegularCartonDetail {
                            CartonRange   = cartonRange,
                            PurchaseOrder = purchaseOrder,
                            Style         = style,
                            Customer      = customer,
                            Color         = color,
                            ColorCode     = colorCode,
                            Cartons       = j == 12 ? cartons : 0,
                            PcsBundle     = pcs.ToString(),
                            PcsPerCarton  = pcs,
                            Quantity      = pcs * cartons,
                            POSummary     = po,
                            Comment       = "",
                            OrderType     = OrderType.SolidPack,
                            Operator      = _userName,
                            Adjustor      = "",
                            Receiver      = "",
                            Batch         = po.Batch,
                            Vendor        = Vendor.FreeCountry,
                            SizeBundle    = size,
                            Status        = Status.NewCreated
                        };

                        cartonList.Add(newCartnDetail);
                    }
                }
            }

            _context.RegularCartonDetails.AddRange(cartonList);
            _context.SaveChanges();

            _wb.Save();

            var killer = new ExcelKiller();

            killer.Dispose();
        }