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.

Responder a