Blog

formulaColumn parametriche

formulaColumn parametriche

Le formulaColumn sono colonne virtuali calcolate in tempo reale al caricamento della pagina dell’applicativo. Queste sono molto utili per effettuare calcoli sempre aggiornati da visualizzare in una griglia, come per esempio il totale fatturato di uno specifico cliente che visualizziamo in Sandbox.

Tuttavia, prendendo a titolo di esempio proprio questo totale fatturato, questo è un valore “assoluto”, indipendente cioè da una data, sia questa la data di lavoro, sia questa invece un’ipotetica data specificata manualmente via codice o tramite interfaccia.

Come possiamo quindi rendere le formulaColumn parametriche, sensibili quindi al variare di uno o più parametri?

Prendiamo sempre a titolo di esempio la nostra colonna totale_fatturato. Potremmo voler visualizzare il fatturato totale del cliente a una specifica data, per esempio la data di lavoro. In questo modo l’utente dell’applicativo potrà cambiare semplicemente la data di lavoro per visualizzare il dato in una data piuttosto che in un’altra.

Per fare questo possiamo fare è sfruttare l’env dell’applicativo, modificando la nostra formulaColumn come segue:

tbl.formulaColumn('tot_fatt_alla_data',select=dict(table='fatt.fattura', columns='SUM($totale_fattura)', where='$cliente_id=#THIS.id AND $data<=:env_workdate'), dtype='N',name_long='Tot.Fatt. alla data')

Genropy provvederà automaticamente a sostituire la variabile di sistema env_workdate consentendoci di ottenere quello che volevamo.

La soluzione non è però molto flessibile, in quanto questa data di lavoro è una sola, e per avere valori in momenti diversi costringerebbe l’utente a uscire e rientrare settando date di lavoro diverse. Questa soluzione non è spesso percorribile né consigliabile, in quanto la data di lavoro ha un effetto globale su l’intera sessione di utilizzo dell’applicazione ed in molti casi l’utente potrebbe non essere autorizzato a modificarne il valore.

È quindi possibile in alternativa definire una variabile hard-coded direttamente nella formulaColumn, utilizzando il prefisso var:

tbl.formulaColumn('tot_fatt_param',select=dict(table='fatt.fattura', columns='SUM($totale_fattura)', where='$cliente_id=#THIS.id AND $data<=:data_rif'), dtype='N',name_long='Tot.Fatt. parametrico', var_data_rif='2018-12-31')

Tutto questo è sempre stato possibile in Genropy. Ma se vi dicessimo che da oggi è invece possibile anche richiedere il parametro direttamente nell’applicativo all’utente finale?

Da oggi è infatti possibile utilizzare nelle formulaColumn anche la ask, ovvero la funzione che mostra una finestra di dialogo per la raccolta dei parametri già presente in altri strumenti di Genropy. Così facendo, sarà l’utente finale dell’applicativo a impostare la data desiderata:

tbl.formulaColumn('tot_fatt_param',select=dict(table='fatt.fattura', columns='SUM($totale_fattura)', where='$cliente_id=#THIS.id AND $data<=:data_rif'), dtype='N',name_long='Tot.Fatt. parametrico', ask=dict(title="Data", fields=[dict(name='data_rif', dtype='D', lbl='Data')]))

Al trascinamento della colonna nella vista verrà quindi richiesto il parametro indicato (o i parametri indicati), in questo caso la “data”: ciò renderà le colonne infinitamente ripetibili e flessibili, al fine di andare incontro alle esigenze del nostro utente finale, oltre a limitare l’effetto alla colonna desiderata, senza quindi innescare conseguenze sul resto dell’istanza.

Tra i parametri richiesti compaiono anche fieldname e header, ovvero il nome della colonna e l’etichetta visualizzata in testa. Non è obbligatorio farli compilare all’utente, ma è anzi possibile utilizzare un template predefinito via codice:

tbl.formulaColumn('tot_fatt_param',select=dict(table='fatt.fattura', columns='SUM($totale_fattura)', where='$cliente_id=#THIS.id AND $data<=:data_rif'), dtype='N',name_long='Tot.Fatt. parametrico', ask=dict(title="Data", fields=[dict(name='data_rif', dtype='D', lbl='Data')]), fieldname='tot_fatt_$data_rif', header='Tot.Fatt. al $data_rif')

Abbiamo insomma visto come le formulaColumn sono da adesso ancora più potenti e flessibili per rendere sempre più personalizzabile l’applicativo per l’utente finale.

Vuoi saperne di più sulle formulaColumn? Consulta la sezione dedicata nel Manuale dell’ORM:

Ti piace questo strumento? Hai richieste/suggerimenti per migliorarlo ulteriormente? Lasciaci un commento a questo articolo o scrivici su Telegram!


Ti stai avvicinando al mondo Genropy e desideri saperne di più? Seguici sui social per tenerti in contatto con le ultime novità che Genropy ha da offrire:

Genropy Seguici su Facebook
Pagina Facebook

 

Genropy Seguici Gruppo Facebook
Gruppo Facebook

 

Genropy Gruppo Telegram
Gruppo Telegram