mirror of
https://github.com/KeymonSoft/Kelloggs_V3.git
synced 2026-04-18 05:09:27 +00:00
235 lines
9.4 KiB
QBasic
235 lines
9.4 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 reqManager As DBRequestManager
|
|
Dim skmt, errorLog As SQL
|
|
Dim ruta As String
|
|
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 = 300
|
|
Dim server 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 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
|
|
Dim ultimaActividad As String = ""
|
|
Dim boleta As String = 0
|
|
Dim sesion As Map
|
|
Dim ultima_back_productos As String = 0
|
|
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.
|
|
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
|
|
pe.Initialize("pe") 'Para obtener la bateria
|
|
ruta = File.DirInternal
|
|
If File.Exists(ruta, "kmt.db") = False Then
|
|
File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db")
|
|
End If
|
|
skmt.Initialize(ruta,"kmt.db", True)
|
|
'Para los Logs
|
|
#if RELEASE
|
|
logcat.LogCatStart(Array As String("-v","raw","*:F","B4A:v"), "logcat")
|
|
#end if
|
|
logs.Initialize
|
|
server = "http://keymon.lat:1781"
|
|
' server = "http://10.0.0.205:1782"
|
|
' server = "http://11.0.0.29:1782"
|
|
If Logger Then Log($"Starter reqManager server: ${server}"$)
|
|
Logger = True
|
|
sesion.Initialize
|
|
End Sub
|
|
|
|
Sub Service_Start (StartingIntent As Intent)
|
|
Service.StopAutomaticForeground 'Starter service can start in the foreground state in some edge cases.
|
|
reqManager.Initialize(Me, server)
|
|
Subs.revisaBD
|
|
#if DEBUG
|
|
Logger = True
|
|
#else
|
|
Logger = False
|
|
#End If
|
|
|
|
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.
|
|
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:" & rutaV & 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
|
|
|
|
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 Not(skmt.IsInitialized) Then skmt.Initialize(ruta,"kmt.db", True)
|
|
If Logger Then Log("Iniciamos ENVIA_ULTIMA_GPS")
|
|
DateTime.TimeFormat = "HHmmss"
|
|
ultimaActualizacionGPS = DateTime.Time(DateTime.Now)
|
|
Private s 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 s.RowCount> 0 Then
|
|
s.Position=0
|
|
Private laSemana As String = s.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
|
|
s.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
|
|
'
|
|
' Dim cmd As DBCommand
|
|
' cmd.Initialize
|
|
' cmd.Name = "UPDATE_KELL_ACTUAL4_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,pedodo_doe 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")
|
|
|
|
Dim cmd As DBCommand
|
|
cmd.Initialize
|
|
cmd.Name = "UPDATE_KELL_ACTUAL3_GPS"
|
|
cmd.Parameters = Array As Object(montoActual, clientesVisitados, clientesVenta, clientesVisitaHoy, 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")
|
|
' Log("GPS ACTUALIZACION: " & montoActual&","&clientesVisitaHoy&","&clientesVenta&","&clientesVisitados&","&lat_gps&","&lon_gps&","&batt&","&0&","&0&","&0&","&Application.VersionName&","&rtec&","&ping&","&salty&","& Subs.dameClientesFueraDeFrecuencia&","&almacen&","&rutaPreventa)
|
|
' 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 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
|
|
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
|