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