Initial commit
2
.gitattributes
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
# Auto detect text files and perform LF normalization
|
||||
* text=auto
|
||||
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
**/Objects
|
||||
**/AutoBackups
|
||||
623
B4A/B4XMainPage.bas
Normal file
@@ -0,0 +1,623 @@
|
||||
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=..\..\gitpull.bat
|
||||
'###########################################################################################################
|
||||
'###################### PUSH #############################################################
|
||||
'Ctrl + click ide://run?file=%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe&Args=github&Args=..\..\
|
||||
'###########################################################################################################
|
||||
#End Region
|
||||
|
||||
'Ctrl + click to export as zip: ide://run?File=%B4X%\Zipper.jar&Args=Project.zip
|
||||
|
||||
Sub Class_Globals
|
||||
Private Root As B4XView
|
||||
Dim rp As RuntimePermissions
|
||||
Private xui As XUI
|
||||
Public login As B4XMainPage
|
||||
Public principal As C_Principal
|
||||
Public clientes As C_Clientes
|
||||
Public cliente As C_Cliente
|
||||
Public updateAvailable As C_UpdateAvailable
|
||||
Public nuevoCliente As C_NuevoCliente
|
||||
Public mapa As C_Mapas
|
||||
Dim reqManager As DBRequestManager
|
||||
Dim v As String = Application.VersionName
|
||||
Dim ruta As String
|
||||
Dim tgl As Toggle
|
||||
Dim lat_gps, lon_gps As String
|
||||
Dim usuario As String
|
||||
Dim batt As Int
|
||||
Dim skmt As SQL
|
||||
Dim montoActual, clientesTotal, clientesVenta, clientesVisitados,almacen, rutaPreventa As String
|
||||
Dim server, fechaRuta As String
|
||||
Dim Logger As Boolean
|
||||
Dim mac_impresora As String
|
||||
Dim Phn As PhoneId
|
||||
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 = ""
|
||||
Dim alterno As String
|
||||
Private b_menu As Button
|
||||
Dim PopupMenu As RSPopupMenu
|
||||
Dim cmd As DBCommand
|
||||
Private PDF As Button
|
||||
Private bpv1 As BatteryProgressView
|
||||
Dim batterystatus(11) As Int
|
||||
Private bu As BatteryUtilities
|
||||
Private b_apk As Button
|
||||
Private i_engrane As ImageView
|
||||
Private p_Main As Panel
|
||||
Private p_appUpdate As Panel
|
||||
Private b_guardar As Button
|
||||
Private l_version As Label
|
||||
Private ImageView1 As ImageView
|
||||
Private Label2 As Label
|
||||
Private Entrar As Button
|
||||
Dim tipo_venta As String
|
||||
Dim bTerminarClicked As Boolean = False
|
||||
Private lv_server As ListView
|
||||
Private l_server As Label
|
||||
Private et_server As EditText
|
||||
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)
|
||||
B4XPages.GetManager.LogEvents = True
|
||||
Root = Root1
|
||||
Root.LoadLayout("login")
|
||||
B4XPages.SetTitle(Me, "Mariana Censos")
|
||||
login.Initialize
|
||||
B4XPages.AddPage("Login", login)
|
||||
principal.Initialize
|
||||
B4XPages.AddPage("Principal", principal)
|
||||
clientes.Initialize
|
||||
B4XPages.AddPage("Clientes", clientes)
|
||||
cliente.Initialize
|
||||
B4XPages.AddPageAndCreate("Cliente", cliente)
|
||||
' productos.Initialize
|
||||
' B4XPages.AddPage("Productos", productos)
|
||||
updateAvailable.Initialize
|
||||
B4XPages.AddPage("updateAvailable", updateAvailable)
|
||||
' mapas.Initialize
|
||||
' B4XPages.AddPage("Mapas", mapas)
|
||||
nuevoCliente.Initialize
|
||||
B4XPages.AddPageAndCreate("NuevoCliente", nuevoCliente)
|
||||
mapa.Initialize
|
||||
B4XPages.AddPage("Mapa", mapa)
|
||||
' ticketsDia.Initialize
|
||||
' B4XPages.AddPage("TicketsDia", ticketsDia)
|
||||
' noVenta.Initialize
|
||||
' B4XPages.AddPage("NoVenta", noVenta)
|
||||
' nota.Initialize
|
||||
' B4XPages.AddPage("Nota", nota)
|
||||
' pedidos.Initialize
|
||||
' B4XPages.AddPage("Pedidos", pedidos)
|
||||
' promos.Initialize
|
||||
' B4XPages.AddPage("Promos", promos)
|
||||
' historico.Initialize
|
||||
' B4XPages.AddPage("Historico", historico)
|
||||
ruta = Starter.ruta
|
||||
' Subs.borraArribaDe100Errores ' Para Websockets
|
||||
' Subs.borraArribaDe600RenglonesBitacora ' Para Websockets
|
||||
If File.Exists(ruta, "kmt.db") = False Then
|
||||
File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db")
|
||||
LogColor("copiamos kmt.db de "&File.DirAssets & " a " & ruta,Colors.Green)
|
||||
End If
|
||||
' Log(ruta)
|
||||
skmt.Initialize(ruta,"kmt.db", True)
|
||||
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_CUOTAS (HC_META6 TEXT, HC_META5 TEXT, HC_META4 TEXT, HC_META3 TEXT, HC_META2 TEXT, HC_META1 TEXT, HC_RUTA TEXT, HC_CUOTA1 TEXT, HC_CUOTA2 TEXT, HC_CUOTA3 TEXT, HC_CUOTA4 TEXT, HC_CUOTA5 TEXT, HC_CUOTA6 TEXT)")
|
||||
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_GPS (HGDATE TEXT, HGLAT TEXT, HGLON TEXT)")
|
||||
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_STAY_STORE (HSS_CODIGO TEXT, HSS_IN TEXT, HSS_OUT TEXT, HSS_TOT TEXT)")
|
||||
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_STAY_OUT (HSO_INI TEXT, HSO_FIN TEXT)")
|
||||
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS INVENT_X_ENVIAR (ALMACEN TEXT, PROID TEXT, CANTIDAD TEXT)")
|
||||
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_RESUM_APK (HIST_RA_OBJMES TEXT, HIST_RA_VENTA TEXT, HIST_RA_TENDENCIA TEXT, HIST_RA_ALCANCE TEXT, HISR_RA_DRAOBJ TEXT, HIST_RA_DRAVTA TEXT, HIST_RA_DSOBJ TEXT, HIST_RA_DSVTA TEXT, HIST_RA_VPOOBJ TEXT, HIST_RA_VPOVTA TEXT, HIST_RA_COBCCC TEXT, HIST_RA_CTES TEXT, HIST_RA_ECO TEXT, HIST_RA_VISITPLAN TEXT, HIST_RA_VISIREAL TEXT, HIST_RA_COBVISIT TEXT, HIST_RA_FRECCOMPOBJ TEXT, HIST_RA_FRECCOMREAL TEXT, HIST_RA_VENTAMES1 TEXT, HIST_RA_VENTAMES2 TEXT, HIST_RA_VENTAMES3 TEXT, HIST_RA_VENTAMES4 TEXT, HIST_RA_RECHAZO TEXT, HIST_RA_RECHAZOPORCEN TEXT, HIST_RA_SEMANA1 TEXT, HIST_RA_SEMANA1_DIAS TEXT, HIST_RA_SEMANA1_DRA TEXT, HIST_RA_SEMANA2 TEXT, HIST_RA_SEMANA2_DIAS TEXT, HIST_RA_SEMANA2_DRA TEXT, HIST_RA_SEMANA3 TEXT, HIST_RA_SEMANA3_DIAS TEXT, HIST_RA_SEMANA4 TEXT, HIST_RA_SEMANA3_DRA TEXT, HIST_RA_SEMANA4_DIAS TEXT, HIST_RA_SEMANA4_DRA TEXT, HIST_RA_SEMANA5 TEXT, HIST_RA_SEMANA5_DIAS TEXT, HIST_RA_SEMANA5_DRA TEXT, HIST_RA_SEMANA1_LPT TEXT, HIST_RA_SEMANA2_LPT TEXT, HIST_RA_SEMANA3_LPT TEXT, HIST_RA_SEMANA4_LPT TEXT, HIST_RA_SEMANA5_LPT TEXT, HIST_RA_RUTA TEXT, HIST_RA_IDALMACEN TEXT)")
|
||||
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_COMISIONES_MOVIL (HCM_IDALMACEN TEXT, HCM_RUTA TEXT, HCM_TOTAL_V TEXT, HCM_TOTAL_VIVE TEXT, HCM_TOTAL_GUNA TEXT, HCM_TOTAL_BEB TEXT)")
|
||||
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_GEOCERCA (HGCLIENTE TEXT, HGDATE TEXT, HGLAT TEXT, HGLON TEXT)")
|
||||
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_FACE (HFCLIENTE TEXT, HFALIAS TEXT, HFRUTA TEXT, HFALMACEN TEXT)")
|
||||
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS RUTA_GPS(FECHA INTEGER, LAT TEXT, LON TEXT)")
|
||||
skmt.ExecNonQuery("CREATE VIEW IF NOT EXISTS CATALOGO AS Select CAT_GP_CLASIF, CAT_GP_ID FROM CAT_GUNAPROD UNION Select CAT_GP_CLASIF, CAT_GP_ID FROM CAT_GUNAPROD GROUP BY CAT_GP_CLASIF, CAT_GP_ID")
|
||||
skmt.ExecNonQuery("CREATE VIEW IF NOT EXISTS total_marcas AS Select cat_gp_clasif, sum(pe_costo_tot) As total from CATALOGO, pedido where pe_proid = cat_gp_id And pe_cliente <> 0 group by cat_gp_clasif")
|
||||
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_MARCAS_CUOTAS (HMC_MARCA TEXT, HMC_TOTAL TEXT)")
|
||||
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_CODIGO_BARRAS(CODIGOKMTS TEXT, CODIGOB TEXT, LAT TEXT, LON TEXT)")
|
||||
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS ABONOS (a_usuario TEXT, a_ruta TEXT, a_cliente TEXT, a_abono TEXT, a_fecha TEXT, a_enviado TEXT)")
|
||||
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_GIROS (id TEXT, descripcion TEXT)")
|
||||
' skmt.ExecNonQuery("drop table kmt_info")
|
||||
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS kmt_info (CAT_CL_FOTO BLOB, CAT_CL_NUM_SERIEFISICO TEXT, CAT_CL_MTOCOMPRA TEXT, CAT_CL_CEDIS TEXT, CAT_CL_LAT TEXT, CAT_CL_LONG TEXT, CAT_CL_FBAJA TEXT, CAT_CL_FALTA TEXT, CAT_CL_CP TEXT, CAT_CL_EDO TEXT, CAT_CL_MUNI TEXT, CAT_CL_COLONIA TEXT, CAT_CL_CALLE2 TEXT, CAT_CL_CALLE1 TEXT, CAT_CL_NOINT TEXT, CAT_CL_NOEXT TEXT, CAT_CL_CALLE TEXT, CAT_CL_EMAIL TEXT, CAT_CL_TELEFONO TEXT, CAT_CL_ATIENTE2 TEXT, CAT_CL_ATIENDE1 TEXT, CAT_CL_NOMBRE TEXT, CAT_CL_GIRO TEXT, CAT_CL_DIAS_VISITA TEXT, CAT_CL_TIPO_RUTA TEXT, CAT_CL_RUTA TEXT, CAT_CL_CODIGO TEXT, gestion NUMERIC, CAT_CL_DIASEMANA TEXT, CAT_CL_SECUENCIA INT)")
|
||||
Subs.agregaColumna("kmt_info", "CAT_CL_CRUCE1", "TEXT")
|
||||
Subs.agregaColumna("kmt_info", "CAT_CL_ESTATUS", "TEXT")
|
||||
Subs.agregaColumna("kmt_info", "CAT_CL_ENVIO_PENDIENTE", "TEXT")
|
||||
Subs.agregaColumna("kmt_info", "CAT_CL_FECHA_CAPTURA", "TEXT")
|
||||
Subs.agregaColumna("HIST_FOTO_CLIENTE", "ENVIO_PENDIENTE", "TEXT")
|
||||
Subs.agregaColumna("kmt_info", "NUEVO", "TEXT")
|
||||
Subs.agregaColumna("kmt_info", "LAT_CENSADOR", "TEXT")
|
||||
Subs.agregaColumna("kmt_info", "LON_CENSADOR", "TEXT")
|
||||
Subs.agregaColumna("kmt_info", "ESTATUS_ORIGINAL", "TEXT")
|
||||
Subs.agregaColumna("kmt_info", "CAMPOS_MODIFICADOS", "TEXT")
|
||||
Try 'Intentamos usar "pragma_table_info" para revisar si existe la columna "CAT_CL_DIASEMANA" en la tabla
|
||||
c=skmt.ExecQuery("SELECT COUNT(*) AS fCol FROM pragma_table_info('kmt_info') WHERE name='CAT_CL_DIASEMANA'")
|
||||
c.Position = 0
|
||||
If c.GetString("fCol") = 0 Then 'Si no esta la columna FECHA la agregamos
|
||||
skmt.ExecNonQuery("ALTER TABLE kmt_info ADD COLUMN CAT_CL_DIASEMANA TEXT")
|
||||
End If
|
||||
Catch 'Si no funciona "pragma_table_info" lo hacemos con try/catch
|
||||
Try
|
||||
skmt.ExecNonQuery("ALTER TABLE kmt_info ADD COLUMN CAT_CL_DIASEMANA TEXT")
|
||||
Catch
|
||||
Log(LastException)
|
||||
End Try
|
||||
End Try
|
||||
Try 'Intentamos usar "pragma_table_info" para revisar si existe la columna "CAT_CL_SECUENCIA" en la tabla
|
||||
c=skmt.ExecQuery("SELECT COUNT(*) AS fCol FROM pragma_table_info('kmt_info') WHERE name='CAT_CL_SECUENCIA'")
|
||||
c.Position = 0
|
||||
If c.GetString("fCol") = 0 Then 'Si no esta la columna FECHA la agregamos
|
||||
skmt.ExecNonQuery("ALTER TABLE kmt_info ADD COLUMN CAT_CL_SECUENCIA INT")
|
||||
End If
|
||||
Catch 'Si no funciona "pragma_table_info" lo hacemos con try/catch
|
||||
Try
|
||||
skmt.ExecNonQuery("ALTER TABLE kmt_info ADD COLUMN CAT_CL_SECUENCIA INT")
|
||||
Catch
|
||||
Log(LastException)
|
||||
End Try
|
||||
End Try
|
||||
c=skmt.ExecQuery("select COUNT(*) AS CUANTOS from HIST_STAY_OUT ")
|
||||
C.Position = 0
|
||||
If c.GetString("CUANTOS") = 0 Then
|
||||
' skmt.ExecNonQuery("INSERT INTO HIST_STAY_OUT(HSO_INI, HSO_FIN) VALUES (0,0)")
|
||||
End If
|
||||
C.Close
|
||||
' server = "http://keymon.com.mx:1782"
|
||||
'server = "http://201.99.139.28:1783"
|
||||
' reqManager.Initialize(Me, server)
|
||||
l_version.Text = "Ver. " & Application.VersionName
|
||||
'este codigo es para lo del menu
|
||||
' PopupMenu.Initialize("PopupMenu", b_menu)
|
||||
' PopupMenu.AddMenuItem(0, 0, "View")
|
||||
' PopupMenu.AddMenuItem(1, 1, "Edit")
|
||||
' PopupMenu.AddMenuItem(2, 2, "Details")
|
||||
' PopupMenu.AddMenuItem(3, 3, "Remove")
|
||||
' menu fin
|
||||
montoActual = 0
|
||||
clientesTotal = 0
|
||||
clientesVenta = 0
|
||||
clientesVisitados = 0
|
||||
almacen = 0
|
||||
rutaPreventa = 0
|
||||
p_appUpdate.Visible = False
|
||||
|
||||
reqManager.Initialize(Me, Starter.server)
|
||||
End Sub
|
||||
|
||||
Sub B4XPage_Appear
|
||||
LogColor("Revisa permisos Location", Colors.Green)
|
||||
Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_ACCESS_FINE_LOCATION)
|
||||
Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
|
||||
If Result Then
|
||||
Log("Con permisos de ubicacion")
|
||||
StartService(Tracker)
|
||||
' Log("Start Tracker")
|
||||
Else
|
||||
Log("SIN permisos de ubicacion")
|
||||
End If
|
||||
Log("1")
|
||||
p_Main.Width = Root.Width
|
||||
Dim ph As Phone 'Get Id Device
|
||||
Dim DeviceID As String = ph.GetSettings("android_id").ToUpperCase
|
||||
LogColor($"////////////////// DeviceID: ${DeviceID} ////////////////// "$, Colors.Blue)
|
||||
server = Starter.server
|
||||
reqManager.Initialize(Me, Starter.server)
|
||||
tgl.Initialize()
|
||||
If Not(Starter.gps.GPSEnabled) Then
|
||||
ToastMessageShow("Es necesario tener el GPS encendido", True)
|
||||
Sleep(500)
|
||||
StartActivity(Starter.gps.LocationSettingsIntent)
|
||||
End If
|
||||
c=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)
|
||||
' If sDate > "20220701" Then
|
||||
' Msgbox("INSTALAR NUEVO APK" ,"AVISO") 'Ignore
|
||||
' B4XPage_Appear
|
||||
' End If
|
||||
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
|
||||
bu.Initialize
|
||||
batterystatus = bu.BatteryInformation
|
||||
'Obtenemos el usuario registrado
|
||||
' CallSubDelayed(FirebaseMessaging, "SubscribeToTopics")
|
||||
dameUsuario
|
||||
End Sub
|
||||
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||
|
||||
Sub Entrar_Click
|
||||
Dim r As Reflector
|
||||
Dim Api As Int
|
||||
Dim PP As Phone
|
||||
user.Text = user.Text.trim
|
||||
Api = r.GetStaticField("android.os.Build$VERSION", "SDK_INT")
|
||||
If Api < 9 Then
|
||||
'Old device
|
||||
If File.Exists(File.DirInternal, "__id") Then
|
||||
IMEI = File.ReadString(File.DirInternal, "__id")
|
||||
Log(1&"-"&IMEI)
|
||||
Else
|
||||
Dim id As Int
|
||||
id = Rnd(0x10000000, 0x7FFFFFFF)
|
||||
File.WriteString(File.DirInternal, "__id", id)
|
||||
IMEI = id
|
||||
Log(2&"-"&IMEI)
|
||||
End If
|
||||
Else
|
||||
'New device
|
||||
IMEI = r.GetStaticField("android.os.Build", "SERIAL")
|
||||
' Log(3&"-"&IMEI)
|
||||
End If
|
||||
If IMEI.ToLowerCase = "unknown" Then
|
||||
IMEI = PP.GetSettings("android_id")
|
||||
End If
|
||||
' Log("IMEI = " & IMEI)
|
||||
|
||||
If user.Text = "ALTERNO" Then
|
||||
c=skmt.ExecQuery2("select CAT_CO_CONFIGURACION, CAT_CO_RESULTADO from CAT_CODIGOS where CAT_CO_PONDERACION =1 AND CAT_CO_ACCION = ?", Array As String("SERVER"))
|
||||
c.Position =0
|
||||
server = c.GetString("CAT_CO_CONFIGURACION")
|
||||
alterno = c.GetString("CAT_CO_RESULTADO")
|
||||
c.Close
|
||||
If alterno = 1 Then
|
||||
skmt.ExecNonQuery2("UPDATE CAT_CODIGOS SET CAT_CO_PONDERACION = 1 WHERE CAT_CO_ACCION = ? AND CAT_CO_RESULTADO = 2", Array As String ("SERVER"))
|
||||
skmt.ExecNonQuery2("UPDATE CAT_CODIGOS SET CAT_CO_PONDERACION = 0 WHERE CAT_CO_ACCION = ? AND CAT_CO_RESULTADO = 1", Array As String ("SERVER"))
|
||||
Else if alterno = 2 Then
|
||||
skmt.ExecNonQuery2("UPDATE CAT_CODIGOS SET CAT_CO_PONDERACION = 1 WHERE CAT_CO_ACCION = ? AND CAT_CO_RESULTADO = 1", Array As String ("SERVER"))
|
||||
skmt.ExecNonQuery2("UPDATE CAT_CODIGOS SET CAT_CO_PONDERACION = 0 WHERE CAT_CO_ACCION = ? AND CAT_CO_RESULTADO = 2", Array As String ("SERVER"))
|
||||
End If
|
||||
c=skmt.ExecQuery2("select CAT_CO_CONFIGURACION, CAT_CO_RESULTADO from CAT_CODIGOS where CAT_CO_PONDERACION =1 AND CAT_CO_ACCION = ?", Array As String("SERVER"))
|
||||
c.Position =0
|
||||
server = c.GetString("CAT_CO_CONFIGURACION")
|
||||
user.Text = server
|
||||
c.Close
|
||||
' reqManager.Initialize(Me, server)
|
||||
else if user.Text.Trim = "KMTS1" Then
|
||||
skmt.ExecNonQuery("delete from usuarioa")
|
||||
skmt.ExecNonQuery2("INSERT INTO USUARIOA VALUES (?,?)", Array As Object(user.Text.trim, pass.Text))
|
||||
skmt.ExecNonQuery("delete from cat_almacen")
|
||||
skmt.ExecNonQuery2("INSERT INTO CAT_ALMACEN(ID_ALMACEN) VALUES (?)", Array As Object (pass.Text))
|
||||
skmt.ExecNonQuery("delete from VERSION")
|
||||
skmt.ExecNonQuery2("INSERT INTO VERSION(NOVERSION) VALUES (?)", Array As Object ("2.1"))
|
||||
B4XPages.ShowPage("Clientes")
|
||||
else if user.Text = "BERNA1" Then
|
||||
skmt.ExecNonQuery("delete from usuarioa")
|
||||
skmt.ExecNonQuery2("INSERT INTO USUARIOA VALUES (?,?)", Array As Object(user.Text, "1"))
|
||||
skmt.ExecNonQuery("delete from cat_almacen")
|
||||
skmt.ExecNonQuery2("INSERT INTO CAT_ALMACEN(ID_ALMACEN) VALUES (?)", Array As Object ("1"))
|
||||
skmt.ExecNonQuery("delete from VERSION")
|
||||
skmt.ExecNonQuery2("INSERT INTO VERSION(NOVERSION) VALUES (?)", Array As Object ("2.1"))
|
||||
B4XPages.ShowPage("Clientes")
|
||||
else if user.Text = "IMEI" Then
|
||||
user.Text = IMEI
|
||||
End If
|
||||
|
||||
c=skmt.ExecQuery2("select count(*) as EXISTE1 from usuarioa where usuario = ?", Array As String(user.Text))
|
||||
c.Position=0
|
||||
existe = c.GetString("EXISTE1")
|
||||
If existe = 0 Then
|
||||
Dim cmd As DBCommand
|
||||
cmd.Initialize
|
||||
cmd.Name = "select_usuario_MARDS_10"
|
||||
cmd.Parameters = Array As Object(user.Text.Trim, pass.Text.Trim)
|
||||
reqManager.ExecuteQuery(cmd , 0, "usuario_10")
|
||||
|
||||
Dim cmd As DBCommand
|
||||
cmd.Initialize
|
||||
cmd.Name = "select_version_MARDS"
|
||||
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
|
||||
ToastMessageShow("Error: " & Job.ErrorMessage, True)
|
||||
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 = "version" Then 'query tag
|
||||
For Each records() As Object In result.Rows
|
||||
skmt.ExecNonQuery("delete from VERSION")
|
||||
Dim CAT_VE_VERSION As String = records(result.Columns.Get("CAT_VE_VERSION"))
|
||||
skmt.ExecNonQuery2("INSERT INTO VERSION(NOVERSION) VALUES (?)", Array As Object (CAT_VE_VERSION))
|
||||
Next
|
||||
End If
|
||||
|
||||
If result.Tag = "select_fechat" Then 'query tag
|
||||
For Each records() As Object In result.Rows
|
||||
For Each k As String In result.Columns.Keys
|
||||
Log("select_fechat: " & k & ": " & records(result.Columns.Get(k)))
|
||||
Next
|
||||
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 = "fecha" Then 'query tag
|
||||
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
|
||||
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"))
|
||||
Log(records(result.Columns.Get("CAT_LO_IDTELEFONO")) )
|
||||
Next
|
||||
paso1 = 1
|
||||
ToastMessageShow(name, False)
|
||||
Log("////////////////////////// "&name)
|
||||
End If
|
||||
End If
|
||||
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim result As DBResult = reqManager.HandleJob(Job)
|
||||
If result.Tag = "usuario_10" 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
|
||||
Log("|"&name&"|")
|
||||
paso1 = 1
|
||||
IMEI_BASE = ""
|
||||
IMEI = ""
|
||||
End If
|
||||
End If
|
||||
Job.Release
|
||||
End If
|
||||
' Log($"Paso1 = ${paso1} - Name: ${name} - IMEI: ${IMEI} - IMEI_BASE: ${IMEI_BASE}"$)
|
||||
If paso1 = 1 Then
|
||||
If IMEI = "" Then
|
||||
If user.Text = "KMTS1" Then name = "OKActivo"
|
||||
If name = "OKActivo" Then
|
||||
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
|
||||
Msgbox("Usuario Expirado llamar al administrador","") 'Ignore
|
||||
Else If name = "OKCancelado" Then
|
||||
Msgbox("Usuario Cancelado llamar al administrador","") 'Ignore
|
||||
Else
|
||||
Msgbox("Usuario o password No validos","") 'Ignore
|
||||
End If
|
||||
paso1 = 0
|
||||
Else
|
||||
If name = "OKActivo" & IMEI And IMEI = IMEI_BASE Then
|
||||
If name = "OKActivo" & IMEI Then
|
||||
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("Clientes")
|
||||
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
|
||||
Else IF name = "OKActivo" Then
|
||||
Msgbox("Telefono no VALIDO!","") 'ignore
|
||||
Else
|
||||
Msgbox("Usuario o password No validos","") 'ignore
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub B4XPage_CloseRequest As ResumableSub
|
||||
Log("CloseRequest")
|
||||
Sleep(0)
|
||||
If p_appUpdate.IsInitialized And p_appUpdate.Visible Then
|
||||
p_appUpdate.Visible = False
|
||||
Return False
|
||||
End If
|
||||
If Not(p_appUpdate.Visible) Then
|
||||
Log("ExitApplication")
|
||||
ExitApplication
|
||||
End If
|
||||
Return True
|
||||
End Sub
|
||||
|
||||
Sub GPS_LocationChanged (Location1 As Location)
|
||||
If user.text = "GPS" Then
|
||||
user.Text=Location1.Latitude
|
||||
pass.text=Location1.Longitude
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Sub PopupMenu_Dismiss
|
||||
ToastMessageShow("PopupMenu dismissed", False)
|
||||
End Sub
|
||||
|
||||
Sub PopupMenu_MenuItemClick (ItemId As Int) As Boolean
|
||||
ToastMessageShow("Item " & ItemId & " clicked.", False)
|
||||
Return False
|
||||
End Sub
|
||||
|
||||
Sub b_menu_Click
|
||||
PopupMenu.Show
|
||||
End Sub
|
||||
|
||||
Sub PDF_Click
|
||||
|
||||
End Sub
|
||||
|
||||
'Private Sub GetAdvertisingId As ResumableSub
|
||||
' Dim jo As JavaObject = Me
|
||||
' jo.RunMethod("GetAdvertisingId", Null)
|
||||
' Wait For AdvertisingId_Ready (Success As Boolean, Id As String)
|
||||
' Return Id
|
||||
'End Sub
|
||||
|
||||
Sub dameUsuario
|
||||
c=skmt.ExecQuery2("select count(*) as EXISTE1 from usuarioa where usuario = ?", Array As String(user.Text))
|
||||
c.Position=0
|
||||
existe = c.GetString("EXISTE1")
|
||||
c.Close
|
||||
If existe > 0 Then
|
||||
c=skmt.ExecQuery("select USUARIO from usuarioa")
|
||||
c.Position=0
|
||||
usuario = c.GetString("USUARIO")
|
||||
Else
|
||||
usuario = "SINUSUARIO"
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Sub copiaDB
|
||||
Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE)
|
||||
Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
|
||||
Dim theDir As String = ""
|
||||
If Result Then
|
||||
' Private x As String
|
||||
' If File.ExternalWritable Then
|
||||
' x = File.DirRootExternal
|
||||
' Else
|
||||
' x = File.DirInternal
|
||||
' End If
|
||||
Dim theDir As String
|
||||
Try
|
||||
File.MakeDir(File.DirRootExternal,"kmts")
|
||||
theDir = "/kmts"
|
||||
Catch
|
||||
theDir = ""
|
||||
End Try
|
||||
Try
|
||||
File.Copy(File.DirInternal,"kmt.db",File.DirInternal&theDir, "mariana_kmt.db")
|
||||
ToastMessageShow("Listo, copiado a " & File.DirRootExternal&theDir & "/mariana_kmt.db", False)
|
||||
Catch
|
||||
ToastMessageShow("No se pudo hacer la copia: "&LastException, True)
|
||||
End Try
|
||||
Else
|
||||
ToastMessageShow("Sin permisos", False)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Sub b_apk_Click
|
||||
StartService(appUpdater)
|
||||
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
|
||||
|
||||
Sub i_engrane_Click
|
||||
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 = Starter.server
|
||||
et_server.Text = Starter.server
|
||||
Subs.panelVisible(p_appUpdate,0,0)
|
||||
End Sub
|
||||
|
||||
Sub b_guardar_Click
|
||||
p_appUpdate.Visible = False
|
||||
Starter.reqManager.Initialize(Me, et_server.Text)
|
||||
Starter.server = et_server.Text
|
||||
ToastMessageShow("Servidor modificado", False)
|
||||
Subs.panelVisible(p_Main,0,0)
|
||||
End Sub
|
||||
|
||||
Sub i_engrane_LongClick
|
||||
copiaDB
|
||||
End Sub
|
||||
|
||||
Sub Entrar_LongClick
|
||||
' dim a as int = "a"
|
||||
End Sub
|
||||
|
||||
Private Sub lv_server_ItemClick (Position As Int, Value As Object)
|
||||
Starter.server = Value
|
||||
l_server.Text = Value
|
||||
et_server.Text = Value
|
||||
Starter.reqManager.Initialize(Me, Value)
|
||||
ToastMessageShow("Servidor modificado", False)
|
||||
End Sub
|
||||
|
||||
Private Sub b_enviarbd_Click
|
||||
Dim provider As FileProvider
|
||||
provider.Initialize
|
||||
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 = "Envio Base de datos Mariana Censos"
|
||||
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
|
||||
126
B4A/BatteryUtilities.bas
Normal file
@@ -0,0 +1,126 @@
|
||||
B4A=true
|
||||
Group=Default Group
|
||||
ModulesStructureVersion=1
|
||||
Type=Class
|
||||
Version=9.5
|
||||
@EndOfDesignText@
|
||||
'Class module
|
||||
Sub Class_Globals
|
||||
Private nativeMe As JavaObject
|
||||
|
||||
End Sub
|
||||
'Initializes the object.
|
||||
Public Sub Initialize
|
||||
nativeMe = Me
|
||||
End Sub
|
||||
'Return information about the battery status. It returns the following 11 values in an integer Array:
|
||||
'EXTRA_LEVEL = current battery level, from 0 To EXTRA_SCALE.
|
||||
'EXTRA_SCALE = the maximum battery level possible.
|
||||
'EXTRA_HEALTH = the current health constant.
|
||||
'EXTRA_ICON_SMALL = the resource ID of a small status bar icon indicating the current battery state.
|
||||
'EXTRA_PLUGGED = whether the device is plugged into a Power source; 0 means it is on battery, other constants are different types of Power sources.
|
||||
'EXTRA_STATUS = the current status constant.
|
||||
'EXTRA_TEMPERATURE = the current battery temperature.
|
||||
'EXTRA_VOLTAGE = the current battery voltage level.
|
||||
'A value indicating if the battery is being charged or fully charged (If neither it returns 0 Else it returns 1)
|
||||
'A value indicating if it is charging via USB (0 = Not USB, 2 = USB)
|
||||
'A value indicating if it is charging via AC (0 = Not AC, 1 = AC)
|
||||
Public Sub getBatteryInformation () As Int()
|
||||
|
||||
Dim batteryInfo(11) As Int
|
||||
batteryInfo = nativeMe.RunMethod("getBatteryInformation",Null)
|
||||
Return batteryInfo
|
||||
|
||||
End Sub
|
||||
|
||||
Public Sub getBatteryTechnolgy() As String
|
||||
|
||||
Dim batterytech As String
|
||||
batterytech = nativeMe.RunMethod("getBatteryTechnology",Null)
|
||||
Return batterytech
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
#If Java
|
||||
|
||||
import android.os.BatteryManager;
|
||||
import android.os.Bundle;
|
||||
import android.app.Activity;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
|
||||
public int[] getBatteryInformation() {
|
||||
|
||||
int[] mybat = new int[11];
|
||||
|
||||
Intent batteryIntent = ba.context.getApplicationContext().registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
|
||||
|
||||
int level = batteryIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
|
||||
mybat[0] = level;
|
||||
int scale = batteryIntent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
|
||||
mybat[1] = scale;
|
||||
int health = batteryIntent.getIntExtra(BatteryManager.EXTRA_HEALTH,-1);
|
||||
mybat[2] = health;
|
||||
int icon_small = batteryIntent.getIntExtra(BatteryManager.EXTRA_ICON_SMALL,-1);
|
||||
mybat[3] = icon_small;
|
||||
int plugged = batteryIntent.getIntExtra(BatteryManager.EXTRA_PLUGGED,-1);
|
||||
mybat[4] = plugged;
|
||||
// boolean present = batteryIntent.getExtras().getBoolean(BatteryManager.EXTRA_PRESENT);
|
||||
int status = batteryIntent.getIntExtra(BatteryManager.EXTRA_STATUS,-1);
|
||||
mybat[5] = status;
|
||||
// String technology = batteryIntent.getExtras().getString(BatteryManager.EXTRA_TECHNOLOGY);
|
||||
// BA.Log("Technology = " + technology);
|
||||
int temperature = batteryIntent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE,-1);
|
||||
mybat[6] = temperature;
|
||||
int voltage = batteryIntent.getIntExtra(BatteryManager.EXTRA_VOLTAGE,-1);
|
||||
mybat[7] = voltage;
|
||||
// int ac = batteryIntent.getIntExtra("plugged",BatteryManager.BATTERY_PLUGGED_AC);
|
||||
// mybat[8] = ac;
|
||||
// int usb = batteryIntent.getIntExtra("plugged",BatteryManager.BATTERY_PLUGGED_USB);
|
||||
// mybat[9] = usb;
|
||||
|
||||
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
|
||||
status == BatteryManager.BATTERY_STATUS_FULL;
|
||||
mybat[8] = 0;
|
||||
if (isCharging == true) {
|
||||
mybat[8] = 1;
|
||||
}
|
||||
|
||||
// How are we charging?
|
||||
mybat[9] = 0;
|
||||
mybat[10] = 0;
|
||||
int chargePlug = batteryIntent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
|
||||
boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
|
||||
if (usbCharge == true) {
|
||||
mybat[9] = 2;
|
||||
}
|
||||
|
||||
boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;
|
||||
if (acCharge == true) {
|
||||
mybat[10] = 1;
|
||||
}
|
||||
|
||||
return mybat;
|
||||
}
|
||||
|
||||
|
||||
public String getBatteryTechnology() {
|
||||
|
||||
Intent batteryIntent = ba.context.getApplicationContext().registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
|
||||
|
||||
String technology = batteryIntent.getExtras().getString(BatteryManager.EXTRA_TECHNOLOGY);
|
||||
|
||||
return technology;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#End If
|
||||
642
B4A/C_Cliente.bas
Normal file
@@ -0,0 +1,642 @@
|
||||
B4A=true
|
||||
Group=Default Group
|
||||
ModulesStructureVersion=1
|
||||
Type=Class
|
||||
Version=11.5
|
||||
@EndOfDesignText@
|
||||
Sub MODS 'ignore
|
||||
'V3.04.10 - Se agregó código para el registro de abonos, en B4XMainPage se genera la tabla y aquí se agregó el panel p_abonos para ralizar el abono, y el codigo en el sub "mandaPendientes" para cambiar la bandera de enviado en el abono.
|
||||
End Sub
|
||||
|
||||
Sub Class_Globals
|
||||
Private Root As B4XView 'ignore
|
||||
Dim rp As RuntimePermissions
|
||||
Private xui As XUI 'ignore
|
||||
Private p_cliente As Panel
|
||||
Dim reqManager As DBRequestManager
|
||||
Dim cmd As DBCommand
|
||||
Dim ime As IME
|
||||
Dim g As GPS
|
||||
Dim ruta As String
|
||||
Dim skmt As SQL
|
||||
Dim clie_id As String
|
||||
Dim sDate,sTime As String
|
||||
Dim usuario As String
|
||||
Dim total_cliente As String
|
||||
Dim m_lat, m_lon As String
|
||||
' Dim btAdmin As BluetoothAdmin
|
||||
Dim cmp20 As Serial
|
||||
Dim printer As TextWriter
|
||||
Dim PairedDevices As Map
|
||||
Dim L As List
|
||||
Dim TAMANO As Int
|
||||
Dim ESPACIO As Int
|
||||
Dim BLANCO As String
|
||||
Dim cuenta As String
|
||||
Dim tipo_venta As String = "PREVENTA"
|
||||
Dim MAC_IMPRESORA As String
|
||||
Dim c As Cursor
|
||||
Dim s As Cursor
|
||||
Dim DD As Cursor
|
||||
Dim c2 As Cursor
|
||||
Dim ListView1 As ListView
|
||||
Dim la_cuenta As Label
|
||||
Dim La_nombre As Label
|
||||
Dim la_Calle As Label
|
||||
Dim la_numero As Label
|
||||
Dim la_nint As Label
|
||||
Dim la_edo As Label
|
||||
Dim la_pob As Label
|
||||
Dim la_col As Label
|
||||
Dim la_cp As Label
|
||||
Dim la_zona As Label
|
||||
Dim gest As Button
|
||||
Dim la_saldotot As Label
|
||||
Dim la_saldooper As Label
|
||||
Dim Tels As Button
|
||||
Dim Label10 As Label
|
||||
Dim Label11 As Label
|
||||
Dim Tar As Button
|
||||
Dim la_comm As Label
|
||||
Dim la_actdte As Label
|
||||
Dim la_usuario As Label
|
||||
Dim la_resultado As Label
|
||||
Dim l_entre1 As Label
|
||||
Dim l_entre2 As Label
|
||||
Dim l_atiende As Label
|
||||
Dim l_atiende2 As Label
|
||||
Dim DATOS As Button
|
||||
Dim NUEVO As Button
|
||||
' Dim lat_gps, lon_gps As String
|
||||
Dim l_total As Label
|
||||
Dim c2 As Cursor
|
||||
Dim S2 As Cursor
|
||||
Private s As Cursor
|
||||
Dim res As String
|
||||
Private HIST As Button
|
||||
Private MONTO_COMPRA As String
|
||||
Private META As String
|
||||
Private META2 As String
|
||||
Private VERIFICA As String
|
||||
Private L_QR As Label
|
||||
Private BT_QR As Button
|
||||
Dim CODIGO As String
|
||||
Private b_mapa As Button
|
||||
Dim CUANTOS As String
|
||||
Private B_IMP As Button
|
||||
Dim Toggla As Toggle
|
||||
Dim tgl As Toggle
|
||||
Private Panel1 As Panel
|
||||
Private I_COMPRA As EditText
|
||||
Private b_venta As Button
|
||||
Dim ALMACEN As String
|
||||
Private LA_GPS As Label
|
||||
Private B_E_NEXT As Button
|
||||
Private E_RES_E As EditText
|
||||
Private t_tenc As Label
|
||||
Private Panel2 As Panel
|
||||
Private CONTADOR_E As String
|
||||
Private HR_RES1 As String
|
||||
Private HR_RES2 As String
|
||||
Private HR_RES3 As String
|
||||
Private EXISTE As String
|
||||
Private TELEFONO As String
|
||||
Private RB1, RB2, RB3, RB4, RB5 As RadioButton
|
||||
Private stay_hh, stay_mi, stay_ss As String
|
||||
Dim result As Int
|
||||
Private LA_RUTA As String
|
||||
Private b_like As Button
|
||||
Private B_GPS As Button
|
||||
Dim CODIGO As String
|
||||
Private cb_factura As CheckBox
|
||||
Private p_cbFactura As Panel
|
||||
Dim venimosDeTicketsDia As Boolean = False
|
||||
Private p_abono As Panel
|
||||
Private et_abono As EditText
|
||||
Private b_abono As Button
|
||||
Private b_cancelar As Button
|
||||
Private b_abono1 As Button
|
||||
Private E_NOMBRE_C As EditText
|
||||
Private et_direccion As EditText
|
||||
Private E_ENTRE1 As EditText
|
||||
Private E_ENTRE_2 As EditText
|
||||
Private CH_ACTIVO As CheckBox
|
||||
Private CLIENTE_ACTIVO As String
|
||||
Private et_cp As EditText
|
||||
Private et_colonia As EditText
|
||||
Private lv_colonia As ListView
|
||||
Private et_estado As EditText
|
||||
Private et_municipio As EditText
|
||||
Dim desdeBD As Boolean
|
||||
Private b_guardaCambios As Button
|
||||
Private l_secuencia As Label
|
||||
Private l_ruta As Label
|
||||
Private et_diaSemana As EditText
|
||||
Private et_giro As EditText
|
||||
Private lv_diaSemana As ListView
|
||||
Private et_calle As EditText
|
||||
Private et_NoExt As EditText
|
||||
Private et_NoInt As EditText
|
||||
Private l_cp As Label
|
||||
Private l_lon As Label
|
||||
Private l_lat As Label
|
||||
Private b_actCoords As Button
|
||||
Private estatus As String
|
||||
Private cb_activo As B4XComboBox
|
||||
Private et_atiende As EditText
|
||||
Private cb_giro As B4XComboBox
|
||||
Dim refrescarCliente As Boolean = False
|
||||
Dim Timer2 As Timer
|
||||
Dim Interval As Int = 300
|
||||
Dim turnoColor As Int = 1
|
||||
Dim cd As ColorDrawable
|
||||
Dim camposModificados As List
|
||||
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)
|
||||
Log("Entramos a clientes create")
|
||||
Root = Root1
|
||||
'load the layout to Root
|
||||
' Activity.RemoveAllViews
|
||||
Root.LoadLayout("cliente")
|
||||
ruta = File.DirInternal
|
||||
If File.Exists(ruta, "kmt.db") = False Then
|
||||
File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db")
|
||||
End If
|
||||
skmt.Initialize(ruta,"kmt.db", True)
|
||||
' btAdmin.Initialize("BlueTeeth")
|
||||
' cmp20.Initialize("Printer")
|
||||
m_lat = 0
|
||||
m_lon = 0
|
||||
|
||||
reqManager.Initialize(Me, Starter.server)
|
||||
|
||||
Log("terminamos create")
|
||||
camposModificados.Initialize
|
||||
End Sub
|
||||
|
||||
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||
|
||||
Sub B4XPage_Appear
|
||||
rp.CheckAndRequest(Starter.rp.PERMISSION_CAMERA)
|
||||
Wait For B4XPage_PermissionResult (Permission As String, resultC As Boolean)
|
||||
rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE)
|
||||
Wait For B4XPage_PermissionResult (Permission As String, resultC As Boolean)
|
||||
CallSubDelayed(Tracker, "StartFLPSmall")
|
||||
reqManager.Initialize(Me, Starter.server)
|
||||
lv_colonia.Visible = False
|
||||
Timer2.Initialize("Timer2", Interval * 1)
|
||||
Timer2.Enabled = True
|
||||
b_guardaCambios.Enabled = False
|
||||
b_guardaCambios.Text = "Buscando Ubicación"
|
||||
If Not(Starter.gps.GPSEnabled) Then
|
||||
ToastMessageShow("Es necesario tener el GPS encendido", True)
|
||||
StartActivity(Starter.gps.LocationSettingsIntent)
|
||||
End If
|
||||
If refrescarCliente Then
|
||||
LogColor("Cargamos cliente de BD", Colors.Magenta)
|
||||
skmt.Initialize(ruta,"kmt.db", True)
|
||||
c = B4XPages.MainPage.skmt.ExecQuery("select * from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)")
|
||||
If c.RowCount > 0 Then
|
||||
c.Position=0
|
||||
la_cuenta.Text = c.GetString("CAT_CL_CODIGO")
|
||||
l_ruta.Text = c.GetString("CAT_CL_RUTA")
|
||||
et_giro.Text = c.GetString("CAT_CL_GIRO")
|
||||
et_diaSemana.Text = c.GetString("CAT_CL_DIASEMANA")
|
||||
l_secuencia.text = c.GetString("CAT_CL_SECUENCIA")
|
||||
la_cuenta.Text = c.GetString("CAT_CL_CODIGO")
|
||||
E_NOMBRE_C.TEXT = c.GetString("CAT_CL_NOMBRE")
|
||||
et_direccion.Text = c.GetString("CAT_CL_CALLE1")
|
||||
et_colonia.Text = ""
|
||||
et_colonia.Text = c.GetString("CAT_CL_COLONIA")
|
||||
et_estado.Text = c.GetString("CAT_CL_EDO")
|
||||
desdeBD = True
|
||||
et_cp.Text = c.GetString("CAT_CL_CP")
|
||||
et_calle.Text = c.GetString("CAT_CL_CALLE")
|
||||
et_NoExt.Text = c.GetString("CAT_CL_NOEXT")
|
||||
et_NoInt.Text = c.GetString("CAT_CL_NOINT")
|
||||
estatus = c.GetString("CAT_CL_ESTATUS")
|
||||
If estatus = Null Then estatus = ""
|
||||
cb_activo.Tag = estatus
|
||||
E_ENTRE1.Text = ""
|
||||
E_ENTRE_2.Text = ""
|
||||
et_atiende.Text = ""
|
||||
If c.GetString("CAT_CL_CRUCE1") <> Null Then E_ENTRE1.Text = c.GetString("CAT_CL_CRUCE1")
|
||||
If c.GetString("CAT_CL_CALLE2") <> Null Then E_ENTRE_2.Text = c.GetString("CAT_CL_CALLE2")
|
||||
If c.GetString("CAT_CL_ATIENDE1") <> Null Then et_atiende.Text = c.GetString("CAT_CL_ATIENDE1")
|
||||
m_lat = "0"
|
||||
If c.GetString("CAT_CL_LAT") <> "" Then m_lat = c.GetString("CAT_CL_LAT")
|
||||
If m_lat.Length < 5 Then m_lat = "0"
|
||||
m_lon = "0"
|
||||
If c.GetString("CAT_CL_LONG") <> "" Then m_lon = c.GetString("CAT_CL_LONG")
|
||||
If m_lon.Length < 5 Then m_lon = "0"
|
||||
l_lat.Text = m_lat
|
||||
l_lon.Text = m_lon
|
||||
End If
|
||||
' Tracker.FLP.Connect
|
||||
If Tracker.FLP.IsInitialized And Tracker.FLP.GetLastKnownLocation.IsInitialized Then 'Si tenemos "UltimaUbicaccionConocida" la usamos.
|
||||
B4XPages.MainPage.lat_gps = Tracker.FLP.GetLastKnownLocation.Latitude
|
||||
B4XPages.MainPage.lon_gps = Tracker.FLP.GetLastKnownLocation.Longitude
|
||||
' Log($"Tenemos UUC: ${Tracker.FLP.GetLastKnownLocation.Latitude},${Tracker.FLP.GetLastKnownLocation.Longitude}"$)
|
||||
' GPS_LocationChanged(Tracker.FLP.GetLastKnownLocation)
|
||||
End If
|
||||
desdeBD = False
|
||||
Dim itemsAct As List
|
||||
itemsAct.Initialize
|
||||
itemsAct.Add("Activo")
|
||||
itemsAct.Add("No Activo")
|
||||
itemsAct.Add("Cerrado Permanente")
|
||||
cb_activo.SetItems(itemsAct)
|
||||
' Log(estatus)
|
||||
If estatus = "Activo" Then
|
||||
cb_activo.SelectedIndex = 0
|
||||
CLIENTE_ACTIVO = "Activo"
|
||||
Else If estatus = "Inactivo" Then
|
||||
cb_activo.SelectedIndex = 1
|
||||
CLIENTE_ACTIVO = "Inactivo"
|
||||
Else
|
||||
cb_activo.SelectedIndex = 2
|
||||
CLIENTE_ACTIVO = "Cerrado Permanente"
|
||||
End If
|
||||
Dim losGiros As List = Subs.traeGirosLista
|
||||
cb_giro.SetItems(losGiros)
|
||||
cb_giro.SelectedIndex = losGiros.IndexOf(c.GetString("CAT_CL_GIRO"))
|
||||
cb_giro.mBase.Width = et_diaSemana.Width
|
||||
Log("|"&c.GetString("CAT_CL_GIRO")&"|")
|
||||
c.Close
|
||||
camposModificados.Clear
|
||||
End If
|
||||
refrescarCliente = False
|
||||
End Sub
|
||||
|
||||
Private Sub Timer2_Tick
|
||||
' Log(turnoColor)
|
||||
If turnoColor = 1 Then
|
||||
cd.Initialize(Colors.RGB(125, 125, 125), 5dip) '210, 132, 79 '210, 105, 30 '125, 125, 125
|
||||
b_guardaCambios.Background = cd
|
||||
turnoColor = 0
|
||||
Else
|
||||
cd.Initialize(Colors.RGB(87, 87, 87), 5dip) '210, 132, 79 '210, 105, 30 '125, 125, 125
|
||||
b_guardaCambios.Background = cd
|
||||
turnoColor = 1
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Sub GPS_LocationChanged (Location1 As Location)
|
||||
LogColor($"Entrando a Cliente.GPS_LocationChanged"$, Colors.red)
|
||||
' Log($"${Tracker.FLP.GetLastKnownLocation.Latitude}, ${Tracker.FLP.GetLastKnownLocation.Longitude}"$)
|
||||
If Tracker.FLP.GetLastKnownLocation.IsInitialized And Tracker.FLP.GetLastKnownLocation.Latitude <> 0 Then
|
||||
B4XPages.MainPage.lat_gps = Tracker.FLP.GetLastKnownLocation.Latitude
|
||||
B4XPages.MainPage.lon_gps = Tracker.FLP.GetLastKnownLocation.Longitude
|
||||
' Log("Coords set to: " & B4XPages.MainPage.lat_gps & " and " & B4XPages.MainPage.lon_gps)
|
||||
End If
|
||||
Dim l1, l2 As Location
|
||||
l1.Initialize2(B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps)
|
||||
' Log($"Coordenadas de la tienda - lat:${m_lat}, lon:${m_lon}"$)
|
||||
l2.Initialize2(m_lat, m_lon)
|
||||
' Log($"${Location1.Latitude}, ${Location1.Longitude} - ${Tracker.FLP.GetLastKnownLocation.Latitude}, ${Tracker.FLP.GetLastKnownLocation.Longitude}"$)
|
||||
'now we need the distance between our location and the target location
|
||||
Dim distance As Long
|
||||
distance = l1.DistanceTo(l2) 'the result is in meter
|
||||
B4XPages.MainPage.skmt.ExecNonQuery("DELETE FROM HIST_GPS")
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO HIST_GPS (HGDATE, HGLAT, HGLON) VALUES(?,?,?) ", Array As Object (sDate & " " & sTime, B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps))
|
||||
CallSubDelayed(Tracker, "CreateLocationRequest")
|
||||
b_guardaCambios.Text = "Guardar"
|
||||
b_guardaCambios.Enabled = True
|
||||
Timer2.Enabled = False
|
||||
b_guardaCambios.Color = Colors.RGB(210, 105, 30) '210, 132, 79 '210, 105, 30
|
||||
End Sub
|
||||
|
||||
Private Sub B4XPage_CloseRequest As ResumableSub
|
||||
' BACK key pressed
|
||||
' Return True To close, False To cancel
|
||||
Return True
|
||||
' Return False
|
||||
End Sub
|
||||
|
||||
Private Sub b_guardaCambios_Click
|
||||
' dd/mm/yyyy hh24:mi:ss
|
||||
DateTime.DateFormat = "dd/MM/yyyy HH:mm:ss"
|
||||
sDate=DateTime.Date(DateTime.Now)
|
||||
camposModificados = Subs.RemoveDuplicates(camposModificados)
|
||||
Log(camposModificados)
|
||||
If CLIENTE_ACTIVO = "Inactivo" Or CLIENTE_ACTIVO = "Cerrado Permanente" Then l_secuencia.Text = "0"
|
||||
If CLIENTE_ACTIVO = "Cerrado Permanente" Then CLIENTE_ACTIVO = "Cerrado permanente confirmado"
|
||||
B4XPages.MainPage.skmt.ExecNonQuery($"UPDATE kmt_info set CAT_CL_CODIGO = '${la_cuenta.text}', CAT_CL_CEDIS = '${Subs.traeAlmacen}', CAT_CL_LAT = '${l_lat.text}', CAT_CL_LONG = '${l_lon.text}', CAT_CL_SECUENCIA = '${l_secuencia.text}', CAT_CL_RUTA = '${l_ruta.text}', CAT_CL_DIASEMANA = '${et_diaSemana.text}', CAT_CL_GIRO = '${cb_giro.SelectedItem}', CAT_CL_NOMBRE = '${Subs.escapeSQLString(E_NOMBRE_C.text)}', CAT_CL_ATIENDE1 = '${et_atiende.text}', CAT_CL_CALLE = '${Subs.escapeSQLString(et_calle.text)}', CAT_CL_NOINT = '${et_NoInt.text}', CAT_CL_NOEXT = '${et_NoExt.text}', CAT_CL_CALLE1 = '${Subs.escapeSQLString(et_direccion.text)}', CAT_CL_CRUCE1 = '${E_ENTRE1.text}', CAT_CL_CALLE2 = '${E_ENTRE_2.text}', CAT_CL_CP = '${et_cp.text}', CAT_CL_COLONIA = '${et_colonia.text}', CAT_CL_MUNI = '${et_municipio.text}', CAT_CL_EDO = '${et_estado.text}', CAT_CL_ESTATUS = '${CLIENTE_ACTIVO}', gestion = 11, CAT_CL_FECHA_CAPTURA = '${sDate & " " & sTime}', CAT_CL_ENVIO_PENDIENTE = 1, LAT_CENSADOR = '${B4XPages.MainPage.lat_gps}', LON_CENSADOR = '${B4XPages.MainPage.lon_gps}', ESTATUS_ORIGINAL = '${cb_activo.tag}', CAMPOS_MODIFICADOS = '${Subs.list2string(camposModificados)}' where CAT_CL_CODIGO In (select cuenta from cuentaa)"$)
|
||||
Log($"CAT_CL_CODIGO = '${la_cuenta.text}', CAT_CL_CEDIS = '${Subs.traeAlmacen}', CAT_CL_LAT = '${l_lat.text}', CAT_CL_LONG = '${l_lon.text}', CAT_CL_SECUENCIA = '${l_secuencia.text}', CAT_CL_RUTA = '${l_ruta.text}', CAT_CL_DIASEMANA = '${et_diaSemana.text}', CAT_CL_GIRO = '${cb_giro.SelectedItem}', CAT_CL_NOMBRE = '${E_NOMBRE_C.text}', CAT_CL_ATIENDE1 = '${et_atiende.text}', CAT_CL_CALLE = '${et_calle.text}', CAT_CL_NOINT = '${et_NoInt.text}', CAT_CL_NOEXT = '${et_NoExt.text}', CAT_CL_CALLE1 = '${et_direccion.text}', CAT_CL_CRUCE1 = '${E_ENTRE1.text}', CAT_CL_CALLE2 = '${E_ENTRE_2.text}', CAT_CL_CP = '${et_cp.text}', CAT_CL_COLONIA = '${et_colonia.text}', CAT_CL_MUNI = '${et_municipio.text}', CAT_CL_EDO = '${et_estado.text}', CAT_CL_ESTATUS = '${CLIENTE_ACTIVO}', gestion = 11"$)
|
||||
' B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO NOVENTA (NV_CLIENTE, NV_FECHA, NV_USER, NV_MOTIVO, NV_COMM, NV_LAT, NV_LON) VALUES(?,?,?,?,?,?,?) ", Array As Object (clie_id, sDate & sTime, usuario, "CENSOS", CLIENTE_ACTIVO, l_lat.text, l_lon.text))
|
||||
mandaPendientes
|
||||
B4XPages.ShowPage("Clientes")
|
||||
End Sub
|
||||
|
||||
Sub NUEVO_Click
|
||||
B4XPages.ShowPage("NuevoCliente")
|
||||
End Sub
|
||||
|
||||
Private Sub p_cliente_Click
|
||||
'Nada aqui, solo esta para que los clics no se pasen hacia atras.
|
||||
End Sub
|
||||
|
||||
Sub mandaPendientes
|
||||
'Enviamos Pendientes
|
||||
c = B4XPages.MainPage.skmt.ExecQuery("SELECT * from kmt_info where CAT_CL_ENVIO_PENDIENTE = '1'")
|
||||
Log($"Cliente PENDIENTE: ${c.RowCount}"$)
|
||||
If c.RowCount > 0 Then
|
||||
For i = 0 To c.RowCount - 1
|
||||
c.Position = i
|
||||
' Dim fechaCaptura As String = c.GetString("CAT_CL_FECHA_CAPTURA").As(String).SubString2(0,10)
|
||||
Dim fechaCaptura As String = c.GetString("CAT_CL_FECHA_CAPTURA")
|
||||
Log(fechaCaptura)
|
||||
Dim cmd As DBCommand
|
||||
cmd.Initialize
|
||||
cmd.Name = "guardaClienteGeocerca_MARDS"
|
||||
Dim motivo As String = "VERIFICACION DE DATOS"
|
||||
Dim comentario As String = c.GetString("ESTATUS_ORIGINAL")
|
||||
If c.GetString("CAT_CL_CODIGO").As(String).SubString2(0,1) = "N" Then motivo = "VERIFICACION CLIENTE NUEVO PREVENTA"
|
||||
If c.GetString("CAT_CL_CODIGO").As(String).SubString2(0,2) = "NC" Then motivo = "CLIENTE NUEVO CENSOS"
|
||||
If c.GetString("CAT_CL_CODIGO").As(String).SubString2(0,1) = "N" Then comentario = ""
|
||||
If c.GetString("CAT_CL_CODIGO").As(String).SubString2(0,2) = "NC" Then comentario = c.GetString("CAT_CL_CALLE1")
|
||||
|
||||
cmd.Parameters = Array As Object(c.GetString("CAT_CL_CODIGO"), fechaCaptura, Subs.traeUsuarioDeBD, c.GetString("CAT_CL_LAT"), c.GetString("CAT_CL_LONG"), l_ruta.text, Subs.traeAlmacen, c.GetString("LAT_CENSADOR"), c.GetString("LON_CENSADOR"), motivo, comentario)
|
||||
reqManager.ExecuteCommand(cmd, "guaradClienteGeocerca")
|
||||
|
||||
cmd.Initialize
|
||||
cmd.Name = "sp_confirmaCliente"
|
||||
cmd.Parameters = Array As Object(c.GetString("CAT_CL_CODIGO"), Subs.traeAlmacen, c.GetString("CAT_CL_LAT"), c.GetString("CAT_CL_LONG"), c.GetString("CAT_CL_SECUENCIA"), c.GetString("CAT_CL_RUTA"), c.GetString("CAT_CL_DIASEMANA"), c.GetString("CAT_CL_GIRO"), Subs.escapeSQLString(c.GetString("CAT_CL_NOMBRE")), c.GetString("CAT_CL_ATIENDE1"), c.GetString("CAT_CL_CALLE"), c.GetString("CAT_CL_NOINT"), c.GetString("CAT_CL_NOEXT"), Subs.escapeSQLString(c.GetString("CAT_CL_CALLE1")), c.GetString("CAT_CL_CRUCE1"), c.GetString("CAT_CL_CALLE2"), c.GetString("CAT_CL_CP"), c.GetString("CAT_CL_COLONIA"), c.GetString("CAT_CL_MUNI"), c.GetString("CAT_CL_EDO"), c.GetString("CAT_CL_ESTATUS"), c.GetString("CAT_CL_FECHA_CAPTURA"), sDate, Subs.traeUsuarioDeBD)
|
||||
Log($"${c.GetString("CAT_CL_CODIGO")}, ${Subs.traeAlmacen}, ${c.GetString("CAT_CL_LAT")}, ${c.GetString("CAT_CL_LONG")}, ${c.GetString("CAT_CL_SECUENCIA")}, ${c.GetString("CAT_CL_RUTA")}, ${c.GetString("CAT_CL_DIASEMANA")}, ${c.GetString("CAT_CL_GIRO")}, ${Subs.escapeSQLString(c.GetString("CAT_CL_NOMBRE"))}, ${c.GetString("CAT_CL_ATIENDE1")}, ${c.GetString("CAT_CL_CALLE")}, ${c.GetString("CAT_CL_NOINT")}, ${c.GetString("CAT_CL_NOEXT")}, ${c.GetString("CAT_CL_CALLE1")}, ${c.GetString("CAT_CL_CRUCE1")}, ${c.GetString("CAT_CL_CALLE2")}, ${c.GetString("CAT_CL_CP")}, ${c.GetString("CAT_CL_COLONIA")}, ${c.GetString("CAT_CL_MUNI")}, ${c.GetString("CAT_CL_EDO")}, ${c.GetString("CAT_CL_ESTATUS")}, ${c.GetString("CAT_CL_FECHA_CAPTURA")}, ${sDate}, ${Subs.traeUsuarioDeBD}"$)
|
||||
reqManager.ExecuteCommand(cmd , $"confirmaCliente_${c.GetString("CAT_CL_CODIGO")}"$)
|
||||
|
||||
cmd.Initialize
|
||||
cmd.Name = "guardaClientesNuevosMods_MARDS"
|
||||
cmd.Parameters = Array As Object(Subs.traeUsuarioDeBD, Subs.traeAlmacen, Subs.traeAlmacen, c.GetString("CAT_CL_RUTA"), Subs.traeCliente, c.GetString("CAMPOS_MODIFICADOS"))
|
||||
Log($"${Subs.traeUsuarioDeBD}, ${Subs.traeAlmacen}, ${Subs.traeAlmacen}, ${c.GetString("CAT_CL_RUTA")}, ${Subs.traeCliente}, ${c.GetString("CAMPOS_MODIFICADOS")}"$)
|
||||
reqManager.ExecuteCommand(cmd , $"guardaClientesNuevosMods_${c.GetString("CAT_CL_CODIGO")}"$)
|
||||
Next
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Sub JobDone(Job As HttpJob)
|
||||
Log(Job.Success)
|
||||
If Job.Success = False Then
|
||||
ToastMessageShow("Error: " & Job.ErrorMessage, True)
|
||||
LogColor("Error: " & Job.ErrorMessage, Colors.red)
|
||||
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 resultado As DBResult = reqManager.HandleJob(Job)
|
||||
If resultado.Tag = "confirmaCliente" Then
|
||||
Subs.logJobDoneResultados(resultado)
|
||||
End If
|
||||
'Modificamos la bandera de pendiente en kmt_info
|
||||
If resultado.Tag.As(String).IndexOf("confirmaCliente_") > -1 Then
|
||||
Private cliente As String= resultado.Tag
|
||||
cliente = cliente.SubString(cliente.IndexOf("_")+1)
|
||||
' Log($"Cliente: ${cliente}"$)
|
||||
B4XPages.MainPage.skmt.ExecNonQuery($"update kmt_info set CAT_CL_ENVIO_PENDIENTE = 0 where CAT_CL_CODIGO = '${cliente}'"$)
|
||||
Subs.logJobDoneResultados(resultado)
|
||||
End If
|
||||
If resultado.Tag = "guaradClienteGeocerca" Then
|
||||
Subs.logJobDoneResultados(resultado)
|
||||
End If
|
||||
End If
|
||||
Job.Release
|
||||
End If
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub b_cancelar_Click
|
||||
et_abono.Text = ""
|
||||
p_abono.Visible = False
|
||||
ime.HideKeyboard
|
||||
End Sub
|
||||
|
||||
Private Sub et_cp_TextChanged (Old As String, New As String)
|
||||
' Log(desdeBD)
|
||||
camposModificados.Add("CAT_CL_CP")
|
||||
If Not(desdeBD) And New.Length = 5 Then
|
||||
Private cc As Cursor = skmt.ExecQuery($"select estado, municipio, colonia from sepomex where codigo = '${et_cp.text}'"$)
|
||||
' LogColor(cc.RowCount, Colors.Green)
|
||||
If cc.RowCount > 0 Then
|
||||
For x = 0 To cc.RowCount - 1
|
||||
cc.Position = x
|
||||
et_estado.Text = cc.GetString("ESTADO")
|
||||
et_municipio.Text = cc.GetString("MUNICIPIO")
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
desdeBD = False
|
||||
End Sub
|
||||
|
||||
Private Sub et_cp_FocusChanged (HasFocus As Boolean)
|
||||
et_cp_click
|
||||
End Sub
|
||||
|
||||
Sub et_cp_click
|
||||
lv_colonia.Visible = False
|
||||
End Sub
|
||||
|
||||
Private Sub et_colonia_Click
|
||||
Sender.As(EditText).InputType = 524288
|
||||
If lv_colonia.Visible = False Then
|
||||
lv_colonia.Visible = True
|
||||
Else
|
||||
lv_colonia.Visible = False
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub et_colonia_FocusChanged (HasFocus As Boolean)
|
||||
If HasFocus Then
|
||||
Private cc As Cursor = skmt.ExecQuery($"select colonia from sepomex where codigo = '${et_cp.text}'"$)
|
||||
lv_colonia.Clear
|
||||
lv_colonia.BringToFront
|
||||
Private label1 As Label
|
||||
label1 = lv_colonia.SingleLineLayout.Label
|
||||
label1.TextColor = Colors.White
|
||||
label1.TextSize = 14
|
||||
' Log(cc.RowCount)
|
||||
If cc.RowCount > 0 Then
|
||||
For i = 0 To cc.RowCount - 1
|
||||
cc.Position = i
|
||||
lv_colonia.AddSingleLine(cc.GetString("COLONIA"))
|
||||
' Log(cc.GetString("COLONIA"))
|
||||
Next
|
||||
Else
|
||||
lv_colonia.AddSingleLine("Código no encontrado.")
|
||||
lv_colonia.AddSingleLine("Ingrese colonia manualmente.")
|
||||
End If
|
||||
lv_colonia.Visible = True
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub lv_colonia_ItemClick (Position As Int, Value As Object)
|
||||
lv_colonia.Visible = False
|
||||
If Value <> "Código no encontrado." And Value <> "Ingrese colonia manualmente." Then
|
||||
et_colonia.Text = Value
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Sub et_diaSemana_Click
|
||||
LogColor("Clic diasemana", Colors.Red)
|
||||
Sender.As(EditText).InputType = 524288
|
||||
If Not(lv_diaSemana.Visible) Then
|
||||
lv_diaSemana.Visible = True
|
||||
Else
|
||||
Log("Si visible")
|
||||
lv_diaSemana.Visible = False
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub et_diaSemana_FocusChanged (HasFocus As Boolean)
|
||||
If HasFocus And lv_diaSemana.Visible = False Then
|
||||
' lv_diaSemana.Visible = True
|
||||
lv_diaSemana.BringToFront
|
||||
lv_diaSemana.Clear
|
||||
Private label1 As Label
|
||||
label1 = lv_diaSemana.SingleLineLayout.Label
|
||||
label1.TextColor = Colors.White
|
||||
label1.TextSize = 14
|
||||
lv_diaSemana.AddSingleLine("LUNES")
|
||||
lv_diaSemana.AddSingleLine("MARTES")
|
||||
lv_diaSemana.AddSingleLine("MIERCOLES")
|
||||
lv_diaSemana.AddSingleLine("JUEVES")
|
||||
lv_diaSemana.AddSingleLine("VIERNES")
|
||||
lv_diaSemana.AddSingleLine("SABADO")
|
||||
lv_diaSemana.Visible = True
|
||||
End If
|
||||
If Not(HasFocus) And lv_diaSemana.Visible Then
|
||||
lv_diaSemana.Visible = False
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub lv_diaSemana_ItemClick (Position As Int, Value As Object)
|
||||
lv_diaSemana.Visible = False
|
||||
et_diaSemana.Text = Value
|
||||
End Sub
|
||||
|
||||
Sub et_giro_Click
|
||||
' If lv_giro.Visible Then
|
||||
' lv_giro.Visible = False
|
||||
' Else
|
||||
' lv_giro.Visible = True
|
||||
' End If
|
||||
End Sub
|
||||
|
||||
Sub et_giro_FocusChanged (HasFocus As Boolean)
|
||||
' If HasFocus Then
|
||||
' Sender.As(EditText).InputType = 524288
|
||||
' Private cc As Cursor = skmt.ExecQuery($"select * from cat_giros"$)
|
||||
' lv_giro.Clear
|
||||
' lv_giro.BringToFront
|
||||
' Private label1 As Label
|
||||
'' label1 = lv_giro.SingleLineLayout.Label
|
||||
' label1.TextColor = Colors.White
|
||||
' label1.TextSize = 14
|
||||
' Log(cc.RowCount)
|
||||
' If cc.RowCount > 0 Then
|
||||
' For i = 0 To cc.RowCount - 1
|
||||
' cc.Position = i
|
||||
' label1.Tag = cc.GetString("id")
|
||||
' lv_giro.AddSingleLine(cc.GetString("descripcion"))
|
||||
' Log(cc.GetString("descripcion"))
|
||||
' Next
|
||||
' End If
|
||||
' lv_giro.Visible = True
|
||||
' Else
|
||||
' lv_giro.Visible = False
|
||||
' End If
|
||||
End Sub
|
||||
|
||||
Private Sub lv_giro_ItemClick (Position As Int, Value As Object)
|
||||
' lv_giro.Visible = False
|
||||
et_giro.Text = Value
|
||||
End Sub
|
||||
|
||||
Private Sub l_cp_LongClick
|
||||
et_cp_TextChanged(et_cp.Text, et_cp.Text)
|
||||
End Sub
|
||||
|
||||
Private Sub b_mapa2_Click
|
||||
B4XPages.MainPage.mapa.Latitud = l_lat.text
|
||||
B4XPages.MainPage.mapa.Longitud = l_lon.text
|
||||
B4XPages.MainPage.mapa.NOMBRE_TIENDA = E_NOMBRE_C.text
|
||||
' B4XPages.MainPage.mapa.gmap.Clear
|
||||
B4XPages.ShowPage("mapa")
|
||||
End Sub
|
||||
|
||||
Private Sub b_actCoords_Click
|
||||
l_lat.Text = B4XPages.MainPage.lat_gps
|
||||
l_lon.Text = B4XPages.MainPage.lon_gps
|
||||
camposModificados.Add("CAT_CL_LAT")
|
||||
camposModificados.Add("CAT_CL_LONG")
|
||||
ToastMessageShow("¡Coordenadas actualizadas!", False)
|
||||
End Sub
|
||||
|
||||
Private Sub cb_activo_SelectedIndexChanged (Index As Int)
|
||||
If Index = 0 Then
|
||||
CLIENTE_ACTIVO = "Activo"
|
||||
else if Index = 1 Then
|
||||
CLIENTE_ACTIVO = "Inactivo"
|
||||
Else
|
||||
CLIENTE_ACTIVO = "Cerrado Permanente"
|
||||
End If
|
||||
Log(CLIENTE_ACTIVO)
|
||||
camposModificados.Add("CAT_CL_ESTATUS")
|
||||
End Sub
|
||||
|
||||
Private Sub cb_giro_SelectedIndexChanged (Index As Int)
|
||||
camposModificados.Add("CAT_CL_GIRO")
|
||||
End Sub
|
||||
|
||||
Private Sub et_atiende_TextChanged (Old As String, New As String)
|
||||
camposModificados.Add("CAT_CL_ATIENDE1")
|
||||
End Sub
|
||||
|
||||
Private Sub E_ENTRE_2_TextChanged (Old As String, New As String)
|
||||
camposModificados.Add("CAT_CL_CALLE2")
|
||||
End Sub
|
||||
|
||||
Private Sub E_ENTRE1_TextChanged (Old As String, New As String)
|
||||
camposModificados.Add("CAT_CL_CRUCE1")
|
||||
End Sub
|
||||
|
||||
Private Sub et_NoInt_TextChanged (Old As String, New As String)
|
||||
camposModificados.Add("CAT_CL_NOINT")
|
||||
End Sub
|
||||
|
||||
Private Sub et_NoExt_TextChanged (Old As String, New As String)
|
||||
camposModificados.Add("CAT_CL_NOEXT")
|
||||
End Sub
|
||||
|
||||
Private Sub et_calle_TextChanged (Old As String, New As String)
|
||||
camposModificados.Add("CAT_CL_CALLE")
|
||||
End Sub
|
||||
|
||||
Private Sub et_direccion_TextChanged (Old As String, New As String)
|
||||
camposModificados.Add("CAT_CL_CALLE1")
|
||||
End Sub
|
||||
|
||||
Private Sub et_colonia_TextChanged (Old As String, New As String)
|
||||
camposModificados.Add("CAT_CL_COLONIA")
|
||||
End Sub
|
||||
|
||||
Private Sub et_municipio_TextChanged (Old As String, New As String)
|
||||
camposModificados.Add("CAT_CL_MUNI")
|
||||
End Sub
|
||||
|
||||
Private Sub et_estado_TextChanged (Old As String, New As String)
|
||||
camposModificados.Add("CAT_CL_EDO")
|
||||
End Sub
|
||||
|
||||
Private Sub E_NOMBRE_C_TextChanged (Old As String, New As String)
|
||||
camposModificados.Add("CAT_CL_NOMBRE")
|
||||
End Sub
|
||||
|
||||
Private Sub et_diaSemana_TextChanged (Old As String, New As String)
|
||||
camposModificados.Add("CAT_CL_DIAS_VISITA")
|
||||
End Sub
|
||||
244
B4A/C_Clientes.bas
Normal file
@@ -0,0 +1,244 @@
|
||||
B4A=true
|
||||
Group=Default Group
|
||||
ModulesStructureVersion=1
|
||||
Type=Class
|
||||
Version=11.5
|
||||
@EndOfDesignText@
|
||||
Sub Mods
|
||||
'20230526 -
|
||||
|
||||
End Sub
|
||||
|
||||
Sub Class_Globals
|
||||
Private Root As B4XView 'ignore
|
||||
Private xui As XUI 'ignore
|
||||
|
||||
' Dim skmt As SQL
|
||||
Dim c As Cursor
|
||||
Dim c2 As Cursor
|
||||
Dim s As Cursor
|
||||
Dim ListView1 As ListView
|
||||
Dim entro As String
|
||||
Dim gest As Button
|
||||
Dim lfila As Label
|
||||
Dim busca As EditText
|
||||
Dim colonia As String
|
||||
Private b_qr As Button
|
||||
Private qr As QRCode
|
||||
' Dim sc As Zxing_scanner
|
||||
Dim CODIGO As String
|
||||
Dim STIME As String
|
||||
|
||||
Dim ruta As String
|
||||
Dim q_buscar As String
|
||||
Private p_clientes 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("clientes")
|
||||
'Dim ruta As String
|
||||
entro ="2"
|
||||
' valido donde escribo el archivo de la base de datos de kmt
|
||||
' If File.ExternalWritable Then
|
||||
' ruta = File.DirDefaultExternal
|
||||
' Else
|
||||
ruta = File.DirInternal
|
||||
' End If
|
||||
|
||||
' se crea o no el archivo de la base de ddatos de kmt
|
||||
'NOTAS SI SE MODIFICA LA ESTRUCTURA SE QUITA EL IF Y SE VA DIRECTO A LA SENTENCIA FILE.COPY PARA QUE
|
||||
'TOME LA NUEVA ESTRUCTURA ES MUY IMPORTANTE TENER EL IF DE LO CONTRARIO SOLO LO ESCRIBE UNA VEZ Y LO BORRA
|
||||
'SI SE REGRESA A ESTE ACTIVIDAD.
|
||||
If File.Exists(ruta, "kmt.db") = False Then
|
||||
File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db")
|
||||
End If
|
||||
qr.initialize
|
||||
End Sub
|
||||
|
||||
Sub B4XPage_Appear
|
||||
B4XPages.SetTitle(Me, $"Clientes - ${Starter.dia_semana}"$)
|
||||
busca.Text = ""
|
||||
entro ="2"
|
||||
colonia = 0
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_CODIGO, CAT_CL_SECUENCIA from kmt_info where gestion = 0 ORDER BY CAT_CL_SECUENCIA, CAT_CL_CODIGO")
|
||||
ListView1.Clear
|
||||
' Log("LIMPIAMOS LISTVIEW")
|
||||
lfila.Text = "NOMBRE"
|
||||
If c.RowCount>0 Then
|
||||
Dim label1 As Label
|
||||
label1 = ListView1.TwoLinesLayout.Label
|
||||
label1.TextSize = 14
|
||||
label1.TextColor = Colors.Black
|
||||
Dim label2 As Label
|
||||
label2 = ListView1.TwoLinesLayout.SecondLabel
|
||||
label2.TextSize = 14
|
||||
label2.TextColor = Colors.Black
|
||||
label2.Height = 50dip
|
||||
label2.Width = ListView1.Width * 0.99
|
||||
ListView1.TwoLinesLayout.ItemHeight = 70dip
|
||||
For i=0 To c.RowCount -1
|
||||
c.Position=i
|
||||
' Log($"${c.GetString("CAT_CL_CODIGO")}, ${c.GetString("CAT_CL_NOMBRE")}"$)
|
||||
ListView1.AddTwoLines(c.GetString("CAT_CL_CODIGO") & " - " & c.GetString("CAT_CL_SECUENCIA"), c.GetString("CAT_CL_NOMBRE") & ", " & c.GetString("CAT_CL_CALLE"))
|
||||
Next
|
||||
End If
|
||||
c.Close
|
||||
p_clientes.Height = Root.Height
|
||||
ListView1.Height = Root.Height * 0.75
|
||||
entro = "4"
|
||||
End Sub
|
||||
|
||||
Sub ListView1_ItemClick (Position As Int, Value As Object)
|
||||
Private value2() As String = Regex.Split(" - ", Value)
|
||||
If colonia = 0 Then
|
||||
colonia = value2(0)
|
||||
End If
|
||||
' Log("-------------------------------" & value2(0))
|
||||
|
||||
If entro = "2" Then
|
||||
c2=B4XPages.MainPage.skmt.ExecQuery2("select CAT_CL_CALLE, CAT_CL_COLONIA, count(*) as cuantos from kmt_info where gestion = 0 and CAT_CL_COLONIA = ? GROUP BY CAT_CL_CALLE, CAT_CL_COLONIA order by CAT_CL_CALLE ", Array As String(value2(0)))
|
||||
ListView1.Clear
|
||||
lfila.text = "Calle"
|
||||
If c2.RowCount>0 Then
|
||||
For i=0 To c2.RowCount -1
|
||||
c2.Position=i
|
||||
ListView1.AddTwoLines(c2.GetString("CAT_CL_CALLE"),c2.GetString("cuantos") )
|
||||
Next
|
||||
End If
|
||||
entro = "3"
|
||||
Else If entro = "3" Then
|
||||
c2=B4XPages.MainPage.skmt.ExecQuery2("select CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_CODIGO from kmt_info where gestion = 0 and CAT_CL_CALLE = ? AND CAT_CL_COLONIA = ? order by CAT_CL_NOMBRE ", Array As String(value2(0), colonia))
|
||||
ListView1.Clear
|
||||
lfila.text = "Nombre"
|
||||
If c2.RowCount>0 Then
|
||||
For i=0 To c2.RowCount -1
|
||||
c2.Position=i
|
||||
ListView1.AddTwoLines(c2.GetString("CAT_CL_CODIGO"), c2.GetString("CAT_CL_NOMBRE"))
|
||||
Next
|
||||
End If
|
||||
entro = "4"
|
||||
Else If entro = "4" Then
|
||||
B4XPages.MainPage.skmt.ExecNonQuery("delete from CUENTAA")
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object(value2(0)))
|
||||
DateTime.TimeFormat = "HHmmss"
|
||||
STIME=DateTime.Time(DateTime.Now)
|
||||
|
||||
s=B4XPages.MainPage.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM HIST_STAY_STORE WHERE HSS_IN = ? AND HSS_CODIGO In (select cuenta from cuentaa)", Array As String("0"))
|
||||
s.Position = 0
|
||||
If s.GetString("CUANTOS") = 1 Then
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE HIST_STAY_STORE set HSS_IN = ? where HSS_IN = 0 AND HSS_CODIGO In (select cuenta from cuentaa)", Array As Object(STIME))
|
||||
Else
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO HIST_STAY_STORE(HSS_CODIGO, HSS_IN , HSS_OUT , HSS_TOT) VALUES (?,0,0,0)", Array As Object (value2(0)))
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE HIST_STAY_STORE set HSS_IN = ? where HSS_IN = 0 AND HSS_CODIGO In (select cuenta from cuentaa)", Array As Object(STIME))
|
||||
End If
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE HIST_STAY_OUT set HSO_INI = ? where HSO_INI = 0 ", Array As Object(STIME))
|
||||
DateTime.TimeFormat = "HH:mm:ss"
|
||||
Subs.guardaClienteHoraInicio(value2(0))
|
||||
B4XPages.MainPage.cliente.refrescarCliente = True
|
||||
Log(Value)
|
||||
If Value.As(String).StartsWith("N") Then
|
||||
B4XPages.MainPage.nuevoCliente.cargarCliente = True
|
||||
B4XPages.ShowPage("NuevoCliente")
|
||||
Else
|
||||
B4XPages.ShowPage("Cliente")
|
||||
End If
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub B4XPage_CloseRequest As ResumableSub
|
||||
' BACK key pressed
|
||||
'Return True to close, False to cancel
|
||||
' If key=KeyCodes.KEYCODE_BACK Then
|
||||
' StartActivity(seleccion)
|
||||
' Return False
|
||||
' End If
|
||||
B4XPages.ShowPage("Principal")
|
||||
Return True
|
||||
End Sub
|
||||
|
||||
Sub BUSCA_TextChanged (Old As String, New As String)
|
||||
' Log($"${Old} - ${New}"$)
|
||||
If Old <> "" And New <> "" Then
|
||||
' Log("BUSCA_TEXTCHANGED")
|
||||
q_buscar = "%" & busca.Text & "%"
|
||||
c2=B4XPages.MainPage.skmt.ExecQuery2("select CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_CODIGO from kmt_info where (CAT_CL_NOMBRE like ? OR CAT_CL_CODIGO LIKE ? OR CAT_CL_CALLE LIKE ?)and gestion = 0 order by CAT_CL_NOMBRE ", Array As String(q_buscar,q_buscar,q_buscar))
|
||||
ListView1.Clear
|
||||
lfila.text = "Nombre y Calle"
|
||||
' Log("=========================================================================")
|
||||
If c2.RowCount > 0 Then
|
||||
Dim label1 As Label
|
||||
label1 = ListView1.TwoLinesLayout.Label
|
||||
label1.TextSize = 14
|
||||
label1.TextColor = Colors.DarkGray
|
||||
Dim label2 As Label
|
||||
label2 = ListView1.TwoLinesLayout.SecondLabel
|
||||
label2.TextSize = 14
|
||||
label2.TextColor = Colors.DarkGray
|
||||
' ListView1.TwoLinesLayout.ItemHeight = 350dip
|
||||
For i=0 To c2.RowCount -1
|
||||
c2.Position=i
|
||||
' Log($"${c2.GetString("CAT_CL_CODIGO")} - ${c2.GetString("CAT_CL_NOMBRE")}"$)
|
||||
ListView1.AddTwoLines(c2.GetString("CAT_CL_CODIGO"), c2.GetString("CAT_CL_NOMBRE") &" CALLE: "& c2.GetString("CAT_CL_CALLE"))
|
||||
Next
|
||||
End If
|
||||
entro = "4"
|
||||
c2.Close
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Sub b_qr_Click
|
||||
Dim scan_width As Int
|
||||
Dim scan_height As Int
|
||||
scan_width = 400
|
||||
scan_height = 400
|
||||
End Sub
|
||||
|
||||
Sub sc_result(atype As String,Values As String)
|
||||
CODIGO = Values
|
||||
c2=B4XPages.MainPage.skmt.ExecQuery2("select COUNT(*) AS ENCONTRADO from kmt_info where CAT_CL_NUM_SERIEFISICO = ? order by CAT_CL_NOMBRE ", Array As String(CODIGO))
|
||||
c2.Position =0
|
||||
If c2.GetString("ENCONTRADO") > 0 Then
|
||||
s=B4XPages.MainPage.skmt.ExecQuery2("select CAT_CL_CODIGO from kmt_info where CAT_CL_NUM_SERIEFISICO = ? order by CAT_CL_NOMBRE ", Array As String(CODIGO))
|
||||
s.Position =0
|
||||
B4XPages.MainPage.skmt.ExecNonQuery("delete from CUENTAA")
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object(s.GetString("CAT_CL_CODIGO")))
|
||||
s.Close
|
||||
' b_qr.Visible = False
|
||||
B4XPages.ShowPage("clientes")
|
||||
Else
|
||||
Msgbox("CODIGO " & CODIGO & " NO ENCONTRADO","AVISO") 'ignore
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Sub sc_noScan
|
||||
Log("nothing returned from the scan !!!!!")
|
||||
End Sub
|
||||
|
||||
Sub calc_ean_checksum(number As String) As String 'this has now become redundant as I am only interested in QR Codes
|
||||
Dim i As Int
|
||||
Dim cO As Char
|
||||
Dim soma As Int
|
||||
Dim n As Int
|
||||
Dim digit As Float
|
||||
soma = 0
|
||||
For i=0 To number.Length - 1
|
||||
digit = number.SubString2(i,i+1)
|
||||
n= digit * ((i Mod 2) * 2 + 1)
|
||||
soma=soma+n
|
||||
Next
|
||||
Return number & ( ( 10 - ( soma Mod 10 )) Mod 10 )
|
||||
End Sub
|
||||
|
||||
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||
|
||||
Private Sub p_clientes_Click
|
||||
'Nada aqui, solo esta para que los clics no se pasen hacia atras.
|
||||
End Sub
|
||||
263
B4A/C_MapaRutas.bas
Normal file
@@ -0,0 +1,263 @@
|
||||
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
|
||||
|
||||
Dim GPS As GPS
|
||||
Dim rp As RuntimePermissions
|
||||
Dim ruta As String
|
||||
Dim skmt As SQL
|
||||
Dim c As Cursor
|
||||
Dim c2 As Cursor
|
||||
Dim c22 As Cursor
|
||||
Dim c3 As Cursor
|
||||
|
||||
Private gmap As GoogleMap
|
||||
Private MapFragment1 As MapFragment
|
||||
Dim Latitud As Double = 0
|
||||
Dim Longitud As Double = 0
|
||||
Dim Lat2 As Double = 0
|
||||
Dim Lon2 As Double = 0
|
||||
Dim p1, p2 As Location
|
||||
Dim Distance As Float
|
||||
Dim boton1 As Button
|
||||
Dim HUE_BLUE As Float
|
||||
Dim HUE_RED As Float
|
||||
Dim HUE_GREEN As Float
|
||||
Private B_AZUL As Button
|
||||
Private B_ROJO As Button
|
||||
Private B_VERDE As Button
|
||||
Private B_TODOS As Button
|
||||
Dim Tienda As String
|
||||
Dim LatitudRu As Double
|
||||
Dim LongitudRU As Double
|
||||
Dim LIST_AZUL As List
|
||||
Dim LIST_ROJO As List
|
||||
Dim LIST_VERDE As List
|
||||
Dim MARK_AZUL As Marker
|
||||
Dim MARK_ROJO As Marker
|
||||
Dim MARK_VERDE As Marker
|
||||
Dim MARK_CEDIS As Marker
|
||||
Dim rojo As String
|
||||
Dim azul As String
|
||||
Dim verde As String
|
||||
Dim todos As String
|
||||
Dim NumSerie As Int
|
||||
Dim OnInfoWindowClickListener1 As OnInfoWindowClickListener
|
||||
Dim GoogleMapEXTRA As GoogleMapsExtras
|
||||
Dim CODIGO As String
|
||||
Private SEMANA As String
|
||||
Private p_mapaRutas 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("mapaRutas")
|
||||
ruta = File.DirInternal
|
||||
If File.Exists(ruta, "kmt.db") = False Then
|
||||
File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db")
|
||||
End If
|
||||
skmt.Initialize(ruta,"kmt.db", True)
|
||||
GPS.Initialize("GPS")
|
||||
If MapFragment1.IsGooglePlayServicesAvailable = False Then
|
||||
ToastMessageShow("Please install Google Play Services.", True)
|
||||
End If
|
||||
MARK_AZUL.IsInitialized
|
||||
MARK_ROJO.IsInitialized
|
||||
MARK_VERDE.IsInitialized
|
||||
LIST_AZUL.Initialize
|
||||
LIST_ROJO.Initialize
|
||||
LIST_VERDE.Initialize
|
||||
verde = 0
|
||||
azul = 0
|
||||
rojo = 0
|
||||
todos = 1
|
||||
c=B4XPages.MainPage.skmt.ExecQuery2("select count(*) AS CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("SEMANA"))
|
||||
c.Position =0
|
||||
SEMANA = c.GetString("CUANTOS")
|
||||
c.Close
|
||||
If SEMANA > 0 Then
|
||||
c=B4XPages.MainPage.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("SEMANA"))
|
||||
c.Position =0
|
||||
SEMANA = c.GetString("CAT_VA_VALOR")
|
||||
c.Close
|
||||
End If
|
||||
End Sub
|
||||
|
||||
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||
|
||||
Sub MapFragment1_Ready
|
||||
Log("ENTRANDO")
|
||||
gmap = MapFragment1.GetMap
|
||||
gmap.IsInitialized
|
||||
rp.CheckAndRequest(rp.PERMISSION_ACCESS_FINE_LOCATION)
|
||||
Wait For Activity_PermissionResult (Permission As String, Result As Boolean)
|
||||
gmap.MyLocationEnabled = Result
|
||||
Dim JavaMapsObject As JavaObject
|
||||
JavaMapsObject = gmap.GetUiSettings
|
||||
JavaMapsObject.RunMethod("setMapToolbarEnabled", Array As Object(True))
|
||||
'''''''----------------------------MARKER AZUL - POR VISITAR
|
||||
If azul = 1 Or todos = 1 Then
|
||||
c.IsInitialized
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_CODIGO,CAT_CL_NOMBRE,CAT_CL_LAT,CAT_CL_LONG from kmt_info where gestion = 0 and CAT_CL_LAT is not null and CAT_CL_LONG is not null and CAT_CL_LAT <> 0 and CAT_CL_LONG <> 0 and CAT_CL_LAT <> ' ' and CAT_CL_LONG <> ' ' ")
|
||||
skmt.Initialize(ruta,"kmt.db", True)
|
||||
If c.RowCount > 0 Then
|
||||
For i = 0 To c.RowCount - 1
|
||||
c.Position = i
|
||||
' Log(i&"|"&c.GetString("CAT_CL_LAT")&"|")
|
||||
LatitudRu = 0
|
||||
If c.GetString("CAT_CL_LAT") <> "" Then LatitudRu = c.GetString("CAT_CL_LAT")
|
||||
LongitudRU = 0
|
||||
If c.GetString("CAT_CL_LONG") <> "" Then LongitudRU = c.GetString("CAT_CL_LONG")
|
||||
CODIGO=c.GetString("CAT_CL_CODIGO")
|
||||
Tienda= c.GetString("CAT_CL_NOMBRE")
|
||||
MARK_AZUL = gmap.AddMarker2(LatitudRu,LongitudRU,CODIGO, gmap.HUE_BLUE)
|
||||
MARK_AZUL.Snippet = Tienda
|
||||
Next
|
||||
End If
|
||||
c .Close
|
||||
If MARK_AZUL.IsInitialized Then LIST_AZUL.Add(MARK_AZUL)
|
||||
End If
|
||||
'''''''----------------------------MARKER VERDE - VENTA
|
||||
If verde =1 Or todos = 1 Then
|
||||
c2.IsInitialized
|
||||
c2=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_CODIGO, CAT_CL_NOMBRE,CAT_CL_LONG,CAT_CL_LAT from kmt_info where gestion = 2 and CAT_CL_LAT is not null and CAT_CL_LONG is not null and CAT_CL_LAT <> 0 and CAT_CL_LONG <> 0")
|
||||
For i = 0 To c2.RowCount -1
|
||||
c2.Position = i
|
||||
LongitudRU = c2.GetString("CAT_CL_LONG")
|
||||
LatitudRu = c2.GetString("CAT_CL_LAT")
|
||||
CODIGO=c2.GetString("CAT_CL_CODIGO")
|
||||
Tienda= c2.GetString("CAT_CL_NOMBRE")
|
||||
MARK_VERDE = gmap.AddMarker2(LatitudRu,LongitudRU,CODIGO,gmap.HUE_GREEN)
|
||||
MARK_VERDE.Snippet = Tienda
|
||||
Next
|
||||
Else
|
||||
If verde =1 Or todos = 1 Then
|
||||
c2.IsInitialized
|
||||
c2=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_CODIGO, CAT_CL_NOMBRE,CAT_CL_LONG,CAT_CL_LAT from kmt_info where gestion = 2 and CAT_CL_LAT is not null and CAT_CL_LONG is not null and CAT_CL_LAT <> 0 and CAT_CL_LONG <> 0")
|
||||
For i = 0 To c2.RowCount -1
|
||||
c2.Position = i
|
||||
LongitudRU = c2.GetString("CAT_CL_LONG")
|
||||
LatitudRu = c2.GetString("CAT_CL_LAT")
|
||||
CODIGO=c2.GetString("CAT_CL_CODIGO")
|
||||
Tienda= c2.GetString("CAT_CL_NOMBRE")
|
||||
MARK_VERDE = gmap.AddMarker2(LatitudRu,LongitudRU,CODIGO,gmap.HUE_GREEN)
|
||||
MARK_VERDE.Snippet = Tienda
|
||||
Next
|
||||
c2 .Close
|
||||
If MARK_VERDE.IsInitialized Then LIST_VERDE.Add(MARK_VERDE)
|
||||
End If
|
||||
End If
|
||||
' '''''''----------------------------MARKER ROJO - NO VENTA
|
||||
If rojo =1 Or todos = 1 Then
|
||||
c3.IsInitialized
|
||||
c3=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_CODIGO, CAT_CL_NOMBRE,CAT_CL_LONG,CAT_CL_LAT from kmt_info where gestion = 3 and CAT_CL_LAT is not null and CAT_CL_LONG is not null and CAT_CL_LAT <> 0 and CAT_CL_LONG <> 0")
|
||||
For i = 0 To c3.RowCount -1
|
||||
c3.Position = i
|
||||
LongitudRU = c3.GetDouble("CAT_CL_LONG")
|
||||
LatitudRu = c3.GetDouble("CAT_CL_LAT")
|
||||
Tienda= c3.GetString("CAT_CL_NOMBRE")
|
||||
MARK_ROJO = gmap.AddMarker2(LatitudRu,LongitudRU,Tienda, gmap.HUE_RED)
|
||||
Next
|
||||
Else
|
||||
If rojo =1 Or todos = 1 Then
|
||||
c3.IsInitialized
|
||||
c3=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_CODIGO, CAT_CL_NOMBRE,CAT_CL_LONG,CAT_CL_LAT from kmt_info where gestion = 3 and CAT_CL_LAT is not null and CAT_CL_LONG is not null and CAT_CL_LAT <> 0 and CAT_CL_LONG <> 0")
|
||||
For i = 0 To c3.RowCount -1
|
||||
c3.Position = i
|
||||
LongitudRU = c3.GetDouble("CAT_CL_LONG")
|
||||
LatitudRu = c3.GetDouble("CAT_CL_LAT")
|
||||
Tienda= c3.GetString("CAT_CL_NOMBRE")
|
||||
MARK_ROJO = gmap.AddMarker2(LatitudRu,LongitudRU,Tienda, gmap.HUE_RED)
|
||||
Next
|
||||
If MARK_ROJO.IsInitialized Then LIST_ROJO.Add(MARK_ROJO)
|
||||
c3.Close
|
||||
End If
|
||||
End If
|
||||
''------------------------------
|
||||
Dim aa As CameraPosition
|
||||
aa.Initialize(LatitudRu,LongitudRU,15)''' RECOMENDABLE CAMBIAR A 10 PARA QUE SE VEAN MAS MARCADORES
|
||||
gmap.AnimateCamera(aa)
|
||||
|
||||
'''''---------------------- ESTO ES PARA LOS CLICK EN LAS VENTANAS D INFORMACION-----------
|
||||
Dim OnInfoWindowClickListener1 As OnInfoWindowClickListener
|
||||
OnInfoWindowClickListener1.Initialize("OnInfoWindowClickListener1")
|
||||
GoogleMapEXTRA.SetOnInfoWindowClickListener(gmap, OnInfoWindowClickListener1)
|
||||
|
||||
End Sub
|
||||
|
||||
Sub OnInfoWindowClickListener1_click(Marker1 As Marker)
|
||||
Log("mapclicked")
|
||||
Log("borramos cuentaa")
|
||||
B4XPages.MainPage.skmt.ExecNonQuery("delete from CUENTAA")
|
||||
Log("insertamos cuentaa")
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?) ", Array As Object(Marker1.Title))
|
||||
Log("vamos a cliente")
|
||||
B4XPages.ShowPage("Cliente")
|
||||
B4XPages.ClosePage("MapaRutas")
|
||||
B4XPages.GetManager.ClosePage(Me)
|
||||
End Sub
|
||||
|
||||
Sub GPS_LocationChanged (Parametro As Location)
|
||||
MARK_CEDIS.IsInitialized
|
||||
End Sub
|
||||
|
||||
Sub B4XPage_Appear
|
||||
If GPS.GPSEnabled = False Then
|
||||
ToastMessageShow("Debe Activar el GPS del Equipo.", True)
|
||||
StartActivity(GPS.LocationSettingsIntent)
|
||||
Else
|
||||
GPS.Start(0, 0)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Sub B_TODOS_Click
|
||||
todos =1
|
||||
verde = 0
|
||||
azul = 0
|
||||
rojo = 0
|
||||
MapFragment1_Ready
|
||||
End Sub
|
||||
|
||||
Sub B_VERDE_Click
|
||||
verde = 1
|
||||
azul = 0
|
||||
rojo = 0
|
||||
todos = 0
|
||||
gmap.Clear
|
||||
MapFragment1_Ready
|
||||
End Sub
|
||||
|
||||
Sub B_ROJO_Click
|
||||
rojo = 1
|
||||
verde = 0
|
||||
azul = 0
|
||||
todos = 0
|
||||
gmap.Clear
|
||||
MapFragment1_Ready
|
||||
End Sub
|
||||
|
||||
Sub B_AZUL_Click
|
||||
azul = 1
|
||||
verde = 0
|
||||
rojo = 0
|
||||
todos = 0
|
||||
gmap.Clear
|
||||
MapFragment1_Ready
|
||||
End Sub
|
||||
|
||||
Private Sub p_mapaRutas_Click
|
||||
|
||||
End Sub
|
||||
140
B4A/C_Mapas.bas
Normal file
@@ -0,0 +1,140 @@
|
||||
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
|
||||
'//Process Globals
|
||||
Dim GPS As GPS
|
||||
Dim rp As RuntimePermissions
|
||||
Dim ruta As String
|
||||
'//Globals
|
||||
Dim gmap As GoogleMap
|
||||
Private MapFragment1 As MapFragment
|
||||
Dim Latitud As Double = 0
|
||||
Dim Longitud As Double = 0
|
||||
Dim Lat2 As Double = 0
|
||||
Dim Lon2 As Double = 0
|
||||
Dim p1, p2 As Location
|
||||
Dim Distance As Float
|
||||
Dim boton1 As Button
|
||||
Dim c As Cursor
|
||||
Dim latmarker As String
|
||||
Dim longmarker As String
|
||||
Dim l_long As Label
|
||||
Dim l_lat As Label
|
||||
Dim NOMBRE_TIENDA As String
|
||||
Dim logger As Boolean = True
|
||||
Private b_mapa2 As Button
|
||||
Private b_guardar As Button
|
||||
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("mapas")
|
||||
If MapFragment1.IsGooglePlayServicesAvailable = False Then
|
||||
ToastMessageShow("Please install Google Play Services.", True)
|
||||
End If
|
||||
'Boton velocidad'
|
||||
boton1.Initialize(0)
|
||||
boton1.Text = 0 &" "&"km/h"
|
||||
boton1.TextColor = Colors.Red
|
||||
boton1.TextSize = 15
|
||||
Root.AddView(boton1, 40%x, 5dip, 25%x, 40dip)
|
||||
End Sub
|
||||
|
||||
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||
|
||||
Sub B4XPage_Appear
|
||||
GPS.Initialize("GPS")
|
||||
' Log(1)
|
||||
rp.CheckAndRequest(rp.PERMISSION_ACCESS_FINE_LOCATION)
|
||||
Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
|
||||
' Log(2)
|
||||
gmap.MyLocationEnabled = Result
|
||||
' Log(gmap.MyLocationEnabled)
|
||||
If GPS.GPSEnabled = False Then
|
||||
ToastMessageShow("Debe Activar el GPS del Equipo.", True)
|
||||
StartActivity(GPS.LocationSettingsIntent)
|
||||
Else
|
||||
GPS.Start(0, 0)
|
||||
End If
|
||||
latmarker = Latitud
|
||||
longmarker = Longitud
|
||||
' NOMBRE_TIENDA = B4XPages.MainPage.cliente.NOMBRE
|
||||
If logger Then Log($"lat=${latmarker}, lon=${longmarker}"$)
|
||||
If logger Then Log(gmap)
|
||||
' Log($"${gmap.IsInitialized} And ${gmap.MyLocationEnabled}"$)
|
||||
If gmap.IsInitialized And gmap.MyLocationEnabled Then
|
||||
gmap.Clear
|
||||
MapFragment1_Ready
|
||||
End If
|
||||
If Not(Starter.Logger) Then logger = False
|
||||
End Sub
|
||||
|
||||
Sub B4XPage_CloseRequest As ResumableSub
|
||||
Log("Vamos a Cliente")
|
||||
' BACK key pressed
|
||||
' Return True To close, False To cancel
|
||||
' Subs.iniciaActividad("Cliente")
|
||||
' Return True
|
||||
Return True
|
||||
End Sub
|
||||
|
||||
Sub MapFragment1_Ready
|
||||
' LogColor("MapReady", Colors.red)
|
||||
gmap = MapFragment1.GetMap
|
||||
' rp.CheckAndRequest(rp.PERMISSION_ACCESS_FINE_LOCATION)
|
||||
' Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
|
||||
' gmap.MyLocationEnabled = Result
|
||||
gmap.Clear
|
||||
|
||||
Dim JavaMapsObject As JavaObject
|
||||
JavaMapsObject = gmap.GetUiSettings
|
||||
JavaMapsObject.RunMethod("setMapToolbarEnabled", Array As Object(True))
|
||||
|
||||
'marcadores
|
||||
If latmarker = "null" Or latmarker = Null Or latmarker = "" Then 'Zocalo
|
||||
latmarker = "19.432568527069805"
|
||||
longmarker = "-99.13335030112772"
|
||||
End If
|
||||
If logger Then Log($"lat=${latmarker}, lon=${longmarker}"$)
|
||||
Dim marcador1 As Marker = gmap.AddMarker(latmarker, longmarker, "TIENDA")
|
||||
marcador1.Snippet = NOMBRE_TIENDA
|
||||
'Tienda 1
|
||||
|
||||
'posicion inicial
|
||||
Dim aa As CameraPosition
|
||||
aa.Initialize(latmarker, longmarker,15)''' RECOMENDABLE CAMBIAR A 10 SI ES MAS DE 1 MARCADOR
|
||||
gmap.AnimateCamera(aa)
|
||||
End Sub
|
||||
|
||||
Sub GPS_LocationChanged (Parametro As Location)
|
||||
Dim sp As Int
|
||||
sp = Ceil(Parametro.Speed * 3.6)
|
||||
boton1.Text = sp &" "&"km/h"
|
||||
Latitud = Parametro.Latitude
|
||||
Longitud = Parametro.Longitude
|
||||
p2.Initialize2(Latitud,Longitud)
|
||||
p1.Initialize2(Lat2, Lon2)
|
||||
Distance = p1.DistanceTo(p2)
|
||||
End Sub
|
||||
|
||||
Sub reg_Click
|
||||
' Subs.iniciaActividad("Cliente")
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub b_guardar_Click
|
||||
B4XPages.ShowPage("Cliente")
|
||||
End Sub
|
||||
418
B4A/C_NuevoCliente.bas
Normal file
@@ -0,0 +1,418 @@
|
||||
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
|
||||
Dim rp As RuntimePermissions
|
||||
Dim g As GPS
|
||||
Dim ruta As String
|
||||
Dim c As Cursor
|
||||
Dim reqManager As DBRequestManager
|
||||
Dim ime As IME
|
||||
|
||||
Dim CANCELA As Button
|
||||
Dim b_guardar As Button
|
||||
Dim cuenta As String
|
||||
Dim usuario As String
|
||||
Dim sDate,sTime As String
|
||||
Dim no_cliente As String
|
||||
Dim no_ruta As String
|
||||
|
||||
Dim r_4 As RadioButton
|
||||
Dim et_nombre As EditText
|
||||
Dim tgl As Toggle
|
||||
' Private l_sinUbicacion As Label
|
||||
Private p_nuevoCliente As Panel
|
||||
Private Label1 As Label
|
||||
Private p_botones As Panel
|
||||
Private p_cam As Panel
|
||||
Private p_camara As Panel
|
||||
Private b_foto_inci As Button
|
||||
Private camEx2 As CameraExClass2
|
||||
Dim frontCamera As Boolean = False
|
||||
Dim fototomada As String
|
||||
Dim ALMACEN As String
|
||||
Private Panel1 As Panel
|
||||
Private Button1 As Button
|
||||
Private et_direccion As EditText
|
||||
Private b_ubicacion As Button
|
||||
Dim elGiro As String = ""
|
||||
Private lv_giro As ListView
|
||||
Private l_giro As Label
|
||||
Private et_giro As EditText
|
||||
Private cb_giro As B4XComboBox
|
||||
Dim logger As Boolean = False
|
||||
Dim cargarCliente As Boolean = False
|
||||
Private B_FOTO As Button
|
||||
Dim elOtroCliente As String = ""
|
||||
Dim camposModificados As List
|
||||
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("nuevocliente")
|
||||
ruta = File.DirInternal
|
||||
If File.Exists(ruta, "kmt.db") = False Then
|
||||
File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db")
|
||||
End If
|
||||
' skmt.Initialize(ruta,"kmt.db", True)
|
||||
' p_camara.Height = Root.Height
|
||||
' p_camara.Width = Root.Width
|
||||
End Sub
|
||||
|
||||
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||
|
||||
Sub B4XPage_Appear
|
||||
camposModificados.Initialize
|
||||
reqManager.Initialize(Me, Starter.server)
|
||||
If Not(Starter.gps.GPSEnabled) Then
|
||||
ToastMessageShow("Es necesario tener el GPS encendido", True)
|
||||
StartActivity(Starter.gps.LocationSettingsIntent)
|
||||
End If
|
||||
Dim losGiros As List = Subs.traeGirosLista
|
||||
cb_giro.SetItems(losGiros)
|
||||
B_FOTO.Enabled = True
|
||||
If cargarCliente Then
|
||||
Private cf As Cursor = B4XPages.MainPage.skmt.ExecQuery($"select * from HIST_FOTO_CLIENTE where codigo In (Select cuenta from cuentaa)"$)
|
||||
Private cc As Cursor = B4XPages.MainPage.skmt.ExecQuery("select * from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)")
|
||||
If cc.RowCount > 0 Then
|
||||
cc.Position = 0
|
||||
fototomada = ""
|
||||
If cf.RowCount > 0 Then
|
||||
cf.Position = 0
|
||||
fototomada = cf.GetString("NOM_FOTO")
|
||||
End If
|
||||
Log($"${cc.GetString("CAT_CL_CODIGO")}, ${cf.RowCount}, ${fototomada}"$)
|
||||
elOtroCliente = cc.GetString("CAT_CL_CODIGO")
|
||||
et_nombre.Text = cc.GetString("CAT_CL_NOMBRE")
|
||||
et_direccion.Text = cc.GetString("CAT_CL_CALLE1")
|
||||
et_nombre.Text = cc.GetString("CAT_CL_NOMBRE")
|
||||
' B_FOTO.Enabled = False
|
||||
Log($"${losGiros.IndexOf(cc.GetString("CAT_CL_GIRO"))}, ${losGiros}, ${cc.GetString("CAT_CL_GIRO")}"$)
|
||||
cb_giro.SelectedIndex = losGiros.IndexOf(cc.GetString("CAT_CL_GIRO"))
|
||||
|
||||
End If
|
||||
End If
|
||||
b_ubicacion.Text = "Buscando ubicación ..."
|
||||
b_guardar.Visible = False
|
||||
Subs.panelVisible(p_nuevoCliente, 0, 0)
|
||||
p_nuevoCliente.Height = Root.Height
|
||||
p_nuevoCliente.Width = Root.Width
|
||||
' Subs.centraEtiqueta(Label1, Root.Width)
|
||||
' Subs.centraEtiqueta(l_sinUbicacion, Root.Width)
|
||||
Subs.centraPanel(p_botones, Root.Width)
|
||||
' E_NOMBRE.Left = Round(Root.Width/2)-(E_NOMBRE.Width/2)
|
||||
If B4XPages.MainPage.lat_gps <> "0.0" Then
|
||||
b_guardar.Visible = True 'Si hay ubicaccion, mostramos el boton de guardar.
|
||||
' l_sinUbicacion.Visible = False
|
||||
End If
|
||||
Subs.centraPanel(Panel1, Root.Width)
|
||||
b_guardar.Enabled = False
|
||||
' Log(losGiros.IndexOf("ABARROTES"))
|
||||
' cb_giro.SelectedIndex = losGiros.IndexOf("ABARROTES")
|
||||
' cb_giro.
|
||||
' l_sinUbicacion.Visible = True
|
||||
CallSubDelayed(Tracker, "StartFLPSmall")
|
||||
Log($"${B4XPages.MainPage.principal.l_dia.text}, ${Starter.dia_semana}"$)
|
||||
End Sub
|
||||
|
||||
Sub GPS_LocationChanged (Location1 As Location)
|
||||
' LogColor($"LATITUD= ${B4XPages.MainPage.lat_gps}"$, Colors.Red)
|
||||
b_ubicacion.TextColor = Colors.Gray
|
||||
Sleep(200)
|
||||
b_ubicacion.TextColor = Colors.red
|
||||
If B4XPages.MainPage.lat_gps <> "0.0" Then
|
||||
b_guardar.Enabled = True 'Si hay ubicaccion, mostramos el boton de guardar.
|
||||
' l_sinUbicacion.Visible = True
|
||||
b_ubicacion.Text = $"Precisión del GPS: ${Round2(Location1.Accuracy,1)} mts."$
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Sub flp_LocationChanged (Location1 As Location)
|
||||
Log("FLP LOC CHANGED")
|
||||
End Sub
|
||||
|
||||
Sub CANCELA_Click
|
||||
B4XPages.ShowPage("Principal")
|
||||
fototomada = ""
|
||||
et_nombre.Text = ""
|
||||
et_direccion.Text = ""
|
||||
CallSubDelayed(Tracker, "StartFLP")
|
||||
End Sub
|
||||
|
||||
Sub b_guardar_Click
|
||||
Log("|" & fototomada & "|" & et_nombre.Text & "|" & et_direccion.Text & "|" & cb_giro.SelectedItem)
|
||||
If et_nombre.Text = "" Or fototomada = "null" Or fototomada = Null Or fototomada = "" Or et_direccion.Text = "" Or cb_giro.SelectedItem = "SELECCIONA UNA OPCION" Then
|
||||
ToastMessageShow("Se tienen que llenar todos los campos y tomar la foto para continuar" , True)
|
||||
else if B4XPages.MainPage.principal.l_ruta.Text = "0" Then
|
||||
ToastMessageShow("Es necesario cargar una ruta.", False)
|
||||
Else
|
||||
Log("entramos a b_guardar")
|
||||
DateTime.DateFormat = "dd/MM/yyyy"
|
||||
DateTime.Timeformat = "HHmmss"
|
||||
sDate=DateTime.Date(DateTime.Now)
|
||||
sTime=DateTime.Time(DateTime.Now)
|
||||
Log($" //////////// Date: ${sDate} - Time: ${sTime} ////////////////"$)
|
||||
'Aqui creamos manualmete la hora con el separador de los 2 puntos porque en algunas versiones de android no respeta el formato "Timeformat = 'HH:mm:ss'"
|
||||
Private hora As String = sTime.SubString2(0,2)
|
||||
Private mins As String = sTime.SubString2(2,4)
|
||||
Private segs As String = sTime.SubString(4)
|
||||
sTime = hora&":"&mins&":"&segs
|
||||
Log("////////////// sTime: "&sTime&" ////////////////")
|
||||
c = B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_RUTA FROM kmt_info")
|
||||
c.Position=0
|
||||
no_ruta= c.GetString("CAT_CL_RUTA")
|
||||
no_cliente= "NC" & sTime & no_ruta
|
||||
If cargarCliente Then no_cliente = elOtroCliente
|
||||
Log("++ ++ no_cliente = "&no_cliente)
|
||||
c.Close
|
||||
|
||||
DateTime.DateFormat = "dd/MM/yyyy HH:mm:ss"
|
||||
Private DateNC As String = DateTime.Date(DateTime.Now)
|
||||
If cargarCliente Then
|
||||
camposModificados = Subs.RemoveDuplicates(camposModificados)
|
||||
B4XPages.MainPage.skmt.ExecNonQuery($"UPDATE kmt_info set CAT_CL_CODIGO = '${no_cliente}', CAT_CL_CEDIS = '${Subs.traeAlmacen}', CAT_CL_LAT = '${B4XPages.MainPage.lat_gps}', CAT_CL_LONG = '${B4XPages.MainPage.lon_gps}', CAT_CL_GIRO = '${cb_giro.SelectedItem}', CAT_CL_NOMBRE = '${Subs.escapeSQLString(et_nombre.Text)}', CAT_CL_CALLE1 = '${Subs.escapeSQLString(et_direccion.text)}', CAT_CL_ENVIO_PENDIENTE = 1, LAT_CENSADOR = '${B4XPages.MainPage.lat_gps}', LON_CENSADOR = '${B4XPages.MainPage.lon_gps}', CAMPOS_MODIFICADOS = '${Subs.list2string(camposModificados)}' where CAT_CL_CODIGO In (select cuenta from cuentaa)"$)
|
||||
Else
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO kmt_info(CAT_CL_CODIGO, CAT_CL_RUTA, CAT_CL_NOMBRE, CAT_CL_CALLE1, CAT_CL_LAT, CAT_CL_LONG, CAT_CL_FECHA_CAPTURA, CAT_CL_DIAS_VISITA, CAT_CL_ENVIO_PENDIENTE) VALUES (?, ?, ?, ?, ?, ?, ?, ?, 1) ", Array As Object (no_cliente, no_ruta, et_nombre.Text, et_direccion.Text, B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps, DateNC, Starter.dia_semana))
|
||||
End If
|
||||
B4XPages.MainPage.skmt.ExecNonQuery("delete from CUENTAA")
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object(no_cliente))
|
||||
ALMACEN = Subs.traeAlmacen
|
||||
|
||||
' If fototomada <> "" And fototomada <> Null Then
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO HIST_FOTO_CLIENTE(CODIGO, ALMACEN, RUTA, NOM_FOTO, ENVIO_PENDIENTE) VALUES(?,?,?,?,1)", Array As Object(no_cliente, ALMACEN, no_ruta, fototomada))
|
||||
Log($"${no_cliente}, ${ALMACEN}, ${no_ruta}, ${fototomada}"$)
|
||||
' End If
|
||||
|
||||
mandaPendientesNuevosClientes
|
||||
cargarCliente = False
|
||||
B4XPages.ShowPage("Principal")
|
||||
fototomada = ""
|
||||
et_nombre.Text = ""
|
||||
et_direccion.Text = ""
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub p_nuevoCliente_Click
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub b_foto_inci_Click
|
||||
b_guardar.Enabled = False
|
||||
camEx2.TakePicture
|
||||
p_camara.Visible = False
|
||||
' StopCamera2
|
||||
End Sub
|
||||
|
||||
Private Sub InitializeCamera2
|
||||
rp.CheckAndRequest(rp.PERMISSION_CAMERA)
|
||||
Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
|
||||
If Result Then
|
||||
camEx2.Initialize(p_cam, frontCamera, Me, "Camera1")
|
||||
frontCamera = camEx2.Front
|
||||
If logger Then Log("inicializamos Camara")
|
||||
Else
|
||||
ToastMessageShow("Sin permisos de camara!!!", True)
|
||||
End If
|
||||
' rp.CheckAndRequest(rp.PERMISSION_WRITE_EXTERNAL_STORAGE)
|
||||
' Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
|
||||
' If Result Then
|
||||
' Log("Con permisos para escritura")
|
||||
' Else
|
||||
' ToastMessageShow("Sin permisos de escritura externa.", True)
|
||||
' End If
|
||||
'
|
||||
' rp.CheckAndRequest(rp.PERMISSION_READ_EXTERNAL_STORAGE)
|
||||
' Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
|
||||
' If Result Then
|
||||
' Log("Con permisos de lectura")
|
||||
' Else
|
||||
' ToastMessageShow("Sin permisos de lectura externa!", True)
|
||||
' End If
|
||||
End Sub
|
||||
|
||||
Sub Camera1_Ready (Success As Boolean)
|
||||
If logger Then Log("Camara ready")
|
||||
If Success Then
|
||||
camEx2.SetJpegQuality(90)
|
||||
camEx2.SetContinuousAutoFocus
|
||||
camEx2.CommitParameters
|
||||
camEx2.StartPreview
|
||||
If logger Then Log(camEx2.GetPreviewSize)
|
||||
Else
|
||||
ToastMessageShow("Cannot open camera.", True)
|
||||
Log("Cannot open camera")
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Sub Camera1_PictureTaken (Data()As Byte)
|
||||
If logger Then Log("tome foto")
|
||||
Dim filename As String = fototomada
|
||||
Dim Dirp As String = File.DirInternal
|
||||
Dim Dir As String
|
||||
Dim Dir2 As String
|
||||
Try
|
||||
File.MakeDir(Dirp,"/promotoriakmts")
|
||||
Dir = "/promotoriakmts"
|
||||
Log("creado en promotoria " & Dirp & Dir)
|
||||
Catch
|
||||
Dir = ""
|
||||
Log("creado en raiz")
|
||||
End Try
|
||||
Try
|
||||
File.MakeDir(Dirp & Dir,"/reduccion")
|
||||
Dir2 = "/reduccion"
|
||||
If logger Then Log("creado en promotoria " & Dirp & Dir & Dir2)
|
||||
Catch
|
||||
Dir2 = ""
|
||||
If logger Then Log("creado en raiz")
|
||||
End Try
|
||||
camEx2.SavePictureToFile(Data, Dirp&Dir, filename)
|
||||
camEx2.StartPreview 'restart preview
|
||||
Dim img As B4XBitmap = xui.LoadBitmapResize(File.DirInternal & Dir, filename, 400, 550, True)
|
||||
Dim out As OutputStream = File.OpenOutput(File.DirInternal & Dir & Dir2, filename, False)
|
||||
img.WriteToStream(out, 100, "PNG")
|
||||
out.Close
|
||||
' ImageView8.Bitmap = LoadBitmap(File.DirInternal & Dir & Dir2,nombrefoto7)
|
||||
ToastMessageShow("Picture saved." & CRLF & "File size: " & File.Size(Dir, filename) & Dir &"," & filename, True)
|
||||
If logger Then Log("Picture saved." & CRLF & "File size: " & File.Size(Dir, filename) & Dir &"," & filename)
|
||||
p_camara.Visible = False
|
||||
StopCamera2
|
||||
b_guardar.Enabled = True
|
||||
End Sub
|
||||
|
||||
Private Sub StopCamera2
|
||||
' Capturing = False
|
||||
If logger Then Log("ENTRAMOS STOPCAMERA2")
|
||||
If logger Then Log(camEx2.IsInitialized)
|
||||
If camEx2.IsInitialized Then
|
||||
If logger Then Log("RELEASE CAMERA")
|
||||
camEx2.Release
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub B_FOTO_Click
|
||||
DateTime.DateFormat="ddMMyyyyHHmmss"
|
||||
ime.HideKeyboard
|
||||
InitializeCamera2
|
||||
Subs.centraPanel(p_cam, Root.Width)
|
||||
Subs.panelVisible(p_camara, 0, 0)
|
||||
p_camara.Width = Root.Width
|
||||
Subs.centraBoton(b_foto_inci, Root.Width)
|
||||
fototomada = DateTime.Now & "_cliente.jpg"
|
||||
Log(fototomada)
|
||||
End Sub
|
||||
|
||||
Sub B4XPage_CloseRequest As ResumableSub
|
||||
Log("CloseRequest NC")
|
||||
StopCamera2
|
||||
CallSubDelayed(Tracker, "StartFLP")
|
||||
If p_camara.Visible Then
|
||||
p_camara.Visible = False
|
||||
Else
|
||||
B4XPages.ShowPage("Principal")
|
||||
End If
|
||||
Return False
|
||||
End Sub
|
||||
|
||||
Private Sub b_ubicacion_Click
|
||||
ToastMessageShow("Buscando ubicación", False)
|
||||
b_ubicacion.Text = "Buscando ubicación ..."
|
||||
CallSubDelayed(Tracker, "StartFLPSmall")
|
||||
End Sub
|
||||
|
||||
Sub JobDone(Job As HttpJob)
|
||||
Log(Job.Success)
|
||||
If Job.Success = False Then
|
||||
ToastMessageShow("Error: " & Job.ErrorMessage, True)
|
||||
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 resultado As DBResult = reqManager.HandleJob(Job)
|
||||
'Modificamos la bandera de pendiente en kmt_info
|
||||
If resultado.Tag.As(String).IndexOf("guardaClienteNuevo_") > -1 Then
|
||||
Private cliente As String= resultado.Tag
|
||||
cliente = cliente.SubString(cliente.IndexOf("_")+1)
|
||||
' Log($"Cliente: ${cliente}"$)
|
||||
B4XPages.MainPage.skmt.ExecNonQuery($"update kmt_info set CAT_CL_ENVIO_PENDIENTE = 0 where CAT_CL_CODIGO = '${cliente}'"$)
|
||||
Log($"Cliente: ${cliente} - PENDIENTE A CERO"$)
|
||||
B4XPages.MainPage.skmt.ExecNonQuery($"update HIST_FOTO_CLIENTE set ENVIO_PENDIENTE = 0 where CODIGO = '${cliente}'"$)
|
||||
Subs.logJobDoneResultados(resultado)
|
||||
End If
|
||||
'Modificamos la bandera de pendiente en fotos
|
||||
If resultado.Tag.As(String).IndexOf("insertFotoCN_") > -1 Then
|
||||
Subs.logJobDoneResultados(resultado)
|
||||
Private cliente As String= resultado.Tag
|
||||
cliente = cliente.SubString(cliente.IndexOf("_")+1)
|
||||
Log($"Cliente: ${cliente} - PENDIENTE A CERO"$)
|
||||
B4XPages.MainPage.skmt.ExecNonQuery($"update HIST_FOTO_CLIENTE set ENVIO_PENDIENTE = 0 where CODIGO = '${cliente}'"$)
|
||||
End If
|
||||
End If
|
||||
Job.Release
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Sub mandaPendientesNuevosClientes
|
||||
'Enviamos Pendientes
|
||||
DateTime.DateFormat = "dd/MM/yyyy HH:mm:ss"
|
||||
reqManager.Initialize(Me, Starter.server)
|
||||
Private sDateP As String = DateTime.Date(DateTime.Now)
|
||||
' c = B4XPages.MainPage.skmt.ExecQuery("SELECT * from kmt_info where CAT_CL_CODIGO like 'NC%' and CAT_CL_ENVIO_PENDIENTE = '1'")
|
||||
c = B4XPages.MainPage.skmt.ExecQuery("Select kmt_info.*, nom_foto from kmt_info left join HIST_FOTO_CLIENTE on cat_cl_codigo = codigo where CAT_CL_CODIGO like 'NC%' and CAT_CL_ENVIO_PENDIENTE = '1'")
|
||||
Log($"Cliente Nuevo PENDIENTE: ${c.RowCount}"$)
|
||||
Dim fotox() As Byte
|
||||
Dim cmd As DBCommand
|
||||
Dim Dirp As String = File.DirInternal
|
||||
Dim Dir As String
|
||||
Dim Dir2 As String
|
||||
Dir = "/promotoriakmts"
|
||||
If c.RowCount > 0 Then
|
||||
For i = 0 To c.RowCount - 1
|
||||
c.Position = i
|
||||
Log(c.GetString("NOM_FOTO"))
|
||||
If c.GetString("NOM_FOTO") <> Null And c.GetString("NOM_FOTO") <> "" And c.GetString("NOM_FOTO") <> "null" Then
|
||||
Log(File.Exists(Dirp&Dir&Dir2,c.GetString("NOM_FOTO")))
|
||||
Log($"${Dirp&Dir&Dir2},${c.GetString("NOM_FOTO")}"$)
|
||||
fotox = Null
|
||||
If File.Exists(Dirp&Dir&Dir2,c.GetString("NOM_FOTO")) Then fotox = Bit.InputStreamToBytes(File.OpenInput(Dirp&Dir&Dir2,c.GetString("NOM_FOTO")))
|
||||
Dim cmd As DBCommand
|
||||
cmd.Initialize
|
||||
cmd.Name = "guardaClienteNuevo_MARDS"
|
||||
' TMP_ALMACENID, TMP_RUTA, TMP_USUARIO, TMP_ID_CLIENTE, TMP_NOMBRE, TMP_DOMICILIO, TMP_FECHA_CAPTURA_MOVIL, TMP_FECHA_SINCRONIZACION, TMP_LATITUD, TMP_LONGITUD
|
||||
cmd.Parameters = Array As Object(Subs.traeAlmacen, c.GetString("CAT_CL_RUTA"), Subs.traeUsuarioDeBD, c.GetString("CAT_CL_CODIGO"), c.GetString("CAT_CL_NOMBRE"), c.GetString("CAT_CL_CALLE1"), c.GetString("CAT_CL_FECHA_CAPTURA"), sDateP, c.GetString("CAT_CL_LAT"), c.GetString("CAT_CL_LONG"), fotox, elGiro, Starter.dia_semana)
|
||||
' Log($"${c.GetString("CAT_CL_CODIGO")}, ${Subs.traeAlmacen}, ${c.GetString("CAT_CL_LAT")}, ${c.GetString("CAT_CL_LONG")}, ${c.GetString("CAT_CL_SECUENCIA")}, ${c.GetString("CAT_CL_RUTA")}, ${c.GetString("CAT_CL_DIASEMANA")}, ${c.GetString("CAT_CL_GIRO")}, ${c.GetString("CAT_CL_NOMBRE")}, ${c.GetString("CAT_CL_ATIENDE1")}, ${c.GetString("CAT_CL_CALLE")}, ${c.GetString("CAT_CL_NOINT")}, ${c.GetString("CAT_CL_NOEXT")}, ${c.GetString("CAT_CL_CALLE1")}, ${c.GetString("CAT_CL_CRUCE1")}, ${c.GetString("CAT_CL_CALLE2")}, ${c.GetString("CAT_CL_CP")}, ${c.GetString("CAT_CL_COLONIA")}, ${c.GetString("CAT_CL_MUNI")}, ${c.GetString("CAT_CL_EDO")}, ${c.GetString("CAT_CL_ESTATUS")}, ${c.GetString("CAT_CL_FECHA_CAPTURA")}, ${sDate}, ${Subs.traeUsuarioDeBD}"$)
|
||||
|
||||
reqManager.ExecuteCommand(cmd , $"guardaClienteNuevo_${c.GetString("CAT_CL_CODIGO")}"$)
|
||||
cmd.Initialize
|
||||
cmd.Name = "guardaClientesNuevosMods_MARDS"
|
||||
cmd.Parameters = Array As Object(Subs.traeUsuarioDeBD, Subs.traeAlmacen, Subs.traeAlmacen, c.GetString("CAT_CL_RUTA"), Subs.traeCliente, c.GetString("CAMPOS_MODIFICADOS"))
|
||||
Log($"${Subs.traeUsuarioDeBD}, ${Subs.traeAlmacen}, ${Subs.traeAlmacen}, ${c.GetString("CAT_CL_RUTA")}, ${Subs.traeCliente}, ${c.GetString("CAMPOS_MODIFICADOS")}"$)
|
||||
reqManager.ExecuteCommand(cmd , $"guardaClientesNuevosMods_${c.GetString("CAT_CL_CODIGO")}"$)
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub cb_giro_SelectedIndexChanged (Index As Int)
|
||||
elGiro = cb_giro.SelectedItem
|
||||
camposModificados.Add("CAT_CL_GIRO")
|
||||
End Sub
|
||||
|
||||
Private Sub et_nombre_TextChanged (Old As String, New As String)
|
||||
camposModificados.Add("CAT_CL_NOMBRE")
|
||||
End Sub
|
||||
|
||||
Private Sub et_direccion_TextChanged (Old As String, New As String)
|
||||
camposModificados.Add("CAT_CL_CALLE1")
|
||||
End Sub
|
||||
1106
B4A/C_Principal.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.
|
||||
400
B4A/CameraExClass2.bas
Normal file
@@ -0,0 +1,400 @@
|
||||
B4A=true
|
||||
Group=Default Group
|
||||
ModulesStructureVersion=1
|
||||
Type=Class
|
||||
Version=6
|
||||
@EndOfDesignText@
|
||||
'Class module
|
||||
'version 1.30
|
||||
'See this page for the list of constants:
|
||||
'http://developer.android.com/intl/fr/reference/android/hardware/Camera.Parameters.html
|
||||
'Note that you should use the constant values instead of the names.
|
||||
Sub Class_Globals
|
||||
Private nativeCam As Object
|
||||
Private cam As Camera
|
||||
Private r As Reflector
|
||||
Private target As Object
|
||||
Private event As String
|
||||
Public Front As Boolean
|
||||
Private parameters As Object
|
||||
Private logger As Boolean = False
|
||||
End Sub
|
||||
|
||||
Public Sub Initialize (Panel1 As Panel, FrontCamera As Boolean, TargetModule As Object, EventName As String)
|
||||
target = TargetModule
|
||||
event = EventName
|
||||
Front = FrontCamera
|
||||
Dim id As Int
|
||||
id = FindCamera(Front).id
|
||||
If id = -1 Then
|
||||
Front = Not(Front) 'try different camera
|
||||
id = FindCamera(Front).id
|
||||
If id = -1 Then
|
||||
ToastMessageShow("No camera found.", True)
|
||||
Return
|
||||
End If
|
||||
End If
|
||||
cam.Initialize2(Panel1, "camera", id)
|
||||
End Sub
|
||||
|
||||
Private Sub FindCamera (frontCamera As Boolean) As CameraInfoAndId
|
||||
Dim ci As CameraInfoAndId
|
||||
Dim cameraInfo As Object
|
||||
Dim cameraValue As Int
|
||||
If logger Then Log("findCamera")
|
||||
If frontCamera Then cameraValue = 1 Else cameraValue = 0
|
||||
cameraInfo = r.CreateObject("android.hardware.Camera$CameraInfo")
|
||||
Dim numberOfCameras As Int = r.RunStaticMethod("android.hardware.Camera", "getNumberOfCameras", Null, Null)
|
||||
If logger Then Log(r.target)
|
||||
If logger Then Log(numberOfCameras)
|
||||
For i = 0 To numberOfCameras - 1
|
||||
r.RunStaticMethod("android.hardware.Camera", "getCameraInfo", Array As Object(i, cameraInfo), _
|
||||
Array As String("java.lang.int", "android.hardware.Camera$CameraInfo"))
|
||||
r.target = cameraInfo
|
||||
if logger then Log("facing: " & r.GetField("facing") & ", " & cameraValue)
|
||||
If r.GetField("facing") = cameraValue Then
|
||||
ci.cameraInfo = r.target
|
||||
ci.Id = i
|
||||
Return ci
|
||||
End If
|
||||
Next
|
||||
ci.id = -1
|
||||
Return ci
|
||||
End Sub
|
||||
|
||||
Private Sub SetDisplayOrientation
|
||||
r.target = r.GetActivity
|
||||
r.target = r.RunMethod("getWindowManager")
|
||||
r.target = r.RunMethod("getDefaultDisplay")
|
||||
r.target = r.RunMethod("getRotation")
|
||||
Dim previewResult, result, degrees As Int = r.target * 90
|
||||
Dim ci As CameraInfoAndId = FindCamera(Front)
|
||||
r.target = ci.CameraInfo
|
||||
Dim orientation As Int = r.GetField("orientation")
|
||||
If Front Then
|
||||
previewResult = (orientation + degrees) Mod 360
|
||||
result = previewResult
|
||||
previewResult = (360 - previewResult) Mod 360
|
||||
Else
|
||||
previewResult = (orientation - degrees + 360) Mod 360
|
||||
result = previewResult
|
||||
if logger then Log(previewResult)
|
||||
End If
|
||||
r.target = nativeCam
|
||||
r.RunMethod2("setDisplayOrientation", previewResult, "java.lang.int")
|
||||
r.target = parameters
|
||||
r.RunMethod2("setRotation", result, "java.lang.int")
|
||||
CommitParameters
|
||||
End Sub
|
||||
|
||||
Private Sub Camera_Ready (Success As Boolean)
|
||||
If Success Then
|
||||
r.target = cam
|
||||
nativeCam = r.GetField("camera")
|
||||
r.target = nativeCam
|
||||
parameters = r.RunMethod("getParameters")
|
||||
SetDisplayOrientation
|
||||
Else
|
||||
Log("success = false, " & LastException)
|
||||
End If
|
||||
CallSub2(target, event & "_ready", Success)
|
||||
End Sub
|
||||
'Uncomment this sub if you need to handle the Preview event
|
||||
'Sub Camera_Preview (Data() As Byte)
|
||||
' If SubExists(target, event & "_preview") Then
|
||||
' CallSub2(target, event & "_preview", Data)
|
||||
' End If
|
||||
'End Sub
|
||||
|
||||
Public Sub TakePicture
|
||||
cam.TakePicture
|
||||
End Sub
|
||||
|
||||
Private Sub Camera_PictureTaken (Data() As Byte)
|
||||
CallSub2(target, event & "_PictureTaken", Data)
|
||||
End Sub
|
||||
|
||||
Public Sub StartPreview
|
||||
cam.StartPreview
|
||||
End Sub
|
||||
|
||||
Public Sub StopPreview
|
||||
cam.StopPreview
|
||||
End Sub
|
||||
|
||||
Public Sub Release
|
||||
cam.Release
|
||||
End Sub
|
||||
|
||||
'Saves the data received from PictureTaken event
|
||||
Public Sub SavePictureToFile(Data() As Byte, Dir As String, FileName As String)
|
||||
Dim out As OutputStream = File.OpenOutput(Dir, FileName, False)
|
||||
out.WriteBytes(Data, 0, Data.Length)
|
||||
out.Close
|
||||
End Sub
|
||||
|
||||
Public Sub SetParameter(Key As String, Value As String)
|
||||
r.target = parameters
|
||||
r.RunMethod3("set", Key, "java.lang.String", Value, "java.lang.String")
|
||||
End Sub
|
||||
|
||||
Public Sub GetParameter(Key As String) As String
|
||||
r.target = parameters
|
||||
Return r.RunMethod2("get", Key, "java.lang.String")
|
||||
End Sub
|
||||
|
||||
Public Sub CommitParameters
|
||||
'Try
|
||||
r.target = nativeCam
|
||||
r.RunMethod4("setParameters", Array As Object(parameters), Array As String("android.hardware.Camera$Parameters"))
|
||||
'Catch
|
||||
' ToastMessageShow("Error setting parameters.", True)
|
||||
' Log(LastException)
|
||||
' End Try
|
||||
End Sub
|
||||
|
||||
Public Sub GetColorEffect As String
|
||||
Return GetParameter("effect")
|
||||
End Sub
|
||||
|
||||
Public Sub SetColorEffect(Effect As String)
|
||||
SetParameter("effect", Effect)
|
||||
End Sub
|
||||
|
||||
Public Sub GetSupportedPreviewSizes As CameraSize()
|
||||
r.target = parameters
|
||||
Dim list1 As List = r.RunMethod("getSupportedPreviewSizes")
|
||||
Dim cs(list1.Size) As CameraSize
|
||||
For i = 0 To list1.Size - 1
|
||||
r.target = list1.get(i)
|
||||
cs(i).Width = r.GetField("width")
|
||||
cs(i).Height = r.GetField("height")
|
||||
Next
|
||||
Return cs
|
||||
End Sub
|
||||
|
||||
Public Sub SetPreviewSize(Width As Int, Height As Int)
|
||||
r.target = parameters
|
||||
r.RunMethod3("setPreviewSize", Width, "java.lang.int", Height, "java.lang.int")
|
||||
End Sub
|
||||
Public Sub GetSupportedPicturesSizes As CameraSize()
|
||||
r.target = parameters
|
||||
Dim list1 As List = r.RunMethod("getSupportedPictureSizes")
|
||||
Dim cs(list1.Size) As CameraSize
|
||||
For i = 0 To list1.Size - 1
|
||||
r.target = list1.get(i)
|
||||
cs(i).Width = r.GetField("width")
|
||||
cs(i).Height = r.GetField("height")
|
||||
Next
|
||||
Return cs
|
||||
End Sub
|
||||
|
||||
Public Sub SetPictureSize(Width As Int, Height As Int)
|
||||
r.target = parameters
|
||||
r.RunMethod3("setPictureSize", Width, "java.lang.int", Height, "java.lang.int")
|
||||
End Sub
|
||||
|
||||
Public Sub SetJpegQuality(Quality As Int)
|
||||
r.target = parameters
|
||||
r.RunMethod2("setJpegQuality", Quality, "java.lang.int")
|
||||
End Sub
|
||||
|
||||
Public Sub SetFlashMode(Mode As String)
|
||||
r.target = parameters
|
||||
r.RunMethod2("setFlashMode", Mode, "java.lang.String")
|
||||
End Sub
|
||||
|
||||
Public Sub GetFlashMode As String
|
||||
r.target = parameters
|
||||
Return r.RunMethod("getFlashMode")
|
||||
End Sub
|
||||
|
||||
Public Sub GetSupportedFlashModes As List
|
||||
r.target = parameters
|
||||
Return r.RunMethod("getSupportedFlashModes")
|
||||
End Sub
|
||||
|
||||
Public Sub GetSupportedColorEffects As List
|
||||
r.target = parameters
|
||||
Return r.RunMethod("getSupportedColorEffects")
|
||||
End Sub
|
||||
|
||||
'Returns a list with the supported preview fps. Each item in the list is an array of two ints (minimum value and maximum value).
|
||||
Public Sub GetSupportedPreviewFpsRange As List
|
||||
r.target = parameters
|
||||
Return r.RunMethod("getSupportedPreviewFpsRange")
|
||||
End Sub
|
||||
'Returns the current preview fps range.
|
||||
'Range is a two elements array. The minimum value and maximum value will be stored in this array.
|
||||
Public Sub GetPreviewFpsRange(Range() As Int)
|
||||
r.target = parameters
|
||||
r.RunMethod4("getPreviewFpsRange", Array As Object(Range), Array As String("[I"))
|
||||
End Sub
|
||||
|
||||
Public Sub SetPreviewFpsRange(MinValue As Int, MaxValue As Int)
|
||||
r.target = parameters
|
||||
r.RunMethod4("setPreviewFpsRange", Array As Object(MinValue, MaxValue), _
|
||||
Array As String("java.lang.int", "java.lang.int"))
|
||||
End Sub
|
||||
|
||||
Public Sub GetPreviewSize As CameraSize
|
||||
r.target = parameters
|
||||
r.target = r.RunMethod("getPreviewSize")
|
||||
Dim cs As CameraSize
|
||||
cs.Width = r.GetField("width")
|
||||
cs.Height = r.GetField("height")
|
||||
Return cs
|
||||
End Sub
|
||||
|
||||
Public Sub GetPictureSize As CameraSize
|
||||
r.target = parameters
|
||||
r.target = r.RunMethod("getPictureSize")
|
||||
Dim cs As CameraSize
|
||||
cs.Width = r.GetField("width")
|
||||
cs.Height = r.GetField("height")
|
||||
Return cs
|
||||
End Sub
|
||||
|
||||
'Converts a preview image formatted in YUV format to JPEG.
|
||||
'Note that you should not save every preview image as it will slow down the whole process.
|
||||
Public Sub PreviewImageToJpeg(data() As Byte, quality As Int) As Byte()
|
||||
Dim size, previewFormat As Object
|
||||
r.target = parameters
|
||||
size = r.RunMethod("getPreviewSize")
|
||||
previewFormat = r.RunMethod("getPreviewFormat")
|
||||
r.target = size
|
||||
Dim width = r.GetField("width"), height = r.GetField("height") As Int
|
||||
Dim yuvImage As Object = r.CreateObject2("android.graphics.YuvImage", _
|
||||
Array As Object(data, previewFormat, width, height, Null), _
|
||||
Array As String("[B", "java.lang.int", "java.lang.int", "java.lang.int", "[I"))
|
||||
r.target = yuvImage
|
||||
Dim rect1 As Rect
|
||||
rect1.Initialize(0, 0, r.RunMethod("getWidth"), r.RunMethod("getHeight"))
|
||||
Dim out As OutputStream
|
||||
out.InitializeToBytesArray(100)
|
||||
r.RunMethod4("compressToJpeg", Array As Object(rect1, quality, out), _
|
||||
Array As String("android.graphics.Rect", "java.lang.int", "java.io.OutputStream"))
|
||||
Return out.ToBytesArray
|
||||
End Sub
|
||||
|
||||
Public Sub GetSupportedFocusModes As List
|
||||
r.target = parameters
|
||||
Return r.RunMethod("getSupportedFocusModes")
|
||||
End Sub
|
||||
|
||||
Public Sub SetContinuousAutoFocus
|
||||
Dim modes As List = GetSupportedFocusModes
|
||||
If modes.IndexOf("continuous-picture") > -1 Then
|
||||
SetFocusMode("continuous-picture")
|
||||
Else If modes.IndexOf("continuous-video") > -1 Then
|
||||
SetFocusMode("continuous-video")
|
||||
Else
|
||||
Log("Continuous focus mode is not available")
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Public Sub SetFocusMode(Mode As String)
|
||||
r.target = parameters
|
||||
r.RunMethod2("setFocusMode", Mode, "java.lang.String")
|
||||
End Sub
|
||||
|
||||
Public Sub GetFocusDistances As Float()
|
||||
Dim F(3) As Float
|
||||
r.target = parameters
|
||||
r.RunMethod4("getFocusDistances", Array As Object(F), Array As String("[F"))
|
||||
Return F
|
||||
End Sub
|
||||
|
||||
Public Sub GetSupportedPictureFormats As List
|
||||
r.target = parameters
|
||||
Return r.RunMethod("getSupportedPictureFormats")
|
||||
End Sub
|
||||
'This method should only be called if you need to immediately release the camera.
|
||||
'For example if you need to start another application that depends on the camera.
|
||||
Public Sub CloseNow
|
||||
cam.Release
|
||||
r.target = cam
|
||||
r.RunMethod2("releaseCameras", True, "java.lang.boolean")
|
||||
End Sub
|
||||
'Calls AutoFocus and then takes the picture if focus was successfull.
|
||||
Public Sub FocusAndTakePicture
|
||||
cam.AutoFocus
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub Camera_FocusDone (Success As Boolean)
|
||||
If Success Then
|
||||
TakePicture
|
||||
Else
|
||||
Log("AutoFocus error.")
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Public Sub IsZoomSupported As Boolean
|
||||
r.target = parameters
|
||||
Return r.RunMethod("isZoomSupported")
|
||||
End Sub
|
||||
|
||||
Public Sub GetMaxZoom As Int
|
||||
r.target = parameters
|
||||
Return r.RunMethod("getMaxZoom")
|
||||
End Sub
|
||||
|
||||
Public Sub getZoom() As Int
|
||||
r.target = parameters
|
||||
Return r.RunMethod("getZoom")
|
||||
End Sub
|
||||
|
||||
Public Sub setZoom(ZoomValue As Int)
|
||||
r.target = parameters
|
||||
r.RunMethod2("setZoom", ZoomValue, "java.lang.int")
|
||||
End Sub
|
||||
|
||||
Public Sub getExposureCompensation As Int
|
||||
r.target = parameters
|
||||
Return r.RunMethod("getExposureCompensation")
|
||||
End Sub
|
||||
|
||||
Public Sub setExposureCompensation(v As Int)
|
||||
r.target = parameters
|
||||
r.RunMethod2("setExposureCompensation", v, "java.lang.int")
|
||||
End Sub
|
||||
|
||||
Public Sub getMinExposureCompensation As Int
|
||||
r.target = parameters
|
||||
Return r.RunMethod("getMinExposureCompensation")
|
||||
End Sub
|
||||
|
||||
Public Sub getMaxExposureCompensation As Int
|
||||
r.target = parameters
|
||||
Return r.RunMethod("getMaxExposureCompensation")
|
||||
End Sub
|
||||
|
||||
Public Sub SetFaceDetectionListener
|
||||
Dim jo As JavaObject = nativeCam
|
||||
Dim e As Object = jo.CreateEvent("android.hardware.Camera.FaceDetectionListener", "FaceDetection", Null)
|
||||
jo.RunMethod("setFaceDetectionListener", Array(e))
|
||||
End Sub
|
||||
|
||||
Private Sub FaceDetection_Event (MethodName As String, Args() As Object) As Object
|
||||
Dim faces() As Object = Args(0)
|
||||
For Each f As Object In faces
|
||||
Dim jo As JavaObject = f
|
||||
Dim faceRect As Rect = jo.GetField("rect")
|
||||
Log(faceRect)
|
||||
Next
|
||||
Return Null
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
Public Sub StartFaceDetection
|
||||
Dim jo As JavaObject = nativeCam
|
||||
jo.RunMethod("startFaceDetection", Null)
|
||||
End Sub
|
||||
|
||||
Public Sub StopFaceDetection
|
||||
Dim jo As JavaObject = nativeCam
|
||||
jo.RunMethod("stopFaceDetection", Null)
|
||||
End Sub
|
||||
|
||||
275
B4A/DBRequestManager.bas
Normal file
@@ -0,0 +1,275 @@
|
||||
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 - 211027
|
||||
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)
|
||||
|
||||
WriteObject(Command.Name, out2)
|
||||
WriteInt(Limit, out2)
|
||||
WriteList(Command.Parameters, out2)
|
||||
out2.Close
|
||||
j.PostBytes(link & "?method=query", ms.ToBytesArray)
|
||||
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)
|
||||
ExecuteBatch(Array As DBCommand(Command), Tag)
|
||||
End Sub
|
||||
|
||||
Private Sub StartJob(j As HttpJob, MemoryStream As OutputStream, Tag As Object) As OutputStream
|
||||
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
|
||||
Dim start As Long = DateTime.Now
|
||||
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 jobTagAnterior <> Job.Tag Then LogColor("HandleJob: '"&Job.Tag&"'", Colors.Blue) 'Mod por CHV - 211023
|
||||
jobTagAnterior = Job.Tag 'Mod por CHV - 211023
|
||||
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))
|
||||
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
|
||||
ToastMessageShow(sb.ToString, True)
|
||||
Next
|
||||
End Sub
|
||||
|
||||
|
||||
BIN
B4A/Files/alert2.png
Normal file
|
After Width: | Height: | Size: 632 B |
BIN
B4A/Files/alerta_amarilla.png
Normal file
|
After Width: | Height: | Size: 61 KiB |
BIN
B4A/Files/anterior.jpg
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
B4A/Files/carrito.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
B4A/Files/celltitle.bal
Normal file
BIN
B4A/Files/cliente.bal
Normal file
BIN
B4A/Files/clientes.bal
Normal file
BIN
B4A/Files/durakelo.png
Normal file
|
After Width: | Height: | Size: 6.9 KiB |
BIN
B4A/Files/engrane.jpg
Normal file
|
After Width: | Height: | Size: 4.0 KiB |
BIN
B4A/Files/engrane_gris.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
B4A/Files/engrane_negro.png
Normal file
|
After Width: | Height: | Size: 8.9 KiB |
BIN
B4A/Files/fondo_kmt.jpg
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
B4A/Files/hacer pedido.jpg
Normal file
|
After Width: | Height: | Size: 595 KiB |
BIN
B4A/Files/intmex_logo_192x192.jpg
Normal file
|
After Width: | Height: | Size: 5.9 KiB |
BIN
B4A/Files/intmex_logo_192x192_old.jpg
Normal file
|
After Width: | Height: | Size: 8.1 KiB |
BIN
B4A/Files/itembuttonblue.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
B4A/Files/kmt.db
Normal file
BIN
B4A/Files/kmt.db.original
Normal file
BIN
B4A/Files/login.bal
Normal file
BIN
B4A/Files/logo_192x192.jpg
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
BIN
B4A/Files/logo_mariana.jpeg
Normal file
|
After Width: | Height: | Size: 9.7 KiB |
BIN
B4A/Files/mainpage.bal
Normal file
BIN
B4A/Files/malo.jpg
Normal file
|
After Width: | Height: | Size: 8.6 KiB |
BIN
B4A/Files/mapa_rutas.bal
Normal file
BIN
B4A/Files/mapas.bal
Normal file
BIN
B4A/Files/mariana_ico.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
B4A/Files/marker-azul-0.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
B4A/Files/marker-azul-1.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
B4A/Files/marker-azul-10.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
B4A/Files/marker-azul-100.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
B4A/Files/marker-azul-101.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
B4A/Files/marker-azul-102.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
B4A/Files/marker-azul-103.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
B4A/Files/marker-azul-104.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
B4A/Files/marker-azul-105.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
B4A/Files/marker-azul-106.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
B4A/Files/marker-azul-107.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
B4A/Files/marker-azul-108.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
B4A/Files/marker-azul-109.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
B4A/Files/marker-azul-11.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
B4A/Files/marker-azul-110.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
B4A/Files/marker-azul-111.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
B4A/Files/marker-azul-112.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
B4A/Files/marker-azul-113.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
B4A/Files/marker-azul-114.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
B4A/Files/marker-azul-115.png
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
B4A/Files/marker-azul-116.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
B4A/Files/marker-azul-117.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
B4A/Files/marker-azul-118.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
B4A/Files/marker-azul-119.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
B4A/Files/marker-azul-12.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
B4A/Files/marker-azul-120.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
B4A/Files/marker-azul-121.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
B4A/Files/marker-azul-122.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
B4A/Files/marker-azul-123.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
B4A/Files/marker-azul-124.png
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
B4A/Files/marker-azul-125.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
B4A/Files/marker-azul-126.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
B4A/Files/marker-azul-127.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
B4A/Files/marker-azul-128.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
B4A/Files/marker-azul-129.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
B4A/Files/marker-azul-13.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
B4A/Files/marker-azul-130.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
B4A/Files/marker-azul-131.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
B4A/Files/marker-azul-132.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
B4A/Files/marker-azul-133.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
B4A/Files/marker-azul-134.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
B4A/Files/marker-azul-135.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
B4A/Files/marker-azul-136.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
B4A/Files/marker-azul-137.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
B4A/Files/marker-azul-138.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
B4A/Files/marker-azul-139.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
B4A/Files/marker-azul-14.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
B4A/Files/marker-azul-140.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
B4A/Files/marker-azul-141.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
B4A/Files/marker-azul-142.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
B4A/Files/marker-azul-143.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
B4A/Files/marker-azul-144.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
B4A/Files/marker-azul-145.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
B4A/Files/marker-azul-146.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
B4A/Files/marker-azul-147.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
B4A/Files/marker-azul-148.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
B4A/Files/marker-azul-149.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
B4A/Files/marker-azul-15.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
B4A/Files/marker-azul-150.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
B4A/Files/marker-azul-16.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
B4A/Files/marker-azul-17.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |