|
|
@ -1371,7 +1371,7 @@ namespace TradeManageNew.OuterService
|
|
|
|
md.Data = null;
|
|
|
|
md.Data = null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (Method == "OrderUsedSaleEntry")
|
|
|
|
if (Method == "PostOrderUsedSaleEntry")
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var input = JsonConvert.DeserializeObject<OrderUsedSaleEntryInput>(ResponseContent);
|
|
|
|
var input = JsonConvert.DeserializeObject<OrderUsedSaleEntryInput>(ResponseContent);
|
|
|
|
var validatedSuccess = true;
|
|
|
|
var validatedSuccess = true;
|
|
|
@ -1442,7 +1442,7 @@ namespace TradeManageNew.OuterService
|
|
|
|
$"There is no product information with ID {orderItem.DetailId}");
|
|
|
|
$"There is no product information with ID {orderItem.DetailId}");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//检查是否存在相同跟踪号不同订单号的订单
|
|
|
|
//检查是否存在相同跟踪号不同订单的情况
|
|
|
|
var repeatTrackingCodeOrderIds = db.DT_OrderUsedSaleEntry
|
|
|
|
var repeatTrackingCodeOrderIds = db.DT_OrderUsedSaleEntry
|
|
|
|
.Where(x => x.TrackingCode == input.TrackingCode)
|
|
|
|
.Where(x => x.TrackingCode == input.TrackingCode)
|
|
|
|
.Select(x => x.OrderId)
|
|
|
|
.Select(x => x.OrderId)
|
|
|
@ -1458,7 +1458,7 @@ namespace TradeManageNew.OuterService
|
|
|
|
{
|
|
|
|
{
|
|
|
|
OrderId = order.OrderId,
|
|
|
|
OrderId = order.OrderId,
|
|
|
|
OrderCode = order.OrderCode,
|
|
|
|
OrderCode = order.OrderCode,
|
|
|
|
GoodsId = sku.DetailId,
|
|
|
|
GoodsDetailId = sku.DetailId,
|
|
|
|
GoodsCode = sku.SKU1,
|
|
|
|
GoodsCode = sku.SKU1,
|
|
|
|
Quantity = input.Quantity,
|
|
|
|
Quantity = input.Quantity,
|
|
|
|
TrackingCode = input.TrackingCode,
|
|
|
|
TrackingCode = input.TrackingCode,
|
|
|
@ -1478,7 +1478,7 @@ namespace TradeManageNew.OuterService
|
|
|
|
|
|
|
|
|
|
|
|
if (Method == "GetOrderUsedSale")
|
|
|
|
if (Method == "GetOrderUsedSale")
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var input = JsonConvert.DeserializeObject<GetOrderUsedSale>(ResponseContent);
|
|
|
|
var input = JsonConvert.DeserializeObject<GetOrderUsedSaleInput>(ResponseContent);
|
|
|
|
if (string.IsNullOrWhiteSpace(input.TrackingCode))
|
|
|
|
if (string.IsNullOrWhiteSpace(input.TrackingCode))
|
|
|
|
{
|
|
|
|
{
|
|
|
|
md.Code = "400";
|
|
|
|
md.Code = "400";
|
|
|
@ -1488,174 +1488,61 @@ namespace TradeManageNew.OuterService
|
|
|
|
else
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
|
input.TrackingCode = input.TrackingCode.Trim();
|
|
|
|
input.TrackingCode = input.TrackingCode.Trim();
|
|
|
|
|
|
|
|
//可能需要处理扫描面单匹配的问题
|
|
|
|
|
|
|
|
|
|
|
|
using (var db = new ErpDbContext())
|
|
|
|
using (var db = new ErpDbContext())
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
//此前已校验过一个跟踪号只能匹配相同的订单号
|
|
|
|
var orderUsedSaleEntryList = db.DT_OrderUsedSaleEntry
|
|
|
|
var orderUsedSaleEntryList = db.DT_OrderUsedSaleEntry
|
|
|
|
.Where(x => x.TrackingCode == input.TrackingCode)
|
|
|
|
.Where(x => x.TrackingCode == input.TrackingCode)
|
|
|
|
.ToList();
|
|
|
|
.ToList();
|
|
|
|
|
|
|
|
|
|
|
|
var groupOrderUsedSaleEntry = orderUsedSaleEntryList.GroupBy(x => x.GoodsId)
|
|
|
|
if (!orderUsedSaleEntryList.Any())
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
throw new Exception($"Tracking number {input.TrackingCode} has no data");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var groupOrderUsedSaleEntry = orderUsedSaleEntryList.GroupBy(x => x.GoodsDetailId)
|
|
|
|
.Select(o => new
|
|
|
|
.Select(o => new
|
|
|
|
{
|
|
|
|
{
|
|
|
|
o.Key,
|
|
|
|
o.Key,
|
|
|
|
Quantity = o.Sum(x => x.Quantity)
|
|
|
|
Quantity = o.Sum(x => x.Quantity)
|
|
|
|
}).ToList();
|
|
|
|
}).ToList();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var goodsDetailIds = groupOrderUsedSaleEntry.Select(x => x.Key).ToList();
|
|
|
|
|
|
|
|
var skus = db.HW_GoodsDetail.Where(x => goodsDetailIds.Contains(x.DetailId)).ToList();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var spuIds = skus.Select(x => x.GoodsId).Distinct().ToList();
|
|
|
|
|
|
|
|
var spus = db.HW_GoodsInfo.Where(x => spuIds.Contains(x.GoodsId));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var order = db.DT_OrderInfo.FirstOrDefault(x =>
|
|
|
|
|
|
|
|
x.OrderId == orderUsedSaleEntryList.First().OrderId);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var result = new GetOrderUsedSaleDto
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
OrderId = order.OrderId,
|
|
|
|
|
|
|
|
OrderCode = order.OrderCode,
|
|
|
|
|
|
|
|
Items = skus.Select(o =>
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
var spu = spus.FirstOrDefault(x => x.GoodsId == o.GoodsId);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return new GetOrderUsedSaleItemDto
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
ProductCode = spu?.GoodsCode,
|
|
|
|
|
|
|
|
ProductDescription = spu?.GoodsEnglisgName,
|
|
|
|
|
|
|
|
GoodsDetailId = o.DetailId,
|
|
|
|
|
|
|
|
SkuCode = o.SKU1
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
}).ToList()
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
md.Code = "100";
|
|
|
|
|
|
|
|
md.Result = "Success";
|
|
|
|
|
|
|
|
md.Data = JsonConvert.SerializeObject(result);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// if (Method == "ReturnUsedSale")
|
|
|
|
|
|
|
|
// {
|
|
|
|
|
|
|
|
// var input = JsonConvert.DeserializeObject<Sync_ReturnGoodsSave>(ResponseContent);
|
|
|
|
|
|
|
|
// var validatedSuccess = true;
|
|
|
|
|
|
|
|
// if (string.IsNullOrEmpty(input.StoreCode))
|
|
|
|
|
|
|
|
// {
|
|
|
|
|
|
|
|
// md.Code = "400";
|
|
|
|
|
|
|
|
// md.Result = "Please enter storage Location";
|
|
|
|
|
|
|
|
// md.Data = null;
|
|
|
|
|
|
|
|
// validatedSuccess = false;
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// if (string.IsNullOrEmpty(input.TrackCode))
|
|
|
|
|
|
|
|
// {
|
|
|
|
|
|
|
|
// md.Code = "400";
|
|
|
|
|
|
|
|
// md.Result = "Please enter tracking code";
|
|
|
|
|
|
|
|
// md.Data = null;
|
|
|
|
|
|
|
|
// validatedSuccess = false;
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// if (string.IsNullOrEmpty(input.OrderCode))
|
|
|
|
|
|
|
|
// {
|
|
|
|
|
|
|
|
// md.Code = "400";
|
|
|
|
|
|
|
|
// md.Result = "Please enter order no";
|
|
|
|
|
|
|
|
// md.Data = null;
|
|
|
|
|
|
|
|
// validatedSuccess = false;
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// if (input.GoodsList==null || !input.GoodsList.Any())
|
|
|
|
|
|
|
|
// {
|
|
|
|
|
|
|
|
// md.Code = "400";
|
|
|
|
|
|
|
|
// md.Result = "Please enter goods information";
|
|
|
|
|
|
|
|
// md.Data = null;
|
|
|
|
|
|
|
|
// validatedSuccess = false;
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// if (validatedSuccess)
|
|
|
|
|
|
|
|
// {
|
|
|
|
|
|
|
|
// var detailIds = input.GoodsList.Select(x => x.GoodsId).ToList();
|
|
|
|
|
|
|
|
// using (var db = new ErpDbContext())
|
|
|
|
|
|
|
|
// {
|
|
|
|
|
|
|
|
// var orderReturns = db.DT_OrderReturn.Where(x =>
|
|
|
|
|
|
|
|
// x.tracking_id == input.TrackCode &&
|
|
|
|
|
|
|
|
// x.ordercode==input.OrderCode &&
|
|
|
|
|
|
|
|
// (string.IsNullOrEmpty(x.InType) || x.InType == "6") &&
|
|
|
|
|
|
|
|
// (string.IsNullOrEmpty(x.ScanState) || x.ScanState == "1") &&
|
|
|
|
|
|
|
|
// x.detailid != null && detailIds.Contains(x.detailid.Value))
|
|
|
|
|
|
|
|
// .ToList();
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// var orderReturnIds = orderReturns.Select(x => x.id).ToList();
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// if (!orderReturnIds.Any())
|
|
|
|
|
|
|
|
// {
|
|
|
|
|
|
|
|
// throw new Exception("Return order information not obtained");
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// //二手平台上架信息
|
|
|
|
|
|
|
|
// var orderReturnUsedSales = db.DT_OrderReturnUsedSale
|
|
|
|
|
|
|
|
// .Where(x => orderReturnIds.Contains(x.OrderReturnId))
|
|
|
|
|
|
|
|
// .ToList();
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// foreach (var inputItem in input.GoodsList)
|
|
|
|
|
|
|
|
// {
|
|
|
|
|
|
|
|
// var returnItem = orderReturns.FirstOrDefault(x => x.detailid == inputItem.GoodsId);
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// if (returnItem is null)
|
|
|
|
|
|
|
|
// {
|
|
|
|
|
|
|
|
// throw new Exception(
|
|
|
|
|
|
|
|
// $"Return order information not obtained. tracking id {input.TrackCode},order no {input.OrderCode},sku {inputItem.GoodsId}");
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// //已上架二手平台的数量
|
|
|
|
|
|
|
|
// var usedSalesQuantity = orderReturnUsedSales
|
|
|
|
|
|
|
|
// .Where(x => x.OrderReturnId == returnItem.id)
|
|
|
|
|
|
|
|
// .Sum(x => x.Quantity);
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// //剩余可以上架二手平台的数量
|
|
|
|
|
|
|
|
// var remainingQuantity = returnItem.return_quantity - usedSalesQuantity;
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// if (inputItem.GoodsNum > remainingQuantity)
|
|
|
|
|
|
|
|
// {
|
|
|
|
|
|
|
|
// throw new Exception(
|
|
|
|
|
|
|
|
// $"sku {returnItem.merchant_sku} submitted quantity {inputItem.GoodsNum} exceeds the remaining submittable quantity {remainingQuantity}");
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// db.BeginTransaction();
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// try
|
|
|
|
|
|
|
|
// {
|
|
|
|
|
|
|
|
// #region 插入二手商品信息
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// foreach (var inputItem in input.GoodsList)
|
|
|
|
|
|
|
|
// {
|
|
|
|
|
|
|
|
// var returnItem = orderReturns.First(x => x.detailid == inputItem.GoodsId);
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// //更新退货订单表数据
|
|
|
|
|
|
|
|
// db.DT_OrderReturn.Where(x => x.id == returnItem.id)
|
|
|
|
|
|
|
|
// .Set(x => x.InType, "6")
|
|
|
|
|
|
|
|
// .Set(x => x.ScanState, "1")
|
|
|
|
|
|
|
|
// .Set(x => x.ScanDate, DateTime.Now)
|
|
|
|
|
|
|
|
// .Set(x => x.ScanUserId, input.UserId)
|
|
|
|
|
|
|
|
// .Set(x => x.PostionCode, input.StoreCode)
|
|
|
|
|
|
|
|
// .Set(x => x.ImgUrl, input.Photo1)
|
|
|
|
|
|
|
|
// .Set(x => x.ImgUrl2, input.Photo2)
|
|
|
|
|
|
|
|
// .Set(x => x.ImgUrl3, input.Photo3)
|
|
|
|
|
|
|
|
// .Set(x => x.ImgUrl4, input.Photo4)
|
|
|
|
|
|
|
|
// .Set(x => x.ImgUrl5, input.Photo5)
|
|
|
|
|
|
|
|
// .Update();
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// var newOrderReturnUsedSale =
|
|
|
|
|
|
|
|
// new TradeUsedSale.Repositories.Models.DT_OrderReturnUsedSale
|
|
|
|
|
|
|
|
// {
|
|
|
|
|
|
|
|
// OrderReturnId = returnItem.id,
|
|
|
|
|
|
|
|
// OrderId = returnItem.orderid,
|
|
|
|
|
|
|
|
// OrderCode = returnItem.ordercode,
|
|
|
|
|
|
|
|
// GoodsId = returnItem.detailid.Value,
|
|
|
|
|
|
|
|
// MerchantSku = returnItem.merchant_sku,
|
|
|
|
|
|
|
|
// Quantity = inputItem.GoodsNum,
|
|
|
|
|
|
|
|
// CreationTime = DateTime.Now,
|
|
|
|
|
|
|
|
// CreatorId = input.UserId
|
|
|
|
|
|
|
|
// };
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// var newOrderReturnUsedSaleId =
|
|
|
|
|
|
|
|
// db.InsertWithInt32Identity(newOrderReturnUsedSale);
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// for (var i = 1; i <= inputItem.GoodsNum; i++)
|
|
|
|
|
|
|
|
// {
|
|
|
|
|
|
|
|
// var newOrderReturnUsedSaleItem =
|
|
|
|
|
|
|
|
// new TradeUsedSale.Repositories.Models.DT_OrderReturnUsedSaleItem
|
|
|
|
|
|
|
|
// {
|
|
|
|
|
|
|
|
// OrderReturnUsedSaleId = newOrderReturnUsedSaleId,
|
|
|
|
|
|
|
|
// IsPublished = false,
|
|
|
|
|
|
|
|
// CreationTime = DateTime.Now,
|
|
|
|
|
|
|
|
// CreatorId = input.UserId,
|
|
|
|
|
|
|
|
// };
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// db.InsertWithInt32Identity(newOrderReturnUsedSaleItem);
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// #endregion
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// db.CommitTransaction();
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// catch (Exception ex)
|
|
|
|
|
|
|
|
// {
|
|
|
|
|
|
|
|
// db.RollbackTransaction();
|
|
|
|
|
|
|
|
// throw;
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch (Exception ex)
|
|
|
|
catch (Exception ex)
|
|
|
|