using BLL; using Model; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Linq.Expressions; using System.Text.RegularExpressions; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace FineUIPro.Web.CCP { public partial class CcpEdit : PageBase { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { hidCcpId.Text = Request.Params["CcpId"] != null ? Request.Params["CcpId"].ToString() : string.Empty; hidContractNo.Text = Request.Params["contractNo"] != null ? Request.Params["contractNo"].ToString() : string.Empty; var contractNos = from contractNo in Funs.DB.FC_SESRelatedData join cpt in Funs.DB.CPTList on contractNo.FO_NO equals cpt.Contract_No group contractNo by contractNo.FO_NO into g select g.Key; if (contractNos.Count() == 0) { Grid1.DataSource = null; Grid1.DataBind(); return; } ddlContractNo.DataTextField = "FO_NO"; ddlContractNo.DataValueField = "FO_NO"; ddlContractNo.DataSource = contractNos.ToList(); ddlContractNo.DataBind(); //Funs.FineUIPleaseSelect(ddlContractNo); ddlContractNo.SelectedValue = contractNos.FirstOrDefault(); BindGrid(); } } #region 绑定数据 /// /// 绑定CPTlist /// private void BindGrid() { if (string.IsNullOrWhiteSpace(ddlContractNo.SelectedValue)) { Alert.ShowInParent("必须选择一个合同号!"); return; } var ccpNo = string.Empty; int ccpId = 0; var upCptLs = new List(); string strSql = @"SELECT cpt.ID,cpt.CPT_No,cpt.Contract_No,cpt.Tax, (cpt.ContractorEng+' '+cpt.ContractorCN) AS Contractor, cpt.FC_Desctription,cpt.Report_Date,ps.PriceScheme, cpt.FC_Start_Date,cpt.FC_End_Date,u.UserName FROM dbo.CPTList cpt LEFT JOIN dbo.Base_PriceScheme ps ON ps.PriceSchemeId=cpt.FC_Price_Scheme LEFT JOIN dbo.Sys_User u ON u.UserId = cpt.UserId WHERE 1=1"; List listStr = new List(); if (!string.IsNullOrEmpty(hidCcpId.Text)) { strSql = strSql + " AND cpt.Contract_No=@Contract_No"; listStr.Add(new SqlParameter("@Contract_No", hidContractNo.Text)); } else { if (!string.IsNullOrEmpty(ddlContractNo.SelectedValue) && ddlContractNo.SelectedValue != Const._Null) { strSql = strSql + " AND cpt.Contract_No=@Contract_No"; listStr.Add(new SqlParameter("@Contract_No", ddlContractNo.SelectedValue.Trim())); } } if (!string.IsNullOrEmpty(txtCPT_No.Text)) { strSql = strSql + " AND cpt.CPT_No=@CPT_No"; listStr.Add(new SqlParameter("@CPT_No", txtCPT_No.Text)); } //添加的时候隐藏已经选择的cpt if (string.IsNullOrEmpty(hidCcpId.Text)) { var adCptLs = Funs.DB.CCP_List.Select(p => p.CPT_Id).ToList(); if (adCptLs.Count > 0) { var idstr = string.Format("'{0}'", string.Join("','", string.Join(",", adCptLs).Split(','))); strSql += string.Format(" and cpt.ID not in ({0})", idstr); } var itemContractNo = string.IsNullOrEmpty(hidContractNo.Text) ? ddlContractNo.SelectedValue : hidContractNo.Text; if (Funs.DB.CCP_List.Count(p => p.Contract_No == itemContractNo) > 0) { txtCcpNo.Text = string.Format("{0:d3}", Funs.DB.CCP_List.Where(p => p.Contract_No == itemContractNo).Max(p => p.CCP_No) + 1); } else { txtCcpNo.Text = string.Format("{0:d3}", 1); } } else { ccpId = int.Parse(hidCcpId.Text); upCptLs = Funs.DB.CCP_List.Where(p => p.Contract_No == hidContractNo.Text).ToList(); if (upCptLs.Count > 0) { var itemCpt = upCptLs.Where(p => p.ID != ccpId).ToList(); if (itemCpt.Count > 0) { var idstr = string.Format("'{0}'", string.Join("','", string.Join(",", itemCpt.Select(p => p.CPT_Id)).Split(','))); strSql += string.Format(" and cpt.ID not in ({0})", idstr); } ddlContractNo.SelectedValue = upCptLs.FirstOrDefault().Contract_No; ddlContractNo.Enabled = false; txtCcpNo.Text = string.Format("{0:d3}", upCptLs.FirstOrDefault(p => p.ID == ccpId).CCP_No); } else { txtCcpNo.Text = string.Format("{0:d3}", 1); } } strSql = strSql + " ORDER BY cpt.Contract_No ASC"; SqlParameter[] parameter = listStr.ToArray(); DataTable dt = SQLHelper.GetDataTableRunText(strSql, parameter); //Grid1.RecordCount = dt.Rows.Count; //var table = this.GetPagedDataTable(Grid1, dt); //Grid1.DataSource = table; Grid1.DataSource = dt; Grid1.DataBind(); //修改获取ses if (!string.IsNullOrEmpty(hidCcpId.Text)) { var ccpModel = upCptLs.FirstOrDefault(p => p.ID == ccpId); if (ccpModel != null) { if (!string.IsNullOrEmpty(ccpModel.Payment_Term)) ddlPaymentTerm.SelectedValue = ccpModel.Payment_Term; if (ccpModel.DeductionDeductionRateType != null) ddlDeductionDeductionRate.SelectedValue = ccpModel.DeductionDeductionRateType.ToString(); if (ccpModel.DelayedDeductionType != null) ddlDelayedDeduction.SelectedValue = ccpModel.DelayedDeductionType.ToString(); var cptls = Array.ConvertAll(ccpModel.CPT_Id.Split(','), p => int.TryParse(p, out int s) ? s : 0); var cptNos = dt.AsEnumerable().Where(p => cptls.Contains(p.Field("ID"))).Select(p => p.Field("CPT_No")).Distinct().ToList(); BindGrid1(cptNos); List selectedLs = new List(); var selectedCptIds = Array.ConvertAll(ccpModel.CPT_Id.Split(','), p => int.TryParse(p, out int s) ? s : 0); for (int i = 0; i < Grid1.Rows.Count; i++) { int rowCptId = Convert.ToInt32(Grid1.DataKeys[i][0]); //选中列 if (selectedCptIds.Contains(rowCptId)) selectedLs.Add(i); } Grid1.SelectedRowIndexArray = selectedLs.ToArray(); } } } /// /// 绑定SESList /// private void BindGrid1(List cptNos) { if (cptNos.Count > 0) { string strSql = @"SELECT a.ID,a.SES,a.CPT_No,a.Requistioner,a.Short_Description,a.End_Date, a.Budget,a.Quotation,a.Net_Value,a.Tax_Value,a.Deviation,a.By_Perc, a.Deduction,ISNULL(c.Con_Days,a.Con_Days) as Con_Days,a.BoQ_Days,a.SES_Days, a.Submit_Date,a.Remark,a.UserId,b.ContractorCN+' '+b.ContractorEng as ContractorName, b.Contract_No,c.ThirdParty_PriceReview FROM dbo.SESList as a inner join CPTList as b on a.CPT_No=b.CPT_No left join CCP_SESList as c on c.Ses_No=a.SES WHERE a.CPT_No in ('{0}') "; strSql = string.Format(strSql, string.Join("','", cptNos.ToArray())); List listStr = new List(); SqlParameter[] parameter = listStr.ToArray(); DataTable dt = SQLHelper.GetDataTableRunText(strSql, parameter); Grid2.RecordCount = dt.Rows.Count; Grid2.DataSource = dt; Grid2.DataBind(); JObject summary = new JObject(); summary.Add("Quotation", dt.AsEnumerable().Sum(s => s.Field("Quotation")).ToString("#,##0.00")); summary.Add("Tax_Value", dt.AsEnumerable().Sum(s => s.Field("Tax_Value")).ToString("#,##0.00")); summary.Add("Reduction", 0.00); summary.Add("DeductionDeduction_Rate", 0.00); summary.Add("DelayedDeduction", 0.00); summary.Add("Final_SettlementAmount", 0.00); Grid2.SummaryData = summary; } else { Grid2.DataSource = null; Grid2.DataBind(); } } #endregion #region 关闭弹出窗口 /// /// 关闭窗口 /// protected void Window1_Close(object sender, EventArgs e) { BindGrid(); } #endregion #region 排序 /// /// 排序 /// protected void Grid1_Sort(object sender, FineUIPro.GridSortEventArgs e) { Grid1.SortDirection = e.SortDirection; Grid1.SortField = e.SortField; BindGrid(); } #endregion #region 搜索 /// /// 搜索 /// protected void btnSearch_Click(object sender, EventArgs e) { BindGrid(); } /// /// 合同号筛选 /// protected void ddlContractNo_SelectedIndexChanged(object sender, EventArgs e) { BindGrid(); } #endregion #region 选择加载 /// /// 选择加载 /// protected void Grid1_RowClick(object sender, GridRowClickEventArgs e) { //判断选中的行中是否存在不同的合同 var cptNos = new List(); var cptTaxs = new List(); int[] selections = Grid1.SelectedRowIndexArray; foreach (int rowIndex in selections) { cptNos.Add(Grid1.DataKeys[rowIndex][1].ToString()); cptTaxs.Add(Grid1.DataKeys[rowIndex][3].ToString()); } //判断选中的合同是否是同一个合同 if (cptNos.Select(p => p.Substring(0, p.LastIndexOf("-"))).Distinct().Count() > 1) { Grid1.ClearSelection(); Alert.ShowInParent("不同合同的CPT不允许创建CCP!"); return; } else { if (cptTaxs.Distinct().Count() > 1) { Grid1.ClearSelection(); Alert.ShowInParent("不同税率的CPT不允许创建CCP!"); return; } } BindGrid1(cptNos); } #endregion #region 保存 /// /// 保存 /// protected void btnSave_Click(object sender, EventArgs e) { //判断必须选择一行 if (Grid1.SelectedRowIndexArray.Length == 0) { Alert.ShowInParent("Please select at least one record!"); return; } //判断付款条件是否选择 if (string.IsNullOrWhiteSpace(ddlPaymentTerm.SelectedValue)) { Alert.ShowInParent("请选择付款条件!"); return; } //判断CCP是否填写 if (string.IsNullOrWhiteSpace(txtCcpNo.Text)) { Alert.ShowInParent("CCP No不能为空!"); return; } else { if (IsNumeric(txtCcpNo.Text) == false) { Alert.ShowInParent("请输入正确的CCP No!"); return; } } //判断选中的行中是否存在不同的合同 var cptNos = new List(); var cptTaxs = new List(); var contractNo = string.Empty; int[] selections = Grid1.SelectedRowIndexArray; foreach (int rowIndex in selections) { cptNos.Add(Grid1.DataKeys[rowIndex][1].ToString()); contractNo = Grid1.DataKeys[rowIndex][2].ToString(); cptTaxs.Add(Grid1.DataKeys[rowIndex][3].ToString()); } //判断选中的合同是否是同一个合同 if (cptNos.Select(p => p.Substring(0, p.LastIndexOf("-"))).Distinct().Count() > 1 && string.IsNullOrEmpty(hidCcpId.Text)) { Grid1.ClearSelection(); Alert.ShowInParent("不同合同的CPT不允许创建CCP!"); return; } else { if (cptTaxs.Distinct().Count() > 1) { Grid1.ClearSelection(); Alert.ShowInParent("不同税率的CPT不允许创建CCP!"); return; } } //获取合同表 var contractModel = Funs.DB.View_FC_SESRelatedData.FirstOrDefault(p => p.FO_NO == contractNo); //获取CCP合同最大序号 var ccpNo = Funs.DB.CCP_List.Count(p => p.Contract_Id == contractModel.ID) == 0 ? 0 : Funs.DB.CCP_List.Where(p => p.Contract_Id == contractModel.ID).Max(p => p.CCP_No); //获取CPT信息 var cpts = Funs.DB.CPTList.Where(p => cptNos.Contains(p.CPT_No)).ToList(); //获取SES信息 var sess = Funs.DB.SESList.Where(p => cptNos.Contains(p.CPT_No)).ToList(); //筛选第一个cpt var cptModel = cpts.FirstOrDefault(); //数据操作 if (string.IsNullOrEmpty(hidCcpId.Text)) { var itemCcpId = int.Parse(txtCcpNo.Text); if (Funs.DB.CCP_List.Count(p => p.Contract_No == ddlContractNo.SelectedValue && p.CCP_No == itemCcpId) > 0) { Alert.ShowInParent("CCP No重复!"); return; } //添加CCP合同主表 var ccp = new CCP_List(); ccp.CPT_Id = string.Join(",", cpts.ConvertAll(p => p.ID)); ccp.Contract_Id = contractModel.ID; ccp.Contractor_CN = cptModel.ContractorCN; ccp.Contractor_Eng = cptModel.ContractorEng; ccp.Vendor_Code = contractModel.Vendor_NO; ccp.Contract_Title = cptModel.FC_Desctription; ccp.Contract_No = cptModel.Contract_No; ccp.Contract_Type = "Frame Contract 框架合同"; ccp.Buyer = CurrUser.UserName; ccp.Pricing_Method = contractModel.Pricing_Scheme; ccp.Contract_Budget = contractModel.Actual_Budget; ccp.Contract_PaymentTerm = string.Format("合同价款{0}支付,业主将在收到正确的发票原件以后{0}({1})日内支付。", ddlPaymentTerm.SelectedText, ddlPaymentTerm.SelectedValue == "0" ? "三十" : "九十", ddlPaymentTerm.SelectedValue == "0" ? "30" : "90"); ccp.Payment_Term = ddlPaymentTerm.SelectedValue; ccp.CCP_No = int.Parse(txtCcpNo.Text); //ccpNo + 1; ccp.CPT_No = string.Join(",", cpts.ConvertAll(p => p.CPT_No)); ccp.Created_Time = DateTime.Now; ccp.Created_UserId = CurrUser.UserId; ccp.Created_UserName = CurrUser.UserName; ccp.Created_ChineseName = CurrUser.ChineseName; ccp.DeductionDeductionRateType = int.Parse(ddlDeductionDeductionRate.SelectedValue); ccp.DelayedDeductionType = int.Parse(ddlDelayedDeduction.SelectedValue); Funs.DB.CCP_List.InsertOnSubmit(ccp); Funs.DB.SubmitChanges(); //循环添加ses信息 List ccpSess = new List(); var ccpModel = Funs.DB.CCP_List.FirstOrDefault(p => p.CCP_No == ccp.CCP_No && p.Contract_Id == ccp.Contract_Id); for (int i = 0; i < Grid2.Rows.Count; i++) { Dictionary> modifiedDict = Grid2.GetModifiedDict(); if (modifiedDict == null) modifiedDict = new Dictionary>(); if (string.IsNullOrEmpty(Grid2.DataKeys[i][0].ToString())) continue; int sesId = int.Parse(Grid2.DataKeys[i][0].ToString()); var itemSes = sess.FirstOrDefault(p => p.ID == sesId); var itemCpt = cpts.FirstOrDefault(p => p.CPT_No == Grid2.DataKeys[i][1].ToString()); CCP_SESList itemCcpSes = new CCP_SESList(); itemCcpSes.CCP_No = ccpModel.CCP_No; itemCcpSes.CCP_Id = ccpModel.ID; itemCcpSes.CPT_No = itemCpt.CPT_No; itemCcpSes.CPT_Id = itemCpt.ID; itemCcpSes.Ses_No = itemSes.SES; itemCcpSes.Ses_Id = itemSes.ID; itemCcpSes.Contract_No = contractModel.FO_NO; itemCcpSes.Contract_Id = contractModel.ID; itemCcpSes.Project_Name = itemSes.Short_Description; itemCcpSes.Contractor_Quotation = itemSes.Quotation; itemCcpSes.Incl_Tax = itemSes.Tax_Value; itemCcpSes.Con_Days = itemSes.Con_Days; if (modifiedDict.ContainsKey(i)) { itemCcpSes.ThirdParty_PriceReview = (modifiedDict[i].ContainsKey("ThirdParty_PriceReview") && !string.IsNullOrWhiteSpace(modifiedDict[i]["ThirdParty_PriceReview"].ToString())) ? decimal.Parse(modifiedDict[i]["ThirdParty_PriceReview"].ToString()) : 0; itemCcpSes.Reduction = decimal.Parse(modifiedDict[i]["Reduction"].ToString()); itemCcpSes.Reduction_Rate = decimal.Parse(modifiedDict[i]["Reduction_Rate"].ToString()); if (ddlDeductionDeductionRate.SelectedValue == "1") { itemCcpSes.Deduction_DeductionRate = decimal.Parse(modifiedDict[i]["DeductionDeduction_Rate"].ToString()); } else { itemCcpSes.Deduction_DeductionRate = 0; } if (ddlDelayedDeduction.SelectedValue == "1") { itemCcpSes.DelayedDeduction = decimal.Parse(modifiedDict[i]["DelayedDeduction"].ToString()); } else { itemCcpSes.DelayedDeduction = 0; } itemCcpSes.Final_SettlementAmount = decimal.Parse(modifiedDict[i]["Final_SettlementAmount"].ToString()); if (modifiedDict[i].ContainsKey("Con_Days") && !string.IsNullOrWhiteSpace(modifiedDict[i]["Con_Days"].ToString())) { itemCcpSes.Con_Days = int.Parse(modifiedDict[i]["Con_Days"].ToString()); } } else { itemCcpSes.ThirdParty_PriceReview = 0; itemCcpSes.Reduction = 0; itemCcpSes.Reduction_Rate = Math.Round(Convert.ToDecimal((itemSes.Quotation - itemSes.Tax_Value) / itemSes.Quotation) * 100, 2, MidpointRounding.AwayFromZero); if (ddlDeductionDeductionRate.SelectedValue == "1") { itemCcpSes.Deduction_DeductionRate = itemCcpSes.Reduction_Rate > 10 ? -(Math.Round(Convert.ToDecimal((float)itemSes.Tax_Value * 0.02), 2, MidpointRounding.AwayFromZero)) : 0; } else { itemCcpSes.Deduction_DeductionRate = 0; } if (ddlDelayedDeduction.SelectedValue == "1") { if (itemSes.Con_Days != null) { if (itemSes.Con_Days > 15 && itemSes.Con_Days <= 20) { itemCcpSes.DelayedDeduction = -Math.Round(Convert.ToDecimal((float)itemSes.Tax_Value * 0.05)); } else if (itemSes.Con_Days > 20) { itemCcpSes.DelayedDeduction = -Math.Round(Convert.ToDecimal((float)itemSes.Tax_Value * 0.1)); } else { itemCcpSes.DelayedDeduction = 0; } } else { itemCcpSes.DelayedDeduction = 0; } //itemCcpSes.DelayedDeduction = itemSes.Con_Days > 15 ? -(Math.Round(Convert.ToDecimal((float)itemSes.Tax_Value * 0.1))) : 0; } else { itemCcpSes.DelayedDeduction = 0; } itemCcpSes.Final_SettlementAmount = itemSes.Tax_Value + itemCcpSes.DelayedDeduction + itemCcpSes.DelayedDeduction; } itemCcpSes.Created_Time = DateTime.Now; itemCcpSes.Created_UserId = CurrUser.UserId; itemCcpSes.Created_UserName = CurrUser.UserName; itemCcpSes.Created_ChineseName = CurrUser.ChineseName; ccpSess.Add(itemCcpSes); } Funs.DB.CCP_SESList.InsertAllOnSubmit(ccpSess); Funs.DB.SubmitChanges(); hidCcpId.Text = ccpModel.ID.ToString(); } else { //修改CCP合同主表 int ccpId = int.Parse(hidCcpId.Text); var ccp = Funs.DB.CCP_List.FirstOrDefault(p => p.ID == ccpId); if (ccp != null) { var itemCcpId = int.Parse(txtCcpNo.Text); if (Funs.DB.CCP_List.Count(p => p.Contract_Id == ccp.Contract_Id && p.CCP_No == itemCcpId && p.ID != ccp.ID) > 0) { Alert.ShowInParent("CCP No重复!"); return; } ccp.CPT_Id = string.Join(",", cpts.ConvertAll(p => p.ID)); ccp.Contract_Id = contractModel.ID; ccp.Contractor_CN = cptModel.ContractorCN; ccp.Contractor_Eng = cptModel.ContractorEng; ccp.Vendor_Code = contractModel.Vendor_NO; ccp.Contract_Title = cptModel.FC_Desctription; ccp.Buyer = CurrUser.UserName; ccp.Pricing_Method = contractModel.Pricing_Scheme; ccp.Contract_Budget = contractModel.Actual_Budget; ccp.Contract_PaymentTerm = string.Format("合同价款{0}支付,业主将在收到正确的发票原件以后{0}({1})日内支付。", ddlPaymentTerm.SelectedText, ddlPaymentTerm.SelectedValue == "0" ? "三十" : "九十", ddlPaymentTerm.SelectedValue == "0" ? "30" : "90"); ccp.Payment_Term = ddlPaymentTerm.SelectedValue; ccp.CCP_No = int.Parse(txtCcpNo.Text); ccp.CPT_No = string.Join(",", cpts.ConvertAll(p => p.CPT_No)); ccp.Modify_Time = DateTime.Now; ccp.Modify_UserId = CurrUser.UserId; ccp.Modify_UserName = CurrUser.UserName; ccp.Modify_ChineseName = CurrUser.ChineseName; ccp.DeductionDeductionRateType = int.Parse(ddlDeductionDeductionRate.SelectedValue); ccp.DelayedDeductionType = int.Parse(ddlDelayedDeduction.SelectedValue); Funs.DB.SubmitChanges(); //删除已经存在的ccpses var deleteccpses = Funs.DB.CCP_SESList.Where(p => p.CCP_Id == ccpId).ToList(); Funs.DB.CCP_SESList.DeleteAllOnSubmit(deleteccpses); Funs.DB.SubmitChanges(); //循环添加ses信息 List ccpSess = new List(); for (int i = 0; i < Grid2.Rows.Count; i++) { Dictionary> modifiedDict = Grid2.GetModifiedDict(); if (modifiedDict == null) modifiedDict = new Dictionary>(); if (string.IsNullOrEmpty(Grid2.DataKeys[i][0].ToString())) continue; int sesId = int.Parse(Grid2.DataKeys[i][0].ToString()); var itemSes = sess.FirstOrDefault(p => p.ID == sesId); var itemCpt = cpts.FirstOrDefault(p => p.CPT_No == Grid2.DataKeys[i][1].ToString()); var itemDeleteCcp = deleteccpses.FirstOrDefault(p => p.Ses_No == itemSes.SES); CCP_SESList itemCcpSes = new CCP_SESList(); itemCcpSes.CCP_No = ccp.CCP_No; itemCcpSes.CCP_Id = ccp.ID; itemCcpSes.CPT_No = itemCpt.CPT_No; itemCcpSes.CPT_Id = itemCpt.ID; itemCcpSes.Ses_No = itemSes.SES; itemCcpSes.Ses_Id = itemSes.ID; itemCcpSes.Contract_No = contractModel.FO_NO; itemCcpSes.Contract_Id = contractModel.ID; itemCcpSes.Project_Name = itemSes.Short_Description; itemCcpSes.Contractor_Quotation = itemSes.Quotation; itemCcpSes.Incl_Tax = itemSes.Tax_Value; itemCcpSes.Con_Days = itemSes.Con_Days; if (modifiedDict.ContainsKey(i)) { if (itemDeleteCcp != null) { itemCcpSes.ThirdParty_PriceReview = (modifiedDict[i].ContainsKey("ThirdParty_PriceReview") && !string.IsNullOrWhiteSpace(modifiedDict[i]["ThirdParty_PriceReview"].ToString())) ? decimal.Parse(modifiedDict[i]["ThirdParty_PriceReview"].ToString()) : itemDeleteCcp.ThirdParty_PriceReview; itemCcpSes.Reduction = modifiedDict[i].ContainsKey("Reduction") ? decimal.Parse(modifiedDict[i]["Reduction"].ToString()) : itemDeleteCcp.Reduction; itemCcpSes.Reduction_Rate = modifiedDict[i].ContainsKey("Reduction_Rate") ? decimal.Parse(modifiedDict[i]["Reduction_Rate"].ToString()) : itemDeleteCcp.Reduction_Rate; itemCcpSes.Deduction_DeductionRate = modifiedDict[i].ContainsKey("DeductionDeduction_Rate") ? decimal.Parse(modifiedDict[i]["DeductionDeduction_Rate"].ToString()) : itemDeleteCcp.Deduction_DeductionRate; itemCcpSes.DelayedDeduction = modifiedDict[i].ContainsKey("DelayedDeduction") ? decimal.Parse(modifiedDict[i]["DelayedDeduction"].ToString()) : itemDeleteCcp.DelayedDeduction; itemCcpSes.Final_SettlementAmount = modifiedDict[i].ContainsKey("Final_SettlementAmount") ? decimal.Parse(modifiedDict[i]["Final_SettlementAmount"].ToString()) : itemDeleteCcp.Final_SettlementAmount; } else { itemCcpSes.ThirdParty_PriceReview = (modifiedDict[i].ContainsKey("ThirdParty_PriceReview") && !string.IsNullOrWhiteSpace(modifiedDict[i]["ThirdParty_PriceReview"].ToString())) ? decimal.Parse(modifiedDict[i]["ThirdParty_PriceReview"].ToString()) : 0; itemCcpSes.Reduction = modifiedDict[i]["Reduction"] != null ? decimal.Parse(modifiedDict[i]["Reduction"].ToString()) : 0; itemCcpSes.Reduction_Rate = decimal.Parse(modifiedDict[i]["Reduction_Rate"].ToString()); itemCcpSes.Deduction_DeductionRate = decimal.Parse(modifiedDict[i]["DeductionDeduction_Rate"].ToString()); itemCcpSes.DelayedDeduction = decimal.Parse(modifiedDict[i]["DelayedDeduction"].ToString()); itemCcpSes.Final_SettlementAmount = decimal.Parse(modifiedDict[i]["Final_SettlementAmount"].ToString()); } if (modifiedDict[i].ContainsKey("Con_Days") && !string.IsNullOrWhiteSpace(modifiedDict[i]["Con_Days"].ToString())) { itemCcpSes.Con_Days = int.Parse(modifiedDict[i]["Con_Days"].ToString()); } } else { itemCcpSes.ThirdParty_PriceReview = 0; itemCcpSes.Reduction = 0; itemCcpSes.Reduction_Rate = Math.Round(Convert.ToDecimal((itemSes.Quotation - itemSes.Tax_Value) / itemSes.Quotation) * 100, 2, MidpointRounding.AwayFromZero); itemCcpSes.Deduction_DeductionRate = itemCcpSes.Reduction_Rate > 10 ? -(Math.Round(Convert.ToDecimal((float)itemSes.Tax_Value * 0.02), 2, MidpointRounding.AwayFromZero)) : 0; if (itemSes.Con_Days != null) { if (itemSes.Con_Days > 15 && itemSes.Con_Days <= 20) { itemCcpSes.DelayedDeduction = -Math.Round(Convert.ToDecimal((float)itemSes.Tax_Value * 0.05)); } else if (itemSes.Con_Days > 20) { itemCcpSes.DelayedDeduction = -Math.Round(Convert.ToDecimal((float)itemSes.Tax_Value * 0.1)); } else { itemCcpSes.DelayedDeduction = 0; } } else { itemCcpSes.DelayedDeduction = 0; } // itemCcpSes.DelayedDeduction = itemSes.Con_Days > 15 ? -(Math.Round(Convert.ToDecimal((float)itemSes.Tax_Value * 0.1))) : 0; itemCcpSes.Final_SettlementAmount = itemSes.Tax_Value + itemCcpSes.DelayedDeduction + itemCcpSes.DelayedDeduction; } itemCcpSes.Created_Time = DateTime.Now; itemCcpSes.Created_UserId = CurrUser.UserId; itemCcpSes.Created_UserName = CurrUser.UserName; itemCcpSes.Created_ChineseName = CurrUser.ChineseName; ccpSess.Add(itemCcpSes); } Funs.DB.CCP_SESList.InsertAllOnSubmit(ccpSess); Funs.DB.SubmitChanges(); } hidCcpId.Text = ccp.ID.ToString(); } hidContractNo.Text = contractModel.FO_NO; BindGrid(); ShowNotify("操作成功!"); } /// /// 是否为数字 /// /// public bool IsNumeric(string str) { var result = false; try { int.Parse(str); result = true; } catch { result = false; } return result; } #endregion } }