B4A=true Group=Default Group ModulesStructureVersion=1 Type=Class Version=11.8 @EndOfDesignText@ Sub Class_Globals Private Root As B4XView 'ignore Private xui As XUI 'ignore Private b_checkin As Button Private b_checout As Button Dim c As Cursor Dim cmd As DBCommand Dim reqManager As DBRequestManager Dim sDate, sTime As String Dim g As GPS Private B4XImageView1 As B4XImageView Private qr As QRGenerator Private p_qr As Panel Private b_cerrarqr As Button Private p_scroll As Panel Private ScrollView1 As ScrollView Private b_gestion As Button Private camEx2 As CameraExClass2 Dim frontCamera As Boolean = False Private p_cam As Panel Dim nombrefoto As String = "0" Dim nombrefoto1 As String = "0" Private p_camara As Panel Private teclado As IME Dim fototomada As String Dim x As Int = 0 Private p_general As Panel Private p_gestion As Panel Dim y As Int = 0 Private iv_gestion As ImageView Private iv_ine As ImageView Private cb_estatus As B4XComboBox Dim itemselect As String Private b_finalizar As Button Private b_cancelar As Button Private et_nombre As EditText Private et_telefono As EditText Private et_correo As EditText Private et_curp As EditText Private Panel1 As Panel Private p_inci As Panel Private p_inci2 As Panel Private et_observaciones As EditText Private et_comentarios As EditText Private bu As BatteryUtilities Dim batterystatus(11) As Int Dim bateria As Int Dim m_lat, m_lon As String Private Label1 As Label Dim distance As Long Private b_cancelafoto As Button Private b_comidain As Button Private b_comidaout As Button Dim mensaje As String Dim donde As String Dim donde1 As String Dim donde2 As String Dim donde3 As String Private p_validacion As Panel Private b_aceptar As Button Private et_codigo As EditText Private b_cancelarcodigo As Button Private l_codigo As Label Private b_gestionadas As Button Private p_trabajadas As Panel Private l_trabajdas As Label Private cb_rechazadas As CheckBox Private cb_aprobadas As CheckBox Private clv_gestionadas As CustomListView Private l_nombre As Label Private l_estatus As Label End Sub 'You can add more parameters here. Public Sub Initialize As Object Return Me End Sub 'This event will be called once, before the page becomes visible. Private Sub B4XPage_Created (Root1 As B4XView) Root = Root1 Root.LoadLayout("Principal") reqManager.Initialize(Me, Starter.DBReqServer) g.Initialize("GPS") qr.Initialize(B4XImageView1.mBase.Width) Panel1.Width = Root.Width Panel1.Height = Root.Height p_camara.Width = Root.Width p_camara.Height = Root.Height p_validacion.Width = Root.Width p_validacion.Height = Root.Height ScrollView1.height = Root.Height - p_general.Height p_scroll.height = Root.Height - p_general.Height p_trabajadas.height = Root.Height - p_general.Height End Sub Private Sub B4XPage_Appear CheckAndRequestNotificationPermission If Not(Subs.IsConnectedToInternet) Then Msgbox("Habilita los datos del celular","Atención") B4XPage_Appear Else If g.GPSEnabled=False Then Dim Resultado As Int= -3 Do While Resultado=-3 Resultado = Msgbox2("Habilitar el GPS", "Atencion","ACEPTAR","", "",LoadBitmap(File.DirAssets,"alert2.png")) Select Case Resultado Case DialogResponse.POSITIVE MsgboxAsync("Habilitar el GPS", "Atencion") StartActivity(g.LocationSettingsIntent) Case DialogResponse.NEGATIVE B4XPage_Appear End Select Loop Else ' Log("ENTRE") StartService(Tracker) m_lat = "0" m_lon = "0" GPS_LocationChanged(Tracker.FLP.GetLastKnownLocation) End If m_lat = B4XPages.MainPage.login.lat_suc m_lon = B4XPages.MainPage.login.long_suc DateTime.DateFormat = "dd/MM/yyyy" sDate="%" & DateTime.Date(DateTime.Now) & "%" Log(sDate&" "&B4XPages.MainPage.login.user) C = Starter.skmt.ExecQuery2("SELECT * FROM CHECADO WHERE FECHA LIKE ? AND USUARIO = ?",Array As String(sDate, B4XPages.MainPage.login.user)) If c.RowCount > 0 Then c.Position = 0 If c.GetString("ESTATUS") = "ENTRADA" Then b_checkin.visible = False b_checout.visible = True b_comidain.Visible = True b_comidaout.Visible = False Else If c.GetString("ESTATUS") = "SALIDA A COMER" Then b_checkin.visible = False b_checout.visible = True b_comidain.Visible = False b_comidaout.Visible = True Else If c.GetString("ESTATUS") = "REGRESO DE COMER" Then b_checkin.visible = False b_checout.visible = True b_comidain.Visible = False b_comidaout.Visible = False Else If c.GetString("ESTATUS") = "SALIDA" Then b_checkin.visible = True b_checout.visible = False b_comidain.Visible = False b_comidaout.Visible = False End If Else If c.RowCount = 0 Then b_checkin.visible = True b_checout.visible = False b_comidain.Visible = False b_comidaout.Visible = False End If '' CallSubDelayed(Tracker, "StartFLPSmall") If Tracker.FLP.IsInitialized And Tracker.FLP.GetLastKnownLocation.IsInitialized Then 'Si tenemos "UltimaUbicaccionConocida" la usamos. Starter.latitud = Tracker.FLP.GetLastKnownLocation.Latitude Starter.longitud = Tracker.FLP.GetLastKnownLocation.Longitude ' Log($"Tenemos UUC: ${Tracker.FLP.GetLastKnownLocation.Latitude},${Tracker.FLP.GetLastKnownLocation.Longitude}"$) GPS_LocationChanged(Tracker.FLP.GetLastKnownLocation) ' Log("hice esto") End If bu.Initialize batterystatus = bu.BatteryInformation bateria = batterystatus(0) ajustaTamano2 Wait For (CheckAndRequestNotificationPermission) Complete (HasPermission As Boolean) If HasPermission Then Log("Con permisos de notificación") Else ToastMessageShow("No permission to show notification", True) End If End If If b_checkin.Visible Then b_gestion.Visible = False b_gestionadas.Visible = False Else b_gestion.Visible = True b_gestionadas.Visible = True End If End Sub 'Make sure that targetSdkVersion >= 33 Private Sub CheckAndRequestNotificationPermission As ResumableSub Dim p As Phone If p.SdkVersion < 33 Then Return True Dim ctxt As JavaObject ctxt.InitializeContext Dim targetSdkVersion As Int = ctxt.RunMethodJO("getApplicationInfo", Null).GetField("targetSdkVersion") If targetSdkVersion < 33 Then Return True Dim NotificationsManager As JavaObject = ctxt.RunMethod("getSystemService", Array("notification")) Dim NotificationsEnabled As Boolean = NotificationsManager.RunMethod("areNotificationsEnabled", Null) If NotificationsEnabled Then Return True Dim rp As RuntimePermissions rp.CheckAndRequest(rp.PERMISSION_POST_NOTIFICATIONS) Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean) 'change to Activity_PermissionResult if non-B4XPages. Return Result End Sub Sub GPS_LocationChanged (Location1 As Location) ' LogColor($"Entrando a Cliente.GPS_LocationChanged"$, Colors.red) If Tracker.FLP.GetLastKnownLocation.IsInitialized And Tracker.FLP.GetLastKnownLocation.Latitude <> 0 Then Starter.latitud = Tracker.FLP.GetLastKnownLocation.Latitude Starter.longitud= Tracker.FLP.GetLastKnownLocation.Longitude ' Log("Coords set to: " & B4XPages.MainPage.lat_gps & " and " & B4XPages.MainPage.lon_gps) End If If m_lat = Null Or m_lat = "" Then m_lat = 0 If m_lon = Null Or m_lon = "" Then m_lon = 0 Dim l1, l2 As Location l1.Initialize2(Starter.latitud, Starter.longitud) ' Log($"Coordenadas de la tienda - lat:${m_lat}, lon:${m_lon}"$) l2.Initialize2(m_lat, m_lon) ' If Label1.IsInitialized Then ' Label1.Text = Starter.latitud & ", "& Starter.longitud ' End If 'now we need the distance between our location and the target location distance = l1.DistanceTo(l2) 'the result is in meter ' Log(distance) If distance < 200 Then ' If b_gestion.IsInitialized Then ' b_gestion.Enabled = True ' End If Else If distance > 201 Then ' If b_gestion.IsInitialized Then ' b_gestion.Enabled = False ' End If End If ' If Location1.IsInitialized And Location1.Accuracy > 200 Then ' ' End If CallSubDelayed(Tracker, "CreateLocationRequest") End Sub Private Sub b_checout_Click If b_comidaout.Visible = False Then If p_scroll.Visible = False Then If horasalida Then If Not(Subs.IsConnectedToInternet) Then Msgbox("Habilita los datos del celular","Atención") B4XPage_Appear Else If distance > 200 Then Log("aqui") MsgboxAsync("No estas cerca del punto asignado","Atención") Else If distance < 200 Then Log("validar") DateTime.DateFormat = "dd/MM/yyyy" sDate="%" & DateTime.Date(DateTime.Now) & "%" C = Starter.skmt.ExecQuery2("SELECT * FROM HIST_CHECADO WHERE FECHA LIKE ? AND USUARIO = ?",Array As String(sDate, B4XPages.MainPage.login.user)) Log(c.RowCount) If c.RowCount < 6 Then If g.GPSEnabled=False Then Dim result As Int= -3 Do While result=-3 result = Msgbox2("Habilitar el GPS", "Atencion","ACEPTAR","", "",LoadBitmap(File.DirAssets,"alert2.png")) Select Case result Case DialogResponse.POSITIVE MsgboxAsync("Habilitar el GPS", "Atencion") StartActivity(g.LocationSettingsIntent) Case DialogResponse.NEGATIVE B4XPage_Appear End Select Loop Else botonout End If Else MsgboxAsync("No puedes hacer mas registros","Atención") End If End If End If Else If donde1 = "1" Then Msgbox2Async(mensaje,"Atención", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png"),False) Wait For Msgbox_Result (result As Int) If result = DialogResponse.POSITIVE Then p_validacion.Visible = True l_codigo.Text = "Ingresa el codigo para el CHECK-OUT." End If Else If donde1 = "2" Then Msgbox2Async(mensaje,"Atención", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png"),False) Wait For Msgbox_Result (result As Int) If result = DialogResponse.POSITIVE Then p_validacion.Visible = True l_codigo.Text = "Ingresa el codigo para el CHECK-OUT." End If End If Else MsgboxAsync("Necesitas acabar la gestion actual.","Atención") End If Else MsgboxAsync("Necesitas hacer la entrada de comida.","Atención") End If End Sub Sub botonout g.Start(0,0) DateTime.DateFormat = "dd/MM/yyyy" DateTime.TimeFormat = "HH:mm:ss" sDate=DateTime.Date(DateTime.Now) sTime=DateTime.Time(DateTime.Now) C = Starter.skmt.ExecQuery("SELECT * FROM CHECADO") If c.RowCount = 0 Then Starter.skmt.ExecNonQuery2("INSERT INTO HIST_CHECADO(USUARIO, ID_EMP, PERFIL, PROYECTO, SUCURSAL, ESTATUS, FECHA) VALUES(?,?,?,?,?,?,?)", Array As String(B4XPages.MainPage.login.user, B4XPages.MainPage.login.ID_EMP,B4XPages.MainPage.login.perfil, Starter.almacen, B4XPages.MainPage.login.sucursal, "ENTRADA", sDate &" " &sTime)) Else c.Position = 0 Starter.skmt.ExecNonQuery2("INSERT INTO HIST_CHECADO(USUARIO, ID_EMP, PERFIL, PROYECTO, SUCURSAL, ESTATUS, FECHA) VALUES(?,?,?,?,?,?,?)", Array As String(c.GetString("USUARIO"),c.GetString("ID_EMP"),c.GetString("PERFIL"),c.GetString("PROYECTO"),c.GetString("SUCURSAL"),c.GetString("ESTATUS"),c.GetString("FECHA"))) End If Starter.skmt.ExecNonQuery("delete from CHECADO") Starter.skmt.ExecNonQuery2("INSERT INTO CHECADO(USUARIO, ID_EMP, PERFIL, PROYECTO, SUCURSAL, ESTATUS, FECHA) VALUES(?,?,?,?,?,?,?)", Array As String(B4XPages.MainPage.login.user, B4XPages.MainPage.login.ID_EMP,B4XPages.MainPage.login.perfil, Starter.almacen, B4XPages.MainPage.login.sucursal, "SALIDA", sDate &" " &sTime)) b_checkin.visible = True b_checout.visible = False b_comidain.Visible = False b_comidaout.Visible = False MsgboxAsync("Check-out enviado con exito","Atención") Mandaout End Sub Sub Mandaout DateTime.DateFormat = "dd/MM/yyyy" sDate=DateTime.Date(DateTime.Now) DateTime.TimeFormat = "HH:mm:ss" sTime=DateTime.Time(DateTime.Now) cmd.Initialize cmd.Name = "insert_check_GABICO" cmd.Parameters = Array As Object(B4XPages.MainPage.login.ID_EMP, Starter.almacen, sDate &" " &sTime,"MOVIL", "SALIDA", B4XPages.MainPage.login.user, B4XPages.MainPage.login.sucursal, Starter.latitud, Starter.longitud) reqManager.ExecuteCommand(cmd , "check") B4XPage_Appear End Sub Sub horasalida As Boolean Dim p As Period p.Hours = 0 p.Minutes = 0 Dim newDate As Long = DateUtils.AddPeriod(DateTime.Now, p) Log(newDate) Log(DateUtils.TicksToString(newDate)) Dim p2 As Period p2.Hours = 1 p2.Minutes = 0 DateTime.DateFormat = "MM/dd/yyyy HH:mm" Dim fecha2 As String = DateTime.Date(DateTime.Now) Dim prueba2() As String = Regex.Split(" ",fecha2) LogColor(prueba2(0),Colors.red) Dim prueba3 As String = prueba2(0) &" "&B4XPages.MainPage.login.horaout&":00" LogColor(prueba3,Colors.Red) Dim ticks2 As Long = DateTime.DateParse(prueba3) LogColor(ticks2,Colors.red) LogColor(DateTime.Date(ticks2),Colors.red) Dim timeToCheck2 As Long = DateUtils.AddPeriod(ticks2, p2) LogColor(DateUtils.TicksToString(timeToCheck2),Colors.red) DateTime.TimeFormat = "hhmm" Dim p3 As Period p3.Hours = 0 p3.Minutes = 0 DateTime.DateFormat = "MM/dd/yyyy HH:mm" Dim fecha As String = DateTime.Date(DateTime.Now) Dim prueba1() As String = Regex.Split(" ",fecha) Log(prueba1(0)) Dim prueba As String = prueba1(0) &" "&B4XPages.MainPage.login.horaout&":00" LogColor(prueba,Colors.Red) Dim ticks As Long = DateTime.DateParse(prueba) Log(ticks) Dim timeToCheck As Long = DateUtils.AddPeriod(ticks, p3) Log(DateUtils.TicksToString(timeToCheck)) If newDate >= timeToCheck And newDate <= timeToCheck2 Then donde1 = "0" Log("0") Return True Else If newDate > timeToCheck2 Then donde1 = "1" Log("1") mensaje = "La hora maxima para hacer el check-out ha terminado, ingresa el codigo" Return False Else If newDate < timeToCheck Then donde1 = "2" Log("2") mensaje = "Aun no es tu horario de salida, ingresa el codigo" Return False Else Return False End If End Sub Private Sub b_checkin_Click If horaentrada Then If Not(Subs.IsConnectedToInternet) Then Msgbox("Habilita los datos del celular","Atención") B4XPage_Appear Else If distance > 200 Then Log("aqui") MsgboxAsync("No estas cerca del punto asignado","Atención") Else If distance < 200 Then DateTime.DateFormat = "dd/MM/yyyy" sDate="%" & DateTime.Date(DateTime.Now) & "%" C = Starter.skmt.ExecQuery2("SELECT * FROM HIST_CHECADO WHERE FECHA LIKE ? AND USUARIO = ?",Array As String(sDate, B4XPages.MainPage.login.user)) Log(c.RowCount) If c.RowCount < 6 Then If g.GPSEnabled=False Then Dim result As Int= -3 Do While result=-3 result = Msgbox2("Habilitar el GPS", "Atencion","ACEPTAR","", "",LoadBitmap(File.DirAssets,"alert2.png")) Select Case result Case DialogResponse.POSITIVE MsgboxAsync("Habilitar el GPS", "Atencion") StartActivity(g.LocationSettingsIntent) Case DialogResponse.NEGATIVE B4XPage_Appear End Select Loop Else botoncheck End If Else MsgboxAsync("No puedes hacer mas registros","Atención") End If End If End If Else If donde2 = "1" Then Msgbox2Async(mensaje,"Atención", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png"),False) Wait For Msgbox_Result (result As Int) If result = DialogResponse.POSITIVE Then p_validacion.Visible = True l_codigo.Text = "Ingresa el codigo para el CHECK-IN." End If Else If donde2 = "2" Then Msgbox2Async(mensaje,"Atención", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png"),False) Wait For Msgbox_Result (result As Int) If result = DialogResponse.POSITIVE Then p_validacion.Visible = True l_codigo.Text = "Ingresa el codigo para el CHECK-IN." End If End If End Sub Sub botoncheck g.Start(0,0) DateTime.DateFormat = "dd/MM/yyyy" DateTime.TimeFormat = "HH:mm:ss" sDate=DateTime.Date(DateTime.Now) sTime=DateTime.Time(DateTime.Now) C = Starter.skmt.ExecQuery("SELECT * FROM CHECADO") If c.RowCount = 0 Then Starter.skmt.ExecNonQuery2("INSERT INTO HIST_CHECADO(USUARIO, ID_EMP, PERFIL, PROYECTO, SUCURSAL, ESTATUS, FECHA) VALUES(?,?,?,?,?,?,?)", Array As String(B4XPages.MainPage.login.user, B4XPages.MainPage.login.ID_EMP,B4XPages.MainPage.login.perfil, Starter.almacen, B4XPages.MainPage.login.sucursal, "ENTRADA", sDate &" " &sTime)) Else c.Position = 0 Starter.skmt.ExecNonQuery2("INSERT INTO HIST_CHECADO(USUARIO, ID_EMP, PERFIL, PROYECTO, SUCURSAL, ESTATUS, FECHA) VALUES(?,?,?,?,?,?,?)", Array As String(c.GetString("USUARIO"),c.GetString("ID_EMP"),c.GetString("PERFIL"),c.GetString("PROYECTO"),c.GetString("SUCURSAL"),c.GetString("ESTATUS"),c.GetString("FECHA"))) End If b_checkin.visible = False b_checout.visible = True b_comidain.Visible = True b_comidaout.Visible = False Starter.skmt.ExecNonQuery("delete from CHECADO") Starter.skmt.ExecNonQuery2("INSERT INTO CHECADO(USUARIO, ID_EMP, PERFIL, PROYECTO, SUCURSAL, ESTATUS, FECHA) VALUES(?,?,?,?,?,?,?)", Array As String(B4XPages.MainPage.login.user, B4XPages.MainPage.login.ID_EMP,B4XPages.MainPage.login.perfil, Starter.almacen, B4XPages.MainPage.login.sucursal, "ENTRADA", sDate &" " &sTime)) Mandacheck MsgboxAsync("Check-in enviado con exito","Atención") End Sub Sub Mandacheck DateTime.DateFormat = "dd/MM/yyyy" DateTime.TimeFormat = "HH:mm:ss" sDate=DateTime.Date(DateTime.Now) sTime=DateTime.Time(DateTime.Now) cmd.Initialize cmd.Name = "insert_check_GABICO" cmd.Parameters = Array As Object(B4XPages.MainPage.login.ID_EMP, Starter.almacen, sDate &" " &sTime,"MOVIL", "ENTRADA", B4XPages.MainPage.login.user, B4XPages.MainPage.login.sucursal, Starter.latitud, Starter.longitud) reqManager.ExecuteCommand(cmd , "check") B4XPage_Appear End Sub Sub horaentrada As Boolean Dim p As Period p.Hours = 0 p.Minutes = 0 Dim newDate As Long = DateUtils.AddPeriod(DateTime.Now, p) Log(newDate) Log(DateUtils.TicksToString(newDate)) Dim p2 As Period p2.Hours = 0 p2.Minutes = 20 DateTime.DateFormat = "MM/dd/yyyy HH:mm" Dim fecha2 As String = DateTime.Date(DateTime.Now) Dim prueba2() As String = Regex.Split(" ",fecha2) LogColor(prueba2(0),Colors.red) Dim prueba3 As String = prueba2(0) &" "&B4XPages.MainPage.login.horain&":00" LogColor(prueba3,Colors.Red) Dim ticks2 As Long = DateTime.DateParse(prueba3) LogColor(ticks2,Colors.red) LogColor(DateTime.Date(ticks2),Colors.red) Dim timeToCheck2 As Long = DateUtils.AddPeriod(ticks2, p2) LogColor(DateUtils.TicksToString(timeToCheck2),Colors.red) DateTime.TimeFormat = "hhmm" Dim p3 As Period p3.Hours = 0 p3.Minutes = -30 DateTime.DateFormat = "MM/dd/yyyy HH:mm" Dim fecha As String = DateTime.Date(DateTime.Now) Dim prueba1() As String = Regex.Split(" ",fecha) Log(prueba1(0)) Dim prueba As String = prueba1(0) &" "&B4XPages.MainPage.login.horain&":00" LogColor(prueba,Colors.Red) Dim ticks As Long = DateTime.DateParse(prueba) Log(ticks) Dim timeToCheck As Long = DateUtils.AddPeriod(ticks, p3) Log(DateUtils.TicksToString(timeToCheck)) If newDate >= timeToCheck And newDate < timeToCheck2 Then donde2 = "0" Return True Else If newDate > timeToCheck2 Then donde2 = "1" mensaje = "La tolerancia del check-in paso, por favor, ingresa el codigo" Return False Else If newDate < timeToCheck Then donde2 = "1" mensaje = "Aun no es tu horario de entrada, ingresa el codigo" Return False Else Return False End If End Sub Private Sub ImageView2_Click If b_comidaout.Visible = False Then If Not(Subs.IsConnectedToInternet) Then Msgbox("Habilita los datos del celular","Atención") B4XPage_Appear Else If distance > 200 Then Log("aqui") MsgboxAsync("No estas cerca del punto asignado","Atención") Else If distance < 200 Then If g.GPSEnabled=False Then Dim result As Int= -3 Do While result=-3 result = Msgbox2("Habilitar el GPS", "Atencion","ACEPTAR","", "",LoadBitmap(File.DirAssets,"alert2.png")) Select Case result Case DialogResponse.POSITIVE MsgboxAsync("Habilitar el GPS", "Atencion") StartActivity(g.LocationSettingsIntent) Case DialogResponse.NEGATIVE B4XPage_Appear End Select Loop Else DateTime.DateFormat = "dd/MM/yyyy" sDate="%" & DateTime.Date(DateTime.Now) & "%" C = Starter.skmt.ExecQuery2("SELECT * FROM CHECADO WHERE USUARIO = ? AND FECHA LIKE ?",Array As String( B4XPages.MainPage.login.user, sDate)) If c.RowCount > 0 Then c.Position = 0 Log(c.GetString("ESTATUS")) If c.GetString("ESTATUS") = "ENTRADA" Or c.GetString("ESTATUS") = "SALIDA A COMER" Or c.GetString("ESTATUS") = "REGRESO DE COMER" Then If p_gestion.IsInitialized And p_gestion.Visible = True Then p_gestion.Visible = False p_qr.Visible = True p_qr.BringToFront Else p_qr.Visible = True End If If p_trabajadas.IsInitialized And p_trabajadas.Visible = True Then Log("PANEL TRABAJADAS INVISIBLE") p_trabajadas.Visible = False p_qr.Visible = True p_qr.BringToFront Else p_qr.Visible = True End If DateTime.DateFormat = "dd/MM/yyyy" DateTime.TimeFormat = "HH:mm:ss" sDate=DateTime.Date(DateTime.Now) sTime=DateTime.Time(DateTime.Now) Dim SenderFilter As Object = Starter.skmt.ExecQueryAsync("SQL", "SELECT ID_EMP, USUARIO, PROYECTO, SUCURSAL FROM CHECADO", Null) Wait For (SenderFilter) SQL_QueryComplete (Success As Boolean, rs As ResultSet) Dim texto As String="" If Success Then Do While rs.NextRow texto="QR"&";"&rs.GetString("ID_EMP")&";"&B4XPages.MainPage.login.nombre&";"&rs.GetString("USUARIO")&";"&rs.GetString("PROYECTO")&";"&rs.GetString("SUCURSAL")&";"& (sDate &" "& sTime)&";"&(Starter.latitud &", "&Starter.longitud&";"&B4XPages.MainPage.login.formato_suc&";"&B4XPages.MainPage.login.nom_proyec&";"&B4XPages.MainPage.login.lat_suc&";"&B4XPages.MainPage.login.long_suc) Loop rs.Close Else Log(LastException) End If Log("Crear QR") CrearQR(texto) Else MsgboxAsync("Por favor hacer el check-in","Atención") End If Else MsgboxAsync("Por favor hacer el check-in","Atención") End If End If End If End If Else MsgboxAsync("No puedes generar el QR durate la hora de comida","Atención") End If End Sub Private Sub CrearQR(texto As String) B4XImageView1.Clear If texto.Length>0 Then B4XImageView1.SetBitmap(qr.Create(texto)) Log("QR Creado ->"&texto) End If End Sub Private Sub b_cerrarqr_Click B4XImageView1.Clear If y = 1 Then p_qr.Visible = False p_gestion.Visible = True p_gestion.BringToFront Else p_qr.Visible = False End If End Sub Private Sub b_gestion_Click DateTime.DateFormat = "dd/MM/yyyy" sDate="%" & DateTime.Date(DateTime.Now) & "%" Log(sDate&" "&B4XPages.MainPage.login.user) If b_comidaout.Visible = False Then C = Starter.skmt.ExecQuery2("SELECT * FROM CHECADO WHERE USUARIO = ? AND FECHA LIKE ?",Array As String( B4XPages.MainPage.login.user, sDate)) If c.RowCount > 0 Then c.Position = 0 Log(c.GetString("ESTATUS")) If c.GetString("ESTATUS") = "ENTRADA" Or c.GetString("ESTATUS") = "SALIDA A COMER" Or c.GetString("ESTATUS") = "REGRESO DE COMER" Then If Not(Subs.IsConnectedToInternet) Then MsgboxAsync("Habilita los datos del celular","Atención") B4XPage_Appear Else If distance > 200 Then Log("aqui") MsgboxAsync("No estas cerca del punto asignado","Atención") Else If distance < 200 Then p_trabajadas.Visible= False p_scroll.Visible = True ScrollView1.Visible = True ScrollView1.Panel.LoadLayout("gestion") ScrollView1.Panel.Height = p_gestion.Height p_scroll.BringToFront y = 1 x = 1 InitializeCamera2 p_camara.Visible = True b_gestion.Enabled = False p_gestion.Visible = True nombrefoto = "0" nombrefoto1 = "0" iv_ine.Bitmap = LoadBitmap(File.DirAssets,"camara.png") iv_gestion.Bitmap = LoadBitmap(File.DirAssets,"camara.png") itemselect = "" Dim Items As List Items.Initialize Items.Clear Items.Add("SELECCIONA UNA OPCION ") Items.Add("APROBADO") Items.Add("RECHAZADO") Items.Add("INTERMITENCIA") Items.Add("NO CONCLUIDO") cb_estatus.SetItems(Items) itemselect = "SELECCIONA UNA OPCION" p_inci.Visible = False ajustaTamano End If End If Else MsgboxAsync("Por favor hacer el check-in","Atención") End If Else MsgboxAsync("Por favor hacer el check-in","Atención") End If Else MsgboxAsync("No puedes hacer gestiones durate la hora de comida","Atención") End If End Sub 'tomar foto Private Sub InitializeCamera2 Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_CAMERA) Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean) If Result Then camEx2.Initialize(p_cam, frontCamera, Me, "Camera1") frontCamera = camEx2.Front Log("inicializamos Camara") Else ToastMessageShow("No permission!!!", True) End If End Sub Sub Camera1_Ready (Success As Boolean) Log("Camara ready") If Success Then camEx2.SetJpegQuality(90) camEx2.SetContinuousAutoFocus camEx2.CommitParameters camEx2.StartPreview Log(camEx2.GetPreviewSize) Else ToastMessageShow("Cannot open camera.", True) Log("Cannot open camera") End If End Sub Sub Camera1_PictureTaken (Data()As Byte) If x = 1 Then DateTime.DateFormat="ddMMyyyyHHmmss" nombrefoto = DateTime.Now & "_FOTO1.jpg" teclado.HideKeyboard fototomada = nombrefoto Else If x = 2 Then DateTime.DateFormat="ddMMyyyyHHmmss" nombrefoto1 = DateTime.Now & "_FOTO2.jpg" teclado.HideKeyboard fototomada = nombrefoto1 End If Log("tome foto") Dim filename As String = fototomada Dim Dirp As String = File.DirInternal Dim Dir As String Dim Dir2 As String Try File.MakeDir(Dirp,"/GABINETE") Dir = "/GABINETE" Log("creado en promotoria " & Dirp & Dir) Catch Dir = "" Log("creado en raiz") End Try Try File.MakeDir(Dirp & Dir,"/reduccion") Dir2 = "/reduccion" Log("creado en promotoria " & Dirp & Dir & Dir2) Catch Dir = "" Log("creado en raiz") End Try camEx2.SavePictureToFile(Data, Dirp&Dir, filename) camEx2.StartPreview 'restart preview ' ToastMessageShow("Picture saved." & CRLF & "File size: " & File.Size(Dir, filename) & Dir &"," & filename, True) Log("Picture saved." & CRLF & "File size: " & File.Size(Dir, filename) & Dir &"," & filename) p_camara.Visible = False Log(nombrefoto) Log(nombrefoto1) If nombrefoto <> "0" Then Dim img As B4XBitmap = xui.LoadBitmapResize(File.DirInternal & Dir, filename, 300, 450, True) Dim out As OutputStream = File.OpenOutput(File.DirInternal & Dir & Dir2, filename, True) img.WriteToStream(out, 100, "PNG") out.Close iv_ine.Bitmap = LoadBitmap(File.DirInternal & Dir & Dir2,nombrefoto) End If If nombrefoto1 <> "0" Then Dim img As B4XBitmap = xui.LoadBitmapResize(File.DirInternal & Dir, filename, 300, 450, True) Dim out As OutputStream = File.OpenOutput(File.DirInternal & Dir & Dir2, filename, False) img.WriteToStream(out, 100, "PNG") out.Close iv_gestion.Bitmap = LoadBitmap(File.DirInternal & Dir & Dir2,nombrefoto1) End If StopCamera2 End Sub Private Sub p_camara_Click End Sub Private Sub b_foto_Click camEx2.TakePicture p_camara.Visible = False ' StopCamera2 End Sub Private Sub StopCamera2 ' Capturing = False If camEx2.IsInitialized Then camEx2.Release End If End Sub Private Sub iv_gestion_Click x = 2 InitializeCamera2 p_camara.Visible = True b_gestion.Enabled = False End Sub Private Sub cb_estatus_SelectedIndexChanged (Index As Int) itemselect = cb_estatus.SelectedItem Log(itemselect) If itemselect = "RECHAZADO" Then p_inci.Visible = True ajustaTamano Else If itemselect = "INTERMITENCIA" Or itemselect = "NO CONCLUIDO" Then p_inci.Visible = True p_inci2.Visible = True ajustaTamano Else p_inci.Visible = False p_inci2.Visible = False ajustaTamano End If End Sub Private Sub b_cancelar_Click et_nombre.Text = "" et_telefono.Text = "" et_correo.Text = "" et_curp.Text = "" iv_ine.Bitmap = LoadBitmap(File.DirAssets,"camara.png") iv_gestion.Bitmap = LoadBitmap(File.DirAssets,"camara.png") cb_estatus.SelectedIndex = 0 p_scroll.Visible = False p_gestion.Visible = False b_gestion.Enabled = True nombrefoto1 = "0" nombrefoto = "0" itemselect = "" et_comentarios.Text = "" et_observaciones.Text = "" End Sub Sub ajustaTamano If p_inci.visible And p_inci2.Visible Then Log("visible 1 y 2") p_inci2.Top = p_inci.Top + p_inci.Height b_cancelar.Top = p_inci2.Top + p_inci2.Height + 35 b_finalizar.Top = p_inci2.Top + p_inci2.Height + 35 Else If p_inci.Visible And p_inci2.visible = False Then Log("visible 1") b_cancelar.Top = p_inci.Top + p_inci.Height + 35 b_finalizar.Top = p_inci.Top + p_inci.Height + 35 Else If p_inci2.Visible And p_inci.Visible = False Then Log("visible 2") p_inci2.top = iv_ine.Top + iv_ine.Height + 35 b_cancelar.Top = p_inci2.Top + p_inci2.Height + 35 b_finalizar.Top = p_inci2.Top + p_inci2.Height + 35 Else Log("Invisible 1 y 2") b_cancelar.Top = iv_ine.Top + iv_ine.Height + 45 b_finalizar.Top = iv_ine.Top + iv_ine.Height + 45 End If p_gestion.Height = b_cancelar.Top + 150 ScrollView1.Panel.Height = p_gestion.Height End Sub Sub ajustaTamano2 p_general.Height = b_gestion.Top + 200 p_scroll.Top = p_general.Top + p_general.Height p_scroll.Height = Root.Height - p_general.Height p_trabajadas.Top = p_general.Top + p_general.Height p_trabajadas.Height = Root.Height - p_general.Height p_qr.Top = p_general.Top + p_general.Height ScrollView1.Height = p_scroll.Height ' ScrollView1.Top = p_general.Top + p_general.Height End Sub Private Sub b_finalizar_Click If g.GPSEnabled=False Then Dim result As Int= -3 Do While result=-3 result = Msgbox2("Habilitar el GPS", "Atencion","ACEPTAR","", "",LoadBitmap(File.DirAssets,"alert2.png")) Select Case result Case DialogResponse.POSITIVE MsgboxAsync("Habilitar el GPS", "Atencion") StartActivity(g.LocationSettingsIntent) Case DialogResponse.NEGATIVE B4XPage_Appear End Select Loop Else Dim Dirp As String = File.DirInternal Dim Dir As String Dim Dir2 As String Try File.MakeDir(Dirp,"/GABINETE") Dir = "/GABINETE" Log("creado en promotoria " & Dirp & Dir) Catch Dir = "" Log("creado en raiz") End Try Try File.MakeDir(Dirp & Dir,"/reduccion") Dir2 = "/reduccion" Log("creado en promotoria " & Dirp & Dir & Dir2) Catch Dir = "" Log("creado en raiz") End Try DateTime.DateFormat = "dd/MM/yyyy" DateTime.TimeFormat = "HH:mm:ss" sDate=DateTime.Date(DateTime.Now) sTime=DateTime.Time(DateTime.Now) If itemselect = "SELECCIONA UNA OPCION" Then MsgboxAsync("Completa todo el formulario.","Atención") Else If itemselect = "APROBADO" Then If et_nombre.Text <> "" Then If et_telefono.Text <> "" Then If et_correo.Text <> "" Then If et_curp.Text <> "" And et_curp.Text.Length = 18 Then If nombrefoto <> "0" Then If nombrefoto1 <> "0" Then Starter.skmt.ExecNonQuery2("INSERT INTO HIST_PROMOTORIA(HIST_PM_FECHA, HIST_PR_NOMBRE,HIST_PR_TELEFONO, HIST_PR_CORREO, HIST_PR_CURP, HIST_PR_INE, HIST_PR_ESTATUS, HIST_PR_EVIDENCIA, HIST_PR_IDPROYECTO, HIST_PR_NOMBREPROYECTO, HIST_PR_IDSUCURSAL, HIST_PR_NOMBRESUCURSAL, HIST_PR_USUARIO, HIST_PR_LATITUD, HIST_PR_LONGITUD, HIST_PR_BATERIA,ENVIADO) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",Array As Object((sDate & " " & sTime), et_nombre.Text, et_telefono.Text, et_correo. Text, et_curp.Text, File.ReadBytes(File.DirInternal & Dir & Dir2, nombrefoto),itemselect,File.ReadBytes(File.DirInternal & Dir & Dir2, nombrefoto1),Starter.almacen,B4XPages.MainPage.login.nom_proyec,B4XPages.MainPage.login.sucursal,B4XPages.MainPage.login.suc_nom,B4XPages.MainPage.login.user, Starter.latitud, Starter.longitud, bateria,0)) mandaPendientes et_nombre.Text = "" et_telefono.Text = "" et_correo.Text = "" et_curp.Text = "" iv_ine.Bitmap = LoadBitmap(File.DirAssets,"camara.png") iv_gestion.Bitmap = LoadBitmap(File.DirAssets,"camara.png") cb_estatus.SelectedIndex = 0 p_scroll.Visible = False p_gestion.Visible = False b_gestion.Enabled = True nombrefoto1 = "0" nombrefoto = "0" itemselect = "" b_gestion.Enabled = True Else MsgboxAsync("Captura las fotos.","Atención") End If Else MsgboxAsync("Captura las fotos.","Atención") End If Else MsgboxAsync("Captura un CURP valido.","Atención") End If Else MsgboxAsync("Completa todo el formulario.","Atención") End If Else MsgboxAsync("Completa todo el formulario.","Atención") End If Else MsgboxAsync("Completa todo el formulario.","Atención") End If Else If itemselect = "RECHAZADO" Then If et_nombre.Text <> "" Then If et_telefono.Text <> "" Then If et_correo.Text <> "" Then If et_curp.Text <> "" And et_curp.Text.Length = 18 Then If nombrefoto <> "0" Then If nombrefoto1 <> "0" Then If et_observaciones.Text <> "" Then Starter.skmt.ExecNonQuery2("INSERT INTO HIST_PROMOTORIA(HIST_PM_FECHA, HIST_PR_NOMBRE,HIST_PR_TELEFONO, HIST_PR_CORREO, HIST_PR_CURP, HIST_PR_INE, HIST_PR_ESTATUS, HIST_PR_EVIDENCIA, HIST_PR_OBSERVACIONES, HIST_PR_IDPROYECTO, HIST_PR_NOMBREPROYECTO, HIST_PR_IDSUCURSAL, HIST_PR_NOMBRESUCURSAL, HIST_PR_USUARIO, HIST_PR_LATITUD, HIST_PR_LONGITUD, HIST_PR_BATERIA,ENVIADO) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",Array As Object((sDate & " " & sTime), et_nombre.Text, et_telefono.Text, et_correo. Text, et_curp.Text, File.ReadBytes(File.DirInternal & Dir & Dir2, nombrefoto),itemselect,File.ReadBytes(File.DirInternal & Dir & Dir2, nombrefoto1), et_observaciones.Text,Starter.almacen,B4XPages.MainPage.login.nom_proyec,B4XPages.MainPage.login.sucursal,B4XPages.MainPage.login.suc_nom,B4XPages.MainPage.login.user, Starter.latitud, Starter.longitud, bateria,0)) mandaPendientes et_nombre.Text = "" et_telefono.Text = "" et_correo.Text = "" et_curp.Text = "" iv_ine.Bitmap = LoadBitmap(File.DirAssets,"camara.png") iv_gestion.Bitmap = LoadBitmap(File.DirAssets,"camara.png") cb_estatus.SelectedIndex = 0 p_scroll.Visible = False p_gestion.Visible = False b_gestion.Enabled = True nombrefoto1 = "0" nombrefoto = "0" itemselect = "" et_observaciones.Text = "" b_gestion.Enabled = True Else MsgboxAsync("Completa todo el formulario.","Atención") End If Else MsgboxAsync("Captura las fotos.","Atención") End If Else MsgboxAsync("Captura las fotos.","Atención") End If Else MsgboxAsync("Captura un CURP valido.","Atención") End If Else MsgboxAsync("Completa todo el formulario.","Atención") End If Else MsgboxAsync("Completa todo el formulario.","Atención") End If Else MsgboxAsync("Completa todo el formulario.","Atención") End If Else If itemselect = "INTERMITENCIA" Or itemselect = "NO CONCLUIDO" Then If et_nombre.Text <> "" Then If et_telefono.Text <> "" Then If et_correo.Text <> "" Then If et_curp.Text <> "" And et_curp.Text.Length = 18 Then If nombrefoto <> "0" Then If nombrefoto1 <> "0" Then If et_observaciones.Text <> "" Then If et_comentarios.Text <> "" Then Starter.skmt.ExecNonQuery2("INSERT INTO HIST_PROMOTORIA(HIST_PM_FECHA, HIST_PR_NOMBRE,HIST_PR_TELEFONO, HIST_PR_CORREO, HIST_PR_CURP, HIST_PR_INE, HIST_PR_ESTATUS, HIST_PR_EVIDENCIA, HIST_PR_OBSERVACIONES, HIST_PR_COMENTARIOERROR, HIST_PR_IDPROYECTO, HIST_PR_NOMBREPROYECTO, HIST_PR_IDSUCURSAL, HIST_PR_NOMBRESUCURSAL, HIST_PR_USUARIO, HIST_PR_LATITUD, HIST_PR_LONGITUD, HIST_PR_BATERIA, ENVIADO) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",Array As Object((sDate & " " & sTime), et_nombre.Text, et_telefono.Text, et_correo. Text, et_curp.Text, File.ReadBytes(File.DirInternal & Dir & Dir2, nombrefoto),itemselect,File.ReadBytes(File.DirInternal & Dir & Dir2, nombrefoto1), et_observaciones.Text, et_comentarios.Text, Starter.almacen,B4XPages.MainPage.login.nom_proyec,B4XPages.MainPage.login.sucursal,B4XPages.MainPage.login.suc_nom,B4XPages.MainPage.login.user, Starter.latitud, Starter.longitud, bateria,0)) mandaPendientes et_nombre.Text = "" et_telefono.Text = "" et_correo.Text = "" et_curp.Text = "" iv_ine.Bitmap = LoadBitmap(File.DirAssets,"camara.png") iv_gestion.Bitmap = LoadBitmap(File.DirAssets,"camara.png") cb_estatus.SelectedIndex = 0 p_scroll.Visible = False p_gestion.Visible = False b_gestion.Enabled = True nombrefoto1 = "0" nombrefoto = "0" itemselect = "" et_comentarios.Text = "" et_observaciones.Text = "" b_gestion.Enabled = True Else MsgboxAsync("Completa todo el formulario.","Atención") End If Else MsgboxAsync("Completa todo el formulario.","Atención") End If Else MsgboxAsync("Captura las fotos.","Atención") End If Else MsgboxAsync("Captura las fotos.","Atención") End If Else MsgboxAsync("Captura un CURP valido.","Atención") End If Else MsgboxAsync("Completa todo el formulario.","Atención") End If Else MsgboxAsync("Completa todo el formulario.","Atención") End If Else MsgboxAsync("Completa todo el formulario.","Atención") End If End If End If End Sub Sub mandaPendientes Log("MandaPendientes") 'PEDIDO (Pendientes) c=Starter.skmt.ExecQuery("SELECT HIST_PM_FECHA, HIST_PR_NOMBRE,HIST_PR_TELEFONO, HIST_PR_CORREO, HIST_PR_CURP, HIST_PR_INE, HIST_PR_ESTATUS, HIST_PR_EVIDENCIA, HIST_PR_OBSERVACIONES, HIST_PR_COMENTARIOERROR, HIST_PR_IDPROYECTO, HIST_PR_NOMBREPROYECTO, HIST_PR_IDSUCURSAL, HIST_PR_NOMBRESUCURSAL, HIST_PR_USUARIO, HIST_PR_LATITUD, HIST_PR_LONGITUD, HIST_PR_BATERIA FROM HIST_PROMOTORIA WHERE ENVIADO <> 1") Log($"GESTIONES PENDIENTES: ${c.RowCount}"$) If c.RowCount > 0 Then For i = 0 To c.RowCount -1 c.Position=i Dim cmd As DBCommand cmd.Initialize cmd.Name = "insert_GESTION_GABICO" cmd.Parameters = Array As Object(c.GetString("HIST_PM_FECHA"), c.GetString("HIST_PR_NOMBRE"),c.GetString("HIST_PR_TELEFONO"), c.GetString("HIST_PR_CORREO"), c.GetString("HIST_PR_CURP"), c.GetBlob("HIST_PR_INE"), c.GetString("HIST_PR_ESTATUS"),c.GetBlob("HIST_PR_EVIDENCIA"), c.GetString("HIST_PR_OBSERVACIONES"), c.GetString("HIST_PR_COMENTARIOERROR"), c.GetString("HIST_PR_IDPROYECTO"), c.GetString("HIST_PR_NOMBREPROYECTO"), c.GetString("HIST_PR_IDSUCURSAL"), c.GetString("HIST_PR_NOMBRESUCURSAL"), c.GetString("HIST_PR_USUARIO"), c.GetString("HIST_PR_LATITUD"), c.GetString("HIST_PR_LONGITUD"), c.GetString("HIST_PR_BATERIA")) reqManager.ExecuteCommand(cmd , $"ins_gestionPendientes_head_${c.GetString("HIST_PR_NOMBRE")}"$) Next End If End Sub Sub JobDone(Job As HttpJob) Log(Job.Success) If Job.Success = False Then ' ToastMessageShow("Error: " & Job.ErrorMessage, True) Else LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211027 If Job.JobName = "DBRequest" Then Dim resultado As DBResult = reqManager.HandleJob(Job) If resultado.Tag.As(String).IndexOf("ins_gestionPendientes_head_") > -1 Then Private cliente As String= resultado.Tag cliente = cliente.SubString(cliente.IndexOf("_")+24) Log($"Cliente1:${cliente}"$) For Each records() As Object In resultado.Rows For Each k As String In resultado.Columns.Keys Log(resultado.Tag & ": " & k & ": " & records(resultado.Columns.Get(k))) Next Next Starter.skmt.ExecNonQuery($"UPDATE HIST_PROMOTORIA set ENVIADO = 1 where HIST_PR_NOMBRE = '${cliente}'"$) End If If resultado.Tag = "CODIGO" Then 'query tag For Each records() As Object In resultado.Rows ' Dim codigo As String = records(resultado.Columns.Get("TMP_CD_CODIGO")) If codigo = et_codigo.Text Then Log("SI ENVIE CODIGO") Dim cmd As DBCommand cmd.Initialize cmd.Name = "delete_codigo_GABICO" cmd.Parameters = Array As Object(B4XPages.MainPage.login.user, et_codigo.Text) reqManager.ExecuteCommand(cmd, "delete") If l_codigo.Text = "Ingresa el codigo para el CHECK-OUT." Then botonout Else If l_codigo.Text = "Ingresa el codigo para el CHECK-IN." Then botoncheck Else If l_codigo.Text = "Ingresa el codigo para el REGRESO DE COMER." Then botoncomidaentrada Else If l_codigo.Text = "Ingresa el codigo para la SALIDA A COMER." Then botoncomidasalida End If b_cancelarcodigo_Click Else ToastMessageShow ("Codigo incorrecto",True) End If Next If resultado.Rows.Size = 0 Then ToastMessageShow ("Codigo incorrecto",True) End If End If End If End If End Sub Private Sub p_scroll_Click MsgboxAsync("asdsadas","atencion") End Sub Private Sub et_comentarios_TextChanged (Old As String, New As String) If New.Length > 400 Then et_comentarios.Text = Old End If ajustaTamano2 End Sub Private Sub et_observaciones_TextChanged (Old As String, New As String) If New.Length > 200 Then et_observaciones.Text = Old End If ajustaTamano2 End Sub Private Sub et_curp_TextChanged (Old As String, New As String) If New.Length > 20 Then et_curp.Text = Old End If End Sub Private Sub et_correo_TextChanged (Old As String, New As String) If New.Length > 150 Then et_correo.Text = Old End If End Sub Private Sub et_telefono_TextChanged (Old As String, New As String) If New.Length > 25 Then et_telefono.Text = Old End If End Sub Private Sub et_nombre_TextChanged (Old As String, New As String) If New.Length > 250 Then et_nombre.Text = Old End If End Sub Private Sub b_cancelafoto_Click p_camara.Visible = False StopCamera2 End Sub Private Sub iv_ine_Click x = 1 InitializeCamera2 p_camara.Visible = True b_gestion.Enabled = False End Sub Private Sub b_comidaout_Click If horaentradacomer Then If Not(Subs.IsConnectedToInternet) Then Msgbox("Habilita los datos del celular","Atención") B4XPage_Appear Else If distance > 200 Then Log("aqui") MsgboxAsync("No estas cerca del punto asignado","Atención") Else If distance < 200 Then Log("validar") DateTime.DateFormat = "dd/MM/yyyy" sDate="%" & DateTime.Date(DateTime.Now) & "%" C = Starter.skmt.ExecQuery2("SELECT * FROM HIST_CHECADO WHERE FECHA LIKE ? AND USUARIO = ?",Array As String(sDate, B4XPages.MainPage.login.user)) Log(c.RowCount) If c.RowCount < 6 Then If g.GPSEnabled=False Then Dim result As Int= -3 Do While result=-3 result = Msgbox2("Habilitar el GPS", "Atencion","ACEPTAR","", "",LoadBitmap(File.DirAssets,"alert2.png")) Select Case result Case DialogResponse.POSITIVE MsgboxAsync("Habilitar el GPS", "Atencion") StartActivity(g.LocationSettingsIntent) Case DialogResponse.NEGATIVE B4XPage_Appear End Select Loop Else botoncomidaentrada End If Else MsgboxAsync("No puedes hacer mas registros","Atención") End If End If End If Else If donde3 = "1" Then Msgbox2Async(mensaje,"Atención", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png"),False) Wait For Msgbox_Result (result As Int) If result = DialogResponse.POSITIVE Then p_validacion.Visible = True l_codigo.Text = "Ingresa el codigo para el REGRESO DE COMER." End If Else If donde3 = "2" Then Msgbox2Async(mensaje,"Atención", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png"),False) Wait For Msgbox_Result (result As Int) If result = DialogResponse.POSITIVE Then p_validacion.Visible = True l_codigo.Text = "Ingresa el codigo para el REGRESO DE COMER." End If End If End Sub Sub botoncomidaentrada g.Start(0,0) DateTime.DateFormat = "dd/MM/yyyy" DateTime.TimeFormat = "HH:mm:ss" sDate=DateTime.Date(DateTime.Now) sTime=DateTime.Time(DateTime.Now) C = Starter.skmt.ExecQuery("SELECT * FROM CHECADO") If c.RowCount = 0 Then Starter.skmt.ExecNonQuery2("INSERT INTO HIST_CHECADO(USUARIO, ID_EMP, PERFIL, PROYECTO, SUCURSAL, ESTATUS, FECHA) VALUES(?,?,?,?,?,?,?)", Array As String(B4XPages.MainPage.login.user, B4XPages.MainPage.login.ID_EMP,B4XPages.MainPage.login.perfil, Starter.almacen, B4XPages.MainPage.login.sucursal, "REGRESO DE COMER", sDate &" " &sTime)) Else c.Position = 0 Starter.skmt.ExecNonQuery2("INSERT INTO HIST_CHECADO(USUARIO, ID_EMP, PERFIL, PROYECTO, SUCURSAL, ESTATUS, FECHA) VALUES(?,?,?,?,?,?,?)", Array As String(c.GetString("USUARIO"),c.GetString("ID_EMP"),c.GetString("PERFIL"),c.GetString("PROYECTO"),c.GetString("SUCURSAL"),c.GetString("ESTATUS"),c.GetString("FECHA"))) End If Starter.skmt.ExecNonQuery("delete from CHECADO") Starter.skmt.ExecNonQuery2("INSERT INTO CHECADO(USUARIO, ID_EMP, PERFIL, PROYECTO, SUCURSAL, ESTATUS, FECHA) VALUES(?,?,?,?,?,?,?)", Array As String(B4XPages.MainPage.login.user, B4XPages.MainPage.login.ID_EMP,B4XPages.MainPage.login.perfil, Starter.almacen, B4XPages.MainPage.login.sucursal, "REGRESO DE COMER", sDate &" " &sTime)) b_checkin.visible = False b_checout.visible = True b_comidain.Visible = False b_comidaout.Visible = False MsgboxAsync("Regreso de comer enviado con exito","Atención") Mandacomidaout End Sub Sub Mandacomidaout DateTime.DateFormat = "dd/MM/yyyy" sDate=DateTime.Date(DateTime.Now) DateTime.TimeFormat = "HH:mm:ss" sTime=DateTime.Time(DateTime.Now) cmd.Initialize cmd.Name = "insert_check_GABICO" cmd.Parameters = Array As Object(B4XPages.MainPage.login.ID_EMP, Starter.almacen, sDate &" " &sTime,"MOVIL", "REGRESO DE COMER", B4XPages.MainPage.login.user, B4XPages.MainPage.login.sucursal, Starter.latitud, Starter.longitud) reqManager.ExecuteCommand(cmd , "check") B4XPage_Appear End Sub Sub horaentradacomer As Boolean C = Starter.skmt.ExecQuery("SELECT * FROM CHECADO") If c.RowCount > 0 Then c.Position = 0 DateTime.DateFormat = "dd/MM/yyyy HH:mm" Dim p As Period p.Hours = 0 p.Minutes = 0 Dim newDate As Long = DateUtils.AddPeriod(DateTime.Now, p) Log(newDate) Log(DateUtils.TicksToString(newDate)) Dim p2 As Period p2.Hours = 1 p2.Minutes = 0 DateTime.DateFormat = "dd/MM/yyyy HH:mm" Dim prueba3 As String = c.GetString("FECHA") LogColor(prueba3.SubString2(0,16),Colors.Red) Dim ticks2 As Long = DateTime.DateParse(prueba3.SubString2(0,16)) LogColor(ticks2,Colors.red) LogColor(DateTime.Date(ticks2),Colors.red) Dim timeToCheck2 As Long = DateUtils.AddPeriod(ticks2, p2) LogColor(DateUtils.TicksToString(timeToCheck2),Colors.red) Dim p2 As Period p2.Hours = 1 p2.Minutes = 10 DateTime.DateFormat = "dd/MM/yyyy HH:mm" Dim prueba As String = c.GetString("FECHA") LogColor(prueba.SubString2(0,16),Colors.Red) Dim ticks As Long = DateTime.DateParse(prueba3.SubString2(0,16)) LogColor(ticks,Colors.red) LogColor(DateTime.Date(ticks2),Colors.red) Dim timeToCheck As Long = DateUtils.AddPeriod(ticks, p2) LogColor(DateUtils.TicksToString(timeToCheck),Colors.red) If newDate >= timeToCheck2 And newDate < timeToCheck Then donde3 = "0" Return True Else If newDate > timeToCheck Then mensaje = "Tu horario de regreso ya paso, ingresa el codigo" donde3 = "1" Return False Else If newDate < timeToCheck2 Then mensaje = "Tu hora de comida aun no se cumple, ingresa el codigo" donde3 = "2" Return False End If End If End Sub Private Sub b_comidain_Click If p_scroll.Visible = False Then Log("Cumple panel invisible") If horasalidacomer Then If Not(Subs.IsConnectedToInternet) Then Msgbox("Habilita los datos del celular","Atención") B4XPage_Appear Else If distance > 200 Then Log("aqui") MsgboxAsync("No estas cerca del punto asignado","Atención") Else If distance < 200 Then Log("validar") DateTime.DateFormat = "dd/MM/yyyy" sDate="%" & DateTime.Date(DateTime.Now) & "%" C = Starter.skmt.ExecQuery2("SELECT * FROM HIST_CHECADO WHERE FECHA LIKE ? AND USUARIO = ?",Array As String(sDate, B4XPages.MainPage.login.user)) Log(c.RowCount) If c.RowCount < 6 Then If g.GPSEnabled=False Then Dim result As Int= -3 Do While result=-3 result = Msgbox2("Habilitar el GPS", "Atencion","ACEPTAR","", "",LoadBitmap(File.DirAssets,"alert2.png")) Select Case result Case DialogResponse.POSITIVE MsgboxAsync("Habilitar el GPS", "Atencion") StartActivity(g.LocationSettingsIntent) Case DialogResponse.NEGATIVE B4XPage_Appear End Select Loop Else botoncomidasalida End If Else MsgboxAsync("No puedes hacer mas registros","Atención") End If End If End If Else If donde = "1" Then Msgbox2Async(mensaje,"Atención", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png"),False) Wait For Msgbox_Result (result As Int) If result = DialogResponse.POSITIVE Then p_validacion.Visible = True l_codigo.Text = "Ingresa el codigo para la SALIDA A COMER." End If Else If donde = "2" Then Msgbox2Async(mensaje,"Atención", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png"),False) Wait For Msgbox_Result (result As Int) If result = DialogResponse.POSITIVE Then p_validacion.Visible = True l_codigo.Text = "Ingresa el codigo para la SALIDA A COMER." End If End If Else MsgboxAsync("Necesitas acabar la gestion actual.","Atención") End If End Sub Sub botoncomidasalida g.Start(0,0) DateTime.DateFormat = "dd/MM/yyyy" DateTime.TimeFormat = "HH:mm:ss" sDate=DateTime.Date(DateTime.Now) sTime=DateTime.Time(DateTime.Now) C = Starter.skmt.ExecQuery("SELECT * FROM CHECADO") If c.RowCount = 0 Then Starter.skmt.ExecNonQuery2("INSERT INTO HIST_CHECADO(USUARIO, ID_EMP, PERFIL, PROYECTO, SUCURSAL, ESTATUS, FECHA) VALUES(?,?,?,?,?,?,?)", Array As String(B4XPages.MainPage.login.user, B4XPages.MainPage.login.ID_EMP,B4XPages.MainPage.login.perfil, Starter.almacen, B4XPages.MainPage.login.sucursal, "SALIDA A COMER", sDate &" " &sTime)) Else c.Position = 0 Starter.skmt.ExecNonQuery2("INSERT INTO HIST_CHECADO(USUARIO, ID_EMP, PERFIL, PROYECTO, SUCURSAL, ESTATUS, FECHA) VALUES(?,?,?,?,?,?,?)", Array As String(c.GetString("USUARIO"),c.GetString("ID_EMP"),c.GetString("PERFIL"),c.GetString("PROYECTO"),c.GetString("SUCURSAL"),c.GetString("ESTATUS"),c.GetString("FECHA"))) End If Starter.skmt.ExecNonQuery("delete from CHECADO") Starter.skmt.ExecNonQuery2("INSERT INTO CHECADO(USUARIO, ID_EMP, PERFIL, PROYECTO, SUCURSAL, ESTATUS, FECHA) VALUES(?,?,?,?,?,?,?)", Array As String(B4XPages.MainPage.login.user, B4XPages.MainPage.login.ID_EMP,B4XPages.MainPage.login.perfil, Starter.almacen, B4XPages.MainPage.login.sucursal, "SALIDA A COMER", sDate &" " &sTime)) b_checkin.visible = False b_checout.visible = True b_comidain.Visible = False b_comidaout.Visible = True MsgboxAsync("Salida a comer enviada con exito","Atención") Mandacomidain End Sub Sub Mandacomidain DateTime.DateFormat = "dd/MM/yyyy" sDate=DateTime.Date(DateTime.Now) DateTime.TimeFormat = "HH:mm:ss" sTime=DateTime.Time(DateTime.Now) cmd.Initialize cmd.Name = "insert_check_GABICO" cmd.Parameters = Array As Object(B4XPages.MainPage.login.ID_EMP, Starter.almacen, sDate &" " &sTime,"MOVIL", "SALIDA A COMER", B4XPages.MainPage.login.user, B4XPages.MainPage.login.sucursal, Starter.latitud, Starter.longitud) reqManager.ExecuteCommand(cmd , "check") B4XPage_Appear End Sub Sub horasalidacomer As Boolean DateTime.DateFormat = "MM/dd/yyyy HH:mm" Dim p As Period p.Hours = 0 p.Minutes = 0 Dim newDate As Long = DateUtils.AddPeriod(DateTime.Now, p) Log(newDate) Log(DateUtils.TicksToString(newDate)) Dim p2 As Period p2.Hours = 1 p2.Minutes = 0 DateTime.DateFormat = "MM/dd/yyyy HH:mm" Dim fecha2 As String = DateTime.Date(DateTime.Now) Dim prueba2() As String = Regex.Split(" ",fecha2) LogColor(prueba2(0),Colors.red) Dim prueba3 As String = prueba2(0) &" "&B4XPages.MainPage.login.horacomin&":00" LogColor(prueba3,Colors.Red) Dim ticks2 As Long = DateTime.DateParse(prueba3) LogColor(ticks2,Colors.red) LogColor(DateTime.Date(ticks2),Colors.red) Dim timeToCheck2 As Long = DateUtils.AddPeriod(ticks2, p2) LogColor(DateUtils.TicksToString(timeToCheck2),Colors.red) DateTime.TimeFormat = "hhmm" Dim p3 As Period p3.Hours = 0 p3.Minutes = 0 DateTime.DateFormat = "MM/dd/yyyy HH:mm" Dim fecha As String = DateTime.Date(DateTime.Now) Dim prueba1() As String = Regex.Split(" ",fecha) Log(prueba1(0)) Dim prueba As String = prueba1(0) &" "&B4XPages.MainPage.login.horacomin&":00" LogColor(prueba,Colors.Red) Dim ticks As Long = DateTime.DateParse(prueba) Log(ticks) Dim timeToCheck As Long = DateUtils.AddPeriod(ticks, p3) Log(DateUtils.TicksToString(timeToCheck)) If newDate >= timeToCheck And newDate < timeToCheck2 Then donde = "0" Return True Else If newDate > timeToCheck2 Then donde = "1" mensaje = "Tu horario de comida ya paso, ingresa el codigo" Return False Else If newDate < timeToCheck Then donde = "2" mensaje = "Aun no es tu horario de comida, ingresa el codigo" Return False Else Return False End If End Sub Private Sub b_aceptar_Click mandacodigo End Sub Private Sub p_validacion_Click End Sub Private Sub b_cancelarcodigo_Click et_codigo.Text = "" p_validacion.Visible = False End Sub Sub mandacodigo If et_codigo.Text <> "" Then Dim cmd As DBCommand cmd.Initialize cmd.Name = "select_codigo_GABICO" cmd.Parameters = Array As Object(B4XPages.MainPage.login.user, et_codigo.Text) reqManager.ExecuteQuery(cmd , 0, "CODIGO") Else If et_codigo.Text = "" Then ToastMessageShow("No has ingresado ningun codigo",True) End If End Sub Private Sub b_gestionadas_Click DateTime.DateFormat = "dd/MM/yyyy" sDate="%" & DateTime.Date(DateTime.Now) & "%" Log(sDate&" "&B4XPages.MainPage.login.user) If p_scroll.Visible = False Then C = Starter.skmt.ExecQuery2("SELECT * FROM CHECADO WHERE USUARIO = ? AND FECHA LIKE ?",Array As String( B4XPages.MainPage.login.user, sDate)) If c.RowCount > 0 Then c.Position = 0 Log(c.GetString("ESTATUS")) If c.GetString("ESTATUS") = "ENTRADA" Or c.GetString("ESTATUS") = "SALIDA A COMER" Or c.GetString("ESTATUS") = "REGRESO DE COMER" Then If Not(Subs.IsConnectedToInternet) Then MsgboxAsync("Habilita los datos del celular","Atención") B4XPage_Appear Else If distance > 200 Then Log("aqui") MsgboxAsync("No estas cerca del punto asignado","Atención") Else If distance < 200 Then If p_qr.IsInitialized And p_qr.Visible = True Then Log("PANEL TRABAJADAS INVISIBLE") p_qr.Visible = False p_trabajadas.Visible = True p_trabajadas.BringToFront Else p_trabajadas.Visible = True End If botongestionadas End If End If Else Log(8) MsgboxAsync("Por favor hacer el check-in","Atención") End If Else Log(9) MsgboxAsync("Por favor hacer el check-in","Atención") End If Else MsgboxAsync("Necesitas acabar la gestion actual.","Atención") End If End Sub Private Sub cb_aprobadas_CheckedChange(Checked As Boolean) botongestionadas End Sub Private Sub cb_rechazadas_CheckedChange(Checked As Boolean) botongestionadas End Sub Sub botongestionadas c = Starter.skmt.ExecQuery("SELECT HIST_PR_NOMBRE, HIST_PR_ESTATUS FROM HIST_PROMOTORIA") If c.RowCount > 0 Then If cb_aprobadas.Checked = False And cb_rechazadas.Checked = False Then c = Starter.skmt.ExecQuery("SELECT HIST_PR_NOMBRE, HIST_PR_ESTATUS FROM HIST_PROMOTORIA") If c.RowCount > 0 Then clv_gestionadas.Clear For i = 0 To c.RowCount - 1 c.Position = i clv_gestionadas.Add(CreateListItem(c.GetString("HIST_PR_NOMBRE"),c.GetString("HIST_PR_ESTATUS")),i) Next c.Close Else clv_gestionadas.Clear End If Else If cb_aprobadas.Checked = True And cb_rechazadas.Checked = True Then c = Starter.skmt.ExecQuery("SELECT HIST_PR_NOMBRE, HIST_PR_ESTATUS FROM HIST_PROMOTORIA") If c.RowCount > 0 Then clv_gestionadas.Clear For i = 0 To c.RowCount - 1 c.Position = i clv_gestionadas.Add(CreateListItem(c.GetString("HIST_PR_NOMBRE"),c.GetString("HIST_PR_ESTATUS")),i) Next c.Close Else clv_gestionadas.Clear End If Else If cb_aprobadas.Checked = True And cb_rechazadas.Checked = False Then c = Starter.skmt.ExecQuery2("SELECT HIST_PR_NOMBRE, HIST_PR_ESTATUS FROM HIST_PROMOTORIA WHERE HIST_PR_ESTATUS = ?", Array As String("APROBADO")) If c.RowCount > 0 Then clv_gestionadas.Clear For i = 0 To c.RowCount - 1 c.Position = i clv_gestionadas.Add(CreateListItem(c.GetString("HIST_PR_NOMBRE"),c.GetString("HIST_PR_ESTATUS")),i) Next c.Close Else clv_gestionadas.Clear End If Else If cb_aprobadas.Checked = False And cb_rechazadas.Checked = True Then c = Starter.skmt.ExecQuery2("SELECT HIST_PR_NOMBRE, HIST_PR_ESTATUS FROM HIST_PROMOTORIA WHERE HIST_PR_ESTATUS <> ?", Array As String("APROBADO")) If c.RowCount > 0 Then clv_gestionadas.Clear For i = 0 To c.RowCount - 1 c.Position = i clv_gestionadas.Add(CreateListItem(c.GetString("HIST_PR_NOMBRE"),c.GetString("HIST_PR_ESTATUS")),i) Next c.Close Else clv_gestionadas.Clear End If End If Else p_trabajadas.Visible = False ToastMessageShow("Aun no hay gestiones",True) End If End Sub Sub CreateListItem(nombre As String, estatus As String) As Panel Dim p As B4XView = xui.CreatePanel("") ' p.SetLayoutAnimated(0, 0, 0, 1, 180) p.LoadLayout("gestiones") p.Height= 200dip ' p.Width = clv_orden.GetBase.Width ' contenidoorden.Width = Panelchecar.Width ' lb_numorden.Height = p.Height *0.8 l_nombre.Text = nombre l_estatus.Text = estatus ' Log(p.Width) Return p End Sub