From 1483b3c29127c7ce54b201753c8c9c50ccb3e33c Mon Sep 17 00:00:00 2001 From: Jose Alberto Guerra Ugalde Date: Fri, 2 Feb 2024 15:36:50 -0600 Subject: [PATCH] =?UTF-8?q?Se=20agreg=C3=B3=20la=20clase=20y=20codigo=20pa?= =?UTF-8?q?ra=20el=20cuestionario?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- B4A/C_Cliente.bas | 75 +++++++++++++++++++- B4A/C_Cuestionario.bas | 155 +++++++++++++++++++++++++++++++++++++++++ B4A/C_Principal.bas | 25 ++++++- B4A/INTMEX_LL.b4a | 47 +++++++------ B4A/INTMEX_LL.b4a.meta | 31 +++++---- 5 files changed, 293 insertions(+), 40 deletions(-) create mode 100644 B4A/C_Cuestionario.bas diff --git a/B4A/C_Cliente.bas b/B4A/C_Cliente.bas index 01fd342..189a873 100644 --- a/B4A/C_Cliente.bas +++ b/B4A/C_Cliente.bas @@ -149,6 +149,7 @@ Sub Class_Globals Dim j As Cursor Dim h As Cursor Dim distance As Long + Dim cuest As C_Cuestionario End Sub 'You can add more parameters here. @@ -162,7 +163,7 @@ Private Sub B4XPage_Created (Root1 As B4XView) 'load the layout to Root ' Activity.RemoveAllViews Root.LoadLayout("cliente") - Log("Create") + cuest.Initialize(Me, "cuest", Root, Starter.skmt) ruta = File.DirInternal If File.Exists(ruta, "kmt.db") = False Then File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db") @@ -414,6 +415,11 @@ End Sub Sub gest_Click B4XPages.MainPage.tipo_venta = "PREVENTA" + Log($"${cuest.encuestaIniciada} - ${cuest.clienteConCuestionario(Subs.traeCliente)}"$) + If Not(cuest.encuestaIniciada) And Not(cuest.clienteConCuestionario(Subs.traeCliente)) Then + cuest.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")) + Return False + End If Private x As Cursor = B4XPages.MainPage.skmt.ExecQuery($"select tienda_id from COORDENADAS_GPS where tienda_id = '${la_cuenta.text}'"$) ' Log("+++++++++++++ " & x.RowCount) If distance > 50 And x.RowCount = 0 Then @@ -445,6 +451,8 @@ Private Sub B4XPage_CloseRequest As ResumableSub ' BACK key pressed ' Return True To close, False To cancel ' Log($"venimosDeTicketsDia=${venimosDeTicketsDia}"$) + cuest.encuestaIniciada = False + cuest.ocultPanelPregunta If IsNumber(l_total.text) And Not(Subs.pedidoGuardado) Then LogColor("Hay Venta", Colors.Red) Private resultado1 As Int = Msgbox2($"Va salir sin haber guardado la venta, si continua, la venta se BORRARA.${CRLF}${CRLF}¿Esta seguro que desea continuar?"$, "SE VA A BORRAR LA VENTA", "Borrar Venta", "Guardar Venta", "", LoadBitmap(File.DirAssets,"alert2.png")) @@ -1058,3 +1066,68 @@ Sub CreateListItem(mostrar As String, mostrar1 As String) As Panel Return p End Sub +Sub cuest_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 = "dd/MM/yyyy" + DateTime.TimeFormat = "HH:mm:ss" + Starter.skmt.ExecNonQuery($"delete from CUESTIONARIO where Q_IDCLIENTE = '${Subs.traeCliente}' and Q_IDPREGUNTA = '${m.Get("idPregunta")}'"$) + Starter.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)} ${DateTime.time(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) + cuest.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 + cuest.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) + cuest.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 + cuest.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) + cuest.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 + cuest.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) + cuest.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 + cuest.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 + cuest.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(">>>>>>>>>> " & cuest.encuestaIniciada) + cuest.encuestaIniciada = False + Log(">>>>>>>>>> " & cuest.encuestaIniciada) +' refrescarCliente = True +' Log($"#### REFRESCAR CLIENTE -> ${refrescarCliente}"$) + B4XPage_Appear +' Case 6 + End Select +End Sub diff --git a/B4A/C_Cuestionario.bas b/B4A/C_Cuestionario.bas new file mode 100644 index 0000000..7015b09 --- /dev/null +++ b/B4A/C_Cuestionario.bas @@ -0,0 +1,155 @@ +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 + db.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)") + 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.Elevation = 100 + 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 clienteConCuestionario(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_Principal.bas b/B4A/C_Principal.bas index 48cc49e..6108c57 100644 --- a/B4A/C_Principal.bas +++ b/B4A/C_Principal.bas @@ -581,7 +581,7 @@ Sub Subir_Click 'ELSE IF c.GetString("DESCUENTO") = 0 Then PASO = 1 'End If - If PASO =1 Then + If PASO = 1 Then B4XPages.MainPage.skmt.ExecNonQuery2("delete from PEDIDO WHERE PE_PRONOMBRE = ? ", Array As Object("N/A") ) B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE not In (select PE_CLIENTE from pedido)") c=B4XPages.MainPage.skmt.ExecQuery("select usuario from usuarioa") @@ -745,6 +745,23 @@ Sub Subir_Click img2.Visible =True PORCENTAJE = Round(100/ (cuantos_noventa + cuantos_pedido + cuantos_pedidosc + 1)) If Starter.marcaCel <> "Sony" Then ToastMessageShow("Se Actualizaran los datos, Este proceso podria tardar hasta un minuto, gracias "& l_ruta.text , True) + + + 'CUESTIONARIOS + c = B4XPages.MainPage.skmt.ExecQuery($"select * from cuestionario"$) + Private rutaActual As String = Subs.traeRuta + If c.RowCount > 0 Then + For x = 0 To c.RowCount - 1 + c.Position = x + Dim cmd As DBCommand + cmd.Initialize + cmd.Name = "insert_CUESTIONARIO_DUR" + cmd.Parameters = Array As Object(c.GetString("Q_IDCLIENTE"), rutaActual, ALMACEN, c.GetString("Q_FECHA"), c.GetString("Q_IDPREGUNTA"), c.GetString("Q_PREGUNTA"), c.GetString("Q_IDRESPUESTA"), C.GetString("Q_RESPUESTA")) + B4XPages.MainPage.reqManager.ExecuteCommand(cmd , "ins_cuestionario") + Next + End If + c.Close + End If End Sub @@ -1720,8 +1737,12 @@ Sub JobDone(Job As HttpJob) Next End If End If - End If + + If RESULT.Tag = "ins_cuestionario" Then 'query tag + Subs.logJobDoneResultados(RESULT) + End If + Job.Release End Sub diff --git a/B4A/INTMEX_LL.b4a b/B4A/INTMEX_LL.b4a index 2ac8b56..b61195a 100644 --- a/B4A/INTMEX_LL.b4a +++ b/B4A/INTMEX_LL.b4a @@ -127,35 +127,36 @@ Library8=compressstrings Library9=contentresolver 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~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~)~\n~SetApplicationAttribute(android:usesCleartextTraffic, "true")~\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~ ~\n~SetApplicationAttribute(android:largeHeap, "true")~\n~~\n~AddManifestText(~\n~ )~\n~AddApplicationText(~\n~ ~\n~ ~\n~ ~\n~)~\n~CreateResource(xml, provider_paths,~\n~~\n~ ~\n~ ~\n~ ~\n~~\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.MANAGE_EXTERNAL_STORAGE")~\n~AddPermission(android.permission.READ_PHONE_STATE)~\n~AddPermission(android.permission.WAKE_LOCK)~\n~SetApplicationAttribute(android:allowBackup, "false")~\n~AddManifestText()~\n~AddApplicationText(~\n~~\n~ ~\n~ ) Module1=appUpdater -Module10=C_NuevoCliente -Module11=C_Pedidos -Module12=C_Principal -Module13=C_Productos -Module14=C_Promos -Module15=C_RespaldoDiario -Module16=C_Subs -Module17=C_TicketsDia -Module18=C_UpdateAvailable -Module19=DBRequestManager +Module10=C_NoVenta +Module11=C_NuevoCliente +Module12=C_Pedidos +Module13=C_Principal +Module14=C_Productos +Module15=C_Promos +Module16=C_RespaldoDiario +Module17=C_Subs +Module18=C_TicketsDia +Module19=C_UpdateAvailable Module2=B4XMainPage -Module20=FileHandler -Module21=ManageExternalStorage -Module22=MAPA_RUTAS -Module23=NotificationService -Module24=Pendientes -Module25=Starter -Module26=Subs -Module27=Tracker +Module20=DBRequestManager +Module21=FileHandler +Module22=ManageExternalStorage +Module23=MAPA_RUTAS +Module24=NotificationService +Module25=Pendientes +Module26=Starter +Module27=Subs +Module28=Tracker Module3=BatteryUtilities Module4=C_Cliente Module5=C_Clientes -Module6=C_Historico -Module7=C_Mapas -Module8=C_Nota -Module9=C_NoVenta +Module6=C_Cuestionario +Module7=C_Historico +Module8=C_Mapas +Module9=C_Nota NumberOfFiles=46 NumberOfLibraries=33 -NumberOfModules=27 +NumberOfModules=28 Version=12.5 @EndOfDesignText@ #Region Project Attributes diff --git a/B4A/INTMEX_LL.b4a.meta b/B4A/INTMEX_LL.b4a.meta index d00415a..6e40276 100644 --- a/B4A/INTMEX_LL.b4a.meta +++ b/B4A/INTMEX_LL.b4a.meta @@ -19,6 +19,7 @@ ModuleBookmarks24= ModuleBookmarks25= ModuleBookmarks26= ModuleBookmarks27= +ModuleBookmarks28= ModuleBookmarks3= ModuleBookmarks4= ModuleBookmarks5= @@ -47,6 +48,7 @@ ModuleBreakpoints24= ModuleBreakpoints25= ModuleBreakpoints26= ModuleBreakpoints27= +ModuleBreakpoints28= ModuleBreakpoints3= ModuleBreakpoints4= ModuleBreakpoints5= @@ -58,10 +60,10 @@ ModuleClosedNodes0= ModuleClosedNodes1= ModuleClosedNodes10= ModuleClosedNodes11= -ModuleClosedNodes12=1,7 -ModuleClosedNodes13=9,11 -ModuleClosedNodes14=9,10 -ModuleClosedNodes15= +ModuleClosedNodes12= +ModuleClosedNodes13=1,7 +ModuleClosedNodes14=9,11 +ModuleClosedNodes15=9,10 ModuleClosedNodes16= ModuleClosedNodes17= ModuleClosedNodes18= @@ -69,19 +71,20 @@ ModuleClosedNodes19= ModuleClosedNodes2= ModuleClosedNodes20= ModuleClosedNodes21= -ModuleClosedNodes22=2 -ModuleClosedNodes23= -ModuleClosedNodes24=1 -ModuleClosedNodes25= -ModuleClosedNodes26=49,50,52,53,55,58,61 -ModuleClosedNodes27= +ModuleClosedNodes22= +ModuleClosedNodes23=2 +ModuleClosedNodes24= +ModuleClosedNodes25=1 +ModuleClosedNodes26= +ModuleClosedNodes27=49,50,52,53,55,58,61 +ModuleClosedNodes28= ModuleClosedNodes3= ModuleClosedNodes4= ModuleClosedNodes5=3 ModuleClosedNodes6= ModuleClosedNodes7= -ModuleClosedNodes8=1 -ModuleClosedNodes9= -NavigationStack=C_Productos,b_terminar1_Click,606,0,C_Productos,b_prodMas_Click,513,0,C_Cliente,JobDone,902,0,C_Cliente,mandaPendientes,884,0,B4XMainPage,b_apk_Click,655,0,Diseñador Visual,login.bal,-100,4,B4XMainPage,muestraProgreso,656,0,Starter,Process_Globals,26,0,appUpdater,download_newApk,164,0,B4XMainPage,B4XPage_Appear,248,0,B4XMainPage,B4XPage_Created,141,0 +ModuleClosedNodes8= +ModuleClosedNodes9=1 +NavigationStack=C_Cliente,Class_Globals,145,0,C_Cliente,B4XPage_Created,158,0,Visual Designer,cliente.bal,-100,1,C_Cliente,b_venta_Click,722,0,C_Cliente,gest_Click,411,0,C_Cliente,B4XPage_CloseRequest,448,0,C_Cliente,CreateListItem,1060,0,C_Cliente,cuest_preguntaContestada,1064,0,C_Principal,Class_Globals,0,0,C_Principal,Subir_Click,739,0,C_Principal,JobDone,1737,0 SelectedBuild=0 -VisibleModules=2,25,23,12,15,13,4,26,14,8 +VisibleModules=2,26,24,13,16,14,4,27,15,9