Beispiel #1
0
        public void Delete(Model.StockCheck StockCheck)
        {
            foreach (Model.StockCheckDetail item in StockCheck.Details)
            {
                Model.Product product = item.Product;
                Model.Stock   stock   = stockManager.GetStockByProductIdAndDepotPositionId(item.ProductId, item.DepotPositionId);

                if (stock != null)
                {
                    stock.StockQuantity1 = Convert.ToDouble(stock.StockQuantity1) + Convert.ToDouble(item.StockCheckQuantityDiff);
                    stock.IsNotUpdate    = true;
                    stockManager.Update(stock);
                }
                else
                {
                    stock = new Book.Model.Stock();
                    stock.StockCheckDate   = StockCheck.StockCheckDate;
                    stock.StockId          = Guid.NewGuid().ToString();
                    stock.DepotPositionId  = item.DepotPositionId;
                    stock.DepotId          = StockCheck.DepotId;
                    stock.ProductId        = item.ProductId;
                    stock.StockQuantityOld = 0;
                    stock.StockQuantity1   = Convert.ToDouble(item.StockCheckQuantityDiff);
                    stock.IsNotUpdate      = true;
                    stockManager.Insert(stock);
                }
                productmanager.UpdateProduct_Stock(item.Product);
            }
            accessor.Delete(StockCheck.StockCheckId);
        }
Beispiel #2
0
        private void DepotPositionAndNumsForm_Load(object sender, EventArgs e)
        {
            IList <Model.DepotPosition> list = depotPositionManager.Select(this._depot);

            if (list.Count == 0)
            {
                return;
            }
            foreach (Model.DepotPosition item in list)
            {
                Model.Stock stock = new Book.Model.Stock();
                stock.StockId         = Guid.NewGuid().ToString();
                stock.DepotId         = this._depot.DepotId;
                stock.DepotPosition   = item;
                stock.DepotPositionId = item.DepotPositionId;
                stock.Product         = this._product;
                stock.ProductId       = stock.Product.ProductId;


                if (ListForm.dic.ContainsKey(this._product.ProductId + stock.DepotPositionId))
                {
                    stock.StockQuantity0 = ListForm.dic[this._product.ProductId + stock.DepotPositionId].StockQuantity0;
                    stock.OldStock       = stock.StockQuantity0;
                    stock.Stock0Date     = ListForm.dic[this._product.ProductId + stock.DepotPositionId].Stock0Date;
                }
                else
                {
                    Model.Stock sk = this._stockManager.GetStockByProductIdAndDepotPositionId(this._product.ProductId, item.DepotPositionId);
                    if (sk != null)
                    {
                        stock.StockQuantity0 = sk.StockQuantity0;
                        stock.OldStock       = stock.StockQuantity0;
                        stock.Stock0Date     = sk.Stock0Date;
                    }
                    else
                    {
                        stock.StockQuantity0 = 0;
                        stock.OldStock       = 0;
                    }
                }
                this.stockList.Add(stock);
            }

            foreach (Model.Stock item in this.stockList)
            {
                if (item.StockQuantity0 != 0 && item.StockQuantity0 != null)
                {
                    nums += item.StockQuantity0.Value;
                }
            }
            this.bindingSourceStock.DataSource = this.stockList;

            this.gridControl1.RefreshDataSource();
        }
Beispiel #3
0
 public void Delete(Model.StockCheck StockCheck)
 {
     foreach (Model.StockCheckDetail item in StockCheck.Details)
     {
         Model.Stock stock = new Book.Model.Stock();
         stock = stockManager.GetStockByProductIdAndDepotPositionId(item.ProductId, item.DepotPositionId);
         if (stock != null)
         {
             stock.StockQuantity1 = (stock.StockQuantity1 == null ? 0 : stock.StockQuantity1) + (item.StockCheckQuantityDiff == null ? 0 : item.StockCheckQuantityDiff);
             stock.IsNotUpdate    = true;
             stockManager.Update(stock);
         }
         productmanager.UpdateProduct_Stock(item.Product);
     }
     accessor.Delete(StockCheck.StockCheckId);
     Model.StockEditor stockEditor = stockEditorAccessor.Get(StockCheck.StockEditorId);
     stockEditor.IsStockCheck = false;
     stockEditorAccessor.Update(stockEditor);
 }
Beispiel #4
0
 public void Decrement(Book.Model.DepotPosition depotPosition, Book.Model.Product product, double quantity)
 {
     if (!Exists(depotPosition, product))
     {
         Model.Stock stock = new Book.Model.Stock();
         stock.StockId         = Guid.NewGuid().ToString();
         stock.DepotPositionId = depotPosition.DepotPositionId;
         stock.DepotId         = depotPosition.DepotId;
         stock.ProductId       = product.ProductId;
         stock.StockQuantity1  = 0 - quantity;
         this.Insert(stock);
     }
     else
     {
         Hashtable paras = new Hashtable();
         paras.Add("Quantity", quantity);
         paras.Add("positionId", depotPosition.DepotPositionId);
         paras.Add("ProductId", product.ProductId);
         sqlmapper.Update("Stock.decrement", paras);
     }
 }
