// 獲取查詢表單的值
function getGridValue() {
var a = [];
$("#GridView tr td input").each(function (i, v) { //針對tb表格下的所有td進行遍歷
a[i] = $(this).val();
})
//console.log(a);
var aa = [];
$("#GridView tr td").each(function (i, v) { //針對tb表格下的所有td進行遍歷
aa[i] = $(this).text();
})
//console.log(aa);
var obj = [];
var num = 0;
for (var i = 0; i < aa.length; i++) {
obj[num] = {
Detail_RID: a[num*2 + 0],
Organization: a[num * 2 + 1],
Emp_No: aa[i + 3],
Effect_Date: aa[i + 5],
Base_Wage: aa[i + 6],
Base_Bonus1: aa[i + 7],
Employee_Type: aa[i + 10],
Position_Code: aa[i + 13],
Grade_Code: aa[i + 16],
Join_Date: aa[i + 18]
}
num++;
i += 18;
}
//console.log(obj);
return obj;
}
function getFormValue() {
// var form = $("#form1 input").not("[id^='__']").serialize();
// console.log(form);
var obj = {
txtRID: $("#txtRID").val(),
txtNote_No: $("#txtNote_No").val(),
FunctionID: FunctionID,
PageID: PageID,
Action: Action,
Encry: Encry,
Need_Approve: Need_Approve,
IsAutoNoteNoFlag: IsAutoNoteNoFlag
};
//console.log(obj);
return obj;
}
function DoCheckNew(flag) {
var data = JSON.stringify(getGridValue());
//console.log(data);
var form = JSON.stringify(getFormValue());
//console.log(form);
var url = "Ajax.aspx?id=DoCheck&t=" + Math.random(); //給后台傳參,防止緩存
console.log(url);
$.ajax({
type: "POST",
dataType: "text",
url: url,
traditional: true,
data: { "data": data, "form": form },
cache: false,
async: false,
success: function (result) {
console.log(result);
if (result == "") {
flag = true;
swal("Good!", "", "success");
} else {
swal("", result, "error");
}
}
});
return flag;
}
function DoSaveNew(flag) {
var data = JSON.stringify(getGridValue());
var form = JSON.stringify(getFormValue());
var url = "Ajax.aspx?id=DoSave&t=" + Math.random(); //給后台傳參,防止緩存
$.ajax({
type: "POST",
dataType: "text",
url: url,
traditional: true,
data: { "data": data, "form": form },
cache: false,
async: false,
success: function (result) {
console.log(result);
if (result == "") {
flag = true;
} else {
swal("", result, "error");
}
}
});
return flag;
}
#region 驗證DoCheck,保存DoSave
case "DoCheck":
case "DoSave":
{
String data = Request["data"];
String form = Request["form"];
String errorMsg = "";
//String Model_Name = Language.GetText(FunctionID + "." + "Model.Allowance_Deduct_Detail.Name", "CN:明細~EN:Detail");
string LangType = Tools.DataTypeConvertHelper.ToString(Session["LangType"]);
String Model_Name = GetText(LangType, "明細", "Detail");
JavaScriptSerializer js = new JavaScriptSerializer();
List<Dictionary<string, object>> listdicData = js.Deserialize<List<Dictionary<string, object>>>(data);
JavaScriptSerializer js2 = new JavaScriptSerializer();
Dictionary<string, string> formData = js2.Deserialize<Dictionary<string, string>>(form);
#region 獲取單頭信息
if (formData.Count>0)
{
string Header_RID = formData["txtRID"].ToString();
string txtNote_No = formData["txtNote_No"].ToString();
string FunctionID = formData["FunctionID"].ToString();
string PageID = formData["PageID"].ToString();
string Action = formData["Action"].ToString();
string Encry = formData["Encry"].ToString();
string Need_Approve = formData["Need_Approve"].ToString();
string IsAutoNoteNoFlag = formData["IsAutoNoteNoFlag"].ToString();
if (IsAutoNoteNoFlag=="1")
{
#region 獲取單號
string SerialNum = "";
if (Action.Equals("ADD") || Action.Equals("COPY"))
{
if (Encry == "TRUE")
{
SerialNum = getSerialNum("BaseWageType01", LoginUserID);
//判斷數據庫中是否已經存在這個單號,如果存在則一直產生
while (true)
{
string s = ExecuteSqlValue("Base_Wage_En_Header", "Note_No", SerialNum, "Note_No");
if (String.IsNullOrEmpty(s))
{
break;
}
SerialNum = getSerialNum("BaseWageType01", LoginUserID);
}
}
else
{
SerialNum = getSerialNum("BaseWageType01", LoginUserID);
//判斷數據庫中是否已經存在這個單號,如果存在則一直產生
while (true)
{
string s = ExecuteSqlValue("Base_Wage_Header", "Note_No", SerialNum, "Note_No");
if (String.IsNullOrEmpty(s))
{
break;
}
SerialNum = getSerialNum("BaseWageType01", LoginUserID);
}
}
txtNote_No = SerialNum;
}
#endregion
}
if (String.IsNullOrEmpty(Header_RID))
{
errorMsg += GetText(LangType, "Header RID不能為空!", "Header RID cannot be empty!") + " \n ";
}
if (String.IsNullOrEmpty(txtNote_No))
{
errorMsg += GetText(LangType, "單號不能為空!", "Note No cannot be empty!") + " \n ";
}
if (!String.IsNullOrEmpty(errorMsg))
{
Response.Write(errorMsg);
Response.End();
}
#region 獲取明細信息
if (listdicData.Count > 0)
{
string sJSON2 = String.Empty;
SqlParameter[] sqlParas = new SqlParameter[] {
new SqlParameter("@SourceID",SqlDbType.VarChar,100)
,new SqlParameter("@LangType",SqlDbType.VarChar,20)
,new SqlParameter("@Keyword",SqlDbType.NVarChar,200)
,new SqlParameter("@Keyword1",SqlDbType.NVarChar,200)
,new SqlParameter("@Keyword2",SqlDbType.NVarChar,200)
,new SqlParameter("@Keyword3",SqlDbType.NVarChar,200)
,new SqlParameter("@Keyword4",SqlDbType.NVarChar,200)
,new SqlParameter("@Keyword5",SqlDbType.NVarChar,200)
,new SqlParameter("@Keyword6",SqlDbType.NVarChar,200)
,new SqlParameter("@Keyword7",SqlDbType.NVarChar,200)
,new SqlParameter("@Keyword8",SqlDbType.NVarChar,200)
,new SqlParameter("@Keyword9",SqlDbType.NVarChar,200)
,new SqlParameter("@Keyword10",SqlDbType.NVarChar,200)
,new SqlParameter("@Keyword11",SqlDbType.NVarChar,200)
,new SqlParameter("@Keyword12",SqlDbType.NVarChar,200)
};
bool b = true;//默認為按工號判斷
if (String.IsNullOrEmpty(listdicData[0]["Emp_No"].ToString()))
{
b = false;//按非工號判斷
}
int linnumber = 0;
for (int i = 0; i < listdicData.Count; i++)
{
string Detail_RID = listdicData[i]["Detail_RID"].ToString();
string Organization = listdicData[i]["Organization"].ToString();
string Emp_No = listdicData[i]["Emp_No"].ToString();
string Effect_Date = listdicData[i]["Effect_Date"].ToString();
string Base_Wage = listdicData[i]["Base_Wage"].ToString();
string Base_Bonus1 = listdicData[i]["Base_Bonus1"].ToString();
string Employee_Type = listdicData[i]["Employee_Type"].ToString();
string Position_Code = listdicData[i]["Position_Code"].ToString();
string Grade_Code = listdicData[i]["Grade_Code"].ToString();
string Join_Date = listdicData[i]["Join_Date"].ToString();
linnumber++;
#region 字段是否存在
if (String.IsNullOrEmpty(Detail_RID))
{
errorMsg += String.Format(GetText(LangType, "第{0}行的RID不能為空!", "{0} RID cannot be empty!"), linnumber) + " \n ";
}
if (b)//按工號判斷
{
if (String.IsNullOrEmpty(Emp_No))
{
errorMsg += String.Format(GetText(LangType, "第{0}行的工號不能為空!", "{0} Employee No cannot be empty!"), linnumber) + " \n ";
}
}
else//按非工號判斷
{
if (String.IsNullOrEmpty(Emp_No))
{
if (String.IsNullOrEmpty(Organization))
{
errorMsg += String.Format(GetText(LangType, "第{0}行的所屬架構不能為空!", "{0} Organization cannot be empty!"), linnumber) + " \n ";
}
if (String.IsNullOrEmpty(Employee_Type) && String.IsNullOrEmpty(Position_Code) && String.IsNullOrEmpty(Grade_Code))
{
errorMsg += String.Format(GetText(LangType, "第{0}行的工種和職位和技術等級不能同時為空!", "{0} Employee Type and Position Code and Technical Level cannot be empty!"), linnumber) + " \n ";
}
}
else
{
errorMsg += String.Format(GetText(LangType, "第{0}行的工號要為空!", "{0} Employee No will be empty!"), linnumber) + " \n ";
}
}
if (String.IsNullOrEmpty(Effect_Date))
{
errorMsg += String.Format(GetText(LangType, "第{0}行的生效日期不能為空!", "{0} Effect Date cannot be empty!"), linnumber) + " \n ";
}
if (String.IsNullOrEmpty(Base_Wage) || Base_Wage == "0")
{
errorMsg += String.Format(GetText(LangType, "第{0}行的基本工資不能為空!", "{0} Base Wage cannot be empty!"), linnumber) + " \n ";
}
if (!String.IsNullOrEmpty(errorMsg))
{
break;
}
#endregion
#region 生效日期只能在同一個月
if (linnumber != listdicData.Count)
{
var End_Date_Next = listdicData[linnumber]["Effect_Date"];
string End_Date_year = Effect_Date.ToString().Substring(7);
string End_Date_year_next = End_Date_Next.ToString().Substring(7);
string End_Date_Month = Effect_Date.ToString().Substring(3, 3);
string End_Date_Month_next = End_Date_Next.ToString().Substring(3, 3);
if (End_Date_year != End_Date_year_next || End_Date_Month != End_Date_Month_next)
{
errorMsg += GetText(LangType, "同一單號的基本工資生效日期只能在同一個月,請重新輸入!", "In the same note NO, the effect date must be in the same month, please re-enter it!") + " \n ";
break;
}
}
#endregion
#region 檢測grid的數據
if (linnumber < listdicData.Count)
{
for (int ii = i + 1; ii < listdicData.Count; ii++)
{
string Emp_No_Next = listdicData[ii]["Emp_No"].ToString();
string Effect_Date_Next = listdicData[ii]["Effect_Date"].ToString();
string Organization_Next = listdicData[ii]["Organization"].ToString();
string Employee_Type_Next = listdicData[ii]["Employee_Type"].ToString();
string Position_Code_Next = listdicData[ii]["Position_Code"].ToString();
string Grade_Code_Next = listdicData[ii]["Grade_Code"].ToString();
if (b)//按工號判斷
{
if (Emp_No == Emp_No_Next && Effect_Date == Effect_Date_Next)
{
errorMsg += String.Format(GetText(LangType, "第{0}行,相同工號,相同生效日期,只能有一筆記錄!", "The Employee's choice of records Date of {0} row already existed ,Please enter again!"), ii) + " \n ";
break;
}
}
else//按非工號判斷
{
if (!String.IsNullOrEmpty(Employee_Type))
{
if (Effect_Date == Effect_Date_Next && Organization == Organization_Next && Employee_Type == Employee_Type_Next)
{
errorMsg += String.Format(GetText(LangType, "第{0}行,相同生效日期,相同架構,相同工種,只能有一筆記錄!", "The Employee's choice of records Date of {0} row already existed ,Please enter again!"), ii) + " \n ";
break;
}
}
if (!String.IsNullOrEmpty(Position_Code))
{
if (Effect_Date == Effect_Date_Next && Organization == Organization_Next && Position_Code == Position_Code_Next)
{
errorMsg += String.Format(GetText(LangType, "第{0}行,相同生效日期,相同架構,相同職位,只能有一筆記錄!", "The Employee's choice of records Date of {0} row already existed ,Please enter again!"), ii) + " \n ";
break;
}
}
if (!String.IsNullOrEmpty(Grade_Code))
{
if (Effect_Date == Effect_Date_Next && Organization == Organization_Next && Grade_Code == Grade_Code_Next)
{
errorMsg += String.Format(GetText(LangType, "第{0}行,相同生效日期,相同架構,相同技術等級,只能有一筆記錄!", "The Employee's choice of records Date of {0} row already existed ,Please enter again!"), ii) + " \n ";
break;
}
}
}
}
}
#endregion
DateTime Effect = StringToDate(Effect_Date);
#region 數據庫數據檢查
if (string.IsNullOrEmpty(errorMsg))
{
if (Action.Equals("ADD") || Action.Equals("COPY"))
{
sqlParas[0].Value = "DoCheckInsert";
}
else
{
sqlParas[0].Value = "DoCheckUpdate";
}
sqlParas[1].Value = LangType;
sqlParas[2].Value = Header_RID;
sqlParas[3].Value = Detail_RID;
sqlParas[4].Value = txtNote_No;
sqlParas[5].Value = Emp_No;
if (String.IsNullOrEmpty(Effect.ToString()))
{
sqlParas[6].Value = Effect;
}
else
{
sqlParas[6].Value = Effect.ToString("yyyy-MM-dd");
}
sqlParas[7].Value = Organization;
sqlParas[8].Value = Employee_Type;
sqlParas[9].Value = Position_Code;
sqlParas[10].Value = Grade_Code;
sqlParas[11].Value = b;//是否按工號判斷
if (String.IsNullOrEmpty(Join_Date))
{
sqlParas[12].Value = Join_Date;
}
else
{
sqlParas[12].Value = StringToDate(Join_Date).ToString("yyyy-MM-dd");
}
sqlParas[13].Value = Encry;
sqlParas[14].Value = "";
DataSet dt = SQlHelper.ExecuteToDataSet("p_HRIS404CheckData", CommandType.StoredProcedure, sqlParas);
if (dt.Tables.Count > 0)
{
string result = dt.Tables[0].Rows[0][0].ToString();
if (!String.IsNullOrEmpty(result))
{
result = result.ToString().Substring(1);
string[] arr = result.Split(',');
for (var j = 0; j < arr.Length; j++)
{
#region 錯誤信息
if (arr[j] == "exist")
{
errorMsg += String.Format(GetText(LangType, "第{0}行記錄重復!", "{0} records exist!"), linnumber) + " \n ";
}
else if (arr[j] == "NoteNoRepeat")
{
errorMsg += String.Format(GetText(LangType, "第{0}行單號重復,請重新輸入!", "{0} The Note No repeat, please re-enter it!"), linnumber) + " \n ";
}
#endregion
}
}
}
}
#endregion
}
}
else
{
errorMsg += GetText(LangType, "請至少輸入一條補扣薪明細記錄!", "Please enter at least one allowance deduct detail record!") + " \n ";
}
#endregion
#region 保存DoSave
if (id == "DoSave")
{
string Keyword = "";
Keyword = Header_RID;
string sJSON2 = String.Empty;
SqlParameter[] sqlParas = new SqlParameter[] {
new SqlParameter("@SourceID",SqlDbType.VarChar,100)
,new SqlParameter("@LangType",SqlDbType.VarChar,20)
,new SqlParameter("@Keyword",SqlDbType.NVarChar,200)
,new SqlParameter("@Keyword1",SqlDbType.NVarChar,200)
,new SqlParameter("@Keyword2",SqlDbType.NVarChar,200)
,new SqlParameter("@Keyword3",SqlDbType.NVarChar,200)
,new SqlParameter("@Keyword4",SqlDbType.NVarChar,200)
,new SqlParameter("@Keyword5",SqlDbType.NVarChar,200)
,new SqlParameter("@Keyword6",SqlDbType.NVarChar,200)
,new SqlParameter("@Keyword7",SqlDbType.NVarChar,200)
,new SqlParameter("@Keyword8",SqlDbType.NVarChar,200)
,new SqlParameter("@Keyword9",SqlDbType.NVarChar,200)
,new SqlParameter("@Keyword10",SqlDbType.NVarChar,200)
,new SqlParameter("@Keyword11",SqlDbType.NVarChar,200)
,new SqlParameter("@Keyword12",SqlDbType.NVarChar,200)
,new SqlParameter("@Keyword13",SqlDbType.NVarChar,200)
,new SqlParameter("@Keyword14",SqlDbType.NVarChar,200)
,new SqlParameter("@Keyword15",SqlDbType.NVarChar,200)
,new SqlParameter("@Keyword16",SqlDbType.NVarChar,200)
};
for (int i = 0; i < listdicData.Count; i++)
{
string Detail_RID = listdicData[i]["Detail_RID"].ToString();
string Organization = listdicData[i]["Organization"].ToString();
string Emp_No = listdicData[i]["Emp_No"].ToString();
string Effect_Date = listdicData[i]["Effect_Date"].ToString();
string Base_Wage = listdicData[i]["Base_Wage"].ToString();
string Base_Bonus1 = listdicData[i]["Base_Bonus1"].ToString();
string Employee_Type = listdicData[i]["Employee_Type"].ToString();
string Position_Code = listdicData[i]["Position_Code"].ToString();
string Grade_Code = listdicData[i]["Grade_Code"].ToString();
string Join_Date = listdicData[i]["Join_Date"].ToString();
DateTime Effect = StringToDate(Effect_Date);
#region 保存數據
if (string.IsNullOrEmpty(errorMsg))
{
if (Action.Equals("ADD") || Action.Equals("COPY"))
{
sqlParas[0].Value = "DoSaveInsert";
}
else
{
sqlParas[0].Value = "DoSaveUpdate";
}
sqlParas[1].Value = LangType;
sqlParas[2].Value = Header_RID;
sqlParas[3].Value = Detail_RID;
sqlParas[4].Value = txtNote_No;
sqlParas[5].Value = Emp_No;
if (String.IsNullOrEmpty(Effect.ToString()))
{
sqlParas[6].Value = Effect;
}
else
{
sqlParas[6].Value = Effect.ToString("yyyy-MM-dd");
}
sqlParas[7].Value = Base_Wage;
sqlParas[8].Value = Base_Bonus1;
sqlParas[9].Value = Employee_Type;
sqlParas[10].Value = Position_Code;
sqlParas[11].Value = Grade_Code;
if (String.IsNullOrEmpty(Join_Date))
{
sqlParas[12].Value = Join_Date;
}
else
{
sqlParas[12].Value = StringToDate(Join_Date).ToString("yyyy-MM-dd");
}
sqlParas[13].Value = Organization;
if (Need_Approve.ToUpper() == "TRUE")
{
sqlParas[14].Value = "01";
}
else
{
sqlParas[14].Value = "99";
}
sqlParas[15].Value = FunctionID;
sqlParas[16].Value = Encry;
sqlParas[17].Value = LoginUserID;
sqlParas[18].Value = "";
DataSet dt = SQlHelper.ExecuteToDataSet("p_HRIS404SaveData", CommandType.StoredProcedure, sqlParas);
if (dt.Tables.Count > 0)
{
errorMsg = dt.Tables[0].Rows[0][0].ToString();
if (!String.IsNullOrEmpty(errorMsg))
{
if (errorMsg == "error")
{
errorMsg = GetText(LangType, "保存失敗!", "Save Error!") + " \n ";
}
break;
}
}
}
#endregion
}
}
#endregion
}
else
{
errorMsg += GetText(LangType, "單號不能為空!", "Note No cannot be empty!") + " \n ";
}
#endregion