Exemplo n.º 1
0
        public DataTable GetAnalysisDetails(int SpotCheckDataType, DateTime StartDate, DateTime EndDate)
        {
            DataTable dtAnalysis = new DataTable();

            decimal CashIn = 0;
            decimal CashOut = 0;
            decimal TotalCashIn = 0;
            decimal TotalCashOut = 0;
            decimal Totalhandle = 0;
            decimal TotalNetWin = 0;
            int InstallationNo = 0;
            int Numberofdays = 0;
            int TotalGamesBet = 0;
            //int TotalBills = 0;
            //int TotalTicketsIn = 0;
            //int TotalCoinsIn = 0;
            //int TotalCoinsOut = 0;
            //int TicketsOut = 0;
            //int TotalHandpay = 0;
            //int TotalJackpot = 0;
            //int ProgressiveHandpay = 0;

            decimal TotalBills = 0;
            decimal TotalTicketsIn = 0;
            decimal TotalCoinsIn = 0;
            decimal TotalCoinsOut = 0;
            decimal TicketsOut = 0;
            decimal TotalHandpay = 0;
            decimal TotalJackpot = 0;
            decimal ProgressiveHandpay = 0;

            decimal PriceOfPlay = 1;
            decimal InstallationTokenValue = 0;
            decimal MDA = 0;

            decimal CashableEFTIn = 0;
            decimal CashableEFTOut = 0;
            decimal NonCashableEFTIn = 0;
            decimal NonCashableEFTOut = 0;
            decimal WATIn = 0;
            decimal WATOut = 0;

            decimal TotalNonCashableTicketsIn = 0;
            decimal TotalNonCashableTicketsOut = 0;
            decimal TotalMDA = 0;

            DateTime InstallationEndDate;
            SpotCheck spotCheckData;

            string reportType = string.Empty;

            dtAnalysis.Columns.Add("Installation_No");
            dtAnalysis.Columns.Add("Bar_Pos_Name");
            dtAnalysis.Columns.Add("Stock_No");
            dtAnalysis.Columns.Add("Name");
            dtAnalysis.Columns.Add("LastMeterUpdate");
            dtAnalysis.Columns.Add("GMUtoMachine");
            dtAnalysis.Columns.Add("GMUtoServer");
            dtAnalysis.Columns.Add("Bills_In", typeof(decimal));
            dtAnalysis.Columns.Add("Coin_In", typeof(decimal));
            dtAnalysis.Columns.Add("Coin_Out", typeof(decimal));
            dtAnalysis.Columns.Add("Tickets_In", typeof(decimal));
            dtAnalysis.Columns.Add("Tickets_Out", typeof(decimal));
            dtAnalysis.Columns.Add("Non_Cashable_Tickets_In", typeof(decimal));
            dtAnalysis.Columns.Add("Non_Cashable_Tickets_Out", typeof(decimal));
            dtAnalysis.Columns.Add("Handpay", typeof(decimal));
            dtAnalysis.Columns.Add("Jackpot", typeof(decimal));
            dtAnalysis.Columns.Add("Prog_Handpay", typeof(decimal));
            dtAnalysis.Columns.Add("Cash_In", typeof(decimal));
            dtAnalysis.Columns.Add("Cash_Out", typeof(decimal));
            dtAnalysis.Columns.Add("Handle", typeof(decimal));
            dtAnalysis.Columns.Add("AvgBet", typeof(decimal));
            dtAnalysis.Columns.Add("NetWin", typeof(decimal));
            dtAnalysis.Columns.Add("MDA", typeof(decimal));





            if (Settings.IsAFTEnabledForSite)
            {
                dtAnalysis.Columns.Add("CashableEFTIn", typeof(decimal));
                dtAnalysis.Columns.Add("CashableEFTOut", typeof(decimal));
                dtAnalysis.Columns.Add("NonCashableEFTIn", typeof(decimal));
                dtAnalysis.Columns.Add("NonCashableEFTOut", typeof(decimal));
                dtAnalysis.Columns.Add("WATIn", typeof(decimal));
                dtAnalysis.Columns.Add("WATOut", typeof(decimal));
            }

            try
            {
                switch (SpotCheckDataType.ToString())
                {
                    case "1":
                        reportType = "DAY";
                        break;
                    case "2":
                        reportType = "DROP";
                        break;
                    case "3":
                        reportType = "WEEK";
                        break;
                    case "4":
                        reportType = "MONTH";
                        break;
                }

                foreach (DataRow InstallationDetail in (new CommonDataAccess()).GetInstallationDetailsForReports(reportType).Rows)
                {
                    if (InstallationDetail["Installation_No"] != DBNull.Value)
                    {
                        PriceOfPlay = 1;
                        InstallationNo = Convert.ToInt32(InstallationDetail["Installation_No"]);
                        spotCheckData = new BMC.Transport.CashDeskOperatorEntity.SpotCheck();
                        spotCheckData.InstallationNo = InstallationNo;
                        spotCheckData.DateTimeStamp = DateTime.Now;
                        spotCheckData.Date = DateTime.Now;
                        InstallationEndDate = ((InstallationDetail["End_Date"]) != DBNull.Value) ? Convert.ToDateTime(InstallationDetail["End_Date"]) : DateTime.Now.AddDays(1);

                        switch (SpotCheckDataType)
                        {
                            case 1:
                                spotCheckData.StartOfDay = 1;
                                //if (InstallationEndDate.Date < System.DateTime.Now.Date) continue;
                                break;
                            case 2:
                                spotCheckData.Type = 2;
                                spotCheckData.StartOfDay = 2;
                                //if (InstallationEndDate.Date <= System.DateTime.Now.Date) continue;
                                break;
                            case 3:
                                StartDate = analysisDataAccessHandler.GetMonthOrWeekStartDate().Rows[0]["WeekStart"].ToString().ReadDate();
                                spotCheckData.Date = StartDate;
                                //if (InstallationEndDate.Date <= StartDate.Date) continue;
                                break;
                            case 4:
                                StartDate = analysisDataAccessHandler.GetMonthOrWeekStartDate().Rows[0]["MonthStart"].ToString().ReadDate();
                                spotCheckData.Date = StartDate;
                                //if (InstallationEndDate.Date <= StartDate.Date) continue;
                                break;
                        }

                        analysisDataAccessHandler.GetAnalysisDetails(ref spotCheckData);

                        InstallationTokenValue = (InstallationDetail["installation_token_value"]).ToString().GetDecimal();
                        PriceOfPlay = (InstallationDetail["installation_Price_Of_Play"]).ToString().GetDecimal();
                        PriceOfPlay = PriceOfPlay == 0 ? 1 : PriceOfPlay;
                        Totalhandle += (spotCheckData.CoinsIn * (PriceOfPlay / 100));

                        DataRow dr = dtAnalysis.NewRow();

                        dr["Installation_No"] = InstallationDetail["Installation_no"].ToString();
                        dr["Bar_Pos_Name"] = InstallationDetail["Bar_Pos_Name"].ToString();
                        dr["Stock_No"] = InstallationDetail["Stock_No"].ToString();
                        dr["Name"] = InstallationDetail["Name"].ToString();
                        dr["LastMeterUpdate"] = InstallationDetail["LastMeterUpdate"].ToString();
                        if (Convert.ToInt16(InstallationDetail["Datapak_PollingStatus"]) == 0)
                            dr["GMUtoServer"] = "ERROR";
                        else
                            dr["GMUtoServer"] = "OK";
                        if (Convert.ToInt16(InstallationDetail["GMU_Machine_Status"]) == 0)
                            dr["GMUtoMachine"] = "ERROR";
                        else
                        {
                            if (Convert.ToInt16(InstallationDetail["Datapak_PollingStatus"]) == 0)
                                dr["GMUtoMachine"] = "UNKNOWN";
                            else
                                dr["GMUtoMachine"] = "OK";
                        }
                        decimal Bills = 0;
                        if (System.Globalization.CultureInfo.CurrentCulture.Name == "it-IT" || System.Globalization.CultureInfo.CurrentUICulture.Name == "it-IT" ||
                            (Settings.RegulatoryEnabled && Settings.RegulatoryType == "AAMS"))
                            Bills = spotCheckData.Bill1 + (spotCheckData.Bill2 * 2) +
                                        (spotCheckData.Bill5 * 5) + (spotCheckData.Bill10 * 10) +
                                        (spotCheckData.Bill20 * 20) + (spotCheckData.Bill50 * 50) +
                                        (spotCheckData.Bill100 * 100) + (spotCheckData.Bill200 * 200) +
                                         (spotCheckData.Bill500 * 500);
                        else if (Settings.Region == "AR")
                            Bills = (spotCheckData.Bill2 * 2) +
                                     (spotCheckData.Bill5 * 5) + (spotCheckData.Bill10 * 10) +
                                     (spotCheckData.Bill20 * 20) + (spotCheckData.Bill50 * 50) +
                                     (spotCheckData.Bill100 * 100);
                        else
                            Bills = spotCheckData.Bill1 + (spotCheckData.Bill2 * 2) +
                                      (spotCheckData.Bill5 * 5) + (spotCheckData.Bill10 * 10) +
                                      (spotCheckData.Bill20 * 20) + (spotCheckData.Bill50 * 50) +
                                      (spotCheckData.Bill100 * 100);

                        dr["Bills_In"] = Bills;
                        dr["Tickets_In"] = spotCheckData.TicketsInserted / 100;
                        dr["Coin_In"] = spotCheckData.TrueCoinIn * (InstallationTokenValue / 100);
                        dr["Non_Cashable_Tickets_In"] = spotCheckData.NonCashableTicketsInserted / 100;
                        dr["Non_Cashable_Tickets_Out"] = spotCheckData.NonCashableTicketsPrinted / 100;

                        CashIn = (Bills + (spotCheckData.TicketsInserted / 100) + (spotCheckData.NonCashableTicketsInserted / 100) + (spotCheckData.TrueCoinIn * (InstallationTokenValue / 100)));
                        CashOut = spotCheckData.TrueCoinOut * (PriceOfPlay / 100) + spotCheckData.TicketsPrinted / 100 + spotCheckData.HandPay * (PriceOfPlay / 100) + spotCheckData.Jackpot * (PriceOfPlay / 100)
                            + spotCheckData.NonCashableTicketsPrinted / 100;

                        if (Settings.IsAFTIncludedInCalculation)
                        {
                            CashIn += spotCheckData.CashableEFTIn / 100 + spotCheckData.NonCashableEFTIn / 100 + spotCheckData.WATIn / 100;
                            CashOut += spotCheckData.CashableEFTOut / 100 + spotCheckData.NonCashableEFTOut / 100 + spotCheckData.WATOut / 100;
                        }

                        dr["Cash_In"] = CashIn;
                        dr["Cash_Out"] = CashOut;

                        TotalCashIn += CashIn;
                        TotalCashOut += CashOut;

                        dr["NetWin"] = CashIn - CashOut;
                        dr["Handle"] = (spotCheckData.CoinsIn * (PriceOfPlay / 100));
                        Numberofdays += spotCheckData.NumberOfDays;
                        if (spotCheckData.NumberOfDays > 0)
                            MDA = (decimal)(CashIn - CashOut) / spotCheckData.NumberOfDays;
                        else
                            MDA = (decimal)(CashIn - CashOut);

                        dr["MDA"] = MDA == 0 ? 0 : MDA;
                        dr["Coin_Out"] = spotCheckData.TrueCoinOut * (InstallationTokenValue / 100);
                        dr["Tickets_Out"] = spotCheckData.TicketsPrinted / 100;
                        dr["Handpay"] = spotCheckData.HandPay * (PriceOfPlay / 100);
                        dr["Jackpot"] = spotCheckData.Jackpot * (PriceOfPlay / 100);
                        dr["Prog_Handpay"] = spotCheckData.ProgHandpay * (PriceOfPlay / 100);
                        dr["AvgBet"] = spotCheckData.GamesBet == 0 ? (spotCheckData.CoinsIn * (PriceOfPlay / 100)) : (spotCheckData.CoinsIn * (PriceOfPlay / 100)) / spotCheckData.GamesBet;
                        if (Settings.IsAFTEnabledForSite)
                        {
                            dr["CashableEFTIn"] = spotCheckData.CashableEFTIn / 100;
                            dr["CashableEFTOut"] = spotCheckData.CashableEFTOut / 100;
                            dr["NonCashableEFTIn"] = spotCheckData.NonCashableEFTIn / 100;
                            dr["NonCashableEFTOut"] = spotCheckData.NonCashableEFTOut / 100;
                            dr["WATIn"] = spotCheckData.WATIn / 100;
                            dr["WATOut"] = spotCheckData.WATOut / 100;
                        }

                        if (System.Globalization.CultureInfo.CurrentCulture.Name == "it-IT" || System.Globalization.CultureInfo.CurrentUICulture.Name == "it-IT" ||
                           (Settings.RegulatoryEnabled && Settings.RegulatoryType == "AAMS"))
                            TotalBills += spotCheckData.Bill1 + (spotCheckData.Bill2 * 2) + (spotCheckData.Bill5 * 5) +
                                        (spotCheckData.Bill10 * 10) + (spotCheckData.Bill20 * 20) + (spotCheckData.Bill50 * 50) +
                                        (spotCheckData.Bill100 * 100) + (spotCheckData.Bill200 * 200) +
                                        (spotCheckData.Bill500 * 500);
                        else if (Settings.Region == "AR")
                            TotalBills += (spotCheckData.Bill2 * 2) + (spotCheckData.Bill5 * 5) +
                                       (spotCheckData.Bill10 * 10) + (spotCheckData.Bill20 * 20) + (spotCheckData.Bill50 * 50) +
                                       (spotCheckData.Bill100 * 100);
                        else
                            TotalBills += spotCheckData.Bill1 + (spotCheckData.Bill2 * 2) + (spotCheckData.Bill5 * 5) +
                                        (spotCheckData.Bill10 * 10) + (spotCheckData.Bill20 * 20) + (spotCheckData.Bill50 * 50) +
                                        (spotCheckData.Bill100 * 100);
                        TotalTicketsIn += spotCheckData.TicketsInserted / 100;
                        TotalGamesBet += spotCheckData.GamesBet;
                        TotalCoinsIn += Convert.ToDecimal(spotCheckData.TrueCoinIn * (InstallationTokenValue / 100));
                        TotalCoinsOut += Convert.ToDecimal(spotCheckData.TrueCoinOut * (InstallationTokenValue / 100));
                        TicketsOut += (decimal)(spotCheckData.TicketsPrinted / 100);
                        TotalHandpay += Convert.ToDecimal(spotCheckData.HandPay * (PriceOfPlay / 100));
                        TotalJackpot += Convert.ToDecimal(spotCheckData.Jackpot * (PriceOfPlay / 100));
                        ProgressiveHandpay += Convert.ToDecimal(spotCheckData.ProgHandpay * (PriceOfPlay / 100));
                        TotalNonCashableTicketsIn += spotCheckData.NonCashableTicketsInserted / 100;
                        TotalNonCashableTicketsOut += spotCheckData.NonCashableTicketsPrinted / 100;
                        TotalMDA += MDA;
                        if (Settings.IsAFTEnabledForSite)
                        {
                            CashableEFTIn += Convert.ToDecimal(spotCheckData.CashableEFTIn / 100);
                            CashableEFTOut += Convert.ToDecimal(spotCheckData.CashableEFTOut / 100);
                            NonCashableEFTIn += Convert.ToDecimal(spotCheckData.NonCashableEFTIn / 100);
                            NonCashableEFTOut += Convert.ToDecimal(spotCheckData.NonCashableEFTOut / 100);
                            WATIn += Convert.ToDecimal(spotCheckData.WATIn / 100);
                            WATOut += Convert.ToDecimal(spotCheckData.WATOut / 100);
                        }
                        dtAnalysis.Rows.Add(dr);
                    }
                }
                if (dtAnalysis.Rows.Count > 0)
                {
                    DataRow SumOfRows = dtAnalysis.NewRow();
                    SumOfRows["Installation_No"] = string.Empty;
                    SumOfRows["Bar_Pos_Name"] = "Total";
                    SumOfRows["Stock_No"] = string.Empty;
                    SumOfRows["Name"] = string.Empty;
                    SumOfRows["LastMeterUpdate"] = string.Empty;
                    SumOfRows["Cash_In"] = TotalCashIn;
                    SumOfRows["Cash_Out"] = TotalCashOut;
                    SumOfRows["NetWin"] = (TotalCashIn - TotalCashOut);
                    SumOfRows["Handle"] = Totalhandle;

                    decimal TotalAvgBet = 0;
                    if (TotalGamesBet == 0)
                        TotalAvgBet = Totalhandle;
                    else
                        TotalAvgBet = Totalhandle / TotalGamesBet;

                    //if (Numberofdays > 0)
                    //    MDA = (decimal)(TotalCashIn - TotalCashOut) /( dtAnalysis.Rows.Count * Numberofdays)  ;
                    //else
                    //    MDA = (decimal)(TotalCashIn - TotalCashOut) / dtAnalysis.Rows.Count;

                    SumOfRows["AvgBet"] = Math.Round(TotalAvgBet, 2);
                    SumOfRows["MDA"] = Math.Round(TotalMDA / (dtAnalysis.Rows.Count), 2);//Modified Total AvgDailyWin calculation CR#92149 Fix
                    SumOfRows["Bills_In"] = TotalBills;
                    SumOfRows["Tickets_In"] = TotalTicketsIn;
                    SumOfRows["Tickets_Out"] = TicketsOut;
                    SumOfRows["Coin_In"] = TotalCoinsIn;
                    SumOfRows["Coin_Out"] = TotalCoinsOut;
                    SumOfRows["Non_Cashable_Tickets_In"] = TotalNonCashableTicketsIn;
                    SumOfRows["Non_Cashable_Tickets_out"] = TotalNonCashableTicketsOut;
                    SumOfRows["Handpay"] = TotalHandpay;
                    SumOfRows["Jackpot"] = TotalJackpot;
                    SumOfRows["Prog_Handpay"] = ProgressiveHandpay;
                    if (Settings.IsAFTEnabledForSite)
                    {
                        SumOfRows["CashableEFTIn"] = CashableEFTIn;
                        SumOfRows["CashableEFTOut"] = CashableEFTOut;
                        SumOfRows["NonCashableEFTIn"] = NonCashableEFTIn;
                        SumOfRows["NonCashableEFTOut"] = NonCashableEFTOut;
                        SumOfRows["WATIn"] = WATIn;
                        SumOfRows["WATOut"] = WATOut;
                    }

                    dtAnalysis.Rows.InsertAt(SumOfRows, 0);
                }
                return dtAnalysis;
            }
            catch (Exception ex)
            {
                ExceptionManager.Publish(ex);
            }
            return new DataTable();
        }
