海马汽车经销商管理系统技术解析(十九)新增调拨
来源:互联网 发布:asp.net 4高级编程 编辑:程序博客网 时间:2024/04/28 09:49
新增调拨
调拨是各个仓库间的货物调动。主界面见下图:
新增调拨单
选择调入仓要注意仓库的容量。
选择调出仓要注意该仓库的配件库存数。
调入仓与调出仓不能相同。
从【调拨新增】界面看到控件有:
控件
说明
文本框(TextBox)
编辑控件可以在工具箱直接拖动至窗体,拖至窗体后右击属性可以修改控件的样式和各种属性,还可以设置事件。
下拉框(ComboBox)
日期控件(DateTimePicKer)
表格(DataGridView)
按钮(Button)
1、数据库功能实现
第一步:数据库
1、表和关系
表1、调拨单表(PW_AllotRecordList)
列名
数据类型
主键/外键
说明
AllotRecordID
int - Identity
主键
调拨单ID
AllotOddNumbers
nchar (20)
调拨单号
AllotData
datetime
调拨日期
AllotGross
decimal (18, 2)
调拨总量
DrawUp_StaffID
int
外键
员工档案表,制单人_员工ID
ExAminePerson_StaffID
int
外键
员工档案表,核准人_员工ID
IfEffective
bit
有效否
表2、调拨单明细表(PW_AllotRecordMinuteList)
列名
数据类型
主键/外键
说明
AllotRecordMinuteID
int - Identity
主键
调拨单明细ID
AllotRecordID
int
外键
调拨单表,调拨单ID
PartsID
int
外键
配件表,配件ID
StorageID_ComeInStorage
int
外键
仓库表,仓库ID_调入仓
StorageID_GoOutStorage
int
外键
仓库表,仓库ID_调出仓
Quantity
decimal (18, 2)
数量
表3、配件表(BM_PartsList)
列名
数据类型
主键/外键
说明
PartsID
int - Identity
主键
配件ID
PartsCoding
nchar (20)
配件代码
PartsName
nchar (20)
配件名称
CarModels
nchar (20)
车型
Specification
nchar (20)
规格
AttributeMinuteID_Unit
int
外键
属性明细表,属性明细ID_单位
SellPrice
nchar (20)
销售价格
表4:员工档案表(BM_StaffRecordList)
列名
数据类型
主键/外键
说明
StaffID
int - Identity
主键
员工ID
StaffBasicDataID
int
外键
员工基本资料表,员工基本资料ID
StaffNumber
nchar (20)
员工编号
SuperiorCode
nchar (20)
上级代码
StaffName
nchar (20)
员工姓名
TheGenusShop
nchar (50)
所属门店
SectionID
int
外键
部门表,部门ID
TeamID
int
外键
班组表,班组ID
OtherLinkWay
nchar (50)
其他联系方式
MonthRestDay
datetime
月休息日
StartWorkTime
datetime
从业时间
BasicWages
decimal (18, 2)
基本工资
OtherWages
decimal (18, 2)
其他工资
IfApprentice
bit
是否学徒
IfServiceman
bit
是否维修技工
IfCanGet
bit
是否可领料
IfInspectorGeneral
bit
是否总检人
IfTestRun
bit
是否试车人
IfSalesman
bit
是否业务员
IfLeaveOffice
bit
离职否
StaffPicture
nchar (1000)
员工照片
表5、仓库表(BM_StorageList)
列名
数据类型
主键/外键
说明
StorageID
int - Identity
主键
仓库ID
StorageName
nchar (20)
仓库名
Dimension
decimal (18, 2)
容积
2、功能实现
1、增加调拨明细——【调拨新增】界面的【增加】按钮点击事件。
第三步:界面层(UIL)
BLL海马汽车销售系统.库存管理.FRM_RuKuGuanLi_Insert.FRM_RuKuGuanLi_InsertClient myFRM_RuKuGuanLi_InsertClient = new BLL海马汽车销售系统.库存管理.FRM_RuKuGuanLi_Insert.FRM_RuKuGuanLi_InsertClient(); BLL海马汽车销售系统.库存管理.FRM_ChuKuGuanLi_Insert.FRM_ChuKuGuanLi_InsertClient myFRM_ChuKuGuanLi_InsertClient = new BLL海马汽车销售系统.库存管理.FRM_ChuKuGuanLi_Insert.FRM_ChuKuGuanLi_InsertClient();private void btnInsert_Click(object sender, EventArgs e) { if (Convert.ToInt32(cboGoOutStorage.SelectedValue) == Convert.ToInt32(cboComeInStorage.SelectedValue))//如果调出仓与调入仓相同 { MessageBox.Show("调入仓与调出仓不能为同一仓库!"); return; } if (txtQuantity.Text == "")//如果调拨数量为空 { MessageBox.Show("请输入数量!"); } if (dgvComeInAndGoOut.Rows.Count > 0)//如果dgv不为空 { for (int i = 0; i < dgvComeInAndGoOut.Rows.Count; i++)//循环表 { //如果dgv中已存在该配件从该调出仓调入该调入仓的单据 if (Convert.ToInt32(cboPartsName.SelectedValue) == Convert.ToInt32(dgvComeInAndGoOut.Rows[i].Cells["配件ID"].Value) && Convert.ToInt32(cboGoOutStorage.SelectedValue) == Convert.ToInt32(dgvComeInAndGoOut.Rows[i].Cells["调入仓ID"].Value) && Convert.ToInt32(cboComeInStorage.SelectedValue) == Convert.ToInt32(dgvComeInAndGoOut.Rows[i].Cells["调出仓ID"].Value)) { MessageBox.Show("该配件从该目标仓库中调出进入该目标仓库的单据已存在!"); return; } } } decimal decKuCunShu = 0; //根据配件与调出仓查询库存数 DataTable dtKunCun = myFRM_RuKuGuanLi_InsertClient.FRM_RuKuGuanLi_Insert_SelectKuCun(Convert.ToInt32(cboPartsName.SelectedValue), Convert.ToInt32(cboGoOutStorage.SelectedValue)).Tables[0]; if (dtKunCun.Rows.Count > 0)//如果有数据 { //提取库存数 decKuCunShu = Convert.ToDecimal(dtKunCun.Rows[0]["StockNumber"]); } else { MessageBox.Show("调出仓中没有改配件!"); return; } if (decKuCunShu < Convert.ToDecimal(txtQuantity.Text))//如果库存不足 { MessageBox.Show("该配件在该仓库库存不足!"); return; } //根据调入仓查询仓库容量 DataTable dtKuCun = myFRM_RuKuGuanLi_InsertClient.FRM_RuKuGuanLi_Insert_SelectCangKuRoLiang(Convert.ToInt32(cboComeInStorage.SelectedValue)).Tables[0]; //提取仓库容量 decimal decKuCun = Convert.ToDecimal(dtKuCun.Rows[0]["Dimension"]); //根据调入仓查询已用容量 DataTable dtYiYongRoLiang = myFRM_RuKuGuanLi_InsertClient.FRM_RuKuGuanLi_Insert_SelectCangkuYiYongRoLiang(Convert.ToInt32(cboComeInStorage.SelectedValue)).Tables[0]; decimal decYiYongRoLiang=0; for (int j = 0; j < dtYiYongRoLiang.Rows.Count; j++)//循环表 { //计算已用的容量 decYiYongRoLiang += Convert.ToDecimal(dtYiYongRoLiang.Rows[j]["StockNumber"]) * Convert.ToDecimal(dtYiYongRoLiang.Rows[j]["Specification"]); } //计算可用容量 decimal decKeYongRoLiang = decKuCun - decYiYongRoLiang; if (dgvComeInAndGoOut.Rows.Count > 0) { for (int k = 0; k < dgvComeInAndGoOut.Rows.Count; k++)//循环dgv { //如果控件中的调入仓与dgv中的调入仓相同 if (Convert.ToInt32(cboComeInStorage.SelectedValue) == Convert.ToInt32(dgvComeInAndGoOut.Rows[k].Cells["调入ID"].Value)) { //计算可用容量 decKeYongRoLiang = decKeYongRoLiang - Convert.ToDecimal(dgvComeInAndGoOut.Rows[k].Cells["数量"].Value) * Convert.ToDecimal(dgvComeInAndGoOut.Rows[k].Cells["规格"].Value); } } } if (decKeYongRoLiang > Convert.ToDecimal(txtGuiGe.Text) * Convert.ToDecimal(txtQuantity.Text))//如果仓库容量充足 { //把调拨明细信息增加到dgv dgvComeInAndGoOut.Rows.Add(); dgvComeInAndGoOut.Rows[dgvComeInAndGoOut.Rows.Count - 1].Cells["配件ID"].Value = cboPartsName.SelectedValue; dgvComeInAndGoOut.Rows[dgvComeInAndGoOut.Rows.Count - 1].Cells["配件名称"].Value = cboPartsName.Text; dgvComeInAndGoOut.Rows[dgvComeInAndGoOut.Rows.Count - 1].Cells["配件编码"].Value = txtPartsCode.Text; dgvComeInAndGoOut.Rows[dgvComeInAndGoOut.Rows.Count - 1].Cells["规格"].Value = txtGuiGe.Text; dgvComeInAndGoOut.Rows[dgvComeInAndGoOut.Rows.Count - 1].Cells["单位"].Value = txtUnit.Text; dgvComeInAndGoOut.Rows[dgvComeInAndGoOut.Rows.Count - 1].Cells["调入仓ID"].Value = cboComeInStorage.SelectedValue; dgvComeInAndGoOut.Rows[dgvComeInAndGoOut.Rows.Count - 1].Cells["调入仓"].Value = cboComeInStorage.Text; dgvComeInAndGoOut.Rows[dgvComeInAndGoOut.Rows.Count - 1].Cells["调出仓ID"].Value = cboGoOutStorage.SelectedValue; dgvComeInAndGoOut.Rows[dgvComeInAndGoOut.Rows.Count - 1].Cells["调出仓"].Value = cboGoOutStorage.Text; dgvComeInAndGoOut.Rows[dgvComeInAndGoOut.Rows.Count - 1].Cells["数量"].Value = txtQuantity.Text; } else { MessageBox.Show("调入仓剩余空间不足!"); } HeJi();//调用自定义方法 } public void HeJi() { decimal decZongLiang = 0; if (dgvComeInAndGoOut.Rows.Count > 0)//如果dgv不为空 { for (int i = 0; i < dgvComeInAndGoOut.Rows.Count; i++)//循环dgv { //计算总数量 decZongLiang += Convert.ToDecimal(dgvComeInAndGoOut.Rows[i].Cells["数量"].Value); } } //给【总量】赋值 txtGross.Text = decZongLiang.ToString().Trim(); }
2、保存调拨信息
第一步:界面层(UIL)
BLL海马汽车销售系统.库存管理.FRM_RuKuGuanLi_Insert.FRM_RuKuGuanLi_InsertClient myFRM_RuKuGuanLi_InsertClient = new BLL海马汽车销售系统.库存管理.FRM_RuKuGuanLi_Insert.FRM_RuKuGuanLi_InsertClient(); BLL海马汽车销售系统.库存管理.FRM_DiaoBoGuanLi_Insert.FRM_DiaoBoGuanLi_InsertClient myFRM_DiaoBoGuanLi_InsertClient = new BLL海马汽车销售系统.库存管理.FRM_DiaoBoGuanLi_Insert.FRM_DiaoBoGuanLi_InsertClient();private void btnSave_Click(object sender, EventArgs e) { int intInsertAllotRecordMinute=0; //给变量赋值 string strXiaoShouShouKuan="DB"; string strAllotOddNumbers = ShengChengDanHao(strXiaoShouShouKuan);//生成单号 DateTime dtmAllotData = dtpComeInAndGoOutData.Value; decimal decAllotGross =Convert.ToDecimal(txtGross.Text); int intDrawUp = Convert.ToInt32(cboDrawUp.SelectedValue); int intExAminePerson = Convert.ToInt32(cboExAminePerson.SelectedValue); bool blnIfEffective = true; //把调拨信息保存到数据库 int intInsertAllotRecord = myFRM_DiaoBoGuanLi_InsertClient.FRM_DiaoBoGuanLi_btnSave_ClickAllotRecord(strAllotOddNumbers,dtmAllotData,decAllotGross, intDrawUp,intExAminePerson, blnIfEffective); if (dgvComeInAndGoOut.Rows.Count > 0)//如果dgv不为空 { for (int i = 0; i < dgvComeInAndGoOut.Rows.Count; i++)//循环dgv { //根据配件与调入仓查询库存数 DataTable dtKunCun = myFRM_RuKuGuanLi_InsertClient.FRM_RuKuGuanLi_Insert_SelectKuCun(Convert.ToInt32(dgvComeInAndGoOut.Rows[i].Cells["配件ID"].Value), Convert.ToInt32(dgvComeInAndGoOut.Rows[i].Cells["调入仓ID"].Value)).Tables[0]; if (dtKunCun.Rows.Count > 0)//如果存在数据 { //计算库存数并保存进数据库 decimal decKuCunShu = Convert.ToDecimal(dgvComeInAndGoOut.Rows[i].Cells["数量"].Value) + Convert.ToDecimal(dtKunCun.Rows[0]["StockNumber"]); int intUpdate = myFRM_RuKuGuanLi_InsertClient.FRM_RuKuGuanLi_Insert_btnInsert_ClickUpdateStockNumber(decKuCunShu, Convert.ToInt32(dtKunCun.Rows[0]["StockID"])); } else//如果没有数据 { //新增库存配件 int intInsertStock = myFRM_RuKuGuanLi_InsertClient.FRM_RuKuGuanLi_Insert_InsertStock(Convert.ToInt32(dgvComeInAndGoOut.Rows[i].Cells["配件ID"].Value), Convert.ToInt32(dgvComeInAndGoOut.Rows[i].Cells["调入仓ID"].Value), Convert.ToDecimal(dgvComeInAndGoOut.Rows[i].Cells["数量"].Value)); } //根据配件与调出仓查询库存数 DataTable dtKunCun1 = myFRM_RuKuGuanLi_InsertClient.FRM_RuKuGuanLi_Insert_SelectKuCun(Convert.ToInt32(dgvComeInAndGoOut.Rows[i].Cells["配件ID"].Value), Convert.ToInt32(dgvComeInAndGoOut.Rows[i].Cells["调出仓ID"].Value)).Tables[0]; if (dtKunCun1.Rows.Count > 0) { //计算库存数并保存进数据库 decimal decKuCunShu = Convert.ToDecimal(dtKunCun1.Rows[0]["StockNumber"])-Convert.ToDecimal(dgvComeInAndGoOut.Rows[i].Cells["数量"].Value) ; int intUpdate = myFRM_RuKuGuanLi_InsertClient.FRM_RuKuGuanLi_Insert_btnInsert_ClickUpdateStockNumber(decKuCunShu, Convert.ToInt32(dtKunCun1.Rows[0]["StockID"])); } //给变量赋值 int intAllotRecordID = intInsertAllotRecord; int intPartsID=Convert.ToInt32(dgvComeInAndGoOut.Rows[i].Cells["配件ID"].Value) ; int intComeInStorage = Convert.ToInt32(dgvComeInAndGoOut.Rows[i].Cells["调入仓ID"].Value); int intGoOutStorage = Convert.ToInt32(dgvComeInAndGoOut.Rows[i].Cells["调出仓ID"].Value); decimal decQuantity=Convert.ToDecimal(dgvComeInAndGoOut.Rows[i].Cells["数量"].Value); //把调拨明细信息保存进数据库 intInsertAllotRecordMinute = myFRM_DiaoBoGuanLi_InsertClient.FRM_DiaoBoGuanLi_btnSave_ClickInsertAllotRecordMinute(intAllotRecordID, intPartsID, intComeInStorage, intGoOutStorage, decQuantity); } } if(intInsertAllotRecord>0||intInsertAllotRecordMinute>0)//如果调用方法成功 { MessageBox.Show("新增成功!"); } }
以上仅供学习参考,禁止用于商业用途!!!
- 海马汽车经销商管理系统技术解析(十九)新增调拨
- 海马汽车经销商管理系统技术解析(二十)修改调拨
- 海马汽车经销商管理系统技术解析(四)新增预约
- 海马汽车经销商管理系统技术解析(十五)新增入库
- 海马汽车经销商管理系统技术解析(十七)新增出库
- 海马汽车经销商管理系统技术解析(十三)结算
- 海马汽车经销商管理系统技术解析(十四)出厂
- 海马汽车经销商管理系统技术解析(三)应收管理
- 海马汽车经销商管理系统技术解析(四)保养管理
- 海马汽车经销商管理系统技术解析(一)服务配置流程
- 海马汽车经销商管理系统技术解析(一)新建项目,搭建WCF架构
- 海马汽车经销商管理系统技术解析(二)登陆验证
- 海马汽车经销商管理系统技术解析(二)维修收银
- 海马汽车经销商管理系统技术解析(五)车辆续保提醒
- 海马汽车经销商管理系统技术解析(六)顾客生日祝贺
- 海马汽车经销商管理系统技术解析(七)投诉处理
- 海马汽车经销商管理系统技术解析(五)预约修改
- 海马汽车经销商管理系统技术解析(六)定位预约单
- 牌九怎么控牌▇ㄨ【在线演示QQ:194714506】
- 在虚拟机Windows2003上安装配置PPTP协议的VPN
- CentOS下安装jdk及配置
- UVa 11988 - Broken Keyboard (a.k.a. Beiju Text)【链表初接触】
- 牌九怎样控牌╳】【在线演示QQ:194714506】
- 海马汽车经销商管理系统技术解析(十九)新增调拨
- 向量空间模型实现文档查询(Vector Space Model to realize document query)
- 小记
- 牌九控牌绝技█▄【在线演示QQ:194714506】
- [OpenJudge] C15C Rabbit's Festival [PKU Campus 2015]
- 牌九能控牌吗∮╲【在线演示QQ:194714506】
- Sublime Text 2 快捷键用法大全
- SQL查询结果中出现多行完全相同的原因:From子句中有未关联的表
- 文件名通配符 “?” “*” “[]” “[!]”