Skip to content

Añadir pipes de extensión a DocumentStitcher - #2040

Open
daniel89fg wants to merge 1 commit into
NeoRazorX:masterfrom
daniel89fg:document-stitcher-pipes
Open

daniel89fg wants to merge 1 commit into
NeoRazorX:masterfrom
daniel89fg:document-stitcher-pipes

Conversation

@daniel89fg

Copy link
Copy Markdown
Contributor

Motivo

El controlador DocumentStitcher no ofrece ningún punto de extensión alrededor de la agrupación de documentos. Un plugin que necesite preparar o cerrar algo que abarque toda la operación (los cambios de estado de todos los documentos más la generación del nuevo) no tiene forma de engancharse: los pipes existentes (breakDownLines, checkPrototype) son por línea o demasiado tardíos, y privateCore no dispara ninguno.

Hoy la única salida es heredar el controlador desde el plugin y sobrescribir métodos protegidos, lo que duplica lógica del core y se rompe en cada actualización.

El caso concreto: en el plugin StockAvanzado, agrupar varios albaranes genera y borra los movimientos de stock de cada documento por separado, recalculando los saldos de cada referencia una y otra vez. Con un punto de extensión que abarque la operación completa, el plugin puede agrupar ese trabajo y hacerlo una sola vez al final.

Cambio

Se añaden cuatro pipes:

  • closeDocumentsBefore / closeDocumentsAfter
  • generateNewDocumentBefore / generateNewDocumentAfter

El cuerpo de ambos métodos pasa a ejecutarse dentro de un try/finally, de forma que el pipe posterior se dispara también cuando el método sale por un return temprano o tras un rollback. La lógica es exactamente la misma que antes: el diff se ve grande sólo por la reindentación del cuerpo.

Sin este cambio, un plugin no puede cubrir la operación completa mediante extensiones.

🤖 Generated with Claude Code

Permite que los plugins actúen antes y después de agrupar o cerrar
documentos, sin heredar ni duplicar el controlador.

Se añaden cuatro pipes:

- closeDocumentsBefore / closeDocumentsAfter
- generateNewDocumentBefore / generateNewDocumentAfter

El cuerpo de ambos métodos pasa a ejecutarse dentro de un try/finally,
de modo que el pipe posterior se dispara también cuando el método
termina en un return temprano o en un rollback. La lógica no cambia.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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