private void FrmPrincipal_Load(object sender, EventArgs e) { ManejoBDD.CargaRutas(); ManejoBDD.sBaseERP = "FORJARTE"; EmptyClipboard(); this.CamHandle = capCreateCaptureWindowA("Captura Imagen", 0, 0, 0, 0, 0, this.pbFoto.Handle.ToInt32(), 0); if (this.CamHandle != 0) { if (SendMessage(this.CamHandle, 0x40a, 0, 0) != 0) { SendMessage(this.CamHandle, 0x434, 30, 0); SendMessage(this.CamHandle, 0x432, 0, 0); //150417RAAN NO INICI EL RELOJ SIN NO HAY CAMARA this.reloj.Enabled = true; } else { this.lbMensajes.Items.Add("No se encontr\x00f3 ninguna camara"); DestroyWindow(this.CamHandle); } } else { this.lbMensajes.Items.Add("No se encontr\x00f3 ninguna camara"); } this.reloj.Enabled = true; //150417RAAN this.lHora.Text = DateTime.Now.ToLongTimeString(); }
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 { } }