public void UpdateQty() { LostQty = 0; ShipQty = 0; DefectQty = 0; NWDefectQty = 0; _BalQty = 0; XPCollection<SubPurchOrderReceive> poReceives = new XPCollection<SubPurchOrderReceive>(Session); var poReceive = from p in poReceives where (p.SalesOrderLine == this) group p by p.SalesOrderLine into pp select new { salesOrderLine = pp.Key, Qty = pp.Sum(p => p.Qty), DefectQty = pp.Sum(p => p.DefectQty), NWDefectQty = pp.Sum(p => p.NWDefectQty), LostQty = pp.Sum(p => p.LostQty) }; foreach (var pReceive in poReceive) { ShipQty = ShipQty + pReceive.Qty; DefectQty = DefectQty + pReceive.DefectQty; NWDefectQty = NWDefectQty + pReceive.NWDefectQty; LostQty = LostQty + pReceive.LostQty; } _BalQty = NeedQty - ShipQty - DefectQty - NWDefectQty - LostQty; OnChanged("BalQty"); if (_BalQty < 0) throw new Exception(string.Format("销售单{0}, 产品编码{1}, 余数不能少于0, 余数现时为{2}", OrderNo, Item.ItemNo, BalQty) ); if (_BalQty > 0 && _OrderStatus != SalesOrderLine.SalesOrderStatus.Cancel) { _OrderStatus = SalesOrderLine.SalesOrderStatus.Active; OnChanged("OrderStatus"); } if (_BalQty == 0) { _OrderStatus = SalesOrderLine.SalesOrderStatus.Complete; OnChanged("OrderStatus"); } }
public void UpdateOrderStatus() { SalesOrderLine.SalesOrderStatus lineStatus = SalesOrderLine.SalesOrderStatus.Complete; foreach (SalesOrderLine orderLine in OrderLines) { if (orderLine.OrderStatus == SalesOrderLine.SalesOrderStatus.Waiting) { lineStatus = SalesOrderLine.SalesOrderStatus.Waiting; break; } else if (orderLine.OrderStatus == SalesOrderLine.SalesOrderStatus.Active) { lineStatus = SalesOrderLine.SalesOrderStatus.Active; } } _OrderStatus = lineStatus; OnChanged("OrderStatus"); this.updateTimeStamp = false; }