private string CompleteTickets(List <Ticket> tickets)
        {
            string  result           = string.Empty;
            decimal totalPayment     = 0;
            decimal totalExpense     = CurrencyUtil.ToDecimal(tbExpense.Text);
            decimal adjustment       = CurrencyUtil.ToDecimal(tbAdjustmentAmount.Text);
            string  adjustmentReason = tbAdjustmentReason.Text;

            Revenue revenue = new Revenue();

            revenue.id           = IDGenerator.RevenueId();
            revenue.type         = Constants.RevenueType.Ticket.ToString();
            revenue.name         = "Bán vé";
            revenue.description  = string.Empty;
            revenue.created_date = DateTime.Now;
            revenue.created_by   = SystemParam.CurrentUser.id;
            List <RevenueDetail> revenueDetails = new List <RevenueDetail>();

            foreach (var ticket in tickets)
            {
                ticket.status = Constants.TicketStatus.Closed.ToString();

                // Updates tickets
                result = _ticketBusiness.CompleteTicket(ticket.id);

                RevenueDetail detail = new RevenueDetail();
                detail.id           = IDGenerator.RevenueDetailId();
                detail.revenue_id   = revenue.id;
                detail.object_id    = ticket.id;
                detail.title        = "Bán vé";
                detail.type         = Constants.RevenueType.Ticket.ToString();
                detail.amount       = ticket.cost;
                totalPayment       += ticket.cost;
                detail.description  = string.Empty;
                detail.created_date = DateTime.Now;
                detail.created_by   = SystemParam.CurrentUser.id;
                revenueDetails.Add(detail);
            }
            revenue.amount = totalPayment;

            // Inserts revenue & details
            if (string.IsNullOrEmpty(result))
            {
                result = _revenueBusiness.Insert(revenue, revenueDetails);
            }
            // Inserts expense
            if (string.IsNullOrEmpty(result))
            {
                if (totalExpense != 0)
                {
                    Expense expense = new Expense();
                    expense.id           = IDGenerator.RevenueId();
                    expense.type         = Constants.RevenueType.Ticket.ToString();
                    expense.name         = "Bán vé";
                    expense.amount       = totalExpense;
                    expense.description  = string.Empty;
                    expense.created_date = DateTime.Now;
                    expense.created_by   = SystemParam.CurrentUser.id;
                    result = _expenseBusiness.Insert(expense);
                }
            }
            // Inserts adjustment
            if (string.IsNullOrEmpty(result))
            {
                if (adjustment > 0)
                {
                    Revenue adjustmentRevenue = new Revenue();
                    adjustmentRevenue.id           = IDGenerator.RevenueId();
                    adjustmentRevenue.type         = Constants.RevenueType.Adjustment.ToString();
                    adjustmentRevenue.name         = "Điều chỉnh - Bán vé";
                    adjustmentRevenue.amount       = Math.Abs(adjustment);
                    adjustmentRevenue.description  = adjustmentReason;
                    adjustmentRevenue.created_date = DateTime.Now;
                    adjustmentRevenue.created_by   = SystemParam.CurrentUser.id;
                    result = _revenueBusiness.Insert(adjustmentRevenue);
                }
                else if (adjustment < 0)
                {
                    Expense adjustmentExpense = new Expense();
                    adjustmentExpense.id           = IDGenerator.RevenueId();
                    adjustmentExpense.type         = Constants.RevenueType.Adjustment.ToString();
                    adjustmentExpense.name         = "Điều chỉnh - Bán vé";
                    adjustmentExpense.amount       = Math.Abs(adjustment);
                    adjustmentExpense.description  = adjustmentReason;
                    adjustmentExpense.created_date = DateTime.Now;
                    adjustmentExpense.created_by   = SystemParam.CurrentUser.id;
                    result = _expenseBusiness.Insert(adjustmentExpense);
                }
            }
            return(result);
        }