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

ARGOMENTO: Workflow : come personalizzarli?

Workflow : come personalizzarli? 6 Anni 10 Mesi fa #6794

  • luca81
  • Avatar di luca81
  • Offline
  • Senior Boarder
  • Messaggi: 64
  • Ringraziamenti ricevuti 1
  • Karma: 1
Ciao a tutti, è da un po' che mi sto picchiando coi workflow. Ho già letto la guida, il Memento (quella sì che è una manna dal cielo), forum ufficiale, wiki, Google, ma continuo a non trovare una spiegazione completa e comprensibile su come personalizzarli in base alle proprie esigenze.

Tanto per fare un esempio, sto cercando di far sì che, cliccando su un apposito bottone da me creato (questo non è un problema), dall'ordine di vendita venga generato un ordine d'acquisto uguale e messo in attesa un ordine di consegna. Oppure, avrei bisogno che, quando un utente conferma un ordine di vendita, l'ordine di consegna, che viene già preparato in automatico, venga anche assegnato, convalidato e segnato come spedito.

Per far ciò, posso sfruttare dei metodi già presenti o devo adarmeli a riscrivere io da zero? E se così fosse, dove trovo una guida che mi spieghi come strutturare il codice, quali metodi posso sfruttare e quali devo scrivere io, etc...? Oltre al grafo dei workflow fornito da OpenERP, esistono degli strumenti più funzionali? Ad es., c'è un modo per avere una rappresentazione grafica (o anche solo una vaga idea) di quali oggetti vegono passati ad un particolare metodo? Quando si invoca "browse", cosa gli viene passato? Solo l'id dell'oggetto di riferimento o anche tutti i suoi discendenti?

Scusate il piccolo sfogo. È che, mentre ho trovato chiare e abbondanti le spiegazioni sulle view, sul come si crea un modulo, su come si effettua l'import ed export dei dati, su come si sfruttano le funzionalità xml-rpc, non ho trovato lo stesso dettaglio sui workflow... o meglio, sul lato developer dei workflow. Eppure sono un argomento fondamentale per un ERP. Direi anche il punto di partenza su cui costruire tutto il resto.

Grazie come sempre a tutti per i preziosi consigli.
Buon week-end!
L.)
Luca Crea
EUROPA s.a.s. — www.europa-ge.com
LinkedIn Profile — http://www.linkedin.com/in/lucacrea/it
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re:Workflow : come personalizzarli? 6 Anni 10 Mesi fa #6798

  • NicoTheBrush
  • Avatar di NicoTheBrush
  • Offline
  • Platinum Boarder
  • Messaggi: 1952
  • Ringraziamenti ricevuti 156
  • Karma: 46
Per i workflow sono partito anche io analizzando quello semplice del modulo idea (che aggiungerei a memento e guida come esempio completo che fornisce parecchi spunti)

Se devi aggiungere dei nuovi nodi del WF lo puoi fare alla stregua di quelli vecchi basta creare gli stati e le transizioni che poi trasformi in bottoni, devi sempre fare tutto il giro:
py: aggiungere gli stati nella select del fields "state"
xml wf : aggiungi stati e transizioni
xml view: aggiungi i bottoni con visibilità in funzione degli stati
py: aggiungi le funzioni abbinate agli stati

Se devi invece integrare operazioni nei vari stati basta trattare le funzioni come fai per l'override (ad esempio di un metodo write), ammetto che non sempre è facile e spesso al posto di una chiamata super si riscrive la funzione originale purtroppo.

Gli strumenti di visualizzazione ho paura che siano quelli, sinceramente non so di altri viewer completi di elenco operazioni di stato...

Gli oggetti passati ad un particolare metodo variano, spesso io vado a cercare con grep esempi di on_change, un write un action ecc. :), se usi gedit puoi farti comunque gli snippet per richiamarti le def che si usano più spesso, anzi magari ne trovi già di fatti.

Non mi è chiaro il tuo problema con browse comunque gli dai N id dell'oggetto da cui stai partendo per farglierli cercare poi raggiungi gli oggetti collegati saltando sui campi relazione, es. se fai un browse di sale.order passando 3 elementi con ids poi dovrai fare un ciclio per "spazzolarli" uno alla volta, partendo poi dall'item scelto passi ai vari campi semplicemente col punto
for item in self.pool.get('sale.order').browse(cr, uid, [1,2,3]):
print item.line_ids[0].product_id.id
così passi i 3 ordini stampando l'id del prodotto della prima linea

Non trovi parecchia documentazione perchè sono tutti cercatori, nessuno si prende la briga o la voglia quando c'è un interessante case study di mettere un piccolo wiki con spiegazioni. Ricorda però che abbiamo la fortuna di potere leggere il codice, spesso in base al tuo problema c'è sempre qualcuno in IRC o nel forum che ricorda un modulo che fa qualcosa di simile :)

P.S. valuta se è corretto andarti ad inserire nel wf per quello che ti interessa a volte basta inserirsi nel write e vedere se stai scrivendo lo stato = a quello dove vuoi fare partire le tue azioni (valuta perchè per debuggare è sempre meglio mettere il codice dove normalmente si aspetta di trovarlo, poi spesso si ha fretta :) )
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re:Workflow : come personalizzarli? 6 Anni 10 Mesi fa #6801

  • luca81
  • Avatar di luca81
  • Offline
  • Senior Boarder
  • Messaggi: 64
  • Ringraziamenti ricevuti 1
  • Karma: 1
