13 Commits

Author SHA1 Message Date
fbb76fed9b VERSION 6.03.03
- Se amplio el tamaño del listview en el historico y se agrego el numbre del vendedor.
2026-03-02 12:18:18 -06:00
5426e434ca VERSION 6.02.21
- Se agrego que cuando hagan clic en el nombre del cliente se actualicen automaticamente las coordenadas en web.
2026-02-26 16:13:15 -06:00
57ac2ff737 VERSION 6.02.20 GPS
- Se modifico el script para generar automaticamente los tags.
2026-02-25 22:39:30 -06:00
004199111e VERSION 6.02.20 GPS 2026-02-25 22:30:15 -06:00
a2d5315d02 VERSION 5.12.15_GPS 2026-02-25 22:25:50 -06:00
86d54dff58 VERSION 5.12.15 GPS 2026-02-25 22:25:05 -06:00
b4457da9cc - Se agrega en B4XMainPage el comando para un PULL Forzado.
- Se agrega el script _sync_project.ps1 para el pull forzado.
2026-02-25 22:03:18 -06:00
Javier
622efa501c VERSION 5.12.15 GPS, se agrega que en el btn_ubicar tambien elimine las marcas que no llega 2026-01-30 14:07:14 -06:00
5dd5814658 VERSION 5.12.11 GPS
- Se agrego GPS a la version
- Se agtego etiqueta con la verison en Cliente
2026-01-02 18:41:00 -06:00
5f23ece03f VERSION 5.12.11
- Se agrego coddigo para habilitar la geocerca, se descarga la bandera desde cat_rutas y se guarda en cat_variables (GEOCERCA)
2025-12-30 13:50:47 -06:00
Javier
be8647261e v5.12.10
Se cambia querie para clientes espejo
Que no se borren las promos
2025-12-30 10:32:58 -06:00
e40988de1c - VERSION 5.12.3
-Se agregaron las marcas por usuario.
2025-12-04 16:38:44 -06:00
0a4483d93c - VERSION 5.11.26
- Se corrigió que cuando se descargue el dato de clientes nuevos no se dulplique el registro.
2025-11-28 17:36:54 -06:00
17 changed files with 599 additions and 464 deletions

View File

@@ -12,16 +12,20 @@ Version=9.85
'###################### PULL ############################################################# '###################### PULL #############################################################
'Ctrl + click ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=git&Args=pull 'Ctrl + click ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=git&Args=pull
'########################################################################################################### '###########################################################################################################
'###################### PULL FORZADO #############################################################
'Ctrl + click Respaldar y Pull: ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=start&Args=powershell.exe&Args=-ExecutionPolicy&Args=Bypass&Args=-File&Args=..\..\_sync_project.ps1
'###########################################################################################################
'###################### PUSH ############################################################# '###################### PUSH #############################################################
'Ctrl + click ide://run?file=%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe&Args=github&Args=..\..\ 'Ctrl + click ide://run?file=%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe&Args=github&Args=..\..\
'########################################################################################################### '###########################################################################################################
'###################### PUSH TORTOISE GIT ######################################################### '###################### PUSH TORTOISE GIT #########################################################
'Ctrl + click ide://run?file=%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe&Args=TortoiseGitProc&Args=/command:commit&Args=/path:"./../../"&Args=/closeonend:2 'Ctrl + click ide://run?file=%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe&Args=TortoiseGitProc&Args=/command:commit&Args=/path:"./../../"&Args=/closeonend:2
'########################################################################################################### '###########################################################################################################
'###################### PUSH TORTOISE GIT CON TAG ##################################################
'Ctrl + clic para Git: ide://run?file=%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe&Args=-ExecutionPolicy&Args=Bypass&Args=-File&Args=..\_git_tag.ps1&Args=%22%PROJECT%%22&Args=%22%PROJECT_NAME%%22
'###########################################################################################################
#End Region #End Region
'Ctrl + click ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=github&Args=..\..\
Sub Class_Globals Sub Class_Globals
Private Root As B4XView Private Root As B4XView
Private xui As XUI Private xui As XUI
@@ -197,6 +201,10 @@ Private Sub B4XPage_Created (Root1 As B4XView)
Subs.agregaColumna("CAT_GUNAPROD", "CAT_GP_PRECIO10", "TEXT DEFAULT '0'") Subs.agregaColumna("CAT_GUNAPROD", "CAT_GP_PRECIO10", "TEXT DEFAULT '0'")
Subs.agregaColumna("PEDIDO_CLIENTE", "PC_GUARDADO", "TEXT DEFAULT '0'") Subs.agregaColumna("PEDIDO_CLIENTE", "PC_GUARDADO", "TEXT DEFAULT '0'")
Subs.agregaColumna("CAT_GUNAPROD2", "CAT_GP_VARREQ3", "TEXT DEFAULT '0'") Subs.agregaColumna("CAT_GUNAPROD2", "CAT_GP_VARREQ3", "TEXT DEFAULT '0'")
Subs.agregaColumna("HIST_VENTAS", "HVD_USUARIO", "TEXT")
Subs.agregaColumna("CAT_GUNAPROD2", "MARCA", "TEXT")
Subs.agregaColumna("CAT_GUNAPROD", "MARCA", "TEXT")
c=skmt.ExecQuery("select COUNT(*) AS CUANTOS from HIST_STAY_OUT ") c=skmt.ExecQuery("select COUNT(*) AS CUANTOS from HIST_STAY_OUT ")
C.Position = 0 C.Position = 0

View File

