/// <summary>
        /// Check permission for access screen CMS200
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public ActionResult CMS200_Authority(CMS200_ScreenParameter param) // IN parameter: string strContractCode, string strServiceTypeCode
        {
            ObjectResultData res = new ObjectResultData();

            // Check permission
            if (!CheckUserPermission(ScreenID.C_SCREEN_ID_VIEW_CONTRACT_BILLING, FunctionID.C_FUNC_ID_OPERATE))
            {
                res.AddErrorMessage(MessageUtil.MODULE_COMMON, MessageUtil.MessageList.MSG0053);
                return(Json(res));
            }

            // Check parameter is OK ?
            if (CommonUtil.IsNullOrEmpty(param.strContractCode) == false && CommonUtil.IsNullOrEmpty(param.strServiceTypeCode) == false)
            {
                param.ContractCode    = param.strContractCode;
                param.ServiceTypeCode = param.strServiceTypeCode;
            }
            else
            {
                res.AddErrorMessage(MessageUtil.MODULE_COMMON, MessageUtil.MessageList.MSG0040);
                return(Json(res));
            }

            // Check exist data
            try
            {
                CommonUtil c            = new CommonUtil();
                string     ContractCode = c.ConvertContractCode(param.strContractCode, CommonUtil.CONVERT_TYPE.TO_LONG);


                IRentralContractHandler handlerRC = ServiceContainer.GetService <IRentralContractHandler>() as IRentralContractHandler;
                ISaleContractHandler    handlerSC = ServiceContainer.GetService <ISaleContractHandler>() as ISaleContractHandler;
                List <dtTbt_RentalContractBasicForView> listRC = new List <dtTbt_RentalContractBasicForView>();
                List <dtTbt_SaleBasicForView>           listSC = new List <dtTbt_SaleBasicForView>();

                if (param.strServiceTypeCode == ServiceType.C_SERVICE_TYPE_RENTAL)
                {
                    listRC = handlerRC.GetTbt_RentalContractBasicForView(ContractCode);
                }
                else if (param.strServiceTypeCode == ServiceType.C_SERVICE_TYPE_SALE)
                {
                    listSC = handlerSC.GetTbt_SaleBasicForView(ContractCode, null, true);
                }

                if (listRC.Count == 0 && listSC.Count == 0)
                {
                    res.AddErrorMessage(MessageUtil.MODULE_COMMON, MessageUtil.MessageList.MSG0001);
                    return(Json(res));
                }
            }
            catch
            {
                res.AddErrorMessage(MessageUtil.MODULE_COMMON, MessageUtil.MessageList.MSG0001);
                return(Json(res));
            }



            return(InitialScreenEnvironment <CMS200_ScreenParameter>("CMS200", param, res));
        }
        public ActionResult CMS200()
        {
            string strContractCode    = "";
            string strServiceTypeCode = "";

            try
            {
                CMS200_ScreenParameter param = GetScreenObject <CMS200_ScreenParameter>();
                strContractCode    = param.ContractCode;
                strServiceTypeCode = param.ServiceTypeCode;
            }
            catch
            {
            }

            // Keep service type code
            ViewBag.ServiceTypeCode = strServiceTypeCode;

            // Keep contract code  (short)
            ViewBag._ContractCode       = strContractCode;
            ViewBag._OCC                = string.Empty;
            ViewBag._ContractTargetCode = string.Empty;
            ViewBag._RealCustomerCode   = string.Empty;
            ViewBag._PurchaserCustCode  = string.Empty;
            ViewBag._SiteCode           = string.Empty;



            CommonUtil c = new CommonUtil();

            strContractCode = c.ConvertContractCode(strContractCode, CommonUtil.CONVERT_TYPE.TO_LONG);

            try
            {
                IRentralContractHandler handlerRC = ServiceContainer.GetService <IRentralContractHandler>() as IRentralContractHandler;
                ISaleContractHandler    handlerSC = ServiceContainer.GetService <ISaleContractHandler>() as ISaleContractHandler;

                if (strServiceTypeCode == ServiceType.C_SERVICE_TYPE_RENTAL)
                {
                    List <dtTbt_RentalContractBasicForView> listRC = handlerRC.GetTbt_RentalContractBasicForView(strContractCode);

                    if (listRC.Count > 0)
                    {
                        // convert code to short format
                        listRC[0].ContractCode           = c.ConvertContractCode(listRC[0].ContractCode, CommonUtil.CONVERT_TYPE.TO_SHORT);
                        listRC[0].ContractTargetCustCode = c.ConvertCustCode(listRC[0].ContractTargetCustCode, CommonUtil.CONVERT_TYPE.TO_SHORT);
                        listRC[0].RealCustomerCustCode   = c.ConvertCustCode(listRC[0].RealCustomerCustCode, CommonUtil.CONVERT_TYPE.TO_SHORT);
                        listRC[0].SiteCode = c.ConvertSiteCode(listRC[0].SiteCode, CommonUtil.CONVERT_TYPE.TO_SHORT);


                        // gorbal javascript variable
                        ViewBag._OCC = listRC[0].LastOCC;
                        ViewBag._ContractTargetCode = listRC[0].ContractTargetCustCode;
                        ViewBag._RealCustomerCode   = listRC[0].RealCustomerCustCode;
                        ViewBag._SiteCode           = listRC[0].SiteCode;



                        ViewBag.txtContractCode      = listRC[0].ContractCode;
                        ViewBag.txtUserCode          = listRC[0].UserCode;
                        ViewBag.lnkCustomerCodeC     = listRC[0].ContractTargetCustCode;
                        ViewBag.lnkCustomerCodeR     = listRC[0].RealCustomerCustCode;
                        ViewBag.lnkSiteCode          = listRC[0].SiteCode;
                        ViewBag.txtContractNameEng   = listRC[0].CustFullNameEN_Cust;
                        ViewBag.txtContractAddrEng   = listRC[0].AddressFullEN_Cust;
                        ViewBag.txtSiteNameEng       = listRC[0].SiteNameEN_Site;
                        ViewBag.txtSiteAddrEng       = listRC[0].AddressFullEN_Site;
                        ViewBag.txtContractNameLocal = listRC[0].CustFullNameLC_Cust;
                        ViewBag.txtContractAddrLocal = listRC[0].AddressFullLC_Cust;
                        ViewBag.txtSiteNameLocal     = listRC[0].SiteNameLC_Site;
                        ViewBag.txtSiteAddrLocal     = listRC[0].AddressFullLC_Site;
                        //ViewBag.txtContactPoint  = listRC[0].ContactPoint  ;
                        ViewBag.txtContactPoint = CommonUtil.IsNullOrEmpty(listRC[0].ContactPoint) == true ? "-" : listRC[0].ContactPoint;

                        ViewBag.txtRentalAttachImportanceFlag = listRC[0].SpecialCareFlag;

                        ViewBag.ProductTypeCode = listRC[0].ProductTypeCode;
                    }
                }
                else if (strServiceTypeCode == ServiceType.C_SERVICE_TYPE_SALE)
                {
                    List <dtTbt_SaleBasicForView> listSC = handlerSC.GetTbt_SaleBasicForView(strContractCode, null, true);

                    if (listSC.Count > 0) // SCB : Sale Contract Basic
                    {
                        // convert code to short format
                        listSC[0].ContractCode      = c.ConvertContractCode(listSC[0].ContractCode, CommonUtil.CONVERT_TYPE.TO_SHORT);
                        listSC[0].CustCode_PurCust  = c.ConvertCustCode(listSC[0].CustCode_PurCust, CommonUtil.CONVERT_TYPE.TO_SHORT);
                        listSC[0].CustCode_RealCust = c.ConvertCustCode(listSC[0].CustCode_RealCust, CommonUtil.CONVERT_TYPE.TO_SHORT);
                        listSC[0].SiteCode          = c.ConvertSiteCode(listSC[0].SiteCode, CommonUtil.CONVERT_TYPE.TO_SHORT);

                        // gorbal javascript variable
                        ViewBag._OCC = listSC[0].OCC;
                        ViewBag._PurchaserCustCode = listSC[0].CustCode_PurCust;
                        ViewBag._RealCustomerCode  = listSC[0].CustCode_RealCust;
                        ViewBag._SiteCode          = listSC[0].SiteCode;



                        ViewBag.txtSCBContractCode       = listSC[0].ContractCode;
                        ViewBag.lnkSCBPurchaserC         = listSC[0].CustCode_PurCust;
                        ViewBag.lnkSCBCustomerCodeR      = listSC[0].CustCode_RealCust;
                        ViewBag.lnkSCBSiteCode           = listSC[0].SiteCode;
                        ViewBag.txtSCBPurchaserNameEng   = listSC[0].PurCust_CustFullNameEN;
                        ViewBag.txtSCBPurchaserAddrEng   = listSC[0].AddressFullEN_PurCust;
                        ViewBag.txtSCBSiteNameEng        = listSC[0].site_SiteNameEN;
                        ViewBag.txtSCBSiteAddrEng        = listSC[0].AddressFullEN_site;
                        ViewBag.txtSCBPurchaserNameLocal = listSC[0].PurCust_CustFullNameLC;
                        ViewBag.txtSCBPurchaserAddrLocal = listSC[0].AddressFullLC_PurCust;
                        ViewBag.txtSCBSiteNameLocal      = listSC[0].site_SiteNameLC;
                        ViewBag.txtSCBSiteAddrLocal      = listSC[0].AddressFullLC_site;
                        //ViewBag.txtSCBContactPoint  = listSC[0].ContactPoint  ;
                        ViewBag.txtSCBContactPoint = CommonUtil.IsNullOrEmpty(listSC[0].ContactPoint) == true ? "-" : listSC[0].ContactPoint;

                        ViewBag.txtSaleAttachImportanceFlag = listSC[0].SpecialCareFlag;

                        ViewBag.ProductTypeCode = listSC[0].ProductTypeCode;
                    }
                }



                return(View());
            }
            catch (Exception ex)
            {
                ObjectResultData res = new ObjectResultData();
                res.AddErrorMessage(ex);
                return(Json(res));
            }
        }