Observa bien tu consulta:
Código MySQL:
Ver original colegiaturas.*,
INNER JOIN niveles
ON colegiaturas.idNivel
= niveles.idNivel
INNER JOIN alumnos
ON colegiaturas.idAlumno
= alumnos.idAlumno
INNER JOIN colegiaturas_detalle
ON colegiaturas.idColegiatura
= colegiaturas_detalle.idColegiatura
colegiaturas_detalle.cancelado = '0'
AND colegiaturas_detalle.pagado
= '1' AND colegiaturas.pago
<> '' AND colegiaturas_detalle.folio
LIKE '%di%'
Lo que estás planteando es que cumpla las primeras cuatro condiciones si o sí,
o bien que cumpla la última.
OR es una
disyunción lógica, por lo que es verdadero aquello que cumpla con lo que está a la izquierda del OR y/o lo que está a la derecha. Pero con lo de la derecha alcanza, e ignora todo lo demás...
Lo que te está faltando es manejar correctamente la lógica proposicional.
Para hacer que se cumpla todo, debes definir cual es el par correspondiente al OR.
Su poniendo que sea la última condición, podría ser:
Código MySQL:
Ver original C.*,
INNER JOIN colegiaturas_detalle CD
ON C.idColegiatura
= CD.idColegiatura
CD.cancelado = '0'
Por cierto: Procura usar
alias para facilitar la escritura y lectura, y también escríbelas estructuradamente. Cuando lo haces es más fácil ver los problemas.