@@ -15,7 +15,6 @@ Sub Class_Globals
Dim reqManager As DBRequestManager Dim reqManager As DBRequestManager
Dim cmd As DBCommand Dim cmd As DBCommand
Dim ime As IME Dim ime As IME
Dim g As GPS Dim g As GPS
Dim ruta As String Dim ruta As String
Dim skmt As SQL Dim skmt As SQL
@@ -34,8 +33,6 @@ Sub Class_Globals
Dim BLANCO As String Dim BLANCO As String
Dim cuenta As String Dim cuenta As String
Dim tipo_venta As String = "PREVENTA" Dim tipo_venta As String = "PREVENTA"
Dim c As Cursor Dim c As Cursor
Dim s As Cursor Dim s As Cursor
Dim DD As Cursor Dim DD As Cursor
@@ -54,13 +51,10 @@ Sub Class_Globals
Dim gest As Button Dim gest As Button
Dim la_saldotot As Label Dim la_saldotot As Label
Dim la_saldooper As Label Dim la_saldooper As Label
Dim Tels As Button Dim Tels As Button
Dim Label10 As Label Dim Label10 As Label
Dim Label11 As Label Dim Label11 As Label
Dim Tar As Button Dim Tar As Button
Dim la_comm As Label Dim la_comm As Label
Dim la_actdte As Label Dim la_actdte As Label
Dim la_usuario As Label Dim la_usuario As Label
@@ -72,8 +66,7 @@ Sub Class_Globals
Dim DATOS As Button Dim DATOS As Button
Dim Guardar As Button Dim Guardar As Button
Dim NUEVO As Button Dim NUEVO As Button
' Dim lat_gps, lon_gps As String ' Dim lat_gps, lon_gps As String
Dim l_total As Label Dim l_total As Label
Dim c2 As Cursor Dim c2 As Cursor
Dim S2 As Cursor Dim S2 As Cursor
@@ -88,7 +81,6 @@ Sub Class_Globals
Private BT_QR As Button Private BT_QR As Button
'Private qr As QRCode 'Private qr As QRCode
Dim CODIGO As String Dim CODIGO As String
Private b_mapa As Button Private b_mapa As Button
Dim CUANTOS As String Dim CUANTOS As String
Private B_IMP As Button Private B_IMP As Button
@@ -110,22 +102,18 @@ Sub Class_Globals
Private HR_RES3 As String Private HR_RES3 As String
Private EXISTE As String Private EXISTE As String
Private TELEFONO As String Private TELEFONO As String
Private RB1 As RadioButton Private RB1 As RadioButton
Private RB2 As RadioButton Private RB2 As RadioButton
Private RB3 As RadioButton Private RB3 As RadioButton
Private RB4 As RadioButton Private RB4 As RadioButton
Private RB5 As RadioButton Private RB5 As RadioButton
Private stay_hh As String Private stay_hh As String
Private stay_mi As String Private stay_mi As String
Private stay_ss As String Private stay_ss As String
Private LA_GEO As Label Private LA_GEO As Label
Dim result As Int Dim result As Int
Private cercavalor As String Private cercavalor As String
Private LA_RUTA As String Private LA_RUTA As String
Private b_like As Button Private b_like As Button
Private B_GPS As Button Private B_GPS As Button
' Dim sc As JhsIceZxing1 ' Dim sc As JhsIceZxing1
@@ -152,7 +140,6 @@ Sub Class_Globals
Dim cuest As C_Cuestionario Dim cuest As C_Cuestionario
Private b_ventaabordo As Button Private b_ventaabordo As Button
Private l_factura As Label Private l_factura As Label
Dim Printer1 As EscPosPrinter Dim Printer1 As EscPosPrinter
Dim impresoraConectada As Boolean = False Dim impresoraConectada As Boolean = False
Dim MAC_IMPRESORA As String Dim MAC_IMPRESORA As String
@@ -168,6 +155,7 @@ Sub Class_Globals
Private et_telefono As EditText Private et_telefono As EditText
Private b_canceltelefono As Button Private b_canceltelefono As Button
Private b_aceptelefono As Button Private b_aceptelefono As Button
Private l_version As Label
End Sub End Sub
'You can add more parameters here. 'You can add more parameters here.
@@ -197,7 +185,7 @@ Private Sub B4XPage_Created (Root1 As B4XView)
Else Else
b_cxc.Visible = True b_cxc.Visible = True
End If End If
p_telefono.Top = 0 : p_telefono.Left = 0
s.Position=0 s.Position=0
If c.RowCount>0 Then If c.RowCount>0 Then
c.Position=0 c.Position=0
@@ -247,11 +235,14 @@ Private Sub B4XPage_Created (Root1 As B4XView)
b_cerrar.Left = (p_pedidoExistente.Width / 2) - (b_cerrar.Width / 2) b_cerrar.Left = (p_pedidoExistente.Width / 2) - (b_cerrar.Width / 2)
Subs.centraPanel(p_pedidoExistente, Root.Width) Subs.centraPanel(p_pedidoExistente, Root.Width)
Subs.centraEtiqueta(l_pedidoExistente, Root.Width) Subs.centraEtiqueta(l_pedidoExistente, Root.Width)
l_version.Text = Application.VersionName
l_version.Left = Root.Width - l_version.Width - 5dip
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
CallSubDelayed(Tracker, "StartFLPSmall")
p_pedidoExistente.Visible = False p_pedidoExistente.Visible = False
reqManager.Initialize(Me, Starter.DBReqServer) reqManager.Initialize(Me, Starter.DBReqServer)
b_pedidoExistente.Visible = False b_pedidoExistente.Visible = False
@@ -267,7 +258,7 @@ Sub B4XPage_Appear
p_abono.Visible = False p_abono.Visible = False
Subs.centraPanel(p_abono, Root.Width) Subs.centraPanel(p_abono, Root.Width)
skmt.Initialize(ruta,"kmt.db", True) skmt.Initialize(ruta,"kmt.db", True)
c=B4XPages.MainPage.skmt.ExecQuery("select 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 from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa) UNION ALL select 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 from kmt_info2 where CAT_CL_CODIGO In (Select cuenta from cuentaa)") c=B4XPages.MainPage.skmt.ExecQuery("select 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 from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa) UNION ALL select 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 from kmt_info2 where CAT_CL_CODIGO In (Select cuenta from cuentaa)")
s=B4XPages.MainPage.skmt.ExecQuery("Select ifnull(SUM(PE_COSTO_TOT), 0) As TOTAL_CLIE, SUM(PE_CANT) As CANT_CLIE, PC_FACTURA FROM PEDIDO_CLIENTE INNER JOIN PEDIDO ON PEDIDO_CLIENTE.PC_CLIENTE = PEDIDO.PE_CLIENTE WHERE (PE_CLIENTE IN (Select cuenta from cuentaa))") s=B4XPages.MainPage.skmt.ExecQuery("Select ifnull(SUM(PE_COSTO_TOT), 0) As TOTAL_CLIE, SUM(PE_CANT) As CANT_CLIE, PC_FACTURA FROM PEDIDO_CLIENTE INNER JOIN PEDIDO ON PEDIDO_CLIENTE.PC_CLIENTE = PEDIDO.PE_CLIENTE WHERE (PE_CLIENTE IN (Select cuenta from cuentaa))")
b = B4XPages.MainPage.skmt.ExecQuery("select COUNT(*) AS CLIENTE FROM ABONOSP WHERE CLIENTE IN (Select CUENTA from cuentaa)") b = B4XPages.MainPage.skmt.ExecQuery("select COUNT(*) AS CLIENTE FROM ABONOSP WHERE CLIENTE IN (Select CUENTA from cuentaa)")
b.Position = 0 b.Position = 0
@@ -304,16 +295,16 @@ Sub B4XPage_Appear
If m_lon.Length < 5 Then m_lon = "0" If m_lon.Length < 5 Then m_lon = "0"
LA_RUTA = c.GetString("CAT_CL_RUTA") LA_RUTA = c.GetString("CAT_CL_RUTA")
' ESTO ES PARA FORZAR A PEDIR LA FOTO Y EL GPS ' ESTO ES PARA FORZAR A PEDIR LA FOTO Y EL GPS
If c.GetString("CAT_CL_NUM_SERIEFISICO") = "0" Then ' If c.GetString("CAT_CL_NUM_SERIEFISICO") = "0" Then
L_QR.TEXT = "SIN CODIGO" ' L_QR.TEXT = "SIN CODIGO"
L_QR.TextColor = Colors.Red ' L_QR.TextColor = Colors.Red
gest.VISIBLE = False ' gest.VISIBLE = False
BT_QR.Visible = True ' BT_QR.Visible = True
Else ' Else
L_QR.TEXT = c.GetString("CAT_CL_NUM_SERIEFISICO") ' L_QR.TEXT = c.GetString("CAT_CL_NUM_SERIEFISICO")
L_QR.TextColor = Colors.Blue ' L_QR.TextColor = Colors.Blue
BT_QR.Visible = False ' BT_QR.Visible = False
End If ' End If
End If End If
c.Close c.Close
s.Close s.Close
@@ -346,9 +337,7 @@ Sub B4XPage_Appear
End If End If
c.Close c.Close
If ALMACEN = "1" Then If ALMACEN = "1" Then
Tels.Visible = False ocultamosBotonesPorGeocerca
gest.Visible = False
' B_GPS.Visible = False
End If End If
If ALMACEN = "4" Then If ALMACEN = "4" Then
' b_like.Visible = True ' b_like.Visible = True
@@ -370,21 +359,23 @@ Sub B4XPage_Appear
Else Else
' b_like.Visible = False ' b_like.Visible = False
End If End If
If ALMACEN = "16" Or ALMACEN = "13" Then If Not(Subs.geocercaActiva) And ALMACEN = "16" Or ALMACEN = "13" Then
Log("Mostramos botones venta")
Tels.Visible = True Tels.Visible = True
gest.Visible = True gest.Visible = True
b_ventaabordo.Visible = True
End If End If
CallSubDelayed(Tracker, "Track")
CallSubDelayed(Tracker, "StartFLPSmall") If Not(Subs.geocercaActiva) Then
If Tracker.FLP.IsInitialized And Tracker.FLP.GetLastKnownLocation.IsInitialized Then 'Si tenemos "UltimaUbicaccionConocida" la usamos. Log("Mostramos botones venta")
B4XPages.MainPage.lat_gps = Tracker.FLP.GetLastKnownLocation.Latitude Tels.Visible = True
B4XPages.MainPage.lon_gps = Tracker.FLP.GetLastKnownLocation.Longitude gest.Visible = True
' Log($"Tenemos UUC: ${Tracker.FLP.GetLastKnownLocation.Latitude},${Tracker.FLP.GetLastKnownLocation.Longitude}"$) b_ventaabordo.Visible = True
GPS_LocationChanged(Tracker.FLP.GetLastKnownLocation) Else
Log("Ocultamos botones venta")
ocultamosBotonesPorGeocerca
End If End If
Tels.Visible = True
gest.Visible = True
' h = B4XPages.MainPage.skmt.ExecQuery("SELECT CUENTA from CUENTAA") ' h = B4XPages.MainPage.skmt.ExecQuery("SELECT CUENTA from CUENTAA")
' h.Position = 0 ' h.Position = 0
' Log(h.GetString("CUENTA")) ' Log(h.GetString("CUENTA"))
@@ -399,33 +390,20 @@ Sub B4XPage_Appear
' h.Close ' h.Close
' j.Close ' j.Close
If la_cuenta.Text = "0" Then
p_cbFactura.Visible = False
l_factura.Visible = False
b_ventaabordo.Visible = False
Else
p_cbFactura.Visible = True
l_factura.Visible = True
b_ventaabordo.Visible = True
End If
c = skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("MACIMP")) c = skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("MACIMP"))
If c.RowCount > 0 Then If c.RowCount > 0 Then
c.Position = 0 c.Position = 0
Starter.MAC_IMPRESORA = c.GetString("CAT_VA_VALOR") Starter.MAC_IMPRESORA = c.GetString("CAT_VA_VALOR")
End If End If
If Starter.MAC_IMPRESORA = "" Then Starter.MAC_IMPRESORA = "0" If Starter.MAC_IMPRESORA = "" Then Starter.MAC_IMPRESORA = "0"
' Log("|" & Starter.MAC_IMPRESORA & "|")
Printer1.Initialize(Me, "Printer1") Printer1.Initialize(Me, "Printer1")
If Printer1.IsConnected = False Then If Printer1.IsConnected = False Then
' Printer1.Connect ' Printer1.Connect
' Log("1")
Else Else
Printer1.DisConnect Printer1.DisConnect
Printer1.Connect Printer1.Connect
Log("2")
End If End If
If Subs.hayPedido And Starter.utimaPagina <> "Productos" And Starter.utimaPagina <> "Cliente" Then If Subs.hayPedido And Starter.utimaPagina <> "Productos" And Starter.utimaPagina <> "Cliente" Then
' Log()
Private p As ResultSet = Starter.skmt.ExecQuery($"select * from pedido where pe_cliente = '${Subs.traeCliente}'"$) Private p As ResultSet = Starter.skmt.ExecQuery($"select * from pedido where pe_cliente = '${Subs.traeCliente}'"$)
lv_pedidoExistente.Clear lv_pedidoExistente.Clear
Private label1 As Label = lv_pedidoExistente.TwoLinesLayout.Label Private label1 As Label = lv_pedidoExistente.TwoLinesLayout.Label
@@ -433,7 +411,7 @@ Sub B4XPage_Appear
label1.TextSize = 13 label1.TextSize = 13
Private label2 As Label = lv_pedidoExistente.TwoLinesLayout.SecondLabel Private label2 As Label = lv_pedidoExistente.TwoLinesLayout.SecondLabel
label2.TextSize = 13 label2.TextSize = 13
Private cs As CSBuilder Private cs As CSBuilder
Do While p.NextRow Do While p.NextRow
cs.Initialize cs.Initialize
@@ -443,11 +421,31 @@ Sub B4XPage_Appear
End If End If
lv_pedidoExistente.AddTwoLines(cs.Color(textColor).append(p.GetString("PE_PRONOMBRE")).pop, $"Cant: ${p.GetString("PE_CANT")} - $${NumberFormat2(p.GetString("PE_COSTO_TOT"),1,2,2,True)}, ${p.GetString("PE_FOLIO")}"$) lv_pedidoExistente.AddTwoLines(cs.Color(textColor).append(p.GetString("PE_PRONOMBRE")).pop, $"Cant: ${p.GetString("PE_CANT")} - $${NumberFormat2(p.GetString("PE_COSTO_TOT"),1,2,2,True)}, ${p.GetString("PE_FOLIO")}"$)
Loop Loop
p_pedidoExistente.Visible = True p_pedidoExistente.Visible = True
p_pedidoExistente.BringToFront p_pedidoExistente.BringToFront
b_pedidoExistente.Visible = True b_pedidoExistente.Visible = True
End If End If
If la_cuenta.Text = "0" Then
p_cbFactura.Visible = False
l_factura.Visible = False
b_ventaabordo.Visible = False
Else
p_cbFactura.Visible = True
l_factura.Visible = True
b_ventaabordo.Visible = True
End If
'Revisamos si la geocerca debe de activarse y de ser necesario, ocultamos los botones de venta y no venta.
If Subs.traeGeocerca Then ocultamosBotonesPorGeocerca
If Tracker.FLP.IsInitialized And Tracker.FLP.GetLastKnownLocation.IsInitialized Then 'Si tenemos "UltimaUbicaccionConocida" la usamos.
Log($"Tenemos UUC: ${Tracker.FLP.GetLastKnownLocation.Latitude},${Tracker.FLP.GetLastKnownLocation.Longitude}"$)
B4XPages.MainPage.lat_gps = Tracker.FLP.GetLastKnownLocation.Latitude
B4XPages.MainPage.lon_gps = Tracker.FLP.GetLastKnownLocation.Longitude
GPS_LocationChanged(Tracker.FLP.GetLastKnownLocation)
End If
End Sub End Sub
Sub B4XPage_disappear Sub B4XPage_disappear
@@ -456,32 +454,37 @@ Sub B4XPage_disappear
End Sub End Sub
Sub GPS_LocationChanged (Location1 As Location) Sub GPS_LocationChanged (Location1 As Location)
' LogColor($"Entrando a Cliente.GPS_LocationChanged"$, Colors.red) LogColor($"Entrando a Cliente.GPS_LocationChanged"$, Colors.red)
If Tracker.FLP.GetLastKnownLocation.IsInitialized And Tracker.FLP.GetLastKnownLocation.Latitude <> 0 Then If Tracker.FLP.GetLastKnownLocation.IsInitialized And Tracker.FLP.GetLastKnownLocation.Latitude <> 0 Then
B4XPages.MainPage.lat_gps = Tracker.FLP.GetLastKnownLocation.Latitude B4XPages.MainPage.lat_gps = Tracker.FLP.GetLastKnownLocation.Latitude
B4XPages.MainPage.lon_gps = Tracker.FLP.GetLastKnownLocation.Longitude B4XPages.MainPage.lon_gps = Tracker.FLP.GetLastKnownLocation.Longitude
' Log("Coords set to: " & B4XPages.MainPage.lat_gps & " and " & B4XPages.MainPage.lon_gps) ' Log("Coords set to: " & B4XPages.MainPage.lat_gps & " and " & B4XPages.MainPage.lon_gps)
End If End If
Dim l1, l2 As Location Dim l1, l2 As Location
l1.Initialize2(B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps) l1.Initialize2(B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps)
' Log($"Coordenadas de la tienda - lat:${m_lat}, lon:${m_lon}"$) ' Log($"Coordenadas de la tienda - lat:${m_lat}, lon:${m_lon}"$)
l2.Initialize2(m_lat, m_lon) l2.Initialize2(m_lat, m_lon)
BT_QR.Enabled = True BT_QR.Enabled = True
LA_GPS.TextColor = Colors.Blue LA_GPS.TextColor = Colors.Blue
LA_GPS.Text = "CON UBICACION GPS" LA_GPS.Text = "CON UBICACION GPS"
Log("CON UBICACION GPS")
' B_GPS.Enabled = True ' B_GPS.Enabled = True
'now we need the distance between our location and the target location 'now we need the distance between our location and the target location
distance = l1.DistanceTo(l2) 'the result is in meter distance = l1.DistanceTo(l2) 'the result is in meter
gest.Visible = True Log(distance)
' If distance < 100 Then Log((Subs.geocercaActiva And distance < 100))
Log(Not(Subs.geocercaActiva))
If (Subs.geocercaActiva And distance < 100) Or (Not(Subs.geocercaActiva)) Then
Log("Mostramos botones venta")
LA_GEO.TextColor = Colors.Blue LA_GEO.TextColor = Colors.Blue
Tels.Visible = True Tels.Visible = True
gest.Visible = True gest.Visible = True
' Else b_ventaabordo.Visible = True
Else
' LA_GEO.TextColor = Colors.Red ' LA_GEO.TextColor = Colors.Red
' End If End If
LA_GEO.Text= $"$1.2{distance/1000} kms"$ LA_GEO.Text= $"$1.2{distance/1000} kms"$
B4XPages.MainPage.skmt.ExecNonQuery("DELETE FROM HIST_GPS") 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)) 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))
@@ -510,7 +513,6 @@ Sub gest_Click
' Return False ' Return False
' End If ' End If
Private x As Cursor = B4XPages.MainPage.skmt.ExecQuery($"select tienda_id from COORDENADAS_GPS where tienda_id = '${la_cuenta.text}'"$) Private x As Cursor = B4XPages.MainPage.skmt.ExecQuery($"select tienda_id from COORDENADAS_GPS where tienda_id = '${la_cuenta.text}'"$)
' Log("+++++++++++++ " & x.RowCount)
If la_cuenta.Text<> "0" And distance > 50 And x.RowCount = 0 Then If la_cuenta.Text<> "0" And distance > 50 And x.RowCount = 0 Then
Private res As String = Msgbox2("¿Estas en la tienda, para guardar la nueva ubicación?", "AVISO", "Si","" ,"No", Null) 'ignore Private res As String = Msgbox2("¿Estas en la tienda, para guardar la nueva ubicación?", "AVISO", "Si","" ,"No", Null) 'ignore
If res = DialogResponse.POSITIVE Then If res = DialogResponse.POSITIVE Then
@@ -527,8 +529,6 @@ Sub gest_Click
reqManager.ExecuteCommand(cmd , "ins_coords_nuevas") reqManager.ExecuteCommand(cmd , "ins_coords_nuevas")
End If End If
End If End If
'Si hay mapa de productos es que hay venta en proceso, entonces borramos la actual para meter la nueva.
' If B4XPages.MainPage.productos.prodsMap.IsInitialized And B4XPages.MainPage.productos.prodsMap.Size > 0 Then Subs.borraPedidoClienteActual
B4XPages.ShowPage("productos") B4XPages.ShowPage("productos")
End Sub End Sub
@@ -539,7 +539,6 @@ End Sub
Private Sub B4XPage_CloseRequest As ResumableSub Private Sub B4XPage_CloseRequest As ResumableSub
' BACK key pressed ' BACK key pressed
' Return True To close, False To cancel ' Return True To close, False To cancel
' Log($"venimosDeTicketsDia=${venimosDeTicketsDia}"$)
If la_cuenta.Text <> "0" Then If la_cuenta.Text <> "0" Then
cuest.encuestaIniciada = False cuest.encuestaIniciada = False
cuest.ocultPanelPregunta cuest.ocultPanelPregunta
@@ -570,10 +569,6 @@ Sub Tar_Click
B4XPages.ShowPage("Nota") B4XPages.ShowPage("Nota")
End Sub End Sub
'Sub Tar_LongClick
' p_abono.Visible = True
'End Sub
Sub DATOS_Click Sub DATOS_Click
B4XPages.ShowPage("telefonos") B4XPages.ShowPage("telefonos")
End Sub End Sub
@@ -592,7 +587,6 @@ Sub Guardar_Click
c.Close c.Close
c=B4XPages.MainPage.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, COUNT(*) AS CUANTOS FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") c=B4XPages.MainPage.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, COUNT(*) AS CUANTOS FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
c.Position=0 c.Position=0
' Log("xxxxxxxxxxxxxxx " & c.GetString("CUANTOS"))
If c.GetString("CUANTOS") > 0 Then ' Si hay pedido, entonces ... If c.GetString("CUANTOS") > 0 Then ' Si hay pedido, entonces ...
Log("HAY PEDIDO") Log("HAY PEDIDO")
Private cbFactura As Int = 0 Private cbFactura As Int = 0
@@ -632,7 +626,7 @@ Sub Guardar_Click
' LogColor($"actualizamos "${la_cuenta.text}, hora_final=${DateTime.now}"$,Colors.Red) ' LogColor($"actualizamos "${la_cuenta.text}, hora_final=${DateTime.now}"$,Colors.Red)
Subs.actualizaTET(la_cuenta.text) Subs.actualizaTET(la_cuenta.text)
DateTime.TimeFormat = "HH:mm:ss" DateTime.TimeFormat = "HH:mm:ss"
mandaPendientes 'LO COMENTAMOS PARA PRUEBAS, ACTIVAR AL FINAL!!! solo envia clientes nuenos, no comentar lo que yo descomente --- javier (por que Guerra lo comento) mandaPendientes 'LO COMENTAMOS PARA PRUEBAS, ACTIVAR AL FINAL!!! - Solo envia clientes nuevos, no comentar lo que yo descomente --- javier (por que Guerra lo comento) ... ¿Que descomentaste?? --- Guerra
mandapiezas mandapiezas
B4XPages.MainPage.productos.reiniciarlistaProds = True B4XPages.MainPage.productos.reiniciarlistaProds = True
B4XPages.MainPage.productos.prodsMap.Initialize B4XPages.MainPage.productos.prodsMap.Initialize
@@ -1061,6 +1055,7 @@ Sub B_GUARDA_C_Click
Tar.Visible = True Tar.Visible = True
Tels.Visible = True Tels.Visible = True
gest.Visible = True gest.Visible = True
b_ventaabordo.Visible = True
' b_like.Visible = False ' b_like.Visible = False
Guardar.Visible = True Guardar.Visible = True
End Sub End Sub
@@ -1441,7 +1436,7 @@ Sub JobDone(Job As HttpJob)
B4XPages.MainPage.skmt.ExecNonQuery($"UPDATE ABONOS set a_enviado = 1 where a_cliente = '${cliente}'"$) B4XPages.MainPage.skmt.ExecNonQuery($"UPDATE ABONOS set a_enviado = 1 where a_cliente = '${cliente}'"$)
End If End If
End If End If
'CLIENTES NUEVOS 'CLIENTES NUEVOS
If Job.JobName = "DBRequest" Then If Job.JobName = "DBRequest" Then
Dim resultado As DBResult = reqManager.HandleJob(Job) Dim resultado As DBResult = reqManager.HandleJob(Job)
@@ -1458,6 +1453,14 @@ Sub JobDone(Job As HttpJob)
End If End If
End If End If
'Guarda coords nuevas
If Job.JobName = "DBRequest" Then
Dim resultado As DBResult = reqManager.HandleJob(Job)
If resultado.Tag = "insCoordsNuevas" Then
ToastMessageShow("Coordenadas actualizadas", False)
End If
End If
'CUESTIONARIO 'CUESTIONARIO
If Job.JobName = "DBRequest" Then If Job.JobName = "DBRequest" Then
Dim resultado As DBResult = reqManager.HandleJob(Job) Dim resultado As DBResult = reqManager.HandleJob(Job)
@@ -1743,4 +1746,34 @@ Private Sub Label16_LongClick
p_telefono.Height = Root.Height p_telefono.Height = Root.Height
p_telefono.Width = Root.Width p_telefono.Width = Root.Width
p_telefono.Visible = True p_telefono.Visible = True
End Sub
' Ocultamos por geocerca (Venta, Preventa y No venta)
Sub ocultamosBotonesPorGeocerca
gest.Visible = False
b_ventaabordo.Visible = False
Tels.Visible = False
End Sub
Private Sub la_nombre_Click
Log("Clicked")
If Not(Subs.geocercaActiva) Then
Log("Enviando coords")
DateTime.DateFormat = "MM/dd/yyyy"
sDate=DateTime.Date(DateTime.Now)
sTime=DateTime.Time(DateTime.Now)
B4XPages.MainPage.skmt.ExecNonQuery($"update kmt_info set cat_cl_lat = '${B4XPages.MainPage.lat_gps}', cat_cl_long = '${B4XPages.MainPage.lon_gps}' where cat_cl_codigo = '${la_cuenta.text}'"$)
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "insert_coordsNuevas_INTMEX"
cmd.Parameters = Array As Object(B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps, Subs.traeAlmacen, Subs.traeRuta, la_cuenta.text)
' cmd.Parameters = Array As Object("1", "1", "5", "6", "CLN13478")
Log($"${Subs.traeAlmacen}, ${Subs.traeRuta},${la_cuenta.text},${B4XPages.MainPage.lat_gps},${B4XPages.MainPage.lon_gps}"$)
reqManager.ExecuteCommand(cmd , "insCoordsNuevas")
ToastMessageShow("Coordenadas actualizadas", False)
B4XPage_Appear
Else
ToastMessageShow("Geocerca activada", False)
End If
End Sub End Sub

View File

@@ -55,6 +55,7 @@ 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
ListView1.Height = Root.Height * 0.8
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)
@@ -65,8 +66,9 @@ Sub B4XPage_Appear
C.Position=0 C.Position=0
Existe = C.GetString("EXISTE") Existe = C.GetString("EXISTE")
C.Close C.Close
c=B4XPages.MainPage.skmt.ExecQuery("select HVD_CLIENTE,HVD_PRONOMBRE,HVD_CANT,HVD_COSTO_TOT from HIST_VENTAS WHERE HVD_CLIENTE IN (Select CUENTA from cuentaa) order by HVD_PRONOMBRE asc") c=B4XPages.MainPage.skmt.ExecQuery("select HVD_CLIENTE,HVD_PRONOMBRE,HVD_CANT,HVD_COSTO_TOT,HVD_USUARIO from HIST_VENTAS WHERE HVD_CLIENTE IN (Select CUENTA from cuentaa) order by HVD_PRONOMBRE asc")
ListView1.Clear ListView1.Clear
ListView1.TwoLinesLayout.ItemHeight = 70dip
If c.RowCount>0 Then If c.RowCount>0 Then
For i=0 To c.RowCount -1 For i=0 To c.RowCount -1
c.Position=i c.Position=i
@@ -78,7 +80,7 @@ Sub B4XPage_Appear
label2 = ListView1.TwoLinesLayout.SecondLabel label2 = ListView1.TwoLinesLayout.SecondLabel
label2.TextSize = 10 label2.TextSize = 10
label2.TextColor = Colors.Blue label2.TextColor = Colors.Blue
ListView1.AddTwoLines(c.GetString("HVD_PRONOMBRE"),"Cantidad #"& c.GetString("HVD_CANT")& " SubTotal $"& c.GetString("HVD_COSTO_TOT")) ListView1.AddTwoLines(c.GetString("HVD_PRONOMBRE"),"Cantidad #"& c.GetString("HVD_CANT")& " SubTotal $"& c.GetString("HVD_COSTO_TOT") & CRLF & "Usuario: " & c.GetString("HVD_USUARIO"))
Next Next
End If End If
If Existe <> 0 Then If Existe <> 0 Then

