public ActionResult IVS285_GenerateReport(doIVS285SearchCondition reportParam)
        {
            IVS285_ScreenParameter param = GetScreenObject <IVS285_ScreenParameter>();

            ObjectResultData res = new ObjectResultData();

            res.MessageType = MessageModel.MESSAGE_TYPE.WARNING;

            try
            {
                if (reportParam == null || reportParam.InstrumentCodeSelected == null || reportParam.InstrumentCodeSelected.Length == 0)
                {
                    res.AddErrorMessage(MessageUtil.MODULE_COMMON, MessageUtil.MessageList.MSG0006);
                }
                else
                {
                    if (param.LastSearchParam == null)
                    {
                        param.LastSearchParam = reportParam;
                    }

                    IInventoryHandler service = ServiceContainer.GetService <IInventoryHandler>() as IInventoryHandler;
                    var lst = service.GetStockReport_Physical(param.LastSearchParam.ReportType, string.Join(",", reportParam.InstrumentCodeSelected), reportParam.YearMonth);
                    IInventoryDocumentHandler docService = ServiceContainer.GetService <IInventoryDocumentHandler>() as IInventoryDocumentHandler;
                    param.PendingDownloadFilePath = docService.GenerateIVS285PhysicalReport(param.LastSearchParam.ReportType, lst);
                    param.PendingDownloadFileName = "PhysicalReport.xlsx";
                    res.ResultData = true;
                }
            }
            catch (Exception ex)
            {
                res.MessageType = MessageModel.MESSAGE_TYPE.INFORMATION;
                res.AddErrorMessage(ex);
            }

            return(Json(res));
        }