订单管理_02修改订单信息流程

时间:2024-03-28 08:38:00

 WCF物流管理系统(二)


订单管理_02修改订单信息流程

订单管理_02修改订单信息流程

图2-1整体效果图

业务介绍:

                  物流系统是指:用以管理运输货物和运输的软件系统,功能一般包括了:填写运输订单、分包、配载、发车、运输、收货几个主要部分。

                  填写运输订单是物流运输的第一步,用户需要填写运输的货物信息、收件人信息、发货人信息,并且每张运输订单具有本系统中唯一编号,可以根据运输单编号进行查询和对特定运输单的操作。

                  修改订单是填写运输订单的主要步骤,其主要功能是录入托运方的信息、收货方的信息、货物信息、操作员信息并将数据保存在数据库中,从而进行后续的操作。

控件列表:

                 

控件名

控件类型

控件说明

只读否

txtDingDanBianHao

TextBox

用于显示本修改订单在数据库中的唯一单据号

 

dtpJieDanShiJian

DateTimePicker

用于选择本修改订单的接单日期。注意:默认为当天。

dtpSongDaShiJian

DateTimePicker

用于选择本修改订单的预到达日期。注意:默认为当天+1天。

 

txtTuoYunFang

 

TextBox

用于填写本修改订单中的托运方名称,当填写后将根据填写内容搜索已经保存的客户信息,并将客户信息显示在dgvKeHu中。

 

 

txtTuoYunLianXiRen

TextBox

用于显示本修改订单中的托运方联系人名称。来源:dgvKeHu中选择的客户信息或是修改的客户信息。

 

txtTuoYunLianXiDianHua

TextBox

用于显示本修改订单中的托运方联系人电话。来源:dgvKeHu中选择的客户信息或是修改的客户信息。

 

rTxtFaHuoDiZhi

RichTextBox

用于显示本修改订单中的托运方发货地址。来源:dgvKeHu中选择的客户信息或是修改的客户信息。

 

 

 

 

dgvKeHu

 

 

 

DataGridView

用于显示本修改订单中根据txtTuoYunFang中客户名称进行搜索后的结果,并且判断客户名称是否存在,如果存在将客户名称符合输入条件的客户信息显示,若客户名称不存在则提示并未找到对应的客户信息,并将跳转到修改客户信息界面,修改客户信息结束后将重新根据txtTuoYunFang中的客户名称进行搜索。注意:本控件在不同的使用背景下将显示不同类型的客户信息(托运方/收货方)。

 

 

 

 

 

txtShouHuoFang

 

TextBox

用于填写本修改订单中的收货方名称,当填写后将根据填写内容搜索已经保存的客户信息,并将客户信息显示在dgvKeHu中。

 

txtShouHuoLianXiRen

TextBox

用于显示本修改订单中的收货方联系人名称。来源:dgvKeHu中选择的客户信息或是修改的客户信息。

 

txtShouHuoLianXiDianHua

TextBox

用于显示本修改订单中的收货方联系人电话。来源:dgvKeHu中选择的客户信息或是修改的客户信息。

 

rtxtShouHuoDiZhi

RichTextBox

用于显示本修改订单中的收货方发货地址。来源:dgvKeHu中选择的客户信息或是修改的客户信息。

 

cboJiJianWangDian

ComboBox

用于选择本修改订单的运输起始城市。

cboShouHuoWangDian

ComboBox

用于选择本修改订单的运输目的城市。

 

 

txtTiDanHao

 

 

TextBox

用于显示与本修改订单先对应的唯一提单号码。提单号码是用于提货的唯一单据号码,作用等同于订单编号。

注意:通常情况下一个运输订单的运单号是唯一的,而提单号可以是唯一的也可以不唯一,客户可以一次性提取货物也可以根据批次依次提取货物。

 

 

 

 

dgvHuoWuList

 

DataGridView

用于输入本修改订单中想要托运的货物信息,其中包括货物名称、货物类别、数量、计量单位、运费单价、计费公式、是否揽收等信息。

 

 

txtYeWuYuan

 

TextBox

