El 10 de septiembre de 2016 13:56:17 GMT-03:00, Luis Martinez <[email protected]> escribió: >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
La api de on_change cambió en la v3.6 Fijate acá: https://discuss.tryton.org/t/migration-from-3-4-to-3-6/17 [PY] New API for on_change: the instance is modified instead of returning a dictionary. Example: http://hg.tryton.org/modules/party/rev/3be0dbb6bf947 Saludos! > >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 -- Sent from my Android device with K-9 Mail. Please excuse my brevity.
