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
  • Pagina:
  • 1
  • 2
  • 3

ARGOMENTO: sequence number

sequence number 2 Anni 6 Mesi fa #24939

  • gigidn
  • Avatar di gigidn
  • Offline
  • Platinum Boarder
  • Messaggi: 1925
  • Ringraziamenti ricevuti 446
  • Karma: 22
Al posto di compute ho usato default ... dovrebbe essere invocato poco prima della create se il valore è nullo. Prova e poi ci fai sapere.

EDIT:

Fai attenzione che il codice è diverso rispetto alla cumpute, oltre ad usare la keyword "default" il metodo invocato ritorna il valore e non lo setta direttamente nella classe.
@KTec
www.ktec.it
Ultima modifica: 2 Anni 6 Mesi fa da gigidn.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

sequence number 2 Anni 6 Mesi fa #24942

  • Lotta
  • Avatar di Lotta
  • Online
  • Platinum Boarder
  • Messaggi: 450
  • Ringraziamenti ricevuti 14
  • Karma: 3
Ciao gigidn
grazie della proposta.

Ho provato ad inserire la tua modifica, rimuovendo il metodo create() e aggiornando il dbase e il modulo.
Ho notato che il campo viene popolato subito con il valore atteso (a differenza dell’uso del metodo create che procede a dare un numero solo quando si preme Salva).
TUTTAVIA, quando si salva il record, il numero incrementa ANCORA una volta (?!)
(Sottolineo che ho rimosso il metodo create ed aggiornato il dbase….)

In pratica è come se nel procedere al salvataggio del record, venisse richiamato nuovamente default…
Ti risulta funzioni così ?
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

sequence number 2 Anni 6 Mesi fa #24944

  • archetipo
  • Avatar di archetipo
  • Offline
  • Platinum Boarder
  • Messaggi: 331
  • Ringraziamenti ricevuti 5
  • Karma: 8
Il funzionamento di store=True su un field compute, dovrebbe essere semplicemente quello di salvare sul database il valore che viene calcolato dalla funzione, esattamente come avviene usando le vecchie API, il fatto che cio' non accada e' perche' probabilmente si tratta di un bug, cercando con in rete si trovano molte issue aperte e poi chiuse e non risolte su github.
Di certo il compute e' buova cosa usarlo con i depends , proprio perche' credo che abbiano assunto che la chiamata al metdodo venisse fatta per calcolare i risultati raccogliendo dat ida altri campi.
In questo caso siamo in una situazione di confine, tant'e' che il metodo viene eseguito se viene omesso il parametro store=True.

In generale mi aspetterei che sia il compute, piu' che store ad aggiungere regole di trigger.

L'utilizzo del default e' un alternativa gia' suggerita ma che non sembrava essere quella corretta.


:2c:
Alessio Gerace
github.com/archetipo
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

sequence number 2 Anni 6 Mesi fa #24945

  • gigidn
  • Avatar di gigidn
  • Offline
  • Platinum Boarder
  • Messaggi: 1925
  • Ringraziamenti ricevuti 446
  • Karma: 22
@Lotta: Il metodo dovrebbe essere richiamato ogni volta che il field risulta nullo, nel tuo caso una volta sola quindi e non due volte come hai sperimentato (a meno che non lo azzeri). Se funziona come hai descritto per me è un bug.

@archetipo il problema del "compute" legato allo "store" non è di facile soluzione ed una scelta di design è buona come un'altra basta sapere quell'è il comportamento. Ti faccio un esempio:

Ogetto X con due campi [nome,codice (compute e store) ]

Alla creazione ottengo [Pippo, 123]

Apro l'oggetto e non faccio modifiche, salvo ... a quel punto l'oggetto dovrebbe avere il valore [Pippo, 123]?
Apro l'oggetto cambio il nome, salvo ... a quel punto l'oggetto dovrebbe avere il valore [Nuovo Nome, 123]?

Si potrebbe supporre che nel primo caso il compute non venga invocato (nessun cambiamento) mentre nel secondo si (cambiamenti), ma sarebbe comunque na scelta arbitraria e quasi una forzatura.

Pertanto a mio avviso è molto più flessibile e corretta la scelta di design che hanno fatto di legare l'aggiornamento del campo "compute" con "store" ad uno o piu' field che se modificati influenzano anche il valore del campo calcolato.

Dopotutto il compute con store=True e non legato ad altro non è altro che il default.

Ma stiam filosofeggiando visto che non metteremo mani al codice del core qui dobbiam semplicemente verificarne il comportamento ed a limite chiedere lumi ad odoo sa se quel comportamento è atteso o semplicemente un bug.
@KTec
www.ktec.it
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
  • Pagina:
  • 1
  • 2
  • 3
Tempo creazione pagina: 0.129 secondi

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

Protected by R Antispam