Compare commits

1 Commits

Author SHA1 Message Date
6641d080e7 VERSION 5.09.28
- Se agrego codigo para importar BD desde whatsapp
2026-03-24 11:02:16 -06:00
11 changed files with 458 additions and 162 deletions

View File

@@ -4,20 +4,27 @@ ModulesStructureVersion=1
Type=Class Type=Class
Version=9.85 Version=9.85
@EndOfDesignText@ @EndOfDesignText@
'#Region Shared Files #Region Shared Files
''#CustomBuildAction: folders ready, %WINDIR%\System32\Robocopy.exe,"..\..\Shared Files" "..\Files" '#CustomBuildAction: folders ready, %WINDIR%\System32\Robocopy.exe,"..\..\Shared Files" "..\Files"
' 'Ctrl + click to sync files: ide://run?file=%WINDIR%\System32\Robocopy.exe&args=..\..\Shared+Files&args=..\Files&FilesSync=True 'Ctrl + click to sync files: ide://run?file=%WINDIR%\System32\Robocopy.exe&args=..\..\Shared+Files&args=..\Files&FilesSync=True
' '########################################################################################################### 'Ctrl + click to export as zip: ide://run?File=%B4X%\Zipper.jar&Args=Project.zip
' '###################### PULL ############################################################# '###########################################################################################################
' 'Ctrl + click ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=git&Args=pull '###################### PULL #############################################################
' '########################################################################################################### 'Ctrl + click ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=git&Args=pull
' '###################### PUSH ############################################################# '###########################################################################################################
' 'Ctrl + click ide://run?file=%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe&Args=github&Args=..\..\ '###################### 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 TORTOISE GIT ######################################################### '###########################################################################################################
' 'Ctrl + click ide://run?file=%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe&Args=TortoiseGitProc&Args=/command:commit&Args=/path:"./../../"&Args=/closeonend:2 '###################### PUSH #############################################################
' '########################################################################################################### 'Ctrl + click ide://run?file=%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe&Args=github&Args=..\..\
'#End Region '###########################################################################################################
'###################### 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
'###########################################################################################################
'###################### 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
' '
''Ctrl + click to export as zip: ide://run?File=%B4X%\Zipper.jar&Args=Project.zip ''Ctrl + click to export as zip: ide://run?File=%B4X%\Zipper.jar&Args=Project.zip
' '
@@ -225,7 +232,7 @@ Version=9.85
' Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS wayPoints (codigo TEXT, indice INT)") ' Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS wayPoints (codigo TEXT, indice INT)")
' Dim server As String = "http://keymon.net:1782" ' Dim server As String = "http://keymon.net:1782"
'' Dim server As String = "http://192.168.100.10:1781" '' Dim server As String = "http://192.168.100.10:1781"
'' Dim server As String = "http://keymon.lat:9000" '' Dim server As String = "http://keymon.net:9000"
'' server = "http://10.0.0.205:1782" '' server = "http://10.0.0.205:1782"
'' Dim server As String = "http://192.168.100.10:1781" '' Dim server As String = "http://192.168.100.10:1781"
'' server = "http://11.0.0.44:1782" '' server = "http://11.0.0.44:1782"
@@ -1173,16 +1180,23 @@ Version=9.85
#Region Shared Files #Region Shared Files
'#CustomBuildAction: folders ready, %WINDIR%\System32\Robocopy.exe,"..\..\Shared Files" "..\Files" '#CustomBuildAction: folders ready, %WINDIR%\System32\Robocopy.exe,"..\..\Shared Files" "..\Files"
'Ctrl + click to sync files: ide://run?file=%WINDIR%\System32\Robocopy.exe&args=..\..\Shared+Files&args=..\Files&FilesSync=True 'Ctrl + click to sync files: ide://run?file=%WINDIR%\System32\Robocopy.exe&args=..\..\Shared+Files&args=..\Files&FilesSync=True
'Ctrl + click to export as zip: ide://run?File=%B4X%\Zipper.jar&Args=Project.zip
'########################################################################################################### '###########################################################################################################
'###################### 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 to export as zip: ide://run?File=%B4X%\Zipper.jar&Args=Project.zip 'Ctrl + click to export as zip: ide://run?File=%B4X%\Zipper.jar&Args=Project.zip
@@ -1275,7 +1289,7 @@ Sub Class_Globals
Private b_abono As Button Private b_abono As Button
Private cb_importarBDWA As CheckBox Private cb_importarBDWA As CheckBox
Private p_importarBDWA As Panel Private p_importarBDWA As Panel
Private importador As C_ImportaBD
Dim intentUsado As Boolean = False Dim intentUsado As Boolean = False
End Sub End Sub
@@ -1403,7 +1417,7 @@ Private Sub B4XPage_Created (Root1 As B4XView)
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS wayPoints (codigo TEXT, indice INT)") Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS wayPoints (codigo TEXT, indice INT)")
Dim server As String = "http://keymon.net:1781" Dim server As String = "http://keymon.net:1781"
' Dim server As String = "http://192.168.100.10:1781" ' Dim server As String = "http://192.168.100.10:1781"
' Dim server As String = "http://keymon.lat:9000" ' Dim server As String = "http://keymon.net:9000"
' server = "http://10.0.0.205:1782" ' server = "http://10.0.0.205:1782"
' Dim server As String = "http://192.168.100.10:1781" ' Dim server As String = "http://192.168.100.10:1781"
' server = "http://11.0.0.44:1782" ' server = "http://11.0.0.44:1782"
@@ -1413,7 +1427,7 @@ Private Sub B4XPage_Created (Root1 As B4XView)
' Dim P As PhoneId ' Dim P As PhoneId
Log("provider") Log("provider")
Provider.Initialize Provider.Initialize
importador.Initialize
Subs.guardaAppInfo Subs.guardaAppInfo
' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_READ_PHONE_STATE) ' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_READ_PHONE_STATE)
@@ -1466,6 +1480,19 @@ Sub B4XPage_Appear
' If Result Then ' If Result Then
' Log("Con permisos de escritura externa") ' Log("Con permisos de escritura externa")
' End If ' End If
Dim in As Intent = B4XPages.GetNativeParent(Me).GetStartingIntent
If importador.ProcesarIntent(in) Then
' Si entra aquí, la BD ya se copió exitosamente a File.DirInternal con el nombre "kmt.db"
ToastMessageShow("BD importada correctamente", False)
' (Opcional) Identificar si el origen fue WhatsApp:
If importador.EsDeWhatsapp(in) Then
B4XPages.SetTitle(Me, "BD cargada desde Whatsapp")
End If
' --> AQUI DEBES REINICIALIZAR TU CONEXION SQL <--
Starter.skmt.Initialize(File.DirInternal, "kmt.db", True)
user.Text = Subs.traeUsuario
End If
End Sub End Sub
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. 'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
@@ -1746,7 +1773,7 @@ Private Sub i_engrane_Click
Subs.centraBoton(b_regesar, Root.Width) Subs.centraBoton(b_regesar, Root.Width)
Subs.centraBoton(b_server, p_serverList.Width) Subs.centraBoton(b_server, p_serverList.Width)
lv_server.Clear lv_server.Clear
lv_server.AddSingleLine("http://keymon.lat:1781") lv_server.AddSingleLine("http://keymon.net:1781")
If user.Text = "KMTS1" Then lv_server.AddSingleLine("http://10.0.0.205:1781") If user.Text = "KMTS1" Then lv_server.AddSingleLine("http://10.0.0.205:1781")
' l_server.Text = Starter.server ' l_server.Text = Starter.server

