From bf8dab1993d9f3dcce6d5924a2a1eaf8c2c3cf81 Mon Sep 17 00:00:00 2001 From: Jose Alberto Guerra Ugalde Date: Tue, 16 Apr 2024 16:22:18 -0600 Subject: [PATCH] - Se puso geocerca en almacen 32 y 33 - Se completo el codigo de las encuestas, ya se descarga el historico y si ya se contesto la encuesta, ya no la vuelve a mostrar. --- B4A/B4XMainPage.bas | 4 +- B4A/C_Cliente.bas | 81 +++++++++++++++++++++-------------- B4A/C_Principal.bas | 28 ++++++++++-- B4A/Guna Vistas V3.1.b4a | 2 +- B4A/Guna Vistas V3.1.b4a.meta | 4 +- B4A/Subs.bas | 8 ++-- B4A/Tracker.bas | 2 +- 7 files changed, 85 insertions(+), 44 deletions(-) diff --git a/B4A/B4XMainPage.bas b/B4A/B4XMainPage.bas index ab94583..d9951bf 100644 --- a/B4A/B4XMainPage.bas +++ b/B4A/B4XMainPage.bas @@ -172,7 +172,9 @@ Private Sub B4XPage_Created (Root1 As B4XView) skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_ENCUESTA2(HE_CLIENTE TEXT)") skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_ENCUESTA_CLIENTE (HEC_CLIENTE TEXT, HEC_MODULO TEXT)") skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_ENCUESTA_AVISO_GIRO (HEAV_CLIENTE TEXT, HEAV_MODULO TEXT, HEAV_AVISO TEXT, HEAV_GIRO TEXT)") - + skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_ENCUESTA (HE_CLIE TEXT, HE_RES TEXT, HE_FECHA TEXT, HE_TIPO TEXT, HE_LAT TEXT, HE_LON TEXT)") + Subs.agregaColumna("HIST_ENCUESTA", "HE_LAT", "TEXT") + Subs.agregaColumna("HIST_ENCUESTA", "HE_LON", "TEXT") Try 'Intentamos usar "pragma_table_info" para revisar si existe la columna "P10" en la tabla c=skmt.ExecQuery("SELECT COUNT(*) AS fCol FROM pragma_table_info('ENCUESTA_MODULO3') WHERE name='P10'") c.Position = 0 diff --git a/B4A/C_Cliente.bas b/B4A/C_Cliente.bas index 9f4c30e..ce88c03 100644 --- a/B4A/C_Cliente.bas +++ b/B4A/C_Cliente.bas @@ -401,6 +401,7 @@ Sub Class_Globals Private l_txtEncuesta As Label Private l_titEncuesta As Label Private ImageView11 As ImageView + Dim distance As Long End Sub 'You can add more parameters here. @@ -506,7 +507,7 @@ Sub B4XPage_Appear If c.GetString("CAT_CL_NUM_SERIEFISICO") = "0" Then L_QR.TEXT = "SIN CODIGO" L_QR.TextColor = Colors.Red - gest.VISIBLE = True + If ALMACEN <> "32" And ALMACEN <> "33" And ALMACEN <> 6 Then gest.VISIBLE = True BT_QR.Visible = True Else L_QR.TEXT = c.GetString("CAT_CL_NUM_SERIEFISICO") @@ -639,41 +640,57 @@ Sub B4XPage_Appear Else If c.RowCount = 0 Then B_IMP.Visible = False End If +' Log(distance) + If (ALMACEN = "32" Or ALMACEN = "33" Or ALMACEN = "6") And distance > 100 Then + gest.Visible = False +' ToastMessageShow("aaa", False) + End If End Sub Sub GPS_LocationChanged (Location1 As Location) -' LogColor($"Entrando a Cliente.GPS_LocationChanged"$, Colors.red) + LogColor($"Entrando a Cliente.GPS_LocationChanged"$, Colors.red) If Tracker.FLP.GetLastKnownLocation.IsInitialized And Tracker.FLP.GetLastKnownLocation.Latitude <> 0 Then B4XPages.MainPage.lat_gps = Tracker.FLP.GetLastKnownLocation.Latitude B4XPages.MainPage.lon_gps = Tracker.FLP.GetLastKnownLocation.Longitude ' Log("Coords set to: " & B4XPages.MainPage.lat_gps & " and " & B4XPages.MainPage.lon_gps) End If - Dim l1, l2 As Location - l1.Initialize2(B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps) + If m_lat.Length > 0 And B4XPages.MainPage.lat_gps <> "0" Then + Dim l1, l2 As Location + l1.Initialize2(B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps) ' Log($"Coordenadas de la tienda - lat:${m_lat}, lon:${m_lon}"$) - l2.Initialize2(m_lat, m_lon) + l2.Initialize2(m_lat, m_lon) - BT_QR.Enabled = True - LA_GPS.TextColor = Colors.Blue - LA_GPS.Text = "CON UBICACION GPS" - B_GPS.Enabled = True - '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 - gest.Visible = True - If distance < 100 Then - LA_GEO.TextColor = Colors.Blue - Tels.Visible = True - gest.Visible = True - Else - LA_GEO.TextColor = Colors.Red - If ALMACEN = "1" Then - Tels.Visible = False - gest.Visible = True + BT_QR.Enabled = True + LA_GPS.TextColor = Colors.Blue + LA_GPS.Text = "CON UBICACION GPS" + B_GPS.Enabled = True + '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 + If ALMACEN <> "32" And ALMACEN <> "33" And ALMACEN <> 6 Then gest.Visible = True + If ALMACEN = "32" Or ALMACEN = "33" Or ALMACEN = "6" Then + If distance < 100 Then + LA_GEO.TextColor = Colors.Blue + Tels.Visible = True + gest.Visible = True + ToastMessageShow("DENTRO de rango GPS", False) + Else + LA_GEO.TextColor = Colors.Red + If ALMACEN = "1" Then + Tels.Visible = False + gest.Visible = True + End If + End If End If End If - LA_GEO.Text= $"$1.2{distance/1000} kms"$ + +' 19.4846431, -99.1458691 -> Keymon + + If LA_GEO.IsInitialized Then LA_GEO.Text= $"$1.2{distance/1000} kms"$ + + If distance > 100 Then ToastMessageShow("Fuera de rango GPS", False) + 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") @@ -1960,7 +1977,7 @@ Sub b_like_Click b_like.Visible = False Tar.Visible = False Tels.Visible = False - gest.Visible = False + gest.Visible = False ' : ToastMessageShow("bbbb", False) b_venta.Visible = False Guardar.Visible = False End Sub @@ -2788,14 +2805,12 @@ Private Sub B_GALLINA_Click b_like.Visible = False Tar.Visible = False Tels.Visible = False - gest.Visible = False + gest.Visible = False ': ToastMessageShow("ccc", False) b_venta.Visible = False Guardar.Visible = False HIST.Visible = False End Sub - - ' P5 M1 Private Sub p6_TextChanged (Old As String, New As String) If p6.Text.Length > 2 Then @@ -3478,6 +3493,7 @@ Sub Cuestionario DateTime.DateFormat = "MM/dd/yyyy" sDate=DateTime.Date(DateTime.Now) sTime=DateTime.Time(DateTime.Now) + Private fecha As String = $"${DateTime.Date(DateTime.Now)} ${DateTime.Time(DateTime.Now)}"$ CUANTOS = 0 ' indicePregunta = 0 Log($"Tomar_Foto = ${TOMAR_FOTO}"$) @@ -3491,6 +3507,7 @@ Sub Cuestionario CUANTOS2 = s.GetString("CUANTOS2") If logger Then LogColor($"Hist:encuesta=${CUANTOS}, hist_encuesta2 = ${CUANTOS2}"$, Colors.Magenta) End If + Log(CUANTOS & "|" & CUANTOS2) If CUANTOS = 0 And CUANTOS2 = 0 Then Private enc As Cursor = B4XPages.MainPage.skmt.ExecQuery("SELECT CAT_EP_ID, CAT_EP_IDTIPOPREGUNTA, CAT_CE_DESCRIPCION, CAT_EP_PREGUNTA, CAT_EP_RES1_PRED, CAT_EP_RES2_PRED, CAT_EP_RES3_PRED, CAT_EP_ORDEN_PREGUNTA FROM CAT_ENCUESTA_PREGUNTA ORDER BY CAT_CE_DESCRIPCION, CAST(CAT_EP_ORDEN_PREGUNTA AS DECIMAL)") If enc.RowCount > 0 Then @@ -3547,7 +3564,7 @@ Sub Cuestionario Do Until botonPresionado = 1 'Esperamos que respondan la pregunta Sleep(0) Loop - B4XPages.MainPage.skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text, encuestaRes,sDate & sTime,enc.GetString("CAT_EP_ID"))) + B4XPages.MainPage.skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO, HE_LAT, HE_LON) VALUES (?,?,?,?,?,?)", Array As Object(la_cuenta.Text, encuestaRes, fecha, enc.GetString("CAT_EP_ID"), B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps)) ocultaPanelEncuesta ELSE IF enc.GetString("CAT_EP_IDTIPOPREGUNTA") = 4 Then Log("Pregunta tipo 4") @@ -3563,12 +3580,12 @@ Sub Cuestionario Loop Log("encuestaRes: " & encuestaRes) If encuestaRes = "SI" Then - B4XPages.MainPage.skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text, "SI", sDate & sTime, enc.GetString("CAT_EP_ID"))) + B4XPages.MainPage.skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO, HE_LAT, HE_LON) VALUES (?,?,?,?,?,?)", Array As Object(la_cuenta.Text, "SI", fecha, enc.GetString("CAT_EP_ID"), B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps)) indicePregunta = listaPreguntas.IndexOf(enc.GetString("CAT_EP_RES1_PRED")) 'Nos movemos a la posicion especificada por la respuesta, en las preguntas de tipo desicion, la respuesta nos indica a que pregunta movernos. Log($"IndicePreg = ${indicePregunta}"$) i = indicePregunta else if encuestaRes = "NO" Then - B4XPages.MainPage.skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text, "NO", sDate & sTime, enc.GetString("CAT_EP_ID"))) + B4XPages.MainPage.skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO, HE_LAT, HE_LON) VALUES (?,?,?,?,?,?)", Array As Object(la_cuenta.Text, "NO", fecha, enc.GetString("CAT_EP_ID"), B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps)) indicePregunta = listaPreguntas.IndexOf(enc.GetString("CAT_EP_RES2_PRED")) 'Nos movemos a la posicion especificada por la respuesta, en las preguntas de tipo desicion, la respuesta nos indica a que pregunta movernos. Log($"IndicePreg = ${indicePregunta}"$) i = indicePregunta @@ -3590,7 +3607,7 @@ Sub Cuestionario Sleep(0) Loop Log($"Guardamos tipo 2 : ${encuestaRes}"$) - B4XPages.MainPage.skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text, encuestaRes, sDate & sTime, enc.GetString("CAT_EP_ID"))) + B4XPages.MainPage.skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO, HE_LAT, HE_LON) VALUES (?,?,?,?,?,?)", Array As Object(la_cuenta.Text, encuestaRes, fecha, enc.GetString("CAT_EP_ID"), B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps)) ocultaPanelEncuesta ELSE If enc.GetString("CAT_EP_IDTIPOPREGUNTA") = 6 Then Log("Pregunta tipo 6") @@ -3625,7 +3642,7 @@ Sub Cuestionario Do Until botonPresionado = 1 'Esperamos que respondan la pregunta Sleep(0) Loop - B4XPages.MainPage.skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text, encuestaRes,sDate & sTime,enc.GetString("CAT_EP_ID"))) + B4XPages.MainPage.skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO, HE_LAT, HE_LON) VALUES (?,?,?,?,?,?)", Array As Object(la_cuenta.Text, encuestaRes, fecha, enc.GetString("CAT_EP_ID"), B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps)) ocultaPanelEncuesta Else ' Starter.tipov = "VENTA" diff --git a/B4A/C_Principal.bas b/B4A/C_Principal.bas index cda9756..4dbbeda 100644 --- a/B4A/C_Principal.bas +++ b/B4A/C_Principal.bas @@ -559,15 +559,16 @@ Sub Subir_Click Next End If c.Close - - c=B4XPages.MainPage.skmt.ExecQuery("SELECT HE_CLIE, HE_RES, HE_FECHA, HE_TIPO FROM HIST_ENCUESTA") + + c=B4XPages.MainPage.skmt.ExecQuery("SELECT HE_CLIE, HE_RES, HE_FECHA, HE_TIPO, HE_LAT, HE_LON FROM HIST_ENCUESTA") If c.RowCount>0 Then For i=0 To c.RowCount -1 c.Position=i Dim cmd As DBCommand cmd.Initialize - cmd.Name = "insert_encuesta" - cmd.Parameters = Array As Object(C.GetString("HE_CLIE"),C.GetString("HE_RES"),C.GetString("HE_FECHA"), c.GetString("HE_TIPO")) + cmd.Name = "insert_encuesta_GUNA" + 'TMP_HE_CLIE, TMP_HE_RES, TMP_HE_FECHA, TMP_HE_TIPO, TMP_HE_IDALMACEN, TMP_HE_RUTA, TMP_HE_LONGITUD, TMP_HE_LATITUD, TMP_HE_EXISTE + cmd.Parameters = Array As Object(C.GetString("HE_CLIE"), C.GetString("HE_RES"), C.GetString("HE_FECHA"), c.GetString("HE_TIPO"), Subs.traeAlmacen, Subs.traeRuta, c.GetString("HE_LAT"), c.GetString("HE_LON"), "") B4XPages.MainPage.reqManager.ExecuteCommand(cmd , "inst_noventa") Next End If @@ -869,6 +870,11 @@ Sub cargar_Click cmd.Parameters = Array As Object( ALMACEN,e_ruta.text ) B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "carga_encuesta") + cmd.Initialize + cmd.Name = "SELECT_HIST_ENCUESTA_GUNA" + cmd.Parameters = Array As Object( e_ruta.text, ALMACEN) + B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "HIST_ENCUESTA2") + If E_RUTA2.text <> "" Then cmd.Initialize cmd.Name = "select_cat_clientes_guna_GV2" @@ -1257,6 +1263,20 @@ Sub JobDone(Job As HttpJob) End If End If + 'HIST_ENCUESTA2 + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) + If RESULT.Tag = "HIST_ENCUESTA2" Then 'query tag + B4XPages.MainPage.skmt.BeginTransaction + For Each records() As Object In RESULT.Rows + Dim HE_CLIENTE As String = records(RESULT.Columns.Get("HE_CLIENTE")) + B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO HIST_ENCUESTA2(HE_CLIENTE) VALUES (?)", Array As Object (HE_CLIENTE)) + Next + B4XPages.MainPage.skmt.TransactionSuccessful + B4XPages.MainPage.skmt.EndTransaction + End If + End If + If Job.JobName = "DBRequest" Then Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) If RESULT.Tag = "gunaprod" Then 'query tag diff --git a/B4A/Guna Vistas V3.1.b4a b/B4A/Guna Vistas V3.1.b4a index 1067664..ac12b50 100644 --- a/B4A/Guna Vistas V3.1.b4a +++ b/B4A/Guna Vistas V3.1.b4a @@ -187,7 +187,7 @@ Version=12.8 #Region Project Attributes #ApplicationLabel: Guna V3.1 #VersionCode: 1 - #VersionName: 4.04.13 ENC + #VersionName: 4.04.15 ENC 'SupportedOrientations possible values: unspecified, landscape or portrait. #SupportedOrientations: portrait #CanInstallToExternalStorage: False diff --git a/B4A/Guna Vistas V3.1.b4a.meta b/B4A/Guna Vistas V3.1.b4a.meta index 4a167ea..49798c1 100644 --- a/B4A/Guna Vistas V3.1.b4a.meta +++ b/B4A/Guna Vistas V3.1.b4a.meta @@ -70,6 +70,6 @@ ModuleClosedNodes6= ModuleClosedNodes7= ModuleClosedNodes8= ModuleClosedNodes9= -NavigationStack=C_Cliente,muestraBotonCentrado,3734,1,C_Cliente,B4XPage_Created,449,0,C_Cliente,B4XPage_Appear,454,0,C_Cliente,Class_Globals,9,0,C_Cliente,muestraBoton,3730,0,Visual Designer,cliente.bal,-100,3,C_Cliente,B4XPage_CloseRequest,1399,6,C_Cliente,b_encuesta_1_Click,3675,0,C_Cliente,Cuestionario,3556,6,C_Cliente,gest_Click,686,6 +NavigationStack=Tracker,CreateNotification,198,0,C_Principal,cargar_Click,862,0,C_Principal,JobDone,1258,1,C_Cliente,B4XPage_Appear,639,6,Subs,traePromoIdDeBD,1098,0,B4XMainPage,B4XPage_Created,164,0,Main,Globals,24,0,C_Cliente,GPS_LocationChanged,681,6,C_Cliente,CB4_P8_M3_CheckedChange,3480,0,C_Cliente,Cuestionario,3503,5 SelectedBuild=0 -VisibleModules=21,2,22,12,13,4,8,11,5,10,17 +VisibleModules=21,2,22,12,13,4,8,11,5,10,23 diff --git a/B4A/Subs.bas b/B4A/Subs.bas index 33de890..67b416a 100644 --- a/B4A/Subs.bas +++ b/B4A/Subs.bas @@ -1114,18 +1114,20 @@ End Sub Sub agregaColumna(tabla As String, columna As String, tipo As String) 'ignore Try 'Intentamos usar "pragma_table_info" para revisar si existe la columna en la tabla - Private c As Cursor = skmt.ExecQuery($"SELECT COUNT(*) AS fCol FROM pragma_table_info('${tabla}') WHERE name='${columna}'"$) + Private c As Cursor = B4XPages.MainPage.skmt.ExecQuery($"SELECT COUNT(*) AS fCol FROM pragma_table_info('${tabla}') WHERE name='${columna}'"$) c.Position = 0 If c.GetString("fCol") = 0 Then 'Si no esta la columna la agregamos - skmt.ExecNonQuery($"ALTER TABLE ${tabla} ADD COLUMN ${columna} ${tipo}"$) + B4XPages.MainPage.skmt.ExecNonQuery($"ALTER TABLE ${tabla} ADD COLUMN ${columna} ${tipo}"$) Log($"Columna "${columna} ${tipo}", agregada a "${tabla}"."$) End If + Log(1) Catch 'Si no funciona "pragma_table_info" lo hacemos con try/catch Try - skmt.ExecNonQuery($"ALTER TABLE ${tabla} ADD COLUMN ${columna} ${tipo}"$) + B4XPages.MainPage.skmt.ExecNonQuery($"ALTER TABLE ${tabla} ADD COLUMN ${columna} ${tipo}"$) Log($"Columna "${columna} ${tipo}", agregada a "${tabla}".."$) Catch Log(LastException) End Try + Log(2) End Try End Sub \ No newline at end of file diff --git a/B4A/Tracker.bas b/B4A/Tracker.bas index 7db0b93..d66b4fc 100644 --- a/B4A/Tracker.bas +++ b/B4A/Tracker.bas @@ -197,7 +197,7 @@ Sub flp_LocationChanged (Location1 As Location) LogColor(Location1.Latitude, Colors.red) CallSub2(Starter, "GPS_LocationChanged", Location1) ' CallSub2(gestion, "GPS_LocationChanged", Location1) -' CallSub2(B4XPages.GetPage("Cliente"), "GPS_LocationChanged", Location1) + CallSub2(B4XPages.GetPage("Cliente"), "GPS_LocationChanged", Location1) ' CallSub2(nuevocliente, "GPS_LocationChanged", Location1) End Sub