diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
index 941ad972..533d3f79 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
@@ -836,11 +836,6 @@
单据编号
-
-
- 来源单号
-
-
单据类型
@@ -923,11 +918,16 @@
单据头Id
-
+
销售订单号
+
+
+ 来源单号
+
+
物料Id
@@ -1059,7 +1059,7 @@
来源单号(合并后有多个)
-
+
销售订单号
diff --git a/src/WMS.Web.Domain/Entitys/OutStockTask.cs b/src/WMS.Web.Domain/Entitys/OutStockTask.cs
index 9792ab26..9ce17525 100644
--- a/src/WMS.Web.Domain/Entitys/OutStockTask.cs
+++ b/src/WMS.Web.Domain/Entitys/OutStockTask.cs
@@ -4,6 +4,7 @@ using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using WMS.Web.Core;
+using WMS.Web.Core.Help;
using WMS.Web.Core.Internal.Results;
using WMS.Web.Domain.Values;
@@ -148,27 +149,36 @@ namespace WMS.Web.Domain.Entitys
///
public Result Merge(List list, int creatorId)
{
+ if (list.Count() <= 1) return Result.ReFailure(ResultCodes.MergeNumberError);
// 符合合并数据逻辑:出库状态为”待拣货”+出库类型为:销售出库+发货组织一致+收货客户一致+发货仓库一致
if (list.Where(w => w.Status != OutStockStatus.Wait).Any()) return Result.ReFailure(ResultCodes.MergeStatusError);
if (list.Where(w => w.Type != OutStockType.Sal).Any()) return Result.ReFailure(ResultCodes.MergeStatusError);
if (list.GroupBy(g => g.DeliveryOrgId).Count() > 1) return Result.ReFailure(ResultCodes.MergeStatusError);
if (list.GroupBy(g => g.ReceiptCustomerId).Count() > 1) return Result.ReFailure(ResultCodes.MergeStatusError);
-
var details = list.SelectMany(s => s.Details).ToList();
-
if (details.GroupBy(g => g.StockCode).Count() > 1) return Result.ReFailure(ResultCodes.MergeStatusError);
+ List details_new = new List();
//清空数据绑定
foreach (var d in details)
{
d.Id = 0;
d.Fid = 0;
+ var detail_new = details_new.FirstOrDefault(f => f.MaterialId == d.MaterialId);
+ if (detail_new != null)
+ {
+ detail_new.AccruedQty += d.AccruedQty;//应出数量累加
+ detail_new.SaleBillNos.AddRange(d.SaleBillNos);
+ detail_new.SourceBillNos.AddRange(d.SourceBillNos);
+ }
+ else
+ details_new.Add(d);
}
this.OperatorId = creatorId;
this.OperateTime = DateTime.Now;
this.Status = OutStockStatus.Wait;
this.Type = OutStockType.Sal;
- this.Details = details;
+ this.Details = details_new;
return Result.ReSuccess();
}
diff --git a/src/WMS.Web.Domain/Values/ResultCodes.cs b/src/WMS.Web.Domain/Values/ResultCodes.cs
index 4a350ead..66a1e945 100644
--- a/src/WMS.Web.Domain/Values/ResultCodes.cs
+++ b/src/WMS.Web.Domain/Values/ResultCodes.cs
@@ -29,6 +29,7 @@ namespace WMS.Web.Domain.Values
public static ValueTuple OutStockMaterialError = (70003, "出库物料在任务单中不存在");
public static ValueTuple OutStockTaskAlready = (70004, "任务单已全部出库");
public static ValueTuple OutStockTaskRepeal = (70005, "任务单已作废");
+ public static ValueTuple MergeNumberError = (70006, "必须选择两个及以上的单合并");
public static ValueTuple BoxNoData = (80000, "箱信息不存在");
public static ValueTuple BoxMateriaNoData = (800010, "箱对应物料信息不存在");