diff --git a/B4A/C_principal.bas b/B4A/C_principal.bas
index 80ca505..c39b440 100644
--- a/B4A/C_principal.bas
+++ b/B4A/C_principal.bas
@@ -90,31 +90,23 @@ Private Sub B4XPage_Created (Root1 As B4XView)
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
@@ -129,8 +121,7 @@ Private Sub B4XPage_Appear
End Select
Loop
Else
-
- Log("ENTRE")
+' Log("ENTRE")
StartService(Tracker)
m_lat = "0"
@@ -172,7 +163,7 @@ Private Sub B4XPage_Appear
b_checkin.visible = True
b_checout.visible = False
b_comidain.Visible = False
- b_comidaout.Visible = False
+ b_comidaout.Visible = False
End If
'' CallSubDelayed(Tracker, "StartFLPSmall")
@@ -181,7 +172,7 @@ Private Sub B4XPage_Appear
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")
+' Log("hice esto")
End If
bu.Initialize
@@ -471,7 +462,7 @@ Private Sub b_checkin_Click
p_validacion.Visible = True
l_codigo.Text = "Ingresa el codigo para el CHECK-IN."
- End If
+ 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)
@@ -690,49 +681,49 @@ Private Sub b_gestion_Click
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
+ 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
+ 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
+ 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 = ""
+ 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
+ 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
- End If
Else
MsgboxAsync("Por favor hacer el check-in","Atención")
End If
@@ -916,7 +907,7 @@ Sub ajustaTamano
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
+ End If
p_gestion.Height = b_cancelar.Top + 150
ScrollView1.Panel.Height = p_gestion.Height
End Sub
@@ -1135,7 +1126,7 @@ Sub mandaPendientes
If c.RowCount > 0 Then
For i = 0 To c.RowCount -1
c.Position=i
- Dim cmd As DBCommand
+ 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"))
@@ -1412,7 +1403,7 @@ End Sub
Private Sub b_comidain_Click
If p_scroll.Visible = False Then
- Log("Cumple panel invisible")
+ Log("Cumple panel invisible")
If horasalidacomer Then
If Not(Subs.IsConnectedToInternet) Then
Msgbox("Habilita los datos del celular","Atención")
@@ -1520,8 +1511,8 @@ Sub horasalidacomer As Boolean
Log(DateUtils.TicksToString(newDate))
Dim p2 As Period
- p2.Hours = 1
- p2.Minutes = 0
+ 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)
@@ -1567,7 +1558,7 @@ Sub horasalidacomer As Boolean
End Sub
Private Sub b_aceptar_Click
- mandacodigo
+ mandacodigo
End Sub
Private Sub p_validacion_Click
@@ -1644,7 +1635,7 @@ Private Sub cb_rechazadas_CheckedChange(Checked As Boolean)
botongestionadas
End Sub
-Sub botongestionadas
+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
diff --git a/B4A/Files/errormanager.bal b/B4A/Files/errormanager.bal
new file mode 100644
index 0000000..50d6f73
Binary files /dev/null and b/B4A/Files/errormanager.bal differ
diff --git a/B4A/Gabinete roit.b4a b/B4A/Gabinete roit.b4a
index f249767..3dd198c 100644
--- a/B4A/Gabinete roit.b4a
+++ b/B4A/Gabinete roit.b4a
@@ -1,26 +1,27 @@
Build1=Default,gabinete.keymon.lat
File1=alert2.png
-File10=gestion.bal
-File11=gestion_sup.bal
-File12=gestiones.bal
-File13=izquierda.png
-File14=kmt.db
-File15=login.bal
-File16=MainPage.bal
-File17=mas.png
-File18=menos.png
-File19=principal.bal
+File10=gabinete1.png
+File11=gestion.bal
+File12=gestion_sup.bal
+File13=gestiones.bal
+File14=izquierda.png
+File15=kmt.db
+File16=login.bal
+File17=MainPage.bal
+File18=mas.png
+File19=menos.png
File2=atras.png
-File20=qr.png
-File21=Roit.png
-File22=supervisor.bal
+File20=principal.bal
+File21=qr.png
+File22=Roit.png
+File23=supervisor.bal
File3=camara.png
File4=derecha.png
File5=engranes.png
-File6=frintal.png
-File7=from2.png
-File8=gabinete.png
-File9=gabinete1.png
+File6=errormanager.bal
+File7=frintal.png
+File8=from2.png
+File9=gabinete.png
FileGroup1=Default Group
FileGroup10=Default Group
FileGroup11=Default Group
@@ -36,6 +37,7 @@ FileGroup2=Default Group
FileGroup20=Default Group
FileGroup21=Default Group
FileGroup22=Default Group
+FileGroup23=Default Group
FileGroup3=Default Group
FileGroup4=Default Group
FileGroup5=Default Group
@@ -72,14 +74,15 @@ Library6=bitmapcreator
Library7=byteconverter
Library8=camera
Library9=compressstrings
-ManifestCode='This code will be applied to the manifest file during compilation.~\n~'You do not need to modify it in most cases.~\n~'See this link for for more information: https://www.b4x.com/forum/showthread.php?p=78136~\n~AddManifestText(~\n~~\n~)~\n~SetApplicationAttribute(android:icon, "@drawable/icon")~\n~SetApplicationAttribute(android:label, "$LABEL$")~\n~CreateResourceFromFile(Macro, Themes.LightTheme)~\n~SetApplicationAttribute(android:usesCleartextTraffic, "true")~\n~SetServiceAttribute(Tracker, android:foregroundServiceType, "location")~\n~'SetServiceAttribute(android:requestLegacyExternalStorage, True)~\n~~\n~AddApplicationText(~\n~~\n~ ~\n~)~\n~~\n~AddManifestText(~\n~~\n~)~\n~~\n~AddManifestText(~\n~~\n~ )~\n~~\n~AddPermission(android.permission.ACCESS_BACKGROUND_LOCATION)~\n~~\n~AddPermission("android.permission.MANAGE_EXTERNAL_STORAGE")~\n~~\n~~\n~AddManifestText(~\n~)~\n~~\n~~\n~'End of default text.~\n~~\n~'/////////////////////// App Updating ////////////////~\n~ AddManifestText(~\n~ )~\n~ AddApplicationText(~\n~ ~\n~ ~\n~ ~\n~ )~\n~ CreateResource(xml, provider_paths,~\n~ ~\n~ ~\n~ ~\n~ ~\n~ ~\n~ )~\n~AddManifestText()~\n~AddManifestText()~\n~AddManifestText()~\n~AddManifestText()~\n~~\n~AddPermission(android.permission.REQUEST_INSTALL_PACKAGES)~\n~AddPermission(android.permission.INTERNET)~\n~AddPermission(android.permission.INSTALL_PACKAGES)~\n~AddPermission(android.permission.READ_EXTERNAL_STORAGE)~\n~AddPermission(android.permission.WRITE_EXTERNAL_STORAGE)~\n~AddPermission(android.permission.READ_PHONE_STATE)~\n~AddPermission(android.permission.WAKE_LOCK)~\n~CreateResourceFromFile(Macro, JhsIceZxing1.CaturePortrait)~\n~AddPermission("android.permission.MANAGE_EXTERNAL_STORAGE")~\n~SetApplicationAttribute(android:largeHeap, "true")~\n~AddPermission("android.permission.MANAGE_EXTERNAL_STORAGE")~\n~~\n~AddPermission("android.permission.POST_NOTIFICATIONS")~\n~~\n~AddManifestText()~\n~AddPermission(android.permission.INTERNET)~\n~SetApplicationAttribute(android:allowBackup, "false")~\n~
+ManifestCode='This code will be applied to the manifest file during compilation.~\n~'You do not need to modify it in most cases.~\n~'See this link for for more information: https://www.b4x.com/forum/showthread.php?p=78136~\n~AddManifestText(~\n~~\n~)~\n~SetApplicationAttribute(android:icon, "@drawable/icon")~\n~SetApplicationAttribute(android:label, "$LABEL$")~\n~CreateResourceFromFile(Macro, Themes.LightTheme)~\n~SetApplicationAttribute(android:usesCleartextTraffic, "true")~\n~SetServiceAttribute(Tracker, android:foregroundServiceType, "location")~\n~'SetServiceAttribute(android:requestLegacyExternalStorage, True)~\n~~\n~AddApplicationText(~\n~~\n~ ~\n~)~\n~~\n~AddManifestText(~\n~~\n~)~\n~~\n~AddManifestText(~\n~~\n~ )~\n~~\n~AddPermission(android.permission.ACCESS_BACKGROUND_LOCATION)~\n~~\n~'AddPermission("android.permission.MANAGE_EXTERNAL_STORAGE")~\n~~\n~~\n~'AddManifestText(~\n~')~\n~~\n~~\n~'End of default text.~\n~~\n~'/////////////////////// App Updating ////////////////~\n~' AddManifestText(~\n~' )~\n~ AddApplicationText(~\n~ ~\n~ ~\n~ ~\n~ )~\n~ CreateResource(xml, provider_paths,~\n~ ~\n~ ~\n~ ~\n~ ~\n~ ~\n~ )~\n~AddManifestText()~\n~AddManifestText()~\n~AddManifestText()~\n~AddManifestText()~\n~~\n~AddPermission(android.permission.REQUEST_INSTALL_PACKAGES)~\n~AddPermission(android.permission.INTERNET)~\n~AddPermission(android.permission.INSTALL_PACKAGES)~\n~'AddPermission(android.permission.READ_EXTERNAL_STORAGE)~\n~'AddPermission(android.permission.WRITE_EXTERNAL_STORAGE)~\n~'AddPermission(android.permission.READ_PHONE_STATE)~\n~AddPermission(android.permission.WAKE_LOCK)~\n~CreateResourceFromFile(Macro, JhsIceZxing1.CaturePortrait)~\n~'AddPermission("android.permission.MANAGE_EXTERNAL_STORAGE")~\n~SetApplicationAttribute(android:largeHeap, "true")~\n~'AddPermission("android.permission.MANAGE_EXTERNAL_STORAGE")~\n~~\n~AddPermission("android.permission.POST_NOTIFICATIONS")~\n~~\n~AddManifestText()~\n~AddPermission(android.permission.INTERNET)~\n~SetApplicationAttribute(android:allowBackup, "false")~\n~
Module1=appUpdater
Module10=DBRequestManager
-Module11=login
-Module12=QRGenerator
-Module13=Starter
-Module14=Subs
-Module15=Tracker
+Module11=errorManager
+Module12=login
+Module13=QRGenerator
+Module14=Starter
+Module15=Subs
+Module16=Tracker
Module2=B4x_Transition
Module3=|relative|..\B4XMainPage
Module4=BatteryUtilities
@@ -88,15 +91,15 @@ Module6=C_supervisor
Module7=C_UpdateAvailable
Module8=CameraExClass
Module9=CameraExClass2
-NumberOfFiles=22
+NumberOfFiles=23
NumberOfLibraries=28
-NumberOfModules=15
+NumberOfModules=16
Version=12.8
@EndOfDesignText@
#Region Project Attributes
#ApplicationLabel: Gabinete
#VersionCode: 1
- #VersionName: 4.03.05
+ #VersionName: 4.03.06
'SupportedOrientations possible values: unspecified, landscape or portrait.
#SupportedOrientations: portrait
#CanInstallToExternalStorage: False
diff --git a/B4A/Gabinete roit.b4a.meta b/B4A/Gabinete roit.b4a.meta
index ac83b21..b2303a6 100644
--- a/B4A/Gabinete roit.b4a.meta
+++ b/B4A/Gabinete roit.b4a.meta
@@ -6,6 +6,7 @@ ModuleBookmarks12=
ModuleBookmarks13=
ModuleBookmarks14=
ModuleBookmarks15=
+ModuleBookmarks16=
ModuleBookmarks2=
ModuleBookmarks3=
ModuleBookmarks4=
@@ -22,6 +23,7 @@ ModuleBreakpoints12=
ModuleBreakpoints13=
ModuleBreakpoints14=
ModuleBreakpoints15=
+ModuleBreakpoints16=
ModuleBreakpoints2=
ModuleBreakpoints3=
ModuleBreakpoints4=
@@ -38,6 +40,7 @@ ModuleClosedNodes12=
ModuleClosedNodes13=
ModuleClosedNodes14=
ModuleClosedNodes15=
+ModuleClosedNodes16=
ModuleClosedNodes2=
ModuleClosedNodes3=
ModuleClosedNodes4=
@@ -46,6 +49,6 @@ ModuleClosedNodes6=
ModuleClosedNodes7=
ModuleClosedNodes8=
ModuleClosedNodes9=
-NavigationStack=C_principal,horaentrada,574,0,C_principal,ImageView2_Click,614,6,C_principal,botongestionadas,1627,0,C_principal,b_gestionadas_Click,1606,6,C_principal,b_comidain_Click,1429,0,C_principal,ajustaTamano2,918,5,C_principal,ajustaTamano,900,0,C_supervisor,Class_Globals,0,0,B4XMainPage,Class_Globals,19,0
+NavigationStack=Subs,fechaKMT,89,0,Starter,Process_Globals,35,0,Starter,Service_Destroy,79,0,Visual Designer,login.bal,-100,3,Visual Designer,errormanager.bal,-100,1,Starter,Application_Error,67,0,errorManager,Activity_Resume,93,5,login,b_inicio_Click,109,0,login,JobDone,145,0,login,b_inicio_LongClick,119,6,Main,Process_Globals,21,0
SelectedBuild=0
-VisibleModules=13,3,11,5,6,10,14,15,12,1
+VisibleModules=14,3,12,5,6,10,15,16,11
diff --git a/B4A/Starter.bas b/B4A/Starter.bas
index 46f3b3f..dd7970d 100644
--- a/B4A/Starter.bas
+++ b/B4A/Starter.bas
@@ -39,6 +39,9 @@ Sub Process_Globals
Dim horacomin As String
Dim horacomout As String
Dim trabaja As Int
+ 'Para los Logs
+ Dim logs As StringBuilder
+ Private logcat As LogCat
End Sub
Sub Service_Create
@@ -61,8 +64,19 @@ Sub Service_TaskRemoved
Timer1.Enabled = False
End Sub
-'Return true to allow the OS default exceptions handler to handle the uncaught exception.
+'Return true to allow the OS default exceptions handler to handle the uncaught exception. 'Para los Logs
Sub Application_Error (Error As Exception, StackTrace As String) As Boolean
+ 'wait for 500ms to allow the logs to be updated.
+ Log(">>>>>>>>> ERROR")
+ Dim jo As JavaObject
+ Dim l As Long = 500: jo.InitializeStatic("java.lang.Thread").RunMethod("sleep", Array(l)) 'Sleep 500ms
+ logcat.LogCatStop
+ logs.Initialize
+ logs.Append(Application.LabelName & " Ver " & Application.VersionName & CRLF)
+ logs.Append(StackTrace)
+ Subs.revisaBD
+ Subs.errorLog.ExecNonQuery2("INSERT INTO errores(fecha, error) VALUES (?,?)", Array As Object (Subs.fechaKMT(DateTime.now), logs))
+ StartActivity(errorManager)
Return True
End Sub
@@ -70,7 +84,6 @@ Sub Service_Destroy
End Sub
-
Private Sub Timer1_Tick
' ToastMessageShow("Timer",False)
' If logger Then Log("Siguiente actuaizacion " & DateTime.Time(DateTime.Now + Interval * 1000))
diff --git a/B4A/Subs.bas b/B4A/Subs.bas
index ec5cf4e..0f958c7 100644
--- a/B4A/Subs.bas
+++ b/B4A/Subs.bas
@@ -9,7 +9,7 @@ Version=11.8
Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
-
+ Dim errorLog As SQL 'Requiere la libreria "SQL"
End Sub
Sub revisaBD 'ignore
@@ -23,6 +23,24 @@ Sub revisaBD 'ignore
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_SUPERVISOR(HIST_CHKS_PROYECTO TEXT, HIST_CHKS_NOMPROY TEXT, HIST_CHKS_SUCURSAL TEXT,HIST_CHKS_FORMATO TEXT, HIST_CHKS_SUPERVISOR TEXT, HIST_CHKS_PROMOTOR TEXT, HIST_CHKS_FECHA TEXT, HIST_CHKS_ID TEXT, HIST_CHKS_CALIF_MULTIPLE TEXT, HIST_CHKS_CALIF_ABIERTA TEXT, HIST_CHKS_HORARIO TEXT, ENVIADO INT)")
' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS HIST_SUPERVISOR")
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS trabaja(sitrabaja TEXT)")
+ If Not(errorLog.IsInitialized) Then errorLog.Initialize(File.DirInternal, "errorLog.db", True)
+ errorLog.ExecNonQuery("CREATE TABLE IF NOT EXISTS errores(fecha INTEGER, error TEXT)")
+End Sub
+
+'Limpiamos la tabla errorLog de la BD
+Sub deleteErrorLog_DB 'ignore
+ errorLog.ExecNonQuery("delete from errores")
+ errorLog.ExecNonQuery("vacuum;")
+ ToastMessageShow("BD Errores Borrada", False)
+End Sub
+
+'Borramos renglones extra de la tabla de errores
+Sub borraArribaDe100Errores 'ignore
+ revisaBD
+ LogColor("Borramos BD de log", Colors.Magenta)
+ errorLog.ExecNonQuery("DELETE FROM errores WHERE fecha NOT in (SELECT fecha FROM errores ORDER BY fecha desc LIMIT 99 )")
+ errorLog.ExecNonQuery("vacuum;")
+ Log("Borramos mas de 100 de errorLog")
End Sub
'Genera una notificacion con importancia alta
@@ -64,4 +82,15 @@ Sub IsConnectedToInternet As Boolean 'ignore
End If
' If logger Then LogColor("Not connected", Colors.red)
Return False
+End Sub
+
+'Convierte una fecha al formato yyMMddHHmmss
+Sub fechaKMT(fecha As String) As String 'ignore
+' Log(fecha)
+ Dim OrigFormat As String = DateTime.DateFormat 'save orig date format
+ DateTime.DateFormat="yyMMddHHmmss"
+ Dim nuevaFecha As String=DateTime.Date(fecha)
+ DateTime.DateFormat=OrigFormat 'return to orig date format
+' Log(nuevaFecha)
+ Return nuevaFecha
End Sub
\ No newline at end of file
diff --git a/B4A/errorManager.bas b/B4A/errorManager.bas
new file mode 100644
index 0000000..4f043b5
--- /dev/null
+++ b/B4A/errorManager.bas
@@ -0,0 +1,167 @@
+B4A=true
+Group=Default Group
+ModulesStructureVersion=1
+Type=Activity
+Version=10.2
+@EndOfDesignText@
+#Region Activity Attributes
+ #FullScreen: False
+ #IncludeTitle: True
+#End Region
+'******************************************************************************
+'Este modulo intercepta los errores de la aplicación mediante "Starter.Application_Error" y muestra una pantalla
+'con el log del error y lo manda al servidor con un query de DBRequestManager, se necesita que exista el query
+'en el "config.properties" llamado "guardaErrores" y que tenga el siguiente texto:
+'
+'sql.guardaErrores=INSERT INTO KELLOGGS.PUSH_INFO (ID, RUTA, FECHA, DATOS) VALUES((?),(?),(?),(?))
+'
+'Agregar estas lineas a "Starter.Process_Globals"
+' 'Para los Logs
+' Dim logs As StringBuilder
+' Private logcat As LogCat
+'
+'Agregar estas lineas a "Starter.Service_Create"
+' 'Para los Logs
+' #if RELEASE
+' logcat.LogCatStart(Array As String("-v","raw","*:F","B4A:v"), "logcat")
+' #end if
+' logs.Initialize
+'
+'Agregar este Sub a "Starter"
+'
+'Return true to allow the OS default exceptions handler to handle the uncaught exception. 'Para los Logs
+'Sub Application_Error (Error As Exception, StackTrace As String) As Boolean
+' 'wait for 500ms to allow the logs to be updated.
+' Dim jo As JavaObject
+' Dim l As Long = 500: jo.InitializeStatic("java.lang.Thread").RunMethod("sleep", Array(l)) 'Sleep 500ms
+' logcat.LogCatStop
+' logs.Append(StackTrace)
+' Subs.revisaBD
+' Subs.errorLog.ExecNonQuery2("INSERT INTO errores(fecha, error) VALUES (?,?)", Array As Object (Subs.fechaKMT(DateTime.now), logs))
+' StartActivity(errorManager)
+' Return True
+'End Sub
+'******************************************************************************
+
+Sub Process_Globals
+ 'These global variables will be declared once when the application starts.
+ 'These variables can be accessed from all modules.
+
+End Sub
+
+Sub Globals
+ 'These global variables will be redeclared each time the activity is created.
+ 'These variables can only be accessed from this module.
+' Dim errorLog As SQL
+ Dim c As Cursor
+ Private p_principal As Panel
+ Private l_titulo As Label
+ Private svScroll As ScrollView
+ Private etText As EditText
+ Private c_continuar As Button
+ Private p_botones As Panel
+ Private b_salir As Button
+End Sub
+
+Sub Activity_Create(FirstTime As Boolean)
+ 'Do not forget to load the layout file created with the visual designer. For example:
+ Activity.LoadLayout("errorManager")
+End Sub
+
+Sub Activity_Resume
+ Dim elError As String = ""
+ Dim laFecha As String = ""
+' svScroll.Initialize(500dip)
+' Activity.AddView(svScroll, 0, 300, 100%x, 80%y)
+ p_principal.Height = Activity.Height
+ p_principal.Width = Activity.Width
+ svScroll.Width = Round(p_principal.Width * 0.9)
+ svScroll.Left = Round(p_principal.Width/2)-Round(svScroll.Width/2)
+ p_botones.Left = Round(p_principal.Width/2)-Round(p_botones.Width/2)
+ p_botones.Top = Activity.Height - (p_botones.Height + 80)
+ etText.Initialize("")
+ svScroll.Panel.AddView(etText, 0, 0, 90%x, 80%y)
+ etText.InputType = etText.INPUT_TYPE_NONE
+ etText.Gravity = Gravity.TOP
+ etText.SingleLine = False
+ etText.Wrap = False
+' Dim lblText, edtText As StringBuilder
+ Dim lbl As Label
+ lbl.Initialize("")
+ Activity.AddView(lbl, 0, 300, 100%x, 100%y) 'ignore
+ etText.Text = ""
+ Subs.revisaBD
+ c = Subs.errorLog.ExecQuery("select * from errores order by fecha desc limit 1")
+ If c.RowCount > 0 Then
+ c.Position = 0
+ elError = c.GetString("error")
+ laFecha = c.GetString("fecha")
+ etText.Text = elError
+ End If
+ c.Close
+ Dim usuario As String = "XXXXX"
+' c = Starter.skmt.ExecQuery("select usuario from usuarioa")
+' If c.RowCount > 0 Then
+' c.Position = 0
+' usuario = c.GetString("USUARIO")
+' End If
+
+' Log("++++++" & Starter.logsStr)
+' etText.Text = etText.Text & Starter.logsStr
+' lbl.TextSize = etText.TextSize
+' lbl.Text = etText.Text
+' Dim su As StringUtils
+' Dim edheight As Int = su.MeasureMultilineTextHeight(lbl, lbl.Text)
+' lbl.RemoveView
+' etText.Height = edheight
+' svScroll.Panel.Height = edheight
+ svScroll.Height = Round(Activity.Height * 0.9)
+' Log(edheight)
+
+ Dim cmd As DBCommand
+ cmd.Initialize
+ cmd.Name = "guardaErrores"
+ cmd.Parameters = Array As Object(laFecha, usuario, laFecha, elError)
+ Log($"Mandamos: ${Subs.fechaKMT(DateTime.Now)}, |${usuario}|, ${Subs.fechaKMT(DateTime.Now)}"$)
+ Starter.reqManager.ExecuteCommand(cmd,"guardaErrores")
+End Sub
+
+Sub Activity_Pause (UserClosed As Boolean)
+
+End Sub
+
+Sub JobDone(Job As HttpJob)
+ Log("errorManager - JobDone")
+ If Job.Success = False Then
+ ToastMessageShow("Error: " & Job.ErrorMessage, True)
+ Else
+ LogColor("JobDone: '" & Starter.reqManager.HandleJob(Job).tag & "' - Registros: " & Starter.reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211110
+ If Job.JobName = "DBRequest" Then
+ Dim result As DBResult = Starter.reqManager.HandleJob(Job)
+ If result.Tag = "guardaErrores" Then 'query tag
+ For Each records() As Object In result.Rows
+ For Each k As String In result.Columns.Keys
+ Log("GuardaErrores: " & k & ": " & records(result.Columns.Get(k)))
+ Next
+ Next
+ End If
+ End If
+ End If
+ Job.Release
+End Sub
+
+Private Sub c_continuar_Click
+' Subs.iniciaActividad("Principal")
+' B4XPages.ShowPage("Principal")
+End Sub
+
+Private Sub b_salir_Click
+ cierraActividades
+End Sub
+
+Sub cierraActividades
+ Log("closing activities")
+ Dim jo As JavaObject
+ jo.InitializeContext
+ jo.RunMethod("finishAffinity", Null)
+End Sub
\ No newline at end of file
diff --git a/B4A/login.bas b/B4A/login.bas
index 302d753..151089f 100644
--- a/B4A/login.bas
+++ b/B4A/login.bas
@@ -122,6 +122,10 @@ Private Sub b_inicio_Click
' B4XPages.ShowPage ("Principal")
End Sub
+Private Sub b_inicio_LongClick
+ Private X As Int = "A"
+End Sub
+
Sub JobDone (Job As HttpJob)
If Job.Success = False Then
ToastMessageShow("Error: " & Job.ErrorMessage, True)
@@ -133,7 +137,7 @@ Sub JobDone (Job As HttpJob)
If result.Tag = "usuario" Then 'query tag
For Each records() As Object In result.Rows
For Each k As String In result.Columns.Keys
- Log(result.Tag & ": " & k & ": " & records(result.Columns.Get(k)))
+' Log(result.Tag & ": " & k & ": " & records(result.Columns.Get(k)))
Next
If records(result.Columns.Get ("USUARIO")) = "OKActivo" Then
Starter.almacen = records(result.Columns.Get ("CAT_LO_AGENCIA"))
@@ -174,10 +178,10 @@ Sub JobDone (Job As HttpJob)
If perfil = 3 Then
CallSubDelayed(Starter,"ENVIA_ULTIMA_GPS")
B4XPages.ShowPage("Principal")
- Log("AQUI ANDO")
+' Log("AQUI ANDO")
Else If perfil = 2 Then
CallSubDelayed(Starter,"ENVIA_ULTIMA_GPS")
- Log("AQUI ACA")
+' Log("AQUI ACA")
B4XPages.ShowPage("Supervisor")
End If
Else If Starter.trabaja = 0 Then