View File

@@ -723,8 +723,8 @@ Sub caculaRutaGPS(coords As List, agregarActual As Boolean)
ProgressDialogShow2("Calculando distancia y tiempo, un momento por favor.", False) ProgressDialogShow2("Calculando distancia y tiempo, un momento por favor.", False)
Dim j As HttpJob Dim j As HttpJob
j.Initialize("trip", Me) 'Calculamos el resto de la ruta. j.Initialize("trip", Me) 'Calculamos el resto de la ruta.
j.Download($"http://keymon.lat:9002/ruteador?m=OSRM&r=${Subs.traeRutaReparto}&a=${Subs.traeAlmacen}&c=${coordsStr}"$) '&f=CEDIS,${Starter.cedisLocation.Longitude},${Starter.cedisLocation.Latitude} j.Download($"http://keymon.net:9002/ruteador?m=OSRM&r=${Subs.traeRutaReparto}&a=${Subs.traeAlmacen}&c=${coordsStr}"$) '&f=CEDIS,${Starter.cedisLocation.Longitude},${Starter.cedisLocation.Latitude}
Log($"http://keymon.lat:9002/ruteador?m=OSRM&r=${Subs.traeRutaReparto}&a=${Subs.traeAlmacen}&c=${coordsStr}"$) '&f=CEDIS,${Starter.cedisLocation.Longitude},${Starter.cedisLocation.Latitude} Log($"http://keymon.net:9002/ruteador?m=OSRM&r=${Subs.traeRutaReparto}&a=${Subs.traeAlmacen}&c=${coordsStr}"$) '&f=CEDIS,${Starter.cedisLocation.Longitude},${Starter.cedisLocation.Latitude}
Wait For (j) JobDone(j As HttpJob) Wait For (j) JobDone(j As HttpJob)
If j.Success Then If j.Success Then
Dim jp As JSONParser Dim jp As JSONParser