Beispiel #5
0
        /// <summary>
        /// Update a StockCheck.
        /// </summary>
        public void Update(Model.StockCheck stockCheck)
        {
            try
            {
                BL.V.BeginTransaction();

                stockCheck.UpdateTime = DateTime.Now;
                if (stockCheck.Employee0 != null)
                {
                    stockCheck.Employee0Id = stockCheck.Employee0.EmployeeId;
                }

                accessor.Update(stockCheck);
                // Dictionary<string, Model.StockCheckDetail> dic = new Dictionary<string, Book.Model.StockCheckDetail>();
                foreach (Model.StockCheckDetail detail in stockCheck.Details)
                {
                    if (detail.Product == null || string.IsNullOrEmpty(detail.Product.ProductId))
                    {
                        continue;
                    }
                    //if (!dic.ContainsKey(detail.ProductId))
                    //    dic.Add(detail.ProductId, detail);
                    stockCheckDetailAccessor.Update(detail);
                    Model.Stock stock = stockManager.GetStockByProductIdAndDepotPositionId(detail.ProductId, detail.DepotPositionId);

                    if (stock == null)
                    {
                        stock = new Book.Model.Stock();
                        stock.StockCheckDate   = stockCheck.StockCheckDate;
                        stock.StockId          = Guid.NewGuid().ToString();
                        stock.DepotPositionId  = detail.DepotPositionId;
                        stock.DepotId          = stockCheck.DepotId;
                        stock.ProductId        = detail.ProductId;
                        stock.StockQuantityOld = 0;
                        stock.StockQuantity1   = detail.StockCheckQuantity;
                        stock.IsNotUpdate      = true;
                        stockManager.Insert(stock);
                    }
                    else
                    {
                        stock.StockCheckDate   = stockCheck.StockCheckDate;
                        stock.DepotPositionId  = detail.DepotPositionId;
                        stock.StockQuantityOld = stock.StockQuantity1 == null ? 0 : stock.StockQuantity1;
                        stock.StockQuantity1   = detail.StockCheckQuantity;
                        stock.IsNotUpdate      = true;
                        stockManager.Update(stock);
                    }

                    //修改產品
                    productmanager.UpdateProduct_Stock(detail.Product);
                }

                //foreach (string productId in dic.Keys)
                //{
                //    Model.Product product = productmanager.Get(productId);
                //    //產品的庫存是庫存表內所有貨位的此產品的數量總和
                //    product.StocksQuantity = stockManager.GetTheCount1OfProductByProductId(product, dic[productId].Depot);
                //    //修改產品
                //    productmanager.update(product);
                //}

                BL.V.CommitTransaction();
            }
            catch
            {
                BL.V.RollbackTransaction();
                throw;
            }
        }
Beispiel #6
0
        public void Insert(Model.StockCheck stockCheck)
        {
            //
            // todo:add other logic here
            //
            stockCheck.InsertTime = DateTime.Now;
            stockCheck.UpdateTime = DateTime.Now;

            Validate(stockCheck);

            try
            {
                BL.V.BeginTransaction();

                string invoiceKind   = this.GetInvoiceKind().ToLower();
                string sequencekey_y = string.Format("{0}-y-{1}", invoiceKind, stockCheck.InsertTime.Value.Year);
                string sequencekey_m = string.Format("{0}-m-{1}-{2}", invoiceKind, stockCheck.InsertTime.Value.Year, stockCheck.InsertTime.Value.Month);
                string sequencekey_d = string.Format("{0}-d-{1}", invoiceKind, stockCheck.InsertTime.Value.ToString("yyyy-MM-dd"));
                string sequencekey   = invoiceKind;
                SequenceManager.Increment(sequencekey_y);
                SequenceManager.Increment(sequencekey_m);
                SequenceManager.Increment(sequencekey_d);
                SequenceManager.Increment(sequencekey);
                //设置盘点录入表为已校正
                Model.StockEditor stockEditor = stockEditorAccessor.Get(stockCheck.StockEditorId);
                stockEditor.IsStockCheck = true;
                stockEditorAccessor.Update(stockEditor);

                accessor.Insert(stockCheck);

                //Dictionary<string, Model.StockCheckDetail> dic = new Dictionary<string, Book.Model.StockCheckDetail>();
                foreach (Model.StockCheckDetail details in stockCheck.Details)
                {
                    if (details.Product == null || string.IsNullOrEmpty(details.Product.ProductId))
                    {
                        continue;
                    }
                    //if (!dic.ContainsKey(details.Product.ProductId))
                    //    dic.Add(details.Product.ProductId, details);

                    stockCheckDetailAccessor.Insert(details);

                    Model.Stock stock = stockManager.GetStockByProductIdAndDepotPositionId(details.ProductId, details.DepotPositionId);
                    if (stock == null)
                    {
                        stock = new Book.Model.Stock();
                        stock.StockCheckDate   = stockCheck.StockCheckDate;
                        stock.StockId          = Guid.NewGuid().ToString();
                        stock.DepotPositionId  = details.DepotPositionId;
                        stock.DepotId          = stockCheck.DepotId;
                        stock.ProductId        = details.ProductId;
                        stock.StockQuantityOld = 0;
                        stock.StockQuantity1   = details.StockCheckQuantity;
                        stock.IsNotUpdate      = true;
                        stockManager.Insert(stock);
                    }
                    else
                    {
                        stock.StockCheckDate   = stockCheck.StockCheckDate;
                        stock.DepotPositionId  = details.DepotPositionId;
                        stock.StockQuantityOld = stock.StockQuantity1 == null ? 0 : stock.StockQuantity1;
                        stock.StockQuantity1   = details.StockCheckQuantity;
                        stock.IsNotUpdate      = true;
                        stockManager.Update(stock);
                    }

                    //  product.StocksQuantity = stockManager.GetTheCount1OfProductByProductId(product, dic[productId].Depot);
                    //details.Product.StocksQuantity = details.StockCheckQuantity;
                    //修改產品
                    //productmanager.UpdateProduct_Stock(details.Product);
                    details.Product.StocksQuantity    = stockManager.GetTheCountByProduct(details.Product);
                    details.Product.LastStockTakeTime = DateTime.Now;
                    productmanager.update(details.Product);
                }

                //foreach (string productId in dic.Keys)
                //{
                //    Model.Product product = productmanager.Get(productId);
                //    if (product.ProductImage == null)
                //        product.ProductImage = new byte[] { };
                //    if (product.ProductImage1 == null)
                //        product.ProductImage1 = new byte[] { };
                //    if (product.ProductImage2 == null)
                //        product.ProductImage2 = new byte[] { };
                //    if (product.ProductImage3 == null)
                //        product.ProductImage3 = new byte[] { };
                //  //  product.StocksQuantity = stockManager.GetTheCount1OfProductByProductId(product, dic[productId].Depot);
                //    product.StocksQuantity = dic[productId].StockCheckQuantity;
                //    //修改產品
                //    productmanager.update(product);
                //}


                BL.V.CommitTransaction();
            }
            catch
            {
                BL.V.RollbackTransaction();
                throw;
            }
        }
