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 #17849

  • appendif
  • Avatar di appendif
  • Offline
  • Fresh Boarder
  • Messaggi: 19
  • Ringraziamenti ricevuti 3
  • Karma: 0
Ciao,
sto cercando di scrivere un modulo che aggiunga alla testata dell'ordine di vendita il campo supplier e usare tale campo per filtrare in modo dinamico la lista dei prodotti nell'inserimento delle righe d'ordine.
Nessun problema per l'aggiunta del campo e per il calcolo degli id prodotto, non riesco invece a impostare in modo dinamico il domain del field product_id. Sto procedento in questo modo:

* Definizione di campi supplier_id e product_domain e metodi per il calcolo del domain in questo formato: [('id', 'in', [1,2,3,4,5] )]

[sale.py]
...
_columns = {
'supplier_id': fields.many2one('res.partner', 'Supplier', domain=[('supplier', '=', True)]),
'product_domain': fields.function(get_product_domain, type='char', size=255, method=True, string="Domain"),
}
...

* Impostazione nel file xml dell'attribute domani del field product_id

[sale_view.xml]
...
<xpath expr="//notebook/page[@string='Order Lines']/field[@name='order_line']/tree/field[@name='product_id']" position="attributes">
<attribute name="domain">product_domain</attribute>
</xpath>
...

Però non funziona, non riesco a fare in modo che product_domain sia espanso nel valore che contiene e l'apertura della dropdown causa l'errore:

Error: NameError: name 'product_domain' is not defined
http://localhost:8069/web/static/lib/py.js/lib/py.js:370

Qualcuno sa dirmi se quello che sto cercando di ottenere è fattibile?
Avete qualche suggerimento?

Grazie.
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 #17851

  • NicoTheBrush
  • Avatar di NicoTheBrush
  • Offline
  • Platinum Boarder
  • Messaggi: 1952
  • Ringraziamenti ricevuti 156
  • Karma: 46
Ho letto molto velocemente però credo sia da aggiungere anche la funzione search nel campo function

P.S. se ti interessa l'ho utilizzato su questo campo per ricercare nelle righe dettaglio della scheda:

bazaar.launchpad.net/~nicolariolini/micr...hion/fashion.py#L813
Ultima modifica: 4 Anni 4 Mesi fa da NicoTheBrush.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

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

  • appendif
  • Avatar di appendif
  • Offline
  • Fresh Boarder
  • Messaggi: 19
  • Ringraziamenti ricevuti 3
  • Karma: 0
Ciao,
grazie del suggerimento, nel frattempo sono andato un pochino avanti ma ben lontano da avere finito con i problemi.
Ho abbandonato l'idea di farmi restituire il dominio completo e per ora mi accontendo della lista con i prodotti validi per il fornitore specificato.

_columns = {
'supplier_id': fields.many2one('res.partner', _("Supplier"), domain=[('supplier', '=', True)]),
'prod_ids': fields.function(get_product_ids, type='one2many', obj='product.product', method=True, string=_("Relevant Products")),
}

Ho messo in output (per debugging) il campo prods_ids (dict contenente la lista dei codici prodotto inseribili per ordine) e mi visualizza l'output atteso (anche troppo bene!!) ma la dropdown per la scelta del prodotto da invece risultati non coerenti e non capisco il perchè.

Allego lo screenshot di un caso prova, per il supplier1 uno dovrei vedere i prodotti s1a+s1b (Relevants Products) mentre la dropdown mi propone s1b+s2a.

www.dropbox.com/s/vswe7helsfxj17n/screenshot.png?dl=0

Il domain è impostato in questo modo:

<xpath expr="//notebook/page[@string='Order Lines']/field[@name='order_line']/tree/field[@name='product_id']" position="attributes">
<attribute name="domain">[('id', 'in', parent.prod_ids[parent.id])]</attribute>
</xpath>

Qualcuno mi sa dire dove sbaglio?
Grazie.
Fabrizio Appendino
Ultima modifica: 4 Anni 4 Mesi fa da appendif. Motivo: non sono riuscito ad allegare l'immagine, metto link
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

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

  • NicoTheBrush
  • Avatar di NicoTheBrush
  • Offline
  • Platinum Boarder
  • Messaggi: 1952
  • Ringraziamenti ricevuti 156
  • Karma: 46
Prova a postare anche la funzione.
Nota: non serve nei field la forzatura della traduzione: _("Supplier"), scrivi direttamente "Supplier"
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

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

  • appendif
  • Avatar di appendif
  • Offline
  • Fresh Boarder
  • Messaggi: 19
  • Ringraziamenti ricevuti 3
  • Karma: 0
Ciao,
ho messo il modulino su github
github.com/appendif/microera/tree/master/sale_supplierinfo

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

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

  • NicoTheBrush
  • Avatar di NicoTheBrush
  • Offline
  • Platinum Boarder
  • Messaggi: 1952
  • Ringraziamenti ricevuti 156
  • Karma: 46
non mi convince questa condizione:
('seller_ids', 'in', supp_info_ids),

però .. la rileggo domani sono troppo cotto :)

P.S. non serve più attivare l'oggetto per far lavorare l'ORM:
sale_order()
Ultima modifica: 4 Anni 4 Mesi fa da NicoTheBrush.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
Tempo creazione pagina: 0.144 secondi

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

Protected by R Antispam