Buongiorno a tutti,
sto sbattendo la testa da un paio di giorni su un problema che dovrebbe essere semplice, ma da solo non ne riesco ad uscire.
Ho il seguente codice sull’evento onInit() di uno screen:
@Subscribe
public void onInit(InitEvent event) {
Soggetti soggetto = null;
ScreenOptions options = event.getOptions();
if (options instanceof MapScreenOptions) {
// Recupera i parametri
if (((MapScreenOptions) options).getParams().get("soggetto") != null) {
soggetto = (Soggetti) ((MapScreenOptions) options).getParams().get("soggetto");
}
}
ValueLoadContext context = ValueLoadContext.create()
.setQuery(ValueLoadContext.createQuery(
"SELECT " +
"e.tenantId, " +
"e.scadenza_madre, " +
"e.data_scadenza, " +
"e.pagamenti_tipi, " +
"e.documenti, " +
"SUM(e.importo-e.importo_pagato_riscosso) " +
"FROM simple_Scadenze e " +
"LEFT JOIN e.documenti d " +
"WHERE d.soggetto =:soggetto OR :soggetto IS NULL " +
"GROUP BY " +
"e.tenantId, " +
"e.scadenza_madre, " +
"e.data_scadenza, " +
"e.pagamenti_tipi, " +
"e.documenti " +
"HAVING SUM(e.importo-e.importo_pagato_riscosso)<>0")
.setParameter("soggetto", soggetto))
.addProperty("tenantId")
.addProperty("scadenza_madre")
.addProperty("data_scadenza")
.addProperty("pagamenti_tipi")
.addProperty("documenti")
.addProperty("saldo")
;
List<KeyValueEntity> lista = dataManager.loadValues(context);
lista.forEach(riga -> {
Scadenze partitaAperta = dataContext.create(Scadenze.class);
partitaAperta.setScadenza_madre(riga.getValue("scadenza_madre"));
partitaAperta.setData_scadenza(riga.getValue("data_scadenza"));
partitaAperta.setDocumenti(riga.getValue("documenti"));
partitaAperta.setPagamenti_tipi(PagamentiTipi.fromId(riga.getValue("pagamenti_tipi")));
partitaAperta.setImporto(riga.getValue("saldo"));
scadenzesDc.getMutableItems().add(partitaAperta);
});
}
In pratica riempio un CollectionContainer collegato ad una Table per mostrare dei dati.
Queste sono le colonne della Table:
<columns>
<column id="tenantId"/>
<column id="data_scadenza"/>
<column id="pagamenti_tipi"/>
<column id="documenti.tipo_documento"/>
<column id="documenti.data_documento" caption="Data documento"/>
<column id="documenti.numero_documento" caption="Numero documento"/>
<column id="documenti.soggetto.denominazione" caption="Denominazione"/>
<column id="importo" align="RIGHT" caption="Importo"/>
</columns>
Funziona tutto perfettamente, ad esclusione della colonna della denominazione, che se la includo mi segnala “Unfetched attribute access error”.
In pratica in questo caso non riesco ad arrivare ai membri di “secondo livello”, in altre parti del programma lo faccio normalmente, quindi le relazioni dovrebbero essere corrette.
L’unica cosa “strana” e’ che cerco di accedere ai membri dal risultato di una query di raggruppamento.
Qualcuno sa darmi un’indicazione?
Grazie
Marco