On 31/10/13 17:22 -0200, Gmail - Iasmini wrote:
> Hi,
> 
> I'm trying to modify the amount value at slx_desconto on_change.
> 
> I did this:
> 
> I have a invoice.py file that has:
> 
> ...
> 
> class InvoiceLine:
>     'Invoice Line'
>     __name__ = 'account.invoice.line'
> 
>     slx_desconto = fields.Numeric(u'Desconto', digits=(16, 4),
>                                   states={
>                                       'invisible': Eval('type') != 'line'
>                                         },
>                                   depends=['type'],
>                                   on_change=['slx_desconto', 'amount']
>                                   )
> 
>     def on_change_slx_desconto(self):
>         if self.type == 'line':
>             currency = (self.invoice.currency if self.invoice
>                         else self.currency)
>             amount = (Decimal(str(self.quantity or '0.0'))
>                       * (self.unit_price or Decimal('0.0')
>                       - (self.slx_desconto) or Decimal('0.0')))
>             if currency:
>                 return currency.round(amount)
>             return amount
>         return Decimal('0.0')
> 
> 
> And I created "def on_change_slx_desconto(self):" to modify the way
> that calculates the amount. But when I change the value, it raises
> this error:
> 
> Traceback (most recent call last):
>   File "/trytond/protocols/jsonrpc.py", line 123, in _marshaled_dispatch
>     response['result'] = dispatch_method(method, params)
>   File "/trytond/protocols/jsonrpc.py", line 156, in _dispatch
>     res = dispatch(*args)
>   File "/trytond/protocols/dispatcher.py", line 163, in dispatch
>     result = rpc.result(meth(inst, *args, **kwargs))
>   File "/trytond/modules/nfse_br/invoice.py", line 65, in
> on_change_slx_desconto
>     if self.type == 'line':
>   File "/trytond/model/modelstorage.py", line 1191, in __getattr__
>     return super(ModelStorage, self).__getattr__(name)
>   File "/trytond/model/model.py", line 569, in __getattr__
>     % (self.__name__, name, self._values))
> AttributeError: 'account.invoice.line' Model has no attribute 'type':
> {'slx_desconto': Decimal('1'), 'amount': Decimal('10')}
> 
> It says that there is no 'type' on 'account.invoice.line'. Why?

If you want to use a field in an on_change, you must declare this field
in the on_change list.

-- 
Cédric Krier - B2CK SPRL
Email/Jabber: [email protected]
Tel: +32 472 54 46 59
Website: http://www.b2ck.com/

Attachment: pgp7renzCrx2v.pgp
Description: PGP signature

Reply via email to