private void btnCrear_Click(object sender, EventArgs e)
        {
            if (ValidarCampos())
            {
                List <PromocionZona> listaPromocionZona = new List <PromocionZona>();
                bool isValid = true;
                foreach (DataGridViewRow dtr in dgvZonas.Rows)
                {
                    if (Convert.ToBoolean(dtr.Cells["Sel"].Value) == true)
                    {
                        if (Convert.ToString(dtr.Cells["Precio"].Value).Equals(String.Empty))
                        {
                            isValid = false;
                            break;
                        }
                        else
                        {
                            PromocionZona pZona = new PromocionZona();
                            pZona.Zona   = dtr.DataBoundItem as Zona;
                            pZona.Precio = Convert.ToSingle(dtr.Cells["Precio"].Value);
                            listaPromocionZona.Add(pZona);
                        }
                    }
                }

                if (!isValid)
                {
                    MessageBox.Show("Debe ingresar el precio", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return;
                }

                if (listaPromocionZona.Count < 1)
                {
                    MessageBox.Show("Debe seleccionar al menos una zona", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return;
                }

                List <PromocionFuncion> listaPromocionFuncion = new List <PromocionFuncion>();

                foreach (DataGridViewRow dtr in dgvFunciones.Rows)
                {
                    if (Convert.ToBoolean(dtr.Cells["SelF"].Value) == true)
                    {
                        PromocionFuncion pFuncion = new PromocionFuncion();
                        pFuncion.Funcion = dtr.DataBoundItem as Funcion;
                        listaPromocionFuncion.Add(pFuncion);
                    }
                }

                if (listaPromocionFuncion.Count < 1)
                {
                    MessageBox.Show("Debe seleccionar al menos una función", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return;
                }


                Promocion promocion = new Promocion()
                {
                    Descripcion        = txtDescripcion.Text.ToUpper().Trim(),
                    FechaFin           = dtpFechaFin.Value.Date,
                    FechaInicio        = dtpFechaInicio.Value.Date,
                    TipoPromocion      = cboTipoPromocion.SelectedItem as TipoPromocion,
                    RequiereEmpresa    = chkRequiereEmpresa.Checked,
                    PromocionFunciones = listaPromocionFuncion,
                    PromocionZonas     = listaPromocionZona
                };
                try
                {
                    if (servicio.InsertPromocion(promocion))
                    {
                        MessageBox.Show("Proceso realizado correctamente", "Aviso");
                        this.Close();
                    }
                    else
                    {
                        MessageBox.Show("Ha ocurrido un error", "Aviso");
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Ocurrió un error: " + ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                MessageBox.Show("Complete todos los campos", "Aviso");
            }
        }