Salve,
in un modulo che sto realizzando ho creato questo function field
'salelines' : fields.function(
_get_sale_lines,
type='one2many',
obj="sale.order.line",
method=True,
string='Sale Order Lines'),
La cui funzione è
def _get_sale_lines(self, cr, uid, ids, field_name, arg, context):
retlist = {}
for i in ids:
j = 0
res = {}
sql_req= """
SELECT id AS id
FROM product_product
WHERE
(productowner_id = %d)
""" % (i,)
cr.execute(sql_req)
sql_res = cr.fetchall()
if sql_res:
for cust_ids in sql_res: #parserizza tutti i prodotti del productowner
cust_id = cust_ids[0]
sql_req= """
SELECT id as id
FROM sale_order_line
WHERE
(product_id = %d)
""" % (cust_id,)
cr.execute(sql_req)
sql_res2 = cr.dictfetchall()
if sql_res2:
for sale_order_id in sql_res2:
res[j] = sale_order_id['id']
j = j+1
if j == 0:
res[0] = False
retlist[i] = res
return retlist
Ho testato il funzionamento del tutto visualizzando il contenuto di retlist con dei print (nella console del server di Openerp).
Alla chiamata (aprendo la vista form del modulo che sto creando) la funzione restituisce la lista di id di sale_order_lines che mi aspetto.
Ora ho provato a visulizzare il contenuto di questo campo nella form view in questo modo:
<notebook>
.....
<page string="Sales">
<field name="salelines" widget="one2many_list" colspan="4" nolabel="1" mode="tree" readonly="1">
<tree string="Sale Lines">
<field name="name"/>
</tree>
</field>
</page>
[/notebook]
Aggiungendo queste linee però la view non si apre ma non viene restituito alcun errore dal server. Il function field non dovrebbe comportarsi come un normale campo one2many?
Qualcuno sa dirmi cosa sbaglio?
Grazie