private void HideAndShowCaptureControls(int iCurrentPaxNumberMenosUno, ListItem item)
        {
            txtNumberCardCTS.PasswordChar = new char();
            switch (item.Value)
            {
            case "CASH":
                txtNumberCardCTS.Text    = string.Empty;
                txtNumberCardCTS.Visible = false;
                lblCardNumberCTS.Visible = false;

                txtDigitoSeguridad.Visible       = false;
                cmbMesVencimiento.Visible        = false;
                cmbAnioVencimiento.Visible       = false;
                txtNombreTarjetahabiente.Visible = false;
                lblDigitoSeguridad.Visible       = false;
                lblMesVencimiento.Visible        = false;
                lblAnioVencimiento.Visible       = false;
                lblNombreTarjetahabiente.Visible = false;
                break;

            case "CH":
            case "TR":
            case "TP":
                switch (item.Value)
                {
                case "TP":
                    lblCardNumberCTS.Text         = "Número de tarjeta";
                    txtNumberCardCTS.MaxLength    = 16;
                    txtNumberCardCTS.PasswordChar = '·';
                    txtNumberCardCTS.Font         = new Font("Symbol", 9F, FontStyle.Regular);
                    break;

                default:
                    lblCardNumberCTS.Text         = "Número de cuenta";
                    txtNumberCardCTS.MaxLength    = 4;
                    txtNumberCardCTS.PasswordChar = '·';
                    txtNumberCardCTS.Font         = new Font("Symbol", 9F, FontStyle.Regular);
                    break;
                }
                lblCardNumberCTS.Visible = true;
                if (item.Value != "TP")
                {
                    if (string.IsNullOrEmpty(ChargesPerService.DKActual))
                    {
                        ChargesPerService.RecuperarDK();
                    }
                    WsMyCTS wsServ = new WsMyCTS();

                    MyCTS.Services.ValidateDKsAndCreditCards.GetTranferCheckNumber data = new MyCTS.Services.ValidateDKsAndCreditCards.GetTranferCheckNumber();
                    data = wsServ.GetTranferCheckNumberMyCTS(ChargesPerService.DKActual);
                    txtNumberCardCTS.Text = data.ct_banc_cbr;
                }
                else
                {
                    txtNumberCardCTS.Text = String.Empty;
                }
                txtNumberCardCTS.Visible         = true;
                txtDigitoSeguridad.Visible       = false;
                cmbMesVencimiento.Visible        = false;
                cmbAnioVencimiento.Visible       = false;
                txtNombreTarjetahabiente.Visible = false;
                lblDigitoSeguridad.Visible       = false;
                lblMesVencimiento.Visible        = false;
                lblAnioVencimiento.Visible       = false;
                lblNombreTarjetahabiente.Visible = false;
                break;

            default:
                lblCardNumberCTS.Text         = "Número de tarjeta";
                txtNumberCardCTS.Visible      = true;
                lblCardNumberCTS.Visible      = true;
                txtNumberCardCTS.PasswordChar = '·';
                txtNumberCardCTS.Font         = new Font("Symbol", 9F, FontStyle.Regular);


                txtDigitoSeguridad.Visible       = true;
                cmbMesVencimiento.Visible        = true;
                cmbAnioVencimiento.Visible       = true;
                txtNombreTarjetahabiente.Visible = true;
                lblDigitoSeguridad.Visible       = true;
                lblMesVencimiento.Visible        = true;
                lblAnioVencimiento.Visible       = true;
                lblNombreTarjetahabiente.Visible = true;
                btnAccept.Text = "Aplicar cargo en línea";


                switch (((ListItem)cmbTypeCard.SelectedItem).Value)
                {
                case "AX":
                    txtNumberCardCTS.MaxLength    = 16;
                    txtDigitoSeguridad.MaxLength  = 4;
                    txtNumberCardCTS.PasswordChar = '·';
                    txtNumberCardCTS.Font         = new Font("Symbol", 9F, FontStyle.Regular);
                    break;

                default:
                    txtNumberCardCTS.MaxLength    = 16;
                    txtDigitoSeguridad.MaxLength  = 3;
                    txtNumberCardCTS.PasswordChar = '·';
                    txtNumberCardCTS.Font         = new Font("Symbol", 9F, FontStyle.Regular);
                    break;
                }
                break;
            }
        }
        private void ValidacionFormasDePago()
        {
            switch (cmbTypeCard.Text)
            {
            case "TR - TRANSFERENCIA":
            case "CASH - EFECTIVO":
            case "CH - CHEQUE":
                DeterminaValidacionGeneracionCargo();
                break;

            case "TP - TC UATP":
                ///Validación para la FoP TP - TC UATP para que al validar las tarjetas, no valide
                ///todos los campos existentes en la plantilla aunque esten ocultos. Para cualquier
                ///otro caso se validan todos los campos en la plantilla.
                if (ValidateCreditCardNumber)
                {
                }
                break;

            default:
                if ((string.IsNullOrEmpty(cmbTypeCard.Text) || string.IsNullOrEmpty(txtDigitoSeguridad.Text) || string.IsNullOrEmpty(txtNombreTarjetahabiente.Text) || string.IsNullOrEmpty(cmbTypeCard.Text) || string.IsNullOrEmpty(cmbMesVencimiento.Text) || string.IsNullOrEmpty(cmbAnioVencimiento.Text) || string.IsNullOrEmpty(cmbTypeCard.Text)))
                {
                    MessageBox.Show("¡Debes ingresar todos los campos!");
                    return;
                }
                //Se validan las fechas ingresadas por el usuario. No deben ser menor a los de la fecha actual
                int cmboFecYear = Convert.ToInt32(DateTime.Now.Year);
                int cmboFecMes  = Convert.ToInt32(DateTime.Now.Month);
                int cmbFecYear  = Convert.ToInt32(cmbAnioVencimiento.Text);
                if (cmbTypeCard.Text == "- Selecciona Forma de Pago -")
                {
                    MessageBox.Show("¡Ingrese la Forma de Pago!", Resources.Constants.MYCTS, MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                cmbFecMes = seleccionaMes();

                if (cmbFecYear < cmboFecYear)
                {
                    MessageBox.Show("¡Datos de vigencia de la tarjeta invalido, verifica el año!", Resources.Constants.MYCTS, MessageBoxButtons.OK, MessageBoxIcon.Information);
                    cmbAnioVencimiento.Focus();
                    return;
                }
                if (cmbFecMes < cmboFecMes & cmboFecYear == cmbFecYear)
                {
                    MessageBox.Show("¡Datos de vigencia de la tarjeta invalido, verifica el mes!", Resources.Constants.MYCTS, MessageBoxButtons.OK, MessageBoxIcon.Information);
                    cmbMesVencimiento.Focus();
                    return;
                }

                if (string.IsNullOrEmpty(txtNumberCardCTS.Text))
                {
                    MessageBox.Show("Debes ingresar un número de tarjeta. Ingrese", Resources.Constants.MYCTS, MessageBoxButtons.OK, MessageBoxIcon.Information);
                    txtNumberCardCTS.Text = string.Empty;
                    txtNumberCardCTS.Focus();
                    return;
                }

                ChargesPerService.RecuperarDK();
                WsMyCTS wsServ = new WsMyCTS();
                MyCTS.Services.ValidateDKsAndCreditCards.ClientCreditCard clientCreditCard = wsServ.GetClientCreditCardNumber(txtNumberCardCTS.Text, ChargesPerService.DKActual);

                string creditCard = wsServ.GetCreditCardNumberCTS(txtNumberCardCTS.Text);
                if (!string.IsNullOrEmpty(creditCard))
                {
                    this.Focus();
                    MessageBox.Show("Debes ingresar un número de tarjeta diferente a una de CTS. Reingrese", Resources.Constants.MYCTS, MessageBoxButtons.OK, MessageBoxIcon.Information);
                    txtNumberCardCTS.Text = string.Empty;
                    txtNumberCardCTS.Focus();
                    return;
                }
                string clientCreditCardNumber = wsServ.GetClientCreditCardNumberATT(txtNumberCardCTS.Text);

                if (string.IsNullOrEmpty(clientCreditCardNumber))
                {
                    if (ValidateCreditCardNumber)
                    {
                        // No hace nada
                    }
                }
                else
                {
                    if (clientCreditCard.CreditCardNumber != txtNumberCardCTS.Text)
                    {
                        MessageBox.Show("El número de tarjeta ingresado pertenece a un cliente diferente, ingrese un número de tarjeta válido", Resources.Constants.MYCTS, MessageBoxButtons.OK, MessageBoxIcon.Information);
                        txtNumberCardCTS.Text = string.Empty;
                        txtNumberCardCTS.Focus();
                        return;
                    }
                }

                if (txtNumberCardCTS.Text == clientCreditCard.CreditCardNumber & ChargesPerService.DKActual == clientCreditCard.Client)
                {
                    DeterminaValidacionGeneracionCargo();
                }
                break;
            }

            if (!VerificarCargoPrevio())
            {
                Pagar();
            }
            else
            {
                MessageBox.Show("Ya cuenta con un intento de cargo por servicio previo para hoteles, no es posible realizar un nuevo cargo por servicio para hoteles mediante la interfaz", Resources.Constants.MYCTS, MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
        }