/// <summary>
        /// Search Customer Change History list by condition from caller screen.
        /// </summary>
        /// <param name="strContractCode"></param>
        /// <param name="strOCC"></param>
        /// <param name="strCSCustCode"></param>
        /// <param name="strRCCustCode"></param>
        /// <param name="strSiteCode"></param>
        /// <returns></returns>
        public ActionResult CMS300_Search(string strContractCode, string strOCC, string strCSCustCode, string strRCCustCode, string strSiteCode)
        {
            ObjectResultData res = new ObjectResultData();

            try
            {
                strContractCode = strContractCode == "" ? null : strContractCode;
                strOCC          = strOCC == "" ? null : strOCC;
                strCSCustCode   = strCSCustCode == "" ? null : strCSCustCode;
                strRCCustCode   = strRCCustCode == "" ? null : strRCCustCode;
                strSiteCode     = strSiteCode == "" ? null : strSiteCode;

                CommonUtil util = new CommonUtil();
                strContractCode = util.ConvertContractCode(strContractCode, CommonUtil.CONVERT_TYPE.TO_LONG);
                strCSCustCode   = util.ConvertCustCode(strCSCustCode, CommonUtil.CONVERT_TYPE.TO_LONG);
                strRCCustCode   = util.ConvertCustCode(strRCCustCode, CommonUtil.CONVERT_TYPE.TO_LONG);
                strSiteCode     = util.ConvertSiteCode(strSiteCode, CommonUtil.CONVERT_TYPE.TO_LONG);

                IViewContractHandler         hand = ServiceContainer.GetService <IViewContractHandler>() as IViewContractHandler;
                List <dtChangedCustHistList> list = hand.GetChangedCustHistList(strContractCode,
                                                                                strOCC,
                                                                                strCSCustCode,
                                                                                strRCCustCode,
                                                                                strSiteCode,
                                                                                MiscType.C_CONTRACT_SIGNER_TYPE,
                                                                                MiscType.C_CHANGE_NAME_REASON_TYPE);
                CommonUtil.MappingObjectLanguage <dtChangedCustHistList>(list);

                foreach (var i in list)
                {
                    i.CSCustCode = util.ConvertCustCode(i.CSCustCode, CommonUtil.CONVERT_TYPE.TO_SHORT);
                    i.RCCustCode = util.ConvertCustCode(i.RCCustCode, CommonUtil.CONVERT_TYPE.TO_SHORT);
                    i.SiteCode   = util.ConvertCustCode(i.SiteCode, CommonUtil.CONVERT_TYPE.TO_SHORT);
                }

                string xml = CommonUtil.ConvertToXml <dtChangedCustHistList>(list, "Common\\CMS300", CommonUtil.GRID_EMPTY_TYPE.SEARCH);
                res.ResultData = xml;
            }
            catch (Exception ex)
            {
                res.AddErrorMessage(ex);
            }
            return(Json(res));
        }