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: Metodo onchange

Metodo onchange 5 Anni 1 Settimana fa #15630

  • GDollorenzo
  • Avatar di GDollorenzo
  • Offline
  • Senior Boarder
  • Ingegnere Gestionale (non ufficiale), Appassionato
  • Messaggi: 47
  • Karma: 0
Salve,
Devo personalizzare l'inserimento di una Nota Spesa, Mi è stato richiesto di inserire il conto analitico all'interno dell'intestazione della spesa e far si che rimanga lo stesso all'interno delle singole righe di spesa da inserire.
Spiego cosa ho fatto:
1) Ho creato un campo personalizzato "x_analytic_account" nel modello "hr.expense.expense";



2) Ho modificato la vista form dell'inserimento spesa facendo comparire il campo creato nell'intestazione;



3) Ho modificato la vista per far si che l'inserimento di ogni nuova riga abbia, per il campo "Conto Analitico", sempre lo stesso valore inserito nell'intestazione;
Fin qui tutto perfetto, il problema sorge se provo a modificare il campo del punto 1: Non mi aggiorna tutti i campi "Conto Analitico" già precedentemente creati, solo per i nuovi funziona bene.
Ho pensato di creare un metodo onchange che, al variare del campo del punto 1, modifica automaticamente tutti i "Conti Analitici" inseriti nelle varie righe di spesa.
PREMESSA: SONO UN SUPER PRINCIPIANTE
il metodo che ho creato all'interno della classe "hr_expense_expense" (nel file expense.py) è il seguente:

def onchange_account_id(self, cr, uid, ids, x_analytic_account, context=None):
for expense in self.browse(cr, uid, ids, context=context):
for line in expense.line_ids:
account_id = x_analytic_account
return {'value': {'account_id': account_id}}
return

nel XML:

<field domain="[('type','in',['normal','contract'])]" name="x_analytic_account" groups="analytic.group_analytic_accounting" on_change="onchange_account_id(x_analytic_account, context)"/>

Non viene effettuata nessuna modifica ne viene visualizzato alcun errore
Mi scuso per super ORRORI che probabilmente ho scritto.
Ing. Giuseppe Dollorenzo
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Metodo onchange 5 Anni 1 Settimana fa #15632

  • NicoTheBrush
  • Avatar di NicoTheBrush
  • Offline
  • Platinum Boarder
  • Messaggi: 1952
  • Ringraziamenti ricevuti 156
  • Karma: 46
def onchange_account_id(self, cr, uid, ids, x_analytic_account, context=None):
    for expense in self.browse(cr, uid, ids, context=context):
        for line in expense.line_ids:
            account_id = x_analytic_account
    return {'value': {'account_id': account_id}}

Fatico a capire cosa fuoi far fare alla funzione onchange (il secondo return è di troppo :) )
ti viene passato un parametrro x_analytic_account che è il nuovo valore del conto poi fai 2 cicli indentati impostando account_id al valore del parametro N x M volte (quindi di fatto non viene mai variato) per ritornarlo

di fatto puoi scrivere solo:
def onchange_account_id(self, cr, uid, ids, x_analytic_account, context=None):
    account_id = x_analytic_account
    return {'value': {'account_id': account_id}}
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Metodo onchange 5 Anni 1 Settimana fa #15635

  • GDollorenzo
  • Avatar di GDollorenzo
  • Offline
  • Senior Boarder
  • Ingegnere Gestionale (non ufficiale), Appassionato
  • Messaggi: 47
  • Karma: 0
Quella funzione ho provato a crearla da totale ignorante, guardando le altre presenti per altre funzionalità.
Il ciclo dovrebbe riguardare tutte le righe presenti in una "Nota Spesa".
Con il tuo consiglio esce questo errore
AttributeError: 'hr.expense.expense' object has no attribute 'onchange_account_id'
Aggiornamento:
Ho indentato meglio ed esce
No handler found.
Non accedo a nulla
Ing. Giuseppe Dollorenzo
Ultima modifica: 5 Anni 1 Settimana fa da GDollorenzo.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Metodo onchange 5 Anni 1 Settimana fa #15636

  • GDollorenzo
  • Avatar di GDollorenzo
  • Offline
  • Senior Boarder
  • Ingegnere Gestionale (non ufficiale), Appassionato
  • Messaggi: 47
  • Karma: 0
Quando modifico "Analytic Account" (1), tutti i progetti (2) devono cambiare e diventare uguali ad (1)


Ing. Giuseppe Dollorenzo
Ultima modifica: 5 Anni 1 Settimana fa da GDollorenzo.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Metodo onchange 5 Anni 1 Settimana fa #15637

  • NicoTheBrush
  • Avatar di NicoTheBrush
  • Offline
  • Platinum Boarder
  • Messaggi: 1952
  • Ringraziamenti ricevuti 156
  • Karma: 46
AttributeError: 'hr.expense.expense' object has no attribute 'onchange_account_id'

Questo errore vuole dire che hai scritto la funzione onchange_account_id, sembra, nell'oggetto errato e devi invece piazzarla nell'oggetto che lavora con hr.expence.expence, proprio per il fatto che la videata (o sottovideata) è di fatto collegata a quell'oggetto e non all'oggetto parent.
Spero di essere chiaro, la tua richiesta apre paracchie parantesi da spiegare, anche perchè mi sembra che tu stia modificando via framework al posto di inserire un modulo per fare tutto ciò, right?
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Metodo onchange 5 Anni 1 Settimana fa #15638

  • GDollorenzo
  • Avatar di GDollorenzo
  • Offline
  • Senior Boarder
  • Ingegnere Gestionale (non ufficiale), Appassionato
  • Messaggi: 47
  • Karma: 0
La funzione l'ho scritta in hr_expense_expense del file expense.py.
Per parlare facile (visto che sono un principiante) io mi scarico dal server il file py, lo modifico, lo ricarico sul server, riavvio il server e vedo i risultati.
Ing. Giuseppe Dollorenzo
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
  • Pagina:
  • 1
  • 2
  • 3
Tempo creazione pagina: 0.159 secondi

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

Protected by R Antispam