85
B4A/C_ImportaBD.bas Normal file
View File

@@ -0,0 +1,85 @@
B4A=true
Group=Default Group
ModulesStructureVersion=1
Type=Class
Version=12.8
@EndOfDesignText@
' ====================================================================================
' CLASE: C_ImportaBD
' DESCRIPCION: Gestor aislado para atrapar Intents (ej. compartir desde WhatsApp)
' y poner la BD en la ruta interna de la app como "kmt.db".
' ====================================================================================
' INSTRUCCIONES (En cualquier B4XPage, usualmente B4XMainPage):
'
' 1. En Class_Globals se declara la instancia:
' Private importador As C_ImportaBD
'
' 2. En B4XPage_Created se inicializa la clase:
' importador.Initialize
'
' 3. En B4XPage_Appear se captura el Intent padre y se procesa:
' Dim in As Intent = B4XPages.GetNativeParent(Me).GetStartingIntent
'
' If importador.ProcesarIntent(in) Then
' ' Si entra aquí, la BD ya se copió exitosamente a File.DirInternal con el nombre "kmt.db"
' ToastMessageShow("BD importada correctamente", False)
'
' ' (Opcional) Identificar si el origen fue WhatsApp:
' If importador.EsDeWhatsapp(in) Then
' B4XPages.SetTitle(Me, "BD cargada desde Whatsapp")
' End If
'
' ' --> AQUI DEBES REINICIALIZAR TU CONEXION SQL <--
' ' Ej: skmt.Initialize(File.DirInternal, "kmt.db", True)
' End If
' 4. En el manifiesto agregar esta seccion para que se registre para abrir bases de datos
' AddActivityText(Main,
' <intent-filter>
' <action android:name="android.intent.action.VIEW" />
' <category android:name="android.intent.category.DEFAULT" />
' <data android:pathPattern=".*\\.db" />
' <data android:mimeType="*/*" />
' </intent-filter>)
' ====================================================================================
Sub Class_Globals
Private intentUsado As Boolean = False
End Sub
Public Sub Initialize
intentUsado = False
End Sub
' Procesa el intent. Retorna True si efectivamente copió una base de datos.
Public Sub ProcesarIntent(in As Intent) As Boolean
If intentUsado Or in = Null Then Return False
If Not(in.IsInitialized) Then Return False
intentUsado = True ' Sellamos para que no vuelva a procesar el mismo intent
If in.GetData <> Null Then
Dim XmlData As String = in.GetData
Log("Intent recibido: " & XmlData)
Try
Dim OutStr As OutputStream = File.OpenOutput(File.DirInternal, "kmt.db", False)
Dim InStr As InputStream = File.OpenInput("ContentDir", XmlData)
File.Copy2(InStr, OutStr)
OutStr.Close
LogColor("BD copiada a interna.", Colors.Blue)
Return True
Catch
Log("Error al copiar BD desde Intent: " & LastException)
Return False
End Try
End If
Return False
End Sub
' Método auxiliar para revisar el origen
Public Sub EsDeWhatsapp(in As Intent) As Boolean
If in <> Null And in.IsInitialized Then
If in.As(String).Contains("whatsapp") Then Return True
End If
Return False
End Sub

