mirror of
https://github.com/KeymonSoft/Intmex_Multiventa.git
synced 2026-04-17 21:06:08 +00:00
Se corrigió el como se estaba enviando la información de las promociones. Se agrego al config propertis el query de actualizaGPS3.
253 lines
9.3 KiB
QBasic
253 lines
9.3 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 gps As GPS
|
|
Dim skmt As SQL
|
|
Dim s As C_Subs
|
|
Dim ph As Phone
|
|
Public rp As RuntimePermissions
|
|
Public FLP As FusedLocationProvider
|
|
' Private flpStarted As Boolean
|
|
Dim reqManager As DBRequestManager
|
|
Dim DBReqServer As String = "http://187.189.244.154:1781"
|
|
' Dim DBReqServer As String = "http://11.0.0.119:1781"
|
|
' Dim DBReqServer As String = "http://10.0.0.205:1783"
|
|
' Dim DBReqServer As String = "http://192.168.100.10:1781"
|
|
Dim Timer1, tConexion As Timer
|
|
Dim Interval As Int = 300
|
|
Dim IntervalC As Int = 60
|
|
Dim ruta As String = File.DirInternal
|
|
'Para los Logs
|
|
Private logs As StringBuilder
|
|
Private logcat As LogCat
|
|
Dim muestraProgreso = 0
|
|
Dim logger As Boolean = False
|
|
Dim marcaCel As String = ph.manufacturer
|
|
Dim tabla As String
|
|
Dim MAC_IMPRESORA As String
|
|
Dim utimaPagina As String
|
|
Dim senial As Int = 1
|
|
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.
|
|
gps.Initialize("GPS")
|
|
s.Initialize(Me, "Subs") 'Inicializamos la clase Subs
|
|
skmt = s.inicializaBD(File.DirInternal, "kmt.db")
|
|
' CallSubDelayed(FirebaseMessaging, "SubscribeToTopics") 'Para Push FirebaseMessaging
|
|
tConexion.Initialize("tConexion", IntervalC * 1000)
|
|
tConexion.Enabled = True
|
|
Timer1.Initialize("Timer1", Interval * 1000)
|
|
Timer1.Enabled = True
|
|
' 'Para los Logs
|
|
#if RELEASE
|
|
logcat.LogCatStart(Array As String("-v","raw","*:F","B4A:v"), "logcat")
|
|
#end if
|
|
logs.Initialize
|
|
' CallSubDelayed(FirebaseMessaging, "SubscribeToTopics") 'Para Push FirebaseMessaging
|
|
End Sub
|
|
|
|
Sub Service_Start (StartingIntent As Intent)
|
|
Service.StopAutomaticForeground 'Starter service can start in the foreground state in some edge cases.
|
|
Subs.revisaBD
|
|
' Log(marcaCel)
|
|
If s.traeDBReqServerDeBD(skmt) <> "N/A" And s.traeDBReqServerDeBD(skmt) <> "" Then DBReqServer = s.traeDBReqServerDeBD(skmt)
|
|
reqManager.Initialize(Me, DBReqServer)
|
|
Log($"Starter - |${DBReqServer}|"$)
|
|
|
|
' Dim ctxt As JavaObject
|
|
' ctxt.InitializeContext
|
|
' Dim TelephonyManager As JavaObject = ctxt.RunMethod("getSystemService", Array("phone"))
|
|
' Dim listener As JavaObject
|
|
' listener.InitializeNewInstance(Application.PackageName & ".starter.ResilientPhoneListener", Null)
|
|
' TelephonyManager.RunMethod("listen", Array(listener, 0x00000100))
|
|
End Sub
|
|
|
|
Private Sub Timer1_Tick
|
|
' Log("Next run " & DateTime.Time(DateTime.Now + Interval * 1000))
|
|
ENVIA_ULTIMA_GPS
|
|
End Sub
|
|
|
|
Private Sub tConexion_Tick
|
|
' Log("Next run " & DateTime.Time(DateTime.Now + Interval * 1000))
|
|
' ENVIA_ULTIMA_GPS
|
|
Dim cmd As DBCommand
|
|
cmd.Initialize
|
|
cmd.Name = "select_fecha"
|
|
B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "ping") 'Usamos el "reqManager" de Mainpage para que usar el jobDone de ahi!!
|
|
' Log("tConexion")
|
|
End Sub
|
|
|
|
Sub GPS_LocationChanged (Location1 As Location)
|
|
' CallSub2(Main, "GPS_LocationChanged", Location1)
|
|
End Sub
|
|
|
|
Sub Service_TaskRemoved
|
|
'This event will be raised when the user removes the app from the recent apps list.
|
|
End Sub
|
|
|
|
Sub Service_Destroy
|
|
|
|
End Sub
|
|
|
|
Sub ENVIA_ULTIMA_GPS
|
|
Dim logger As Boolean = True
|
|
If logger Then LogColor("Iniciamos ENVIA_ULTIMA_GPS", Colors.Magenta)
|
|
Dim cmd As DBCommand
|
|
' cmd.Initialize
|
|
' cmd.Name = "select_fechat"
|
|
' B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "fechat")
|
|
Dim cmd As DBCommand
|
|
cmd.Initialize
|
|
cmd.Name = "UPDATE_INTMEX_ACTUAL3_GPS"
|
|
If B4XPages.MainPage.lat_gps.Length < 15 Then B4XPages.MainPage.lat_gps = B4XPages.MainPage.lat_gps&"0"
|
|
cmd.Parameters = Array As Object(B4XPages.MainPage.montoActual, B4XPages.MainPage.clientestotal, B4XPages.MainPage.clientesventa,B4XPages.MainPage.clientesvisitados,B4XPages.MainPage.lat_gps,B4XPages.MainPage.lon_gps,B4XPages.MainPage.batt,0, 0, 0, Application.VersionName,senial,B4XPages.MainPage.ALMACEN,B4XPages.MainPage.rutapreventa)
|
|
If logger Then Log($"montoActual: ${B4XPages.MainPage.montoActual}, cTotal: ${B4XPages.MainPage.clientestotal}, cVenta: ${B4XPages.MainPage.clientesventa}, cVisitados: ${B4XPages.MainPage.clientesvisitados}, ${B4XPages.MainPage.lat_gps}, ${B4XPages.MainPage.lon_gps}, Batt: ${B4XPages.MainPage.batt}, 0, 0, 0, ${Application.VersionName},${senial},Almacen: ${B4XPages.MainPage.ALMACEN}, Ruta: ${B4XPages.MainPage.rutapreventa}"$)
|
|
reqManager.ExecuteCommand(cmd, "inst_visitas")
|
|
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 "seleccion"
|
|
Timer1.Enabled = False
|
|
Timer1.Interval = Interval * 1000
|
|
Timer1.Enabled = True
|
|
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
|
|
|
|
'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))
|
|
Return 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
|
|
|
|
Sub Signal_Changedx (SignalStrengh As Object)
|
|
Dim s2 As JavaObject = SignalStrengh
|
|
Private theSignal As String = s2.RunMethod("getGsmSignalStrength", Null)
|
|
Log(theSignal)
|
|
ToastMessageShow(theSignal, False)
|
|
End Sub
|
|
|
|
'Sub Signal_Changed (strength As Int)
|
|
' Log($"Intensidad de señal recibida: ${strength}"$)
|
|
' ToastMessageShow($"Intensidad de señal recibida: ${strength}"$, False)
|
|
' ' Procesar el valor según el tipo de red
|
|
' If strength >= 0 And strength <= 31 Then
|
|
' ' GSM: convertir a dBm aproximado
|
|
' Dim dBm As Int = -113 + strength * 2
|
|
' Log($"Señal GSM: ${strength} (~${dBm} dBm)"$)
|
|
' ToastMessageShow($"Señal GSM: ${strength} (~${dBm} dBm)"$, False)
|
|
' Else If strength < 0 Then
|
|
' ' CDMA/LTE: ya está en dBm
|
|
' Log($"Señal CDMA/LTE: ${strength} dBm"$)
|
|
' ToastMessageShow($"Señal GSM: ${strength} (~${dBm} dBm)"$, False)
|
|
' Else If strength = 99 Then
|
|
' Log("Señal desconocida o error")
|
|
' ToastMessageShow("Señal desconicida", False)
|
|
' End If
|
|
'End Sub
|
|
|
|
|
|
|
|
'if Java
|
|
'
|
|
'import android.telephony.*;
|
|
'import android.os.Build;
|
|
'Public static class MyPhoneStateListener extends PhoneStateListener {
|
|
'Public MyPhoneStateListener() {
|
|
'}
|
|
'Public void onSignalStrengthsChanged(SignalStrength signalStrength) {
|
|
' anywheresoftware.b4a.BA.Log("onSignalStrengthsChanged");
|
|
'
|
|
' int strengthValue;
|
|
'
|
|
' Try {
|
|
' If (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
|
' strengthValue = signalStrength.getLevel(); // 0-4
|
|
' } Else {
|
|
' If (signalStrength.isGsm()) {
|
|
' strengthValue = signalStrength.getGsmSignalStrength(); // 0-31, 99 es desconocido
|
|
' } Else {
|
|
' strengthValue = signalStrength.getCdmaDbm();
|
|
' }
|
|
' }
|
|
'
|
|
' // Pasar solo el valor entero, no el objeto SignalStrength completo
|
|
' starter.processBA.raiseEventFromUI(Null, "signal_changed", strengthValue);
|
|
'
|
|
' } Catch (Exception e) {
|
|
' anywheresoftware.b4a.BA.Log("Error: " + e.getMessage());
|
|
' starter.processBA.raiseEventFromUI(Null, "signal_changed", 99); // Valor por defecto en caso de error
|
|
' }
|
|
'}
|
|
'}
|
|
'End If
|
|
|
|
|
|
#if Java
|
|
|
|
import android.telephony.*;
|
|
import android.os.Build;
|
|
public static class ResilientPhoneListener extends PhoneStateListener {
|
|
private long lastUpdate = 0;
|
|
|
|
@Override
|
|
public void onSignalStrengthsChanged(SignalStrength signalStrength) {
|
|
lastUpdate = System.currentTimeMillis();
|
|
anywheresoftware.b4a.BA.Log("onSignalStrengthsChanged");
|
|
|
|
int strengthValue;
|
|
try {
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
|
strengthValue = signalStrength.getLevel();
|
|
} else {
|
|
if (signalStrength.isGsm()) {
|
|
strengthValue = signalStrength.getGsmSignalStrength();
|
|
} else {
|
|
strengthValue = signalStrength.getCdmaDbm();
|
|
}
|
|
}
|
|
starter.processBA.raiseEventFromUI(null, "signal_changed", strengthValue);
|
|
} catch (Exception e) {
|
|
starter.processBA.raiseEventFromUI(null, "signal_changed", 99);
|
|
}
|
|
}
|
|
|
|
public boolean isAlive() {
|
|
return (System.currentTimeMillis() - lastUpdate) < 120000;
|
|
}
|
|
|
|
}
|
|
#End If |