mirror of
https://github.com/KeymonSoft/Guna_Carta_Porte.git
synced 2026-04-22 21:50:24 +00:00
- Commit inicial
This commit is contained in:
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
|
||||
Reference in New Issue
Block a user