Пример #1
0
 private void ValidaPass()
 {
     try
     {
         string sPass = ManejoBDD.Cadena("Select password from usuarios where Nombre = '" + txtNombre.Text + "'").Trim();
         if (sPass != "" && ManejoBDD.DeCodifico(sPass) == txtpass.Text)
         {
             //ManejoBDD.sValorB1 = txtNombre.Text;
             dIdUsuario = ManejoBDD.NumeroReal("Select IdUsuario from usuarios where Nombre = '" + txtNombre.Text + "'");
             this.Close();
         }
         else
         {
             MessageBox.Show("El Usuario o la Contraseña es incorrecta, intente de nuevo", "Validación de usuarios");
             txtpass.Focus();
         }
     }
     catch
     {
     }
 }
        private void txtCodigo_KeyUp(object sender, KeyEventArgs e)
        {
            try
            {
                if (e.KeyCode == Keys.Enter)
                {
                    this.reloj.Enabled      = false;
                    this.txtCodigo.ReadOnly = true;
                    try
                    {
                        if (ManejoBDD.TieneFilas("SELECT NOMBRE, IDTURNO FROM EMPLEADOS WHERE CODIGO = '" + this.txtCodigo.Text + "'"))
                        {
                            this.lNombre.Text = ManejoBDD.Cadena("SELECT NOMBRE FROM EMPLEADOS WHERE CODIGO = '" + this.txtCodigo.Text + "'");
                            string   str = ManejoBDD.Cadena("SELECT IDEMPLEADO FROM EMPLEADOS WHERE CODIGO = '" + this.txtCodigo.Text + "'");
                            DateTime now = DateTime.Now;
                            this.lMarcaje.Text = now.ToLongTimeString();
                            double num = ManejoBDD.NumeroReal("SELECT IDPERIODO FROM PERIODOS WHERE FECHAINICIO <= '" + FormateaFecha.aFechaUniversal(now) + "' AND FECHAFIN >= '" + FormateaFecha.aFechaUniversal(now) + "'");
                            ManejoBDD.AccionQuery("INSERT INTO ASISTENCIAS (IDEMPLEADO, IDPERIODO, FECHAHORA) VALUES (" + str + ", " + num.ToString() + ", '" + FormateaFecha.aFechaHoraUniversal(now) + "')");

                            //> DESPLIEGA TIEMPO ACUMULADO 150209 AMILCAR
                            this.Cursor = Cursors.WaitCursor;
                            //SqlConnection cnn;
                            //SqlCommand cmd;
                            //SqlDataReader lee;

                            SqlConnection cn1;
                            SqlCommand    cm1;
                            SqlDataReader le1;

                            string StrSQL = "";


                            //ManejoBDD.AccionQuery("delete from reportehoras"); NO ES NECESARIO PORQUE NO SE GENERA EL REPORTE

                            try
                            {
                                //cnn = new SqlConnection("Server=" + ManejoBDD.SQLInstancia + "; database=" + ManejoBDD.sBaseERP + "; user="******"; pwd=" + ManejoBDD.SQLPassword);
                                //cnn.Open();

                                cn1 = new SqlConnection("Server=" + ManejoBDD.SQLInstancia + "; database=" + ManejoBDD.sBaseERP + "; user="******"; pwd=" + ManejoBDD.SQLPassword);
                                cn1.Open();

                                try
                                {
                                    // VARIABLES PARA DESPLEGAR EL TIEMPO TRABAJADO
                                    //barra.Maximum = Convert.ToInt16(ExtraeDato.NumeroReal(StrSQL));
                                    //barra.Value = 0;


                                    DateTime Inicio = DateTime.Now;
                                    DateTime Final  = DateTime.Now;

                                    DateTime dtTemp = Inicio;
                                    DateTime dtTem2;
                                    DateTime dtTem3;
                                    DateTime dtEntrada  = DateTime.Now;
                                    DateTime dtEntradaC = DateTime.Now;
                                    DateTime dtSalida   = DateTime.Now;
                                    DateTime dtSalidaC  = DateTime.Now;

                                    string sIdEmpleado = "0";
                                    string sIdTurno    = "0";

                                    ArrayList Horas;
                                    ArrayList Corte;
                                    TimeSpan  Diferencia;
                                    decimal   HorasTurno = 0;
                                    decimal   HorasDia   = 0;
                                    decimal   HorasT     = 0; //Total de horas
                                    decimal   HorasE     = 0; //Horas Extras
                                    int       HoraIndex  = 0;

                                    decimal HorasAcum = 0;  //Total de horas por empleado en el período
                                    decimal Retraso   = 0;
                                    decimal Faltas    = 0;

                                    decimal HorasDesc = 0;
                                    bool    bLun;
                                    bool    bMar;
                                    bool    bMie;
                                    bool    bJue;
                                    bool    bVie;
                                    bool    bSab;
                                    bool    bDom;

                                    sIdEmpleado = str;
                                    Inicio      = ManejoBDD.Fecha("SELECT FECHAINICIO FROM PERIODOS WHERE IDPERIODO = '" + num + "'");
                                    //150417RAAN No es necesario validar hasta el fin del período Final = ManejoBDD.Fecha("SELECT FECHAFIN FROM PERIODOS WHERE IDPERIODO = '" + num + "'");
                                    dtTemp     = Inicio;
                                    sIdTurno   = ManejoBDD.Cadena("SELECT IDTURNO FROM EMPLEADOS WHERE CODIGO = '" + this.txtCodigo.Text + "'");
                                    HorasTurno = Convert.ToDecimal(ManejoBDD.NumeroReal("select horadia from turnos where idturno = " + sIdTurno));
                                    HorasDesc  = Convert.ToInt32(ManejoBDD.NumeroReal("select MinutosDesc from TURNOS where idturno = " + sIdTurno)) / (Decimal)60;
                                    bLun       = ManejoBDD.Entero16("select LUNES from TURNOS where idturno = " + sIdTurno) == 1;
                                    bMar       = ManejoBDD.Entero16("select MARTES from TURNOS where idturno = " + sIdTurno) == 1;
                                    bMie       = ManejoBDD.Entero16("select MIERCOLES from TURNOS where idturno = " + sIdTurno) == 1;
                                    bJue       = ManejoBDD.Entero16("select JUEVES from TURNOS where idturno = " + sIdTurno) == 1;
                                    bVie       = ManejoBDD.Entero16("select VIERNES from TURNOS where idturno = " + sIdTurno) == 1;
                                    bSab       = ManejoBDD.Entero16("select SABADO from TURNOS where idturno = " + sIdTurno) == 1;
                                    bDom       = ManejoBDD.Entero16("select DOMINGO from TURNOS where idturno = " + sIdTurno) == 1;

                                    // CARGA EN Corte LAS LOS HORARIOS DE ENTRADA, SALIDA, ETC PARA EL TURNO
                                    Corte  = new ArrayList();
                                    StrSQL = "SELECT VALORHORA FROM PARAMETROSASIS WHERE IDTURNO = " + sIdTurno + "ORDER BY TIPO";
                                    cm1    = new SqlCommand(StrSQL, cn1);
                                    le1    = cm1.ExecuteReader();
                                    while (le1.Read())
                                    {
                                        Corte.Add(le1.GetValue(0));
                                    }
                                    le1.Close();

                                    //CARGA HORAS TRABAJADAS POR FECHA
                                    while (dtTemp <= Final)
                                    {
                                        Horas     = new ArrayList();
                                        HoraIndex = 0;
                                        //ASISTENCIAS POR DIA
                                        //CARGA LAS HORAS DE REGISTRO EL EMPLEADO PARA LA FECHA CORRESPONDIENTE
                                        StrSQL = "SELECT FECHAHORA FROM ASISTENCIAS WHERE FECHAHORA >= '" + Program.FormateoFechaHora(new DateTime(dtTemp.Year, dtTemp.Month, dtTemp.Day, 0, 0, 0)) + "' AND FECHAHORA <= '" + Program.FormateoFechaHora(new DateTime(dtTemp.Year, dtTemp.Month, dtTemp.Day, 23, 59, 59)) + "' AND IDEMPLEADO = " + sIdEmpleado + " ORDER BY FECHAHORA";
                                        cm1    = new SqlCommand(StrSQL, cn1);
                                        le1    = cm1.ExecuteReader();
                                        while (le1.Read())
                                        {
                                            #region Avanzo Barra
                                            //if (barra.Value < barra.Maximum)
                                            //    barra.Value = barra.Value + 1;
                                            //else
                                            //    barra.Value = 0;
                                            //barra.Refresh();
                                            //barra.Refresh();
                                            //barra.Refresh();
                                            //barra.Refresh();
                                            //barra.Refresh();
                                            #endregion
                                            //APLICA CRITERIOS DE HORARIO SEGUN EL TURNO Y CARGA LOS REGISTROS EN EL ARREGLO Horas
                                            switch (HoraIndex)
                                            {
                                            case 0:
                                                Horas.Add(le1.GetValue(0));
                                                HoraIndex = HoraIndex + 1;
                                                break;

                                            case 1:
                                                dtTem2 = Convert.ToDateTime(Corte[0]);
                                                dtTem3 = Convert.ToDateTime(le1.GetValue(0));
                                                dtTem2 = new DateTime(dtTem3.Year, dtTem3.Month, dtTem3.Day, dtTem2.Hour, dtTem2.Minute, dtTem2.Second);
                                                dtTem2 = dtTem2.AddMinutes(5);
                                                if (Convert.ToDateTime(le1.GetValue(0)) > dtTem2)
                                                {
                                                    Horas.Add(le1.GetValue(0));
                                                    HoraIndex = HoraIndex + 1;
                                                }
                                                break;

                                            case 2:
                                                if (Corte.Count < 4)
                                                {
                                                    Horas[1] = le1.GetValue(0);
                                                }
                                                else
                                                {
                                                    dtTem2 = Convert.ToDateTime(Corte[1]);
                                                    dtTem3 = Convert.ToDateTime(le1.GetValue(0));
                                                    dtTem2 = new DateTime(dtTem3.Year, dtTem3.Month, dtTem3.Day, dtTem2.Hour, dtTem2.Minute, dtTem2.Second);
                                                    dtTem2 = dtTem2.AddMinutes(5);
                                                    if (Convert.ToDateTime(le1.GetValue(0)) > dtTem2)
                                                    {
                                                        Horas.Add(le1.GetValue(0));
                                                        HoraIndex = HoraIndex + 1;
                                                    }
                                                }
                                                break;

                                            case 3:
                                                if (Corte.Count < 4)
                                                {
                                                    Horas[1] = le1.GetValue(0);
                                                }
                                                else
                                                {
                                                    dtTem2 = Convert.ToDateTime(Corte[2]);
                                                    dtTem3 = Convert.ToDateTime(le1.GetValue(0));
                                                    dtTem2 = new DateTime(dtTem3.Year, dtTem3.Month, dtTem3.Day, dtTem2.Hour, dtTem2.Minute, dtTem2.Second);
                                                    dtTem2 = dtTem2.AddMinutes(5);
                                                    if (Convert.ToDateTime(le1.GetValue(0)) > dtTem2)
                                                    {
                                                        Horas.Add(le1.GetValue(0));
                                                        HoraIndex = HoraIndex + 1;
                                                    }
                                                }
                                                break;

                                            default:
                                                Horas[Horas.Count - 1] = le1.GetValue(0);
                                                break;
                                            }
                                        }
                                        le1.Close();
                                        if (Horas.Count > 0)
                                        {
                                            switch (Horas.Count)
                                            {
                                            // Se calcula el tiempo trabajado en Diferencia, restando a la hora de salida la hora de entrada
                                            // Se combierte la Diferencia en Decimal asignandola a HorasT
                                            // Se calculan las horas trabajadas con el turno correspondiente (HorasTurno) y las horas extras (arriba de media hora)

                                            case 1:         // Un sólo registro, no hay suficiente información para determinar el tiempo trabajado
                                                HorasT = 0;
                                                HorasE = 0;
                                                //ManejoBDD.AccionQuery("INSERT INTO REPORTEHORAS (IDEMPLEADO, FECHA, ENTRADA, HORAS, EXTRAS, TOTAL,ADJUNTO) VALUES (" + sIdEmpleado + ", '" + Program.FormateoFecha(dtTemp) + "', '" + Program.FormateoFechaHora(Convert.ToDateTime(Horas[0])) + "', 0, 0, 0,0)");
                                                HorasAcum = HorasAcum + 0;
                                                break;

                                            case 2:         // 2 regisros. Turno corrido
                                                Diferencia = Convert.ToDateTime(Horas[1]) - Convert.ToDateTime(Horas[0]);
                                                HorasT     = Convert.ToDecimal(Diferencia.Hours) + (Convert.ToDecimal(Diferencia.Minutes) / Convert.ToDecimal(60));
                                                if (HorasT > HorasTurno)
                                                {
                                                    HorasDia = HorasTurno;
                                                }
                                                else
                                                {
                                                    HorasDia = HorasT;
                                                }

                                                if (HorasT > HorasDia & HorasT - HorasDia > (decimal)0.5)
                                                {
                                                    HorasE = HorasT - HorasDia;
                                                }
                                                else
                                                {
                                                    HorasE = 0;
                                                }
                                                //ManejoBDD.AccionQuery("INSERT INTO REPORTEHORAS (IDEMPLEADO, FECHA, ENTRADA, SALIDA, HORAS, EXTRAS, TOTAL,ADJUNTO) VALUES (" + sIdEmpleado + ", '" + Program.FormateoFechaHora(dtTemp) + "', '" + Program.FormateoFechaHora(Convert.ToDateTime(Horas[0])) + "', '" + Program.FormateoFechaHora(Convert.ToDateTime(Horas[1])) + "', " + HorasDia.ToString() + ", " + HorasE.ToString() + ", " + HorasT.ToString() + ",0)");
                                                HorasAcum = HorasAcum + HorasT;
                                                break;

                                            case 3:          // 3 regisros. Turno corrido, se descarta el tercer registro
                                                Diferencia = Convert.ToDateTime(Horas[1]) - Convert.ToDateTime(Horas[0]);
                                                HorasT     = Convert.ToDecimal(Diferencia.Hours) + (Convert.ToDecimal(Diferencia.Minutes) / Convert.ToDecimal(60));
                                                if (HorasT > HorasTurno)
                                                {
                                                    HorasDia = HorasTurno;
                                                }
                                                else
                                                {
                                                    HorasDia = HorasT;
                                                }

                                                if (HorasT > HorasDia & HorasT - HorasDia > (decimal)0.5)
                                                {
                                                    HorasE = HorasT - HorasDia;
                                                }
                                                else
                                                {
                                                    HorasE = 0;
                                                }
                                                //ManejoBDD.AccionQuery("INSERT INTO REPORTEHORAS (IDEMPLEADO, FECHA, ENTRADA, SALIDAC, ENTRADAC, HORAS, EXTRAS, TOTAL,ADJUNTO) VALUES (" + sIdEmpleado + ", '" + Program.FormateoFechaHora(dtTemp) + "', '" + Program.FormateoFechaHora(Convert.ToDateTime(Horas[0])) + "', '" + Program.FormateoFechaHora(Convert.ToDateTime(Horas[1])) + "',  '" + Program.FormateoFechaHora(Convert.ToDateTime(Horas[2])) + "', " + HorasDia.ToString() + ", " + HorasE.ToString() + ", " + HorasT.ToString() + ",0)");
                                                HorasAcum = HorasAcum + HorasT;
                                                break;

                                            case 4:          // 4 regisros. Turno partido, se resta el tiempo de comida
                                                Diferencia = Convert.ToDateTime(Horas[1]) - Convert.ToDateTime(Horas[0]);
                                                HorasT     = Convert.ToDecimal(Diferencia.Hours) + (Convert.ToDecimal(Diferencia.Minutes) / Convert.ToDecimal(60));
                                                Diferencia = Convert.ToDateTime(Horas[3]) - Convert.ToDateTime(Horas[2]);
                                                HorasT     = HorasT + (Convert.ToDecimal(Diferencia.Hours) + (Convert.ToDecimal(Diferencia.Minutes) / Convert.ToDecimal(60)));
                                                if (HorasT > HorasTurno)
                                                {
                                                    HorasDia = HorasTurno;
                                                }
                                                else
                                                {
                                                    HorasDia = HorasT;
                                                }

                                                if (HorasT > HorasDia & HorasT - HorasDia > (decimal)0.5)
                                                {
                                                    HorasE = HorasT - HorasDia;
                                                }
                                                else
                                                {
                                                    HorasE = 0;
                                                }
                                                //ManejoBDD.AccionQuery("INSERT INTO REPORTEHORAS (IDEMPLEADO, FECHA, ENTRADA, SALIDAC, ENTRADAC, SALIDA, HORAS, EXTRAS, TOTAL,ADJUNTO) VALUES (" + sIdEmpleado + ", '" + Program.FormateoFechaHora(dtTemp) + "', '" + Program.FormateoFechaHora(Convert.ToDateTime(Horas[0])) + "', '" + Program.FormateoFechaHora(Convert.ToDateTime(Horas[1])) + "', '" + Program.FormateoFechaHora(Convert.ToDateTime(Horas[2])) + "', '" + Program.FormateoFechaHora(Convert.ToDateTime(Horas[3])) + "', " + HorasDia.ToString() + ", " + HorasE.ToString() + ", " + HorasT.ToString() + ",0)");
                                                HorasAcum = HorasAcum + HorasT;
                                                break;
                                            }
                                            //> DESPLIEGA TIEMPO ACUMULADO DE RETRASO Y FALTAS 150408 AMILCAR
                                            //150417RAAN if (HorasAcum > (decimal)0.5) HorasAcum = HorasAcum - (decimal)0.5;     // DESCUENTA MEDIA HORA DE COMIDA POR DIA
                                            if (HorasAcum > HorasDesc)
                                            {
                                                HorasAcum = HorasAcum - HorasDesc;                           //DESCUENTA TIEMPO DE DESCANSO POR DIA
                                            }
                                            // CALCULA MINUTOS DE RETRASO
                                            dtTem2 = Convert.ToDateTime(Horas[0]);                                               //ENTRADA
                                            //dtTem2 = new DateTime(dtTem2.Year, dtTem2.Month, dtTem2.Day, 8, 0, 0); //ASIGNA FECHA DE REGISTRO A LA HORA DE ENTRADA 8:00 AM
                                            if (Convert.ToDecimal(dtTem2.Minute) < (decimal)30)                                  //ASIGNA FECHA DE REGISTRO A LA HORA DE ENTRADA
                                            {
                                                dtTem2 = new DateTime(dtTem2.Year, dtTem2.Month, dtTem2.Day, dtTem2.Hour, 0, 0); //ASIGNA LA HORA DE ENTRADA
                                            }
                                            else
                                            {
                                                dtTem2 = new DateTime(dtTem2.Year, dtTem2.Month, dtTem2.Day, dtTem2.Hour + 1, 0, 0); //ASIGNA LA HORA DE ENTRADA
                                            }
                                            if (Convert.ToDateTime(Horas[0]) > dtTem2)
                                            {
                                                Diferencia = Convert.ToDateTime(dtTem2) - Convert.ToDateTime(Horas[0]);   //ENTRADA - SALIDA
                                                Retraso    = Retraso + ((Convert.ToDecimal(Diferencia.Hours) * Convert.ToDecimal(60)) + Convert.ToDecimal(Diferencia.Minutes));
                                            }
                                        }
                                        else    //SIN REGISTO EN EL DIA
                                        {
                                            /*150417RAAN if (dtTemp.DayOfWeek == DayOfWeek.Saturday || dtTemp.DayOfWeek == DayOfWeek.Sunday)
                                             * { } else Faltas = Faltas + 1; */
                                            switch (dtTemp.DayOfWeek)
                                            {
                                            case DayOfWeek.Monday:
                                                if (bLun)
                                                {
                                                    Faltas = Faltas + 1;
                                                }
                                                break;

                                            case DayOfWeek.Tuesday:
                                                if (bMar)
                                                {
                                                    Faltas = Faltas + 1;
                                                }
                                                break;

                                            case DayOfWeek.Wednesday:
                                                if (bMie)
                                                {
                                                    Faltas = Faltas + 1;
                                                }
                                                break;

                                            case DayOfWeek.Thursday:
                                                if (bJue)
                                                {
                                                    Faltas = Faltas + 1;
                                                }
                                                break;

                                            case DayOfWeek.Friday:
                                                if (bVie)
                                                {
                                                    Faltas = Faltas + 1;
                                                }
                                                break;

                                            case DayOfWeek.Saturday:
                                                if (bSab)
                                                {
                                                    Faltas = Faltas + 1;
                                                }
                                                break;

                                            case DayOfWeek.Sunday:
                                                if (bDom)
                                                {
                                                    Faltas = Faltas + 1;
                                                }
                                                break;
                                            }
                                        }
                                        dtTemp = dtTemp.AddDays(1);
                                    }
                                    //this.lbMensajes.Items.Add("Horas Acumuladas en el período: " + HorasAcum.ToString());
                                    this.lHAcum.Text = HorasAcum.ToString();
                                    if (Faltas > 0)
                                    {
                                        this.lFaltas.Text = Faltas.ToString();
                                    }
                                    if (Retraso < 0)
                                    {
                                        this.lRetraso.Text = (Retraso * -1).ToString();
                                    }
                                    //< DESPLIEGA TIEMPO ACUMULADO DE RETRASO Y FALTAS 150408 AMILCAR
                                }
                                catch (Exception ex1)
                                {
                                    MessageBox.Show("Ocurrio el siguiente error al intentar cargar los datos:\n" + ex1.Message, "Error de conexión", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                }
                                //cnn.Close();
                                cn1.Close();
                            }
                            catch (Exception ex)
                            {
                                MessageBox.Show("Ocurrio el siguiente error al intentar conectar con la base de datos:\n" + ex.Message, "Error de conexión", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                            }
                            this.Cursor = Cursors.Default;
                            //< DESPLIEGA TIEMPO ACUMULADO 150211
                            this.iDelay = 0;
                            this.borrar = true;
                            this.CapturarFoto(true);
                        }
                    }
                    catch
                    {
                    }
                    this.txtCodigo.ReadOnly = false;
                    this.reloj.Enabled      = true;
                }
            }
            catch
            {
            }
        }