mirror of
https://github.com/KeymonSoft/Guna_Carta_Porte.git
synced 2026-04-19 20:29:15 +00:00
332 lines
11 KiB
QBasic
332 lines
11 KiB
QBasic
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 |