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
Ricordati di dichiarare la versione di Odoo a cui riferisce la domanda

ARGOMENTO: Visualizzazione di inherited class

Visualizzazione di inherited class 5 Anni 8 Mesi fa #12085

  • coram
  • Avatar di coram
  • Offline
  • Expert Boarder
  • Messaggi: 85
  • Ringraziamenti ricevuti 1
  • Karma: 0
Salve a tutti.
Vi chiedo aiuto perchè ormai ho già perso tre giorni per trovare una soluzione alla quale non arrivo proprio.

Allora, quello che vorrei fare è poter creare un' altra opzione di fatturazione tra quelle presenti in "sale_advance_payment_inv" nell'addon "sale.wizard".

Ho creato una classe figlia in questo modo:

class catsale(osv.osv_memory):
_inherit = "sale.advance.payment.inv"
_name = "catsale"
_columns = {
'advance_payment_method':fields.selection(
[('pippo', 'pluto')])
}
catsale()

A questo punto devo riuscire a visualizzare questo campo "'advance_payment_method'" e non più quello della classe padre, in modo da vedere oltre agli altri campi selezionabili, anche il mio "pluto".
Come faccio?

Ho cercato ovunque e davvero non ne vengo a capo.
Grazie in anticipo.
Ultima modifica: 5 Anni 8 Mesi fa da coram.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Visualizzazione di inherited class 5 Anni 8 Mesi fa #12086

  • NicoTheBrush
  • Avatar di NicoTheBrush
  • Offline
  • Platinum Boarder
  • Messaggi: 1952
  • Ringraziamenti ricevuti 156
  • Karma: 46
Se vuoi inserire o fare un override di campi alla classe base devi mettere come _name lo stesso dell'oggetto _inherit, nel tuo caso stai creando un nuovo oggetto catsale (e nuova tabella nel DB) che inizialmente ha tutti i campi dell'oggetto in inherit più quello che hai aggiunto tu.
Dai un occhio al memento ti da anche una visualizzazione grafica che aiuta a capire.

www.google.it/url?sa=t&rct=j&q=memento%2...vm=bv.47244034,d.bGE

sezione inheritance mechanism
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Visualizzazione di inherited class 5 Anni 8 Mesi fa #12091

  • coram
  • Avatar di coram
  • Offline
  • Expert Boarder
  • Messaggi: 85
  • Ringraziamenti ricevuti 1
  • Karma: 0
Grazie per la veloce risposta.

Allora avevo già provato quel modo.

Adesso il codice è questo:
class catsale(osv.osv_memory):
_inherit = "sale.advance.payment.inv"
_name = "sale.advance.payment.inv"
_columns = {
'advance_payment_method':fields.selection(
[('pippo', 'pluto')])
}
catsale()

La view "view_sale_advance_payment_inv", però, non mi aggiunge il campo da me aggiunto. Vedo solamente "Pluto". Mi ero già bloccato qui...tra i vari tentativi...
Dove sbaglio?

Grazie
Ultima modifica: 5 Anni 8 Mesi fa da coram.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Visualizzazione di inherited class 5 Anni 8 Mesi fa #12092

  • NicoTheBrush
  • Avatar di NicoTheBrush
  • Offline
  • Platinum Boarder
  • Messaggi: 1952
  • Ringraziamenti ricevuti 156
  • Karma: 46
In realtà per come l'hai scritto è giusto vedere solo pluto :)
Il fields.selection ha coppie valore-descrizione, nel DB scrive pippo e nel campo fa vedere pluto, ti manca il nome del campo poi. Prova a fare un grep nel codice:
grep -r fields.selection *
per vedere un po' di esempi

P.S.:
'state': fields.selection([('draft','Draft'),('confirmed','Confirmed')],'State',)

State è la label del campo state, draft e confirmed sono scritti nella tabella del DB, Draft e Confirmed sono quello che vedi nella lista
Ultima modifica: 5 Anni 8 Mesi fa da NicoTheBrush.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Visualizzazione di inherited class 5 Anni 8 Mesi fa #12104

  • coram
  • Avatar di coram
  • Offline
  • Expert Boarder
  • Messaggi: 85
  • Ringraziamenti ricevuti 1
  • Karma: 0
Scusa NicoTheBrush, il mio modo inesatto di scrivere ti sta facendo perdere tempo.

Nella classe padre che sto ereditando ho questo:

'advance_payment_method':fields.selection(
[('all', 'Invoice the whole sales order'), ('percentage','Percentage'), ('fixed','Fixed price (deposit)'),
('lines', 'Some order lines')],

A questi campi io vorrei aggiungere un altro campo e visualizzarli tutti utilizzando la mia classe figlio.
Quello che speravo di non dover fare era questo:

'advance_payment_method':fields.selection(
[('all', 'Invoice the whole sales order'), ('percentage','Percentage'), ('fixed','Fixed price (deposit)'),
('lines', 'Some order lines'),('Pippo','Pluto')],

perchè vorrei sperare che per aggiungere un elemento alla combobox non si debba copiare parte del codice che non manutengo io.

Capito adesso quello che voglio ottenere?

Scusami davvero.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Visualizzazione di inherited class 5 Anni 8 Mesi fa #12108

  • NicoTheBrush
  • Avatar di NicoTheBrush
  • Offline
  • Platinum Boarder
  • Messaggi: 1952
  • Ringraziamenti ricevuti 156
  • Karma: 46
Interessante modifica, anche sul canale IRC mi sembra ci fosse stata una richiesta in tal senso.
Non ho mai provato ma secondo me nel modulo si può fare una oggetto che ha _inherit sull'oggetto principale, li creare una funzione __init__ che legge il contenuto attuale della lista, vede se c'è il valore ed eventualmente lo aggiunge alla lista, utilizza poi questa lista per creare un fileds.selection nell'oggetto

Alcuni comandi che potrebbero esserti utili:
per leggere la lista si può utilizzare questo (leggo il campo state che è un selection di sale.order):

lista = self.pool.get("sale.order")._columns.selection

controllo se esiste un valore (puoi anche fare un ciclo per testare il solo valore le primo), io controllo la coppia:
if ('pippo', 'Descrizione Pippo') not in self.pool.get("sale.order")._columns.selection:

aggiungi alla lista il tuo campo
lista+=[('pippo','Descrizione pippo')]

poi fai l'override del fields.selection in columns usando la variabile lista al posto dell'elenco
fields.selection (lista, ecc. ecc)
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
Ringraziano per il messaggio: coram
Tempo creazione pagina: 0.145 secondi

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

Protected by R Antispam