View File

@@ -57,6 +57,7 @@ Private Sub B4XPage_Created (Root1 As B4XView)
' L_CANT.Text = c.GetString("PC_NOART") ' L_CANT.Text = c.GetString("PC_NOART")
' L_TOTAL.Text = c.GetString("PC_MONTO") ' L_TOTAL.Text = c.GetString("PC_MONTO")
' End If ' End If
p_nota.Height = Root.Height : p_nota.Width = Root.Width
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.

View File

@@ -162,6 +162,7 @@ Sub Class_Globals
Private p_transparenteCN As Panel Private p_transparenteCN As Panel
Private p_clientesNuevos As Panel Private p_clientesNuevos As Panel
Private b_clienteNuevo As Button Private b_clienteNuevo As Button
Private l_textoCN As Label
End Sub End Sub
'You can add more parameters here. 'You can add more parameters here.
@@ -260,14 +261,16 @@ Sub B4XPage_Appear
c.Close c.Close
Log($"Permitidos: ${permitidos}, Actuales: ${cuantosNuevos}"$) Log($"Permitidos: ${permitidos}, Actuales: ${cuantosNuevos}"$)
Log((permitidos > 0) & "|" & (permitidos > cuantosNuevos)) Log((permitidos > 0) & "|" & (permitidos > cuantosNuevos))
If permitidos <> 0 Then ' Si permitidos es CERO entonces SIN LIMITE de clientes nuevos. ' If permitidos <> 0 Then ' Si permitidos es CERO entonces SIN LIMITE de clientes nuevos.
l_textoCN.Text = "Llegó al límite de clientes nuevos, ya no es posible agregar mas clientes."
If permitidos = 0 Then l_textoCN.Text = "No tienes permitido dar de alta clientes nuevos."
If permitidos > cuantosNuevos Then If permitidos > cuantosNuevos Then
p_transparenteCN.Visible = False p_transparenteCN.Visible = False
Else Else
p_transparenteCN.BringToFront p_transparenteCN.BringToFront
p_transparenteCN.Visible = True p_transparenteCN.Visible = True
End If End If
End If ' End If
CallSubDelayed(Tracker, "Track") CallSubDelayed(Tracker, "Track")
CallSubDelayed(Tracker, "StartFLPSmall") CallSubDelayed(Tracker, "StartFLPSmall")

