public ActionResult SaveForm(string keyValue, InbillEntity entity, string strChildEntitys) { var childEntitys = strChildEntitys.ToList <InbillItemEntity>(); inbillbll.SaveForm(keyValue, entity, childEntitys); return(Success("操作成功。")); }
/// <summary> /// 保存表单(新增、修改) /// </summary> /// <param name="keyValue">主键值</param> /// <param name="entity">实体对象</param> /// <returns></returns> public void SaveForm(string keyValue, InbillEntity entity, List <InbillItemEntity> entryList) { try { if (string.IsNullOrEmpty(keyValue)) { InbillEntity old = this.GetEntity(entity.finbillid); if (old != null) { throw new Exception("编号需要唯一"); } } service.SaveForm(keyValue, entity, entryList); } catch (Exception) { throw; } }
/// <summary> /// 保存表单(新增、修改) /// </summary> /// <param name="keyValue">主键值</param> /// <param name="entity">实体对象</param> /// <returns></returns> public void SaveForm(string keyValue, InbillEntity entity, List <InbillItemEntity> entryList) { IRepository db = this.BaseRepository().BeginTrans(); try { if (!string.IsNullOrEmpty(keyValue)) { //主表 db.Update(entity); // 查询明细 InbillItemService dal = new InbillItemService(); IEnumerable <InbillItemEntity> list = dal.GetListByfinbillid(keyValue); if (list != null && list.Count() > 0) { // 减历史库存 foreach (InbillItemEntity item in list) { var strSqls = RemoveGoodsRepertorySql(item); db.ExecuteBySql(strSqls.ToString()); } // 删明细 string deletesql = " delete tb_wh_inbill_item where finbillid='" + keyValue + "' "; db.ExecuteBySql(deletesql); } int i = 0; foreach (InbillItemEntity item in entryList) { // 加明细 item.Create(); item.finbillid = entity.finbillid; item.fitemid = entity.finbillid + "-" + Utils.SupplementZero((i + 1).ToString(), 3); //生成领用单物品信息编号 db.Insert(item); #region 编辑期间如果有出库动作的,要计算进来,否则会导致库存数量不对 Author:Jerry.Li Time:2017/10/25 17:31 InbillItemEntity inentity = new InbillItemEntity(); inentity.fnumber = item.fnumber; inentity.fmoney = item.fmoney; inentity.fgoodsid = item.fgoodsid; string safeSql = string.Format(@" SELECT * FROM tb_wh_outbill_item i LEFT JOIN dbo.tb_wh_outbill o ON o.foutbillid = i.foutbillid WHERE i.fgoodsid = '{0}' AND o.finputdate >= '{1}'", item.fgoodsid, entity.finputdate); IEnumerable <OutbillitemEntity> olist = new RepositoryFactory().BaseRepository().FindList <OutbillitemEntity>(safeSql); if (olist != null) { foreach (OutbillitemEntity obill in olist.ToList()) { inentity.fnumber = Convert.ToInt32(inentity.fnumber) - Convert.ToInt32(obill.fnumber); inentity.fmoney = inentity.fmoney - Convert.ToDecimal(obill.fmoney); } } #endregion //加库存 var strSqls = AddGoodsRepertorySql(inentity); db.ExecuteBySql(strSqls.ToString()); i++; } } else { //主表 entity.Create(); entity.finputdate = DateTime.Now; int userid = 0; int.TryParse(OperatorProvider.Provider.Current().OldSystemUserID, out userid); entity.fuserid = userid; db.Insert(entity); //明细 for (int i = 0; i < entryList.Count; i++) { entryList[i].finbillid = entity.finbillid; entryList[i].fitemid = entity.finbillid + "-" + Utils.SupplementZero((i + 1).ToString(), 3); //生成领用单物品信息编号 db.Insert(entryList[i]); //加库存 var strSqls = AddGoodsRepertorySql(entryList[i]); db.ExecuteBySql(strSqls.ToString()); } } db.Commit(); } catch (Exception) { db.Rollback(); throw; } }