Beispiel #7
0
        private void _Insert(Book.Model.InvoicePI invoice)
        {
            //往来单位
            if (invoice.Department != null)
            {
                invoice.DepartmentId = invoice.Department.DepartmentId;
            }
            //经手人
            if (invoice.Employee0 != null)
            {
                invoice.Employee0Id = invoice.Employee0.EmployeeId;
            }
            //录单人
            if (invoice.Employee1 != null)
            {
                invoice.Employee1Id = invoice.Employee1.EmployeeId;
            }
            if ((Helper.InvoiceStatus)invoice.InvoiceStatus.Value == Helper.InvoiceStatus.Normal)
            {
                //过账人
                if (invoice.Employee2 != null)
                {
                    invoice.Employee2Id = invoice.Employee2.EmployeeId;
                }
                //过账时间
                invoice.InvoiceGZTime = DateTime.Now;
            }
            //插入表单
            accessor.Insert(invoice);

            //插入明细
            foreach (Model.InvoicePIDetail detail in invoice.Details)
            {
                Model.InvoicePODetail odetail = invoicePODetailAccessor.Get(detail.InvoicePODetailId);

                if (detail.InvoicePIDetailQuantity > 0)
                {
                    if (detail.InvoicePIDetailQuantity <= odetail.InvoicePODetailWHQuantity)
                    {
                        detail.InvoiceId = invoice.InvoiceId;
                        invoicePIDetailAccessor.Insert(detail);

                        Model.Product p = detail.Product;
                        p.StocksQuantity += detail.InvoicePIDetailQuantity;
                        productAccessor.Update(detail.Product);

                        if (odetail != null)
                        {
                            odetail.InvoicePODetailWHQuantity -= detail.InvoicePIDetailQuantity;
                            odetail.InvoicePODetailYHQuantity += detail.InvoicePIDetailQuantity;
                            invoicePODetailAccessor.Update(odetail);
                        }

                        Model.Stock stock = stockAccessor.GetStockByProductIdAndDepotPositionId(p.ProductId, detail.PoDepotPositionId);
                        if (stock == null)
                        {
                            stock                 = new Book.Model.Stock();
                            stock.StockId         = Guid.NewGuid().ToString();
                            stock.ProductId       = p.ProductId;
                            stock.DepotPositionId = detail.PoDepotPositionId;
                            stock.StockQuantity1  = detail.InvoicePIDetailQuantity;
                            stock.StockCurrentJR  = stock.StockCurrentJR == null ? detail.InvoicePIDetailQuantity : stock.StockCurrentJR + detail.InvoicePIDetailQuantity;
                            stock.DepotId         = invoice.PoDepotId;
                            stock.ProduceUnit     = p.ProduceUnit.CnName;
                            stockAccessor.Insert(stock);
                        }
                        else
                        {
                            stockAccessor.IncrementJR(new DepotPositionManager().Get(detail.PoDepotPositionId), p, detail.InvoicePIDetailQuantity.Value);
                        }
                    }
                    else
                    {
                        throw new Helper.InvalidValueException("HaiRuTaiDuo");
                    }
                }
            }
        }
