- VERSION 5.12.14

- Correcciones del codigo del GPS en Cliente.
This commit is contained in:
2025-12-19 21:40:57 -06:00
parent 49e08a557c
commit e5eb82e2de
5 changed files with 86 additions and 128 deletions

View File

@@ -541,14 +541,12 @@ End Sub
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
Sub B4XPage_Appear
Starter.enCliente = true
Starter.enCliente = True
Tels.Visible = False
gest.Visible = False
' Tels.Enabled = True
' gest.Enabled = True
MejorarPrecisionGPS
'
' MejorarPrecisionGPS
' ' Al aparecer la página del cliente
' InicializarLocalizacionMejorada
@@ -609,9 +607,6 @@ Sub B4XPage_Appear
' b_Inicio_Fin_venta.Visible = False
' End If
If Subs.hayPedido Then 'Si hay pedido, deshabilitamos el boton de "No Venta"
Log(">>>>> HAY PEDIDO")
Tels.Enabled = False
@@ -626,8 +621,6 @@ Sub B4XPage_Appear
skmt.Initialize(ruta,"kmt.db", True)
reqManager.Initialize(Me, Starter.server)
Dim fotomostrar1 As Cursor = Starter.skmt.ExecQuery("SELECT foto FROM kmt_info3 where CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA) AND foto IS NULL")
If fotomostrar1.RowCount > 0 Then
ImageView4.Bitmap = LoadBitmap(File.DirAssets,"images.png")
@@ -675,8 +668,6 @@ Sub B4XPage_Appear
End If
c.Close
If ALMACEN = "1" Then
Tels.Visible = False
gest.Visible = True
@@ -967,7 +958,6 @@ Sub B4XPage_Appear
c.Close
c2.Close
c3.Close
End If
If Not(Subs.traemontoprod) Then
If Not(Subs.traemontoprod2) Then
@@ -982,16 +972,12 @@ Sub B4XPage_Appear
Next
End If
Else
End If
Else
End If
End If
'AQUI CAMBIAR
Private s3 As Cursor=B4XPages.MainPage.skmt.ExecQuery2("select * FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) and PE_RECALCULO <> ? OR PE_RECALCULO <> ? OR PE_RECALCULO IS NOT NULL",Array As String("","null"))
' LogColor(s3.RowCount,Colors.Yellow)
@@ -1230,14 +1216,11 @@ Sub B4XPage_Appear
Dim pagarepen As Cursor = B4XPages.MainPage.skmt.ExecQuery("select FECHA, SALDO_PENDIENTE FROM ABONOSP WHERE CLIENTE IN (SELECT CUENTA FROM CUENTAA)")
If pagarepen.RowCount > 0 Then
pagarepen.Position = 0
DateTime.DateFormat="dd/MM/yyyy"
Dim FechaInicio As String = pagarepen.GetString("FECHA") ' Formato: dd/MM/yyyy
' Dim FechaHoy As String = DateTime.Date(DateTime.Now) ' Fecha actual en formato dd/MM/yyyy
Log(pagarepen.GetString("FECHA"))
' Convertir las fechas a milisegundos (desde 01/01/1970)
Dim TicksInicio As Long = DateTime.DateParse(FechaInicio)
Dim TicksHoy As Long = DateTime.DateParse(DateTime.Date(DateTime.Now))
@@ -1257,13 +1240,11 @@ Sub B4XPage_Appear
Else If DiferenciaDias > c4.GetInt("CAT_CL_DIASCREDITO") + 1 Then
l_credito.Color = Colors.Red
l_limite.Color = Colors.Red
End If
Else
l_credito.Color = Colors.Transparent
l_limite.Color = Colors.Transparent
End If
l_credito.Visible = True
l_limite.Visible = True
l_limite.Text = c.GetInt("CAT_CL_LIMITECREDITO")
@@ -1278,11 +1259,8 @@ Sub B4XPage_Appear
Dim coloressaldo As Cursor=B4XPages.MainPage.skmt.ExecQuery("select IFNULL(CAT_CL_CLASIFICADOR3,0) AS CAT_CL_CLASIFICADOR3, IFNULL(CAT_CL_CLASIFICADOR2,'') AS CAT_CL_CLASIFICADOR2 from kmt_info3 where CAT_CL_CODIGO In (Select cuenta from cuentaa)")
coloressaldo.Position = 0
la_saldooper.Text = coloressaldo.GetDouble("CAT_CL_CLASIFICADOR3")
l_animal.Text = coloressaldo.GetString("CAT_CL_CLASIFICADOR2")
If coloressaldo.GetString("CAT_CL_CLASIFICADOR2") = "Chimpancé KIN" Then
l_animal.Color = Colors.RGB(84,255,172)
Label22.Color = Colors.RGB(84,255,172)
@@ -1299,7 +1277,6 @@ Sub B4XPage_Appear
l_animal.Color = Colors.Transparent
Label22.Color = Colors.Transparent
End If
End Sub
Sub MejorarPrecisionGPS As ResumableSub
@@ -1321,7 +1298,6 @@ Sub MejorarPrecisionGPS As ResumableSub
End If
End If
Next
Return False ' No se logró buena precisión
End Sub
@@ -1329,16 +1305,11 @@ End Sub
Sub recalculoXcant
' Private c As Cursor = B4XPages.MainPage.skmt.ExecQuery2("SELECT* FROM PEDIDO JOIN CAT_PROMOS_DESCUENTOS ON CAT_PD_PRODUCTO = PE_PROID WHERE PE_CLIENTE IN (Select CUENTA FROM CUENTAA) AND PE_CEDIS = ? AND PE_CANT >= CAT_PD_RANGO AND CAT_PD_RANGO2 <= PE_CANT", Array As String(Subs.traeAlmacen))
Private c As Cursor = B4XPages.MainPage.skmt.ExecQuery2("SELECT * FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA FROM CUENTAA) AND PE_CEDIS = ? ", Array As String(Subs.traeAlmacen))
If c.RowCount > 0 Then
For promespdes = 0 To c.RowCount -1
c.Position = promespdes
Dim rangosel As Cursor= B4XPages.MainPage.skmt.ExecQuery2("SELECT * FROM CAT_PROMOS_DESCUENTOS WHERE CAT_PD_PRODUCTO = ? AND CAT_PD_RANGO <= ? AND CAT_PD_RANGO2 >= ?",Array As String(c.GetString("PE_PROID"),c.GetInt("PE_CANT"),c.GetInt("PE_CANT")))
If rangosel.RowCount > 0 Then
' delete fromo pedido where cliete = estecliente!!! y prodId = esteID
For hjh = 0 To rangosel.RowCount-1
rangosel.Position = hjh
If rangosel.GetString("CAT_PD_TIER").Contains(Subs.traeTipoCliente) Then
@@ -1355,12 +1326,9 @@ Sub recalculoXcant
Next
Else ' No cumple el rango ...
Dim rangosel2 As Cursor= B4XPages.MainPage.skmt.ExecQuery2("SELECT * FROM CAT_PROMOS_DESCUENTOS WHERE CAT_PD_PRODUCTO = ? and ? > cat_pd_rango2",Array As String(c.GetString("PE_PROID"),c.GetInt("PE_CANT")))
' definir rango sup y cantidad
If rangosel2.RowCount > 0 Then
' rangosel2.Position = 0
For hjh = 0 To rangosel2.RowCount-1
rangosel2.Position = hjh
If rangosel2.GetString("CAT_PD_TIER").Contains(Subs.traeTipoCliente) Then
@@ -1372,20 +1340,17 @@ Sub recalculoXcant
Log(NumberFormat2(((c.GetString("PE_COSTOU") * rangosel2.GetString("CAT_PD_DESCUENTO"))/100),0,2,2,False))
Log(rangosel2.GetString("CAT_PD_DESCUENTO"))
Private recalculototal As Float = rangosel2.GetString("CAT_PD_RANGO2") * recalculo
' Restar total cantidad menos rango mayor para obtener la diferencia y saber cuanto hay de mas
' INSERT de producto (diferencia entre el rango sup y cantidad de pedido
skmt.ExecNonQuery2("UPDATE PEDIDO set PE_RECALCULO = ?, PE_RECALCULOTOT = ?, PE_RECCEDIS = ?, PE_RECCANT = ? WHERE PE_PROID = ? AND PE_CLIENTE IN (SELECT CUENTA FROM CUENTAA) ",Array As String(NumberFormat2(recalculo,0,2,2,False),NumberFormat2(recalculototal,0,2,2,False),rangosel2.GetString("CAT_PD_COD_PROMO"), rangosel2.GetString("CAT_PD_RANGO2"),c.GetString("PE_PROID")))
End If
Next
Else
skmt.ExecNonQuery2("UPDATE PEDIDO set PE_RECALCULO = NULL, PE_RECALCULOTOT = NULL, PE_RECCEDIS = NULL, PE_RECCANT = NULL WHERE PE_PROID = ? AND PE_CLIENTE IN (SELECT CUENTA FROM CUENTAA) ",Array As String(c.GetString("PE_PROID")))
End If
rangosel2.Close
End If
rangosel.Close
Next
End If
End Sub
@@ -1396,7 +1361,6 @@ Private Sub LA_GPS_Click
ToastMessageShow("Mejorando precisión GPS...", False)
End Sub
' En lugar de 100m y 50m, usar valores más amplios temporalmente
Private Sub RevisarGeocerca
' Dim distanciaAlmacen As Int = distancealm ' Tu cálculo actual
@@ -1404,23 +1368,18 @@ Private Sub RevisarGeocerca
Log(distancealm)
Log(distance)
' Usar umbrales más amplios (ej: 150m y 80m)
If distancealm > 0 Or distance > 50 Then
If distancealm < 100 Or distance < 50 Then
HabilitarBotones(True)
Else
HabilitarBotones(True)
End If
End If
End Sub
Sub HabilitarBotones(dentroDeRango As Boolean)
If dentroDeRango Then
If Tels.IsInitialized Then
Tels.Visible = True
gest.Visible = True
Tels.Enabled = True
@@ -1429,7 +1388,6 @@ Sub HabilitarBotones(dentroDeRango As Boolean)
End If
Else
If Tels.IsInitialized Then
Tels.Visible = False
gest.Visible = False
' ToastMessageShow("FUERA de rango GPS - Botones deshabilitados", False)
@@ -1441,16 +1399,11 @@ Sub InicializarLocalizacionMejorada
' Usar tanto GPS como red para mejor precisión
Dim LocationManager As JavaObject
LocationManager.InitializeStatic("android.location.LocationManager")
' Solicitar ubicaciones de GPS y red
g.Start(0, 0) ' GPS
' También podrías usar la ubicación por red para casos interiores
End Sub
'Sub GPS_LocationChanged (Location1 As Location)
'
'End Sub
'
Sub GPS_LocationChanged (Location1 As Location)
LogColor($"Entrando a Cliente.GPS_LocationChanged"$, Colors.red)
' Log($"${Location1.Latitude}, ${Location1.Longitude}"$)
@@ -1533,7 +1486,6 @@ Sub GPS_LocationChanged (Location1 As Location)
Dim ubi1, ubi2 As Location
ubi1.Initialize2(B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps)
ubi2.Initialize2(al_latitud, al_longitud)
distancealm = ubi1.DistanceTo(ubi2)
End If
' Mostrar la precisión actual
@@ -1718,13 +1670,11 @@ Sub GPS_LocationChanged (Location1 As Location)
End If
End If
End If
' RevisarGeocerca
Else
If LA_GPS.IsInitialized Then
' LA_GPS.Text = $"UBICACIÓN - Precisión: ${NumberFormat2(Location1.Accuracy, 0, 1, 1, False)}m"$
LA_GPS.Text = $"BAJA PRECISIÓN (${NumberFormat2(Location1.Accuracy, 0, 1, 1, False)}m)"$
LA_GPS.TextColor = Colors.Red
End If
End If
@@ -1877,8 +1827,6 @@ Sub JobDone(Job As HttpJob)
End If
End If
' If Job.JobName = "DBRequest" Then
' Dim result1 As DBResult = reqManager.HandleJob(Job)
' If result1.Tag = "CHECAENCUESTA" Then 'query tag
@@ -1897,12 +1845,8 @@ Sub JobDone(Job As HttpJob)
' End If
' End If
If result1.Tag = "kmt_datos_foto" Then 'query tag
For Each records() As Object In result1.Rows
Dim CAT_CL_FOTO() As Byte = records(result1.Columns.Get("CAT_CL_FOTO"))
Next
Log("si paso")
@@ -1923,17 +1867,10 @@ Sub JobDone(Job As HttpJob)
Bitmap1.Initialize2(InputStream1)
InputStream1.Close
ImageView4.Bitmap = Bitmap1
Log("aqui si hay foto")
End If
End If
End If
End If
Job.Release
End Sub
@@ -1943,10 +1880,9 @@ Sub ListView1_ItemLongClick (Position As Int, Value As Object)
End Sub
Sub gest_Click
' Mejorar precisión antes de procesar la venta
MejorarPrecisionGPS
Sleep(500) ' Esperar un poco para que el GPS se estabilice
' MejorarPrecisionGPS
' Sleep(500) ' Esperar un poco para que el GPS se estabilice
Dim pagarepen As Cursor = B4XPages.MainPage.skmt.ExecQuery("select FECHA, SALDO_PENDIENTE FROM ABONOSP WHERE CLIENTE IN (SELECT CUENTA FROM CUENTAA)")
If pagarepen.RowCount > 0 Then
@@ -1969,11 +1905,8 @@ Sub gest_Click
c=B4XPages.MainPage.skmt.ExecQuery("select IFNULL(CAT_CL_DIASCREDITO,0) AS CAT_CL_DIASCREDITO from kmt_info3 where CAT_CL_CODIGO In (Select cuenta from cuentaa)")
c.Position = 0
If DiferenciaDias <= c.GetInt("CAT_CL_DIASCREDITO") + 1 Then
' MsgboxAsync($"Favor de pagar su credito el día de mañana por un monto de $${pagarepen.GetString("SALDO_PENDIENTE")}"$, "Recordatorio")
Msgbox2Async($"Favor de pagar su credito el día de mañana por un monto de $${pagarepen.GetString("SALDO_PENDIENTE")}"$, "Recordatorio", "Ok", "", "", LoadBitmap(File.DirAssets,"alert2.png"), False)
Wait For Msgbox_Result (resultado As Int)
If resultado = DialogResponse.POSITIVE Then
@@ -1982,11 +1915,8 @@ Sub gest_Click
Else If DiferenciaDias > c.GetInt("CAT_CL_DIASCREDITO") + 1 Then
MsgboxAsync($"No se puede realizar venta por que presenta ${(DiferenciaDias-(c.GetInt("CAT_CL_DIASCREDITO") +1))} días de atraso en el credito, por un monto de $${pagarepen.GetString("SALDO_PENDIENTE")}"$, "Atención")
End If
Else
gestionar
End If
End Sub