用于显示本修改订单的业务员(负责人)名称。来源:点击btnYeWuYuan 后在dgvYuanGong中选择对应的员工名称。

 

 

btnYeWuYuan

Button

用于在dgvYuanGong中显示本修改订单的业务员(负责人)的信息以供选择。

txtzhiDanRen

TextBox

用于显示本修改订单的制单人名称。来源:点击btnZhiDanRen后在dgvYuanGong中选择对应的员工名称。

 

btnZhiDanRen

Button

用于在dgvYuanGong中显示本修改订单的制单人的信息以供选择。

txtXiuDanRen

TextBox

用于显示本修改订单的修单人名称。来源:点击btnXiuDanRen后在dgvYuanGong中选择对应的员工名称。

 

btnXiuDanRen

Button

用于在dgvYuanGong中显示本修改订单的修单人的信息以供选择。

 

dgvYuanGong

 

DataGridView

用于显示本修改订单的员工的信息以供选择。

注意:本控件在不同的使用背景下将显示不同类型的客户信息(业务员/制单人/修单人)。

txtYunFeiZongJia

TextBox

用于显示本修改订单中的所有商品的运费总和。

 

cboJieSuanFangShi

ComboBox

用于选择本修改订单的费用结算方式。(现金/转账/当面付/支付宝)

cboLanShouZhangTai

ComboBox

用于选择本修改订单的揽收状态(未揽收/部分揽收/全部揽收)。

rtxtBeiZhu

RichTextBox

用于填写本修改订单的备注说明。

btnBaoCun

Button

用于提交本修改订单信息,并在正确提交后进入下个业务流程。

btnFanHui

Button

用于取消本修改订单信息,并在确定返回后返回主界面。

表2-1控件列表

功能布局划分:


根据图2-1整体布局可以分析出,本界面的功能主要是输入需要运输的货物、托运方信息、收货方信息、以及订单的信息。因此可以从功能的层面讲本系统划分为5个部分:订单信息、托运方和收货方信息、货物信息、系统操作员信息、系统操作按钮。

订单管理_02修改订单信息流程

图2-2第一部分订单信息

第一部分:订单信息,本区域如图2-2所示,本区域包含一个文本框、两个日期控件共三个控件,其中文本框为只读属性,日期控件显示默认为当天的日期。

 

关于文本框只读:文本框的功能可分为两种:显示和输入。在功能一中文本框属于用于显示本修改订单操作的订单编号,而订单编号是不可以随意更改的用来唯一表示订单信息的字符串因此应使用只读属性,使得本文本框仅用于只读显示。

 

关于订单编号:订单编号是一串由字母和数字构成的字符串,用于表示本修改订单的唯一标识,每个订单的订单编号都是唯一并且有具体含义的,以本系统为例:DD201511190001为一个订单编号,此单号可以划分为三部分:DD、20151119、0001.

DD:表示订单的简称,用于区分其他单据;

20151119:表示本修改订单的修改日期;

0001:表示本修改订单为当天的第几个订单,最小为0001最大为9999.

注意:订单编号是根据实际需要进行规定的,只要在同一个系统中使用同一个规则来产生编号,而不需要所有的系统都使用同样的规则。根据不同的系统的粒度(详细程度)进行具体改变。

 

             关于接单时间:根据客户的需要,接单时间一般默认为当前的日期,但是并不做不能选择之前日期的限制,以预留出使用者可以将之前的订单进行补增的操作。但是在数据库中需要有一个字段专职保存记录的插入时间和修改时间,留以备查。

 


关于送达时间:根据系统要求,一般送达时间默认为接单时间的第二天,也就是接单日期+1的日期。但是在数据库中需要有一个字段专职保存记录的插入时间和修改时间,留以备查。

订单管理_02修改订单信息流程

