Example #1
0
        private void btnEliminarVP_Click(object sender, EventArgs e)
        {
            cnx = new SqlConnection(cdn);
            cmd = new SqlCommand();
            cmd.Connection = cnx;

            Vacaciones.Core.VacacionesHelper vh = new Vacaciones.Core.VacacionesHelper();
            vh.Command = cmd;

            Vacaciones.Core.VacacionesPrima vp = new Vacaciones.Core.VacacionesPrima();

            if (lstvVacaciones.SelectedItems.Count > 0)
            {
                ListViewItem listItem = lstvVacaciones.SelectedItems[0];
                vp.id = int.Parse(listItem.Text);
                vp.periodoinicio = DateTime.Parse(listItem.SubItems[1].Text);
                vp.periodofin = DateTime.Parse(listItem.SubItems[2].Text);
            }

            try
            {
                cnx.Open();
                vh.eliminaVacacion(vp);
                cnx.Close();
                cnx.Dispose();
                muestraVacaciones();

                txtDiasPagoPV.Clear();
                txtDiasPendientes.Clear();
            }
            catch
            {
                MessageBox.Show("Error: Al eliminar el registro de vacacion.", "Error");
                cnx.Dispose();
            }
        }
Example #2
0
        private void muestraVacaciones()
        {
            cnx = new SqlConnection(cdn);
            cmd = new SqlCommand();
            cmd.Connection = cnx;

            Vacaciones.Core.VacacionesHelper vh = new Vacaciones.Core.VacacionesHelper();
            vh.Command = cmd;

            Complementos.Core.ComplementoHelper comh = new Complementos.Core.ComplementoHelper();
            comh.Command = cmd;

            Vacaciones.Core.VacacionesPrima v = new Vacaciones.Core.VacacionesPrima();
            v.idtrabajador = idTrabajador;

            Complementos.Core.Complemento comp = new Complementos.Core.Complemento();
            comp.idtrabajador = idTrabajador;

            List<Vacaciones.Core.VacacionesPrima> lstVacacionesPrima = new List<Vacaciones.Core.VacacionesPrima>();

            try
            {
                cnx.Open();
                lstVacacionesPrima = vh.obtenerVacacionesPrimaTrabajador(v);
                txtObservaciones.Text = comh.obtenerObservacionesTrabajador(comp).ToString();
                cnx.Close();
                cnx.Dispose();
            }
            catch (Exception error)
            {
                MessageBox.Show("Error: Al obtener las Vacaciones. (Función Muestra Vacaciones.) \r\n \r\n" + error.Message, "Error");
            }

            lstvVacaciones.Clear();
            lstvVacaciones.View = View.Details;
            lstvVacaciones.GridLines = true;
            lstvVacaciones.Columns.Add("ID", 30, HorizontalAlignment.Right);
            lstvVacaciones.Columns.Add("Periodo Inicio", 80, HorizontalAlignment.Right);
            lstvVacaciones.Columns.Add("Periodo Fin", 80, HorizontalAlignment.Right);

            for (int i = 0; i < lstVacacionesPrima.Count; i++)
            {
                lstvVacaciones.Items.Add(lstVacacionesPrima[i].id.ToString());
                lstvVacaciones.Items[i].SubItems.Add(lstVacacionesPrima[i].periodoinicio.ToShortDateString());
                lstvVacaciones.Items[i].SubItems.Add(lstVacacionesPrima[i].periodofin.ToShortDateString());
            }
        }