View File

@@ -294,7 +294,7 @@ Version=12.8
#Region Project Attributes
#ApplicationLabel: Guna Preventa
#VersionCode: 1
#VersionName: 5.12.13
#VersionName: 5.12.14
'SupportedOrientations possible values: unspecified, landscape or portrait.
#SupportedOrientations: portrait
#CanInstallToExternalStorage: False

View File

@@ -88,6 +88,6 @@ ModuleClosedNodes6=
ModuleClosedNodes7=6,8,9,10,11
ModuleClosedNodes8=
ModuleClosedNodes9=
NavigationStack=C_Cliente,EnviarPDFWhatsAppNumero,6469,4,C_Cliente,GPS_LocationChanged,1453,6,C_Cliente,Impresion3,3210,0,C_Cliente,PDFGENERAR2,6361,0,B4XMainPage,Entrar_LongClick,506,0,C_Principal,resdia_Click,2867,0,C_Principal,B4XPage_Appear,495,0,C_Cliente,B4XPage_Appear,863,0,C_Principal,Subir_Click,743,6,B4XMainPage,Class_Globals,25,0
NavigationStack=C_Cliente,b_geopass_Click,1763,0,C_Cliente,iniciofin,1738,0,C_Cliente,p_pideGeoPass_Click,1723,0,C_Cliente,GPS_LocationChanged,1449,0,C_Cliente,InicializarLocalizacionMejorada,1411,0,C_Cliente,HabilitarBotones,1390,0,C_Cliente,RevisarGeocerca,1375,0,C_Cliente,LA_GPS_Click,1366,0,C_Cliente,MejorarPrecisionGPS,1296,0,C_Cliente,recalculoXcant,1301,0,C_Cliente,B4XPage_Appear,1252,0
SelectedBuild=0
VisibleModules=27,2,16,28,5,13,17,29,19,4,12,22