图2-3第二部分托运方和收货方信息

              第二部分:托运方和收货方信息,本区域如图2-3所示,本区域包含7个文本框、两个富文本框、两个下拉框、两个按钮共13个控件。其中可以本区域根据功能和作用可以划分为三个小区域:托运方信息、收货方信息、寄件站点和收件站点信息。

 

              托运方信息:托运方名称、托运方联系人名称、托运方联系人联系电话、发货地址信息。

              收货方信息:收货方名称、收货方联系人名称、收货方联系人联系电话、收货地址信息。

              寄件站点和收件站点信息:托运起始网点信息、托运目的网点信息、提单号信息。

 

              关于收货方/托运方信息: 托运方/收货方的信息是通过托运方/收货方的名称为搜索条件,通过搜索名称将客户的信息显示在DGV中,并提供选择,当根据名称无法搜索到客户信息的时候,将会提示没有对应的客户信息,当用户确定以后将弹出修改客户信息的界面进行修改。

 

              关于收货地址/发货地址: 收货地址/发货地址使用RichTextBox控件,该控件可视作为带回车的TextBox使用方法与TextBox是完全一致的。

 


关于寄件站点和收件站点信息:寄件网点和收件网点是根据寄件人所寄件的网点和目标网点的名称进行选择的选项,其中寄件网点和收件网点需要进行判断是否是同一个网点,如果为同一个网店需要进行提示说明。

订单管理_02修改订单信息流程

图2-4第三部分托运货物信息

              第三部分:托运货物信息,本区域包含一个控件,主要功能是要托运的货物的列表,表中包含的列为:货物名称,货物类别,数量,计量单位,运费单价,计费方式,揽收否以及一个移除货物的按钮。


              **关于货物信息:在这个DGV中将填写要托运的货物的信息,这些信息都是必填信息,因此在修改数据的时候需要进行判断数据是否完整,其中货物类别、计量单位、计费方式为下拉框;移除为按钮;揽收否为复选框,因此本控件的使用时重点

订单管理_02修改订单信息流程

图2-5第四部分系统操作员信息

              第四部分:系统操作员信息,本区域包含四个文本框,两个下拉框,一个富文本框,三个按钮共十个控件。其中除备注(富文本框)外均为只读。

              关于业务员:业务员是本修改订单操作的员工名称,用以保存本订单业务的从属员工。

              关于制单人:制单人是本修改订单的操作员工名称,用以表明本订单为某个员工修改。

              关于修单人:修单人是本修改订单的修改员工名称,用以表明本订单为某个员工修改。

              关于运费总价:运费总价是根据本修改订单中所有货物运费总和,本运费总价是税前金额,且为两位小数,单位为元。单个货物的运费为该货物的运输单价*该货物的运输数量=该货物的运费。

              关于结算方式:结算方式是指本修改订单的运费总和结算方式,根据实际情况设定对应的方式即可。

              关于揽收状态:揽收状态是指本修改订单的货物是否已经收件,如果已经揽收则可以进行下一步操作,否则必须等待揽收。

 

 
   


              关于备注:备注用于对本修改订单进行进一步详细的描述或附加说明,可以不填。

订单管理_02修改订单信息流程

图2-6第五部分系统操作按钮

              第四部分:系统操作按钮,本区域包含六个按钮,分别为重置、保存、其他保存、打印、其他打印、返回。

              关于重置按钮:重置按钮是初始化的一种方式,其作用就是将本修改订单信息进行初始化。将清空货物信息、托运方信息、收货方信息、订单信息、操作员信息。

              关于保存和其他保存:保存时确认本修改订单无误以后将进行的确定提交操作,修改订单信息保存后将录入数据库,在保存前需要对要保存的订单信息进行检查,所有信息均为必填信息,若某项信息或某几项信息未填写则需要提示信息录入不完整只有录入完整方可提交。其他保存分为保存和保存并打印。保存为正常保存,保存并打印为保存成功后直接跳转到打印页面进行打印。

              关于打印和其他打印:打印是将本订单信息保存成功后进行打印,打印之前需要验证本订单的信息是否正确,以及数据是否完整。

              关于返回:返回即返回到主界面,放弃本次操作。若本修改订单尚未录入数据则直接返回前一个界面,若本修改订单已经录入数据则提示是否放弃本次录入数据返回前一个界面,用户确定则返回前一界面。

