mirror of
https://github.com/KeymonSoft/Kelloggs_v4.git
synced 2026-04-17 18:26:11 +00:00
- Cambios en DBRequestManagerW para evitar un error cuando no hay internet
270 lines
11 KiB
QBasic
270 lines
11 KiB
QBasic
B4A=true
|
|
Group=Default Group
|
|
ModulesStructureVersion=1
|
|
Type=Service
|
|
Version=9.85
|
|
@EndOfDesignText@
|
|
#Region Service Attributes
|
|
#StartAtBoot: False
|
|
#ExcludeFromLibrary: True
|
|
#End Region
|
|
|
|
Sub Process_Globals
|
|
'These global variables will be declared once when the application starts.
|
|
'These variables can be accessed from all modules.
|
|
Public rp As RuntimePermissions
|
|
' Dim s As C_Subs
|
|
Dim reqManager As DBRequestManager
|
|
Dim skmt, errorLog As SQL
|
|
Dim ruta As String = File.DirInternal
|
|
Public BluetoothState As Boolean
|
|
Dim btAdmin As BluetoothAdmin
|
|
Dim intentosImpresora As Int = 0
|
|
Dim revisandoImpresora As Boolean = False
|
|
Public FLP As FusedLocationProvider
|
|
Dim GPS As GPS
|
|
'Para ENVIA_ULTIMA_GPS
|
|
Dim Timer1 As Timer
|
|
Dim Interval As Int = 600
|
|
Dim DBReqServer As String
|
|
Dim pe As PhoneEvents
|
|
Dim ph As Phone
|
|
Dim marcaCel As String = ph.manufacturer
|
|
Dim rutaTipo As String = "TRADICIONAL"
|
|
'Para los Logs
|
|
Dim logs As StringBuilder
|
|
Private logcat As LogCat
|
|
Dim rutaV As String = ""
|
|
Dim montoActual, clientesTotal, clientesVenta, clientesVisitados, almacen, rutaPreventa, CANTIDADPROD As String 'ignore
|
|
Dim lat_gps, lon_gps As String
|
|
Dim ubicacionActual As Location
|
|
Dim FECHA_HOY As String
|
|
Dim HORA As String
|
|
Dim usuario As String
|
|
Dim tipov As String
|
|
Dim MAC_IMPRESORA As String
|
|
Dim batt As Int
|
|
Dim ultimaActualizacionGPS As String = 235959 '
|
|
Dim fechaRuta As String 'ignore
|
|
Dim tiempos As Map
|
|
Dim Logger As Boolean = True
|
|
Dim ultimaActividad As String = ""
|
|
Dim boleta As String = 0
|
|
Dim sesion As Map
|
|
' dim cp_running as Boolean = false
|
|
Dim enVenta As Boolean = False
|
|
Dim pingShell As Boolean = False
|
|
Dim errorConnDBReq As Boolean = False
|
|
Dim GUID As String = ""
|
|
Dim passSupervisor As String = "135###" ' Valor predeterminado DIFERENTE a ""
|
|
Dim semana As Int = 0
|
|
dim revisandoNotifiaciones as Boolean = false
|
|
End Sub
|
|
|
|
Sub Service_Create
|
|
'This is the program entry point.
|
|
'This is a good place to load resources that are not specific to a single activity.
|
|
' s.Initialize(Me, "Subs") 'Inicializamos la clase Subs
|
|
If Logger Then LogColor("'/////////////////////////////////////////////////////////////////////////////////////////////", Colors.Green)
|
|
If Logger Then LogColor("'///////////////////////////////////// Iniciamos Starter /////////////////////////////////", Colors.Green)
|
|
If Logger Then LogColor("'/////////////////////////////////////////////////////////////////////////////////////////////", Colors.Green)
|
|
Timer1.Initialize("Timer1", Interval * 1000)
|
|
Timer1.Enabled = True
|
|
GPS.Initialize("GPS")
|
|
ubicacionActual.Initialize
|
|
Subs.revisaBD
|
|
' promociones.Initialize
|
|
pe.Initialize("pe") 'Para obtener la bateria
|
|
' skmt = s.dbInit 'Inicializamos BD.
|
|
DBReqServer = "http://keymon.net:1781"
|
|
' DBReqServer = "http://keymon.lat:9003"
|
|
Private c As Cursor = skmt.ExecQuery($"select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = 'SERVER'"$)
|
|
If c.RowCount > 0 Then
|
|
c.Position = 0
|
|
DBReqServer = c.GetString("CAT_VA_VALOR")
|
|
End If
|
|
c.Close
|
|
reqManager.Initialize(Me, DBReqServer) 'Inicializamos reqManager.
|
|
If Logger Then Log($"Starter reqManager server: ${DBReqServer}"$)
|
|
'Para los Logs
|
|
' #if RELEASE
|
|
logcat.LogCatStart(Array As String("-v","raw","*:F","B4A:v"), "logcat")
|
|
' #end if
|
|
logs.Initialize
|
|
sesion.Initialize
|
|
End Sub
|
|
|
|
Sub Service_Start (StartingIntent As Intent)
|
|
Service.StopAutomaticForeground 'Starter service can start in the foreground state in some edge cases.
|
|
#if DEBUG
|
|
Logger = True
|
|
#else
|
|
Logger = False
|
|
#End If
|
|
End Sub
|
|
|
|
Sub Subs_dbOk(success As Boolean)
|
|
LogColor($"Conexión con base de datos: ${success}"$, Colors.red)
|
|
End Sub
|
|
|
|
Sub Service_TaskRemoved
|
|
'This event will be raised when the user removes the app from the recent apps list.
|
|
Timer1.Enabled=False
|
|
End Sub
|
|
|
|
'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("Ver " & Application.VersionName & CRLF)
|
|
logs.Append("R:" & Subs.traeRuta & CRLF)
|
|
logs.Append(StackTrace)
|
|
Subs.revisaBD
|
|
LogColor(logs, Colors.blue)
|
|
skmt.ExecNonQuery($"INSERT INTO errores(fecha, error) VALUES ('${Subs.fechaKMT(DateTime.now)}', '${logs}')"$)
|
|
LogColor("insertamos Error", Colors.red)
|
|
StartActivity(errorManager)
|
|
Return True
|
|
End Sub
|
|
|
|
Sub Service_Destroy
|
|
' Timer1.Enabled=False
|
|
If Logger Then LogColor("starter destroyed", Colors.red)
|
|
End Sub
|
|
|
|
Sub pe_BatteryChanged (Level As Int, Scale As Int, Plugged As Boolean, Intent As Intent)
|
|
batt=Level
|
|
End Sub
|
|
|
|
Private Sub Timer1_Tick
|
|
' ToastMessageShow("Timer",False)
|
|
If Logger Then Log("Siguiente actualizacion " & DateTime.Time(DateTime.Now + Interval * 1000))
|
|
ENVIA_ULTIMA_GPS 'Comentado para que no estorbe hasta que no esten los queries correctos en el config.properties
|
|
End Sub
|
|
|
|
'Sub reinicializaReqManager
|
|
' reqManager.Initialize(Me, server)
|
|
' If Logger Then Log(server)
|
|
'End Sub
|
|
|
|
Sub ENVIA_ULTIMA_GPS
|
|
If Logger Then Log("Iniciamos ENVIA_ULTIMA_GPS")
|
|
If Not(skmt.IsInitialized) Then skmt.Initialize(ruta,"kmt.db", True)
|
|
DateTime.TimeFormat = "HHmmss"
|
|
ultimaActualizacionGPS = DateTime.Time(DateTime.Now)
|
|
Private s1 As Cursor = skmt.ExecQuery2("select CAT_VA_VALOR as semana from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("SEMANA")) 'Traemos la semana.
|
|
If s1.RowCount > 0 Then
|
|
s1.Position = 0
|
|
Private laSemana As String = s1.GetString("semana")
|
|
Else
|
|
Private laSemana As String = ""
|
|
End If
|
|
Private cpv As Cursor = skmt.ExecQuery2("select count(*) as CUANTOS from kmt_info where CAT_CL_DIAS_VISITA = (SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?) and cat_cl_codigo <> 0 AND CAT_CL_TIPO_RUTA IN (?,?) ORDER BY CAT_CL_NUM_SERIEFISICO", Array As String("DIA_VISITA", laSemana, "SEMANAL")) 'Traemos los clientes a visitar hoy.
|
|
cpv.Position = 0
|
|
Private clientesVisitaHoy As String = cpv.GetString("CUANTOS")
|
|
If lat_gps = 0 Or lat_gps = Null Then 'Si latitud es CERO o NULL traemos las ultimas coordenadas de la base de datos.
|
|
Private coords As List = Subs.traeCoordsDeBD
|
|
lat_gps = coords.Get(0)
|
|
lon_gps = coords.Get(1)
|
|
End If
|
|
s1.Close
|
|
cpv.Close
|
|
Private rtec, ping, salty As String
|
|
' Log(Application.VersionName)
|
|
Subs.dameClientesFueraDeFrecuencia
|
|
Private h As Cursor
|
|
For Each i As String In Array As String ("RTEC", "PING", "SALTY SNACKS")
|
|
h=skmt.ExecQuery2("Select sum(PE_COSTO_TOT) As MONTO_DIA from pedido where PE_CLIENTE <> 0 and pe_proid in (Select CAT_GP_ID from cat_gunaprod2 where CAT_GP_TIPO = ? )", Array As String(i))
|
|
Private x As String = 0
|
|
If h.RowCount > 0 Then
|
|
h.Position = 0
|
|
x = $"$1.3{h.GetString("MONTO_DIA")}"$
|
|
End If
|
|
x = $"$1.3{x}"$
|
|
If x="NaN" Then X = "0"
|
|
If i = "RTEC" Then rtec = x
|
|
If i = "PING" Then ping = x
|
|
If i = "SALTY SNACKS" Then salty = x
|
|
Next
|
|
h.Close
|
|
|
|
If Subs.EstaEnHorarioPermitido Then
|
|
Dim cmd As DBCommand
|
|
cmd.Initialize
|
|
cmd.Name = "UPDATE_KELL_ACTUAL3_GPS"
|
|
cmd.Parameters = Array As Object(montoActual, clientesVisitaHoy, clientesVenta, clientesVisitados, lat_gps, lon_gps, batt, 0, 0, 0, Application.VersionName, rtec, ping, salty, Subs.dameClientesFueraDeFrecuencia, almacen, rutaPreventa)
|
|
' If Logger Then LogColor(montoActual&","&clientesVisitaHoy&","&clientesVenta&","&clientesVisitados&","&lat_gps&","&lon_gps&","&batt&","&0&","&0&","&0&","&Application.VersionName&","&rtec&","&ping&","&salty&","& Subs.dameClientesFueraDeFrecuencia&","&almacen&","&rutaPreventa, Colors.Magenta)
|
|
reqManager.ExecuteCommand(cmd,"updateKell_UTR")
|
|
|
|
cmd.Name = "select_hora"
|
|
reqManager.ExecuteQuery(cmd , 0, "hora")
|
|
' log(subs.revisaHora)
|
|
End If
|
|
|
|
' If Logger Then Log(reqManager)
|
|
' If Logger Then Log("++ ++ ++ Envia_Ultima GPS - Inst_visitas - server: "& server)
|
|
skmt.ExecNonQuery2("Update cat_variables set CAT_VA_VALOR = ? WHERE CAT_VA_DESCRIPCION = ?" , Array As String(DateTime.Time(DateTime.Now),"HoraIngreso"))
|
|
'Reiniciamos el timer para cuando llamamos el Sub desde otra actividad
|
|
Timer1.Enabled = False
|
|
Timer1.Interval = Interval * 1000
|
|
Timer1.Enabled = True
|
|
End Sub
|
|
|
|
Sub JobDone(Job As HttpJob)
|
|
If Logger Then Log("JOBDONE STARTER")
|
|
If Job.Success = False Then
|
|
' ToastMessageShow("Error: " & Job.ErrorMessage, True)
|
|
Else
|
|
' If Logger Then LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211110
|
|
If Job.JobName = "DBRequest" Then
|
|
Dim result As DBResult = reqManager.HandleJob(Job)
|
|
If result.Tag = "updateKell_UTR" Then 'query tag
|
|
' For Each records() As Object In result.Rows
|
|
' For Each k As String In result.Columns.Keys
|
|
' If Logger Then Log("Ubicacion en tiempo real: " & k & ": " & records(result.Columns.Get(k)))
|
|
' Next
|
|
' Next
|
|
End If
|
|
If result.Tag = "hora" Then 'query tag
|
|
For Each records() As Object In result.Rows
|
|
HORA = records(result.Columns.Get("HORA"))
|
|
skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("HORA"))
|
|
skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("HORA", HORA))
|
|
DateTime.DateFormat = "HH"
|
|
skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("HORASRVR"))
|
|
skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("HORAMVL"))
|
|
skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("HORAMVL", DateTime.Date(DateTime.Now)))
|
|
Next
|
|
End If
|
|
End If
|
|
End If
|
|
Job.Release
|
|
End Sub
|
|
|
|
'Para los Logs
|
|
Private Sub logcat_LogCatData (Buffer() As Byte, Length As Int)
|
|
logs.Append(BytesToString(Buffer, 0, Length, "utf8"))
|
|
If logs.Length > 4000 Then
|
|
logs.Remove(0, logs.Length - 2000) 'Obtenemos log de 2000 ~ 4000 chars
|
|
End If
|
|
End Sub
|
|
|
|
'Revisa que la conexion a la base de datos este bien.
|
|
Sub revisaBD 'ignore
|
|
If Logger Then Log("revisaBD")
|
|
If Not(File.Exists(ruta, "kmt.db")) Then File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db")
|
|
If Not(skmt.IsInitialized) Then skmt.Initialize(ruta, "kmt.db", True)
|
|
End Sub
|
|
|
|
'Inicializa el reqServer con la dirección dada y lo guarda en CAT_VARIABLES.
|
|
Sub reinicializaReqManager(srv As String)
|
|
skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("SERVER"))
|
|
skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("SERVER", srv))
|
|
DBReqServer = srv
|
|
reqManager.Initialize(Me, srv)
|
|
' LogColor(srv, Colors.red)
|
|
End Sub |