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; } }