- VERSION 5.05.11

- Se agrego en "Principal" que cuando haya pedidos pendientes, aparezca un mensaje y el estatus del envio de los pedidos.
- Se agregó en "Principal" un icono de "conexion" en la esquina superior derecha, que dependiendo de la conexion se pone verde o rojo.
- Se agrego la version y el estatus de la conexion a tmp_drop.
- Se agrego la version y el estatus de la conexion a la ubicacion em tiempo real (CAT_RUTAS)
This commit is contained in:
2025-05-12 18:38:05 -06:00
parent 87645b4c9f
commit ec9e4b8f8d
8 changed files with 333 additions and 78 deletions

View File

@@ -451,10 +451,34 @@ Sub JobDone(Job As HttpJob)
End If
If Job.Success = False Then
LogColor("Error: " & Job.tag & " : " & Job.ErrorMessage, Colors.red)
If Job.Tag = "ping" Then 'query tag
' Log("ERROR DE PING")
' B4XPages.MainPage.principal.p_conexion.Color = Colors.red
If B4XPages.MainPage.principal.l_conexion.IsInitialized Then
Starter.senial = 0
B4XPages.MainPage.principal.l_conexion.TextColor = Colors.red
End If
End If
Else
LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211027
If Job.JobName = "DBRequest" Then
Dim result As DBResult = reqManager.HandleJob(Job)
If result.Tag = "ping" Then 'query tag
' Log("PING OK!!")
If B4XPages.MainPage.principal.l_conexion.IsInitialized Then
Starter.senial = 1
B4XPages.MainPage.principal.l_conexion.TextColor = Colors.Green
End If
End If
If result.Tag = "fecha" Then 'query tag
For Each records() As Object In result.Rows
For Each k As String In result.Columns.Keys
Log("select_fechat: " & k & ": " & records(result.Columns.Get(k)))
Next
Next
End If
If result.Tag = "version" Then 'query tag
For Each records() As Object In result.Rows
skmt.ExecNonQuery("delete from VERSION")
@@ -470,19 +494,13 @@ Sub JobDone(Job As HttpJob)
Next
Next
End If
End If
If Job.JobName = "DBRequest" Then
Dim result As DBResult = reqManager.HandleJob(Job)
If result.Tag = "agencia" Then 'query tag
For Each records() As Object In result.Rows
Dim ID_ALMACEN As String = records(result.Columns.Get("ID_ALMACEN"))
Next
End If
End If
If Job.JobName = "DBRequest" Then
Dim result As DBResult = reqManager.HandleJob(Job)
If result.Tag = "fecha" Then 'query tag
For Each records() As Object In result.Rows
Dim FECHA_HOY As String = records(result.Columns.Get("FECHA"))
@@ -490,10 +508,7 @@ Sub JobDone(Job As HttpJob)
skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("FECHA",FECHA_HOY))
Next
End If
End If
If Job.JobName = "DBRequest" Then
Dim result As DBResult = reqManager.HandleJob(Job)
If result.Tag = "usuario" Then 'query tag
For Each records() As Object In result.Rows
Dim name As String = records(result.Columns.Get("USUARIO"))
@@ -505,10 +520,7 @@ Sub JobDone(Job As HttpJob)
ToastMessageShow(name, False)
Log("////////////////////////// "&name)
End If
End If
If Job.JobName = "DBRequest" Then
Dim result As DBResult = reqManager.HandleJob(Job)
If result.Tag = "usuario_10" Then 'query tag
For Each records() As Object In result.Rows
Dim name As String = records(result.Columns.Get("USUARIO"))
@@ -520,19 +532,18 @@ Sub JobDone(Job As HttpJob)
IMEI_BASE = ""
IMEI = ""
End If
If result.Tag = "ruta" Then 'query tag
Log("JOBDONE PRINCIPAL MAINPAGE")
For Each records() As Object In result.Rows
Dim VALIDO As String = records(result.Columns.Get("VALIDO"))
If VALIDO = "OK" Then
Log(VALIDO)
End If
Next
End If
End If
If result.Tag = "ruta" Then 'query tag
Log("JOBDONE PRINCIPAL MAINPAGE")
For Each records() As Object In result.Rows
Dim VALIDO As String = records(result.Columns.Get("VALIDO"))
If VALIDO = "OK" Then
Log(VALIDO)
End If
Next
End If
Job.Release
End If
Log($"Paso1 = ${paso1} - Name: ${name} - IMEI: ${IMEI} - IMEI_BASE: ${IMEI_BASE}"$)

