Forum

Benvenuto!

Questo è il forum ufficiale dell'Associazione Odoo Italia. Dopo esserti registrato potrai partecipare ponendo domande o rispondendo a quelle esistenti. Non scordarti di compilare il tuo profilo e consultare le linee guida prima di iniziare a scrivere.

0

rendere invisibile una riga in una form con una vista tree

Avatar
Antonello Ventre


Come da titolo sto cercando di rendere invisibile una riga nel timesheets dell'helpdesk usando un campo booleano show_row calcolato e memorizzato nel database .
Ho aggiunto un domain come attributo valorizzato true o false da show_row sul fiele timesheet_line_ids ma non funziona, esiste un metodo specifico ?
Se serve il codice lo posto :


   
        helpdesk.support.form.inherited
        helpdesk.support
       
       
           
                [('show_in_timesheet', '=', True)]
           
       
   


Avatar
Abbandona
2 Risposte
0
Avatar
Antonello Ventre
Migliore risposta

Grazie mille davide ho creato una regola su record per dare diritto di accesso solo quando show_in_timesheet=True e tutto funziona

solo che discriminando sui permessi ho incongruenze nel calcolo dei costi imputati al conto analitico, volevo realizzare qualcosa come nella maschera fattura dove la visibilità è discriminata dal campo display_type se non sbaglio

6 commenti
Avatar
Abbandona
Avatar
Davide Corio
-

Ciao, in questo caso allora opterei per un secondo campo calcolato.
Applicare un dominio su un o2m non mi pare sia fattibile nemmeno con moduli di terze parti.
Se invece mi sto sbagliando farebbe comodo anche a me :)

Avatar
Antonello Ventre
-

in che modo con un secondo campo calcolato ? per il dominio hai ragione penso non sia fattibile

Avatar
Antonello Ventre
-

ah ok per individuare il contesto in cui mi trovo giusto ?

Avatar
Davide Corio
-

Se hai un campo o2m con dei dati che vuoi filtrare, ciò che puoi fare è creare un secondo campo o2m calcolato che pesca dal primo filtrando preventivamente i dati.
Agli utenti che devono vedere solo i dati filtrati potrai quindi mostrare il secondo.

Avatar
Antonello Ventre
-

Se può essere di interesse ho risolto cosi :

show_in_timesheet = fields.Boolean(string='Show in Timesheet', compute='_compute_show_in_timesheet', store=False,default=True)

@api.depends('support_request_id')
def _compute_show_in_timesheet(self):
for line in self:
if line.product_id.detailed_type=='product' and self.env.context.get('params')['model']=='helpdesk.support':
line.show_in_timesheet = False
else:
line.show_in_timesheet=True
return True

questo mi permette di discriminare in timesheet_line_ids i prodotti di tipo sevizio(ore imputate al ticket ) da quello di tipo prodotto (i prodotti consumati nel ticket) e poi con la gestione delle record rule mostro solo la tipologia di prodotto di tipo servizio

Avatar
Antonello Ventre
-

Davide alla fine ho risolto in modo pulito con l'impostazione del dominio sulla definizione del campo, quindi funziona:

compute='_compute_partner_credit_warning')
timesheet_line_ids = fields.One2many(
'account.analytic.line',
'support_request_id',
string='Timesheets',
domain=[('product_id.detailed_type', '=','service')],

)

0
Avatar
Davide Corio
Migliore risposta

Ciao, la cosa più semplice ed immediata che si può fare in questi casi è mostrare un secondo one2many calcolato che mostra solo i record del primo one2many che hanno show_in_timesheet = True.


Altrimenti, puoi usare una regola di sicurezza per far si che determinati utenti non possano proprio vedere i record che hanno show_in_timesheet non valorizzato

Avatar
Abbandona