Conversation
…riante sin JOIN - Elimina LEFT JOIN en queries de neto y documentos (ventas y compras) que multiplicaba d.neto/d.total por el número de líneas del documento. - Elimina SUM(d.neto) innecesario y el GROUP BY d.codalmacen erróneo en getInformeVentasNetoData. - Añade parámetro $withLineAlias a getInformeVentasDataWhere y getInformeComprasDataWhere: cuando es false, el filtro de variante usa una subconsulta IN(...) en lugar de l.referencia (que no existía sin JOIN). - Las queries de unidades mantienen el JOIN con líneas ya que lo necesitan para obtener cantidad y referencia. Fixes #4514 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Corrige el informe ReportBreakdown para que los totales de neto/total y el listado de documentos no se “inflen” por duplicación al unir con líneas, y ajusta el filtro por variante para que funcione también cuando no hay JOIN con líneas.
Changes:
- Elimina el
LEFT JOINcon líneas en consultas de neto y documentos (ventas/compras) para evitar multiplicación de importes. - Simplifica las consultas de neto quitando agregaciones/
GROUP BYincorrectos. - Añade el parámetro
$withLineAliasa los métodosgetInformeVentasDataWhere()/getInformeComprasDataWhere()para alternar entre filtro porl.referencia(con JOIN) o subconsultaIN (...)(sin JOIN).
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| { | ||
| $table = $this->type === 'invoices' ? 'facturasprov' : 'albaranesprov'; | ||
| $line = $this->type === 'invoices' ? 'lineasfacturasprov' : 'lineasalbaranesprov'; | ||
| $code = $this->type === 'invoices' ? 'idfactura' : 'idalbaran'; |
There was a problem hiding this comment.
In getInformeComprasNetoData(), the local variable $code is now unused (it’s computed but never referenced in the SQL after removing the JOIN). Removing it will avoid dead code and potential static analysis warnings; alternatively, if it’s intended for the variant filter, consider reusing/passing it instead of recomputing inside getInformeComprasDataWhere(false).
| $code = $this->type === 'invoices' ? 'idfactura' : 'idalbaran'; |
…riante sin JOIN
Fixes #4514