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); }
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); }
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(); }