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

667 lines
33 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}
}