private void btnSave_Click(object sender, EventArgs e) { if (this.dtsWillBeStore.Tables[0].Rows.Count <= 0) { return; } if (this.txtPayOffName.Text.Trim() == "") { CommUI.MsgOK("工资发放名称不能为空!"); this.txtPayOffName.Focus(); return; } PayOffLogic oExec = new PayOffLogic(); if (oExec.IsExistPayName(this.txtPayOffName.Text.Trim())) { CommUI.AlertError("工资发放名称己经存在,请修改!"); this.txtPayOffName.Focus(); return; } PayOffDTS dtsPayOff = new PayOffDTS(); foreach (DataRow oRow in this.dtsWillBeStore.Tables[0].Rows) { PayOffDTS.payOffGatherRow drPayOffGather = dtsPayOff.payOffGather.NewpayOffGatherRow(); drPayOffGather.piId = long.Parse(oRow["员工标识"].ToString()); drPayOffGather.realIncome = decimal.Parse(oRow["实领工资"].ToString()); drPayOffGather.month = this.datePayOff.Value; drPayOffGather.inputDate = DateTime.Now; drPayOffGather.cHumanName = oRow["员工姓名"].ToString(); drPayOffGather.inputMan = this.UserName; drPayOffGather.name = this.txtPayOffName.Text.Trim(); dtsPayOff.payOffGather.AddpayOffGatherRow(drPayOffGather); foreach (DataColumn oColumn in this.dtsWillBeStore.Tables[0].Columns) { // 判断每一列是否为薪水项 PayRollItem oPayRollItem = this.strHeader.Where(arg => arg.Name == oColumn.ColumnName).FirstOrDefault(); if (oPayRollItem != null) { PayOffDTS.payOffDetailRow drPayOffDetail = dtsPayOff.payOffDetail.NewpayOffDetailRow(); drPayOffDetail.paid = oPayRollItem.ID; drPayOffDetail.piId = drPayOffGather.piId; drPayOffDetail.money = oRow[oColumn].ToString() == "" ? 0m : decimal.Parse(oRow[oColumn].ToString()); drPayOffDetail.month = drPayOffGather.month.Month; drPayOffDetail.inputMan = this.UserName; dtsPayOff.payOffDetail.AddpayOffDetailRow(drPayOffDetail); } } } oExec.AddPayOff(dtsPayOff); CommUI.MsgOK(); this.dtsWillBeStore.Tables[0].Rows.Clear(); }
/* * 方法名称:AddPayOff * 方法功能描述:发放工资 * * 创建人:杨林 * 创建时间:2009-03-12 * * 修改人: * 修改时间: * 修改内容: * */ /// <summary> /// 发放工资 /// </summary> /// <param name="args">工资数据集</param> /// <param name="strMsg">返回的错误信息</param> /// <returns>结果为真代表成功,否则失败,错误信息在strMsg中</returns> public void AddPayOff(PayOffDTS args) { try { new PayOffDB().InsertPayOff(args); } catch (System.Exception e) { new DasherStation.common.Logging().LogWrite(new DasherStation.common.LogEntry() { ID = 0, LogEx = e, LogMessage = e.Message + ":" + e.StackTrace }); throw; } }
/* * 方法名称:InsertPayOff * 方法功能描述:插入工资 * * 创建人:杨林 * 创建时间:2009-03-12 * * 修改人: * 修改时间: * 修改内容: * */ /// <summary> /// 插入工资 /// </summary> /// <param name="args">工资强类型</param> /// <returns></returns> public void InsertPayOff(PayOffDTS args) { if (args.payOffGather.Count <= 0) { return; } using (System.Transactions.TransactionScope oScope = new System.Transactions.TransactionScope(System.Transactions.TransactionScopeOption.Required, TimeSpan.MaxValue)) { using (System.Data.SqlClient.SqlConnection sqlConn = new System.Data.SqlClient.SqlConnection(new DasherStation.common.SqlHelper().SqlConn)) { sqlConn.Open(); System.Data.SqlClient.SqlCommand cmdExec = new System.Data.SqlClient.SqlCommand(); cmdExec.Connection = sqlConn; foreach (PayOffDTS.payOffGatherRow oRow in args.payOffGather.Rows) { cmdExec.Parameters.Clear(); cmdExec.CommandText = @" INSERT INTO [dbo].[payOffGather] ([piId], [realIncome], [date], [inputDate], [inputMan], name) VALUES (@piId, @realIncome, @month, getdate(), @inputMan, @name);select SCOPE_IDENTITY()"; cmdExec.Parameters.Add(new System.Data.SqlClient.SqlParameter("@piId", oRow.IspiIdNull() ? (object)System.DBNull.Value : oRow.piId)); cmdExec.Parameters.Add(new System.Data.SqlClient.SqlParameter("@realIncome", oRow.IsrealIncomeNull() ? (object)System.DBNull.Value : oRow.realIncome)); cmdExec.Parameters.Add(new System.Data.SqlClient.SqlParameter("@month", oRow.IsmonthNull() ? (object)System.DBNull.Value : oRow.month)); cmdExec.Parameters.Add(new System.Data.SqlClient.SqlParameter("@inputMan", oRow.IsinputManNull() ? (object)System.DBNull.Value : oRow.inputMan)); cmdExec.Parameters.Add(new System.Data.SqlClient.SqlParameter("@name", oRow.name)); // 插入人员实际所得; string strPogId = cmdExec.ExecuteScalar().ToString(); // 遍历薪水项目将该项及值插入到数据库payOffDetail(薪水发放明细表)中. foreach (PayOffDTS.payOffDetailRow rollRow in args.payOffDetail.Where(arg => arg.piId == oRow.piId)) { rollRow.pogId = int.Parse(strPogId); cmdExec.Parameters.Clear(); cmdExec.CommandText = @" INSERT INTO [dbo].[payOffDetail] ([paid], [piId], [money], [month], [inputDate], [inputMan],pogid) VALUES (@paid, @piId, @money, @month, getDate(), @inputMan, @pogid)"; cmdExec.Parameters.Add(new System.Data.SqlClient.SqlParameter("@paid", rollRow.IspaidNull() ? (object)System.DBNull.Value : rollRow.paid)); cmdExec.Parameters.Add(new System.Data.SqlClient.SqlParameter("@piId", rollRow.IspiIdNull() ? (object)System.DBNull.Value : rollRow.piId)); cmdExec.Parameters.Add(new System.Data.SqlClient.SqlParameter("@money", rollRow.IsmoneyNull() ? (object)System.DBNull.Value : rollRow.money)); cmdExec.Parameters.Add(new System.Data.SqlClient.SqlParameter("@month", rollRow.IsmonthNull() ?(object)System.DBNull.Value : rollRow.month)); cmdExec.Parameters.Add(new System.Data.SqlClient.SqlParameter("@inputMan", rollRow.IsinputManNull() ? (object)System.DBNull.Value : rollRow.inputMan)); cmdExec.Parameters.Add(new System.Data.SqlClient.SqlParameter("@pogid", rollRow.IspogIdNull() ? (object)System.DBNull.Value : rollRow.pogId)); cmdExec.ExecuteNonQuery(); } } } oScope.Complete(); } }