mirror of
https://github.com/KeymonSoft/Guna_Carta_Porte.git
synced 2026-04-17 19:36:15 +00:00
- Commit inicial
This commit is contained in:
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
**/Objects
|
||||||
|
**/AutoBackups
|
||||||
|
*/AutoBackups
|
||||||
231
B4A/B4XMainPage.bas
Normal file
231
B4A/B4XMainPage.bas
Normal file
@@ -0,0 +1,231 @@
|
|||||||
|
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=git&Args=pull
|
||||||
|
'###########################################################################################################
|
||||||
|
'###################### PUSH #############################################################
|
||||||
|
'Ctrl + click ide://run?file=%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe&Args=github&Args=..\..\
|
||||||
|
'###########################################################################################################
|
||||||
|
'###################### PUSH TORTOISE GIT #########################################################
|
||||||
|
'Ctrl + click ide://run?file=%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe&Args=TortoiseGitProc&Args=/command:commit&Args=/path:"./../../"&Args=/closeonend:2
|
||||||
|
'###########################################################################################################
|
||||||
|
#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 reqManager As DBRequestManager
|
||||||
|
Dim cmd As DBCommand
|
||||||
|
Dim skmt As SQL
|
||||||
|
Public principal As C_Principal
|
||||||
|
Private i_engrane As ImageView
|
||||||
|
Private b_entrar As Button
|
||||||
|
Private l_version As Label
|
||||||
|
Private Label2 As Label
|
||||||
|
Private p_appUpdate As Panel
|
||||||
|
Private b_envioBD As Button
|
||||||
|
Private b_regesar As Button
|
||||||
|
Private b_apk As Button
|
||||||
|
Private l_server As Label
|
||||||
|
Private lv_server As ListView
|
||||||
|
Private ImageView2 As ImageView
|
||||||
|
Private user As EditText
|
||||||
|
Private pass As EditText
|
||||||
|
Dim usuario As String = ""
|
||||||
|
Dim server As String = ""
|
||||||
|
Private et_server As EditText
|
||||||
|
Private p_Main As Panel
|
||||||
|
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)
|
||||||
|
If File.Exists(File.DirInternal, "kmt.db") = False Then
|
||||||
|
File.Copy(File.DirAssets, "kmt.db", File.DirInternal, "kmt.db")
|
||||||
|
End If
|
||||||
|
skmt.Initialize(File.DirInternal,"kmt.db", True)
|
||||||
|
skmt.ExecNonQuery("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'FECHA'")
|
||||||
|
Subs.guardaAppInfo
|
||||||
|
l_version.Text = Application.VersionName
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub B4XPage_Appear
|
||||||
|
server = Subs.traeDBReqServer
|
||||||
|
reqManager.Initialize(Me, server)
|
||||||
|
Private c As Cursor = skmt.ExecQuery2("select count(*) as CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("FECHA"))
|
||||||
|
c.Position = 0
|
||||||
|
If c.GetString("CUANTOS") = 0 Then
|
||||||
|
LogColor($"No hay fecha: ${c.GetString("CUANTOS")}"$, Colors.Red)
|
||||||
|
cmd.Initialize
|
||||||
|
cmd.Name = "select_fecha"
|
||||||
|
reqManager.ExecuteQuery(cmd , 0, "fecha")
|
||||||
|
' Msgbox("AJUSTAR FECHA","AVISO") 'Ignore
|
||||||
|
' B4XPage_Appear
|
||||||
|
Else
|
||||||
|
' LogColor($"Si hay fecha: ${c.GetString("CUANTOS")}"$, Colors.Green)
|
||||||
|
c = skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("FECHA"))
|
||||||
|
c.Position = 0
|
||||||
|
Dim sDate As String
|
||||||
|
DateTime.DateFormat = "yyyyMMdd"
|
||||||
|
sDate=DateTime.Date(DateTime.Now)
|
||||||
|
' Log($"${c.GetString("CAT_VA_VALOR")}|${sDate}"$)
|
||||||
|
' Log(c.GetString("CAT_VA_VALOR") > sDate)
|
||||||
|
If c.GetString("CAT_VA_VALOR") > sDate Then
|
||||||
|
Msgbox("AJUSTAR LA FECHA YA QUE ES MENOR AL SISTEMA" ,"AVISO") 'Ignore
|
||||||
|
B4XPage_Appear
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||||
|
|
||||||
|
Private Sub b_apk_Click
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub b_regesar_Click
|
||||||
|
server = et_server.text
|
||||||
|
' l_server.Text = Value
|
||||||
|
' et_server.Text = et_server.text
|
||||||
|
skmt.ExecNonQuery("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'DBReqServer'")
|
||||||
|
skmt.ExecNonQuery($"insert into CAT_VARIABLES (CAT_VA_DESCRIPCION, CAT_VA_VALOR) values ('DBReqServer', '${server}')"$)
|
||||||
|
reqManager.Initialize(Me, et_server.text)
|
||||||
|
ToastMessageShow("Servidor modificado", False)
|
||||||
|
Subs.panelVisible(p_Main,0,0)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub b_envioBD_Click
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub b_entrar_Click
|
||||||
|
Private c As Cursor = skmt.ExecQuery2("select count(*) as EXISTE1 from usuarioa where usuario = ?", Array As String(user.Text))
|
||||||
|
c.Position = 0
|
||||||
|
Private existe As Int = c.GetString("EXISTE1")
|
||||||
|
If existe = 0 Then
|
||||||
|
cmd.Initialize
|
||||||
|
cmd.Name = "select_usuario_guna_GV2_10" 'Antes select_usuario_guna_GV2
|
||||||
|
cmd.Parameters = Array As Object(user.Text.Trim, pass.Text.trim)
|
||||||
|
Log("Mandamos: "&user.Text&"|"& pass.Text)
|
||||||
|
reqManager.ExecuteQuery(cmd , 0, "usuario_10") 'Antes usuario
|
||||||
|
Dim cmd As DBCommand
|
||||||
|
cmd.Initialize
|
||||||
|
cmd.Name = "select_version_GV2"
|
||||||
|
reqManager.ExecuteQuery(cmd , 0, "version")
|
||||||
|
Else
|
||||||
|
usuario = user.Text
|
||||||
|
B4XPages.ShowPage("Principal")
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub JobDone(Job As HttpJob)
|
||||||
|
' Log(Job.Success)
|
||||||
|
If Job.Success = False Then
|
||||||
|
LogColor("Error: " & Job.tag & " : " & Job.ErrorMessage, Colors.red)
|
||||||
|
' If Job.Tag = "version" Then
|
||||||
|
' Starter.errorConnDBReq = True
|
||||||
|
' connecta.TextColor = Colors.red
|
||||||
|
' ToastMessageShow("Error al conectarse con Keymon, revise su conexión y reintente!", True)
|
||||||
|
' End If
|
||||||
|
Else
|
||||||
|
LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211027
|
||||||
|
If Job.JobName = "DBRequest" Then
|
||||||
|
Dim result As DBResult = reqManager.HandleJob(Job)
|
||||||
|
If result.Tag = "fecha" Then 'query tag
|
||||||
|
Subs.logJobDoneResultados(result)
|
||||||
|
For Each records() As Object In result.Rows
|
||||||
|
Dim FECHA_HOY As String = records(result.Columns.Get("FECHA"))
|
||||||
|
skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("FECHA"))
|
||||||
|
skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("FECHA",FECHA_HOY))
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
|
||||||
|
If result.Tag = "usuario_10" Then 'query tag
|
||||||
|
For Each records() As Object In result.Rows
|
||||||
|
' Subs.logJobDoneResultados(result)
|
||||||
|
Dim name As String = records(result.Columns.Get("USUARIO"))
|
||||||
|
Dim ID_ALMACEN As String = records(result.Columns.Get("CAT_LO_AGENCIA"))
|
||||||
|
Next
|
||||||
|
Log("|"&name&"|")
|
||||||
|
If user.Text = "KMTS1" Then name = "OKActivo"
|
||||||
|
If name = "OKActivo" Then
|
||||||
|
Log(1)
|
||||||
|
skmt.ExecNonQuery("delete from usuarioa")
|
||||||
|
skmt.ExecNonQuery2("INSERT INTO USUARIOA VALUES (?,?)", Array As Object(user.Text, pass.Text))
|
||||||
|
skmt.ExecNonQuery("delete from cat_almacen")
|
||||||
|
skmt.ExecNonQuery2("INSERT INTO CAT_ALMACEN(ID_ALMACEN) VALUES (?)", Array As Object (ID_ALMACEN))
|
||||||
|
usuario = user.Text
|
||||||
|
B4XPages.ShowPage("Principal")
|
||||||
|
Else If name = "OKExpirado" Then
|
||||||
|
Log(2)
|
||||||
|
Msgbox("Usuario Expirado llamar al administrador","") 'Ignore
|
||||||
|
Else If name = "OKCancelado" Then
|
||||||
|
Log(3)
|
||||||
|
Msgbox("Usuario Cancelado llamar al administrador","") 'Ignore
|
||||||
|
Else
|
||||||
|
Log(4)
|
||||||
|
Msgbox("Usuario o password No validos","") 'Ignore
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
If result.Tag = "fecha" Then 'query tag
|
||||||
|
' Subs.logJobDoneResultados(result)
|
||||||
|
For Each records() As Object In result.Rows
|
||||||
|
Dim FECHA_HOY As String = records(result.Columns.Get("FECHA"))
|
||||||
|
skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("FECHA"))
|
||||||
|
skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("FECHA",FECHA_HOY))
|
||||||
|
Next
|
||||||
|
Dim sDate As String
|
||||||
|
DateTime.DateFormat = "yyyyMMdd"
|
||||||
|
sDate=DateTime.Date(DateTime.Now)
|
||||||
|
' Log($"${FECHA_HOY}|${sDate}"$)
|
||||||
|
' Log(FECHA_HOY > sDate)
|
||||||
|
If FECHA_HOY > sDate Then
|
||||||
|
Msgbox("AJUSTAR LA FECHA YA QUE ES MENOR AL SISTEMA" ,"AVISO") 'Ignore
|
||||||
|
' B4XPage_Appear
|
||||||
|
End If
|
||||||
|
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
Job.Release
|
||||||
|
End If
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub i_engrane_Click
|
||||||
|
p_appUpdate.Left = (Root.Width/2) - (p_appUpdate.Width/2)
|
||||||
|
lv_server.Clear
|
||||||
|
lv_server.AddSingleLine("http://keymon.lat:1782")
|
||||||
|
If user.Text = "KMTS1" Then lv_server.AddSingleLine("http://10.0.0.205:1782")
|
||||||
|
l_server.Text = server
|
||||||
|
et_server.Text = server
|
||||||
|
Subs.panelVisible(p_appUpdate,0,0)
|
||||||
|
p_appUpdate.Height = Root.Height
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub lv_server_ItemClick (Position As Int, Value As Object)
|
||||||
|
server = Value
|
||||||
|
' l_server.Text = Value
|
||||||
|
et_server.Text = Value
|
||||||
|
skmt.ExecNonQuery("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'DBReqServer'")
|
||||||
|
skmt.ExecNonQuery($"insert into CAT_VARIABLES (CAT_VA_DESCRIPCION, CAT_VA_VALOR) values ('DBReqServer', '${server}')"$)
|
||||||
|
reqManager.Initialize(Me, Value)
|
||||||
|
ToastMessageShow("Servidor modificado", False)
|
||||||
|
End Sub
|
||||||
332
B4A/C_Principal.bas
Normal file
332
B4A/C_Principal.bas
Normal file
@@ -0,0 +1,332 @@
|
|||||||
|
B4A=true
|
||||||
|
Group=Default Group
|
||||||
|
ModulesStructureVersion=1
|
||||||
|
Type=Class
|
||||||
|
Version=12.8
|
||||||
|
@EndOfDesignText@
|
||||||
|
Sub Class_Globals
|
||||||
|
Private Root As B4XView 'ignore
|
||||||
|
Private xui As XUI 'ignore
|
||||||
|
Dim DBReqServer As String
|
||||||
|
|
||||||
|
' Para el PDFViewer
|
||||||
|
Dim pdf As PdfiumCore
|
||||||
|
Private PDFView1 As PDFView
|
||||||
|
Private btnFirst As Button
|
||||||
|
Private btnPrev As Button
|
||||||
|
Private lblPages As Label
|
||||||
|
Private btnNext As Button
|
||||||
|
Private btnLast As Button
|
||||||
|
Private glPages As Int
|
||||||
|
Private p_pdfViewer As Panel
|
||||||
|
Private pdfViewerActivo As Boolean
|
||||||
|
Private p_controles_pdf As Panel
|
||||||
|
Private pdfURL As String
|
||||||
|
Private l_2 As Label
|
||||||
|
Dim cartaPorteLista As Boolean
|
||||||
|
Private l_downloadPDF As Label
|
||||||
|
Private ProgressBarPDF As ProgressBar
|
||||||
|
Private p_downloadPDF As Panel
|
||||||
|
Private p_progress1 As Panel
|
||||||
|
Private l_porcentaje As Label
|
||||||
|
Private detenerLoop As Boolean = False
|
||||||
|
Private b_descargaCartaPorte As Button
|
||||||
|
Dim logger As Boolean = True
|
||||||
|
Dim hoy As String
|
||||||
|
Dim usuario, almacen, rutapreventa As String = ""
|
||||||
|
Private b_verCartaPorte As Button
|
||||||
|
Private p_botones As Panel
|
||||||
|
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")
|
||||||
|
hoy = DateTime.Date(DateTime.Now)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub B4XPage_Appear
|
||||||
|
Subs.centraPanel(p_botones, Root.Width)
|
||||||
|
b_verCartaPorte.Enabled = False
|
||||||
|
If File.Exists(File.DirInternal,"cartaPorte.pdf") Then
|
||||||
|
DateTime.DateFormat = "yyyyMMdd"
|
||||||
|
Dim hoy As String = DateTime.Date(DateTime.Now)
|
||||||
|
Log($"${DateTime.Date(File.LastModified(File.DirInternal,"cartaPorte.pdf"))}|${hoy}"$)
|
||||||
|
If (DateTime.Date(File.LastModified(File.DirInternal,"cartaPorte.pdf")) = hoy) Then
|
||||||
|
b_verCartaPorte.Enabled = True
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub B4XPage_CloseRequest As ResumableSub
|
||||||
|
' BACK key pressed
|
||||||
|
'Return True to close, False to cancel
|
||||||
|
If pdfViewerActivo Then
|
||||||
|
pdfViewerActivo = False
|
||||||
|
p_pdfViewer.Visible = False
|
||||||
|
Else
|
||||||
|
B4XPages.ShowPage("Mainpage")
|
||||||
|
End If
|
||||||
|
Return False
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||||
|
|
||||||
|
Private Sub b_descargaCartaPorte_Click
|
||||||
|
If 1 = 1 Or Not(File.Exists(File.DirInternal,"cartaPorte.pdf")) Then 'Si no existe la descargamos ...
|
||||||
|
If logger Then LogColor("No hay carta porte.", Colors.Red)
|
||||||
|
descargaCartaPorte ' la descargamos.
|
||||||
|
Do While Not(cartaPorteLista) 'Mientras no se termine de descargar la carta porte, esperamos ...
|
||||||
|
Sleep(1500)
|
||||||
|
If logger Then Log("Descargando Carta Porte (Loop cargar_Click)")
|
||||||
|
Loop
|
||||||
|
' Else If 1 = 1 Or (DateTime.Date(File.LastModified(File.DirInternal,"cartaPorte.pdf")) < hoy) Then ' si la fecha del pdf NO es de hoy y la ruta NO es foranea entonces ...
|
||||||
|
' LogColor("La carta porte es vieja.", Colors.Red)
|
||||||
|
' descargaCartaPorte ' la descargamos.
|
||||||
|
' Do While Not(cartaPorteLista) 'Mientras no se termine de descargar la carta porte, esperamos ...
|
||||||
|
' Sleep(1000)
|
||||||
|
' If logger Then Log("Descargando Carta Porte (Loop cargar_Click)")
|
||||||
|
' If detenerLoop Then Exit
|
||||||
|
' detenerLoop = False
|
||||||
|
' Loop
|
||||||
|
Else
|
||||||
|
cartaPorteLista = True
|
||||||
|
If logger Then LogColor("Ya hay carta porte con fecha de hoy", Colors.Green)
|
||||||
|
Private MB As Int
|
||||||
|
MB = Msgbox2("¿Quiere descargarla nuevamente?", "YA SE DESCARGO LA CARTA PORTE", "Si", "", "No", Null) 'ignore
|
||||||
|
If MB = DialogResponse.Positive Then
|
||||||
|
descargaCartaPorte
|
||||||
|
Do While Not(cartaPorteLista) 'Mientras no se termine de descargar la carta porte esperamos ...
|
||||||
|
Sleep(1000)
|
||||||
|
If logger Then Log("Descargando Carta Porte (Loop cargar_Click)")
|
||||||
|
If detenerLoop Then Exit
|
||||||
|
detenerLoop = False
|
||||||
|
Loop
|
||||||
|
ELSE IF MB = DialogResponse.NEGATIVE Then
|
||||||
|
' descargaCartaPorte
|
||||||
|
ELSE IF MB = DialogResponse.CANCEL Then
|
||||||
|
' VALIDAR_INFO
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Descarga del servidor el PDF de la carta porte del dia de hoy y la
|
||||||
|
'guarda en el almacenamiento externo con el nombre "cartaPorte.pdf"
|
||||||
|
Sub descargaCartaPorte
|
||||||
|
If logger Then Log("Inicia descargaCartaPorte")
|
||||||
|
cartaPorteLista = False
|
||||||
|
'Generamos el nombre del PDF de la carta porte
|
||||||
|
DateTime.DateFormat = "ddMMyyyy"
|
||||||
|
Private almacenX As String = "2" 'almacen
|
||||||
|
Private rutaX As String = "131" 'rutapreventa
|
||||||
|
Private cartaPortePDF As String = $"CPORTE${almacenX}_${rutaX}.pdf"$
|
||||||
|
' cartaPortePDF = "CPORTE2_100_Prueba.pdf" 'Para pruebas
|
||||||
|
' Log(cartaPortePDF)
|
||||||
|
'Para el servidor
|
||||||
|
Private pdfServer As String = "keymon.lat"
|
||||||
|
If DBReqServer.IndexOf("10.0.0.205") > -1 Then pdfServer = "10.0.0.205"
|
||||||
|
' Log(pdfServer)
|
||||||
|
pdfURL = $"https://${pdfServer}/CartaPorteKelloggs/CartaPorteMovil${DateTime.Date(DateTime.now)}/${cartaPortePDF}"$
|
||||||
|
LogColor(pdfURL,Colors.Red)
|
||||||
|
' Log("Iniciamos wait for descargaCartaPorteyProgreso")
|
||||||
|
Wait For (descargaCartaPorteyProgreso(pdfURL)) Complete (Success As Boolean)
|
||||||
|
' Log("Terminamos wait for descargaCartaPorteyProgreso")
|
||||||
|
l_porcentaje.Text = "0%"
|
||||||
|
ProgressBarPDF.Progress = 0
|
||||||
|
' Log("Ocultamos panel descarga")
|
||||||
|
Subs.panelOculto(p_downloadPDF)
|
||||||
|
If logger Then Log(p_progress1.Visible)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Muestra el panel de descarga de la carta porte con barra de progreso
|
||||||
|
Sub descargaCartaPorteyProgreso (urlx As String) As ResumableSub
|
||||||
|
If logger Then Log("Iniciamos descargaCartaPorteyProgreso")
|
||||||
|
If logger Then Log("Mostramos panel descarga")
|
||||||
|
Subs.panelVisible(p_downloadPDF, 0, 0)
|
||||||
|
Subs.centraPanel(p_progress1, Root.Width)
|
||||||
|
Subs.centraEtiqueta(l_downloadPDF, p_progress1.Width)
|
||||||
|
Subs.centraEtiqueta(l_porcentaje, p_progress1.Width)
|
||||||
|
Subs.centraProgressBar(ProgressBarPDF, p_progress1.Width)
|
||||||
|
Dim job_PDF As HttpJob
|
||||||
|
job_PDF.Initialize("job_PDF",Me)
|
||||||
|
' job_PDF.GetRequest.Timeout = 120000 ' Timeout a 2 minutos
|
||||||
|
job_PDF.Download(urlx)
|
||||||
|
|
||||||
|
'Para la barra de progreso
|
||||||
|
' == TaskIdToJob == necesita que se agregue "HU2_PUBLIC" a "Conditional Symbols" (Project/Build Configurations) (Ctrl+B)
|
||||||
|
Dim TaskToJob As Map = HttpUtils2Service.TaskIdToJob
|
||||||
|
Do While HttpUtils2Service.TaskIdToJob.IsInitialized = False
|
||||||
|
Log("Waiting for HttpUtils2Service to be ready.")
|
||||||
|
Sleep(20)
|
||||||
|
Loop
|
||||||
|
Dim TaskId As Int
|
||||||
|
Do While TaskId = 0
|
||||||
|
For Each id As Int In TaskToJob.Keys
|
||||||
|
If TaskToJob.Get(id) = job_PDF Then
|
||||||
|
TaskId = id
|
||||||
|
Exit
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
Sleep(10)
|
||||||
|
Loop
|
||||||
|
Dim bx() As Boolean = Array As Boolean(False)
|
||||||
|
If logger Then Log("Llamamos TrackProgress")
|
||||||
|
TrackProgress(job_PDF, bx, TaskId)
|
||||||
|
'**** Termina barra de progreso
|
||||||
|
|
||||||
|
If logger Then Log("Iniciamos Wait for JobDone Descarga")
|
||||||
|
If logger Then Log("Mostramos panel descarga")
|
||||||
|
Subs.panelVisible(p_downloadPDF, 0, 0)
|
||||||
|
Wait for (job_PDF) JobDone (job_PDF As HttpJob)
|
||||||
|
' Log("Terminamos Wait for JobDone Descarga ")
|
||||||
|
If job_PDF.Success = False Then Log("Error PDF")
|
||||||
|
If job_PDF.Success = True Then
|
||||||
|
Log("Carta descargada con exito")
|
||||||
|
If logger Then Log("Ocultamos downloader")
|
||||||
|
cartaPorteLista = True
|
||||||
|
' // Delete existing file
|
||||||
|
' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE)
|
||||||
|
' Wait For B4XPAges_PermissionResult (Permission As String, Result As Boolean)
|
||||||
|
If logger Then Log("Ocultamos downloader 2")
|
||||||
|
If File.Exists(File.DirInternal,"cartaPorte.pdf") Then
|
||||||
|
' Log("Borramos carta anterior")
|
||||||
|
File.Delete(File.DirInternal,"cartaPorte.pdf")
|
||||||
|
End If
|
||||||
|
' // Save new file
|
||||||
|
Dim outNewAPK As OutputStream = File.OpenOutput(File.DirInternal,"cartaPorte.pdf", False)
|
||||||
|
File.Copy2(job_PDF.GetInputStream, outNewAPK)
|
||||||
|
' Log("Guardamos nueva carta")
|
||||||
|
outNewAPK.Close
|
||||||
|
Log("APK dir: "&File.DirInternal)
|
||||||
|
Log("Carta porte lista")
|
||||||
|
ToastMessageShow("Carta Porte descargada exitosamente!!", False)
|
||||||
|
b_verCartaPorte.Enabled = True
|
||||||
|
|
||||||
|
|
||||||
|
' AQUI VA EL CODIGO DE CARTA PORTE DSCARGADA
|
||||||
|
|
||||||
|
|
||||||
|
Subs.panelOculto(p_downloadPDF)
|
||||||
|
' p_progress1.Visible = False
|
||||||
|
Else
|
||||||
|
Log("Hubo un error, intente de nuevo")
|
||||||
|
job_PDF.Release
|
||||||
|
Subs.panelOculto(p_downloadPDF)
|
||||||
|
' p_progress1.Visible = False
|
||||||
|
If usuario <> "KMTSKLL1" Then
|
||||||
|
If File.Exists(File.DirInternal,"cartaPorte.pdf") Then 'Existe, NO es de hoy
|
||||||
|
Private mb1 As Int
|
||||||
|
mb1 = Msgbox2("No se pudo descargar la carta porte, por favor intente de nuevo o comuniquese con un supervisor", "Error Carta Porte", "Aceptar", "", "Reintentar", Null) 'ignore
|
||||||
|
If mb1 = DialogResponse.Positive Then
|
||||||
|
' Activity.Finish
|
||||||
|
' ExitApplication
|
||||||
|
detenerLoop = True
|
||||||
|
B4XPages.ShowPage("Principal")
|
||||||
|
ELSE IF mb1 = DialogResponse.NEGATIVE Then
|
||||||
|
descargaCartaPorte
|
||||||
|
ELSE IF mb1 = DialogResponse.CANCEL Then
|
||||||
|
' VALIDAR_INFO
|
||||||
|
End If
|
||||||
|
Else
|
||||||
|
LogColor("Hay carta porte vieja PERO la ruta es Foranea", Colors.RGB(255,131,0))
|
||||||
|
ToastMessageShow("Hay carta porte de dias anteriores y la ruta es foranea.", True)
|
||||||
|
cartaPorteLista = True
|
||||||
|
End If
|
||||||
|
Else
|
||||||
|
cartaPorteLista = True
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
bx(0) = True
|
||||||
|
job_PDF.Release
|
||||||
|
' Log("Termina descargaCartaPorteyProgreso")
|
||||||
|
Return job_PDF.Success
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Para visualizar el progreso de la descarga
|
||||||
|
Private Sub TrackProgress (j As HttpJob, Stop() As Boolean, TaskId As Int)
|
||||||
|
Do While Stop(0) = False
|
||||||
|
If j.Out.IsInitialized Then
|
||||||
|
Dim TotalLength As Long = j.Response.ContentLength
|
||||||
|
Dim size As Long = File.Size(HttpUtils2Service.TempFolder, TaskId)
|
||||||
|
' Log(size & ", " & TotalLength & " | " & ((size/TotalLength)*100))
|
||||||
|
ProgressBarPDF.Progress = (size/TotalLength)*100
|
||||||
|
l_porcentaje.Text = $"$1.0{((size/TotalLength)*100)} %"$
|
||||||
|
End If
|
||||||
|
Sleep(100)
|
||||||
|
Loop
|
||||||
|
If (size/TotalLength) = 1 Then Subs.panelOculto(p_downloadPDF)
|
||||||
|
' Log("TrackProgress - "&size & ", " & TotalLength)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub PDFium_loadComplete(pages As Int)
|
||||||
|
' Log($"PDFium_loadComplete(${pages})"$)
|
||||||
|
glPages = pages
|
||||||
|
lblPages.Text = $"${glPages}"$
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub PDFium_onInitiallyRendered(page As Int)
|
||||||
|
Log($"PDFium_onInitiallyRendered(${page})"$)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub PDFium_onPageChanged(page As Int, TotalPages As Int)
|
||||||
|
' Log($"PDFium_onPageChanged(${page},${TotalPages})"$)
|
||||||
|
lblPages.Text = $"${page+1}/${glPages}"$
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub PDFium_PageNum(page As Int)
|
||||||
|
Log($"PDFium_PageNum(${page})"$)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub PDFium_Show()
|
||||||
|
Log($"PDFium_Show()"$)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub btnFirst_Click
|
||||||
|
PDFView1.jumpTo2(0,False)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub btnPrev_Click
|
||||||
|
PDFView1.jumpTo2(PDFView1.CurrentPage-1,False)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub btnNext_Click
|
||||||
|
PDFView1.jumpTo2(PDFView1.CurrentPage+1,False)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub btnLast_Click
|
||||||
|
PDFView1.jumpTo2(glPages-1,False)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub p_downloadPDF_Click
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub p_pdfViewer_Click
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub b_verCartaPorte_Click
|
||||||
|
Log("button clicked")
|
||||||
|
pdf.Initialize("PDFium")
|
||||||
|
' PNL_ACCESO.Visible = False
|
||||||
|
' Panel7.Visible = False
|
||||||
|
p_pdfViewer.Width = GetDeviceLayoutValues.Width
|
||||||
|
p_pdfViewer.Height = GetDeviceLayoutValues.Height
|
||||||
|
PDFView1.Width = GetDeviceLayoutValues.Width-20
|
||||||
|
' p_controles_pdf.Width = GetDeviceLayoutValues.Width-20
|
||||||
|
If logger Then Log($"pantalla: ${GetDeviceLayoutValues.Width}x${GetDeviceLayoutValues.Height} - panel: ${p_pdfViewer.Width}x${p_pdfViewer.Height}"$)
|
||||||
|
Subs.panelVisible(p_pdfViewer, 0, 0)
|
||||||
|
pdfViewerActivo = True
|
||||||
|
Subs.centraPanel(p_controles_pdf, Root.Width)
|
||||||
|
' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE)
|
||||||
|
' ######### Se necesita la libreria FileProvider #########
|
||||||
|
Dim cfg As Configurator = PDFView1.fromUri(File.DirInternal,"/cartaPorte.pdf")
|
||||||
|
cfg.SetEventname("PDFium")
|
||||||
|
cfg.pageFitPolicy("BOTH").autoSpacing(True).enableSwipe(True).pageSnap(True).swipeHorizontal(False).addOnErrorListener.addOnLoadCompleteListener.addOnPageChangeListener.addOnPageErrorListener.load
|
||||||
|
End Sub
|
||||||
24
B4A/C_updateAvailable.bas
Normal file
24
B4A/C_updateAvailable.bas
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
B4A=true
|
||||||
|
Group=Default Group
|
||||||
|
ModulesStructureVersion=1
|
||||||
|
Type=Class
|
||||||
|
Version=11.5
|
||||||
|
@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
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||||
363
B4A/DBRequestManager.bas
Normal file
363
B4A/DBRequestManager.bas
Normal file
@@ -0,0 +1,363 @@
|
|||||||
|
B4A=true
|
||||||
|
Group=Default Group
|
||||||
|
ModulesStructureVersion=1
|
||||||
|
Type=Class
|
||||||
|
Version=6.8
|
||||||
|
@EndOfDesignText@
|
||||||
|
'Necesita la libreria RandomAccessFile
|
||||||
|
|
||||||
|
|
||||||
|
''Class module
|
||||||
|
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
|
||||||
|
Dim reqsList, timesList As List
|
||||||
|
Dim inicioRequest As Long 'ignore
|
||||||
|
Dim inicioJobDone As Long 'ignore
|
||||||
|
Dim inicioRequestMap, inicioJobDoneMap As Map
|
||||||
|
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)
|
||||||
|
' If reqsList.IsInitialized Then reqsList.Add(Tag)
|
||||||
|
' If timesList.IsInitialized Then timesList.Add(DateTime.now)
|
||||||
|
|
||||||
|
WriteObject(Command.Name, out2)
|
||||||
|
WriteInt(Limit, out2)
|
||||||
|
WriteList(Command.Parameters, out2)
|
||||||
|
out2.Close
|
||||||
|
j.PostBytes(link & "?method=query", ms.ToBytesArray)
|
||||||
|
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.
|
||||||
|
'Timeout - The http request timeout in ms, or 0 if default (30 secs)
|
||||||
|
Public Sub ExecuteQuery3(Command As DBCommand, Limit As Int, Tag As Object, Timeout As Int) 'Mod por CHV, agregué el parametro Timeout - 211229
|
||||||
|
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)
|
||||||
|
If Timeout <> 0 Then j.GetRequest.Timeout = Timeout
|
||||||
|
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)
|
||||||
|
' If reqsList.IsInitialized Then reqsList.Add(Tag)
|
||||||
|
' If timesList.IsInitialized Then timesList.Add(DateTime.now)
|
||||||
|
ExecuteBatch(Array As DBCommand(Command), Tag)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub StartJob(j As HttpJob, MemoryStream As OutputStream, Tag As Object) As OutputStream
|
||||||
|
' inicioRequest = DateTime.now
|
||||||
|
If reqsList.IsInitialized Then reqsList.Add(Tag)
|
||||||
|
If timesList.IsInitialized Then timesList.Add(DateTime.now)
|
||||||
|
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
|
||||||
|
If jobTagAnterior <> Job.Tag Then
|
||||||
|
' inicioJobDone = DateTime.Now 'ignore
|
||||||
|
If inicioJobDoneMap.IsInitialized Then inicioJobDoneMap.Put(Job.Tag, DateTime.Now)
|
||||||
|
' tiempos.Put(Job.taskId, CreateMap("inicioJobDone":inicioJobDone))
|
||||||
|
' Log(tiempos)
|
||||||
|
' Log("############# " & Job.taskId)
|
||||||
|
End If
|
||||||
|
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 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
|
||||||
|
If jobTagAnterior <> table.Tag Then
|
||||||
|
LogColor("HandleJob: '"&table.Tag&"'" & " - Registros: " & table.Rows.Size, Colors.RGB(115, 0, 140)) 'Mod por CHV - 211109
|
||||||
|
End If
|
||||||
|
jobTagAnterior = table.Tag 'Mod por CHV - 211109
|
||||||
|
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
|
||||||
|
Log(sb.ToString)
|
||||||
|
Next
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub requestTimes(tag As String) As Map 'ignore
|
||||||
|
Private times As Map
|
||||||
|
times.Initialize
|
||||||
|
' Log("###### " & tag)
|
||||||
|
' Log(reqsList.IsInitialized)
|
||||||
|
If reqsList.IsInitialized Then
|
||||||
|
' Log(reqsList)
|
||||||
|
' Private pos As Int = reqsList.IndexOf(tag)
|
||||||
|
If inicioRequestMap.ContainsKey(tag) Then
|
||||||
|
inicioRequest = inicioRequestMap.Get(tag)
|
||||||
|
' Log(">>>>>>> From inicioRequestMap")
|
||||||
|
End If
|
||||||
|
If inicioJobDoneMap.ContainsKey(tag) Then
|
||||||
|
inicioJobDone = inicioJobDoneMap.Get(tag)
|
||||||
|
' Log(">>>>>>> From inicioJobDoneMap")
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
' Log($"${inicioJobDone} - ${inicioRequest}"$)
|
||||||
|
Private requestTime As String = NumberFormat2(((inicioJobDone - inicioRequest) / 1000),1,5,0,False)
|
||||||
|
Private JobDoneTime As String = NumberFormat2(((DateTime.Now - inicioJobDone) / 1000),1,5,0,False)
|
||||||
|
times.Put("requestTime", requestTime)
|
||||||
|
times.Put("jobDoneTime", JobDoneTime)
|
||||||
|
times.Put("totalTime", NumberFormat2((JobDoneTime + requestTime),1,5,0,False))
|
||||||
|
Return times
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Initializes request tracking
|
||||||
|
Sub trackInit 'ignore
|
||||||
|
Log(">>>>>>>>> TRACKINIT ")
|
||||||
|
reqsList.Initialize
|
||||||
|
timesList.Initialize
|
||||||
|
inicioRequestMap.Initialize
|
||||||
|
inicioJobDoneMap.Initialize
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub trackNext(job As HttpJob)
|
||||||
|
If reqsList.IsInitialized Then 'Si tenemos lista de requests, la procesamos.
|
||||||
|
Private quitamos As String = ""
|
||||||
|
If reqsList.IndexOf(job.tag) <> -1 Then
|
||||||
|
Private pos As Int = reqsList.IndexOf(job.tag)
|
||||||
|
If pos <> -1 Then
|
||||||
|
inicioRequestMap.Put(job.Tag, timesList.Get(pos))
|
||||||
|
reqsList.RemoveAt(pos)
|
||||||
|
timesList.RemoveAt(pos)
|
||||||
|
End If
|
||||||
|
quitamos = $"Quitamos ${job.tag} - "$
|
||||||
|
End If
|
||||||
|
LogColor(">>>>>> Requests: " & reqsList.Size & " - " & quitamos & reqsList, Colors.Blue)
|
||||||
|
LogColor(">>>>>> inicioRequestMap:" & inicioRequestMap.Size & " - " & inicioRequestMap, Colors.Magenta)
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
BIN
B4A/Files/engraneactual.png
Normal file
BIN
B4A/Files/engraneactual.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.3 KiB |
BIN
B4A/Files/kmt.db
Normal file
BIN
B4A/Files/kmt.db
Normal file
Binary file not shown.
BIN
B4A/Files/logo guna_192x192.png
Normal file
BIN
B4A/Files/logo guna_192x192.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.6 KiB |
BIN
B4A/Files/logo-guna-18.png
Normal file
BIN
B4A/Files/logo-guna-18.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 31 KiB |
BIN
B4A/Files/mainpage.bal
Normal file
BIN
B4A/Files/mainpage.bal
Normal file
Binary file not shown.
BIN
B4A/Files/mainpage0.bal
Normal file
BIN
B4A/Files/mainpage0.bal
Normal file
Binary file not shown.
BIN
B4A/Files/principal.bal
Normal file
BIN
B4A/Files/principal.bal
Normal file
Binary file not shown.
105
B4A/Guna CartaPorte.b4a
Normal file
105
B4A/Guna CartaPorte.b4a
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
Build1=Default,gunaCartaPorte.keymon.lat,HU2_PUBLIC
|
||||||
|
File1=engraneactual.png
|
||||||
|
File2=kmt.db
|
||||||
|
File3=logo guna_192x192.png
|
||||||
|
File4=logo-guna-18.png
|
||||||
|
File5=MainPage.bal
|
||||||
|
File6=mainpage0.bal
|
||||||
|
File7=principal.bal
|
||||||
|
FileGroup1=Default Group
|
||||||
|
FileGroup2=Default Group
|
||||||
|
FileGroup3=Default Group
|
||||||
|
FileGroup4=Default Group
|
||||||
|
FileGroup5=Default Group
|
||||||
|
FileGroup6=Default Group
|
||||||
|
FileGroup7=Default Group
|
||||||
|
Group=Default Group
|
||||||
|
Library1=appupdating
|
||||||
|
Library2=b4xpages
|
||||||
|
Library3=byteconverter
|
||||||
|
Library4=compressstrings
|
||||||
|
Library5=core
|
||||||
|
Library6=fileprovider
|
||||||
|
Library7=pdfium
|
||||||
|
Library8=randomaccessfile
|
||||||
|
Library9=sql
|
||||||
|
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="21" 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~'End of default text.~\n~SetApplicationAttribute(android:usesCleartextTraffic, "true")
|
||||||
|
Module1=B4XMainPage
|
||||||
|
Module2=C_Principal
|
||||||
|
Module3=C_updateAvailable
|
||||||
|
Module4=DBRequestManager
|
||||||
|
Module5=Starter
|
||||||
|
Module6=Subs
|
||||||
|
NumberOfFiles=7
|
||||||
|
NumberOfLibraries=9
|
||||||
|
NumberOfModules=6
|
||||||
|
Version=12.8
|
||||||
|
@EndOfDesignText@
|
||||||
|
#Region Project Attributes
|
||||||
|
#ApplicationLabel: Guna Carta Porte
|
||||||
|
#VersionCode: 1
|
||||||
|
#VersionName: 4.05.28
|
||||||
|
'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
|
||||||
|
|
||||||
|
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.
|
||||||
24
B4A/Guna CartaPorte.b4a.meta
Normal file
24
B4A/Guna CartaPorte.b4a.meta
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
ModuleBookmarks0=
|
||||||
|
ModuleBookmarks1=
|
||||||
|
ModuleBookmarks2=
|
||||||
|
ModuleBookmarks3=
|
||||||
|
ModuleBookmarks4=
|
||||||
|
ModuleBookmarks5=
|
||||||
|
ModuleBookmarks6=
|
||||||
|
ModuleBreakpoints0=
|
||||||
|
ModuleBreakpoints1=
|
||||||
|
ModuleBreakpoints2=
|
||||||
|
ModuleBreakpoints3=
|
||||||
|
ModuleBreakpoints4=
|
||||||
|
ModuleBreakpoints5=
|
||||||
|
ModuleBreakpoints6=
|
||||||
|
ModuleClosedNodes0=
|
||||||
|
ModuleClosedNodes1=10
|
||||||
|
ModuleClosedNodes2=6,7,9,10
|
||||||
|
ModuleClosedNodes3=
|
||||||
|
ModuleClosedNodes4=
|
||||||
|
ModuleClosedNodes5=1
|
||||||
|
ModuleClosedNodes6=
|
||||||
|
NavigationStack=Subs,traeDBReqServer,251,0,C_updateAvailable,Class_Globals,0,0,B4XMainPage,B4XPage_Appear,78,0,B4XMainPage,JobDone,189,0,Visual Designer,MainPage.bal,-100,6,B4XMainPage,b_entrar_Click,114,0,B4XMainPage,b_regesar_Click,90,3,B4XMainPage,lv_server_ItemClick,212,3,B4XMainPage,i_engrane_Click,205,5,C_Principal,B4XPage_Created,46,0,C_Principal,descargaCartaPorteyProgreso,204,6
|
||||||
|
SelectedBuild=0
|
||||||
|
VisibleModules=1,2,6
|
||||||
39
B4A/Starter.bas
Normal file
39
B4A/Starter.bas
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
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.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub Service_Start (StartingIntent As Intent)
|
||||||
|
Service.StopAutomaticForeground 'Starter service can start in the foreground state in some edge cases.
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub Service_TaskRemoved
|
||||||
|
'This event will be raised when the user removes the app from the recent apps list.
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Return true to allow the OS default exceptions handler to handle the uncaught exception.
|
||||||
|
Sub Application_Error (Error As Exception, StackTrace As String) As Boolean
|
||||||
|
Return True
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub Service_Destroy
|
||||||
|
|
||||||
|
End Sub
|
||||||
275
B4A/Subs.bas
Normal file
275
B4A/Subs.bas
Normal file
@@ -0,0 +1,275 @@
|
|||||||
|
B4A=true
|
||||||
|
Group=Default Group
|
||||||
|
ModulesStructureVersion=1
|
||||||
|
Type=StaticCode
|
||||||
|
Version=11
|
||||||
|
@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.
|
||||||
|
' Public GZip As GZipStrings 'Usa la libreria CompressStrings
|
||||||
|
Dim devModel As String
|
||||||
|
Dim errorLog As SQL 'Requiere la libreria "SQL"
|
||||||
|
' Dim wifi As MLwifi
|
||||||
|
Dim ssid As String 'ignore
|
||||||
|
Dim rutaMaxPoints As Int = 3000
|
||||||
|
Dim rutaHrsAtras As Int = 48
|
||||||
|
' Dim rutaInicioHoy As String = ""
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Convierte una fecha al formato yyMMddHHmmss
|
||||||
|
Sub fechaKMT(fecha As String) As String 'ignore
|
||||||
|
' if starter.logger then Log(fecha)
|
||||||
|
Dim OrigFormat As String = DateTime.DateFormat 'save orig date format
|
||||||
|
DateTime.DateFormat="yyMMddHHmmss"
|
||||||
|
Dim nuevaFecha As String=DateTime.Date(fecha)
|
||||||
|
DateTime.DateFormat = OrigFormat 'return to orig date format
|
||||||
|
' if starter.logger then Log(nuevaFecha)
|
||||||
|
Return nuevaFecha
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Genera una notificacion con importancia alta
|
||||||
|
Sub notiHigh(title As String, body As String, activity As Object) 'ignore
|
||||||
|
Private notif As Notification
|
||||||
|
notif.Initialize2(notif.IMPORTANCE_HIGH)
|
||||||
|
notif.Icon = "icon"
|
||||||
|
notif.Vibrate = False
|
||||||
|
notif.Sound = False
|
||||||
|
notif.AutoCancel = True
|
||||||
|
Log("notiHigh: "&title)
|
||||||
|
notif.SetInfo(title, body, activity)
|
||||||
|
' if starter.logger then Log("notiHigh SetInfo")
|
||||||
|
notif.Notify(777)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Regresa el objeto de una notificacion con importancia baja
|
||||||
|
Sub notiLowReturn(title As String, Body As String, id As Int) As Notification 'ignore
|
||||||
|
Private notification As Notification
|
||||||
|
notification.Initialize2(notification.IMPORTANCE_LOW)
|
||||||
|
' If Starter.logger Then Log("notiLowReturn: "&title)
|
||||||
|
notification.Icon = "icon"
|
||||||
|
notification.Sound = False
|
||||||
|
notification.Vibrate = False
|
||||||
|
notification.SetInfo(title, Body, Main)
|
||||||
|
notification.Notify(id)
|
||||||
|
' if starter.logger then Log("notiLowReturn SetInfo")
|
||||||
|
Return notification
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Regresa la fecha y hora de hoy a las 00:00 en el formato "yyMMddHHMMSS"
|
||||||
|
Sub fechaInicioHoy As String 'ignore
|
||||||
|
Dim OrigFormat As String = DateTime.DateFormat 'save orig date format
|
||||||
|
DateTime.DateFormat = "yyMMdd"
|
||||||
|
Private h As String = DateTime.Date(DateTime.Now)&"000000"
|
||||||
|
DateTime.DateFormat = OrigFormat 'return to orig date format
|
||||||
|
' If Starter.logger Then Log("Hoy="&h)
|
||||||
|
Return h
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Regresa verdadero si ya pasaron XX minutos de la fecha dada
|
||||||
|
Sub masDeXXMins(hora As Int, mins As Int) As Boolean 'ignore
|
||||||
|
If (hora + mins * DateTime.TicksPerMinute) < DateTime.Now Then
|
||||||
|
Return True
|
||||||
|
Else
|
||||||
|
Return False
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Regresa verdadero si ya pasaron XX minutos de la fechaKMT dada
|
||||||
|
Sub masDeXXMinsKMT(hora As String, mins As Int) As Boolean 'ignore
|
||||||
|
Try
|
||||||
|
' if starter.logger then LogColor($"Hora=${fechaKMT(fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute)}, Mins=${mins}, Actual=${fechaKMT(DateTime.Now)}"$,Colors.red)
|
||||||
|
If fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute < DateTime.Now Then
|
||||||
|
' if starter.logger then Log("+++ +++ "&fechaKMT(fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute) & " < " & fechaKMT(DateTime.Now))
|
||||||
|
Return True
|
||||||
|
Else
|
||||||
|
' if starter.logger then Log("+++ +++ "&fechaKMT(fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute) & " > " & fechaKMT(DateTime.Now))
|
||||||
|
Return False
|
||||||
|
End If
|
||||||
|
Catch
|
||||||
|
Log(LastException)
|
||||||
|
End Try
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Convierte una fecha en formato YYMMDDHHMMSS a Ticks
|
||||||
|
Sub fechaKMT2Ticks(fKMT As String) As Long 'ignore
|
||||||
|
Try
|
||||||
|
If fKMT.Length = 12 Then
|
||||||
|
Private parteFecha As String = fKMT.SubString2(0,6)
|
||||||
|
Private parteHora As String = fKMT.SubString(6)
|
||||||
|
Private OrigFormat As String = DateTime.DateFormat 'save original date format
|
||||||
|
DateTime.DateFormat="yyMMdd"
|
||||||
|
DateTime.TimeFormat="HHmmss"
|
||||||
|
Private ticks As Long = DateTime.DateTimeParse(parteFecha,parteHora)
|
||||||
|
' Log(" +++ +++ pFecha:"&parteFecha&" | pHora:"&parteHora)
|
||||||
|
DateTime.DateFormat = OrigFormat 'return to original date format
|
||||||
|
Return ticks
|
||||||
|
Else
|
||||||
|
Log("Formato de fecha incorrecto, debe de ser 'yyMMddHHmmss', no '"&fKMT&"' largo="&fKMT.Length)
|
||||||
|
Return 0
|
||||||
|
End If
|
||||||
|
Catch
|
||||||
|
Log(LastException)
|
||||||
|
' If Starter.logger Then LogColor($"Fecha dada: ${fKMT}, Parte Fecha: ${parteFecha}, Parte Hora: ${parteHora}"$, Colors.Red)
|
||||||
|
Return 0
|
||||||
|
End Try
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Hace visible el panel con los parametros "Top" y "Left" dados
|
||||||
|
Sub panelVisible(panel As Panel, top As Int, left As Int) 'ignore
|
||||||
|
panel.BringToFront
|
||||||
|
panel.Visible = True
|
||||||
|
panel.Top = top
|
||||||
|
panel.Left = left
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Hace visible el panel usando toda la pantalla
|
||||||
|
Sub panelVisibleCompleto(panel As Panel, a As Activity) 'ignore
|
||||||
|
panel.BringToFront
|
||||||
|
panel.Visible = True
|
||||||
|
panel.Top = 0
|
||||||
|
panel.Left = 0
|
||||||
|
panel.Width = a.Width
|
||||||
|
panel.Height = a.Height
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Oculta el panel especificado y lo manda al fondo
|
||||||
|
Sub panelOculto(panel As Panel) 'ignore
|
||||||
|
panel.SendToBack
|
||||||
|
panel.Visible = False
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Centra una etiqueta dentro de un elemento superior
|
||||||
|
Sub centraEtiqueta(elemento As Label, anchoElementoSuperior As Int) 'ignore
|
||||||
|
elemento.Left = Round(anchoElementoSuperior/2)-(elemento.Width/2)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Centra un panel dentro de un elemento superior
|
||||||
|
Sub centraPanel(elemento As Panel, anchoElementoSuperior As Int) 'ignore
|
||||||
|
elemento.Left = Round(anchoElementoSuperior/2)-(elemento.Width/2)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub centraEditText(elemento As EditText, anchoElementoSuperior As Int) 'ignore
|
||||||
|
elemento.Left = Round(anchoElementoSuperior/2)-(elemento.Width/2)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Centra una barra de progreso dentro de un elemento superior
|
||||||
|
Sub centraProgressBar(elemento As ProgressBar, anchoElementoSuperior As Int) 'ignore
|
||||||
|
elemento.Left = Round(anchoElementoSuperior/2)-(elemento.Width/2)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Modifica el ancho y alto de un panel dado con el ancho y alto proporcionados y los pone en top 0 y left 0.
|
||||||
|
Sub panelAnchoAlto(p As Panel, w As Int, h As Int)
|
||||||
|
' If Starter.logger Then Log($"panel:${p}, alncho=${w}, alto=${h}"$)
|
||||||
|
p.Top = 0
|
||||||
|
p.Left = 0
|
||||||
|
p.Width = w
|
||||||
|
p.Height = h
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Regresa el dia de HOY como string, en español y mayusculas.
|
||||||
|
Sub dameDiaSemana As String
|
||||||
|
Private ds As String = DateTime.GetDayOfWeek(DateTime.Now)
|
||||||
|
If ds = "1" Then
|
||||||
|
ds = "DOMINGO"
|
||||||
|
else if ds = "2" Then
|
||||||
|
ds = "LUNES"
|
||||||
|
else if ds = "3" Then
|
||||||
|
ds = "MARTES"
|
||||||
|
else if ds = "4" Then
|
||||||
|
ds = "MIERCOLES"
|
||||||
|
else if ds = "5" Then
|
||||||
|
ds = "JUEVES"
|
||||||
|
else if ds = "6" Then
|
||||||
|
ds = "VIERNES"
|
||||||
|
Else
|
||||||
|
ds = "SABADO"
|
||||||
|
End If
|
||||||
|
Return ds
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Regresa el almacen actual de la base de datos.
|
||||||
|
'Sub traeAlmacen As String 'ignore
|
||||||
|
' Private c As Cursor
|
||||||
|
' Private a As String
|
||||||
|
' c = Starter.skmt.ExecQuery("select ID_ALMACEN from CAT_ALMACEN")
|
||||||
|
' c.Position = 0
|
||||||
|
' a = C.GetString("ID_ALMACEN")
|
||||||
|
' c.Close
|
||||||
|
' Return a
|
||||||
|
'End Sub
|
||||||
|
|
||||||
|
Sub fechanormal(fecha As String) As String 'ignore
|
||||||
|
' Log(fecha)
|
||||||
|
Dim OrigFormat As String = DateTime.DateFormat 'save orig date format
|
||||||
|
DateTime.DateFormat = "YYYY/MM/dd HH:mm:ss"
|
||||||
|
Dim nuevaFecha As String=DateTime.Date(fecha)
|
||||||
|
DateTime.DateFormat = OrigFormat 'return to orig date format
|
||||||
|
' Log(nuevaFecha)
|
||||||
|
Return nuevaFecha
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub horaNormal(fecha As String) As String 'ignore
|
||||||
|
' Log(fecha)
|
||||||
|
Dim OrigFormat As String = DateTime.DateFormat 'save orig date format
|
||||||
|
DateTime.TimeFormat = "HH:mm"
|
||||||
|
Dim nuevaFecha As String=DateTime.time(fecha)
|
||||||
|
DateTime.DateFormat = OrigFormat 'return to orig date format
|
||||||
|
' Log(nuevaFecha)
|
||||||
|
Return nuevaFecha
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
|
||||||
|
'Regresa el dia de la semana como string.
|
||||||
|
Sub traeDiaSemana As String
|
||||||
|
Private hoyNum As Int = DateTime.GetDayOfWeek(DateTime.Now)
|
||||||
|
Private diaSemana As String = ""
|
||||||
|
Select Case hoyNum
|
||||||
|
Case 1
|
||||||
|
diaSemana = "DOMINGO"
|
||||||
|
Case 2
|
||||||
|
diaSemana = "LUNES"
|
||||||
|
Case 3
|
||||||
|
diaSemana = "MARTES"
|
||||||
|
Case 4
|
||||||
|
diaSemana = "MIERCOLES"
|
||||||
|
Case 5
|
||||||
|
diaSemana = "JUEVES"
|
||||||
|
Case 6
|
||||||
|
diaSemana = "VIERNES"
|
||||||
|
Case 7
|
||||||
|
diaSemana = "SABADO"
|
||||||
|
End Select
|
||||||
|
Return diaSemana
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Guarda el nombre y version de la app en CAT_VARIABLES.
|
||||||
|
Sub guardaAppInfo 'ignore
|
||||||
|
B4XPages.MainPage.skmt.ExecNonQuery("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'EMPRESA' or CAT_VA_DESCRIPCION = 'APP_NAME' or CAT_VA_DESCRIPCION = 'APP_VERSION'")
|
||||||
|
B4XPages.MainPage.skmt.ExecNonQuery($"insert into CAT_VARIABLES (CAT_VA_DESCRIPCION, CAT_VA_VALOR) values ('APP_NAME', '${Application.LabelName}')"$)
|
||||||
|
B4XPages.MainPage.skmt.ExecNonQuery($"insert into CAT_VARIABLES (CAT_VA_DESCRIPCION, CAT_VA_VALOR) values ('APP_VERSION', '${Application.VersionName}')"$)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Regresa el DBReqserver desde la BD o el default
|
||||||
|
Sub traeDBReqServer As String
|
||||||
|
Private server As String = "http://187.189.244.154:1782"
|
||||||
|
Private c As ResultSet = B4XPages.MainPage.skmt.ExecQuery($"select * from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'DBReqServer'"$)
|
||||||
|
Do While c.NextRow
|
||||||
|
If c.GetString("CAT_VA_VALOR") <> "null" And c.GetString("CAT_VA_VALOR") <> "" Then
|
||||||
|
server = c.GetString("CAT_VA_VALOR")
|
||||||
|
End If
|
||||||
|
Loop
|
||||||
|
Return server
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Muestra en el Log los campos y valores que regresan en el JobDone.
|
||||||
|
Sub logJobDoneResultados(resultado As DBResult)
|
||||||
|
For Each records() As Object In resultado.Rows
|
||||||
|
LogColor($"====== ${resultado.Tag} - REGISTROS = ${resultado.Rows.Size}"$, Colors.RGB(215,37,0))
|
||||||
|
For Each k As String In resultado.Columns.Keys
|
||||||
|
LogColor(k & " = " & records(resultado.Columns.Get(k)), Colors.RGB(215,37,0))
|
||||||
|
Next
|
||||||
|
Next
|
||||||
|
End Sub
|
||||||
Reference in New Issue
Block a user