- SE AGREGO CODIGO PARA EN ELNVIO DE ERRORES

This commit is contained in:
2024-03-23 16:04:24 -06:00
parent 79d74e2fdb
commit 2d4e8dd2d2
8 changed files with 302 additions and 92 deletions

View File

@@ -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

BIN
B4A/Files/errormanager.bal Normal file

Binary file not shown.

View File

@@ -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~<uses-sdk android:minSdkVersion="5" android:targetSdkVersion="33"/>~\n~<supports-screens android:largeScreens="true" ~\n~ android:normalScreens="true" ~\n~ android:smallScreens="true" ~\n~ android:anyDensity="true"/>)~\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~<meta-data~\n~ android:name="com.google.android.geo.API_KEY"~\n~ android:value="AIzaSyBlBnx3O-DncOSv3oFIp-12wgujOYYcl-U"/>~\n~ <meta-data android:name="com.google.android.gms.version"~\n~ android:value="@integer/google_play_services_version" />~\n~)~\n~~\n~AddManifestText(~\n~<uses-permission~\n~ android:name="android.permission.ACCESS_FINE_LOCATION"~\n~ android:maxSdkVersion="33" />~\n~)~\n~~\n~AddManifestText(~\n~<uses-permission ~\n~ android:name="android.permission.ACCESS_COARSE_LOCATION"~\n~ android:maxSdkVersion="33" />~\n~ )~\n~~\n~AddPermission(android.permission.ACCESS_BACKGROUND_LOCATION)~\n~~\n~AddPermission("android.permission.MANAGE_EXTERNAL_STORAGE")~\n~~\n~~\n~AddManifestText(<uses-permission~\n~android:name="android.permission.WRITE_EXTERNAL_STORAGE"~\n~android:maxSdkVersion="33" />~\n~)~\n~~\n~~\n~'End of default text.~\n~~\n~'/////////////////////// App Updating ////////////////~\n~ AddManifestText(<uses-permission~\n~ android:name="android.permission.WRITE_EXTERNAL_STORAGE"~\n~ android:maxSdkVersion="33" />~\n~ )~\n~ AddApplicationText(~\n~ <provider~\n~ android:name="android.support.v4.content.FileProvider"~\n~ android:authorities="$PACKAGE$.provider"~\n~ android:exported="false"~\n~ android:grantUriPermissions="true">~\n~ <meta-data~\n~ android:name="android.support.FILE_PROVIDER_PATHS"~\n~ android:resource="@xml/provider_paths"/>~\n~ </provider>~\n~ )~\n~ CreateResource(xml, provider_paths,~\n~ <paths>~\n~ <external-files-path name="name" path="" />~\n~ <files-path name="name" path="" />~\n~ <files-path name="name" path="shared" />~\n~ </paths>~\n~ )~\n~AddManifestText(<uses-feature android:name="android.hardware.telephony" android:required="false" />)~\n~AddManifestText(<uses-feature android:name="android.hardware.camera" android:required="false" />)~\n~AddManifestText(<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />)~\n~AddManifestText(<uses-feature android:name="android.hardware.camera.flash" android:required="false" />)~\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(<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" android:maxSdkVersion="33" />)~\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~<uses-sdk android:minSdkVersion="5" android:targetSdkVersion="34"/>~\n~<supports-screens android:largeScreens="true" ~\n~ android:normalScreens="true" ~\n~ android:smallScreens="true" ~\n~ android:anyDensity="true"/>)~\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~<meta-data~\n~ android:name="com.google.android.geo.API_KEY"~\n~ android:value="AIzaSyBlBnx3O-DncOSv3oFIp-12wgujOYYcl-U"/>~\n~ <meta-data android:name="com.google.android.gms.version"~\n~ android:value="@integer/google_play_services_version" />~\n~)~\n~~\n~AddManifestText(~\n~<uses-permission~\n~ android:name="android.permission.ACCESS_FINE_LOCATION"~\n~ android:maxSdkVersion="34" />~\n~)~\n~~\n~AddManifestText(~\n~<uses-permission ~\n~ android:name="android.permission.ACCESS_COARSE_LOCATION"~\n~ android:maxSdkVersion="34" />~\n~ )~\n~~\n~AddPermission(android.permission.ACCESS_BACKGROUND_LOCATION)~\n~~\n~'AddPermission("android.permission.MANAGE_EXTERNAL_STORAGE")~\n~~\n~~\n~'AddManifestText(<uses-permission~\n~'android:name="android.permission.WRITE_EXTERNAL_STORAGE"~\n~'android:maxSdkVersion="34" />~\n~')~\n~~\n~~\n~'End of default text.~\n~~\n~'/////////////////////// App Updating ////////////////~\n~' AddManifestText(<uses-permission~\n~' android:name="android.permission.WRITE_EXTERNAL_STORAGE"~\n~' android:maxSdkVersion="34" />~\n~' )~\n~ AddApplicationText(~\n~ <provider~\n~ android:name="android.support.v4.content.FileProvider"~\n~ android:authorities="$PACKAGE$.provider"~\n~ android:exported="false"~\n~ android:grantUriPermissions="true">~\n~ <meta-data~\n~ android:name="android.support.FILE_PROVIDER_PATHS"~\n~ android:resource="@xml/provider_paths"/>~\n~ </provider>~\n~ )~\n~ CreateResource(xml, provider_paths,~\n~ <paths>~\n~ <external-files-path name="name" path="" />~\n~ <files-path name="name" path="" />~\n~ <files-path name="name" path="shared" />~\n~ </paths>~\n~ )~\n~AddManifestText(<uses-feature android:name="android.hardware.telephony" android:required="false" />)~\n~AddManifestText(<uses-feature android:name="android.hardware.camera" android:required="false" />)~\n~AddManifestText(<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />)~\n~AddManifestText(<uses-feature android:name="android.hardware.camera.flash" android:required="false" />)~\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(<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" android:maxSdkVersion="33" />)~\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

View File

@@ -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

View File

@@ -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))

View File

@@ -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

167
B4A/errorManager.bas Normal file
View File

@@ -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

View File

@@ -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