protected void SetMainFieldDisable(NPIGating_HISUIShadow lUIControls, SPMTaskVariables SPMTaskVars)
    {
        string stepname = SPMTaskVars.ReadDatum("STEPNAME").ToString();

        oUIControls.txtCustomer.ReadOnly            = true;
        oUIControls.txtDate.ReadOnly                = true;
        oUIControls.txtFormNo.ReadOnly              = true;
        oUIControls.txtModel.ReadOnly               = true;
        oUIControls.txtNextStage_BeginDate.ReadOnly = true;
        oUIControls.txtNotes.ReadOnly               = true;
        oUIControls.txtPM.ReadOnly         = true;
        oUIControls.txtRD.ReadOnly         = true;
        oUIControls.cmbPhase.ReadOnly      = true;
        oUIControls.cmbLayout.ReadOnly     = true;
        oUIControls.cmbPM.ReadOnly         = true;
        oUIControls.cmbRD.ReadOnly         = true;
        oUIControls.cmbSales.ReadOnly      = true;
        oUIControls.txtPMExt.ReadOnly      = true;
        oUIControls.txtRDExt.ReadOnly      = true;
        oUIControls.txtSalesExt.ReadOnly   = true;
        oUIControls.cbProductType.ReadOnly = true;
        oUIControls.cmbPlant.ReadOnly      = true;
        oUIControls.txtSales.ReadOnly      = true;
        oUIControls.ConAttachment.Hidden   = true;
        oUIControls.btnDelete.Hidden       = true;
        oUIControls.pnlCountersign.Hidden  = false;
        oUIControls.pnlResult.Hidden       = false;
    }
    private void DisableField(EFFormFields FormFields, NPIGating_HISUIShadow lUIControls, SPMTaskVariables SPMTaskVars, string Type)
    {
        string stepname = SPMTaskVars.ReadDatum("STEPNAME").ToString();
        string caseid   = SPMTaskVars.ReadDatum("CASEID").ToString();

        SetMainFieldDisable(lUIControls, SPMTaskVars);
    }
    public override void InitialDisableContainer(SPMTaskVariables SPMTaskVars, EFFormFields FormFields, ref object oContainer, IUIShadow UIShadow)
    {
        NPIGating_HISUIShadow lUIControls = (NPIGating_HISUIShadow)UIShadow;

        ShowFormDetail(FormFields, lUIControls, SPMTaskVars, "");
        DisableField(FormFields, lUIControls, SPMTaskVars, "");
        base.InitialDisableContainer(SPMTaskVars, FormFields, ref oContainer, UIShadow);
    }
    private void ShowFormDetail(EFFormFields FormFields, NPIGating_HISUIShadow lUIControls, SPMTaskVariables SPMTaskVars, string Type)
    {
        string caseid   = SPMTaskVars.ReadDatum("CASEID").ToString();
        string stepname = SPMTaskVars.ReadDatum("STEPNAME").ToString();

        SetMainValue(lUIControls, SPMTaskVars, FormFields);
        SetApproveResultValue(lUIControls, SPMTaskVars);
        BindAttachmentList(caseid);
    }
    // Code for Page_Load
    protected override void PageLoad(object oContainer, IFormURLPara para, IUIShadow UIShadow)
    {
        oPage       = (Page)oContainer;
        oUIControls = (NPIGating_HISUIShadow)UIShadow;
        oPara       = para;

        this.InitialPageControls();
        base.PageLoad(oContainer, para, 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)
    {
        NPIGating_HISUIShadow lUIControls = (NPIGating_HISUIShadow)UIShadow;

        FormFields.SetOrAdd("txtFormNo".ToUpper(), lUIControls.txtFormNo.Text);
        FormFields.SetOrAdd("txtSite".ToUpper(), lUIControls.lblSite.Text);
        FormFields.SetOrAdd("txtBu".ToUpper(), lUIControls.lblBu.Text);
        FormFields.SetOrAdd("txtBuilding".ToUpper(), lUIControls.cmbPlant.SelectedItem.Text);
        base.PrepareEFFormFields(SubmitMethod, ProcessMethod, TaskVars, ref FormFields, ref HandleResult, oContainer, UIShadow, ref ApplicantInfo);
    }
    protected void SetApproveResultValue(NPIGating_HISUIShadow lUIControls, SPMTaskVariables SPMTaskVars)
    {
        string       stepname  = SPMTaskVars.ReadDatum("STEPNAME").ToString();
        string       caseid    = SPMTaskVars.ReadDatum("CASEID").ToString();
        NPIMgmt      oMgmt     = new NPIMgmt(oUIControls.lblSite.Text, oUIControls.lblBu.Text);
        NPI_Standard oStandard = oMgmt.InitialLeaveMgmt();
        DataTable    dt        = new DataTable();

        dt = oStandard.GetNPIApproveResult(caseid);
        BindGrid(dt, lUIControls.grdResult);
    }
    public override void Print(int iTaskId, SPMTaskVariables SPMTaskVars, EFFormFields FormFields, object oContainer, IUIShadow UIShadow)
    {
        if (iTaskId < 0)
        {
            NPIGating_HISUIShadow lControls = (NPIGating_HISUIShadow)UIShadow;
        }
        //else
        //{

        //}

        base.Print(iTaskId, SPMTaskVars, FormFields, oContainer, UIShadow);
    }
    protected void SetMainValue(NPIGating_HISUIShadow lUIControls, SPMTaskVariables SPMTaskVars, EFFormFields FormFields)
    {
        string  caseid   = SPMTaskVars.ReadDatum("CASEID").ToString();
        string  Site     = FormFields["txtSite".ToUpper()];
        string  Bu       = "HIS";
        NPIMgmt oNPIMgmt = new NPIMgmt(Site, Bu);

        NPI_Standard oStandard = oNPIMgmt.InitialLeaveMgmt();

        DataTable dt = oStandard.GetMasterInfoHIS(caseid);

        if (dt.Rows.Count > 0)
        {
            DataRow dr = dt.Rows[0];

            oUIControls.txtFormNo.Text   = dr["DOC_NO"].ToString();
            oUIControls.txtCustomer.Text = dr["CUSTOMER"].ToString();
            oUIControls.txtDate.Text     = dr["APPLY_DATE"].ToString();
            oUIControls.txtNotes.Text    = dr["REMARK"].ToString();
            oUIControls.cmbPhase.Text    = dr["PHASE"].ToString();
            oUIControls.cmbPlant.Text    = dr["BUILDING"].ToString();
            oUIControls.cbProductType.SelectedItem.Text = dr["PRODUCT_TYPE"].ToString();
            oUIControls.txtModel.Text  = dr["MODEL_NAME"].ToString();
            oUIControls.cmbLayout.Text = dr["LAYOUT"].ToString();
            oUIControls.txtPM.Text     = dr["NPI_PM"].ToString();
            oUIControls.txtRD.Text     = dr["RD_ENGINEER"].ToString();
            oUIControls.txtSales.Text  = dr["SALES_OWNER"].ToString();
            oUIControls.txtNextStage_BeginDate.Text = dr["NEXTSTAGE_DATE"].ToString();
            oUIControls.cmbPM.SelectedItem.Text     = dr["PM_LOC"].ToString();
            oUIControls.txtPMExt.Text              = dr["PM_EXT"].ToString();
            oUIControls.cmbRD.SelectedItem.Text    = dr["RD_LOC"].ToString();
            oUIControls.txtRDExt.Text              = dr["RD_EXT"].ToString();
            oUIControls.cmbSales.SelectedItem.Text = dr["SALES_LOC"].ToString();
            oUIControls.txtSalesExt.Text           = dr["SALES_EXT"].ToString();
        }
    }
    public string BeginFormFieldsValidation(IUIShadow UIShadow)
    {
        NPIGating_HISUIShadow lUIControls = (NPIGating_HISUIShadow)UIShadow;
        NPIMgmt       oMgmt     = new NPIMgmt(lUIControls.lblSite.Text, lUIControls.lblBu.Text);
        NPI_Standard  oStandard = oMgmt.InitialLeaveMgmt();
        StringBuilder sbErrMsg  = new StringBuilder();
        string        ErrMsg    = string.Empty;

        if (string.IsNullOrEmpty(lUIControls.txtCustomer.Text))
        {
            sbErrMsg.Append("Custmer不允许为空</br>");
        }
        if (string.IsNullOrEmpty(lUIControls.cmbPlant.SelectedItem.Text))
        {
            sbErrMsg.Append(" 廠別不允许为空</br>");
        }
        if (string.IsNullOrEmpty(lUIControls.cbProductType.SelectedItem.Text))
        {
            sbErrMsg.Append(" 產品類別不允许为空</br>");
        }
        if (string.IsNullOrEmpty(lUIControls.txtModel.Text))
        {
            sbErrMsg.Append("幾種名稱不允许为空</br>");
        }
        if (string.IsNullOrEmpty(lUIControls.cmbPhase.SelectedItem.Text))
        {
            sbErrMsg.Append("階段不允许为空</br>");
        }


        if (string.IsNullOrEmpty(lUIControls.txtPM.Text))
        {
            sbErrMsg.Append("PM不允许为空</br>");
        }
        if (string.IsNullOrEmpty(lUIControls.txtRD.Text))
        {
            sbErrMsg.Append("RD不允许为空</br>");
        }
        if (string.IsNullOrEmpty(lUIControls.txtSales.Text))
        {
            sbErrMsg.Append("Sales不允许为空</br>");
        }
        //if (lUIControls.txtPM.Text.Length > 0)
        //{

        //    ErrMsg= oStandard.GetGlobalUserInfo(lUIControls.txtPM.Text);
        //    if (ErrMsg.Length > 0)
        //    {
        //        sbErrMsg.Append(ErrMsg + "</br>");
        //    }
        //}
        //if (lUIControls.txtRD.Text.Length > 0)
        //{

        //     ErrMsg = oStandard.GetGlobalUserInfo(lUIControls.txtRD.Text);
        //    if (ErrMsg.Length > 0)
        //    {
        //        sbErrMsg.Append(ErrMsg);
        //    }
        //}
        //if (lUIControls.txtSales.Text.Length > 0)
        //{

        //     ErrMsg = oStandard.GetGlobalUserInfo(lUIControls.txtSales.Text);
        //    if (ErrMsg.Length > 0)
        //    {
        //        sbErrMsg.Append(ErrMsg);
        //    }
        //}

        string ErrMsgAttachment = GetAttachmentInfo();

        if (ErrMsgAttachment.Length > 0)
        {
            sbErrMsg.Append(ErrMsgAttachment);
        }

        return(sbErrMsg.ToString());
    }
    // Validate contols before submit
    public override bool EFFormFieldsValidation(SPMSubmitMethod SubmitMethod, SPMProcessMethod ProcessMethod, SPMTaskVariables SPMTaskVars, ref IInterfaceHandleResult HandleResult, object oContainer, IUIShadow UIShadow)
    {
        NPIGating_HISUIShadow lUIControls = (NPIGating_HISUIShadow)UIShadow;
        string ErrMsg = string.Empty;

        if (SubmitMethod == SPMSubmitMethod.CreateNewCase)
        {
            #region [ check list]

            //ErrMsg = BeginFormFieldsValidation(UIShadow);

            if (ErrMsg.Length > 0)
            {
                HandleResult.IsSuccess     = false;
                HandleResult.CustomMessage = ErrMsg;
                return(false);
            }
            ////依DOA获取待签关卡及签核人资讯
            if (HandleResult.IsSuccess)
            {
                NPIMgmt      oMgmt     = new NPIMgmt(lUIControls.lblSite.Text, lUIControls.lblBu.Text);
                NPI_Standard oStandard = oMgmt.InitialLeaveMgmt();

                Model_NPI_DOA_Parameter oModel_NPI_DOA_Parameter = new Model_NPI_DOA_Parameter();

                //oModel_NPI_DOA_Parameter._BU = "HIS";
                oModel_NPI_DOA_Parameter._BU       = lUIControls.lblBu.Text;
                oModel_NPI_DOA_Parameter._BUILDING = lUIControls.cmbPlant.SelectedItem.Text;
                oModel_NPI_DOA_Parameter._CASE_ID  = oPara.CaseId;
                oModel_NPI_DOA_Parameter._FORM_NO  = lUIControls.txtFormNo.Text;
                oModel_NPI_DOA_Parameter._PHASE    = lUIControls.cmbPhase.SelectedItem.Text;

                oModel_NPI_DOA_HandlerInfo = oStandard.GenerateStepAndHandler(oModel_NPI_DOA_Parameter);

                if (!oModel_NPI_DOA_HandlerInfo._RESULT)
                {
                    HandleResult.IsSuccess     = false;
                    HandleResult.CustomMessage = oModel_NPI_DOA_HandlerInfo._ERROR_MSG;
                }
            }
            #endregion
        }
        else
        {
            string stepName = (string)(SPMTaskVars.ReadDatum("STEPNAME"));
            if (SubmitMethod != SPMSubmitMethod.CreateNewCase)
            {
                HandleResult.IsSuccess = true;
            }
            if (stepName == "Begin" || stepName == "開始")
            {
                HandleResult.IsSuccess     = false;
                HandleResult.CustomMessage = "退簽單據不可重複送簽!";
            }
            else
            {
                if (!(lUIControls.rdResultY.Checked || lUIControls.rdResultN.Checked || lUIControls.rdReulutCondition.Checked))
                {
                    HandleResult.IsSuccess     = false;
                    HandleResult.CustomMessage = "請勾选签核結果!";
                }
            }
        }
        return(base.EFFormFieldsValidation(SubmitMethod, ProcessMethod, SPMTaskVars, ref HandleResult, oContainer, UIShadow));
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        SpmMaster _Master = (SpmMaster)Master;

        oUIControls = new NPIGating_HISUIShadow(this);
        oFlowLogics = new NPIGating_HISLogics(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                       = "../PilotRunManual.ppt";
            _Master.HelpDesk                     = "http://www.liteon.com.tw/SPM/Example/Help.zip";
            _Master.BannerText1                  = "";
            _Master.BannerText2                  = "試產報告會簽表";
            _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    = true;
            lblLogonId.Value             = _Master.IFormURLPara.LoginId.Replace(" ", "").ToLower();
            //_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;
            }

            _Master.ApplicantControlSetting = lUC;


            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;
            }
            lblStepName.Text = _Master.IFormURLPara.StepName;
        }
    }