Beispiel #8
0
        private void _Insert(Book.Model.InvoiceJR invoice)
        {
            //往来单位
            //if (invoice.Customer != null)
            //    invoice.CustomerId = invoice.Customer.CustomerId;
            // 库房
            //invoice.DepotId = invoice.Depot.DepotId;
            //经手人
            invoice.Employee0Id = invoice.Employee0.EmployeeId;
            //录单人

            if (invoice.Employee1 != null)
            {
                invoice.Employee1Id = invoice.Employee1.EmployeeId;
            }

            if ((Helper.InvoiceStatus)invoice.InvoiceStatus.Value == Helper.InvoiceStatus.Normal)
            {
                //过账人
                if (invoice.Employee2 != null)
                {
                    invoice.Employee2Id = invoice.Employee2.EmployeeId;
                }
                //过账时间
                invoice.InvoiceGZTime = DateTime.Now;
            }
            //插入表单
            accessor.Insert(invoice);

            //插入明细
            foreach (Model.InvoiceJRDetail detail in invoice.Details)
            {
                if (detail.Product == null || string.IsNullOrEmpty(detail.Product.ProductId))
                {
                    continue;
                }
                detail.InvoiceId = invoice.InvoiceId;
                detail.InvoiceWeiHuaiChuQuantity = detail.InvoiceJRDetailQuantity;
                detail.InvoiceYiHuaiChuQuantity  = 0;
                invoiceJRDetailAccessor.Insert(detail);

                Model.Product p = detail.Product;
                //if (detail.InvoiceProductUnit == p.ProductOuterPackagingUnit)
                //{
                //    quantity = detail.InvoiceJRDetailQuantity * p.ProductBaseUnitRelationship * p.ProductInnerUnitRelationship;
                //}
                //else if (detail.InvoiceProductUnit == detail.Product.ProductInnerPackagingUnit)
                //{
                //    quantity = detail.InvoiceJRDetailQuantity * p.ProductBaseUnitRelationship;
                //}
                //else
                //{
                //    quantity = detail.InvoiceJRDetailQuantity;
                //}
                //byte[] pic = new byte[] { };
                //if (p.ProductImage == null)
                //    p.ProductImage = pic;
                //if (p.ProductImage1 == null)
                //    p.ProductImage1 = pic;
                //if (p.ProductImage2 == null)
                //    p.ProductImage2 = pic;
                //if (p.ProductImage3 == null)
                //    p.ProductImage3 = pic;
                p.StocksQuantity += detail.InvoiceJRDetailQuantity;
                productAccessor.Update(p);

                Model.Stock stock = stockAccessor.GetStockByProductIdAndDepotPositionId(p.ProductId, detail.DepotPositionId);
                if (stock == null)
                {
                    stock                 = new Book.Model.Stock();
                    stock.StockId         = Guid.NewGuid().ToString();
                    stock.ProductId       = p.ProductId;
                    stock.DepotPositionId = detail.DepotPositionId;
                    stock.StockQuantity1  = detail.InvoiceJRDetailQuantity;
                    stock.StockCurrentJR  = stock.StockCurrentJR == null ? detail.InvoiceJRDetailQuantity : stock.StockCurrentJR + detail.InvoiceJRDetailQuantity;
                    stock.DepotId         = invoice.DepotId;
                    stock.ProduceUnit     = p.ProduceUnit.CnName;
                    stockAccessor.Insert(stock);
                }
                else
                {
                    stockAccessor.IncrementJR(depotPositionAcccessor.Get(detail.DepotPositionId), p, detail.InvoiceJRDetailQuantity.Value);
                }
            }
        }
