修改調撥
修改調撥界面見下圖:
選擇調入倉要注意倉庫的容量。
選擇調出倉要注意該倉庫的配件庫存數。
調入倉與調出倉不能相同。
從【調撥修改】界面看到控件有:
控件 |
說明 |
文本框(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);
}
}
}
}
以上僅供學習參考,禁止用於商業用途!!!