3 Commits

Author SHA1 Message Date
ddf5cfe2aa - VERSION 5.11.25
- Se agregó código para clientes de doble frecuencia y rutas espejo.
- Se agergó código para limite de clientes nuevos.
2025-11-28 13:57:06 -06:00
Javier
9b5c409c9f SE MEDIO AGREGA LO DE CLIENTES NUEVOS 2025-11-28 11:29:35 -06:00
Javier
4b886aebb6 ... 2025-11-04 10:27:49 -06:00
11 changed files with 1147 additions and 68 deletions

View File

@@ -156,11 +156,17 @@ Private Sub B4XPage_Created (Root1 As B4XView)
' Log(ruta) ' Log(ruta)
skmt.Initialize(ruta,"kmt.db", True) skmt.Initialize(ruta,"kmt.db", True)
Subs.guardaAppInfo(skmt) Subs.guardaAppInfo(skmt)
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_GIRO(GIRO TEXT)")
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CN(ACTIVO TEXT)")
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CLIENTES_NUEVOS(CN_ID TEXT, CN_FECHA TEXT, CN_USER TEXT, CN_LAT TEXT, CN_LON TEXT, CN_NOMBRE TEXT, CN_DIRECCION TEXT, CN_FOTO TEXT, CN_ALMACEN TEXT, CN_RUTA TEXT,CN_GIRO TEXT)")
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_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_GPS (HGDATE TEXT, HGLAT TEXT, HGLON TEXT)")
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_GUNAPROD2 (CAT_GP_INICIATIVA TEXT, CAT_GP_TIPOPROD TEXT, CAT_GP_DEV TEXT, CAT_GP_ALMACEN NUMERIC, CAT_GP_ID TEXT, CAT_GP_NOMBRE TEXT, CAT_GP_IMP1 TEXT, CAT_GP_IMP2 TEXT, CAT_GP_PRECIO TEXT, CAT_GP_CLASIF TEXT, CAT_GP_STS TEXT, CAT_GP_TIPO TEXT, CAT_GP_SUBTIPO TEXT, CAT_GP_IMG BLOB)") skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_GUNAPROD2 (CAT_GP_INICIATIVA TEXT, CAT_GP_TIPOPROD TEXT, CAT_GP_DEV TEXT, CAT_GP_ALMACEN NUMERIC, CAT_GP_ID TEXT, CAT_GP_NOMBRE TEXT, CAT_GP_IMP1 TEXT, CAT_GP_IMP2 TEXT, CAT_GP_PRECIO TEXT, CAT_GP_CLASIF TEXT, CAT_GP_STS TEXT, CAT_GP_TIPO TEXT, CAT_GP_SUBTIPO TEXT, CAT_GP_IMG BLOB)")
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_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 HIST_STAY_OUT (HSO_INI TEXT, HSO_FIN TEXT)")
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS TELEFONO(TEL TEXT, CLIENTE TEXT)")
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS INVENT_X_ENVIAR (ALMACEN TEXT, PROID TEXT, CANTIDAD 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_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_COMISIONES_MOVIL (HCM_IDALMACEN TEXT, HCM_RUTA TEXT, HCM_TOTAL_V TEXT, HCM_TOTAL_VIVE TEXT, HCM_TOTAL_GUNA TEXT, HCM_TOTAL_BEB TEXT)")
@@ -178,7 +184,11 @@ Private Sub B4XPage_Created (Root1 As B4XView)
Subs.agregaColumna("PEDIDO", "PE_ENVIO_OK", "INT") Subs.agregaColumna("PEDIDO", "PE_ENVIO_OK", "INT")
Subs.agregaColumna("NOVENTA", "NV_ENVIO_OK", "INT") Subs.agregaColumna("NOVENTA", "NV_ENVIO_OK", "INT")
Subs.agregaColumna("PEDIDO", "PE_TICKET", "INT") Subs.agregaColumna("PEDIDO", "PE_TICKET", "INT")
Subs.agregaColumna("CLIENTES_NUEVOS", "CN_COLONIA", "TEXT")
Subs.agregaColumna("CLIENTES_NUEVOS", "CN_TELEFONO", "TEXT")
Subs.agregaColumna("CLIENTES_NUEVOS", "CN_CP", "TEXT")
Subs.agregaColumna("CLIENTES_NUEVOS", "CN_SOLICITA", "TEXT")
Subs.agregaColumna("CLIENTES_NUEVOS", "CN_ENVIO", "TEXT")
Subs.agregaColumna("CAT_GUNAPROD2", "CAT_GP_PRECIO8", "TEXT DEFAULT '0'") Subs.agregaColumna("CAT_GUNAPROD2", "CAT_GP_PRECIO8", "TEXT DEFAULT '0'")
Subs.agregaColumna("CAT_GUNAPROD2", "CAT_GP_PRECIO9", "TEXT DEFAULT '0'") Subs.agregaColumna("CAT_GUNAPROD2", "CAT_GP_PRECIO9", "TEXT DEFAULT '0'")
Subs.agregaColumna("CAT_GUNAPROD2", "CAT_GP_PRECIO10", "TEXT DEFAULT '0'") Subs.agregaColumna("CAT_GUNAPROD2", "CAT_GP_PRECIO10", "TEXT DEFAULT '0'")

View File

@@ -163,6 +163,11 @@ Sub Class_Globals
Private lv_pedidoExistente As ListView Private lv_pedidoExistente As ListView
Private b_cerrar As Button Private b_cerrar As Button
Private l_pedidoExistente As Label Private l_pedidoExistente As Label
Private l_telefono As Label
Private p_telefono As Panel
Private et_telefono As EditText
Private b_canceltelefono As Button
Private b_aceptelefono As Button
End Sub End Sub
'You can add more parameters here. 'You can add more parameters here.
@@ -285,6 +290,7 @@ Sub B4XPage_Appear
l_atiende.Text = c.GetString("CAT_CL_ATIENDE1") l_atiende.Text = c.GetString("CAT_CL_ATIENDE1")
l_atiende2.Text = c.GetString("CAT_CL_ATIENTE2") l_atiende2.Text = c.GetString("CAT_CL_ATIENTE2")
TELEFONO = c.GetString("CAT_CL_TELEFONO") TELEFONO = c.GetString("CAT_CL_TELEFONO")
l_telefono.Text = c.GetString("CAT_CL_TELEFONO")
l_total.Text = "$" & NumberFormat2(s.GetString("TOTAL_CLIE"), 1, 2, 2, True) l_total.Text = "$" & NumberFormat2(s.GetString("TOTAL_CLIE"), 1, 2, 2, True)
total_cliente = s.GetString("TOTAL_CLIE") total_cliente = s.GetString("TOTAL_CLIE")
Private factura As String = 0 Private factura As String = 0
@@ -1211,23 +1217,66 @@ Sub mandaPendientes
' ab.Close ' ab.Close
'CLIENTES NUEVOS 'CLIENTES NUEVOS
Dim bb As Cursor = B4XPages.MainPage.skmt.ExecQuery($"SELECT * from CLIENTE_NUEVO where CN_enviado is null"$) ' Dim bb As Cursor = B4XPages.MainPage.skmt.ExecQuery($"SELECT * from CLIENTE_NUEVO where CN_enviado is null"$)
Dim cb As Cursor = B4XPages.MainPage.skmt.ExecQuery("SELECT ID_ALMACEN from CAT_ALMACEN") ' Dim cb As Cursor = B4XPages.MainPage.skmt.ExecQuery("SELECT ID_ALMACEN from CAT_ALMACEN")
cb.Position = 0 ' cb.Position = 0
If bb.RowCount > 0 Then ' If bb.RowCount > 0 Then
For i=0 To bb.RowCount -1 ' For i=0 To bb.RowCount -1
bb.Position = i ' bb.Position = i
' Dim cmd As DBCommand
' cmd.Initialize
' cmd.Name = "insert_cliente_INTMEX"
' cmd.Parameters = Array As Object( bb.GetString("CN_ID_CLIENTE"), bb.GetString("CN_NOMBRE"),B4XPages.MainPage.principal.l_ruta.Text,cb.GetString("ID_ALMACEN"))
' reqManager.ExecuteCommand(cmd , $"insert_cliente_${bb.GetString("CN_ID_CLIENTE")}"$)
' Log($"insert_cliente_${bb.GetString("CN_ID_CLIENTE")}"$)
' Next
' Log("si lo hice")
' End If
' bb.Close
' cb.Close
c=Starter.skmt.ExecQuery("SELECT CN_ID, CN_FECHA , CN_USER, CN_LAT, CN_LON, CN_NOMBRE, CN_DIRECCION, CN_FOTO, CN_ALMACEN, CN_RUTA, CN_GIRO, CN_SOLICITA, CN_COLONIA, CN_TELEFONO, CN_CP FROM CLIENTES_NUEVOS")
If c.RowCount>0 Then
For i = 0 To c.RowCount - 1
c.Position = i
Dim dia As Int = DateTime.GetDayOfWeek(DateTime.Now)
If dia = 2 Then
Dim dialetra As String = "LUNES"
Else If dia = 3 Then
Dim dialetra As String = "MARTES"
Else If dia = 4 Then
Dim dialetra As String = "MIERCOLES"
Else If dia = 5 Then
Dim dialetra As String = "JUEVES"
Else If dia = 6 Then
Dim dialetra As String = "VIERNES"
Else If dia = 7 Then
Dim dialetra As String = "SABADO"
End If
Dim cmd As DBCommand Dim cmd As DBCommand
cmd.Initialize cmd.Initialize
cmd.Name = "insert_cliente_INTMEX" cmd.Name = "insert_cliente_INTMEX2"
cmd.Parameters = Array As Object( bb.GetString("CN_ID_CLIENTE"), bb.GetString("CN_NOMBRE"),B4XPages.MainPage.principal.l_ruta.Text,cb.GetString("ID_ALMACEN")) Log(c.GetString("CN_ID")&" ,"& c.GetString("CN_FECHA")&" ,"& c.GetString("CN_USER")&" ,"& c.GetString("CN_LAT")&" ,"& c.GetString("CN_LON")&" ,"& c.GetString("CN_NOMBRE")&" ,"& c.GetString("CN_DIRECCION")&" ,"&ALMACEN& c.GetString("CN_RUTA")&" ,"& "En espera"&c.GetString("CN_GIRO")&" ,"&dialetra& c.GetString("CN_SOLICITA")&" ,"& c.GetString("CN_COLONIA")&" ,"& c.GetString("CN_TELEFONO"))
reqManager.ExecuteCommand(cmd , $"insert_cliente_${bb.GetString("CN_ID_CLIENTE")}"$) cmd.Parameters = Array As Object(c.GetString("CN_ID"), c.GetString("CN_NOMBRE"), c.GetString("CN_RUTA"),ALMACEN, c.GetString("CN_LAT"), c.GetString("CN_LON"), "En espera", c.GetString("CN_FECHA"), c.GetString("CN_USER"), c.GetString("CN_DIRECCION"), c.GetString("CN_GIRO"),dialetra, c.GetString("CN_TELEFONO"), c.GetString("CN_SOLICITA"), c.GetString("CN_COLONIA"), c.GetString("CN_CP"))
Log($"insert_cliente_${bb.GetString("CN_ID_CLIENTE")}"$) reqManager.ExecuteCommand(cmd , $"insert_cliente_${C.GetString("CN_ID")}"$)
Next Next
Log("si lo hice")
End If End If
bb.Close c.Close
cb.Close
' Cambio atiende
c=B4XPages.MainPage.skmt.ExecQuery("Select CAT_CL_TELEFONO, CAT_CL_CODIGO from kmt_info where CAT_CL_CODIGO IN (SELECT CLIENTE FROM TELEFONO)")
If c.RowCount>0 Then
For i=0 To c.RowCount -1
c.Position=i
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "update_atiende_INTMEX"
cmd.Parameters = Array As Object(C.GetString("CAT_CL_TELEFONO"),C.GetString("CAT_CL_CODIGO"),ALMACEN,Subs.traeRuta2(C.GetString("CAT_CL_CODIGO")))
reqManager.ExecuteCommand(cmd , "up_coordenadas")
Next
End If
c.Close
'' BANDERA FACTURA (Pendientes) '' BANDERA FACTURA (Pendientes)
'' c=B4XPages.MainPage.skmt.ExecQuery("SELECT PC_FACTURA, PC_CLIENTE FROM pedido_cliente where PC_CLIENTE IN (Select CUENTA from cuentaa)") '' c=B4XPages.MainPage.skmt.ExecQuery("SELECT PC_FACTURA, PC_CLIENTE FROM pedido_cliente where PC_CLIENTE IN (Select CUENTA from cuentaa)")
@@ -1405,7 +1454,7 @@ Sub JobDone(Job As HttpJob)
Log(resultado.Tag & ": " & k & ": " & records(resultado.Columns.Get(k))) Log(resultado.Tag & ": " & k & ": " & records(resultado.Columns.Get(k)))
Next Next
Next Next
B4XPages.MainPage.skmt.ExecNonQuery($"UPDATE CLIENTE_NUEVO set CN_enviado = 1 where CN_ID_CLIENTE = '${cliente}'"$) B4XPages.MainPage.skmt.ExecNonQuery($"UPDATE CLIENTES_NUEVOS set CN_ENVIO = 1 where CN_ID = '${cliente}'"$)
End If End If
End If End If
@@ -1644,3 +1693,54 @@ End Sub
Private Sub b_pedidoExistente_Click Private Sub b_pedidoExistente_Click
p_pedidoExistente.Visible = True p_pedidoExistente.Visible = True
End Sub End Sub
Private Sub l_telefono_LongClick
p_telefono.Height = Root.Height
p_telefono.Width = Root.Width
p_telefono.Visible = True
End Sub
Private Sub b_aceptelefono_Click
If et_telefono.Text <> "" Then
Private coord As Cursor = B4XPages.MainPage.skmt.ExecQuery("SELECT * from TELEFONO where CLIENTE IN (SELECT CUENTA FROM CUENTAA)")
If coord.RowCount = 0 Then
skmt.ExecNonQuery2("INSERT INTO TELEFONO(TEL,CLIENTE) VALUES (?,?)", Array As String (et_telefono.Text,Subs.traeCliente))
B4XPages.MainPage.skmt.ExecNonQuery($"UPDATE kmt_info set CAT_CL_TELEFONO = '${et_telefono.Text}' where CAT_CL_CODIGO In (select cuenta from cuentaa)"$)
MsgboxAsync("Datos actualizados.","Atención")
l_telefono.Text = et_telefono.Text
ime.HideKeyboard
p_telefono.Visible = False
et_telefono.Text = ""
Else
skmt.ExecNonQuery2("UPDATE TELEFONO SET TEL = ? where CLIENTE IN (SELECT CUENTA FROM CUENTAA)", Array As String (et_telefono.Text))
B4XPages.MainPage.skmt.ExecNonQuery($"UPDATE kmt_info set CAT_CL_TELEFONO = '${et_telefono.Text}' where CAT_CL_CODIGO In (select cuenta from cuentaa)"$)
MsgboxAsync("Datos actualizados.","Atención")
l_telefono.Text = et_telefono.Text
ime.HideKeyboard
p_telefono.Visible = False
et_telefono.Text = ""
End If
Else
MsgboxAsync("Por favor captura un telefono valido.","Atención")
End If
End Sub
Private Sub b_canceltelefono_Click
p_telefono.Visible = False
et_telefono.Text = ""
ime.HideKeyboard
End Sub
Private Sub p_telefono_Click
End Sub
Private Sub Label16_LongClick
p_telefono.Height = Root.Height
p_telefono.Width = Root.Width
p_telefono.Visible = True
End Sub

View File

@@ -4,22 +4,131 @@ ModulesStructureVersion=1
Type=Class Type=Class
Version=11.5 Version=11.5
@EndOfDesignText@ @EndOfDesignText@
'Sub Class_Globals
' Private Root As B4XView 'ignore
' Private xui As XUI 'ignore
'
' Dim g As GPS
' Dim ruta As String
' Dim c As Cursor
'
' Dim CANCELA As Button
' Dim GUARDA 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 E_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
'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)
'End Sub
'
''You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
'
'Sub B4XPage_Appear
' E_NOMBRE.Text = ""
' If Not(Starter.gps.GPSEnabled) Then
' ToastMessageShow("Es necesario tener el GPS encendido", True)
' StartActivity(Starter.gps.LocationSettingsIntent)
' End If
' GUARDA.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
' GUARDA.Visible = True 'Si hay ubicaccion, mostramos el boton de guardar.
' l_sinUbicacion.Visible = False
' End If
'End Sub
'
'Sub GPS_LocationChanged (Location1 As Location)
' If B4XPages.MainPage.lat_gps <> "0.0" Then
' GUARDA.Visible = True 'Si hay ubicaccion, mostramos el boton de guardar.
' l_sinUbicacion.Visible = False
' End If
'End Sub
'
'Sub CANCELA_Click
' B4XPages.ShowPage("Principal")
'End Sub
'
'Sub GUARDA_Click
' If E_NOMBRE.Text = "" Then
' ToastMessageShow("Se tiene que nombrar la tienda para continuar" , True)
' Else
' DateTime.DateFormat = "MM/dd/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= "N" & sTime & no_ruta
' Log("++ ++ no_cliente = "&no_cliente)
' c.Close
' B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO kmt_info(CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO, gestion) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0,0,0) ",Array As Object (no_cliente,no_ruta, E_NOMBRE.Text,"null","null","null","null","null","null","null","null","null","null","null","null","null",B4XPages.MainPage.lon_gps,B4XPages.MainPage.lat_gps))
' B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO HIST_STAY_STORE(HSS_CODIGO, HSS_IN , HSS_OUT , HSS_TOT) VALUES (?,0,0,0)", Array As Object (no_cliente))
' B4XPages.MainPage.skmt.ExecNonQuery("delete from CUENTAA")
' B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object(no_cliente))
' B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CLIENTE_NUEVO(CN_ID_CLIENTE, CN_NOMBRE) VALUES (?,?)", Array As Object(no_cliente, E_NOMBRE.Text))
' B4XPages.ShowPage("Cliente")
' End If
'End Sub
'
'
'Private Sub p_nuevoCliente_Click
'
'End Sub
Sub Class_Globals Sub Class_Globals
Private Root As B4XView 'ignore Private Root As B4XView 'ignore
Private xui As XUI 'ignore Private xui As XUI 'ignore
Dim g As GPS Dim g As GPS
Dim ruta As String Dim ruta As String
Dim c As Cursor Dim c As Cursor
Dim CANCELA As Button Dim CANCELA As Button
Dim GUARDA As Button Dim GUARDA As Button
Dim cuenta As String Dim cuenta As String
Dim usuario As String Dim usuario As String
Dim sDate,sTime As String Dim sDate,sTime As String
Dim sDate2,sTime2 As String
Dim no_cliente As String Dim no_cliente As String
Dim no_ruta As String Dim no_ruta As String
Dim lista_punta As List
Dim r_4 As RadioButton Dim r_4 As RadioButton
Dim E_NOMBRE As EditText Dim E_NOMBRE As EditText
Dim tgl As Toggle Dim tgl As Toggle
@@ -27,6 +136,32 @@ Sub Class_Globals
Private p_nuevoCliente As Panel Private p_nuevoCliente As Panel
Private Label1 As Label Private Label1 As Label
Private p_botones As Panel 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 = "0"
Dim ALMACEN As String
Private et_direccion As EditText
Private Label2 As Label
Dim lat As Double = 0
Dim lon As Double = 0
Private b_ubicacion As Label
Private Label3 As Label
Private cb_giro As B4XComboBox
Dim giros As String
Private L_Atiende As Label
Private ET_Atiende As EditText
Private Label5 As Label
Private et_colonia As EditText
Private et_telefono As EditText
Private et_cp As EditText
Private Label6 As Label
Dim cuantosNuevos As Int
Private p_transparenteCN As Panel
Private p_clientesNuevos As Panel
Private b_clienteNuevo As Button
End Sub End Sub
'You can add more parameters here. 'You can add more parameters here.
@@ -36,6 +171,7 @@ End Sub
'This event will be called once, before the page becomes visible. 'This event will be called once, before the page becomes visible.
Private Sub B4XPage_Created (Root1 As B4XView) Private Sub B4XPage_Created (Root1 As B4XView)
' B4XPages.SetTitle(Me, $"${Subs.capitalizar(B4XPages.GetPageId(Me))} - ${Application.VersionName}"$)
Root = Root1 Root = Root1
'load the layout to Root 'load the layout to Root
Root.LoadLayout("nuevocliente") Root.LoadLayout("nuevocliente")
@@ -44,12 +180,45 @@ Private Sub B4XPage_Created (Root1 As B4XView)
File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db") File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db")
End If End If
' skmt.Initialize(ruta,"kmt.db", True) ' skmt.Initialize(ruta,"kmt.db", True)
' p_camara.Height = Root.Height
' p_camara.Width = Root.Width
' Starter.rp.CheckAndRequest(Starter.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
' Log("inicializamos Camara")
' Else
' ToastMessageShow("Sin permisos de camara!!!", True)
' End If
Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE)
Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
If Result Then
Log("Con permisos para escritura")
Else
ToastMessageShow("Sin permisos de escritura!!!", True)
End If
Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_READ_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 lectura!!!", True)
End If
End Sub End Sub
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. 'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
Sub B4XPage_Appear Sub B4XPage_Appear
p_transparenteCN.Top = 0 : p_transparenteCN.Left = 0
p_transparenteCN.Width = Root.Width : p_transparenteCN.Height = Root.Height
et_direccion.Text = ""
E_NOMBRE.Text = "" E_NOMBRE.Text = ""
ET_Atiende.Text = ""
et_colonia.Text = ""
et_telefono.Text = ""
et_cp.Text = ""
If Not(Starter.gps.GPSEnabled) Then If Not(Starter.gps.GPSEnabled) Then
ToastMessageShow("Es necesario tener el GPS encendido", True) ToastMessageShow("Es necesario tener el GPS encendido", True)
StartActivity(Starter.gps.LocationSettingsIntent) StartActivity(Starter.gps.LocationSettingsIntent)
@@ -59,57 +228,388 @@ Sub B4XPage_Appear
p_nuevoCliente.Height = Root.Height p_nuevoCliente.Height = Root.Height
p_nuevoCliente.Width = Root.Width p_nuevoCliente.Width = Root.Width
Subs.centraEtiqueta(Label1, Root.Width) Subs.centraEtiqueta(Label1, Root.Width)
Subs.centraEtiqueta(Label5, Root.Width)
Subs.centraEtiqueta(Label6, Root.Width)
Subs.centraEtiqueta(Label2, Root.Width)
Subs.centraEtiqueta(Label3, Root.Width)
Subs.centraEtiqueta(l_sinUbicacion, Root.Width) Subs.centraEtiqueta(l_sinUbicacion, Root.Width)
Subs.centraEtiqueta(b_ubicacion, Root.Width)
Subs.centraPanel(p_botones, Root.Width) Subs.centraPanel(p_botones, Root.Width)
E_NOMBRE.Left = Round(Root.Width/2)-(E_NOMBRE.Width/2) E_NOMBRE.Left = Round(Root.Width/2)-(E_NOMBRE.Width/2)
et_cp.Left = Round(Root.Width/2)-(E_NOMBRE.Width/2)
et_colonia.Left = Round(Root.Width/2)-(et_colonia.Width/2)
et_direccion.Left = Round(Root.Width/2)-(et_direccion.Width/2)
If B4XPages.MainPage.lat_gps <> "0.0" Then If B4XPages.MainPage.lat_gps <> "0.0" Then
GUARDA.Visible = True 'Si hay ubicaccion, mostramos el boton de guardar. GUARDA.Visible = True 'Si hay ubicaccion, mostramos el boton de guardar.
l_sinUbicacion.Visible = False l_sinUbicacion.Visible = True
End If End If
cuantosNuevos = 0
Subs.centraPanel(p_clientesNuevos, Root.Width)
c = Starter.skmt.ExecQuery("select count(cat_cl_codigo) as cuantos from kmt_info where cat_cl_codigo like 'N%'")
If c.RowCount > 0 Then
c.Position = 0
cuantosNuevos = c.GetInt("cuantos")
End If
c.Close
Dim permitidos As Int = 0
c = Starter.skmt.ExecQuery("select ACTIVO from cn")
If c.RowCount > 0 Then
c.Position = 0
permitidos = c.GetInt("ACTIVO")
End If
c.Close
Log($"Permitidos: ${permitidos}, Actuales: ${cuantosNuevos}"$)
Log((permitidos > 0) & "|" & (permitidos > cuantosNuevos))
If permitidos <> 0 Then ' Si permitidos es CERO entonces SIN LIMITE de clientes nuevos.
If permitidos > cuantosNuevos Then
p_transparenteCN.Visible = False
Else
p_transparenteCN.BringToFront
p_transparenteCN.Visible = True
End If
End If
CallSubDelayed(Tracker, "Track")
CallSubDelayed(Tracker, "StartFLPSmall")
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
' lista_punta.Initialize
' Dim pol As Cursor = Starter.skmt.ExecQuery("SELECT LAT, LONG FROM POLIGONO")
' If pol.RowCount > 0 Then
'
' For poli = 0 To pol.RowCount -1
' pol.Position = poli
' Dim coords As LatLng
' coords.Initialize(pol.GetString("LAT"), pol.GetString("LONG"))
' lista_punta.Add(coords)
' Next
' End If
If Not(Starter.GPS.GPSEnabled) Then
ToastMessageShow("Debe Activar el GPS del Equipo.", True)
StartActivity(Starter.GPS.LocationSettingsIntent)
Else
Starter.GPS.Start(0, 0)
' If Starter.ubicacionActual.Latitude <> 0 Then GPS_LocationChanged(Starter.ubicacionActual)
End If
CallSubDelayed(Tracker, "StartFLPSmall")
c = Starter.skmt.ExecQuery("SELECT GIRO FROM CAT_GIRO order by 1")
Dim Items As List
Items.Initialize
Items.Add("SELECCIONA UNA OPCIÓN")
If c.RowCount > 0 Then
For i = 0 To c.RowCount-1
c.Position = i
Items.Add(c.GetString("GIRO"))
Next
cb_giro.SetItems(Items)
End If
giros = "SELECCIONA UNA OPCIÓN"
c.Close
End Sub End Sub
Sub GPS_LocationChanged (Location1 As Location) Sub GPS_LocationChanged (Location1 As Location)
If B4XPages.MainPage.lat_gps <> "0.0" Then If B4XPages.MainPage.lat_gps <> "0.0" Then
GUARDA.Visible = True 'Si hay ubicaccion, mostramos el boton de guardar. GUARDA.Visible = True 'Si hay ubicaccion, mostramos el boton de guardar.
l_sinUbicacion.Visible = False l_sinUbicacion.Visible = True
lat = Location1.Latitude
lon = Location1.Longitude
l_sinUbicacion.Text = ("Latitud: " & lat & ", Longotud: "& lon)
End If
b_ubicacion.TextSize = 13
b_ubicacion.Text = $"Precisión GPS $1.0{Location1.Accuracy} m"$
If Location1.Accuracy > 200 Then
b_ubicacion.TextColor = Colors.Red
b_ubicacion.TextSize = 16
b_ubicacion.Text = $"Mala señal $1.0{Location1.Accuracy} m"$
End If End If
End Sub End Sub
'Sub InicializarGPSPreciso
' Dim gps1 As GPS
' gps1.Initialize("GPS")
'
' ' Usar Criteria para alta precisión
' Dim cr As Criteria
' cr.Accuracy = cr.ACCURACY_FINE
' cr.PowerRequirement = cr.POWER_HIGH
'
' gps1.Start(0, 0) ' Máxima frecuencia de actualización
'End Sub
Sub CANCELA_Click Sub CANCELA_Click
B4XPages.ShowPage("Principal") B4XPages.ShowPage("Principal")
CallSubDelayed(Tracker, "StartFLP")
End Sub
Sub PointInPolygon(point As LatLng, polygon As List) As Boolean
Dim x As Double = point.Longitude
Dim y As Double = point.Latitude
Dim inside As Boolean = False
For i = 0 To polygon.Size - 1
Dim j As Int = (i + 1) Mod polygon.Size
Dim p1_1 As LatLng = polygon.Get(i)
Dim p2_1 As LatLng = polygon.Get(j)
Dim xi As Double = p1_1.Longitude
Dim yi As Double = p1_1.Latitude
Dim xj As Double = p2_1.Longitude
Dim yj As Double = p2_1.Latitude
Dim intersect As Boolean = ((yi > y) <> (yj > y)) And (x < (xj - xi) * (y - yi) / (yj - yi) + xi)
If intersect Then
inside = Not(inside)
End If
Next
Return inside
End Sub End Sub
Sub GUARDA_Click Sub GUARDA_Click
' Dim mPoint As LatLng
' mPoint.Initialize(B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps)
'
'' If lista_punta.Size > 0 Then
'' Dim dentro As Boolean = PointInPolygon(mPoint, lista_punta)
''
'' If dentro Then
' ToastMessageShow("El punto está DENTRO del polígono", True)
B4XPages.ShowPage("NuevoCliente")
' Verifica si el nombre de la tienda está vacío
If E_NOMBRE.Text = "" Then If E_NOMBRE.Text = "" Then
ToastMessageShow("Se tiene que nombrar la tienda para continuar" , True) MsgboxAsync("Por favor captura el nombre de la Tienda","Atención")
Else ' Verifica si la dirección tiene más de 3 caracteres
Else If et_direccion.Text.Length > 3 Then
' Verifica si la latitud es diferente de 0
If lat <> 0 Then
' Verifica si el giro del cliente está seleccionado
If giros <> "SELECCIONA UNA OPCIÓN" Or cb_giro.SelectedItem <> "SELECCIONA UNA OPCIÓN" Then
' Verifica si el encargado que atiende el negocio está capturado
If ET_Atiende.Text <> "" Then
If et_telefono.Text <> "" Then
If et_colonia.Text <> "" Then
If et_cp.Text <> "" Then
DateTime.DateFormat = "MM/dd/yyyy" DateTime.DateFormat = "MM/dd/yyyy"
DateTime.Timeformat = "HHmmss" DateTime.Timeformat = "HHmmss"
sDate = DateTime.Date(DateTime.Now) sDate = DateTime.Date(DateTime.Now)
sTime = DateTime.Time(DateTime.Now) sTime = DateTime.Time(DateTime.Now)
Log($" //////////// Date: ${sDate} - Time: ${sTime} ////////////////"$) 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'" ' Aquí creamos manualmente 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 hora As String = sTime.SubString2(0,2)
Private mins As String = sTime.SubString2(2,4) Private mins As String = sTime.SubString2(2,4)
Private segs As String = sTime.SubString(4) Private segs As String = sTime.SubString(4)
sTime = hora & ":" & mins & ":" & segs sTime = hora & ":" & mins & ":" & segs
Dim Fechacliente() As String = Regex.Split("/",sDate)
Log("////////////// sTime: "&sTime&" ////////////////") Log("////////////// sTime: "&sTime&" ////////////////")
c=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_RUTA FROM kmt_info") c = Starter.skmt.ExecQuery("select CAT_CL_RUTA FROM kmt_info")
c.Position = 0 c.Position = 0
no_ruta = c.GetString("CAT_CL_RUTA") no_ruta = c.GetString("CAT_CL_RUTA")
no_cliente = "N" & sTime & no_ruta no_cliente = "N" & sTime & no_ruta
Log("++ ++ no_cliente = "&no_cliente) Log("++ ++ no_cliente = "&no_cliente)
c.Close c.Close
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO kmt_info(CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO, gestion) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0,0,0) ",Array As Object (no_cliente,no_ruta, E_NOMBRE.Text,"null","null","null","null","null","null","null","null","null","null","null","null","null",B4XPages.MainPage.lon_gps,B4XPages.MainPage.lat_gps))
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO HIST_STAY_STORE(HSS_CODIGO, HSS_IN , HSS_OUT , HSS_TOT) VALUES (?,0,0,0)", Array As Object (no_cliente)) Starter.skmt.ExecNonQuery2("INSERT INTO HIST_STAY_STORE(HSS_CODIGO, HSS_IN , HSS_OUT , HSS_TOT) VALUES (?,0,0,0)", Array As Object (no_cliente))
B4XPages.MainPage.skmt.ExecNonQuery("delete from CUENTAA") Starter.skmt.ExecNonQuery("delete from CUENTAA")
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object(no_cliente)) Starter.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object(no_cliente))
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CLIENTE_NUEVO(CN_ID_CLIENTE, CN_NOMBRE) VALUES (?,?)", Array As Object(no_cliente, E_NOMBRE.Text)) c = Starter.skmt.ExecQuery("select ID_ALMACEN from CAT_ALMACEN")
B4XPages.ShowPage("Cliente") If c.RowCount > 0 Then
c.Position = 0
ALMACEN = c.GetString("ID_ALMACEN")
End If End If
c.Close
c = Starter.skmt.ExecQuery("select usuario from usuarioa")
c.Position = 0
usuario = c.GetString("USUARIO")
c.Close
' Starter.skmt.ExecNonQuery2("INSERT INTO HIST_FOTO_CLIENTE(CODIGO, ALMACEN, RUTA) VALUES(?,?,?)", Array As Object(no_cliente, ALMACEN, no_ruta))
' Starter.skmt.ExecNonQuery2("INSERT INTO NOVENTA (NV_CLIENTE,NV_FECHA,NV_USER,NV_MOTIVO,NV_LAT,NV_LON,NV_NOMBRE,NV_DIRECCION) VALUES(?,?,?,?,?,?,?,?) ", Array As Object (no_cliente,sDate & sTime, usuario, "NUEVO CLIENTE", lat, lon, E_NOMBRE.Text,et_direccion.Text))
DateTime.DateFormat = "dd/MM/yyyy"
DateTime.Timeformat = "HH:mm:ss"
sDate2 = DateTime.Date(DateTime.Now)
sTime2 = DateTime.Time(DateTime.Now)
Log("AQUI")
Starter.skmt.ExecNonQuery2("INSERT INTO kmt_info(CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO, gestion, CAT_CL_GIRO,CAT_CL_CP) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0,0,0,?,?) ", Array As Object (no_cliente,no_ruta, E_NOMBRE.Text,"null","null","null","null","null","null","null","null","null","null","null","null","null",B4XPages.MainPage.lon_gps,B4XPages.MainPage.lat_gps, cb_giro.SelectedItem,et_cp.Text))
Starter.skmt.ExecNonQuery2("INSERT INTO CLIENTES_NUEVOS(CN_ID, CN_FECHA, CN_USER, CN_LAT, CN_LON, CN_NOMBRE, CN_DIRECCION, CN_ALMACEN, CN_RUTA, CN_GIRO, CN_SOLICITA,CN_COLONIA, CN_TELEFONO,CN_CP) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As String(no_cliente, sDate2 &" "&sTime2, usuario, lat, lon, E_NOMBRE.Text, et_direccion.Text, ALMACEN, no_ruta, cb_giro.SelectedItem, ET_Atiende.Text,et_colonia.Text,et_telefono.Text,et_cp.Text))
' fototomada = "0"
B4XPages.ShowPage("Cliente")
CallSubDelayed(Tracker, "StartFLP")
Else
MsgboxAsync("Por favor, debe capturar el C.P. el negocio.","Atención")
End If
Else
MsgboxAsync("Por favor, debe capturar la colonia el negocio.","Atención")
End If
Else
MsgboxAsync("Por favor, debe capturar el telefono.","Atención")
End If
Else
' Mensaje de advertencia si ET_Atiende.Text está vacío
MsgboxAsync("Por favor, debe capturar al encargado que atiende el negocio.","Atención")
End If
Else
MsgboxAsync("Por favor captura el giro del cliente","Atención")
End If
Else
MsgboxAsync("Por favor revisa que tengas señal GPS","Atención")
End If
Else
MsgboxAsync("Por favor captura la dirección del cliente","Atención")
End If
' Else
' ToastMessageShow("El punto está FUERA del polígono", True)
' End If
' End If
End Sub End Sub
Private Sub p_nuevoCliente_Click Private Sub p_nuevoCliente_Click
End Sub End Sub
'Private Sub b_foto_inci_Click
' camEx2.TakePicture
' p_camara.Visible = False
'' StopCamera2
'End Sub
'
'Private Sub InitializeCamera2
' Starter.rp.CheckAndRequest(Starter.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
' Log("inicializamos Camara")
' Else
' ToastMessageShow("Sin permisos de camara!!!", True)
' End If
' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE)
' Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
' If Result Then
' Log("con permisos para escritura")
' Else
' ToastMessageShow("Sin permisos de escritura!!!", True)
' End If
'
' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_READ_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 lectura!!!", True)
' End If
'End Sub
'
'Sub Camera1_Ready (Success As Boolean)
' Log("Camara ready")
' If Success Then
' camEx2.SetJpegQuality(90)
' camEx2.SetContinuousAutoFocus
' camEx2.CommitParameters
' camEx2.StartPreview
' Log(camEx2.GetPreviewSize)
' Else
' ToastMessageShow("Cannot open camera.", True)
' Log("Cannot open camera")
' End If
'End Sub
'
'Sub Camera1_PictureTaken (Data()As Byte)
' 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"
' Log("creado en promotoria " & Dirp & Dir & Dir2)
' Catch
' Dir = ""
' Log("creado en raiz")
' End Try
'
' camEx2.SavePictureToFile(Data, Dirp&Dir, filename)
' camEx2.StartPreview 'restart preview
' ToastMessageShow("Picture saved." & CRLF & "File size: " & File.Size(Dir, filename) & Dir &"," & filename, True)
' Log("Picture saved." & CRLF & "File size: " & File.Size(Dir, filename) & Dir &"," & filename)
' p_camara.Visible = False
' StopCamera2
'
'End Sub
'
'Private Sub StopCamera2
'' Capturing = False
' If camEx2.IsInitialized Then
' camEx2.Release
' End If
'End Sub
'
'
'Private Sub B_FOTO_Click
' DateTime.DateFormat="ddMMyyyyHHmmss"
' InitializeCamera2
' Subs.panelVisible(p_camara, 0, 0)
' fototomada = DateTime.Now & "_cliente.jpg"
'End Sub
Private Sub cb_giro_SelectedIndexChanged (Index As Int)
giros = cb_giro.SelectedItem
End Sub
Private Sub et_cp_TextChanged (Old As String, New As String)
If New.Length > 5 Then
et_cp.Text = Old
Else If New.Length > 1 And New.Length <= 5 Then
If New.Contains(Chr(10)) Or New.Contains(Chr(13)) Or New.Contains(Chr(34)) Then
et_cp.Text = Old
End If
End If
End Sub
Private Sub et_telefono_TextChanged (Old As String, New As String)
If New.Length > 10 Then
et_telefono.Text = Old
Else If New.Length > 1 And New.Length <= 10 Then
If New.Contains(Chr(10)) Or New.Contains(Chr(13)) Or New.Contains(Chr(34)) Then
et_telefono.Text = Old
End If
End If
End Sub
Private Sub b_clienteNuevo_Click
B4XPages.ShowPage("Principal")
p_transparenteCN.Visible = False
End Sub
Private Sub p_transparenteCN_Click
End Sub

View File

@@ -222,6 +222,8 @@ Sub Class_Globals
Private p_prod As Panel Private p_prod As Panel
Private b_regreso As Button Private b_regreso As Button
Private b_productos As Button Private b_productos As Button
Private B_PROM As Button
Private B_PROD As Button
End Sub End Sub
'You can add more parameters here. 'You can add more parameters here.
@@ -747,6 +749,34 @@ Sub Subir_Click
End If End If
c.Close c.Close
c=Starter.skmt.ExecQuery("SELECT CN_ID, CN_FECHA , CN_USER, CN_LAT, CN_LON, CN_NOMBRE, CN_DIRECCION, CN_FOTO, CN_ALMACEN, CN_RUTA, CN_GIRO, CN_SOLICITA, CN_COLONIA, CN_TELEFONO, CN_CP FROM CLIENTES_NUEVOS")
If c.RowCount>0 Then
For i = 0 To c.RowCount - 1
c.Position = i
Dim dia As Int = DateTime.GetDayOfWeek(DateTime.Now)
If dia = 2 Then
Dim dialetra As String = "LUNES"
Else If dia = 3 Then
Dim dialetra As String = "MARTES"
Else If dia = 4 Then
Dim dialetra As String = "MIERCOLES"
Else If dia = 5 Then
Dim dialetra As String = "JUEVES"
Else If dia = 6 Then
Dim dialetra As String = "VIERNES"
Else If dia = 7 Then
Dim dialetra As String = "SABADO"
End If
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "insert_cliente_INTMEX2"
Log(c.GetString("CN_ID")&" ,"& c.GetString("CN_FECHA")&" ,"& c.GetString("CN_USER")&" ,"& c.GetString("CN_LAT")&" ,"& c.GetString("CN_LON")&" ,"& c.GetString("CN_NOMBRE")&" ,"& c.GetString("CN_DIRECCION")&" ,"&ALMACEN& c.GetString("CN_RUTA")&" ,"& "En espera"&c.GetString("CN_GIRO")&" ,"&dialetra& c.GetString("CN_SOLICITA")&" ,"& c.GetString("CN_COLONIA")&" ,"& c.GetString("CN_TELEFONO"))
cmd.Parameters = Array As Object(c.GetString("CN_ID"), c.GetString("CN_NOMBRE"), c.GetString("CN_RUTA"),ALMACEN, c.GetString("CN_LAT"), c.GetString("CN_LON"), "En espera", c.GetString("CN_FECHA"), c.GetString("CN_USER"), c.GetString("CN_DIRECCION"), c.GetString("CN_GIRO"),dialetra, c.GetString("CN_TELEFONO"), c.GetString("CN_SOLICITA"), c.GetString("CN_COLONIA"), c.GetString("CN_CP"))
reqManager.ExecuteCommand(cmd , "inst_clientesn")
Next
End If
c.Close
' LO DEL LIKE ' LO DEL LIKE
c=B4XPages.MainPage.skmt.ExecQuery("Select HFCLIENTE, HFALIAS,HFRUTA,HFALMACEN from HIST_FACE") c=B4XPages.MainPage.skmt.ExecQuery("Select HFCLIENTE, HFALIAS,HFRUTA,HFALMACEN from HIST_FACE")
If c.RowCount>0 Then If c.RowCount>0 Then
@@ -945,10 +975,20 @@ Sub cargar_Click
reqManager.ExecuteQuery(cmd , 0, "detallepaq") reqManager.ExecuteQuery(cmd , 0, "detallepaq")
cmd.Initialize cmd.Initialize
cmd.Name = "select_cat_clientes_INTMEX" cmd.Name = "select_cat_clientes2_INTMEX"
cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) cmd.Parameters = Array As Object(e_ruta.text, ALMACEN)
reqManager.ExecuteQuery(cmd , 0, "kmt_datos") reqManager.ExecuteQuery(cmd , 0, "kmt_datos")
cmd.Initialize
cmd.Name = "select_cn_INTMEX"
cmd.Parameters = Array As Object(e_ruta.text, ALMACEN)
reqManager.ExecuteQuery(cmd , 0, "cn")
'' cambiar
cmd.Initialize
cmd.Name = "select_cat_GIRO_INTMEX"
reqManager.ExecuteQuery(cmd , 0, "giro")
cmd.Initialize cmd.Initialize
cmd.Name = "select_cat_clientes_todos_INTMEX" cmd.Name = "select_cat_clientes_todos_INTMEX"
cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) cmd.Parameters = Array As Object(e_ruta.text, ALMACEN)
@@ -1001,7 +1041,7 @@ Sub cargar_Click
ImageView9.Visible = False ImageView9.Visible = False
cmd.Initialize cmd.Initialize
cmd.Name = "select_cat_clientes_INTMEX" cmd.Name = "select_cat_clientes2_INTMEX"
cmd.Parameters = Array As Object(E_RUTA2.text, ALMACEN) cmd.Parameters = Array As Object(E_RUTA2.text, ALMACEN)
reqManager.ExecuteQuery(cmd , 0, "kmt_datos") reqManager.ExecuteQuery(cmd , 0, "kmt_datos")
@@ -1209,6 +1249,37 @@ Sub JobDone(Job As HttpJob)
End If End If
End If End If
If Job.JobName = "DBRequest" Then
Dim RESULT As DBResult = reqManager.HandleJob(Job)
If RESULT.Tag = "giro" Then 'query tag
For Each records() As Object In RESULT.Rows
Dim giro As String = records(RESULT.Columns.Get("CAT_GR_DESC"))
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_GIRO(GIRO) VALUES (?)", Array As Object (giro))
Next
If PB2.Progress = 0 Then
PB2.Progress = 30
S_CP.Text = "CARGANDO"
ELSE If PB2.Progress = 30 Then
PB2.Progress = 60
ELSE IF PB2.Progress = 60 Then
PB2.Progress = 100
S_CP.Text = "LISTO"
End If
Listo3 =1
If Listo1 =1 And Listo2 =1 And Listo3 = 1 And Listo4 = 1 Then
B4XPage_Appear
img2.Visible=False
EJECUTANDO=0
Else If Listo4 = 1 And Listo3 = 1 And inve = 1 Then
B4XPage_Appear
img2.Visible=False
EJECUTANDO=0
End If
End If
End If
If Job.JobName = "DBRequest" Then If Job.JobName = "DBRequest" Then
Dim resultado As DBResult = reqManager.HandleJob(Job) Dim resultado As DBResult = reqManager.HandleJob(Job)
If resultado.Tag = "piezas" Then 'query tag If resultado.Tag = "piezas" Then 'query tag
@@ -1430,6 +1501,16 @@ Sub JobDone(Job As HttpJob)
End If End If
End If End If
If Job.JobName = "DBRequest" Then
Dim RESULT As DBResult = reqManager.HandleJob(Job)
If RESULT.Tag = "cn" Then 'query tag
For Each records() As Object In RESULT.Rows
Dim CAT_RU_CN As String = records(RESULT.Columns.Get("CAT_RU_CN"))
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CN(ACTIVO) VALUES (?)", Array As Object (CAT_RU_CN))
Next
End If
End If
If Job.JobName = "DBRequest" Then If Job.JobName = "DBRequest" Then
Dim RESULT As DBResult = reqManager.HandleJob(Job) Dim RESULT As DBResult = reqManager.HandleJob(Job)
If RESULT.Tag = "marcas_rutas" Then 'query tag If RESULT.Tag = "marcas_rutas" Then 'query tag
@@ -2087,6 +2168,7 @@ Sub e_ruta_EnterPressed
RES = Msgbox2("Seguro que desea hacer el cierre todos los datos se borraran?","Cierre", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore RES = Msgbox2("Seguro que desea hacer el cierre todos los datos se borraran?","Cierre", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore
If RES = DialogResponse.POSITIVE Then If RES = DialogResponse.POSITIVE Then
e_ruta.Text = "" e_ruta.Text = ""
Starter.skmt.ExecNonQuery("delete from CAT_GIRO")
B4XPages.MainPage.skmt.ExecNonQuery("delete from CLIENTE_NUEVO") B4XPages.MainPage.skmt.ExecNonQuery("delete from CLIENTE_NUEVO")
B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido_cliente") B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido_cliente")
B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido") B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido")
@@ -2739,6 +2821,14 @@ Sub checaPedido
If c.RowCount > 0 Then If c.RowCount > 0 Then
Starter.skmt.ExecNonQuery("Update kmt_info set gestion = 3 WHERE CAT_CL_CODIGO IN (SELECT NV_CLIENTE FROM NOVENTA)") Starter.skmt.ExecNonQuery("Update kmt_info set gestion = 3 WHERE CAT_CL_CODIGO IN (SELECT NV_CLIENTE FROM NOVENTA)")
End If End If
Private coord As Cursor = Starter.skmt.ExecQuery("SELECT * FROM TELEFONO")
If coord.RowCount > 0 Then
For cor = 0 To coord.RowCount -1
coord.Position = cor
B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE kmt_info set CAT_CL_TELEFONO = ? where CAT_CL_CODIGO = ?", Array As Object(coord.GetString("TEL"),coord.GetString("CLIENTE")))
Next
End If
End Sub End Sub
@@ -2756,7 +2846,8 @@ Private Sub b_productos_Click
p_prod.BringToFront p_prod.BringToFront
Private c As Cursor = Starter.skmt.ExecQuery("select CAT_GP_NOMBRE AS HVD_PRONOMBRE, IFNULL(CAT_GP_PRECIO, 0) AS HVD_RECHAZOCANT from CAT_GUNAPROD order by CAT_GP_NOMBRE asc") ' Private c As Cursor = Starter.skmt.ExecQuery("select CAT_GP_NOMBRE AS HVD_PRONOMBRE, IFNULL(CAT_GP_PRECIO, 0) AS HVD_RECHAZOCANT from CAT_GUNAPROD order by CAT_GP_NOMBRE asc")
Private c As Cursor = Starter.skmt.ExecQuery("select CAT_GP_NOMBRE AS HVD_PRONOMBRE, IFNULL(CAT_GP_PRECIO, 0) AS HVD_RECHAZOCANT from CAT_GUNAPROD WHERE CAT_GP_CLASIF <> 'PROMOS' order by CAT_GP_NOMBRE asc")
lv_prod_Prin.SingleLineLayout.Label.TextColor = Colors.Black lv_prod_Prin.SingleLineLayout.Label.TextColor = Colors.Black
lv_prod_Prin.Clear lv_prod_Prin.Clear
@@ -2786,3 +2877,73 @@ End Sub
Private Sub p_prod_Click Private Sub p_prod_Click
End Sub End Sub
Private Sub B_PROD_Click
Dim label1 As Label
label1 = lv_prod_Prin.SingleLineLayout.Label
label1.TextSize = 14
p_prod.Width = Root.Width
p_prod.Height = Root.Height
b_regreso.Left = (p_prod.Width - b_regreso.Width) / 2
b_regreso.Top = p_prod.Height - b_regreso.Height
p_prod.Visible = True
p_prod.BringToFront
Private c As Cursor = Starter.skmt.ExecQuery("select CAT_GP_NOMBRE AS HVD_PRONOMBRE, IFNULL(CAT_GP_PRECIO, 0) AS HVD_RECHAZOCANT from CAT_GUNAPROD WHERE CAT_GP_CLASIF <> 'PROMOS' order by CAT_GP_NOMBRE asc")
lv_prod_Prin.SingleLineLayout.Label.TextColor = Colors.Black
lv_prod_Prin.Clear
If c.RowCount > 0 Then
For i = 0 To c.RowCount - 1
c.Position = i
Dim itemText As String
itemText = $"${c.GetString("HVD_PRONOMBRE")} ${CRLF}Precio: ${(c.GetDouble("HVD_RECHAZOCANT"))}"$
lv_prod_Prin.AddSingleLine(itemText)
Next
Else
lv_prod_Prin.AddSingleLine("No hay datos disponibles.")
End If
c.Close
End Sub
Private Sub B_PROM_Click
Dim label1 As Label
label1 = lv_prod_Prin.SingleLineLayout.Label
label1.TextSize = 14
p_prod.Width = Root.Width
p_prod.Height = Root.Height
b_regreso.Left = (p_prod.Width - b_regreso.Width) / 2
b_regreso.Top = p_prod.Height - b_regreso.Height
p_prod.Visible = True
p_prod.BringToFront
Private c As Cursor = Starter.skmt.ExecQuery("select CAT_GP_NOMBRE AS HVD_PRONOMBRE, IFNULL(CAT_GP_PRECIO, 0) AS HVD_RECHAZOCANT from CAT_GUNAPROD WHERE CAT_GP_CLASIF = 'PROMOS' order by CAT_GP_NOMBRE asc")
lv_prod_Prin.SingleLineLayout.Label.TextColor = Colors.Black
lv_prod_Prin.Clear
If c.RowCount > 0 Then
For i = 0 To c.RowCount - 1
c.Position = i
Dim itemText As String
itemText = $"${c.GetString("HVD_PRONOMBRE")} ${CRLF}Precio: ${(c.GetDouble("HVD_RECHAZOCANT"))}"$
lv_prod_Prin.AddSingleLine(itemText)
Next
Else
lv_prod_Prin.AddSingleLine("No hay datos disponibles.")
End If
c.Close
End Sub

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -164,7 +164,7 @@ Version=12.8
#Region Project Attributes #Region Project Attributes
#ApplicationLabel: Intmex #ApplicationLabel: Intmex
#VersionCode: 1 #VersionCode: 1
#VersionName: 5.09.07 s/C #VersionName: 5.11.25
'SupportedOrientations possible values: unspecified, landscape or portrait. 'SupportedOrientations possible values: unspecified, landscape or portrait.
#SupportedOrientations: portrait #SupportedOrientations: portrait
#CanInstallToExternalStorage: False #CanInstallToExternalStorage: False

