|
|
|
@ -10,6 +10,8 @@ using NetLibrary;
|
|
|
|
|
using Org.BouncyCastle.Utilities.Encoders;
|
|
|
|
|
using System.Drawing;
|
|
|
|
|
using LinqToDB;
|
|
|
|
|
using TradeManageNew.Models.Shage;
|
|
|
|
|
using TradeUsedSale.Enums;
|
|
|
|
|
using TradeUsedSale.Repositories;
|
|
|
|
|
|
|
|
|
|
namespace TradeManageNew.OuterService
|
|
|
|
@ -1369,157 +1371,262 @@ namespace TradeManageNew.OuterService
|
|
|
|
|
md.Data = null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (Method == "ReturnUsedSale")
|
|
|
|
|
if (Method == "OrderUsedSaleEntry")
|
|
|
|
|
{
|
|
|
|
|
var input = JsonConvert.DeserializeObject<Sync_ReturnGoodsSave>(ResponseContent);
|
|
|
|
|
var input = JsonConvert.DeserializeObject<OrderUsedSaleEntryInput>(ResponseContent);
|
|
|
|
|
var validatedSuccess = true;
|
|
|
|
|
if (string.IsNullOrEmpty(input.StoreCode))
|
|
|
|
|
if (string.IsNullOrEmpty(input.OrderCode))
|
|
|
|
|
{
|
|
|
|
|
md.Code = "400";
|
|
|
|
|
md.Result = "Please enter storage Location";
|
|
|
|
|
md.Result = "Please enter order code";
|
|
|
|
|
md.Data = null;
|
|
|
|
|
validatedSuccess = false;
|
|
|
|
|
}
|
|
|
|
|
if (string.IsNullOrEmpty(input.TrackCode))
|
|
|
|
|
if (string.IsNullOrEmpty(input.GoodsCode))
|
|
|
|
|
{
|
|
|
|
|
md.Code = "400";
|
|
|
|
|
md.Result = "Please enter tracking code";
|
|
|
|
|
md.Result = "Please enter sku code";
|
|
|
|
|
md.Data = null;
|
|
|
|
|
validatedSuccess = false;
|
|
|
|
|
}
|
|
|
|
|
if (string.IsNullOrEmpty(input.OrderCode))
|
|
|
|
|
if (string.IsNullOrEmpty(input.TrackingCode))
|
|
|
|
|
{
|
|
|
|
|
md.Code = "400";
|
|
|
|
|
md.Result = "Please enter order no";
|
|
|
|
|
md.Result = "Please enter tracking code";
|
|
|
|
|
md.Data = null;
|
|
|
|
|
validatedSuccess = false;
|
|
|
|
|
}
|
|
|
|
|
if (input.GoodsList==null || !input.GoodsList.Any())
|
|
|
|
|
if (input.Quantity<=0)
|
|
|
|
|
{
|
|
|
|
|
md.Code = "400";
|
|
|
|
|
md.Result = "Please enter goods information";
|
|
|
|
|
md.Result = "The quantity must be greater than 0";
|
|
|
|
|
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())
|
|
|
|
|
//订单信息
|
|
|
|
|
var order = db.DT_OrderInfo.FirstOrDefault(x =>
|
|
|
|
|
x.PlatOrderCode == input.OrderCode || x.OrderCode == input.OrderCode);
|
|
|
|
|
if (order is null)
|
|
|
|
|
{
|
|
|
|
|
throw new Exception("Return order information not obtained");
|
|
|
|
|
throw new Exception($"There is no order with order number {input.OrderCode}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//二手平台上架信息
|
|
|
|
|
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)
|
|
|
|
|
//订单明细信息
|
|
|
|
|
var orderItem = db.DT_OrderGoods
|
|
|
|
|
.FirstOrDefault(x => x.OrderId == order.OrderId && x.GoodsSKU == input.GoodsCode);
|
|
|
|
|
if (orderItem is null)
|
|
|
|
|
{
|
|
|
|
|
throw new Exception(
|
|
|
|
|
$"Return order information not obtained. tracking id {input.TrackCode},order no {input.OrderCode},sku {inputItem.GoodsId}");
|
|
|
|
|
$"There is no SKU with code {input.GoodsCode} in order [{input.OrderCode}]");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//已上架二手平台的数量
|
|
|
|
|
var usedSalesQuantity = orderReturnUsedSales
|
|
|
|
|
.Where(x => x.OrderReturnId == returnItem.id)
|
|
|
|
|
.Sum(x => x.Quantity);
|
|
|
|
|
|
|
|
|
|
//剩余可以上架二手平台的数量
|
|
|
|
|
var remainingQuantity = returnItem.return_quantity - usedSalesQuantity;
|
|
|
|
|
|
|
|
|
|
if (inputItem.GoodsNum > remainingQuantity)
|
|
|
|
|
//SKU信息
|
|
|
|
|
var sku = db.HW_GoodsDetail.FirstOrDefault(x => x.DetailId == orderItem.DetailId);
|
|
|
|
|
if (sku is null)
|
|
|
|
|
{
|
|
|
|
|
throw new Exception(
|
|
|
|
|
$"sku {returnItem.merchant_sku} submitted quantity {inputItem.GoodsNum} exceeds the remaining submittable quantity {remainingQuantity}");
|
|
|
|
|
}
|
|
|
|
|
$"There is no product information with ID {orderItem.DetailId}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
db.BeginTransaction();
|
|
|
|
|
//检查是否存在相同跟踪号不同情况的订单
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
|
|
|
|
var newOrderUsedSaleEntry =
|
|
|
|
|
new TradeUsedSale.Repositories.Models.DT_OrderUsedSaleEntry
|
|
|
|
|
{
|
|
|
|
|
#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,
|
|
|
|
|
OrderId = order.OrderId,
|
|
|
|
|
OrderCode = order.OrderCode,
|
|
|
|
|
GoodsId = sku.DetailId,
|
|
|
|
|
GoodsCode = sku.SKU1,
|
|
|
|
|
Quantity = input.Quantity,
|
|
|
|
|
TrackingCode = input.TrackingCode,
|
|
|
|
|
WarehouseLocation = input.WarehouseLocation,
|
|
|
|
|
CreationTime = DateTime.Now,
|
|
|
|
|
CreatorId = input.UserId
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var newOrderReturnUsedSaleId =
|
|
|
|
|
db.InsertWithInt32Identity(newOrderReturnUsedSale);
|
|
|
|
|
db.InsertWithInt32Identity(newOrderUsedSaleEntry);
|
|
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
md.Code = "100";
|
|
|
|
|
md.Result = "Success";
|
|
|
|
|
md.Data = "";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
db.CommitTransaction();
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
|
|
|
|
|
if (Method == "GetOrderUsedSale")
|
|
|
|
|
{
|
|
|
|
|
var input = JsonConvert.DeserializeObject<GetOrderUsedSale>(ResponseContent);
|
|
|
|
|
if (string.IsNullOrEmpty(input.TrackingCode))
|
|
|
|
|
{
|
|
|
|
|
db.RollbackTransaction();
|
|
|
|
|
throw;
|
|
|
|
|
md.Code = "400";
|
|
|
|
|
md.Result = "Please enter tracking code";
|
|
|
|
|
md.Data = null;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
using (var db = new ErpDbContext())
|
|
|
|
|
{
|
|
|
|
|
//var orderUsedSaleEntry
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
// 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;
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|