From 2a3a701d3c50e95a076223bff6da489dcd7b0d4d Mon Sep 17 00:00:00 2001 From: Jose Alberto Guerra Ugalde Date: Tue, 26 Dec 2023 16:52:36 -0600 Subject: [PATCH] =?UTF-8?q?26/2/23=20-=20Cuestionario=20para=20clientes=20?= =?UTF-8?q?-=20Se=20agreg=C3=B3=20el=20cuestionario=20popup=20al=20entrar?= =?UTF-8?q?=20a=20un=20cliente.=20-=20FALTA=20PONERLO=20EN=20LOS=20CLIENTE?= =?UTF-8?q?S=20NUEVOS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- B4A/B4XMainPage.bas | 49 ++- B4A/C_Cliente.bas | 157 +++++++- B4A/C_Clientes.bas | 2 +- B4A/C_Cuestionario.bas | 153 ++++++++ B4A/C_NuevoCliente.bas | 8 +- B4A/C_Questionario.bas | 153 ++++++++ B4A/Files/cliente.bal | Bin 35534 -> 12459 bytes B4A/Files/clientedatos.bal | Bin 0 -> 26439 bytes B4A/Files/nuevocliente.bal | Bin 8454 -> 10914 bytes B4A/Mariana Censos.b4a | 713 ++++++++++++++++++------------------ B4A/Mariana Censos.b4a.meta | 27 +- B4A/Starter.bas | 2 +- B4A/Tracker.bas | 5 +- 13 files changed, 884 insertions(+), 385 deletions(-) create mode 100644 B4A/C_Cuestionario.bas create mode 100644 B4A/C_Questionario.bas create mode 100644 B4A/Files/clientedatos.bal diff --git a/B4A/B4XMainPage.bas b/B4A/B4XMainPage.bas index 9fbb360..3dc4696 100644 --- a/B4A/B4XMainPage.bas +++ b/B4A/B4XMainPage.bas @@ -74,6 +74,10 @@ Sub Class_Globals Private lv_server As ListView Private l_server As Label Private et_server As EditText + + Dim q As C_Cuestionario +' Private bAceptarPregunta As Button +' Dim encuestaIniciada As Boolean = False End Sub Public Sub Initialize @@ -94,7 +98,7 @@ Private Sub B4XPage_Created (Root1 As B4XView) B4XPages.AddPage("Clientes", clientes) cliente.Initialize B4XPages.AddPageAndCreate("Cliente", cliente) -' productos.Initialize +' productos.InitializeQuestionario ' B4XPages.AddPage("Productos", productos) updateAvailable.Initialize B4XPages.AddPage("updateAvailable", updateAvailable) @@ -117,6 +121,7 @@ Private Sub B4XPage_Created (Root1 As B4XView) ' historico.Initialize ' B4XPages.AddPage("Historico", historico) ruta = Starter.ruta + p_Main.Height = Root.Height ' Subs.borraArribaDe100Errores ' Para Websockets ' Subs.borraArribaDe600RenglonesBitacora ' Para Websockets If File.Exists(ruta, "kmt.db") = False Then @@ -143,6 +148,7 @@ Private Sub B4XPage_Created (Root1 As B4XView) skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_GIROS (id TEXT, descripcion TEXT)") ' skmt.ExecNonQuery("drop table kmt_info") skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS kmt_info (CAT_CL_FOTO BLOB, CAT_CL_NUM_SERIEFISICO TEXT, CAT_CL_MTOCOMPRA TEXT, CAT_CL_CEDIS TEXT, CAT_CL_LAT TEXT, CAT_CL_LONG TEXT, CAT_CL_FBAJA TEXT, CAT_CL_FALTA TEXT, CAT_CL_CP TEXT, CAT_CL_EDO TEXT, CAT_CL_MUNI TEXT, CAT_CL_COLONIA TEXT, CAT_CL_CALLE2 TEXT, CAT_CL_CALLE1 TEXT, CAT_CL_NOINT TEXT, CAT_CL_NOEXT TEXT, CAT_CL_CALLE TEXT, CAT_CL_EMAIL TEXT, CAT_CL_TELEFONO TEXT, CAT_CL_ATIENTE2 TEXT, CAT_CL_ATIENDE1 TEXT, CAT_CL_NOMBRE TEXT, CAT_CL_GIRO TEXT, CAT_CL_DIAS_VISITA TEXT, CAT_CL_TIPO_RUTA TEXT, CAT_CL_RUTA TEXT, CAT_CL_CODIGO TEXT, gestion NUMERIC, CAT_CL_DIASEMANA TEXT, CAT_CL_SECUENCIA INT)") + skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CUESTIONARIO (Q_IDCLIENTE TEXT, Q_IDPREGUNTA TEXT, Q_PREGUNTA TEXT, Q_IDRESPUESTA TEXT, Q_RESPUESTA TEXT, Q_FECHA TEXT)") Subs.agregaColumna("kmt_info", "CAT_CL_CRUCE1", "TEXT") Subs.agregaColumna("kmt_info", "CAT_CL_ESTATUS", "TEXT") Subs.agregaColumna("kmt_info", "CAT_CL_ENVIO_PENDIENTE", "TEXT") @@ -203,8 +209,9 @@ Private Sub B4XPage_Created (Root1 As B4XView) almacen = 0 rutaPreventa = 0 p_appUpdate.Visible = False - + Log(Starter.server) reqManager.Initialize(Me, Starter.server) +' q.Initialize(Me, "q", Root, skmt) End Sub Sub B4XPage_Appear @@ -218,12 +225,12 @@ Sub B4XPage_Appear Else Log("SIN permisos de ubicacion") End If - Log("1") p_Main.Width = Root.Width Dim ph As Phone 'Get Id Device Dim DeviceID As String = ph.GetSettings("android_id").ToUpperCase LogColor($"////////////////// DeviceID: ${DeviceID} ////////////////// "$, Colors.Blue) server = Starter.server + Log(Starter.server) reqManager.Initialize(Me, Starter.server) tgl.Initialize() If Not(Starter.gps.GPSEnabled) Then @@ -261,7 +268,9 @@ Sub B4XPage_Appear 'Obtenemos el usuario registrado ' CallSubDelayed(FirebaseMessaging, "SubscribeToTopics") dameUsuario +' If Not(q.encuestaIniciada) Then q.agregaPregunta("1", "¿Se puede acceder al negocio o está enrejado?", Array As String("No, está enrejado o no se tiene acceso", "Si se pude acceder")) End Sub + 'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. Sub Entrar_Click @@ -577,8 +586,8 @@ End Sub Sub i_engrane_Click lv_server.Clear - lv_server.AddSingleLine("http://keymon.lat:1782") - If user.Text = "KMTS1" Then lv_server.AddSingleLine("http://10.0.0.205:1782") + lv_server.AddSingleLine("http://keymon.lat:1781") + If user.Text = "KMTS1" Then lv_server.AddSingleLine("http://10.0.0.205:1781") l_server.Text = Starter.server et_server.Text = Starter.server Subs.panelVisible(p_appUpdate,0,0) @@ -587,6 +596,7 @@ End Sub Sub b_guardar_Click p_appUpdate.Visible = False Starter.reqManager.Initialize(Me, et_server.Text) + reqManager.Initialize(Me, et_server.Text) Starter.server = et_server.Text ToastMessageShow("Servidor modificado", False) Subs.panelVisible(p_Main,0,0) @@ -625,3 +635,32 @@ Private Sub b_enviarbd_Click in.Flags = 1 'FLAG_GRANT_READ_URI_PERMISSION StartActivity(in) End Sub + +'Sub q_preguntaContestada(m As Map) +'' Recibimos el id de la pregunta, el id de la respuesta, el texto de la respuesta y el objeto del panelSombra para poder ocultarlo. +' Log(m) +'' If q.IsInitialized Then Log($"${q.encuestaIniciada}|${q.preguntaActual}"$) +'' m.Get("panel").As(Panel).Visible = False 'Ocultamos el panel de la pregunta. +' m.Get("panel").As(Panel).RemoveView 'Quitamos le panel de la pregunta +' DateTime.DateFormat = "yyyyMMdd" +' skmt.ExecNonQuery($"delete from QUESTIONARIO where Q_IDCLIENTE = '${Subs.traeCliente}' and Q_IDPREGUNTA = '${m.Get("idPregunta")}'"$) +' skmt.ExecNonQuery($"insert into QUESTIONARIO (Q_IDCLIENTE, Q_IDPREGUNTA, Q_PREGUNTA, Q_IDRESPUESTA, Q_RESPUESTA, Q_FECHA) values ('${Subs.traeCliente}', '${m.Get("idPregunta")}', '${m.Get("pregunta")}', '${m.Get("idRespuesta")}', '${m.Get("respuesta")}', '${DateTime.Date(DateTime.now)}')"$) +' Select Case m.Get("idPregunta") +' Case "1" +' If m.Get("respuesta") = "No, está enrejado o no se tiene acceso" Then +' Log("Tiendajon / Ventana / Kiosko") +' Else if m.Get("respuesta") = "Si se pude acceder" Then +' q.agregaPregunta("2", "¿Tiene al menos 2 pasillos con acceso directo a la mercancía?", Array As String("Si tiene al menos 2 pasillos con acceso directo a la mercancía", "No tiene pasillos o solo uno central")) +' End If +' Case "2" +' If m.Get("respuesta") = "Si tiene al menos 2 pasillos con acceso directo a la mercancía" Then +' Log("Mini-Super") +' else If m.Get("respuesta") = "No tiene pasillos o solo uno central" Then +' q.agregaPregunta("3", "¿Cuenta con enfriador horizontal para venta de perecederos como queso, jamon, crema, etc.?", Array As String("Si", "No tiene enfriador horizontal. ¿El local esta enfocado a venta especializada?")) +' End If +' Case 3 +' Log(">>>>>>>>>> " & q.encuestaIniciada) +' q.encuestaIniciada = False +' Log(">>>>>>>>>> " & q.encuestaIniciada) +' End Select +'End Sub \ No newline at end of file diff --git a/B4A/C_Cliente.bas b/B4A/C_Cliente.bas index 2a7e251..9463c64 100644 --- a/B4A/C_Cliente.bas +++ b/B4A/C_Cliente.bas @@ -151,7 +151,15 @@ Sub Class_Globals Dim turnoColor As Int = 1 Dim cd As ColorDrawable Dim camposModificados As List - dim mandarTodo as Boolean = False + Dim mandarTodo As Boolean = False + Private sv_clientesDatos As ScrollView +' Private bAceptarPregunta As Button +' Dim encuestaIniciada As Boolean = False + Dim q As C_Cuestionario + Dim su As StringUtils + Dim clienteAnt As String = "" + Private l_cuestionario As Label + Private b_mapa2 As Button End Sub 'You can add more parameters here. @@ -177,9 +185,18 @@ Private Sub B4XPage_Created (Root1 As B4XView) m_lon = 0 reqManager.Initialize(Me, Starter.server) - + sv_clientesDatos.Width = Root.Width + sv_clientesDatos.Height = Root.Height + sv_clientesDatos.Panel.LoadLayout("clienteDatos") + Subs.centraBoton(b_guardaCambios, p_cliente.Width) + If l_cuestionario.Visible Then + b_guardaCambios.Top = l_cuestionario.Top + l_cuestionario.Height + 20dip + Else + b_guardaCambios.Top = l_cuestionario.Top + 20dip + End If Log("terminamos create") camposModificados.Initialize + q.Initialize(Me, "q", Root, skmt) End Sub 'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. @@ -187,9 +204,8 @@ End Sub Sub B4XPage_Appear rp.CheckAndRequest(Starter.rp.PERMISSION_CAMERA) Wait For B4XPage_PermissionResult (Permission As String, resultC As Boolean) - rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE) - Wait For B4XPage_PermissionResult (Permission As String, resultC As Boolean) - CallSubDelayed(Tracker, "StartFLPSmall") + sv_clientesDatos.Panel.Height = p_cliente.Height + l_cuestionario.Visible = False reqManager.Initialize(Me, Starter.server) lv_colonia.Visible = False Timer2.Initialize("Timer2", Interval * 1) @@ -200,6 +216,7 @@ Sub B4XPage_Appear ToastMessageShow("Es necesario tener el GPS encendido", True) StartActivity(Starter.gps.LocationSettingsIntent) End If + CallSubDelayed(Tracker, "StartFLPSmall") If refrescarCliente Then LogColor("Cargamos cliente de BD", Colors.Magenta) skmt.Initialize(ruta,"kmt.db", True) @@ -240,6 +257,26 @@ Sub B4XPage_Appear l_lat.Text = m_lat l_lon.Text = m_lon End If + Private cuest As Cursor = skmt.ExecQuery($"select * from cuestionario where Q_IDCLIENTE = '${Subs.traeCliente}'"$) + If cuest.RowCount > 0 Then + Private cs As CSBuilder + cs.Initialize + Private cuestText As String + For i = 0 To cuest.RowCount - 1 + cuest.Position = i +' If i = 0 Then + cs.color(Colors.black).Append(cuest.GetString("Q_PREGUNTA")).popall.Append(CRLF).Append(" " & cuest.GetString("Q_RESPUESTA")).Append(CRLF).popall +' Else +' cuestText = cuestText & cs.bold.Append(CRLF).Append(cuest.GetString("Q_PREGUNTA")).pop.Append(CRLF).Append(cuest.GetString("Q_RESPUESTA")).popall +' End If + Next + l_cuestionario.Text = cs + l_cuestionario.Visible = True + End If + + l_cuestionario.Height = su.MeasureMultilineTextHeight(l_cuestionario, l_cuestionario.Text) + + ajustaTamano ' Tracker.FLP.Connect If Tracker.FLP.IsInitialized And Tracker.FLP.GetLastKnownLocation.IsInitialized Then 'Si tenemos "UltimaUbicaccionConocida" la usamos. B4XPages.MainPage.lat_gps = Tracker.FLP.GetLastKnownLocation.Latitude @@ -269,11 +306,17 @@ Sub B4XPage_Appear cb_giro.SetItems(losGiros) cb_giro.SelectedIndex = losGiros.IndexOf(c.GetString("CAT_CL_GIRO")) cb_giro.mBase.Width = et_diaSemana.Width - Log("|"&c.GetString("CAT_CL_GIRO")&"|") +' Log("|"&c.GetString("CAT_CL_GIRO")&"|") c.Close camposModificados.Clear End If refrescarCliente = False + 'Revisamos si el cliente actual es diferente del anterior y si es diferente ponemos encuestaIniciada en VERDADERO. + If clienteAnt <> Subs.traeCliente Then q.encuestaIniciada = False + clienteAnt = Subs.traeCliente +' Log("CON ENCUESTA: " & q.clienteConEncuesta(Subs.traeCliente)) +' Log("INICIADA: " & q.encuestaIniciada) + If Not(q.encuestaIniciada) And Not(q.clienteConEncuesta(Subs.traeCliente)) Then q.agregaPregunta("1", "¿Se puede acceder al negocio o está enrejado?", Array As String("No, está enrejado o no se tiene acceso", "Si se pude acceder")) End Sub Private Sub Timer2_Tick @@ -303,8 +346,8 @@ Sub GPS_LocationChanged (Location1 As Location) l2.Initialize2(m_lat, m_lon) ' Log($"${Location1.Latitude}, ${Location1.Longitude} - ${Tracker.FLP.GetLastKnownLocation.Latitude}, ${Tracker.FLP.GetLastKnownLocation.Longitude}"$) 'now we need the distance between our location and the target location - Dim distance As Long - distance = l1.DistanceTo(l2) 'the result is in meter +' Dim distance As Long +' distance = l1.DistanceTo(l2) 'the result is in meter B4XPages.MainPage.skmt.ExecNonQuery("DELETE FROM HIST_GPS") B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO HIST_GPS (HGDATE, HGLAT, HGLON) VALUES(?,?,?) ", Array As Object (sDate & " " & sTime, B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps)) CallSubDelayed(Tracker, "CreateLocationRequest") @@ -316,7 +359,10 @@ End Sub Private Sub B4XPage_CloseRequest As ResumableSub ' BACK key pressed + q.encuestaIniciada = False + q.ocultPanelPregunta ' Return True To close, False To cancel + CallSubDelayed(Tracker, "StartFLP") Return True ' Return False End Sub @@ -641,4 +687,99 @@ End Sub Private Sub et_diaSemana_TextChanged (Old As String, New As String) camposModificados.Add("CAT_CL_DIAS_VISITA") +End Sub + +Sub q_preguntaContestada(m As Map) +' Recibimos el id de la pregunta, el id de la respuesta, el texto de la respuesta y el objeto del panelSombra para poder ocultarlo. + Log(m) +' If q.IsInitialized Then Log($"${q.encuestaIniciada}|${q.preguntaActual}"$) +' m.Get("panel").As(Panel).Visible = False 'Ocultamos el panel de la pregunta. + m.Get("panel").As(Panel).RemoveView 'Quitamos le panel de la pregunta + DateTime.DateFormat = "yyyyMMdd" + skmt.ExecNonQuery($"delete from CUESTIONARIO where Q_IDCLIENTE = '${Subs.traeCliente}' and Q_IDPREGUNTA = '${m.Get("idPregunta")}'"$) + skmt.ExecNonQuery($"insert into CUESTIONARIO (Q_IDCLIENTE, Q_IDPREGUNTA, Q_PREGUNTA, Q_IDRESPUESTA, Q_RESPUESTA, Q_FECHA) values ('${Subs.traeCliente}', '${m.Get("idPregunta")}', '${m.Get("pregunta")}', '${m.Get("idRespuesta")}', '${m.Get("respuesta")}', '${DateTime.Date(DateTime.now)}')"$) + Select Case m.Get("idPregunta") + Case "1" + If m.Get("respuesta") = "No, está enrejado o no se tiene acceso" Then + Log("Tiendajon / Ventana / Kiosko") + ToastMessageShow("Tiendajon / Ventana / Kiosko", False) + q.agregaPregunta("6", "¿Cuenta con caja de salida para cobro con sistema de computo?", Array As String("Si, tiene sistema de computo para cobro", "No")) + Else if m.Get("respuesta") = "Si se pude acceder" Then + q.agregaPregunta("2", "¿Tiene al menos 2 pasillos con acceso directo a la mercancía?", Array As String("Si tiene al menos 2 pasillos con acceso directo a la mercancía", "No tiene pasillos o solo uno central")) + End If + Case "2" + If m.Get("respuesta") = "Si tiene al menos 2 pasillos con acceso directo a la mercancía" Then + Log("Mini-Super") + ToastMessageShow("Mini-Super", False) + q.agregaPregunta("6", "¿Cuenta con caja de salida para cobro con sistema de computo?", Array As String("Si, tiene sistema de computo para cobro", "No")) + else If m.Get("respuesta") = "No tiene pasillos o solo uno central" Then + q.agregaPregunta("3", "¿Cuenta con enfriador horizontal para venta de perecederos como queso, jamon, crema, etc.?", Array As String("Si", "No tiene enfriador horizontal.")) + End If + Case "3" + Log("|"&m.Get("respuesta")&"|") + If m.Get("respuesta") = "Si" Then + Log("Miscelanea") + ToastMessageShow("Miscelanea", False) + q.agregaPregunta("6", "¿Cuenta con caja de salida para cobro con sistema de computo?", Array As String("Si, tiene sistema de computo para cobro", "No")) + else If m.Get("respuesta") = "No tiene enfriador horizontal." Then + q.agregaPregunta("4", "¿El local esta enfocado a venta especializada?", Array As String("No", "Si")) + End If + Case "4" + If m.Get("respuesta") = "No" Then + Log("Abarrotera") + ToastMessageShow("Abarrotera", False) + q.agregaPregunta("6", "¿Cuenta con caja de salida para cobro con sistema de computo?", Array As String("Si, tiene sistema de computo para cobro", "No")) + else If m.Get("respuesta") = "Si" Then + q.agregaPregunta("5", "¿Cual venta especializada?", Array As String("Carnicería / Pollería", "Cremería", "Depósito / Vinateria", "Dulcería", "Farmacia", "Fonda / Restaurante / Cafetería", "Verdulería")) + End If + Case "5" + Log(m.Get("respuesta")) + ToastMessageShow(m.Get("respuesta"), False) +' If m.Get("respuesta") = "No" Then +' Log("Abarrotera") +' q.agregaPregunta("5", "¿Cuenta con caja de salida para cobro con sistema de computo?", Array As String("Si, tiene sistema de computo para cobro", "No")) +' else If m.Get("respuesta") = "Si" Then + q.agregaPregunta("6", "¿Cuenta con caja de salida para cobro con sistema de computo?", Array As String("Si, tiene sistema de computo para cobro", "No")) +' End If + Case "6" + Log(m.Get("respuesta")) + ToastMessageShow(m.Get("respuesta"), False) + Log(">>>>>>>>>> " & q.encuestaIniciada) + q.encuestaIniciada = False + Log(">>>>>>>>>> " & q.encuestaIniciada) +' Case 6 + End Select +End Sub + +'Ajusta el tamaño del panel de scroll. +Sub ajustaTamano +' Log("xx: " & sv_clientesDatos.Panel.Height) +' Log($"${b_guardaCambios.Top} + 350"$) + If l_cuestionario.Visible Then + Log("visible") + b_guardaCambios.Top = l_cuestionario.Top + l_cuestionario.Height + 20 + Else + Log("INVisible") + b_guardaCambios.Top = b_mapa2.Top + b_mapa2.Height + 20 + End If + + + p_cliente.Height = b_guardaCambios.Top + 350 + sv_clientesDatos.Panel.Height = p_cliente.Height +' Log("xx: " & sv_clientesDatos.Panel.Height) +End Sub + +Private Sub Label9_LongClick +' Log(b_guardaCambios.Top) + If l_cuestionario.Visible Then + l_cuestionario.Visible = False +' b_guardaCambios.Top = b_mapa2.Top + b_mapa2.Height + 20 +' Log($"${b_mapa2.Top} + ${b_mapa2.Height} + 20dip"$) + Else + l_cuestionario.Visible = True +' b_guardaCambios.Top = l_cuestionario.Top + l_cuestionario.Height + 20 +' Log($"${l_cuestionario.Top} + ${l_cuestionario.Height} + 20"$) + End If +' Log(b_guardaCambios.Top) + ajustaTamano End Sub \ No newline at end of file diff --git a/B4A/C_Clientes.bas b/B4A/C_Clientes.bas index e07f09a..3b4c278 100644 --- a/B4A/C_Clientes.bas +++ b/B4A/C_Clientes.bas @@ -177,7 +177,7 @@ Sub clv_clientes_ItemClick (index As Int, Value As Object) DateTime.TimeFormat = "HH:mm:ss" Subs.guardaClienteHoraInicio(value2(0)) B4XPages.MainPage.cliente.refrescarCliente = True - Log(Value) +' Log(Value) If Value.As(String).StartsWith("N") Then B4XPages.MainPage.nuevoCliente.cargarCliente = True B4XPages.ShowPage("NuevoCliente") diff --git a/B4A/C_Cuestionario.bas b/B4A/C_Cuestionario.bas new file mode 100644 index 0000000..cada6de --- /dev/null +++ b/B4A/C_Cuestionario.bas @@ -0,0 +1,153 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=12.2 +@EndOfDesignText@ +Sub Class_Globals + Private Root As B4XView 'ignore + Private xui As XUI 'ignore + Private bAceptarPregunta As Button + Dim encuestaIniciada As Boolean = False + Private Root2 As B4XView + Private EventName As String 'ignore + Private CallBack As Object 'ignore + Private vPreguntaActual As String + Private db As SQL + Private clienteAnt As String = "" + Dim panelSombra As Panel 'Panel de sombra. +End Sub + +'You can add more parameters here. +Public Sub Initialize (vCallback As Object, vEventName As String, vRoot As B4XView, skmt As SQL) As Object + Root2 = vRoot + EventName = vEventName + CallBack = vCallback + db = skmt + vPreguntaActual = 0 + Return Me +End Sub + +'This event will be called once, before the page becomes visible. +Private Sub B4XPage_Created (Root1 As B4XView) + Root = Root1 + 'load the layout to Root +End Sub + +'Regresa verdadero o falso dependiendo de si ya se inició la encuesta. +'Sub encuestaIniciada As Boolean +' Return vEncuestaIniciada +'End Sub + +'Regresa el Id de la pregunta actual (read-only). +Sub preguntaActual As String 'ignore + Return vPreguntaActual +End Sub + +'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. + +'Muestra una pregunta con sus posibles respuestas. +' La lista de respuestas puede ser directamente un array p. ej. Array As String("value1", "value2") +' Crear un Sub_Click con el nombre del evento para que reciba un mapa con la respuesta p. ej.: Sub questionario_Click +' Regresa un mapa con: +' idPregunta - El Id especificado de la pregunta. +' pregunta - El texto de la pregunta. +' idRespuesta - Un numero consecutivo empezando en 1 por cada pregunta. +' respuesta - El texto de la respuesta. +' panel - El panel del popup para poder ocultarlo al contestar la pregunta. ( p. ej.: m.Get("panel").As(Panel).Visible = false ) +'########################################### +' Sub questionario_Click +' if m.get("idPregunta") = "1" ..Then .. Else con nuevas preguntas +' End Sub +'########################################### +Sub agregaPregunta(id As String, pregunta As String, respuestas As List) + encuestaIniciada = True + vPreguntaActual = id + bAceptarPregunta.Initialize("bAceptarPregunta") + + Private su As StringUtils + panelSombra.Initialize("pSombra") + Private cd As ColorDrawable + cd.Initialize(Colors.ARGB(125, 98, 98, 98), 0) + panelSombra.Background = cd + Private panelX As Panel 'Panel de la pregunta. + panelX.Initialize("pQuest") + Private lbl As Label 'Etiqueta de la pregunta. + lbl.Initialize("") + lbl.Text = pregunta + lbl.TextSize = 16 + lbl.TextColor = Colors.Black + cd.Initialize2(Colors.white, 20, 1, Colors.Gray) 'Borde y esquinas redondeadas del panel de la pregunta. + panelX.Background = cd + panelSombra.AddView(panelX, 10dip, 0dip, 80%x, 200dip) + Root2.AddView(panelSombra, 0, 0, 100%x, 100%y) 'add the panel to the layout + panelX.AddView(lbl, 20dip, 20dip, (panelX.Width * 0.9), 40dip) 'Agregamos la etiqueta al panel. + lbl.Height = su.MeasureMultilineTextHeight(lbl, lbl.Text) + Private r(respuestas.Size) As RadioButton + For p = 0 To respuestas.Size - 1 + r(p).Initialize("r") + r(p).Text = respuestas.Get(p) + r(p).Tag = CreateMap("id":id, "pregunta":pregunta, "panel":panelSombra, "idRespuesta":p + 1) + panelX.AddView(r(p), 10dip, (70 * (p + 1)), (panelX.Width * 0.9), 10) 'Agegamos el radio al panel. + r(p).Height = su.MeasureMultilineTextHeight(r(p), r(p).Text) + 25 'Calculamos el alto del radio de acuerdo al largo del texto. + Private newTop As Int = lbl.top + lbl.Height + 10 'Si es el primer radio, lo ponemos en top = alto de la "pregunta" + 10. + If p <> 0 Then newTop = r(p - 1).Top + r(p - 1).Height + 5 'Calculamos el Top del radio de acuerdo al top y alto del radio anterior. + r(p).Top = newTop + Next + r(0).Checked = True + bAceptarPregunta.Text = "Continuar" + panelX.AddView(bAceptarPregunta, 10, newTop + r(respuestas.Size - 1).Height + 20, 150dip, 50dip) 'Ponemos el boton de continuar despues del ultimo radio. + bAceptarPregunta.Left = (panelX.Width / 2) - (bAceptarPregunta.Width / 2) + panelX.Height = bAceptarPregunta.Top + bAceptarPregunta.Height + 15dip 'Calculamos el alto del panel de acuerdo al Top del boton. + panelX.left = (Root2.Width / 2) - (panelX.Width / 2) + panelX.top = (Root2.Height / 3) - (panelX.Height / 2) + panelSombra.Width = Root2.Width + panelSombra.Height = Root2.Height + panelSombra.BringToFront +' panelSombra.Elevation = 0 +End Sub + +private Sub preguntaContestada(Success As Map) 'ignore + If SubExists(CallBack, EventName & "_preguntaContestada") Then + CallSubDelayed2(CallBack, EventName & "_preguntaContestada", Success) + End If +End Sub + +private Sub pSombra_Click +End Sub + +private Sub r_CheckedChange(Checked As Boolean) + bAceptarPregunta.tag = CreateMap("idPregunta":Sender.As(RadioButton).tag.As(Map).Get("id").As(String), "pregunta":Sender.As(RadioButton).tag.As(Map).Get("pregunta"), "idRespuesta":Sender.As(RadioButton).tag.As(Map).Get("idRespuesta").As(String), "respuesta":Sender.As(RadioButton).text, "panel":Sender.As(RadioButton).tag.As(Map).Get("panel")) +End Sub + +Private Sub bAceptarPregunta_Click + encuestaIniciada = True + Private m As Map = Sender.As(Button).tag.As(Map) 'Recibimos el id de la pregunta, el id de la respuesta, el texto de la respuesta y el objeto del panelSombra para poder ocultarlo. + preguntaContestada(m) +'' m.Get("panel").As(Panel).Visible = False 'Ocultamos el panel de la pregunta. +' m.Get("panel").As(Panel).RemoveView +' If m.Get("idPregunta") = "1" And m.Get("respuesta") = "No, está enrejado o no se tiene acceso" Then +' Log("Tiendajon / Ventana / Kiosko") +' else If m.Get("idPregunta") = "1" And m.Get("respuesta") = "Si se pude acceder" Then +' agregaPregunta("2", "¿Tiene al menos 2 pasillos con acceso directo a la mercancía?", Array As String("Si tiene al menos 2 pasillos con acceso directo a la mercancía", "No tiene pasillos o solo uno central")) +' End If +' If m.Get("idPregunta") = "2" And m.Get("respuesta") = "Si tiene al menos 2 pasillos con acceso directo a la mercancía" Then +' Log("Mini-Super") +' else If m.Get("idPregunta") = "2" And m.Get("respuesta") = "No tiene pasillos o solo uno central" Then +' agregaPregunta("3", "¿Cuenta con enfriador horizontal para venta de perecederos como queso, jamon, crema, etc.?", Array As String("Si", "No tiene enfriador horizontal. ¿El local esta enfocado a venta especializada?")) +' End If +End Sub + +'Regresa verdadero si el cliente dado tiene cuestionario contestado. +Sub clienteConEncuesta(idCliente As String) As Boolean 'ignore + Private r As Boolean = False + Private c As Cursor = db.ExecQuery($"select count(*) as q from CUESTIONARIO where Q_IDCLIENTE = '${idCliente}'"$) + c.Position = 0 + If c.GetInt("q") > 0 Then r = True + Return r +End Sub + +'Oculta el anel de la pregunta. +Sub ocultPanelPregunta + If panelSombra.IsInitialized Then panelSombra.RemoveView +End Sub \ No newline at end of file diff --git a/B4A/C_NuevoCliente.bas b/B4A/C_NuevoCliente.bas index fed6e77..120f5e7 100644 --- a/B4A/C_NuevoCliente.bas +++ b/B4A/C_NuevoCliente.bas @@ -51,6 +51,9 @@ Sub Class_Globals Dim elOtroCliente As String = "" Dim camposModificados As List Dim mandarTodo As Boolean = False + Private et_atiende As EditText + Private et_telefono As EditText + Private et_email As EditText End Sub 'You can add more parameters here. @@ -149,6 +152,9 @@ Sub CANCELA_Click fototomada = "" et_nombre.Text = "" et_direccion.Text = "" + et_atiende.Text = "" + et_telefono.Text = "" + et_email.Text = "" CallSubDelayed(Tracker, "StartFLP") End Sub @@ -188,7 +194,7 @@ Sub b_guardar_Click CAT_CL_LAT = '${B4XPages.MainPage.lat_gps}', CAT_CL_LONG = '${B4XPages.MainPage.lon_gps}', CAT_CL_GIRO = '${cb_giro.SelectedItem}', CAT_CL_NOMBRE = '${Subs.escapeSQLString(et_nombre.Text)}', CAT_CL_CALLE1 = '${Subs.escapeSQLString(et_direccion.text)}', CAT_CL_ENVIO_PENDIENTE = 1, LAT_CENSADOR = '${B4XPages.MainPage.lat_gps}', LON_CENSADOR = '${B4XPages.MainPage.lon_gps}', CAMPOS_MODIFICADOS = '${Subs.list2string(camposModificados)}' where CAT_CL_CODIGO In (select cuenta from cuentaa)"$) Else - B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO kmt_info(CAT_CL_CODIGO, CAT_CL_RUTA, CAT_CL_NOMBRE, CAT_CL_CALLE1, CAT_CL_LAT, CAT_CL_LONG, CAT_CL_FECHA_CAPTURA, CAT_CL_DIAS_VISITA, LAT_CENSADOR, LON_CENSADOR, CAT_CL_ENVIO_PENDIENTE) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 1) ", Array As Object (no_cliente, no_ruta, et_nombre.Text, et_direccion.Text, B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps, DateNC, Starter.dia_semana, B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps)) + B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO kmt_info(CAT_CL_CODIGO, CAT_CL_RUTA, CAT_CL_NOMBRE, CAT_CL_CALLE1, CAT_CL_LAT, CAT_CL_LONG, CAT_CL_FECHA_CAPTURA, CAT_CL_DIAS_VISITA, LAT_CENSADOR, LON_CENSADOR, CAT_CL_ENVIO_PENDIENTE, CAT_CL_TELEFONO, CAT_CL_ATIENDE1, CAT_CL_EMAIL) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 1, ?, ?, ?) ", Array As Object (no_cliente, no_ruta, et_nombre.Text, et_direccion.Text, B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps, DateNC, Starter.dia_semana, B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps, et_atiende.Text, et_telefono.Text, et_email.Text)) End If B4XPages.MainPage.skmt.ExecNonQuery("delete from CUENTAA") B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object(no_cliente)) diff --git a/B4A/C_Questionario.bas b/B4A/C_Questionario.bas new file mode 100644 index 0000000..8e3a192 --- /dev/null +++ b/B4A/C_Questionario.bas @@ -0,0 +1,153 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=12.2 +@EndOfDesignText@ +Sub Class_Globals + Private Root As B4XView 'ignore + Private xui As XUI 'ignore + Private bAceptarPregunta As Button + Dim encuestaIniciada As Boolean = False + Private Root2 As B4XView + Private EventName As String 'ignore + Private CallBack As Object 'ignore + Private vPreguntaActual As String + Private db As SQL + Private clienteAnt As String = "" + Dim panelSombra As Panel 'Panel de sombra. +End Sub + +'You can add more parameters here. +Public Sub Initialize (vCallback As Object, vEventName As String, vRoot As B4XView, skmt As SQL) As Object + Root2 = vRoot + EventName = vEventName + CallBack = vCallback + db = skmt + vPreguntaActual = 0 + Return Me +End Sub + +'This event will be called once, before the page becomes visible. +Private Sub B4XPage_Created (Root1 As B4XView) + Root = Root1 + 'load the layout to Root +End Sub + +'Regresa verdadero o falso dependiendo de si ya se inició la encuesta. +'Sub encuestaIniciada As Boolean +' Return vEncuestaIniciada +'End Sub + +'Regresa el Id de la pregunta actual (read-only). +Sub preguntaActual As String 'ignore + Return vPreguntaActual +End Sub + +'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. + +'Muestra una pregunta con sus posibles respuestas. +' La lista de respuestas puede ser directamente un array p. ej. Array As String("value1", "value2") +' Crear un Sub_Click con el nombre del evento para que reciba un mapa con la respuesta p. ej.: Sub questionario_Click +' Regresa un mapa con: +' idPregunta - El Id especificado de la pregunta. +' pregunta - El texto de la pregunta. +' idRespuesta - Un numero consecutivo empezando en 1 por cada pregunta. +' respuesta - El texto de la respuesta. +' panel - El panel del popup para poder ocultarlo al contestar la pregunta. ( p. ej.: m.Get("panel").As(Panel).Visible = false ) +'########################################### +' Sub questionario_Click +' if m.get("idPregunta") = "1" ..Then .. Else con nuevas preguntas +' End Sub +'########################################### +Sub agregaPregunta(id As String, pregunta As String, respuestas As List) + encuestaIniciada = True + vPreguntaActual = id + bAceptarPregunta.Initialize("bAceptarPregunta") + + Private su As StringUtils + panelSombra.Initialize("pSombra") + Private cd As ColorDrawable + cd.Initialize(Colors.ARGB(125, 98, 98, 98), 0) + panelSombra.Background = cd + Private panelX As Panel 'Panel de la pregunta. + panelX.Initialize("pQuest") + Private lbl As Label 'Etiqueta de la pregunta. + lbl.Initialize("") + lbl.Text = pregunta + lbl.TextSize = 16 + lbl.TextColor = Colors.Black + cd.Initialize2(Colors.white, 20, 1, Colors.Gray) 'Borde y esquinas redondeadas del panel de la pregunta. + panelX.Background = cd + panelSombra.AddView(panelX, 10dip, 0dip, 80%x, 200dip) + Root2.AddView(panelSombra, 0, 0, 100%x, 100%y) 'add the panel to the layout + panelX.AddView(lbl, 20dip, 20dip, (panelX.Width * 0.9), 40dip) 'Agregamos la etiqueta al panel. + lbl.Height = su.MeasureMultilineTextHeight(lbl, lbl.Text) + Private r(respuestas.Size) As RadioButton + For p = 0 To respuestas.Size - 1 + r(p).Initialize("r") + r(p).Text = respuestas.Get(p) + r(p).Tag = CreateMap("id":id, "pregunta":pregunta, "panel":panelSombra, "idRespuesta":p + 1) + panelX.AddView(r(p), 10dip, (70 * (p + 1)), (panelX.Width * 0.9), 10) 'Agegamos el radio al panel. + r(p).Height = su.MeasureMultilineTextHeight(r(p), r(p).Text) + 25 'Calculamos el alto del radio de acuerdo al largo del texto. + Private newTop As Int = lbl.top + lbl.Height + 10 'Si es el primer radio, lo ponemos en top = alto de la "pregunta" + 10. + If p <> 0 Then newTop = r(p - 1).Top + r(p - 1).Height + 5 'Calculamos el Top del radio de acuerdo al top y alto del radio anterior. + r(p).Top = newTop + Next + r(0).Checked = True + bAceptarPregunta.Text = "Continuar" + panelX.AddView(bAceptarPregunta, 10, newTop + r(respuestas.Size - 1).Height + 20, 150dip, 50dip) 'Ponemos el boton de continuar despues del ultimo radio. + bAceptarPregunta.Left = (panelX.Width / 2) - (bAceptarPregunta.Width / 2) + panelX.Height = bAceptarPregunta.Top + bAceptarPregunta.Height + 15dip 'Calculamos el alto del panel de acuerdo al Top del boton. + panelX.left = (Root2.Width / 2) - (panelX.Width / 2) + panelX.top = (Root2.Height / 3) - (panelX.Height / 2) + panelSombra.Width = Root2.Width + panelSombra.Height = Root2.Height + panelSombra.BringToFront +' panelSombra.Elevation = 0 +End Sub + +private Sub preguntaContestada(Success As Map) 'ignore + If SubExists(CallBack, EventName & "_preguntaContestada") Then + CallSubDelayed2(CallBack, EventName & "_preguntaContestada", Success) + End If +End Sub + +private Sub pSombra_Click +End Sub + +private Sub r_CheckedChange(Checked As Boolean) + bAceptarPregunta.tag = CreateMap("idPregunta":Sender.As(RadioButton).tag.As(Map).Get("id").As(String), "pregunta":Sender.As(RadioButton).tag.As(Map).Get("pregunta"), "idRespuesta":Sender.As(RadioButton).tag.As(Map).Get("idRespuesta").As(String), "respuesta":Sender.As(RadioButton).text, "panel":Sender.As(RadioButton).tag.As(Map).Get("panel")) +End Sub + +Private Sub bAceptarPregunta_Click + encuestaIniciada = True + Private m As Map = Sender.As(Button).tag.As(Map) 'Recibimos el id de la pregunta, el id de la respuesta, el texto de la respuesta y el objeto del panelSombra para poder ocultarlo. + preguntaContestada(m) +'' m.Get("panel").As(Panel).Visible = False 'Ocultamos el panel de la pregunta. +' m.Get("panel").As(Panel).RemoveView +' If m.Get("idPregunta") = "1" And m.Get("respuesta") = "No, está enrejado o no se tiene acceso" Then +' Log("Tiendajon / Ventana / Kiosko") +' else If m.Get("idPregunta") = "1" And m.Get("respuesta") = "Si se pude acceder" Then +' agregaPregunta("2", "¿Tiene al menos 2 pasillos con acceso directo a la mercancía?", Array As String("Si tiene al menos 2 pasillos con acceso directo a la mercancía", "No tiene pasillos o solo uno central")) +' End If +' If m.Get("idPregunta") = "2" And m.Get("respuesta") = "Si tiene al menos 2 pasillos con acceso directo a la mercancía" Then +' Log("Mini-Super") +' else If m.Get("idPregunta") = "2" And m.Get("respuesta") = "No tiene pasillos o solo uno central" Then +' agregaPregunta("3", "¿Cuenta con enfriador horizontal para venta de perecederos como queso, jamon, crema, etc.?", Array As String("Si", "No tiene enfriador horizontal. ¿El local esta enfocado a venta especializada?")) +' End If +End Sub + +'Regresa verdadero si el cliente dado tiene cuestionario contestado. +Sub clienteConEncuesta(idCliente As String) As Boolean 'ignore + Private r As Boolean = False + Private c As Cursor = db.ExecQuery($"select count(*) as q from QUESTIONARIO where Q_IDCLIENTE = '${idCliente}'"$) + c.Position = 0 + If c.GetInt("q") > 0 Then r = True + Return r +End Sub + +'Oculta el anel de la pregunta. +Sub ocultPanelPregunta + If panelSombra.IsInitialized Then panelSombra.RemoveView +End Sub \ No newline at end of file diff --git a/B4A/Files/cliente.bal b/B4A/Files/cliente.bal index 0d0bff030a0960fba1a3a873e26e2af235fa8885..09354f2ccbb73819a1714776b2211aec826970ae 100644 GIT binary patch delta 821 zcmZvZO-~b16o&8AVmtk$rP?xk@!omvnRDMW^WK9uw)cv+hcUK) ziZK^HM|ZtRj}u{*%RDFFD(zm0j#0xbU%XK`jZo(Im4;%LN_=^RV1A~QFFFupz9JX7 z4D0@on@r?t%_yml;Jc9Vk-Nqfqo(RrH4BF}>5d&sOXxwin!?p;olKULvZ`gWR5Wqo zKTXoG+)a5kPo;vQt6J8Jls0j#sWcjDlX}cObnJYt7k8}^-36y?D;43){XL@XrvG2N0EO3MV`mpXW@{A&sg}Zg~P}g zKchGzsD6}$I){p)1{hmlvF?V&Eu66MpoNE!lc-_T2+I68_~iUxd(HM9i|-uLar$&o z#l>7=Az#YdkTYZOH5_-Cn2EuRKRnmX<>c&6N}1BC>AKpyrq=G>GvH_VHvF0Nz@g;Z zD@S-7I?^({9q$*Of|9xnpSOcZ-=a}CNCj=r81%Hagl(7}{0-~Z$6al7JC72d!-JuV zkW2@KHvAf%fFCIr=$lU1Oi#g9=TfMHO%x^*U*JMNA?`qCLxRGE2+j{c-}J!97c9R* o2}c5BbY0>OE|@bDs<_ali7%lrwdTHx4GF4`+8|Jl!N*STUob?arT_o{ literal 35534 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 literal 0 HcmV?d00001 diff --git a/B4A/Files/nuevocliente.bal b/B4A/Files/nuevocliente.bal index 3178daa94a176d72535b2dc8c3c41a6ef0f41b11..9ce726640b364d1d9d02b8dee8a0c1bc86b7ea3a 100644 GIT binary patch delta 1495 zcmZ`(O-vI(6y7PnE&Zh}OV{nT{KNo4rCx*>5fn}sl|+IEwH8=RLq6sm^i^kxaS*L7UJiO`mX6JqHd*4jDbo_C@qeKvd z`$d9a!{6E!$1^7d>O?F)kx-MvD)g24RzBJ@c4K!qkyeL>5~*alk*lNegl08xGBrAw zRx6BTLeJOY@LfZ8WS05oIy4w>VLE4Hj z;oCHrI+2nwZ4!9n3Lw?{qRGigkmZAr@cL|ZykbDV>un?Kn7l7EsgJ5P1dbRqxp0Rq=#3+m${JcK8>pOAWfaS|r{G?y(`(xE-HClN)c*49l(P;t_ufT(XPB!j2%ovi|@{!Kc6(T%%INF@_C0FiLl* zGda_*a(%h%c|?6;N8xx+c{v-8j2GyDS4s=mrFsa2oX{cFz^Ra} z(9*Y@CQrpRreZ3qVrp*{UwOHq;ySCE&Q?wDUDe2qHL7L`w3Aup;Vkp;2KM-mhi*=k zs~*0EebDQvocTMMDCcOL?UmG=} delta 705 zcmZuvO=uHA6rPv#$6cGmY}QRT-7QTlaSd&0QiOttL9_?)r#%Qt4<)S;3c9O_)Pta& zdJsYC2bErgt#}n>^dQ=kC(oW$^pLY!59*=%cEg4UJ$!GzH{Un!yPjfG3gjr!8kvgfY7AIU21J=eRs*r@k$a=Nxyzf#5o<@8Qk>98rR z(gjN6Gc_-!*{v}$jEL)9d_Qx8k!1{aakGo(y7*AUu^oF#H|0iryQk3UTnVmmqCNUM z>2~(Zc(te27fw9|OKHi6s*GDRY_=HGBq8j8v^We0WL?&h$B1U7pPJ(ZeyR-5P~}A0 zAayT0Li;*=+reZ}#a-lxrNW zFDQ4`02E0g*zO; U&LJhW!di(j5d0p+g;Bcy4~{OITmS$7 diff --git a/B4A/Mariana Censos.b4a b/B4A/Mariana Censos.b4a index 867297f..1a384b4 100644 --- a/B4A/Mariana Censos.b4a +++ b/B4A/Mariana Censos.b4a @@ -1,351 +1,352 @@ Build1=Default,md_censos.keymon.com.mx File1=alert2.png -File10=engrane_gris.png -File100=marker-azul-77.png -File101=marker-azul-78.png -File102=marker-azul-79.png -File103=marker-azul-8.png -File104=marker-azul-80.png -File105=marker-azul-81.png -File106=marker-azul-82.png -File107=marker-azul-83.png -File108=marker-azul-84.png -File109=marker-azul-85.png -File11=fondo_kmt.jpg -File110=marker-azul-86.png -File111=marker-azul-87.png -File112=marker-azul-88.png -File113=marker-azul-89.png -File114=marker-azul-9.png -File115=marker-azul-90.png -File116=marker-azul-91.png -File117=marker-azul-92.png -File118=marker-azul-93.png -File119=marker-azul-94.png -File12=Hacer pedido.jpg -File120=marker-azul-95.png -File121=marker-azul-96.png -File122=marker-azul-97.png -File123=marker-azul-98.png -File124=marker-azul-99.png -File125=marker-rojo-0.png -File126=marker-rojo-1.png -File127=marker-rojo-10.png -File128=marker-rojo-100.png -File129=marker-rojo-11.png -File13=intmex_logo_192x192.jpg -File130=marker-rojo-12.png -File131=marker-rojo-13.png -File132=marker-rojo-14.png -File133=marker-rojo-15.png -File134=marker-rojo-16.png -File135=marker-rojo-17.png -File136=marker-rojo-18.png -File137=marker-rojo-19.png -File138=marker-rojo-2.png -File139=marker-rojo-20.png -File14=itembuttonblue.png -File140=marker-rojo-21.png -File141=marker-rojo-22.png -File142=marker-rojo-23.png -File143=marker-rojo-24.png -File144=marker-rojo-25.png -File145=marker-rojo-26.png -File146=marker-rojo-27.png -File147=marker-rojo-28.png -File148=marker-rojo-29.png -File149=marker-rojo-3.png -File15=kmt.db -File150=marker-rojo-30.png -File151=marker-rojo-31.png -File152=marker-rojo-32.png -File153=marker-rojo-33.png -File154=marker-rojo-34.png -File155=marker-rojo-35.png -File156=marker-rojo-36.png -File157=marker-rojo-37.png -File158=marker-rojo-38.png -File159=marker-rojo-39.png -File16=login.bal -File160=marker-rojo-4.png -File161=marker-rojo-40.png -File162=marker-rojo-41.png -File163=marker-rojo-42.png -File164=marker-rojo-43.png -File165=marker-rojo-44.png -File166=marker-rojo-45.png -File167=marker-rojo-46.png -File168=marker-rojo-47.png -File169=marker-rojo-48.png -File17=Logo_192x192.jpg -File170=marker-rojo-49.png -File171=marker-rojo-5.png -File172=marker-rojo-50.png -File173=marker-rojo-51.png -File174=marker-rojo-52.png -File175=marker-rojo-53.png -File176=marker-rojo-54.png -File177=marker-rojo-55.png -File178=marker-rojo-56.png -File179=marker-rojo-57.png -File18=logo_mariana.jpeg -File180=marker-rojo-58.png -File181=marker-rojo-59.png -File182=marker-rojo-6.png -File183=marker-rojo-60.png -File184=marker-rojo-61.png -File185=marker-rojo-62.png -File186=marker-rojo-63.png -File187=marker-rojo-64.png -File188=marker-rojo-65.png -File189=marker-rojo-66.png -File19=MainPage.bal -File190=marker-rojo-67.png -File191=marker-rojo-68.png -File192=marker-rojo-69.png -File193=marker-rojo-7.png -File194=marker-rojo-70.png -File195=marker-rojo-71.png -File196=marker-rojo-72.png -File197=marker-rojo-73.png -File198=marker-rojo-74.png -File199=marker-rojo-75.png +File10=engrane.jpg +File100=marker-azul-76.png +File101=marker-azul-77.png +File102=marker-azul-78.png +File103=marker-azul-79.png +File104=marker-azul-8.png +File105=marker-azul-80.png +File106=marker-azul-81.png +File107=marker-azul-82.png +File108=marker-azul-83.png +File109=marker-azul-84.png +File11=engrane_gris.png +File110=marker-azul-85.png +File111=marker-azul-86.png +File112=marker-azul-87.png +File113=marker-azul-88.png +File114=marker-azul-89.png +File115=marker-azul-9.png +File116=marker-azul-90.png +File117=marker-azul-91.png +File118=marker-azul-92.png +File119=marker-azul-93.png +File12=fondo_kmt.jpg +File120=marker-azul-94.png +File121=marker-azul-95.png +File122=marker-azul-96.png +File123=marker-azul-97.png +File124=marker-azul-98.png +File125=marker-azul-99.png +File126=marker-rojo-0.png +File127=marker-rojo-1.png +File128=marker-rojo-10.png +File129=marker-rojo-100.png +File13=Hacer pedido.jpg +File130=marker-rojo-11.png +File131=marker-rojo-12.png +File132=marker-rojo-13.png +File133=marker-rojo-14.png +File134=marker-rojo-15.png +File135=marker-rojo-16.png +File136=marker-rojo-17.png +File137=marker-rojo-18.png +File138=marker-rojo-19.png +File139=marker-rojo-2.png +File14=intmex_logo_192x192.jpg +File140=marker-rojo-20.png +File141=marker-rojo-21.png +File142=marker-rojo-22.png +File143=marker-rojo-23.png +File144=marker-rojo-24.png +File145=marker-rojo-25.png +File146=marker-rojo-26.png +File147=marker-rojo-27.png +File148=marker-rojo-28.png +File149=marker-rojo-29.png +File15=itembuttonblue.png +File150=marker-rojo-3.png +File151=marker-rojo-30.png +File152=marker-rojo-31.png +File153=marker-rojo-32.png +File154=marker-rojo-33.png +File155=marker-rojo-34.png +File156=marker-rojo-35.png +File157=marker-rojo-36.png +File158=marker-rojo-37.png +File159=marker-rojo-38.png +File16=kmt.db +File160=marker-rojo-39.png +File161=marker-rojo-4.png +File162=marker-rojo-40.png +File163=marker-rojo-41.png +File164=marker-rojo-42.png +File165=marker-rojo-43.png +File166=marker-rojo-44.png +File167=marker-rojo-45.png +File168=marker-rojo-46.png +File169=marker-rojo-47.png +File17=login.bal +File170=marker-rojo-48.png +File171=marker-rojo-49.png +File172=marker-rojo-5.png +File173=marker-rojo-50.png +File174=marker-rojo-51.png +File175=marker-rojo-52.png +File176=marker-rojo-53.png +File177=marker-rojo-54.png +File178=marker-rojo-55.png +File179=marker-rojo-56.png +File18=Logo_192x192.jpg +File180=marker-rojo-57.png +File181=marker-rojo-58.png +File182=marker-rojo-59.png +File183=marker-rojo-6.png +File184=marker-rojo-60.png +File185=marker-rojo-61.png +File186=marker-rojo-62.png +File187=marker-rojo-63.png +File188=marker-rojo-64.png +File189=marker-rojo-65.png +File19=logo_mariana.jpeg +File190=marker-rojo-66.png +File191=marker-rojo-67.png +File192=marker-rojo-68.png +File193=marker-rojo-69.png +File194=marker-rojo-7.png +File195=marker-rojo-70.png +File196=marker-rojo-71.png +File197=marker-rojo-72.png +File198=marker-rojo-73.png +File199=marker-rojo-74.png File2=alerta_amarilla.png -File20=Malo.jpg -File200=marker-rojo-76.png -File201=marker-rojo-77.png -File202=marker-rojo-78.png -File203=marker-rojo-79.png -File204=marker-rojo-8.png -File205=marker-rojo-80.png -File206=marker-rojo-81.png -File207=marker-rojo-82.png -File208=marker-rojo-83.png -File209=marker-rojo-84.png -File21=mapa_rutas.bal -File210=marker-rojo-85.png -File211=marker-rojo-86.png -File212=marker-rojo-87.png -File213=marker-rojo-88.png -File214=marker-rojo-89.png -File215=marker-rojo-9.png -File216=marker-rojo-90.png -File217=marker-rojo-91.png -File218=marker-rojo-92.png -File219=marker-rojo-93.png -File22=mapas.bal -File220=marker-rojo-94.png -File221=marker-rojo-95.png -File222=marker-rojo-96.png -File223=marker-rojo-97.png -File224=marker-rojo-98.png -File225=marker-rojo-99.png -File226=marker-verde-0.png -File227=marker-verde-1.png -File228=marker-verde-10.png -File229=marker-verde-100.png -File23=mariana_ico.png -File230=marker-verde-11.png -File231=marker-verde-12.png -File232=marker-verde-13.png -File233=marker-verde-14.png -File234=marker-verde-15.png -File235=marker-verde-16.png -File236=marker-verde-17.png -File237=marker-verde-18.png -File238=marker-verde-19.png -File239=marker-verde-2.png -File24=marker-azul-0.png -File240=marker-verde-20.png -File241=marker-verde-21.png -File242=marker-verde-22.png -File243=marker-verde-23.png -File244=marker-verde-24.png -File245=marker-verde-25.png -File246=marker-verde-26.png -File247=marker-verde-27.png -File248=marker-verde-28.png -File249=marker-verde-29.png -File25=marker-azul-1.png -File250=marker-verde-3.png -File251=marker-verde-30.png -File252=marker-verde-31.png -File253=marker-verde-32.png -File254=marker-verde-33.png -File255=marker-verde-34.png -File256=marker-verde-35.png -File257=marker-verde-36.png -File258=marker-verde-37.png -File259=marker-verde-38.png -File26=marker-azul-10.png -File260=marker-verde-39.png -File261=marker-verde-4.png -File262=marker-verde-40.png -File263=marker-verde-41.png -File264=marker-verde-42.png -File265=marker-verde-43.png -File266=marker-verde-44.png -File267=marker-verde-45.png -File268=marker-verde-46.png -File269=marker-verde-47.png -File27=marker-azul-100.png -File270=marker-verde-48.png -File271=marker-verde-49.png -File272=marker-verde-5.png -File273=marker-verde-50.png -File274=marker-verde-51.png -File275=marker-verde-52.png -File276=marker-verde-53.png -File277=marker-verde-54.png -File278=marker-verde-55.png -File279=marker-verde-56.png -File28=marker-azul-11.png -File280=marker-verde-57.png -File281=marker-verde-58.png -File282=marker-verde-59.png -File283=marker-verde-6.png -File284=marker-verde-60.png -File285=marker-verde-61.png -File286=marker-verde-62.png -File287=marker-verde-63.png -File288=marker-verde-64.png -File289=marker-verde-65.png -File29=marker-azul-12.png -File290=marker-verde-66.png -File291=marker-verde-67.png -File292=marker-verde-68.png -File293=marker-verde-69.png -File294=marker-verde-7.png -File295=marker-verde-70.png -File296=marker-verde-71.png -File297=marker-verde-72.png -File298=marker-verde-73.png -File299=marker-verde-74.png +File20=MainPage.bal +File200=marker-rojo-75.png +File201=marker-rojo-76.png +File202=marker-rojo-77.png +File203=marker-rojo-78.png +File204=marker-rojo-79.png +File205=marker-rojo-8.png +File206=marker-rojo-80.png +File207=marker-rojo-81.png +File208=marker-rojo-82.png +File209=marker-rojo-83.png +File21=Malo.jpg +File210=marker-rojo-84.png +File211=marker-rojo-85.png +File212=marker-rojo-86.png +File213=marker-rojo-87.png +File214=marker-rojo-88.png +File215=marker-rojo-89.png +File216=marker-rojo-9.png +File217=marker-rojo-90.png +File218=marker-rojo-91.png +File219=marker-rojo-92.png +File22=mapa_rutas.bal +File220=marker-rojo-93.png +File221=marker-rojo-94.png +File222=marker-rojo-95.png +File223=marker-rojo-96.png +File224=marker-rojo-97.png +File225=marker-rojo-98.png +File226=marker-rojo-99.png +File227=marker-verde-0.png +File228=marker-verde-1.png +File229=marker-verde-10.png +File23=mapas.bal +File230=marker-verde-100.png +File231=marker-verde-11.png +File232=marker-verde-12.png +File233=marker-verde-13.png +File234=marker-verde-14.png +File235=marker-verde-15.png +File236=marker-verde-16.png +File237=marker-verde-17.png +File238=marker-verde-18.png +File239=marker-verde-19.png +File24=mariana_ico.png +File240=marker-verde-2.png +File241=marker-verde-20.png +File242=marker-verde-21.png +File243=marker-verde-22.png +File244=marker-verde-23.png +File245=marker-verde-24.png +File246=marker-verde-25.png +File247=marker-verde-26.png +File248=marker-verde-27.png +File249=marker-verde-28.png +File25=marker-azul-0.png +File250=marker-verde-29.png +File251=marker-verde-3.png +File252=marker-verde-30.png +File253=marker-verde-31.png +File254=marker-verde-32.png +File255=marker-verde-33.png +File256=marker-verde-34.png +File257=marker-verde-35.png +File258=marker-verde-36.png +File259=marker-verde-37.png +File26=marker-azul-1.png +File260=marker-verde-38.png +File261=marker-verde-39.png +File262=marker-verde-4.png +File263=marker-verde-40.png +File264=marker-verde-41.png +File265=marker-verde-42.png +File266=marker-verde-43.png +File267=marker-verde-44.png +File268=marker-verde-45.png +File269=marker-verde-46.png +File27=marker-azul-10.png +File270=marker-verde-47.png +File271=marker-verde-48.png +File272=marker-verde-49.png +File273=marker-verde-5.png +File274=marker-verde-50.png +File275=marker-verde-51.png +File276=marker-verde-52.png +File277=marker-verde-53.png +File278=marker-verde-54.png +File279=marker-verde-55.png +File28=marker-azul-100.png +File280=marker-verde-56.png +File281=marker-verde-57.png +File282=marker-verde-58.png +File283=marker-verde-59.png +File284=marker-verde-6.png +File285=marker-verde-60.png +File286=marker-verde-61.png +File287=marker-verde-62.png +File288=marker-verde-63.png +File289=marker-verde-64.png +File29=marker-azul-11.png +File290=marker-verde-65.png +File291=marker-verde-66.png +File292=marker-verde-67.png +File293=marker-verde-68.png +File294=marker-verde-69.png +File295=marker-verde-7.png +File296=marker-verde-70.png +File297=marker-verde-71.png +File298=marker-verde-72.png +File299=marker-verde-73.png File3=carrito.png -File30=marker-azul-13.png -File300=marker-verde-75.png -File301=marker-verde-76.png -File302=marker-verde-77.png -File303=marker-verde-78.png -File304=marker-verde-79.png -File305=marker-verde-8.png -File306=marker-verde-80.png -File307=marker-verde-81.png -File308=marker-verde-82.png -File309=marker-verde-83.png -File31=marker-azul-14.png -File310=marker-verde-84.png -File311=marker-verde-85.png -File312=marker-verde-86.png -File313=marker-verde-87.png -File314=marker-verde-88.png -File315=marker-verde-89.png -File316=marker-verde-9.png -File317=marker-verde-90.png -File318=marker-verde-91.png -File319=marker-verde-92.png -File32=marker-azul-15.png -File320=marker-verde-93.png -File321=marker-verde-94.png -File322=marker-verde-95.png -File323=marker-verde-96.png -File324=marker-verde-97.png -File325=marker-verde-98.png -File326=marker-verde-99.png -File327=nota.bal -File328=noventa.bal -File329=nuevocliente.bal -File33=marker-azul-16.png -File330=Nvo Cliente.jpg -File331=palomita_verde.png -File332=pedido.bal -File333=planfia_logo.png -File334=principal.bal -File335=proditem.bal -File336=productos.bal -File337=promociones.bal -File338=resdia.bal -File339=ResDia.jpg -File34=marker-azul-17.png -File340=salma.jpg -File341=salma.png -File342=senial.jpg -File343=sync.png -File344=tache_rojo.png -File345=ticketsdia.bal -File346=Tiendita.jpg -File347=verde.png -File35=marker-azul-18.png -File36=marker-azul-19.png -File37=marker-azul-2.png -File38=marker-azul-20.png -File39=marker-azul-21.png +File30=marker-azul-12.png +File300=marker-verde-74.png +File301=marker-verde-75.png +File302=marker-verde-76.png +File303=marker-verde-77.png +File304=marker-verde-78.png +File305=marker-verde-79.png +File306=marker-verde-8.png +File307=marker-verde-80.png +File308=marker-verde-81.png +File309=marker-verde-82.png +File31=marker-azul-13.png +File310=marker-verde-83.png +File311=marker-verde-84.png +File312=marker-verde-85.png +File313=marker-verde-86.png +File314=marker-verde-87.png +File315=marker-verde-88.png +File316=marker-verde-89.png +File317=marker-verde-9.png +File318=marker-verde-90.png +File319=marker-verde-91.png +File32=marker-azul-14.png +File320=marker-verde-92.png +File321=marker-verde-93.png +File322=marker-verde-94.png +File323=marker-verde-95.png +File324=marker-verde-96.png +File325=marker-verde-97.png +File326=marker-verde-98.png +File327=marker-verde-99.png +File328=nota.bal +File329=noventa.bal +File33=marker-azul-15.png +File330=nuevocliente.bal +File331=Nvo Cliente.jpg +File332=palomita_verde.png +File333=pedido.bal +File334=planfia_logo.png +File335=principal.bal +File336=proditem.bal +File337=productos.bal +File338=promociones.bal +File339=resdia.bal +File34=marker-azul-16.png +File340=ResDia.jpg +File341=salma.jpg +File342=salma.png +File343=senial.jpg +File344=sync.png +File345=tache_rojo.png +File346=ticketsdia.bal +File347=Tiendita.jpg +File348=verde.png +File35=marker-azul-17.png +File36=marker-azul-18.png +File37=marker-azul-19.png +File38=marker-azul-2.png +File39=marker-azul-20.png File4=celltitle.bal -File40=marker-azul-22.png -File41=marker-azul-23.png -File42=marker-azul-24.png -File43=marker-azul-25.png -File44=marker-azul-26.png -File45=marker-azul-27.png -File46=marker-azul-28.png -File47=marker-azul-29.png -File48=marker-azul-3.png -File49=marker-azul-30.png +File40=marker-azul-21.png +File41=marker-azul-22.png +File42=marker-azul-23.png +File43=marker-azul-24.png +File44=marker-azul-25.png +File45=marker-azul-26.png +File46=marker-azul-27.png +File47=marker-azul-28.png +File48=marker-azul-29.png +File49=marker-azul-3.png File5=cliente.bal -File50=marker-azul-31.png -File51=marker-azul-32.png -File52=marker-azul-33.png -File53=marker-azul-34.png -File54=marker-azul-35.png -File55=marker-azul-36.png -File56=marker-azul-37.png -File57=marker-azul-38.png -File58=marker-azul-39.png -File59=marker-azul-4.png -File6=clientes.bal -File60=marker-azul-40.png -File61=marker-azul-41.png -File62=marker-azul-42.png -File63=marker-azul-43.png -File64=marker-azul-44.png -File65=marker-azul-45.png -File66=marker-azul-46.png -File67=marker-azul-47.png -File68=marker-azul-48.png -File69=marker-azul-49.png -File7=clientesItem.bal -File70=marker-azul-5.png -File71=marker-azul-50.png -File72=marker-azul-51.png -File73=marker-azul-52.png -File74=marker-azul-53.png -File75=marker-azul-54.png -File76=marker-azul-55.png -File77=marker-azul-56.png -File78=marker-azul-57.png -File79=marker-azul-58.png -File8=durakelo.png -File80=marker-azul-59.png -File81=marker-azul-6.png -File82=marker-azul-60.png -File83=marker-azul-61.png -File84=marker-azul-62.png -File85=marker-azul-63.png -File86=marker-azul-64.png -File87=marker-azul-65.png -File88=marker-azul-66.png -File89=marker-azul-67.png -File9=engrane.jpg -File90=marker-azul-68.png -File91=marker-azul-69.png -File92=marker-azul-7.png -File93=marker-azul-70.png -File94=marker-azul-71.png -File95=marker-azul-72.png -File96=marker-azul-73.png -File97=marker-azul-74.png -File98=marker-azul-75.png -File99=marker-azul-76.png +File50=marker-azul-30.png +File51=marker-azul-31.png +File52=marker-azul-32.png +File53=marker-azul-33.png +File54=marker-azul-34.png +File55=marker-azul-35.png +File56=marker-azul-36.png +File57=marker-azul-37.png +File58=marker-azul-38.png +File59=marker-azul-39.png +File6=clienteDatos.bal +File60=marker-azul-4.png +File61=marker-azul-40.png +File62=marker-azul-41.png +File63=marker-azul-42.png +File64=marker-azul-43.png +File65=marker-azul-44.png +File66=marker-azul-45.png +File67=marker-azul-46.png +File68=marker-azul-47.png +File69=marker-azul-48.png +File7=clientes.bal +File70=marker-azul-49.png +File71=marker-azul-5.png +File72=marker-azul-50.png +File73=marker-azul-51.png +File74=marker-azul-52.png +File75=marker-azul-53.png +File76=marker-azul-54.png +File77=marker-azul-55.png +File78=marker-azul-56.png +File79=marker-azul-57.png +File8=clientesItem.bal +File80=marker-azul-58.png +File81=marker-azul-59.png +File82=marker-azul-6.png +File83=marker-azul-60.png +File84=marker-azul-61.png +File85=marker-azul-62.png +File86=marker-azul-63.png +File87=marker-azul-64.png +File88=marker-azul-65.png +File89=marker-azul-66.png +File9=durakelo.png +File90=marker-azul-67.png +File91=marker-azul-68.png +File92=marker-azul-69.png +File93=marker-azul-7.png +File94=marker-azul-70.png +File95=marker-azul-71.png +File96=marker-azul-72.png +File97=marker-azul-73.png +File98=marker-azul-74.png +File99=marker-azul-75.png FileGroup1=Default Group FileGroup10=Default Group FileGroup100=Default Group @@ -622,6 +623,7 @@ FileGroup344=Default Group FileGroup345=Default Group FileGroup346=Default Group FileGroup347=Default Group +FileGroup348=Default Group FileGroup35=Default Group FileGroup36=Default Group FileGroup37=Default Group @@ -726,29 +728,30 @@ Library8=compressstrings Library9=core ManifestCode='This code will be applied to the manifest file during compilation.~\n~'You do not need to modify it in most cases.~\n~'See this link for for more information: https://www.b4x.com/forum/showthread.php?p=78136~\n~AddManifestText(~\n~~\n~)~\n~SetApplicationAttribute(android:icon, "@drawable/icon")~\n~SetApplicationAttribute(android:label, "$LABEL$")~\n~CreateResourceFromFile(Macro, Themes.LightTheme)~\n~AddApplicationText(~\n~)~\n~CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~ 'End of default text.~\n~''''' CAMBIA LA CLAVE API~\n~AddApplicationText(~\n~~\n~ ~\n~)~\n~AddManifestText(~\n~ ~\n~ )~\n~AddApplicationText(~\n~~\n~)~\n~AddManifestText(~\n~~\n~)~\n~''CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~ 'End of default text.~\n~ ~\n~SetApplicationAttribute(android:usesCleartextTraffic, "true")~\n~ AddManifestText(~\n~~\n~) AddManifestText(~\n~~\n~)~\n~AddPermission(android.permission.ACCESS_BACKGROUND_LOCATION)~\n~AddManifestText(~\n~~\n~)~\n~AddManifestText(~\n~~\n~) 'in order to access the device non-resettable identifiers such as IMEI and serial number.~\n~~\n~'///////////////////////// FLP Y PUSH /////////////~\n~' CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~' CreateResourceFromFile(Macro, FirebaseAnalytics.Firebase)~\n~' CreateResourceFromFile(Macro, FirebaseAnalytics.FirebaseAnalytics)~\n~' CreateResourceFromFile(Macro, FirebaseNotifications.FirebaseNotifications)~\n~ SetServiceAttribute(Tracker, android:foregroundServiceType, "location")~\n~'//////////////////////////////////////////////////////~\n~~\n~'/////////////////////// App Updating ////////////////~\n~ AddManifestText(~\n~ )~\n~ AddApplicationText(~\n~ ~\n~ ~\n~ ~\n~ )~\n~ CreateResource(xml, provider_paths,~\n~ ~\n~ ~\n~ ~\n~ ~\n~ ~\n~ )~\n~AddManifestText()~\n~AddManifestText()~\n~AddManifestText()~\n~AddManifestText()~\n~~\n~AddPermission(android.permission.REQUEST_INSTALL_PACKAGES)~\n~AddPermission(android.permission.INTERNET)~\n~AddPermission(android.permission.INSTALL_PACKAGES)~\n~AddPermission(android.permission.READ_EXTERNAL_STORAGE)~\n~'AddPermission(android.permission.WRITE_EXTERNAL_STORAGE)~\n~AddPermission(android.permission.READ_PHONE_STATE)~\n~AddPermission(android.permission.WAKE_LOCK)~\n~CreateResourceFromFile(Macro, JhsIceZxing1.CaturePortrait)~\n~AddPermission("android.permission.MANAGE_EXTERNAL_STORAGE")~\n~SetApplicationAttribute(android:largeHeap, "true")~\n~AddPermission("android.permission.MANAGE_EXTERNAL_STORAGE")~\n~SetApplicationAttribute(android:allowBackup, "false")~\n~ Module1=appUpdater -Module10=CameraExClass2 -Module11=DBRequestManager -Module12=MAPA_RUTAS -Module13=Starter -Module14=Subs -Module15=Tracker +Module10=C_UpdateAvailable +Module11=CameraExClass2 +Module12=DBRequestManager +Module13=MAPA_RUTAS +Module14=Starter +Module15=Subs +Module16=Tracker Module2=B4XMainPage Module3=BatteryUtilities Module4=C_Cliente Module5=C_Clientes -Module6=C_Mapas -Module7=C_NuevoCliente -Module8=C_Principal -Module9=C_UpdateAvailable -NumberOfFiles=347 +Module6=C_Cuestionario +Module7=C_Mapas +Module8=C_NuevoCliente +Module9=C_Principal +NumberOfFiles=348 NumberOfLibraries=30 -NumberOfModules=15 +NumberOfModules=16 Version=12.5 @EndOfDesignText@ #Region Project Attributes #ApplicationLabel: Mariana Censos #VersionCode: 1 - #VersionName: 3.10.19 + #VersionName: 3.12.21 'SupportedOrientations possible values: unspecified, landscape or portrait. #SupportedOrientations: portrait #CanInstallToExternalStorage: False diff --git a/B4A/Mariana Censos.b4a.meta b/B4A/Mariana Censos.b4a.meta index 5b7e4b1..b094446 100644 --- a/B4A/Mariana Censos.b4a.meta +++ b/B4A/Mariana Censos.b4a.meta @@ -6,6 +6,7 @@ ModuleBookmarks12= ModuleBookmarks13= ModuleBookmarks14= ModuleBookmarks15= +ModuleBookmarks16= ModuleBookmarks2= ModuleBookmarks3= ModuleBookmarks4= @@ -22,6 +23,7 @@ ModuleBreakpoints12= ModuleBreakpoints13= ModuleBreakpoints14= ModuleBreakpoints15= +ModuleBreakpoints16= ModuleBreakpoints2= ModuleBreakpoints3= ModuleBreakpoints4= @@ -34,18 +36,19 @@ ModuleClosedNodes0= ModuleClosedNodes1= ModuleClosedNodes10= ModuleClosedNodes11= -ModuleClosedNodes12=3,5 -ModuleClosedNodes13= -ModuleClosedNodes14=63,64,65,67,68 -ModuleClosedNodes15=9,10,11,13,17,18,19 -ModuleClosedNodes2=2,3,8,9,10,11,12,13,14,15,16,17,18,21,22 +ModuleClosedNodes12= +ModuleClosedNodes13=3,5 +ModuleClosedNodes14= +ModuleClosedNodes15=63,64,65,67,68 +ModuleClosedNodes16=4,5,6,10,13,17,18,19 +ModuleClosedNodes2= ModuleClosedNodes3= -ModuleClosedNodes4=8,10,11,14,16,17,18,19,20,21,22,23,24,25,26,27,28 -ModuleClosedNodes5=4,8,10,11,12,13 +ModuleClosedNodes4=6,7,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,44 +ModuleClosedNodes5= ModuleClosedNodes6= -ModuleClosedNodes7=6,9,11,12,13,14,16,17,18 -ModuleClosedNodes8=3 -ModuleClosedNodes9= -NavigationStack=C_Cliente,JobDone,382,0,C_Cliente,mandaPendientes,378,0,B4XMainPage,JobDone,353,0,C_Principal,e_ruta_EnterPressed,946,3,B4XMainPage,B4XPage_Created,98,0,C_Clientes,Mods,0,0,C_Clientes,clv_clientes_ItemClick,174,0,C_Mapas,Class_Globals,0,0,MAPA_RUTAS,MapFragment1_Ready,249,0,MAPA_RUTAS,OnInfoWindowClickListener1_click,253,2 +ModuleClosedNodes7= +ModuleClosedNodes8=6,9,11,12,13,14,16,17,18 +ModuleClosedNodes9=3 +NavigationStack=C_Cliente,q_preguntaContestada,688,6,B4XMainPage,B4XPage_Created,144,0,C_Cuestionario,clienteConEncuesta,137,0,C_Cliente,Label9_LongClick,763,6,C_Cliente,ajustaTamano,745,6,C_Cuestionario,ocultPanelPregunta,144,0,C_Cuestionario,agregaPregunta,78,0,C_Cliente,B4XPage_Appear,270,6,Visual Designer,clienteDatos.bal,-100,4,C_Cliente,Class_Globals,156,0 SelectedBuild=0 -VisibleModules=2,13,8,4,5,14,7,11,15,6,12 +VisibleModules=2,14,6,9,4,5,15,8,7,16 diff --git a/B4A/Starter.bas b/B4A/Starter.bas index 82d269d..b9ebe32 100644 --- a/B4A/Starter.bas +++ b/B4A/Starter.bas @@ -18,7 +18,7 @@ Sub Process_Globals Public FLP As FusedLocationProvider ' Private flpStarted As Boolean Dim reqManager As DBRequestManager - Dim server As String = "http://187.189.244.154:1782" + Dim server As String = "http://187.189.244.154:1781" ' Dim server As String = "http://187.189.244.154:1783" ' Dim server As String = "http://10.0.0.205:1782" ' Dim server As String = "http://11.0.0.231:1782" diff --git a/B4A/Tracker.bas b/B4A/Tracker.bas index f4befbd..ed067a3 100644 --- a/B4A/Tracker.bas +++ b/B4A/Tracker.bas @@ -76,13 +76,14 @@ Public Sub Track If Not(FLP.IsInitialized) Then FLP.Initialize("flp") If Not(FLP.IsConnected) Then FLP.Connect If Tracking And actualLR.IsInitialized Then -' Log(actualLR.GetSmallestDisplacement) +' Log("Smallest Displacement: " & actualLR.GetSmallestDisplacement) Return 'Si ya estamos "rastreando" no hacemos nada (return) End If If Starter.rp.Check(Starter.rp.PERMISSION_ACCESS_FINE_LOCATION) = False Then Log("Sin permisos de ubicacion") Return Else +' Log("Iniciamos StartFLP") StartFLP 'Iniciamos FusedLocationProvider Tracking = True End If @@ -109,7 +110,7 @@ Public Sub StartFLPSmall Sleep(500) Log("sleeping") Loop - dameUltimaUbicacionConocida 'Regresamos ultima ubicacion conocida +' dameUltimaUbicacionConocida 'Regresamos ultima ubicacion conocida FLP.RequestLocationUpdates(CreateLocationRequestSmallD) 'Buscamos ubicacion 2 peticiones ' Log("Buscamos ubicacion Small displacement") ' Log("GPSSmallestDisplacement = " & actualLR.GetSmallestDisplacement)