private void btnSave_Click(object sender, EventArgs e) { if (CheckInput()) { BllTransferReceiptTable TRTable = new BllTransferReceiptTable(); BllTransferReceiptLineTable TRLTable = null; TRTable.SLIP_NUMBER = txtSlipNumber.Text.Trim(); TRTable.DEPARTUAL_WAREHOUSE_CODE = txtDepartualCode.Text.Trim(); TRTable.ARRIVAL_WAREHOUSE_CODE = txtArrivalCode.Text.Trim(); TRTable.SLIP_DATE = txtSlipDate.Value; TRTable.CREATE_USER = _userInfo.CODE; TRTable.LAST_UPDATE_USER = _userInfo.CODE; foreach (DataGridViewRow row in dgvData.Rows) { TRLTable = new BllTransferReceiptLineTable(); TRLTable.SLIP_NUMBER = txtSlipNumber.Text.Trim(); TRLTable.LINE_NUMBER = row.Index + 1; TRLTable.PRODUCT_CODE = row.Cells["PRODUCT_CODE"].Value.ToString(); TRLTable.QUANTITY = CConvert.ToDecimal(row.Cells["TRANSFER_QUANTITY"].Value); TRLTable.UNIT_CODE = row.Cells["UNIT_CODE"].Value.ToString(); if (TRLTable.SLIP_NUMBER != null) { TRTable.AddItem(TRLTable); } } int result = 0; try { result = bTransfer.Add(TRTable); if (result <= 0) { string errorLog = "保存失败,请重试或与管理员联系."; MessageBox.Show(errorLog, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); } else if (dgvData.Rows.Count > 0) { dgvData.Rows.Clear(); initSlipNumber(); txtDepartualCode.Text = ""; txtDepartualName.Text = ""; txtArrivalCode.Text = ""; txtArrivalName.Text = ""; txtSlipDate.Value = DateTime.Now; MessageBox.Show("保存成功", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); } } catch (Exception ex) { MessageBox.Show("保存失败,系统错误,请与管理员联系.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); Logger.Error("仓库调拨失败!", ex); } } }
public int Add(BllTransferReceiptTable TRModel) { return(dal.Add(TRModel)); }
/// <summary> /// 增加一条数据 /// </summary> public int Add(BllTransferReceiptTable TRModel) { int i = 0; int result = 0; while (i < 10) { try { List <CommandInfo> listSql = new List <CommandInfo>(); StringBuilder strSql = null; strSql = new StringBuilder(); strSql.Append("insert into BLL_TRANSFER_RECEIPT("); strSql.Append("SLIP_NUMBER,DEPARTUAL_WAREHOUSE_CODE,ARRIVAL_WAREHOUSE_CODE,SLIP_DATE,COMPANY_CODE,STATUS_FLAG,CREATE_USER,CREATE_DATE_TIME,LAST_UPDATE_USER,LAST_UPDATE_TIME)"); strSql.Append(" values ("); strSql.Append("@SLIP_NUMBER,@DEPARTUAL_WAREHOUSE_CODE,@ARRIVAL_WAREHOUSE_CODE,@SLIP_DATE,@COMPANY_CODE,@STATUS_FLAG,@CREATE_USER,GETDATE(),@LAST_UPDATE_USER,GETDATE())"); SqlParameter[] transferParam = { new SqlParameter("@SLIP_NUMBER", SqlDbType.VarChar, 20), new SqlParameter("@DEPARTUAL_WAREHOUSE_CODE", SqlDbType.VarChar, 20), new SqlParameter("@ARRIVAL_WAREHOUSE_CODE", SqlDbType.VarChar, 20), new SqlParameter("@SLIP_DATE", SqlDbType.DateTime), new SqlParameter("@COMPANY_CODE", SqlDbType.VarChar, 20), new SqlParameter("@STATUS_FLAG", SqlDbType.Int, 4), new SqlParameter("@CREATE_USER", SqlDbType.VarChar, 20), new SqlParameter("@LAST_UPDATE_USER", SqlDbType.VarChar, 20) }; transferParam[0].Value = TRModel.SLIP_NUMBER; transferParam[1].Value = TRModel.DEPARTUAL_WAREHOUSE_CODE; transferParam[2].Value = TRModel.ARRIVAL_WAREHOUSE_CODE; transferParam[3].Value = TRModel.SLIP_DATE; transferParam[4].Value = TRModel.COMPANY_CODE; transferParam[5].Value = CConstant.INIT; transferParam[6].Value = TRModel.CREATE_USER; transferParam[7].Value = TRModel.LAST_UPDATE_USER; listSql.Add(new CommandInfo(strSql.ToString(), transferParam)); foreach (BllTransferReceiptLineTable TRLModel in TRModel.Items) { //明细的保存 strSql = new StringBuilder(); strSql.Append("insert into BLL_TRANSFER_RECEIPT_LINE("); strSql.Append("SLIP_NUMBER,LINE_NUMBER,PRODUCT_CODE,UNIT_CODE,QUANTITY,STATUS_FLAG)"); strSql.Append(" values ("); strSql.Append("@SLIP_NUMBER,@LINE_NUMBER,@PRODUCT_CODE,@UNIT_CODE,@QUANTITY,@STATUS_FLAG)"); SqlParameter[] TRLParam = { new SqlParameter("@SLIP_NUMBER", SqlDbType.VarChar, 20), new SqlParameter("@LINE_NUMBER", SqlDbType.Int, 4), new SqlParameter("@PRODUCT_CODE", SqlDbType.VarChar, 20), new SqlParameter("@UNIT_CODE", SqlDbType.VarChar, 20), new SqlParameter("@QUANTITY", SqlDbType.Decimal, 9), new SqlParameter("@STATUS_FLAG", SqlDbType.Int, 4) }; TRLParam[0].Value = TRLModel.SLIP_NUMBER; TRLParam[1].Value = TRLModel.LINE_NUMBER; TRLParam[2].Value = TRLModel.PRODUCT_CODE; TRLParam[3].Value = TRLModel.UNIT_CODE; TRLParam[4].Value = TRLModel.QUANTITY; TRLParam[5].Value = CConstant.INIT; listSql.Add(new CommandInfo(strSql.ToString(), TRLParam)); //调入仓库里商品库存减少 strSql = new StringBuilder(); strSql.Append("update BASE_STOCK set "); strSql.Append("QUANTITY=QUANTITY - @QUANTITY,"); strSql.Append("LAST_UPDATE_TIME=GETDATE(),"); strSql.Append("LAST_UPDATE_USER=@LAST_UPDATE_USER"); strSql.Append(" where WAREHOUSE_CODE=@WAREHOUSE_CODE and PRODUCT_CODE=@PRODUCT_CODE "); SqlParameter[] departualParam = { new SqlParameter("@WAREHOUSE_CODE", SqlDbType.VarChar, 20), new SqlParameter("@PRODUCT_CODE", SqlDbType.VarChar, 20), new SqlParameter("@QUANTITY", SqlDbType.Decimal, 9), new SqlParameter("@LAST_UPDATE_USER", SqlDbType.VarChar, 20) }; departualParam[0].Value = TRModel.DEPARTUAL_WAREHOUSE_CODE; departualParam[1].Value = TRLModel.PRODUCT_CODE; departualParam[2].Value = TRLModel.QUANTITY; departualParam[3].Value = TRModel.LAST_UPDATE_USER; listSql.Add(new CommandInfo(strSql.ToString(), departualParam)); if (Existstock(TRModel.ARRIVAL_WAREHOUSE_CODE, TRLModel.PRODUCT_CODE)) { //库存更新 strSql = new StringBuilder(); strSql.Append("update BASE_STOCK set "); strSql.Append("QUANTITY=QUANTITY + @QUANTITY,"); strSql.Append("LAST_UPDATE_TIME=GETDATE(),"); strSql.Append("LAST_UPDATE_USER=@LAST_UPDATE_USER"); strSql.Append(" where WAREHOUSE_CODE=@WAREHOUSE_CODE and PRODUCT_CODE=@PRODUCT_CODE "); SqlParameter[] stockParam = { new SqlParameter("@WAREHOUSE_CODE", SqlDbType.VarChar, 20), new SqlParameter("@PRODUCT_CODE", SqlDbType.VarChar, 20), new SqlParameter("@QUANTITY", SqlDbType.Decimal, 9), new SqlParameter("@LAST_UPDATE_USER", SqlDbType.VarChar, 20) }; stockParam[0].Value = TRModel.ARRIVAL_WAREHOUSE_CODE; stockParam[1].Value = TRLModel.PRODUCT_CODE; stockParam[2].Value = TRLModel.QUANTITY; stockParam[3].Value = TRModel.LAST_UPDATE_USER; listSql.Add(new CommandInfo(strSql.ToString(), stockParam)); } else { strSql = new StringBuilder(); strSql.Append("insert into BASE_STOCK("); strSql.Append("WAREHOUSE_CODE,PRODUCT_CODE,UNIT_CODE,QUANTITY,STATUS_FLAG,CREATE_USER,CREATE_DATE_TIME,LAST_UPDATE_TIME,LAST_UPDATE_USER)"); strSql.Append(" values ("); strSql.Append("@WAREHOUSE_CODE,@PRODUCT_CODE,@UNIT_CODE,@QUANTITY,@STATUS_FLAG,@CREATE_USER,GETDATE(),GETDATE(),@LAST_UPDATE_USER)"); SqlParameter[] stockParam2 = { new SqlParameter("@WAREHOUSE_CODE", SqlDbType.VarChar, 20), new SqlParameter("@PRODUCT_CODE", SqlDbType.VarChar, 20), new SqlParameter("@UNIT_CODE", SqlDbType.VarChar, 20), new SqlParameter("@QUANTITY", SqlDbType.Decimal, 9), new SqlParameter("@STATUS_FLAG", SqlDbType.Int, 4), new SqlParameter("@CREATE_USER", SqlDbType.VarChar, 20), new SqlParameter("@LAST_UPDATE_USER", SqlDbType.VarChar, 20) }; stockParam2[0].Value = TRModel.ARRIVAL_WAREHOUSE_CODE; stockParam2[1].Value = TRLModel.PRODUCT_CODE; stockParam2[2].Value = TRLModel.UNIT_CODE; stockParam2[3].Value = TRLModel.QUANTITY; stockParam2[4].Value = CConstant.INIT; stockParam2[5].Value = TRModel.CREATE_USER; stockParam2[6].Value = TRModel.LAST_UPDATE_USER; listSql.Add(new CommandInfo(strSql.ToString(), stockParam2)); } } return(DbHelperSQL.ExecuteSqlTran(listSql)); } catch (SqlException ex) { if (i != 9) { int maxLlipNumber = CConvert.ToInt32(GetMaxSlipNumber()) + 1; TRModel.SLIP_NUMBER = maxLlipNumber.ToString().PadLeft(4, '0'); i++; continue; } } break; } return(result); }