Beispiel #1
0
        /// <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");
            }
        }
Beispiel #2
0
        /// <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");
            }
        }
Beispiel #3
0
        /// <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();
            }
        }
Beispiel #10
0
        /// <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;
            }
        }
Beispiel #12
0
        /// <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");
            }
        }
Beispiel #13
0
        /// <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();
            }
        }
Beispiel #15
0
        /// <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();
            }
        }