コード例 #1
0
ファイル: BillsController.cs プロジェクト: hanleyChu/prj
 public bool CheckIfExistInRepo(Product pro)
 {
     return (Task.Navigator.GetController(SaleTask.RepoView) as RepoController).CheckIfExist(pro);
 }
コード例 #2
0
ファイル: RepoController.cs プロジェクト: hanleyChu/prj
 private void DatabaseProductPersist(Product product, int changingType)
 {
     switch (changingType)
     {
         case ModelChangeEventArg.INSERT:
             ProductDao.Insert(product);
             break;
         case ModelChangeEventArg.UPDATE:
             ProductDao.Update(product);
             break;
         case ModelChangeEventArg.REMOVE:
             ProductDao.Delete(product);
             break;
     }
 }
コード例 #3
0
ファイル: BillsController.cs プロジェクト: hanleyChu/prj
        public void CancelProductToRepo(Product product, Boolean discardOnMissing)
        {
            SaleTask task = (Task as SaleTask);

            if (task.CurrentBillProduct == null)
            {
                MessageBox.Show("请选择货物");
                return;
            }

            Product removedProduct = task.CurrentBillProduct;
            (View as IBillsView).RemoveFromProductsList(removedProduct);
            task.CancelProductToRepo(removedProduct, discardOnMissing);

            (View as IBillsView).RefreshCurrentProduct();
        }
コード例 #4
0
ファイル: RepoController.cs プロジェクト: hanleyChu/prj
 public void UpdateProduct(Product product)
 {
     (Task as SaleTask).TriggerRepoProductsChanged(null, new ProductChangeEventArg(product, ModelChangeEventArg.UPDATE));
 }
コード例 #5
0
ファイル: RepoController.cs プロジェクト: hanleyChu/prj
        public void WithdrawProductsToSemiProducts(Product p, DateTime warehousingDate,int count)
        {
            SemiProduct semiproduct = (from s in SemiProductDao.GetAll()
                        where s.WarehousingDate.Date == warehousingDate.Date
                            && s.Norm.Equals(p.Norm)
                            && s.Name.Equals(p.Name)
                            && s.Material.Equals(p.Material)
                        select s).ToList<SemiProduct>()[0];

            semiproduct.Quantity += count;
            this.UpdateSemiProduct(semiproduct);
        }
コード例 #6
0
ファイル: RepoForm.cs プロジェクト: hanleyChu/prj
 public void SelectProductInList(Product product)
 {
     int index = (this.productsDataGridView.DataSource as BindingSource).IndexOf(product);
     int count = this.productsDataGridView.Rows.Count;
     if(index<count && index >=0)
     {
         this.productsDataGridView.Rows[index].Selected = true;
         this.productsDataGridView.Refresh();
     }
 }
コード例 #7
0
ファイル: ProductDao.cs プロジェクト: hanleyChu/prj
 public static void Delete(Product product)
 {
     DatabaseHelper.ProductCollection.Remove(Query<Product>.EQ(e => e.Id, product.Id));
 }
コード例 #8
0
ファイル: RepoController.cs プロジェクト: hanleyChu/prj
        public void AddCurrentSemiProductToProduct(SemiProduct semiproduct, int count)
        {
            if(semiproduct.Quantity < count)
            {
                MessageBox.Show("分配超额");
                return;
            }

            semiproduct.Quantity -= count;
            this.UpdateSemiProduct(semiproduct);

            List<Product> products = (from s in (Task as SaleTask).Products
                                       where
                                           s.Norm.Equals(semiproduct.Norm)
                                           && s.Name.Equals(semiproduct.Name)
                                           && s.Material.Equals(semiproduct.Material)
                                       select s).ToList<Product>();
            Product theProduct;
            if (products.Count > 0)
            {
                theProduct = products[0];
                theProduct.Quantity += count;

                (Task as SaleTask).TriggerRepoProductsChanged(null, new ProductChangeEventArg(theProduct, ModelChangeEventArg.UPDATE));
            }
            else
            {
                theProduct = new Product()
                {
                    Quantity = count,
                    Name = semiproduct.Name,
                    Norm = semiproduct.Norm,
                    Material = semiproduct.Material,
                    Demand = 0,
                };

                (Task as SaleTask).Products.Add(theProduct);
                (Task as SaleTask).TriggerRepoProductsChanged(null, new ProductChangeEventArg(theProduct, ModelChangeEventArg.INSERT));
            }
        }
コード例 #9
0
ファイル: RepoController.cs プロジェクト: hanleyChu/prj
        public bool CheckIfExist(Product pro)
        {
            List<Product> specificProduct = (from p in ProductDao.GetAll() where p.Equals(pro) select p).ToList();

            return specificProduct.Count >= 1 ? true : false;
        }
コード例 #10
0
ファイル: SaleTask.cs プロジェクト: hanleyChu/prj
        /** if the returned product does not exist in repo, then create it **/
        public void ReturnProductToRepo(Product pro, int count)
        {
            // check if the product exist, if exist, then increase by extra products quantities
            List<Product> specificProduct = (from p in ProductDao.GetAll()
                                             where p.Equals(pro)
                                             select p).ToList();

            if (specificProduct.Count > 0)
            {
                specificProduct[0].Quantity += count;
                specificProduct[0].Demand += count;

                // check if exist in current repo products list
                List<Product> currentSpecificProduct = (from p in Products
                                                        where p.Equals(pro)
                                                        select p).ToList();
                // update current list
                if (currentSpecificProduct.Count > 0)
                {
                    currentSpecificProduct[0].Quantity = specificProduct[0].Quantity;
                    currentSpecificProduct[0].Demand = specificProduct[0].Demand;
                }
                TriggerRepoProductsChanged(this, new ProductChangeEventArg(specificProduct[0], ModelChangeEventArg.UPDATE));
            }
            else
            {
                Product missedProduct = pro.Clone() as Product;
                missedProduct.Demand = count;
                missedProduct.Quantity = count;
                Products.Add(missedProduct);
                TriggerRepoProductsChanged(this, new ProductChangeEventArg(missedProduct, ModelChangeEventArg.INSERT));
            }

            // check if the bill is ready for assemblage
            if (CurrentBill.Products.Count == 0 || CurrentBill.Products.Count<Product>(b => b.Quantity < b.Demand) > 0)
            {
                CurrentBill.AssemblageOK = false;
                CurrentBill.Completed = false;
            }
            BillDao.Update(CurrentBill);
        }
