protected void gv_RowCommand(Object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Audit")
            {
                GridViewRow      row = ((Control)e.CommandSource).BindingContainer as GridViewRow;
                int              QID = Convert.ToInt32(gvAdvanceApplicationDetail.DataKeys[row.DataItemIndex].Value.ToString());
                XMProductDetails xMProductDetails = base.XMProductDetailsService.GetXMProductDetailsById(QID);

                xMProductDetails.MinPrice = xMProductDetails.UnauditMinPrice;
                XMProductDetailsService.UpdateXMProductDetails(xMProductDetails);

                BindGrid();
            }
        }
        protected void gvAdvanceApplicationDetail_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            int           id  = (int)this.gvAdvanceApplicationDetail.DataKeys[e.RowIndex].Value;
            var           row = this.gvAdvanceApplicationDetail.Rows[e.RowIndex];
            decimal       d   = 0;
            var           ccPlatformTypeId        = row.FindControl("ccPlatformTypeId") as CodeControl;
            SimpleTextBox txtPlatformMerchantCode = row.FindControl("txtPlatformMerchantCode") as SimpleTextBox;
            var           hfPlatformMerchantCode  = row.FindControl("hfPlatformMerchantCode") as HiddenField;

            var           ccProductTypeId        = row.FindControl("ccProductTypeId") as CodeControl;
            TextBox       txtPlatformInventory   = row.FindControl("txtPlatformInventory") as TextBox;
            TextBox       txtColor               = row.FindControl("txtColor") as TextBox;                      //颜色
            TextBox       txtTManufacturersCode  = row.FindControl("txtTemporaryManufacturersCode") as TextBox; //临时厂家编码
            SimpleTextBox txtstrUrl              = row.FindControl("txtstrUrl") as SimpleTextBox;
            SimpleTextBox txtCostprice           = row.FindControl("txtCostprice") as SimpleTextBox;
            SimpleTextBox txtSaleprice           = row.FindControl("txtSaleprice") as SimpleTextBox;
            var           txtUnauditMinPrice     = row.FindControl("txtUnauditMinPrice") as TextBox;
            var           txtTCostprice          = row.FindControl("txtTCostprice") as TextBox;
            var           lblTCostpriceVaule     = row.FindControl("lblTCostpriceVaule") as Label;
            var           txtTDateTimeStart      = row.FindControl("txtTDateTimeStart") as HtmlInputText;
            var           txtTDateTimeEnd        = row.FindControl("txtTDateTimeEnd") as HtmlInputText;
            var           lblTDateTimeStartValue = row.FindControl("lblTDateTimeStartValue") as Label;
            var           lblTDateTimeEndValue   = row.FindControl("lblTDateTimeEndValue") as Label;

            lblTDateTimeStartValue.Text = "";
            lblTDateTimeEndValue.Text   = "";
            lblTCostpriceVaule.Text     = "";

            if (!string.IsNullOrEmpty(txtTManufacturersCode.Text.Trim()))
            {
                var productList = base.XMProductDetailsService.GetXMProductListByManufacturersCode(txtTManufacturersCode.Text.Trim(), ccPlatformTypeId.SelectedValue);
                if (productList != null && productList.Count > 0)
                {
                    if (productList[0].Id != id)
                    {
                        base.ShowMessage("该厂家编码已存在!");
                        return;
                    }
                }
            }

            //同平台,同厂家编码只能有一条记录
            var XMProductDetailsList = base.XMProductDetailsService.GetXMProductDetailsByPlatformMerchantCode(txtPlatformMerchantCode.Text.Trim(), int.Parse(ccPlatformTypeId.SelectedValue.ToString()), "");

            if (XMProductDetailsList != null && XMProductDetailsList.Count > 0)
            {
                if (XMProductDetailsList.Count != 1 || id != XMProductDetailsList[0].Id)
                {
                    base.ShowMessage("该平台该商品编码已存在!");
                    return;
                }
            }

            if (!decimal.TryParse(txtTCostprice.Text.Trim(), out d))
            {
                if (txtTCostprice.Text.Trim() != "")
                {
                    lblTCostpriceVaule.Text = "请输入正确的数值!";
                }
            }
            if (txtTCostprice.Text != "")
            {
                if (txtTDateTimeStart.Value.ToString() == "" || txtTDateTimeEnd.Value.ToString() == "")
                {
                    lblTDateTimeStartValue.Text = "请输入开始日期!";
                    lblTDateTimeEndValue.Text   = "请输入结束日期!";
                }
            }
            var chkIsMainPush = row.FindControl("chkIsMainPush") as CheckBox;

            if (lblTDateTimeStartValue.Text != "" || lblTDateTimeEndValue.Text != "")
            {
                return;
            }

            int QID = Convert.ToInt32(gvAdvanceApplicationDetail.DataKeys[e.RowIndex].Value.ToString());
            XMProductDetails        xMProductDetails         = base.XMProductDetailsService.GetXMProductDetailsById(QID);
            List <XMProductDetails> xMProductDetailsCodeList = null;

            if (txtPlatformMerchantCode.Text.Trim() != "")
            {
                xMProductDetailsCodeList = base.XMProductDetailsService.GetXMProductDetailsByPlatformMerchantCode(txtPlatformMerchantCode.Text.Trim(), ccPlatformTypeId.SelectedValue, txtColor.Text.Trim());
            }

            if (xMProductDetails == null) //新增
            {
                if (xMProductDetailsCodeList != null)
                {
                    if (xMProductDetailsCodeList.Count > 0)
                    {
                        base.ShowMessage("商品编码已存在!");
                        return;
                    }
                }

                XMProductDetails xMProductDetailsNew = new XMProductDetails();

                xMProductDetailsNew.ProductId            = this.ProductId;
                xMProductDetailsNew.PlatformTypeId       = ccPlatformTypeId.SelectedValue;
                xMProductDetailsNew.PlatformMerchantCode = txtPlatformMerchantCode.Text.Trim();
                xMProductDetailsNew.ProductTypeId        = ccProductTypeId.SelectedValue;

                if (txtPlatformInventory.Text != "")
                {
                    xMProductDetailsNew.PlatformInventory = Convert.ToInt32(txtPlatformInventory.Text.Trim());
                }

                if (txtColor.Text != "")
                {
                    xMProductDetailsNew.Color = txtColor.Text.Trim();
                }

                xMProductDetailsNew.strUrl = txtstrUrl.Text.Trim();

                decimal paramparse1 = 0;
                if (decimal.TryParse(txtCostprice.Text.Trim(), out paramparse1))
                {
                    xMProductDetailsNew.Costprice = Convert.ToDecimal(txtCostprice.Text.Trim());
                }
                else
                {
                    xMProductDetailsNew.Costprice = 0;
                }
                if (decimal.TryParse(txtSaleprice.Text.Trim(), out paramparse1))
                {
                    xMProductDetailsNew.Saleprice = Convert.ToDecimal(txtSaleprice.Text.Trim());
                }
                else
                {
                    xMProductDetailsNew.Saleprice = 0;
                }
                if (decimal.TryParse(txtUnauditMinPrice.Text.Trim(), out paramparse1))
                {
                    xMProductDetailsNew.UnauditMinPrice = Convert.ToDecimal(txtUnauditMinPrice.Text.Trim());
                }
                else
                {
                    xMProductDetailsNew.UnauditMinPrice = 0;
                }
                if (txtTCostprice.Text != "" || txtTManufacturersCode.Text.Trim() != "")
                {
                    if (txtTDateTimeStart.Value.ToString() != "" && txtTDateTimeEnd.Value.ToString() != "")
                    {
                        if (txtTCostprice.Text != "")
                        {
                            xMProductDetailsNew.TCostprice = Convert.ToDecimal(txtTCostprice.Text.Trim());
                        }
                        else
                        {
                            xMProductDetailsNew.TCostprice = null;
                        }
                        if (txtTManufacturersCode.Text.Trim() != "")
                        {
                            xMProductDetailsNew.TemporaryManufacturersCode = txtTManufacturersCode.Text.Trim();//临时厂家编码
                        }
                        else
                        {
                            xMProductDetailsNew.TemporaryManufacturersCode = "";
                        }

                        xMProductDetailsNew.TDateTimeStart = Convert.ToDateTime(txtTDateTimeStart.Value);
                        xMProductDetailsNew.TDateTimeEnd   = Convert.ToDateTime(txtTDateTimeEnd.Value).AddDays(+1).AddMinutes(-1);
                    }
                    else
                    {
                        base.ShowMessage("开始时间或结束时间不能为空!");
                        return;
                    }
                }
                else
                {
                    xMProductDetailsNew.TCostprice = null;
                    xMProductDetailsNew.TemporaryManufacturersCode = "";
                    xMProductDetailsNew.TDateTimeStart             = null;
                    xMProductDetailsNew.TDateTimeEnd = null;
                }

                xMProductDetailsNew.IsMainPush = chkIsMainPush.Checked;
                xMProductDetailsNew.IsEnable   = false;
                xMProductDetailsNew.CreateID   = HozestERPContext.Current.User.CustomerID;
                xMProductDetailsNew.CreateDate = DateTime.Now;
                xMProductDetailsNew.UpdateID   = HozestERPContext.Current.User.CustomerID;
                xMProductDetailsNew.UpdateDate = DateTime.Now;

                base.XMProductDetailsService.InsertXMProductDetails(xMProductDetailsNew);

                if (xMProductDetails != null)
                {
                    decimal minPrice        = xMProductDetails.MinPrice == null ? 0 : (decimal)xMProductDetails.MinPrice;
                    decimal unauditMinPrice = xMProductDetails.UnauditMinPrice == null ? 0 : (decimal)xMProductDetails.UnauditMinPrice;
                    if (minPrice != unauditMinPrice)
                    {
                        sendMail(xMProductDetailsNew.ManufacturersCode, xMProductDetailsNew.PlatformTypeName.CodeName);
                    }
                }
            }
            else //修改
            {
                if (xMProductDetailsCodeList != null)
                {
                    if (xMProductDetailsCodeList.Count > 0)
                    {
                        if (xMProductDetailsCodeList[0].Id != QID)//if (!txtPlatformMerchantCode.Text.Trim().Equals(hfPlatformMerchantCode.Value))
                        {
                            base.ShowMessage("商品编码已存在!");
                            return;
                        }
                    }
                }

                xMProductDetails.PlatformTypeId       = ccPlatformTypeId.SelectedValue;
                xMProductDetails.PlatformMerchantCode = txtPlatformMerchantCode.Text.Trim();
                xMProductDetails.ProductTypeId        = ccProductTypeId.SelectedValue;
                if (txtPlatformInventory.Text != "")
                {
                    xMProductDetails.PlatformInventory = Convert.ToInt32(txtPlatformInventory.Text.Trim());
                }
                xMProductDetails.strUrl = txtstrUrl.Text.Trim();
                xMProductDetails.Color  = txtColor.Text.Trim();

                decimal paramparse1 = 0;
                if (decimal.TryParse(txtCostprice.Text.Trim(), out paramparse1))
                {
                    xMProductDetails.Costprice = Convert.ToDecimal(txtCostprice.Text.Trim());
                }
                else
                {
                    xMProductDetails.Costprice = 0;
                }
                if (decimal.TryParse(txtSaleprice.Text.Trim(), out paramparse1))
                {
                    xMProductDetails.Saleprice = Convert.ToDecimal(txtSaleprice.Text.Trim());
                }
                else
                {
                    xMProductDetails.Saleprice = 0;
                }
                if (decimal.TryParse(txtUnauditMinPrice.Text.Trim(), out paramparse1))
                {
                    xMProductDetails.UnauditMinPrice = Convert.ToDecimal(txtUnauditMinPrice.Text.Trim());
                }
                else
                {
                    xMProductDetails.UnauditMinPrice = 0;
                }
                if (txtTCostprice.Text != "" || txtTManufacturersCode.Text.Trim() != "")
                {
                    if (txtTDateTimeStart.Value.ToString() != "" || txtTDateTimeEnd.Value.ToString() != "")
                    {
                        if (txtTCostprice.Text != "")
                        {
                            xMProductDetails.TCostprice = Convert.ToDecimal(txtTCostprice.Text.Trim());
                        }
                        else
                        {
                            xMProductDetails.TCostprice = null;
                        }
                        if (txtTManufacturersCode.Text.Trim() != "")
                        {
                            xMProductDetails.TemporaryManufacturersCode = txtTManufacturersCode.Text.Trim();//临时厂家编码
                        }
                        else
                        {
                            xMProductDetails.TemporaryManufacturersCode = "";
                        }

                        xMProductDetails.TDateTimeStart = Convert.ToDateTime(txtTDateTimeStart.Value);
                        xMProductDetails.TDateTimeEnd   = Convert.ToDateTime(txtTDateTimeEnd.Value).AddDays(+1).AddMinutes(-1);
                    }
                    else
                    {
                        base.ShowMessage("开始时间或结束时间不能为空!");
                        return;
                    }
                }
                else
                {
                    xMProductDetails.TCostprice = null;
                    xMProductDetails.TemporaryManufacturersCode = "";
                    xMProductDetails.TDateTimeStart             = null;
                    xMProductDetails.TDateTimeEnd = null;
                }

                xMProductDetails.IsMainPush = chkIsMainPush.Checked;
                xMProductDetails.UpdateID   = HozestERPContext.Current.User.CustomerID;
                xMProductDetails.UpdateDate = DateTime.Now;
                base.XMProductDetailsService.UpdateXMProductDetails(xMProductDetails);

                decimal minPrice        = xMProductDetails.MinPrice == null ? 0 : (decimal)xMProductDetails.MinPrice;
                decimal unauditMinPrice = xMProductDetails.UnauditMinPrice == null ? 0 : (decimal)xMProductDetails.UnauditMinPrice;
                if (minPrice != unauditMinPrice)
                {
                    sendMail(xMProductDetails.ManufacturersCode, xMProductDetails.PlatformTypeName.CodeName);
                }
            }
            //重新绑定
            this.RowEditIndex = -1;
            BindGrid();
        }
        protected void btnCalculate_Click(object sender, DirectEventArgs e)
        {
            string OrderID = CommonHelper.QueryString("ID");

            XMOrderInfo entity_Order = XMOrderInfoService.GetXMOrderInfoByID(int.Parse(OrderID));

            if (entity_Order == null)
            {
                ExtNet.Msg.Alert("提示", "订单信息不存在").Show();
                return;
            }

            XMProject entity_Project = XMProjectService.GetXMProjectById(entity_Order.ProjectId);

            if (entity_Project == null)
            {
                ExtNet.Msg.Alert("提示", "项目信息不存在").Show();
                return;
            }

            if (entity_Project.ProjectName == "曲美")
            {
                //干线费用
                decimal mainMoney = 0;
                //支线费用
                decimal  branchMoney = 0;
                string   province    = entity_Order.Province;
                string   city        = entity_Order.City;
                string   region      = entity_Order.County;
                string[] mes         = entity_Order.CustomerServiceRemark.Split(new string[] { "///" }, StringSplitOptions.RemoveEmptyEntries);
                if (mes.Count() <= 0)
                {
                    ExtNet.Msg.Alert("提示", "解析错误").Show();
                    return;
                }
                string[] mes1 = mes[0].Split(new string[] { "+" }, StringSplitOptions.RemoveEmptyEntries);
                if (mes1.Count() <= 0)
                {
                    ExtNet.Msg.Alert("提示", "解析错误").Show();
                    return;
                }
                //查询干线物流公司信息
                List <CodeList> codeList = CodeService.GetCodeListInfoByCodeTypeIDAndCodeName(243, mes1[0]);
                if (codeList.Count <= 0)
                {
                    ExtNet.Msg.Alert("提示", "找不到干线物流公司信息").Show();
                    return;
                }

                int logisticsMainID = codeList[0].CodeID;
                //查询干线物流单价费率
                BusinessLogic.ManageProject.XMLogisticsFeeMain entityMain = XMLogisticsFeeMainService.
                                                                            getSingle(a => a.ProjectID == entity_Project.Id && a.WareHouseID == 758 && province.StartsWith(a.Province) && city.StartsWith(a.City) && region.StartsWith(a.Area) && a.LogisticsID == logisticsMainID);
                if (entityMain == null)
                {
                    ExtNet.Msg.Alert("提示", "找不到对应干线单价费率").Show();
                    return;
                }

                //只计算干线费用
                if (mes1.Count() == 1)
                {
                    //对应干线单价费率
                    decimal main = (decimal)entityMain.Fee;

                    List <XMOrderInfoProductDetails> list_OrderProductDetails = XMOrderInfoProductDetailsService.GetXMOrderInfoProductDetailsList(entity_Order.ID);
                    foreach (var item in list_OrderProductDetails)
                    {
                        string ProductVolume = string.IsNullOrEmpty(item.ProductVolume) ? "0" : item.ProductVolume;
                        mainMoney = mainMoney + main * decimal.Parse(ProductVolume) * (int)item.ProductNum;
                    }
                }
                //计算干线和支线费用
                else if (mes1.Count() == 2)
                {
                    //对应干线单价费率
                    decimal main = (decimal)entityMain.Fee;
                    //查询支线物流公司信息
                    List <CodeList> codeList1 = CodeService.GetCodeListInfoByCodeTypeIDAndCodeName(244, mes1[1]);
                    if (codeList.Count <= 0)
                    {
                        ExtNet.Msg.Alert("提示", "找不到支线物流公司信息").Show();
                        return;
                    }

                    List <XMOrderInfoProductDetails> list_OrderProductDetails = XMOrderInfoProductDetailsService.GetXMOrderInfoProductDetailsList(entity_Order.ID);
                    foreach (var item in list_OrderProductDetails)
                    {
                        //对应支线单价费率
                        decimal          Branch               = 0;
                        XMProduct        entityProduct        = XMProductService.getXMProductByManufacturersCode(item.TManufacturersCode);
                        XMProductDetails entityProductDetails = XMProductDetailsService.GetXMProductDetailsListByProductId(entityProduct.Id)[0];
                        //查询支线物流单价费率
                        int logisticsBranchID = codeList1[0].CodeID;
                        BusinessLogic.ManageProject.XMLogisticsFeeBranch entityBranch = XMLogisticsFeeBranchService.
                                                                                        getSingle(a => a.ProjectID == entity_Project.Id && a.LogisticsID == logisticsBranchID && a.ProductCategoryID == entityProductDetails.ProductTypeId);
                        if (entityBranch == null)
                        {
                            ExtNet.Msg.Alert("提示", "找不到对应支线单价费率").Show();
                            return;
                        }

                        Branch = (decimal)entityBranch.Fee;
                        //商品体积
                        string ProductVolume = string.IsNullOrEmpty(entityProduct.ProductVolume) ? "0" : entityProduct.ProductVolume;
                        mainMoney   = mainMoney + main * decimal.Parse(ProductVolume) * (int)item.ProductNum;
                        branchMoney = branchMoney + Branch * (int)item.ProductNum;
                    }
                }
                //事务
                using (TransactionScope scope = new TransactionScope())
                {
                    List <BusinessLogic.ManageProject.XMLogisticsFeeDetail> list = XMLogisticsFeeDetailService.getList(a => a.Type != 3);
                    foreach (var item in list)
                    {
                        XMLogisticsFeeDetailService.delete(item);
                    }

                    if (mainMoney >= 0)
                    {
                        XMLogisticsFeeDetailService.InsertXMLogisticsFeeDetail(new BusinessLogic.ManageProject.XMLogisticsFeeDetail()
                        {
                            OrderID    = entity_Order.ID,
                            Type       = 1,
                            Fee        = mainMoney,
                            CreateID   = HozestERPContext.Current.User.CustomerID,
                            CreateDate = DateTime.Now,
                        });
                    }
                    if (branchMoney >= 0)
                    {
                        XMLogisticsFeeDetailService.InsertXMLogisticsFeeDetail(new BusinessLogic.ManageProject.XMLogisticsFeeDetail()
                        {
                            OrderID    = entity_Order.ID,
                            Type       = 2,
                            Fee        = branchMoney,
                            CreateID   = HozestERPContext.Current.User.CustomerID,
                            CreateDate = DateTime.Now,
                        });
                    }

                    scope.Complete();
                }
            }
            else
            {
                ExtNet.Msg.Alert("提示", "不在计算范围内").Show();
                return;
            }
        }