海馬汽車經銷商管理系統技術解析(二十)修改調撥

修改調撥

修改調撥界面見下圖:

 

選擇調入倉要注意倉庫的容量。

 

 

 

選擇調出倉要注意該倉庫的配件庫存數。

 

 

 

調入倉與調出倉不能相同。

從【調撥修改】界面看到控件有:

控件

說明

文本框(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、窗體加載事件,綁定數據。

第一步:數據庫存儲過程

IF(@TYPE='DiaoBoGuanLi_Update_Load_SelectAllotRecord')
	BEGIN
	SELECT     PW_AllotRecordList.AllotRecordID, PW_AllotRecordList.AllotOddNumbers, PW_AllotRecordList.AllotData, PW_AllotRecordList.AllotGross, PW_AllotRecordList.DrawUp_StaffID AS DrawUpID, 
                      PW_AllotRecordList.ExAminePerson_StaffID AS ExAminePersonID, PW_AllotRecordList.IfEffective, BM_StaffRecordList_1.StaffName AS DrawUpID, 
                      BM_StaffRecordList.StaffName AS ExAminePerson
    FROM         PW_AllotRecordList INNER JOIN
                      BM_StaffRecordList AS BM_StaffRecordList_1 ON PW_AllotRecordList.DrawUp_StaffID = BM_StaffRecordList_1.StaffID INNER JOIN
                      BM_StaffRecordList ON PW_AllotRecordList.ExAminePerson_StaffID = BM_StaffRecordList.StaffID
    WHERE    PW_AllotRecordList.AllotRecordID=@AllotRecordID    
	END
	IF(@TYPE='DiaoBoGuanLi_Update_Load_SelectAllotRecordMinute')
	BEGIN
	SELECT     PW_AllotRecordMinuteList.AllotRecordMinuteID, PW_AllotRecordMinuteList.AllotRecordID, PW_AllotRecordMinuteList.PartsID, 
                      PW_AllotRecordMinuteList.StorageID_ComeInStorage AS ComeInStorageID, PW_AllotRecordMinuteList.StorageID_GoOutStorage AS GoOutStorageID, PW_AllotRecordMinuteList.Quantity, 
                      BM_StorageList_1.StorageName AS ComeInStorage, BM_StorageList.StorageName AS GoOutStorage, AttributeMinuteList.AttributeMinuteName AS Unit, BM_PartsList.PartsCoding, 
                      BM_PartsList.PartsName, BM_PartsList.AttributeMinuteID_Unit AS UnitID, BM_PartsList.Specification
    FROM         BM_StorageList INNER JOIN
                      BM_PartsList INNER JOIN
                      PW_AllotRecordMinuteList ON BM_PartsList.PartsID = PW_AllotRecordMinuteList.PartsID INNER JOIN
                      BM_StorageList AS BM_StorageList_1 ON PW_AllotRecordMinuteList.StorageID_ComeInStorage = BM_StorageList_1.StorageID ON 
                      BM_StorageList.StorageID = PW_AllotRecordMinuteList.StorageID_GoOutStorage INNER JOIN
                      AttributeMinuteList ON BM_PartsList.AttributeMinuteID_Unit = AttributeMinuteList.AttributeMinuteID
    WHERE    PW_AllotRecordMinuteList.AllotRecordID=@AllotRecordID    
	END
IF(@TYPE='DiaoBoGuanLi_Update_DeleteAllotRecordMinute')
	BEGIN
	DELETE     PW_AllotRecordMinuteList
	WHERE    PW_AllotRecordMinuteList.AllotRecordID=@AllotRecordID
	END

 

第二步:邏輯層(BLL)

 

//查詢調撥信息
[OperationContract]
        public DataSet DiaoBoGuanLi_Update_Load_SelectAllotRecord(int intAllotRecordID)
        {
            SqlParameter[] mySqlParameters =
            {
            new SqlParameter("@TYPE",SqlDbType.NChar),
            new SqlParameter("@AllotRecordID",SqlDbType.Int),
            };
            mySqlParameters[0].Value = "DiaoBoGuanLi_Update_Load_SelectAllotRecord";
            mySqlParameters[1].Value = intAllotRecordID;
            DataTable dt = myDALMethod.QueryDataTable("調撥管理_FRM_DiaoBoGuanLi_Update", mySqlParameters);
            DataSet ds = new DataSet();
            ds.Tables.Add(dt);
            return ds; //返回數據集
        }
//查詢調撥明細信息
        [OperationContract]
        public DataSet DiaoBoGuanLi_Update_Load_SelectAllotRecordMinute(int intAllotRecordID)
        {
            SqlParameter[] mySqlParameters =
            {
            new SqlParameter("@TYPE",SqlDbType.NChar),
            new SqlParameter("@AllotRecordID",SqlDbType.Int),
            };
            mySqlParameters[0].Value = "DiaoBoGuanLi_Update_Load_SelectAllotRecordMinute";
            mySqlParameters[1].Value = intAllotRecordID;
            DataTable dt = myDALMethod.QueryDataTable("調撥管理_FRM_DiaoBoGuanLi_Update", mySqlParameters);
            DataSet ds = new DataSet();
            ds.Tables.Add(dt);
            return ds; //返回數據集
        }
//刪除調撥明細信息
[OperationContract]
        public int DiaoBoGuanLi_Update_DeleteAllotRecordMinute(int intAllotRecordID)
        {
            SqlParameter[] mySqlParameters =
            {
            new SqlParameter("@TYPE",SqlDbType.NChar),
            new SqlParameter("@AllotRecordID",SqlDbType.Int),
            };
            mySqlParameters[0].Value = "DiaoBoGuanLi_Update_DeleteAllotRecordMinute";
            mySqlParameters[1].Value = intAllotRecordID;
            return myDALMethod.UpdateData("調Ì¡Â撥|管¨¹理¤¨ª_FRM_DiaoBoGuanLi_Update", mySqlParameters);
//返回值爲1是正常的,小於0是異常。
        }

 

第三步:界面層(UIL)

 

BLL海馬汽車銷售系統.庫存管理.FRM_DiaoboGuanLi_Update.FRM_DiaoboGuanLi_UpdateClient myFRM_DiaoboGuanLi_UpdateClient =
            new BLL海馬汽車銷售系統.庫存管理.FRM_DiaoboGuanLi_Update.FRM_DiaoboGuanLi_UpdateClient();
DataTable dtAllotRecordMinute;//定義表
private void FRM_DiaoBoGuanLi_Update_Load(object sender, EventArgs e)
        {           
            //查詢調撥信息
            DataTable dtAllotRecord = myFRM_DiaoboGuanLi_UpdateClient.DiaoBoGuanLi_Update_Load_SelectAllotRecord(FRM_DiaoBoGuanLi.intAllotRecord).Tables[0];
            //綁定數據
            txtAllotRecordOddNumber.Text = dtAllotRecord.Rows[0]["AllotOddNumbers"].ToString().Trim();
            txtGross.Text = dtAllotRecord.Rows[0]["AllotGross"].ToString().Trim();
            dtpComeInAndGoOutData.Value = Convert.ToDateTime(dtAllotRecord.Rows[0]["AllotData"]);
            cboDrawUp.SelectedValue = Convert.ToInt32(dtAllotRecord.Rows[0]["DrawUpID"]);
            cboExAminePerson.SelectedValue = Convert.ToInt32(dtAllotRecord.Rows[0]["ExAminePersonID"]);
            //查詢調撥明細信息
            dtAllotRecordMinute = myFRM_DiaoboGuanLi_UpdateClient.DiaoBoGuanLi_Update_Load_SelectAllotRecordMinute(FRM_DiaoBoGuanLi.intAllotRecord).Tables[0];
            if (dtAllotRecordMinute.Rows.Count > 0)//表不爲空
            {
                for (int i = 0; i < dtAllotRecordMinute.Rows.Count; i++)//循環表
                {
                    //把數據綁定到dgv
                    dgvAllotRecord.Rows.Add();
                    dgvAllotRecord.Rows[dgvAllotRecord.Rows.Count - 1].Cells["調撥記錄明細ID"].Value = dtAllotRecordMinute.Rows[i]["AllotRecordMinuteID"];
                    dgvAllotRecord.Rows[dgvAllotRecord.Rows.Count - 1].Cells["配件ID"].Value = dtAllotRecordMinute.Rows[i]["PartsID"];
                    dgvAllotRecord.Rows[dgvAllotRecord.Rows.Count - 1].Cells["配件編碼"].Value = dtAllotRecordMinute.Rows[i]["PartsCoding"];
                    dgvAllotRecord.Rows[dgvAllotRecord.Rows.Count - 1].Cells["配件名稱"].Value = dtAllotRecordMinute.Rows[i]["PartsName"];
                    dgvAllotRecord.Rows[dgvAllotRecord.Rows.Count - 1].Cells["單位"].Value = dtAllotRecordMinute.Rows[i]["Unit"];
                    dgvAllotRecord.Rows[dgvAllotRecord.Rows.Count - 1].Cells["規格"].Value = dtAllotRecordMinute.Rows[i]["Specification"];
                    dgvAllotRecord.Rows[dgvAllotRecord.Rows.Count - 1].Cells["調入倉ID"].Value = dtAllotRecordMinute.Rows[i]["ComeInStorageID"];
                    dgvAllotRecord.Rows[dgvAllotRecord.Rows.Count - 1].Cells["調入倉"].Value = dtAllotRecordMinute.Rows[i]["ComeInStorage"];
                    dgvAllotRecord.Rows[dgvAllotRecord.Rows.Count - 1].Cells["調出倉ID"].Value = dtAllotRecordMinute.Rows[i]["GoOutStorageID"];
                    dgvAllotRecord.Rows[dgvAllotRecord.Rows.Count - 1].Cells["調出倉"].Value = dtAllotRecordMinute.Rows[i]["GoOutStorage"];
                    dgvAllotRecord.Rows[dgvAllotRecord.Rows.Count - 1].Cells["數量"].Value = dtAllotRecordMinute.Rows[i]["Quantity"];
                }
            }
            if (dgvAllotRecord.Rows.Count > 0)//如果dgv不爲空
            {
                for (int i = 0; i < dgvAllotRecord.Rows.Count; i++)//循環dgv
                {
                    //根據配件與調入倉查詢庫存數
                    DataTable dtKunCun = myFRM_RuKuGuanLi_InsertClient.FRM_RuKuGuanLi_Insert_SelectKuCun(Convert.ToInt32(dgvAllotRecord.Rows[i].Cells["配件ID"].Value), Convert.ToInt32(dgvAllotRecord.Rows[i].Cells["調出倉ID"].Value)).Tables[0];
                    if (dtKunCun.Rows.Count > 0)
                    {
                        //計算庫存並保存到數據庫
                        decimal decKuCunShu = Convert.ToDecimal(dgvAllotRecord.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"]));
                    }
                    //根據配件與調出倉查詢庫存數
                    DataTable dtKunCun1 = myFRM_RuKuGuanLi_InsertClient.FRM_RuKuGuanLi_Insert_SelectKuCun(Convert.ToInt32(dgvAllotRecord.Rows[i].Cells["配件ID"].Value), Convert.ToInt32(dgvAllotRecord.Rows[i].Cells["調入倉ID"].Value)).Tables[0];
                    if (dtKunCun1.Rows.Count > 0)
                    {
                        //計算庫存並保存到數據庫
                        decimal decKuCunShu = Convert.ToDecimal(dtKunCun1.Rows[0]["StockNumber"]) - Convert.ToDecimal(dgvAllotRecord.Rows[i].Cells["數量"].Value);
                        int intUpdate = myFRM_RuKuGuanLi_InsertClient.FRM_RuKuGuanLi_Insert_btnInsert_ClickUpdateStockNumber(decKuCunShu, Convert.ToInt32(dtKunCun1.Rows[0]["StockID"]));
                    }
                }
            }
            //刪除調撥明細信息
            int intDelete = myFRM_DiaoboGuanLi_UpdateClient.DiaoBoGuanLi_Update_DeleteAllotRecordMinute(FRM_DiaoBoGuanLi.intAllotRecord);
                   }

 

2、【修改】按鈕點擊事件

 

 

 

 

第一步:界面層(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 btnUpdate_Click(object sender, EventArgs e)
        {
            //如果調出倉與調入倉相同
            if (Convert.ToInt32(cboGoOutStorage.SelectedValue) == Convert.ToInt32(cboComeInStorage.SelectedValue))
            {
                MessageBox.Show("調入倉與調出倉不能爲同一倉庫!");
                return;
            }
            if (txtQuantity.Text == "")//如果數量爲空
            {
                MessageBox.Show("請輸入數量!");
            }
            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 (dgvAllotRecord.Rows.Count > 0)//如果dgv不爲空
            {
                for (int k = 0; k < dgvAllotRecord.Rows.Count; k++)//循環dgv
                {
                    //如果控件中的調入倉與dgv中的調入倉相同
                    if (Convert.ToInt32(cboComeInStorage.SelectedValue) == Convert.ToInt32(dgvAllotRecord.Rows[k].Cells["調入倉ID"].Value) && dgvAllotRecord.CurrentRow.Cells["調撥記錄明細ID"].Value == "")
                    {
                        //計算可用容量
                        decKeYongRoLiang = decKeYongRoLiang - Convert.ToDecimal(dgvAllotRecord.Rows[k].Cells["數量"].Value) * Convert.ToDecimal(dgvAllotRecord.Rows[k].Cells["規格"].Value);
                    }
                }
            }
            //如果控件中的配件、調入倉、調出倉與所選單據的配件、調入倉、調出倉相同
            if (Convert.ToInt32(cboPartsName.SelectedValue) == Convert.ToInt32(dgvAllotRecord.CurrentRow.Cells["配件ID"].Value)
                        && Convert.ToInt32(cboGoOutStorage.SelectedValue) == Convert.ToInt32(dgvAllotRecord.CurrentRow.Cells["調入倉ID"].Value)
                        && Convert.ToInt32(cboComeInStorage.SelectedValue) == Convert.ToInt32(dgvAllotRecord.CurrentRow.Cells["調出倉ID"].Value))
            {

            }
            else
            {
                if (dgvAllotRecord.Rows.Count > 0)
                {
                    for (int i = 0; i < dgvAllotRecord.Rows.Count; i++)
                    {
                        //如果dgv中已存在與控件中的配件、調入倉、調出倉一一對應的單據
                        if (Convert.ToInt32(cboPartsName.SelectedValue) == Convert.ToInt32(dgvAllotRecord.Rows[i].Cells["配件ID"].Value)
                            && Convert.ToInt32(cboGoOutStorage.SelectedValue) == Convert.ToInt32(dgvAllotRecord.Rows[i].Cells["調入倉ID"].Value)
                            && Convert.ToInt32(cboComeInStorage.SelectedValue) == Convert.ToInt32(dgvAllotRecord.Rows[i].Cells["調出倉ID"].Value))
                        {
                            MessageBox.Show("該配件從該目標倉庫中調出進入該目標倉庫的單據已存在!");
                            return;
                        }
                    }
                }
            }
            if (decKeYongRoLiang > Convert.ToDecimal(txtGuiGe.Text) * Convert.ToDecimal(txtQuantity.Text))//如果倉庫容量充足
            {                
                //覆蓋所選行的數據
                dgvAllotRecord.CurrentRow.Cells["調撥記錄明細ID"].Value = "";
                dgvAllotRecord.CurrentRow.Cells["配件ID"].Value = cboPartsName.SelectedValue;
                dgvAllotRecord.CurrentRow.Cells["配件名稱"].Value = cboPartsName.Text;
                dgvAllotRecord.CurrentRow.Cells["配件編碼"].Value = txtPartsCode.Text;
                dgvAllotRecord.CurrentRow.Cells["規格"].Value = txtGuiGe.Text;
                dgvAllotRecord.CurrentRow.Cells["單位"].Value = txtUnit.Text;
                dgvAllotRecord.CurrentRow.Cells["調入倉ID"].Value = cboComeInStorage.SelectedValue;
                dgvAllotRecord.CurrentRow.Cells["調入倉"].Value = cboComeInStorage.Text;
                dgvAllotRecord.CurrentRow.Cells["調出倉ID"].Value = cboGoOutStorage.SelectedValue;
                dgvAllotRecord.CurrentRow.Cells["調出倉"].Value = cboGoOutStorage.Text;
                dgvAllotRecord.CurrentRow.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);
                }
            }

 

3、【增加】按鈕點擊事件

 

 

 

 

第一步:界面層(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 txtQuantity_KeyPress(object sender, KeyPressEventArgs e)
        {
            PublicStaticMothd.pubPriceOrRate_KeyPress(sender, e);
        }

        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();
        }

 

4、保存

 

第一步:界面層(UIL)

BLL海馬汽車銷售系統.庫存管理.FRM_DiaoboGuanLi_Update.FRM_DiaoboGuanLi_UpdateClient myFRM_DiaoboGuanLi_UpdateClient =
            new BLL海馬汽車銷售系統.庫存管理.FRM_DiaoboGuanLi_Update.FRM_DiaoboGuanLi_UpdateClient();        
        BLL海馬汽車銷售系統.庫存管理.FRM_DiaoBoGuanLi_Insert.FRM_DiaoBoGuanLi_InsertClient myFRM_DiaoBoGuanLi_InsertClient =
            new BLL海馬汽車銷售系統.庫存管理.FRM_DiaoBoGuanLi_Insert.FRM_DiaoBoGuanLi_InsertClient();
int intNember = 0;//變量
private void btnSave_Click(object sender, EventArgs e)
        {
            //給參數賦值
            int intInsertAllotRecordMinute = 0;
            string strAllotOddNumbers = txtAllotRecordOddNumber.Text;
            DateTime dtmAllotData = dtpComeInAndGoOutData.Value;
            decimal decAllotGross = Convert.ToDecimal(txtGross.Text);
            int intDrawUp = Convert.ToInt32(cboDrawUp.SelectedValue);
            int intExAminePerson = Convert.ToInt32(cboExAminePerson.SelectedValue);
            //把修改後的調撥信息保存到數據庫
            int intInsertAllotRecord = myFRM_DiaoboGuanLi_UpdateClient.DiaoBoGuanLi_Update_UpdateAllotRecord(strAllotOddNumbers, dtmAllotData, decAllotGross, intDrawUp, intExAminePerson,FRM_DiaoBoGuanLi.intAllotRecord);
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 = FRM_DiaoBoGuanLi.intAllotRecord;
                    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("保存成功!");
            }
intNember = 1;//變量賦值爲1
}

 

5、窗體關閉前事件

 

第一步:界面層(UIL)

BLL海馬汽車銷售系統.庫存管理.FRM_DiaoBoGuanLi_Insert.FRM_DiaoBoGuanLi_InsertClient myFRM_DiaoBoGuanLi_InsertClient =
            new BLL海馬汽車銷售系統.庫存管理.FRM_DiaoBoGuanLi_Insert.FRM_DiaoBoGuanLi_InsertClient();
private void FRM_DiaoBoGuanLi_Update_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (intNember == 0)//變量值爲1
            {           
                if (dtAllotRecordMinute.Rows.Count > 0)//表不爲空
                {
                    for (int i = 0; i < dtAllotRecordMinute.Rows.Count; i++)//循環表
                    {
                        //查詢調入倉庫存
                        DataTable dtKunCun = myFRM_RuKuGuanLi_InsertClient.FRM_RuKuGuanLi_Insert_SelectKuCun(Convert.ToInt32(dtAllotRecordMinute.Rows[i]["PartsID"]), Convert.ToInt32(dtAllotRecordMinute.Rows[i]["ComeInStorageID"])).Tables[0];
                        if (dtKunCun.Rows.Count > 0)
                        {
                            //計算庫存並保存
                            decimal decKuCunShu = Convert.ToDecimal(dtAllotRecordMinute.Rows[i]["Quantity"]) + Convert.ToDecimal(dtKunCun.Rows[0]["StockNumber"]);
                            int intUpdate = myFRM_RuKuGuanLi_InsertClient.FRM_RuKuGuanLi_Insert_btnInsert_ClickUpdateStockNumber(decKuCunShu, Convert.ToInt32(dtKunCun.Rows[0]["StockID"]));
                        }
                        //查詢調出倉庫存
                        DataTable dtKunCun1 = myFRM_RuKuGuanLi_InsertClient.FRM_RuKuGuanLi_Insert_SelectKuCun(Convert.ToInt32(dtAllotRecordMinute.Rows[i]["PartsID"]), Convert.ToInt32(dtAllotRecordMinute.Rows[i]["GoOutStorageID"])).Tables[0];
                        if (dtKunCun1.Rows.Count > 0)
                        {
                            //計算庫存並保存
                            decimal decKuCunShu = Convert.ToDecimal(dtKunCun1.Rows[0]["StockNumber"]) - Convert.ToDecimal(dtAllotRecordMinute.Rows[i]["Quantity"]);
                            int intUpdate = myFRM_RuKuGuanLi_InsertClient.FRM_RuKuGuanLi_Insert_btnInsert_ClickUpdateStockNumber(decKuCunShu, Convert.ToInt32(dtKunCun1.Rows[0]["StockID"]));
                        }
                        //給變量賦值
                        int intAllotRecordID = FRM_DiaoBoGuanLi.intAllotRecord;
                        int intPartsID = Convert.ToInt32(dtAllotRecordMinute.Rows[i]["PartsID"]);
                        int intComeInStorage = Convert.ToInt32(dtAllotRecordMinute.Rows[i]["ComeInStorageID"]);
                        int intGoOutStorage = Convert.ToInt32(dtAllotRecordMinute.Rows[i]["GoOutStorageID"]);
                        decimal decQuantity = Convert.ToDecimal(dtAllotRecordMinute.Rows[i]["Quantity"]);
                        //保存調撥明細信息
                       int intInsertAllotRecordMinute = myFRM_DiaoBoGuanLi_InsertClient.FRM_DiaoBoGuanLi_btnSave_ClickInsertAllotRecordMinute(intAllotRecordID, intPartsID, intComeInStorage, intGoOutStorage, decQuantity);
                    }
                }
            }
        }


以上僅供學習參考,禁止用於商業用途!!!

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章