/// <summary> /// Obtener los puestos para un registro de horas extra. /// </summary> /// <param name="r">Registro para el cual se obtienen los puestos</param> public void obtenerPuestosRegistroHorasExtra(ref RegistroHorasExtra r) { SqlCommand comando = _manejador.obtenerProcedimiento("SelectRegistroHorasExtraPuestos"); SqlDataReader datareader = null; _manejador.agregarParametro(comando, "@registro", r.Id, SqlDbType.Int); try { datareader = _manejador.ejecutarConsultaDatos(comando); if (datareader.Read()) { Puestos puesto = (Puestos)datareader["Puesto"]; r.agregarPuesto(puesto); } comando.Connection.Close(); } catch (Exception) { comando.Connection.Close(); throw new Excepcion("ErrorDatosConexion"); } }
/// <summary> /// Actualizar los datos de un registro de horas extra. /// </summary> /// <param name="r">Objeto RegistroHorasExtra con los datos del registro a actualizar</param> public void actualizarRegistroHorasExtra(RegistroHorasExtra r) { SqlCommand comando = _manejador.obtenerProcedimiento("UpdateRegistroHorasExtra"); _manejador.agregarParametro(comando, "@colaborador", r.Colaborador, SqlDbType.Int); _manejador.agregarParametro(comando, "@hora_ingreso", r.Hora_ingreso, SqlDbType.DateTime); _manejador.agregarParametro(comando, "@hora_salida", r.Hora_salida, SqlDbType.DateTime); _manejador.agregarParametro(comando, "@horas_dobles", r.Horas_dobles, SqlDbType.Decimal); _manejador.agregarParametro(comando, "@horas_extra", r.Horas_extra, SqlDbType.Decimal); _manejador.agregarParametro(comando, "@horas_dobles_extra", r.Horas_dobles_extra, SqlDbType.Decimal); _manejador.agregarParametro(comando, "@alimentacion", r.Alimentacion, SqlDbType.Money); _manejador.agregarParametro(comando, "@transporte", r.Transporte, SqlDbType.Money); _manejador.agregarParametro(comando, "@observaciones_conceptos", r.Observaciones_conceptos, SqlDbType.VarChar); _manejador.agregarParametro(comando, "@observaciones_gastos", r.Observaciones_gastos, SqlDbType.VarChar); _manejador.agregarParametro(comando, "@registro", r.Id, SqlDbType.Int); try { _manejador.ejecutarConsultaActualizacion(comando); comando.Connection.Close(); } catch (Exception) { comando.Connection.Close(); throw new Excepcion("ErrorRegistroHorasExtraActualizacion"); } }
/// <summary> /// Verificar si existe un registro de horas extra para un usuario dado en una fecha dada. /// </summary> /// <param name="r">Objeto RegistroHorasExtra con los datos del registro a verificar</param> /// <returns>Valor que indica si el registro existe</returns> public bool verificarRegistroHorasExtra(RegistroHorasExtra r) { bool existe = false; SqlCommand comando = _manejador.obtenerProcedimiento("SelectExisteRegistroHorasExtra"); SqlDataReader datareader = null; _manejador.agregarParametro(comando, "@colaborador", r.Colaborador, SqlDbType.Int); _manejador.agregarParametro(comando, "@hora_ingreso", r.Hora_ingreso, SqlDbType.DateTime); _manejador.agregarParametro(comando, "@hora_salida", r.Hora_salida, SqlDbType.DateTime); try { datareader = _manejador.ejecutarConsultaDatos(comando); if (datareader.Read()) { int id_encontrado = (int)datareader["pk_ID"]; existe = r.Id > 0 ? id_encontrado != r.Id : true; } comando.Connection.Close(); } catch (Exception) { comando.Connection.Close(); throw new Excepcion("ErrorVerificarRegistroHorasExtraDuplicado"); } return(existe); }
/// <summary> /// Agregar un registro a la lista. /// </summary> public void agregarRegistro(RegistroHorasExtra registro) { BindingList <RegistroHorasExtra> registros = (BindingList <RegistroHorasExtra>)dgvRegistros.DataSource; registros.Add(registro); dgvRegistros.AutoResizeColumns(); }
/// <summary> /// Clic en el botón de desaprobar. /// </summary> private void btnRechazar_Click(object sender, EventArgs e) { try { if (Mensaje.mostrarMensajeConfirmacion("MensajeRegistrosHorasExtraRechazo") == DialogResult.Yes) { frmComentarioBitacora formulario = new frmComentarioBitacora(); formulario.ShowDialog(); string comentario = formulario.Comentario; foreach (DataGridViewRow fila in dgvRegistros.SelectedRows) { RegistroHorasExtra registro = (RegistroHorasExtra)fila.DataBoundItem; if (registro.Estado == Estados.Aprobado || registro.Estado == Estados.NoRevisado) { _supervision.actualizarRegistroHorasExtraRechazar(ref registro, _coordinador, comentario); } } btnAprobar.Enabled = true; btnRechazar.Enabled = false; this.actualizarLista(); Mensaje.mostrarMensaje("MensajeRegistrosHorasExtraConfirmacionRechazo"); } } catch (Excepcion ex) { ex.mostrarMensaje(); } }
/// <summary> /// Clic en el botón de aprobar. /// </summary> private void btnAprobar_Click(object sender, EventArgs e) { try { if (Mensaje.mostrarMensajeConfirmacion("MensajeRegistrosHorasExtraAprobacion") == DialogResult.Yes) { foreach (DataGridViewRow fila in dgvRegistros.SelectedRows) { RegistroHorasExtra registro = (RegistroHorasExtra)fila.DataBoundItem; if (registro.Estado == Estados.Rechazado || registro.Estado == Estados.NoRevisado) { _supervision.actualizarRegistroHorasExtraAprobar(ref registro); } } btnAprobar.Enabled = false; btnRechazar.Enabled = true; this.actualizarLista(); Mensaje.mostrarMensaje("MensajeRegistrosHorasExtraConfirmacionAprobacion"); } } catch (Excepcion ex) { ex.mostrarMensaje(); } }
public frmMantenimientoHorasExtra(RegistroHorasExtra registro, Colaborador coordinador) { InitializeComponent(); _registro = registro; _coordinador = coordinador; txtCoordinador.Text = _registro.Coordinador.ToString(); dtpHoraIngreso.Value = _registro.Hora_ingreso; dtpHoraSalida.Value = _registro.Hora_salida; nudHoraDoble.Value = _registro.Horas_dobles; nudHorasExtra.Value = _registro.Horas_extra; nudExtraDoble.Value = _registro.Horas_dobles_extra; nudTransporte.Value = _registro.Transporte; nudAlimentacion.Value = _registro.Alimentacion; txtObservacionesConceptos.Text = _registro.Observaciones_conceptos; txtObservacionesGastos.Text = _registro.Observaciones_gastos; foreach (Motivos motivo in _registro.Motivos) { clbConceptos.SetItemChecked((byte)motivo, true); } if ((!_coordinador.Puestos.Contains(Puestos.Supervisor) && _registro.Coordinador != _coordinador) || _registro.Estado != Estados.NoRevisado) { //btnGuardar.Enabled = false; gbDatos.Enabled = false; gbConceptos.Enabled = false; // gbTipoGasto.Enabled = false; pnlHoras.Enabled = false; txtObservacionesGastos.Enabled = false; } try { this.cargarDatos(); cboColaborador.Text = _registro.Colaborador.ToString(); lstPuestos.SelectedIndices.Clear(); foreach (Puestos puesto in _registro.Puestos) { lstPuestos.SetSelected((byte)puesto, true); } } catch (Excepcion ex) { ex.mostrarMensaje(); this.Close(); } }
/// <summary> /// Actualizar los estados de los registros. /// </summary> public void actualizarEstados(DataGridViewRow fila) { RegistroHorasExtra registro = (RegistroHorasExtra)fila.DataBoundItem; fila.Cells[Diferencia.Index].Value = (registro.Hora_salida - registro.Hora_ingreso).Hours; fila.Cells[Aprobado.Index].Value = registro.Estado == Estados.Aprobado; fila.Cells[Rechazado.Index].Value = registro.Estado == Estados.Rechazado; this.mostrarErrorHoras(fila.Cells[HorasExtra.Index], fila.Cells[Colaborador.Index]); this.mostrarErrorHoras(fila.Cells[HorasDobles.Index], fila.Cells[Colaborador.Index]); this.mostrarErrorHoras(fila.Cells[HorasExtraDobles.Index], fila.Cells[Colaborador.Index]); this.mostrarErrorDiferencia(fila.Cells[Diferencia.Index], fila.Cells[Colaborador.Index]); }
/// <summary> /// Mostrar la ventana de modificación. /// </summary> private void mostarVentanaModificacion() { try { RegistroHorasExtra registro = (RegistroHorasExtra)dgvRegistros.SelectedRows[0].DataBoundItem; frmMantenimientoHorasExtra formulario = new frmMantenimientoHorasExtra(registro, _coordinador); formulario.ShowDialog(this); } catch (Excepcion ex) { ex.mostrarMensaje(); } }
/// <summary> /// Eliminar los datos de un registro de horas extra. /// </summary> /// <param name="r">Objeto RegistroHorasExtra con los datos del registro a eliminar</param> public void eliminarRegistroHorasExtra(RegistroHorasExtra r) { SqlCommand comando = _manejador.obtenerProcedimiento("DeleteRegistroHorasExtra"); _manejador.agregarParametro(comando, "@registro", r.Id, SqlDbType.Int); try { _manejador.ejecutarConsultaActualizacion(comando); comando.Connection.Close(); } catch (Exception) { comando.Connection.Close(); throw new Excepcion("ErrorRegistroHorasExtraEliminacion"); } }
/// <summary> /// Se selecciona otra fila. /// </summary> private void dgvRegistros_SelectionChanged(object sender, EventArgs e) { if (dgvRegistros.SelectedRows.Count > 0) { if (dgvRegistros.SelectedRows.Count > 1) { btnEliminar.Enabled = false; btnModificar.Enabled = false; btnRechazar.Enabled = _supervisor; btnAprobar.Enabled = _supervisor; } else { RegistroHorasExtra registro = (RegistroHorasExtra)dgvRegistros.SelectedRows[0].DataBoundItem; btnEliminar.Enabled = true; btnModificar.Enabled = true; switch (registro.Estado) { case Estados.Aprobado: btnRechazar.Enabled = _supervisor; btnAprobar.Enabled = false; break; case Estados.Rechazado: btnRechazar.Enabled = false; btnAprobar.Enabled = _supervisor; break; default: btnRechazar.Enabled = _supervisor; btnAprobar.Enabled = _supervisor; break; } } } else { btnEliminar.Enabled = false; btnModificar.Enabled = true; btnAprobar.Enabled = false; btnRechazar.Enabled = false; } }
/// <summary> /// Ligar un puesto con un registro de horas extra. /// </summary> /// <param name="r">Objeto RegistroHorasExtra con los datos del registro</param> /// <param name="p">Puesto a ligar con el registro</param> public void agregarPuestoRegistroHorasExtra(RegistroHorasExtra r, Puestos p) { SqlCommand comando = _manejador.obtenerProcedimiento("InsertRegistroHorasExtraPuesto"); _manejador.agregarParametro(comando, "@puesto", p, SqlDbType.TinyInt); _manejador.agregarParametro(comando, "@registro", r.Id, SqlDbType.Int); try { _manejador.ejecutarConsultaActualizacion(comando); comando.Connection.Close(); } catch (Exception) { comando.Connection.Close(); throw new Excepcion("ErrorRegistroHorasExtraActualizacion"); } }
/// <summary> /// Actualizar un registro de horas extra marcándolo como rechazado. /// </summary> /// <param name="r">Objeto RegistroHorasExtra con los datos del registro a actualizar</param> /// <param name="s">Objeto Supervisor con los datos del supervisor que rechaza el registro</param> /// <param name="c">Comentario relacionado con el rechazo</param> public void actualizarRegistroHorasExtraRechazar(RegistroHorasExtra r, Colaborador s, string c) { SqlCommand comando = _manejador.obtenerProcedimiento("UpdateRegistroHorasExtraRechazar"); _manejador.agregarParametro(comando, "@registro", r.Id, SqlDbType.Int); _manejador.agregarParametro(comando, "@supervisor", s, SqlDbType.Int); _manejador.agregarParametro(comando, "@comentario", c, SqlDbType.VarChar); try { _manejador.ejecutarConsultaActualizacion(comando); comando.Connection.Close(); } catch (Exception) { comando.Connection.Close(); throw new Excepcion("ErrorRegistroHorasExtraActualizacion"); } }
/// <summary> /// Clic en el botón de eliminar. /// </summary> private void btnEliminar_Click(object sender, EventArgs e) { try { if (Mensaje.mostrarMensajeConfirmacion("MensajeRegistroHorasExtraEliminacion") == DialogResult.Yes) { RegistroHorasExtra registro = (RegistroHorasExtra)dgvRegistros.SelectedRows[0].DataBoundItem; _supervision.eliminarRegistroHorasExtra(registro); dgvRegistros.Rows.Remove(dgvRegistros.SelectedRows[0]); Mensaje.mostrarMensaje("MensajeRegistroHorasExtraConfirmacionEliminacion"); } } catch (Excepcion ex) { ex.mostrarMensaje(); } }
/// <summary> /// Listar todos los registros de horas extra para un colaborador específico en un periodo de tiempo determinado. /// </summary> /// <param name="c">Colaborador para el cual se genera la lista</param> /// <param name="i">Fecha inicial del periodo de tiempo</param> /// <param name="f">Fecha final del periodo de tiempo</param> /// <returns>Lista de registros de horas extra incluidos en el sistema</returns> public BindingList <RegistroHorasExtra> listarRegistrosHorasExtraColaborador(Colaborador c, DateTime i, DateTime f) { BindingList <RegistroHorasExtra> registros = new BindingList <RegistroHorasExtra>(); SqlCommand comando = _manejador.obtenerProcedimiento("SelectRegistrosHorasExtra"); SqlDataReader datareader = null; _manejador.agregarParametro(comando, "@inicio", i, SqlDbType.Date); _manejador.agregarParametro(comando, "@fin", f, SqlDbType.Date); _manejador.agregarParametro(comando, "@colaborador", c, SqlDbType.Int); try { datareader = _manejador.ejecutarConsultaDatos(comando); while (datareader.Read()) { int id_registro = (int)datareader["ID_Registro"]; DateTime fecha_registro = (DateTime)datareader["Fecha_Registro"]; DateTime hora_ingreso = (DateTime)datareader["Hora_Ingreso"]; DateTime hora_salida = (DateTime)datareader["Hora_Salida"]; Estados estado = (Estados)datareader["Estado"]; decimal horas_dobles = (decimal)datareader["Horas_Dobles"]; decimal horas_extra = (decimal)datareader["Horas_Extra"]; decimal horas_dobles_extra = (decimal)datareader["Horas_Dobles_Extra"]; decimal alimentacion = (decimal)datareader["Alimentacion"]; decimal transporte = (decimal)datareader["Transporte"]; string observaciones_conceptos = (string)datareader["Observaciones_Conceptos"]; string observaciones_gastos = (string)datareader["Observaciones_Gastos"]; int id_colaborador = (int)datareader["ID_Colaborador"]; string nombre_colaborador = (string)datareader["Nombre_Colaborador"]; string primer_apellido_colaborador = (string)datareader["Primer_Apellido_Colaborador"]; string segundo_apellido_colaborador = (string)datareader["Segundo_Apellido_Colaborador"]; int id_coordinador = (int)datareader["ID_Coordinador"]; string nombre_coordinador = (string)datareader["Nombre_Coordinador"]; string primer_apellido_coordinador = (string)datareader["Primer_Apellido_Coordinador"]; string segundo_apellido_coordinador = (string)datareader["Segundo_Apellido_Coordinador"]; Colaborador colaborador = new Colaborador(id_colaborador, nombre_colaborador, primer_apellido_colaborador, segundo_apellido_colaborador); Colaborador coordinador = new Colaborador(id_coordinador, nombre_coordinador, primer_apellido_coordinador, segundo_apellido_coordinador); RegistroHorasExtra registro = new RegistroHorasExtra(id: id_registro, colaborador: colaborador, coordinador: coordinador, fecha_registro: fecha_registro, hora_ingreso: hora_ingreso, hora_salida: hora_salida, horas_extra: horas_extra, horas_dobles: horas_dobles, horas_dobles_extra: horas_dobles_extra, alimentacion: alimentacion, transporte: transporte, estado: estado, observaciones_conceptos: observaciones_conceptos, observaciones_gastos: observaciones_gastos); registros.Add(registro); } comando.Connection.Close(); } catch (Exception) { comando.Connection.Close(); throw new Excepcion("ErrorDatosConexion"); } return(registros); }
/// <summary> /// Clic en el botón de guardar. /// </summary> private void btnGuardar_Click(object sender, EventArgs e) { // Verificar que se hayan seleccionado los datos if (cboColaborador.SelectedItem == null || clbConceptos.CheckedItems.Count == 0 || lstPuestos.SelectedIndices.Count == 0) { Excepcion.mostrarMensaje("ErrorRegistroHorasExtraDatosRegistro"); return; } try { frmAdministracionHorasExtra padre = (frmAdministracionHorasExtra)this.Owner; Colaborador colaborador = (Colaborador)cboColaborador.SelectedItem; DateTime hora_ingreso = dtpHoraIngreso.Value; DateTime hora_salida = dtpHoraSalida.Value; decimal horas_dobles = (decimal)nudHoraDoble.Value; decimal horas_extra = (decimal)nudHorasExtra.Value; decimal horas_dobles_extra = (decimal)nudExtraDoble.Value; decimal transporte = (decimal)nudTransporte.Value; decimal alimentacion = (decimal)nudAlimentacion.Value; string observaciones_conceptos = txtObservacionesConceptos.Text; string observaciones_gastos = txtObservacionesGastos.Text; // Verificar si el registro es nuevo if (_registro == null) { // Agregar los datos del nuevo registro if (Mensaje.mostrarMensajeConfirmacion("MensajeRegistroHorasExtraRegistro") == DialogResult.Yes) { RegistroHorasExtra nuevo = new RegistroHorasExtra(colaborador: colaborador, coordinador: _coordinador, hora_ingreso: hora_ingreso, hora_salida: hora_salida, horas_extra: horas_extra, horas_dobles: horas_dobles, horas_dobles_extra: horas_dobles_extra, alimentacion: alimentacion, transporte: transporte, observaciones_conceptos: observaciones_conceptos, observaciones_gastos: observaciones_gastos); foreach (int motivo in clbConceptos.CheckedIndices) { nuevo.agregarMotivo((Motivos)motivo); } foreach (int puesto in lstPuestos.SelectedIndices) { nuevo.agregarPuesto((Puestos)puesto); } _supervision.agregarRegistroHorasExtra(ref nuevo); padre.agregarRegistro(nuevo); Mensaje.mostrarMensaje("MensajeRegistroHorasExtraConfirmacionRegistro"); this.Close(); } } else { RegistroHorasExtra copia = new RegistroHorasExtra(id: _registro.Id, colaborador: colaborador, coordinador: _registro.Coordinador, hora_ingreso: hora_ingreso, hora_salida: hora_salida, horas_extra: horas_extra, horas_dobles: horas_dobles, horas_dobles_extra: horas_dobles_extra, alimentacion: alimentacion, transporte: transporte, observaciones_conceptos: observaciones_conceptos, observaciones_gastos: observaciones_gastos); foreach (int motivo in clbConceptos.CheckedIndices) { copia.agregarMotivo((Motivos)motivo); } foreach (int puesto in lstPuestos.SelectedIndices) { copia.agregarPuesto((Puestos)puesto); } // Actualizar los datos del registro _supervision.actualizarRegistroHorasExtra(copia); _registro.Colaborador = colaborador; _registro.Hora_ingreso = hora_ingreso; _registro.Hora_salida = hora_salida; _registro.Horas_dobles_extra = horas_dobles_extra; _registro.Horas_extra = horas_extra; _registro.Horas_dobles = horas_dobles; _registro.Transporte = transporte; _registro.Alimentacion = alimentacion; _registro.Observaciones_conceptos = observaciones_conceptos; _registro.Observaciones_gastos = observaciones_gastos; _registro.Motivos = copia.Motivos; _registro.Puestos = copia.Puestos; padre.actualizarLista(); Mensaje.mostrarMensaje("MensajeRegistroHorasExtraConfirmacionActualizacion"); this.Close(); } } catch (Excepcion ex) { ex.mostrarMensaje(); } }