private void UpdateAndInsert(Book.Model.ProduceOtherMaterial produceOtherMaterial)
        {
            try
            {
                produceOtherMaterial.InsertTime = produceOtherMaterial.InsertTime == null ? DateTime.Now : produceOtherMaterial.InsertTime;

                produceOtherMaterial.UpdateTime = DateTime.Now;
                BL.V.BeginTransaction();

                //删除旧单据
                Model.ProduceOtherMaterial produceMaterialOld = this.GetDetails(produceOtherMaterial.ProduceOtherMaterialId);
                foreach (Model.ProduceOtherMaterialDetail detail in produceMaterialOld.Details)
                {
                    Model.Product product = productManager.Get(detail.Product.ProductId);
                    product.OtherMaterialDistributioned = (product.OtherMaterialDistributioned == null ? 0 : product.OtherMaterialDistributioned) - (detail.OtherMaterialQuantity == null ? 0 : detail.OtherMaterialQuantity) + (detail.OtherMaterialALLUserQuantity == null ? 0 : detail.OtherMaterialALLUserQuantity);
                    productManager.update(product);
                }
                this.Delete(produceOtherMaterial.ProduceOtherMaterialId);

                //新增

                produceOtherMaterial.InvoiceStatus = 1;
                accessor.Insert(produceOtherMaterial);

                foreach (Model.ProduceOtherMaterialDetail produceOtherMaterialDetail in produceOtherMaterial.Details)
                {
                    if (produceOtherMaterialDetail.Product == null || string.IsNullOrEmpty(produceOtherMaterialDetail.Product.ProductId))
                    {
                        throw new Exception("貨品不為空");
                    }
                    //if (produceOtherMaterialDetail.DepotPositionId == null)
                    //    throw new Helper.MessageValueException("貨位不能為空!");
                    produceOtherMaterialDetail.ProduceOtherMaterialId = produceOtherMaterial.ProduceOtherMaterialId;


                    Model.Product product = productManager.Get(produceOtherMaterialDetail.ProductId);
                    //已分配
                    produceOtherMaterialDetail.Distributioned = (product.OtherMaterialDistributioned == null ? 0 : product.OtherMaterialDistributioned) + (produceOtherMaterialDetail.OtherMaterialQuantity == null ? 0 : produceOtherMaterialDetail.OtherMaterialQuantity);

                    ProduceOtherMaterialDetailAccessor.Insert(produceOtherMaterialDetail);
                    product.OtherMaterialDistributioned = (product.OtherMaterialDistributioned == null ? 0 : product.OtherMaterialDistributioned) + (produceOtherMaterialDetail.OtherMaterialQuantity == null ? 0 : produceOtherMaterialDetail.OtherMaterialQuantity);
                    productManager.update(product);
                }

                BL.V.CommitTransaction();
            }
            catch
            {
                BL.V.RollbackTransaction();
                throw;
            }
        }
        private void UpdateAndInsert(Book.Model.ProduceOtherMaterial produceOtherMaterial)
        {
            try
            {
                produceOtherMaterial.InsertTime = produceOtherMaterial.InsertTime == null ? DateTime.Now : produceOtherMaterial.InsertTime;

                produceOtherMaterial.UpdateTime = DateTime.Now;
                BL.V.BeginTransaction();

                //删除旧单据
                Model.ProduceOtherMaterial produceMaterialOld = this.GetDetails(produceOtherMaterial.ProduceOtherMaterialId);
                foreach (Model.ProduceOtherMaterialDetail detail in produceMaterialOld.Details)
                {
                    Model.Product product = productManager.Get(detail.Product.ProductId);
                    product.OtherMaterialDistributioned = (product.OtherMaterialDistributioned == null ? 0 : product.OtherMaterialDistributioned) - (detail.OtherMaterialQuantity == null ? 0 : detail.OtherMaterialQuantity) + (detail.OtherMaterialALLUserQuantity == null ? 0 : detail.OtherMaterialALLUserQuantity);
                    productManager.update(product);
                }
                this.Delete(produceOtherMaterial.ProduceOtherMaterialId);

                //新增
                string invoiceKind   = this.GetInvoiceKind().ToLower();
                string sequencekey_y = string.Format("{0}-y-{1}", invoiceKind, produceOtherMaterial.InsertTime.Value.Year);
                string sequencekey_m = string.Format("{0}-m-{1}-{2}", invoiceKind, produceOtherMaterial.InsertTime.Value.Year, produceOtherMaterial.InsertTime.Value.Month);
                string sequencekey_d = string.Format("{0}-d-{1}", invoiceKind, produceOtherMaterial.InsertTime.Value.ToString("yyyy-MM-dd"));
                string sequencekey   = string.Format(invoiceKind);

                SequenceManager.Increment(sequencekey_y);
                SequenceManager.Increment(sequencekey_m);
                SequenceManager.Increment(sequencekey_d);
                SequenceManager.Increment(sequencekey);
                produceOtherMaterial.InvoiceStatus = 1;
                accessor.Insert(produceOtherMaterial);

                foreach (Model.ProduceOtherMaterialDetail produceOtherMaterialDetail in produceOtherMaterial.Details)
                {
                    if (produceOtherMaterialDetail.Product == null || string.IsNullOrEmpty(produceOtherMaterialDetail.Product.ProductId))
                    {
                        throw new Exception("貨品不為空");
                    }
                    //if (produceOtherMaterialDetail.DepotPositionId == null)
                    //    throw new Helper.MessageValueException("貨位不能為空!");
                    produceOtherMaterialDetail.ProduceOtherMaterialId = produceOtherMaterial.ProduceOtherMaterialId;


                    Model.Product product = productManager.Get(produceOtherMaterialDetail.ProductId);
                    //已分配
                    produceOtherMaterialDetail.Distributioned = (product.OtherMaterialDistributioned == null ? 0 : product.OtherMaterialDistributioned) + (produceOtherMaterialDetail.OtherMaterialQuantity == null ? 0 : produceOtherMaterialDetail.OtherMaterialQuantity);

                    ProduceOtherMaterialDetailAccessor.Insert(produceOtherMaterialDetail);
                    product.OtherMaterialDistributioned = (product.OtherMaterialDistributioned == null ? 0 : product.OtherMaterialDistributioned) + (produceOtherMaterialDetail.OtherMaterialQuantity == null ? 0 : produceOtherMaterialDetail.OtherMaterialQuantity);
                    productManager.update(product);
                }

                BL.V.CommitTransaction();
            }
            catch
            {
                BL.V.RollbackTransaction();
                throw;
            }
        }