功能区域详细实现:

                  private void button11_Click(object sender, EventArgs e)

        {

            this.button11.ContextMenuStrip = null;

            Point p = this.button11.Parent.PointToScreen(this.button11.Location);

            p.Y += this.button11.Height;

            this.保存.Show(p);

        }

        BLL物流管理系统.订单管理.DingDanGuanLi_Update.DingDanGuanLi_UpdateClient myDingDanGuanLi_Update =new BLL物流管理系统.订单管理.DingDanGuanLi_Update.DingDanGuanLi_UpdateClient();

private void FRM_DingDanGuanLi_Update_Load(object sender, EventArgs e)

        {

DataTable dt = myDingDanGuanLi_Update.frmDingDanGuanLi_Update_SelectWangDian().Tables[0];

            cboJiJianWangDian.DataSource = dt;

            cboJiJianWangDian.DisplayMember = "网点名称";

            cboJiJianWangDian.ValueMember = "网点ID";

            cboShouHuoWangDian.DataSource = dt.Copy();

            cboShouHuoWangDian.DisplayMember = "网点名称";

            cboShouHuoWangDian.ValueMember = "网点ID";

cboJieSuanFangShi.DataSource = myDingDanGuanLi_Update.frmDingDanGuanLi_Update_SelectJieSuanFangShi().Tables[0];

            cboJieSuanFangShi.DisplayMember = "结算方式";

            cboJieSuanFangShi.ValueMember = "结算方式ID";

            CboLanShouZhangTai.DataSource = myDingDanGuanLi_Update.frmDingDanGuanLi_Update_SelectCboLanShouZhuangTai().Tables[0];

            CboLanShouZhangTai.DisplayMember = "货物揽收状态";

            CboLanShouZhangTai.ValueMember = "货物揽收状态ID";

            计费公式.DataSource = myDingDanGuanLi_Update.frmDingDanGuanLi_Update_SelectJiFeiGongShi().Tables[0];

            计费公式.DisplayMember = "计费公式";

            计费公式.ValueMember = "计费公式ID";

            dgvYuanGong.DataSource = myDingDanGuanLi_Update.frmDingDanGuanLi_Update_SelectYuanGong().Tables[0];

DataTable dtHuoYunDan = myDingDanGuanLi_Update.frmDingDanGuanLi_Update_Load_SelectHuoYunDan(HuoYunDanID).Tables[0];

 

 

            txtDingDanBianHao.Text = dtHuoYunDan.Rows[0]["单据编号"].ToString();

            dtpJieDanShiJian.Value = Convert.ToDateTime(dtHuoYunDan.Rows[0]["接单时间"].ToString());

            dtpSongDaShiJian.Value = Convert.ToDateTime(dtHuoYunDan.Rows[0]["要求送达时间"].ToString());

            txtTuoYunFang.Text = dtHuoYunDan.Rows[0]["托运方"].ToString();

            txtTuoYunLianXiRen.Text = dtHuoYunDan.Rows[0]["托运联系人"].ToString();

            txtTuoYunLianXiDianHua.Text = dtHuoYunDan.Rows[0]["托运联系电话"].ToString();

            rTxtFaHuoDiZhi.Text = dtHuoYunDan.Rows[0]["寄件地址"].ToString();

            tuoYunFangID = Convert.ToInt32(dtHuoYunDan.Rows[0]["托运方ID"].ToString());

            TxtShouHuoFang.Text = dtHuoYunDan.Rows[0]["收货方"].ToString();

            TxtShouHuoLianXiRen.Text = dtHuoYunDan.Rows[0]["收货联系人"].ToString();

            txtShouHuoLianXiDianHua.Text = dtHuoYunDan.Rows[0]["收货联系电话"].ToString();

            txtShouHuoDiZhi.Text = dtHuoYunDan.Rows[0]["收货地址"].ToString();

            shouHuoFangID = Convert.ToInt32(dtHuoYunDan.Rows[0]["收货方ID"].ToString());

cboJiJianWangDian.SelectedValue = dtHuoYunDan.Rows[0]["寄件网点ID"].ToString().Trim();

cboShouHuoWangDian.SelectedValue = dtHuoYunDan.Rows[0]["收货网点ID"].ToString().Trim();

            txtTiDanHao.Text = dtHuoYunDan.Rows[0]["提单号"].ToString().Trim();

            txtYeWuYuan.Text = dtHuoYunDan.Rows[0]["业务员"].ToString().Trim();

            txtzhiDanRen.Text = dtHuoYunDan.Rows[0]["制单人"].ToString().Trim();

            txtXiuDanRen.Text = dtHuoYunDan.Rows[0]["修单人"].ToString().Trim();

yeWuYuanID = Convert.ToInt32(dtHuoYunDan.Rows[0]["业务员_员工ID"].ToString().Trim());

zhiDanRenID = Convert.ToInt32(dtHuoYunDan.Rows[0]["制单人_员工ID"].ToString().Trim());

xiuDanRenID = Convert.ToInt32(dtHuoYunDan.Rows[0]["修单人_员工ID"].ToString().Trim());

            txtYunFeiZongJia.Text = dtHuoYunDan.Rows[0]["运费总价"].ToString().Trim();

cboJieSuanFangShi.SelectedValue = dtHuoYunDan.Rows[0]["结算方式ID"].ToString().Trim();

CboLanShouZhangTai.SelectedValue = dtHuoYunDan.Rows[0]["货物揽收状态ID"].ToString().Trim();

            rtxtBeiZhu.Text = dtHuoYunDan.Rows[0]["备注"].ToString().Trim();

            decZongJinE = Convert.ToDecimal(txtYunFeiZongJia.Text);

            pnlKeHu.Visible = false;

            //把明细表的数据绑定到DGV,如何给DGV里面的下拉框绑定数据

            DataTable dtHuoYunDanMingXi = myDingDanGuanLi_Update.frmDingDanGuanLi_Update_SelectHuoYunDanMingXiByHuoYunDanID(HuoYunDanID).Tables[0];

            for (int i = 0; i < dtHuoYunDanMingXi.Rows.Count; i++)

            {

dgvHuoWuList.Rows.Add();

dgvHuoWuList.Rows[i].Cells["货物名称"].Value = dtHuoYunDanMingXi.Rows[i]["货物名称"].ToString();

dgvHuoWuList.Rows[i].Cells["货运单明细ID"].Value = dtHuoYunDanMingXi.Rows[i]["货运单明细ID"].ToString();

dgvHuoWuList.Rows[i].Cells["货物ID"].Value = dtHuoYunDanMingXi.Rows[i]["货物ID"].ToString();

dgvHuoWuList.Rows[i].Cells["货物类别"].Value = dtHuoYunDanMingXi.Rows[i]["货物类别"].ToString();

dgvHuoWuList.Rows[i].Cells["数量"].Value = dtHuoYunDanMingXi.Rows[i]["数量"].ToString();

dgvHuoWuList.Rows[i].Cells["运费单价"].Value = dtHuoYunDanMingXi.Rows[i]["运费单价"].ToString();

dgvHuoWuList.Rows[i].Cells["计量单位"].Value = dtHuoYunDanMingXi.Rows[i]["计量单位"].ToString();

dgvHuoWuList.Rows[i].Cells["揽收否"].Value = dtHuoYunDanMingXi.Rows[i]["揽收否"].ToString();

dgvHuoWuList.Rows[i].Cells["计费公式"].Value = dtHuoYunDanMingXi.Rows[i]["计费公式ID"];

            }

            dgvHuoWuList.Rows.Add();

        }

        bool bolIfTuoYun = true;

        private void btnChaXunTuoYunFang_Click(object sender, EventArgs e)

        {

            bolIfTuoYun = true;

dgvKeHu.DataSource = myDingDanGuanLi_Update.frmDingDanGuanLi_Update_SelectKeHu(

txtTuoYunFang.Text.Trim()).Tables[0];

            pnlKeHu.Visible = true;

        }

        private void btnShouHuoFang_Click(object sender, EventArgs e)

        {

            bolIfTuoYun = false;

dgvKeHu.DataSource = myDingDanGuanLi_Update.frmDingDanGuanLi_Update_SelectKeHu(

TxtShouHuoFang.Text.Trim()).Tables[0];

            pnlKeHu.Visible = true;

        }

        int flagYuanGong = 0;//0业务员,1制单人,2修单人

        int tuoYunFangID = 0;

        int shouHuoFangID = 0;

        int yeWuYuanID = 0;

        int xiuDanRenID = 0;

        int zhiDanRenID = 0;

   private void dgvKeHu_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)

        {

            if (bolIfTuoYun)

            {

txtTuoYunFang.Text = dgvKeHu.CurrentRow.Cells["客户名称"].Value.ToString().Trim();

txtTuoYunLianXiRen.Text = dgvKeHu.CurrentRow.Cells["联系人"].Value.ToString().Trim();

txtTuoYunLianXiDianHua.Text = dgvKeHu.CurrentRow.Cells["联系电话"].Value.ToString().Trim();

rTxtFaHuoDiZhi.Text = dgvKeHu.CurrentRow.Cells["联系地址"].Value.ToString().Trim();

tuoYunFangID = Convert.ToInt32(dgvKeHu.CurrentRow.Cells["客户ID"].Value);

            }

            else

            {

TxtShouHuoFang.Text = dgvKeHu.CurrentRow.Cells["客户名称"].Value.ToString().Trim();

TxtShouHuoLianXiRen.Text = dgvKeHu.CurrentRow.Cells["联系人"].Value.ToString().Trim();

txtShouHuoLianXiDianHua.Text = dgvKeHu.CurrentRow.Cells["联系电话"].Value.ToString().Trim();

txtShouHuoDiZhi.Text = dgvKeHu.CurrentRow.Cells["联系地址"].Value.ToString().Trim();

shouHuoFangID = Convert.ToInt32(dgvKeHu.CurrentRow.Cells["客户ID"].Value);

            }

            pnlKeHu.Visible = false;

        }       

