public static TinhTienTheoKm GetThongSoTinhTen(int LoaiXe)
        {
            TinhTienTheoKm objTinhTien = new TinhTienTheoKm();

            objTinhTien.LoaiXe = 0;
            DataTable dt = new DataTable();

            dt = new Data.TinhTienTheoKm().GetThongSoTinhTien(LoaiXe);
            if ((dt != null) && (dt.Rows.Count > 0))
            {
                objTinhTien.KmMoCua       = float.Parse(dt.Rows[0]["KmMoCua"].ToString());
                objTinhTien.GiaMoCua      = float.Parse(dt.Rows[0]["GiaMoCua"].ToString());
                objTinhTien.KmNguong1     = float.Parse(dt.Rows[0]["KmNguong1"].ToString());
                objTinhTien.GiaNguong1    = float.Parse(dt.Rows[0]["GiaNguong1"].ToString());
                objTinhTien.KmNguong2     = dt.Rows[0]["KmNguong2"] == DBNull.Value ? 0 : float.Parse(dt.Rows[0]["KmNguong2"].ToString());
                objTinhTien.GiaNguong2    = dt.Rows[0]["GiaNguong2"] == DBNull.Value ? 0 : float.Parse(dt.Rows[0]["GiaNguong2"].ToString());
                objTinhTien.KmNguong3     = dt.Rows[0]["KmNguong3"] == DBNull.Value ? 0 : float.Parse(dt.Rows[0]["KmNguong3"].ToString());
                objTinhTien.GiaNguong3    = dt.Rows[0]["GiaNguong3"] == DBNull.Value ? 0 : float.Parse(dt.Rows[0]["GiaNguong3"].ToString());
                objTinhTien.N1_ChieuDiTu  = dt.Rows[0]["N1_ChieuDiTu"] == DBNull.Value ? 0 : float.Parse(dt.Rows[0]["N1_ChieuDiTu"].ToString());
                objTinhTien.N1_ChieuDiDen = dt.Rows[0]["N1_ChieuDiDen"] == DBNull.Value ? 0 : float.Parse(dt.Rows[0]["N1_ChieuDiDen"].ToString());
                objTinhTien.N1_Giam       = dt.Rows[0]["N1_Giam"] == DBNull.Value ? 0 : float.Parse(dt.Rows[0]["N1_Giam"].ToString());
                objTinhTien.N2_ChieuDiTu  = dt.Rows[0]["N2_ChieuDiTu"] == DBNull.Value ? 0 : float.Parse(dt.Rows[0]["N2_ChieuDiTu"].ToString());
                objTinhTien.N2_Giam       = dt.Rows[0]["N2_Giam"] == DBNull.Value ? 0 : float.Parse(dt.Rows[0]["N2_Giam"].ToString());
                objTinhTien.IsAll         = dt.Rows[0]["IsAll"] != DBNull.Value && bool.Parse(dt.Rows[0]["IsAll"].ToString());

                objTinhTien.KmNguong2Chieu    = dt.Rows[0]["KmNguong2Chieu"] == DBNull.Value ? 0 : float.Parse(dt.Rows[0]["KmNguong2Chieu"].ToString());
                objTinhTien.TiLeGiamGia2Chieu = dt.Rows[0]["TiLeGiamGiaHaiChieu"] == DBNull.Value ? 0 : float.Parse(dt.Rows[0]["TiLeGiamGiaHaiChieu"].ToString());
                objTinhTien.LoaiXe            = (int)dt.Rows[0]["LoaiXe"];
                if (dt.Rows[0]["ThongTinThueBao"] != null)
                {
                    objTinhTien.ThongTinThueBao = dt.Rows[0]["ThongTinThueBao"].ToString();
                }
            }
            return(objTinhTien);
        }
        private static TinhTienTheoKm GetThongSoTinhTen(bool LoaiCuoc, int LoaiXe)
        {
            TinhTienTheoKm objTinhTien = new TinhTienTheoKm();

            objTinhTien.LoaiXe = 0;
            DataTable dt = new DataTable();

            dt = new Data.TinhTienTheoKm().GetThongSoTinhTien(LoaiCuoc, LoaiXe);
            if ((dt != null) && (dt.Rows.Count > 0))
            {
                objTinhTien.KmMoCua           = float.Parse(dt.Rows[0]["KmMoCua"].ToString());
                objTinhTien.GiaMoCua          = float.Parse(dt.Rows[0]["GiaMoCua"].ToString());
                objTinhTien.KmNguong1         = float.Parse(dt.Rows[0]["KmNguong1"].ToString());
                objTinhTien.GiaNguong1        = float.Parse(dt.Rows[0]["GiaNguong1"].ToString());
                objTinhTien.GiaNguong2        = float.Parse(dt.Rows[0]["GiaNguong2"].ToString());
                objTinhTien.KmNguong2Chieu    = float.Parse(dt.Rows[0]["KmNguong2Chieu"].ToString());
                objTinhTien.TiLeGiamGia2Chieu = float.Parse(dt.Rows[0]["TiLeGiamGiaHaiChieu"].ToString());
                objTinhTien.LoaiXe            = (int)dt.Rows[0]["LoaiXe"];
                objTinhTien.LoaiCuoc          = Convert.ToBoolean(dt.Rows[0]["LoaiCuoc"]);
                if (dt.Rows[0]["ThongTinThueBao"] != null)
                {
                    objTinhTien.ThongTinThueBao = dt.Rows[0]["ThongTinThueBao"].ToString();
                }
            }
            return(objTinhTien);
        }
        //public TinhTienTheoKm(int LoaiXe, float SoKm)
        //{
        //    TinhTienTheoKm objTinhTien = TinhTienTheoKm.GetThongSoTinhTen(LoaiXe);
        //    this.GiaMoCua = objTinhTien.GiaMoCua;
        //    this.KmMoCua = objTinhTien.KmMoCua;
        //    this.GiaNguong1 = objTinhTien.GiaNguong1;
        //    this.GiaNguong2 = objTinhTien.GiaNguong2;
        //    this.KmNguong1 = objTinhTien.KmNguong1;
        //    this.KmNguong2Chieu = objTinhTien.KmNguong2Chieu;
        //    this.LoaiXe = objTinhTien.LoaiXe;
        //    this.TiLeGiamGia2Chieu = objTinhTien.TiLeGiamGia2Chieu;
        //    this.ThongTinThueBao = objTinhTien.ThongTinThueBao;
        //    this.mTongTien1Chieu = TinhTien1Chieu(SoKm);

        //    if (SoKm <= KmNguong2Chieu) mTongTien2Chieu = mTongTien1Chieu;
        //    else this.mTongTien2Chieu =   ((100 - TiLeGiamGia2Chieu) / 100) * mTongTien1Chieu;

        //}

        public TinhTienTheoKm(int LoaiXe, float SoKm, bool flgTong = false)
        {
            TinhTienTheoKm objTinhTien = GetThongSoTinhTen(LoaiXe);

            GiaMoCua      = objTinhTien.GiaMoCua;
            KmMoCua       = objTinhTien.KmMoCua;
            KmNguong1     = objTinhTien.KmNguong1;
            GiaNguong1    = objTinhTien.GiaNguong1;
            KmNguong2     = objTinhTien.KmNguong2;
            GiaNguong2    = objTinhTien.GiaNguong2;
            KmNguong3     = objTinhTien.KmNguong3;
            GiaNguong3    = objTinhTien.GiaNguong3;
            N1_ChieuDiTu  = objTinhTien.N1_ChieuDiTu;
            N1_ChieuDiDen = objTinhTien.N1_ChieuDiDen;
            N1_Giam       = objTinhTien.N1_Giam;
            N2_ChieuDiTu  = objTinhTien.N2_ChieuDiTu;
            N2_Giam       = objTinhTien.N2_Giam;
            IsAll         = objTinhTien.IsAll;

            KmNguong2Chieu    = objTinhTien.KmNguong2Chieu;
            TiLeGiamGia2Chieu = objTinhTien.TiLeGiamGia2Chieu;
            ThongTinThueBao   = objTinhTien.ThongTinThueBao;
            if (flgTong)
            {
                SoKm = SoKm / 2;
            }

            mTongTien1Chieu = TinhTien1Chieu_New(SoKm);
            if (SoKm >= N1_ChieuDiTu && SoKm <= N1_ChieuDiDen && N1_Giam > 0)
            {
                mTongTien2Chieu = mTongTien1Chieu * ((100 - N1_Giam) / 100);
            }
            else if (SoKm > N2_ChieuDiTu && N2_Giam > 0)
            {
                if (IsAll)
                {
                    mTongTien2Chieu = mTongTien1Chieu * ((100 - N2_Giam) / 100);
                }
                else
                {
                    float TienGiamNgon = TinhTien1Chieu_New(SoKm - N2_ChieuDiTu);
                    mTongTien2Chieu = (mTongTien1Chieu - TienGiamNgon) * ((100 - N2_Giam) / 100);
                }
            }
            else
            {
                mTongTien2Chieu = mTongTien1Chieu;
            }
        }
        /// <summary>
        //ham tinh toan gia cuoc cho TaxiCP
        //   - lay thong so khai bao cua giá cước
        //   - neu IsTaxi = true thi tinh cho taxicp
        //       //Công thức tính :
        //2 chieu : 4 cho
        //  - [12 k + 29km x 10k +  ((tongkm- 30) x 6.5 ) ]     -->  1 chieu
        //  - 12 k + 29km x 10k +  ((tongkm- 30) x 6.5 )  x 07   --> 2chieu
        //2 chieu : 7 chỗ
        //   - [12 k + 29km x 10k + (tongkm- 30) x 7.5 )  ]  1 chieu
        //     12 k + 29km x 10k + (tongkm- 30) x 7.5 )  x 0.7   -->  2 chieu
        /// </summary>
        public TinhTienTheoKm(bool LoaiCuoc, int LoaiXe, float SoKm, bool IsTaxiCP)
        {
            TinhTienTheoKm objTinhTien = TinhTienTheoKm.GetThongSoTinhTen(LoaiCuoc, LoaiXe);

            this.GiaMoCua          = objTinhTien.GiaMoCua;
            this.KmMoCua           = objTinhTien.KmMoCua;
            this.GiaNguong1        = objTinhTien.GiaNguong1;
            this.GiaNguong2        = objTinhTien.GiaNguong2;
            this.KmNguong1         = objTinhTien.KmNguong1;
            this.KmNguong2Chieu    = objTinhTien.KmNguong2Chieu;
            this.LoaiXe            = objTinhTien.LoaiXe;
            this.TiLeGiamGia2Chieu = objTinhTien.TiLeGiamGia2Chieu;

            this.mTongTien1Chieu = TinhTien1Chieu_CP(SoKm);
            this.mTongTien2Chieu = TinhTien2Chieu_CP(SoKm * 2);
        }
        public TinhTienTheoKm(bool LoaiCuoc, int LoaiXe, float SoKm)
        {
            TinhTienTheoKm objTinhTien = GetThongSoTinhTen(LoaiCuoc, LoaiXe);

            this.GiaMoCua          = objTinhTien.GiaMoCua;
            this.KmMoCua           = objTinhTien.KmMoCua;
            this.GiaNguong1        = objTinhTien.GiaNguong1;
            this.GiaNguong2        = objTinhTien.GiaNguong2;
            this.KmNguong1         = objTinhTien.KmNguong1;
            this.KmNguong2Chieu    = objTinhTien.KmNguong2Chieu;
            this.LoaiXe            = objTinhTien.LoaiXe;
            this.TiLeGiamGia2Chieu = objTinhTien.TiLeGiamGia2Chieu;
            this.ThongTinThueBao   = objTinhTien.ThongTinThueBao;
            this.mTongTien1Chieu   = TinhTien1Chieu(SoKm);

            if (SoKm <= KmNguong2Chieu)
            {
                mTongTien2Chieu = mTongTien1Chieu;
            }
            else
            {
                this.mTongTien2Chieu = ((100 - TiLeGiamGia2Chieu) / 100) * mTongTien1Chieu;
            }
        }