/// <summary> /// Event when click confirm button, this function will register the information of invoice detail list to the system. /// </summary> /// <param name="param"></param> /// <returns></returns> public ActionResult ICS040_cmdConfirm(ICS040_ScreenParameter param) { ObjectResultData res = new ObjectResultData(); res.MessageType = MessageModel.MESSAGE_TYPE.INFORMATION; try { if (IsSuspend(res)) { return(Json(res)); } if (!ICS040_IsAllowOperate(res)) { return(Json(res)); } //Validate business, (Already confirmed with sa, need validate at this point) ICS040_ScreenParameter screenObject = GetScreenObject <ICS040_ScreenParameter>(); List <doInvoice> doInvoiceDb = new List <doInvoice>(); foreach (var item in screenObject.InvoiceList) { //Get Invoice Data doInvoice doInvoice = ICS040_GetInvoice(item.InvoiceNo, res); if (res.IsError) { return(Json(res)); } //Validate business ICS040_ValidateInvoiceBusiness(doInvoice, res); if (res.IsError) { return(Json(res)); } //Refresh doInvoice.ExemptApproveNo = item.ExemptApproveNo; doInvoiceDb.Add(doInvoice); } //Refresh screenObject.InvoiceList = doInvoiceDb; //Save Data to db IBillingHandler billingHandler = ServiceContainer.GetService <IBillingHandler>() as IBillingHandler; using (TransactionScope scope = new TransactionScope()) { try { foreach (doInvoice item in screenObject.InvoiceList) { bool isSuccess = billingHandler.RegisterInvoiceExemption(item); if (!isSuccess) { //all Fail scope.Dispose(); res.AddErrorMessage(MessageUtil.MODULE_INCOME, MessageUtil.MessageList.MSG7087); return(Json(res)); } } //Clear session screenObject.InvoiceList = new List <doInvoice>(); //Success scope.Complete(); res.ResultData = "1"; return(Json(res)); } catch (Exception ex) { //all Fail scope.Dispose(); throw ex; } } } catch (Exception ex) { res.MessageType = MessageModel.MESSAGE_TYPE.INFORMATION; res.AddErrorMessage(ex); } return(Json(res)); }