View File

@@ -871,7 +871,7 @@ Sub cargar_Click
Subs.panelVisible(P1, 0, 0) Subs.panelVisible(P1, 0, 0)
Subs.centraPanel(P1, Root.Width) Subs.centraPanel(P1, Root.Width)
Subs.centraPanelV(P1, Root.Height) Subs.centraPanelV(P1, Root.Height)
' trabajar.Visible = False ' trabajar.Visible = False
NUEVO.Visible =False NUEVO.Visible =False
BUSCA.Visible=False BUSCA.Visible=False
connecta.Visible=False connecta.Visible=False
@@ -936,7 +936,7 @@ Sub cargar_Click
sTime=DateTime.Time(DateTime.Now) sTime=DateTime.Time(DateTime.Now)
Dim P As PhoneId Dim P As PhoneId
' imei = P.GetDeviceId ' imei = P.GetDeviceId
imei = "xxxx" imei = "xxxx"
cmd.Initialize cmd.Initialize
cmd.Name ="insert_drop_INTMEX_3" cmd.Name ="insert_drop_INTMEX_3"
@@ -953,10 +953,10 @@ Sub cargar_Click
cmd.Parameters = Array As Object(ALMACEN,e_ruta.Text) cmd.Parameters = Array As Object(ALMACEN,e_ruta.Text)
reqManager.ExecuteQuery(cmd , 0, "gunaprod2") reqManager.ExecuteQuery(cmd , 0, "gunaprod2")
' cmd.Initialize ' cmd.Initialize
' cmd.Name = "select_resum_apk_INTMEX" ''' va el nombre de archivo de config ' cmd.Name = "select_resum_apk_INTMEX" ''' va el nombre de archivo de config
' cmd.Parameters = Array As Object(ALMACEN) ' cmd.Parameters = Array As Object(ALMACEN)
' reqManager.ExecuteQuery(cmd , 0, "resum_apk") ''' donde regresa la info ver job_done ' reqManager.ExecuteQuery(cmd , 0, "resum_apk") ''' donde regresa la info ver job_done
cmd.Initialize cmd.Initialize
cmd.Name = "select_cat_paquetes_INTMEX4" cmd.Name = "select_cat_paquetes_INTMEX4"
@@ -975,8 +975,9 @@ Sub cargar_Click
reqManager.ExecuteQuery(cmd , 0, "detallepaq") reqManager.ExecuteQuery(cmd , 0, "detallepaq")
cmd.Initialize cmd.Initialize
cmd.Name = "select_cat_clientes2_INTMEX" cmd.Name = "select_cat_clientes3_INTMEX"
cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) cmd.Parameters = Array As Object(e_ruta.text,e_ruta.text, ALMACEN,e_ruta.text,e_ruta.text)
Log("select_cat_clientes3_INTMEX: " & e_ruta.text & "|" & ALMACEN)
reqManager.ExecuteQuery(cmd , 0, "kmt_datos") reqManager.ExecuteQuery(cmd , 0, "kmt_datos")
cmd.Initialize cmd.Initialize
@@ -997,6 +998,7 @@ Sub cargar_Click
cmd.Initialize cmd.Initialize
cmd.Name = "select_hist_datos_INTMEX_2" cmd.Name = "select_hist_datos_INTMEX_2"
cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) cmd.Parameters = Array As Object(e_ruta.text, ALMACEN)
Log($"===> ${e_ruta.text}, ${ALMACEN}"$)
reqManager.ExecuteQuery(cmd , 0, "hist_datos") reqManager.ExecuteQuery(cmd , 0, "hist_datos")
cmd.Initialize cmd.Initialize
@@ -1025,41 +1027,43 @@ Sub cargar_Click
cmd.Name = "select_tipoRuta_Intmex" cmd.Name = "select_tipoRuta_Intmex"
cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) cmd.Parameters = Array As Object(e_ruta.text, ALMACEN)
reqManager.ExecuteQuery(cmd , 0, "tipoRuta") reqManager.ExecuteQuery(cmd , 0, "tipoRuta")
' cmd.Initialize ' cmd.Initialize
' cmd.Name = "select_HIST_MARCAS_CUOTAS_INTMEX" ' cmd.Name = "select_HIST_MARCAS_CUOTAS_INTMEX"
' cmd.Parameters = Array As Object( ALMACEN, e_ruta.text) ' cmd.Parameters = Array As Object( ALMACEN, e_ruta.text)
' reqManager.ExecuteQuery(cmd , 0, "HIST_MARCAS_CUOTAS") ' reqManager.ExecuteQuery(cmd , 0, "HIST_MARCAS_CUOTAS")
cmd.Name = "select_geocerca_intmex"
cmd.Parameters = Array As Object(ALMACEN, e_ruta.text)
Log($"traeGeocerca: almacen: ${ALMACEN}, ruta: ${e_ruta.text}"$)
reqManager.ExecuteQuery(cmd , 0, "traeGeocerca")
If E_RUTA2.text <> "" Then If E_RUTA2.text <> "" Then
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO RUTA_SUPLENCIA(RS_RUTA) VALUES(?)",Array As String(E_RUTA2.Text)) B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO RUTA_SUPLENCIA(RS_RUTA) VALUES(?)",Array As String(E_RUTA2.Text))
E_RUTA2.Visible = False E_RUTA2.Visible = False
ImageView9.Visible = False ImageView9.Visible = False
cmd.Initialize cmd.Initialize
cmd.Name = "select_cat_clientes2_INTMEX" cmd.Name = "select_cat_clientes3_INTMEX"
cmd.Parameters = Array As Object(E_RUTA2.text, ALMACEN) cmd.Parameters = Array As Object(E_RUTA2.text,E_RUTA2.text, ALMACEN,E_RUTA2.text,E_RUTA2.text)
reqManager.ExecuteQuery(cmd , 0, "kmt_datos") reqManager.ExecuteQuery(cmd , 0, "kmt_datos")
cmd.Initialize cmd.Initialize
cmd.Name = "select_cat_clientes_todos_INTMEX" cmd.Name = "select_cat_clientes_todos_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_todos") reqManager.ExecuteQuery(cmd , 0, "kmt_datos_todos")
cmd.Initialize cmd.Initialize
cmd.Name = "select_hist_datos_INTMEX" cmd.Name = "select_hist_datos_INTMEX"
cmd.Parameters = Array As Object(E_RUTA2.text, ALMACEN) cmd.Parameters = Array As Object(E_RUTA2.text, ALMACEN)
reqManager.ExecuteQuery(cmd , 0, "hist_datos") reqManager.ExecuteQuery(cmd , 0, "hist_datos")
cmd.Initialize cmd.Initialize
cmd.Name = "select_hist_promos_INTMEX" cmd.Name = "select_hist_promos_INTMEX"
cmd.Parameters = Array As Object(E_RUTA2.text, ALMACEN) cmd.Parameters = Array As Object(E_RUTA2.text, ALMACEN)
reqManager.ExecuteQuery(cmd , 0, "hist_promos") reqManager.ExecuteQuery(cmd , 0, "hist_promos")
cmd.Initialize cmd.Initialize
cmd.Name = "select_hist_cliente_promos_INTMEX" cmd.Name = "select_hist_cliente_promos_INTMEX"
cmd.Parameters = Array As Object(E_RUTA2.text, ALMACEN) cmd.Parameters = Array As Object(E_RUTA2.text, ALMACEN)
@@ -1070,17 +1074,17 @@ Sub cargar_Click
cmd.Name = "select_promo_comp_INTMEX" cmd.Name = "select_promo_comp_INTMEX"
cmd.Parameters = Array As Object(ALMACEN) cmd.Parameters = Array As Object(ALMACEN)
reqManager.ExecuteQuery(cmd , 0, "hist_comp_promos") reqManager.ExecuteQuery(cmd , 0, "hist_comp_promos")
' cmd.Initialize ' cmd.Initialize
' cmd.Name = "select_verificacion_INTMEX" ' cmd.Name = "select_verificacion_INTMEX"
' cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) ' cmd.Parameters = Array As Object(e_ruta.text, ALMACEN)
' reqManager.ExecuteQuery(cmd , 0, "cat_verificacion") ' reqManager.ExecuteQuery(cmd , 0, "cat_verificacion")
cmd.Initialize cmd.Initialize
cmd.Name = "select_fecha" cmd.Name = "select_fecha"
' cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) ' cmd.Parameters = Array As Object(e_ruta.text, ALMACEN)
reqManager.ExecuteQuery(cmd , 0, "fecha") reqManager.ExecuteQuery(cmd , 0, "fecha")
cmd.Initialize cmd.Initialize
cmd.Name = "select_folio_INTMEX" cmd.Name = "select_folio_INTMEX"
cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) cmd.Parameters = Array As Object(e_ruta.text, ALMACEN)
@@ -1096,19 +1100,24 @@ Sub cargar_Click
cmd.Parameters = Array As Object( ALMACEN, e_ruta.text) cmd.Parameters = Array As Object( ALMACEN, e_ruta.text)
reqManager.ExecuteQuery(cmd , 0, "marcas_rutas") reqManager.ExecuteQuery(cmd , 0, "marcas_rutas")
' cmd.Initialize cmd.Initialize
' cmd.Name = "select_CUEST_INTMEX" cmd.Name = "select_marcas_Intmex"
' cmd.Parameters = Array As Object(ALMACEN) cmd.Parameters = Array As Object(usuario)
' reqManager.ExecuteQuery(cmd , 0, "CUESTIONARIO") reqManager.ExecuteQuery(cmd , 0, "marcas")
' cmd.Initialize ' cmd.Initialize
' cmd.Name = "select_HIST_CUOTAS_INTMEX" ' cmd.Name = "select_CUEST_INTMEX"
' cmd.Parameters = Array As Object( ALMACEN,e_ruta.text ) ' cmd.Parameters = Array As Object(ALMACEN)
' reqManager.ExecuteQuery(cmd , 0, "CUOTAS") ' reqManager.ExecuteQuery(cmd , 0, "CUESTIONARIO")
'
' cmd.Initialize
' cmd.Name = "select_HIST_CUOTAS_INTMEX"
' cmd.Parameters = Array As Object( ALMACEN,e_ruta.text )
' reqManager.ExecuteQuery(cmd , 0, "CUOTAS")
cmd.Initialize cmd.Initialize
cmd.Name = "select_comis_cedex_INTMEX" cmd.Name = "select_comis_cedex_INTMEX"
cmd.Parameters = Array As Object( ALMACEN, e_ruta.text ) cmd.Parameters = Array As Object(ALMACEN, e_ruta.text)
reqManager.ExecuteQuery(cmd , 0, "COMISIONES") reqManager.ExecuteQuery(cmd , 0, "COMISIONES")
cmd.Initialize cmd.Initialize
@@ -1506,20 +1515,30 @@ Sub JobDone(Job As HttpJob)
If RESULT.Tag = "cn" Then 'query tag If RESULT.Tag = "cn" Then 'query tag
For Each records() As Object In RESULT.Rows For Each records() As Object In RESULT.Rows
Dim CAT_RU_CN As String = records(RESULT.Columns.Get("CAT_RU_CN")) Dim CAT_RU_CN As String = records(RESULT.Columns.Get("CAT_RU_CN"))
B4XPages.MainPage.skmt.ExecNonQuery("DELETE FROM CN")
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CN(ACTIVO) VALUES (?)", Array As Object (CAT_RU_CN)) B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CN(ACTIVO) VALUES (?)", Array As Object (CAT_RU_CN))
Next Next
End If End If
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
For Each records() As Object In RESULT.Rows For Each records() As Object In RESULT.Rows
Dim HVD_MARCA As String = records(RESULT.Columns.Get("HVD_MARCA")) Dim HVD_MARCA As String = records(RESULT.Columns.Get("HVD_MARCA"))
Dim CLIENTES As String = records(RESULT.Columns.Get("CLIENTES")) Dim CLIENTES As String = records(RESULT.Columns.Get("CLIENTES"))
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO MARCAS_RUTAS(HVD_MARCA, CLIENTES) VALUES (?,?)", Array As Object (HVD_MARCA, CLIENTES)) B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO MARCAS_RUTAS(HVD_MARCA, CLIENTES) VALUES (?,?)", Array As Object (HVD_MARCA, CLIENTES))
Next Next
End If End If
' Marcas
If RESULT.Tag = "marcas" Then 'query tag
For Each records() As Object In RESULT.Rows
Dim MARCAS As String = records(RESULT.Columns.Get("MARCAS"))
Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("MARCAS"))
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("MARCAS",MARCAS))
Next
End If
End If End If
'CUOTAS 'CUOTAS
@@ -1669,13 +1688,14 @@ Sub JobDone(Job As HttpJob)
Dim CAT_GP_ALMACEN As Int = records(RESULT.Columns.Get("CAT_GP_ALMACEN")) Dim CAT_GP_ALMACEN As Int = records(RESULT.Columns.Get("CAT_GP_ALMACEN"))
Dim CAT_GP_TIPOPROD As Int = records(RESULT.Columns.Get("CAT_GP_TIPOPROD")) Dim CAT_GP_TIPOPROD As Int = records(RESULT.Columns.Get("CAT_GP_TIPOPROD"))
Dim CAT_GP_VARREQ3 As Int = records(RESULT.Columns.Get("CAT_GP_VARREQ3")) Dim CAT_GP_VARREQ3 As Int = records(RESULT.Columns.Get("CAT_GP_VARREQ3"))
Dim MARCA As String = records(RESULT.Columns.Get("MARCA"))
CAT_GP_TIPOPROD = "5" CAT_GP_TIPOPROD = "5"
If CAT_GP_ID = "PAQUNI003" Then If CAT_GP_ID = "PAQUNI003" Then
CAT_GP_ALMACEN = 60 CAT_GP_ALMACEN = 60
End If End If
' Log("XXXXXXX gunaprodp XXXXXXXXX " & CAT_GP_ID & "|" & CAT_GP_IMP1 & "|" & CAT_GP_IMP2) ' Log("XXXXXXX gunaprodp XXXXXXXXX " & CAT_GP_ID & "|" & CAT_GP_IMP1 & "|" & CAT_GP_IMP2)
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG,CAT_GP_ALMACEN,CAT_GP_TIPOPROD) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG, CAT_GP_ALMACEN,CAT_GP_TIPOPROD)) B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG,CAT_GP_ALMACEN,CAT_GP_TIPOPROD,MARCA) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG, CAT_GP_ALMACEN,CAT_GP_TIPOPROD,MARCA))
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD2(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG,CAT_GP_ALMACEN,CAT_GP_TIPOPROD, CAT_GP_VARREQ3) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG, CAT_GP_ALMACEN,CAT_GP_TIPOPROD, CAT_GP_VARREQ3)) B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD2(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG,CAT_GP_ALMACEN,CAT_GP_TIPOPROD, CAT_GP_VARREQ3,MARCA) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG, CAT_GP_ALMACEN,CAT_GP_TIPOPROD, CAT_GP_VARREQ3,MARCA))
Next Next
If PB2.Progress = 0 Then If PB2.Progress = 0 Then
PB2.Progress = 30 PB2.Progress = 30
@@ -1795,7 +1815,9 @@ Sub JobDone(Job As HttpJob)
Dim HVD_PRONOMBRE As String = records(RESULT.Columns.Get("HVD_PRONOMBRE")) Dim HVD_PRONOMBRE As String = records(RESULT.Columns.Get("HVD_PRONOMBRE"))
Dim HVD_CANT As String = records(RESULT.Columns.Get("HVD_CANT")) Dim HVD_CANT As String = records(RESULT.Columns.Get("HVD_CANT"))
Dim HVD_COSTO_TOT As String = records(RESULT.Columns.Get("HVD_COSTO_TOT")) Dim HVD_COSTO_TOT As String = records(RESULT.Columns.Get("HVD_COSTO_TOT"))
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO HIST_VENTAS(HVD_CLIENTE,HVD_PRONOMBRE,HVD_CANT,HVD_COSTO_TOT) VALUES (?,?,?,?)", Array As Object (HVD_CLIENTE,HVD_PRONOMBRE,HVD_CANT,HVD_COSTO_TOT)) Dim HVD_USUARIO As String = records(RESULT.Columns.Get("USUARIO"))
Log(HVD_USUARIO)
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO HIST_VENTAS(HVD_CLIENTE,HVD_PRONOMBRE,HVD_CANT,HVD_COSTO_TOT,HVD_USUARIO) VALUES (?,?,?,?,?)", Array As Object (HVD_CLIENTE,HVD_PRONOMBRE,HVD_CANT,HVD_COSTO_TOT,HVD_USUARIO))
Next Next
Listo3 =1 Listo3 =1
If PB1.Progress = 0 Then If PB1.Progress = 0 Then
@@ -1985,11 +2007,11 @@ Sub JobDone(Job As HttpJob)
Dim RESULT As DBResult = reqManager.HandleJob(Job) Dim RESULT As DBResult = reqManager.HandleJob(Job)
If RESULT.Tag = "hist_avance" Then 'query tag If RESULT.Tag = "hist_avance" Then 'query tag
For Each records() As Object In RESULT.Rows For Each records() As Object In RESULT.Rows
Dim marca As String = records(RESULT.Columns.Get("HIST_AM_MARCA")) Dim marca2 As String = records(RESULT.Columns.Get("HIST_AM_MARCA"))
Dim avance As String = records(RESULT.Columns.Get("HIST_AM_AVANCE")) Dim avance As String = records(RESULT.Columns.Get("HIST_AM_AVANCE"))
Dim objetivo As String = records(RESULT.Columns.Get("HIST_AM_OBJETIVO")) Dim objetivo As String = records(RESULT.Columns.Get("HIST_AM_OBJETIVO"))
Dim porcentaje1 As String = records(RESULT.Columns.Get("HIST_AM_PORCENTAJE")) Dim porcentaje1 As String = records(RESULT.Columns.Get("HIST_AM_PORCENTAJE"))
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO HIST_AVANCE(HA_MARCA, HA_AVANCE, HA_OBJETIVO, HA_PORCENTAJE) VALUES (?,?,?,?)", Array As Object (marca, avance, objetivo, porcentaje1)) B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO HIST_AVANCE(HA_MARCA, HA_AVANCE, HA_OBJETIVO, HA_PORCENTAJE) VALUES (?,?,?,?)", Array As Object (marca2, avance, objetivo, porcentaje1))
Next Next
End If End If
End If End If
@@ -2031,29 +2053,39 @@ Sub JobDone(Job As HttpJob)
End If End If
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 = "ins_cuestionario" Then 'query tag If RESULT.Tag = "ins_cuestionario" Then 'query tag
Subs.logJobDoneResultados(RESULT) Subs.logJobDoneResultados(RESULT)
End If End If
Dim RESULT As DBResult = reqManager.HandleJob(Job) Dim RESULT As DBResult = reqManager.HandleJob(Job)
If RESULT.Tag = "test" Then 'query tag If RESULT.Tag = "test" Then 'query tag
Log(">>>>>>>>>>>>> TEST") Log(">>>>>>>>>>>>> TEST")
Subs.logJobDoneResultados(RESULT) Subs.logJobDoneResultados(RESULT)
End If End If
Dim RESULT As DBResult = reqManager.HandleJob(Job)
If RESULT.Tag = "clientes_cuestionario" Then
Log("Entramos a clientes_cuestionario - Regs:" & RESULT.Rows.Size)
Starter.skmt.ExecNonQuery("delete from HIST_CUESTIONARIO")
For Each records() As Object In RESULT.Rows
Dim idCliente As String = records(RESULT.Columns.Get("HC_CLIENTE"))
Starter.skmt.ExecNonQuery2("INSERT INTO HIST_CUESTIONARIO(HC_CLIENTE) VALUES (?)", Array As Object (idCliente))
Next
End If
If RESULT.Tag = "traeGeocerca" Then
For Each records() As Object In RESULT.Rows
Dim geocerca As String = records(RESULT.Columns.Get("CAT_RU_GEOCERCA"))
Log("-- geo: " & geocerca)
B4XPages.MainPage.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("GEOCERCA"))
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("GEOCERCA", geocerca))
Next
End If
Dim RESULT As DBResult = reqManager.HandleJob(Job)
If RESULT.Tag = "clientes_cuestionario" Then
Log("Entramos a clientes_cuestionario - Regs:" & RESULT.Rows.Size)
Starter.skmt.ExecNonQuery("delete from HIST_CUESTIONARIO")
For Each records() As Object In RESULT.Rows
Dim idCliente As String = records(RESULT.Columns.Get("HC_CLIENTE"))
Starter.skmt.ExecNonQuery2("INSERT INTO HIST_CUESTIONARIO(HC_CLIENTE) VALUES (?)", Array As Object (idCliente))
Next
End If End If
End If End If
End If
Job.Release Job.Release
End Sub End Sub
@@ -2572,7 +2604,18 @@ Sub resdia_Click
End Sub End Sub
Sub hacer_ped_Click Sub hacer_ped_Click
B4XPages.ShowPage("Clientes") c = Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("MARCAS"))
c.Position = 0
If c.RowCount > 0 Then
Private MARCASQ As String = c.GetString("CAT_VA_VALOR")
c.Close
Starter.skmt.ExecNonQuery("delete from CAT_GUNAPROD WHERE CAT_GP_CLASIF NOT IN (" & MARCASQ &", 'PROMOS')" )
Starter.skmt.ExecNonQuery("delete from CAT_GUNAPROD WHERE CAT_GP_CLASIF IN ('PROMOS') AND MARCA NOT IN (" & MARCASQ &")" )
' Starter.skmt.ExecNonQuery("delete from CAT_GUNAPROD WHERE CAT_GP_ID NOT IN (SELECT CAT_DP_ID FROM CAT_DETALLES_PAQ WHERE CAT_DP_IDPROD NOT IN (SELECT CAT_GP_ID FROM CAT_GUNAPROD))")
B4XPages.ShowPage("Clientes")
Else
If Starter.marcaCel <> "LGE" Then ToastMessageShow("No hay marcas en la base de datos ... ya se cargo ruta??", True)
End If
End Sub End Sub
Sub nvo_cliente_Click Sub nvo_cliente_Click
@@ -2588,11 +2631,24 @@ Sub GPS_LocationChanged (Location1 As Location)
End Sub End Sub
Sub Btn_Ubicar_Click Sub Btn_Ubicar_Click
rp.CheckAndRequest(rp.PERMISSION_ACCESS_FINE_LOCATION) c = Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("MARCAS"))
Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean) c.Position = 0
If Result Then If c.RowCount > 0 Then
StartActivity(MAPA_RUTAS) Private MARCASQ As String = c.GetString("CAT_VA_VALOR")
c.Close
Starter.skmt.ExecNonQuery("delete from CAT_GUNAPROD WHERE CAT_GP_CLASIF NOT IN (" & MARCASQ &", 'PROMOS')" )
Starter.skmt.ExecNonQuery("delete from CAT_GUNAPROD WHERE CAT_GP_CLASIF IN ('PROMOS') AND MARCA NOT IN (" & MARCASQ &")" )
' Starter.skmt.ExecNonQuery("delete from CAT_GUNAPROD WHERE CAT_GP_ID NOT IN (SELECT CAT_DP_ID FROM CAT_DETALLES_PAQ WHERE CAT_DP_IDPROD NOT IN (SELECT CAT_GP_ID FROM CAT_GUNAPROD))")
rp.CheckAndRequest(rp.PERMISSION_ACCESS_FINE_LOCATION)
Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
If Result Then
StartActivity(MAPA_RUTAS)
End If
Else
If Starter.marcaCel <> "LGE" Then ToastMessageShow("No hay marcas en la base de datos ... ya se cargo ruta??", True)
End If End If
End Sub End Sub
'''''''''''''''''''''''''''''''''''' VALIDAR CARACTERES '''''''''''''''''''''''''''''''''''' VALIDAR CARACTERES

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.11.25 #VersionName: 6.03.03
'SupportedOrientations possible values: unspecified, landscape or portrait. 'SupportedOrientations possible values: unspecified, landscape or portrait.
#SupportedOrientations: portrait #SupportedOrientations: portrait
#CanInstallToExternalStorage: False #CanInstallToExternalStorage: False