View File

@@ -530,7 +530,7 @@ Sub B4XPage_Appear
' Log(rescant2) ' Log(rescant2)
r5r.Close r5r.Close
Log(rescant2r) Log(rescant2r)
Log(rescant2r+rescantr) ' Log(rescant2r+rescantr)
'''' FIN RECHAZO '''' FIN RECHAZO
@@ -624,7 +624,7 @@ Sub B4XPage_Appear
pztotal = pztotal + r55.GetString("HVD_CANT") pztotal = pztotal + r55.GetString("HVD_CANT")
Next Next
End If End If
Log(rescant10) ' Log(rescant10)
r55.Close r55.Close
' Private r5 As Cursor = Starter.skmt.ExecQuery($"select IFNULL(SUM(HVD_COSTO_TOT),0) AS HVD_COSTO_TOT, HVD_CANT from HIST_VENTAS where HVD_RECHAZO = '0' and BCAJAS = '1' AND HVD_CLIENTE IN (SELECT CAT_CL_CODIGO from kmt_info WHERE gestion = 2) "$) ' Private r5 As Cursor = Starter.skmt.ExecQuery($"select IFNULL(SUM(HVD_COSTO_TOT),0) AS HVD_COSTO_TOT, HVD_CANT from HIST_VENTAS where HVD_RECHAZO = '0' and BCAJAS = '1' AND HVD_CLIENTE IN (SELECT CAT_CL_CODIGO from kmt_info WHERE gestion = 2) "$)

Binary file not shown.

View File

