public async Task <IHttpActionResult> CreateNewManifestItem([FromUri] string grandNumber, [FromUri] string operation, [FromBody] ManifestItem item) { var masterOrderInDb = _context.FBAMasterOrders.SingleOrDefault(x => x.GrandNumber == grandNumber); var newItem = new FBAOrderDetail { ShipmentId = item.ShipmentId, Container = masterOrderInDb.Container, AmzRefId = item.AmzRefId, WarehouseCode = item.WarehouseCode, HowToDeliver = item.Deliver, GrossWeight = item.GrossWeight, CBM = item.CBM, Quantity = item.Quantity, Remark = item.Remark, FBAMasterOrder = masterOrderInDb, GrandNumber = grandNumber }; _context.FBAOrderDetails.Add(newItem); _context.SaveChanges(); var resultDto = Mapper.Map <FBAOrderDetail, FBAOrderDetailDto>(_context.FBAOrderDetails.OrderByDescending(x => x.Id).First()); await _logger.AddCreatedLogAsync <FBAOrderDetail>(null, resultDto, "Added a new manifest item", null, OperationLevel.Normal); return(Created(Request.RequestUri + "/" + resultDto.Id, resultDto)); }
//抽取FBA通用PackingList模板 public void ExtractFBAPackingListTemplate(string grandNumber) { var orderDetailsList = new List <FBAOrderDetail>(); _ws = _wb.Worksheets[1]; var masterOrderInDb = _context.FBAMasterOrders.SingleOrDefault(x => x.GrandNumber == grandNumber); var countOfOrderDetail = 0; var index = 2; var shipmentId = string.Empty; var amzRefId = string.Empty; var lotSize = string.Empty; var warehouseCode = string.Empty; var howToDeliver = string.Empty; var grossWeight = 0f; var cbm = 0f; var quantity = 0; var remark = string.Empty; //扫描有多少个OrderDetail对象(行数-1) while (_ws.Cells[index, 1].Value2 != null) { countOfOrderDetail++; index++; } for (int i = 0; i < countOfOrderDetail; i++) { shipmentId = _ws.Cells[i + 2, 1].Value2.ToString(); amzRefId = _ws.Cells[i + 2, 2].Value2 == null ? "NA" : _ws.Cells[i + 2, 2].Value2.ToString(); lotSize = _ws.Cells[i + 2, 3].Value2 == null ? "NA" : _ws.Cells[i + 2, 3].Value2.ToString(); warehouseCode = _ws.Cells[i + 2, 4].Value2 == null ? "NA" : _ws.Cells[i + 2, 4].Value2.ToString(); howToDeliver = _ws.Cells[i + 2, 5].Value2 == null ? "NA" : _ws.Cells[i + 2, 5].Value2.ToString(); grossWeight = _ws.Cells[i + 2, 6].Value2 == null ? 0 : (float)_ws.Cells[i + 2, 6].Value2; cbm = _ws.Cells[i + 2, 7].Value2 == null ? 0 : (float)_ws.Cells[i + 2, 7].Value2; quantity = (int)_ws.Cells[i + 2, 8].Value2; remark = _ws.Cells[i + 2, 9].Value2 == null ? "NA" : _ws.Cells[i + 2, 9].Value2.ToString(); var orderDetail = new FBAOrderDetail(); orderDetail.AssembleFirstStringPart(shipmentId, amzRefId, warehouseCode); orderDetail.AssembleSecontStringPart(lotSize, howToDeliver, remark); orderDetail.AssembleNumberPart(grossWeight, cbm, quantity); orderDetail.Container = masterOrderInDb.Container == "" ? "NULL" : masterOrderInDb.Container; orderDetail.GrandNumber = grandNumber; orderDetail.FBAMasterOrder = masterOrderInDb; orderDetailsList.Add(orderDetail); } _context.FBAOrderDetails.AddRange(orderDetailsList); _context.SaveChanges(); }
public async Task CreateInboundOrderByAgentRequestV1(UpperVendor customer, string customerCode, FBAInboundOrder order, string requestId) { // 建立主单 var newMasterOrder = new FBAMasterOrder(); newMasterOrder.GrandNumber = "N/A"; newMasterOrder.Agency = order.Agency; newMasterOrder.Container = order.Container; newMasterOrder.CreatedBy = order.Agency; newMasterOrder.SubCustomer = order.Subcustomer; newMasterOrder.StorageType = "SEE INSTRUCTION"; newMasterOrder.Status = FBAStatus.Draft; newMasterOrder.UnloadingType = "DROP-OFF"; newMasterOrder.InboundType = "FCL"; newMasterOrder.Palletizing = "<=80"; newMasterOrder.TotalCBM = order.FBAJobs.Sum(x => x.CBM); newMasterOrder.TotalCtns = order.FBAJobs.Sum(x => x.Quantity); newMasterOrder.OriginalPlts = order.FBAJobs.Sum(x => x.PalletQuantity); newMasterOrder.CustomerCode = customerCode; newMasterOrder.WarehouseLocation = order.WarehouseLocation == "" ? "W0" : order.WarehouseLocation; newMasterOrder.Customer = customer; newMasterOrder.PortOfLoading = order.PortOfLoading; newMasterOrder.ETAPort = order.ETADate; newMasterOrder.ETA = order.ETADate; newMasterOrder.PlaceOfDelivery = order.DeliveryPort; newMasterOrder.Vessel = order.Vessel; newMasterOrder.Carrier = order.Carrier; newMasterOrder.ContainerSize = order.ContainerSize; newMasterOrder.SealNumber = order.SealNumber; newMasterOrder.Comment = "ETL DATE: " + order.ETLDate; newMasterOrder.UpdateLog = "Created by agency via API"; _context.FBAMasterOrders.Add(newMasterOrder); foreach (var j in order.FBAJobs) { var orderDetail = new FBAOrderDetail(); orderDetail.Container = order.Container; orderDetail.GrandNumber = "N/A"; orderDetail.GrossWeight = j.GrossWeight; orderDetail.CBM = j.CBM; orderDetail.Quantity = j.Quantity; orderDetail.ShipmentId = j.ShipmentId; orderDetail.AmzRefId = j.AmzRefId; orderDetail.WarehouseCode = j.WarehouseCode; orderDetail.Remark = "包装:" + j.PackageType + ";产品类型:" + j.ProductType + ";打托数量:" + j.PalletQuantity; orderDetail.FBAMasterOrder = newMasterOrder; _context.FBAOrderDetails.Add(orderDetail); } var instruction = new ChargingItemDetail(); instruction.Description = "To CSR: This inbound order is created by an agency from api. If there is no further customer's instructions below, please contact customer to do a further confirmation."; instruction.HandlingStatus = "N/A"; instruction.Status = FBAStatus.NoNeedForCharging; instruction.IsCharging = false; instruction.IsInstruction = true; instruction.IsOperation = false; instruction.OriginalDescription = instruction.Description; instruction.FBAMasterOrder = newMasterOrder; _context.ChargingItemDetails.Add(instruction); if (order.Instructions != null) { foreach (var i in order.Instructions) { var customerInstruction = new ChargingItemDetail(); customerInstruction.Description = i; customerInstruction.HandlingStatus = "N/A"; customerInstruction.Status = FBAStatus.TBD; customerInstruction.IsCharging = false; customerInstruction.IsInstruction = true; customerInstruction.IsOperation = false; customerInstruction.OriginalDescription = instruction.Description; customerInstruction.FBAMasterOrder = newMasterOrder; _context.ChargingItemDetails.Add(customerInstruction); } } // 添加Request日志 var logger = new Logger(_context, order.Agency); await logger.AddCreatedLogAsync <FBAMasterOrder>(null, Mapper.Map <FBAMasterOrder, FBAMasterOrderDto>(newMasterOrder), "Created by agency from api.", null, OperationLevel.Mediunm); var logInDb = _context.OperationLogs.OrderByDescending(x => x.Id).First(); logInDb.RequestId = requestId; _context.SaveChanges(); }
public IHttpActionResult UpdateInfo([FromUri] int orderDetailId, [FromUri] string operation, [FromBody] FBAOrderDetail obj) { var orderDetailInDb = _context.FBAOrderDetails .Include(x => x.FBAMasterOrder) .SingleOrDefault(x => x.Id == orderDetailId); // TO DO: 等办公室不再用旧UI操作后,这里的else中部分可以简化 if (operation == "Edit") { orderDetailInDb.ShipmentId = obj.ShipmentId; orderDetailInDb.AmzRefId = obj.AmzRefId; orderDetailInDb.WarehouseCode = obj.WarehouseCode; orderDetailInDb.HowToDeliver = obj.HowToDeliver; orderDetailInDb.GrossWeight = obj.GrossWeight; orderDetailInDb.Barcode = obj.Barcode; orderDetailInDb.CBM = obj.CBM; orderDetailInDb.Quantity = obj.Quantity; orderDetailInDb.Remark = obj.Remark; orderDetailInDb.LotSize = obj.LotSize; } else { //如果该主单还未被确认收货(没有收货日期),则禁止单个调节 if (orderDetailInDb.FBAMasterOrder.InboundDate.Year == 1900) { throw new Exception("Cannot update info because this master order is unreceived yet."); } //如果该detail被分配,则禁止更改实收数据 if (orderDetailInDb.ComsumedQuantity != 0) { throw new Exception("Cannot update info because this item has been comsumed."); } orderDetailInDb.ActualQuantity = obj.ActualQuantity; orderDetailInDb.ActualGrossWeight = obj.ActualGrossWeight; orderDetailInDb.ActualCBM = obj.ActualCBM; orderDetailInDb.Comment = obj.Comment; orderDetailInDb.LotSize = obj.LotSize; orderDetailInDb.Remark = obj.Remark; } _context.SaveChanges(); return(Ok(Mapper.Map <FBAOrderDetail, FBAOrderDetailDto>(orderDetailInDb))); }