Beispiel #9
0
        private void _Update(Model.InvoiceJR invoice)
        {
            invoice.UpdateTime = DateTime.Now;;
            //if (invoice.Customer != null)
            //    invoice.CustomerId = invoice.Customer.CustomerId;
            //invoice.DepotId = invoice.Depot.DepotId;
            invoice.Employee0Id = invoice.Employee0.EmployeeId;

            Model.InvoiceJR invoiceOriginal = this.Get(invoice.InvoiceId);

            Helper.InvoiceStatus invoiceStatus = (Helper.InvoiceStatus)invoice.InvoiceStatus.Value;

            switch ((Helper.InvoiceStatus)invoiceOriginal.InvoiceStatus)
            {
            case Helper.InvoiceStatus.Draft:
                switch (invoiceStatus)
                {
                case Helper.InvoiceStatus.Draft:

                    accessor.Update(invoice);

                    invoiceJRDetailAccessor.Delete(invoice);

                    foreach (Model.InvoiceJRDetail detail in invoice.Details)
                    {
                        if (detail.Product == null || string.IsNullOrEmpty(detail.Product.ProductId))
                        {
                            continue;
                        }
                        detail.InvoiceId = invoice.InvoiceId;
                        detail.InvoiceWeiHuaiChuQuantity = detail.InvoiceJRDetailQuantity;
                        detail.InvoiceYiHuaiChuQuantity  = 0;
                        invoiceJRDetailAccessor.Insert(detail);
                    }
                    break;

                case Helper.InvoiceStatus.Normal:
                    accessor.Delete(invoiceOriginal.InvoiceId);
                    invoice.InsertTime = invoiceOriginal.InsertTime;
                    invoice.UpdateTime = DateTime.Now;
                    _Insert(invoice);
                    break;

                case Helper.InvoiceStatus.Null:
                    throw new InvalidOperationException();
                }
                break;

            case Helper.InvoiceStatus.Normal:
                switch (invoiceStatus)
                {
                case Helper.InvoiceStatus.Draft:
                    throw new InvalidOperationException();

                case Helper.InvoiceStatus.Normal:
                    invoiceOriginal.InvoiceStatus = (int)Helper.InvoiceStatus.Null;
                    _TurnNull(invoiceOriginal);

                    invoiceJRDetailAccessor.Delete(invoice);

                    foreach (Model.InvoiceJRDetail detail in invoice.Details)
                    {
                        if (detail.Product == null || string.IsNullOrEmpty(detail.Product.ProductId))
                        {
                            continue;
                        }
                        Model.Product p = detail.Product;
                        //if (detail.InvoiceProductUnit == p.ProductOuterPackagingUnit)
                        //{
                        //    quantity = detail.InvoiceJRDetailQuantity * p.ProductBaseUnitRelationship * p.ProductInnerUnitRelationship;
                        //}
                        //else if (detail.InvoiceProductUnit == detail.Product.ProductInnerPackagingUnit)
                        //{
                        //    quantity = detail.InvoiceJRDetailQuantity * p.ProductBaseUnitRelationship;
                        //}
                        //else
                        //{
                        //    quantity = detail.InvoiceJRDetailQuantity;
                        //}
                        //p.ProductCurrentJRQuantity += quantity;
                        if (detail.InvoiceJRDetailQuantity.Value == 0)
                        {
                            throw new Helper.InvalidValueException(Model.InvoiceJRDetail.PRO_InvoiceJRDetailQuantity);
                        }
                        byte[] pic = new byte[] { };
                        //if (p.ProductImage == null)
                        //    p.ProductImage = pic;
                        //if (p.ProductImage1 == null)
                        //    p.ProductImage1 = pic;
                        //if (p.ProductImage2 == null)
                        //    p.ProductImage2 = pic;
                        //if (p.ProductImage3 == null)
                        //    p.ProductImage3 = pic;
                        p.StocksQuantity += detail.InvoiceJRDetailQuantity.Value;
                        productAccessor.Update(p);

                        detail.InvoiceWeiHuaiChuQuantity = detail.InvoiceJRDetailQuantity - detail.InvoiceYiHuaiChuQuantity;

                        Model.InvoiceJRDetail temp = invoiceJRDetailAccessor.Get(detail.InvoiceJRDetailId);
                        if (temp != null)
                        {
                            temp.InvoiceId = invoice.InvoiceId;
                            temp.InvoiceHCDetailQuantity = detail.InvoiceHCDetailQuantity;
                            invoiceJRDetailAccessor.Update(temp);
                        }
                        else
                        {
                            detail.InvoiceId = invoice.InvoiceId;
                            invoiceJRDetailAccessor.Insert(detail);
                        }

                        Model.Stock stock = stockAccessor.GetStockByProductIdAndDepotPositionId(p.ProductId, detail.DepotPositionId);
                        if (stock == null)
                        {
                            stock                 = new Book.Model.Stock();
                            stock.StockId         = Guid.NewGuid().ToString();
                            stock.ProductId       = p.ProductId;
                            stock.DepotPositionId = detail.DepotPositionId;
                            stock.StockQuantity1  = detail.InvoiceJRDetailQuantity;
                            stock.StockCurrentJR  = stock.StockCurrentJR == null ? detail.InvoiceJRDetailQuantity : stock.StockCurrentJR + detail.InvoiceJRDetailQuantity;
                            stock.DepotId         = invoice.DepotId;
                            stock.ProduceUnit     = p.ProduceUnit.CnName;
                            stockAccessor.Insert(stock);
                        }
                        else
                        {
                            stockAccessor.IncrementJR(depotPositionAcccessor.Get(detail.DepotPositionId), p, detail.InvoiceJRDetailQuantity.Value);
                        }
                    }
                    accessor.Update(invoice);
                    break;

                case Helper.InvoiceStatus.Null:

                    foreach (Model.InvoiceJRDetail detail in invoice.Details)
                    {
                        if (detail.Product == null || string.IsNullOrEmpty(detail.Product.ProductId))
                        {
                            continue;
                        }
                        Model.Product p = detail.Product;
                        //if (detail.InvoiceProductUnit == detail.Product.ProductOuterPackagingUnit)
                        //{
                        //    jrQuantity = detail.InvoiceJRDetailQuantity * p.ProductBaseUnitRelationship * p.ProductInnerUnitRelationship;
                        //}
                        //else if (detail.InvoiceProductUnit == detail.Product.ProductInnerPackagingUnit)
                        //{
                        //    jrQuantity = detail.InvoiceJRDetailQuantity * p.ProductBaseUnitRelationship;
                        //}
                        //else
                        //{
                        //    jrQuantity = detail.InvoiceJRDetailQuantity;
                        //}

                        //p.ProductCurrentJRQuantity -= jrQuantity;
                        p.StocksQuantity -= detail.InvoiceJRDetailQuantity.Value;
                        //byte[] pic = new byte[] { };
                        //if (p.ProductImage == null)
                        //    p.ProductImage = pic;
                        //if (p.ProductImage1 == null)
                        //    p.ProductImage1 = pic;
                        //if (p.ProductImage2 == null)
                        //    p.ProductImage2 = pic;
                        //if (p.ProductImage3 == null)
                        //    p.ProductImage3 = pic;
                        productAccessor.Update(p);

                        stockAccessor.DecrementJR(depotPositionAcccessor.Get(detail.DepotPositionId), p, detail.InvoiceJRDetailQuantity.Value);

                        detail.InvoiceWeiHuaiChuQuantity -= detail.InvoiceJRDetailQuantity;
                        detail.InvoiceJRDetailQuantity   -= detail.InvoiceJRDetailQuantity;

                        invoiceJRDetailAccessor.Update(detail);
                    }
                    break;
                }
                break;

            case Helper.InvoiceStatus.Null:
                throw new InvalidOperationException();
            }
        }