Grazie mille per l'esauriente spiegazione. Purtroppo speravo esistesse una documentazione un po' completa sui metodi disponibili: una sorta di manuale API in stile PayPal per intenderci :)

Nel weekend, continuando nello studio del codice, sono riuscito ad implementare una parte del workflow che avevo in mente, sfruttando molti metodi già presenti nel model stock e sale (ovviamente, devo ancora fare un po' di test per essere sicuro che tutto funzioni perfettamente).

Però avrei ancora un paio di domande irrisolte:
  1. all'interno del workflow, tutti i nodi devono necessariamente essere connessi fra loro, partendo senza interruzioni da quello di start a quello di stop (parent -> nodo -> child) o se ne possono creare anche alcuni a se stanti (partent -> nodo).
    Allego un'immagine per maggior chiarezza.

  2. Quando istanzio un oggetto tramite browse, ho modo di sapere in anticipo fino a quale livello di discendenza posso arrivare? O meglio, come faccio a conoscere quanti (e quali) model potrò raggiungere? Devo cercare di ricostruirmi la gerarchia di dipendenza da postgresql, oppure me li devo andare a cercare nel codice dei singoli oggetti? Oppure esiste la possibilità di vederlo dalla nuova funzionalità di debug dell'interfaccia web di OpenERP 6.1?

Ancora grazie per le info. Buona giornata a tutti!
c!AO
L.)
Luca Crea
EUROPA s.a.s. — www.europa-ge.com
LinkedIn Profile — http://www.linkedin.com/in/lucacrea/it
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re:Workflow : come personalizzarli? 6 Anni 10 Mesi fa #6803

  • NicoTheBrush
  • Avatar di NicoTheBrush
  • Offline
  • Platinum Boarder
  • Messaggi: 1952
  • Ringraziamenti ricevuti 156
  • Karma: 46
Rispondo alla 2 non vedendo l'immagine
Il browse parte dall'oggetto da cui effettui la chiamata, puoi caricare gli N (ids) record a cui sei interessato e poi raggiungere tutti gli oggetti collegati che ti interessano, sapendo quali sono i campi relazione (m2m, 02m, m2o) puoi fare il salto sulla destinazione con il punto quante volte vuoi (ovviamente sta a te sapere che vai su un 2many e occorre un ciclo), ovviamente se nell'oggetto hai questa possibilità, se non hai il campo o lo crei o li ti fermi :). Sul wiki ho messo la sezione per farei grafici UML (una specie di modello entità / relazione) che può venirti in aiuto oppure da openerp nella seziona amministrazione puoi vedere i campi di ogni oggetto e da li puoi saprere (elemento per elemento) quali oggetti collegati raggiungere (amministrazione / personalizzazione / struttura database / oggetti):

http://wiki.openerp-italia.org/doku.php/area_tecnica/sviluppo_e_tools/uml
Ultima modifica: 6 Anni 10 Mesi fa da NicoTheBrush.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re:Workflow : come personalizzarli? 6 Anni 10 Mesi fa #6804

  • luca81
  • Avatar di luca81
  • Offline
  • Senior Boarder
  • Messaggi: 64
  • Ringraziamenti ricevuti 1
  • Karma: 1
Rispondo alla 2 non vedendo l'immagine
Oops :P nella fretta mi sono dimenticato il file. Questa volta dovrei averla allegata bene ;)



[...] Sul wiki ho messo la sezione per farei grafici UML (una specie di modello entità / relazione) che può venirti in aiuto oppure da openerp nella seziona amministrazione puoi vedere i campi di ogni oggetto e da li puoi saprere (elemento per elemento) quali oggetti collegati raggiungere (amministrazione / personalizzazione / struttura database / oggetti)
Fantastico! Era quello che cercavo.
Ma devo dire che, per ora, mi accontento della visualizzazione dei campi tramite OE: c'è proprio la lista completa che mi serviva. Purtroppo, per abitudine, sono partito direttamente da postgresql, ma lì alcune relazioni sono un po' nascoste, mentre da OE si ha tutto sotto mano.

Grazie ancora e buona serata.
L.)
Luca Crea
EUROPA s.a.s. — www.europa-ge.com
LinkedIn Profile — http://www.linkedin.com/in/lucacrea/it
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re:Workflow : come personalizzarli? 6 Anni 10 Mesi fa #6805

  • NicoTheBrush
  • Avatar di NicoTheBrush
  • Offline
  • Platinum Boarder
  • Messaggi: 1952
  • Ringraziamenti ricevuti 156
  • Karma: 46
Non vedo niente di strano o atipico nel tuo WF, l'unica cosa il nodo something_else (come il done) dovrebbero essere impostati come nodo finale se, come immagino, va a chiudere il flusso del tuo wf.

<field name="flow_stop">True</field>
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
  • Pagina:
  • 1
  • 2
Tempo creazione pagina: 0.148 secondi

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

Protected by R Antispam