View File

@@ -91,6 +91,6 @@ ModuleClosedNodes6=
ModuleClosedNodes7= ModuleClosedNodes7=
ModuleClosedNodes8= ModuleClosedNodes8=
ModuleClosedNodes9= ModuleClosedNodes9=
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 NavigationStack=C_Nota,Initialize,39,0,C_Nota,p_nota_Click,312,0,C_Nota,B4XPage_Created,57,6,C_Historico,GPS_LocationChanged,86,0,C_Nota,B4XPage_Appear,58,2,C_Historico,B4XPage_Created,49,0,Diseñador Visual,nota.bal,-100,6,C_Principal,JobDone,1804,2,C_Principal,cargar_Click,980,4,C_Historico,B4XPage_Appear,66,6,B4XMainPage,B4XPage_Created,197,0
SelectedBuild=0 SelectedBuild=0
VisibleModules=28,2,13,20,14,29,15,9,4,11 VisibleModules=28,2,13,14,29,15,4,11,21,7,9

View File

@@ -1545,4 +1545,26 @@ Sub traeTicketConsecutivo(idCliente As String) As Int
sigTicket = c.GetInt("pe_ticket") sigTicket = c.GetInt("pe_ticket")
Loop Loop
Return sigTicket + 1 Return sigTicket + 1
End Sub
' Regresa la geocerca desde CAT_VARIABLES, default = TRUE
Sub traeGeocerca As Boolean
Private usarGeo As Boolean = True
Private c As Cursor = Starter.skmt.ExecQuery("select * from cat_variables where cat_va_descripcion ='GEOCERCA'")
If c.RowCount> 0 Then
c.Position = 0
If c.GetInt("CAT_VA_VALOR") = 0 Then usarGeo = False
End If
Return usarGeo
End Sub
'Revisa si la geocerca debe de estar activa
Sub geocercaActiva As Boolean
Private resultado As Boolean = True
Private c As Cursor = Starter.skmt.ExecQuery("select CAT_VA_VALOR from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'GEOCERCA'")
If c.RowCount > 0 Then
c.Position = 0
If c.GetString("CAT_VA_VALOR") = 0 Then resultado = False
End If
Return resultado
End Sub End Sub

