Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hotfix - API - Filtrar nulos para filtros numéricos #285

Open
wants to merge 2 commits into
base: reporting
Choose a base branch
from

Conversation

jortilles
Copy link
Collaborator

Descripción del Cambio

Cuando un filtro global quiere filtrar por nulos en un campo numérico se produce un error al intentar filtrar por una cadena ''
Se intercepta la consulta y si hay un filtro numérico con el valor '' se sustituye por un filtro de nulo.

Issue(s) resuelto(s)

Pruebas a realizar para validar el cambio

Hacer un informe con un filtro numérico y probar el funcionamiento.

@jortilles jortilles self-assigned this Feb 4, 2025
Copy link
Collaborator

@juanSTIC juanSTIC left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Al añadir el filtro Nulo en campos numéricos, cuando en el informe hay al menos otro filtro de informe, se añade por duplicado en un formato erróneo, este es el resultado:

SELECT `sda_stic_payment_commitments`.`name` as `Nombre` 
FROM sda_stic_payment_commitments
where 1 = 1 
and (`sda_stic_payment_commitments`.`name`  in (' María Ángeles - Transferencia - 85')  ) 
or `sda_stic_payment_commitments`.`amount`  is null 
and (`sda_stic_payment_commitments`.`amount` is null ) 
group by `sda_stic_payment_commitments`.`name`

la primera de las veces que aparece aparece con OR, lo que invalida el resultado.

image

Para reproducirlo

  1. Crear un panel simple basado en compromisos de pago.
  2. Añadir un filtro de informe para el campo Nombre
  3. Añadir un filtro de informe para el campo Importe
  4. Filtrar por el nombre y filtrar por los valores nulos del importe. Verificar la query generada.

Cuando se filtra sobre una misma columna un valor y un nulo es un or. Cuando se filtra sobre columans diferentes es un and. No se estaba haciendo la comprobación bien.
@jortilles jortilles requested a review from juanSTIC February 5, 2025 21:38
@jortilles
Copy link
Collaborator Author

Se ha revisado la lógica y se encuentra el problema. Cuando se filtra por más de un filtro se evalúa si es un and o un or y ahi se pierde. Se ha revisado la lógica y me he dado cuenta de que la lógica era incorrecta. puesto que lo que hay que comprobar es si hay más de un filtro SOBRE LA MISMA COLUMNA. y sólo se comprobaba si hay más de un filtro.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants