Files
Medicomed_Reparto/B4XMainPage.bas

385 lines
14 KiB
QBasic

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
Dim rp As RuntimePermissions
Private Root As B4XView
Private xui As XUI
Private Root As B4XView
Public rp As RuntimePermissions
Public login As B4XMainPage
Public principal As C_Principal
Public clientes As C_Clientes
Public cliente As C_Cliente
' Public foto As C_Foto
Public productos As C_Productos
Public updateAvailable As C_UpdateAvailable
Public mapas As C_Mapas
Public nuevoCliente As C_NuevoCliente
Public ticketsDia As C_TicketsDia
Public noVenta As C_NoVenta
Public pedidos As C_Pedidos
Public buscar As C_Buscar
' Public historico As C_Historico
Public detalleVenta As C_DetalleVenta
Public detalle_promo As C_Detalle_Promo
Dim reqManager As DBRequestManager
' Dim ruta As String
Dim usuario As String
Dim logger As Boolean = True
Dim lat_gps, lon_gps As String
' Dim skmt As SQL
Dim usuario As String
Dim server As String
Dim montoActual, clientesTotal, clientesVenta, clientesRechazo, clientesVisitados, almacen, rutaPreventa, CANTIDADPROD As String
Dim ultimaActualizacionGPS As String = 235959
Dim fechaRuta As String
' Public wsServerLink As String = "ws://187.189.244.154:51042/push/b4a_ws2"
' Public wsServerLink As String = "ws://10.0.0.214:51042/push/b4a_ws2"
Dim srvIp As String
Dim phn As Phone
Dim user As EditText
Dim pass As EditText
Dim c As Cursor
Dim existe As String
Dim paso1 As String
Private IMEN As Label
Dim IMEI As String
Private Label1 As Label
Dim server As String
Private p_principal As Panel
Private Entrar As Button
Public tabulador As C_tabulador
Dim batt As Int
Dim porVisitar, entregas, rechazos, montoEntregado, montoRechazado As String
Private p_appUpdate As Panel
Private i_engrane As ImageView
Private b_server As Button
Private b_apk As Button
Private b_envioBD As Button
Private b_regesar As Button
Private et_server As EditText
Private p_serverList As Panel
Private lv_server As ListView
Public Provider As FileProvider
Public rutaBDBackup As String = ""
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
B4XPages.GetManager.LogEvents = True
Root.LoadLayout("login")
B4XPages.SetTitle(Me, "Medicomed Reparto")
login.Initialize
B4XPages.AddPage("Login", login)
principal.Initialize
B4XPages.AddPage("Principal", principal)
clientes.Initialize
B4XPages.AddPage("Clientes", clientes)
cliente.Initialize
B4XPages.AddPage("Cliente", cliente)
' foto.Initialize
' B4XPages.AddPage("Foto", foto)
productos.Initialize
B4XPages.AddPage("Productos", productos)
updateAvailable.Initialize
B4XPages.AddPage("updateAvailable", updateAvailable)
mapas.Initialize
B4XPages.AddPage("Mapas", mapas)
nuevoCliente.Initialize
B4XPages.AddPage("NuevoCliente", nuevoCliente)
ticketsDia.Initialize
B4XPages.AddPage("TicketsDia", ticketsDia)
noVenta.Initialize
B4XPages.AddPage("NoVenta", noVenta)
pedidos.Initialize
B4XPages.AddPage("Pedidos", pedidos)
buscar.Initialize
B4XPages.AddPage("Buscar", buscar)
' historico.Initialize
' B4XPages.AddPage("Historico", historico)
detalleVenta.Initialize
B4XPages.AddPage("DetalleVenta", detalleVenta)
detalle_promo.Initialize
B4XPages.AddPage("Detalle_Promo", detalle_promo)
tabulador.Initialize
B4XPages.AddPage("tabulador", tabulador)
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS TABULADOR_MONEDAS(VEINTE TEXT, DIEZ TEXT, CINCO TEXT, DOS TEXT, PESO TEXT, CENTAVO TEXT, TOTAL TEXT)")
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS TABULADOR_BILLETES(MIL TEXT, QUINIENTOS TEXT, DOCIENTOS TEXT, CIEN TEXT, CINCUENTA TEXT, VEINTE TEXT)")
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_VENTAS2 (HVD_PARCIAL TEXT, HVD_RECHAZO TEXT, HVD_NUM_REGISTRO TEXT, HVD_NUM_TICKET TEXT, HVD_PROID TEXT, HVD_CODPROMO TEXT, HVD_FECHA TEXT, HVD_ESTATUS TEXT, HVD_CLIENTE TEXT, HVD_PRONOMBRE TEXT, HVD_CANT TEXT, HVD_COSTO_TOT TEXT)")
' Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS VENTAS (V_FECHA TEXT, V_CLIENTE TEXT, V_CLIENTE_ORIG TEXT, V_PRODNOMBRE TEXT, V_PRODID TEXT, V_CANTIDAD TEXT, V_PRECIO TEXT, V_TOTAL TEXT, V_PRODREGISTRO TEXT)")
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS RECHAZOS (R_FECHA TEXT, R_CLIENTE TEXT, R_CLI_ORIG TEXT, R_PRODID TEXT, R_CANT TEXT, R_RECHAZO INT)")
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS VENTAS (V_FECHA TEXT, V_CLIENTE TEXT, V_CLI_ORIG TEXT, V_PRODID TEXT, V_CANT TEXT, V_RECHAZO INT)")
Subs.agregaColumna("REPARTO", "REP_PRODREGISTRO", "TEXT")
Subs.agregaColumna("REPARTO", "REP_PRODID", "TEXT")
Subs.agregaColumna("REPARTO", "REP_CLI_ORIG", "TEXT")
Subs.agregaColumna("REPARTO", "REP_PRECIO", "TEXT")
Subs.agregaColumna("REPARTO", "REP_RECHAZO", "INTEGER")
Subs.agregaColumna("RECHAZOS", "R_PRECIO", "TEXT")
Subs.agregaColumna("VENTAS", "V_PRECIO", "TEXT")
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS RUTAA (RUTAA TEXT)")
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS wayPoints (codigo TEXT, indice INT)")
Dim server As String = "http://187.189.244.154:1783"
' server = "http://10.0.0.205:1782"
' server = "http://11.0.0.44:1782"
reqManager.Initialize(Me, B4XPages.MainPage.server)
LogColor($"ReqServer = ${B4XPages.MainPage.server}"$, Colors.red)
Label1.Text = Application.VersionName
' Dim P As PhoneId
Log("provider")
Provider.Initialize
' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_READ_PHONE_STATE)
' Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
' If Result Then
' IMEN.Text = "" 'P.GetDeviceId
' IMEI = "" 'P.GetDeviceId
' End If
End Sub
Sub B4XPage_Appear
If Starter.muestraProgreso = 1 Then
muestraProgreso("Descargando actualización")
Starter.muestraProgreso = 0
End If
Subs.centraPanel(p_principal, Root.Width)
Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_ACCESS_FINE_LOCATION)
' LogColor("Start Tracker1", Colors.red)
Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
If Result Then
StartService(Tracker)
' LogColor("Start Tracker", Colors.red)
Else
ToastMessageShow("No permission", True)
Log("Sin permisos")
End If
' LogColor("Start Tracker3", Colors.red)
c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
If c.RowCount > 0 Then
' c.Position=0
' c=skmt.ExecQuery("select USUARIO from usuarioa")
c.Position=0
usuario = c.GetString("USUARIO")
End If
c.Close
Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE)
Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
If Result Then
Log("Con permisos de escritura externa")
End If
End Sub
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
Sub Entrar_Click
If pass.Text = "YA" Then
Starter.skmt.ExecNonQuery("delete from usuarioa")
Starter.skmt.ExecNonQuery("delete from VERSION")
Starter.skmt.ExecNonQuery2("INSERT INTO USUARIOA VALUES (?,?)", Array As Object("ROOT", "ROOT"))
Starter.skmt.ExecNonQuery("delete from cat_almacen")
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_ALMACEN(ID_ALMACEN) VALUES (?)", Array As Object (user.Text))
Starter.skmt.ExecNonQuery2("INSERT INTO VERSION(NOVERSION) VALUES (?)", Array As Object ("2.1"))
' principal.B_REGRESA_Click
' B4XPages.MainPage.principal.Subir.Visible = True
B4XPages.ShowPage("Principal")
Else
c=Starter.skmt.ExecQuery2("select count(*) as EXISTE1 from usuarioa where usuario = ?", Array As String(user.Text))
c.Position=0
existe = c.GetString("EXISTE1")
c.Close
'existe = 1
If existe = 0 Then
'skmt.ExecNonQuery("delete from usuarioa")
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "select_usuario_medi_REPG"
cmd.Parameters = Array As Object(user.Text, pass.Text)
reqManager.ExecuteQuery(cmd , 0, "usuario")
' Dim cmd As DBCommand
' cmd.Initialize
' cmd.Name = "select_version_MARDS"
' reqManager.ExecuteQuery(cmd , 0, "version")
Else
' principal.B_REGRESA_Click
B4XPages.ShowPage("Principal")
End If
End If
End Sub
Sub JobDone(Job As HttpJob)
If Job.Success = False Then
ToastMessageShow("Error: " & Job.ErrorMessage, True)
Else
If Job.JobName = "DBRequest" Then
Dim result As DBResult = reqManager.HandleJob(Job)
If result.Tag = "version" Then 'query tag
For Each records() As Object In result.Rows
Starter.skmt.ExecNonQuery("delete from VERSION")
Dim CAT_VE_VERSION As String = records(result.Columns.Get("CAT_VE_VERSION"))
Starter.skmt.ExecNonQuery2("INSERT INTO VERSION(NOVERSION) VALUES (?)", Array As Object (CAT_VE_VERSION))
Next
End If
End If
If Job.JobName = "DBRequest" Then
Dim result As DBResult = reqManager.HandleJob(Job)
If result.Tag = "agencia" Then 'query tag
For Each records() As Object In result.Rows
Dim ID_ALMACEN As String = records(result.Columns.Get("ID_ALMACEN"))
Next
End If
End If
If Job.JobName = "DBRequest" Then
Dim result As DBResult = reqManager.HandleJob(Job)
If result.Tag = "usuario" Then 'query tag
For Each records() As Object In result.Rows
Dim name As String = records(result.Columns.Get("USUARIO"))
Dim ID_ALMACEN As String = records(result.Columns.Get("CAT_LO_AGENCIA"))
Dim IMEI_BASE As String = records(result.Columns.Get("CAT_LO_IDTELEFONO"))
Next
paso1 = 1
End If
End If
Job.Release
End If
If paso1 = 1 Then
If name = "OKActivo" Then
Starter.skmt.ExecNonQuery("delete from usuarioa")
Starter.skmt.ExecNonQuery2("INSERT INTO USUARIOA VALUES (?,?)", Array As Object(user.Text, pass.Text))
Starter.skmt.ExecNonQuery("delete from cat_almacen")
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_ALMACEN(ID_ALMACEN) VALUES (?)", Array As Object (ID_ALMACEN))
B4XPages.ShowPage("Principal")
Else If name = "OKExpirado"& IMEI Then
Msgbox("Usuario Expirado llamar al administrador","") 'ignore
Else If name = "OKCancelado"& IMEI Then
Msgbox("Usuario Cancelado llamar al administrador","") 'ignore
Else
Msgbox("Usuario o password No validos","") 'ignore
End If
paso1 = 0
End If
End Sub
Private Sub i_engrane_Click
p_appUpdate.Width = Root.Width
p_appUpdate.Height = Root.Height
Subs.centraPanel(p_serverList, Root.Width)
Subs.centraBoton(b_server, Root.Width)
Subs.centraBoton(b_apk, Root.Width)
Subs.centraBoton(b_envioBD, Root.Width)
Subs.centraBoton(b_regesar, Root.Width)
Subs.centraBoton(b_server, p_serverList.Width)
lv_server.Clear
lv_server.AddSingleLine("http://keymon.lat:1783")
If user.Text = "KMTS1" Then lv_server.AddSingleLine("http://10.0.0.205:1783")
' l_server.Text = Starter.server
et_server.Text = server
Subs.panelVisible(p_appUpdate, 0, 0)
End Sub
Private Sub B4XPage_CloseRequest As ResumableSub
' Log("closreq")
If p_appUpdate.Visible Then
p_appUpdate.Visible = False
Else
Sleep(0)
ExitApplication
End If
Return False
End Sub
Private Sub b_regesar_Click
p_principal.Visible = True
p_appUpdate.Visible = False
End Sub
'Enviamos la base de datos por correo o Whatsapp
Private Sub b_envioBD_Click
' copiaDB
' Sleep(1000)
Dim FileName As String = "kmt.db"
'copy the shared file to the shared folder
Log("xxxxxx:"&Provider.SharedFolder)
Sleep(1000)
File.Copy(File.DirInternal, FileName, Provider.SharedFolder, FileName)
Dim email As Email
email.To.Add("soporte@keymonsoft.com")
email.Subject = "Base de datos para revisión"
email.Attachments.Add(Provider.GetFileUri(FileName))
' email.Attachments.Add(Provider.GetFileUri(FileName)) 'second attachment
Dim in As Intent = email.GetIntent
in.Flags = 1 'FLAG_GRANT_READ_URI_PERMISSION
StartActivity(in)
End Sub
Private Sub b_apk_Click
StartService(appUpdater)
End Sub
Private Sub b_server_Click
Log("Guardar servidor")
Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("SERVER"))
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("SERVER",et_server.text))
B4XPages.MainPage.server = et_server.text
Starter.server = B4XPages.MainPage.server
If logger Then Log("Inicializamos reqManager con " & B4XPages.MainPage.server)
reqManager.Initialize(Me, B4XPages.MainPage.server)
LogColor($"ReqServer = ${B4XPages.MainPage.server}"$, Colors.red)
reinicializaReqManager
p_appUpdate.Visible = False
' Entrar.Visible = True
End Sub
Private Sub lv_server_ItemClick (Position As Int, Value As Object)
server = Value
' l_server.Text = Value
et_server.Text = Value
reqManager.Initialize(Me, Value)
LogColor($"ReqServer = ${Value}"$, Colors.red)
ToastMessageShow("Servidor modificado", False)
End Sub
Sub reinicializaReqManager
reqManager.Initialize(Me, B4XPages.MainPage.server)
If logger Then Log(B4XPages.MainPage.server)
LogColor($"ReqServer = ${B4XPages.MainPage.server}"$, Colors.red)
End Sub
'appUpdater - Mostramos el anuncio de que se esta descargando el nuevo apk
Sub muestraProgreso(mensaje As String)
ProgressDialogShow(mensaje)
End Sub
'appUpdater - Ocultamos el anuncio de que se esta descargando el nuevo apk
Sub ocultaProgreso
ProgressDialogHide
End Sub