View File

@@ -63,16 +63,16 @@ ModuleBreakpoints9=
ModuleClosedNodes0= ModuleClosedNodes0=
ModuleClosedNodes1= ModuleClosedNodes1=
ModuleClosedNodes10= ModuleClosedNodes10=
ModuleClosedNodes11= ModuleClosedNodes11=3
ModuleClosedNodes12= ModuleClosedNodes12=
ModuleClosedNodes13=4,5 ModuleClosedNodes13=
ModuleClosedNodes14=11 ModuleClosedNodes14=
ModuleClosedNodes15= ModuleClosedNodes15=
ModuleClosedNodes16= ModuleClosedNodes16=
ModuleClosedNodes17= ModuleClosedNodes17=
ModuleClosedNodes18= ModuleClosedNodes18=
ModuleClosedNodes19= ModuleClosedNodes19=
ModuleClosedNodes2=6 ModuleClosedNodes2=
ModuleClosedNodes20= ModuleClosedNodes20=
ModuleClosedNodes21= ModuleClosedNodes21=
ModuleClosedNodes22= ModuleClosedNodes22=
@@ -85,12 +85,12 @@ ModuleClosedNodes28=
ModuleClosedNodes29= ModuleClosedNodes29=
ModuleClosedNodes3= ModuleClosedNodes3=
ModuleClosedNodes30= ModuleClosedNodes30=
ModuleClosedNodes4=4 ModuleClosedNodes4=
ModuleClosedNodes5=3 ModuleClosedNodes5=3
ModuleClosedNodes6= ModuleClosedNodes6=
ModuleClosedNodes7= ModuleClosedNodes7=
ModuleClosedNodes8= ModuleClosedNodes8=
ModuleClosedNodes9= ModuleClosedNodes9=
NavigationStack=C_Productos,Busca_TextChanged,1143,6,C_Principal,checaPedido,2723,0,C_Principal,Class_Globals,217,0,C_Principal,B4XPage_Appear,440,0,C_Principal,b_productos_Click,2774,0,Diseñador Visual,principal.bal,-100,6,C_Principal,b_regreso_Click,2777,0,C_Principal,p_prod_Click,2781,0,C_Productos,clv_prods_ll_VisibleRangeChanged,1112,0,C_Principal,JobDone,1477,0,C_Principal,cargar_Click,910,0 NavigationStack=C_Principal,JobDone,1499,0,C_Principal,cargar_Click,967,0,C_NuevoCliente,p_transparenteCN_Click,588,0,C_NuevoCliente,et_cp_TextChanged,569,0,C_NuevoCliente,b_clienteNuevo_Click,582,6,Diseñador Visual,nuevocliente.bal,-100,6,C_NuevoCliente,B4XPage_Created,168,0,C_NuevoCliente,Initialize,166,0,C_NuevoCliente,Class_Globals,115,4,C_NuevoCliente,B4XPage_Appear,234,6
SelectedBuild=0 SelectedBuild=0
VisibleModules=28,2,13,20,14,29,17,15,9,4 VisibleModules=28,2,13,20,14,29,15,9,4,11

