diff --git a/B4A/B4XMainPage.bas b/B4A/B4XMainPage.bas index b637e17..a4e8f7b 100644 --- a/B4A/B4XMainPage.bas +++ b/B4A/B4XMainPage.bas @@ -491,8 +491,8 @@ Sub Entrar_Click Starter.skmt.ExecNonQuery2("INSERT INTO USUARIOA VALUES (?,?,?)", Array As Object(user.Text, pass.Text, DateTime.Date(DateTime.Now))) Starter.skmt.ExecNonQuery("delete from cat_almacen") Starter.skmt.ExecNonQuery2("INSERT INTO CAT_ALMACEN(ID_ALMACEN) VALUES (?)", Array As Object (pass.Text)) - Starter.skmt.ExecNonQuery("delete from VERSION") - Starter.skmt.ExecNonQuery2("INSERT INTO VERSION(NOVERSION) VALUES (?)", Array As Object ("2.95")) +' Starter.skmt.ExecNonQuery("delete from VERSION") +' Starter.skmt.ExecNonQuery2("INSERT INTO VERSION(NOVERSION) VALUES (?)", Array As Object ("2.95")) B4XPages.ShowPage("Principal") End If ' c=Starter.skmt.ExecQuery2("select count(*) as EXISTE1 from usuarioa where usuario = ?", Array As String(user.Text)) @@ -1038,12 +1038,13 @@ Private Sub ImageView1_LongClick ' Log("traeConexion") ' Private reqManagerX As DBRequestManager -' reqManagerX.Initialize(Me, "http://keymon.net:9010/DB2") +' reqManagerX.Initialize(Me, "http://keymon.net:9010") ' Private cmdX As DBCommand ' cmdX.Initialize -' cmdX.Name = "traeConexion" -' cmdX.Parameters = Array As Object() -' reqManagerX.ExecuteQuery(cmdX, 0, "traeConexion") +' cmdX.Name = "update_usuario_guna_nobajas" +' cmdX.Parameters = Array As Object("CDAZA") +' reqManagerX.Executequery(cmdX, 0, "traeConexion") + If Subs.traeAlmacen <> "" Then linker.VerifyAndLinkDevice(Subs.traeAlmacen, Subs.traeRuta) End If @@ -1070,27 +1071,29 @@ Sub Linker_Response(Status As String) ' << AÑADE ESTE SUB [New Query] If Starter.Logger Then LogColor($"Respuesta de DeviceLinker para la verificación del dispositivo: ${Status}"$, Colors.Magenta) ' Select Status Case "UUID_ERROR" + Log("Error interno al obtener el identificador único del dispositivo.") ToastMessageShow("Error interno al obtener el identificador único del dispositivo.", True) Case "HTTP_ERROR" LogColor("Error HTTP al verificar el dispositivo: " & linker.lastJobDoneError, Colors.Red) ToastMessageShow("Error de conexión al servidor durante la verificación del dispositivo.", True) Case "SERVER_LOGIC_ERROR" + Log("El servidor no proporcionó un estado de verificación válido. Contacte a soporte.") ToastMessageShow("El servidor no proporcionó un estado de verificación válido. Contacte a soporte.", True) Case "OK" - If Starter.Logger Then Log("Dispositivo ligado y verificado exitosamente.") + Log("Dispositivo ligado y verificado exitosamente.") ToastMessageShow("Dispositivo verificado y ligado correctamente.", False) ' Aquí puedes añadir lógica adicional si la verificación es exitosa, por ejemplo, habilitar ciertos botones o continuar con el flujo normal. Case "NO_REGISTRADO" - If Starter.Logger Then Log("Dispositivo NO registrado.") + Log("Dispositivo NO registrado.") ToastMessageShow("Dispositivo NO registrado.", False) Case "REGISTRO_NUEVO" - If Starter.Logger Then Log("¡¡Registro nuevo!!") + Log("¡¡Registro nuevo!!") ToastMessageShow("¡¡Registro nuevo!!", False) - Case "ALREADY_REGISTERED" - If Starter.Logger Then Log("¡¡El dispositivo ya esta registrado con otra ruta!!") + Case "YA_REGISTRADO" + Log("¡¡El dispositivo ya esta registrado con otra ruta!!") ToastMessageShow("¡¡El dispositivo ya esta registrado con otra ruta!!", True) Case Else ' Otros estados que tu servidor pueda devolver (ej. "UNAUTHORIZED", "PENDING_APPROVAL") - If Starter.Logger Then Log($"Estado de verificación del dispositivo: ${Status}"$) + Log($"Estado de verificación del dispositivo: ${Status}"$) ToastMessageShow($"Verificación del dispositivo: ${Status}"$, True) ' Puedes decidir si bloquear la funcionalidad o mostrar un mensaje específico según el estado. End Select diff --git a/B4A/C_Cliente.bas b/B4A/C_Cliente.bas index f9dcc00..00b998d 100644 --- a/B4A/C_Cliente.bas +++ b/B4A/C_Cliente.bas @@ -910,7 +910,7 @@ Sub GPS_LocationChanged (Location1 As Location) If Not(clienteDeudor) Then B_VENTA.Visible = True 'Si el cliente no tiene adeudo, habilitamos el boton de venta If Not(clienteId.StartsWith("N")) And la_cuenta.Text <> "0" Then b_noVenta.Visible = True 'Ni cliente nuevo, ni abordo. - Log("NoVenta False") +' Log("NoVenta False") End If If Not(p_rechazoDOE.Visible) Then pedido_doe_muestra Else diff --git a/B4A/C_Principal.bas b/B4A/C_Principal.bas index f380748..8e43e07 100644 --- a/B4A/C_Principal.bas +++ b/B4A/C_Principal.bas @@ -218,6 +218,7 @@ Sub Class_Globals Type TCuantos (query As String, esperados As Int, guardados As Int) Dim validaCuantos As TCuantos Dim ts As C_TrendSpending + Dim linker As C_deviceLinker End Sub 'You can add more parameters here. @@ -321,6 +322,7 @@ End Sub Sub B4XPage_Appear ' Log(Subs.traeDiaSemana) + linker.Initialize(Me, "Linker", True) Starter.errorConnDBReq = False connecta.TextColor = Colors.White StartBluetooth @@ -1773,11 +1775,17 @@ Sub JobDone(Job As HttpJob) ' Subs.logJobDoneResultados(RESULT) For Each records() As Object In RESULT.Rows Starter.skmt.ExecNonQuery("delete from VERSION") - Dim CAT_VE_VERSION As String = records(RESULT.Columns.Get("CAT_VE_VERSION")) - Log(">>>>>>> Version minima: " & CAT_VE_VERSION & " - Actual: " & Application.VersionName & " --> " & Subs.comparaVersiones(CAT_VE_VERSION, Application.VersionName)) + Dim CAT_RU_VERSION_REQUERIDA As String = records(RESULT.Columns.Get("CAT_RU_VERSION_REQUERIDA")) + Log(">>>>>>> Version requerida: " & CAT_RU_VERSION_REQUERIDA & " - Actual: " & Application.VersionName & " --> " & Subs.comparaVersiones(CAT_RU_VERSION_REQUERIDA, Application.VersionName)) Starter.skmt.ExecNonQuery("delete from VERSION") - Starter.skmt.ExecNonQuery2("INSERT INTO VERSION(NOVERSION) VALUES (?)", Array As Object (CAT_VE_VERSION)) + Starter.skmt.ExecNonQuery2("INSERT INTO VERSION(NOVERSION) VALUES (?)", Array As Object (CAT_RU_VERSION_REQUERIDA)) Next + If CAT_RU_VERSION_REQUERIDA = 0 Or Subs.comparaVersiones(CAT_RU_VERSION_REQUERIDA, Application.VersionName) = 0 Then + connecta3 + Else + Msgbox2("Es necesario actualizar la versión de la aplicación.", "VERSION INCORRECTA","Aceptar", "", "",Null) 'ignore +' ExitApplication + End If End If If RESULT.Tag = "count_cli" Then 'query tag @@ -2248,10 +2256,23 @@ Sub connecta_Click reqManager.trackInit + linker.VerifyAndLinkDevice(Subs.traeAlmacen, Subs.traeRuta) + +' Else +' Msgbox("LA RUTA NO ES CORRECTA","") 'ignore +' End If +End Sub + +Sub connecta2 Dim cmd As DBCommand cmd.Initialize cmd.Name = "select_version_KELL" + cmd.Parameters = Array As Object(ALMACEN, e_ruta.text) reqManager.ExecuteQuery(cmd , 0, "version") +End Sub + + +Sub connecta3 Dim cmd As DBCommand cmd.Initialize cmd.Name = "select_ruta4_KELL" @@ -2262,9 +2283,6 @@ Sub connecta_Click If e_ruta.Text = "KMTSKLL1" Then e_ruta.Enabled = True ToastMessageShow("Validando Conexión." , False) ruta_valida = e_ruta.Text -' Else -' Msgbox("LA RUTA NO ES CORRECTA","") 'ignore -' End If End Sub Private Sub connecta_LongClick @@ -3877,4 +3895,39 @@ End Sub Private Sub l_efectiva_Click l_descripcion.Text = "Clientes visitados / Clientes totales" l_descripcion.Visible = True +End Sub + +Sub Linker_Response(Status As String) ' << AÑADE ESTE SUB [New Query] + If Starter.Logger Then LogColor($"Respuesta de DeviceLinker para la verificación del dispositivo: ${Status}"$, Colors.Magenta) ' + Select Status + Case "UUID_ERROR" + Log("Error interno al obtener el identificador único del dispositivo.") + ToastMessageShow("Error interno al obtener el identificador único del dispositivo.", True) + Case "HTTP_ERROR" + LogColor("Error HTTP al verificar el dispositivo: " & linker.lastJobDoneError, Colors.Red) + ToastMessageShow("Error de conexión al servidor durante la verificación del dispositivo.", True) + Case "SERVER_LOGIC_ERROR" + Log("El servidor no proporcionó un estado de verificación válido. Contacte a soporte.") + ToastMessageShow("El servidor no proporcionó un estado de verificación válido. Contacte a soporte.", True) + Case "OK" + Log("Dispositivo ligado y verificado exitosamente.") + ToastMessageShow("Dispositivo verificado y ligado correctamente.", False) + ' Aquí puedes añadir lógica adicional si la verificación es exitosa, por ejemplo, habilitar ciertos botones o continuar con el flujo normal. + connecta2 +' Case "NO_REGISTRADO" +' Log("Dispositivo NO registrado.") +' ToastMessageShow("Dispositivo NO registrado.", False) + Case "REGISTRO_NUEVO" + Log("¡¡Registro nuevo!!") + connecta2 + ToastMessageShow("¡¡Registro nuevo!!", False) + Case "YA_REGISTRADO" + Log("¡¡El dispositivo ya esta registrado con otra ruta!!") + ToastMessageShow("¡¡El dispositivo ya esta registrado con otra ruta!!", True) + Msgbox2("Ruta registrada en otro dispositivo", "RUTA INCORRECTA","Aceptar", "", "",Null) 'ignore + Case Else ' Otros estados que tu servidor pueda devolver (ej. "UNAUTHORIZED", "PENDING_APPROVAL") + Log($"Estado de verificación del dispositivo: ${Status}"$) + ToastMessageShow($"Verificación del dispositivo: ${Status}"$, True) + ' Puedes decidir si bloquear la funcionalidad o mostrar un mensaje específico según el estado. + End Select End Sub \ No newline at end of file diff --git a/B4A/C_Promos.bas b/B4A/C_Promos.bas index bf25747..d66c83e 100644 --- a/B4A/C_Promos.bas +++ b/B4A/C_Promos.bas @@ -476,9 +476,21 @@ Private Sub b_terminar1_Click cuentaProds Private elMontoTSDeLaVenta As String = 0 ' Log("====================================================================") -' Log($"${prodsIds}${CRLF}${prodsCants}${CRLF}${prodsPrecios}"$) + Log($"${prodsIds}${CRLF}${prodsCants}${CRLF}${prodsPrecios}"$) For t = 0 To prodsIds.Size - 1 'Guardamos los productos fijos de la promocion en pedido. Private pn As String = Subs.traeProdNombre(prodsIds.Get(t)) + + Private idProdFijo As String = prodsIds.Get(t) + Private cantProdFijo As Int = prodsCants.Get(t) + +' ' Asumimos que el índice 0 es el encabezado de la promoción (estaPromo) y no tiene bonificación de producto. + If t > 0 Then + Private bonificacion_monto As String = ts.traeMontoBonificacion(idProdFijo, estaPromo) + Log(bonificacion_monto) + elMontoTSDeLaVenta = elMontoTSDeLaVenta + (bonificacion_monto * cantProdFijo) + Log($"TS Fijo Acumulado: ${elMontoTSDeLaVenta}, Prod: ${idProdFijo}"$) + End If + If prodsCants.Get(t) > 0 Then Subs.guardaProductoSinGestion(estaPromo, prodsPrecios.Get(t), prodsCants.Get(t), pn, prodsIds.Get(t), Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, Starter.tipov) Next For t = 0 To prodsIds2.Size - 1 'Guardamos los productos variables de la promocion en pedido. @@ -503,6 +515,18 @@ Private Sub b_continuar_Click Log($"${prodsIds}${CRLF}${prodsCants}${CRLF}${prodsPrecios}"$) For t = 0 To prodsIds.Size - 1 'Guardamos los productos fijos de la promocion en pedido. Private pn As String = Subs.traeProdNombre(prodsIds.Get(t)) + + Private idProdFijo As String = prodsIds.Get(t) + Private cantProdFijo As Int = prodsCants.Get(t) + +' ' Asumimos que el índice 0 es el encabezado de la promoción (estaPromo) y no tiene bonificación de producto. + If t > 0 Then + Private bonificacion_monto As String = ts.traeMontoBonificacion(idProdFijo, estaPromo) + Log(bonificacion_monto) + elMontoTSDeLaVenta = elMontoTSDeLaVenta + (bonificacion_monto * cantProdFijo) + Log($"TS Fijo Acumulado: ${elMontoTSDeLaVenta}, Prod: ${idProdFijo}"$) + End If + Subs.guardaProductoSinGestion(estaPromo, prodsPrecios.Get(t), prodsCants.Get(t), pn, prodsIds.Get(t), Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, Starter.tipov) Next For t = 0 To prodsIds2.Size - 1 'Guardamos los productos variables de la promocion en pedido. diff --git a/B4A/C_deviceLinker.bas b/B4A/C_deviceLinker.bas index aa8a19b..38b97f1 100644 --- a/B4A/C_deviceLinker.bas +++ b/B4A/C_deviceLinker.bas @@ -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 diff --git a/B4A/KelloggsV4.b4a b/B4A/KelloggsV4.b4a index 30e1b73..f9fa516 100644 --- a/B4A/KelloggsV4.b4a +++ b/B4A/KelloggsV4.b4a @@ -917,7 +917,7 @@ Version=12.8 #Region Project Attributes #ApplicationLabel: Kelloggs Venta #VersionCode: 3000 - #VersionName: 5.09.10 + #VersionName: 5.09.10.1 #SupportedOrientations: portrait #CanInstallToExternalStorage: False #BridgeLogger:true diff --git a/B4A/KelloggsV4.b4a.meta b/B4A/KelloggsV4.b4a.meta index e57018b..9bfb7e6 100644 --- a/B4A/KelloggsV4.b4a.meta +++ b/B4A/KelloggsV4.b4a.meta @@ -67,14 +67,14 @@ ModuleBreakpoints7= ModuleBreakpoints8= ModuleBreakpoints9= ModuleClosedNodes0= -ModuleClosedNodes1=6,8,46,47 +ModuleClosedNodes1=6,46,47 ModuleClosedNodes10= ModuleClosedNodes11= -ModuleClosedNodes12=3,5,6 +ModuleClosedNodes12=3,5 ModuleClosedNodes13=7,8,9,10,11,12 ModuleClosedNodes14=6,7,8,9,12,13 ModuleClosedNodes15= -ModuleClosedNodes16=3,7,8,15,17 +ModuleClosedNodes16=3,8,17 ModuleClosedNodes17= ModuleClosedNodes18= ModuleClosedNodes19=7,8,9,10,11,12,13,14 @@ -92,7 +92,7 @@ ModuleClosedNodes29= ModuleClosedNodes3=1,3,5,6 ModuleClosedNodes30= ModuleClosedNodes31= -ModuleClosedNodes32=114,116 +ModuleClosedNodes32=116 ModuleClosedNodes33= ModuleClosedNodes4= ModuleClosedNodes5= @@ -100,6 +100,6 @@ ModuleClosedNodes6= ModuleClosedNodes7= ModuleClosedNodes8= ModuleClosedNodes9= -NavigationStack=C_Cliente,GPS_LocationChanged,906,0,C_Cliente,B4XPage_Appear,552,6,Diseñador Visual,cliente.bal,-100,6,Diseñador Visual,principal.bal,-100,2,C_Principal,cargar_Click,837,0,C_Principal,B4XPage_Appear,539,6,kms_helperSubs,traeRuta,748,0,C_deviceLinker,Initialize,43,0,C_deviceLinker,VerifyAndLinkDevice,64,0,B4XMainPage,ImageView1_LongClick,1041,0 +NavigationStack=C_Principal,JobDone,1779,0,B4XMainPage,B4XPage_Appear,392,0,B4XMainPage,Label4_Click,1062,0,B4XMainPage,Linker_Response,1063,3,C_Principal,l_efectiva_Click,3892,0,C_Principal,Class_Globals,214,0,C_Principal,B4XPage_Created,312,0,C_Principal,B4XPage_Appear,321,0,C_Principal,Linker_Response,3917,6,C_deviceLinker,JobDone,132,6,C_deviceLinker,Initialize,44,0 SelectedBuild=0 -VisibleModules=31,1,12,5,16,26,3,32,13,14,8,33,10,28 +VisibleModules=31,1,12,5,16,26,3,32,13,14,8,33,10,28,19 diff --git a/C_TrendSpending.bas b/C_TrendSpending.bas index 301f1a5..4b4f257 100644 --- a/C_TrendSpending.bas +++ b/C_TrendSpending.bas @@ -337,6 +337,7 @@ Sub traeBonificacionesMaximas(tipo As String, clienteId As String, id As String, Log($"Presupuesto disponible: ${tsRestantes}"$) Log($"Cantidad: ${laCant}"$) Log($"Floor(tsRestantes / (tsMonto * laCant))= ${Floor(tsRestantes / (tsMonto * laCant))}"$) + Log($"Floor(${tsRestantes} / (${tsMonto} * ${laCant}))= ${Floor(tsRestantes / (tsMonto * laCant))}"$) If tsMonto > 0 Then tsMaximas = Floor(tsRestantes / (tsMonto * laCant)) End If @@ -359,7 +360,7 @@ Sub traeMontoBonificacion(id As String, promoId As String) As String tsMonto = c.GetString("CAT_GP_PRECIO") ' Precio original. End If ' Log("PRECIOB: " & c.GetInt("CAT_DP_PRECIOB")) -' Log($"Precio normal: ${c.GetString("CAT_GP_PRECIO")}, Precio desc: ${c.GetString("CAT_DP_PRECIO")}, Monto bonificacion: ${tsMonto}"$) + Log($"Precio normal: ${c.GetString("CAT_GP_PRECIO")}, Precio desc: ${c.GetString("CAT_DP_PRECIO")}, Monto bonificacion: ${tsMonto}"$) End If ' Log("ROWCOUNT: " & c.RowCount) Return tsMonto