bool ValidarFormulario()
        {
            bool estaValidado = true;

            LimpiarErrores();

            if (codigoProducto == null)
            {
                estaValidado          = false;
                lblErrorProducto.Text = "Debe seleccionar producto";
                SetToolTipError(lblErrorProducto);
            }

            if (codigoProductoIndividual == null)
            {
                estaValidado = false;
                lblErrorProductoIndividual.Text = "Debe seleccionar producto individual";
                SetToolTipError(lblErrorProductoIndividual);
            }
            else
            {
                ListaDetalleActual = ListaDetalleActual ?? new List <NotaDebitoDetalleBe>();

                int?codigoNotaDebitoDetalle = Detalle == null ? null : (int?)Detalle.CodigoNotaDebitoDetalle;

                bool existeProductoIndividual = ListaDetalleActual.Count(x => x.CodigoProductoIndividual == codigoProductoIndividual && x.CodigoNotaDebitoDetalle != codigoNotaDebitoDetalle) > 0;

                if (existeProductoIndividual)
                {
                    estaValidado = false;
                    lblErrorProductoIndividual.Text = $"El producto individual seleccionado ya existe";
                    SetToolTipError(lblErrorProductoIndividual);
                }
            }

            if (cbbCodigoUnidadMedida.SelectedIndex == 0)
            {
                estaValidado = false;
                lblErrorUnidadMedida.Text = "Debe seleccionar una unidad medida";
                SetToolTipError(lblErrorUnidadMedida);
            }

            if (string.IsNullOrEmpty(txtCantidad.Text.Trim()))
            {
                estaValidado          = false;
                lblErrorCantidad.Text = "Debe ingresar cantidad";
                SetToolTipError(lblErrorCantidad);
            }
            else
            {
                decimal cantidad = 0;

                if (!decimal.TryParse(txtCantidad.Text.Trim(), out cantidad))
                {
                    estaValidado          = false;
                    lblErrorCantidad.Text = "Debe ingresar un valor numérico";
                    SetToolTipError(lblErrorCantidad);
                }
            }

            if (tipoCalculo == TipoCalculo.ValorUnitario)
            {
                if (string.IsNullOrEmpty(txtValorUnitario.Text.Trim()))
                {
                    estaValidado = false;
                    lblErrorValorUnitario.Text = "Debe ingresar valor unitario";
                    SetToolTipError(lblErrorValorUnitario);
                }
                else
                {
                    decimal valorUnitario = 0;

                    if (!decimal.TryParse(txtValorUnitario.Text.Trim(), out valorUnitario))
                    {
                        estaValidado = false;
                        lblErrorValorUnitario.Text = "Debe ingresar un valor numérico";
                        SetToolTipError(lblErrorValorUnitario);
                    }
                }
            }
            else if (tipoCalculo == TipoCalculo.PrecioUnitario)
            {
                if (string.IsNullOrEmpty(txtPrecioUnitario.Text.Trim()))
                {
                    estaValidado = false;
                    lblErrorPrecioUnitario.Text = "Debe ingresar precio unitario";
                    SetToolTipError(lblErrorPrecioUnitario);
                }
                else
                {
                    decimal precioUnitario = 0;

                    if (!decimal.TryParse(txtPrecioUnitario.Text.Trim(), out precioUnitario))
                    {
                        estaValidado = false;
                        lblErrorPrecioUnitario.Text = "Debe ingresar un valor numérico";
                        SetToolTipError(lblErrorPrecioUnitario);
                    }
                }
            }

            if (tipoDescuento == TipoDescuento.Porcentaje)
            {
                if (string.IsNullOrEmpty(txtPorcentajeDescuento.Text.Trim()))
                {
                    estaValidado = false;
                    lblErrorPorcentajeDescuento.Text = "Debe ingresar valor porcentaje descuento";
                    SetToolTipError(lblErrorPorcentajeDescuento);
                }
                else
                {
                    decimal porcentajeDescuento = 0;

                    if (!decimal.TryParse(txtPorcentajeDescuento.Text.Trim(), out porcentajeDescuento))
                    {
                        estaValidado = false;
                        lblErrorPorcentajeDescuento.Text = "Debe ingresar un valor numérico";
                        SetToolTipError(lblErrorPorcentajeDescuento);
                    }
                }
            }

            return(estaValidado);
        }
        bool ValidarFormulario()
        {
            bool estaValidado = true;

            LimpiarErrores();

            if (codigoProducto == null)
            {
                estaValidado          = false;
                lblErrorProducto.Text = "Debe seleccionar producto";
                SetToolTipError(lblErrorProducto);
            }

            if (codigoProductoIndividual == null)
            {
                estaValidado = false;
                lblErrorProductoIndividual.Text = "Debe seleccionar producto individual";
                SetToolTipError(lblErrorProductoIndividual);
            }
            else
            {
                ListaDetalleActual = ListaDetalleActual ?? new List <CotizacionDetalleBe>();

                int?codigoCotizacionDetalle = Detalle == null ? null : (int?)Detalle.CodigoCotizacionDetalle;

                bool existeProductoIndividual = ListaDetalleActual.Count(x => x.CodigoProductoIndividual == codigoProductoIndividual && x.CodigoCotizacionDetalle != codigoCotizacionDetalle) > 0;

                if (existeProductoIndividual)
                {
                    estaValidado = false;
                    lblErrorProductoIndividual.Text = $"El producto individual seleccionado ya existe";
                    SetToolTipError(lblErrorProductoIndividual);
                }
            }

            if (string.IsNullOrEmpty(txtCantidad.Text.Trim()))
            {
                estaValidado          = false;
                lblErrorCantidad.Text = "Debe ingresar cantidad";
                SetToolTipError(lblErrorCantidad);
            }
            else
            {
                decimal cantidad = 0;

                if (!decimal.TryParse(txtCantidad.Text.Trim(), out cantidad))
                {
                    estaValidado          = false;
                    lblErrorCantidad.Text = "Debe ingresar un valor numérico";
                    SetToolTipError(lblErrorCantidad);
                }
            }

            if (string.IsNullOrEmpty(txtPrecioUnitario.Text.Trim()))
            {
                estaValidado = false;
                lblErrorPrecioUnitario.Text = "Debe ingresar precio unitario";
                SetToolTipError(lblErrorPrecioUnitario);
            }
            else
            {
                decimal precioUnitario = 0;

                if (!decimal.TryParse(txtPrecioUnitario.Text.Trim(), out precioUnitario))
                {
                    estaValidado = false;
                    lblErrorPrecioUnitario.Text = "Debe ingresar un valor numérico";
                    SetToolTipError(lblErrorPrecioUnitario);
                }
            }

            return(estaValidado);
        }