From 24584631bc01cb8cf5faf99bb9278850de412a27 Mon Sep 17 00:00:00 2001 From: Jose Alberto Guerra Ugalde Date: Tue, 23 Apr 2024 19:17:20 -0600 Subject: [PATCH] - Se agregaron validaciones de conexion al hacer clic en el boton de CONECTAR en la pantalla principal --- B4A/B4XMainPage.bas | 8 ++--- B4A/C_Principal.bas | 65 +++++++++++++++++++++++++++------------- B4A/DBRequestManager.bas | 17 +++++++++++ B4A/KelloggsV4.b4a | 2 +- B4A/KelloggsV4.b4a.meta | 2 +- B4A/Starter.bas | 2 ++ B4A/kms_helperSubs.bas | 29 ++++++++++++++++++ 7 files changed, 99 insertions(+), 26 deletions(-) diff --git a/B4A/B4XMainPage.bas b/B4A/B4XMainPage.bas index 455c4f1..707e0a0 100644 --- a/B4A/B4XMainPage.bas +++ b/B4A/B4XMainPage.bas @@ -43,7 +43,7 @@ Sub Class_Globals Public checklist As C_CheckList Dim kh As kms_helperSubs Dim ime As IME - + Dim reqManager As DBRequestManager Dim ultimaActualizacionGPS As String = 235959 Dim almacen, ruta As String @@ -68,7 +68,7 @@ Sub Class_Globals Private B_MACIMP As Button Private CUANTOS As String Private foto_g () As Byte - + Private ListView1 As ListView Private ImageView1 As ImageView Private Label1 As Label @@ -77,7 +77,7 @@ Sub Class_Globals Private b_findiaOk As Button Private p_finDia As Panel Private et_autSup As EditText - + 'prueba downloadfile Dim ProgressBar1 As ProgressBar Dim Label1 As Label @@ -86,7 +86,7 @@ Sub Class_Globals Private p_download As Panel Private Label6 As Label Dim logger As Boolean = True - + Dim lat_gps, lon_gps As String Dim tipo_venta As String Dim bTerminarClicked As Boolean = False diff --git a/B4A/C_Principal.bas b/B4A/C_Principal.bas index c55bfc4..31b9377 100644 --- a/B4A/C_Principal.bas +++ b/B4A/C_Principal.bas @@ -276,7 +276,7 @@ Private Sub B4XPage_Created (Root1 As B4XView) kh.centraPanel(p_botonesResumen, Root.Width) ' kh.centraPanel(Panel7, Root.Width) ' kh.centraPanel(PNL_ACCESO, Root.Width) - + P_RESUMEN.Top = 0 : P_RESUMEN.Left = 0 'Panel Resumen ' p_resumenAcumulado.Top = 0 : p_resumenAcumulado.Left = 0 ' Panel Resumen Acumualado p_downloadPDF.Top = 0 : p_downloadPDF.left = 0 @@ -290,6 +290,8 @@ End Sub Sub B4XPage_Appear ' Log(Subs.traeDiaSemana) + Starter.errorConnDBReq = False + connecta.TextColor = Colors.White StartBluetooth ' If Not(kh.CheckNotificationAccess) Then ' Msgbox2Async($"Se necesita acceso a las notificaciones, haga clic en "Aceptar" y en la siguiente pantalla permita el acceso a la aplicación "${Application.LabelName}"."$, "Permisos necesarios", "Aceptar", "", "", Null, True) @@ -879,6 +881,11 @@ Sub JobDone(Job As HttpJob) reqManager.trackNext(Job) If Not(Job.Success) Then LogColor("Error: " & Job.tag & " : " & Job.ErrorMessage, Colors.red) + If Job.Tag = "version" Then + Starter.errorConnDBReq = True + connecta.TextColor = Colors.red + ToastMessageShow("Error al conectarse con Keymon, revise su conexión y reintente!", True) + End If If Job.ErrorMessage = "STREAM" Then contador_strem = contador_strem + 1 If CARGA = "SUBIR" Then @@ -1571,6 +1578,7 @@ Sub JobDone(Job As HttpJob) If Job.JobName = "DBRequest" Then Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "version" Then 'query tag + connecta.TextColor = Colors.White For Each records() As Object In RESULT.Rows Starter.skmt.ExecNonQuery("delete from VERSION") Dim CAT_VE_VERSION As String = records(RESULT.Columns.Get("CAT_VE_VERSION")) @@ -1984,7 +1992,13 @@ Sub Activity_KeyPress (key As Int) As Boolean End Sub Sub connecta_Click - +' wait for (kh.ping) Complete (Success As Boolean, ExitValue As Int, StdOut As String, StdErr As String) + If Not(IsConnectedToInternet) Then + connecta.TextColor = Colors.Red + ToastMessageShow("No hay conexión a internet, por favor establecer una conexión y reintentar!!", True) + Else + connecta.TextColor = Colors.White + End If ' Log("################# PERMISOS BT: " & Starter.rp.Check("android.permission.BLUETOOTH_CONNECT")) ' Log("Permisos BT: " & Starter.rp.Check("android.permission.BLUETOOTH_CONNECT")) ' Log("REVISAMOS PERMISOS DE BT") @@ -2043,6 +2057,24 @@ Sub connecta_Click ' End If End Sub +Private Sub connecta_LongClick + Private h As ResultSet = Starter.skmt.ExecQuery($"select * from bitacoraGPS"$) + Do While h.nextrow + cmd.Initialize + cmd.Name = "mandaBitacora" +' TMP_ALMACEN, TMP_USUARIO, TMP_RUTA, TMP_EVENTO, TMP_ID_CLIENTE, TMP_NOMBRE_CLIENTE, TMP_INICIO, TMP_FINAL, TMP_LATITUD, TMP_LONGITUD, TMP_PRESICION, TMP_MOTIVO_NO_VENTA, TMP_MOTIVO_NO_VISITA, TMP_FECHA_SINC + cmd.Parameters = Array As Object(h.GetString("almacenb"), h.GetString("usuariob"), h.GetString("rutab"), h.GetString("eventob"), h.GetString("clienteb"), h.GetString("clienteb"), h.GetString("iniciob"), h.GetString("finb"), h.GetString("latitudb"), h.GetString("longitudb"), h.GetString("precision"), h.GetString("motivonoventa"), h.GetString("motivonovisita")) + reqManager.ExecuteCommand(cmd , "mandaBitacora") +' cmd.Name = "borraBitacora" +' cmd.Parameters = Array As Object(c.GetString("almacenb"), c.GetString("rutab"), c.GetString("usuariob"), c.GetString("almacenb")) + Loop +' End If + Log("MANDAMOS BITACORA") +' Subs.bitacora(Subs.fechanormal(DateTime.Now),usuario,ALMACEN,l_ruta.Text,"Carga día", "",Subs.fechanormal(DateTime.Now),Subs.fechanormal(DateTime.Now),Starter.lat_gps,Starter.lon_gps,"2","","") +' sql.mandaBitacora = insert into KELLOGGS.TMP_GPS_DIARIO (TMP_ALMACEN, TMP_USUARIO, TMP_RUTA, TMP_EVENTO, TMP_ID_CLIENTE, TMP_NOMBRE_CLIENTE, TMP_INICIO, TMP_FINAL, TMP_LATITUD, _ +' TMP_LONGITUD, TMP_PRESICION, TMP_MOTIVO_NO_VENTA, TMP_MOTIVO_NO_VISITA, TMP_FECHA_SINC) values ((?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),sysdate) +End Sub + Sub BUSCA_Click Subs.iniciaActividad("TicketsDia") End Sub @@ -3322,24 +3354,6 @@ Sub GetBA As Object Return jo.RunMethod("getBA", Null) End Sub -Private Sub connecta_LongClick - Private h As ResultSet = Starter.skmt.ExecQuery($"select * from bitacoraGPS"$) - Do While h.nextrow - cmd.Initialize - cmd.Name = "mandaBitacora" -' TMP_ALMACEN, TMP_USUARIO, TMP_RUTA, TMP_EVENTO, TMP_ID_CLIENTE, TMP_NOMBRE_CLIENTE, TMP_INICIO, TMP_FINAL, TMP_LATITUD, TMP_LONGITUD, TMP_PRESICION, TMP_MOTIVO_NO_VENTA, TMP_MOTIVO_NO_VISITA, TMP_FECHA_SINC - cmd.Parameters = Array As Object(h.GetString("almacenb"), h.GetString("usuariob"), h.GetString("rutab"), h.GetString("eventob"), h.GetString("clienteb"), h.GetString("clienteb"), h.GetString("iniciob"), h.GetString("finb"), h.GetString("latitudb"), h.GetString("longitudb"), h.GetString("precision"), h.GetString("motivonoventa"), h.GetString("motivonovisita")) - reqManager.ExecuteCommand(cmd , "mandaBitacora") -' cmd.Name = "borraBitacora" -' cmd.Parameters = Array As Object(c.GetString("almacenb"), c.GetString("rutab"), c.GetString("usuariob"), c.GetString("almacenb")) - Loop -' End If - Log("MANDAMOS BITACORA") -' Subs.bitacora(Subs.fechanormal(DateTime.Now),usuario,ALMACEN,l_ruta.Text,"Carga día", "",Subs.fechanormal(DateTime.Now),Subs.fechanormal(DateTime.Now),Starter.lat_gps,Starter.lon_gps,"2","","") -' sql.mandaBitacora = insert into KELLOGGS.TMP_GPS_DIARIO (TMP_ALMACEN, TMP_USUARIO, TMP_RUTA, TMP_EVENTO, TMP_ID_CLIENTE, TMP_NOMBRE_CLIENTE, TMP_INICIO, TMP_FINAL, TMP_LATITUD, _ -' TMP_LONGITUD, TMP_PRESICION, TMP_MOTIVO_NO_VENTA, TMP_MOTIVO_NO_VISITA, TMP_FECHA_SINC) values ((?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),sysdate) -End Sub - 'Borramos los clientes nuevosd que no tengan venta. Sub borraClientesNuevosSinVenta 'ignore Private x As Cursor = Starter.skmt.ExecQuery("Select CAT_CL_CODIGO from kmt_info where CAT_CL_CODIGO like 'N%' and CAT_CL_CODIGO not in (Select pe_cliente from pedido)") @@ -3366,4 +3380,15 @@ End Sub Private Sub p_resumenAcumulado_Click +End Sub + +Sub IsConnectedToInternet As Boolean 'ignore + Dim r As Reflector + r.Target = r.GetContext + r.Target = r.RunMethod2("getSystemService", "connectivity", "java.lang.String") + r.Target = r.RunMethod("getActiveNetworkInfo") + If r.Target <> Null Then + Return r.RunMethod("isConnectedOrConnecting") + End If + Return False End Sub \ No newline at end of file diff --git a/B4A/DBRequestManager.bas b/B4A/DBRequestManager.bas index d2e4337..3d2d3ad 100644 --- a/B4A/DBRequestManager.bas +++ b/B4A/DBRequestManager.bas @@ -47,6 +47,23 @@ Public Sub ExecuteQuery(Command As DBCommand, Limit As Int, Tag As Object) j.PostBytes(link & "?method=query", ms.ToBytesArray) End Sub +'Sends a query request. +'Command - Query name and parameters. +'Limit - Maximum rows to return or 0 for no limit. +'Tag - An object that will be returned in the result. +'Timeout - The http request timeout in ms, or 0 if default (30 secs) +Public Sub ExecuteQuery3(Command As DBCommand, Limit As Int, Tag As Object, Timeout As Int) 'Mod por CHV, agregué el parametro Timeout - 211229 + Dim j As HttpJob + Dim ms As OutputStream + Dim out2 As OutputStream = StartJob(j,ms, Tag) + WriteObject(Command.Name, out2) + WriteInt(Limit, out2) + WriteList(Command.Parameters, out2) + out2.Close + j.PostBytes(link & "?method=query", ms.ToBytesArray) + If Timeout <> 0 Then j.GetRequest.Timeout = Timeout +End Sub + 'Executes a batch of (non-select) commands. 'ListOfCommands - List of the commands that will be executes. 'Tag - An object that will be returned in the result. diff --git a/B4A/KelloggsV4.b4a b/B4A/KelloggsV4.b4a index 2120d29..9942c97 100644 --- a/B4A/KelloggsV4.b4a +++ b/B4A/KelloggsV4.b4a @@ -869,7 +869,7 @@ Version=12.8 #Region Project Attributes #ApplicationLabel: Kelloggs Venta #VersionCode: 3000 - #VersionName: 4.04.15 + #VersionName: 4.04.22 #SupportedOrientations: portrait #CanInstallToExternalStorage: False #BridgeLogger:true diff --git a/B4A/KelloggsV4.b4a.meta b/B4A/KelloggsV4.b4a.meta index e684f3b..bf991f6 100644 --- a/B4A/KelloggsV4.b4a.meta +++ b/B4A/KelloggsV4.b4a.meta @@ -88,6 +88,6 @@ ModuleClosedNodes6= ModuleClosedNodes7= ModuleClosedNodes8= ModuleClosedNodes9= -NavigationStack=C_Principal,Class_Globals,0,0,C_Principal,cargar_Click,642,0,C_Principal,JobDone,1821,0,C_Principal,connecta_Click,1993,0,C_Principal,trabajar_Click,447,0,C_CheckList,B4XPage_Appear,148,0,C_Cliente,Cuestionario,2125,6,C_Productos,Class_Globals,0,0,C_Productos,cuentaProds,822,1,B4XMainPage,B4XPage_Created,189,0 +NavigationStack=DBRequestManager,ExecuteQuery,35,0,DBRequestManager,Initialize,24,0,Starter,Process_Globals,49,4,C_Principal,B4XPage_Created,272,0,C_Principal,B4XPage_Appear,287,6,C_Principal,connecta_LongClick,2011,0,kms_helperSubs,traeDescXSku,1059,0,kms_helperSubs,ping,1063,6,C_Principal,connecta_Click,1987,6,C_Principal,JobDone,1592,0,B4XMainPage,Class_Globals,97,0 SelectedBuild=0 VisibleModules=1,27,11,3,12,4,28,2,23,22,17 diff --git a/B4A/Starter.bas b/B4A/Starter.bas index 62019c7..75121b4 100644 --- a/B4A/Starter.bas +++ b/B4A/Starter.bas @@ -52,6 +52,8 @@ Sub Process_Globals 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 End Sub Sub Service_Create diff --git a/B4A/kms_helperSubs.bas b/B4A/kms_helperSubs.bas index 4ed0f3e..6546aff 100644 --- a/B4A/kms_helperSubs.bas +++ b/B4A/kms_helperSubs.bas @@ -1062,4 +1062,33 @@ Sub traeDescXSku(clienteId As String, prodId As String) As String 'ignore desc = c.GetString("CAT_DS_PORCENTAJE") End If Return desc +End Sub + +Sub ping As ResumableSub + Private ph As Phone + Wait For (ph.ShellAsync("ping", Array As String("-c 1","-W 5", "8.8.8.8"))) Complete (Success As Boolean, ExitValue As Int, StdOut As String, StdErr As String) + If Success Then +' Log("ExitValue:" & ExitValue) +' Log("StdError:" & StdErr) + Private res() As String = Regex.Split(",", StdOut) + For i = 0 To res.Length - 1 + If res(i).Contains("1 received") Then + If Starter.logger Then LogColor(">>> HAY CONEXION", Colors.Green) + Starter.pingShell = True + Else If res(i).Contains("0 received") Then + If Starter.logger Then LogColor(">>> NO HAY CONEXION", Colors.Red) + Starter.pingShell = False + End If +' Log(res(i)) + Next +' LogColor("StdOut: " & res, Colors.Blue) +' If B4XPages.IsInitialized Then B4XPages.MainPage.cb_internet.Checked = Starter.ping + If Not(Starter.pingShell) Then + If Starter.logger Then Log("Sin conexión a Google!!!") +' notiLowReturn("SIN INTERNET ❌", "NO hay conexion a Google.", Monitor.nid) +' If B4XPages.IsInitialized Then B4XPages.MainPage.l_status.Text = "NO hay conexión a Google!!" + End If + Else + Log("Error: " & LastException) + End If End Sub \ No newline at end of file