Example #3
0
        private void btnGuardarVP_Click(object sender, EventArgs e)
        {
            cnx = new SqlConnection(cdn);
            cmd = new SqlCommand();
            cmd.Connection = cnx;

            Empleados.Core.EmpleadosHelper emph = new Empleados.Core.EmpleadosHelper();
            emph.Command = cmd;

            Vacaciones.Core.VacacionesHelper vh = new Vacaciones.Core.VacacionesHelper();
            vh.Command = cmd;

            Complementos.Core.ComplementoHelper ch = new Complementos.Core.ComplementoHelper();
            ch.Command = cmd;

            Empleados.Core.Empleados empleado = new Empleados.Core.Empleados();
            empleado.idtrabajador = idTrabajador;

            Complementos.Core.Complemento c = new Complementos.Core.Complemento();
            c.idtrabajador = idTrabajador;
            c.observaciones = txtObservaciones.Text;

            List<Empleados.Core.Empleados> lstEmpleado = new List<Empleados.Core.Empleados>();

            try
            {
                cnx.Open();
                lstEmpleado = emph.obtenerEmpleado(empleado);
                cnx.Close();
            }
            catch
            {
                MessageBox.Show("Error: Al obtener la antigüedad del empleado.", "Error");
                cnx.Dispose();
                return;
            }

            Vacaciones.Core.DiasDerecho dd = new Vacaciones.Core.DiasDerecho();
            dd.anio = lstEmpleado[0].antiguedadmod;

            int dias = 0;
            try
            {
                cnx.Open();
                dias = (int)vh.diasDerecho(dd);
                cnx.Close();
            }
            catch
            {
                MessageBox.Show("Error: Al obtener los dias por derecho del empleado.", "Error");
                cnx.Dispose();
                return;
            }

            int existePrima = 0;
            int existeVacacion = 0;

            if (cmbConceptoVacaciones.SelectedIndex == 0) // PRIMA VACACIONAL Y VACACIONES
            {
                Vacaciones.Core.VacacionesPrima vp = new Vacaciones.Core.VacacionesPrima();
                vp.idtrabajador = idTrabajador;
                vp.periodoinicio = _inicioPeriodo;
                vp.periodofin = _finPeriodo;
                vp.vacacionesprima = "P";

                try
                {
                    cnx.Open();
                    existePrima = (int)vh.existeVacacionesPrima(vp);
                    cnx.Close();
                }
                catch
                {
                    MessageBox.Show("Error: Al obtener la existencia de prima vacacional del empleado.", "Error");
                    cnx.Dispose();
                    return;
                }

                vp = new Vacaciones.Core.VacacionesPrima();
                vp.idtrabajador = idTrabajador;
                vp.periodoinicio = _inicioPeriodo;
                vp.periodofin = _finPeriodo;
                vp.vacacionesprima = "V";

                try
                {
                    cnx.Open();
                    existeVacacion = (int)vh.existeVacacionesPrima(vp);
                    cnx.Close();
                }
                catch
                {
                    MessageBox.Show("Error: Al obtener la existencia de vacaciones del empleado.", "Error");
                    cnx.Dispose();
                    return;
                }

                //VALIDACION DE EXISTENCIA DE PRIMA VACACIONAL Y VACACIONES
                if (existePrima != 0 || existeVacacion != 0)
                {
                    MessageBox.Show("Error: Los datos a ingresar ya existen y/o existe la Prima Vacaciona o Vacaciones.", "Error");
                    cnx.Dispose();
                    return;
                }
                else
                {
                    Faltas.Core.FaltasHelper fh = new Faltas.Core.FaltasHelper();
                    fh.Command = cmd;

                    Faltas.Core.Faltas falta = new Faltas.Core.Faltas();
                    falta.idempresa = GLOBALES.IDEMPRESA;
                    falta.idtrabajador = idTrabajador;
                    falta.fechainicio = _inicioPeriodo.Date;
                    falta.fechafin = _finPeriodo.Date;

                    int existeFaltas = 0;
                    try
                    {
                        cnx.Open();
                        existeFaltas = (int)fh.existeFalta(falta);
                        cnx.Close();
                    }
                    catch (Exception error)
                    {
                        MessageBox.Show("Error: Al obtener las faltas del trabajador. \r\n" + error.Message, "Error");
                        cnx.Dispose();
                        return;
                    }

                    int diasPagoReales = int.Parse(txtDiasPagoPV.Text) + existeFaltas;
                    if (diasPagoReales > _periodo)
                    {
                        diasPagoReales = _periodo - existeFaltas;
                        MessageBox.Show("Existen faltas del trabajador, se ajustaron las vacaciones a: " + diasPagoReales.ToString() + " dia(s).", "Información");
                    }
                    else
                    {
                        diasPagoReales = int.Parse(txtDiasPagoPV.Text);
                    }

                    vp = new Vacaciones.Core.VacacionesPrima();
                    vp.idtrabajador = idTrabajador;
                    vp.idempresa = GLOBALES.IDEMPRESA;
                    vp.periodoinicio = _inicioPeriodo;
                    vp.periodofin = _finPeriodo;
                    vp.diasderecho = dias;
                    vp.diaspago = diasPagoReales;
                    vp.diaspendientes = dias - diasPagoReales;
                    vp.fechapago = DateTime.Now.Date;
                    vp.fechainicio = DateTime.Now.Date;
                    vp.fechafin = DateTime.Now.Date;
                    vp.vacacionesprima = "P";

                    try
                    {
                        cnx.Open();
                        vh.insertaVacacion(vp);
                        cnx.Close();
                    }
                    catch
                    {
                        MessageBox.Show("Error: Al ingresar el registro de prima vacacional.", "Error");
                        cnx.Dispose();
                        return;
                    }

                    diasPagoReales = int.Parse(txtDiasPagoV.Text) + existeFaltas;
                    if (diasPagoReales > _periodo)
                    {
                        diasPagoReales = _periodo - existeFaltas;
                        MessageBox.Show("Existen faltas del trabajador, se ajustaron las vacaciones a: " + diasPagoReales.ToString() + " dia(s).", "Información");
                    }
                    else
                    {
                        diasPagoReales = int.Parse(txtDiasPagoV.Text);
                    }

                    vp = new Vacaciones.Core.VacacionesPrima();
                    vp.idtrabajador = idTrabajador;
                    vp.idempresa = GLOBALES.IDEMPRESA;
                    vp.periodoinicio = _inicioPeriodo;
                    vp.periodofin = _finPeriodo;
                    vp.diasderecho = dias;
                    vp.diaspago = diasPagoReales;
                    vp.diaspendientes = dias - diasPagoReales;
                    vp.fechapago = DateTime.Now.Date;
                    vp.fechainicio = dtpFechaInicioVacaciones.Value.Date;
                    vp.fechafin = dtpFechaInicioVacaciones.Value.AddDays(diasPagoReales - 1);
                    vp.vacacionesprima = "V";

                    try
                    {
                        cnx.Open();
                        vh.insertaVacacion(vp);
                        cnx.Close();
                        cnx.Dispose();
                        muestraVacaciones();
                    }
                    catch
                    {
                        MessageBox.Show("Error: Al ingresar el registro de prima vacacional.", "Error");
                        cnx.Dispose();
                        return;
                    }
                }
            }
            else // SOLO PRIMA VACACIONAL
            {
                Vacaciones.Core.VacacionesPrima vp = new Vacaciones.Core.VacacionesPrima();
                vp.idtrabajador = idTrabajador;
                vp.periodoinicio = _inicioPeriodo;
                vp.periodofin = _finPeriodo;
                vp.vacacionesprima = "P";

                try
                {
                    cnx.Open();
                    existePrima = (int)vh.existeVacacionesPrima(vp);
                    cnx.Close();
                }
                catch
                {
                    MessageBox.Show("Error: Al obtener la existencia de vacaciones del empleado.", "Error");
                    cnx.Dispose();
                    return;
                }

                //VALIDACION DE EXISTENCIA DE PRIMA VACACIONAL
                if (existePrima != 0)
                {
                    MessageBox.Show("Error: Los datos a ingresar ya existen.", "Error");
                    cnx.Dispose();
                    return;
                }
                else
                {
                    Faltas.Core.FaltasHelper fh = new Faltas.Core.FaltasHelper();
                    fh.Command = cmd;

                    Faltas.Core.Faltas falta = new Faltas.Core.Faltas();
                    falta.idempresa = GLOBALES.IDEMPRESA;
                    falta.idtrabajador = idTrabajador;
                    falta.fechainicio = _inicioPeriodo.Date;
                    falta.fechafin = _finPeriodo.Date;

                    int existeFaltas = 0;
                    try
                    {
                        cnx.Open();
                        existeFaltas = (int)fh.existeFalta(falta);
                        cnx.Close();
                    }
                    catch (Exception error)
                    {
                        MessageBox.Show("Error: Al obtener las faltas del trabajador. \r\n" + error.Message, "Error");
                        cnx.Dispose();
                        return;
                    }

                    int diasPagoReales = int.Parse(txtDiasPagoPV.Text) + existeFaltas;
                    if (diasPagoReales > _periodo)
                    {
                        diasPagoReales = _periodo - existeFaltas;
                        MessageBox.Show("Existen faltas del trabajador, se ajustaron las vacaciones a: " + diasPagoReales.ToString() + " dia(s).", "Información");
                    }
                    else
                    {
                        diasPagoReales = int.Parse(txtDiasPagoPV.Text);
                    }

                    vp = new Vacaciones.Core.VacacionesPrima();
                    vp.idtrabajador = idTrabajador;
                    vp.idempresa = GLOBALES.IDEMPRESA;
                    vp.periodoinicio = _inicioPeriodo;
                    vp.periodofin = _finPeriodo;
                    vp.diasderecho = dias;
                    vp.diaspago = diasPagoReales;
                    vp.diaspendientes = dias - diasPagoReales;
                    vp.fechapago = DateTime.Now.Date;
                    vp.fechainicio = DateTime.Now.Date;
                    vp.fechafin = DateTime.Now.Date;
                    vp.vacacionesprima = "P";

                    try
                    {
                        cnx.Open();
                        vh.insertaVacacion(vp);
                        cnx.Close();
                        cnx.Dispose();
                        muestraVacaciones();
                    }
                    catch
                    {
                        MessageBox.Show("Error: Al ingresar el registro de prima vacacional.", "Error");
                        cnx.Dispose();
                        return;
                    }
                }
            }
        }
