mirror of
https://github.com/KeymonSoft/Intmex_Multiventa.git
synced 2026-04-17 12:56:08 +00:00
En esta version se ajusto el envio de promociones y el como se estaba guardando la promocion en el movil.
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://keymon.net: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 |