コード例 #11
0
ファイル: BillsForm.cs プロジェクト: hanleyChu/prj
 public void RemoveFromProductsList(Product product)
 {
     (bill_productsGridView.DataSource as BindingSource).Remove(product);
 }
コード例 #12
0
ファイル: SaleTask.cs プロジェクト: hanleyChu/prj
        public void CancelProductToRepo(Product product, Boolean discardOnMissing)
        {
            // check if the product exist, if exist, then increase by extra products quantities
            List<Product> specificProduct = (from p in ProductDao.GetAll()
                                            where p.Equals(product)
                                            select p).ToList();
            if(specificProduct.Count>0) // exist
            {
                // change the quantity and demand
                specificProduct[0].Quantity += product.Quantity;
                specificProduct[0].Demand -= (product.Demand - product.Quantity);

                // check if exist in current repo products list
                List<Product> currentSpecificProduct = (from p in Products
                                                        where p.Equals(product)
                                                        select p).ToList();
                // update current list
                if (currentSpecificProduct.Count > 0)
                {
                    currentSpecificProduct[0].Quantity = specificProduct[0].Quantity;
                    currentSpecificProduct[0].Demand = specificProduct[0].Demand;
                }

                TriggerRepoProductsChanged(this, new ProductChangeEventArg(specificProduct[0], ModelChangeEventArg.UPDATE));
            }

            // not exist, unconsistency state
            if(!discardOnMissing)
            {
                Product missedProduct = product.Clone() as Product;
                missedProduct.Demand = 0;
                Products.Add(missedProduct);
                TriggerRepoProductsChanged(this, new ProductChangeEventArg(missedProduct, ModelChangeEventArg.INSERT));
            }

            // check if the bill is ready for assemblage
            if (CurrentBill.Products.Count == 0 || CurrentBill.Products.Count<Product>(b => b.Quantity < b.Demand) > 0)
            {
                CurrentBill.AssemblageOK = false;
                CurrentBill.Completed = false;
            }
            BillDao.Update(CurrentBill);
        }
コード例 #13
0
ファイル: ProductDao.cs プロジェクト: hanleyChu/prj
 public static void Update(Product product)
 {
     DatabaseHelper.ProductCollection.Save(product);
 }
コード例 #14
0
ファイル: ProductDao.cs プロジェクト: hanleyChu/prj
 public static void Insert(Product product)
 {
     product.Id = new MongoDB.Bson.ObjectId();
     DatabaseHelper.ProductCollection.Insert<Product>(product);
 }
コード例 #15
0
ファイル: BillsController.cs プロジェクト: hanleyChu/prj
        public void ReturnProductToRepo(Product product, int count)
        {
            SaleTask task = (Task as SaleTask);

            if (task.CurrentBillProduct == null)
            {
                MessageBox.Show("请选择货物");
                return;
            }

            Product returnedProduct = task.CurrentBillProduct;
            returnedProduct.Quantity = 0;
            task.ReturnProductToRepo(returnedProduct, count);

            (View as IBillsView).RefreshCurrentProduct();
        }
コード例 #16
0
ファイル: RepoController.cs プロジェクト: hanleyChu/prj
 /*
  * product modify method
  */
 public void DeleteProduct(Product product)
 {
     // since in the form view layer, we called bindingsource.remove method, it will also delete the object of model layer
     // here we just call the event trigger method to notify the observors to take actions
     (Task as SaleTask).TriggerRepoProductsChanged(null, new ProductChangeEventArg(product, ModelChangeEventArg.REMOVE));
 }
コード例 #17
0
ファイル: BillsController.cs プロジェクト: hanleyChu/prj
 public void SetCurrentBillProduct(Product product)
 {
     (Task as SaleTask).CurrentBillProduct = product;
 }
コード例 #18
0
ファイル: RepoController.cs プロジェクト: hanleyChu/prj
        public List<SemiProduct> GetRelatedSemiProducts(Product p)
        {
            List<SemiProduct> list = (from s in SemiProductDao.GetAll()
                        where
                            s.Norm.Equals(p.Norm)
                            && s.Name.Equals(p.Name)
                            && s.Material.Equals(p.Material)
                            && s.InitialQuantity>s.Quantity
                        select s).ToList<SemiProduct>();

            return list;
        }
コード例 #19
0
 public ProductChangeEventArg(Product changedProduct, int changingType)
 {
     this.ChangedProduct = changedProduct;
     this.ChangingType = changingType;
 }
コード例 #20
0
ファイル: Product.cs プロジェクト: hanleyChu/prj
 public void Set(Product p)
 {
     if (this.Name.Equals(p.Name) &&
         this.Material.Equals(p.Material) &&
         this.Norm.Equals(p.Norm))
     {
         this.Quantity = p.Quantity;
         this.Demand = p.Demand;
         this.Remark = p.Remark;
         this.UnitPrice = p.UnitPrice;
     }
     else
     {
         throw new Exception("不能对不同类型的product调用set方法");
     }
 }