View File

@@ -214,6 +214,10 @@ Sub Class_Globals
Private L_VENTA As Label
Private L_PREVENTA As Label
Dim validador As C_Validador
Dim p_muestraPendientes As Panel
Private b_muestraPendientes As Button
' Dim p_conexion As Panel
Dim l_conexion As Label
End Sub
'You can add more parameters here.
@@ -228,7 +232,7 @@ Private Sub B4XPage_Created (Root1 As B4XView)
Root.LoadLayout("principal")
rd.Initialize
rd.vacuum
validador.Initialize
validador.Initialize(Me, "val")
EJECUTANDO=1
Dim ruta As String
img2.Visible =False
@@ -301,6 +305,10 @@ Private Sub B4XPage_Created (Root1 As B4XView)
l_rutasuplencia.Text = s.GetString("RS_RUTA")
End If
Starter.Skmt.ExecNonQuery($"create table if not exists kmt_info2 (${getTableColumnList(Starter.skmt, "kmt_info")})"$)
p_mandaInfo.Left = 0: p_mandaInfo.top = 0
p_muestraPendientes.Left = Root.Width - p_muestraPendientes.Width - 5dip
' p_conexion.Top = 1 : p_conexion.left = Root.width - p_conexion.width
l_conexion.Top = 0 : l_conexion.left = Root.width - l_conexion.width -2
End Sub
Sub chkIfTableExists(db As SQL, table As String) As Boolean 'ignore
@@ -490,8 +498,6 @@ Sub B4XPage_Appear
c.Close
bu.Initialize
batterystatus = bu.BatteryInformation
c=B4XPages.MainPage.skmt.ExecQuery("select usuario from usuarioa")
c.Position = 0
usuario = c.GetString("USUARIO")
@@ -503,38 +509,47 @@ Sub B4XPage_Appear
B4XPages.MainPage.clientesvisitados = l_porvisitar.TEXT
B4XPages.MainPage.ALMACEN = ALMACEN
B4XPages.MainPage.rutapreventa = l_ruta.text
'////// Para el usuario global - Chv
c=B4XPages.MainPage.skmt.ExecQuery("select usuario from usuarioa")
c = B4XPages.MainPage.skmt.ExecQuery("select usuario from usuarioa")
c.Position = 0
usuario = c.GetString("USUARIO")
B4XPages.MainPage.usuario = usuario
c.Close
'///////
CallSub(Starter, "ENVIA_ULTIMA_GPS")
s = B4XPages.MainPage.skmt.ExecQuery("select RS_RUTA FROM RUTA_SUPLENCIA")
s.Position = 0
If s.RowCount = 0 Then
Label22.Visible = False
l_rutasuplencia.Visible = False
l_rutasuplencia.Text = ""
Else If s.RowCount > 0 Then
Label22.Visible = True
l_rutasuplencia.Visible = True
l_rutasuplencia.Text = s.GetString("RS_RUTA")
End If
' If l_ruta.Text = "0" Then
' b_abordo.Visible = False
' Else
' b_abordo.Visible = True
' End If
Dim RedDisponible As Phone
Log("GetNetworkOperatorName: "&RedDisponible.GetNetworkOperatorName)
Log("GetNetworkType: "&RedDisponible.GetNetworkType)
Log("GetPhoneType: "&RedDisponible.GetPhoneType)
' If RedDisponible.GetNetworkOperatorName <> "" And RedDisponible.GetNetworkType <> "UNKNOWN" Then
' Log("Red Disponible")
' Else
' Log("Red no disponible")
' End If
Log("GetDataState: " & RedDisponible.GetDataState)
Log("IsAirplaneModeOn: " & RedDisponible.IsAirplaneModeOn)
Log("|" & validador.buscaSinEnviar & "|")
If validador.buscaSinEnviar > 0 Then
p_muestraPendientes.Visible = True
b_muestraPendientes.Enabled = True
b_muestraPendientes.text = "Enviar"
Else
p_muestraPendientes.Visible = False
End If
validador.iniciaValidacion
End Sub
@@ -737,8 +752,8 @@ Sub Subir_Click
sTime=DateTime.Time(DateTime.Now)
Dim cmd As DBCommand
cmd.Initialize
cmd.Name ="insert_drop_INTMEX_2"
cmd.Parameters = Array As Object(usuario,l_ruta.Text,sDate & sTime, l_porvisitar.Text,l_drop.Text,l_efectiva.Text,l_cuantosc.Text,l_cuantosn.Text, L_MONTOD.Text,"ENVIO",ALMACEN)
cmd.Name ="insert_drop_INTMEX_3"
cmd.Parameters = Array As Object(usuario,l_ruta.Text,sDate & sTime, l_porvisitar.Text,l_drop.Text,l_efectiva.Text,l_cuantosc.Text,l_cuantosn.Text, L_MONTOD.Text,"ENVIO",ALMACEN, Application.VersionName, Starter.senial)
reqManager.ExecuteCommand(cmd , "inst_noventa")
img2.Visible =True
PORCENTAJE = Round(100/ (cuantos_noventa + cuantos_pedido + cuantos_pedidosc + 1))
@@ -876,8 +891,8 @@ Sub cargar_Click
' imei = P.GetDeviceId
imei = "xxxx"
cmd.Initialize
cmd.Name ="insert_drop_INTMEX_2"
cmd.Parameters = Array As Object(usuario,e_ruta.text,sDate,imei,sTime,"","","","","CARGA",ALMACEN)
cmd.Name ="insert_drop_INTMEX_3"
cmd.Parameters = Array As Object(usuario,e_ruta.text,sDate,imei,sTime,"","","","","CARGA",ALMACEN, Application.VersionName, Starter.senial)
reqManager.ExecuteCommand(cmd , "inst_noventa")
cmd.Initialize
@@ -2665,4 +2680,35 @@ Private Sub b_abordo_Click
Starter.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object("0"))
B4XPages.MainPage.tipo_venta = "ABORDO"
B4XPages.ShowPage("Productos")
End Sub
Private Sub b_muestraPendientes_Click
validador.iniciaValidacion
b_muestraPendientes.Enabled = False
b_muestraPendientes.TextColor = Colors.white
B4XPages.ShowPage("ticketsDia")
End Sub
Sub val_Guardando(msg As String)
Log("##################################################" & CRLF & msg)
b_muestraPendientes.Enabled = False
b_muestraPendientes.TextColor = Colors.white
b_muestraPendientes.Text = msg
End Sub
Sub val_Enviando(msg As String)
Log("##################################################" & CRLF & msg)
b_muestraPendientes.Text = msg
End Sub
Sub val_Validando(msg As String)
Log("##################################################" & CRLF & msg)
b_muestraPendientes.Text = msg
End Sub
Sub val_Terminado(msg As String)
Log("##################################################" & CRLF & msg)
b_muestraPendientes.Text = msg
Sleep (1000)
p_muestraPendientes.Visible = False
End Sub

