VERSION 5.10.14

- Se agrego que mande la bandera de "reprogramado"
- Se agrego que mande al tmp_drop fin dia, carga y envio.
This commit is contained in:
2026-03-06 17:04:46 -06:00
parent 477d61dad3
commit aff1e8bdc3
12 changed files with 355 additions and 1239 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1938,7 +1938,6 @@ Sub B_PASO2_Click
' End If ' End If
End Sub End Sub
Sub mandaPendientesreparto Sub mandaPendientesreparto
' c=Starter.skmt.ExecQuery("SELECT CLIENTE, USUARIO, FECHA_PUNTEO, LATITUD, LONGITUD, ALMACEN, RUTA_REPARTO, RUTA_PREV, FECHA_PREVENTA, MOTIVO, COMENTARIO,TIPO FROM REPARTO_GEO where ENVIO <> 1") ' c=Starter.skmt.ExecQuery("SELECT CLIENTE, USUARIO, FECHA_PUNTEO, LATITUD, LONGITUD, ALMACEN, RUTA_REPARTO, RUTA_PREV, FECHA_PREVENTA, MOTIVO, COMENTARIO,TIPO FROM REPARTO_GEO where ENVIO <> 1")
' Log($"REPARTO_Cliente PENDIENTE: ${c.RowCount}"$) ' Log($"REPARTO_Cliente PENDIENTE: ${c.RowCount}"$)

View File

@@ -48,6 +48,7 @@ Private Sub B4XPage_Created (Root1 As B4XView)
'load the layout to Root 'load the layout to Root
Root.LoadLayout("no_venta") Root.LoadLayout("no_venta")
reqManager.Initialize(Me, B4XPages.MainPage.SERVER) reqManager.Initialize(Me, B4XPages.MainPage.SERVER)
p_camara.Left = 0 : p_camara.Top = 0
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

