/// <summary> /// 更新采购订单 /// </summary> /// <param name="PurchaseOrderM">主表model</param> /// <param name="PurchaseOrderDetailMList">明细表modellist</param> /// <param name="ProductMStorList">用于回写库存的物品modellist</param> /// <param name="ProductMList">用于回写计划或是合同的物品modellist</param> /// <returns>DataTable</returns> public static bool UpdatePurchaseOrder(PurchaseOrderModel PurchaseOrderM, List<PurchaseOrderDetailModel> PurchaseOrderDetailMList , List<ProductModel> ProductMStorList, List<ProductModel> ProductMList, out string Reason, Hashtable htExtAttr) { try { //判断引用源单数量有没有超过,超过了就不让保存 if (!PurchaseOrderDBHelper.CanSave(PurchaseOrderDetailMList, out Reason)) return false; //判断该单据有没有确认 //判断该单据是不是可以确认,包括引用的源单数量是不是合法,有没有到达库存报警上限 ArrayList lstUpdate = new ArrayList(); //更新主表 SqlCommand UpdatePri = PurchaseOrderDBHelper.UpdatePurchaseOrder(PurchaseOrderM); lstUpdate.Add(UpdatePri); #region 拓展属性 SqlCommand cmd = new SqlCommand(); GetExtAttrCmd(PurchaseOrderM, htExtAttr, cmd); if (htExtAttr.Count > 0) lstUpdate.Add(cmd); #endregion string OrderNo = PurchaseOrderM.OrderNo; //删除明细 SqlCommand DeleteDetail = PurchaseOrderDBHelper.DeletePurchaseOrderDetailSingle(OrderNo); lstUpdate.Add(DeleteDetail); //插入明细 foreach (PurchaseOrderDetailModel PurchaseOrderDetailM in PurchaseOrderDetailMList) { SqlCommand AddDetail = PurchaseOrderDBHelper.InsertPurchaseOrderDetail(PurchaseOrderDetailM, OrderNo); lstUpdate.Add(AddDetail); } //获取登陆用户信息 UserInfoUtil userInfo = (UserInfoUtil)SessionUtil.Session["UserInfo"]; //定义返回变量 bool isSucc = false; /* * 定义日志内容变量 * 增删改相关的日志,需要输出操作日志,该类型日志插入到数据库 * 其他的 如出现异常时,需要输出系统日志,该类型日志保存到日志文件 */ //执行插入操作 try { isSucc = SqlHelper.ExecuteTransWithArrayList(lstUpdate); } catch (Exception ex) { //输出日志 WriteSystemLog(userInfo, ex); } //定义变量 string remark; //成功时 if (isSucc) { //设置操作成功标识 remark = ConstUtil.LOG_PROCESS_SUCCESS; } else { //设置操作成功标识 remark = ConstUtil.LOG_PROCESS_FAILED; } LogInfoModel logModel = InitLogInfo(OrderNo); //涉及关键元素 这个需要根据每个页面具体设置,本页面暂时设置为空 logModel.Element = ConstUtil.LOG_PROCESS_UPDATE; //设置操作成功标识 logModel.Remark = remark; //登陆日志 LogDBHelper.InsertLog(logModel); return isSucc; } catch (Exception ex) { throw ex; } }
public static bool InsertPurchaseOrder(PurchaseOrderModel PurchaseOrderM, List<PurchaseOrderDetailModel> PurchaseOrderDetailMList, out int IndexIDentity, out string Reason, Hashtable htExtAttr) { try { IndexIDentity = 0; //判断引用源单数量有没有超过,超过了就不让保存 if (!PurchaseOrderDBHelper.CanSave(PurchaseOrderDetailMList, out Reason)) return false; ArrayList lstAdd = new ArrayList(); //插入主表 SqlCommand AddPri = PurchaseOrderDBHelper.InsertPurchaseOrder(PurchaseOrderM); lstAdd.Add(AddPri); string OrderNo = PurchaseOrderM.OrderNo; //插入明细 foreach (PurchaseOrderDetailModel PurchaseOrderDetailM in PurchaseOrderDetailMList) { SqlCommand AddDetail = PurchaseOrderDBHelper.InsertPurchaseOrderDetail(PurchaseOrderDetailM, OrderNo); lstAdd.Add(AddDetail); } #region 拓展属性 SqlCommand cmd = new SqlCommand(); GetExtAttrCmd(PurchaseOrderM, htExtAttr, cmd); if (htExtAttr.Count > 0) lstAdd.Add(cmd); #endregion //获取登陆用户信息 UserInfoUtil userInfo = (UserInfoUtil)SessionUtil.Session["UserInfo"]; //定义返回变量 bool isSucc = false; /* * 定义日志内容变量 * 增删改相关的日志,需要输出操作日志,该类型日志插入到数据库 * 其他的 如出现异常时,需要输出系统日志,该类型日志保存到日志文件 */ //执行插入操作 try { isSucc = SqlHelper.ExecuteTransWithArrayList(lstAdd); } catch (Exception ex) { //输出日志 WriteSystemLog(userInfo, ex); } //定义变量 string remark; //成功时 if (isSucc) { //设置操作成功标识 remark = ConstUtil.LOG_PROCESS_SUCCESS; IndexIDentity = int.Parse(((SqlCommand)AddPri).Parameters["@IndexID"].Value.ToString()); } else { //设置操作成功标识 remark = ConstUtil.LOG_PROCESS_FAILED; IndexIDentity = 0; } LogInfoModel logModel = InitLogInfo(OrderNo); //涉及关键元素 这个需要根据每个页面具体设置,本页面暂时设置为空 logModel.Element = ConstUtil.LOG_PROCESS_INSERT; //设置操作成功标识 logModel.Remark = remark; //登陆日志 LogDBHelper.InsertLog(logModel); return isSucc; } catch (Exception ex) { throw ex; } }