Buenas tardes, estoy tratando de modificar el módulo analytic_product de la 
versión 3.4,  que ya he utilizado anteriormente, para que funcione en la 
versión 3.8, al ejecutarlo previo a hacer cualquier modificación me arroja 
el siguiente error:

Traceback (most recent call last):
  File "/home//trytond/protocols/dispatcher.py", line 167, in dispatch
    result = rpc.result(meth(inst, *c_args, **c_kwargs))
  File "/home//trytond/model/modelview.py", line 649, in on_change
    method()
  File "/home//trytond/model/modelview.py", line 84, in wrapper
    result = func(self, *args, **kwargs)
  File "/home//trytond/model/fields/field.py", line 89, in wrapper
    return func(self, *args, **kwargs)
  File "/home//trytond/modules/sale_pos/sale.py", line 292, in 
on_change_product
    super(SaleLine, self).on_change_product()
  File "/home//trytond/model/modelview.py", line 84, in wrapper
    result = func(self, *args, **kwargs)
  File "/home//trytond/model/fields/field.py", line 89, in wrapper
    return func(self, *args, **kwargs)
  File "/home//trytond/modules/analytic_product/product.py", line 260, in 
on_change_product
    res[key] = account.id
TypeError: 'sale.line' object does not support item assignment

Esta es la parte del código donde está arrojándome el error:

class AnalyticProductMixin:
    @fields.depends('product')
    def on_change_product(self):
        try:
            res = super(AnalyticProductMixin, self).on_change_product()
        except:
            res = {}

        if self.product and self.product.analytic_accounts:
            for account in self.product.analytic_accounts.accounts:
                key = 'analytic_account_%d' % account.root.id
                res[key] = account.id
        return res

Haciendo un poco de debugeo lo que puedo notar al correr este código en la 
versión 3.4 es que "res" trae la siguiente información:

{'unit_digits': 2, 'description': u'MELOXICAM 15MG C/10 TAB', 
'gross_unit_price': Decimal('10.00'), 'taxes': [5], 
'gross_unit_price_wo_round': Decimal('10.0000'), 'discount': Decimal('0'), 
'amount': Decimal('10.00'), 'unit_price': Decimal('10.0000'), 'cost_price': 
Decimal('5.00'), 'unit': 46, 'unit.rec_name': u'CAJA C/10'}

Incluso despues de asignar el res[key] = account.id veo que también ya le 
agregó el valor

{'unit_digits': 2, 'description': u'MELOXICAM 15MG C/10 TAB', 
'gross_unit_price': Decimal('10.00'), 'taxes': [5], 
'gross_unit_price_wo_round': Decimal('10.0000'), 'discount': Decimal('0'), 
'amount': Decimal('10.00'), 'unit_price': Decimal('10.0000'), 
'analytic_account_1': 8, 'cost_price': Decimal('5.00'), 'unit': 46, 
'unit.rec_name': u'CAJA C/10'}

Mientras que ahora al correrlo en la versión 3.8 "res" trae la siguiente 
información:

sale.line,-1

Supongo que esta es la razón, alguna idea de que debo de ajustar o 
considerar para poderle asignar el valor de la cuenta analítica que trae 
asignada el producto?

De antemano gracias

Responder a