Questo sito utilizza cookie per le proprie funzionalità e per inviarti pubblicità e servizi in linea con le tue preferenze. Chiudendo questo banner, scorrendo questa pagina o cliccando qualunque suo elemento acconsenti all’uso dei cookie.

Accedendo al link http://www.odoo-italia.org/index.php/home/cookie-policy puoi leggere in dettaglio le modalità di trattamento dei cookie da parte dell'Associazione Odoo Italia.

Benvenuto, Ospite
Nome utente: Password: Ricordami

ARGOMENTO: Impostare domain dinamicamente in view

Impostare domain dinamicamente in view 4 Anni 4 Mesi fa #17864

  • NicoTheBrush
  • Avatar di NicoTheBrush
  • Offline
  • Platinum Boarder
  • Messaggi: 1952
  • Ringraziamenti ricevuti 156
  • Karma: 46
Se vuoi fare una prova io cambierei quella condizione basandola direttamente sugli ID prodotto che vende quel supplier, ricavandoli dalla product.supplierinfo, qualcosa del genere:
prod_ids = product_obj.search(cr, uid,
    [('id', 'in', [
        product.id for product in supp_info_obj.browse(cr, uid, supp_info_ids)]),
    ('sale_ok', '=', True)])

se funziona farei una query diretta sul database per evitare il giro search-browse
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
Ringraziano per il messaggio: appendif

Impostare domain dinamicamente in view 4 Anni 4 Mesi fa #17888

  • appendif
  • Avatar di appendif
  • Offline
  • Fresh Boarder
  • Messaggi: 19
  • Ringraziamenti ricevuti 3
  • Karma: 0
Grazie.

Alla fine ho (quasi) ottenuto quello che volevo impostando il domain in questo modo:
<xpath expr="//notebook/page[@string='Order Lines']/field[@name='order_line']/tree/field[@name='product_id']" position="attributes">
   <attribute name="domain">[('sale_ok', '=', True), ('seller_ids.name', '=', parent.supplier_id)]</attribute>
</xpath>	

Rimangono un paio di problemi irrisolti:

1. Se non viene specificato il fornitore vorrei che il domain includesse tutti i prodotti vendibili senza la condizione su sellers_ids, ho provato specificando il domain in questo modo ma non funziona:
<attribute name="domain">[('sale_ok', '=', True), '|', ('seller_ids.name', '=', parent.supplier_id), (parent.supplier_id, '=', False)]</attribute>

ValueError: Invalid leaf [False, '=', False]
Qual'è il modo corretto di farlo?

2. Se le righe dell'ordine di vendita vengono inserite direttamente dall'elenco il domain risulta attivo e funzionante, se invece è stato selezionato l'inserimento da finestra di dettaglio (Configuration / Sales / Product properties on order lines) mi trovo il domain non impostato.


Ciao.
Fabrizio Appendino
Ultima modifica: 4 Anni 4 Mesi fa da appendif.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Impostare domain dinamicamente in view 4 Anni 4 Mesi fa #17892

  • NicoTheBrush
  • Avatar di NicoTheBrush
  • Offline
  • Platinum Boarder
  • Messaggi: 1952
  • Ringraziamenti ricevuti 156
  • Karma: 46
forse sono rimasto indietro io con le novità del framework ma non pensavo funzionasse un domain del genere:

('seller_ids.name', '=', parent.supplier_id)

di fatto seller_ids è una lista di oggetti browse quindi non puoi prendere l'attributo "name" perchè sarebbe riferito alla lista...
(a meno che il framework non sia talmente furbo da esplodere prima la lista...)
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Impostare domain dinamicamente in view 4 Anni 4 Mesi fa #17894

  • appendif
  • Avatar di appendif
  • Offline
  • Fresh Boarder
  • Messaggi: 19
  • Ringraziamenti ricevuti 3
  • Karma: 0
Sono arrivato a quel domain un po' per tentativi, analizzando il log sql ho visti che già accedeva a product_supplierinfo per valorizzare il campo seller_ids. Anch'io sono rimasto sorpreso ma sembra funzionare correttamente anche nei casi in cui la lista non ha elementi o ne ha più di uno.

Qualche idea sugli altri punti?

Ciao.
Fabrizio Appendino
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Impostare domain dinamicamente in view 4 Anni 4 Mesi fa #17895

  • NicoTheBrush
  • Avatar di NicoTheBrush
  • Offline
  • Platinum Boarder
  • Messaggi: 1952
  • Ringraziamenti ricevuti 156
  • Karma: 46
prova a fare un tentativo inverteno le condizione (è una prova)

('seller_ids.name', '=', parent.supplier_id), (parent.supplier_id, '=', False)

in

(parent.supplier_id, '=', False), ('seller_ids.name', '=', parent.supplier_id)

poi forse servirà anche testare l'esistenza di seller_ids
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Impostare domain dinamicamente in view 4 Anni 4 Mesi fa #17896

  • appendif
  • Avatar di appendif
  • Offline
  • Fresh Boarder
  • Messaggi: 19
  • Ringraziamenti ricevuti 3
  • Karma: 0
Ho già provato a invertire le condizioni: stesso risultato.
Sembra che non gli piaccia proprio avere a sinistra dell'operatore qualcosa che non sia conosciuto dall'ORM, tralaltro la sostituzione la fa bene, l'errore riporta:
File "/home/fabrizio/openerp7/odoo/openerp/osv/expression.py", line 588, in check_leaf
    raise ValueError("Invalid leaf %s" % str(self.leaf))
ValueError: Invalid leaf [False, '=', False]
Fabrizio Appendino
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
Tempo creazione pagina: 0.130 secondi

Odoo Italia Associazione - C.F: 94200470485 - Sede: Viale dei Cadorna, 83 - Firenze - Italy

Protected by R Antispam