Example #1
0
        public void NewSemiProduct(SemiProduct semiproduct)
        {
            List<SemiProduct> specificSemiProduct = (from p in (Task as ProductTask).SalesTask.SemiProducts
                                             where p.Equals(semiproduct)
                                             select p).ToList();

            if (specificSemiProduct.Count > 0)
            {
                MessageBox.Show("已经存在这个日期的这批货物啦\n\r如果你想增加库存数量,则直接双击修改即可");
                return;
            }

            SaleTask task = (Task as ProductTask).SalesTask;
            task.SemiProducts.Add(semiproduct);
            task.TriggerRepoSemiProductsChanged(this, new SemiProductChangeEventArg(semiproduct, ModelChangeEventArg.INSERT));
        }
Example #2
0
        private void NewSemiProductButton_Click(object sender, EventArgs e)
        {
            String name = this.nameTextBox.Text.Trim();
            if (String.IsNullOrEmpty(name))
            {
                MessageBox.Show("名字不为空");
                return;
            }

            String material = this.materialTextBox.Text.Trim();
            if(String.IsNullOrEmpty(material))
            {
                MessageBox.Show("材料不为空");
                return;
            }

            String norm = this.normTextBox.Text.Trim();
            if (String.IsNullOrEmpty(norm))
            {
                MessageBox.Show("规格不为空");
                return;
            }

            String numberStr = this.numberTextBox.Text.Trim();
            int quantity;

            if (!(int.TryParse(numberStr, out quantity) && quantity>=0))
            {
                MessageBox.Show("请输入大于等于0的整数");
                return;
            }

            String remark = this.remarkTextBox.Text.Trim();

            SemiProduct p = new SemiProduct()
            {
                Name = name,
                Material = material,
                Norm = norm,
                Quantity = quantity,
                Remark = remark,
                InitialQuantity = quantity,
                WarehousingDate = this.warehousingDatePicker.Value
            };

            (Controller as ProductController).NewSemiProduct(p);
        }
Example #3
0
 private void semiproductsDataGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e)
 {
     semiproductsDataGridViewTimer.Enabled = true;
     lastModifiedSemiProduct = CurrentSemiProduct;
 }
Example #4
0
 public void SelectSemiProductInList(SemiProduct semiproduct)
 {
     int index = (this.semiproductsDataGridView.DataSource as BindingSource).IndexOf(semiproduct);
     int count = this.semiproductsDataGridView.Rows.Count;
     if (index < count && index >= 0)
     {
         this.semiproductsDataGridView.Rows[index].Selected = true;
         this.semiproductsDataGridView.Refresh();
     }
 }
Example #5
0
 private void DatabaseSemiProductPersist(SemiProduct semiproduct, int changingType)
 {
     switch (changingType)
     {
         case ModelChangeEventArg.INSERT:
             SemiProductDao.Insert(semiproduct);
             break;
         case ModelChangeEventArg.UPDATE:
             SemiProductDao.Update(semiproduct);
             break;
         case ModelChangeEventArg.REMOVE:
             SemiProductDao.Delete(semiproduct);
             break;
     }
 }
Example #6
0
 public void UpdateSemiProduct(SemiProduct semiproduct)
 {
     (Task as SaleTask).TriggerRepoSemiProductsChanged(null, new SemiProductChangeEventArg(semiproduct, ModelChangeEventArg.UPDATE));
 }
Example #7
0
 public void SetCurrentRepoSemiProduct(SemiProduct semiproduct)
 {
     (Task as SaleTask).CurrentRepoSemiProduct = semiproduct;
 }
Example #8
0
        public String GetSemiProductStatusString(SemiProduct p, DateTime fr, DateTime to)
        {
            var list = (from s in (Task as SaleTask).SemiProducts where s.WarehousingDate.Date >= fr.Date
                            && s.WarehousingDate.Date <= to.Date
                            && s.Norm.Equals(p.Norm)
                            && s.Name.Equals(p.Name)
                            && s.Material.Equals(p.Material)
                        select s);
            int sumQuantity = list.Select(c => c.Quantity).Sum();
            int sumInitQuantity = list.Select(c => c.InitialQuantity).Sum();

            return "总现有库存:" + sumQuantity + "; " + "总初始库存:" + sumInitQuantity;
        }
Example #9
0
 public void DeleteSemiProduct(SemiProduct semiproduct)
 {
     // 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).TriggerRepoSemiProductsChanged(null, new SemiProductChangeEventArg(semiproduct, ModelChangeEventArg.REMOVE));
 }
Example #10
0
        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));
            }
        }
Example #11
0
 public static void Update(SemiProduct product)
 {
     DatabaseHelper.SemiProductCollection.Save(product);
 }
Example #12
0
 public static void Insert(SemiProduct product)
 {
     product.Id = new MongoDB.Bson.ObjectId();
     DatabaseHelper.SemiProductCollection.Insert<SemiProduct>(product);
 }
Example #13
0
 public static void Delete(SemiProduct product)
 {
     DatabaseHelper.SemiProductCollection.Remove(Query<SemiProduct>.EQ(e => e.Id, product.Id));
 }
Example #14
0
 public void Set(SemiProduct p)
 {
     if (this.Name.Equals(p.Name) &&
         this.Material.Equals(p.Material) &&
         this.Norm.Equals(p.Norm) &&
         this.WarehousingDate.Date.Equals(p.WarehousingDate.Date))
     {
         this.Quantity = p.Quantity;
         this.InitialQuantity = p.InitialQuantity;
         this.Remark = p.Remark;
     }
     else
     {
         throw new Exception("不能对不同类别的SemiProduct调用Set方法");
     }
 }
 public SemiProductChangeEventArg(SemiProduct changedSemiProduct, int changingType)
 {
     this.ChangedSemiProduct = changedSemiProduct;
     this.ChangingType = changingType;
 }