Añadir pipes de extensión a DocumentStitcher - #2040
Open
daniel89fg wants to merge 1 commit into
Open
daniel89fg wants to merge 1 commit into
daniel89fg wants to merge 1 commit into
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivo
El controlador
DocumentStitcherno 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, yprivateCoreno 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/closeDocumentsAftergenerateNewDocumentBefore/generateNewDocumentAfterEl 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 unreturntemprano o tras unrollback. 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