海马汽车经销商管理系统技术解析(十九)新增调拨

来源:互联网 发布: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("新增成功!");            }        }

以上仅供学习参考,禁止用于商业用途!!!














0 0
原创粉丝点击