Forum

Benvenuto!

Questo è il forum ufficiale dell'Associazione Odoo Italia. Dopo esserti registrato potrai partecipare ponendo domande o rispondendo a quelle esistenti. Non scordarti di compilare il tuo profilo e consultare le linee guida prima di iniziare a scrivere.

1

[SOLVED] [12] Come abilitare la funzione "reduce" nei report? Stampa DDT con totale valore merci

Avatar
Paolo Subiaco

Ciao a tutti.
Personalizzando il report DDT per stampare i costi del materiale trasferito e il costo totale, mi sono imbattuto in un problema:

analogamente a Odoo 8, pensavo di utilizzare la funzione reduce(lambda x, y: x+y['product_id']['product_tmpl_id']['list_price']*y['product_uom_qty'], o.move_lines, 0) per calcolare l'importo di tutta la merce trasferita, ma python3 richiede che di importare la funzione reduce da functools, cosa che odoo 12 non fa, e l'errore ottenuto era
NameError: name 'reduce' is not defined

Grazie all'aiuto di Luca Subiaco ho risolto il problema cambiando strategia, utilizzando una variabile all'interno del ciclo for che elenca tutti gli articoli per sommare uno dopo l'altro l'importo di ogni articolo:

<t t-set="total_value" t-value="0"/>
<tr t-foreach="o.line_ids" t-as="line">
....
<t t-if="o.show_price">
<t t-set="price" t-value="line.price_unit" />
<t t-if="price==0"><t t-set="price" t-value="line.product_id.product_tmpl_id.list_price" /></t>
<td class="text-right"><span t-esc="price" t-options='{"widget": "float", "precision": 5}'></span></td>
<td class="text-right"><span t-esc="(price*line.product_uom_qty)" t-options='{"widget": "float", "precision": 4}'/></td>
    <t t-set="total_value" t-value="total_value + (price * line.product_uom_qty)"/>
</t>
...
<td t-if="o.show_price">
<small>Total without taxes</small><br/>
<span t-esc="total_value" t-options='{"widget": "float", "precision": 2}'/>
</td>

Ciao!
Paolo

 
Avatar
Abbandona