@@ -1,113 +1,109 @@
Build1=Default,reparto_profina.keymon.lat,HU2_PUBLIC Build1=Default,reparto_profina.keymon.lat,HU2_PUBLIC
File1=2023.png File1=alert2.png
File10=cliente.bal File10=clienteblanco.png
File100=ubicacionblanco.png File100=UBICARCLIENTE.png
File101=Ubicar_clientes.jpg File101=usuario.png
File102=UBICARCLIENTE.png File102=vecteezy_abstract-color-polygon-background-design-abstract-geometric_22231666.jpg
File103=usuario.png File103=visitaazul.png
File104=vecteezy_abstract-color-polygon-background-design-abstract-geometric_22231666.jpg File104=visitaazul1.png
File105=vecteezy_abstract-color-polygon-background-design-abstract-geometric_22231666.png File105=visitadosblanco.png
File106=vecteezy_abstract-color-polygon-background-design-abstract-geometric_22231666_.jpg File11=clientes.bal
File107=visitaazul.png File12=Clientes_visitados.jpg
File108=visitaazul1.png File13=Clientes_VISITADOS.png
File109=visitadosblanco.png File14=contrasena.png
File11=clienteblanco.png File15=datoscliente.bal
File12=clientes.bal File16=dbc.png
File13=Clientes_visitados.jpg File17=derecha.png
File14=Clientes_VISITADOS.png File18=derecha1.png
File15=contrasena.png File19=detalle_promo.bal
File16=datoscliente.bal File2=alerta.jpg
File17=dbc.png File20=detalleVenta.bal
File18=derecha.png File21=DULCE.png
File19=derecha1.png File22=durakelo1.png
File2=alert2.png File23=engrane.jpg
File20=detalle_promo.bal File24=engrane1.png
File21=detalleVenta.bal File25=folioabono.bal
File22=DULCE.png File26=fondo_kmt.jpg
File23=durakelo1.png File27=foto.bal
File24=engrane.jpg File28=frintal.png
File25=engrane1.png File29=frontal1.gif
File26=folioabono.bal File3=atras.png
File27=fondo_kmt.jpg File30=frontal1.png
File28=foto.bal File31=guardagestion.bal
File29=frintal.png File32=guna_viejo.png
File3=alerta.jpg File33=guna_viejo2.png
File30=frontal1.gif File34=historico.bal
File31=frontal1.png File35=images.png
File32=guardagestion.bal File36=infonavit1.jpg
File33=guna_viejo.png File37=intmex_logo_192x192.jpg
File34=guna_viejo2.png File38=intmex_logo_192x192.png
File35=historico.bal File39=inventarios.jpg
File36=images.png File4=atras1.png
File37=infonavit1.jpg File40=INVENTARIOS.png
File38=intmex_logo_192x192.jpg File41=itembuttonblue.png
File39=intmex_logo_192x192.png File42=izquierda.png
File4=atras.png File43=izquierda1.png
File40=inventarios.jpg File44=kelloggs.png
File41=INVENTARIOS.png File45=keymon_logo.png
File42=itembuttonblue.png File46=kmt.db
File43=izquierda.png File47=kmt2.db
File44=izquierda1.png File48=kmt3.db
File45=kelloggs.png File49=login.bal
File46=keymon_logo.png File5=buscar.bal
File47=kmt.db File50=logo sanfer.jpg
File48=kmt2.db File51=logo_exitus1.jpg
File49=kmt3.db File52=logo_mariana.jpg
File5=atras1.png File53=logo-guna-18.jpg
File50=login.bal File54=logo-guna-18.png
File51=logo sanfer.jpg File55=logo-guna-blanco.png
File52=logo_exitus1.jpg File56=logo-guna-contorno.png
File53=logo_mariana.jpg File57=logo-guna-contorno_.png
File54=logo-guna-18.jpg File58=MainPage.bal
File55=logo-guna-18.png File59=malo.jpg
File56=logo-guna-blanco.png File6=CALIFICARCLIENTE.png
File57=logo-guna-contorno.gif File60=mapa.bal
File58=logo-guna-contorno.png File61=mapa_cliente.bal
File59=logo-guna-contorno_.png File62=mapa_rutas.bal
File6=buscar.bal File63=mariana.jpg
File60=MainPage.bal File64=mariana_logo_192x192.jpg
File61=malo.jpg File65=marker-amarillo.png
File62=mapa.bal File66=marker-azul.png
File63=mapa_cliente.bal File67=marker-azul1.png
File64=mapa_rutas.bal File68=marker-azul2.png
File65=mariana.jpg File69=marker-azul3.png
File66=mariana_logo_192x192.jpg File7=check.bal
File67=marker-amarillo.png File70=marker-azul4.png
File68=marker-azul.png File71=marker-azul5.png
File69=marker-azul1.png File72=marker-rojo.png
File7=CALIFICARCLIENTE.png File73=marker-rojo1.png
File70=marker-azul2.png File74=marker-rojo2.png
File71=marker-azul3.png File75=marker-verde.png
File72=marker-azul4.png File76=no_venta.bal
File73=marker-azul5.png File77=nuevocliente.bal
File74=marker-rojo.png File78=panel_pick_ciego.bal
File75=marker-rojo1.png File79=pedido.bal
File76=marker-rojo2.png File8=checklist.bal
File77=marker-verde.png File80=planfia_logo.png
File78=no_venta.bal File81=planfia_logo_old.png
File79=nuevocliente.bal File82=planfia_logo_old2.png
File8=check.bal File83=principal.bal
File80=panel_pick_ciego.bal File84=proditem.bal
File81=pedido.bal File85=proditem2.bal
File82=planfia_logo.png File86=productos.bal
File83=planfia_logo_old.png File87=profina.jpg
File84=planfia_logo_old2.png File88=PROFINA.png
File85=principal.bal File89=rechazos.jpg
File86=proditem.bal File9=cliente.bal
File87=proditem2.bal File90=RECHAZOS.png
File88=productos.bal File91=rechazosblanco.png
File89=profina.jpg File92=sync.png
File9=checklist.bal File93=tabulador.bal
File90=PROFINA.png File94=Tabulador.jpg
File91=rechazos.jpg File95=TABULADOR.png
File92=RECHAZOS.png File96=tabuladorblanco.png
File93=rechazosblanco.png File97=telefonos.bal
File94=sync.png File98=ubicacionblanco.png
File95=tabulador.bal File99=Ubicar_clientes.jpg
File96=Tabulador.jpg
File97=TABULADOR.png
File98=tabuladorblanco.png
File99=telefonos.bal
FileGroup1=Default Group FileGroup1=Default Group
FileGroup10=Default Group FileGroup10=Default Group
FileGroup100=Default Group FileGroup100=Default Group
@@ -116,10 +112,6 @@ FileGroup102=Default Group
FileGroup103=Default Group FileGroup103=Default Group
FileGroup104=Default Group FileGroup104=Default Group
FileGroup105=Default Group FileGroup105=Default Group
FileGroup106=Default Group
FileGroup107=Default Group
FileGroup108=Default Group
FileGroup109=Default Group
FileGroup11=Default Group FileGroup11=Default Group
FileGroup12=Default Group FileGroup12=Default Group
FileGroup13=Default Group FileGroup13=Default Group
@@ -249,37 +241,38 @@ ManifestCode='This code will be applied to the manifest file during compilation.
Module1=appUpdater Module1=appUpdater
Module10=C_Foto Module10=C_Foto
Module11=C_Historico Module11=C_Historico
Module12=C_Mapas Module12=C_ImportaBD
Module13=C_NoVenta Module13=C_Mapas
Module14=C_NuevoCliente Module14=C_NoVenta
Module15=C_Pedidos Module15=C_NuevoCliente
Module16=C_Principal Module16=C_Pedidos
Module17=C_Productos Module17=C_Principal
Module18=C_tabulador Module18=C_Productos
Module19=C_TicketsDia Module19=C_tabulador
Module2=B4XMainPage Module2=B4XMainPage
Module20=C_UpdateAvailable Module20=C_TicketsDia
Module21=CameraExClass Module21=C_UpdateAvailable
Module22=DBRequestManager Module22=CameraExClass
Module23=EscPosPrinter Module23=DBRequestManager
Module24=foto Module24=EscPosPrinter
Module25=ManageExternalStorage Module25=foto
Module26=MAPA_CLIENTE Module26=ManageExternalStorage
Module27=MAPA_RUTAS Module27=MAPA_CLIENTE
Module28=QRGenerator Module28=MAPA_RUTAS
Module29=Starter Module29=QRGenerator
Module3=BatteryUtilities Module3=BatteryUtilities
Module30=Subs Module30=Starter
Module31=Tracker Module31=Subs
Module32=Tracker
Module4=C_Buscar Module4=C_Buscar
Module5=C_Cheklist Module5=C_Cheklist
Module6=C_Cliente Module6=C_Cliente
Module7=C_Clientes Module7=C_Clientes
Module8=C_Detalle_Promo Module8=C_Detalle_Promo
Module9=C_DetalleVenta Module9=C_DetalleVenta
NumberOfFiles=109 NumberOfFiles=105
NumberOfLibraries=27 NumberOfLibraries=27
NumberOfModules=31 NumberOfModules=32
Version=12.8 Version=12.8
@EndOfDesignText@ @EndOfDesignText@
#Region Project Attributes #Region Project Attributes

