Luis Martinez
2016-09-10 16:56:17 UTC
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
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