Beispiel #10
0
        /// <summary>
        /// Update a StockCheck.
        /// </summary>
        public void Update(Model.StockCheck stockCheck)
        {
            try
            {
                BL.V.BeginTransaction();

                stockCheck.UpdateTime = DateTime.Now;
                if (stockCheck.Employee0 != null)
                {
                    stockCheck.Employee0Id = stockCheck.Employee0.EmployeeId;
                }

                accessor.Update(stockCheck);

                //13.10.10曹瑞修改:校正不直接修改库存为校正数量,而是当前库存加上差异数量
                IList <Model.StockCheckDetail> detailList = stockCheckDetailAccessor.Select(stockCheck);
                foreach (Model.StockCheckDetail item in detailList)
                {
                    Model.Stock stock = new Book.Model.Stock();
                    stock = stockManager.GetStockByProductIdAndDepotPositionId(item.ProductId, item.DepotPositionId);
                    if (stock != null)
                    {
                        stock.StockQuantity1 = (stock.StockQuantity1 == null ? 0 : stock.StockQuantity1) + (item.StockCheckQuantityDiff == null ? 0 : item.StockCheckQuantityDiff);
                        stock.IsNotUpdate    = true;
                        stockManager.Update(stock);
                    }
                    productmanager.UpdateProduct_Stock(item.Product);
                    stockCheckDetailAccessor.Delete(item.StockCheckDetailId);
                }

                foreach (Model.StockCheckDetail details in stockCheck.Details)
                {
                    if (details.Product == null || string.IsNullOrEmpty(details.Product.ProductId))
                    {
                        continue;
                    }
                    stockCheckDetailAccessor.Insert(details);

                    Model.Stock stock = stockManager.GetStockByProductIdAndDepotPositionId(details.ProductId, details.DepotPositionId);
                    if (stock == null)
                    {
                        stock = new Book.Model.Stock();
                        stock.StockCheckDate   = stockCheck.StockCheckDate;
                        stock.StockId          = Guid.NewGuid().ToString();
                        stock.DepotPositionId  = details.DepotPositionId;
                        stock.DepotId          = stockCheck.DepotId;
                        stock.ProductId        = details.ProductId;
                        stock.StockQuantityOld = 0;
                        stock.StockQuantity1   = details.StockCheckQuantity;
                        stock.IsNotUpdate      = true;
                        stockManager.Insert(stock);
                    }
                    else
                    {
                        stock.StockCheckDate   = stockCheck.StockCheckDate;
                        stock.DepotPositionId  = details.DepotPositionId;
                        stock.StockQuantityOld = stock.StockQuantity1 == null ? 0 : stock.StockQuantity1;
                        stock.StockQuantity1   = (stock.StockQuantity1 == null ? 0 : stock.StockQuantity1) - (details.StockCheckQuantityDiff == null ? 0 : details.StockCheckQuantityDiff);
                        stock.IsNotUpdate      = true;
                        stockManager.Update(stock);
                    }

                    //  product.StocksQuantity = stockManager.GetTheCount1OfProductByProductId(product, dic[productId].Depot);
                    //details.Product.StocksQuantity = details.StockCheckQuantity;
                    //修改產品
                    //productmanager.UpdateProduct_Stock(details.Product);
                    details.Product.StocksQuantity    = stockManager.GetTheCountByProduct(details.Product);
                    details.Product.LastStockTakeTime = DateTime.Now;
                    productmanager.update(details.Product);
                }

                BL.V.CommitTransaction();
            }
            catch
            {
                BL.V.RollbackTransaction();
                throw;
            }
        }