Example #4
0
        private void btnAceptar_Click(object sender, EventArgs e)
        {
            int existeVacaciones = 0, existeIncapacidad = 0;
            int diasProporcionales = 0;
            int existeBaja = 0;
            DialogResult respuesta = MessageBox.Show("¿Desea dar de baja al empleado?","Confirmación",MessageBoxButtons.YesNo);
            if (respuesta == DialogResult.Yes)
            {
                //if (ausentismo)
                //{
                //    frmDiasAusentismo da = new frmDiasAusentismo();
                //    da.OnDiasAusentismo += da_OnDiasAusentismo;
                //    da.ShowDialog();
                //}

                //if (diasAusentismo == 0 && ausentismo)
                //{
                //    MessageBox.Show("El número de dias es 0 o se presionó el boton cancelar. Por favor revisar.", "Error");
                //    return;
                //}

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

                PeriodoFechaAplicacion();

                #region EXISTENCIA DE INCAPACIDAD
                Incidencias.Core.IncidenciasHelper ih = new Incidencias.Core.IncidenciasHelper();
                ih.Command = cmd;

                Incidencias.Core.Incidencias incidencia = new Incidencias.Core.Incidencias();
                incidencia.idtrabajador = _idempleado;
                incidencia.fechainicio = periodoInicio.Date;
                incidencia.fechafin = periodoFin.Date;

                try
                {
                    cnx.Open();
                    existeIncapacidad = (int)ih.existeIncidenciaBaja(incidencia);
                    cnx.Close();
                }
                catch
                {
                    MessageBox.Show("Error: Al obtener existencia de Incapacidad.","Error");
                    cnx.Dispose();
                    return;
                }
                #endregion

                #region EXISTENCIA DE VACACIONES
                Vacaciones.Core.VacacionesHelper vh = new Vacaciones.Core.VacacionesHelper();
                vh.Command = cmd;

                Vacaciones.Core.VacacionesPrima vp = new Vacaciones.Core.VacacionesPrima();
                vp.idtrabajador = _idempleado;
                vp.periodoinicio = periodoInicio;
                vp.periodofin = periodoFin;
                vp.vacacionesprima = "V";

                try
                {
                    cnx.Open();
                    existeVacaciones = (int)vh.existeVacacionesPrima(vp);
                    cnx.Close();
                }
                catch
                {
                    MessageBox.Show("Error: Al obtener existencia de Vacaciones.", "Error");
                    cnx.Dispose();
                    return;
                }
                #endregion

                #region VALIDACION DE INCAPACIDAD
                if (existeIncapacidad != 0)
                {
                    DateTime fechaInicioIncidencia;
                    DateTime fechaFinIncidencia;
                    try
                    {
                        cnx.Open();
                        fechaInicioIncidencia = DateTime.Parse(ih.fechaInicio(incidencia).ToString());
                        fechaFinIncidencia = DateTime.Parse(ih.fechaFin(incidencia).ToString());
                        cnx.Close();
                    }
                    catch (Exception)
                    {
                        MessageBox.Show("Error: Al obtener las fechas de incapacidad.", "Error");
                        cnx.Dispose();
                        return;
                    }

                    if (dtpFechaBaja.Value.Date >= fechaInicioIncidencia.Date && dtpFechaBaja.Value.Date <= fechaFinIncidencia.Date)
                    {
                        MessageBox.Show("No se puede dar de baja. La fecha de baja esta entre una incapacidad.", "Error");
                        return;
                    }
                    if (dtpFechaBaja.Value.Date <= fechaInicioIncidencia.Date)
                    {
                        MessageBox.Show("No se puede dar de baja. Existe una incapacidad.", "Error");
                        return;
                    }
                }
                #endregion

                #region VALIDACION DE VACACIONES
                if (existeVacaciones != 0)
                {
                    DateTime fechaInicioVac;
                    DateTime fechaFinVac;

                    try
                    {
                        cnx.Open();
                        fechaInicioVac = DateTime.Parse(vh.fechaInicio(vp).ToString());
                        fechaFinVac = DateTime.Parse(vh.fechaFin(vp).ToString());
                        cnx.Close();
                    }
                    catch (Exception)
                    {
                        MessageBox.Show("Error: Al obtener las fechas de las vacaciones.", "Error");
                        cnx.Dispose();
                        return;
                    }

                    if (dtpFechaBaja.Value.Date >= fechaInicioVac.Date && dtpFechaBaja.Value.Date <= fechaFinVac.Date)
                    {
                        MessageBox.Show("No se puede dar de baja. La fecha de baja coninciden con vacaciones.", "Error");
                        return;
                    }
                    if (dtpFechaBaja.Value.Date <= fechaInicioVac.Date)
                    {
                        MessageBox.Show("No se puede dar de baja. El trabajador tiene vacaciones.", "Error");
                        return;
                    }
                }
                #endregion

                Empresas.Core.EmpresasHelper ep = new Empresas.Core.EmpresasHelper();
                ep.Command = cmd;

                Empresas.Core.Empresas empresa = new Empresas.Core.Empresas();
                empresa.idempresa = GLOBALES.IDEMPRESA;

                Empleados.Core.EmpleadosHelper eh = new Empleados.Core.EmpleadosHelper();
                eh.Command = cmd;

                Empleados.Core.Empleados emp = new Empleados.Core.Empleados();
                emp.idtrabajador = _idempleado;

                Empleados.Core.EmpleadosEstatus ee = new Empleados.Core.EmpleadosEstatus();
                ee.idtrabajador = _idempleado;
                ee.idempresa = GLOBALES.IDEMPRESA;
                ee.estatus = GLOBALES.INACTIVO;

                Historial.Core.HistorialHelper hp = new Historial.Core.HistorialHelper();
                hp.Command = cmd;

                Historial.Core.Historial h = new Historial.Core.Historial();
                h.idtrabajador = _idempleado;
                h.tipomovimiento = GLOBALES.mBAJA;
                h.fecha_imss = dtpFechaBaja.Value;
                h.fecha_sistema = DateTime.Now;
                h.idempresa = GLOBALES.IDEMPRESA;
                h.motivobaja = int.Parse(cmbMotivoBaja.SelectedValue.ToString());
                h.iddepartamento = 0;
                h.idpuesto = 0;

                //Ausentismo.Core.AusentismoHelper ah = new Ausentismo.Core.AusentismoHelper();
                //ah.Command = cmd;

                //Ausentismo.Core.Ausentismo a = new Ausentismo.Core.Ausentismo();
                //a.idtrabajador = _idempleado;
                //a.idempresa = GLOBALES.IDEMPRESA;
                //a.fecha_imss = dtpFechaBaja.Value;
                //a.dias = diasAusentismo;

                Bajas.Core.BajasHelper bh = new Bajas.Core.BajasHelper();
                bh.Command = cmd;

                Bajas.Core.Bajas baja = new Bajas.Core.Bajas();
                baja.idtrabajador = _idempleado;
                baja.idempresa = GLOBALES.IDEMPRESA;
                baja.motivo = int.Parse(cmbMotivoBaja.SelectedValue.ToString());
                baja.fecha = dtpFechaBaja.Value.Date;
                //baja.diasproporcionales = (int)(dtpFechaBaja.Value.Date - periodoInicio.Date).TotalDays + 1;
                baja.periodoinicio = periodoInicio.Date;
                baja.periodofin = periodoFin.Date;
                baja.observaciones = txtObservaciones.Text;
                baja.registro = DateTime.Now;

                diasProporcionales = (int)(dtpFechaBaja.Value.Date - periodoInicio.Date).TotalDays + 1;
                if (diasProporcionales == 16)
                    baja.diasproporcionales = diasProporcionales - 1;
                else
                    baja.diasproporcionales = (int)(dtpFechaBaja.Value.Date - periodoInicio.Date).TotalDays + 1;

                try
                {
                    cnx.Open();
                    existeBaja = (int)bh.existeBaja(baja);
                    cnx.Close();
                }
                catch (Exception)
                {
                    MessageBox.Show("Error: Al verificar la existencia de la baja.", "Error");
                    cnx.Dispose();
                    return;
                }

                if (existeBaja != 0)
                {
                    MessageBox.Show(
                        string.Format("El trabajador ya cuenta con una baja en el periodo del: \r\n \r\n {0} al {1}",
                        periodoInicio.Date.ToShortDateString(), periodoFin.Date.ToShortDateString()),
                        "Información");
                    return;
                }

                bool obraCivil = false;
                try
                {
                    cnx.Open();
                    obraCivil = bool.Parse(eh.esObraCivil(GLOBALES.IDEMPRESA, _idempleado).ToString());
                    cnx.Close();
                }
                catch (Exception error)
                {
                    MessageBox.Show("Error: Al obtener dato de obra civil. \r\n \r\n" + error.Message, "Error");
                    return;
                }

                if (obraCivil)
                {
                    nh = new CalculoNomina.Core.NominaHelper();
                    nh.Command = cmd;
                    List<CalculoNomina.Core.tmpPagoNomina> lstPreNominaGuardada = new List<CalculoNomina.Core.tmpPagoNomina>();
                    List<CalculoNomina.Core.tmpPagoNomina> lstUltimaNomina = new List<CalculoNomina.Core.tmpPagoNomina>();
                    try
                    {
                        cnx.Open();
                        lstUltimaNomina = nh.obtenerUltimaNominaTrabajador(GLOBALES.IDEMPRESA, _idempleado, periodo);
                        lstPreNominaGuardada = nh.fechaPreNominaObraCivil(GLOBALES.IDEMPRESA, _idempleado, periodoInicio, periodoFin);
                        cnx.Close();
                    }
                    catch (Exception error)
                    {
                        MessageBox.Show("Error: Al obtener las fechas de pago. \r\n \r\n" + error.Message, "Error");
                        return;
                    }

                    if (lstUltimaNomina.Count != 0)
                    {
                        if (dtpFechaBaja.Value.Date >= lstUltimaNomina[0].fechainicio || dtpFechaBaja.Value.Date <= lstUltimaNomina[0].fechafin)
                        {
                            MessageBox.Show("La baja corresponde a un periodo cerrado.", "Información");
                            return;
                        }
                    }

                    if (lstPreNominaGuardada.Count != 0)
                    {
                        if (dtpFechaBaja.Value.Date <= lstPreNominaGuardada[0].fechafin)
                        {
                            try
                            {
                                Bajas.Core.Bajas bajaTrabajador = new Bajas.Core.Bajas();
                                bajaTrabajador.idtrabajador = _idempleado;
                                cnx.Open();
                                bh.bajaEmpleado(bajaTrabajador);
                                nh.eliminaPreNomina(_idempleado, periodo);
                                cnx.Close();
                            }
                            catch (Exception error)
                            {
                                MessageBox.Show("Error: Al dar baja del empleado. \r\n \r\n" + error.Message, "Error");
                                return;
                            }
                        }
                    }
                }
                else {
                    nh = new CalculoNomina.Core.NominaHelper();
                    nh.Command = cmd;
                    List<CalculoNomina.Core.tmpPagoNomina> lstNomina = new List<CalculoNomina.Core.tmpPagoNomina>();
                    try
                    {
                        cnx.Open();
                        lstNomina = nh.obtenerUltimaNominaTrabajador(GLOBALES.IDEMPRESA, _idempleado, periodo);
                        cnx.Close();
                    }
                    catch (Exception error)
                    {
                        MessageBox.Show("Error: Al obtener las fechas de pago. \r\n \r\n" + error.Message, "Error");
                        return;
                    }

                    if (lstNomina.Count != 0)
                    {
                        if (dtpFechaBaja.Value.Date <= lstNomina[0].fechainicio || dtpFechaBaja.Value.Date <= lstNomina[0].fechafin)
                        {
                            try
                            {
                                Bajas.Core.Bajas bajaTrabajador = new Bajas.Core.Bajas();
                                bajaTrabajador.idtrabajador = _idempleado;
                                cnx.Open();
                                bh.bajaEmpleado(bajaTrabajador);
                                nh.eliminaPreNomina(_idempleado, periodo);
                                cnx.Close();
                                baja.fecha = lstNomina[0].fechafin;
                                baja.diasproporcionales = 1;
                                MessageBox.Show("La baja corresponde a un periodo cerrado. \r\n\r\n Se dará con la fecha de termino del periodo cerrado: " +
                                    lstNomina[0].fechafin.ToShortDateString(), "Información");
                            }
                            catch (Exception error)
                            {
                                MessageBox.Show("Error: Al dar baja del empleado. \r\n \r\n" + error.Message, "Error");
                                return;
                            }
                        }
                    }
                }

                try
                {
                    cnx.Open();
                    h.valor = (decimal)eh.obtenerSalarioDiarioIntegrado(emp);
                    hp.insertarHistorial(h);
                    //ACTUALIZA TABLA trabajadoresestatus
                    eh.bajaEmpleado(ee);

                    baja.registropatronal = (string)ep.obtenerRegistroPatronal(empresa);
                    baja.nss = (string)eh.obtenerNss(emp);
                    bh.insertaBaja(baja);

                    //if (ausentismo)
                    //{
                    //    a.registropatronal = (string)ep.obtenerRegistroPatronal(empresa);
                    //    a.nss = (string)eh.obtenerNss(emp);
                    //    ah.insertaAusentismo(a);
                    //}

                    cnx.Close();
                    cnx.Dispose();

                    if(OnBajaEmpleado !=  null)
                        OnBajaEmpleado(GLOBALES.ACTIVO);
                }
                catch (Exception error)
                {
                    MessageBox.Show("Error: \r\n \r\n " + error.Message, "Error");
                }

                MessageBox.Show("Baja exitosa.", "Información");
                btnAceptar.Enabled = false;
                this.Dispose();
            }
        }
        private void workVacaciones_DoWork(object sender, DoWorkEventArgs e)
        {
            int idEmpleado = 0;
            cnx = new SqlConnection(cdn);
            cmd = new SqlCommand();
            cmd.Connection = cnx;

            List<Vacaciones.Core.VacacionesPrima> lstMovimientos = new List<Vacaciones.Core.VacacionesPrima>();

            vh = new Vacaciones.Core.VacacionesHelper();
            vh.Command = cmd;

            emph = new Empleados.Core.EmpleadosHelper();
            emph.Command = cmd;

            ph = new Periodos.Core.PeriodosHelper();
            ph.Command = cmd;

            foreach (DataGridViewRow fila in dgvCargaVacaciones.Rows)
            {
                try
                {
                    cnx.Open();
                    idEmpleado = (int)emph.obtenerIdTrabajador(fila.Cells["noempleado"].Value.ToString(), idEmpresa);
                    cnx.Close();
                }
                catch (Exception error)
                {
                    MessageBox.Show("Error: Obtener ID del concepto. \r\n \r\n" + error.Message, "Error");
                    cnx.Dispose();
                    this.Dispose();
                }

                Empleados.Core.Empleados empleado = new Empleados.Core.Empleados();
                empleado.idtrabajador = idEmpleado;

                List<Empleados.Core.Empleados> lstEmpleado = new List<Empleados.Core.Empleados>();

                try
                {
                    cnx.Open();
                    lstEmpleado = emph.obtenerEmpleado(empleado);
                    cnx.Close();
                }
                catch
                {
                    MessageBox.Show("Error: Al obtener la antigüedad del empleado.", "Error");
                    cnx.Dispose();
                    this.Dispose();
                }

                Vacaciones.Core.DiasDerecho dd = new Vacaciones.Core.DiasDerecho();
                dd.anio = lstEmpleado[0].antiguedadmod;

                int dias = 0;
                try
                {
                    cnx.Open();
                    dias = (int)vh.diasDerecho(dd);
                    cnx.Close();
                }
                catch
                {
                    MessageBox.Show("Error: Al obtener los dias por derecho del empleado.", "Error");
                    cnx.Dispose();
                    return;
                }

                Faltas.Core.FaltasHelper fh = new Faltas.Core.FaltasHelper();
                fh.Command = cmd;

                Faltas.Core.Faltas falta = new Faltas.Core.Faltas();
                falta.idempresa = GLOBALES.IDEMPRESA;
                falta.idtrabajador = idEmpleado;
                falta.fechainicio = DateTime.Parse(dgvCargaVacaciones.Rows[0].Cells["inicio"].Value.ToString());
                falta.fechafin = DateTime.Parse(dgvCargaVacaciones.Rows[0].Cells["fin"].Value.ToString());

                int existeFaltas = 0;
                try
                {
                    cnx.Open();
                    existeFaltas = (int)fh.existeFalta(falta);
                    cnx.Close();
                }
                catch (Exception error)
                {
                    MessageBox.Show("Error: Al obtener las faltas del trabajador. \r\n" + error.Message, "Error");
                    cnx.Dispose();
                    return;
                }

                int idperiodo = 0;
                try
                {
                    cnx.Open();
                    idperiodo = (int)emph.obtenerIdPeriodo(idEmpleado);
                    cnx.Close();
                }
                catch (Exception error)
                {
                    MessageBox.Show("Error: Al obtener el id del periodo. \r\n" + error.Message, "Error");
                    cnx.Dispose();
                    return;
                }
                Periodos.Core.Periodos p = new Periodos.Core.Periodos();
                p.idperiodo = idperiodo;

                int diasPeriodo = 0;
                try
                {
                    cnx.Open();
                    diasPeriodo = (int)ph.DiasDePago(p);
                    cnx.Close();
                }
                catch (Exception error)
                {
                    MessageBox.Show("Error: Al obtener los dias del periodo. \r\n" + error.Message, "Error");
                    cnx.Dispose();
                    return;
                }

                int diasPagoReales = int.Parse(fila.Cells["diaspago"].Value.ToString()) + existeFaltas;
                if (diasPagoReales >= diasPeriodo)
                {
                    diasPagoReales = diasPeriodo - existeFaltas;
                    MessageBox.Show("Existen faltas del trabajador, se ajustarán las vacaciones.", "Información");
                }
                else
                {
                    diasPagoReales = int.Parse(fila.Cells["diaspago"].Value.ToString());
                }

                Vacaciones.Core.VacacionesPrima vp = new Vacaciones.Core.VacacionesPrima();
                vp.idtrabajador = idEmpleado;
                vp.idempresa = GLOBALES.IDEMPRESA;
                vp.periodoinicio = DateTime.Parse(dgvCargaVacaciones.Rows[0].Cells["inicio"].Value.ToString());
                vp.periodofin = DateTime.Parse(dgvCargaVacaciones.Rows[0].Cells["fin"].Value.ToString());
                vp.diasderecho = dias;
                vp.fechapago = DateTime.Now.Date;
                vp.vacacionesprima = fila.Cells["concepto"].Value.ToString() == "Prima Vacacional" ? "P" : "V";

                if (fila.Cells["concepto"].Value.ToString() == "Prima Vacacional")
                {
                    vp.diaspago = diasPagoReales;
                    vp.diaspendientes = dias - diasPagoReales;
                    vp.fechainicio = DateTime.Now.Date;
                    vp.fechafin = DateTime.Now.Date;
                }
                else
                {
                    vp.diaspago = diasPagoReales;
                    vp.diaspendientes = dias - diasPagoReales;
                    vp.fechainicio = DateTime.Parse(fila.Cells["fechaaplicacion"].Value.ToString());
                    vp.fechafin = DateTime.Parse(fila.Cells["fechaaplicacion"].Value.ToString()).AddDays(diasPagoReales - 1);
                }

                lstMovimientos.Add(vp);
            }

            bulk = new SqlBulkCopy(cnx);
            vh.bulkCommand = bulk;

            DataTable dt = new DataTable();
            DataRow dtFila;
            dt.Columns.Add("id", typeof(Int32));
            dt.Columns.Add("idtrabajador", typeof(Int32));
            dt.Columns.Add("idempresa", typeof(Int32));
            dt.Columns.Add("periodoinicio", typeof(DateTime));
            dt.Columns.Add("periodofin", typeof(DateTime));
            dt.Columns.Add("diasderecho", typeof(Int32));
            dt.Columns.Add("diaspago", typeof(Int32));
            dt.Columns.Add("diaspendientes", typeof(Int32));
            dt.Columns.Add("fechapago", typeof(DateTime));
            dt.Columns.Add("vacacionesprima", typeof(String));
            dt.Columns.Add("fechainicio", typeof(DateTime));
            dt.Columns.Add("fechafin", typeof(DateTime));

            int index = 1;
            for (int i = 0; i < lstMovimientos.Count; i++)
            {
                dtFila = dt.NewRow();
                dtFila["id"] = i + 1;
                dtFila["idtrabajador"] = lstMovimientos[i].idtrabajador;
                dtFila["idempresa"] = lstMovimientos[i].idempresa;
                dtFila["periodoinicio"] = lstMovimientos[i].periodoinicio;
                dtFila["periodofin"] = lstMovimientos[i].periodofin;
                dtFila["diasderecho"] = lstMovimientos[i].diasderecho;
                dtFila["diaspago"] = lstMovimientos[i].diaspago;
                dtFila["diaspendientes"] = lstMovimientos[i].diaspendientes;
                dtFila["fechapago"] = lstMovimientos[i].fechapago;
                dtFila["vacacionesprima"] = lstMovimientos[i].vacacionesprima;
                dtFila["fechainicio"] = lstMovimientos[i].fechainicio;
                dtFila["fechafin"] = lstMovimientos[i].fechafin;
                dt.Rows.Add(dtFila);
                index++;
            }

            try
            {
                cnx.Open();
                vh.bulkVacaciones(dt, "tmpVacacionesPrima");
                vh.stpVacaciones();
                cnx.Close();
                cnx.Dispose();
            }
            catch (Exception error)
            {
                MessageBox.Show("Error (DataTable): \r\n \r\n" + error.Message, "Error");
            }
        }
