#34161
Federico Cristina
Superadministrador

Luis,

Parece que se nos pasó este thread!

Quote:
Necesitamos lanzar varios reportes hechos en Jasper desde la ventana Entidad Comercial, por ejemplo: Cuenta Corriente del Cliente, Facturas adeudadas, Articulos mas comprados, etc..

Lo más sencillo sería tener un botón por cada informe a disparar. Sin embargo, si la intención es que con un botón directamente se disparen varios reportes, deberías implementar un proceso que invoque a todos los procesos restantes.

La nueva clase VPluginInstallerUtils del release 10.03 hace uso de esta funcionalidad. El método doPostInstall(), invoca desde código la ejecución de otro proceso.

Code:
/* Insertar el parametro para el XML */
ProcessInfo pi = new ProcessInfo( ” Post Instalacion “, postInstallProcessId);
ProcessInfoParameter xtraParam = new ProcessInfoParameter(PluginConstants.XML_CONTENT_PARAMETER_NAME, xml, null, null, null);
pi.setParameter(addToArray(pi.getParameter(), xtraParam));

/* Habilitar al usuario System para que pueda disparar el postinstall */
postInstallprocessAccess(ctx, trxName, postInstallProcessId);

/* Invocar la ejecución del proceso, si el mismo devuelve null es porque se cancelo en los parametros */
ProcessCtl worker = ProcessCtl.process(installer, installer.getM_WindowNo(), pi, Trx.getTrx(trxName));

Tené en cuenta que para cada proceso invocado, se abrirá la ventana de diálogo correspondiente a los parámetros requeridos por el proceso (en caso que de que los mismos tengan definidos parámetros).

Para “inyectar” los parámetros por código y que directamente no se presente la ventana de diálogo, deberías utilizar alguno de los métodos execute() de la clase MProcess. Por ejemplo algo así:

Code:
// setear los parámetros
HashMap params = new HashMap();
params.put(“Parametro 1”, XXX);

params.put(“Parametro X”, XXX);

// ejecutar el proceso
MProcess.execute(getCtx(), launchProcessId, params, get_TrxName());

Quote:
Estos reportes los deberia largar desde un boton y que no abran ningun proceso de seleccion sino que use los argumentos de la ventana, como id de EC, para no tener que seleccionar nada, sino que el reporte salga directo

Para ésto, fijate por ejemplo la clase LaunchInvoice (impresión de factura), en el prepare() recupera la tabla y registro donde se encuentra el usuario en ese momento:

Code:
AD_Table_ID = getTable_ID();
AD_Record_ID = getRecord_ID();

Saludos!