Files
Guna_Carta_Porte/B4A/C_Principal.bas
cvaldes1201 970144b626 ...
2024-07-22 16:28:01 -06:00

487 lines
17 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
Private et_ruta As EditText
Private l_ruta1 As Label
Private l_almacen As Label
Dim b As Cursor
Private b_check As Button
Dim reqManager As DBRequestManager
Dim cmd As DBCommand
Dim c As Cursor
Dim RES As String
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
reqManager.Initialize(Me, Subs.traeDBReqServer)
b_check.visible = True
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
b_descargaCartaPorte.Enabled = False
' et_ruta.Text = "131"
l_almacen.Text= Subs.traeAlmacen
et_ruta.RequestFocus
c = B4XPages.MainPage.skmt.ExecQuery("SELECT * FROM CHECADO_CHECK")
If c.RowCount = 0 Then
b_check.Visible = False
Else
b_check.Visible = True
End If
checachek
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
cmd.Initialize
cmd.Name = "select_cat_placa_guna"
cmd.Parameters = Array As Object(Subs.traeAlmacen,et_ruta.Text)
reqManager.ExecuteQuery(cmd , 0, "placa")
' cmd.Initialize
' cmd.Name = "select_cat_kmt_info_guna"
' cmd.Parameters = Array As Object(almacen,et_ruta.Text)
' reqManager.ExecuteQuery(cmd , 0, "kmt_datos")
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 rutaX As String = et_ruta.text 'rutaPreventa
Private almacenX As String = Subs.traeAlmacen
'#################################
' Private almacenX As String = "2" 'almacen
'#################################
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)
Log(DateTime.Date(DateTime.now))
pdfURL = $"https://${pdfServer}/CartaPorteGuna/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 DESCARGADA!!!!!
B4XPages.MainPage.skmt.ExecNonQuery("DELETE FROM RUTAA")
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO RUTAA(RUTAA) VALUES (?)", Array As Object (et_ruta.TEXT))
cmd.Initialize
cmd.Name = "insert_checkcp_GUNA"
cmd.Parameters = Array As Object(Subs.traeAlmacen,et_ruta.Text,B4XPages.MainPage.usuario)
reqManager.ExecuteCommand(cmd , $"ins_checkcpPendientes_head_${usuario}"$)
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
Private Sub et_ruta_TextChanged (Old As String, New As String)
If New <> "" Then
b_descargaCartaPorte.Enabled = True
Else
b_descargaCartaPorte.Enabled = False
End If
End Sub
Sub checachek
b = B4XPages.MainPage.skmt.ExecQuery("SELECT CHECADO FROM CHECADO_CHECK")
If b.RowCount > 0 Then
b.Position = 0
If b.GetString("CHECADO") = 0 Then
b_check.Visible = True
Else If b.GetString("CHECADO") = 1 Then
b_check.Visible =False
End If
b.Close
End If
End Sub
Private Sub b_check_Click
B4XPages.ShowPage("checklist")
End Sub
Sub et_ruta_EnterPressed
If et_ruta.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
et_ruta.Text = ""
B4XPages.MainPage.skmt.ExecNonQuery("delete from CHECADO_CHECK")
B4XPages.MainPage.skmt.ExecNonQuery("delete from CHECKLIST2")
B4XPages.MainPage.skmt.ExecNonQuery("delete from PLACAS")
' Starter.skmt.ExecNonQuery("delete from kmt_info")
B4XPages.MainPage.skmt.ExecNonQuery("DELETE FROM RUTAA")
B4XPage_Appear
End If
' Starter.waypointsOrdered.Clear
End If
End Sub
Sub JobDone(Job As HttpJob)
Log("JOBDONE CLIENTE . " & Job.Success)
If Job.Success = False Then
' ToastMessageShow("Error: " & Job.ErrorMessage, True)
' LogColor("JobDone Error: '" & reqManager.HandleJob(Job).tag, Colors.red) 'Mod por CHV - 211027
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 = "placa" Then 'query tag
B4XPages.MainPage.skmt.ExecNonQuery("delete from PLACAS")
For Each records() As Object In RESULT.Rows
Dim placa As String = records(RESULT.Columns.Get("CAT_VE_PLACAS"))
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO PLACAS(PLACA) VALUES (?)", Array As Object (placa))
B4XPage_Appear
Next
End If
End If
' If Job.JobName = "DBRequest" Then
' Dim RESULT As DBResult = reqManager.HandleJob(Job)
' If RESULT.Tag = "kmt_datos" Then 'query tag
' For Each records() As Object In RESULT.Rows
'
' Dim CAT_CL_CODIGO As String = records(RESULT.Columns.Get("CAT_VE_PLACAS"))
' Dim CAT_CL_RUTA As String = records(RESULT.Columns.Get("CAT_VE_PLACAS"))
' Dim CAT_CL_DIAS_VISITA As String = records(RESULT.Columns.Get("CAT_VE_PLACAS"))
' Dim CAT_CL_NOMBRE As String = records(RESULT.Columns.Get("CAT_VE_PLACAS"))
' Dim CAT_CL_ATIENDE1 As String = records(RESULT.Columns.Get("CAT_VE_PLACAS"))
' Dim CAT_CL_ATIENTE2 As String = records(RESULT.Columns.Get("CAT_VE_PLACAS"))
' Dim CAT_CL_TELEFONO As String = records(RESULT.Columns.Get("CAT_VE_PLACAS"))
' Dim CAT_CL_EMAIL As String = records(RESULT.Columns.Get("CAT_VE_PLACAS"))
' Dim CAT_CL_CALLE As String = records(RESULT.Columns.Get("CAT_VE_PLACAS"))
' Dim CAT_CL_NOEXT As String = records(RESULT.Columns.Get("CAT_VE_PLACAS"))
' Dim CAT_CL_NOINT As String = records(RESULT.Columns.Get("CAT_VE_PLACAS"))
' Dim CAT_CL_CALLE1 As String = records(RESULT.Columns.Get("CAT_VE_PLACAS"))
' Dim CAT_CL_CALLE2 As String = records(RESULT.Columns.Get("CAT_VE_PLACAS"))
' Dim CAT_CL_COLONIA As String = records(RESULT.Columns.Get("CAT_VE_PLACAS"))
' Dim CAT_CL_MUNI As String = records(RESULT.Columns.Get("CAT_VE_PLACAS"))
' Dim CAT_CL_EDO As String = records(RESULT.Columns.Get("CAT_VE_PLACAS"))
' Dim CAT_CL_CP As String = records(RESULT.Columns.Get("CAT_VE_PLACAS"))
' Dim CAT_CL_LONG As String = records(RESULT.Columns.Get("CAT_VE_PLACAS"))
' Dim CAT_CL_LAT As String = records(RESULT.Columns.Get("CAT_VE_PLACAS"))
' Dim CAT_CL_MTOCOMPRA As String = records(RESULT.Columns.Get("CAT_VE_PLACAS"))
' Dim CAT_CL_BCREDITO As String = records(RESULT.Columns.Get("CAT_VE_PLACAS"))
' Dim CAT_CL_LIMITECREDITO As String = records(RESULT.Columns.Get("CAT_VE_PLACAS"))
' Dim CAT_CL_SALDODISPONIBLE As String = records(RESULT.Columns.Get("CAT_VE_PLACAS"))
' B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO kmt_info(PLACA) VALUES (?)", Array As Object (placa))
' Next
' End If
' End If
c = B4XPages.MainPage.skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS FROM CHECADO_CHECK")
c.Position = 0
If c.GetString("CUANTOS") = 0 Then
B4XPages.MainPage.skmt.ExecNonQuery2("insert into CHECADO_CHECK (CHECADO) VALUES(?)", Array As String("0"))
Else If c.GetString("CUANTOS") = 1 Then
End If
End If
End Sub