- VERSION 5.09.10.2

- Se corrigio que Trade Spending no consideraba los productos fijos de las promos a la hora de afectar el presupuesto.
- Se agregó la validacion de la version de la app desde cat_rutas (CAT_RU_VERSION_REQUERIDA).
- Se agregó el ligar el telefono a una ruta desde cat_rutas (CAT_RU_IDTELEFONO).
This commit is contained in:
2025-09-23 18:27:41 -06:00
parent ae8ac63b1d
commit e6455d8147
8 changed files with 154 additions and 56 deletions

View File

@@ -46,7 +46,8 @@ Public Sub Initialize (PageObject As Object, NameOfEvent As String, AppLogger As
' Inicializamos el DBRequestManager para las comunicaciones con el servidor.
' 'Me' indica que el evento JobDone de esta clase se encargará de las respuestas de reqManager.
' reqManager.Initialize(Me, Starter.DBReqServer)
reqManager.Initialize(Me, "http://keymon.net:9010/DB2") 'Servidor de pruebas
' reqManager.Initialize(Me, "http://keymon.net:9010/DB2") 'Servidor de pruebas
reqManager.Initialize(Me, "http://keymon.net:1781") 'Servidor productivo
If logger Then Log("DBRequestManager para DeviceLinker inicializado.")
If logger Then Log("DeviceLinker inicializado y listo para operar.")
@@ -110,7 +111,7 @@ Public Sub JobDone(Job As HttpJob) ' El nombre del sub debe ser 'JobDone' o el q
If Job.Success = False Then
lastJobDoneError = Job.ErrorMessage
LogColor("############################################", Colors.red)
LogColor("###### JobError: " & Job.Tag & CRLF & Job.ErrorMessage, Colors.red)
LogColor("###### JobError: " & Job.Tag & " ######" & CRLF & "#### " & Job.ErrorMessage, Colors.red)
LogColor("############################################", Colors.red)
' Enviar una respuesta de error HTTP al callback.
If SubExists(CallBack, EventName & "_Response") Then
@@ -125,43 +126,59 @@ Public Sub JobDone(Job As HttpJob) ' El nombre del sub debe ser 'JobDone' o el q
If logger Then LogColor($"Petición exitosa al servidor. Registros devueltos: ${result.Rows.Size}"$, Colors.Green)
If result.Tag = "hist_cliente_promos" Then 'query tag
Starter.skmt.BeginTransaction
For Each records() As Object In result.Rows
Dim HCCP_CLIENTE As String = records(result.Columns.Get("HCCP_CLIENTE"))
Starter.skmt.ExecNonQuery2("INSERT INTO HIST_CLIENTE_CANT_PROMOS(HCCP_CLIENTE, HCCP_PROMO, HCCP_CANT, HCCP_CANT_VENDIDA) VALUES (?,?,?,?)", Array As Object (HCCP_CLIENTE))
Next
Starter.skmt.TransactionSuccessful
Starter.skmt.EndTransaction
' ToastMessageShow(" Historico Clientes Promociones Actualizado." , True)
End If
' If result.Tag = "hist_cliente_promos" Then 'query tag
' Starter.skmt.BeginTransaction
' For Each records() As Object In result.Rows
' Dim HCCP_CLIENTE As String = records(result.Columns.Get("HCCP_CLIENTE"))
' Starter.skmt.ExecNonQuery2("INSERT INTO HIST_CLIENTE_CANT_PROMOS(HCCP_CLIENTE, HCCP_PROMO, HCCP_CANT, HCCP_CANT_VENDIDA) VALUES (?,?,?,?)", Array As Object (HCCP_CLIENTE))
' Next
' Starter.skmt.TransactionSuccessful
' Starter.skmt.EndTransaction
' ' ToastMessageShow(" Historico Clientes Promociones Actualizado." , True)
' End If
If result.Tag = "verify_device" Then 'query tag
' Aquí es donde la lógica de la aplicación interpreta el éxito/falla de la operación en el servidor.
' No usamos result.Success porque DBResult no tiene esa propiedad.
' En su lugar, comprobamos si se devolvieron filas y el campo 'status' dentro de los datos.
If result.Rows.Size > 0 Then
Subs.logJobDoneResultados(result)
For Each records() As Object In result.Rows
Dim Status As String = records(result.Columns.Get("ESTATUS"))
Dim GUID As String = records(result.Columns.Get("GUID"))
If deviceId <> GUID Then Status = "ALREADY_REGISTERED" ' Ya existe OTRO registro.
Dim Status As String = "" 'records(result.Columns.Get("ESTATUS"))
Dim CAT_RU_IDTELEFONO As String = records(result.Columns.Get("CAT_RU_IDTELEFONO"))
Log($"|${deviceId}|${CAT_RU_IDTELEFONO}|"$)
' If deviceId <> CAT_RU_IDTELEFONO Then Status = "YA_REGISTRADO" ' Ya existe OTRO registro.
If CAT_RU_IDTELEFONO = 0 Or CAT_RU_IDTELEFONO.Length < 5 Then
Log(">>> NUEVO")
' Status = "REGISTRO_NUEVO"
Dim cmd As DBCommand ' Creamos un comando para enviar al servidor.
cmd.Initialize
cmd.Name = "registarMovil"
' Pasamos el almacén, la ruta y el GUID del dispositivo como parámetros.
cmd.Parameters = Array As Object(deviceId, almacen, ruta)
reqManager.ExecuteCommand(cmd, "registramosGUID")
If SubExists(CallBack, EventName & "_Response") Then
CallSub2(CallBack, EventName & "_Response", "REGISTRO_NUEVO")
End If
else if CAT_RU_IDTELEFONO = deviceId Then
Status = "OK"
Else
Status = "YA_REGISTRADO"
End If
' Invocamos el callback en el módulo principal con el estado.
If SubExists(CallBack, EventName & "_Response") Then
CallSub2(CallBack, EventName & "_Response", Status)
End If
Next
Else
If logger Then LogColor($"El servidor respondió con éxito, pero no encontró registros.${CRLF}Quiere decir que la ruta NO esta registrada en el servidor."$, Colors.Red)
Dim cmd As DBCommand ' Creamos un comando para enviar al servidor.
cmd.Initialize
cmd.Name = "registarMovil"
' Pasamos el almacén, la ruta y el GUID del dispositivo como parámetros.
cmd.Parameters = Array As Object(almacen, ruta, deviceId)
reqManager.ExecuteCommand(cmd, "registramosGUID")
If SubExists(CallBack, EventName & "_Response") Then
CallSub2(CallBack, EventName & "_Response", "NO_REGISTRADO")
End If
' Else
' If logger Then LogColor($"El servidor respondió con éxito, pero no encontró registros.${CRLF}Quiere decir que la ruta NO esta registrada en el servidor."$, Colors.Red)
' Dim cmd As DBCommand ' Creamos un comando para enviar al servidor.
' cmd.Initialize
' cmd.Name = "registarMovil"
' ' Pasamos el almacén, la ruta y el GUID del dispositivo como parámetros.
' cmd.Parameters = Array As Object(almacen, ruta, deviceId)
' reqManager.ExecuteCommand(cmd, "registramosGUID")
' If SubExists(CallBack, EventName & "_Response") Then
' CallSub2(CallBack, EventName & "_Response", "NO_REGISTRADO")
' End If
End If
End If