Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
plugins:ejemploplugin [2013/04/03 01:59] 127.0.0.1 editor externo |
plugins:ejemploplugin [2021/07/02 12:37] (actual) fcristina [Implementación de clases del package ar.com.disytel.plugin.reportProvider] |
||
---|---|---|---|
Línea 154: | Línea 154: | ||
Notar que la modificación de la superclase no presenta problema alguno: Esta es la misma clase del ejemplo anterior (el cual implementaba el método **preBeforeSave()**), | Notar que la modificación de la superclase no presenta problema alguno: Esta es la misma clase del ejemplo anterior (el cual implementaba el método **preBeforeSave()**), | ||
+ | |||
+ | |||
+ | ==== Modificacion de las opciones de acciones de documento ==== | ||
+ | |||
+ | Es posible incorporar o eliminar acciones sobre la lista de posibles acciones sobre un documento en particular. | ||
+ | |||
+ | Dicha interface tiene simplemente un método llamando **customizeValidActions()** que recibe la información relevante del documento, las opciones actuales, etc. Dicho método debe retornar el indice actual que referencia al total de opciones válidas. | ||
+ | |||
+ | Se cuenta además con la clase **DocOptionsUtils**, | ||
+ | |||
+ | NOTA: Esta funcionalidad también es válida para una clase que extienda de PO (sin utilizar lógica de plugins), siempre y cuando implemente **DocOptions** y corresponda con el documento que se quiere procesar. | ||
+ | |||
+ | Ejemplo: se requiere modificar las opciones de acción para un Payment. | ||
+ | |||
+ | <code java> | ||
+ | package org.libertya.ejemplo.model | ||
+ | |||
+ | import java.util.Properties; | ||
+ | |||
+ | import org.openXpertya.model.PO; | ||
+ | import org.openXpertya.plugin.MPluginDocAction; | ||
+ | import org.openXpertya.process.DocAction; | ||
+ | import org.openXpertya.process.DocOptions; | ||
+ | import org.openXpertya.util.DocOptionsUtils; | ||
+ | |||
+ | public class MPayment extends MPluginDocAction implements DocOptions { | ||
+ | |||
+ | public MPayment(PO po, Properties ctx, String trxName, String aPackage) { | ||
+ | super(po, ctx, trxName, aPackage); | ||
+ | // TODO Auto-generated constructor stub | ||
+ | } | ||
+ | |||
+ | @Override | ||
+ | public int customizeValidActions(String docStatus, Object processing, | ||
+ | String orderType, String isSOTrx, int AD_Table_ID, | ||
+ | String[] docAction, String[] options, int index) { | ||
+ | |||
+ | // Si se esta completando el documento, incorporar la opción de WaitComplete | ||
+ | if (DocAction.ACTION_Complete.equals(docAction[0])) { | ||
+ | index = DocOptionsUtils.addAction(options, | ||
+ | } else { | ||
+ | // En caso contrario permitir invalidar el documento | ||
+ | index = DocOptionsUtils.addAction(options, | ||
+ | } | ||
+ | // En todos los casos, quitar la accion ReActivate | ||
+ | index = DocOptionsUtils.removeAction(options, | ||
+ | return index; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </ | ||
Línea 248: | Línea 299: | ||
Este package comprende los componentes que redefinen las ventanas //Info// que extienden de **org.openXpertya.apps.search.Info**. | Este package comprende los componentes que redefinen las ventanas //Info// que extienden de **org.openXpertya.apps.search.Info**. | ||
- | Según | + | Según |
* Si la //Info// a redefinir en el plugin es una de las vistas ya construidas para las tablas más frecuentemente usadas (**C_BPartner**, | * Si la //Info// a redefinir en el plugin es una de las vistas ya construidas para las tablas más frecuentemente usadas (**C_BPartner**, | ||
- | * Si la //Info// a redefinir es una modificación de **InfoGeneral** (la vista genérica para cualquier otra tabla), la nueva clase deberá extender de **InfoGeneralPlugin**, a fin de respetar | + | * Si la //Info// a redefinir es una modificación de **InfoGeneral** (la vista genérica para cualquier otra tabla), la nueva clase deberá extender de **Info**, respetando |
Al igual que en los procesos, la redefinición de una ventana implica su completo // | Al igual que en los procesos, la redefinición de una ventana implica su completo // | ||
Línea 430: | Línea 481: | ||
</ | </ | ||
+ | |||
+ | ===== Implementación de clases del package ar.com.disytel.plugin.reportProvider ===== | ||
+ | |||
+ | A partir de la revision r2968, en caso de necesitar incorporar nuevos parámetros a un informe Jasper, pero sin necesidad de redefinir la clase por completo, es posible crear una clase que simplemente se encargue de incorporar al Jasper los parametros adicionales específicos del componente. | ||
+ | |||
+ | Es importante que la clase respete los siguientes: | ||
+ | |||
+ | * Debe tener igual nombre de clase que la existente en Libertya CORE | ||
+ | * Debe implementar la interfaz **org.openXpertya.plugin.report.ReportProviderInterface**, | ||
+ | |||
+ | Este método inyecta dos parámetros: | ||
+ | |||
+ | * **MJasperReport report**: Reporte Jasper al cual podremos incorporarle nuevos parámetros previo a su rellenado. | ||
+ | * **PO po**: El objeto base con la información a imprimir. | ||
+ | |||
+ | Por ejemplo, suponiendo que es necesario incorporar nuevos parámetros para la impresión Jasper de facturas, la clase en CORE es **org.openXpertya.JasperReport.LaunchInvoice**, | ||
+ | |||
+ | <code java> | ||
+ | package ar.com.disytel.plugin.reportProvider; | ||
+ | import org.openXpertya.JasperReport.MJasperReport; | ||
+ | import org.openXpertya.model.MInvoice; | ||
+ | import org.openXpertya.model.PO; | ||
+ | import org.openXpertya.plugin.report.ReportProviderInterface; | ||
+ | |||
+ | public class LaunchInvoice implements ReportProviderInterface { | ||
+ | |||
+ | @Override | ||
+ | public void addReportParametersToLaunch(MJasperReport report, PO po) { | ||
+ | // Agregar los parámetros que necesitemos | ||
+ | report.addParameter(" | ||
+ | report.addParameter(" | ||
+ | } | ||
+ | } | ||
+ | </ | ||