View File

@@ -4,300 +4,6 @@ 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
@@ -403,7 +109,6 @@ Public Sub StartFLPSmall
Sleep(500) Sleep(500)
Log("sleeping") Log("sleeping")
Loop Loop
dameUltimaUbicacionConocida 'Regresamos ultima ubicacion conocida
FLP.RequestLocationUpdates(CreateLocationRequestSmallD) 'Buscamos ubicacion 2 peticiones FLP.RequestLocationUpdates(CreateLocationRequestSmallD) 'Buscamos ubicacion 2 peticiones
' Log("Buscamos ubicacion Small displacement") ' Log("Buscamos ubicacion Small displacement")
' Log("GPSSmallestDisplacement = " & actualLR.GetSmallestDisplacement) ' Log("GPSSmallestDisplacement = " & actualLR.GetSmallestDisplacement)
@@ -434,16 +139,6 @@ Private Sub CreateLocationRequestSmallD As LocationRequest
Return lr Return lr
End Sub 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 Public Sub StopFLP
'Log("StopFLP") 'Log("StopFLP")
If flpStarted Then If flpStarted Then

127
B4A/_git_tag.ps1 Normal file
View File

@@ -0,0 +1,127 @@
# --- SCRIPT DE COMMIT Y TAG (MODO IDE B4A) ---
# 0. CONFIGURACIÓN
$HacerPush = $true # Cambia a $true para que suba los cambios a GitHub
# Cargar librería visual para el MessageBox (por si se necesita en el Push)
Add-Type -AssemblyName System.Windows.Forms
# 1. AUTODESCUBRIMIENTO
$projectPath = $PSScriptRoot
Write-Host "Ruta del proyecto: $projectPath"
$b4aFileItem = Get-ChildItem -Path $projectPath -Filter "*.b4a" | Select-Object -First 1
if (-Not $b4aFileItem) {
Write-Host "ERROR: No hay archivo .b4a en esta carpeta."
return
}
$projectName = $b4aFileItem.BaseName
Write-Host "Proyecto detectado: $projectName"
# 2. LEER VERSIÓN
$versionLine = Get-Content $b4aFileItem.FullName | Select-String "#VersionName:"
if (-Not $versionLine) {
Write-Host "ERROR: Falta #VersionName en el archivo .b4a"
return
}
$version = ($versionLine -split ":")[1].Trim()
# Reemplaza cualquier espacio en blanco por un guion bajo solo para el tag
$tagName = "$version".Replace(" ", "_")
Set-Location $projectPath
# 3. COMMIT CON TORTOISEGIT
$oldCommit = git rev-parse HEAD 2>$null
Write-Host "----------------------------------------"
Write-Host "Version a etiquetar: $version"
Write-Host "Abriendo ventana de TortoiseGit..."
$pathArg = '/path:"{0}"' -f $projectPath
$msgArg = '/logmsg:"VERSION {0}"' -f $version
$cmdArg = "/command:commit"
Start-Process "TortoiseGitProc.exe" -ArgumentList $cmdArg, $pathArg, $msgArg
Write-Host "Esperando a que termines el commit en TortoiseGit..."
# El freno de mano: espera a que cierres la ventana
while (Get-Process "TortoiseGitProc" -ErrorAction SilentlyContinue) {
Start-Sleep -Seconds 1
}
$newCommit = git rev-parse HEAD 2>$null
# 4. VALIDACIÓN
if ($oldCommit -eq $newCommit) {
Write-Host "WARNING: Commit cancelado o sin cambios detectados."
return
}
Write-Host "Commit registrado exitosamente: $newCommit"
# 5. GESTIÓN DE TAGS
$tagGenerado = $false
# Revisamos si el tag ya existe localmente y lo borramos para recrearlo con el nuevo commit
if (git tag -l $tagName) {
git tag -d $tagName 2>$null | Out-Null
}
# Creamos el tag nuevo apuntando al commit que acabamos de hacer
git tag -a $tagName -m "Release version $version"
if ($?) { $tagGenerado = $true }
# 6. LÓGICA DE PUSH
if ($HacerPush) {
Write-Host "Conectando con GitHub..."
$remoteTagInfo = git ls-remote --tags origin $tagName
if ($remoteTagInfo) {
# Conflicto: Ya existe en remoto
$topForm = New-Object System.Windows.Forms.Form
$topForm.TopMost = $true
$topForm.Opacity = 0
$topForm.ShowInTaskbar = $false
$topForm.StartPosition = "CenterScreen"
$topForm.Show()
$topForm.Activate()
[System.Console]::Beep(1000, 200)
$msgBody = "El tag '$tagName' YA EXISTE en GitHub.`n`nDeseas SOBRESCRIBIRLO?`n`nSi = Borrar anterior y actualizar (Force Push).`nNo = Subir solo codigo (mantener tag viejo)."
$msgTitle = "Conflicto de Versiones - $projectName"
$respuesta = [System.Windows.Forms.MessageBox]::Show($topForm, $msgBody, $msgTitle, "YesNo", "Warning")
$topForm.Dispose()
if ($respuesta -eq "Yes") {
Write-Host "Sobrescribiendo tag en GitHub (Force Push)..."
git push origin
git push origin $tagName --force
} else {
Write-Host "Conservando tag anterior en GitHub..."
git push origin
}
} else {
# Tag Nuevo
Write-Host "Subiendo codigo y tag nuevo a GitHub..."
git push origin --follow-tags
}
} else {
Write-Host "Push OMITIDO (Switch de control apagado)."
}
# 7. REPORTE FINAL PARA EL IDE
$EstadoPush = if($HacerPush) { "SI" } else { "NO (Modo de prueba local)" }
$EstadoTag = if($tagGenerado) { "SI ($tagName)" } else { "NO (Error al generar)" }
Write-Host ""
Write-Host "========================================"
Write-Host " REPORTE DE VERSION "
Write-Host "========================================"
Write-Host " PROYECTO : $projectName"
Write-Host " TAG CREADO : $EstadoTag"
Write-Host " PUSH GITHUB: $EstadoPush"
Write-Host "========================================"