View File

@@ -24,6 +24,7 @@ ModuleBookmarks29=
ModuleBookmarks3= ModuleBookmarks3=
ModuleBookmarks30= ModuleBookmarks30=
ModuleBookmarks31= ModuleBookmarks31=
ModuleBookmarks32=
ModuleBookmarks4= ModuleBookmarks4=
ModuleBookmarks5= ModuleBookmarks5=
ModuleBookmarks6= ModuleBookmarks6=
@@ -56,6 +57,7 @@ ModuleBreakpoints29=
ModuleBreakpoints3= ModuleBreakpoints3=
ModuleBreakpoints30= ModuleBreakpoints30=
ModuleBreakpoints31= ModuleBreakpoints31=
ModuleBreakpoints32=
ModuleBreakpoints4= ModuleBreakpoints4=
ModuleBreakpoints5= ModuleBreakpoints5=
ModuleBreakpoints6= ModuleBreakpoints6=
@@ -88,12 +90,13 @@ ModuleClosedNodes29=
ModuleClosedNodes3= ModuleClosedNodes3=
ModuleClosedNodes30= ModuleClosedNodes30=
ModuleClosedNodes31= ModuleClosedNodes31=
ModuleClosedNodes32=
ModuleClosedNodes4= ModuleClosedNodes4=
ModuleClosedNodes5= ModuleClosedNodes5=
ModuleClosedNodes6= ModuleClosedNodes6=
ModuleClosedNodes7= ModuleClosedNodes7=
ModuleClosedNodes8= ModuleClosedNodes8=
ModuleClosedNodes9= ModuleClosedNodes9=
NavigationStack=B4XMainPage,i_engrane_Click,1744,0,C_Principal,Class_Globals,0,0,C_Principal,connecta_Click,1954,0,C_Principal,JobDone,1283,1,Starter,Process_Globals,5,0,C_Principal,Subir_Click,824,0,Starter,ENVIA_ULTIMA_GPS,120,0,Diseñador Visual,principal.bal,-100,4,C_Principal,envioinfo,1017,2,C_Principal,ImageView1_LongClick,2904,0,C_Principal,B4XPage_Appear,312,0 NavigationStack=C_Clientes,caculaRutaGPS,720,0,Diseñador Visual,principal.bal,-100,2,Diseñador Visual,clientes.bal,-100,5,C_Principal,B4XPage_Appear,620,0,C_Cliente,Guardado,814,0,C_Cliente,mandaPendientesreparto,1695,0,C_NoVenta,mandaPendientesreparto,228,0,C_Cheklist,mandaPendientes,723,0,Starter,Process_Globals,31,0,B4XMainPage,B4XPage_Created,1411,0
SelectedBuild=0 SelectedBuild=0
VisibleModules=1,2,3,4,5,6,7,8,9,10,16 VisibleModules=2,30,6,7,17

