东航航空货运系统(四)功能模块_制单管理_1
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">制单管理:主要功能是进行国际正式制单</span><span style="font-family: 'Times New Roman'; background-color: rgb(255, 255, 255);">,</span><span style="font-family: 宋体; background-color: rgb(255, 255, 255);">国际公务制单及运单承运信息,日志信息不正常登记信息的查询,运单的修改,作废等处理。当在制单页面输入运单号按</span><span style="font-family: 'Times New Roman'; background-color: rgb(255, 255, 255);">Tab</span><span style="font-family: 宋体; background-color: rgb(255, 255, 255);">键,若运单号已制单则可以提取相关信息,若还没进行制单则可以进行制单操作。运单在生成后的操作中的操作会生成运单日志,在运单查询页面可查看。</span>
1.8.1提取已制单运单信息
在输入运单号码时,系统会根据用户输入的数字自动检索出已制单的运单号码,选中已制单号码按Tab键可提取出运单制单信息。
1.8.1(图1)
1.8.1(图2)
从界面上可以看到我们这里用到的控件有
控件名称 |
说明 |
下拉框(ComboBox) |
选择数据类型 |
文本框(TextBox) |
输入制单内容 |
按钮(Button) |
实现对应功能 |
表格(DataGridView) |
承载数据 |
第一步:数据库
这是制单模块涉及的主要操作表:
1.8.1(图3)
dbo.PW_WaybillTable
主键(s): WaybillID
列名 |
数据类型 |
Nulls? |
说明 |
WaybillID |
int - Identity |
No |
运单ID |
WaybillMarkPrefix |
nchar (10) |
Yes |
运单号前缀 |
WaybillNumber |
nchar (20) |
Yes |
运单号码 |
InceptionPointID |
int |
Yes |
起点站ID |
CarrierID1 |
int |
Yes |
承运人ID1 |
ArrivePointID1 |
int |
Yes |
到达站ID1 |
CarrierID2 |
int |
Yes |
承运人ID2 |
ArrivePointID2 |
int |
Yes |
到达站ID2 |
CarrierID3 |
int |
Yes |
承运人ID3 |
ArrivePointID3 |
int |
Yes |
到达站ID3 |
ObjectiveStandID |
int |
Yes |
目的站ID |
DeliverGoodsID |
int |
Yes |
发货人ID |
ConsigneeID |
int |
Yes |
收货人ID |
AttributeList_WeightUnitID |
nchar (10) |
Yes |
重量单位ID |
AttributeList_VolumeUnitID |
nchar (10) |
Yes |
体积单位ID |
CargoTypeID |
int |
Yes |
货物类型ID |
PackTypeID |
int |
Yes |
包装类型ID |
AlwaysCargoName |
nchar (100) |
Yes |
总货物品名 |
AlwaysCargoNumber |
nchar (10) |
Yes |
总货物件数 |
AlwaysSLACNumber |
nchar (10) |
Yes |
总SLAC件数 |
TotalVolume |
nchar (10) |
Yes |
总体积 |
AlwaysWeight |
nchar (10) |
Yes |
总重量 |
GrossFeeWeight |
nchar (10) |
Yes |
总计费重量 |
AlwaysFreight |
nchar (100) |
Yes |
总运价 |
AttributeList_WaybillStateID |
nchar (10) |
Yes |
运单状态ID |
WaybillTypeID |
int |
Yes |
运单类型ID |
InsureStatementValue |
nchar (10) |
Yes |
保险声明价值 |
SettleAccountsAttention |
nchar (50) |
Yes |
结算注意 |
PickUpGoodsDoBusineessDotID |
int |
Yes |
提货营业点ID |
TransportStatementValue |
nchar (10) |
Yes |
运输声明价值 |
SecurityOfficer |
nchar (10) |
Yes |
安检员 |
CustomsStatementValue |
nchar (10) |
Yes |
海关声明价值 |
AttributeList_InceptionPointCoinSeedID |
nchar (10) |
Yes |
起点站币种ID |
AttributeList_ObjectiveStandCoinSeedID |
nchar (10) |
Yes |
目的站币种ID |
Parities |
decimal (18, 2) |
Yes |
汇率 |
StoreAnnouncementsInformationID |
int |
Yes |
储运注意事项信息ID |
InceptionPointStorageID |
int |
Yes |
起点站点仓库ID |
ObjectiveStandStorageID |
int |
Yes |
目的站点仓库ID |
MakeSinglePerson |
nchar (10) |
Yes |
制单人 |
MakeSingleTime |
datetime |
Yes |
制单时间 |
MakeSingleDoBusineessDot |
nchar (20) |
Yes |
制单营业点 |
SupervisionNo |
bit |
No |
监管否 |
SecurityNo |
bit |
Yes |
安检否 |
ArrivePayNo |
bit |
Yes |
到付否 |
HangClothingNo |
bit |
Yes |
挂衣否 |
UnusualNo |
bit |
Yes |
异常否 |
CancelNo |
bit |
Yes |
作废否 |
Remark |
nchar (100) |
Yes |
备注 |
FreePublicNo |
bit |
Yes |
免费公务否 |
PublicCarrier |
nchar (10) |
Yes |
公免承运人 |
PublicFlightNumber |
nchar (10) |
Yes |
公免航班号 |
PublicFlightDate |
date |
Yes |
公免航班日期 |
TurnHarborOn |
bit |
Yes |
dbo.PW_WanbillDetailsTable
主键(s): WanbillDetailsID
列名 |
数据类型 |
Nulls? |
说明 |
WanbillDetailsID |
int - Identity |
No |
运单明细ID |
WaybillID |
int |
Yes |
运单ID |
CargoNameID |
int |
Yes |
货物品名ID |
CargoNumber |
nchar (10) |
Yes |
货物件数 |
Weight |
nchar (10) |
Yes |
重量 |
Size |
decimal (18, 2) |
Yes |
尺寸 |
Volume |
nchar (10) |
Yes |
体积 |
FeeWeight |
nchar (10) |
Yes |
计费重量 |
Freight |
nchar (100) |
Yes |
运价 |
AttributeList_AppointTreatyID |
nchar (10) |
Yes |
指定协议ID |
AttributeList_CarryPriceTypeID |
nchar (10) |
Yes |
运价种类ID |
CancelNo |
bit |
Yes |
作废否 |
1.8.2国际正式制单
步骤: 输入未制单号码,输入业务信息制单(底色为淡黄色的文本框可双击选择)
(1)选择运单货物起点站,已经在其他文本框选择了的站点不能再选择为其他站点,承运人为站点相应的承运营业点。
(2)客户可在客户简称文本框双击显示所有客户信息,也可以输入客户简称后按Tab提取出客户信息,若数据库没有该客户信息,系统提示用户是否添加。
(3)双击DGV里’代码’那一列或点击’添加’按钮,显示货物列表选择。在选择货物的重量单位,体积单位和协议种类,运价种类后,按’自动运单’按钮,系统会自动计算出货物的运价,总运价=货物运价+货物运价X其他费用的费率。
(4)作废运单,运单界面中控件都被禁用,只有几个功能按钮可以使用
功能实现:
(1)窗体加载时绑定下拉框数据
第一步:数据库存数过程
IF(@Type='FRM_InternationalOfficialMakeBill_SelectWeightUnit')--绑定重量单位
BEGINSELECT RTRIM(SYS_AttributeListTable.AttributeListName) AS AttributeListName, SYS_AttributeListTable.AttributeListID
FROM SYS_AttributeListTable INNER JOINSYS_AttributeSetsTable ON SYS_AttributeListTable.AttributeSetsID = SYS_AttributeSetsTable.AttributeSetsID
WHERE SYS_AttributeSetsTable.AttributeSetsID=5
END
第二步:逻辑层(BLL)代码
#region 查询重量单位[OperationContract]public DataSet FRM_InternationalOfficialMakeBill_SelectWeightUnit(){SqlParameter[] mySqlParameters = { new SqlParameter("@Type", SqlDbType.Char),};mySqlParameters[0].Value = "FRM_InternationalOfficialMakeBill_SelectWeightUnit";DataTable myDataTable = myDALMethod.QueryDataTable("制单管理_FRM_InternationalOfficialMakeBill", mySqlParameters);DataSet myDataSet = new DataSet();myDataSet.Tables.Add(myDataTable);return myDataSet;}#endregion
第三步:界面层(UIL)代码
cboWeightUnit.DataSource = myFRM_InternationalOfficialMakeBillClient.FRM_InternationalOfficialMakeBill_SelectWeightUnit().Tables[0];cboWeightUnit.DisplayMember = "AttributeListName";cboWeightUnit.ValueMember = "AttributeListID";
(2)窗体加载时绑定可选择数据列表
IF(@Type='FRM_InternationalOfficialMakeBill_SelectClient')--查询客户信息
BEGINSELECT ClientID, ClientCode, ClientAbbreviation, PracticePhone, PracticeAddress, ClientName
FROM SYS_ClientTable
END
第二步:逻辑层(BLL)代码
#region 查询客户[OperationContract]public DataSet FRM_InternationalOfficialMakeBill_SelectClient(){SqlParameter[] mySqlParameters = { new SqlParameter("@Type", SqlDbType.Char),};mySqlParameters[0].Value = "FRM_InternationalOfficialMakeBill_SelectClient";DataTable myDataTable = myDALMethod.QueryDataTable("制单管理_FRM_InternationalOfficialMakeBill", mySqlParameters);DataSet myDataSet = new DataSet();myDataSet.Tables.Add(myDataTable);return myDataSet;}#endregion
第三步:界面层(UIL)代码
dgvClient.AutoGenerateColumns = false;//禁止添加列dgvClient.AllowUserToAddRows = false;//禁止显示添加行dgvClient.DataSource = myFRM_InternationalOfficialMakeBillClient.FRM_InternationalOfficialMakeBill_SelectClient().Tables[0];
(3)窗体加载时代码生成’其他费用的dgv’:
第一步:数据库存数过程
IF(@Type='FRM_InternationalOfficialMakeBill_SelectCostRate')--查询其他费用BEGINSELECT CostID, CostName, CostRate
FROM SYS_CostTableEND
第二步:逻辑层(BLL)代码
#region 查询其他费用[OperationContract]public DataSet FRM_InternationalOfficialMakeBill_SelectCostRate(){SqlParameter[] mySqlParameters = { new SqlParameter("@Type", SqlDbType.Char), };mySqlParameters[0].Value = "FRM_InternationalOfficialMakeBill_SelectCostRate";DataTable myDataTable = myDALMethod.QueryDataTable("制单管理_FRM_InternationalOfficialMakeBill", mySqlParameters);DataSet myDataSet = new DataSet();myDataSet.Tables.Add(myDataTable);return myDataSet;}#endregion
第三步:界面层(UIL)代码
dgvFreight.AutoGenerateColumns = false;dgvFreight.AllowUserToAddRows = false;DataTable dtCostRate = myFRM_InternationalOfficialMakeBillClient.FRM_InternationalOfficialMakeBill_SelectCostRate().Tables[0];for (int i = 0; i < dtCostRate.Rows.Count+1; i++){if (i < dtCostRate.Rows.Count){dgvFreight.Rows.Add();dgvFreight.Rows[i].Cells["其他费用"].Value = dtCostRate.Rows[i]["CostName"].ToString().Trim();dgvFreight.Rows[i].Cells["费率"].Value = dtCostRate.Rows[i]["CostRate"].ToString().Trim();}if (i == dtCostRate.Rows.Count){dgvFreight.Rows.Add();dgvFreight.Rows[dtCostRate.Rows.Count].Cells["其他费用"].Value = "总计";}}
(4)文本框的检索功能:
第一步:数据库查询已制单号码
IF(@Type='FRM_InternationalOfficialMakeBill_SelectAllWaybillNumber')--查询所有非公免运单号BEGINSELECT WaybillNumberFROM PW_WaybillTableWHERE PW_WaybillTable.WaybillMarkPrefix=@WaybillMarkPrefix AND PW_WaybillTable.FreePublicNo=0END
第二步:逻辑层(BLL)代码
#region 查询所有非公免运单号[OperationContract]public DataSet FRM_InternationalOfficialMakeBill_SelectAllWaybillNumber(string WaybillMarkPrefix){SqlParameter[] mySqlParameters = { new SqlParameter("@Type",SqlDbType.Char), new SqlParameter("@WaybillMarkPrefix", SqlDbType.Char), };mySqlParameters[0].Value = "FRM_InternationalOfficialMakeBill_SelectAllWaybillNumber";mySqlParameters[1].Value = WaybillMarkPrefix;DataTable myDataTable = myDALMethod.QueryDataTable("制单管理_FRM_InternationalOfficialMakeBill", mySqlParameters);DataSet myDataSet = new DataSet();myDataSet.Tables.Add(myDataTable);return myDataSet;}#endregion
第三步:界面层(UIL)代码
#region 检索运单号码private void txtWaybillNumber_TextChanged(object sender, EventArgs e){try{if (txtWaybillNumber.Text.Length > 0){DataTable dtAllWaybillNumber = new DataTable();string strWaybillMarkPrefix = txtWaybillMarkPrefix.Text.ToString().Trim();string strWaybillNumber1 = txtWaybillNumber.Text.ToString().Trim();//从数据库查询dtAllWaybillNumber = myFRM_InternationalOfficialMakeBillClient.FRM_InternationalOfficialMakeBill_SelectAllWaybillNumber(strWaybillMarkPrefix).Tables[0];//声明一个数组,长度是dtAllWaybillNumber的总行数string[] strWaybillNumber = new string[dtAllWaybillNumber.Rows.Count];for (int i = 0; i < dtAllWaybillNumber.Rows.Count; i++){strWaybillNumber[i] = dtAllWaybillNumber.Rows[i]["WaybillNumber"].ToString().Trim();}txtWaybillNumber.AutoCompleteSource = AutoCompleteSource.CustomSource;//为TextBox指定为自定义源txtWaybillNumber.AutoCompleteCustomSource.AddRange(strWaybillNumber);//将数组添加进源txtWaybillNumber.AutoCompleteMode = AutoCompleteMode.Suggest;//为用户完成源并显示下拉框给用户选择}}catch { }}#endregion
(5)已经选择的站点不能再选择为其他站点类型
#region 自定义方法限制已经选择的站点不能再选/// <summary>/// /// </summary>/// <param name="myTextBox">进行操作的文本框</param>/// <param name="strType">判断文本框输入类型</param>List<int> myList=new List<int>();//用于记录已经选择的站点private void OpinionTextBox(TextBox myTextBox, string strType){if (strShuangJiLeiXing == strType)//判断是哪个文本框进行操作{if (myTextBox.Text == "")//文本框还没进行过选择{if (myList.Count > 0)//其他文本框进行了选择{//如果myList里存在与当前选择的站点相同的IDif (myList.Exists(i => i == Convert.ToInt32(dgvSite.CurrentRow.Cells["站点ID"].Value.ToString().Trim()))){ }else{//如果myList里不存在与当前选择的站点的IDmyTextBox.Text = dgvSite.CurrentRow.Cells["站点简称"].Value.ToString().Trim();myTextBox.Tag = dgvSite.CurrentRow.Cells["站点ID"].Value.ToString().Trim();myList.Add(Convert.ToInt32(dgvSite.CurrentRow.Cells["站点ID"].Value.ToString().Trim()));//把选择的站点ID加进myListpanSite.Visible = false;}}else{ //其他文本框没有进行过选择myTextBox.Text = dgvSite.CurrentRow.Cells["站点简称"].Value.ToString().Trim();myTextBox.Tag = dgvSite.CurrentRow.Cells["站点ID"].Value.ToString().Trim();myList.Add(Convert.ToInt32(dgvSite.CurrentRow.Cells["站点ID"].Value.ToString().Trim()));panSite.Visible = false;}}else{int myTextBoxID = Convert.ToInt32(myTextBox.Tag);//如果myList里存在与当前选择的站点相同的IDif (myList.Exists(i=>i == Convert.ToInt32(dgvSite.CurrentRow.Cells["站点ID"].Value.ToString().Trim()))){ }else{//如果myList里存在与当前选择的站点相同的ID就把它移除myListif (myList.Exists(i => i == myTextBoxID)){myList.Remove(myTextBoxID);}myTextBox.Text = dgvSite.CurrentRow.Cells["站点简称"].Value.ToString().Trim();myTextBox.Tag = dgvSite.CurrentRow.Cells["站点ID"].Value.ToString().Trim();myList.Add(Convert.ToInt32(dgvSite.CurrentRow.Cells["站点ID"].Value.ToString().Trim()));panSite.Visible = false;} }}}#endregion
(6)客户管理
第一步:数据库存储过程
IF(@Type='FRM_InternationalOfficialMakeBill_SelectClientInformation')--根据客户简称查询客户信息BEGINSELECT ClientCode, ClientName, ClientAbbreviation, PracticePhone, PracticeAddress, ClientID
FROM SYS_ClientTableWHERE SYS_ClientTable.ClientAbbreviation=@ClientAbbreviationEND
IF(@Type='FRM_InternationalOfficialMakeBill_InsertClient')--新增客户BEGININSERT SYS_ClientTable(AttributeList_ClientTypeID, ClientCode,ClientName, ClientAbbreviation, PracticePhone,PracticeAddress,BankAccount,ClientInformation)VALUES (@AttributeList_ClientTypeID, @ClientCode,@ClientName, @ClientAbbreviation, @PracticePhone,@PracticeAddress,@BankAccount,@ClientInformation) END
第二步:逻辑层(BLL)代码
#region 根据客户简称查询客户信息[OperationContract]public DataSet FRM_InternationalOfficialMakeBill_SelectClientInformation(string ClientAbbreviation){SqlParameter[] mySqlParameters = { new SqlParameter("@Type", SqlDbType.Char), new SqlParameter("@ClientAbbreviation", SqlDbType.Char), };mySqlParameters[0].Value = "FRM_InternationalOfficialMakeBill_SelectClientInformation";mySqlParameters[1].Value = ClientAbbreviation;DataTable myDataTable = myDALMethod.QueryDataTable("制单管理_FRM_InternationalOfficialMakeBill", mySqlParameters);DataSet myDataSet = new DataSet();myDataSet.Tables.Add(myDataTable);return myDataSet;}#endregion
第三步:界面层(UIL)代码
private void txtAbbreviation_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e){if ((Keys)e.KeyCode == Keys.Tab)//如果用户按下Tab键{if (txtAbbreviation.Text != ""){string strAbbreviation = txtAbbreviation.Text.ToString().Trim();DataTable dtClientInformation = myFRM_InternationalOfficialMakeBillClient.FRM_InternationalOfficialMakeBill_SelectClientInformation(strAbbreviation).Tables[0];if (dtClientInformation.Rows.Count > 0)//该用户简称存在相关信息{if (dtClientInformation.Rows.Count < 2)//该用户简称存在相关信息只涉及一个用户时{ string strClientCode = dtClientInformation.Rows[0]["ClientCode"].ToString().Trim();string strClientName = dtClientInformation.Rows[0]["ClientName"].ToString().Trim();string strPracticePhone = dtClientInformation.Rows[0]["PracticePhone"].ToString().Trim();string strPracticeAddress = dtClientInformation.Rows[0]["PracticeAddress"].ToString().Trim();txtShipmentsPerson.Text = strClientCode;txtDeliverGoodsInformation.Text = "客户全称:" + strClientName + "\t" + "联系电话:" + strPracticePhone + "\t" + "联系地址:" + strPracticeAddress;}else //该用户简称存在相关信息不止涉及一个用户时,显示列表{strShuangJiLeiXing = "发货人简称1";for (int i = 0; i < dtClientInformation.Rows.Count; i++){ dgvClient.Rows.Add();dgvClient.Rows[i].Cells["客户代码"].Value = dtClientInformation.Rows[i]["ClientCode"].ToString().Trim();dgvClient.Rows[i].Cells["客户简称"].Value = dtClientInformation.Rows[i]["ClientAbbreviation"].ToString().Trim();dgvClient.Rows[i].Cells["客户全称"].Value = dtClientInformation.Rows[i]["ClientName"].ToString().Trim();dgvClient.Rows[i].Cells["联系电话1"].Value = dtClientInformation.Rows[i]["PracticePhone"].ToString().Trim();dgvClient.Rows[i].Cells["联系地址"].Value = dtClientInformation.Rows[i]["PracticeAddress"].ToString().Trim();dgvClient.Rows[i].Cells["客户ID"].Value = dtClientInformation.Rows[i]["ClientID"].ToString().Trim();}panClien.Visible = true;}}else{if (MessageBox.Show("系统没有检测到该客户简称记录的客户信息,是否需要新增?", "系统提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK){FRM_InsertClientInformation myFRM_InsertClientInformation = new FRM_InsertClientInformation(strAbbreviation);myFRM_InsertClientInformation.ShowDialog();}}}}}
(7)双击‘代码’那一列显示货物列表,实现传值
第一步:数据库存储过程
IF(@Type='FRM_InternationalOfficialMakeBill_SelectCargoName')--查询货物品名
BEGINSELECT CargoNameID, Code, ChineseName, EnglishName, NameDescribe
FROM SYS_CargoNameTable
END
第二步:逻辑层(BLL)代码
#region 查询货物品名[OperationContract]public DataSet FRM_InternationalOfficialMakeBill_SelectCargoName(){SqlParameter[] mySqlParameters = { new SqlParameter("@Type", SqlDbType.Char),};mySqlParameters[0].Value = "FRM_InternationalOfficialMakeBill_SelectCargoName";DataTable myDataTable = myDALMethod.QueryDataTable("制单管理_FRM_InternationalOfficialMakeBill", mySqlParameters);DataSet myDataSet = new DataSet();myDataSet.Tables.Add(myDataTable);return myDataSet;}#endregion
第三步:界面层(UIL)代码
#region 弹出窗口private void dgvHuoWuXinXi_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e){//获取当前活动单元格的列索引int cellIndex = dgvCragoInformation.CurrentCell.ColumnIndex;if (cellIndex == 0)//如果是第一列{//显示货物列表,并把dgv传到货物列表的窗体FRM_CargoName myFRM_HuoWuPinMing = new FRM_CargoName(this.dgvCragoInformation);myFRM_HuoWuPinMing.ShowDialog();}}#endregionprivate void dgvHuoWuPinMing_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e){if (dgvHuoWuXinXi.CurrentRow != null){try{//获取当前行索引int rowIndex = dgvHuoWuXinXi.CurrentRow.Index;//判断是为修改一行数据,还是新增一条if (dgvHuoWuXinXi.Rows[rowIndex].Cells["代码"].Value == null){dgvHuoWuXinXi.Rows.Add();}//赋值dgvdgvHuoWuXinXi.CurrentRow.Cells["代码"].Value = dgvCagroName.CurrentRow.Cells["代码"].Value;dgvHuoWuXinXi.CurrentRow.Cells["名称"].Value = dgvCagroName.CurrentRow.Cells["中文名称"].Value;dgvHuoWuXinXi.CurrentRow.Cells["货物品名ID"].Value = dgvCagroName.CurrentRow.Cells["货物品名ID"].Value;dgvHuoWuXinXi.CurrentRow.Cells["重量"].Value = 1;dgvHuoWuXinXi.CurrentRow.Cells["件数"].Value = 1;dgvHuoWuXinXi.CurrentRow.Cells["体积"].Value = 0;dgvHuoWuXinXi.CurrentRow.Cells["计费重量"].Value = 1;this.Close();//关闭货物列表窗体}catch { }}}
(8)自动运价
第一步:数据库存储过程
IF(@Type='FRM_InternationalOfficialMakeBill_SelectCargoFreight')--查询货物运价BEGINSELECT CargoNameID, AttributeList_AppointTreatyID, AttributeList_FreightTypeID, Freight
FROM SYS_CargoFreightTable
WHERE CargoNameID=@CargoNameID AND AttributeList_AppointTreatyID=@AttributeList_AppointTreatyID AND AttributeList_FreightTypeID=@AttributeList_FreightTypeIDEND
第二步:逻辑层(BLL)代码
#region 查询货物运价[OperationContract]public DataSet FRM_InternationalOfficialMakeBill_SelectCargoFreight(int CargoNameID, int AppointTreatyID, int FreightTypeID){SqlParameter[] mySqlParameters = { new SqlParameter("@Type", SqlDbType.Char),new SqlParameter("@CargoNameID", SqlDbType.Int),new SqlParameter("@AttributeList_AppointTreatyID", SqlDbType.Int),new SqlParameter("@AttributeList_FreightTypeID", SqlDbType.Int),};mySqlParameters[0].Value = "FRM_InternationalOfficialMakeBill_SelectCargoFreight";mySqlParameters[1].Value = CargoNameID;mySqlParameters[2].Value = AppointTreatyID;mySqlParameters[3].Value = FreightTypeID;DataTable myDataTable = myDALMethod.QueryDataTable("制单管理_FRM_InternationalOfficialMakeBill", mySqlParameters);DataSet myDataSet = new DataSet();myDataSet.Tables.Add(myDataTable);return myDataSet;}#endregion
第三步:界面层(UIL)代码
#region 自动运价private void AutomaticTransportPrice_Click(object sender, EventArgs e){if (dgvCragoInformation.Rows.Count > 1)//dgv的行大于1,即选择了货物{try{//声明计算变量string strCargoFreight = "";decimal decAllCargoFreight = 0;//总货物运价decimal decAllOutlay = 0;for (int i = 0; i < dgvCragoInformation.Rows.Count - 1; i++){int intCargoNameID = Convert.ToInt32(dgvCragoInformation.Rows[i].Cells["货物品名ID"].Value.ToString().Trim());int intAppointTreatyID = Convert.ToInt32(dgvCragoInformation.Rows[i].Cells["指定协议"].Value.ToString().Trim());int intFreightTypeID = Convert.ToInt32(dgvCragoInformation.Rows[i].Cells["运价种类"].Value.ToString().Trim());string strWeight = dgvCragoInformation.Rows[i].Cells["计费重量"].Value.ToString().Trim();//根据界面条件查询货物是否有符合条件的计算DataTable dtCargoFreight = myFRM_InternationalOfficialMakeBillClient.FRM_InternationalOfficialMakeBill_SelectCargoFreight(intCargoNameID, intAppointTreatyID, intFreightTypeID).Tables[0];if (dtCargoFreight.Rows.Count > 0)//有符合计算条件的{string strFreight = dtCargoFreight.Rows[0]["Freight"].ToString().Trim();if (Convert.ToInt32(cboWeightUnit.SelectedValue) == 22)//重量单位是g{strFreight = (Convert.ToDecimal(strFreight) / 1000).ToString().Trim();}if (Convert.ToInt32(cboWeightUnit.SelectedValue) == 23)//重量单位是T{strFreight = (Convert.ToDecimal(strFreight) * 1000).ToString().Trim();}//货物运价等于运价乘以计费重量strCargoFreight = (Convert.ToDecimal(strFreight) * Convert.ToDecimal(strWeight)).ToString().Trim();dgvCragoInformation.Rows[i].Cells["运价"].Value = strCargoFreight; }else{MessageBox.Show("该货物在此条件下还没有定义运价,可在运价管理中添加", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);return;}decAllCargoFreight += Convert.ToDecimal(strCargoFreight);}for (int j = 0; j < dgvFreight.Rows.Count; j++)//按照货物运价乘以费率计算其他费用{if (j < dgvFreight.Rows.Count - 1){string strCost = dgvFreight.Rows[j].Cells["费率"].Value.ToString().Trim();string strOutlay = (Convert.ToDecimal(strCost) * Convert.ToDecimal(decAllCargoFreight)).ToString().Trim();dgvFreight.Rows[j].Cells["费用"].Value = strOutlay;decAllOutlay += Convert.ToDecimal(strOutlay);//总的其他费用和}if (j == dgvFreight.Rows.Count-1){//计算总的其他费用的和dgvFreight.Rows[j].Cells["费用"].Value = decAllOutlay.ToString().Trim();}}txtAllFreight.Text = (decAllCargoFreight + decAllOutlay).ToString().Trim();}catch { } }else{MessageBox.Show("请选择货物!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);return;}}#endregion
*********仅供参考学习用途********
东航航空货运系统(四)功能模块_制单管理_1相关推荐
- excel进销存管理系统_通用Excel助力企业定制开发信息化系统常用功能模块
信息化成为现代企业管理的趋势,而企业管理系统则是推动这一趋势发展的重要载体.那么什么是企业管理系统呢?企业管理系统都有那些呢? 通用Excel助力企业定制开发信息化系统常用功能模块 企业管理系统,是指 ...
- 什么是APS高级计划排程(生产计划排产)系统主要功能模块有哪些?
什么是APS高级计划排程(生产计划排产)系统? APS高级计划排程(高级计划排产)系统主要解决"在有限产能条件下,交期产能精确预测.工序生产与物料供应最优详细计划"的问题.APS高 ...
- LIS(LIMS)系统主要功能模块
LIS(Laboratory Information Management System)是实验室信息管理系统的简称. LIS(LIMS)系统主要功能模块: 1. 检验工作站:是LIS最大的应用模块, ...
- S2B2C商城系统平台功能模块分析,加速医药制造企业数字化转型落地
目录 医药制造业在数字化方面存在的问题 S2B2C系统网站功能模块介绍 1.分销管理 2.商品管理 3.订单管理 4.物流管理 5.合同管理 作为国民经济的重要组成部分,医药制造业在我国整个消费市场中 ...
- 你不知道的服装ERP系统的功能模块与好处!
现如今随着企业信息化管理的不断发展,越来越多的企业通过使用管理软件提高了工作能力,提高了投入产出比.随着电子商务的不断发展,现在越来越多的服装卖家需要处理大量的数据,而使用ERP系统可以简化工作流程. ...
- 东航航空货运系统(三)设计登陆界面与验证登陆
1.7设计登陆界面,实现验证登陆 第一步:添加一个Windows窗体应用程序 1.7 (图1) 选择C#中的Windows窗体,填写窗体名称 1.7(图2) 第二步:根据项目需要和个人设计登陆界面,注 ...
- ERP系统标准功能模块
税务管理模块 1.税务管理的重要性 现代企业的税务筹划有利于最大限度实现财务目标,在不违反政策.法规的前提下对企业筹资.投资.经营等方面活动,乃至生产经营.利润分配等环节的业务进行事先策划,制定一整套 ...
- Java版本企业电子招投标采购系统源码——功能模块功能描述+数字化采购管理 采购招投标
功能模块: 待办消息,招标公告,中标公告,信息发布 描述: 全过程数字化采购管理,打造从供应商管理到采购招投标.采购合同.采购执行的全过程数字化管理.通供应商门户具备内外协同的能力,为外部供应商集中推 ...
- 关于数加服装ERP软件/系统的功能模块与应用的介绍
数加ERP系统软件功能介绍 1.开发与技术管理管理 主要功能:通过数加科技多年在纺织企业的应用经历,指导企业编写编码手册,对款号档案.面辅料档案.工序档案.客户及供货商根底材料进行标准办理及保护,统一 ...
最新文章
- 学习笔记---母板页、用户控件、第三方控件及视图状态管理
- 基于james3.0 的邮件系统(struts2.3.2 +spring3.0.1+jpa(hibernate3.6.5)实现)b/s模式--java邮件系统...
- CodeForces - 1359D Yet Another Yet Another Task(最大连续子段和)
- argo 现水下永动机器人_现水下永动机器人 水下永动机器人有什么作用?
- css渲染(一) 字体
- 55种数据可视化开源工具_通过开源工具增强学生能力的15种方法
- 【Python】排序函数 sort、sorted 对复杂列表排序
- 查询 mysql所有表名
- 孙鑫VC学习笔记:第二十讲 (一) Hook编程
- 【c语言】背包问题的贪心法
- mysql 全库查询关键字_数据库查询语句关键字总结
- 有哪些堪称PPT神器插件?用好这10款,让你像开挂了一样设计PPT!
- android 自定义dns解析器,Android中DNS解析
- 分布式存储系统 之 数据备份
- 世纪佳缘再出事故,区块链能成为搅动婚恋行业的新鲶鱼吗?
- 涨粉神器,粉丝零距离交流!CSDN APP迎来更新
- 【读论文04】CVPR2022选读
- python 网络抓包
- Win RTX3070+cuda11.4+cuDNNv8.2.2+torch-gpu离线安装+tensorflow-gpu安装
- 【Unity学习笔记】为什么欧拉角(Euler)会符合万向节(Gimbal)规则?