Ejemplo n.º 1
0
        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");
            }
        }
Ejemplo n.º 2
0
        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;
        }