Basf_FCL/FCL/FineUIPro.Web/CCP/CcpEdit.aspx.cs

667 lines
33 KiB
C#
Raw Normal View History

2024-05-08 10:17:02 +08:00
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
/// <summary>
/// 绑定CPTlist
/// </summary>
private void BindGrid()
{
if (string.IsNullOrWhiteSpace(ddlContractNo.SelectedValue))
{
Alert.ShowInParent("必须选择一个合同号!");
return;
}
var ccpNo = string.Empty;
int ccpId = 0;
var upCptLs = new List<CCP_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<SqlParameter> listStr = new List<SqlParameter>();
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<int>("ID"))).Select(p => p.Field<string>("CPT_No")).Distinct().ToList();
BindGrid1(cptNos);
List<int> selectedLs = new List<int>();
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();
}
}
}
/// <summary>
/// 绑定SESList
/// </summary>
private void BindGrid1(List<string> 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<SqlParameter> listStr = new List<SqlParameter>();
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<decimal>("Quotation")).ToString("#,##0.00"));
summary.Add("Tax_Value", dt.AsEnumerable().Sum(s => s.Field<decimal>("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
/// <summary>
/// 关闭窗口
/// </summary>
protected void Window1_Close(object sender, EventArgs e)
{
BindGrid();
}
#endregion
#region
/// <summary>
/// 排序
/// </summary>
protected void Grid1_Sort(object sender, FineUIPro.GridSortEventArgs e)
{
Grid1.SortDirection = e.SortDirection;
Grid1.SortField = e.SortField;
BindGrid();
}
#endregion
#region
/// <summary>
/// 搜索
/// </summary>
protected void btnSearch_Click(object sender, EventArgs e)
{
BindGrid();
}
/// <summary>
/// 合同号筛选
/// </summary>
protected void ddlContractNo_SelectedIndexChanged(object sender, EventArgs e)
{
BindGrid();
}
#endregion
#region
/// <summary>
/// 选择加载
/// </summary>
protected void Grid1_RowClick(object sender, GridRowClickEventArgs e)
{
//判断选中的行中是否存在不同的合同
var cptNos = new List<string>();
var cptTaxs = new List<string>();
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
/// <summary>
/// 保存
/// </summary>
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<string>();
var cptTaxs = new List<string>();
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<CCP_SESList> ccpSess = new List<CCP_SESList>();
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<int, Dictionary<string, object>> modifiedDict = Grid2.GetModifiedDict();
if (modifiedDict == null) modifiedDict = new Dictionary<int, Dictionary<string, object>>();
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<CCP_SESList> ccpSess = new List<CCP_SESList>();
for (int i = 0; i < Grid2.Rows.Count; i++)
{
Dictionary<int, Dictionary<string, object>> modifiedDict = Grid2.GetModifiedDict();
if (modifiedDict == null) modifiedDict = new Dictionary<int, Dictionary<string, object>>();
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("操作成功!");
}
/// <summary>
/// 是否为数字
/// </summary>
/// <returns></returns>
public bool IsNumeric(string str)
{
var result = false;
try
{
int.Parse(str);
result = true;
}
catch
{
result = false;
}
return result;
}
#endregion
}
}