Example #6
0
        public static List<CalculoNomina.Core.tmpPagoNomina> PERCEPCIONES(List<CalculoNomina.Core.Nomina> lstConceptosPercepciones,
            DateTime inicio, DateTime fin, int tipoNomina)
        {
            #region VARIABLES GLOBALES
            string cdn = ConfigurationManager.ConnectionStrings["cdnNomina"].ConnectionString;
            SqlConnection cnx = new SqlConnection(cdn);
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = cnx;
            #endregion

            #region LISTA PARA DATOS DEL TRABAJADOR
            List<CalculoNomina.Core.tmpPagoNomina> lstValoresNomina;
            List<CalculoNomina.Core.tmpPagoNomina> lstValoresDefinitivos;
            #endregion

            #region CALCULO
            lstValoresNomina = new List<CalculoNomina.Core.tmpPagoNomina>();
            for (int i = 0; i < lstConceptosPercepciones.Count; i++)
            {
                CalculoNomina.Core.tmpPagoNomina vn = new CalculoNomina.Core.tmpPagoNomina();
                vn.idtrabajador = lstConceptosPercepciones[i].idtrabajador;
                vn.idempresa = GLOBALES.IDEMPRESA;
                vn.idconcepto = lstConceptosPercepciones[i].id;
                vn.noconcepto = lstConceptosPercepciones[i].noconcepto;
                vn.tipoconcepto = lstConceptosPercepciones[i].tipoconcepto;
                vn.fechainicio = inicio.Date;
                vn.fechafin = fin.Date;
                vn.guardada = false;
                vn.tiponomina = tipoNomina;
                vn.modificado = false;

                CalculoFormula formula = new CalculoFormula(lstConceptosPercepciones[i].idtrabajador, inicio.Date, fin.Date, lstConceptosPercepciones[i].formula);
                vn.cantidad = decimal.Parse(formula.calcularFormula().ToString());

                CalculoFormula formulaExcento = new CalculoFormula(lstConceptosPercepciones[i].idtrabajador, inicio.Date, fin.Date, lstConceptosPercepciones[i].formulaexento);
                vn.exento = decimal.Parse(formulaExcento.calcularFormula().ToString());

                Empleados.Core.EmpleadosHelper eh = new Empleados.Core.EmpleadosHelper();
                eh.Command = cmd;

                cnx.Open();
                int idperiodo = (int)eh.obtenerIdPeriodo(lstConceptosPercepciones[i].idtrabajador);
                cnx.Close();

                Periodos.Core.PeriodosHelper ph = new Periodos.Core.PeriodosHelper();
                ph.Command = cmd;

                Periodos.Core.Periodos p = new Periodos.Core.Periodos();
                p.idperiodo = idperiodo;

                cnx.Open();
                int dias = (int)ph.DiasDePago(p);
                cnx.Close();

                Conceptos.Core.ConceptosHelper ch = new Conceptos.Core.ConceptosHelper();
                ch.Command = cmd;

                Conceptos.Core.Conceptos c = new Conceptos.Core.Conceptos();
                c.idempresa = GLOBALES.IDEMPRESA;
                c.noconcepto = lstConceptosPercepciones[i].noconcepto;
                c.tipoconcepto = lstConceptosPercepciones[i].tipoconcepto;
                c.periodo = dias;

                cnx.Open();
                bool grava = (bool)ch.gravaConcepto(c);
                bool exenta = (bool)ch.exentaConcepto(c);
                cnx.Close();

                if (grava && !exenta)
                    vn.gravado = vn.cantidad;

                if (grava && exenta)
                {
                    if (vn.cantidad <= vn.exento)
                    {
                        vn.exento = vn.cantidad;
                        vn.gravado = 0;
                    }
                    else
                    {
                        vn.gravado = vn.cantidad - vn.exento;
                    }
                }

                if (!grava && exenta)
                {
                    vn.gravado = 0;
                    vn.exento = vn.cantidad;
                }

                #region SWITCH SUELDO CERO
                switch (lstConceptosPercepciones[i].noconcepto)
                {
                    case 1:
                        if (vn.cantidad == 0)
                        {
                            vn.gravado = 0;
                            lstValoresNomina.Add(vn);

                            Vacaciones.Core.VacacionesHelper vh = new Vacaciones.Core.VacacionesHelper();
                            vh.Command = cmd;
                            Vacaciones.Core.VacacionesPrima vp = new Vacaciones.Core.VacacionesPrima();
                            vp.idtrabajador = lstConceptosPercepciones[i].idtrabajador;
                            vp.idempresa = GLOBALES.IDEMPRESA;
                            vp.periodofin = fin.Date;
                            vp.periodoinicio = inicio.Date;
                            vp.vacacionesprima = "V";

                            cnx.Open();
                            int diasVacaciones = (int)vh.pagoVacacionesPrima(vp);
                            cnx.Close();

                            if (diasVacaciones == 0)
                            {
                                i++;
                                int contadorDatosNomina = i;
                                for (int j = i; j < lstConceptosPercepciones.Count; j++)
                                {
                                    contadorDatosNomina = j;
                                    if (lstConceptosPercepciones[j].idtrabajador == vn.idtrabajador)
                                    {
                                        CalculoNomina.Core.tmpPagoNomina vnCero = new CalculoNomina.Core.tmpPagoNomina();
                                        vnCero.idtrabajador = lstConceptosPercepciones[j].idtrabajador;
                                        vnCero.idempresa = GLOBALES.IDEMPRESA;
                                        vnCero.idconcepto = lstConceptosPercepciones[j].id;
                                        vnCero.noconcepto = lstConceptosPercepciones[j].noconcepto;
                                        vnCero.tipoconcepto = lstConceptosPercepciones[j].tipoconcepto;
                                        vnCero.fechainicio = inicio.Date;
                                        vnCero.fechafin = fin.Date;
                                        vnCero.guardada = false;
                                        vnCero.tiponomina = tipoNomina;
                                        vnCero.modificado = false;
                                        vnCero.cantidad = 0;
                                        vnCero.exento = 0;
                                        vnCero.gravado = 0;
                                        lstValoresNomina.Add(vnCero);
                                    }
                                    else
                                    {
                                        --contadorDatosNomina;
                                        break;
                                    }
                                }
                                i = contadorDatosNomina;
                            }
                        }
                        else
                            lstValoresNomina.Add(vn);
                        break;
                    default:
                        lstValoresNomina.Add(vn);
                        break;
                }
                #endregion
            }
            #endregion

            #region EXISTENCIA DEL CONCEPTO EN TABLA
            int existe = 0;
            CalculoNomina.Core.NominaHelper nh = new CalculoNomina.Core.NominaHelper();
            nh.Command = cmd;
            lstValoresDefinitivos = new List<CalculoNomina.Core.tmpPagoNomina>();
            for (int i = 0; i < lstValoresNomina.Count; i++)
            {
                CalculoNomina.Core.tmpPagoNomina vn = new CalculoNomina.Core.tmpPagoNomina();
                vn.idtrabajador = lstValoresNomina[i].idtrabajador;
                vn.idempresa = GLOBALES.IDEMPRESA;
                vn.idconcepto = lstValoresNomina[i].idconcepto;
                vn.noconcepto = lstValoresNomina[i].noconcepto;
                vn.tipoconcepto = lstValoresNomina[i].tipoconcepto;
                vn.fechainicio = lstValoresNomina[i].fechainicio;
                vn.fechafin = lstValoresNomina[i].fechafin;
                vn.guardada = lstValoresNomina[i].guardada;
                vn.tiponomina = lstValoresNomina[i].tiponomina;
                vn.modificado = lstValoresNomina[i].modificado;
                vn.exento = lstValoresNomina[i].exento;
                vn.gravado = lstValoresNomina[i].gravado;
                vn.cantidad = lstValoresNomina[i].cantidad;

                cnx.Open();
                existe = (int)nh.existeConcepto(vn);
                cnx.Close();

                if (existe == 0)
                {
                    lstValoresDefinitivos.Add(vn);
                }
                else
                {
                    cnx.Open();
                    nh.actualizaConcepto(vn);
                    cnx.Close();
                }
            }
            #endregion

            return lstValoresDefinitivos;
        }