diff --git a/src/WMS.Web.Domain/Entitys/InstockTask.cs b/src/WMS.Web.Domain/Entitys/InstockTask.cs
index 2cf3bcfe..6f7f0071 100644
--- a/src/WMS.Web.Domain/Entitys/InstockTask.cs
+++ b/src/WMS.Web.Domain/Entitys/InstockTask.cs
@@ -103,6 +103,9 @@ namespace WMS.Web.Domain.Entitys
//如果明细全部作废,则单据状态作废
if (this.Details.All(x => x.IsRepeal == true))
this.Status = InstockStatus.Repeal;
+ else
+ this.ChangeInstockStatus();//重新计算单据的状态
+
}
@@ -142,23 +145,36 @@ namespace WMS.Web.Domain.Entitys
this.ReceiveTime = DateTime.Now;
}
+ //改变状态
+ public void ChangeInstockStatus()
+ {
+ //明细中:所有的应入数量之和
+ var totalAccruedQty = this.Details.Where(x => x.IsRepeal != true).Sum(x => x.AccruedQty);
+
+ //明细中:所有的入库数量之和
+ var totalRealityQty = this.Details.Where(x => x.IsRepeal != true && x.AccruedQty > 0).Sum(x => x.RealityQty);
+
+ //明细中:所有的收货数量之和
+ var totalReceiveQty = this.Details.Where(x => x.IsRepeal != true && x.AccruedQty > 0).Sum(x => x.ReceiveQty);
+
+ if (totalAccruedQty <= totalRealityQty)
+ this.Status = InstockStatus.Already;
+ else if(totalReceiveQty<=0)
+ this.Status = InstockStatus.Wait;
+ else if(totalRealityQty<=0)
+ this.Status = InstockStatus.WaitInStock;
+ else
+ this.Status = InstockStatus.Part;
+
+ }
+
///
/// 上架
///
///
public void Shelf(int creatorId)
{
- //明细中:所有的应入数量之和
- var totalAccruedQty= this.Details.Sum(x => x.AccruedQty);
- ////明细中:所有的收货数量之和
- //var totalReceiveQty = this.Details.Sum(x => x.ReceiveQty);
- //明细中:所有的入库数量之和
- var totalRealityQty = this.Details.Where(x=>x.AccruedQty>0).Sum(x => x.RealityQty);
-
- if (totalAccruedQty <= totalRealityQty)
- this.Status = InstockStatus.Already;
- else
- this.Status = InstockStatus.Part;
+ this.ChangeInstockStatus();
this.ShelferId = creatorId;
this.ShelfTime = DateTime.Now;
}
@@ -169,17 +185,7 @@ namespace WMS.Web.Domain.Entitys
///
public void NoPurchaseShelf(int creatorId)
{
- //明细中:所有的应入数量之和
- var totalAccruedQty = this.Details.Sum(x => x.AccruedQty);
- ////明细中:所有的收货数量之和
- //var totalReceiveQty = this.Details.Sum(x => x.ReceiveQty);
- //明细中:所有的入库数量之和
- var totalRealityQty = this.Details.Where(x => x.AccruedQty > 0).Sum(x => x.RealityQty);
-
- if (totalAccruedQty <= totalRealityQty)
- this.Status = InstockStatus.Already;
- else
- this.Status = InstockStatus.Part;
+ this.ChangeInstockStatus();
this.ReceiverId = creatorId;
this.ReceiveTime = DateTime.Now;
this.ShelferId = creatorId;