private void btnYeWuYuan_Click(object sender, EventArgs e)

        {

            flagYuanGong = 0;

            dgvYuanGong.Visible = true;

        }

        private void btnZhiDanRen_Click(object sender, EventArgs e)

        {

            flagYuanGong = 1;

            dgvYuanGong.Visible = true;

        }

        private void btnXiuDanRen_Click(object sender, EventArgs e)

        {

            flagYuanGong = 2;

            dgvYuanGong.Visible = true;

        }

        private void dgvYuanGong_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)

        {

            switch (flagYuanGong)

            {

case 0:

    {

        txtYeWuYuan.Text = dgvYuanGong.CurrentRow.Cells["员工姓名"].Value.ToString().Trim();

        yeWuYuanID = Convert.ToInt32(dgvYuanGong.CurrentRow.Cells["员工ID"].Value);

    }

    break;

case 1:

    {

        txtzhiDanRen.Text = dgvYuanGong.CurrentRow.Cells["员工姓名"].Value.ToString().Trim();

        zhiDanRenID = Convert.ToInt32(dgvYuanGong.CurrentRow.Cells["员工ID"].Value);

    }

    break;

case 2:

    {

        txtXiuDanRen.Text = dgvYuanGong.CurrentRow.Cells["员工姓名"].Value.ToString().Trim();

        xiuDanRenID = Convert.ToInt32(dgvYuanGong.CurrentRow.Cells["员工ID"].Value);

    }

    break;

            }

            dgvYuanGong.Visible = false;

        }

        decimal decZongJinE = 0;

        ArrayList arrDeleteMingXiID = new ArrayList();

        private void dgvHuoWuList_CellClick(object sender, DataGridViewCellEventArgs e)

        {

            if (e.RowIndex >= 0)

            {

if (e.ColumnIndex == 0)

{

    if (dgvHuoWuList.CurrentRow.Cells["数量"].Value != null &&

   dgvHuoWuList.CurrentRow.Cells["运费单价"].Value != null &&

   dgvHuoWuList.CurrentRow.Cells["货物名称"].Value != null)

    {

        decZongJinE -= Convert.ToDecimal(dgvHuoWuList.CurrentRow.Cells["数量"].Value) *

             Convert.ToDecimal(dgvHuoWuList.CurrentRow.Cells["运费单价"].Value);

        txtYunFeiZongJia.Text = decZongJinE.ToString();

    }

    if (dgvHuoWuList.CurrentRow.Cells["货运单明细ID"].Value != null)

    {

        arrDeleteMingXiID.Add(dgvHuoWuList.CurrentRow.Cells["货运单明细ID"].Value);

    }

 

    if (dgvHuoWuList.Rows[e.RowIndex].Cells["货物名称"].Value != null)

        dgvHuoWuList.Rows.RemoveAt(e.RowIndex);

}

if (e.ColumnIndex == 1)

{

    FRM_DingDanGuanLi_Update_SelectHuoWu myfrm =

        new FRM_DingDanGuanLi_Update_SelectHuoWu(this, e);

    myfrm.ShowDialog();

    dgvHuoWuList.BeginEdit(true);  

    dgvHuoWuList.EndEdit();

}

            }

        }

        private void dgvHuoWuList_CellEndEdit(object sender, DataGridViewCellEventArgs e)

        {

            if (dgvHuoWuList.CurrentRow.Cells["数量"].Value != null &&

dgvHuoWuList.CurrentRow.Cells["运费单价"].Value != null &&

dgvHuoWuList.CurrentRow.Cells["货物名称"].Value != null)

            {

decZongJinE += Convert.ToDecimal(dgvHuoWuList.CurrentRow.Cells["数量"].Value) *

     Convert.ToDecimal(dgvHuoWuList.CurrentRow.Cells["运费单价"].Value);

txtYunFeiZongJia.Text = decZongJinE.ToString();

            }

        }

        private void btnBaoCun_Update_Click(object sender, EventArgs e)

        {

            //保存单据

            //修改旧的货物

            //新增新的货物

            //删除被移除的货物

            //保存单据

            int countDanJu = myDingDanGuanLi_Update.btnBaoCun_Click_UpdateDanJu

(txtDingDanBianHao.Text,dtpJieDanShiJian.Value,yeWuYuanID,dtpSongDaShiJian.Value,

tuoYunFangID,txtTiDanHao.Text,shouHuoFangID,rTxtFaHuoDiZhi.Text,

txtShouHuoDiZhi.Text,Convert.ToInt32(cboJieSuanFangShi.SelectedValue),decZongJinE,

rtxtBeiZhu.Text,zhiDanRenID,xiuDanRenID,Convert.ToInt32(cboJiJianWangDian.SelectedValue),

Convert.ToInt32(cboShouHuoWangDian.SelectedValue),Convert.ToInt32(CboLanShouZhangTai.SelectedValue),HuoYunDanID);

            int countSuccess = 0;

            int countMingXi = 0;

            int countDelete = 0;

            if (countDanJu > 0)

            {

//保存修改的明细

foreach (DataGridViewRow dgvr in dgvHuoWuList.Rows)

{

    if (dgvr.Cells["货物ID"].Value != null &&

   dgvr.Cells["数量"].Value != null &&

   dgvr.Cells["计费公式"].Value != null &&

   dgvr.Cells["运费单价"].Value != null)

    {

        countMingXi++;

        if (dgvr.Cells["货运单明细ID"].Value != null)

        {

            countSuccess += myDingDanGuanLi_Update.btnBaoCun_Click_UpdateMingXi(

Convert.ToInt32(dgvr.Cells["货物ID"].Value),

Convert.ToDecimal(dgvr.Cells["数量"].Value),

Convert.ToInt32(dgvr.Cells["计费公式"].Value),

Convert.ToDecimal(dgvr.Cells["运费单价"].Value),

Convert.ToBoolean(dgvr.Cells["揽收否"].Value),

HuoYunDanID,

Convert.ToInt32(dgvr.Cells["货运单明细ID"].Value)

            );

        }

        else

        {

            //新增新的明细

            countSuccess += myDingDanGuanLi_Update.btnBaoCun_Click_InsertDanJuMingXi(

Convert.ToInt32(dgvr.Cells["货物ID"].Value),

Convert.ToDecimal(dgvr.Cells["数量"].Value),

Convert.ToInt32(dgvr.Cells["计费公式"].Value),

Convert.ToDecimal(dgvr.Cells["运费单价"].Value),

Convert.ToBoolean(dgvr.Cells["揽收否"].Value),

HuoYunDanID

            );

        }

    }

}

//删除旧的明细

for (int i = 0; i < arrDeleteMingXiID.Count; i++)

{

    countDelete += myDingDanGuanLi_Update.btnBaoCun_Click_DeleteDanJuMingXi(

            Convert.ToInt32(arrDeleteMingXiID[i])

        );

}

            }

            if (countMingXi == countSuccess && countDelete == arrDeleteMingXiID.Count && countSuccess > 0 && countDelete > 0)

            {

MessageBox.Show("修改成功!");

btnChongZhi_Click(null, null);

            }

            else

            {

if (arrDeleteMingXiID.Count > 0)

{

    MessageBox.Show("修改失败!");

}

else

{

    MessageBox.Show("修改成功!");

}

            }

        }

        private void btnChongZhi_Click(object sender, EventArgs e)

        {

            dgvHuoWuList.Rows.Clear();

            arrDeleteMingXiID.Clear();

            FRM_DingDanGuanLi_Update_Load(null, null);

        }

        private void btnFanHui_Click(object sender, EventArgs e)

        {

            this.Close();

        }

       

        private void btnGuanBi_Click(object sender, EventArgs e)

        {

            pnlKeHu.Visible = false;

        }

        private void dgvHuoWuList_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)

        {

            DataGridViewRow CurrentRow = this.dgvHuoWuList.Rows[e.RowIndex];

            CurrentRow.HeaderCell.Value = Convert.ToString(e.RowIndex + 1);

        }

        private void dgvKeHu_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)

        {

            DataGridViewRow CurrentRow = this.dgvKeHu.Rows[e.RowIndex];

            CurrentRow.HeaderCell.Value = Convert.ToString(e.RowIndex + 1);

        }

        private void txtTuoYunFang_TextChanged(object sender, EventArgs e)

        {

            bolIfTuoYun = true;

            dgvKeHu.DataSource = myDingDanGuanLi_Update.frmDingDanGuanLi_Update_SelectKeHu(

txtTuoYunFang.Text.Trim()

).Tables[0];

            pnlKeHu.Visible = true;

        }

        private void TxtShouHuoFang_TextChanged(object sender, EventArgs e)

        {

            bolIfTuoYun = false;

            dgvKeHu.DataSource = myDingDanGuanLi_Update.frmDingDanGuanLi_Update_SelectKeHu(

TxtShouHuoFang.Text.Trim()

).Tables[0];

            pnlKeHu.Visible = true;

        }

        private void timer1_Tick(object sender, EventArgs e)

        {

            pnlKeHu.Visible = false;

            timer1.Enabled = false;

        }

        private void toolStrip2_MouseEnter(object sender, EventArgs e)

        {

            timer1.Enabled = false;

        }

        private void dgvKeHu_MouseEnter(object sender, EventArgs e)

        {

            timer1.Enabled = false;

        }

        private void dgvKeHu_MouseLeave(object sender, EventArgs e)

        {

            timer1.Enabled = true;

        }

        private void toolStrip2_MouseLeave(object sender, EventArgs e)

        {

            timer1.Enabled = true;

        }

        private void dgvHuoWuList_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)

        {

            if (dgvHuoWuList.CurrentRow.Cells["数量"].Value != null &&

              dgvHuoWuList.CurrentRow.Cells["运费单价"].Value != null &&

              dgvHuoWuList.CurrentRow.Cells["货物名称"].Value != null)

            {

decZongJinE -= Convert.ToDecimal(dgvHuoWuList.CurrentRow.Cells["数量"].Value) *

     Convert.ToDecimal(dgvHuoWuList.CurrentRow.Cells["运费单价"].Value);

            }

        }