/// <summary> /// 保存(传入事务处理) /// </summary> /// <param name="p_Entity"></param> /// <param name="p_BE"></param> /// <param name="sqlTrans"></param> public void RSave(RecPay p_Entity, BaseEntity[] p_BE, IDBTransAccess sqlTrans) { try { string sql = "DELETE FROM Finance_RecPayHXDts WHERE MainID=" + p_Entity.ID.ToString(); sql += " AND ID NOT IN" + string.Format("({0})", GetIDExist(p_BE)); sqlTrans.ExecuteNonQuery(sql);//删除原单据里应该删除的明细数据,即数据库里有但是UI里已经删除的数据 for (int i = 0; i < p_BE.Length; i++) { RecPayHXDts entitydts = (RecPayHXDts)p_BE[i]; if (entitydts.ID != 0)//ID不为0说明数据库中已经存在 { entitydts.MainID = p_Entity.ID; this.RUpdate(entitydts, sqlTrans); } else { entitydts.MainID = p_Entity.ID; this.RAdd(entitydts, sqlTrans); } } } catch (BaseException) { throw; } catch (Exception E) { throw new BaseException(E.Message); } }
/// <summary> /// 删除 /// </summary> /// <param name="p_Entity">实体类</param> /// <returns>操作影响的记录行数</returns> public override int Delete(BaseEntity p_Entity) { try { RecPayHXDts MasterEntity = (RecPayHXDts)p_Entity; if (MasterEntity.ID == 0) { return(0); } //删除主表数据 string Sql = ""; Sql = "DELETE FROM Finance_RecPayHXDts WHERE " + "ID=" + SysString.ToDBString(MasterEntity.ID); //执行 int AffectedRows = 0; if (!this.sqlTransFlag) { AffectedRows = this.ExecuteNonQuery(Sql); } else { AffectedRows = sqlTrans.ExecuteNonQuery(Sql); } return(AffectedRows); } catch (BaseException E) { throw new BaseException(E.Message, E); } catch (Exception E) { throw new BaseException(FrameWorkMessage.GetAlertMessage((int)Message.CommonDBDelete), E); } }
/// <summary> /// 核销处理 /// </summary> public void RHX(RecPay entity, int p_InvoiceID, decimal p_HXAmount, IDBTransAccess sqlTrans) { try { string sql = string.Empty; //First 处理收付款主表数据 RecPay entitypay = new RecPay(sqlTrans);//处理收付款主表数据 entitypay.ID = entity.ID; entitypay.SelectByID(); if (entitypay.HXAmount + p_HXAmount > entitypay.ExAmount) { throw new Exception("不能操作,核销金额超过了付款未核金额"); } if (entitypay.HXAmount + p_HXAmount == entitypay.ExAmount) { entitypay.HXFlag = (int)YesOrNo.Yes; } entitypay.HXAmount += p_HXAmount; entitypay.NoHXAmount = entitypay.ExAmount - entitypay.HXAmount; this.RUpdate(entitypay, sqlTrans); //Second InvoiceOperationRule invoicerule = new InvoiceOperationRule(); //处理发票主表数据 InvoiceOperation invoiceentity = new InvoiceOperation(sqlTrans); //发票实体 invoiceentity.ID = p_InvoiceID; invoiceentity.SelectByID(); if (invoiceentity.PayAmount + p_HXAmount > invoiceentity.TotalAmount) { throw new Exception("不能操作,核销金额超过了发票未核金额"); } invoiceentity.PayAmount += p_HXAmount; invoicerule.RUpdate(invoiceentity, sqlTrans); //Third 增加付款核销明细数据 RecPayHXDtsRule dtsRule = new RecPayHXDtsRule(); RecPayHXDts dtsentity = new RecPayHXDts(sqlTrans); dtsentity.MainID = entity.ID; dtsentity.HXOPID = entity.MakeOPID; dtsentity.HXOPName = entity.MakeOPName; dtsentity.HXDate = DateTime.Now; dtsentity.HXAmount = p_HXAmount; dtsentity.InvoiceNo = invoiceentity.InvoiceNO; dtsentity.InvoiceOperationID = p_InvoiceID; dtsRule.RAdd(dtsentity, sqlTrans);//增加明细实体 } catch (BaseException) { throw; } catch (Exception E) { throw new BaseException(E.Message); } }
/// <summary> /// 获得数据库里没有被删除的ID(即数据库里有而且UI里也没有删除的数据) /// </summary> /// <param name="p_BE"></param> /// <returns></returns> private string GetIDExist(BaseEntity[] p_BE) { string outstr = "0"; for (int i = 0; i < p_BE.Length; i++) { RecPayHXDts entitydts = (RecPayHXDts)p_BE[i]; if (entitydts.ID != 0) { outstr += "," + entitydts.ID; } } return(outstr); }
/// <summary> /// 撤销核销处理 /// </summary> public void RHXCancel(RecPay entity, int p_DtsID, IDBTransAccess sqlTrans) { try { string sql = string.Empty; //First 处理收付款主表数据 RecPay entitypay = new RecPay(sqlTrans);//处理收付款主表数据 entitypay.ID = entity.ID; entitypay.SelectByID(); //Second 删除付款核销明细数据 RecPayHXDtsRule dtsRule = new RecPayHXDtsRule(); RecPayHXDts dtsentity = new RecPayHXDts(sqlTrans); dtsentity.ID = p_DtsID; dtsentity.SelectByID(); dtsRule.RDelete(dtsentity, sqlTrans);//删除明细实体 //First 处理收付款主表数据 entitypay.HXFlag = (int)YesOrNo.No; entitypay.HXAmount -= dtsentity.HXAmount; entitypay.NoHXAmount = entitypay.ExAmount - entitypay.HXAmount; this.RUpdate(entitypay, sqlTrans); //Third 处理发票主表数据 InvoiceOperationRule invoicerule = new InvoiceOperationRule(); //处理发票主表数据 InvoiceOperation invoiceentity = new InvoiceOperation(sqlTrans); //发票实体 invoiceentity.ID = dtsentity.InvoiceOperationID; invoiceentity.SelectByID(); invoiceentity.PayAmount -= dtsentity.HXAmount; if (invoiceentity.PayAmount < 0) { throw new BaseException("撤销后数据有误,请检查,发票的核销金额小于0"); } invoicerule.RUpdate(invoiceentity, sqlTrans); } catch (BaseException) { throw; } catch (Exception E) { throw new BaseException(E.Message); } }
/// <summary> /// 删除 /// </summary> /// <param name="p_BE">要删除的实体</param> /// <param name="sqlTrans">事务类</param> public void RDelete(BaseEntity p_BE, IDBTransAccess sqlTrans) { try { this.CheckCorrect(p_BE); RecPayHXDts entity = (RecPayHXDts)p_BE; RecPayHXDtsCtl control = new RecPayHXDtsCtl(sqlTrans); control.Delete(entity); } catch (BaseException) { throw; } catch (Exception E) { throw new BaseException(E.Message); } }
/// <summary> /// 新增(传入事务处理) /// </summary> /// <param name="p_BE">要新增的实体</param> /// <param name="sqlTrans">事务类</param> public void RAdd(BaseEntity p_BE, IDBTransAccess sqlTrans) { try { this.CheckCorrect(p_BE); RecPayHXDts entity = (RecPayHXDts)p_BE; RecPayHXDtsCtl control = new RecPayHXDtsCtl(sqlTrans); entity.ID = (int)EntityIDTable.GetID((long)SysEntity.Finance_RecPayHXDts, sqlTrans); string sql = string.Empty; entity.Seq = SysConvert.ToInt32(sqlTrans.Fill("SELECT ISNULL(MAX(Seq),0)+1 AS MSeq FROM Finance_RecPayHXDts WHERE MainID=" + entity.MainID).Rows[0][0]); //取最大SEQ值 control.AddNew(entity); } catch (BaseException) { throw; } catch (Exception E) { throw new BaseException(E.Message); } }
/// <summary> /// 新增 /// </summary> /// <param name="p_Entity">实体类</param> /// <returns>操作影响的记录行数</returns> public override int AddNew(BaseEntity p_Entity) { try { RecPayHXDts MasterEntity = (RecPayHXDts)p_Entity; if (MasterEntity.ID == 0) { return(0); } //新增主表数据 StringBuilder MasterField = new StringBuilder(); StringBuilder MasterValue = new StringBuilder(); MasterField.Append("INSERT INTO Finance_RecPayHXDts("); MasterValue.Append(" VALUES("); MasterField.Append("ID" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.ID) + ","); MasterField.Append("MainID" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.MainID) + ","); MasterField.Append("Seq" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.Seq) + ","); MasterField.Append("HXOPID" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.HXOPID) + ","); MasterField.Append("HXOPName" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.HXOPName) + ","); MasterField.Append("InvoiceOperationID" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.InvoiceOperationID) + ","); MasterField.Append("InvoiceNo" + ","); MasterValue.Append(SysString.ToDBString(MasterEntity.InvoiceNo) + ","); MasterField.Append("HXDate" + ","); if (MasterEntity.HXDate != SystemConfiguration.DateTimeDefaultValue) { MasterValue.Append(SysString.ToDBString(MasterEntity.HXDate.ToString("yyyy-MM-dd HH:mm:ss")) + ","); } else { MasterValue.Append("null,"); } MasterField.Append("HXAmount" + ")"); if (MasterEntity.HXAmount != 0) { MasterValue.Append(SysString.ToDBString(MasterEntity.HXAmount) + ")"); } else { MasterValue.Append("null)"); } //执行 int AffectedRows = 0; if (!this.sqlTransFlag) { AffectedRows = this.ExecuteNonQuery(MasterField.Append(MasterValue.ToString()).ToString()); } else { AffectedRows = sqlTrans.ExecuteNonQuery(MasterField.Append(MasterValue.ToString()).ToString()); } return(AffectedRows); } catch (BaseException E) { throw new BaseException(E.Message, E); } catch (Exception E) { throw new BaseException(FrameWorkMessage.GetAlertMessage((int)Message.CommonDBInsert), E); } }
/// <summary> /// 修改 /// </summary> /// <param name="p_Entity">实体类</param> /// <returns>操作影响的记录行数</returns> public override int Update(BaseEntity p_Entity) { try { RecPayHXDts MasterEntity = (RecPayHXDts)p_Entity; if (MasterEntity.ID == 0) { return(0); } //更新主表数据 StringBuilder UpdateBuilder = new StringBuilder(); UpdateBuilder.Append("UPDATE Finance_RecPayHXDts SET "); UpdateBuilder.Append(" ID=" + SysString.ToDBString(MasterEntity.ID) + ","); UpdateBuilder.Append(" MainID=" + SysString.ToDBString(MasterEntity.MainID) + ","); UpdateBuilder.Append(" Seq=" + SysString.ToDBString(MasterEntity.Seq) + ","); UpdateBuilder.Append(" HXOPID=" + SysString.ToDBString(MasterEntity.HXOPID) + ","); UpdateBuilder.Append(" HXOPName=" + SysString.ToDBString(MasterEntity.HXOPName) + ","); UpdateBuilder.Append(" InvoiceOperationID=" + SysString.ToDBString(MasterEntity.InvoiceOperationID) + ","); UpdateBuilder.Append(" InvoiceNo=" + SysString.ToDBString(MasterEntity.InvoiceNo) + ","); if (MasterEntity.HXDate != SystemConfiguration.DateTimeDefaultValue) { UpdateBuilder.Append(" HXDate=" + SysString.ToDBString(MasterEntity.HXDate.ToString("yyyy-MM-dd HH:mm:ss")) + ","); } else { UpdateBuilder.Append(" HXDate=null,"); } if (MasterEntity.HXAmount != 0) { UpdateBuilder.Append(" HXAmount=" + SysString.ToDBString(MasterEntity.HXAmount)); } else { UpdateBuilder.Append(" HXAmount=null"); } UpdateBuilder.Append(" WHERE " + "ID=" + SysString.ToDBString(MasterEntity.ID)); //执行 int AffectedRows = 0; if (!this.sqlTransFlag) { AffectedRows = this.ExecuteNonQuery(UpdateBuilder.ToString()); } else { AffectedRows = sqlTrans.ExecuteNonQuery(UpdateBuilder.ToString()); } return(AffectedRows); } catch (BaseException E) { throw new BaseException(E.Message, E); } catch (Exception E) { throw new BaseException(FrameWorkMessage.GetAlertMessage((int)Message.CommonDBUpdate), E); } }
/// <summary> /// 检查将要操作的数据是否符合业务规则 /// </summary> /// <param name="p_BE"></param> private void CheckCorrect(BaseEntity p_BE) { RecPayHXDts entity = (RecPayHXDts)p_BE; }