/// <summary> /// Update a MPSheader. /// </summary> public void Update(Model.MPSheader mPSheader) { // // todo: add other logic here. // Validate(mPSheader); if (this.ExistsExcept(mPSheader)) { throw new Helper.InvalidValueException(Model.MPSheader.PRO_Id); } // mPSheader.UpdateTime = DateTime.Now; // accessor.Update(mPSheader); try { BL.V.BeginTransaction(); //this.Delete(mPSheader); //mPSheader.UpdateTime = DateTime.Now; //this.Insert(mPSheader); //以前这种修改是有BUG的,如果用“-”的方式删除一些项目后保存对应的已排单数量不会变,2016年4月7日16:33:55改新版。 mPSheader.InsertTime = DateTime.Now; mPSheader.UpdateTime = DateTime.Now; accessor.Update(mPSheader); //删除旧数据 IList <Model.MPSdetails> list = MPSdetailsAccessor.Select(mPSheader); foreach (var item in list) { Model.InvoiceXODetail xodetail = this.InvoiceXODetailAccessor.Get(item.InvoiceXODetailId); if (xodetail != null) { if (xodetail.InvoiceMPSQuantity == null) { xodetail.InvoiceMPSQuantity = 0; } xodetail.InvoiceMPSQuantity = Convert.ToDouble(xodetail.InvoiceMPSQuantity) - Convert.ToDouble(item.MPSdetailssum); xodetail.InvoiceMPSQuantity = xodetail.InvoiceMPSQuantity < 0 ? 0 : xodetail.InvoiceMPSQuantity; if (xodetail.InvoiceMPSQuantity >= xodetail.InvoiceXODetailQuantity) { xodetail.DetailMPSState = 2; } else { if (xodetail.InvoiceMPSQuantity > 0) { xodetail.DetailMPSState = 1; } else { xodetail.DetailMPSState = 0; } } //invoiceXODetail.InvoiceMPSQuantity = Convert.ToDouble(MPSdetailsAccessor.GetByInvoiceXODetailId(mPSdetails.InvoiceXODetailId)); invoiceManager.Update(xodetail); UpdateInvoiceXOFlag(xodetail.Invoice); } MPSdetailsAccessor.Delete(item.MPSdetailsId); } //插入新数据 foreach (Model.MPSdetails mPSdetails in mPSheader.Details) { if (mPSdetails.Product == null || string.IsNullOrEmpty(mPSdetails.Product.ProductId)) { continue; } mPSdetails.MPSheaderId = mPSheader.MPSheaderId; mPSdetails.MPSEndState = false; invoiceXODetail = invoiceManager.Get(mPSdetails.InvoiceXODetailId); //double ss = MPSdetailsAccessor.GetByInvoiceXODetailId(mPSdetails.InvoiceXODetailId); MPSdetailsAccessor.Insert(mPSdetails); if (invoiceXODetail != null) { if (invoiceXODetail.InvoiceMPSQuantity == null) { invoiceXODetail.InvoiceMPSQuantity = 0; } invoiceXODetail.InvoiceMPSQuantity += Convert.ToDouble(mPSdetails.MPSdetailssum); if (invoiceXODetail.InvoiceMPSQuantity >= invoiceXODetail.InvoiceXODetailQuantity) { invoiceXODetail.DetailMPSState = 2; } else { if (invoiceXODetail.InvoiceMPSQuantity > 0) { invoiceXODetail.DetailMPSState = 1; } else { invoiceXODetail.DetailMPSState = 0; } } //invoiceXODetail.InvoiceMPSQuantity = Convert.ToDouble(MPSdetailsAccessor.GetByInvoiceXODetailId(mPSdetails.InvoiceXODetailId)); invoiceManager.Update(invoiceXODetail); UpdateInvoiceXOFlag(invoiceXODetail.Invoice); } this.UpdateSql("update product set MpsStockQuantity=" + mPSdetails.MPSdetailssum + " where productid='" + mPSdetails.ProductId + "'"); } BL.V.CommitTransaction(); } catch { BL.V.RollbackTransaction(); throw; } }
/// <summary> /// Insert a MPSheader. /// </summary> public void Insert(Model.MPSheader mPSheader) { // // todo:add other logic here // Validate(mPSheader); try { BL.V.BeginTransaction(); mPSheader.InsertTime = DateTime.Now; TiGuiExists(mPSheader); mPSheader.UpdateTime = DateTime.Now; string invoiceKind = this.GetInvoiceKind().ToLower(); string sequencekey_y = string.Format("{0}-y-{1}", invoiceKind, mPSheader.InsertTime.Value.Year); string sequencekey_m = string.Format("{0}-m-{1}-{2}", invoiceKind, mPSheader.InsertTime.Value.Year, mPSheader.InsertTime.Value.Month); string sequencekey_d = string.Format("{0}-d-{1}", invoiceKind, mPSheader.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); if (mPSheader.Details != null && mPSheader.Details.Count > 0) { mPSheader.InvoiceXOId = mPSheader.Details[0].InvoiceXOId; } accessor.Insert(mPSheader); foreach (Model.MPSdetails mPSdetails in mPSheader.Details) { if (mPSdetails.Product == null || string.IsNullOrEmpty(mPSdetails.Product.ProductId)) { continue; } mPSdetails.MPSheaderId = mPSheader.MPSheaderId; mPSdetails.MPSEndState = false; invoiceXODetail = invoiceManager.Get(mPSdetails.InvoiceXODetailId); double ss = MPSdetailsAccessor.GetByInvoiceXODetailId(mPSdetails.InvoiceXODetailId); MPSdetailsAccessor.Insert(mPSdetails); if (invoiceXODetail != null) { if (invoiceXODetail.InvoiceMPSQuantity == null) { invoiceXODetail.InvoiceMPSQuantity = 0; } invoiceXODetail.InvoiceMPSQuantity += mPSdetails.MPSdetailssum; if (invoiceXODetail.InvoiceMPSQuantity >= invoiceXODetail.InvoiceXODetailQuantity) { invoiceXODetail.DetailMPSState = 2; } else { if (invoiceXODetail.InvoiceMPSQuantity > 0) { invoiceXODetail.DetailMPSState = 1; } else { invoiceXODetail.DetailMPSState = 0; } } //invoiceXODetail.InvoiceMPSQuantity = Convert.ToDouble(MPSdetailsAccessor.GetByInvoiceXODetailId(mPSdetails.InvoiceXODetailId)); invoiceManager.Update(invoiceXODetail); UpdateInvoiceXOFlag(invoiceXODetail.Invoice); } // Model.Product product = productManager.Get(mPSdetails.ProductId); //if (product.MpsStockQuantity == null || product.MpsStockQuantity == 0) //{ // product.MpsStockQuantity = mPSdetails.Product.StocksQuantity; // ProductAccessor.Update(product); this.UpdateSql("update product set MpsStockQuantity=" + mPSdetails.MPSdetailssum + " where productid='" + mPSdetails.ProductId + "'"); // } } BL.V.CommitTransaction(); } catch { BL.V.RollbackTransaction(); throw; } }