Files
Gabinete-Roit/B4A/C_principal.bas
2025-09-01 13:34:23 -06:00

1719 lines
58 KiB
QBasic

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
Private l_version 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
B4XPages.MainPage.login.tipoenvio = "Envio automatico"
l_version.Text = Application.VersionName
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 < 2000000000000000000000000000 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