Skip to content

Añadir PartidaReclassifier: reclasificar partidas a otra subcuenta#2011

Open
lanzalibre wants to merge 1 commit into
NeoRazorX:masterfrom
lanzalibre:feature/partida-reclassifier
Open

Añadir PartidaReclassifier: reclasificar partidas a otra subcuenta#2011
lanzalibre wants to merge 1 commit into
NeoRazorX:masterfrom
lanzalibre:feature/partida-reclassifier

Conversation

@lanzalibre

@lanzalibre lanzalibre commented Jul 16, 2026

Copy link
Copy Markdown

Descripción

Añade Core/Lib/Accounting/PartidaReclassifier: reclasificación de partidas ya contabilizadas a otra subcuenta del mismo ejercicio, opcionalmente reescribiendo el concepto:

PartidaReclassifier::move([$idpartida1, $idpartida2], $nuevaSubcuenta, 'Concepto nuevo');

Motivación: corregir la subcuenta de apuntes ya contabilizados (gasto mal clasificado, reclasificaciones de cierre, etc.) hoy obliga a borrar y recrear el asiento o a editar la base de datos a mano. Esta clase lo hace de forma segura:

  • comprueba que la subcuenta de destino pertenece al mismo ejercicio que cada asiento;
  • respeta las comprobaciones del modelo (Partida::save(): ejercicio abierto y asiento editable);
  • es transaccional: o se mueven todas las partidas o ninguna;
  • actualiza los saldos de las subcuentas de origen y destino con Subcuenta::updateBalance().

Tests unitarios incluidos (Test/Core/Lib/PartidaReclassifierTest.php)

  1. testMoveLine — mueve una partida a otra subcuenta y comprueba idsubcuenta/codsubcuenta, que el concepto se conserva y que los saldos de origen (a cero) y destino (suma) se actualizan.
  2. testMoveLineWithNewConcept — mueve reescribiendo el concepto y lo comprueba.
  3. testRejectDifferentExercise — crea otro ejercicio con su subcuenta y comprueba que el movimiento se rechaza y la partida no cambia.
  4. testRejectEmptyList — lista vacía de partidas devuelve false.

¿Cómo has probado los cambios?

  • He revisado mi código antes de enviarlo.
  • He probado que funciona correctamente en mi PC.
  • He probado que funciona correctamente con una base de datos vacía.
  • He ejecutado los tests unitarios (los 4 nuevos pasan; phpcs sin avisos).

Mueve una o varias partidas a otra subcuenta del mismo ejercicio,
opcionalmente reescribiendo el concepto, dentro de una transacción y
actualizando los saldos de las subcuentas de origen y destino.
@lanzalibre
lanzalibre force-pushed the feature/partida-reclassifier branch from b47ae23 to b602a43 Compare July 16, 2026 18:43
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.

1 participant