예제 #1
0
        private void DarDeAlta_Click(object sender, EventArgs e)
        {
            // Deshabilitar todos los controles.
            GroupBoxDatos.Enabled = false;

            // Verificar el CUIT ingresado con el algoritmo de validación.
            if (!ValidacionCUIT.Validar(CUITTipo.Text + CUITNumero.Text + CUITVerificador.Text))
            {
                MessageBox.Show("El CUIT ingresado no es valido!", "Error",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
                GroupBoxDatos.Enabled = true;
                return;
            }

            using (var conexion = Program.conexion())
                using (var cmd = new SqlCommand())
                {
                    cmd.CommandText =
                        @"INSERT INTO [SERVOMOTOR].EMPRESAS
                        (CUIT, NOMBRE, DIRECCION, ID_RUBRO, ESTADO_ACTIVACION)
                      VALUES (
                        @CUIT,
                        @NOMBRE,
                        @DIRECCION,
                        (
                          SELECT ID_RUBRO
                            FROM [SERVOMOTOR].RUBROS
                           WHERE DESCRIPCION = @RUBRO
                        ),
                        1
                      );";
                    cmd.Connection = conexion;

                    cmd.Parameters.Add("@CUIT", SqlDbType.VarChar, 50).Value =
                        CUITTipo.Text + "-" + CUITNumero.Text + "-" + CUITVerificador.Text;

                    cmd.Parameters.Add("@NOMBRE", SqlDbType.VarChar, 255).Value =
                        Nombre.Text;

                    cmd.Parameters.Add("@DIRECCION", SqlDbType.VarChar, 255).Value =
                        Direccion.Text;

                    cmd.Parameters.Add("@RUBRO", SqlDbType.VarChar, 20).Value =
                        Rubro.SelectedItem.ToString();

                    try
                    {
                        if (cmd.ExecuteNonQuery() != 1)
                        {
                            throw new Exception();
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("No se pudo dar de alta la empresa.", "Error",
                                        MessageBoxButtons.OK, MessageBoxIcon.Error);
                        GroupBoxDatos.Enabled = true;
                        return;
                    }
                }

            MessageBox.Show("La empresa fue dada de alta.", "OK",
                            MessageBoxButtons.OK, MessageBoxIcon.Information);
            DialogResult = DialogResult.OK;
        }
        private void Actualizar_Click(object sender, EventArgs e)
        {
            // Deshabilitar los controles hasta que finalice la operación.
            GroupBoxDatos.Enabled = false;

            // Verificar el CUIT ingresado con el algoritmo de validación.
            if (!ValidacionCUIT.Validar(CUITTipo.Text + CUITNumero.Text + CUITVerificador.Text))
            {
                MessageBox.Show("El CUIT ingresado no es valido!", "Error",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
                GroupBoxDatos.Enabled = true;
                return;
            }

            using (var conexion = Program.conexion())
                using (var cmd = new SqlCommand())
                {
                    cmd.CommandText =
                        "UPDATE [SERVOMOTOR].EMPRESAS " +
                        "SET CUIT = @CUIT, " +
                        "    NOMBRE = @NOMBRE, " +
                        "    DIRECCION = @DIRECCION, " +
                        "    ID_RUBRO = ( " +
                        "                SELECT ID_RUBRO " +
                        "                FROM [SERVOMOTOR].RUBROS " +
                        "                WHERE DESCRIPCION = @RUBRO" +
                        "               ), " +
                        "    ESTADO_ACTIVACION = @ESTADO_ACTIVACION " +
                        "WHERE CUIT = @CUIT_ORIG";
                    cmd.Connection = conexion;

                    cmd.Parameters.Add("@CUIT", SqlDbType.VarChar, 50).Value =
                        CUITTipo.Text + "-" + CUITNumero.Text + "-" + CUITVerificador.Text;
                    cmd.Parameters.Add("@NOMBRE", SqlDbType.VarChar, 255).Value    = Nombre.Text;
                    cmd.Parameters.Add("@DIRECCION", SqlDbType.VarChar, 255).Value = Direccion.Text;
                    cmd.Parameters.AddWithValue("@RUBRO", Rubro.Text);
                    cmd.Parameters.Add("@ESTADO_ACTIVACION", SqlDbType.Bit).Value = Habilitar.Checked ? 1 : 0;
                    cmd.Parameters.Add("@CUIT_ORIG", SqlDbType.VarChar, 50).Value =
                        Values["ColCUIT"].Value.ToString();

                    try
                    {
                        try
                        {
                            // ExecuteNonQuery() de por sí podría lanzar otras excepciones.
                            if (cmd.ExecuteNonQuery() != 1)
                            {
                                throw new Exception();
                            }
                        }
                        catch (SqlException ex)
                        {
                            if (ex.State != 3)
                            {
                                throw;  // Va a ser capturado por el catch de afuera.
                            }
                            // Código de error = 3
                            // Error al intentar dar de baja una empresa con rendiciones pendientes.

                            MessageBox.Show(ex.Message, "Error",
                                            MessageBoxButtons.OK, MessageBoxIcon.Error);

                            // Como ya se sabe que no se puede deshabilitar la empresa,
                            //   deshabilitar la opción para deshabilitar.
                            Habilitar.Checked = true;
                            Habilitar.Enabled = false;

                            GroupBoxDatos.Enabled = true;
                            return;
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Error al intentar modificar la empresa.",
                                        "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        GroupBoxDatos.Enabled = true;
                        return;
                    }
                }

            MessageBox.Show("Los datos de la empresa " + Nombre.Text + " fueron actualizados.",
                            "OK", MessageBoxButtons.OK, MessageBoxIcon.Information);
            DialogResult = DialogResult.OK;
        }