Esempio n. 1
0
        public void UpdateQty()
        {
            _ReceiveQty = 0;
            _ReceiveDefectQty = 0;
            _ReceiveNWDefectQty = 0;
            _BalQty = 0;
            _LostQty = 0;

            foreach (SubProdOrderReceive receive in SubProdOrderReceives)
            {
                if (receive.OrderStatus == SubProdOrderReceive.ReceiveStatus.Complete)
                {
                    _ReceiveQty = _ReceiveQty + receive.Qty;
                    _ReceiveDefectQty = _ReceiveDefectQty + receive.DefectQty;
                    _ReceiveNWDefectQty = _ReceiveNWDefectQty + receive.NWDefectQty;
                    _LostQty = _LostQty + receive.LostQty;
                }
            }

            _BalQty = Qty - _ReceiveQty - _ReceiveDefectQty - _ReceiveNWDefectQty - _LostQty ;

            if (_BalQty < 0)
                throw new Exception(string.Format("生产单 {0} 余数不能少于0", OrderNo));

            OnChanged("BalQty");
            OnChanged("ReceiveQty");
            OnChanged("ReceiveDefectQty");
            OnChanged("ReceiveNWDefectQty");
            OnChanged("LostQty");

            if (OrderStatus != ProdOrderStatus.Cancel && OrderStatus != ProdOrderStatus.Waiting)
            {
                if (_BalQty == 0)
                    _OrderStatus = ProdOrderStatus.Complete;
                else
                    _OrderStatus = ProdOrderStatus.Active;

                OnChanged("OrderStatus");
            }
        }
Esempio n. 2
0
 public void CancelProdOrder()
 {
     _OrderStatus = ProdOrderStatus.Cancel;
     OnChanged("OrderStatus");
 }
Esempio n. 3
0
        public void ReActiveProdOrder()
        {
            if (BalQty > 0)
            {
                _OrderStatus = ProdOrderStatus.Active;
            }
            else
            {
                _OrderStatus = ProdOrderStatus.Complete;
            }

            OnChanged("OrderStatus");
        }
Esempio n. 4
0
        public void UpdateStartQty()
        {
            _StartQty = 0;

            foreach (ProdOrderStart orderStart in ProdOrderStarts)
            {
                if (orderStart.Status != ProdOrderStart.OrderStartStatus.Cancel)
                    _StartQty += orderStart.Qty;
            }
            OnChanged("StartQty");

            if ((OrderStatus == ProdOrderStatus.Calculated || OrderStatus == ProdOrderStatus.Waiting ) && _StartQty > 0 )
            {
                _OrderStatus = ProdOrderStatus.Active;
                OnChanged("OrderStatus");
            }

            this.updateTimeStamp = false;
        }
Esempio n. 5
0
 public void ReActiveOrder(UnitOfWork uow)
 {
     _OrderStatus = ProdOrderStatus.Active;
     OnChanged("OrderStatus");
     Save();
 }
Esempio n. 6
0
        public void CompleteOrder(UnitOfWork uow)
        {
            // TODO : Validate the Order;
            bool isValid = true;
            StringBuilder sb = new StringBuilder();

            foreach (ProdBom pBom in ProdBoms)
            {
                if (pBom.RemainReturnQty > 1 || pBom.RemainReturnQty < -1)
                {
                    isValid = false;
                    sb.AppendLine(String.Format("产品 '{0}' 还有余数 {1} 未入仓 !! ", pBom.bomItem.ItemNo, pBom.RemainReturnQty));
                }
            }

            foreach (ProdOrderStart prodOrderStart in ProdOrderStarts)
            {
                if (prodOrderStart.Status == ProdOrderStart.OrderStartStatus.Waiting ||
                        prodOrderStart.Status == ProdOrderStart.OrderStartStatus.Active)
                {
                    isValid = false;
                    sb.AppendLine(String.Format("生产开始单 '{0}' 还未过帐 !!", prodOrderStart.ProdOrderStartNo));

                }
            }

            XPCollection<ProdOrderPickList> prodOrderPickLists = new XPCollection<ProdOrderPickList>(Session);
            prodOrderPickLists.Criteria = CriteriaOperator.Parse(string.Format("Status == '{0}' && ProdOrder.Oid == '{1}'", ProdOrderPickList.PickListStatus.Waiting, this.Oid));

            foreach (ProdOrderPickList poPickList in prodOrderPickLists)
            {
                isValid = false;
                sb.AppendLine(String.Format("产品 '{0}' 已发领料单但未过帐 !! ", poPickList.Item.ItemNo));
            }

            XPCollection<ProdOrderReturnList> prodOrderReturnLists = new XPCollection<ProdOrderReturnList>(Session);
            prodOrderReturnLists.Criteria = CriteriaOperator.Parse(string.Format("Status == '{0}' && ProdOrder.Oid == '{1}'", ProdOrderReturnList.ProdOrderReturnListStatus.Waiting, this.Oid));

            foreach (ProdOrderReturnList poReturnList in prodOrderReturnLists)
            {
                isValid = false;
                sb.AppendLine(String.Format("产品 '{0}' 已退入仓但未过帐 !! ", poReturnList.Item.ItemNo));
            }

            if (isValid)
            {
                _CompletedBy = base.CurrentUser;
                OnChanged("CompletedBy");

                _CompletedDate = ServerHelper.GetCurrentDateTime();
                OnChanged("CompletedDate");

                _OrderStatus = ProdOrderStatus.Complete;
                OnChanged("OrderStatus");
                this.Save();
            }
            else
            {
                if (SecurityHelper.IsAdministrator())
                {
                    DialogResult result = DevExpress.XtraEditors.XtraMessageBox.Show(string.Format("{0}\n{1}", "你有管理员权限可以结此单 !!",  sb.ToString()), string.Format("錯誤 - 生产单 {0} 不能结单", this.OrderNo), MessageBoxButtons.YesNo, MessageBoxIcon.Error);

                    if (result == DialogResult.Yes)
                    {
                        _CompletedBy = base.CurrentUser;
                        OnChanged("CompletedBy");

                        _CompletedDate = ServerHelper.GetCurrentDateTime();
                        OnChanged("CompletedDate");

                        _OrderStatus = ProdOrderStatus.Complete;
                        OnChanged("OrderStatus");
                        this.Save();
                    }
                }
                else
                {
                    DevExpress.XtraEditors.XtraMessageBox.Show(sb.ToString(), string.Format("錯誤 - 生产单 {0} 不能结单", this.OrderNo), MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
Esempio n. 7
0
 public void CancelOrder(UnitOfWork uow)
 {
     _OrderStatus = ProdOrderStatus.Cancel;
     OnChanged("OrderStatus");
     Save();
 }
Esempio n. 8
0
 public void CalculateOrder(UnitOfWork uow)
 {
     foreach (ProdBom prodBom in ProdBoms)
     {
         prodBom.CalculateOrder(uow);
     }
     _OrderStatus = ProdOrderStatus.Calculated;
     OnChanged("OrderStatus");
     this.updateTimeStamp = false;
     this.Save();
 }