127
B4A/_juntaBas.ps1 Normal file
View File

@@ -0,0 +1,127 @@
# SCRIPT: _juntaBas_Master_FinalIA.ps1
# FIX: Corregida sintaxis de comillas y concatenación de tags XML.
# OBJETIVO: Fuente de verdad para IA con navegación ultra estructurada.
$ErrorActionPreference = 'SilentlyContinue'
$Dir = Get-Location
$LT = [char]60; $GT = [char]62; $SL = [char]47
$NL = [Environment]::NewLine
Write-Output '--- GENERANDO MASTER IA DEFINITIVO (FIX ESTRUCTURAL) ---'
# 1. PARSEO DEL PROYECTO .B4A
$b4a = Get-ChildItem -Path ".\*" -Include "*.b4a" -Recurse | Select-Object -First 1
$Name = 'App'; $Ver = '0.0'; $ModulosValidos = @(); $Librerias = @()
if ($b4a) {
$lines = [System.IO.File]::ReadAllLines($b4a.FullName)
foreach ($L in $lines) {
if ($L -match '#ApplicationLabel:\s*(.*)') { $Name = $Matches[1].Trim() }
if ($L -match '#VersionName:\s*(.*)') { $Ver = $Matches[1].Trim() }
if ($L -match '^Module\d+=(.*)') {
$m = [System.IO.Path]::GetFileName($Matches[1].Trim())
if (-not $m.EndsWith(".bas") -and $m -ne "Main") { $m += ".bas" }
$ModulosValidos += $m
}
if ($L -match '^Library\d+=(.*)') { $Librerias += $Matches[1].Trim() }
}
}
$OutName = "_" + $Name + "_" + $Ver + "_IA.md"
$OutFile = Join-Path $Dir $OutName
# 2. HEADER CON TUS INSTRUCCIONES CRÍTICAS
$CurrentDate = Get-Date -Format 'yyyy-MM-dd HH:mm'
$Header = @"
# PROYECTO: $Name
- Version: $Ver
- Fecha: $CurrentDate
- Librerias Activas: $($Librerias -join ", ")
## INSTRUCCIONES CRITICAS (B4A / BASIC4ANDROID)
0. **Integridad del Contexto:** Antes de procesar peticiones, cuenta si el numero de modulos listados en el indice coincide con los detallados en el cuerpo.
1. **Source of Truth (Codigo):** Este archivo contiene el codigo fuente ACTUAL del proyecto.
2. **Source of Truth (Librerias):** Basa tus sugerencias en la lista de 'Librerias Activas'.
3. **Anti-Alucinacion:** Antes de sugerir, VERIFICA la 'Interfaz Pública' o el código fuente del módulo.
4. **Existencia Estricta:** Si una variable/Sub no está en el texto, NO EXISTE.
5. **Formato:** Usa bloques 'vb'.
6. **Navegacion Estructural:** Usa los tags <module>, <interface> y <method> para localizar codigo.
7. **Inferencia de Datos:** Deduce la BD solo de los strings SQL presentes.
"@
Set-Content -Path $OutFile -Value $Header -Encoding UTF8
# 3. LISTAR ARCHIVOS
$files = Get-ChildItem -Path $Dir -Include *.bas,*.b4a -Recurse | Where-Object {
$_.FullName -notmatch 'Objects' -and ($_.Extension -eq '.b4a' -or $ModulosValidos -contains $_.Name)
}
# 4. INDICE DE MODULOS
Add-Content $OutFile ($NL + "## INDICE DE MODULOS" + $NL) -Encoding UTF8
foreach ($f in $files) {
$Ref = $f.Name.Replace('.', '').Replace(' ', '-').ToLower()
Add-Content $OutFile ("- [" + $f.Name + "](#modulo-" + $Ref + ")") -Encoding UTF8
}
# 5. CODIGO FUENTE ESTRUCTURADO
Add-Content $OutFile ($NL + '## CODIGO FUENTE DETALLADO' + $NL) -Encoding UTF8
foreach ($f in $files) {
Write-Host " -> $($f.Name)... " -NoNewline
$txt = [System.IO.File]::ReadAllLines($f.FullName)
# Pre-escaneo para <interface>
$Methods = @()
foreach ($line in $txt) {
if ($line.Trim() -match '^(?:Public\s+|Private\s+)?Sub\s+([\w\d_]+)') {
$Methods += $Matches[1]
}
}
$Ref = $f.Name.Replace('.', '').Replace(' ', '-').ToLower()
Add-Content $OutFile "$NL<module name='$($f.Name)' id='modulo-$Ref'>" -Encoding UTF8
Add-Content $OutFile " <interface>" -Encoding UTF8
foreach($m in $Methods) {
Add-Content $OutFile " <method_ref name='$m' />" -Encoding UTF8
}
Add-Content $OutFile " </interface>$NL" -Encoding UTF8
Add-Content $OutFile "```vb" -Encoding UTF8
$skip = ($f.Extension -eq '.b4a')
foreach ($l in $txt) {
$trim = $l.Trim()
if ($skip) {
if ($trim.StartsWith("#") -and -not $trim.StartsWith("#Region")) { Add-Content $OutFile $l -Encoding UTF8 }
if ($l.Contains("@EndOfDesignText@")) { $skip = $false }
continue
}
# Inicio de Método
if ($trim -match '^(?:Public\s+|Private\s+)?Sub\s+([\w\d_]+)') {
Add-Content $OutFile "<method name='$($Matches[1])'>" -Encoding UTF8
}
# Limpieza de comentarios y escritura de línea
if ($trim.StartsWith("'")) {
if (-not ($trim.StartsWith("'#") -or ($trim -match 'TODO:') -or ($trim -match 'FIX:'))) { continue }
}
if (-not [string]::IsNullOrWhiteSpace($trim)) {
Add-Content $OutFile $l -Encoding UTF8
}
# Fin de Método
if ($trim -eq "End Sub") {
Add-Content $OutFile "</method>" -Encoding UTF8
}
}
Add-Content $OutFile "```$NL</module>" -Encoding UTF8
Write-Host "OK" -ForegroundColor Green
}
Write-Output ("--- FINALIZADO: " + $OutName + " ---")

