diff --git a/B4A/B4XMainPage.bas b/B4A/B4XMainPage.bas
index b97f422..d67f61e 100644
--- a/B4A/B4XMainPage.bas
+++ b/B4A/B4XMainPage.bas
@@ -181,6 +181,7 @@ Private Sub B4XPage_Created (Root1 As B4XView)
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_FOTO", "BLOB")
Subs.agregaColumna("PEDIDO", "PE_RECALCULO", "TEXT")
Subs.agregaColumna("PEDIDO", "PE_RECALCULOTOT", "TEXT")
Subs.agregaColumna("HIST_ENCUESTA", "HE_LON", "TEXT")
@@ -518,6 +519,45 @@ Sub JobDone(Job As HttpJob)
IMEI = ""
End If
End If
+
+ If Job.JobName = "DBRequest" Then
+ Dim result As DBResult = reqManager.HandleJob(Job)
+ If result.Tag = "geopass" Then 'query tag
+ For Each records() As Object In result.Rows
+ Dim cuenta As String = records(result.Columns.Get("CUENTA"))
+ Next
+ If cuenta = "1" Then
+ p_validacion.Visible = False
+ B4XSwitch2.Value = True
+ skmt.ExecNonQuery2("UPDATE GPS SET HABILITADO = (?)",Array As Object(1))
+ et_codigo.Text = ""
+
+ Private c2 As Cursor = skmt.ExecQuery("SELECT CAT_CL_RUTA FROM kmt_info")
+ c2.Position = 0
+ Private rutades As String = c2.GetString("CAT_CL_RUTA")
+ c2.Close
+
+ Private c2 As Cursor = skmt.ExecQuery("SELECT ID_ALMACEN FROM CAT_ALMACEN")
+ c2.Position = 0
+ Private almacendes As String = c2.GetString("ID_ALMACEN")
+ c2.Close
+
+ Dim cmd As DBCommand
+ cmd.Initialize
+ cmd.Name = "delete_geoPass_GUNA"
+ Log(Subs.traeAlmacen&", "& Subs.traeRuta)
+ cmd.Parameters = Array As Object( almacendes,rutades)
+ reqManager.ExecuteCommand(cmd , "traeGeoPass")
+
+ Else If cuenta = "0" Then
+ MsgboxAsync("Codigo incorrecto","Atención")
+ p_validacion.Visible = False
+ B4XSwitch2.Value = False
+ skmt.ExecNonQuery2("UPDATE GPS SET HABILITADO = (?)",Array As Object(0))
+ et_codigo.Text = ""
+ End If
+ End If
+ End If
If Job.JobName = "DBRequest" Then
Dim result As DBResult = reqManager.HandleJob(Job)
@@ -770,6 +810,7 @@ Private Sub B4XSwitch1_ValueChanged (Value As Boolean)
End Sub
Private Sub B4XSwitch2_ValueChanged (Value2 As Boolean)
+
c = skmt.ExecQuery2("SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String("CARGA_DIA"))
If c.RowCount > 0 Then
c.Position = 0
@@ -806,30 +847,58 @@ Private Sub b_cancelarcodigo_Click
End Sub
Private Sub b_aceptar_Click
- c = skmt.ExecQuery2("SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION =? ", Array As String("pasword"))
- Log(c.RowCount)
- If c.RowCount > 0 Then
- c.Position = 0
- Log(c.GetString("CAT_VA_VALOR"))
- If c.GetString("CAT_VA_VALOR") = et_codigo.Text Then
-
- p_validacion.Visible = False
+ If et_codigo.Text <> "" Then
- B4XSwitch2.Value = True
- skmt.ExecNonQuery2("UPDATE GPS SET HABILITADO = (?)",Array As Object(1))
- et_codigo.Text = ""
- Else If c.GetString("CAT_VA_VALOR") <> et_codigo.Text Then
- MsgboxAsync("Codigo incorrecto","Atención")
- p_validacion.Visible = False
- B4XSwitch2.Value = False
- skmt.ExecNonQuery2("UPDATE GPS SET HABILITADO = (?)",Array As Object(0))
- et_codigo.Text = ""
- End If
- Else If c.RowCount = 0 Then
- MsgboxAsync("Codigo incorrecto","Atención")
+ Private c2 As Cursor = skmt.ExecQuery("SELECT CAT_CL_RUTA FROM kmt_info")
+ c2.Position = 0
+ Private rutades As String = c2.GetString("CAT_CL_RUTA")
+ c2.Close
+
+ Private c2 As Cursor = skmt.ExecQuery("SELECT ID_ALMACEN FROM CAT_ALMACEN")
+ c2.Position = 0
+ Private almacendes As String = c2.GetString("ID_ALMACEN")
+ c2.Close
+
+ Dim cmd As DBCommand
+ cmd.Initialize
+ cmd.Name = "select_geoPass_GUNA"
+ cmd.Parameters = Array As Object(et_codigo.Text, almacendes, rutades)
+ reqManager.ExecuteQuery(cmd , 0, "geopass")
+
+ Else If et_codigo.Text = "" Then
+
+ MsgboxAsync("Ingresa un codigo","Atención")
p_validacion.Visible = False
B4XSwitch2.Value = False
skmt.ExecNonQuery2("UPDATE GPS SET HABILITADO = (?)",Array As Object(0))
+ et_codigo.Text = ""
+
End If
+' c = skmt.ExecQuery2("SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION =? ", Array As String("pasword"))
+' Log(c.RowCount)
+' If c.RowCount > 0 Then
+' c.Position = 0
+' Log(c.GetString("CAT_VA_VALOR"))
+' If c.GetString("CAT_VA_VALOR") = et_codigo.Text Then
+'
+' p_validacion.Visible = False
+'
+' B4XSwitch2.Value = True
+' skmt.ExecNonQuery2("UPDATE GPS SET HABILITADO = (?)",Array As Object(1))
+' et_codigo.Text = ""
+' Else If c.GetString("CAT_VA_VALOR") <> et_codigo.Text Then
+' MsgboxAsync("Codigo incorrecto","Atención")
+' p_validacion.Visible = False
+' B4XSwitch2.Value = False
+' skmt.ExecNonQuery2("UPDATE GPS SET HABILITADO = (?)",Array As Object(0))
+' et_codigo.Text = ""
+' End If
+' Else If c.RowCount = 0 Then
+' MsgboxAsync("Codigo incorrecto","Atención")
+' p_validacion.Visible = False
+' B4XSwitch2.Value = False
+' skmt.ExecNonQuery2("UPDATE GPS SET HABILITADO = (?)",Array As Object(0))
+' End If
+
End Sub
\ No newline at end of file
diff --git a/B4A/C_Cliente.bas b/B4A/C_Cliente.bas
index 30ac4cf..d06a4d6 100644
--- a/B4A/C_Cliente.bas
+++ b/B4A/C_Cliente.bas
@@ -374,7 +374,7 @@ Sub Class_Globals
Private p_m4 As Panel
Dim impresoraConectada As Boolean = False
Dim errorImpresora As Int = 0
-
+ Dim idencuestaaguardar As String
'Encuestas
Private botonPresionado As Int
Private encuestaRes As String
@@ -408,6 +408,15 @@ Sub Class_Globals
Private l_geopass As Label
Dim reqManager As DBRequestManager
+ Private camEx As CameraExClass
+ Dim frontCamera As Boolean = False
+ Private p_cam As Panel
+ Dim nombrefoto As String = "0"
+ Private p_camara As Panel
+ Private teclado As IME
+ Dim fototomada As String
+ Private b_foto As Button
+
End Sub
'You can add more parameters here.
@@ -487,6 +496,8 @@ Sub B4XPage_Appear
skmt.Initialize(ruta,"kmt.db", True)
reqManager.Initialize(Me, Starter.server)
+ p_camara.Width = Root.Width
+ p_camara.Height = Root.Height
S2=B4XPages.MainPage.skmt.ExecQuery("select count(*) AS CUANTOS from HIST_VENTAS WHERE HVD_CLIENTE IN (Select CUENTA from cuentaa)")
S2.Position =0
@@ -642,11 +653,11 @@ Sub B4XPage_Appear
B_IMP.Visible = False
End If
' Log(distance)
- If (ALMACEN = "32" Or ALMACEN = "33" Or ALMACEN = "87") And distance > 100 Then
- gest.Visible = False
- Tels.Visible = False
-' ToastMessageShow("aaa", False)
- End If
+
+
+
+'
+
' Log(Subs.InvSuficientePromoEsp)
' Log(Subs.traemontoprod)
@@ -774,7 +785,11 @@ Sub B4XPage_Appear
l_atiende.Text = c.GetString("CAT_CL_ATIENDE1")
l_atiende2.Text = c.GetString("CAT_CL_ATIENTE2")
TELEFONO = c.GetString("CAT_CL_TELEFONO")
- l_total.Text = s.GetString("TOTAL_CLIE") + s5.GetString("TOTAL_CLIE")
+ If s.GetString("TOTAL_CLIE") = Null Then
+ l_total.Text = 0
+ Else
+ l_total.Text =NumberFormat2((s.GetString("TOTAL_CLIE") + s5.GetString("TOTAL_CLIE")),0,2,2,False)
+ End If
total_cliente = s.GetString("TOTAL_CLIE") + s5.GetString("TOTAL_CLIE")
m_lat = "0"
If c.GetString("CAT_CL_LAT") <> "" Then m_lat =c.GetString("CAT_CL_LAT")
@@ -817,7 +832,11 @@ Sub B4XPage_Appear
l_atiende2.Text = c.GetString("CAT_CL_ATIENTE2")
TELEFONO = c.GetString("CAT_CL_TELEFONO")
Log(s.GetString("TOTAL_CLIE"))
- l_total.Text = s.GetString("TOTAL_CLIE")
+ If s.GetString("TOTAL_CLIE") = Null Then
+ l_total.Text = 0
+ Else
+ l_total.Text =NumberFormat2(s.GetString("TOTAL_CLIE"),0,2,2,False)
+ End If
total_cliente = s.GetString("TOTAL_CLIE")
m_lat = "0"
If c.GetString("CAT_CL_LAT") <> "" Then m_lat =c.GetString("CAT_CL_LAT")
@@ -844,6 +863,24 @@ Sub B4XPage_Appear
'AQUI TERMINA
+ c = skmt.ExecQuery("SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = 'GEOCERCA'")
+ If c.RowCount > 0 Then
+ c.Position = 0
+ Dim geo As String = c.GetString("CAT_VA_VALOR")
+ End If
+ c.Close
+ Log(geo)
+ If geo = "0" Then
+ gest.Visible = True
+ Tels.Visible = True
+ Log("AQUI")
+ Else If geo = "1" And distance > 100 Then
+ gest.Visible = False
+ Tels.Visible = False
+' ToastMessageShow("aaa", False)
+ End If
+
+
End Sub
Sub GPS_LocationChanged (Location1 As Location)
@@ -870,21 +907,27 @@ Sub GPS_LocationChanged (Location1 As Location)
c = skmt.ExecQuery("SELECT HABILITADO FROM GPS")
If c.RowCount > 0 Then
c.Position = 0
- Dim habi = c.GetString("HABILITADO")
+ Dim habi As String = c.GetString("HABILITADO")
+ End If
+ c.Close
+ c = skmt.ExecQuery("SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = 'GEOCERCA'")
+ If c.RowCount > 0 Then
+ c.Position = 0
+ Dim geo As String = c.GetString("CAT_VA_VALOR")
End If
c.Close
If gest.IsInitialized And Tels.IsInitialized Then
- If ALMACEN <> "32" And ALMACEN <> "33" Then
+ If geo = "0" Then
gest.Visible = True
Tels.Visible = True
- Else If ALMACEN = "32" And ALMACEN = "33" Then
+ Else If geo = "1" Then
gest.Visible = False
Tels.Visible = False
End If
End If
- If ALMACEN = "32" Or ALMACEN = "33" Or ALMACEN = "87" Then
+ If geo = "1" Then
If distance < 100 Then
LA_GEO.TextColor = Colors.Blue
Tels.Visible = True
@@ -1809,6 +1852,10 @@ Private Sub B4XPage_CloseRequest As ResumableSub
cuest.ocultPanelPregunta
If p_encuesta.Visible Then
p_encuesta.Visible = False
+ Else iF p_camara.Visible Then
+ Return False
+' p_camara.Visible = False
+' StopCamera2
else If p_pregunta1.Visible Then
p_pregunta1.Visible = False
Else if SV_ENCUESTA.Visible Then
@@ -4197,13 +4244,19 @@ Sub Cuestionario
enc.Position = i
Log($"POSICION = ${enc.Position}"$)
- If enc.GetString("CAT_EP_IDTIPOPREGUNTA") = 5 Then
+ If enc.GetString("CAT_EP_IDTIPOPREGUNTA") = 5 Then 'esto es para la foto
If logger Then Log("Pregunta tipo 5")
id_encuesta = enc.GetString("CAT_EP_ID")
+ idencuestaaguardar = enc.GetString("CAT_EP_ID")
+ LogColor(idencuestaaguardar,Colors.Blue)
TOMAR_FOTO = 1
CURSOR_FOTO = i
LogColor("PREGUNTA TIPO 5 SALIMOS", Colors.Red)
- Exit
+
+ InitializeCamera2
+ p_camara.Visible = True
+
+
ELSE IF enc.GetString("CAT_EP_IDTIPOPREGUNTA") = 3 Then ' Tipo SI/NO
If logger Then Log("Pregunta tipo 3")
botonPresionado = 0 ' Bandera para que espere a que se conteste la pregunta
@@ -4248,6 +4301,9 @@ Sub Cuestionario
Log($"IndicePreg = ${indicePregunta}"$)
i = indicePregunta
Log($"I = ${i}"$)
+ If enc.GetString("CAT_EP_RES2_PRED") = "null" Or enc.GetString("CAT_EP_RES2_PRED") = Null Then
+ Exit
+ End If
End If
ELSE If enc.GetString("CAT_EP_IDTIPOPREGUNTA") = 2 Then ' Tipo 3 opciones.
Log("Pregunta tipo 2")
@@ -4500,4 +4556,112 @@ Sub cuest_preguntaContestada(m As Map)
B4XPage_Appear
' Case 6
End Select
-End Sub
\ No newline at end of file
+End Sub
+
+
+'tomar foto
+
+Private Sub InitializeCamera2
+ Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_CAMERA)
+ Wait For B4XPage_PermissionResult (Permission As String, resultC As Boolean)
+ If resultC Then
+ camEx.Initialize(p_cam, frontCamera, Me, "Camera1")
+ frontCamera = camEx.Front
+ Log("inicializamos Camara")
+ Else
+ ToastMessageShow("No permission!!!", True)
+ End If
+' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE)
+' Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
+' If Result Then
+' Log("conpermisos para escritura")
+' Else
+' ToastMessageShow("No permission!!!", True)
+' End If
+'
+' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_READ_EXTERNAL_STORAGE)
+' Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
+' If Result Then
+' Log("conpermisos para escritura")
+' Else
+' ToastMessageShow("No permission!!!", True)
+' End If
+End Sub
+
+Sub Camera1_Ready (Success As Boolean)
+ Log("Camara ready")
+ If Success Then
+ camEx.SetJpegQuality(90)
+ camEx.SetContinuousAutoFocus
+ camEx.CommitParameters
+ camEx.StartPreview
+ Log(camEx.GetPreviewSize)
+ Else
+ ToastMessageShow("Cannot open camera.", True)
+ Log("Cannot open camera")
+ End If
+End Sub
+
+Sub Camera1_PictureTaken (Data()As Byte)
+ Log("tome foto")
+ Dim filename As String = DateTime.Now & "GUNA.jpg"
+ Dim Dirp As String = File.DirInternal
+ Dim Dir As String
+ Dim Dir2 As String
+ Try
+ File.MakeDir(Dirp,"/guna")
+ Dir = "/guna"
+ Log("creado en promotoria " & Dirp & Dir)
+ Catch
+ Dir = ""
+ Log("creado en raiz")
+ End Try
+
+ Try
+ File.MakeDir(Dirp & Dir,"/reduccion")
+ Dir2 = "/reduccion"
+ Log("creado en promotoria " & Dirp & Dir & Dir2)
+ Catch
+ Dir = ""
+ Log("creado en raiz")
+ End Try
+
+ camEx.SavePictureToFile(Data, Dirp&Dir, filename)
+ Log(Dirp&Dir &" ALGO BONITO COMO UN COLOR PARA GUERRA "& filename)
+ camEx.StartPreview 'restart preview
+' ToastMessageShow("Picture saved." & CRLF & "File size: " & File.Size(Dir, filename) & Dir &"," & filename, True)
+ Log("Picture saved." & CRLF & "File size: " & File.Size(Dir, filename) & Dir &"," & filename)
+ p_camara.Visible = False
+
+ Log(filename)
+
+
+ If filename <> "0" Then
+ Dim img As B4XBitmap = xui.LoadBitmapResize(File.DirInternal & Dir, filename, 300, 450, True)
+ Dim out As OutputStream = File.OpenOutput(File.DirInternal & Dir & Dir2, filename, True)
+ img.WriteToStream(out, 100, "PNG")
+ out.Close
+ Private fecha As String = $"${DateTime.Date(DateTime.Now)} ${DateTime.Time(DateTime.Now)}"$
+ B4XPages.MainPage.skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_FOTO, HE_FECHA, HE_TIPO, HE_LAT, HE_LON,HE_RES) VALUES (?,?,?,?,?,?,?)", Array As Object(la_cuenta.Text, File.ReadBytes(File.DirInternal & Dir & Dir2, filename), fecha, idencuestaaguardar, B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps,"FOTO"))
+ End If
+ StopCamera2
+' nombrefoto = "0"
+ ocultaPanelEncuesta
+End Sub
+
+Private Sub p_camara_Click
+
+End Sub
+
+Private Sub b_foto_Click
+ camEx.TakePicture
+ p_camara.Visible = False
+' StopCamera2
+End Sub
+
+Private Sub StopCamera2
+' Capturing = False
+ If camEx.IsInitialized Then
+ camEx.Release
+ End If
+End Sub
diff --git a/B4A/C_Nota.bas b/B4A/C_Nota.bas
index 1361f39..1e7da00 100644
--- a/B4A/C_Nota.bas
+++ b/B4A/C_Nota.bas
@@ -117,7 +117,7 @@ Sub B4XPage_Appear
s5.Position = 0
- L_TOTAL.Text = s.GetString("TOTAL_CLIE") + s5.GetString("TOTAL_CLIE")
+ L_TOTAL.Text =NumberFormat2(s.GetString("TOTAL_CLIE") + s5.GetString("TOTAL_CLIE"),0,2,2,False)
@@ -128,7 +128,7 @@ Sub B4XPage_Appear
Private s As Cursor=B4XPages.MainPage.skmt.ExecQuery("select iFNULL(sum(pe_costo_tot),0) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
s.Position=0
- L_TOTAL.Text = s.GetString("TOTAL_CLIE")
+ L_TOTAL.Text =NumberFormat2(s.GetString("TOTAL_CLIE"),0,2,2,False)
s.Close
End If
diff --git a/B4A/C_Principal.bas b/B4A/C_Principal.bas
index 97a118f..7a55f75 100644
--- a/B4A/C_Principal.bas
+++ b/B4A/C_Principal.bas
@@ -304,6 +304,7 @@ End Sub
Sub B4XPage_Appear
p_principal.Visible = True
+
HORAINGRESO ="000000"
Btn_Ubicar.Left = (Root.Width/2) - (Btn_Ubicar.Width/2)
' B4XPages.MainPage.reqManager.Initialize(Me, B4XPages.MainPage.SERVER)
@@ -558,15 +559,15 @@ Sub Subir_Click
End If
c.Close
- c=B4XPages.MainPage.skmt.ExecQuery("SELECT HE_CLIE, HE_RES, HE_FECHA, HE_TIPO, HE_LAT, HE_LON FROM HIST_ENCUESTA")
+ c=B4XPages.MainPage.skmt.ExecQuery("SELECT HE_CLIE, HE_RES, HE_FECHA, HE_TIPO, HE_LAT, HE_LON, HE_FOTO 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_GUNA"
+ cmd.Name = "insert_encuesta2_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"), "")
+ 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"), "", c.GetBlob("HE_FOTO"))
B4XPages.MainPage.reqManager.ExecuteCommand(cmd , "inst_noventa")
Next
End If
@@ -605,20 +606,20 @@ Sub Subir_Click
cuantos_pedido = D.GetString("CUANTOS_PEDIDO")
d.Close
- 'CUESTIONARIO
- c = B4XPages.MainPage.skmt.ExecQuery($"select * from cuestionario"$)
- Private rutaActual As String = Subs.traeRuta
- If c.RowCount > 0 Then
- For i = 0 To c.RowCount - 1
- c.Position = i
- Dim cmd As DBCommand
- cmd.Initialize
- cmd.Name = "insert_CUESTIONARIO_GUNA"
- 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
+' 'CUESTIONARIO
+' c = B4XPages.MainPage.skmt.ExecQuery($"select * from cuestionario"$)
+' Private rutaActual As String = Subs.traeRuta
+' If c.RowCount > 0 Then
+' For i = 0 To c.RowCount - 1
+' c.Position = i
+' Dim cmd As DBCommand
+' cmd.Initialize
+' cmd.Name = "insert_CUESTIONARIO_GUNA"
+' 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
' NOVENTA
c=B4XPages.MainPage.skmt.ExecQuery("SELECT NV_CLIENTE,NV_FECHA,NV_USER,NV_MOTIVO,NV_COMM,NV_LAT,NV_LON FROM NOVENTA")
@@ -767,7 +768,9 @@ Sub cargar_Click
B4XPages.MainPage.skmt.ExecNonQuery2("DELETE FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?",Array As String("CARGA_DIA"))
B4XPages.MainPage.skmt.ExecNonQuery2("DELETE FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?",Array As String("pasword"))
B4XPages.MainPage.skmt.ExecNonQuery2("DELETE FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?",Array As String("LATITUD"))
+ B4XPages.MainPage.skmt.ExecNonQuery2("DELETE FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?",Array As String("GEOCERCA"))
B4XPages.MainPage.skmt.ExecNonQuery2("DELETE FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?",Array As String("LONGITUD"))
+ B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE GPS SET HABILITADO = (?)",Array As Object(0))
CARGA = "CARGAR"
img2.Visible =True
L_P_1.Visible = True
@@ -1057,7 +1060,7 @@ Sub JobDone(Job As HttpJob)
If n = "OKActivo" Then
Dim cmd As DBCommand
cmd.Initialize
- cmd.Name = "select_ruta_GV2_70_2"
+ cmd.Name = "select_ruta_GV2_70_5"
cmd.Parameters = Array As Object(ALMACEN,e_ruta.text)
B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "ruta")
'Log("Usuario guardado en BD es 'Valido'")
@@ -1287,8 +1290,10 @@ Sub JobDone(Job As HttpJob)
For Each records() As Object In RESULT.Rows
Dim latitud As String = records(RESULT.Columns.Get("CAT_AL_LATITUD"))
Dim longitud As String = records(RESULT.Columns.Get("CAT_AL_LONGITUD"))
+ Dim GEOCERCA As String = records(RESULT.Columns.Get("CAT_AL_GEOCERCA"))
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("LATITUD",latitud))
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("LONGITUD",longitud))
+ B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("GEOCERCA",GEOCERCA))
Next
' If Starter.marcaCel <> "Sony" Then ToastMessageShow(" Historico Marcas" , True)
End If
@@ -1926,6 +1931,7 @@ Sub e_ruta_EnterPressed
B4XPages.MainPage.skmt.ExecNonQuery2("DELETE FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?",Array As String("pasword"))
B4XPages.MainPage.skmt.ExecNonQuery2("DELETE FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?",Array As String("LATITUD"))
B4XPages.MainPage.skmt.ExecNonQuery2("DELETE FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?",Array As String("LONGITUD"))
+ B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE GPS SET HABILITADO = (?)",Array As Object(0))
B4XPage_Appear
End If
End If
@@ -2191,7 +2197,7 @@ Sub resdia_Click
s5.Position = 0
- L_REAL.Text = s.GetString("TOTAL_CLIE") + s5.GetString("TOTAL_CLIE")
+ L_REAL.Text =NumberFormat2(s.GetString("TOTAL_CLIE") + s5.GetString("TOTAL_CLIE"),0,2,2,False)
@@ -2202,7 +2208,7 @@ Sub resdia_Click
Private s As Cursor=B4XPages.MainPage.skmt.ExecQuery("select iFNULL(sum(pe_costo_tot),0) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE FROM PEDIDO ")
s.Position=0
- L_REAL.Text = s.GetString("TOTAL_CLIE")
+ L_REAL.Text =NumberFormat2(s.GetString("TOTAL_CLIE"),0,2,2,False)
s.Close
End If
diff --git a/B4A/CameraExClass.bas b/B4A/CameraExClass.bas
new file mode 100644
index 0000000..1743551
--- /dev/null
+++ b/B4A/CameraExClass.bas
@@ -0,0 +1,290 @@
+B4A=true
+Group=Default Group
+ModulesStructureVersion=1
+Type=Class
+Version=7.01
+@EndOfDesignText@
+
+'Class module
+'version 1.20
+'See this page for the list of constants:
+'http://developer.android.com/intl/fr/reference/android/hardware/Camera.Parameters.html
+'Note that you should use the constant values instead of the names.
+Sub Class_Globals
+ Private nativeCam As Object
+ Private cam As Camera
+ Private r As Reflector
+ Private target As Object
+ Private event As String
+ Public Front As Boolean
+ Type CameraInfoAndId (CameraInfo As Object, Id As Int)
+ Type CameraSize (Width As Int, Height As Int)
+ Private parameters As Object
+End Sub
+
+Public Sub Initialize (Panel1 As Panel, FrontCamera As Boolean, TargetModule As Object, EventName As String)
+ target = TargetModule
+ event = EventName
+ Front = FrontCamera
+ Dim id As Int
+ id = FindCamera(Front).id
+ If id = -1 Then
+ Front = Not(Front) 'try different camera
+ id = FindCamera(Front).id
+ If id = -1 Then
+ ToastMessageShow("No camera found.", True)
+ Return
+ End If
+ End If
+ cam.Initialize2(Panel1, "camera", id)
+End Sub
+
+Private Sub FindCamera (frontCamera As Boolean) As CameraInfoAndId
+ Dim ci As CameraInfoAndId
+ Dim cameraInfo As Object
+ Dim cameraValue As Int
+ If frontCamera Then cameraValue = 1 Else cameraValue = 0
+ cameraInfo = r.CreateObject("android.hardware.Camera$CameraInfo")
+ Dim numberOfCameras As Int = r.RunStaticMethod("android.hardware.Camera", "getNumberOfCameras", Null, Null)
+ For i = 0 To numberOfCameras - 1
+ r.RunStaticMethod("android.hardware.Camera", "getCameraInfo", Array As Object(i, cameraInfo), _
+ Array As String("java.lang.int", "android.hardware.Camera$CameraInfo"))
+ r.target = cameraInfo
+ If r.GetField("facing") = cameraValue Then
+ ci.cameraInfo = r.target
+ ci.Id = i
+ Return ci
+ End If
+ Next
+ ci.id = -1
+ Return ci
+End Sub
+
+Private Sub SetDisplayOrientation
+ r.target = r.GetActivity
+ r.target = r.RunMethod("getWindowManager")
+ r.target = r.RunMethod("getDefaultDisplay")
+ r.target = r.RunMethod("getRotation")
+ Dim previewResult, result, degrees As Int = r.target * 90
+ Dim ci As CameraInfoAndId = FindCamera(Front)
+ r.target = ci.CameraInfo
+ Dim orientation As Int = r.GetField("orientation")
+ If Front Then
+ previewResult = (orientation + degrees) Mod 360
+ result = previewResult
+ previewResult = (360 - previewResult) Mod 360
+ Else
+ previewResult = (orientation - degrees + 360) Mod 360
+ result = previewResult
+ Log(previewResult)
+ End If
+ r.target = nativeCam
+ r.RunMethod2("setDisplayOrientation", previewResult, "java.lang.int")
+ r.target = parameters
+ r.RunMethod2("setRotation", result, "java.lang.int")
+ CommitParameters
+End Sub
+
+Private Sub Camera_Ready (Success As Boolean)
+ If Success Then
+ r.target = cam
+ nativeCam = r.GetField("camera")
+ r.target = nativeCam
+ parameters = r.RunMethod("getParameters")
+ SetDisplayOrientation
+ Else
+ Log("success = false, " & LastException)
+ End If
+ CallSub2(target, event & "_ready", Success)
+End Sub
+
+Sub Camera_Preview (Data() As Byte)
+ If SubExists(target, event & "_preview") Then
+ CallSub2(target, event & "_preview", Data)
+ End If
+End Sub
+Public Sub TakePicture
+ cam.TakePicture
+End Sub
+
+Private Sub Camera_PictureTaken (Data() As Byte)
+ CallSub2(target, event & "_PictureTaken", Data)
+End Sub
+
+Public Sub StartPreview
+ cam.StartPreview
+End Sub
+
+Public Sub StopPreview
+ cam.StopPreview
+End Sub
+
+Public Sub Release
+ cam.Release
+End Sub
+
+'Saves the data received from PictureTaken event
+Public Sub SavePictureToFile(Data() As Byte, Dir As String, FileName As String)
+ Dim out As OutputStream = File.OpenOutput(Dir, FileName, False)
+ out.WriteBytes(Data, 0, Data.Length)
+ out.Close
+End Sub
+
+Public Sub SetParameter(Key As String, Value As String)
+ r.target = parameters
+ r.RunMethod3("set", Key, "java.lang.String", Value, "java.lang.String")
+End Sub
+
+Public Sub GetParameter(Key As String) As String
+ r.target = parameters
+ Return r.RunMethod2("get", Key, "java.lang.String")
+End Sub
+
+Public Sub CommitParameters
+ Try
+ r.target = nativeCam
+ r.RunMethod4("setParameters", Array As Object(parameters), Array As String("android.hardware.Camera$Parameters"))
+ Catch
+ ToastMessageShow("Error setting parameters.", True)
+ Log(LastException)
+ End Try
+End Sub
+
+Public Sub GetColorEffect As String
+ Return GetParameter("effect")
+End Sub
+
+Public Sub SetColorEffect(Effect As String)
+ SetParameter("effect", Effect)
+End Sub
+
+Public Sub GetSupportedPicturesSizes As CameraSize()
+ r.target = parameters
+ Dim list1 As List = r.RunMethod("getSupportedPictureSizes")
+ Dim cs(list1.Size) As CameraSize
+ For i = 0 To list1.Size - 1
+ r.target = list1.Get(i)
+ cs(i).Width = r.GetField("width")
+ cs(i).Height = r.GetField("height")
+ Next
+ Return cs
+End Sub
+
+Public Sub SetPictureSize(Width As Int, Height As Int)
+ r.target = parameters
+ r.RunMethod3("setPictureSize", Width, "java.lang.int", Height, "java.lang.int")
+End Sub
+
+Public Sub SetJpegQuality(Quality As Int)
+ r.target = parameters
+ r.RunMethod2("setJpegQuality", Quality, "java.lang.int")
+End Sub
+
+Public Sub SetFlashMode(Mode As String)
+ r.target = parameters
+ r.RunMethod2("setFlashMode", Mode, "java.lang.String")
+End Sub
+
+Public Sub GetFlashMode As String
+ r.target = parameters
+ Return r.RunMethod("getFlashMode")
+End Sub
+
+Public Sub GetSupportedFlashModes As List
+ r.target = parameters
+ Return r.RunMethod("getSupportedFlashModes")
+End Sub
+
+Public Sub GetSupportedColorEffects As List
+ r.target = parameters
+ Return r.RunMethod("getSupportedColorEffects")
+End Sub
+
+Public Sub GetPreviewSize As CameraSize
+ r.target = parameters
+ r.target = r.RunMethod("getPreviewSize")
+ Dim cs As CameraSize
+ cs.Width = r.GetField("width")
+ cs.Height = r.GetField("height")
+ Return cs
+End Sub
+
+Public Sub GetPictureSize As CameraSize
+ r.target = parameters
+ r.target = r.RunMethod("getPictureSize")
+ Dim cs As CameraSize
+ cs.Width = r.GetField("width")
+ cs.Height = r.GetField("height")
+ Return cs
+End Sub
+
+'Converts a preview image formatted in YUV format to JPEG.
+'Note that you should not save every preview image as it will slow down the whole process.
+Public Sub PreviewImageToJpeg(data() As Byte, quality As Int) As Byte()
+ Dim size, previewFormat As Object
+ r.target = parameters
+ size = r.RunMethod("getPreviewSize")
+ previewFormat = r.RunMethod("getPreviewFormat")
+ r.target = size
+ Dim width = r.GetField("width"), height = r.GetField("height") As Int
+ Dim yuvImage As Object = r.CreateObject2("android.graphics.YuvImage", _
+ Array As Object(data, previewFormat, width, height, Null), _
+ Array As String("[B", "java.lang.int", "java.lang.int", "java.lang.int", "[I"))
+ r.target = yuvImage
+ Dim rect1 As Rect
+ rect1.Initialize(0, 0, r.RunMethod("getWidth"), r.RunMethod("getHeight"))
+ Dim out As OutputStream
+ out.InitializeToBytesArray(100)
+ r.RunMethod4("compressToJpeg", Array As Object(rect1, quality, out), _
+ Array As String("android.graphics.Rect", "java.lang.int", "java.io.OutputStream"))
+ Return out.ToBytesArray
+End Sub
+
+Public Sub GetSupportedFocusModes As List
+ r.target = parameters
+ Return r.RunMethod("getSupportedFocusModes")
+End Sub
+
+Public Sub SetContinuousAutoFocus
+ Dim modes As List = GetSupportedFocusModes
+ If modes.IndexOf("continuous-picture") > -1 Then
+ SetFocusMode("continuous-picture")
+ Else If modes.IndexOf("continuous-video") > -1 Then
+ SetFocusMode("continuous-video")
+ Else
+ Log("Continuous focus mode is not available")
+ End If
+End Sub
+
+Public Sub SetFocusMode(Mode As String)
+ r.target = parameters
+ r.RunMethod2("setFocusMode", Mode, "java.lang.String")
+End Sub
+
+Public Sub GetFocusDistances As Float()
+ Dim F(3) As Float
+ r.target = parameters
+ r.RunMethod4("getFocusDistances", Array As Object(F), Array As String("[F"))
+ Return F
+End Sub
+'This method should only be called if you need to immediately release the camera.
+'For example if you need to start another application that depends on the camera.
+Public Sub CloseNow
+ cam.Release
+ r.target = cam
+ r.RunMethod2("releaseCameras", True, "java.lang.boolean")
+End Sub
+'Calls AutoFocus and then takes the picture if focus was successfull.
+Public Sub FocusAndTakePicture
+ cam.AutoFocus
+End Sub
+Private Sub Camera_FocusDone (Success As Boolean)
+ If Success Then
+ TakePicture
+ Else
+ Log("AutoFocus error.")
+ End If
+End Sub
+
+
+
diff --git a/B4A/Files/cliente.bal b/B4A/Files/cliente.bal
index ba5738e..37af2eb 100644
Binary files a/B4A/Files/cliente.bal and b/B4A/Files/cliente.bal differ
diff --git a/B4A/Guna Vistas V3.1.b4a b/B4A/Guna Vistas V3.1.b4a
index 42624b0..ea4241c 100644
--- a/B4A/Guna Vistas V3.1.b4a
+++ b/B4A/Guna Vistas V3.1.b4a
@@ -157,7 +157,7 @@ Library6=byteconverter
Library7=camera
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~ ~\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~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~SetApplicationAttribute(android:allowBackup, "false")~\n~AddPermission(android.permission.BLUETOOTH_ADVERTISE)~\n~AddPermission(android.permission.BLUETOOTH_CONNECT)~\n~AddPermission(android.permission.BLUETOOTH_SCAN)~\n~AddManifestText(~\n~ ~\n~ )~\n~AddManifestText()
+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~ ~\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~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~SetApplicationAttribute(android:allowBackup, "false")~\n~AddPermission(android.permission.BLUETOOTH_ADVERTISE)~\n~AddPermission(android.permission.BLUETOOTH_CONNECT)~\n~AddPermission(android.permission.BLUETOOTH_SCAN)~\n~AddManifestText(~\n~ ~\n~ )~\n~AddManifestText()~\n~~\n~AddManifestText(~\n~ ~\n~ )~\n~ AddPermission(android.permission.MANAGE_EXTERNAL_STORAGE)~\n~ SetApplicationAttribute(android:allowBackup, "false")~\n~ ~\n~ ~\n~ AddManifestText(~\n~ )~\n~ AddPermission(android.permission.READ_EXTERNAL_STORAGE)
Module1=appUpdater
Module10=C_NoVenta
Module11=C_NuevoCliente
@@ -167,14 +167,15 @@ Module14=C_Productos
Module15=C_Promos
Module16=C_TicketsDia
Module17=C_UpdateAvailable
-Module18=DBRequestManager
-Module19=EscPosPrinter
+Module18=CameraExClass
+Module19=DBRequestManager
Module2=B4XMainPage
-Module20=FirebaseMessaging
-Module21=MAPA_RUTAS
-Module22=Starter
-Module23=Subs
-Module24=Tracker
+Module20=EscPosPrinter
+Module21=FirebaseMessaging
+Module22=MAPA_RUTAS
+Module23=Starter
+Module24=Subs
+Module25=Tracker
Module3=BatteryUtilities
Module4=C_Cliente
Module5=C_Clientes
@@ -184,13 +185,13 @@ Module8=C_Mapas
Module9=C_Nota
NumberOfFiles=62
NumberOfLibraries=33
-NumberOfModules=24
+NumberOfModules=25
Version=12.8
@EndOfDesignText@
#Region Project Attributes
#ApplicationLabel: Guna V3.1
#VersionCode: 1
- #VersionName: 4.07.27.EP
+ #VersionName: 4.07.31.EP_d
'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 3398818..783e683 100644
--- a/B4A/Guna Vistas V3.1.b4a.meta
+++ b/B4A/Guna Vistas V3.1.b4a.meta
@@ -16,6 +16,7 @@ ModuleBookmarks21=
ModuleBookmarks22=
ModuleBookmarks23=
ModuleBookmarks24=
+ModuleBookmarks25=
ModuleBookmarks3=
ModuleBookmarks4=
ModuleBookmarks5=
@@ -41,6 +42,7 @@ ModuleBreakpoints21=
ModuleBreakpoints22=
ModuleBreakpoints23=
ModuleBreakpoints24=
+ModuleBreakpoints25=
ModuleBreakpoints3=
ModuleBreakpoints4=
ModuleBreakpoints5=
@@ -62,10 +64,11 @@ ModuleClosedNodes18=
ModuleClosedNodes19=
ModuleClosedNodes2=
ModuleClosedNodes20=
-ModuleClosedNodes21=3,4
-ModuleClosedNodes22=1
-ModuleClosedNodes23=
+ModuleClosedNodes21=
+ModuleClosedNodes22=3,4
+ModuleClosedNodes23=1
ModuleClosedNodes24=
+ModuleClosedNodes25=
ModuleClosedNodes3=
ModuleClosedNodes4=
ModuleClosedNodes5=7
@@ -73,6 +76,6 @@ ModuleClosedNodes6=8,9,10
ModuleClosedNodes7=
ModuleClosedNodes8=
ModuleClosedNodes9=
-NavigationStack=C_Cliente,Impresion,2023,0,C_Cliente,B_IMP_Click,2014,6,C_Principal,Subir_Click,584,6,C_Cliente,Impresion2,2189,2,Diseñador Visual,cliente.bal,-100,3,C_Cliente,CB4_P8_M3_CheckedChange,4118,0,C_Cuestionario,Class_Globals,0,0,C_Principal,Class_Globals,0,0,C_Cliente,Cuestionario,4193,0,C_Cliente,gest_Click,1082,0
+NavigationStack=C_Cliente,GPS_LocationChanged,947,0,B4XMainPage,B4XSwitch2_ValueChanged,766,6,B4XMainPage,Entrar_Click,416,0,C_Cliente,b_geopass_Click,1062,0,C_Cliente,JobDone,1108,0,C_Principal,e_ruta_EnterPressed,1926,1,C_Principal,cargar_Click,766,1,C_Principal,Subir_Click,752,0,C_Principal,JobDone,1033,4,B4XMainPage,JobDone,525,6
SelectedBuild=0
-VisibleModules=22,2,23,13,14,4,6,9,12,5
+VisibleModules=23,2,24,13,14,4,6,9,12,5