View File

@@ -458,6 +458,20 @@ Private Sub CreateLocationRequestSmallD As LocationRequest
Return lr
End Sub
Private Sub CreateLocationRequest2 As LocationRequest
Private logger As Boolean = True
If logger Then Log("Iniciamos CreateLocationRequest2")
Dim lr As LocationRequest
lr.Initialize
lr.SetInterval(1000) '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))
@@ -476,20 +490,6 @@ Public Sub StopFLP
End If
End Sub
Private Sub CreateLocationRequest2 As LocationRequest
Private logger As Boolean = True
If logger Then Log("Iniciamos CreateLocationRequest2")
Dim lr As LocationRequest
lr.Initialize
lr.SetInterval(1000) '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 flp_LocationChanged (Location1 As Location)
Log($"Loc changed:${Location1.Longitude},${Location1.Latitude}"$)
' ToastMessageShow("Loc changed", False)

28
B4A/_juntaBas.ps1 Normal file
View File

@@ -0,0 +1,28 @@
# SCRIPT: _juntaBas.ps1 - Versión Saneada y Optimizada para LLM
$OutputFile="_CODIGO_COMPLETO_PARA_LLM.txt"
# Eliminar el archivo anterior si existe (IMPORTANTE)
Remove-Item -Path $OutputFile -ErrorAction SilentlyContinue
Write-Host "Iniciando fusion para LLM..."
# Itera sobre los archivos .bas, .b4a, .b4j
Get-ChildItem -Path ".\*" -Include @("*.bas", "*.b4a", "*.b4j") | ForEach-Object {
$currentFile = $_.Name
Write-Host "Procesando: $currentFile"
# --- ENCABEZADO ESTRUCTURADO Y COMENTADO EN B4X (Agregado al archivo) ---
Add-Content -Path $OutputFile -Value "`n'======================================================================================"
Add-Content -Path $OutputFile -Value $"// ARCHIVO_INICIO: ${currentFile}"
Add-Content -Path $OutputFile -Value "'======================================================================================`n"
# Vuelca el contenido del archivo
Get-Content -Encoding UTF8 -Path $_.FullName -Raw | Add-Content -Path $OutputFile
# --- DELIMITADOR DE FIN DE ARCHIVO (Agregado al archivo) ---
Add-Content -Path $OutputFile -Value "`n'======================================================================================"
Add-Content -Path $OutputFile -Value $"// ARCHIVO_FIN: ${currentFile}"
Add-Content -Path $OutputFile -Value "'======================================================================================`n"
}
Write-Host "`nProceso terminado. Se ha creado el archivo: $OutputFile"