/// <summary> /// Retrieve billing detail list of inputted advance search criteria. /// </summary> /// <param name="doSearch">advance search criteria information</param> /// <returns></returns> public ActionResult ICS081_SearchBillingByCriteria(ICS081_UnpaidBillingTargetSearchCriteria doSearch) { ObjectResultData res = new ObjectResultData(); res.MessageType = MessageModel.MESSAGE_TYPE.WARNING; try { //Validate Model ValidatorUtil.BuildErrorMessage(res, this, new object[] { doSearch }); if (res.IsError) { return(Json(res)); } //Validate Business ValidatorUtil validator = new ValidatorUtil(); ICS081_ValidateSearchBillingByCriteria(validator, doSearch); ValidatorUtil.BuildErrorMessage(res, validator, null); if (res.IsError) { return(Json(res)); } //Get Data IIncomeHandler handler = ServiceContainer.GetService <IIncomeHandler>() as IIncomeHandler; List <doGetUnpaidBillingTargetByCodeWithExchange> unpaidList = handler.SearchUnpaidBillingTargetWithExchange(doSearch); ICS081_ValidateDisplayBillingTargetSearchResult(res, unpaidList, true); res.ResultData = CommonUtil.ConvertToXml <doGetUnpaidBillingTargetByCodeWithExchange>(unpaidList, "Income\\ICS081", CommonUtil.GRID_EMPTY_TYPE.SEARCH); return(Json(res)); } catch (Exception ex) { res = new ObjectResultData(); res.MessageType = MessageModel.MESSAGE_TYPE.INFORMATION; res.AddErrorMessage(ex); return(Json(res)); } }