View File

@@ -98,7 +98,7 @@ Sub B4XPage_Appear
color = Colors.RGB(0,146,1)
End If
End If
Log(estatus)
' Log(estatus)
Private cs As CSBuilder
cs.Initialize
ListView1.AddTwoLines(c.GetString("PC_CLIENTE"), _

View File

@@ -7,16 +7,21 @@ Version=12.8
Sub Class_Globals
Private Root As B4XView 'ignore
Private xui As XUI 'ignore
Private EventName As String 'ignore
Private CallBack As Object 'ignore
Dim reqManager As DBRequestManager
Dim timerValidador As Timer
Dim intervalo As Int = 300
Dim skmt As SQL
Dim c As Cursor
Dim sDate, sTime As String
dim totalAValidar as int = 0
End Sub
'You can add more parameters here.
Public Sub Initialize As Object
Public Sub Initialize (vCallback As Object, vEventName As String) As Object
EventName = vEventName
CallBack = vCallback
reqManager.Initialize(Me, Starter.DBReqServer)
timerValidador.Initialize("timerValidador", intervalo * 1000)
timerValidador.Enabled = True
@@ -57,6 +62,17 @@ Sub timerValidador_Tick
iniciaValidacion
End Sub
' Regresa cuantos pedidos sin gardar o enviar hay.
Sub buscaSinEnviar As Int
Private x As Int = 0
Private f As Cursor = skmt.ExecQuery("SELECT count(*) as cuantos FROM PEDIDO_CLIENTE where PC_ENVIO_OK < 2 and PC_GUARDADO = 1")
If f.RowCount > 0 Then
f.Position = 0
x = f.GetInt("cuantos")
End If
Return x
End Sub
'Manda a web los pedidos GUARDADOS con ENVIO_OK = 0 y los pone en 1.
Sub mandaGuardados
Log(">>>>>>> MANDA GUARDADOS")
@@ -67,6 +83,7 @@ Sub mandaGuardados
c = skmt.ExecQuery("SELECT * FROM PEDIDO_CLIENTE where PC_ENVIO_OK < 2 and PC_GUARDADO = 1")
Log($"Pedido_Cliente PENDIENTE: ${c.RowCount}"$)
If c.RowCount > 0 Then
pedidoGuardando($"Guardando ..."$)
For i = 0 To c.RowCount - 1
c.Position = i
Log($"${c.GetString("PC_CLIENTE")}|${c.GetString("PC_FECHA")}|${c.GetString("PC_ENVIO_OK")}|"$)
@@ -100,30 +117,16 @@ End Sub
'Revisa que los pedidos con envio_ok < 2 esten completos en web y los pone en 2.
Sub revisaGuardados
Log(">>>>>>> VALIDA GUARDADOS")
'' Dim PCNoArts As String
'' Dim PCMonto As String
'' Dim PCNoArts As String
'' Dim PCMonto As String
Private almacen As String = Subs.traeAlmacen
Private laRuta As String = Subs.traeRuta
c = skmt.ExecQuery("SELECT * FROM PEDIDO_CLIENTE where PC_ENVIO_OK = 1")
Log($"Pedido_Cliente VALIDAR: ${c.RowCount}"$)
If c.RowCount > 0 Then
For i = 0 To c.RowCount - 1
c.Position = i
Log($"${c.GetString("PC_CLIENTE")}|${c.GetString("PC_FECHA")}|${c.GetString("PC_ENVIO_OK")}|"$)
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "validaPC_Intmex"
cmd.Parameters = Array As Object(c.GetString("PC_CLIENTE"), c.GetString("PC_USER"), c.GetString("PC_FECHA"), almacen, laRuta)
' PCNoArts = c.GetString("PC_NOART")
' PCMonto = c.GetString("PC_MONTO")
reqManager.ExecuteCommand(cmd , $"ins_revisaGuardados_head_${c.GetString("PC_CLIENTE")}"$)
Next
End If
'PEDIDO (Pendientes)
c = skmt.ExecQuery($"SELECT * FROM PEDIDO where PE_ENVIO_OK = 1"$)
Log($"Pedido VALIDAR: ${c.RowCount}"$)
Log($"Pedidos a VALIDAR: ${c.RowCount}"$)
If c.RowCount > 0 Then
pedidoEnviando($"Enviando ..."$)
For i = 0 To c.RowCount - 1
c.Position=i
Dim cmd As DBCommand
@@ -134,6 +137,40 @@ Sub revisaGuardados
' Log($">>>> INS_PEDIDO= ${C.GetString("PE_CEDIS")},${almacen},${C.GetString("PE_COSTO_TOT")},${C.GetString("PE_COSTOU")},${C.GetString("PE_CANT")}, ${C.GetString("PE_PRONOMBRE")}, ${C.GetString("PE_PROID")}, ${C.GetString("PE_CLIENTE")}, ${C.GetString("PE_FECHA")}, ${C.GetString("PE_USUARIO")}, ${C.GetString("PE_RUTA")}, ${C.GetString("PE_COSTO_SIN")}, ${C.GetString("PE_DESC")}, ${c.GetString("PE_FOLIO")}, ${PCNoArts}, ${PCMonto}, ${PCMonto}, ${c.GetString("PE_TICKET")}"$)
Next
End If
Sleep(5000)
' Subir los productos del pedido, y en el jobdone revisar si ya se enviaron todos los de ese pedido (verificar con AffectedRows = 1), si ya se enviaron,
' entonces Y SOLO ENTONCES, subir el header del pedido y validarlo con AffectedRows = 1.
'PEDIDO CLIENTE
c = skmt.ExecQuery("SELECT * FROM PEDIDO_CLIENTE where PC_ENVIO_OK = 1")
Log($"Pedidos_Cliente a VALIDAR: ${c.RowCount}"$)
If c.RowCount > 0 Then
pedidoEnviando($"Enviando ..."$)
For i = 0 To c.RowCount - 1
Private cuantosProdsPedido As Int = 0
c.Position = i
' Traemos la cantidad de productos "validados" de PEDIDO.
Private x As Cursor = Starter.skmt.ExecQuery($"select sum(pe_cant) as cuantos from pedido where pe_cliente = '${c.GetString("PC_CLIENTE")}' and pe_envio_ok = 2"$)
If x.RowCount > 0 Then
x.Position = 0
cuantosProdsPedido = x.GetInt("cuantos")
End If
Log($"Articulos en cliente ${c.GetString("PC_CLIENTE")}: P:${cuantosProdsPedido}, PC:${c.GetInt("PC_NOART")}"$)
' Si los productos validados en PEDIDO coinciden con los productos de PEDIDO_CLIENTE, entonces validamos el header.
If cuantosProdsPedido = c.GetInt("PC_NOART") Then
Log($"${c.GetString("PC_CLIENTE")}|${c.GetString("PC_FECHA")}|${c.GetString("PC_ENVIO_OK")}|"$)
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "validaPC_Intmex"
cmd.Parameters = Array As Object(c.GetString("PC_CLIENTE"), c.GetString("PC_USER"), c.GetString("PC_FECHA"), almacen, laRuta)
' PCNoArts = c.GetString("PC_NOART")
' PCMonto = c.GetString("PC_MONTO")
reqManager.ExecuteCommand(cmd , $"ins_revisaGuardados_head_${c.GetString("PC_CLIENTE")}"$)
End If
Next
End If
c.Close
End Sub
@@ -145,7 +182,8 @@ Sub revisaCantsYMontosTotales
Private laRuta As String = Subs.traeRuta
c = skmt.ExecQuery("SELECT * FROM PEDIDO_CLIENTE where PC_ENVIO_OK = 2 or 1") ' El uno del final es para que SIEMPRE revise las cantidades y montos, por si se borra la orden desde web, para que se envíe NUEVAMENTE.
Log($"Pedidos a VALIDAR (Cants y Montos): ${c.RowCount}"$)
If c.RowCount>0 Then
If c.RowCount > 0 Then
totalAValidar = c.RowCount
For i=0 To c.RowCount -1
c.Position=i
Dim cmd As DBCommand
@@ -172,7 +210,6 @@ Sub JobDone(Job As HttpJob)
Log("JOBDONE VALIDADOR RUTA")
Subs.logJobDoneResultados(resultado)
End If
' PEDIDOS GUARDADOS HEAD
If resultado.Tag.As(String).IndexOf("ins_mandaGuardados_head_") > -1 Then
Log("ins_mandaGuardados_head_")
@@ -185,6 +222,7 @@ Sub JobDone(Job As HttpJob)
skmt.ExecNonQuery($"update PEDIDO_CLIENTE set PC_ENVIO_OK = 1 where PC_CLIENTE = '${pars(3)}'"$)
End If
Next
' pedidoGuardando("Listo")
End If
' PEDIDOS GUARDADOS PRODS
Dim resultado As DBResult = reqManager.HandleJob(Job)
@@ -224,7 +262,7 @@ Sub JobDone(Job As HttpJob)
' REVISA GUARDADOS HEAD
If resultado.Tag.As(String).IndexOf("ins_revisaGuardados_head_") > -1 Then
Log("ins_revisaGuardados_head_")
Subs.logJobDoneResultados(resultado)
Subs.logJobDoneResultados(resultado)
Private cliente As String= resultado.Tag
cliente = cliente.SubString(cliente.IndexOf("_") + 22)
Log(cliente)
@@ -238,7 +276,10 @@ Sub JobDone(Job As HttpJob)
End If
' REVISA CANTIDADES Y MONTOS TOTALES
If resultado.Tag.As(String).IndexOf("validaCantsCostosTotales_") > -1 Then
pedidoValidando($"Validando ..."$)
totalAValidar = totalAValidar - 1
Log("validaCantsCostosTotales_")
Log("totalAValidar: " & totalAValidar)
Subs.logJobDoneResultados(resultado)
Private cliente As String= resultado.Tag
cliente = cliente.SubString(cliente.IndexOf("_")+1)
@@ -270,6 +311,10 @@ Sub JobDone(Job As HttpJob)
skmt.ExecNonQuery($"update PEDIDO set PE_ENVIO_OK = 0 where PE_CLIENTE = '${pars(1)}'"$)
End If
Next
If totalAValidar <= 0 Then
totalAValidar = 0
validacionTerminada("Listo!!")
End If
End If
' VALIDA CANTIDADES Y COSTOS TOTALES
If resultado.Tag.As(String).IndexOf("validaCCT2_") > -1 Then
@@ -284,4 +329,36 @@ Sub JobDone(Job As HttpJob)
End If
Job.Release
End If
End Sub
Sub pedidoGuardando(msg As String)
Log("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& - Guardando")
If SubExists(CallBack, EventName & "_Guardando") Then
Log("GGG")
CallSub2(CallBack, EventName & "_Guardando", msg)
End If
End Sub
Sub pedidoEnviando(msg As String)
' Log("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& - Enviando")
If SubExists(CallBack, EventName & "_Enviando") Then
' Log("EEE")
CallSub2(CallBack, EventName & "_Enviando", msg)
End If
End Sub
Sub pedidoValidando(msg As String)
' Log("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& - Validadndo")
If SubExists(CallBack, EventName & "_Validando") Then
' Log("VVVV")
CallSub2(CallBack, EventName & "_Validando", msg)
End If
End Sub
Sub validacionTerminada(msg As String)
Log("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& - Terminado")
If SubExists(CallBack, EventName & "_Terminado") Then
' Log("VVVV")
CallSub2(CallBack, EventName & "_Terminado", msg)
End If
End Sub

Binary file not shown.

View File

@@ -164,7 +164,7 @@ Version=12.8
#Region Project Attributes
#ApplicationLabel: Intmex
#VersionCode: 1
#VersionName: 5.03.25
#VersionName: 5.05.11
'SupportedOrientations possible values: unspecified, landscape or portrait.
#SupportedOrientations: portrait
#CanInstallToExternalStorage: False

View File

@@ -65,14 +65,14 @@ ModuleClosedNodes1=
ModuleClosedNodes10=
ModuleClosedNodes11=
ModuleClosedNodes12=
ModuleClosedNodes13=3
ModuleClosedNodes13=4,5,6
ModuleClosedNodes14=11
ModuleClosedNodes15=
ModuleClosedNodes16=
ModuleClosedNodes17=
ModuleClosedNodes18=
ModuleClosedNodes19=
ModuleClosedNodes2=
ModuleClosedNodes2=6
ModuleClosedNodes20=
ModuleClosedNodes21=
ModuleClosedNodes22=
@@ -81,7 +81,7 @@ ModuleClosedNodes24=
ModuleClosedNodes25=2
ModuleClosedNodes26=
ModuleClosedNodes27=1
ModuleClosedNodes28=
ModuleClosedNodes28=3,7,8,9,11,12
ModuleClosedNodes29=
ModuleClosedNodes3=
ModuleClosedNodes30=
@@ -91,6 +91,6 @@ ModuleClosedNodes6=
ModuleClosedNodes7=
ModuleClosedNodes8=
ModuleClosedNodes9=
NavigationStack=C_Nota,ListView1_ItemLongClick,165,0,C_Nota,B4XPage_Appear,57,0,C_Nota,borra_Click,154,6,C_RespaldoDiario,Class_Globals,0,0,C_Promos,Class_Globals,18,0,Diseñador Visual,pedido.bal,-100,1,C_Productos,b_terminar1_Click,770,0,Diseñador Visual,productos.bal,-100,3,C_Productos,lv_prodsPedido_ItemLongClick,987,4,C_Validador,Class_Globals,10,0,C_Validador,revisaCantsYMontosTotales,153,0
NavigationStack=C_Principal,cargar_Click,886,0,C_Principal,Class_Globals,212,2,C_Principal,B4XPage_Created,303,0,Starter,Service_Start,58,0,Starter,tConexion_Tick,83,0,B4XMainPage,JobDone,441,6,C_Principal,b_muestraPendientes_Click,2681,4,Diseñador Visual,principal.bal,-100,6,C_TicketsDia,B4XPage_Appear,94,0,C_Principal,val_Guardando,2688,0
SelectedBuild=0
VisibleModules=2,28,14,9,4,20,29,15,16,18
VisibleModules=28,2,13,20,14,9,4,29,27,17,18

View File

@@ -24,8 +24,9 @@ Sub Process_Globals
' 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 As Timer
Dim Interval As Int = 10
Dim Timer1, tConexion As Timer
Dim Interval As Int = 300
Dim IntervalC As Int = 10
Dim ruta As String = File.DirInternal
'Para los Logs
Private logs As StringBuilder
@@ -36,6 +37,7 @@ Sub Process_Globals
Dim tabla As String
Dim MAC_IMPRESORA As String
Dim utimaPagina As String
Dim senial As Int = 1
End Sub
Sub Service_Create
@@ -45,6 +47,8 @@ Sub Service_Create
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
@@ -62,6 +66,13 @@ Sub Service_Start (StartingIntent As Intent)
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
@@ -69,6 +80,16 @@ Private Sub Timer1_Tick
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
@@ -82,7 +103,7 @@ Sub Service_Destroy
End Sub
Sub ENVIA_ULTIMA_GPS
Dim logger As Boolean = False
Dim logger As Boolean = True
If logger Then LogColor("Iniciamos ENVIA_ULTIMA_GPS", Colors.Magenta)
Dim cmd As DBCommand
' cmd.Initialize
@@ -90,12 +111,13 @@ Sub ENVIA_ULTIMA_GPS
' B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "fechat")
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "UPDATE_INTMEX_ACTUAL2_GPS"
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,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, Almacen: ${B4XPages.MainPage.ALMACEN}, Ruta: ${B4XPages.MainPage.rutapreventa}"$)
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
@@ -129,4 +151,103 @@ Sub reinicializaReqManager(srv As String)
DBReqServer = srv
reqManager.Initialize(Me, srv)
LogColor(srv, Colors.red)
End Sub
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