View File

@@ -35,7 +35,7 @@ Sub Process_Globals
Dim reqManager As DBRequestManager Dim reqManager As DBRequestManager
' Dim server As String = "http://187.189.244.154:1782" ' Dim server As String = "http://187.189.244.154:1782"
Dim server As String = "http://keymon.net:1781" Dim server As String = "http://keymon.net:1781"
' Dim server As String = "http://keymon.lat:9000" ' Dim server As String = "http://keymon.net:9000"
' Dim server = "http://192.168.100.10:1781" ' Dim server = "http://192.168.100.10:1781"
Dim muestraProgreso = 0 Dim muestraProgreso = 0
Dim c As Cursor Dim c As Cursor

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 "========================================"

View File

@@ -78,7 +78,7 @@ Sub Process_Globals
'These variables can be accessed from all modules. 'These variables can be accessed from all modules.
'Aqui va la liga al archivo .ver en el servidor que contiene la información de la aplicacion 'Aqui va la liga al archivo .ver en el servidor que contiene la información de la aplicacion
Public lnk As String = "https://keymon.lat/movil/Profina/Profina_reparto.ver" Public lnk As String = "https://keymon.net/movil/Profina/Profina_reparto.ver"
'/// En el servidor se necesita un archivo de texto (.ver) que tenga los siguientes '/// En el servidor se necesita un archivo de texto (.ver) que tenga los siguientes
'/// datos separados por un tabulador '/// datos separados por un tabulador

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