View File

@@ -65,6 +65,20 @@ Sub decompress(base64 As String) As String 'ignore
Return uncompressed Return uncompressed
End Sub End Sub
'Regresa la ruta actual de la base de datos.
Sub traeRuta2 (cliente As String) As String 'ignore
Private c As Cursor
Private r As String
c=B4XPages.MainPage.skmt.ExecQuery($"select CAT_CL_RUTA from kmt_info where CAT_CL_CODIGO = '${cliente}' UNION ALL select CAT_CL_RUTA from kmt_info2 where CAT_CL_CODIGO = '${cliente}'"$)
r = "0"
If c.RowCount > 0 Then
c.Position=0
r = c.GetString("CAT_CL_RUTA")
End If
c.Close
Return r
End Sub
'Convierte una fecha al formato yyMMddHHmmss 'Convierte una fecha al formato yyMMddHHmmss
Sub fechaKMT(fecha As String) As String 'ignore Sub fechaKMT(fecha As String) As String 'ignore
' Log(fecha) ' Log(fecha)

View File

@@ -4,6 +4,300 @@ ModulesStructureVersion=1
Type=Service Type=Service
Version=10.2 Version=10.2
@EndOfDesignText@ @EndOfDesignText@
'#Region Service Attributes
' #StartAtBoot: True
'#End Region
''******************************************************************************
''No olvidar agregar esta linea al editor de manifiesto:
'' SetServiceAttribute(Tracker, android:foregroundServiceType, "location")
''
''En Starter agregar estas lineas en Process_Globals
'' Public rp As RuntimePermissions
'' Public FLP As FusedLocationProvider
'' Private flpStarted As Boolean
''
''En Main agregar estas lineas a Activity_Resume
'' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_ACCESS_FINE_LOCATION)
'' Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
'' If Result Then
'' StartService(Tracker)
'' Log("Start Tracker")
'' Else
'' ToastMessageShow("No permission", True)
'' End If
''
''Se necesitan las librerias FusedLocationProvider, GPS, Phone y RunTimePermissions
''
''Y en Main agregar estas dos lineas:
''#AdditionalJar: com.android.support:support-v4
''#AdditionalJar: com.google.android.gms:play-services-location
'
'
'Sub Process_Globals
' Private nid As Int = 51042
' Private Tracking As Boolean
' Private lock As PhoneWakeState
' 'Para FusedLocationProvider (2 lineas)
' Public FLP As FusedLocationProvider
' Dim actualLR As LocationRequest
' Private flpStarted As Boolean
'' Dim locRequest As String
' Dim UUGCoords As Location 'Ultima Ubicacion Guardada
'End Sub
'
'Sub Service_Create
' Service.AutomaticForegroundMode = Service.AUTOMATIC_FOREGROUND_NEVER 'we are handling it ourselves
' 'Para FusedLocationProvider (2 lineas)
' FLP.Initialize("flp")
' FLP.Connect
' lock.PartialLock
' StartFLP
'End Sub
'
'Sub flp_ConnectionSuccess
'' Log("Connected to location provider")
' 'FLP.GetLastKnownLocation
'End Sub
'
'Sub flp_ConnectionFailed(ConnectionResult1 As Int)
' Log("Failed to connect to location provider")
'End Sub
'
'Sub Service_Start (StartingIntent As Intent)
' 'Para FusedLocationProvider (1 linea)
' Service.StopAutomaticForeground
' Service.StartForeground(nid, CreateNotification("..."))
' Track
' StartServiceAt(Me, DateTime.Now + 5 * DateTime.TicksPerMinute, True)
' FLP.GetLastKnownLocation.Initialize
'End Sub
'
'Public Sub Track
'' Log("Inicia Track - Tracking : "&Tracking)
' If Not(FLP.IsInitialized) Then FLP.Initialize("flp")
' If Not(FLP.IsConnected) Then FLP.Connect
' If Tracking And actualLR.IsInitialized Then
'' Log(actualLR.GetSmallestDisplacement)
' Return 'Si ya estamos "rastreando" no hacemos nada (return)
' End If
' If Starter.rp.Check(Starter.rp.PERMISSION_ACCESS_FINE_LOCATION) = False Then
' Log("No permission")
' Return
' End If
' StartFLP 'Iniciamos FusedLocationProvider
' Tracking = True
'End Sub
'
'Public Sub StartFLP
'' Log("StartFLP - flpStarted="&flpStarted)
' Do While FLP.IsConnected = False
' Sleep(500)
'' Log("sleeping")
' Loop
'' If flpStarted = False Then
'' Log("RequestLocationUpdates")
' FLP.RequestLocationUpdates(CreateLocationRequest) 'Buscamos ubicacion
'' Log("Buscamos ubicacion")
'' Log(actualLR.GetSmallestDisplacement)
' flpStarted = True
'' End If
'End Sub
'
'Public Sub StartFLPSmall
'' Log("StartFLPSmall - flpStarted="&flpStarted)
' Do While FLP.IsConnected = False
' Sleep(500)
' Log("sleeping")
' Loop
' dameUltimaUbicacionConocida 'Regresamos ultima ubicacion conocida
' FLP.RequestLocationUpdates(CreateLocationRequestSmallD) 'Buscamos ubicacion 2 peticiones
'' Log("Buscamos ubicacion Small displacement")
'' Log("GPSSmallestDisplacement = " & actualLR.GetSmallestDisplacement)
'End Sub
'
'Private Sub CreateLocationRequest As LocationRequest
'' Log("CreateLocationRequest")
' Dim lr As LocationRequest
' lr.Initialize
' lr.SetInterval(10000) 'Intervalo deseado para actualizaciones de ubicacion
' lr.SetFastestInterval(lr.GetInterval / 2) 'Intervalo minimo para actualizaciones de ubicacion
' lr.SetSmallestDisplacement(50) 'Solo registra cambio de ubicacion si es mayor a XX mts
' lr.SetPriority(lr.Priority.PRIORITY_HIGH_ACCURACY)
' actualLR=lr
' Return lr
'End Sub
'
'Private Sub CreateLocationRequestSmallD As LocationRequest
'' Log("Iniciamos CreateLocationRequestSmallD")
' Dim lr As LocationRequest
' lr.Initialize
' lr.SetInterval(2000) 'Intervalo deseado para actualizaciones de ubicacion
' lr.SetFastestInterval(lr.GetInterval / 2) 'Intervalo minimo para actualizaciones de ubicacion
' lr.setNumUpdates(2) 'Solicitamos solo 2 actualizaciones con estos parametros
' lr.SetSmallestDisplacement(1) 'Solo registra cambio de ubicacion si es mayor a XX mts
' lr.SetPriority(lr.Priority.PRIORITY_HIGH_ACCURACY)
' actualLR=lr
' Return lr
'End Sub
'
'Sub dameUltimaUbicacionConocida
' If FLP.GetLastKnownLocation.IsInitialized Then 'Mandamos ultima ubicacion guardada
'' If Main.logger Then Log("Mandamos UUC : "&formatoFecha(FLP.GetLastKnownLocation.Time))
' If Starter.Logger Then LogColor($"Mandamos UUC "${Subs.fechaKMT(FLP.GetLastKnownLocation.Time)}|Acc:$0.2{FLP.GetLastKnownLocation.Accuracy}|$0.8{FLP.GetLastKnownLocation.Latitude}|$0.8{FLP.GetLastKnownLocation.Longitude}|Spd:$0.2{FLP.GetLastKnownLocation.Speed}|"$, Colors.RGB(255,112,35))
' Dim coords As String = FLP.GetLastKnownLocation.Latitude&","&FLP.GetLastKnownLocation.Longitude&","&formatoFecha(FLP.GetLastKnownLocation.Time)
'' CallSubDelayed2(FirebaseMessaging,"mandamosLoc",coords)
'' Subs.mandamosLoc(coords)
' End If
'End Sub
'
'Public Sub StopFLP
' 'Log("StopFLP")
' If flpStarted Then
' FLP.RemoveLocationUpdates 'Eliminamos todas las solicitudes de ubicacion
' flpStarted = False
' End If
'End Sub
'
'Sub flp_LocationChanged (Location1 As Location)
'' ToastMessageShow("Loc changed", False)
'' Log($"Loc changed:${Location1.Longitude},${Location1.Latitude}"$)
' B4XPages.MainPage.lat_gps = Location1.Latitude
' B4XPages.MainPage.lon_gps = Location1.Longitude
' UUGCoords = Location1
'' Log("SmallestDisplacement="&actualLR.GetSmallestDisplacement)
'' If DateTime.Now > LastUpdateTime + 10 * DateTime.TicksPerSecond Then
'' Dim n As Notification = CreateNotification($"$2.5{Location1.Latitude} / $2.5{Location1.Longitude}"$)
'' n.Notify(nid)
'' LastUpdateTime = DateTime.Now
'' End If
' '/////// para la ultima localización FL
' Dim sDate,sTime As String
' DateTime.DateFormat = "MM/dd/yyyy"
' sDate=DateTime.Date(DateTime.Now)
' sTime=DateTime.Time(DateTime.Now)
' If Not(B4XPages.MainPage.skmt.IsInitialized) Then B4XPages.MainPage.skmt.Initialize(Starter.ruta,"kmt.db", True)
' Try
' 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))
' B4XPages.MainPage.skmt.ExecNonQuery("DELETE FROM HIST_GPS")
' Catch
' LogColor(LastException, Colors.Red)
' End Try
' '///////
' Dim coords As String = Location1.Latitude&","&Location1.Longitude&","&formatoFecha(Location1.Time)
'' Log("Loc changed : "&Location1.Latitude&","&Location1.Longitude&"|"&B4XPages.MainPage.usuario&"|")
'' Log("Mandamos Ubicacion")
'' Log(FirebaseMessaging.locRequest)
' ' Solo mandamos la ubicacion si la precision es menor a XX mts
' If Location1.Accuracy < 100 Then
'' CallSubDelayed2(FirebaseMessaging,"mandamosLoc",coords)
' End If
'
' CallSub2(Starter, "GPS_LocationChanged", Location1)
'' CallSub2(gestion, "GPS_LocationChanged", Location1)
'' CallSub2(B4XPages.GetPage("Cliente"), "GPS_LocationChanged", Location1)
'' CallSub2(nuevocliente, "GPS_LocationChanged", Location1)
'End Sub
'
'Sub CreateNotification (Body As String) As Notification
' Dim notification As Notification
' notification.Initialize2(notification.IMPORTANCE_LOW)
' notification.Icon = "icon"
' notification.SetInfo("INTMEX", Body, Main)
' Return notification
'End Sub
'
'Sub Service_Destroy
' If Tracking Then
' StopFLP
' End If
' Tracking = False
' lock.ReleasePartialLock
'End Sub
'
'Sub formatoFecha(fecha As String) As String 'Convierte una fecha al formato yyMMddHHmmss
'' Log(fecha)
' Dim OrigFormat As String = DateTime.DateFormat 'save orig date format
' DateTime.DateFormat="yyMMddHHmmss"
' Dim lastUpdate As String=DateTime.Date(fecha)
' DateTime.DateFormat=OrigFormat 'return to orig date format
'' Log(lastUpdate)
' Return lastUpdate
'End Sub
'
''Revisamos que el FLP (FusedLocationProvider) este inicializado y activo
'Sub revisaFLP 'ignore
' LogColor("**** **** Revisamos FLP **** ****", Colors.RGB(78,0,227))
' Private todoBienFLP As Boolean = True
' Try
' If Not(FLP.IsInitialized) Then
' Subs.log2DB("revisaFLP: No esta inicializado ... 'Reinicializando FLP'")
' FLP.Initialize("flp")
' todoBienFLP = False
' End If
' Catch
' LogColor("If Not(Tracker.FLP.IsInitialized) --> "&LastException, Colors.Red)
' End Try
' Try
' If FLP.IsInitialized Then
' Try
' If Not(FLP.IsConnected) Then
' Subs.log2DB("revisaFLP: No esta conectado ... 'Reconectando FLP'")
' ' Tracker.FLP.Connect
' StartFLP
' todoBienFLP = False
' End If
' Catch
' LogColor("If Not(Tracker.FLP.IsConnected) --> "&LastException, Colors.Red)
' End Try
' Try
' If FLP.IsConnected And _
' FLP.GetLastKnownLocation.IsInitialized And _
' FLP.GetLastKnownLocation.DistanceTo(UUGCoords) > 500 Then
' Subs.log2DB("revisaFLP: 'No se esta actualizando, lo reiniciamos ...'")
' StartService(Me)
' todoBienFLP = False
' End If
' Catch
' LogColor("If FLP.IsConnectctd and FLP.getLKL.IsInitialized --> "&LastException, Colors.Red)
' End Try
' End If
' If todoBienFLP Then LogColor(" +++ +++ Sin errores en FLP", Colors.Green)
' Catch
' LogColor("If Tracker.FLP.IsInitialized --> "&LastException, Colors.Red)
' End Try
' ' revisar hora de lastKnownlocation y si es mayor de 10 minutos llamar StartFLP
'End Sub
'
''Compara la UUG (Ultima Ubicacion Guardada) con FLP.LastKnowLocation y si
''cumple con los requisitos de distancia y precision la guardamos en la BD.
'Sub revisaUUG 'ignore
' Try
'' revisaFLP
' If FLP.IsInitialized And FLP.IsConnected Then
' Try
' If FLP.GetLastKnownLocation.IsInitialized Then
'' Dim x As Location = FLP.GetLastKnownLocation
' Dim daa As Int = UUGCoords.DistanceTo(FLP.GetLastKnownLocation) 'Distancia de la UUG a la actual de Tracker.FLP.GetLastKnownLocation
' If Starter.Logger Then LogColor($"**** UUC "${Subs.fechaKMT(FLP.GetLastKnownLocation.Time)}|$0.2{FLP.GetLastKnownLocation.Accuracy}|$0.8{FLP.GetLastKnownLocation.Latitude}|$0.8{FLP.GetLastKnownLocation.Longitude}|$0.2{FLP.GetLastKnownLocation.Speed}|"$, Colors.RGB(255,112,35))
' If daa > 40 And FLP.GetLastKnownLocation.Accuracy < 35 Then 'Si la distancia de la ubicacion anterior es mayor de XX y la precision es menor de XX, la guardamos ...
' B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO RUTA_GPS(fecha, lat, lon) VALUES (?,?,?)", Array As Object (Subs.fechaKMT(FLP.GetLastKnownLocation.Time),FLP.GetLastKnownLocation.Latitude,FLP.GetLastKnownLocation.Longitude))
' If Starter.Logger Then Log("++++ Distancia a anterior="&daa&"|"&"Precision="&FLP.GetLastKnownLocation.Accuracy)
' End If
' UUGCoords = FLP.GetLastKnownLocation
' End If
' Catch
' LogColor("FLP.GetLastKnownLocation.IsInitialized --> "&LastException, Colors.Red)
' End Try
' Else
' Log("StartFLP")
' StartFLP
' End If
' Catch
' LogColor("If FLP.IsInitialized --> "&LastException, Colors.Red)
' End Try
'End Sub
#Region Service Attributes #Region Service Attributes
#StartAtBoot: True #StartAtBoot: True
#End Region #End Region
@@ -202,7 +496,7 @@ Sub CreateNotification (Body As String) As Notification
Dim notification As Notification Dim notification As Notification
notification.Initialize2(notification.IMPORTANCE_LOW) notification.Initialize2(notification.IMPORTANCE_LOW)
notification.Icon = "icon" notification.Icon = "icon"
notification.SetInfo("INTMEX", Body, Main) notification.SetInfo("IZCA", Body, Main)
Return notification Return notification
End Sub End Sub