26/2/23 - Cuestionario para clientes

- Se agregó el cuestionario popup al entrar a un cliente.
- FALTA PONERLO EN LOS CLIENTES NUEVOS
This commit is contained in:
2023-12-26 16:52:36 -06:00
parent 7360a5630f
commit 2a3a701d3c
13 changed files with 884 additions and 385 deletions

View File

@@ -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