Commit Inicial
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
**/Objects
|
||||
**/AutoBackups
|
||||
*.meta
|
||||
74
B4A/C_UpdateAvailable.bas
Normal file
@@ -0,0 +1,74 @@
|
||||
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
|
||||
End Sub
|
||||
|
||||
'You can add more parameters here.
|
||||
Public Sub Initialize As Object
|
||||
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
|
||||
Root.Color = Colors.Transparent
|
||||
End Sub
|
||||
|
||||
Sub B4XPage_Appear
|
||||
Try
|
||||
Do While Not(CanRequestPackageInstalls)
|
||||
MsgboxAsync($"Por favor permita que ${Application.PackageName} instale actualizaciones"$, "Instalar actualización")
|
||||
Wait For Msgbox_Result(Result As Int)
|
||||
Dim in As Intent
|
||||
in.Initialize("android.settings.", "package:" & Application.PackageName)
|
||||
StartActivity(in)
|
||||
Loop
|
||||
Catch
|
||||
Log("updateAvailable() Error - " & LastException.Message)
|
||||
End Try
|
||||
If appUpdater.newApp.update Then
|
||||
ofreceActualizacion
|
||||
Else
|
||||
sinActualizacion
|
||||
End If
|
||||
End Sub
|
||||
|
||||
'////////////////////////////////////////////////////////////////////////////////////////////
|
||||
'//// Esta es una actividad usada por el servicio appUpdater para mostrar notificaciones
|
||||
'//// cuando hay alguna actualizacion de apk.
|
||||
'////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
public Sub CanRequestPackageInstalls As Boolean
|
||||
' // https://www.b4x.com/android/forum/threads/version-safe-apk-installation.87667/#content
|
||||
Dim ctxt As JavaObject
|
||||
ctxt.InitializeContext
|
||||
Dim PackageManager As JavaObject = ctxt.RunMethod("getPackageManager", Null)
|
||||
Return PackageManager.RunMethod("canRequestPackageInstalls", Null)
|
||||
End Sub
|
||||
|
||||
Sub ofreceActualizacion
|
||||
If Msgbox2(appUpdater.newApp.newMsg,"Actualización disponible","Si","","No",Null) = DialogResponse.Positive Then 'ignore
|
||||
' StartService(DownloadService)
|
||||
CallSubDelayed(appUpdater, "download_newApk")
|
||||
' ToastMessageShow("Descargando actualización", True)
|
||||
End If
|
||||
B4XPages.MainPage.ocultaProgreso
|
||||
StartActivity(Main)
|
||||
' Activity.Finish
|
||||
B4XPages.ShowPage("Mainpage")
|
||||
End Sub
|
||||
|
||||
Sub sinActualizacion
|
||||
Msgbox(appUpdater.newApp.okMsg, "Aplicación al corriente") 'ignore
|
||||
' StartActivity(Main)
|
||||
B4XPages.MainPage.ocultaProgreso
|
||||
B4XPages.ShowPage("Mainpage")
|
||||
End Sub
|
||||
607
B4A/C_principal.bas
Normal file
@@ -0,0 +1,607 @@
|
||||
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 l_cuentasportrabajar As Label
|
||||
Private l_cuentrastrabajadas As Label
|
||||
Private l_credito As Label
|
||||
Private l_estatus As Label
|
||||
Private l_nombre As Label
|
||||
Private l_direccion As Label
|
||||
Private clv_cuentas As CustomListView
|
||||
Dim reqManager As DBRequestManager
|
||||
Dim trabajos = 0 As Int
|
||||
Dim c As Cursor
|
||||
Dim d As Cursor
|
||||
Dim e As Cursor
|
||||
Private p_cuenta As Panel
|
||||
Dim lb As Label
|
||||
|
||||
Private et_findia As EditText
|
||||
Private b_enviar As Button
|
||||
Private et_busqueda As EditText
|
||||
Private l_creditoges As Label
|
||||
Private l_estatusges As Label
|
||||
Private l_nombreges As Label
|
||||
Private l_direccionges As Label
|
||||
Private l_fechagestion As Label
|
||||
Private l_resultadoges As Label
|
||||
Private Label3 As Label
|
||||
Private paneltop As Panel
|
||||
Private Panel4 As Panel
|
||||
Dim IME As IME
|
||||
End Sub
|
||||
|
||||
'You can add more parameters here.
|
||||
Public Sub Initialize As Object
|
||||
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
|
||||
Root.LoadLayout("principal")
|
||||
|
||||
|
||||
IME.Initialize("IME")
|
||||
IME.AddHeightChangedEvent
|
||||
IME_HeightChanged(100%y, 0)
|
||||
|
||||
Starter.skmt.ExecNonQuery("delete from TIPO_VIVIENDA")
|
||||
Starter.skmt.ExecNonQuery("delete from NIVEL_SOCIO")
|
||||
Starter.skmt.ExecNonQuery("delete from CARACTERISTICAS")
|
||||
Starter.skmt.ExecNonQuery("delete from NUMERO_NIV")
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO TIPO_VIVIENDA(TIPO, NUMERO) VALUES(?,?)", Array As Object ("Selecciona una opción","0"))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO TIPO_VIVIENDA(TIPO, NUMERO) VALUES(?,?)", Array As Object ("DEPTO","1"))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO TIPO_VIVIENDA(TIPO, NUMERO) VALUES(?,?)", Array As Object ("CASA","2"))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO TIPO_VIVIENDA(TIPO, NUMERO) VALUES(?,?)", Array As Object ("OTRO","3"))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO NIVEL_SOCIO(NIVEL, NUMERO) VALUES(?,?)", Array As Object ("Selecciona una opción","0"))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO NIVEL_SOCIO(NIVEL, NUMERO) VALUES(?,?)", Array As Object ("ALTO","1"))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO NIVEL_SOCIO(NIVEL, NUMERO) VALUES(?,?)", Array As Object ("MEDIO","2"))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO NIVEL_SOCIO(NIVEL, NUMERO) VALUES(?,?)", Array As Object ("BAJO","3"))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO NIVEL_SOCIO(NIVEL, NUMERO) VALUES(?,?)", Array As Object ("OTRO","4"))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CARACTERISTICAS(TIPO, NUMERO) VALUES(?,?)", Array As Object ("Selecciona una opción","0"))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CARACTERISTICAS(TIPO, NUMERO) VALUES(?,?)", Array As Object ("PROPIA","1"))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CARACTERISTICAS(TIPO, NUMERO) VALUES(?,?)", Array As Object ("RENTADA","2"))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CARACTERISTICAS(TIPO, NUMERO) VALUES(?,?)", Array As Object ("OTRO","3"))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO NUMERO_NIV(NIVELES, NUMERO) VALUES(?,?)", Array As Object ("Selecciona una opción","0"))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO NUMERO_NIV(NIVELES, NUMERO) VALUES(?,?)", Array As Object ("1","1"))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO NUMERO_NIV(NIVELES, NUMERO) VALUES(?,?)", Array As Object ("2","2"))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO NUMERO_NIV(NIVELES, NUMERO) VALUES(?,?)", Array As Object ("3","3"))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO NUMERO_NIV(NIVELES, NUMERO) VALUES(?,?)", Array As Object ("4","4"))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO NUMERO_NIV(NIVELES, NUMERO) VALUES(?,?)", Array As Object ("5","5"))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO NUMERO_NIV(NIVELES, NUMERO) VALUES(?,?)", Array As Object ("6","6"))
|
||||
End Sub
|
||||
|
||||
Sub B4XPage_Appear
|
||||
reqManager.Initialize(Me, Starter.DBReqServer)
|
||||
d = Starter.skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS, CARGADO FROM CARGADO")
|
||||
d.Position = 0
|
||||
If d.GetString("CUANTOS") > 0 Then
|
||||
If d.GetString("CARGADO") = "1" Then
|
||||
c = Starter.skmt.ExecQuery("SELECT CREDITO, NOMBRE, CALLE, N_EXT, N_INT, ALCALDIA, ESTATUS FROM HIST_DATOS_GENERALES WHERE ESTATUS2 <> 2 order by 1")
|
||||
|
||||
clv_cuentas.Clear
|
||||
For i = 0 To c.RowCount - 1
|
||||
c.Position = i
|
||||
clv_cuentas.Add(CreateListItem(c.GetString("CREDITO"), c.GetString("NOMBRE"), ("CALLE: " & c.GetString("CALLE") &" NO. EXT: "& c.GetString("N_EXT") & CRLF & "No. INT: "& c.GetString("N_INT") &" COL.: "&c.GetString("ALCALDIA")), c.GetString("ESTATUS")),i)
|
||||
Next
|
||||
c.Close
|
||||
End If
|
||||
End If
|
||||
d.Close
|
||||
|
||||
c = Starter.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM HIST_DATOS_GENERALES WHERE ESTATUS2 <> ?",Array As String(2))
|
||||
c.Position = 0
|
||||
Log(c.GetString("CUANTOS"))
|
||||
l_cuentasportrabajar.Text = c.GetString("CUANTOS")
|
||||
c.Close
|
||||
|
||||
c = Starter.skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS FROM HIST_DATOS_GENERALES WHERE ESTATUS2 = 2")
|
||||
c.Position = 0
|
||||
Log(c.GetString("CUANTOS"))
|
||||
l_cuentrastrabajadas.Text = c.GetString("CUANTOS")
|
||||
c.Close
|
||||
|
||||
Label3.Text = "Cuentas"
|
||||
l_cuentasportrabajar.TextColor = Colors.White
|
||||
l_cuentasportrabajar.Color = Colors.Red
|
||||
l_cuentrastrabajadas.TextColor = Colors.Black
|
||||
l_cuentrastrabajadas.Color = Colors.White
|
||||
End Sub
|
||||
|
||||
Sub IME_HeightChanged(NewHeight As Int, OldHeight As Int)
|
||||
paneltop.Top = NewHeight - paneltop.Height
|
||||
Panel4.Height = paneltop.Top - Panel4.Top
|
||||
End Sub
|
||||
|
||||
Private Sub b_carga_Click
|
||||
trabajos = 0
|
||||
|
||||
Dim cmd As DBCommand
|
||||
cmd.Initialize
|
||||
|
||||
|
||||
cmd.Name = "select_datosgenerales_AR"
|
||||
cmd.Parameters = Array As Object(B4XPages.MainPage.user)
|
||||
reqManager.ExecuteQuery(cmd , 0, "datosgenerales")
|
||||
trabajos = trabajos + 1
|
||||
|
||||
cmd.Name = "select_datosfinancieros_AR"
|
||||
cmd.Parameters = Array As Object(B4XPages.MainPage.user)
|
||||
reqManager.ExecuteQuery(cmd , 0, "datosfinancieros")
|
||||
trabajos = trabajos + 1
|
||||
|
||||
cmd.Name = "select_fuentes_AR"
|
||||
cmd.Parameters = Array As Object()
|
||||
reqManager.ExecuteQuery(cmd , 0, "fuente")
|
||||
trabajos = trabajos + 1
|
||||
|
||||
cmd.Name = "select_parentesco_AR"
|
||||
cmd.Parameters = Array As Object()
|
||||
reqManager.ExecuteQuery(cmd , 0, "parentesco")
|
||||
trabajos = trabajos + 1
|
||||
|
||||
cmd.Name = "select_accion_AR"
|
||||
cmd.Parameters = Array As Object()
|
||||
reqManager.ExecuteQuery(cmd , 0, "accion")
|
||||
trabajos = trabajos + 1
|
||||
|
||||
cmd.Name = "select_resultado_MA_AR"
|
||||
cmd.Parameters = Array As Object()
|
||||
reqManager.ExecuteQuery(cmd , 0, "resultado_MA")
|
||||
trabajos = trabajos + 1
|
||||
|
||||
cmd.Name = "select_resultado_VC_AR"
|
||||
cmd.Parameters = Array As Object()
|
||||
reqManager.ExecuteQuery(cmd , 0, "resultado_VC")
|
||||
trabajos = trabajos + 1
|
||||
|
||||
cmd.Name = "select_resultado_CA_AR"
|
||||
cmd.Parameters = Array As Object()
|
||||
reqManager.ExecuteQuery(cmd , 0, "resultado_CA")
|
||||
trabajos = trabajos + 1
|
||||
|
||||
cmd.Name = "select_resultado_BR_AR"
|
||||
cmd.Parameters = Array As Object()
|
||||
reqManager.ExecuteQuery(cmd , 0, "resultado_BR")
|
||||
trabajos = trabajos + 1
|
||||
|
||||
ProgressDialogShow("Cargando")
|
||||
End Sub
|
||||
|
||||
Private Sub l_cuentrastrabajadas_Click
|
||||
|
||||
d = Starter.skmt.ExecQuery("SELECT RESULTADO, FECHA, CREDITO FROM HIST_VISITA WHERE ESTATUS = 2")
|
||||
|
||||
clv_cuentas.Clear
|
||||
For i = 0 To d.RowCount - 1
|
||||
d.Position = i
|
||||
c = Starter.skmt.ExecQuery2("SELECT NOMBRE, CALLE, N_EXT, N_INT, ALCALDIA, ESTATUS FROM HIST_DATOS_GENERALES WHERE CREDITO = ? ",Array As String(d.GetString("CREDITO")))
|
||||
c.Position = 0
|
||||
clv_cuentas.Add(CreateListItem2(d.GetString("CREDITO"), c.GetString("NOMBRE"), ("CALLE: " & c.GetString("CALLE") &" NO. EXT: "& c.GetString("N_EXT") & CRLF & "No. INT: "& c.GetString("N_INT") &" COL.: "&c.GetString("ALCALDIA")), c.GetString("ESTATUS"), d.GetString("FECHA"),d.GetString("RESULTADO")),i)
|
||||
Next
|
||||
d.Close
|
||||
l_cuentasportrabajar.TextColor = Colors.Black
|
||||
l_cuentasportrabajar.Color = Colors.White
|
||||
l_cuentrastrabajadas.TextColor = Colors.White
|
||||
l_cuentrastrabajadas.Color = Colors.Red
|
||||
Label3.Text = "Cuentas gestionadas"
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub l_cuentasportrabajar_Click
|
||||
d = Starter.skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS, CARGADO FROM CARGADO")
|
||||
d.Position = 0
|
||||
If d.GetString("CUANTOS") > 0 Then
|
||||
If d.GetString("CARGADO") = "1" Then
|
||||
c = Starter.skmt.ExecQuery("SELECT CREDITO, NOMBRE, CALLE, N_EXT, N_INT, ALCALDIA, ESTATUS FROM HIST_DATOS_GENERALES WHERE ESTATUS2 <> 2 order by 1")
|
||||
|
||||
clv_cuentas.Clear
|
||||
For i = 0 To c.RowCount - 1
|
||||
c.Position = i
|
||||
clv_cuentas.Add(CreateListItem(c.GetString("CREDITO"), c.GetString("NOMBRE"), ("CALLE: " & c.GetString("CALLE") &" NO. EXT: "& c.GetString("N_EXT") & CRLF & "No. INT: "& c.GetString("N_INT") &" COL.: "&c.GetString("ALCALDIA")), c.GetString("ESTATUS")),i)
|
||||
Next
|
||||
c.Close
|
||||
End If
|
||||
End If
|
||||
d.Close
|
||||
|
||||
Label3.Text = "Cuentas"
|
||||
l_cuentasportrabajar.TextColor = Colors.White
|
||||
l_cuentasportrabajar.Color = Colors.Red
|
||||
l_cuentrastrabajadas.TextColor = Colors.Black
|
||||
l_cuentrastrabajadas.Color = Colors.White
|
||||
End Sub
|
||||
|
||||
Sub CreateListItem2(cred As String, nom As String, call As String, status As String, fechages As String, resulges As String) As Panel
|
||||
Dim p As B4XView = xui.CreatePanel("")
|
||||
' p.SetLayoutAnimated(0, 0, 0, 1, 115)
|
||||
p.LoadLayout("gestionadas")
|
||||
p.Height= 183dip
|
||||
' p.Width = clv_orden.GetBase.Width
|
||||
l_creditoges.Text = cred
|
||||
l_estatusges.Text = status
|
||||
l_nombreges.Text = nom
|
||||
l_direccionges.Text = call
|
||||
l_fechagestion.Text = fechages
|
||||
l_resultadoges.Text = resulges
|
||||
' Log(p.Width)
|
||||
Return p
|
||||
End Sub
|
||||
|
||||
Sub CreateListItem(cred As String, nom As String, call As String, status As String) As Panel
|
||||
Dim p As B4XView = xui.CreatePanel("")
|
||||
' p.SetLayoutAnimated(0, 0, 0, 1, 115)
|
||||
p.LoadLayout("cuenta")
|
||||
p.Height= 112dip
|
||||
' p.Width = clv_orden.GetBase.Width
|
||||
l_credito.Text = cred
|
||||
l_estatus.Text = status
|
||||
l_nombre.Text = nom
|
||||
l_direccion.Text = call
|
||||
' Log(p.Width)
|
||||
Return p
|
||||
End Sub
|
||||
|
||||
Private Sub p_cuenta_Click
|
||||
Log("si lo hice")
|
||||
|
||||
Dim Index As Int = clv_cuentas.GetItemFromView(Sender)
|
||||
Dim pnl As B4XView = clv_cuentas.GetPanel(Index).GetView(0)
|
||||
lb = pnl.GetView(0)
|
||||
Log(lb.Text)
|
||||
|
||||
|
||||
|
||||
B4XPages.ShowPage("datos")
|
||||
End Sub
|
||||
|
||||
Sub JobDone(Job As HttpJob)
|
||||
If Not(Job.Success) Then
|
||||
ToastMessageShow("Error: " & Job.ErrorMessage, True)
|
||||
Else
|
||||
LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green)
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim result As DBResult = reqManager.HandleJob(Job)
|
||||
|
||||
If result.Tag = "datosgenerales" Then 'query tag
|
||||
Starter.skmt.ExecNonQuery("delete from HIST_DATOS_GENERALES2")
|
||||
Starter.skmt.ExecNonQuery("delete from HIST_DATOS_GENERALES WHERE ESTATUS2 <> 2")
|
||||
Starter.skmt.ExecNonQuery("delete from HIST_VISITA WHERE ESTATUS <> 2")
|
||||
Starter.skmt.ExecNonQuery("delete from CARGADO")
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CARGADO(CARGADO) VALUES(?)", Array As Object ("0"))
|
||||
trabajos = trabajos - 1
|
||||
|
||||
Starter.skmt.BeginTransaction
|
||||
|
||||
For Each records() As Object In result.Rows
|
||||
|
||||
Dim credito As String = records(result.Columns.Get("PR_KT_CREDITO"))
|
||||
Dim nombre As String = records(result.Columns.Get("PR_CD_NOMBRE"))
|
||||
Dim rfc As String = records(result.Columns.Get("PR_CD_RFC"))
|
||||
Dim curp As String = records(result.Columns.Get("PR_CD_CURP"))
|
||||
Dim calle As String = records(result.Columns.Get("PR_CD_CALLE"))
|
||||
Dim n_ext As String = records(result.Columns.Get("PR_CD_NUM_EXT"))
|
||||
Dim n_int As String = records(result.Columns.Get("PR_CD_NUM_INT"))
|
||||
Dim alcaldia As String = records(result.Columns.Get("PR_CD_ALCALDIA"))
|
||||
Dim municipio As String = records(result.Columns.Get("PR_CD_MUNICIPIO"))
|
||||
Dim entidad As String = records(result.Columns.Get("PR_CD_ENTIDAD"))
|
||||
Dim cp As String = records(result.Columns.Get("PR_CD_CP"))
|
||||
Dim sexo As String = records(result.Columns.Get("PR_CD_SEXO"))
|
||||
Dim fecha_nacimiento As String = records(result.Columns.Get("PR_CD_FECHA_NAC"))
|
||||
Dim edad As String = records(result.Columns.Get("PR_CD_EDAD"))
|
||||
Dim email As String = records(result.Columns.Get("PR_CD_EMAIL"))
|
||||
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO HIST_DATOS_GENERALES2(CREDITO, NOMBRE, RFC, CURP, CALLE, N_EXT, N_INT, ALCALDIA, MUNICIPIO, ENTIDAD, CP, SEXO, FECHA_NACIMIENTO, EDAD, EMAIL, ESTATUS, ESTATUS2) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (credito, nombre, rfc, curp, calle, n_ext, n_int, alcaldia, municipio, entidad, cp, sexo, fecha_nacimiento, edad, email, "Asignado",0))
|
||||
|
||||
|
||||
c = Starter.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM HIST_DATOS_GENERALES WHERE CREDITO = ?",Array As String(credito))
|
||||
c.Position= 0
|
||||
LogColor(c.GetString("CUANTOS"),Colors.Magenta)
|
||||
If c.GetString("CUANTOS") > 0 Then
|
||||
Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET CREDITO = ?, NOMBRE = ?, RFC = ?, CURP = ?, CALLE = ?, N_EXT = ?, N_INT = ?, ALCALDIA = ?, MUNICIPIO = ?, ENTIDAD = ?, CP = ?, SEXO = ?, FECHA_NACIMIENTO = ?, EDAD = ?, EMAIL = ? WHERE CREDITO = ?",Array As String(credito, nombre, rfc, curp, calle, n_ext, n_int, alcaldia, municipio, entidad, cp, sexo, fecha_nacimiento, edad, email,credito))
|
||||
Else If c.GetString("CUANTOS") = 0 Then
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO HIST_DATOS_GENERALES(CREDITO, NOMBRE, RFC, CURP, CALLE, N_EXT, N_INT, ALCALDIA, MUNICIPIO, ENTIDAD, CP, SEXO, FECHA_NACIMIENTO, EDAD, EMAIL, ESTATUS, ESTATUS2) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",Array As String(credito, nombre, rfc, curp, calle, n_ext, n_int, alcaldia, municipio, entidad, cp, sexo, fecha_nacimiento, edad, email, "Asignado",0))
|
||||
End If
|
||||
c.Close
|
||||
|
||||
Next
|
||||
|
||||
Starter.skmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!!
|
||||
Starter.skmt.EndTransaction
|
||||
|
||||
c = Starter.skmt.ExecQuery("SELECT CREDITO, NOMBRE, CALLE, N_EXT, N_INT, ALCALDIA, ESTATUS FROM HIST_DATOS_GENERALES WHERE ESTATUS2 <> 2 order by 1")
|
||||
|
||||
clv_cuentas.Clear
|
||||
For i = 0 To c.RowCount - 1
|
||||
c.Position = i
|
||||
clv_cuentas.Add(CreateListItem(c.GetString("CREDITO"), c.GetString("NOMBRE"), ("CALLE: " & c.GetString("CALLE") &" NO. EXT: "& c.GetString("N_EXT") & CRLF & "No. INT: "& c.GetString("N_INT") &" COL.: "&c.GetString("ALCALDIA")), c.GetString("ESTATUS")),i)
|
||||
Next
|
||||
c.Close
|
||||
|
||||
c = Starter.skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS FROM HIST_DATOS_GENERALES WHERE ESTATUS2 <> 2")
|
||||
c.Position = 0
|
||||
Log(c.GetString("CUANTOS"))
|
||||
l_cuentasportrabajar.Text = c.GetString("CUANTOS")
|
||||
c.Close
|
||||
|
||||
c = Starter.skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS FROM HIST_DATOS_GENERALES WHERE ESTATUS2 = 2")
|
||||
c.Position = 0
|
||||
Log(c.GetString("CUANTOS"))
|
||||
l_cuentrastrabajadas.Text = c.GetString("CUANTOS")
|
||||
c.Close
|
||||
|
||||
Label3.Text = "Cuentas"
|
||||
l_cuentasportrabajar.TextColor = Colors.White
|
||||
l_cuentasportrabajar.Color = Colors.Red
|
||||
l_cuentrastrabajadas.TextColor = Colors.Black
|
||||
l_cuentrastrabajadas.Color = Colors.White
|
||||
|
||||
End If
|
||||
|
||||
If result.Tag = "datosfinancieros" Then 'query tag
|
||||
Starter.skmt.ExecNonQuery("delete from HIST_FINANCIEROS2")
|
||||
Starter.skmt.ExecNonQuery("delete from HIST_FINANCIEROS WHERE ESTATUS2 <> 2")
|
||||
trabajos = trabajos - 1
|
||||
|
||||
For Each records() As Object In result.Rows
|
||||
|
||||
Dim creditof As String = records(result.Columns.Get("PR_KT_CREDITO"))
|
||||
Dim CARTERA As String = records(result.Columns.Get("PR_KT_PRODUCTO"))
|
||||
Dim AGENCIA As String = records(result.Columns.Get("PR_KT_AGENCIA"))
|
||||
Dim SALDO_TOTAL As String = records(result.Columns.Get("PR_CF_SALDO_TOTAL"))
|
||||
Dim MONTO_PAGAR As String = records(result.Columns.Get("PR_CF_LIQUIDACION"))
|
||||
Dim TOTAL_PAGO_DESC As String = records(result.Columns.Get("PR_CF_TOTAL_A_PAGAR_DESC"))
|
||||
Dim LIQUIDACION As String = records(result.Columns.Get("PR_CF_LIQUIDACION"))
|
||||
Dim DIAS_VENCIDOS As String = records(result.Columns.Get("PR_CA_DIAS_VENCIDOS"))
|
||||
Dim DIAS_ATRASO_ACT As String = records(result.Columns.Get("PR_CA_DIAS_ATRASO_ACT"))
|
||||
Dim FECHA_ATRASO As String = records(result.Columns.Get("PR_CA_FECHA_ATRASO"))
|
||||
Dim BBVA As String = records(result.Columns.Get("PR_CA_REFERENCIA1"))
|
||||
Dim OXXO As String = records(result.Columns.Get("PR_CA_REFERENCIA2"))
|
||||
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO HIST_FINANCIEROS2(CREDITO, CARTERA, AGENCIA, SALDO_TOTAL, MONTO_PAGAR, TOTAL_PAGO_DESC, LIQUIDACION, DIAS_VENCIDOS, DIAS_ATRASO_ACT, FECHA_ATRASO, BBVA, OXXO, ESTATUS, ESTATUS2) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (creditof, CARTERA, AGENCIA, SALDO_TOTAL, MONTO_PAGAR, TOTAL_PAGO_DESC, LIQUIDACION, DIAS_VENCIDOS, DIAS_ATRASO_ACT, FECHA_ATRASO, BBVA, OXXO,"Asignado",0))
|
||||
|
||||
c = Starter.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM HIST_FINANCIEROS WHERE CREDITO = ?",Array As String(creditof))
|
||||
c.Position = 0
|
||||
LogColor(c.GetString("CUANTOS"),Colors.Red)
|
||||
If c.GetString("CUANTOS") > 0 Then
|
||||
Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET CREDITO = ?, CARTERA = ?, AGENCIA = ?, SALDO_TOTAL = ?, MONTO_PAGAR = ?, TOTAL_PAGO_DESC = ?, LIQUIDACION = ?, DIAS_VENCIDOS = ?, DIAS_ATRASO_ACT = ?, FECHA_ATRASO = ?, BBVA = ?, OXXO = ? WHERE CREDITO = ?",Array As String(creditof, CARTERA, AGENCIA, SALDO_TOTAL, MONTO_PAGAR, TOTAL_PAGO_DESC, LIQUIDACION, DIAS_VENCIDOS, DIAS_ATRASO_ACT, FECHA_ATRASO, BBVA, OXXO, creditof))
|
||||
Else If c.GetString("CUANTOS") = 0 Then
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO HIST_FINANCIEROS(CREDITO, CARTERA, AGENCIA, SALDO_TOTAL, MONTO_PAGAR, TOTAL_PAGO_DESC, LIQUIDACION, DIAS_VENCIDOS, DIAS_ATRASO_ACT, FECHA_ATRASO, BBVA, OXXO, ESTATUS, ESTATUS2) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?)",Array As String(creditof, CARTERA, AGENCIA, SALDO_TOTAL, MONTO_PAGAR, TOTAL_PAGO_DESC, LIQUIDACION, DIAS_VENCIDOS, DIAS_ATRASO_ACT, FECHA_ATRASO, BBVA, OXXO, "Asignado",0))
|
||||
End If
|
||||
c.Close
|
||||
Next
|
||||
|
||||
End If
|
||||
|
||||
If result.Tag = "fuente" Then 'query tag
|
||||
Starter.skmt.ExecNonQuery("delete from CAT_FUENTE")
|
||||
trabajos = trabajos - 1
|
||||
Dim num As Int = 0
|
||||
Dim num2 As Int = 1
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_FUENTE(FUENTE, NUMERO, NUME) VALUES (?,?,?)", Array As Object("Selecciona una opción",num, num2))
|
||||
For Each records() As Object In result.Rows
|
||||
|
||||
Dim FUENTE As String = records(result.Columns.Get("CAT_FU_FUENTE"))
|
||||
num = num + 1
|
||||
num2 = num2 +1
|
||||
Dim numero As Int = num
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_FUENTE(FUENTE, NUMERO, NUME) VALUES (?,?,?)", Array As Object(FUENTE,numero,num2))
|
||||
|
||||
Next
|
||||
|
||||
End If
|
||||
|
||||
If result.Tag = "parentesco" Then 'query tag
|
||||
Starter.skmt.ExecNonQuery("delete from CAT_PARENTESCO")
|
||||
trabajos = trabajos - 1
|
||||
Dim num As Int = 0
|
||||
Dim num2 As Int = 1
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_PARENTESCO (PARENTESCO, NUMERO, NUME) VALUES (?,?,?)", Array As Object("Selecciona una opción",num, num2))
|
||||
For Each records() As Object In result.Rows
|
||||
Dim PARENTESCO As String = records(result.Columns.Get("CAT_PA_PARENTESCO"))
|
||||
num = num + 1
|
||||
num2 = num2 +1
|
||||
Dim numero As Int = num
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_PARENTESCO (PARENTESCO, NUMERO, NUME) VALUES (?,?,?)", Array As Object(PARENTESCO,numero,num2))
|
||||
|
||||
Next
|
||||
|
||||
End If
|
||||
|
||||
If result.Tag = "accion" Then 'query tag
|
||||
Starter.skmt.ExecNonQuery("delete from CAT_ACCION")
|
||||
trabajos = trabajos - 1
|
||||
Dim num As Int = 0
|
||||
Dim num2 As Int = 1
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_ACCION(CO_ACCION, CO_ACDESCRIPCION, NUMERO, NUME) VALUES (?,?,?,?)", Array As Object("SO", "Selecciona una opción",num,num2))
|
||||
For Each records() As Object In result.Rows
|
||||
Dim CO_ACCION As String = records(result.Columns.Get("CAT_CO_ACCION"))
|
||||
Dim CO_ACDESCRIPCION As String = records(result.Columns.Get("CAT_CO_ADESCRIPCION"))
|
||||
num = num + 1
|
||||
num2 = num2 +1
|
||||
Dim numero As Int = num
|
||||
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_ACCION(CO_ACCION, CO_ACDESCRIPCION, NUMERO,NUME) VALUES (?,?,?,?)", Array As Object(CO_ACCION, CO_ACDESCRIPCION,numero,num2))
|
||||
|
||||
Next
|
||||
|
||||
End If
|
||||
|
||||
If result.Tag = "resultado_MA" Then 'query tag
|
||||
Starter.skmt.ExecNonQuery("delete from CAT_RESULTADO_MA")
|
||||
trabajos = trabajos - 1
|
||||
Dim num As Int = 0
|
||||
Dim num2 As Int = 1
|
||||
Dim num2 As Int = 1
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_RESULTADO_MA(CAT_CO_ACCION, CO_RESULTADO, CO_RDESCRIPCION, NUMERO, NUME) VALUES (?,?,?,?,?)", Array As Object("MA","SO", "Selecciona una opción",num,num2))
|
||||
For Each records() As Object In result.Rows
|
||||
Dim CAT_CO_ACCION As String = records(result.Columns.Get("CAT_CO_ACCION"))
|
||||
Dim CO_RESULTADO As String = records(result.Columns.Get("CAT_CO_RESULTADO"))
|
||||
Dim CO_RDESCRIPCION As String = records(result.Columns.Get("CAT_CO_RDESCRIPCION"))
|
||||
num = num + 1
|
||||
num2 = num2 +1
|
||||
Dim numero As Int = num
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_RESULTADO_MA(CAT_CO_ACCION, CO_RESULTADO, CO_RDESCRIPCION, NUMERO, NUME) VALUES (?,?,?,?,?)", Array As Object(CAT_CO_ACCION, CO_RESULTADO, CO_RDESCRIPCION,numero,num2))
|
||||
Next
|
||||
|
||||
End If
|
||||
|
||||
If result.Tag = "resultado_VC" Then 'query tag
|
||||
Starter.skmt.ExecNonQuery("delete from CAT_RESULTADO_VC")
|
||||
trabajos = trabajos - 1
|
||||
Dim num As Int = 0
|
||||
Dim num2 As Int = 1
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_RESULTADO_VC(CAT_CO_ACCION, CO_RESULTADO, CO_RDESCRIPCION, NUMERO, NUME) VALUES (?,?,?,?,?)", Array As Object("VC","SO", "Selecciona una opción",num,num2))
|
||||
For Each records() As Object In result.Rows
|
||||
Dim CAT_CO_ACCION As String = records(result.Columns.Get("CAT_CO_ACCION"))
|
||||
Dim CO_RESULTADO As String = records(result.Columns.Get("CAT_CO_RESULTADO"))
|
||||
Dim CO_RDESCRIPCION As String = records(result.Columns.Get("CAT_CO_RDESCRIPCION"))
|
||||
num = num + 1
|
||||
num2 = num2 +1
|
||||
Dim numero As Int = num
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_RESULTADO_VC(CAT_CO_ACCION, CO_RESULTADO, CO_RDESCRIPCION, NUMERO, NUME) VALUES (?,?,?,?,?)", Array As Object(CAT_CO_ACCION, CO_RESULTADO, CO_RDESCRIPCION,numero,num2))
|
||||
Next
|
||||
|
||||
End If
|
||||
|
||||
If result.Tag = "resultado_CA" Then 'query tag
|
||||
Starter.skmt.ExecNonQuery("delete from CAT_RESULTADO_CA")
|
||||
trabajos = trabajos - 1
|
||||
Dim num As Int = 0
|
||||
Dim num2 As Int = 1
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_RESULTADO_CA(CAT_CO_ACCION, CO_RESULTADO, CO_RDESCRIPCION, NUMERO, NUME) VALUES (?,?,?,?,?)", Array As Object("CA","SO", "Selecciona una opción",num,num2))
|
||||
For Each records() As Object In result.Rows
|
||||
Dim CAT_CO_ACCION As String = records(result.Columns.Get("CAT_CO_ACCION"))
|
||||
Dim CO_RESULTADO As String = records(result.Columns.Get("CAT_CO_RESULTADO"))
|
||||
Dim CO_RDESCRIPCION As String = records(result.Columns.Get("CAT_CO_RDESCRIPCION"))
|
||||
num = num + 1
|
||||
num2 = num2 +1
|
||||
Dim numero As Int = num
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_RESULTADO_CA(CAT_CO_ACCION, CO_RESULTADO, CO_RDESCRIPCION, NUMERO, NUME) VALUES (?,?,?,?,?)", Array As Object(CAT_CO_ACCION, CO_RESULTADO, CO_RDESCRIPCION,numero,num2))
|
||||
Next
|
||||
|
||||
End If
|
||||
|
||||
If result.Tag = "resultado_BR" Then 'query tag
|
||||
Starter.skmt.ExecNonQuery("delete from CAT_RESULTADO_BR")
|
||||
trabajos = trabajos - 1
|
||||
Dim num As Int = 0
|
||||
Dim num2 As Int = 1
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_RESULTADO_BR(CAT_CO_ACCION, CO_RESULTADO, CO_RDESCRIPCION, NUMERO, NUME) VALUES (?,?,?,?,?)", Array As Object("BR","SO", "Selecciona una opción",num,num2))
|
||||
For Each records() As Object In result.Rows
|
||||
Dim CAT_CO_ACCION As String = records(result.Columns.Get("CAT_CO_ACCION"))
|
||||
Dim CO_RESULTADO As String = records(result.Columns.Get("CAT_CO_RESULTADO"))
|
||||
Dim CO_RDESCRIPCION As String = records(result.Columns.Get("CAT_CO_RDESCRIPCION"))
|
||||
num = num + 1
|
||||
num2 = num2 +1
|
||||
Dim numero As Int = num
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_RESULTADO_BR(CAT_CO_ACCION, CO_RESULTADO, CO_RDESCRIPCION, NUMERO, NUME) VALUES (?,?,?,?,?)", Array As Object(CAT_CO_ACCION, CO_RESULTADO, CO_RDESCRIPCION,numero,num2))
|
||||
Next
|
||||
|
||||
End If
|
||||
|
||||
End If
|
||||
|
||||
Log(trabajos)
|
||||
If trabajos = 0 Then
|
||||
Starter.skmt.ExecNonQuery2("UPDATE CARGADO SET CARGADO = ?",Array As String("1"))
|
||||
ProgressDialogHide
|
||||
End If
|
||||
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub b_enviar_Click
|
||||
Dim cmd As DBCommand
|
||||
Dim foto1() As Byte
|
||||
Dim foto2() As Byte
|
||||
Dim foto3() As Byte
|
||||
Dim foto4() As Byte
|
||||
Dim Dirp As String = File.DirRootExternal
|
||||
Dim Dir As String
|
||||
Dim Dir2 As String
|
||||
Dir = "/Arestrategicas"
|
||||
Dir2 = "/reduccion"
|
||||
|
||||
c = Starter.skmt.ExecQuery("SELECT * FROM HIST_VISITA WHERE ESTATUS = 2 AND ENVIADO <> 1")
|
||||
Log(c.RowCount)
|
||||
|
||||
For i = 0 To c.RowCount - 1
|
||||
c.Position = i
|
||||
foto1 = Bit.InputStreamToBytes(File.OpenInput(Dirp&Dir&Dir2,c.GetString("FOTOUNO")))
|
||||
foto2 = Bit.InputStreamToBytes(File.OpenInput(Dirp&Dir&Dir2,c.GetString("FOTODOS")))
|
||||
foto3 = Bit.InputStreamToBytes(File.OpenInput(Dirp&Dir&Dir2,c.GetString("FOTOTRES")))
|
||||
foto4 = Bit.InputStreamToBytes(File.OpenInput(Dirp&Dir&Dir2,c.GetString("FOTOCUATRO")))
|
||||
|
||||
cmd.Initialize
|
||||
cmd.Name = "insert_gestion_AR"
|
||||
cmd.Parameters = Array As Object(c.GetString("CREDITO"), c.GetString("PRODUCTO"), c.GetString("VISITADOR"), c.GetString("RESULTADO"), c.GetString("CODIGO_RES"), c.GetString("PARENTESCO"), c.GetString("COMENTARIOS"), c.GetString("FECHA"), c.GetString("LONGITUD"), c.GetString("LATUTUD"), c.GetString("FECHACAPTURA"), c.GetString("AGENCIA"), c.GetString("FECHA_PROMESA"), c.GetString("MONTO_PROMESA"), c.GetString("TIPO_DOMICILIO"), c.GetString("NIVEL_SOCIO"), c.GetString("CARACTERISTICAS"), c.GetString("NIVELES"), foto1, foto2, foto3, foto4, c.GetString("NOMBRE_ATIENDE"), c.GetString("CODIGO_ACCION"), c.GetString("ACCION"), c.GetString("DIAS_ACCION"), c.GetString("PUNTOS_REF"))
|
||||
B4XPages.MainPage.reqManager.ExecuteCommand(cmd, "insert_gestion_AREstrategicas")
|
||||
Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ENVIADO = ? WHERE CREDITO = ?", Array As String("1",c.GetString("CREDITO")))
|
||||
Next
|
||||
MsgboxAsync("Datos enviados.","")
|
||||
c.Close
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
Private Sub et_findia_EnterPressed
|
||||
Dim res As String
|
||||
If et_findia.Text = "FIN DIA" Then
|
||||
res = Msgbox2("Seguro que desea hacer el cierre? ... todos los datos se borraran","Cierre", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore
|
||||
If res = DialogResponse.POSITIVE Then
|
||||
Starter.skmt.ExecNonQuery("delete from HIST_DATOS_GENERALES")
|
||||
Starter.skmt.ExecNonQuery("delete from HIST_FINANCIEROS")
|
||||
Starter.skmt.ExecNonQuery("delete from HIST_DATOS_GENERALES2")
|
||||
Starter.skmt.ExecNonQuery("delete from HIST_FINANCIEROS2")
|
||||
Starter.skmt.ExecNonQuery("delete from HIST_VISITA")
|
||||
Starter.skmt.ExecNonQuery("delete from CHECADO")
|
||||
Starter.skmt.ExecNonQuery("delete from CARGADO")
|
||||
clv_cuentas.Clear
|
||||
l_cuentasportrabajar.Text = "0"
|
||||
l_cuentrastrabajadas.Text = "0"
|
||||
et_findia.Text = ""
|
||||
End If
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub et_busqueda_TextChanged (Old As String, New As String)
|
||||
Dim BUSCA As String
|
||||
BUSCA = "%" & et_busqueda.Text & "%"
|
||||
If et_busqueda.Text.Length = 0 Then
|
||||
c = Starter.skmt.ExecQuery("SELECT CREDITO, NOMBRE, CALLE, N_EXT, N_INT, ALCALDIA, ESTATUS FROM HIST_DATOS_GENERALES WHERE ESTATUS2 <> 2 order by 1")
|
||||
|
||||
clv_cuentas.Clear
|
||||
For i = 0 To c.RowCount - 1
|
||||
c.Position = i
|
||||
clv_cuentas.Add(CreateListItem(c.GetString("CREDITO"), c.GetString("NOMBRE"), ("CALLE: " & c.GetString("CALLE") &" NO. EXT: "& c.GetString("N_EXT") & CRLF & "No. INT: "& c.GetString("N_INT") &" COL.: "&c.GetString("ALCALDIA")), c.GetString("ESTATUS")),i)
|
||||
Next
|
||||
c.Close
|
||||
Else If et_busqueda.Text.Length > 0 Then
|
||||
c = Starter.skmt.ExecQuery2("SELECT CREDITO, NOMBRE, CALLE, N_EXT, N_INT, ALCALDIA, ESTATUS FROM HIST_DATOS_GENERALES WHERE NOMBRE LIKE ? OR CREDITO LIKE ? ",Array As String(BUSCA, BUSCA))
|
||||
|
||||
clv_cuentas.Clear
|
||||
For i = 0 To c.RowCount - 1
|
||||
c.Position = i
|
||||
clv_cuentas.Add(CreateListItem(c.GetString("CREDITO"), c.GetString("NOMBRE"), ("CALLE: " & c.GetString("CALLE") &" NO. EXT: "& c.GetString("N_EXT") & CRLF & "No. INT: "& c.GetString("N_INT") &" COL.: "&c.GetString("ALCALDIA")), c.GetString("ESTATUS")),i)
|
||||
Next
|
||||
c.Close
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub B4XPage_CloseRequest As ResumableSub
|
||||
|
||||
|
||||
B4XPages.ShowPage("Mainpage")
|
||||
|
||||
' Return True
|
||||
Return False
|
||||
End Sub
|
||||
399
B4A/CameraExClass2.bas
Normal file
@@ -0,0 +1,399 @@
|
||||
B4A=true
|
||||
Group=Default Group
|
||||
ModulesStructureVersion=1
|
||||
Type=Class
|
||||
Version=6
|
||||
@EndOfDesignText@
|
||||
'Class module
|
||||
'version 1.30
|
||||
'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
|
||||
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
|
||||
Log("findCamera")
|
||||
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)
|
||||
Log(r.target)
|
||||
Log(numberOfCameras)
|
||||
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
|
||||
Log("facing: " & r.GetField("facing") & ", " & cameraValue)
|
||||
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
|
||||
'Uncomment this sub if you need to handle the Preview event
|
||||
'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 GetSupportedPreviewSizes As CameraSize()
|
||||
r.target = parameters
|
||||
Dim list1 As List = r.RunMethod("getSupportedPreviewSizes")
|
||||
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 SetPreviewSize(Width As Int, Height As Int)
|
||||
r.target = parameters
|
||||
r.RunMethod3("setPreviewSize", Width, "java.lang.int", Height, "java.lang.int")
|
||||
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
|
||||
|
||||
'Returns a list with the supported preview fps. Each item in the list is an array of two ints (minimum value and maximum value).
|
||||
Public Sub GetSupportedPreviewFpsRange As List
|
||||
r.target = parameters
|
||||
Return r.RunMethod("getSupportedPreviewFpsRange")
|
||||
End Sub
|
||||
'Returns the current preview fps range.
|
||||
'Range is a two elements array. The minimum value and maximum value will be stored in this array.
|
||||
Public Sub GetPreviewFpsRange(Range() As Int)
|
||||
r.target = parameters
|
||||
r.RunMethod4("getPreviewFpsRange", Array As Object(Range), Array As String("[I"))
|
||||
End Sub
|
||||
|
||||
Public Sub SetPreviewFpsRange(MinValue As Int, MaxValue As Int)
|
||||
r.target = parameters
|
||||
r.RunMethod4("setPreviewFpsRange", Array As Object(MinValue, MaxValue), _
|
||||
Array As String("java.lang.int", "java.lang.int"))
|
||||
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
|
||||
|
||||
Public Sub GetSupportedPictureFormats As List
|
||||
r.target = parameters
|
||||
Return r.RunMethod("getSupportedPictureFormats")
|
||||
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
|
||||
|
||||
Public Sub IsZoomSupported As Boolean
|
||||
r.target = parameters
|
||||
Return r.RunMethod("isZoomSupported")
|
||||
End Sub
|
||||
|
||||
Public Sub GetMaxZoom As Int
|
||||
r.target = parameters
|
||||
Return r.RunMethod("getMaxZoom")
|
||||
End Sub
|
||||
|
||||
Public Sub getZoom() As Int
|
||||
r.target = parameters
|
||||
Return r.RunMethod("getZoom")
|
||||
End Sub
|
||||
|
||||
Public Sub setZoom(ZoomValue As Int)
|
||||
r.target = parameters
|
||||
r.RunMethod2("setZoom", ZoomValue, "java.lang.int")
|
||||
End Sub
|
||||
|
||||
Public Sub getExposureCompensation As Int
|
||||
r.target = parameters
|
||||
Return r.RunMethod("getExposureCompensation")
|
||||
End Sub
|
||||
|
||||
Public Sub setExposureCompensation(v As Int)
|
||||
r.target = parameters
|
||||
r.RunMethod2("setExposureCompensation", v, "java.lang.int")
|
||||
End Sub
|
||||
|
||||
Public Sub getMinExposureCompensation As Int
|
||||
r.target = parameters
|
||||
Return r.RunMethod("getMinExposureCompensation")
|
||||
End Sub
|
||||
|
||||
Public Sub getMaxExposureCompensation As Int
|
||||
r.target = parameters
|
||||
Return r.RunMethod("getMaxExposureCompensation")
|
||||
End Sub
|
||||
|
||||
Public Sub SetFaceDetectionListener
|
||||
Dim jo As JavaObject = nativeCam
|
||||
Dim e As Object = jo.CreateEvent("android.hardware.Camera.FaceDetectionListener", "FaceDetection", Null)
|
||||
jo.RunMethod("setFaceDetectionListener", Array(e))
|
||||
End Sub
|
||||
|
||||
Private Sub FaceDetection_Event (MethodName As String, Args() As Object) As Object
|
||||
Dim faces() As Object = Args(0)
|
||||
For Each f As Object In faces
|
||||
Dim jo As JavaObject = f
|
||||
Dim faceRect As Rect = jo.GetField("rect")
|
||||
Log(faceRect)
|
||||
Next
|
||||
Return Null
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
Public Sub StartFaceDetection
|
||||
Dim jo As JavaObject = nativeCam
|
||||
jo.RunMethod("startFaceDetection", Null)
|
||||
End Sub
|
||||
|
||||
Public Sub StopFaceDetection
|
||||
Dim jo As JavaObject = nativeCam
|
||||
jo.RunMethod("stopFaceDetection", Null)
|
||||
End Sub
|
||||
|
||||
272
B4A/DBRequestManager.bas
Normal file
@@ -0,0 +1,272 @@
|
||||
B4A=true
|
||||
Group=Default Group
|
||||
ModulesStructureVersion=1
|
||||
Type=Class
|
||||
Version=6.8
|
||||
@EndOfDesignText@
|
||||
''Class module
|
||||
|
||||
'' Requiere accesRandom File y requiere compressStrings, byte converter y okhhtputuils2
|
||||
Sub Class_Globals
|
||||
Private mTarget As Object
|
||||
Type DBResult (Tag As Object, Columns As Map, Rows As List)
|
||||
Type DBCommand (Name As String, Parameters() As Object)
|
||||
Private link As String
|
||||
Private bc As ByteConverter
|
||||
Private T_NULL = 0, T_STRING = 1, T_SHORT = 2, T_INT = 3, T_LONG = 4, T_FLOAT = 5 _
|
||||
,T_DOUBLE = 6, T_BOOLEAN = 7, T_BLOB = 8 As Byte
|
||||
Private VERSION As Float = 0.9
|
||||
Private tempArray(1) As Object
|
||||
Dim jobTagAnterior As String = "" 'Mod por CHV - 211109
|
||||
End Sub
|
||||
|
||||
'Target - The module that handles JobDone (usually Me).
|
||||
'ConnectorLink - URL of the Java server.
|
||||
Public Sub Initialize (Target As Object, ConnectorLink As String)
|
||||
mTarget = Target
|
||||
link = ConnectorLink
|
||||
End Sub
|
||||
|
||||
'Sends a query request.
|
||||
'Command - Query name and parameters.
|
||||
'Limit - Maximum rows to return or 0 for no limit.
|
||||
'Tag - An object that will be returned in the result.
|
||||
Public Sub ExecuteQuery(Command As DBCommand, Limit As Int, Tag As Object)
|
||||
Dim j As HttpJob
|
||||
Dim ms As OutputStream
|
||||
Dim out2 As OutputStream = StartJob(j,ms, Tag)
|
||||
|
||||
WriteObject(Command.Name, out2)
|
||||
WriteInt(Limit, out2)
|
||||
WriteList(Command.Parameters, out2)
|
||||
out2.Close
|
||||
j.PostBytes(link & "?method=query", ms.ToBytesArray)
|
||||
End Sub
|
||||
|
||||
'Executes a batch of (non-select) commands.
|
||||
'ListOfCommands - List of the commands that will be executes.
|
||||
'Tag - An object that will be returned in the result.
|
||||
Public Sub ExecuteBatch(ListOfCommands As List, Tag As Object)
|
||||
Dim j As HttpJob
|
||||
Dim ms As OutputStream
|
||||
Dim out2 As OutputStream = StartJob(j,ms, Tag)
|
||||
WriteInt(ListOfCommands.Size, out2)
|
||||
For Each Command As DBCommand In ListOfCommands
|
||||
WriteObject(Command.Name, out2)
|
||||
WriteList(Command.Parameters, out2)
|
||||
Next
|
||||
out2.Close
|
||||
j.PostBytes(link & "?method=batch", ms.ToBytesArray)
|
||||
End Sub
|
||||
|
||||
'Similar to ExecuteBatch. Sends a single command.
|
||||
Public Sub ExecuteCommand(Command As DBCommand, Tag As Object)
|
||||
ExecuteBatch(Array As DBCommand(Command), Tag)
|
||||
End Sub
|
||||
|
||||
Private Sub StartJob(j As HttpJob, MemoryStream As OutputStream, Tag As Object) As OutputStream
|
||||
j.Initialize("DBRequest", mTarget)
|
||||
j.Tag = Tag
|
||||
MemoryStream.InitializeToBytesArray(0)
|
||||
Dim compress As CompressedStreams
|
||||
Dim out As OutputStream = compress.WrapOutputStream(MemoryStream, "gzip")
|
||||
WriteObject(VERSION, out)
|
||||
Return out
|
||||
End Sub
|
||||
|
||||
Private Sub WriteList(Parameters As List, out As OutputStream)
|
||||
Dim data() As Byte
|
||||
If Parameters = Null Or Parameters.IsInitialized = False Then
|
||||
Dim Parameters As List
|
||||
Parameters.Initialize
|
||||
End If
|
||||
data = bc.IntsToBytes(Array As Int(Parameters.Size))
|
||||
out.WriteBytes(data, 0, data.Length)
|
||||
For Each o As Object In Parameters
|
||||
WriteObject(o, out)
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Private Sub WriteObject(o As Object, out As OutputStream)
|
||||
Dim data() As Byte
|
||||
tempArray(0) = o
|
||||
If tempArray(0) = Null Then
|
||||
out.WriteBytes(Array As Byte(T_NULL), 0, 1)
|
||||
Else If tempArray(0) Is Short Then
|
||||
out.WriteBytes(Array As Byte(T_SHORT), 0, 1)
|
||||
data = bc.ShortsToBytes(Array As Short(o))
|
||||
Else If tempArray(0) Is Int Then
|
||||
out.WriteBytes(Array As Byte(T_INT), 0, 1)
|
||||
data = bc.IntsToBytes(Array As Int(o))
|
||||
Else If tempArray(0) Is Float Then
|
||||
out.WriteBytes(Array As Byte(T_FLOAT), 0, 1)
|
||||
data = bc.FloatsToBytes(Array As Float(o))
|
||||
Else If tempArray(0) Is Double Then
|
||||
out.WriteBytes(Array As Byte(T_DOUBLE), 0, 1)
|
||||
data = bc.DoublesToBytes(Array As Double(o))
|
||||
Else If tempArray(0) Is Long Then
|
||||
out.WriteBytes(Array As Byte(T_LONG), 0, 1)
|
||||
data = bc.LongsToBytes(Array As Long(o))
|
||||
Else If tempArray(0) Is Boolean Then
|
||||
out.WriteBytes(Array As Byte(T_BOOLEAN), 0, 1)
|
||||
Dim b As Boolean = 0
|
||||
Dim data(1) As Byte
|
||||
If b Then data(0) = 1 Else data(0) = 0
|
||||
Else If GetType(tempArray(0)) = "[B" Then
|
||||
data = o
|
||||
out.WriteBytes(Array As Byte(T_BLOB), 0, 1)
|
||||
WriteInt(data.Length, out)
|
||||
Else 'If o Is String Then (treat all other values as string)
|
||||
out.WriteBytes(Array As Byte(T_STRING), 0, 1)
|
||||
data = bc.StringToBytes(o, "UTF8")
|
||||
WriteInt(data.Length, out)
|
||||
End If
|
||||
If data.Length > 0 Then out.WriteBytes(data, 0, data.Length)
|
||||
End Sub
|
||||
|
||||
Private Sub ReadObject(In As InputStream) As Object
|
||||
Dim data(1) As Byte
|
||||
In.ReadBytes(data, 0, 1)
|
||||
Select data(0)
|
||||
Case T_NULL
|
||||
Return Null
|
||||
Case T_SHORT
|
||||
Dim data(2) As Byte
|
||||
Return bc.ShortsFromBytes(ReadBytesFully(In, data, data.Length))(0)
|
||||
Case T_INT
|
||||
Dim data(4) As Byte
|
||||
Return bc.IntsFromBytes(ReadBytesFully(In, data, data.Length))(0)
|
||||
Case T_LONG
|
||||
Dim data(8) As Byte
|
||||
Return bc.LongsFromBytes(ReadBytesFully(In, data, data.Length))(0)
|
||||
Case T_FLOAT
|
||||
Dim data(4) As Byte
|
||||
Return bc.FloatsFromBytes(ReadBytesFully(In, data, data.Length))(0)
|
||||
Case T_DOUBLE
|
||||
Dim data(8) As Byte
|
||||
Return bc.DoublesFromBytes(ReadBytesFully(In, data, data.Length))(0)
|
||||
Case T_BOOLEAN
|
||||
Dim b As Byte = ReadByte(In)
|
||||
Return b = 1
|
||||
Case T_BLOB
|
||||
Dim len As Int = ReadInt(In)
|
||||
Dim data(len) As Byte
|
||||
Return ReadBytesFully(In, data, data.Length)
|
||||
Case Else
|
||||
Dim len As Int = ReadInt(In)
|
||||
Dim data(len) As Byte
|
||||
ReadBytesFully(In, data, data.Length)
|
||||
Return BytesToString(data, 0, data.Length, "UTF8")
|
||||
End Select
|
||||
End Sub
|
||||
|
||||
Private Sub ReadBytesFully(In As InputStream, Data() As Byte, Len As Int) As Byte()
|
||||
Dim count = 0, read As Int
|
||||
Do While count < Len And read > -1
|
||||
read = In.ReadBytes(Data, count, Len - count)
|
||||
count = count + read
|
||||
Loop
|
||||
Return Data
|
||||
End Sub
|
||||
|
||||
Private Sub WriteInt(i As Int, out As OutputStream)
|
||||
Dim data() As Byte
|
||||
data = bc.IntsToBytes(Array As Int(i))
|
||||
out.WriteBytes(data, 0, data.Length)
|
||||
End Sub
|
||||
|
||||
Private Sub ReadInt(In As InputStream) As Int
|
||||
Dim data(4) As Byte
|
||||
Return bc.IntsFromBytes(ReadBytesFully(In, data, data.Length))(0)
|
||||
End Sub
|
||||
|
||||
Private Sub ReadByte(In As InputStream) As Byte
|
||||
Dim data(1) As Byte
|
||||
In.ReadBytes(data, 0, 1)
|
||||
Return data(0)
|
||||
End Sub
|
||||
|
||||
'Handles the Job result and returns a DBResult.
|
||||
Public Sub HandleJob(Job As HttpJob) As DBResult
|
||||
Dim start As Long = DateTime.Now 'ignore
|
||||
Dim In As InputStream = Job.GetInputStream
|
||||
Dim cs As CompressedStreams
|
||||
In = cs.WrapInputStream(In, "gzip")
|
||||
Dim serverVersion As Float = ReadObject(In) 'ignore
|
||||
Dim method As String = ReadObject(In)
|
||||
Dim table As DBResult
|
||||
table.Initialize
|
||||
table.Columns.Initialize
|
||||
table.rows.Initialize
|
||||
table.Tag = Job.Tag
|
||||
If jobTagAnterior <> Job.Tag Then LogColor("HandleJob: '"&Job.Tag&"'", Colors.Blue) 'Mod por CHV - 211109
|
||||
jobTagAnterior = Job.Tag 'Mod por CHV - 211109
|
||||
If method = "query" Then
|
||||
Dim numberOfColumns As Int = ReadInt(In)
|
||||
For i = 0 To numberOfColumns - 1
|
||||
table.Columns.Put(ReadObject(In), i)
|
||||
Next
|
||||
Do While ReadByte(In) = 1
|
||||
Dim rowObjects(numberOfColumns) As Object
|
||||
table.rows.Add(rowObjects)
|
||||
For col = 0 To numberOfColumns - 1
|
||||
Dim o As Object = ReadObject(In)
|
||||
rowObjects(col) = o
|
||||
Next
|
||||
Loop
|
||||
Else If method = "batch" Then
|
||||
table.Columns.Put("AffectedRows", 0)
|
||||
Dim rows As Int = ReadInt(In)
|
||||
For i = 0 To rows - 1
|
||||
table.rows.Add(Array As Object(ReadInt(In)))
|
||||
Next
|
||||
End If
|
||||
In.Close
|
||||
' Log("HandleJob: " & (DateTime.Now - start))'Comentado por CHV - 211112
|
||||
Return table
|
||||
End Sub
|
||||
'Reads a file and returns the file as a bytes array.
|
||||
Public Sub FileToBytes(Dir As String, FileName As String) As Byte()
|
||||
Dim out As OutputStream
|
||||
out.InitializeToBytesArray(0)
|
||||
Dim In As InputStream = File.OpenInput(Dir, FileName)
|
||||
File.Copy2(In, out)
|
||||
out.Close
|
||||
Return out.ToBytesArray
|
||||
End Sub
|
||||
'Converts an image to a bytes array (for BLOB fields).
|
||||
Public Sub ImageToBytes(Image As Bitmap) As Byte()
|
||||
Dim out As OutputStream
|
||||
out.InitializeToBytesArray(0)
|
||||
Image.WriteToStream(out, 100, "JPEG")
|
||||
out.Close
|
||||
Return out.ToBytesArray
|
||||
End Sub
|
||||
'Converts a bytes array to an image (for BLOB fields).
|
||||
Public Sub BytesToImage(bytes() As Byte) As Bitmap
|
||||
Dim In As InputStream
|
||||
In.InitializeFromBytesArray(bytes, 0, bytes.Length)
|
||||
Dim bmp As Bitmap
|
||||
bmp.Initialize2(In)
|
||||
Return bmp
|
||||
End Sub
|
||||
'Prints the table to the logs.
|
||||
Public Sub PrintTable(Table As DBResult)
|
||||
Log("Tag: " & Table.Tag & ", Columns: " & Table.Columns.Size & ", Rows: " & Table.Rows.Size)
|
||||
Dim sb As StringBuilder
|
||||
sb.Initialize
|
||||
For Each col In Table.Columns.Keys
|
||||
sb.Append(col).Append(TAB)
|
||||
Next
|
||||
Log(sb.ToString)
|
||||
For Each row() As Object In Table.Rows
|
||||
Dim sb As StringBuilder
|
||||
sb.Initialize
|
||||
For Each record As Object In row
|
||||
sb.Append(record).Append(TAB)
|
||||
Next
|
||||
ToastMessageShow(sb.ToString, True)
|
||||
Next
|
||||
End Sub
|
||||
|
||||
|
||||
BIN
B4A/Files/alert2.png
Normal file
|
After Width: | Height: | Size: 632 B |
BIN
B4A/Files/candado.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
B4A/Files/cuenta.bal
Normal file
BIN
B4A/Files/datos-varios.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
B4A/Files/datos.bal
Normal file
BIN
B4A/Files/engranes.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
B4A/Files/financiero.bal
Normal file
BIN
B4A/Files/fondo.png
Normal file
|
After Width: | Height: | Size: 85 KiB |
BIN
B4A/Files/fondoblanco.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
B4A/Files/gestion.bal
Normal file
BIN
B4A/Files/gestionadas.bal
Normal file
BIN
B4A/Files/icon_22-[convertido].png
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
B4A/Files/imglogo_cl_ar.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
B4A/Files/kmt.db
Normal file
BIN
B4A/Files/lupa.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
B4A/Files/mainpage.bal
Normal file
BIN
B4A/Files/principal.bal
Normal file
BIN
B4A/Files/scroll.bal
Normal file
BIN
B4A/Files/usuario.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
81
B4A/ManageExternalStorage.bas
Normal file
@@ -0,0 +1,81 @@
|
||||
B4A=true
|
||||
Group=Default Group
|
||||
ModulesStructureVersion=1
|
||||
Type=Class
|
||||
Version=10.7
|
||||
@EndOfDesignText@
|
||||
' Version 1.00
|
||||
#Event: StorageAvailable
|
||||
Sub Class_Globals
|
||||
Private ion As Object
|
||||
Private mCallback As Object
|
||||
Private mEventName As String
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
' This pretty trivial class is modelled on (plagiarised from!) Erel's ExternalStorage class
|
||||
' It applies to devices implementing SDK30 and later
|
||||
' It allows apps to access the internal 'external' storage as was possible on earlier Android versions ussing traditional file I/O
|
||||
' You must manually add 'AddPermission(android.permission.MANAGE_EXTERNAL_STORAGE)' to the manifest
|
||||
' You must ensure that you provide the package name of your app in Sub GetPermission
|
||||
' This class uses the MANAGE_APP_ALL_FILES_ACCESS_PERMISSION intent action to direct users to a system settings page
|
||||
' They must enable the option on that page to give permission
|
||||
|
||||
|
||||
|
||||
'Initializes the object
|
||||
Public Sub Initialize (Callback As Object, EventName As String)
|
||||
mCallback = Callback
|
||||
mEventName = EventName
|
||||
End Sub
|
||||
|
||||
|
||||
' Determine if the app already has MANAGE_EXTERNAL_STORAGE call Environment.isExternalStorageManager()
|
||||
' Return True if this app already has MANAGE_EXTERNAL_STORAGE permission
|
||||
Public Sub HasPermission As Boolean
|
||||
Dim has As Boolean
|
||||
Dim jo As JavaObject
|
||||
jo.InitializeStatic("android.os.Environment")
|
||||
has = jo.RunMethod("isExternalStorageManager", Null)
|
||||
Return has
|
||||
End Sub
|
||||
|
||||
' Check whether this app has MANAGE_EXTERNAL_STORAGE permission
|
||||
' If not show the user a dialog to enable MANAGE_EXTERNAL_STORAGE permission for this app
|
||||
' Raises the StorageAvailable event in the calling activity when complete
|
||||
Public Sub GetPermission
|
||||
If HasPermission Then
|
||||
RaiseEvent
|
||||
Return
|
||||
End If
|
||||
Dim in As Intent
|
||||
' Be sure to reference your app package name in "pakageg:xxx"
|
||||
in.Initialize("android.settings.MANAGE_APP_ALL_FILES_ACCESS_PERMISSION", "package:bagon.keymon.lat")
|
||||
StartActivityForResult(in)
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub RaiseEvent
|
||||
Log("Calling : " & mEventName & "_StorageAvailable")
|
||||
CallSubDelayed(mCallback, mEventName & "_StorageAvailable")
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub ion_Event (MethodName As String, Args() As Object) As Object
|
||||
RaiseEvent
|
||||
Return Null
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub StartActivityForResult(i As Intent)
|
||||
Dim jo As JavaObject = GetBA
|
||||
ion = jo.CreateEvent("anywheresoftware.b4a.IOnActivityResult", "ion", Null)
|
||||
jo.RunMethod("startActivityForResult", Array As Object(ion, i))
|
||||
End Sub
|
||||
|
||||
Private Sub GetBA As Object
|
||||
Dim jo As JavaObject = Me
|
||||
Return jo.RunMethod("getBA", Null)
|
||||
End Sub
|
||||
|
||||
62
B4A/Starter.bas
Normal file
@@ -0,0 +1,62 @@
|
||||
B4A=true
|
||||
Group=Default Group
|
||||
ModulesStructureVersion=1
|
||||
Type=Service
|
||||
Version=9.85
|
||||
@EndOfDesignText@
|
||||
#Region Service Attributes
|
||||
#StartAtBoot: False
|
||||
#ExcludeFromLibrary: True
|
||||
#End Region
|
||||
|
||||
Sub Process_Globals
|
||||
'These global variables will be declared once when the application starts.
|
||||
'These variables can be accessed from all modules.
|
||||
Public rp As RuntimePermissions
|
||||
Dim reqManager As DBRequestManager
|
||||
Dim DBReqServer As String = "http://keymon.lat:1788" '"http://keymon.lat:1781" "http://11.0.0.196:1782" "http://keymon.lat:1783" "http://11.0.0.48:1783" ""' CAMBIAR HACIA AFUERA O DENTRO DE LA OFNA
|
||||
' Dim server As String = "http://10.0.0.205:1782"
|
||||
Dim rutaBD As String = File.DirInternal
|
||||
Dim skmt As SQL
|
||||
Dim almacen As String
|
||||
Dim GPS As GPS
|
||||
Public rp As RuntimePermissions
|
||||
Public FLP As FusedLocationProvider
|
||||
Private flpStarted As Boolean
|
||||
Dim latitud As Double = 0
|
||||
Dim longitud As Double = 0
|
||||
Dim ubicacionActual As Location
|
||||
Dim logger As Boolean
|
||||
Dim muestraProgreso = 0
|
||||
End Sub
|
||||
|
||||
Sub Service_Create
|
||||
'This is the program entry point.
|
||||
'This is a good place to load resources that are not specific to a single activity.
|
||||
GPS.Initialize("GPS")
|
||||
ubicacionActual.Initialize
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
Sub Service_Start (StartingIntent As Intent)
|
||||
Service.StopAutomaticForeground 'Starter service can start in the foreground state in some edge cases.
|
||||
Subs.revisaBD
|
||||
reqManager.Initialize(Me, DBReqServer)
|
||||
If Not(skmt.IsInitialized) Then skmt.Initialize(rutaBD, "kmt.db", True)
|
||||
End Sub
|
||||
|
||||
Sub Service_TaskRemoved
|
||||
'This event will be raised when the user removes the app from the recent apps list.
|
||||
End Sub
|
||||
|
||||
Sub Service_Destroy
|
||||
|
||||
End Sub
|
||||
|
||||
Sub reinicializaReqManager
|
||||
reqManager.Initialize(Me, DBReqServer)
|
||||
' B4XPages.MainPage.reqManager.Initialize(Me, server)
|
||||
If logger Then Log(DBReqServer)
|
||||
End Sub
|
||||
|
||||
58
B4A/Subs.bas
Normal file
@@ -0,0 +1,58 @@
|
||||
B4A=true
|
||||
Group=Default Group
|
||||
ModulesStructureVersion=1
|
||||
Type=StaticCode
|
||||
Version=11.5
|
||||
@EndOfDesignText@
|
||||
'Code module
|
||||
'Subs in this code module will be accessible from all modules.
|
||||
Sub Process_Globals
|
||||
'These global variables will be declared once when the application starts.
|
||||
'These variables can be accessed from all modules.
|
||||
End Sub
|
||||
|
||||
'Revisa que exista la BD y si es necesario crea algunas tablas dentro de ella
|
||||
Sub revisaBD 'ignore
|
||||
If Not(File.Exists(Starter.rutaBD, "kmt.db")) Then File.Copy(File.DirAssets, "kmt.db", Starter.rutaBD, "kmt.db")
|
||||
If Not(Starter.skmt.IsInitialized) Then Starter.skmt.Initialize(Starter.rutaBD, "kmt.db", True)
|
||||
|
||||
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_DATOS_GENERALES(CREDITO TEXT, NOMBRE TEXT, RFC TEXT, CURP TEXT, CALLE TEXT, N_EXT TEXT, N_INT TEXT, ALCALDIA TEXT, MUNICIPIO TEXT, ENTIDAD TEXT, CP TEXT, SEXO TEXT, FECHA_NACIMIENTO TEXT, EDAD TEXT, EMAIL TEXT, ESTATUS TEXT, ESTATUS2 TEXT)")
|
||||
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_FINANCIEROS(CREDITO TEXT, CARTERA TEXT, AGENCIA TEXT, SALDO_TOTAL TEXT, MONTO_PAGAR TEXT, TOTAL_PAGO_DESC TEXT, LIQUIDACION TEXT, DIAS_VENCIDOS TEXT, DIAS_ATRASO_ACT TEXT, FECHA_ATRASO TEXT, BBVA TEXT, OXXO TEXT, ESTATUS TEXT, ESTATUS2 TEXT)")
|
||||
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_DATOS_GENERALES2(CREDITO TEXT, NOMBRE TEXT, RFC TEXT, CURP TEXT, CALLE TEXT, N_EXT TEXT, N_INT TEXT, ALCALDIA TEXT, MUNICIPIO TEXT, ENTIDAD TEXT, CP TEXT, SEXO TEXT, FECHA_NACIMIENTO TEXT, EDAD TEXT, EMAIL TEXT, ESTATUS TEXT, ESTATUS2 TEXT)")
|
||||
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_FINANCIEROS2(CREDITO TEXT, CARTERA TEXT, AGENCIA TEXT, SALDO_TOTAL TEXT, MONTO_PAGAR TEXT, TOTAL_PAGO_DESC TEXT, LIQUIDACION TEXT, DIAS_VENCIDOS TEXT, DIAS_ATRASO_ACT TEXT, FECHA_ATRASO TEXT, BBVA TEXT, OXXO TEXT, ESTATUS TEXT, ESTATUS2 TEXT)")
|
||||
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_FUENTE(FUENTE TEXT, NUMERO INT, NUME INT)")
|
||||
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_PARENTESCO (PARENTESCO TEXT, NUMERO INT, NUME INT)")
|
||||
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_ACCION(CO_ACCION TEXT, CO_ACDESCRIPCION TEXT, NUMERO INT, NUME INT)")
|
||||
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_RESULTADO_MA(CAT_CO_ACCION TEXT,CO_RESULTADO TEXT, CO_RDESCRIPCION TEXT, NUMERO INT, NUME INT)")
|
||||
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_RESULTADO_VC(CAT_CO_ACCION TEXT,CO_RESULTADO TEXT, CO_RDESCRIPCION TEXT, NUMERO INT, NUME INT)")
|
||||
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_RESULTADO_CA(CAT_CO_ACCION TEXT,CO_RESULTADO TEXT, CO_RDESCRIPCION TEXT, NUMERO INT, NUME INT)")
|
||||
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_RESULTADO_BR(CAT_CO_ACCION TEXT,CO_RESULTADO TEXT, CO_RDESCRIPCION TEXT, NUMERO INT, NUME INT)")
|
||||
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_VISITA(CREDITO TEXT, PRODUCTO TEXT, VISITADOR TEXT, RESULTADO TEXT, CODIGO_RES TEXT, FUENTE TEXT, PARENTESCO TEXT, COMENTARIOS TEXT, FECHA TEXT, LONGITUD TEXT, LATUTUD TEXT, FECHACAPTURA TEXT, AGENCIA TEXT, FECHA_PROMESA TEXT, MONTO_PROMESA TEXT, TIPO_DOMICILIO TEXT, NIVEL_SOCIO TEXT, CARACTERISTICAS TEXT, NIVELES TEXT, FOTOUNO TEXT, FOTODOS TEXT, FOTOTRES TEXT, FOTOCUATRO TEXT, NOMBRE_ATIENDE TEXT, CODIGO_ACCION TEXT, ACCION TEXT, DIAS_ACCION TEXT, PUNTOS_REF TEXT, ESTATUS INT, ENVIADO TEXT)")
|
||||
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS TIPO_VIVIENDA(TIPO TEXT, NUMERO INT)")
|
||||
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS NIVEL_SOCIO(NIVEL TEXT, NUMERO INT)")
|
||||
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CARACTERISTICAS(TIPO TEXT, NUMERO INT)")
|
||||
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS NUMERO_NIV(NIVELES TEXT, NUMERO INT)")
|
||||
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CHECADO(CREDITO TEXT, LUNES TEXT, MARTES TEXT, MIERCOLES TEXT, JUEVES TEXT, VIERNES TEXT, SABADO TEXT, DOMINGO TEXT)")
|
||||
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CARGADO(CARGADO TEXT)")
|
||||
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_VARIABLES(CAT_VA_DESCRIPCION TEXT, CAT_VA_VALOR TEXT)")
|
||||
|
||||
' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS HIST_DATOS_GENERALES")
|
||||
' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS HIST_FINANCIEROS")
|
||||
' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS HIST_DATOS_GENERALES2")
|
||||
' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS HIST_FINANCIEROS2")
|
||||
' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS CAT_FUENTE")
|
||||
' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS CAT_PARENTESCO")
|
||||
' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS CAT_ACCION")
|
||||
' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS CAT_RESULTADO_MA")
|
||||
' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS CAT_RESULTADO_BR")
|
||||
' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS CAT_RESULTADO_CA")
|
||||
' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS CAT_RESULTADO_VC")
|
||||
' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS HIST_VISITA")
|
||||
' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS TIPO_VIVIENDA")
|
||||
' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS NIVEL_SOCIO")
|
||||
' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS CARACTERISTICAS")
|
||||
' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS NUMERO_NIV")
|
||||
' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS CHECADO")
|
||||
' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS CAT_VARIABLES")
|
||||
|
||||
End Sub
|
||||
218
B4A/Tracker.bas
Normal file
@@ -0,0 +1,218 @@
|
||||
B4A=true
|
||||
Group=Default Group
|
||||
ModulesStructureVersion=1
|
||||
Type=Service
|
||||
Version=11
|
||||
@EndOfDesignText@
|
||||
#Region Service Attributes
|
||||
#StartAtBoot: True
|
||||
#End Region
|
||||
'******************************************************************************
|
||||
'No olvidar agregar esta linea al editor de manifiesto:
|
||||
' SetServiceAttribute(Tracker, android:foregroundServiceType, "location")
|
||||
'
|
||||
'En Starter agregar estas lineas en Process_Globals
|
||||
' Public rp As RuntimePermissions
|
||||
' Public FLP As FusedLocationProvider
|
||||
' Private flpStarted As Boolean
|
||||
'
|
||||
'En Main agregar estas lineas a Activity_Resume
|
||||
' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_ACCESS_FINE_LOCATION)
|
||||
' Wait For Activity_PermissionResult (Permission As String, Result As Boolean)
|
||||
' If Result Then
|
||||
' StartService(Tracker)
|
||||
' Log("Start Tracker")
|
||||
' Else
|
||||
' ToastMessageShow("No permission", True)
|
||||
' End If
|
||||
'
|
||||
'Se necesitan las librerias FusedLocationProvider, GPS, Phone y RunTimePermissions
|
||||
'
|
||||
'Y en Main agregar estas dos lineas:
|
||||
'#AdditionalJar: com.android.support:support-v4
|
||||
'#AdditionalJar: com.google.android.gms:play-services-location
|
||||
|
||||
Sub Process_Globals
|
||||
' Private nid As Int = 1
|
||||
Private Tracking As Boolean
|
||||
Private lock As PhoneWakeState
|
||||
'Para FusedLocationProvider (2 lineas)
|
||||
Public FLP As FusedLocationProvider
|
||||
Dim actualLR As LocationRequest
|
||||
Private flpStarted As Boolean
|
||||
' Dim locRequest As String
|
||||
Dim UUGCoords As Location 'Ultima Ubicacion Guardada
|
||||
' Dim trackerActividad, pushServiceActividad As String
|
||||
Dim logger As Boolean = True
|
||||
End Sub
|
||||
|
||||
Sub Service_Create
|
||||
Service.AutomaticForegroundMode = Service.AUTOMATIC_FOREGROUND_NEVER 'we are handling it ourselves
|
||||
UUGCoords.Initialize
|
||||
logger = False
|
||||
'Para FusedLocationProvider (2 lineas)
|
||||
FLP.Initialize("flp")
|
||||
FLP.Connect
|
||||
lock.PartialLock
|
||||
StartFLP
|
||||
End Sub
|
||||
|
||||
Sub flp_ConnectionSuccess
|
||||
' If logger Then Log("Connected to location provider")
|
||||
'FLP.GetLastKnownLocation
|
||||
End Sub
|
||||
|
||||
Sub flp_ConnectionFailed(ConnectionResult1 As Int)
|
||||
If logger Then Log("Failed to connect to location provider")
|
||||
End Sub
|
||||
|
||||
Sub flp_ConnectionSuspended(ConnectionResult1 As Int)
|
||||
If logger Then Log("FLP conection suspended")
|
||||
StartFLP
|
||||
End Sub
|
||||
|
||||
Sub Service_Start (StartingIntent As Intent)
|
||||
LogColor("Iniciando Tracker ...", Colors.Green)
|
||||
Service.StopAutomaticForeground
|
||||
' Service.StartForeground(51042, Subs.notiLowReturn("Kelloggs", "Activo", 51042))
|
||||
StartServiceAt(Me, DateTime.Now + 10 * DateTime.TicksPerMinute, True)
|
||||
Track
|
||||
End Sub
|
||||
|
||||
Public Sub Track
|
||||
Log("Inicia Track - Tracking : "&Tracking)
|
||||
If Tracking Then
|
||||
' Log(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
|
||||
If logger Then Log("Sin permisos de ublicación.")
|
||||
Return
|
||||
End If
|
||||
StartFLP 'Iniciamos FusedLocationProvider
|
||||
Tracking = True
|
||||
End Sub
|
||||
|
||||
Public Sub StartFLP
|
||||
Log("StartFLP - flpStarted="&flpStarted)
|
||||
Do While FLP.IsConnected = False
|
||||
Sleep(500)
|
||||
If logger Then Log("sleeping")
|
||||
Loop
|
||||
' If flpStarted = False Then
|
||||
' If logger Then Log("RequestLocationUpdates")
|
||||
' FLP.RequestLocationUpdates(CreateLocationRequest) 'Buscamos ubicacion
|
||||
If logger Then LogColor("Buscamos ubicacion (movimientoMinimo = "&actualLR.GetSmallestDisplacement&")", Colors.Magenta)
|
||||
' If logger Then Log(actualLR.GetSmallestDisplacement)
|
||||
flpStarted = True
|
||||
' End If
|
||||
End Sub
|
||||
|
||||
Public Sub StartFLP2
|
||||
If logger Then Log("StartFLP2 - flpStarted="&flpStarted)
|
||||
Do While FLP.IsConnected = False
|
||||
Sleep(500)
|
||||
If logger Then Log("sleeping")
|
||||
Loop
|
||||
dameUltimaUbicacionConocida 'Regresamos ultima ubicacion conocida
|
||||
FLP.RequestLocationUpdates(CreateLocationRequest2) 'Buscamos ubicacion 2 peticiones
|
||||
If logger Then LogColor("Buscamos ubicacion (movimientoMinimo = "&actualLR.GetSmallestDisplacement&")", Colors.Magenta)
|
||||
' If logger Then Log(actualLR.GetSmallestDisplacement)
|
||||
End Sub
|
||||
|
||||
Private Sub CreateLocationRequest As LocationRequest
|
||||
If logger Then Log("CreateLocationRequest")
|
||||
Dim lr As LocationRequest
|
||||
lr.Initialize
|
||||
lr.SetInterval(10000) 'Intervalo deseado para actualizaciones de ubicacion
|
||||
lr.SetFastestInterval(lr.GetInterval / 2) 'Intervalo minimo para actualizaciones de ubicacion
|
||||
lr.SetSmallestDisplacement(75) 'Solo registra cambio de ubicacion si es mayor a XX mts
|
||||
lr.SetPriority(lr.Priority.PRIORITY_HIGH_ACCURACY)
|
||||
actualLR=lr
|
||||
Return lr
|
||||
End Sub
|
||||
|
||||
Private Sub CreateLocationRequest2 As LocationRequest
|
||||
If logger Then Log("Iniciamos CreateLocationRequest2")
|
||||
Dim lr As LocationRequest
|
||||
lr.Initialize
|
||||
lr.SetInterval(2000) 'Intervalo deseado para actualizaciones de ubicacion
|
||||
lr.SetFastestInterval(lr.GetInterval / 2) 'Intervalo minimo para actualizaciones de ubicacion
|
||||
lr.setNumUpdates(2) 'Solicitamos solo 2 actualizaciones con estos parametros
|
||||
lr.SetSmallestDisplacement(1) 'Solo registra cambio de ubicacion si es mayor a XX mts
|
||||
lr.SetPriority(lr.Priority.PRIORITY_HIGH_ACCURACY)
|
||||
actualLR=lr
|
||||
Return lr
|
||||
End Sub
|
||||
|
||||
Sub dameUltimaUbicacionConocida
|
||||
If FLP.GetLastKnownLocation.IsInitialized Then 'Mandamos ultima ubicacion guardada
|
||||
' If logger Then LogColor($"Mandamos UUC "${Subs.fechaKMT(FLP.GetLastKnownLocation.Time)}|Acc:$0.2{FLP.GetLastKnownLocation.Accuracy}|$0.8{FLP.GetLastKnownLocation.Latitude}|$0.8{FLP.GetLastKnownLocation.Longitude}|Spd:$0.2{FLP.GetLastKnownLocation.Speed}|"$, Colors.RGB(255,112,35))
|
||||
' Dim coords As String = FLP.GetLastKnownLocation.Latitude&","&FLP.GetLastKnownLocation.Longitude&","&formatoFecha(FLP.GetLastKnownLocation.Time)
|
||||
' CallSubDelayed2(FirebaseMessaging,"mandamosLoc",coords)
|
||||
' Subs.mandamosLoc(coords)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Public Sub StopFLP
|
||||
'Log("StopFLP")
|
||||
If flpStarted Then
|
||||
FLP.RemoveLocationUpdates 'Eliminamos todas las solicitudes de ubicacion
|
||||
flpStarted = False
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Sub flp_LocationChanged (Location1 As Location)
|
||||
Starter.latitud = Location1.Latitude
|
||||
Starter.longitud = Location1.Longitude
|
||||
LogColor($"Location changed lat=${Location1.Latitude}, lon=${Location1.Longitude}, Acc=${Location1.Accuracy}, SD=$1.0{actualLR.GetSmallestDisplacement}"$, Colors.green)
|
||||
UUGCoords = Location1
|
||||
' If logger Then Log("SmallestDisplacement="&actualLR.GetSmallestDisplacement)
|
||||
' CallSub2(Starter, "GPS_LocationChanged", Location1)
|
||||
' CallSub2(gestion, "GPS_LocationChanged", Location1)
|
||||
' Starter.ubicacionActual.Latitude = Starter.lat_gps
|
||||
' Starter.ubicacionActual.Longitude = Starter.lon_gps
|
||||
' Starter.ubicacionActual.Accuracy = Location1.Accuracy
|
||||
|
||||
'/////// para la ultima ubicacion FL
|
||||
Dim sDate,sTime As String
|
||||
DateTime.DateFormat = "MM/dd/yyyy"
|
||||
sDate=DateTime.Date(DateTime.Now)
|
||||
sTime=DateTime.Time(DateTime.Now)
|
||||
' If Starter.lat_gps <> 0 And Starter.lat_gps <> Null Then
|
||||
' Try
|
||||
' Starter.skmt.ExecNonQuery("DELETE FROM HIST_GPS")
|
||||
' Starter.skmt.ExecNonQuery2("INSERT INTO HIST_GPS (HGDATE, HGLAT, HGLON) VALUES(?,?,?) ", Array As Object (sDate & sTime, Starter.lat_gps, Starter.lon_gps))
|
||||
' Catch
|
||||
' If logger Then Log("Error al borrar o insertar nuevas coordendas en HIST_GPS")
|
||||
' End Try
|
||||
' End If
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
Sub CreateNotification (Body As String) As Notification 'ignore
|
||||
Dim notification As Notification
|
||||
notification.Initialize2(notification.IMPORTANCE_LOW)
|
||||
notification.Icon = "icon"
|
||||
notification.SetInfo("This", Body, Main)
|
||||
Return notification
|
||||
End Sub
|
||||
|
||||
Sub Service_Destroy
|
||||
If Tracking Then
|
||||
StopFLP
|
||||
End If
|
||||
Tracking = False
|
||||
lock.ReleasePartialLock
|
||||
End Sub
|
||||
|
||||
Sub formatoFecha(fecha As String) As String 'ignore 'Convierte una fecha al formato yyMMddHHmmss
|
||||
' Log(fecha)
|
||||
Dim OrigFormat As String = DateTime.DateFormat 'save orig date format
|
||||
DateTime.DateFormat="yyMMddHHmmss"
|
||||
Dim lastUpdate As String=DateTime.Date(fecha)
|
||||
DateTime.DateFormat=OrigFormat 'return to orig date format
|
||||
' Log(lastUpdate)
|
||||
Return lastUpdate
|
||||
End Sub
|
||||
282
B4A/appUpdater.bas
Normal file
@@ -0,0 +1,282 @@
|
||||
B4A=true
|
||||
Group=Default Group
|
||||
ModulesStructureVersion=1
|
||||
Type=Service
|
||||
Version=10.2
|
||||
@EndOfDesignText@
|
||||
#Region Service Attributes
|
||||
#StartAtBoot: False
|
||||
#End Region
|
||||
|
||||
'////////////////////////////////////////////////////////////////////////////////////////////
|
||||
'//// Servicio para revisar si hay actualizacion de aplicación, usa la
|
||||
'//// actividad "updateAvailable" para mostrar mensajes.
|
||||
'////
|
||||
'//// https://www.b4x.com/android/forum/threads/update-your-app-without-using-the-gplaystore.109720/#content
|
||||
'////
|
||||
'//// En la actividad del la cual se va a llamar la revision de actualizacion
|
||||
'//// hay que agregar los siguientes Subs:
|
||||
'////
|
||||
' Sub boton_que_llama_revision_Click
|
||||
' StartService(appUpdater)
|
||||
' End Sub
|
||||
'
|
||||
' appUpdater - Mostramos el anuncio de que se esta descargando el nuevo apk
|
||||
' Sub muestraProgreso
|
||||
' ProgressDialogShow("Descargando actualización")
|
||||
' End Sub
|
||||
'
|
||||
' appUpdater - Ocultamos el anuncio de que se esta descargando el nuevo apk
|
||||
' Sub ocultaProgreso
|
||||
' ProgressDialogHide
|
||||
' End Sub
|
||||
'////
|
||||
'//// Requiere las siguientes librerias:
|
||||
'////
|
||||
'//// * appUpdating
|
||||
'//// * JavaObject
|
||||
'//// * OkHttpUtils2
|
||||
'//// * Phone
|
||||
'//// * RuntimePermissions
|
||||
'////
|
||||
'//// Requiere las siguientes lineas en el manifiesto:
|
||||
'////
|
||||
' AddManifestText(<uses-permission
|
||||
' android:name="android.permission.WRITE_EXTERNAL_STORAGE"
|
||||
' android:maxSdkVersion="18" />
|
||||
' )
|
||||
' AddApplicationText(
|
||||
' <provider
|
||||
' android:name="android.support.v4.content.FileProvider"
|
||||
' android:authorities="$PACKAGE$.provider"
|
||||
' android:exported="false"
|
||||
' android:grantUriPermissions="true">
|
||||
' <meta-data
|
||||
' android:name="android.support.FILE_PROVIDER_PATHS"
|
||||
' android:resource="@xml/provider_paths"/>
|
||||
' </provider>
|
||||
' )
|
||||
' CreateResource(xml, provider_paths,
|
||||
' <paths>
|
||||
' <external-files-path name="name" path="" />
|
||||
' <files-path name="name" path="" />
|
||||
' <files-path name="name" path="shared" />
|
||||
' </paths>
|
||||
' )
|
||||
' AddPermission(android.permission.REQUEST_INSTALL_PACKAGES)
|
||||
' AddPermission(android.permission.INTERNET)
|
||||
' AddPermission(android.permission.INSTALL_PACKAGES)
|
||||
' AddPermission(android.permission.READ_EXTERNAL_STORAGE)
|
||||
' AddPermission(android.permission.WRITE_EXTERNAL_STORAGE)
|
||||
' AddPermission(android.permission.READ_PHONE_STATE)
|
||||
' AddPermission(android.permission.WAKE_LOCK)
|
||||
'////
|
||||
'////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Sub Process_Globals
|
||||
'These global variables will be declared once when the application starts.
|
||||
'These variables can be accessed from all modules.
|
||||
|
||||
'Aqui va la liga al archivo .ver en el servidor que contiene la información de la aplicacion
|
||||
Public lnk As String = "https://keymon.lat/movil/Arlete/ARE.ver"
|
||||
|
||||
'/// En el servidor se necesita un archivo de texto (.ver) que tenga los siguientes
|
||||
'/// datos separados por un tabulador
|
||||
'/// contents of ver file, each field is seperated by a tab
|
||||
' Field 0 = 2.226.19.09.19.01a <-- Esta es la version de la aplicación disponible
|
||||
' Field 1 = A new version of the MyAPP is available, Download and update now ? <-- Mensaje para cuando hay actualización
|
||||
' Field 2 = MyApp is up to date <--- Mensaje para cuando no hay actualización
|
||||
' Field 3 = http://www.mydomain.com/Public/myapp.apk <--- Liga al apk de la actualización
|
||||
|
||||
Public nNewApp As Notification
|
||||
Public nNewAppnID As Int = 16
|
||||
'Para Download
|
||||
Dim nativeMe As JavaObject
|
||||
Dim n2 As Notification
|
||||
Dim n2ID As Int = 16
|
||||
'Para fileProvider
|
||||
Public SharedFolder As String
|
||||
Public UseFileProvider As Boolean
|
||||
Private rp As RuntimePermissions
|
||||
|
||||
Type mNewVersion(update As Boolean, nonewAPP As Boolean, notifyUser As Boolean, _
|
||||
version As String, newMsg As String, okMsg As String, appLink As String)
|
||||
Public newApp As mNewVersion
|
||||
End Sub
|
||||
|
||||
Sub Service_Create
|
||||
Log("appUpdater(), Service_Create")
|
||||
newApp.Initialize
|
||||
Service.AutomaticForegroundMode = Service.AUTOMATIC_FOREGROUND_NEVER
|
||||
n2.Initialize
|
||||
nativeMe.InitializeContext
|
||||
End Sub
|
||||
|
||||
Sub Service_Start (StartingIntent As Intent)
|
||||
Log("appUpdater(), Service_Start")
|
||||
' CallSubDelayed2(Main, "muestraProgreso", "Buscando actualización")
|
||||
B4XPages.MainPage.muestraProgreso("Buscando actualización")
|
||||
Log("Buscando actualización")
|
||||
fileProvider_init
|
||||
Wait For (Download(Me, lnk)) JobDone (j As HttpJob)
|
||||
If j.Success Then
|
||||
Try
|
||||
Dim app() As String = Regex.Split(Chr(9),j.GetString)
|
||||
' // Set the data
|
||||
newApp.appLink = app(3) 'Liga a nueva app
|
||||
newApp.newMsg = app(1) 'Texto de que hay actualizacion
|
||||
newApp.okMsg = app(2) 'Texto de app al corriente
|
||||
newApp.version = app(0) 'Version actual
|
||||
|
||||
Log($"Application.VersionName=${Application.VersionName}, newApp=${newApp}"$)
|
||||
|
||||
' // App version check
|
||||
If newApp.version = Application.VersionName Then
|
||||
newApp.update = False
|
||||
Log("No new app")
|
||||
B4XPages.ShowPage("updateAvailable")
|
||||
'Se puede mandar tambien una notificacion avisando que NO hay actualizaciones
|
||||
CreateNotification2("Aplicacion al corriente","No hay actualizaciones disponibles","ic_file_download_white_24dp",Main,True,True,nNewApp,nNewAppnID)
|
||||
End If
|
||||
If newApp.version <> Application.VersionName Then
|
||||
newApp.update = True
|
||||
Log("New app true")
|
||||
B4XPages.ShowPage("updateAvailable")
|
||||
'Se puede mandar tambien una notificacion avisando que hay actualizacion disponible
|
||||
' CreateNotification2("Nueva aplicación disponible","Haga clic para descargar.","ic_file_download_white_24dp",C_UpdateAvailable,True,True,nNewApp,nNewAppnID)
|
||||
End If
|
||||
Catch
|
||||
Log("appUpdater(), Job Failed, error " & LastException.Message)
|
||||
End Try
|
||||
Else
|
||||
Log("appUpdater(), Job Failed " & lnk)
|
||||
End If
|
||||
j.Release
|
||||
' StopService(Me)
|
||||
End Sub
|
||||
|
||||
Sub download_Start (StartingIntent As Intent)
|
||||
download_newApk
|
||||
End Sub
|
||||
|
||||
Sub download_newApk
|
||||
' CreateNotification("Descargando actualización", "Descargando apk", "ic_file_download_white_24dp", Main, False, True)
|
||||
' CallSubDelayed2(Main, "muestraProgreso", "Descargando actualización")
|
||||
Log("Descargando actualización")
|
||||
B4XPages.ShowPage("Mainpage")
|
||||
Starter.muestraProgreso = 1
|
||||
Dim job_newAPP As HttpJob
|
||||
job_newAPP.Initialize("job_newAPP",Me)
|
||||
job_newAPP.Download(newApp.appLink)
|
||||
Wait for (job_newAPP) JobDone (job_newAPP As HttpJob)
|
||||
If job_newAPP.Success = True Then
|
||||
' // Delete existing file
|
||||
If File.Exists(SharedFolder,"newapp.apk") Then
|
||||
File.Delete(SharedFolder,"newapp.apk")
|
||||
End If
|
||||
' // Save new file
|
||||
Dim outNewAPK As OutputStream = File.OpenOutput(SharedFolder,"newapp.apk", False)
|
||||
File.Copy2(job_newAPP.GetInputStream, outNewAPK)
|
||||
outNewAPK.Close
|
||||
If Starter.Logger Then Log("APK dir: "&SharedFolder)
|
||||
End If
|
||||
job_newAPP.Release
|
||||
' // Install the app
|
||||
Dim in As Intent
|
||||
in.Initialize(in.ACTION_VIEW,"" )
|
||||
SetFileUriAsIntentData(in, "newapp.apk")
|
||||
' // Type must be set after calling SetFileUriAsIntentData
|
||||
in.SetType("application/vnd.android.package-archive")
|
||||
StartActivity(in)
|
||||
n2.Cancel(nNewAppnID)
|
||||
B4XPages.MainPage.ocultaProgreso
|
||||
' Service.StopForeground(nNewAppnID)
|
||||
StopService(Me)
|
||||
' CallSubDelayed(Main,"ocultaProgreso")
|
||||
End Sub
|
||||
|
||||
Sub download_Destroy
|
||||
n2.Cancel(n2ID)
|
||||
Service.StopForeground(n2ID)
|
||||
End Sub
|
||||
|
||||
Sub Download (Callback As Object, link As String) As HttpJob
|
||||
Dim j As HttpJob
|
||||
j.Initialize("", Callback)
|
||||
j.Download(link)
|
||||
Return j
|
||||
End Sub
|
||||
|
||||
Private Sub CreateNotification2(Title As String, Content As String, _ 'ignore
|
||||
Icon As String, TargetActivity As Object, Sound As Boolean, _
|
||||
Vibrate As Boolean, pN As Notification,pNID As Int) As Notification
|
||||
pN.Initialize2(pN.IMPORTANCE_HIGH)
|
||||
' pN.Number = pNID
|
||||
' pN.Light = False
|
||||
pN.Vibrate = Vibrate
|
||||
pN.Sound = Sound
|
||||
' pN.OnGoingEvent = False
|
||||
pN.Icon = Icon
|
||||
pN.AutoCancel = True
|
||||
pN.SetInfo(Title, Content, TargetActivity)
|
||||
pN.Notify(pNID)
|
||||
Return pN
|
||||
End Sub
|
||||
|
||||
Private Sub CreateNotification(Title As String, Content As String, Icon As String, TargetActivity As Object, Sound As Boolean, Vibrate As Boolean) As Notification 'ignore
|
||||
n2.Initialize
|
||||
n2.Light = False
|
||||
n2.Vibrate = Vibrate
|
||||
n2.Sound = Sound
|
||||
n2.OnGoingEvent = True
|
||||
n2.Icon = Icon
|
||||
n2.SetInfo(Title, Content, TargetActivity)
|
||||
n2.Notify(nNewAppnID)
|
||||
End Sub
|
||||
|
||||
Sub Service_Destroy
|
||||
Log("appUpdater(), Service_Destroy")
|
||||
End Sub
|
||||
|
||||
Sub fileProvider_init
|
||||
Dim p As Phone
|
||||
If p.SdkVersion >= 24 Or File.ExternalWritable = False Then
|
||||
UseFileProvider = True
|
||||
SharedFolder = File.Combine(File.DirInternal, "shared")
|
||||
If Not(File.IsDirectory(File.DirInternal,"shared")) Then
|
||||
File.MakeDir("", SharedFolder)
|
||||
End If
|
||||
Else
|
||||
UseFileProvider = False
|
||||
SharedFolder = rp.GetSafeDirDefaultExternal("shared")
|
||||
End If
|
||||
Log($"Using FileProvider? ${UseFileProvider}"$)
|
||||
End Sub
|
||||
|
||||
'Returns the file uri.
|
||||
Sub GetFileUri (FileName As String) As Object
|
||||
Try
|
||||
If Not(UseFileProvider) Then
|
||||
Dim uri As JavaObject
|
||||
Return uri.InitializeStatic("android.net.Uri").RunMethod("parse", Array("file://" & File.Combine(SharedFolder, FileName)))
|
||||
End If
|
||||
Dim f As JavaObject
|
||||
f.InitializeNewInstance("java.io.File", Array(SharedFolder, FileName))
|
||||
Dim fp As JavaObject
|
||||
Dim context As JavaObject
|
||||
context.InitializeContext
|
||||
fp.InitializeStatic("android.support.v4.content.FileProvider")
|
||||
Return fp.RunMethod("getUriForFile", Array(context, Application.PackageName & ".provider", f))
|
||||
Catch
|
||||
Log("FileProvider::GetFileUri - error - " & LastException.Message)
|
||||
Return ""
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Replaces the intent Data field with the file uri.
|
||||
'Resets the type field. Make sure to call Intent.SetType after calling this method
|
||||
Sub SetFileUriAsIntentData (Intent As Intent, FileName As String)
|
||||
Dim jo As JavaObject = Intent
|
||||
jo.RunMethod("setData", Array(GetFileUri(FileName)))
|
||||
Intent.Flags = Bit.Or(Intent.Flags, 1) 'FLAG_GRANT_READ_URI_PERMISSION
|
||||
End Sub
|
||||
154
B4A/bagon.b4a
Normal file
@@ -0,0 +1,154 @@
|
||||
Build1=Default,bagon.keymon.lat
|
||||
File1=candado.png
|
||||
File10=gestionadas.bal
|
||||
File11=Icon_22-[Convertido].png
|
||||
File12=ImgLogo_Cl_AR.png
|
||||
File13=lupa.png
|
||||
File14=MainPage.bal
|
||||
File15=principal.bal
|
||||
File16=scroll.bal
|
||||
File17=usuario.png
|
||||
File2=cuenta.bal
|
||||
File3=datos.bal
|
||||
File4=datos-varios.png
|
||||
File5=engranes.png
|
||||
File6=financiero.bal
|
||||
File7=fondo.png
|
||||
File8=fondoblanco.png
|
||||
File9=gestion.bal
|
||||
FileGroup1=Default Group
|
||||
FileGroup10=Default Group
|
||||
FileGroup11=Default Group
|
||||
FileGroup12=Default Group
|
||||
FileGroup13=Default Group
|
||||
FileGroup14=Default Group
|
||||
FileGroup15=Default Group
|
||||
FileGroup16=Default Group
|
||||
FileGroup17=Default Group
|
||||
FileGroup2=Default Group
|
||||
FileGroup3=Default Group
|
||||
FileGroup4=Default Group
|
||||
FileGroup5=Default Group
|
||||
FileGroup6=Default Group
|
||||
FileGroup7=Default Group
|
||||
FileGroup8=Default Group
|
||||
FileGroup9=Default Group
|
||||
Group=Default Group
|
||||
Library1=accessibility
|
||||
Library10=core
|
||||
Library11=fileprovider
|
||||
Library12=fusedlocationprovider
|
||||
Library13=gps
|
||||
Library14=ime
|
||||
Library15=okhttputils2
|
||||
Library16=phone
|
||||
Library17=randomaccessfile
|
||||
Library18=reflection
|
||||
Library19=runtimepermissions
|
||||
Library2=appupdating
|
||||
Library20=sql
|
||||
Library21=stringutils
|
||||
Library22=wobblemenu
|
||||
Library23=xcustomlistview
|
||||
Library24=xui
|
||||
Library25=xui views
|
||||
Library26=javaobject
|
||||
Library3=aswheelpicker
|
||||
Library4=b4xpages
|
||||
Library5=bctoast
|
||||
Library6=bitmapcreator
|
||||
Library7=byteconverter
|
||||
Library8=camera
|
||||
Library9=compressstrings
|
||||
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~<uses-sdk android:minSdkVersion="5" android:targetSdkVersion="33"/>~\n~<supports-screens android:largeScreens="true" ~\n~ android:normalScreens="true" ~\n~ android:smallScreens="true" ~\n~ android:anyDensity="true"/>)~\n~SetApplicationAttribute(android:icon, "@drawable/icon")~\n~SetApplicationAttribute(android:label, "$LABEL$")~\n~CreateResourceFromFile(Macro, Themes.LightTheme)~\n~SetApplicationAttribute(android:usesCleartextTraffic, "true")~\n~SetServiceAttribute(Tracker, android:foregroundServiceType, "location")~\n~'End of default text.~\n~~\n~AddApplicationText(~\n~<meta-data~\n~ android:name="com.google.android.geo.API_KEY"~\n~ android:value="AIzaSyBlBnx3O-DncOSv3oFIp-12wgujOYYcl-U"/>~\n~ <meta-data android:name="com.google.android.gms.version"~\n~ android:value="@integer/google_play_services_version" />~\n~)~\n~~\n~AddManifestText(~\n~<uses-permission~\n~ android:name="android.permission.ACCESS_FINE_LOCATION"~\n~ android:maxSdkVersion="33" />~\n~)~\n~~\n~AddManifestText(~\n~<uses-permission ~\n~ android:name="android.permission.ACCESS_COARSE_LOCATION"~\n~ android:maxSdkVersion="33" />~\n~ )~\n~~\n~AddPermission(android.permission.ACCESS_BACKGROUND_LOCATION)~\n~~\n~AddPermission("android.permission.MANAGE_EXTERNAL_STORAGE")~\n~~\n~~\n~AddManifestText(<uses-permission~\n~android:name="android.permission.WRITE_EXTERNAL_STORAGE"~\n~android:maxSdkVersion="33" />~\n~)~\n~'/////////////////////// App Updating ////////////////~\n~ AddManifestText(<uses-permission~\n~ android:name="android.permission.WRITE_EXTERNAL_STORAGE"~\n~ android:maxSdkVersion="33" />~\n~ )~\n~ AddApplicationText(~\n~ <provider~\n~ android:name="android.support.v4.content.FileProvider"~\n~ android:authorities="$PACKAGE$.provider"~\n~ android:exported="false"~\n~ android:grantUriPermissions="true">~\n~ <meta-data~\n~ android:name="android.support.FILE_PROVIDER_PATHS"~\n~ android:resource="@xml/provider_paths"/>~\n~ </provider>~\n~ )~\n~ CreateResource(xml, provider_paths,~\n~ <paths>~\n~ <external-files-path name="name" path="" />~\n~ <files-path name="name" path="" />~\n~ <files-path name="name" path="shared" />~\n~ </paths>~\n~ )~\n~AddManifestText(<uses-feature android:name="android.hardware.telephony" android:required="false" />)~\n~AddManifestText(<uses-feature android:name="android.hardware.camera" android:required="false" />)~\n~AddManifestText(<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />)~\n~AddManifestText(<uses-feature android:name="android.hardware.camera.flash" android:required="false" />)~\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~
|
||||
Module1=appUpdater
|
||||
Module10=Subs
|
||||
Module11=Tracker
|
||||
Module2=|relative|..\B4XMainPage
|
||||
Module3=c_datos
|
||||
Module4=C_principal
|
||||
Module5=C_UpdateAvailable
|
||||
Module6=CameraExClass2
|
||||
Module7=DBRequestManager
|
||||
Module8=ManageExternalStorage
|
||||
Module9=Starter
|
||||
NumberOfFiles=17
|
||||
NumberOfLibraries=26
|
||||
NumberOfModules=11
|
||||
Version=11.5
|
||||
@EndOfDesignText@
|
||||
#Region Project Attributes
|
||||
#AdditionalJar: com.android.support:support-v4
|
||||
#AdditionalJar: com.google.android.gms:play-services-location
|
||||
#ApplicationLabel: Bagon
|
||||
#VersionCode: 1
|
||||
#VersionName: 3.06.15
|
||||
'SupportedOrientations possible values: unspecified, landscape or portrait.
|
||||
#SupportedOrientations: portrait
|
||||
#CanInstallToExternalStorage: False
|
||||
#End Region
|
||||
|
||||
#Region Activity Attributes
|
||||
#FullScreen: False
|
||||
#IncludeTitle: False
|
||||
#End Region
|
||||
|
||||
'#BridgeLogger: True
|
||||
|
||||
|
||||
Sub Process_Globals
|
||||
Public ActionBarHomeClicked As Boolean
|
||||
End Sub
|
||||
|
||||
Sub Globals
|
||||
Type CameraInfoAndId (CameraInfo As Object, Id As Int)
|
||||
Type CameraSize (Width As Int, Height As Int)
|
||||
End Sub
|
||||
|
||||
Sub Activity_Create(FirstTime As Boolean)
|
||||
Dim pm As B4XPagesManager
|
||||
pm.Initialize(Activity)
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
'Template version: B4A-1.01
|
||||
#Region Delegates
|
||||
|
||||
Sub Activity_ActionBarHomeClick
|
||||
ActionBarHomeClicked = True
|
||||
B4XPages.Delegate.Activity_ActionBarHomeClick
|
||||
ActionBarHomeClicked = False
|
||||
End Sub
|
||||
|
||||
Sub Activity_KeyPress (KeyCode As Int) As Boolean
|
||||
Return B4XPages.Delegate.Activity_KeyPress(KeyCode)
|
||||
End Sub
|
||||
|
||||
Sub Activity_Resume
|
||||
B4XPages.Delegate.Activity_Resume
|
||||
|
||||
End Sub
|
||||
|
||||
Sub Activity_Pause (UserClosed As Boolean)
|
||||
B4XPages.Delegate.Activity_Pause
|
||||
End Sub
|
||||
|
||||
Sub Activity_PermissionResult (Permission As String, Result As Boolean)
|
||||
B4XPages.Delegate.Activity_PermissionResult(Permission, Result)
|
||||
End Sub
|
||||
|
||||
Sub Create_Menu (Menu As Object)
|
||||
B4XPages.Delegate.Create_Menu(Menu)
|
||||
End Sub
|
||||
|
||||
#if Java
|
||||
public boolean _onCreateOptionsMenu(android.view.Menu menu) {
|
||||
processBA.raiseEvent(null, "create_menu", menu);
|
||||
return true;
|
||||
|
||||
}
|
||||
#End If
|
||||
#End Region
|
||||
|
||||
'Program code should go into B4XMainPage and other pages.
|
||||
2182
B4A/c_datos.bas
Normal file
53
B4J/AREstrategias.b4j
Normal file
@@ -0,0 +1,53 @@
|
||||
AppType=JavaFX
|
||||
Build1=Default,b4j.example
|
||||
File1=MainPage.bjl
|
||||
FileGroup1=New Group
|
||||
Group=Default Group
|
||||
Library1=jcore
|
||||
Library2=jfx
|
||||
Library3=b4xpages
|
||||
Module1=|relative|..\B4XMainPage
|
||||
NumberOfFiles=1
|
||||
NumberOfLibraries=3
|
||||
NumberOfModules=1
|
||||
Version=8.31
|
||||
@EndOfDesignText@
|
||||
#Region Project Attributes
|
||||
#MainFormWidth: 600
|
||||
#MainFormHeight: 600
|
||||
#End Region
|
||||
|
||||
Sub Process_Globals
|
||||
Private fx As JFX
|
||||
Private MainForm As Form
|
||||
End Sub
|
||||
|
||||
Sub AppStart (Form1 As Form, Args() As String)
|
||||
MainForm = Form1
|
||||
MainForm.Show
|
||||
Dim PagesManager As B4XPagesManager
|
||||
PagesManager.Initialize(MainForm)
|
||||
End Sub
|
||||
|
||||
'Template version: B4J-1.0
|
||||
#Region Delegates
|
||||
Sub MainForm_FocusChanged (HasFocus As Boolean)
|
||||
B4XPages.Delegate.MainForm_FocusChanged(HasFocus)
|
||||
End Sub
|
||||
|
||||
Sub MainForm_Resize (Width As Double, Height As Double)
|
||||
B4XPages.Delegate.MainForm_Resize(Width, Height)
|
||||
End Sub
|
||||
|
||||
Sub MainForm_Closed
|
||||
B4XPages.Delegate.MainForm_Closed
|
||||
End Sub
|
||||
|
||||
Sub MainForm_CloseRequest (EventData As Event)
|
||||
B4XPages.Delegate.MainForm_CloseRequest(EventData)
|
||||
End Sub
|
||||
|
||||
Public Sub MainForm_IconifiedChanged (Iconified As Boolean)
|
||||
B4XPages.Delegate.MainForm_IconifiedChanged(Iconified)
|
||||
End Sub
|
||||
#End Region
|
||||
BIN
B4J/Files/MainPage.bjl
Normal file
237
B4XMainPage.bas
Normal file
@@ -0,0 +1,237 @@
|
||||
B4A=true
|
||||
Group=Default Group
|
||||
ModulesStructureVersion=1
|
||||
Type=Class
|
||||
Version=9.85
|
||||
@EndOfDesignText@
|
||||
#Region Shared Files
|
||||
#CustomBuildAction: folders ready, %WINDIR%\System32\Robocopy.exe,"..\..\Shared Files" "..\Files"
|
||||
'Ctrl + click to sync files: ide://run?file=%WINDIR%\System32\Robocopy.exe&args=..\..\Shared+Files&args=..\Files&FilesSync=True
|
||||
'###########################################################################################################
|
||||
'###################### PULL #############################################################
|
||||
'Ctrl + click ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=..\..\gitpull.bat
|
||||
'###########################################################################################################
|
||||
'###################### PUSH #############################################################
|
||||
'Ctrl + click ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=github&Args=..\..\
|
||||
'###########################################################################################################
|
||||
#End Region
|
||||
|
||||
'Ctrl + click to export as zip: ide://run?File=%B4X%\Zipper.jar&Args=Project.zip
|
||||
|
||||
Sub Class_Globals
|
||||
Private Root As B4XView
|
||||
Private xui As XUI
|
||||
|
||||
Dim principal As C_principal
|
||||
Dim datos As c_datos
|
||||
Private b_iniciar As Button
|
||||
Private Contraseña As EditText
|
||||
Private Usuario As EditText
|
||||
Dim user As String
|
||||
Dim db As SQL
|
||||
Dim reqManager As DBRequestManager
|
||||
Public updateAvailable As C_UpdateAvailable
|
||||
Private p_configuracion As Panel
|
||||
Private p_adorno As Panel
|
||||
Private et_server As EditText
|
||||
Private lv_server As ListView
|
||||
Dim Logger As Boolean
|
||||
Private b_guarda_server As Button
|
||||
Public Provider As FileProvider
|
||||
Private l_version As Label
|
||||
End Sub
|
||||
|
||||
Public Sub Initialize
|
||||
' B4XPages.GetManager.LogEvents = True
|
||||
End Sub
|
||||
|
||||
'This event will be called once, before the page becomes visible.
|
||||
Private Sub B4XPage_Created (Root1 As B4XView)
|
||||
Root = Root1
|
||||
Root.LoadLayout("MainPage")
|
||||
principal.Initialize
|
||||
B4XPages.AddPage("principal",principal)
|
||||
datos.Initialize
|
||||
B4XPages.AddPage("datos",datos)
|
||||
updateAvailable.Initialize
|
||||
B4XPages.AddPage("updateAvailable", updateAvailable)
|
||||
reqManager.Initialize(Me, Starter.DBReqServer)
|
||||
db.Initialize(Starter.rutaBD,"kmt.db",True)
|
||||
Provider.Initialize
|
||||
l_version.Text = Application.VersionName
|
||||
End Sub
|
||||
|
||||
Sub B4XPage_Appear
|
||||
If Starter.muestraProgreso = 1 Then
|
||||
muestraProgreso("Descargando actualización")
|
||||
Starter.muestraProgreso = 0
|
||||
End If
|
||||
p_configuracion.Width = Root.Width
|
||||
p_configuracion.Height = Root.Height
|
||||
p_configuracion.Visible = False
|
||||
p_adorno.Width = Root.Width * 0.85
|
||||
p_adorno.Height = Root.Height * 0.80
|
||||
|
||||
Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_ACCESS_FINE_LOCATION)
|
||||
Wait For b4xpage_PermissionResult (Permission As String, Result As Boolean)
|
||||
If Result Then
|
||||
StartService(Tracker)
|
||||
Log("Start Tracker")
|
||||
Else
|
||||
ToastMessageShow("Sin permisos para GPS", True)
|
||||
End If
|
||||
Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_ACCESS_COARSE_LOCATION)
|
||||
Wait For b4xpage_PermissionResult (Permission As String, Result As Boolean)
|
||||
If Result Then
|
||||
StartService(Tracker)
|
||||
Log("Start Tracker")
|
||||
Else
|
||||
ToastMessageShow("Sin permisos para GPS", True)
|
||||
End If
|
||||
Log(Result)
|
||||
|
||||
If Not(Starter.GPS.GPSEnabled) Then
|
||||
ToastMessageShow("Debe Activar el GPS del Equipo.", True)
|
||||
StartActivity(Starter.GPS.LocationSettingsIntent)
|
||||
Else
|
||||
Starter.GPS.Start(0, 0)
|
||||
' If Starter.ubicacionActual.Latitude <> 0 Then GPS_LocationChanged(Starter.ubicacionActual)
|
||||
End If
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
Sub GPS_LocationChanged (Location1 As Location)
|
||||
' Log(Location1.Latitude)
|
||||
End Sub
|
||||
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||
|
||||
Private Sub b_iniciar_Click
|
||||
' If Usuario.Text <> "" Then
|
||||
'
|
||||
' Dim cmd As DBCommand
|
||||
' cmd.Initialize
|
||||
' cmd.Name = "select_usuario_AREstrategicas"
|
||||
' cmd.Parameters = Array As Object(Usuario.Text, Contraseña.Text)
|
||||
' reqManager.ExecuteQuery(cmd , 0, "usuario")
|
||||
' user = Usuario.Text
|
||||
' Else
|
||||
' MsgboxAsync("Llena los datos de acceso","Atención")
|
||||
'' B4XPages.ShowPage ("principal")
|
||||
' End If
|
||||
|
||||
B4XPages.ShowPage ("principal")
|
||||
Log(Starter.latitud & Starter.longitud)
|
||||
End Sub
|
||||
|
||||
Sub JobDone(Job As HttpJob)
|
||||
If Job.Success = False Then
|
||||
ToastMessageShow("Error: " & Job.ErrorMessage, True)
|
||||
Else
|
||||
LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211110
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim result As DBResult = reqManager.HandleJob(Job)
|
||||
If result.Tag = "usuario" Then 'query tag
|
||||
For Each records() As Object In result.Rows
|
||||
For Each k As String In result.Columns.Keys
|
||||
Log(result.Tag & ": " & k & ": " & records(result.Columns.Get(k)))
|
||||
Next
|
||||
If records(result.Columns.Get ("USUARIO")) = "OKActivo" Then
|
||||
Starter.almacen = records(result.Columns.Get ("CAT_LO_AGENCIA"))
|
||||
B4XPages.ShowPage ("principal")
|
||||
Log(Starter.almacen)
|
||||
Else
|
||||
ToastMessageShow ("Datos incorrectos",True)
|
||||
End If
|
||||
Next
|
||||
If result.Rows.Size = 0 Then
|
||||
ToastMessageShow ("Datos incorrectos",True)
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub B4XPage_CloseRequest As ResumableSub
|
||||
If p_configuracion.Visible = True Then
|
||||
p_configuracion.Visible = False
|
||||
Else
|
||||
B4XPages.ShowPage("Mainpage")
|
||||
End If
|
||||
|
||||
' Return True
|
||||
Return False
|
||||
End Sub
|
||||
|
||||
Private Sub ImageView5_Click
|
||||
p_configuracion.Visible = True
|
||||
lv_server.Clear
|
||||
lv_server.AddSingleLine("http://keymon.lat:1788")
|
||||
If Usuario.Text = "KMTS1" Then lv_server.AddSingleLine("http://11.0.0.196:1782")
|
||||
' l_server.Text = Starter.server
|
||||
et_server.Text = Starter.DBReqServer
|
||||
l_version.Visible = False
|
||||
End Sub
|
||||
|
||||
Private Sub p_configuracion_Click
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub lv_server_ItemClick (Position As Int, Value As Object)
|
||||
Starter.DBReqServer = Value
|
||||
' l_server.Text = Value
|
||||
et_server.Text = Value
|
||||
Starter.reqManager.Initialize(Me, Value)
|
||||
Log(Value)
|
||||
ToastMessageShow("Servidor modificado", False)
|
||||
End Sub
|
||||
|
||||
Private Sub b_guarda_server_Click
|
||||
Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("SERVER"))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("SERVER",et_server.text))
|
||||
Starter.DBReqServer = et_server.text
|
||||
Log("Inicializamos reqManager con " & Starter.DBReqServer)
|
||||
reqManager.Initialize(Me, Starter.DBReqServer)
|
||||
CallSubDelayed(Starter, "reinicializaReqManager")
|
||||
p_configuracion.Visible= False
|
||||
l_version.Visible = True
|
||||
End Sub
|
||||
|
||||
Private Sub b_regresa_Click
|
||||
p_configuracion.Visible = False
|
||||
l_version.Visible = True
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
Private Sub b_enviarbd_Click
|
||||
' copiaDB
|
||||
' Sleep(1000)
|
||||
Dim FileName As String = "kmt.db"
|
||||
'copy the shared file to the shared folder
|
||||
Log("xxxxxx:"&Provider.SharedFolder)
|
||||
Sleep(1000)
|
||||
File.Copy(File.DirInternal, FileName, Provider.SharedFolder, FileName)
|
||||
Dim email As Email
|
||||
email.To.Add("soporte@keymonsoft.com")
|
||||
email.Subject = "Envio Base de dados Bagon"
|
||||
email.Attachments.Add(Provider.GetFileUri(FileName))
|
||||
' email.Attachments.Add(Provider.GetFileUri(FileName)) 'second attachment
|
||||
Dim in As Intent = email.GetIntent
|
||||
in.Flags = 1 'FLAG_GRANT_READ_URI_PERMISSION
|
||||
StartActivity(in)
|
||||
End Sub
|
||||
|
||||
Private Sub b_actualizar_app_Click
|
||||
StartService(appUpdater)
|
||||
End Sub
|
||||
|
||||
' appUpdater - Mostramos el anuncio de que se esta descargando el nuevo apk
|
||||
Sub muestraProgreso(mensaje As String)
|
||||
ProgressDialogShow(mensaje)
|
||||
End Sub
|
||||
'
|
||||
' appUpdater - Ocultamos el anuncio de que se esta descargando el nuevo apk
|
||||
Sub ocultaProgreso
|
||||
ProgressDialogHide
|
||||
End Sub
|
||||
46
B4i/AREstrategias.b4i
Normal file
@@ -0,0 +1,46 @@
|
||||
Build1=Default,b4i.example
|
||||
File1=MainPage.bil
|
||||
FileGroup1=Default Group
|
||||
Group=Default Group
|
||||
Library1=icore
|
||||
Library2=b4xpages
|
||||
Module1=|relative|..\B4XMainPage
|
||||
NumberOfFiles=1
|
||||
NumberOfLibraries=2
|
||||
NumberOfModules=1
|
||||
Version=6.5
|
||||
@EndOfDesignText@
|
||||
'Code module
|
||||
#Region Project Attributes
|
||||
#ApplicationLabel: B4i Example
|
||||
#Version: 1.0.0
|
||||
'Orientation possible values: Portrait, LandscapeLeft, LandscapeRight and PortraitUpsideDown
|
||||
#iPhoneOrientations: Portrait, LandscapeLeft, LandscapeRight
|
||||
#iPadOrientations: Portrait, LandscapeLeft, LandscapeRight, PortraitUpsideDown
|
||||
#Target: iPhone, iPad
|
||||
#ATSEnabled: True
|
||||
#MinVersion: 8
|
||||
#End Region
|
||||
|
||||
Sub Process_Globals
|
||||
Public App As Application
|
||||
Public NavControl As NavigationController
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub Application_Start (Nav As NavigationController)
|
||||
NavControl = Nav
|
||||
Dim PagesManager As B4XPagesManager
|
||||
PagesManager.Initialize(NavControl)
|
||||
End Sub
|
||||
|
||||
'Template version: B4i-1.0
|
||||
#Region Delegates
|
||||
Private Sub Application_Background
|
||||
B4XPages.Delegate.Activity_Pause
|
||||
End Sub
|
||||
|
||||
Private Sub Application_Foreground
|
||||
B4XPages.Delegate.Activity_Resume
|
||||
End Sub
|
||||
#End Region
|
||||
BIN
B4i/Files/mainpage.bil
Normal file
BIN
Icon_22-[Convertido].png
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
LOGO-BAGON.png
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
27
ar.txt
Normal file
@@ -0,0 +1,27 @@
|
||||
##########
|
||||
########## ARESTRATEGICAS
|
||||
##########
|
||||
|
||||
sql.select_usuario_AREstrategicas = select 'OK' || cat_lo_estatus as usuario, cat_lo_agencia from ARESTRATEGICAS.cat_logins where cat_lo_usuario = (?) and cat_lo_contrasena = (?)
|
||||
|
||||
sql.select_datosgenerales_AR = SELECT PR_KT_CREDITO, PR_CD_NOMBRE, PR_CD_RFC, PR_CD_CURP, PR_CD_CALLE, PR_CD_NUM_EXT, PR_CD_NUM_INT, PR_CD_ALCALDIA, PR_CD_MUNICIPIO, PR_CD_ENTIDAD, PR_CD_CP, PR_CD_SEXO, PR_CD_FECHA_NAC, PR_CD_EDAD, PR_CD_EMAIL FROM ARESTRATEGICAS.vi_informacion WHERE PR_KT_ESTATUS <> 'Retirada' and PR_KT_UASIGNADOV is not null and PR_KT_CREDITO IN (SELECT PR_KT_CREDITO FROM ARESTRATEGICAS.pr_kmt_gral WHERE PR_KT_ESTATUS<>'Retirada' and PR_KT_UASIGNADOV = ?)
|
||||
|
||||
sql.select_datosfinancieros_AR = SELECT PR_KT_CREDITO, PR_KT_PRODUCTO, PR_KT_AGENCIA, PR_CF_SALDO_TOTAL, PR_CF_LIQUIDACION, PR_CF_TOTAL_A_PAGAR_DESC, PR_CF_LIQUIDACION, PR_CA_DIAS_VENCIDOS, PR_CA_DIAS_ATRASO_ACT, PR_CA_FECHA_ATRASO, PR_CA_REFERENCIA1, PR_CA_REFERENCIA2 FROM ARESTRATEGICAS.vi_informacion WHERE PR_KT_ESTATUS <> 'Retirada' and PR_KT_UASIGNADOV is not null and PR_KT_CREDITO IN (SELECT PR_KT_CREDITO FROM ARESTRATEGICAS.pr_kmt_gral WHERE PR_KT_ESTATUS<> 'Retirada' and PR_KT_UASIGNADOV = ?)
|
||||
|
||||
sql.select_fuentes_AR = SELECT * FROM ARESTRATEGICAS.CAT_FUENTE
|
||||
|
||||
sql.select_parentesco_AR = SELECT * FROM ARESTRATEGICAS.CAT_PARENTESCO
|
||||
|
||||
sql.select_accion_AR = select distinct CAT_CO_ACCION, CAT_CO_ADESCRIPCION from ARESTRATEGICAS.cat_codigos where CAT_CO_TIPO in (2,3) order by 2
|
||||
|
||||
sql.select_resultado_MA_AR = select distinct CAT_CO_ACCION, CAT_CO_RESULTADO, CAT_CO_RDESCRIPCION from cat_codigos where CAT_CO_ACCION ='MA' order by 1
|
||||
|
||||
sql.select_resultado_VC_AR = select distinct CAT_CO_ACCION, CAT_CO_RESULTADO, CAT_CO_RDESCRIPCION from cat_codigos where CAT_CO_ACCION = 'VC' order by 1
|
||||
|
||||
sql.select_resultado_CA_AR = select distinct CAT_CO_ACCION, CAT_CO_RESULTADO, CAT_CO_RDESCRIPCION from cat_codigos where CAT_CO_ACCION ='CA' order by 1
|
||||
|
||||
sql.select_resultado_BR_AR = select distinct CAT_CO_ACCION, CAT_CO_RESULTADO, CAT_CO_RDESCRIPCION from cat_codigos where CAT_CO_ACCION ='BR' order by 1
|
||||
|
||||
sql.insert_fotos_cliente_nuevo_MARIANA = insert into MARIANA.HIST_FOTO_CLIENTES_NUEVOS (HIST_FCM_CODIGO, HIST_FCM_ALMACEN, HIST_FCM_RUTA, HIST_FCM_FOTO) VALUES(?,?,?,?)
|
||||
|
||||
sql.insert_gestion_AR = insert into ARESTRATEGICAS.TMP_HIST_VISITAS(TMP_HIST_VI_CREDITO, TMP_HIST_VI_PRODUCTO, TMP_HIST_VI_VISITADOR, TMP_HIST_VI_RESULTADO, TMP_HIST_VI_CODIGO, TMP_HIST_VI_PARENTESCO, TMP_HIST_VI_COMENTARIO, TMP_HIST_VI_DTEVISITA, TMP_HIST_VI_LONGITUD, TMP_HIST_VI_LATITUD, TMP_HIST_VI_DTECAPTURA, TMP_HIST_VI_AGENCIA, TMP_HIST_VI_DPROM, TMP_HIST_VI_MPROM, HIST_VI_TIPODOMICILIO, HIST_VI_NIVELSOCIO, HIST_VI_CARACTERISTICA, HIST_VI_NIVELES, TMP_HIST_VI_IMAGEN, TMP_HIST_VI_IMAGEN2, TMP_HIST_VI_IMAGEN3, TMP_HIST_VI_IMAGEN4, HIST_VI_NATIENDE, TMP_HIST_VI_ACCION_CODIGO, TMP_HIST_VI_ACCION, TMP_HIST_VI_DIAS_ACCION, TMP_HIST_VI_PUNTOS_REF) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
|
||||
8
bagon.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
NO CREDITO
|
||||
PRODIUCTO
|
||||
NOMBRE
|
||||
CALLE
|
||||
COLONIA
|
||||
MUNICIPIO
|
||||
ESTADO
|
||||
CP
|
||||
BIN
datos-varios.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
engranes.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
1
gitpull.bat
Normal file
@@ -0,0 +1 @@
|
||||
git pull
|
||||