@@ -111,7 +111,6 @@ Sub Class_Globals
Private multiAlmacen As Boolean = False Private multiAlmacen As Boolean = False
Private idAlmacenExtra As String = "" Private idAlmacenExtra As String = ""
Dim btAdmin As BluetoothAdmin Dim btAdmin As BluetoothAdmin
Dim cmp20 As Serial Dim cmp20 As Serial
' Dim printer As TextWriter ' Dim printer As TextWriter
@@ -142,6 +141,7 @@ Sub Class_Globals
Private b_regresa_inv As Button Private b_regresa_inv As Button
Private l_pzas As Label Private l_pzas As Label
Private Label17 As Label Private Label17 As Label
Private l_version As Label
End Sub End Sub
'You can add more parameters here. 'You can add more parameters here.
@@ -198,6 +198,7 @@ Private Sub B4XPage_Created (Root1 As B4XView)
' b.Close ' b.Close
' c.Close ' c.Close
End If End If
l_version.Text = Application.VersionName
b=Starter.skmt.ExecQuery("select id_almacen from CAT_ALMACEN") b=Starter.skmt.ExecQuery("select id_almacen from CAT_ALMACEN")
If b.RowCount > 0 Then If b.RowCount > 0 Then
' Log("Traemos almacen ..." & B4XPages.MainPage.server) ' Log("Traemos almacen ..." & B4XPages.MainPage.server)
@@ -863,6 +864,7 @@ Sub envia_reparto
End Sub End Sub
Sub envioinfo Sub envioinfo
Subs.mandaDrop("ENVIO", e_ruta.text)
' NOVENTA ' NOVENTA
c = Starter.skmt.ExecQuery("SELECT NV_CLIENTE,NV_FECHA,NV_USER,NV_MOTIVO,NV_COMM,NV_LAT,NV_LON, NV_FOTO, NV_REPROGRAMAR FROM NOVENTA") c = Starter.skmt.ExecQuery("SELECT NV_CLIENTE,NV_FECHA,NV_USER,NV_MOTIVO,NV_COMM,NV_LAT,NV_LON, NV_FOTO, NV_REPROGRAMAR FROM NOVENTA")
D=Starter.skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS_NOVENTA FROM NOVENTA") D=Starter.skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS_NOVENTA FROM NOVENTA")
@@ -954,8 +956,7 @@ Sub envioinfo
Next Next
End If End If
ab.Close ab.Close
c=Starter.skmt.ExecQuery("SELECT * FROM hist_ventas WHERE HVD_RECHAZO = 1 ") c=Starter.skmt.ExecQuery("SELECT * FROM hist_ventas WHERE HVD_RECHAZO = 1 ")
If c.RowCount>0 Then If c.RowCount>0 Then
For i=0 To c.RowCount -1 For i=0 To c.RowCount -1
@@ -975,7 +976,7 @@ Sub envioinfo
Next Next
c.Close c.Close
End If End If
' pedido ' pedido
c=Starter.skmt.ExecQuery("SELECT PE_TIPO, PE_RUTA, PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_FECHA, PE_USUARIO, PE_CLIENTEOR, PE_CAJAS, PE_BCAJAS, CONSECUTIVO, FECHA_PREV, RUTA_REP, PE_REGALO FROM PEDIDO") c=Starter.skmt.ExecQuery("SELECT PE_TIPO, PE_RUTA, PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_FECHA, PE_USUARIO, PE_CLIENTEOR, PE_CAJAS, PE_BCAJAS, CONSECUTIVO, FECHA_PREV, RUTA_REP, PE_REGALO FROM PEDIDO")
If c.RowCount>0 Then If c.RowCount>0 Then
@@ -989,8 +990,7 @@ Sub envioinfo
Next Next
c.Close c.Close
End If End If
'' reqManager.Initialize(Me, "http://187.189.244.154:1787") 'Para el servidor de pruebas. '' reqManager.Initialize(Me, "http://187.189.244.154:1787") 'Para el servidor de pruebas.
' c = Starter.skmt.ExecQuery("SELECT * from reparto") ' c = Starter.skmt.ExecQuery("SELECT * from reparto")
' If c.RowCount > 0 Then ' If c.RowCount > 0 Then
@@ -1032,24 +1032,21 @@ Sub envioinfo
' Next ' Next
' c.Close ' c.Close
' End If ' End If
c=Starter.skmt.ExecQuery("SELECT CLIENTE, USUARIO, FECHA_PUNTEO, LATITUD, LONGITUD, ALMACEN, RUTA_REPARTO, RUTA_PREV, FECHA_PREVENTA, MOTIVO, COMENTARIO,TIPO FROM REPARTO_GEO") c=Starter.skmt.ExecQuery("SELECT CLIENTE, USUARIO, FECHA_PUNTEO, LATITUD, LONGITUD, ALMACEN, RUTA_REPARTO, RUTA_PREV, FECHA_PREVENTA, MOTIVO, COMENTARIO,TIPO FROM REPARTO_GEO")
Log($"REPARTO_Cliente PENDIENTE: ${c.RowCount}"$) Log($"REPARTO_Cliente PENDIENTE: ${c.RowCount}"$)
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
Dim cmd As DBCommand Dim cmd As DBCommand
cmd.Initialize cmd.Initialize
cmd.Name = "insert_REPARTO_INTMEX" cmd.Name = "insert_REPARTO_INTMEX"
cmd.Parameters = Array As Object(c.GetString("CLIENTE"), c.GetString("USUARIO"), c.GetString("FECHA_PUNTEO"), c.GetString("LATITUD"), c.GetString("LONGITUD"), c.GetString("ALMACEN"), c.GetString("RUTA_REPARTO"), c.GetString("RUTA_PREV"), c.GetString("FECHA_PREVENTA"), c.GetString("MOTIVO"), c.GetString("COMENTARIO"),c.GetString("TIPO")) cmd.Parameters = Array As Object(c.GetString("CLIENTE"), c.GetString("USUARIO"), c.GetString("FECHA_PUNTEO"), c.GetString("LATITUD"), c.GetString("LONGITUD"), c.GetString("ALMACEN"), c.GetString("RUTA_REPARTO"), c.GetString("RUTA_PREV"), c.GetString("FECHA_PREVENTA"), c.GetString("MOTIVO"), c.GetString("COMENTARIO"),c.GetString("TIPO"))
reqManager.ExecuteCommand(cmd , $"ins_REPARTOPendientes_head_${c.GetString("CLIENTE")}"$) reqManager.ExecuteCommand(cmd , $"ins_REPARTOPendientes_head_${c.GetString("CLIENTE")}"$)
Next Next
End If End If
c.Close c.Close
'TABULADOR 'TABULADOR
c = Starter.skmt.ExecQuery("SELECT VEINTE, DIEZ, CINCO, DOS, PESO, CENTAVO, TOTAL FROM TABULADOR_MONEDAS") c = Starter.skmt.ExecQuery("SELECT VEINTE, DIEZ, CINCO, DOS, PESO, CENTAVO, TOTAL FROM TABULADOR_MONEDAS")
d = Starter.skmt.ExecQuery("SELECT RUTAA FROM RUTAA") d = Starter.skmt.ExecQuery("SELECT RUTAA FROM RUTAA")
@@ -1075,7 +1072,7 @@ Sub envioinfo
b.Close b.Close
f.Close f.Close
End If End If
' c = Starter.skmt.ExecQuery("SELECT IFNULL(HVD_RECHAZOCANT,0) AS HVD_RECHAZOCANT, HVD_CLIENTE, HVD_PROID, HVD_FECHA, HVD_CODPROMO, HVD_NUM_TICKET, HVD_CANT, CONSECUTIVO, BCAJAS, CANTC FROM HIST_VENTAS") ' c = Starter.skmt.ExecQuery("SELECT IFNULL(HVD_RECHAZOCANT,0) AS HVD_RECHAZOCANT, HVD_CLIENTE, HVD_PROID, HVD_FECHA, HVD_CODPROMO, HVD_NUM_TICKET, HVD_CANT, CONSECUTIVO, BCAJAS, CANTC FROM HIST_VENTAS")
' If c.RowCount > 0 Then ' If c.RowCount > 0 Then
' For i=0 To c.RowCount -1 ' For i=0 To c.RowCount -1
@@ -1119,7 +1116,6 @@ Sub envioinfo
' End If ' End If
' c.Close ' c.Close
c = Starter.skmt.ExecQuery("SELECT MIL, QUINIENTOS, DOCIENTOS, CIEN, CINCUENTA, VEINTE FROM TABULADOR_BILLETES") c = Starter.skmt.ExecQuery("SELECT MIL, QUINIENTOS, DOCIENTOS, CIEN, CINCUENTA, VEINTE FROM TABULADOR_BILLETES")
d = Starter.skmt.ExecQuery("SELECT RUTAA FROM RUTAA") d = Starter.skmt.ExecQuery("SELECT RUTAA FROM RUTAA")
b = Starter.skmt.ExecQuery("SELECT ID_ALMACEN FROM CAT_ALMACEN") b = Starter.skmt.ExecQuery("SELECT ID_ALMACEN FROM CAT_ALMACEN")
@@ -1132,7 +1128,6 @@ Sub envioinfo
c.Position=i c.Position=i
Dim cmd As DBCommand Dim cmd As DBCommand
Dim fechatabulador() As String = Regex.Split(" ", f.GetString("HVD_FECHA")) Dim fechatabulador() As String = Regex.Split(" ", f.GetString("HVD_FECHA"))
Dim fechatabulador3 As String = fechatabulador(0) Dim fechatabulador3 As String = fechatabulador(0)
cmd.Initialize cmd.Initialize
cmd.Name = "insert_tabulador_billetes_INTMEX" cmd.Name = "insert_tabulador_billetes_INTMEX"
@@ -1144,13 +1139,13 @@ Sub envioinfo
b.Close b.Close
f.Close f.Close
End If End If
'FIN TABULADOR 'FIN TABULADOR
' Dim cmd As DBCommand
Dim cmd As DBCommand ' cmd.Initialize
cmd.Initialize ' cmd.Name = "insert_drop_rep_INTMEX2"
cmd.Name = "insert_drop_rep_INTMEX2" ' cmd.Parameters = Array As Object(Subs.dameUsuarioDeDB, l_ruta.Text, ALMACEN, l_ctast.text, Subs.traeEntregados, Subs.traeRechazados, "ENVIO",Application.VersionName)
cmd.Parameters = Array As Object(Subs.dameUsuarioDeDB, l_ruta.Text, ALMACEN, l_ctast.text, Subs.traeEntregados, Subs.traeRechazados, "ENVIO",Application.VersionName) ' reqManager.ExecuteCommand(cmd , "inst_drop")
reqManager.ExecuteCommand(cmd , "inst_drop")
ToastMessageShow("Se Actualizaran los datos, Este proceso podria tardar hasta un minuto, gracias "& l_ruta.text , True) ToastMessageShow("Se Actualizaran los datos, Este proceso podria tardar hasta un minuto, gracias "& l_ruta.text , True)
End Sub End Sub
@@ -1182,11 +1177,11 @@ Sub cargar_Click
LogColor($"ReqServer = ${B4XPages.MainPage.server}"$, Colors.red) LogColor($"ReqServer = ${B4XPages.MainPage.server}"$, Colors.red)
reqManager.Initialize(Me, B4XPages.MainPage.server) reqManager.Initialize(Me, B4XPages.MainPage.server)
Dim cmd As DBCommand ' Dim cmd As DBCommand
cmd.Initialize ' cmd.Initialize
cmd.Name = "insert_drop_rep_INTMEX2" ' cmd.Name = "insert_drop_rep_INTMEX2"
cmd.Parameters = Array As Object(Subs.dameUsuarioDeDB, l_ruta.Text, ALMACEN, l_ctast.text, Subs.traeEntregados, Subs.traeRechazados, "CARGA",Application.VersionName) ' cmd.Parameters = Array As Object(Subs.dameUsuarioDeDB, l_ruta.Text, ALMACEN, l_ctast.text, Subs.traeEntregados, Subs.traeRechazados, "CARGA",Application.VersionName)
reqManager.ExecuteCommand(cmd , "inst_drop") ' reqManager.ExecuteCommand(cmd , "inst_drop")
' reqs.Add("inst_noventa") ' reqs.Add("inst_noventa")
Starter.skmt.ExecNonQuery("delete from kmt_info") Starter.skmt.ExecNonQuery("delete from kmt_info")
@@ -1309,6 +1304,8 @@ Sub cargar_Click
Log("XXXX") Log("XXXX")
MsgboxAsync("Para poder cargar día no puedes tener venta del día anterior. Por favor haz FIN DIA e intenta nuevamente.","Atención") MsgboxAsync("Para poder cargar día no puedes tener venta del día anterior. Por favor haz FIN DIA e intenta nuevamente.","Atención")
End If End If
Sleep(1000)
Subs.mandaDrop("CARGA", e_ruta.Text)
End Sub End Sub
@@ -2039,11 +2036,12 @@ Sub e_ruta_EnterPressed
If e_ruta.Text = "FIN DIA" Then If e_ruta.Text = "FIN DIA" Then
RES = Msgbox2("Seguro que desea hacer el cierre todos los datos se borraran?","Cierre", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore RES = Msgbox2("Seguro que desea hacer el cierre todos los datos se borraran?","Cierre", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore
If RES = DialogResponse.POSITIVE Then If RES = DialogResponse.POSITIVE Then
Dim cmd As DBCommand ' Dim cmd As DBCommand
cmd.Initialize ' cmd.Initialize
cmd.Name = "insert_drop_rep_INTMEX2" ' cmd.Name = "insert_drop_rep_INTMEX2"
cmd.Parameters = Array As Object(Subs.dameUsuarioDeDB, l_ruta.Text, ALMACEN, l_ctast.text, Subs.traeEntregados, Subs.traeRechazados, "FIN DIA",Application.VersionName) ' cmd.Parameters = Array As Object(Subs.dameUsuarioDeDB, l_ruta.Text, ALMACEN, l_ctast.text, Subs.traeEntregados, Subs.traeRechazados, "FIN DIA",Application.VersionName)
reqManager.ExecuteCommand(cmd , "inst_drop") ' reqManager.ExecuteCommand(cmd , "inst_drop")
Subs.mandaDrop("FIN DIA", l_ruta.Text)
e_ruta.Text = "" e_ruta.Text = ""
Starter.skmt.ExecNonQuery("delete from PICK_CIEGO") Starter.skmt.ExecNonQuery("delete from PICK_CIEGO")

Binary file not shown.

Binary file not shown.

View File

@@ -138,11 +138,6 @@ Sub ENVIA_ULTIMA_GPS
End If End If
End Sub End Sub
Sub IsConnectedToInternet As Boolean 'ignore Sub IsConnectedToInternet As Boolean 'ignore
Dim r As Reflector Dim r As Reflector
r.Target = r.GetContext r.Target = r.GetContext
@@ -155,7 +150,7 @@ Sub IsConnectedToInternet As Boolean 'ignore
End Sub End Sub
Sub JobDone(Job As HttpJob) Sub JobDone(Job As HttpJob)
' LogColor("starter jobdone", Colors.Red) LogColor("starter jobdone", Colors.Red)
' Log(Job.ErrorMessage) ' Log(Job.ErrorMessage)
' Private r As DBResult = reqManager.HandleJob(Job) ' Private r As DBResult = reqManager.HandleJob(Job)
If Job.Success = False Then If Job.Success = False Then
@@ -165,6 +160,6 @@ Sub JobDone(Job As HttpJob)
End If End If
'ToastMessageShow("Error: " & Job.ErrorMessage, True) 'ToastMessageShow("Error: " & Job.ErrorMessage, True)
Else Else
' LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211023 LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211023
End If End If
End Sub End Sub

View File

@@ -1170,3 +1170,13 @@ Sub guardaAppInfo 'ignore
Starter.skmt.ExecNonQuery($"insert into CAT_VARIABLES (CAT_VA_DESCRIPCION, CAT_VA_VALOR) values ('APP_NAME', '${Application.LabelName}')"$) Starter.skmt.ExecNonQuery($"insert into CAT_VARIABLES (CAT_VA_DESCRIPCION, CAT_VA_VALOR) values ('APP_NAME', '${Application.LabelName}')"$)
Starter.skmt.ExecNonQuery($"insert into CAT_VARIABLES (CAT_VA_DESCRIPCION, CAT_VA_VALOR) values ('APP_VERSION', '${Application.VersionName}')"$) Starter.skmt.ExecNonQuery($"insert into CAT_VARIABLES (CAT_VA_DESCRIPCION, CAT_VA_VALOR) values ('APP_VERSION', '${Application.VersionName}')"$)
End Sub End Sub
'Manda a tmp_drop
Sub mandadrop(evento As String, ruta As String)
LogColor($"===> Mandamos a TMP_DROP - ${evento}"$, Colors.red)
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "insert_drop_rep_INTMEX2"
cmd.Parameters = Array As Object(dameUsuarioDeDB, ruta, traeAlmacen, B4XPages.MainPage.principal.l_ctast.text, traeEntregados, traeRechazados, evento, Application.VersionName)
Starter.reqManager.ExecuteCommand(cmd , "inst_drop")
End Sub

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 + " ---")

View File

@@ -1,6 +1,12 @@
Build1=Default,reparto_INTMEX2.keymon.lat,HU2_PUBLIC Build1=Default,reparto_INTMEX2.keymon.lat,HU2_PUBLIC
File1=2023.png File1=2023.png
File10=cliente.bal File10=cliente.bal
File100=UBICARCLIENTE.png
File101=usuario.png
File102=vecteezy_abstract-color-polygon-background-design-abstract-geometric_22231666.jpg
File103=visitaazul.png
File104=visitaazul1.png
File105=visitadosblanco.png
File11=clienteblanco.png File11=clienteblanco.png
File12=clientes.bal File12=clientes.bal
File13=Clientes_visitados.jpg File13=Clientes_visitados.jpg
@@ -61,42 +67,51 @@ File62=mapa_rutas.bal
File63=mariana.jpg File63=mariana.jpg
File64=mariana_logo_192x192.jpg File64=mariana_logo_192x192.jpg
File65=marker-amarillo.png File65=marker-amarillo.png
File66=MARQUEZ_logo_192x192.jpg File66=marker-azul.png
File67=no_venta.bal File67=marker-azul1.png
File68=nuevocliente.bal File68=marker-azul2.png
File69=panel_pick_ciego.bal File69=marker-azul3.png
File7=CALIFICARCLIENTE.png File7=CALIFICARCLIENTE.png
File70=pedido.bal File70=marker-azul4.png
File71=planfia_logo.png File71=marker-azul5.png
File72=planfia_logo_old.png File72=marker-rojo.png
File73=planfia_logo_old2.png File73=marker-rojo1.png
File74=principal.bal File74=marker-rojo2.png
File75=proditem.bal File75=marker-verde.png
File76=proditem2.bal File76=no_venta.bal
File77=productos.bal File77=nuevocliente.bal
File78=profina.jpg File78=panel_pick_ciego.bal
File79=PROFINA.png File79=pedido.bal
File8=check.bal File8=check.bal
File80=rechazos.jpg File80=planfia_logo.png
File81=RECHAZOS.png File81=planfia_logo_old.png
File82=rechazosblanco.png File82=planfia_logo_old2.png
File83=sync.png File83=principal.bal
File84=tabulador.bal File84=proditem.bal
File85=Tabulador.jpg File85=proditem2.bal
File86=TABULADOR.png File86=productos.bal
File87=tabuladorblanco.png File87=profina.jpg
File88=telefonos.bal File88=PROFINA.png
File89=ubicacionblanco.png File89=rechazos.jpg
File9=checklist.bal File9=checklist.bal
File90=Ubicar_clientes.jpg File90=RECHAZOS.png
File91=UBICARCLIENTE.png File91=rechazosblanco.png
File92=usuario.png File92=sync.png
File93=vecteezy_abstract-color-polygon-background-design-abstract-geometric_22231666.jpg File93=tabulador.bal
File94=visitaazul.png File94=Tabulador.jpg
File95=visitaazul1.png File95=TABULADOR.png
File96=visitadosblanco.png File96=tabuladorblanco.png
File97=telefonos.bal
File98=ubicacionblanco.png
File99=Ubicar_clientes.jpg
FileGroup1=Default Group FileGroup1=Default Group
FileGroup10=Default Group FileGroup10=Default Group
FileGroup100=Default Group
FileGroup101=Default Group
FileGroup102=Default Group
FileGroup103=Default Group
FileGroup104=Default Group
FileGroup105=Default Group
FileGroup11=Default Group FileGroup11=Default Group
FileGroup12=Default Group FileGroup12=Default Group
FileGroup13=Default Group FileGroup13=Default Group
@@ -191,6 +206,9 @@ FileGroup93=Default Group
FileGroup94=Default Group FileGroup94=Default Group
FileGroup95=Default Group FileGroup95=Default Group
FileGroup96=Default Group FileGroup96=Default Group
FileGroup97=Default Group
FileGroup98=Default Group
FileGroup99=Default Group
Group=Default Group Group=Default Group
Library1=appupdating Library1=appupdating
Library10=googlemaps Library10=googlemaps
@@ -252,7 +270,7 @@ Module6=C_Cheklist
Module7=C_Cliente Module7=C_Cliente
Module8=C_Clientes Module8=C_Clientes
Module9=C_Detalle_Promo Module9=C_Detalle_Promo
NumberOfFiles=96 NumberOfFiles=105
NumberOfLibraries=27 NumberOfLibraries=27
NumberOfModules=32 NumberOfModules=32
Version=12.8 Version=12.8

View File

@@ -88,7 +88,7 @@ ModuleClosedNodes27=
ModuleClosedNodes28= ModuleClosedNodes28=
ModuleClosedNodes29= ModuleClosedNodes29=
ModuleClosedNodes3= ModuleClosedNodes3=
ModuleClosedNodes30= ModuleClosedNodes30=2
ModuleClosedNodes31= ModuleClosedNodes31=
ModuleClosedNodes32= ModuleClosedNodes32=
ModuleClosedNodes4= ModuleClosedNodes4=
@@ -97,6 +97,6 @@ ModuleClosedNodes6=
ModuleClosedNodes7= ModuleClosedNodes7=
ModuleClosedNodes8= ModuleClosedNodes8=
ModuleClosedNodes9= ModuleClosedNodes9=
NavigationStack=C_Principal,Class_Globals,138,0,Diseñador Visual,login.bal,-100,1,Diseñador Visual,detalleVenta.bal,-100,2,C_Cliente,gest_Click,692,6,C_Principal,imp_LIQUIDACION,3194,0,C_Principal,p_inventario_Click,3211,0,C_Principal,b_regresa_inv_Click,3207,0,C_Principal,B4XPage_CloseRequest,1979,3,Diseñador Visual,principal.bal,-100,6,C_Principal,inventario_Click,2795,6 NavigationStack=Starter,JobDone,156,0,Starter,IsConnectedToInternet,144,0,C_Principal,envia_reparto,855,0,C_Principal,envioinfo,860,6,C_Principal,cargar_Click,1305,3,C_Principal,e_ruta_EnterPressed,2036,5,C_Principal,B4XPage_Created,194,4,Diseñador Visual,principal.bal,-100,6,C_Principal,Class_Globals,139,0,C_Principal,Initialize,144,0
SelectedBuild=0 SelectedBuild=0
VisibleModules=1,2,3,4,5,6,7,8,9,10,17 VisibleModules=30,2,17,7,8,14,31,23