private void ddlRemedy_AbnormalReasonID_Data() { var isSuccess = false; var msg = ""; var datas = new List <AT_CodeMap_Bean>(); var viewData = new AT_CodeMap_Model() { TabName = "Punch", FldName = "PunchSeason" }; ddlRemedy_AbnormalReasonID.Items.Clear(); isSuccess = PunchUpdate.Select_AT_CodeMap(viewData, out datas, out msg); if (isSuccess && datas != null && datas.Count > 0) { viewData.SelectDDLDataList = PunchUpdate.GridDataFormat(datas); //Format Data } try { ddlRemedy_AbnormalReasonID.DataSource = viewData.SelectDDLDataList; ddlRemedy_AbnormalReasonID.DataTextField = "CodeCName"; ddlRemedy_AbnormalReasonID.DataValueField = "Code"; ddlRemedy_AbnormalReasonID.DataBind(); } catch (Exception) { Util.MsgBox("非公務-補登原因撈取資料失敗,請通知相關設定人員!!"); } ddlRemedy_AbnormalReasonID.Items.Insert(0, new ListItem("---請選擇---", "")); }
private void DoClear() { PunchUpdate.SelectValueDDL(ddlConfirmStatus, ""); PunchUpdate.SelectValueDDL(ddlConfirmPunchFlag, ""); PunchUpdate.SelectValueDDL(ddlAbnormalFlag, ""); ucStartPunchDate.ucSelectedDate = ""; ucEndPunchDate.ucSelectedDate = ""; gvMain.Visible = false; }
protected void gvMain_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName.Equals("Detail")) { GridViewRow clickedRow = ((LinkButton)e.CommandSource).NamingContainer as GridViewRow; Dictionary <string, string> dic = new Dictionary <string, string>(); PunchUpdate.GridViewToDictionary(gvMain, out dic, clickedRow.RowIndex, strDataKeyNames); Session["Punch_Confirm_Remedy_Bean"] = dic; Response.Redirect("PunchUpdateModify.aspx"); } }
private void DoClear() { if (!string.IsNullOrEmpty(Quire_to_Modify.EmpID)) { lblEmpName.Text = Quire_to_Modify.EmpName; lblPunchDate.Text = Quire_to_Modify.PunchDate; lblPunchTime.Text = Quire_to_Modify.PunchTime; lblConfirmPunchFlag.Text = Quire_to_Modify.ConfirmPunchFlagGCN; ucRemedyPunchTime.ucDefaultSelectedHH = Quire_to_Modify.PunchTime.Split(":")[0]; ucRemedyPunchTime.ucDefaultSelectedMM = Quire_to_Modify.PunchTime.Split(":")[1]; //補登理由-下拉塞值 ddlRemedyReasonID_Data(); //非公務-下拉塞值 ddlRemedy_AbnormalReasonID_Data(); //修改前原因 if (Quire_to_Modify.AbnormalFlag.Trim() == "2") { rdoAbnormalFlag2.Checked = true; lblAbnormalReasonCN.Text = Quire_to_Modify.AbnormalReasonCN.Trim(); lbl_.Visible = true; } else { rdoAbnormalFlag1.Checked = true; lblAbnormalReasonCN.Visible = false; } //補登原因 if (Quire_to_Modify.Remedy_AbnormalFlag.Trim() == "2") { rdoRemedy_AbnormalFlag2.Checked = true; PunchUpdate.SelectValueDDL(ddlRemedy_AbnormalReasonID, Quire_to_Modify.Remedy_AbnormalReasonID.Trim()); ddlRemedy_AbnormalReasonID.Enabled = true; } else { rdoRemedy_AbnormalFlag1.Checked = true; ddlRemedy_AbnormalReasonID.Enabled = false; } //其他說明 lblAbnormalDesc.Text = Quire_to_Modify.AbnormalDesc.Trim(); txtRemedy_AbnormalDesc.Text = Quire_to_Modify.AbnormalDesc.Trim(); } else { //Response.Redirect("PunchUpdateInquire.aspx"); } }
private void subGetData() { if (Session["Punch_Confirm_Remedy_Bean"] == null) { //Response.Redirect("PunchUpdateInquire.aspx"); } else { Dictionary <string, string> dic = (Dictionary <string, string>)Session["Punch_Confirm_Remedy_Bean"]; ViewState["Punch_Confirm_Remedy_Bean"] = Session["Punch_Confirm_Remedy_Bean"]; Quire_to_Modify = PunchUpdate.Punch_Confirm_Remedy_DicToBean(dic); DoClear(); //Session["Quire_to_Modify"] = null; } }
protected void LoadData() { gvMain.Visible = true; var isSuccess = false; var msg = ""; var datas = new List <Punch_Confirm_Remedy_Bean>(); var viewData = new Punch_Confirm_Remedy_Model() { ValidCompID = StringIIF(UserInfo.getUserInfo().CompID), ValidID = StringIIF(UserInfo.getUserInfo().UserID), ConfirmStatus = "2" }; isSuccess = PunchUpdate.PunchAppdOperation_DoQuery(viewData, out datas, out msg); if (isSuccess && datas != null && datas.Count > 0) { viewData.SelectGridDataList = PunchUpdate.GridDataFormat(datas); //Format Data } gvMain.DataSource = viewData.SelectGridDataList; gvMain.DataBind(); }
private void DoQuery() { var isSuccess = false; var msg = ""; var datas = new List <Punch_Confirm_Remedy_Bean>(); var viewData = new Punch_Confirm_Remedy_Model() { //CompID = StringIIF(UserInfo.getUserInfo().CompID), EmpID = StringIIF(UserInfo.getUserInfo().UserID), StartPunchDate = StringIIF(ucStartPunchDate.ucSelectedDate), EndPunchDate = StringIIF(ucEndPunchDate.ucSelectedDate), ConfirmPunchFlag = StringIIF(ddlConfirmPunchFlag.SelectedValue), ConfirmStatus = StringIIF(ddlConfirmStatus.SelectedValue), AbnormalFlag = StringIIF(ddlAbnormalFlag.SelectedValue) }; isSuccess = PunchUpdate.PunchUpdateInquire_DoQuery(viewData, out datas, out msg); if (isSuccess && datas != null && datas.Count > 0) { viewData.SelectGridDataList = PunchUpdate.GridDataFormat(datas); //Format Data } gvMain.DataSource = viewData.SelectGridDataList; gvMain.DataBind(); }
protected void rdoRemedy_AbnormalFlag1_CheckedChanged(object sender, EventArgs e) { PunchUpdate.SelectValueDDL(ddlRemedy_AbnormalReasonID, ""); ddlRemedy_AbnormalReasonID.Enabled = false; }
private bool SaveData() { Dictionary <string, string> dic = (Dictionary <string, string>)ViewState["Punch_Confirm_Remedy_Bean"]; Quire_to_Modify = PunchUpdate.Punch_Confirm_Remedy_DicToBean(dic); int Seq = 0; bool result = false; long seccessCount = 0; string msg = ""; //因為Exception用ShowMsg會不能顯示,所以取得msg後不使用(這就是沒用的變數) int PunchTimeHH = 0; if (!int.TryParse(ucRemedyPunchTime.ucDefaultSelectedHH, out PunchTimeHH)) { PunchTimeHH = 0; } Punch_Confirm_Remedy_Bean model = new Punch_Confirm_Remedy_Bean() { //跟Confirm一樣的內容,不修改 FlowCaseID = "", CompID = Quire_to_Modify.CompID.Trim(), EmpID = Quire_to_Modify.EmpID.Trim(), EmpName = Quire_to_Modify.EmpName.Trim(), DutyDate = Quire_to_Modify.DutyDate.Trim(), DutyTime = Quire_to_Modify.DutyTime.Replace(":", "").Trim(), PunchDate = Quire_to_Modify.PunchDate.Trim(), PunchTime = Quire_to_Modify.PunchTime.Trim(), PunchConfirmSeq = Quire_to_Modify.PunchConfirmSeq.Trim(), DeptID = Quire_to_Modify.DeptID.Trim(), DeptName = Quire_to_Modify.DeptName.Trim(), OrganID = Quire_to_Modify.OrganID.Trim(), OrganName = Quire_to_Modify.OrganName.Trim(), FlowOrganID = Quire_to_Modify.FlowOrganID.Trim(), FlowOrganName = Quire_to_Modify.FlowOrganName.Trim(), MAFT10_FLAG = Quire_to_Modify.MAFT10_FLAG.Trim(), AbnormalFlag = Quire_to_Modify.AbnormalFlag.Trim(), AbnormalReasonID = Quire_to_Modify.AbnormalReasonID.Trim(), AbnormalReasonCN = Quire_to_Modify.AbnormalReasonCN.Trim(), AbnormalDesc = Quire_to_Modify.AbnormalDesc.Trim(), //Remedy修改項目 PunchRemedySeq = (int.TryParse(Quire_to_Modify.PunchRemedySeq, out Seq) ? Seq + 1 : 1).ToString().Trim(), RemedyReasonID = ddlRemedyReasonID.SelectedValue.Trim(), RemedyReasonCN = ddlRemedyReasonID.SelectedValue.Trim() == "" ? "" : ddlRemedyReasonID.SelectedItem.Text.Trim(), RemedyPunchTime = ucRemedyPunchTime.ucSelectedTime.Trim(), Remedy_MAFT10_FLAG = (Quire_to_Modify.Sex.Trim() == "2" && (PunchTimeHH >= 22)) ? "1" : "0", Remedy_AbnormalFlag = rdoRemedy_AbnormalFlag1.Checked ? "1" : "2", //待John檢核公用 Remedy_AbnormalReasonID = ddlRemedy_AbnormalReasonID.SelectedValue.Trim(), Remedy_AbnormalReasonCN = ddlRemedy_AbnormalReasonID.SelectedValue.Trim() == "" ? "" : ddlRemedy_AbnormalReasonID.SelectedItem.Text.Trim(), Remedy_AbnormalDesc = txtRemedy_AbnormalDesc.Text.Trim(), LastChgComp = UserInfo.getUserInfo().CompID.Trim(), LastChgID = UserInfo.getUserInfo().UserID.Trim(), LastChgDate = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"), //Remedy特有 RemedyPunchFlag = Quire_to_Modify.ConfirmPunchFlag.Trim(), //補登檔RemedyPunchFlag=確認檔ConfirmPunchFlag=紀錄檔PunchFlag BatchFlag = Quire_to_Modify.BatchFlag.Trim(), //批次更新確認檔處理註記,0:未處理,1:已處理。(保留暫定) PORemedyStatus = "2", RejectReason = "", RejectReasonCN = "", ValidDateTime = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"), //ValidTime = "", ValidCompID = UserInfo.getUserInfo().CompID.Trim(), ValidID = UserInfo.getUserInfo().UserID.Trim(), ValidName = UserInfo.getUserInfo().UserName.Trim() }; result = PunchUpdate.PunchUpdateModify_SaveData(model, out seccessCount, out msg); if (!result) { msg = "送簽失敗!!-" + msg; return(false); } if (seccessCount == 0) { msg = "送簽失敗!!"; return(false); } msg = "送簽成功!!"; return(true); }
private void DoSubmit() { if (Session["FlowVerifyInfo"] != null) { Dictionary <string, string> oVerifyInfo = (Dictionary <string, string>)Session["FlowVerifyInfo"]; Dictionary <string, string> dic = (Dictionary <string, string>)Session["PunchAppdOperation_GridView"]; Dictionary <string, string> toUserData = (Dictionary <string, string>)Session["PunchAppdOperation_toUserData"]; Util.setJSContent(oVerifyInfo["FlowVerifyJS"]); Session["FlowVerifyInfo"] = null; Punch_Confirm_Remedy_Bean model = new Punch_Confirm_Remedy_Bean() { //跟共用條件 CompID = dic["CompID"], EmpID = dic["EmpID"], EmpName = dic["EmpName"], LastChgComp = UserInfo.getUserInfo().CompID.Trim(), LastChgID = UserInfo.getUserInfo().UserID.Trim(), LastChgDate = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"), //預存所需資料 PunchTime = dic["PunchTime"], ConfirmPunchFlag = dic["ConfirmPunchFlag"], DutyTime = dic["DutyTime"], RestBeginTime = dic["RestBeginTime"], RestEndTime = dic["RestEndTime"], //Remedy所需資料 PunchDate = dic["PunchDate"], PunchRemedySeq = dic["PunchRemedySeq"], FlowCaseID = dic["FlowCaseID"], ValidDateTime = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"), ValidCompID = UserInfo.getUserInfo().CompID.Trim(), ValidID = UserInfo.getUserInfo().UserID.Trim(), ValidName = UserInfo.getUserInfo().UserName.Trim(), //Confirm所需資料 DutyDate = dic["DutyDate"], PunchConfirmSeq = dic["PunchConfirmSeq"], RemedyReasonID = dic["RemedyReasonID"], RemedyReasonCN = dic["RemedyReasonCN"], RemedyPunchTime = dic["RemedyPunchTime"], Remedy_MAFT10_FLAG = dic["Remedy_MAFT10_FLAG"], Remedy_AbnormalFlag = dic["Remedy_AbnormalFlag"], Remedy_AbnormalReasonID = dic["Remedy_AbnormalReasonID"], Remedy_AbnormalReasonCN = dic["Remedy_AbnormalReasonCN"], Remedy_AbnormalDesc = dic["Remedy_AbnormalDesc"] }; switch (oVerifyInfo["FlowStepBtnID"].ToString()) { //PORemedyStatus。0:未處理,1:未送簽,2:送簽中,3:核准,4:駁回 //ConfirmStatus。0:正常,1:異常,2:送簽中,3:異常不控管 case "btnClose": model.PORemedyStatus = "3"; string strConfirmStatus = "", strAbnormalType = ""; if (!PunchUpdate.PunchAppdOperation_EXEC_PunchCheckData(model, out strConfirmStatus, out strAbnormalType)) { Util.MsgBox("打卡異常檢核失敗!!"); return; } model.ConfirmStatus = strConfirmStatus; //0 or 1記得用John的TSQL model.AbnormalType = strAbnormalType; break; case "btnApprove": case "btnReApprove": model.PORemedyStatus = "2"; model.ConfirmStatus = "2"; break; case "btnReject": model.PORemedyStatus = "4"; model.ConfirmStatus = "1"; break; } Dictionary <string, string> oAssDic = CustVerify.getEmpID_Name_Dictionary(toUserData["SignID"], toUserData["SignIDComp"]); DataTable LastHROtherFlowLog = PunchUpdate.HROtherFlowLog(model.FlowCaseID, true); long seccessCount = 0; string msg = ""; bool result = false; result = PunchUpdate.PunchAppdOperation_SaveData(model, oAssDic, oVerifyInfo["FlowStepBtnID"].ToString(), oVerifyInfo["FlowStepOpinion"].ToString().Replace("'", "''"), out seccessCount, out msg, LastHROtherFlowLog.Rows[0]["FlowCode"].ToString(), LastHROtherFlowLog.Rows[0]["FlowSN"].ToString(), LastHROtherFlowLog.Rows[0]["FlowSeq"].ToString(), LastHROtherFlowLog.Rows[0]["FlowLogBatNo"].ToString(), LastHROtherFlowLog.Rows[0]["FlowLogID"].ToString(), toUserData); if (result) { labMsg.Text = Util.getHtmlMessage(Util.HtmlMessageKind.Succeed, "審核成功!"); } else { labMsg.Text = Util.getHtmlMessage(Util.HtmlMessageKind.Error, "審核失敗"); txtErrMsg.Text = msg; txtErrMsg.Visible = true; } } }
private bool nextFlowBtn(Punch_Confirm_Remedy_Bean Bean, out string flowCode, out string flowSN, ref string btnName, out Dictionary <string, string> toUserData, out string msg) { flowCode = ""; flowSN = ""; msg = ""; toUserData = new Dictionary <string, string>(); string OTEmpID = Bean.EmpID, AssignTo = Bean.ValidID, CompID = Bean.CompID, PunchDate = Bean.PunchDate, FlowCaseID = Bean.FlowCaseID; bool IsUpValidRankID = true; bool IsUpEmpRankID = false; bool isLastFlow, nextIsLastFlow; string signLineDefine = "", meassge = ""; string SignOrganID = "", SignID = "", SignIDComp = ""; string FlowStepID = ""; DbHelper db = new DbHelper(Aattendant._AattendantDBName); CommandHelper sb = db.CreateCommandHelper(); sb.Reset(); sb.Append("SELECT FlowStepID from " + FlowCustDB + "FlowOpenLog "); sb.Append(" where FlowCaseID=").AppendParameter("FlowCaseID", FlowCaseID); try { FlowStepID = db.ExecuteScalar(sb.BuildCommand()).ToString(); } catch (Exception) { FlowStepID = ""; msg = "永豐流程查無資料"; return(false); } //讀取現在關卡與下一關相關資料,因為不論回傳是否,我還是要資料,所以沒檢核return與meassge OBFlowUtility.QueryFlowDataAndToUserData(CompID, AssignTo, PunchDate, FlowCaseID, "P", out toUserData, out flowCode, out flowSN, out signLineDefine, out isLastFlow, out nextIsLastFlow, out meassge, "PO"); //如果QueryFlowDataAndToUserData出錯(HR關與改派容易出現沒有下一關卻無法判定現在是最後一關的狀況),會找不到現在是否為最後一關,這裡單獨再找一次 isLastFlow = isLastFlowNow(Bean.CompID, FlowCaseID, "P", "PO"); //如果沒有下一關資料,則用現在關卡資料取代(對應上述QueryFlowDataAndToUserData問題 ) if (toUserData.Count == 0) { //取[最近的行政or功能]資料 取代 [現在關卡]資料 DataTable dtHROtherFlowLog_toUD = PunchUpdate.HROtherFlowLog(FlowCaseID, true); toUserData.Add("SignLine", dtHROtherFlowLog_toUD.Rows[0]["SignLine"].ToString()); toUserData.Add("SignIDComp", dtHROtherFlowLog_toUD.Rows[0]["SignIDComp"].ToString()); toUserData.Add("SignID", AssignTo); toUserData.Add("SignOrganID", dtHROtherFlowLog_toUD.Rows[0]["SignOrganID"].ToString()); toUserData.Add("SignFlowOrganID", dtHROtherFlowLog_toUD.Rows[0]["SignFlowOrganID"].ToString()); } //如果下一關主管與現在主管相同,則再往上階找下一關主管資料 if (toUserData["SignID"] == AssignTo && signLineDefine != "3") { switch (toUserData["SignLine"]) { //HR線 或 行政線 case "4": case "1": if (EmpInfo.QueryOrganData(Bean.CompID, toUserData["SignOrganID"], Bean.PunchDate, out SignOrganID, out SignID, out SignIDComp)) { toUserData["SignID"] = SignID; toUserData["SignIDComp"] = SignIDComp; toUserData["SignOrganID"] = SignOrganID; toUserData["SignFlowOrganID"] = ""; } break; //功能線 case "2": if (EmpInfo.QueryFlowOrganData(toUserData["SignOrganID"], Bean.PunchDate, out SignOrganID, out SignID, out SignIDComp)) { toUserData["SignID"] = SignID; toUserData["SignIDComp"] = SignIDComp; toUserData["SignOrganID"] = ""; toUserData["SignFlowOrganID"] = SignOrganID; } break; //原本switch的是signLineDefine,現在改成toUserData["SignLine"]後, //case "3"裏頭的if基本只會用到else[非功能線一律走行政線],以防萬一先保留。 //改派 case "3": if (toUserData["SignLine"] == "2") { if (EmpInfo.QueryFlowOrganData(toUserData["SignOrganID"], Bean.PunchDate, out SignOrganID, out SignID, out SignIDComp)) { toUserData["SignID"] = SignID; toUserData["SignIDComp"] = SignIDComp; toUserData["SignOrganID"] = ""; toUserData["SignFlowOrganID"] = SignOrganID; } } else { if (EmpInfo.QueryOrganData(Bean.CompID, toUserData["SignOrganID"], Bean.PunchDate, out SignOrganID, out SignID, out SignIDComp)) { toUserData["SignID"] = SignID; toUserData["SignIDComp"] = SignIDComp; toUserData["SignOrganID"] = SignOrganID; toUserData["SignFlowOrganID"] = ""; } } break; } } RankIDCheck(CompID, FlowCaseID, out IsUpValidRankID, out IsUpEmpRankID); if (signLineDefine == "4") //HR特別關(後台沒有送簽功能的話,這裡不會用到) { if (IsUpValidRankID) //大於Rank16 { Session["btnVisible"] = "2"; //給永豐流程按鈕隱藏判斷 btnName = "btnClose"; //回傳按鈕名稱,給多筆審核組進DataTable傳給審核畫面 } else { if (FlowStepID == "A10") //預防HR送錯關,本來資料上HR關是只有A20或A40等最後一關 { Session["btnVisible"] = "0"; btnName = "btnApprove"; } else { Session["btnVisible"] = "1"; btnName = "btnReApprove"; } } } else if (!isLastFlowNow(CompID, FlowCaseID, "P", "PO")) //非最後一關 { if (IsUpEmpRankID) //大於Rank19 { Session["btnVisible"] = "2"; btnName = "btnClose"; } else { if (nextIsLastFlow) //下一關是否進入A40最後一關 { Session["btnVisible"] = "0"; btnName = "btnApprove"; } else { Session["btnVisible"] = "1"; btnName = "btnReApprove"; } } } else//最後一關 { if (OTEmpID.Trim().Equals(UserInfo.getUserInfo().UserID.Trim()))//當加班人是自己主管的代理人並審自己的加班單 { if (IsUpEmpRankID)//加班人RankID>19 { Session["btnVisible"] = "2"; btnName = "btnClose"; } else { Session["btnVisible"] = "1"; btnName = "btnReApprove"; } } else if (IsUpValidRankID)//大於Rank16 { Session["btnVisible"] = "2"; btnName = "btnClose"; } else { Session["btnVisible"] = "1"; btnName = "btnReApprove"; } } //如果找不到下一關主管資料,彈跳視窗並且return false if (toUserData["SignID"] == "") { toUserData["SignIDComp"] = UserInfo.getUserInfo().CompID.Trim(); toUserData["SignID"] = UserInfo.getUserInfo().UserID.Trim(); //Util.MsgBox("查無下一關主管資料"); if (isLastFlow) //最後一關不用找下一關主管 { return(true); } else { msg = "查無下一關主管資料"; return(false); } } return(true); }
protected void gvMain_RowCommand(object sender, GridViewCommandEventArgs e) { GridViewRow clickedRow = ((ImageButton)e.CommandSource).NamingContainer as GridViewRow; switch (e.CommandName) { case "Detail": string flowCode = "", flowSN = "", msg = "", btnName = ""; Dictionary <string, string> dic = new Dictionary <string, string>(); Dictionary <string, string> toUserData; PunchUpdate.GridViewToDictionary(gvMain, out dic, clickedRow.RowIndex, strDataKeyNames); FlowExpress oFlow = new FlowExpress(FlowCustDB, dic["FlowCaseID"], false); Punch_Confirm_Remedy_Bean model = new Punch_Confirm_Remedy_Bean() { //跟共用條件 CompID = dic["CompID"], EmpID = dic["EmpID"], EmpName = dic["EmpName"], LastChgComp = UserInfo.getUserInfo().CompID.Trim(), LastChgID = UserInfo.getUserInfo().UserID.Trim(), LastChgDate = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"), //預存所需資料 PunchTime = dic["PunchTime"], ConfirmPunchFlag = dic["ConfirmPunchFlag"], DutyTime = dic["DutyTime"], RestBeginTime = dic["RestBeginTime"], RestEndTime = dic["RestEndTime"], //Remedy所需資料 PunchDate = dic["PunchDate"], PunchRemedySeq = dic["PunchRemedySeq"], FlowCaseID = dic["FlowCaseID"], ValidDateTime = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"), ValidCompID = UserInfo.getUserInfo().CompID.Trim(), ValidID = UserInfo.getUserInfo().UserID.Trim(), ValidName = UserInfo.getUserInfo().UserName.Trim(), //Confirm所需資料 DutyDate = dic["DutyDate"], PunchConfirmSeq = dic["PunchConfirmSeq"], RemedyReasonID = dic["RemedyReasonID"], RemedyReasonCN = dic["RemedyReasonCN"], RemedyPunchTime = dic["RemedyPunchTime"], Remedy_MAFT10_FLAG = dic["Remedy_MAFT10_FLAG"], Remedy_AbnormalFlag = dic["Remedy_AbnormalFlag"], Remedy_AbnormalReasonID = dic["Remedy_AbnormalReasonID"], Remedy_AbnormalReasonCN = dic["Remedy_AbnormalReasonCN"], Remedy_AbnormalDesc = dic["Remedy_AbnormalDesc"] }; //按鈕清單 ClearBtn(model.FlowCaseID); //下一關邏輯判斷,產生審核按鈕資訊,給出Ken流程相關資訊 if (!nextFlowBtn(model, out flowCode, out flowSN, ref btnName, out toUserData, out msg)) //判斷審核按鈕 { Util.MsgBox(msg); return; } CustVerify.setFlowSignID_CompID(toUserData["SignID"].ToString() + "," + toUserData["SignIDComp"].ToString()); //傳給審核畫面-單筆審核使用 Session["PunchAppdOperation_toUserData"] = toUserData; Session["PunchAppdOperation_GridView"] = dic; //產生審核按鈕 FlowExpress.getFlowTodoList(FlowExpress.TodoListAssignKind.All, model.ValidID.Trim(), FlowCustDB.Split(','), "".Split(','), false, "", ""); //跳轉畫面 Response.Redirect(string.Format(FlowExpress._FlowPageVerifyURL + "?FlowID={0}&FlowLogID={1}&ProxyType={2}&IsShowBtnComplete={3}&IsShowCheckBoxList={4}&ChkMaxKeyLen={5}", oFlow.FlowID, oFlow.FlowCurrLastLogID, "Self", "N", "N", "")); break; } }
private void SaveData() { string ErrorIndex = ""; for (int index = 0; index < gvMain.Rows.Count; index++) { CheckBox objchk = (CheckBox)gvMain.Rows[index].FindControl("chkChoiced"); if (objchk.Checked == true) { bool result = false; long seccessCount = 0; string msg = "", flowCode = "", flowSN = ""; string btnName = ""; RadioButton rdoApp = (RadioButton)gvMain.Rows[index].FindControl("rbnApproved"); RadioButton rdoRej = (RadioButton)gvMain.Rows[index].FindControl("rbnReject"); TextBox txtReason = (TextBox)gvMain.Rows[index].FindControl("txtReason"); Dictionary <string, string> dic = new Dictionary <string, string>(); Dictionary <string, string> toUserData = new Dictionary <string, string>(); PunchUpdate.GridViewToDictionary(gvMain, out dic, index, strDataKeyNames); Punch_Confirm_Remedy_Bean model = new Punch_Confirm_Remedy_Bean() { //跟共用條件 CompID = dic["CompID"], EmpID = dic["EmpID"], EmpName = dic["EmpName"], LastChgComp = UserInfo.getUserInfo().CompID.Trim(), LastChgID = UserInfo.getUserInfo().UserID.Trim(), LastChgDate = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"), //預存所需資料 PunchTime = dic["PunchTime"], ConfirmPunchFlag = dic["ConfirmPunchFlag"], DutyTime = dic["DutyTime"], RestBeginTime = dic["RestBeginTime"], RestEndTime = dic["RestEndTime"], //Remedy所需資料 PunchDate = dic["PunchDate"], PunchRemedySeq = dic["PunchRemedySeq"], FlowCaseID = dic["FlowCaseID"], ValidDateTime = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"), ValidCompID = UserInfo.getUserInfo().CompID.Trim(), ValidID = UserInfo.getUserInfo().UserID.Trim(), ValidName = UserInfo.getUserInfo().UserName.Trim(), //Confirm所需資料 DutyDate = dic["DutyDate"], PunchConfirmSeq = dic["PunchConfirmSeq"], RemedyReasonID = dic["RemedyReasonID"], RemedyReasonCN = dic["RemedyReasonCN"], RemedyPunchTime = dic["RemedyPunchTime"], Remedy_MAFT10_FLAG = dic["Remedy_MAFT10_FLAG"], Remedy_AbnormalFlag = dic["Remedy_AbnormalFlag"], Remedy_AbnormalReasonID = dic["Remedy_AbnormalReasonID"], Remedy_AbnormalReasonCN = dic["Remedy_AbnormalReasonCN"], Remedy_AbnormalDesc = dic["Remedy_AbnormalDesc"] }; if (rdoApp.Checked == true) //核准 { if (!nextFlowBtn(model, out flowCode, out flowSN, ref btnName, out toUserData, out msg)) //判斷審核按鈕 { Util.MsgBox(msg); return; } switch (btnName) { //PORemedyStatus。0:未處理,1:未送簽,2:送簽中,3:核准,4:駁回 //ConfirmStatus。0:正常,1:異常,2:送簽中,3:異常不控管 case "btnClose": model.PORemedyStatus = "3"; string strConfirmStatus = "", strAbnormalType = ""; if (!PunchUpdate.PunchAppdOperation_EXEC_PunchCheckData(model, out strConfirmStatus, out strAbnormalType)) { Util.MsgBox("打卡異常檢核失敗!!"); return; } model.ConfirmStatus = strConfirmStatus; //0 or 1記得用John的TSQL model.AbnormalType = strAbnormalType; break; case "btnApprove": case "btnReApprove": model.PORemedyStatus = "2"; model.ConfirmStatus = "2"; break; } } else if (rdoRej.Checked == true)//駁回 { btnName = "btnReject"; model.PORemedyStatus = "4"; model.ConfirmStatus = "1"; } DataTable LastHROtherFlowLog = PunchUpdate.HROtherFlowLog(model.FlowCaseID, true); Dictionary <string, string> oAssDic = CustVerify.getEmpID_Name_Dictionary(toUserData["SignID"], toUserData["SignIDComp"]); if (!string.IsNullOrEmpty(btnName)) { //審核動作 result = PunchUpdate.PunchAppdOperation_SaveData(model, oAssDic, btnName, txtReason.Text, out seccessCount, out msg, flowCode, flowSN, LastHROtherFlowLog.Rows[0]["FlowSeq"].ToString(), LastHROtherFlowLog.Rows[0]["FlowLogBatNo"].ToString(), LastHROtherFlowLog.Rows[0]["FlowLogID"].ToString(), toUserData); } else { result = false; } if (!result) { //Util.MsgBox(msg); ErrorIndex += (index + 1).ToString() + ","; continue; } if (seccessCount == 0) { ErrorIndex += (index + 1).ToString() + ","; continue; } } } if (ErrorIndex.Length > 0) { ErrorIndex = ErrorIndex.Substring(0, ErrorIndex.Length - 1); Util.MsgBox("第" + ErrorIndex + "筆審核失敗"); } else { Util.MsgBox("審核成功"); } }
/// <summary> /// 檢核所有東西,並將下一關相關資訊回傳 /// </summary> public static bool nextAssignTo(Punch_Confirm_Remedy_Bean Bean, out Dictionary <string, string> toUserData) { string CompID = Bean.CompID, AssignTo = Bean.ValidID, OTStartDate = Bean.PunchDate, FlowCaseID = Bean.FlowCaseID; bool isLastFlow, nextIsLastFlow; string flowCode = "", flowSN = "", signLineDefine = "", meassge = ""; string SignOrganID = "", SignID = "", SignIDComp = ""; //讀取現在關卡與下一關相關資料,因為不論回傳是否,我還是要資料,所以沒檢核回傳值與錯誤訊息 OBFlowUtility.QueryFlowDataAndToUserData(CompID, AssignTo, OTStartDate, FlowCaseID, "P", out toUserData, out flowCode, out flowSN, out signLineDefine, out isLastFlow, out nextIsLastFlow, out meassge, "PO"); //若是後台HR送簽依照填單人公司,否則用加班人公司 //string HRLogCompID = signLineDefine == "4" || flowCode.Trim() == "" ?Bean.CompID :Bean.CompID; string HRLogCompID = Bean.CompID; //如果沒有下一關資料,則用現在關卡資料取代 if (toUserData.Count == 0) { //取[最近的行政or功能]資料 取代 [現在關卡]資料 DataTable dtHROtherFlowLog_toUD = PunchUpdate.HROtherFlowLog(FlowCaseID, true); toUserData.Add("SignLine", dtHROtherFlowLog_toUD.Rows[0]["SignLine"].ToString()); toUserData.Add("SignIDComp", dtHROtherFlowLog_toUD.Rows[0]["SignIDComp"].ToString()); toUserData.Add("SignID", AssignTo); toUserData.Add("SignOrganID", dtHROtherFlowLog_toUD.Rows[0]["SignOrganID"].ToString()); toUserData.Add("SignFlowOrganID", dtHROtherFlowLog_toUD.Rows[0]["SignFlowOrganID"].ToString()); } //如果下一關主管與現在主管相同,則再往上階找下一關主管資料 if (toUserData["SignID"] == AssignTo && signLineDefine != "3") { switch (toUserData["SignLine"]) { //HR線 或 行政線 case "4": case "1": if (EmpInfo.QueryOrganData(HRLogCompID, toUserData["SignOrganID"], Bean.PunchDate, out SignOrganID, out SignID, out SignIDComp)) { toUserData["SignID"] = SignID; toUserData["SignIDComp"] = SignIDComp; toUserData["SignOrganID"] = SignOrganID; toUserData["SignFlowOrganID"] = ""; } break; //功能線 case "2": if (EmpInfo.QueryFlowOrganData(toUserData["SignOrganID"], Bean.PunchDate, out SignOrganID, out SignID, out SignIDComp)) { toUserData["SignID"] = SignID; toUserData["SignIDComp"] = SignIDComp; toUserData["SignOrganID"] = ""; toUserData["SignFlowOrganID"] = SignOrganID; } break; //原本switch的是signLineDefine,現在改成toUserData["SignLine"]後, //case "3"裏頭的if基本只會用到else[非功能線一律走行政線],以防萬一先保留。 //改派 case "3": if (toUserData["SignLine"] == "2") { if (EmpInfo.QueryFlowOrganData(toUserData["SignOrganID"], Bean.PunchDate, out SignOrganID, out SignID, out SignIDComp)) { toUserData["SignID"] = SignID; toUserData["SignIDComp"] = SignIDComp; toUserData["SignOrganID"] = ""; toUserData["SignFlowOrganID"] = SignOrganID; } } else { if (EmpInfo.QueryOrganData(HRLogCompID, toUserData["SignOrganID"], Bean.PunchDate, out SignOrganID, out SignID, out SignIDComp)) { toUserData["SignID"] = SignID; toUserData["SignIDComp"] = SignIDComp; toUserData["SignOrganID"] = SignOrganID; toUserData["SignFlowOrganID"] = ""; } } break; } } //如果找不到下一關主管資料,彈跳視窗並且return false if (toUserData["SignID"] == "") { toUserData["SignIDComp"] = UserInfo.getUserInfo().CompID.Trim(); toUserData["SignID"] = UserInfo.getUserInfo().UserID.Trim(); //Util.MsgBox("查無下一關主管資料"); if (isLastFlow) //最後一關不用找下一關主管 { return(true); } else { return(false); } } return(true); }