private void toolMostrarDatos_Click(object sender, EventArgs e)
        {
            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.Date;
            pn.fechafin = periodoFin.Date;
            pn.obracivil = _obracivil;

            List<CalculoNomina.Core.tmpPagoNomina> lstPreNomina = new List<CalculoNomina.Core.tmpPagoNomina>();

            try
            {
                cnx.Open();
                lstPreNomina = nh.obtenerPreNomina(pn, _periodo);
                cnx.Close();
                cnx.Dispose();
            }
            catch
            {
                MessageBox.Show("Error: Al obtener los valores de la prenomina. (Mostrar Datos).", "Error");
                cnx.Dispose();
                return;
            }

            foreach (DataGridViewRow fila in dgvEmpleados.Rows)
            {
                for (int i = 0; i < lstPreNomina.Count; i++)
                {
                    if (int.Parse(fila.Cells["idtrabajador"].Value.ToString()) == lstPreNomina[i].idtrabajador)
                    {
                        switch (lstPreNomina[i].noconcepto)
                        {
                            case 1:
                                fila.Cells["sueldo"].Value = lstPreNomina[i].cantidad;
                                break;
                            case 2:
                                fila.Cells["horas"].Value = lstPreNomina[i].cantidad;
                                break;
                            case 3:
                                fila.Cells["asistencia"].Value = lstPreNomina[i].cantidad;
                                break;
                            case 5:
                                fila.Cells["puntualidad"].Value = lstPreNomina[i].cantidad;
                                break;
                            case 6:
                                fila.Cells["despensa"].Value = lstPreNomina[i].cantidad;
                                break;
                        }
                    }
                }
            }
        }
        private void CargaPreNomina(DateTime inicio, DateTime fin)
        {
            cargaEmpleados();

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

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

            CalculoNomina.Core.tmpPagoNomina pnCargar = new CalculoNomina.Core.tmpPagoNomina();
            pnCargar.idempresa = GLOBALES.IDEMPRESA;
            pnCargar.fechainicio = inicio;
            pnCargar.fechafin = fin;
            pnCargar.obracivil = _obracivil;

            //CalculoNomina.Core.tmpPagoNomina pnGuardada = new CalculoNomina.Core.tmpPagoNomina();
            //pnGuardada.idempresa = GLOBALES.IDEMPRESA;
            //pnGuardada.fechainicio = periodoInicio.Date;
            //pnGuardada.fechafin = periodoFin.Date;
            //pnGuardada.guardada = false;

            List<CalculoNomina.Core.tmpPagoNomina> lstPreNomina = new List<CalculoNomina.Core.tmpPagoNomina>();

            try
            {
                cnx.Open();
                lstPreNomina = nh.obtenerPreNomina(pnCargar, _periodo);
                //nh.cargaPreNomina(pnGuardada);
                cnx.Close();
                cnx.Dispose();
            }
            catch (Exception error)
            {
                MessageBox.Show("Error: \r\n \r\n" + error.Message, "Error");
            }

            if (lstPreNomina.Count == 0)
                FLAGPRIMERCALCULO = true;
            else
            {
                FLAGPRIMERCALCULO = false;
                EXISTEPRENOMINA = true;
            }

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