private void cargaEmpleados()
        {
            cnx = new SqlConnection(cdn);
            cmd = new SqlCommand();
            cmd.Connection = cnx;

            #region DISEÑO DEL GRIDVIEW

            dgvEmpleados.Columns["idtrabajador"].DataPropertyName = "idtrabajador";
            dgvEmpleados.Columns["iddepartamento"].DataPropertyName = "iddepartamento";
            dgvEmpleados.Columns["idpuesto"].DataPropertyName = "idpuesto";
            dgvEmpleados.Columns["noempleado"].DataPropertyName = "noempleado";
            dgvEmpleados.Columns["nombres"].DataPropertyName = "nombres";
            dgvEmpleados.Columns["paterno"].DataPropertyName = "paterno";
            dgvEmpleados.Columns["materno"].DataPropertyName = "materno";
            dgvEmpleados.Columns["sueldo"].DataPropertyName = "sueldo";
            dgvEmpleados.Columns["despensa"].DataPropertyName = "despensa";
            dgvEmpleados.Columns["asistencia"].DataPropertyName = "asistencia";
            dgvEmpleados.Columns["puntualidad"].DataPropertyName = "puntualidad";
            dgvEmpleados.Columns["horas"].DataPropertyName = "horas";

            DataGridViewCellStyle estilo = new DataGridViewCellStyle();
            estilo.Alignment = DataGridViewContentAlignment.MiddleRight;

            dgvEmpleados.Columns[7].DefaultCellStyle = estilo;
            dgvEmpleados.Columns[8].DefaultCellStyle = estilo;
            dgvEmpleados.Columns[9].DefaultCellStyle = estilo;
            dgvEmpleados.Columns[10].DefaultCellStyle = estilo;
            dgvEmpleados.Columns[11].DefaultCellStyle = estilo;

            dgvEmpleados.Columns["noempleado"].ReadOnly = true;
            dgvEmpleados.Columns["nombres"].ReadOnly = true;
            dgvEmpleados.Columns["paterno"].ReadOnly = true;
            dgvEmpleados.Columns["materno"].ReadOnly = true;
            #endregion

            #region LISTADO DE EMPLEADOS GRID
            nh = new CalculoNomina.Core.NominaHelper();
            nh.Command = cmd;

            lstEmpleadosNomina = new List<CalculoNomina.Core.DatosEmpleado>();
            lstEmpleadosFaltaIncapacidad = new List<CalculoNomina.Core.DatosFaltaIncapacidad>();
            DateTime fecha = new DateTime(1900,1,1);
            DateTime fechaf = new DateTime(1900, 1, 1);
            try
            {

                //if (_tipoNomina == GLOBALES.NORMAL || _tipoNomina == GLOBALES.EXTRAORDINARIO_NORMAL)
                //{

                //}

                if (_periodo == 7)
                {
                    fecha = periodoFin.AddDays(1);
                    fechaf = periodoFin.AddDays(7);
                }
                else
                {
                    if (periodoInicio.Day < 15)
                    {
                        fecha = periodoFin.AddDays(1);
                        fechaf = periodoFin.AddDays(DateTime.DaysInMonth(periodoInicio.Year, periodoInicio.Month) - 15);
                    }
                    else
                    {
                        fecha = periodoFin.AddDays(1);
                        fechaf = periodoFin.AddDays(15);
                    }
                }
                cnx.Open();
                lstEmpleadosNomina = nh.obtenerDatosEmpleado(GLOBALES.IDEMPRESA, GLOBALES.ACTIVO, _obracivil, fecha, fechaf, _periodo);
                lstEmpleadosFaltaIncapacidad = nh.obtenerDatosFaltaInc(GLOBALES.IDEMPRESA, GLOBALES.ACTIVO, _obracivil, fecha, fechaf, _periodo);

                //if (_tipoNomina == GLOBALES.ESPECIAL || _tipoNomina == GLOBALES.EXTRAORDINARIO_ESPECIAL)
                //{
                //    lstEmpleadosNomina = nh.obtenerDatosEmpleado(GLOBALES.IDEMPRESA, GLOBALES.INACTIVO, _obracivil);
                //    lstEmpleadosFaltaIncapacidad = nh.obtenerDatosFaltaInc(GLOBALES.IDEMPRESA, GLOBALES.INACTIVO, _obracivil);
                //}

                cnx.Close();
                cnx.Dispose();
            }
            catch (Exception error)
            {
                MessageBox.Show("Error: \r\n \r\n" + error.Message, "Error");
            }

            dgvEmpleados.DataSource = lstEmpleadosNomina;
            dgvFaltas.DataSource = lstEmpleadosFaltaIncapacidad;

            for (int i = 1; i < dgvEmpleados.Columns.Count; i++)
                dgvEmpleados.AutoResizeColumn(i);

            for (int i = 1; i < dgvFaltas.Columns.Count; i++)
                dgvFaltas.AutoResizeColumn(i);
            #endregion
        }
        private void movimientosEspeciales()
        {
            string idtrabajadores = "";

            dgvEmpleados.Rows.Clear();

            cnx = new SqlConnection(cdn);
            cmd = new SqlCommand();
            cmd.Connection = cnx;

            nh = new CalculoNomina.Core.NominaHelper();
            nh.Command = cmd;

            CalculoNomina.Core.tmpPagoNomina pn = new CalculoNomina.Core.tmpPagoNomina();
            pn.idempresa = GLOBALES.IDEMPRESA;
            pn.fechainicio = periodoInicio;
            pn.fechafin = periodoFin;
            pn.obracivil = false;

            List<CalculoNomina.Core.tmpPagoNomina> lstPreNominaEspecial = new List<CalculoNomina.Core.tmpPagoNomina>();
            List<CalculoNomina.Core.DatosEmpleado> lstEmp = new List<CalculoNomina.Core.DatosEmpleado>();

            try
            {
                cnx.Open();
                lstPreNominaEspecial = nh.obtenerPreNomina(pn, _periodo);
                if (lstPreNominaEspecial.Count != 0)
                {
                    var dato = lstPreNominaEspecial.GroupBy(id => id.idtrabajador).Select(grp => grp.First()).ToList();
                    foreach (var a in dato)
                    {
                        idtrabajadores += a.idtrabajador.ToString() + ",";
                    }
                    idtrabajadores = idtrabajadores.Substring(0, idtrabajadores.Length - 1);
                    lstEmp = nh.obtenerDatosEmpleado(GLOBALES.IDEMPRESA, idtrabajadores, _periodo);
                }
                cnx.Close();
                cnx.Dispose();
            }
            catch (Exception error)
            {
                MessageBox.Show("Error: Nomina especial. \r\n \r\n" + error.Message, "Error");
            }

            if (lstPreNominaEspecial.Count != 0)
            {
                dgvEmpleados.Columns["idtrabajador"].DataPropertyName = "idtrabajador";
                dgvEmpleados.Columns["iddepartamento"].DataPropertyName = "iddepartamento";
                dgvEmpleados.Columns["idpuesto"].DataPropertyName = "idpuesto";
                dgvEmpleados.Columns["noempleado"].DataPropertyName = "noempleado";
                dgvEmpleados.Columns["nombres"].DataPropertyName = "nombres";
                dgvEmpleados.Columns["paterno"].DataPropertyName = "paterno";
                dgvEmpleados.Columns["materno"].DataPropertyName = "materno";
                dgvEmpleados.Columns["sueldo"].DataPropertyName = "sueldo";
                dgvEmpleados.Columns["despensa"].DataPropertyName = "despensa";
                dgvEmpleados.Columns["asistencia"].DataPropertyName = "asistencia";
                dgvEmpleados.Columns["puntualidad"].DataPropertyName = "puntualidad";
                dgvEmpleados.Columns["horas"].DataPropertyName = "horas";
                dgvEmpleados.DataSource = lstEmp;

                foreach (DataGridViewRow fila in dgvEmpleados.Rows)
                {
                    for (int i = 0; i < lstPreNominaEspecial.Count; i++)
                    {
                        if ((int)fila.Cells["idtrabajador"].Value == lstPreNominaEspecial[i].idtrabajador)
                        {
                            switch (lstPreNominaEspecial[i].noconcepto)
                            {
                                case 1:
                                    fila.Cells["sueldo"].Value = lstPreNominaEspecial[i].cantidad;
                                    break;
                                case 2:
                                    fila.Cells["horas"].Value = lstPreNominaEspecial[i].cantidad;
                                    break;
                                case 3:
                                    fila.Cells["asistencia"].Value = lstPreNominaEspecial[i].cantidad;
                                    break;
                                case 5:
                                    fila.Cells["puntualidad"].Value = lstPreNominaEspecial[i].cantidad;
                                    break;
                                case 6:
                                    fila.Cells["despensa"].Value = lstPreNominaEspecial[i].cantidad;
                                    break;
                            }
                        }
                    }
                }
                calculoNoPeriodo();
            }
        }