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: [RISOLTO] Mi aiutate con questo .py?

Mi aiutate con questo .py? 5 Anni 7 Mesi fa #12522

  • damocle83
  • Avatar di damocle83
  • Offline
  • Gold Boarder
  • Messaggi: 181
  • Karma: 0
def _order_count(self, cr, uid, ids, field_name, arg, context=None):
res = {}
for id in ids:
order_ids = self.pool.get('sale.order').search(cr,uid,ids,context=context)
order_count = order_ids
res[id] = len(order_count)
return res

questo metodo mi è stato ispirato da un modulo dove serve per contare quanti sale.order sono associati a quel progetto.
e pensavo che con delle modifiche potesse essermi utile.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Mi aiutate con questo .py? 5 Anni 7 Mesi fa #12527

  • shakin89
  • Avatar di shakin89
  • Offline
  • Platinum Boarder
  • Messaggi: 388
  • Ringraziamenti ricevuti 7
  • Karma: 7
Ciao,
ho visto il tuo pastebin.
Allora nel metodo ordini hai questa riga
ordine = self.pool.get('sale.order').browse(self.cr,self.uid,ids,context=context)
ids da dove lo prendi? se vuoi pescare tutti i record con browse allora devi inserire [] al posto di ids (ovvero una lista vuota).
nel metodo order count questo pezzo di codice
for id in ids:
    order_ids = self.pool.get('sale.order').search(cr,uid,ids,context=context)
    order_count = order_ids
    res[id] = len(order_count)
lo puoi sostituire con questo
for id in ids:
    try:
        res[id] = len(self.pool.get('sale.order').search(cr,uid,ids],context=context))
    except:
        res[id] = 0
occhio che stai ciclando su ids (che dovrebbe essere una lista) con la variabile id, ma dentro la search tu ci metti ids e non id. cosi otterrai il dizionario res con i vari indici che conterranno sempre lo stesso valore.
Ma cosa vuoi fare con questo codice? controllare quanti ordini ci sono?
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Mi aiutate con questo .py? 5 Anni 7 Mesi fa #12528

  • damocle83
  • Avatar di damocle83
  • Offline
  • Gold Boarder
  • Messaggi: 181
  • Karma: 0
Ciao e grazie per la risposta,
il mio obiettivo è recuperare numero e data del primo ordine di vendita legato ad un progetto.
il metodo order_ids l'ho preso da un altro modulo che contava gli ordini di vendita legati ad un progetto e volevo modificarlo per avere uno dei dati che mi servono.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Mi aiutate con questo .py? 5 Anni 7 Mesi fa #12529

  • shakin89
  • Avatar di shakin89
  • Offline
  • Platinum Boarder
  • Messaggi: 388
  • Ringraziamenti ricevuti 7
  • Karma: 7
allora, quando chiami una funzione da webkit non hai tutti i parametri a disposizione come se fosse una funzione chiamata dal server.
gli puoi passare l'oggetto su cui stai ciclando e altre variabili, ma non i cursori del server openerp.
nel report
for project in objects: #cicli su tutti gli oggetti passati al parser
    ....
    orders = conta_ordini(project)
nel parser
self.localcontext.update({
    ....
    'conta_ordini' : self._order_count,
    ....

def _order_count(self, project):
    try:
        res = len(self.pool.get('sale.order').search(cr,uid,project.id,context=context))
    except:
        res = 0
scritto al volissimo senza testarlo, ma dovrebbe funzionare. certo ricontrolla la sintassi :laugh: :laugh:
Ultima modifica: 5 Anni 7 Mesi fa da shakin89. Motivo: corretto msg
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Mi aiutate con questo .py? 5 Anni 7 Mesi fa #12530

  • damocle83
  • Avatar di damocle83
  • Offline
  • Gold Boarder
  • Messaggi: 181
  • Karma: 0
ora lo provo, ma così cerco sempre quanti ordini sono associati ad un progetto, vero?
Se provo a togliere il "len" invece dovrei avere tutte le info dei progetti...
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Mi aiutate con questo .py? 5 Anni 7 Mesi fa #12531

  • shakin89
  • Avatar di shakin89
  • Offline
  • Platinum Boarder
  • Messaggi: 388
  • Ringraziamenti ricevuti 7
  • Karma: 7
si naturalmente devi far ritornare il risultato del search alla funzione.
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