// Code for 'Notice' and 'Log'. Disable all contols. public override void InitialDisableContainer(SPMTaskVariables SPMTaskVars, EFFormFields FormFields, ref object oContainer, IUIShadow UIShadow) { int caseID = int.Parse((string)(SPMTaskVars.ReadDatum("CASEID"))); GDSExceptionHandlingUIShadow lUIControls = (GDSExceptionHandlingUIShadow)UIShadow; ShowRecord(lUIControls, FormFields, "Log", caseID, SPMTaskVars); base.InitialDisableContainer(SPMTaskVars, FormFields, ref oContainer, UIShadow); }
// Code for Page_Load protected override void PageLoad(object oContainer, IFormURLPara para, IUIShadow UIShadow) { oPage = (Page)oContainer; oUIControls = (GDSExceptionHandlingUIShadow)UIShadow; oPara = para; this.InitialPageControls(); base.PageLoad(oContainer, para, UIShadow); }
// Code for 'draft' and 'pending for process' public override void InitialContainer(SPMTaskVariables SPMTaskVars, EFFormFields FormFields, ref object oContainer, IUIShadow UIShadow) { GDSExceptionHandlingUIShadow lUIControls = (GDSExceptionHandlingUIShadow)UIShadow; int caseID = int.Parse((string)(SPMTaskVars.ReadDatum("CASEID"))); string stepName = SPMTaskVars.ReadDatum("STEPNAME").ToString(); ShowRecord(lUIControls, FormFields, "Process", caseID, SPMTaskVars); base.InitialContainer(SPMTaskVars, FormFields, ref oContainer, UIShadow); }
// Fill SPM's EFFormFieldData public override void PrepareEFFormFields(SPMSubmitMethod SubmitMethod, SPMProcessMethod ProcessMethod, SPMTaskVariables TaskVars, ref EFFormFields FormFields, ref IInterfaceHandleResult HandleResult, object oContainer, IUIShadow UIShadow, ref string ApplicantInfo) { GDSExceptionHandlingUIShadow lUIControls = (GDSExceptionHandlingUIShadow)UIShadow; //基本資料 FormFields.SetOrAdd("txtLogonID".ToUpper(), lUIControls.txtLogonID.Text); FormFields.SetOrAdd("txtName".ToUpper(), lUIControls.txtName.Text); FormFields.SetOrAdd("txtPlant".ToUpper(), lUIControls.txtPlant.Text); FormFields.SetOrAdd("txtDept".ToUpper(), lUIControls.txtDept.Text); FormFields.SetOrAdd("txtEMail".ToUpper(), lUIControls.txtEMail.Text); FormFields.SetOrAdd("txtExtNO".ToUpper(), lUIControls.txtExtNO.Text); FormFields.SetOrAdd("txtRDocNo".ToUpper(), lUIControls.txtRDocNo.Text); FormFields.SetOrAdd("txtDocNo".ToUpper(), lUIControls.txtDocNo.Text); FormFields.SetOrAdd("txtCostCenter".ToUpper(), lUIControls.txtCostCenter.Text); FormFields.SetOrAdd("txtDepartment".ToUpper(), lUIControls.txtDepartment.Text); FormFields.SetOrAdd("txtApplication".ToUpper(), lUIControls.txtApplication.Text); FormFields.SetOrAdd("txtMaterial".ToUpper(), lUIControls.txtMaterial.Text); FormFields.SetOrAdd("txtReturnQuantity".ToUpper(), lUIControls.txtReturnQuantity.Text); FormFields.SetOrAdd("txtReason".ToUpper(), lUIControls.txtReason.Text); FormFields.SetOrAdd("txtRemark".ToUpper(), lUIControls.txtRemark.Text); FormFields.SetOrAdd("txtReturn".ToUpper(), lUIControls.txtReturn.Text); FormFields.SetOrAdd("txtIADocNo".ToUpper(), lUIControls.txtIADocNo.Text); FormFields.SetOrAdd("txtI6DocNo".ToUpper(), lUIControls.txtI6DocNo.Text); FormFields.SetOrAdd("txtZEILE".ToUpper(), lUIControls.txtZEILE.Text); FormFields.SetOrAdd("txtAmount".ToUpper(), lUIControls.txtAmount.Text); //SOURCE DATA FormFields.SetOrAdd("txtHead".ToUpper(), lUIControls.txtHead.Text); FormFields.SetOrAdd("txtDetail".ToUpper(), lUIControls.txtDetail.Text); FormFields.SetOrAdd("txtDOA".ToUpper(), lUIControls.txtDOA.Text); FormFields.SetOrAdd("txtWERKS".ToUpper(), lUIControls.txtWERKS.Text); FormFields.SetOrAdd("txtAPTYP".ToUpper(), lUIControls.txtAPTYP.Text); base.PrepareEFFormFields(SubmitMethod, ProcessMethod, TaskVars, ref FormFields, ref HandleResult, oContainer, UIShadow, ref ApplicantInfo); }
// Validate contols before submit public override bool EFFormFieldsValidation(SPMSubmitMethod SubmitMethod, SPMProcessMethod ProcessMethod, SPMTaskVariables SPMTaskVars, ref IInterfaceHandleResult HandleResult, object oContainer, IUIShadow UIShadow) { GDSExceptionHandlingUIShadow lUIControls = (GDSExceptionHandlingUIShadow)UIShadow; GDS_Helper oStandard = new GDS_Helper(); StringBuilder ErrMsg = new StringBuilder(); string stepName = (string)(SPMTaskVars.ReadDatum("STEPNAME")); string curDOA = lUIControls.txtDOA.Text; string plant = lUIControls.txtWERKS.Text; string apType = lUIControls.txtAPTYP.Text; DOA spmDOA = new DOA(); string sApplicant = lUIControls.txtApplication.Text.Trim(); //獲取 表頭及表身DATA string formDetail = lUIControls.txtDetail.Text.Trim().Replace("<1;", "<").Replace(">1;", ">"); string formHead = lUIControls.txtHead.Text.Trim().Replace("<1;", "<").Replace(">1;", ">"); DataTable dtHead = LiteOn.GDS.Utility.Tools.BuildHeadTable(); System.IO.StringReader reader = new System.IO.StringReader(formHead); dtHead.ReadXml(reader); System.IO.StringReader reader2 = new System.IO.StringReader(formDetail); DataTable dtDetail = LiteOn.GDS.Utility.Tools.BuildDetailTable(); dtDetail.ReadXml(reader2); if (SubmitMethod == SPMSubmitMethod.CreateNewCase) { #region 欄位的非空驗證 #endregion #region Check單據是否已經過帳 string I1DocNo = oUIControls.txtRDocNo.Text; string IADocNo = oUIControls.txtIADocNo.Text; string I6DocNo = oUIControls.txtI6DocNo.Text; string WERKS = oUIControls.txtWERKS.Text; //Check此I1單(領料單)和關聯的IA,I6單(退料單)是否都已經過賬 (Call SAP BAPI Z_BAPI_GDS_SEND MBLNR不為空則表示已經過賬) if (!oStandard.CheckFormNoIsPass(I1DocNo, IADocNo, I6DocNo, WERKS)) { HandleResult.IsSuccess = false; HandleResult.CustomMessage = "I1(領料單)或者IA,I6(退料單)存在未過賬的單子!"; } #endregion } else { //only approve action check controls if (SubmitMethod == SPMSubmitMethod.HandleCase_Approve) { int caseId = int.Parse((string)(SPMTaskVars.ReadDatum("CASEID"))); string curStepId = SPMAppLine.GetCurrentStep(curDOA); //調用FUNCTION作FormFieldsValidation string errMsg = DOA.FieldsValidationByStepId(plant, apType, curStepId, caseId); if (errMsg.Length > 0) { HandleResult.IsSuccess = false; HandleResult.CustomMessage = errMsg; } else { try { //CALL FUNCTION獲取下關簽核人 DOAHandler = spmDOA.GetStepHandler(sApplicant, curDOA, dtHead, dtDetail, false); oStandard.UpdateSettingxml(oUIControls.txtDocNo.Text, DOAHandler._sDOA.ToString()); } catch (Exception ex) { HandleResult.IsSuccess = false; HandleResult.CustomMessage = ex.Message; } } if (ErrMsg.ToString().Length > 0) { HandleResult.IsSuccess = false; HandleResult.CustomMessage = ErrMsg.ToString(); } //簽核人防呆檢查 if (DOAHandler._sEndFlag == "N" && DOAHandler._sHandler.Length == 0) { HandleResult.IsSuccess = false; HandleResult.CustomMessage = "Can't find next step handler, pls contact sys administrator"; } string sCurLogonID = (string)(SPMTaskVars.ReadDatum("SYS_LOGONID")); string sCurRoleCode = SPMAppLine.GetCurrentApprover(curDOA).Replace("{", "").Replace("}", ""); //簽核人重復簽核防呆 if (DOAHandler._sEndFlag == "N" && DOAHandler._sRoleCode == sCurRoleCode && DOAHandler._sHandler.ToUpper() == sCurLogonID.ToUpper()) { HandleResult.IsSuccess = false; HandleResult.CustomMessage = "Server or network is busy now, pls try again"; } } } return(base.EFFormFieldsValidation(SubmitMethod, ProcessMethod, SPMTaskVars, ref HandleResult, oContainer, UIShadow)); }
private void ShowRecord(GDSExceptionHandlingUIShadow lUIControls, EFFormFields FormFields, string type, int caseId, SPMTaskVariables SPMTaskVars) { string caseid = SPMTaskVars.ReadDatum("CASEID").ToString(); string stepName = (string)(SPMTaskVars.ReadDatum("STEPNAME")); GDS_Helper oStandard = new GDS_Helper(); if (stepName != "Begin") { #region 抓取 異常單資料 並綁定到控件中 DataTable dt = oStandard.GetMaster_Exception(int.Parse(caseid));//加載 異常單主表資料 if (dt.Rows.Count > 0) { #region 數據加載 DataRow dr = dt.Rows[0]; oUIControls.txtDocNo.Text = dr["MBLNR"].ToString(); //主單號 oUIControls.txtRDocNo.Text = dr["MBLNR_A"].ToString(); //Link 單號 oUIControls.txtCostCenter.Text = dr["KOSTL"].ToString(); //成本中心 oUIControls.txtDepartment.Text = dr["ABTEI"].ToString(); //部門 oUIControls.txtApplication.Text = dr["Applicant"].ToString(); //LoginID oUIControls.txtReturn.Text = dr["RTNIF"].ToString(); // Return Flag oUIControls.txtWERKS.Text = dr["WERKS"].ToString(); //廠別 oUIControls.txtMaterial.Text = dr["MATNR"].ToString(); //料號 oUIControls.txtZEILE.Text = dr["ZEILE"].ToString(); //料號對應的ITEM oUIControls.txtAmount.Text = dr["Amount"].ToString(); //金額 oUIControls.txtIADocNo.Text = dr["IADocNo"].ToString(); //關聯IA單 oUIControls.txtI6DocNo.Text = dr["I6DocNo"].ToString(); //關聯I6單 oUIControls.txtReason.Text = dr["Reason"].ToString(); //REASON oUIControls.txtRemark.Text = dr["Remark"].ToString(); //REMARK oUIControls.txtReturnQuantity.Text = dr["MENGE"].ToString(); //RETURN 數量 oUIControls.txtDOA.Text = dr["Settingxml"].ToString(); //Settingxml #endregion #region 控件顯示 oUIControls.btnLink.Hidden = true; oUIControls.frmUserInfo.Hidden = true; oUIControls.txtDocNo.ReadOnly = true; oUIControls.txtRDocNo.ReadOnly = true; oUIControls.txtCostCenter.ReadOnly = true; oUIControls.txtDepartment.ReadOnly = true; oUIControls.txtApplication.ReadOnly = true; oUIControls.txtReturn.ReadOnly = true; oUIControls.txtMaterial.ReadOnly = true; oUIControls.txtZEILE.ReadOnly = true; oUIControls.txtAmount.ReadOnly = true; oUIControls.txtIADocNo.ReadOnly = true; oUIControls.txtI6DocNo.ReadOnly = true; oUIControls.txtReason.ReadOnly = true; oUIControls.txtRemark.ReadOnly = true; oUIControls.txtReturnQuantity.ReadOnly = true; #endregion } #endregion #region 通過異常單的Link單號 抓取正常單中的Head和Detail DataTable dtHead = oStandard.GetdtHead(oUIControls.txtRDocNo.Text.Trim()); DataTable dtDetail = oStandard.GetdtDetail(oUIControls.txtRDocNo.Text.Trim()); oUIControls.txtWERKS.Text = dtHead.Rows[0]["WERKS"].ToString(); //廠別 oUIControls.txtAPTYP.Text = dtHead.Rows[0]["APTYP"].ToString(); //單據類型 string xmlstrHead = oStandard.DataTableToXMLStr(dtHead); oUIControls.txtHead.Text = xmlstrHead; //Head string xmlstrDetail = oStandard.DataTableToXMLStr(dtDetail); oUIControls.txtDetail.Text = xmlstrDetail; //Detail //string tempWEKS = DOA.GetXMLConfigName(dtHead);//CALL FUNCTION獲取XML配置檔名 //SettingParser x = new SettingParser(tempWEKS, oUIControls.txtAPTYP.Text);//讀取XML配置檔信息 //oUIControls.txtDOA.Text = x.ApproveXML.Replace("<1;", "<").Replace(">1;", ">"); ;//抓取DOA的簽核邏輯 #endregion } }
protected void Page_Load(object sender, EventArgs e) { //內嵌JS HtmlGenericControl ctrl = new HtmlGenericControl("script"); ctrl.Attributes.Add("type", "text/javascript"); ctrl.Attributes.Add("src", @"JScript.js"); this.Page.Header.Controls.Add(ctrl); SpmMaster _Master = (SpmMaster)Master; oUIControls = new GDSExceptionHandlingUIShadow(this); oFlowLogics = new GDSExceptionHandlingLogics(this, oUIControls); oFlowLogics.PageLoad(_Master.IFormURLPara); /// Register MasterPage events _Master.MasterPageEvent_EFFormFieldsValidation += new SpmMaster.EFFormFieldsValidationHandler(oFlowLogics.EFFormFieldsValidation); _Master.MasterPageEvent_PrepareEFFormFields += new SpmMaster.PrepareEFFormFieldsHandler(oFlowLogics.PrepareEFFormFields); _Master.MasterPageEvent_PrepareSPMVariables += new SpmMaster.PrepareSPMVariablesHandler(oFlowLogics.PrepareSPMVariables); _Master.MasterPageEvent_InitialContainer += new SpmMaster.InitialContainerHandler(oFlowLogics.InitialContainer); _Master.MasterPageEvent_InitialDisableContainer += new SpmMaster.InitialDisableContainerHandler(oFlowLogics.InitialDisableContainer); _Master.MasterPageEvent_SPMBeforeSend += new SpmMaster.SPM_BeforeSendHandler(oFlowLogics.SPMBeforeSend); _Master.MasterPageEvent_SPMAfterSend += new SpmMaster.SPM_AfterSendHandler(oFlowLogics.SPMAfterSend); _Master.MasterPageEvent_SPMRecallProcess += new SpmMaster.SPM_RecallProcessHandler(oFlowLogics.SPMRecallProcess); _Master.MasterPageEvent_SPMBackoutProcess += new SpmMaster.SPM_BackoutProcessHandler(oFlowLogics.SPMBackoutProcess); _Master.MasterPageEvent_SPMStepComplete += new SpmMaster.SPM_StepCompleteHandler(oFlowLogics.SPMStepComplete); _Master.MasterPageEvent_SPMStepActivity += new SpmMaster.SPM_StepActivityHandler(oFlowLogics.SPMStepActivity); _Master.MasterPageEvent_Print += new SpmMaster.PrintHandler(oFlowLogics.Print); _Master.MasterPageEvent_SPMSendError += new SpmMaster.SPM_SendErrorHandler(oFlowLogics.SPM_SendError); // _Master.MasterPageEvent_SPMSendSuccess += new SpmMaster.SPM_SendSuccessHandler(oFlowLogics.SPM_SendSuccess); //_Master.MasterPageEvent_SPMSendSuccessNotice += new SpmMaster.SPM_SendSuccessNoticeHandler(oFlowLogics.SPM_SendSuccessNotice); /* * Properties of Master Page * _Master.Manual : string. set link for [Manual]. e.g. "http://yahoo.com.tw" * _Master.HelpDesk : string. set link for [HelpDesk]. e.g. "http://10.1.13.61/wwwroot.zip"; * _Master.BannerText1 & * _Master.BannerText2 : string. set info to show in [Banner]. e.g. "Example 3" * _Master.SelectPersonnelRowLimit : integer. set the display count for [CCNotice]. e.g. 5 * _Master.EnableShowProcessLogStepName : boolean. if the Process Log shows [StepName]. e.g. true * _Master.HeadLiteral : string. set Head script. e.g. "<link href=\"Common/style.css\" rel=\"stylesheet\" type=\"text/css\" />" * _Master.LogoPath : string. set Logo path. e.g. "common/images/logo.gif"; * _Master.AsyncPostBackTimeout : integer. set AsyncPostBackTimeout. e.g. 300 * _Master.WindowPrintEnable : boolean. enable print function. e.g. true * _Master.ReferenceJavaScriptPath : string array. set referenced script file. e.g. new string[1] { "~/JS/jquery.js" }; */ if (!IsPostBack) { _Master.Manual = "http://home-cz/Sites/CORP_IT/DocLib1/Forms/AllItems.aspx?RootFolder=%2FSites%2FCORP%5FIT%2FDocLib1%2FWorkflow%20%E7%9B%B8%E9%97%9C%E6%93%8D%E4%BD%9C%E6%89%8B%E5%86%8A&FolderCTID=0x012000F6570CA28FE20A4E9C70F18B590D6D16&View={F275949A-55A8-4AA7-8764-3B524F1B40D2}"; _Master.HelpDesk = "http://www.liteon.com.tw/SPM/Example/Help.zip"; _Master.BannerText1 = "Liteon CZ"; _Master.BannerText2 = "GDS_應退未退申請表"; _Master.SelectPersonnelRowLimit = 5; _Master.EnableShowProcessLogStepName = true; _Master.HeadLiteral = "<link href=\"Common/style.css\" rel=\"stylesheet\" type=\"text/css\" />"; //_Master.LogoPath = "common/images/logo.gif"; _Master.AsyncPostBackTimeout = 300; _Master.WindowPrintEnable = false; //_Master.ReferenceJavaScriptPath = new string[1] { "~/JS/jquery.js" }; //set client side script //if (_Master.IFormURLPara.HandleType == "1")//Create New Case //{ //_Master.ButtonSubmitClientOnClick = "alert('submit click')"; //} //else if (_Master.IFormURLPara.StepName == "Direct Manager") //{ /* * Add required code here. * Sample: * _Master.ButtonApproveClientOnClick = "alert('approve click')"; * _Master.ButtonRejectClientOnClick = "alert('reject')"; * _Master.ButtonAbortClientOnClick = "alert('abort')"; * _Master.ButtonRecallClientOnClick = "alert('recall')"; */ // _Master.ButtonRejectClientOnClick = "event.returnValue=false;"; //} // Applicant Setting LiteOn.ea.SPM3G.UserInfoClass.UserInfoControlSetting lUC = new LiteOn.ea.SPM3G.UserInfoClass.UserInfoControlSetting(); lUC.SingleSelect = true; lUC.Display = false; if (_Master.IFormURLPara.StepName.ToUpper().Equals("BEGIN") && //Create New Case _Master.IFormURLPara.HandleType == "1") { lUC.ChangeUserEnabled = true; } else { lUC.ChangeUserEnabled = false; } //ScaleType.Dept Sample /* * LiteOn.ea.SPM3G.UserInfoClass.UserSearhScaleSetting lSetting = new LiteOn.ea.SPM3G.UserInfoClass.UserSearhScaleSetting(); * lSetting.Scale = LiteOn.ea.SPM3G.UserInfoClass.ScaleType.Department; * lSetting.DeptNo = "50015866"; * lUC.UserSearchControlScaleSetting = lSetting; */ //ScaleType.Custom Sample 2-1 /* * LiteOn.ea.SPM3G.UserInfoClass.UserSearhScaleSetting lSetting = new LiteOn.ea.SPM3G.UserInfoClass.UserSearhScaleSetting(); * lSetting.Scale = LiteOn.ea.SPM3G.UserInfoClass.ScaleType.Custom; * lSetting.CustomScaleSetting = GetCustomSearchSetting(); ; * lUC.UserSearchControlScaleSetting = lSetting; */ _Master.ApplicantControlSetting = lUC; // ScriptManager.RegisterStartupScript(this.Page, typeof(string), "setListBoxValue", "SPM_onload();", true); Model_BorgUserInfo oModel_BorgUserInfo = new Model_BorgUserInfo(); Borg_User oBorg_User = new Borg_User(); oModel_BorgUserInfo = oBorg_User.GetUserInfoByLogonId(_Master.IFormURLPara.LoginId); if (oModel_BorgUserInfo._EXISTS) { lblSite.Text = Borg_Tools.GetSiteInfo(); lblBu.Text = oModel_BorgUserInfo._BU; lblLogonId.Text = oModel_BorgUserInfo._LOGON_ID; } } }