Binary file not shown.

61
_sync_project.ps1 Normal file
View File

@@ -0,0 +1,61 @@
# 1. Mensaje inicial y pausa
Clear-Host
Write-Host "Se va a hacer un respaldo del codigo actual en el directorio ""AutoBackups""" -ForegroundColor Yellow
Write-Host "y al terminar, traemos desde GitHub la ultima version del codigo." -ForegroundColor Yellow
Write-Host ""
Write-Host "Presione cualquier tecla para continuar..." -ForegroundColor Yellow
$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
# 2. Asegurar ubicación en la raíz
Set-Location $PSScriptRoot
Write-Host "`nScript ejecutado desde: $PWD" -ForegroundColor DarkGray
# 3. Buscar el proyecto
$B4AFile = Get-ChildItem -Path ".\B4A\*.b4a" | Select-Object -First 1
if (!$B4AFile) {
Write-Host "ERROR: No encontre el archivo .b4a" -ForegroundColor Red
Start-Sleep -Seconds 3
exit
}
$ProjectName = $B4AFile.BaseName
$BackupDir = ".\B4A\AutoBackups"
if (!(Test-Path $BackupDir)) { New-Item -ItemType Directory -Path $BackupDir }
Write-Host "Respaldando $ProjectName..." -ForegroundColor Cyan
# 4. Preparar archivos limpios (Método Copiar y Podar)
$tempFolder = Join-Path $env:TEMP "B4A_Stage_$ProjectName"
if (Test-Path $tempFolder) { Remove-Item $tempFolder -Recurse -Force -ErrorAction SilentlyContinue }
New-Item -ItemType Directory -Path $tempFolder | Out-Null
Write-Host "Extrayendo archivos de codigo..." -ForegroundColor Gray
foreach ($f in @("B4A", "Files")) {
if (Test-Path $f) {
$target = Join-Path $tempFolder $f
Copy-Item -Path $f -Destination $target -Recurse -Force -ErrorAction SilentlyContinue
}
}
Write-Host "Podando carpetas Objects y AutoBackups..." -ForegroundColor Gray
Remove-Item -Path "$tempFolder\B4A\Objects" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item -Path "$tempFolder\B4A\AutoBackups" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item -Path "$tempFolder\B4A\*.zip" -Force -ErrorAction SilentlyContinue
# 5. Zipear
$Timestamp = Get-Date -Format "yyyyMMdd_HHmmss"
Write-Host "Comprimiendo..." -ForegroundColor Gray
Compress-Archive -Path "$tempFolder\*" -DestinationPath "$BackupDir\$ProjectName`_$Timestamp.zip" -Force
Remove-Item $tempFolder -Recurse -Force -ErrorAction SilentlyContinue
Write-Host "¡Respaldo limpio creado con exito en AutoBackups!`n" -ForegroundColor Green
# 6. Sincronizar con GitHub (Pull forzado)
Write-Host "--- Sincronizando con GitHub (Borrando cambios locales) ---" -ForegroundColor Cyan
git fetch --all
git reset --hard origin/main
git pull
Write-Host "`n¡PROCESO COMPLETADO!" -ForegroundColor Green
# Pausa de 3 segundos para que veas el resultado antes de que se cierre sola
Start-Sleep -Seconds 3