Exemplo n.º 2
0
        public DataTable GetAnalysisDetails(int SpotCheckDataType, DateTime StartDate, DateTime EndDate)
        {
            DataTable dtAnalysis = new DataTable();

            decimal CashIn         = 0;
            decimal CashOut        = 0;
            decimal TotalCashIn    = 0;
            decimal TotalCashOut   = 0;
            decimal Totalhandle    = 0;
            decimal TotalNetWin    = 0;
            int     InstallationNo = 0;
            int     Numberofdays   = 0;
            int     TotalGamesBet  = 0;
            //int TotalBills = 0;
            //int TotalTicketsIn = 0;
            //int TotalCoinsIn = 0;
            //int TotalCoinsOut = 0;
            //int TicketsOut = 0;
            //int TotalHandpay = 0;
            //int TotalJackpot = 0;
            //int ProgressiveHandpay = 0;

            decimal TotalBills         = 0;
            decimal TotalTicketsIn     = 0;
            decimal TotalCoinsIn       = 0;
            decimal TotalCoinsOut      = 0;
            decimal TicketsOut         = 0;
            decimal TotalHandpay       = 0;
            decimal TotalJackpot       = 0;
            decimal ProgressiveHandpay = 0;

            decimal PriceOfPlay            = 1;
            decimal InstallationTokenValue = 0;
            decimal MDA = 0;

            decimal CashableEFTIn     = 0;
            decimal CashableEFTOut    = 0;
            decimal NonCashableEFTIn  = 0;
            decimal NonCashableEFTOut = 0;
            decimal WATIn             = 0;
            decimal WATOut            = 0;

            decimal TotalNonCashableTicketsIn  = 0;
            decimal TotalNonCashableTicketsOut = 0;
            decimal TotalMDA = 0;

            DateTime  InstallationEndDate;
            SpotCheck spotCheckData;

            string reportType = string.Empty;

            dtAnalysis.Columns.Add("Installation_No");
            dtAnalysis.Columns.Add("Bar_Pos_Name");
            dtAnalysis.Columns.Add("Stock_No");
            dtAnalysis.Columns.Add("Name");
            dtAnalysis.Columns.Add("LastMeterUpdate");
            dtAnalysis.Columns.Add("GMUtoMachine");
            dtAnalysis.Columns.Add("GMUtoServer");
            dtAnalysis.Columns.Add("Bills_In", typeof(decimal));
            dtAnalysis.Columns.Add("Coin_In", typeof(decimal));
            dtAnalysis.Columns.Add("Coin_Out", typeof(decimal));
            dtAnalysis.Columns.Add("Tickets_In", typeof(decimal));
            dtAnalysis.Columns.Add("Tickets_Out", typeof(decimal));
            dtAnalysis.Columns.Add("Non_Cashable_Tickets_In", typeof(decimal));
            dtAnalysis.Columns.Add("Non_Cashable_Tickets_Out", typeof(decimal));
            dtAnalysis.Columns.Add("Handpay", typeof(decimal));
            dtAnalysis.Columns.Add("Jackpot", typeof(decimal));
            dtAnalysis.Columns.Add("Prog_Handpay", typeof(decimal));
            dtAnalysis.Columns.Add("Cash_In", typeof(decimal));
            dtAnalysis.Columns.Add("Cash_Out", typeof(decimal));
            dtAnalysis.Columns.Add("Handle", typeof(decimal));
            dtAnalysis.Columns.Add("AvgBet", typeof(decimal));
            dtAnalysis.Columns.Add("NetWin", typeof(decimal));
            dtAnalysis.Columns.Add("MDA", typeof(decimal));



            if (Settings.IsAFTEnabledForSite)
            {
                dtAnalysis.Columns.Add("CashableEFTIn", typeof(decimal));
                dtAnalysis.Columns.Add("CashableEFTOut", typeof(decimal));
                dtAnalysis.Columns.Add("NonCashableEFTIn", typeof(decimal));
                dtAnalysis.Columns.Add("NonCashableEFTOut", typeof(decimal));
                dtAnalysis.Columns.Add("WATIn", typeof(decimal));
                dtAnalysis.Columns.Add("WATOut", typeof(decimal));
            }

            try
            {
                switch (SpotCheckDataType.ToString())
                {
                case "1":
                    reportType = "DAY";
                    break;

                case "2":
                    reportType = "DROP";
                    break;

                case "3":
                    reportType = "WEEK";
                    break;

                case "4":
                    reportType = "MONTH";
                    break;
                }

                foreach (DataRow InstallationDetail in (new CommonDataAccess()).GetInstallationDetailsForReports(reportType).Rows)
                {
                    if (InstallationDetail["Installation_No"] != DBNull.Value)
                    {
                        PriceOfPlay    = 1;
                        InstallationNo = Convert.ToInt32(InstallationDetail["Installation_No"]);
                        spotCheckData  = new BMC.Transport.CashDeskOperatorEntity.SpotCheck();
                        spotCheckData.InstallationNo = InstallationNo;
                        spotCheckData.DateTimeStamp  = DateTime.Now;
                        spotCheckData.Date           = DateTime.Now;
                        InstallationEndDate          = ((InstallationDetail["End_Date"]) != DBNull.Value) ? Convert.ToDateTime(InstallationDetail["End_Date"]) : DateTime.Now.AddDays(1);

                        switch (SpotCheckDataType)
                        {
                        case 1:
                            spotCheckData.StartOfDay = 1;
                            //if (InstallationEndDate.Date < System.DateTime.Now.Date) continue;
                            break;

                        case 2:
                            spotCheckData.Type       = 2;
                            spotCheckData.StartOfDay = 2;
                            //if (InstallationEndDate.Date <= System.DateTime.Now.Date) continue;
                            break;

                        case 3:
                            StartDate          = analysisDataAccessHandler.GetMonthOrWeekStartDate().Rows[0]["WeekStart"].ToString().ReadDate();
                            spotCheckData.Date = StartDate;
                            //if (InstallationEndDate.Date <= StartDate.Date) continue;
                            break;

                        case 4:
                            StartDate          = analysisDataAccessHandler.GetMonthOrWeekStartDate().Rows[0]["MonthStart"].ToString().ReadDate();
                            spotCheckData.Date = StartDate;
                            //if (InstallationEndDate.Date <= StartDate.Date) continue;
                            break;
                        }

                        analysisDataAccessHandler.GetAnalysisDetails(ref spotCheckData);

                        InstallationTokenValue = (InstallationDetail["installation_token_value"]).ToString().GetDecimal();
                        PriceOfPlay            = (InstallationDetail["installation_Price_Of_Play"]).ToString().GetDecimal();
                        PriceOfPlay            = PriceOfPlay == 0 ? 1 : PriceOfPlay;
                        Totalhandle           += (spotCheckData.CoinsIn * (PriceOfPlay / 100));

                        DataRow dr = dtAnalysis.NewRow();

                        dr["Installation_No"] = InstallationDetail["Installation_no"].ToString();
                        dr["Bar_Pos_Name"]    = InstallationDetail["Bar_Pos_Name"].ToString();
                        dr["Stock_No"]        = InstallationDetail["Stock_No"].ToString();
                        dr["Name"]            = InstallationDetail["Name"].ToString();
                        dr["LastMeterUpdate"] = InstallationDetail["LastMeterUpdate"].ToString();
                        if (Convert.ToInt16(InstallationDetail["Datapak_PollingStatus"]) == 0)
                        {
                            dr["GMUtoServer"] = "ERROR";
                        }
                        else
                        {
                            dr["GMUtoServer"] = "OK";
                        }
                        if (Convert.ToInt16(InstallationDetail["GMU_Machine_Status"]) == 0)
                        {
                            dr["GMUtoMachine"] = "ERROR";
                        }
                        else
                        {
                            if (Convert.ToInt16(InstallationDetail["Datapak_PollingStatus"]) == 0)
                            {
                                dr["GMUtoMachine"] = "UNKNOWN";
                            }
                            else
                            {
                                dr["GMUtoMachine"] = "OK";
                            }
                        }
                        decimal Bills = 0;
                        if (System.Globalization.CultureInfo.CurrentCulture.Name == "it-IT" || System.Globalization.CultureInfo.CurrentUICulture.Name == "it-IT" ||
                            (Settings.RegulatoryEnabled && Settings.RegulatoryType == "AAMS"))
                        {
                            Bills = spotCheckData.Bill1 + (spotCheckData.Bill2 * 2) +
                                    (spotCheckData.Bill5 * 5) + (spotCheckData.Bill10 * 10) +
                                    (spotCheckData.Bill20 * 20) + (spotCheckData.Bill50 * 50) +
                                    (spotCheckData.Bill100 * 100) + (spotCheckData.Bill200 * 200) +
                                    (spotCheckData.Bill500 * 500);
                        }
                        else if (Settings.Region == "AR")
                        {
                            Bills = (spotCheckData.Bill2 * 2) +
                                    (spotCheckData.Bill5 * 5) + (spotCheckData.Bill10 * 10) +
                                    (spotCheckData.Bill20 * 20) + (spotCheckData.Bill50 * 50) +
                                    (spotCheckData.Bill100 * 100);
                        }
                        else
                        {
                            Bills = spotCheckData.Bill1 + (spotCheckData.Bill2 * 2) +
                                    (spotCheckData.Bill5 * 5) + (spotCheckData.Bill10 * 10) +
                                    (spotCheckData.Bill20 * 20) + (spotCheckData.Bill50 * 50) +
                                    (spotCheckData.Bill100 * 100);
                        }

                        dr["Bills_In"]   = Bills;
                        dr["Tickets_In"] = spotCheckData.TicketsInserted / 100;
                        dr["Coin_In"]    = spotCheckData.TrueCoinIn * (InstallationTokenValue / 100);
                        dr["Non_Cashable_Tickets_In"]  = spotCheckData.NonCashableTicketsInserted / 100;
                        dr["Non_Cashable_Tickets_Out"] = spotCheckData.NonCashableTicketsPrinted / 100;

                        CashIn  = (Bills + (spotCheckData.TicketsInserted / 100) + (spotCheckData.NonCashableTicketsInserted / 100) + (spotCheckData.TrueCoinIn * (InstallationTokenValue / 100)));
                        CashOut = spotCheckData.TrueCoinOut * (PriceOfPlay / 100) + spotCheckData.TicketsPrinted / 100 + spotCheckData.HandPay * (PriceOfPlay / 100) + spotCheckData.Jackpot * (PriceOfPlay / 100)
                                  + spotCheckData.NonCashableTicketsPrinted / 100;

                        if (Settings.IsAFTIncludedInCalculation)
                        {
                            CashIn  += spotCheckData.CashableEFTIn / 100 + spotCheckData.NonCashableEFTIn / 100 + spotCheckData.WATIn / 100;
                            CashOut += spotCheckData.CashableEFTOut / 100 + spotCheckData.NonCashableEFTOut / 100 + spotCheckData.WATOut / 100;
                        }

                        dr["Cash_In"]  = CashIn;
                        dr["Cash_Out"] = CashOut;

                        TotalCashIn  += CashIn;
                        TotalCashOut += CashOut;

                        dr["NetWin"]  = CashIn - CashOut;
                        dr["Handle"]  = (spotCheckData.CoinsIn * (PriceOfPlay / 100));
                        Numberofdays += spotCheckData.NumberOfDays;
                        if (spotCheckData.NumberOfDays > 0)
                        {
                            MDA = (decimal)(CashIn - CashOut) / spotCheckData.NumberOfDays;
                        }
                        else
                        {
                            MDA = (decimal)(CashIn - CashOut);
                        }

                        dr["MDA"]          = MDA == 0 ? 0 : MDA;
                        dr["Coin_Out"]     = spotCheckData.TrueCoinOut * (InstallationTokenValue / 100);
                        dr["Tickets_Out"]  = spotCheckData.TicketsPrinted / 100;
                        dr["Handpay"]      = spotCheckData.HandPay * (PriceOfPlay / 100);
                        dr["Jackpot"]      = spotCheckData.Jackpot * (PriceOfPlay / 100);
                        dr["Prog_Handpay"] = spotCheckData.ProgHandpay * (PriceOfPlay / 100);
                        dr["AvgBet"]       = spotCheckData.GamesBet == 0 ? (spotCheckData.CoinsIn * (PriceOfPlay / 100)) : (spotCheckData.CoinsIn * (PriceOfPlay / 100)) / spotCheckData.GamesBet;
                        if (Settings.IsAFTEnabledForSite)
                        {
                            dr["CashableEFTIn"]     = spotCheckData.CashableEFTIn / 100;
                            dr["CashableEFTOut"]    = spotCheckData.CashableEFTOut / 100;
                            dr["NonCashableEFTIn"]  = spotCheckData.NonCashableEFTIn / 100;
                            dr["NonCashableEFTOut"] = spotCheckData.NonCashableEFTOut / 100;
                            dr["WATIn"]             = spotCheckData.WATIn / 100;
                            dr["WATOut"]            = spotCheckData.WATOut / 100;
                        }

                        if (System.Globalization.CultureInfo.CurrentCulture.Name == "it-IT" || System.Globalization.CultureInfo.CurrentUICulture.Name == "it-IT" ||
                            (Settings.RegulatoryEnabled && Settings.RegulatoryType == "AAMS"))
                        {
                            TotalBills += spotCheckData.Bill1 + (spotCheckData.Bill2 * 2) + (spotCheckData.Bill5 * 5) +
                                          (spotCheckData.Bill10 * 10) + (spotCheckData.Bill20 * 20) + (spotCheckData.Bill50 * 50) +
                                          (spotCheckData.Bill100 * 100) + (spotCheckData.Bill200 * 200) +
                                          (spotCheckData.Bill500 * 500);
                        }
                        else if (Settings.Region == "AR")
                        {
                            TotalBills += (spotCheckData.Bill2 * 2) + (spotCheckData.Bill5 * 5) +
                                          (spotCheckData.Bill10 * 10) + (spotCheckData.Bill20 * 20) + (spotCheckData.Bill50 * 50) +
                                          (spotCheckData.Bill100 * 100);
                        }
                        else
                        {
                            TotalBills += spotCheckData.Bill1 + (spotCheckData.Bill2 * 2) + (spotCheckData.Bill5 * 5) +
                                          (spotCheckData.Bill10 * 10) + (spotCheckData.Bill20 * 20) + (spotCheckData.Bill50 * 50) +
                                          (spotCheckData.Bill100 * 100);
                        }
                        TotalTicketsIn             += spotCheckData.TicketsInserted / 100;
                        TotalGamesBet              += spotCheckData.GamesBet;
                        TotalCoinsIn               += Convert.ToDecimal(spotCheckData.TrueCoinIn * (InstallationTokenValue / 100));
                        TotalCoinsOut              += Convert.ToDecimal(spotCheckData.TrueCoinOut * (InstallationTokenValue / 100));
                        TicketsOut                 += (decimal)(spotCheckData.TicketsPrinted / 100);
                        TotalHandpay               += Convert.ToDecimal(spotCheckData.HandPay * (PriceOfPlay / 100));
                        TotalJackpot               += Convert.ToDecimal(spotCheckData.Jackpot * (PriceOfPlay / 100));
                        ProgressiveHandpay         += Convert.ToDecimal(spotCheckData.ProgHandpay * (PriceOfPlay / 100));
                        TotalNonCashableTicketsIn  += spotCheckData.NonCashableTicketsInserted / 100;
                        TotalNonCashableTicketsOut += spotCheckData.NonCashableTicketsPrinted / 100;
                        TotalMDA += MDA;
                        if (Settings.IsAFTEnabledForSite)
                        {
                            CashableEFTIn     += Convert.ToDecimal(spotCheckData.CashableEFTIn / 100);
                            CashableEFTOut    += Convert.ToDecimal(spotCheckData.CashableEFTOut / 100);
                            NonCashableEFTIn  += Convert.ToDecimal(spotCheckData.NonCashableEFTIn / 100);
                            NonCashableEFTOut += Convert.ToDecimal(spotCheckData.NonCashableEFTOut / 100);
                            WATIn             += Convert.ToDecimal(spotCheckData.WATIn / 100);
                            WATOut            += Convert.ToDecimal(spotCheckData.WATOut / 100);
                        }
                        dtAnalysis.Rows.Add(dr);
                    }
                }
                if (dtAnalysis.Rows.Count > 0)
                {
                    DataRow SumOfRows = dtAnalysis.NewRow();
                    SumOfRows["Installation_No"] = string.Empty;
                    SumOfRows["Bar_Pos_Name"]    = "Total";
                    SumOfRows["Stock_No"]        = string.Empty;
                    SumOfRows["Name"]            = string.Empty;
                    SumOfRows["LastMeterUpdate"] = string.Empty;
                    SumOfRows["Cash_In"]         = TotalCashIn;
                    SumOfRows["Cash_Out"]        = TotalCashOut;
                    SumOfRows["NetWin"]          = (TotalCashIn - TotalCashOut);
                    SumOfRows["Handle"]          = Totalhandle;

                    decimal TotalAvgBet = 0;
                    if (TotalGamesBet == 0)
                    {
                        TotalAvgBet = Totalhandle;
                    }
                    else
                    {
                        TotalAvgBet = Totalhandle / TotalGamesBet;
                    }

                    //if (Numberofdays > 0)
                    //    MDA = (decimal)(TotalCashIn - TotalCashOut) /( dtAnalysis.Rows.Count * Numberofdays)  ;
                    //else
                    //    MDA = (decimal)(TotalCashIn - TotalCashOut) / dtAnalysis.Rows.Count;

                    SumOfRows["AvgBet"]                   = Math.Round(TotalAvgBet, 2);
                    SumOfRows["MDA"]                      = Math.Round(TotalMDA / (dtAnalysis.Rows.Count), 2);//Modified Total AvgDailyWin calculation CR#92149 Fix
                    SumOfRows["Bills_In"]                 = TotalBills;
                    SumOfRows["Tickets_In"]               = TotalTicketsIn;
                    SumOfRows["Tickets_Out"]              = TicketsOut;
                    SumOfRows["Coin_In"]                  = TotalCoinsIn;
                    SumOfRows["Coin_Out"]                 = TotalCoinsOut;
                    SumOfRows["Non_Cashable_Tickets_In"]  = TotalNonCashableTicketsIn;
                    SumOfRows["Non_Cashable_Tickets_out"] = TotalNonCashableTicketsOut;
                    SumOfRows["Handpay"]                  = TotalHandpay;
                    SumOfRows["Jackpot"]                  = TotalJackpot;
                    SumOfRows["Prog_Handpay"]             = ProgressiveHandpay;
                    if (Settings.IsAFTEnabledForSite)
                    {
                        SumOfRows["CashableEFTIn"]     = CashableEFTIn;
                        SumOfRows["CashableEFTOut"]    = CashableEFTOut;
                        SumOfRows["NonCashableEFTIn"]  = NonCashableEFTIn;
                        SumOfRows["NonCashableEFTOut"] = NonCashableEFTOut;
                        SumOfRows["WATIn"]             = WATIn;
                        SumOfRows["WATOut"]            = WATOut;
                    }

                    dtAnalysis.Rows.InsertAt(SumOfRows, 0);
                }
                return(dtAnalysis);
            }
            catch (Exception ex)
            {
                ExceptionManager.Publish(ex);
            }
            return(new DataTable());
        }