Beispiel #11
0
        private void _Insert(Book.Model.InvoicePO invoice)
        {
            //往来单位
            if (invoice.Department != null)
            {
                invoice.DepartmentId = invoice.Department.DepartmentId;
            }
            // 库房
            //invoice.DepotId = invoice.Depot.DepotId;
            //经手人
            if (invoice.Employee0 != null)
            {
                invoice.Employee0Id = invoice.Employee0.EmployeeId;
            }
            //录单人
            if (invoice.Employee1 != null)
            {
                invoice.Employee1Id = invoice.Employee1.EmployeeId;
            }

            if ((Helper.InvoiceStatus)invoice.InvoiceStatus.Value == Helper.InvoiceStatus.Normal)
            {
                //过账人
                if (invoice.Employee2 != null)
                {
                    invoice.Employee2Id = invoice.Employee2.EmployeeId;
                }
                //过账时间
                invoice.InvoiceGZTime = DateTime.Now;
            }
            //插入表单
            accessor.Insert(invoice);

            //插入明细
            foreach (Model.InvoicePODetail detail in invoice.Details)
            {
                if (detail.DepotPosition == null || detail.DepotPositionId == null)
                {
                    throw new Exception("貨位不為空");
                }
                if (detail.Product == null || string.IsNullOrEmpty(detail.Product.ProductId))
                {
                    continue;
                }
                detail.InvoiceId = invoice.InvoiceId;
                detail.InvoicePODetailWHQuantity = detail.InvoicePODetailJCQuantity;
                detail.InvoicePODetailYHQuantity = 0;
                invoicePODetailAccessor.Insert(detail);

                Model.Product p = detail.Product;
                p.StocksQuantity -= detail.InvoicePODetailJCQuantity;
                productAccessor.Update(p);

                Model.Stock stock = stockAccessor.GetStockByProductIdAndDepotPositionId(p.ProductId, detail.DepotPositionId);
                if (stock == null)
                {
                    stock                 = new Book.Model.Stock();
                    stock.StockId         = Guid.NewGuid().ToString();
                    stock.ProductId       = p.ProductId;
                    stock.DepotPositionId = detail.DepotPositionId;
                    stock.StockQuantity1  = detail.InvoicePODetailJCQuantity;
                    stock.StockCurrentJC  = stock.StockCurrentJC == null ? detail.InvoicePODetailJCQuantity : stock.StockCurrentJC + detail.InvoicePODetailJCQuantity;
                    stock.DepotId         = invoice.PoDepotId;
                    stock.ProduceUnit     = p.ProduceUnit.CnName;
                    stockAccessor.Insert(stock);
                }
                else
                {
                    stockAccessor.IncrementJC(new DepotPositionManager().Get(detail.DepotPositionId), p, detail.InvoicePODetailJCQuantity.Value);
                }
            }
        }
Beispiel #12
0
        private void _Update(Model.InvoicePO invoice)
        {
            invoice.UpdateTime = DateTime.Now;;
            if (invoice.Department != null)
            {
                invoice.DepartmentId = invoice.Department.DepartmentId;
            }
            //invoice.DepotId = invoice.Depot.DepotId;
            invoice.Employee0Id = invoice.Employee0.EmployeeId;

            Model.InvoicePO invoiceOriginal = this.Get(invoice.InvoiceId);

            Helper.InvoiceStatus invoiceStatus = (Helper.InvoiceStatus)invoice.InvoiceStatus.Value;

            switch ((Helper.InvoiceStatus)invoiceOriginal.InvoiceStatus)
            {
            case Helper.InvoiceStatus.Draft:
                switch (invoiceStatus)
                {
                case Helper.InvoiceStatus.Draft:

                    accessor.Update(invoice);

                    invoicePODetailAccessor.Delete(invoice);

                    foreach (Model.InvoicePODetail detail in invoice.Details)
                    {
                        detail.InvoiceId = invoice.InvoiceId;
                        detail.InvoicePODetailWHQuantity = detail.InvoicePODetailJCQuantity;
                        detail.InvoicePODetailYHQuantity = 0;
                        invoicePODetailAccessor.Insert(detail);
                    }
                    break;

                case Helper.InvoiceStatus.Normal:
                    accessor.Delete(invoiceOriginal.InvoiceId);
                    invoice.InsertTime = invoiceOriginal.InsertTime;
                    invoice.UpdateTime = DateTime.Now;
                    _Insert(invoice);
                    break;

                case Helper.InvoiceStatus.Null:
                    throw new InvalidOperationException();
                }
                break;

            case Helper.InvoiceStatus.Normal:
                switch (invoiceStatus)
                {
                case Helper.InvoiceStatus.Draft:
                    throw new InvalidOperationException();

                case Helper.InvoiceStatus.Normal:
                    #region

                    invoiceOriginal.InvoiceStatus = (int)Helper.InvoiceStatus.Null;

                    _TurnNull(invoiceOriginal);

                    invoicePODetailAccessor.Delete(invoice);

                    foreach (Model.InvoicePODetail detail in invoice.Details)
                    {
                        Model.Product p = detail.Product;
                        p.StocksQuantity -= detail.InvoicePODetailJCQuantity;
                        productAccessor.Update(p);

                        detail.InvoicePODetailWHQuantity = detail.InvoicePODetailJCQuantity - detail.InvoicePODetailYHQuantity;
                        invoicePODetailAccessor.Insert(detail);

                        Model.Stock stock = stockAccessor.GetStockByProductIdAndDepotPositionId(p.ProductId, detail.DepotPositionId);
                        if (stock == null)
                        {
                            stock                 = new Book.Model.Stock();
                            stock.StockId         = Guid.NewGuid().ToString();
                            stock.ProductId       = p.ProductId;
                            stock.DepotPositionId = detail.DepotPositionId;
                            stock.StockQuantity1  = detail.InvoicePODetailYHQuantity;
                            stock.StockCurrentJC  = stock.StockCurrentJC == null ? detail.InvoicePODetailJCQuantity : stock.StockCurrentJC - detail.InvoicePODetailJCQuantity;
                            stock.DepotId         = invoice.PoDepotId;
                            stock.ProduceUnit     = p.ProduceUnit.CnName;
                            stockAccessor.Insert(stock);
                        }
                        else
                        {
                            stockAccessor.IncrementJC(new DepotPositionManager().Get(detail.DepotPositionId), p, detail.InvoicePODetailJCQuantity.Value);
                        }
                    }

                    #endregion
                    break;

                case Helper.InvoiceStatus.Null:
                    foreach (Model.InvoicePODetail detail in invoice.Details)
                    {
                        Model.Product p = detail.Product;
                        p.StocksQuantity += detail.InvoicePODetailJCQuantity;
                        productAccessor.Update(p);

                        stockAccessor.DecrementJC(new DepotPositionManager().Get(detail.DepotPositionId), p, detail.InvoicePODetailJCQuantity.Value);

                        detail.InvoicePODetailWHQuantity += detail.InvoicePODetailJCQuantity;
                        detail.InvoicePODetailJCQuantity -= detail.InvoicePODetailJCQuantity;
                        invoicePODetailAccessor.Update(detail);
                    }
                    break;
                }
                break;

            case Helper.InvoiceStatus.Null:
                throw new InvalidOperationException();
            }
        }
