solop-develop / adempiere-grpc-server

ADempiere gRPC Server example of integration
GNU General Public License v2.0
0 stars 9 forks source link

error: Cambiar Vista de Reporte no filtra los registros #30

Open EdwinBetanc0urt opened 2 years ago

EdwinBetanc0urt commented 2 years ago

Pasos para reproducir

  1. Iniciar sesión con GardenAdmin.
  2. Buscar el reporte Detalles de Entrega.
  3. Generar el reporte con los parámetros por defecto.
  4. Cambiar la vista del reporte a RV_InOutDetails Receive.
  5. Luego cambiar la vista del reporte a RV_InOutDetails Ship.

Capturas de pantalla

https://user-images.githubusercontent.com/20288327/176188677-262864a2-98eb-4c26-b593-8e4a62055b10.mp4

Comportamiento esperado

La cantidad de registros mostrado en el reporte debe variar en función de la vista del reporte seleccionado.

https://user-images.githubusercontent.com/20288327/176190672-601b7097-d908-4572-bfc0-9f38ff9c2158.mp4

EdwinBetanc0urt commented 2 years ago

En el backend la salida del reporte se genera desde el método createOutput https://github.com/solop-develop/backend/blob/experimental/src/main/java/org/spin/grpc/service/UserInterfaceServiceImplementation.java#L1555 llamando al constructor ReportExportHandler.

@yamelsenih Se debe cambiar el core de adempiere, en la linea 40 (https://github.com/adempiere/adempiere/blob/develop/base/src/org/spin/util/ReportExportHandler.java#L40) de la clase ReportExportHandler

reportView = MReportView.get(ctx, reportEngine.getPrintFormat().getAD_ReportView_ID());

Por una lógica que permita dar sobrescribir o dar prioridad al reportView establecido en el report engine sobre el reportView del formato de impresión, similar a:

// set default of print format
int reportViewId = reportEngine.getPrintFormat().getAD_ReportView_ID();
if (reportEngine.getAD_ReportView_ID() > 0) {
  // overwrite with report engine
  reportViewId = reportEngine.getAD_ReportView_ID();
}
reportView = MReportView.get(ctx, reportViewId);

O también:

// priority of the report engine
int reportViewId = reportEngine.getAD_ReportView_ID();
if (reportViewId <= 0) {
  // set default of print format
  reportViewId = reportEngine.getPrintFormat().getAD_ReportView_ID();
}
reportView = MReportView.get(ctx, reportViewId);
yamelsenih commented 1 year ago

Esto lo haré en los próximos cambios de prs de ADempiere