Beispiel #13
0
        private void _Insert(Book.Model.InvoiceHC invoice)
        {
            //经手人
            if (invoice.Employee0 != null)
            {
                invoice.Employee0Id = invoice.Employee0.EmployeeId;
            }
            //录单人
            if (invoice.Employee1 != null)
            {
                invoice.Employee1Id = invoice.Employee1.EmployeeId;
            }
            if ((Helper.InvoiceStatus)invoice.InvoiceStatus.Value == Helper.InvoiceStatus.Normal)
            {
                //过账人
                if (invoice.Employee2 != null)
                {
                    invoice.Employee2Id = invoice.Employee2.EmployeeId;
                }
                //过账时间
                invoice.InvoiceGZTime = DateTime.Now;
            }
            //插入表单
            accessor.Insert(invoice);

            //插入明细
            foreach (Model.InvoiceHCDetail detail in invoice.Details)
            {
                Model.InvoiceJRDetail odetail = invoiceJRDetailAccessor.Get(detail.InvoiceJRDetailId);

                Model.InvoiceHCDetail hcdetail = new Book.Model.InvoiceHCDetail();
                if (detail.InvoiceHCDetailQuantity > 0)
                {
                    if (detail.InvoiceHCDetailQuantity <= odetail.InvoiceWeiHuaiChuQuantity)
                    {
                        hcdetail.InvoiceId               = invoice.InvoiceId;
                        hcdetail.InvoiceHCDetailId       = Guid.NewGuid().ToString();
                        hcdetail.InvoiceHCDetailNote     = detail.InvoiceHCDetailNote;
                        hcdetail.InvoiceHCDetailQuantity = detail.InvoiceHCDetailQuantity;
                        hcdetail.InvoiceJRDetailId       = detail.InvoiceJRDetailId;
                        hcdetail.InvoiceProductUnit      = detail.InvoiceProductUnit;
                        hcdetail.DepotPositionId         = detail.DepotPositionId;
                        hcdetail.ProductId               = detail.ProductId;

                        invoiceHCDetailAccessor.Insert(hcdetail);
                        Model.Product p = productAccessor.Get(detail.ProductId);
                        //if (p.ProductImage == null || p.ProductImage.Length == 0)
                        //    p.ProductImage = new byte[] { };
                        //if (p.ProductImage1 == null || p.ProductImage1.Length == 0)
                        //    p.ProductImage1 = new byte[] { };
                        //if (p.ProductImage2 == null || p.ProductImage2.Length == 0)
                        //    p.ProductImage2 = new byte[] { };
                        //if (p.ProductImage3 == null || p.ProductImage3.Length == 0)
                        //    p.ProductImage3 = new byte[] { };
                        p.StocksQuantity -= detail.InvoiceHCDetailQuantity;
                        productAccessor.Update(p);
                        odetail.InvoiceWeiHuaiChuQuantity -= detail.InvoiceHCDetailQuantity;
                        odetail.InvoiceYiHuaiChuQuantity  += detail.InvoiceHCDetailQuantity;

                        invoiceJRDetailAccessor.Update(odetail);

                        Model.Stock stock = stockAccessor.GetStockByProductIdAndDepotPositionId(p.ProductId, detail.DepotPositionId);
                        if (stock == null)
                        {
                            stock                 = new Book.Model.Stock();
                            stock.StockId         = Guid.NewGuid().ToString();
                            stock.ProductId       = p.ProductId;
                            stock.DepotPositionId = detail.DepotPositionId;
                            stock.StockQuantity1  = detail.InvoiceHCDetailQuantity;
                            stock.StockCurrentJC  = stock.StockCurrentJC == null ? detail.InvoiceHCDetailQuantity : stock.StockCurrentJC + detail.InvoiceHCDetailQuantity;
                            stock.DepotId         = invoice.DepotId;
                            stock.ProduceUnit     = p.ProduceUnit.CnName;
                            stockAccessor.Insert(stock);
                        }
                        else
                        {
                            stockAccessor.IncrementJC(new BL.DepotPositionManager().Get(detail.DepotPositionId), p, detail.InvoiceHCDetailQuantity.Value);
                        }
                    }
                    else
                    {
                        throw new Helper.InvalidValueException("HaiRuTaiDuo");
                    }
                }
                else
                {
                    throw new Helper.InvalidValueException("Details");
                }
            }
        }