This question has been flagged
3 Replies
4619 Views

I'm try tocalcualte the percentage but got the syntax error 

Code 1: 

record in self:

if record['planned_revenue'] !=0 :

record['x_SalesMarginPercentage'] = (record.planned_revenue - record.x_SSSCostPrice) / (record.planned_revenue * .01 )


code 2: 

record in self:

if record['planned_revenue'] !=0 & record['x_SSSCostPrice'] !=0 :

record['x_SalesMarginPercentage'] = (record.planned_revenue - record.x_SSSCostPrice) / (record.planned_revenue * .01 )

Avatar
Discard

Please post the error as well.

Author

Error:

Odoo Server Error

Traceback (most recent call last):

File "C:\Program Files (x86)\Odoo 13.0e\server\odoo\api.py", line 753, in get

value = self._data[field][record._ids[0]]

KeyError: 5028

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

File "C:\Program Files (x86)\Odoo 13.0e\server\odoo\fields.py", line 978, in __get__

value = env.cache.get(record, self)

File "C:\Program Files (x86)\Odoo 13.0e\server\odoo\api.py", line 759, in get

raise CacheMiss(record, field)

odoo.exceptions.CacheMiss: ('crm.lead(5028,).x_SalesMarginPercentage', None)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

File "C:\Program Files (x86)\Odoo 13.0e\server\odoo\http.py", line 619, in _handle_exception

return super(JsonRequest, self)._handle_exception(exception)

File "C:\Program Files (x86)\Odoo 13.0e\server\odoo\http.py", line 309, in _handle_exception

raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])

File "C:\Program Files (x86)\Odoo 13.0e\server\odoo\tools\pycompat.py", line 14, in reraise

raise value

File "C:\Program Files (x86)\Odoo 13.0e\server\odoo\http.py", line 664, in dispatch

result = self._call_function(**self.params)

File "C:\Program Files (x86)\Odoo 13.0e\server\odoo\http.py", line 345, in _call_function

return checked_call(self.db, *args, **kwargs)

File "C:\Program Files (x86)\Odoo 13.0e\server\odoo\service\model.py", line 93, in wrapper

return f(dbname, *args, **kwargs)

File "C:\Program Files (x86)\Odoo 13.0e\server\odoo\http.py", line 338, in checked_call

result = self.endpoint(*a, **kw)

File "C:\Program Files (x86)\Odoo 13.0e\server\odoo\http.py", line 909, in __call__

return self.method(*args, **kw)

File "C:\Program Files (x86)\Odoo 13.0e\server\odoo\http.py", line 510, in response_wrap

response = f(*args, **kw)

File "C:\Program Files (x86)\Odoo 13.0e\server\odoo\addons\web\controllers\main.py", line 1320, in call_kw

return self._call_kw(model, method, args, kwargs)

File "C:\Program Files (x86)\Odoo 13.0e\server\odoo\addons\web\controllers\main.py", line 1312, in _call_kw

return call_kw(request.env[model], method, args, kwargs)

File "C:\Program Files (x86)\Odoo 13.0e\server\odoo\api.py", line 395, in call_kw

result = _call_kw_multi(method, model, args, kwargs)

File "C:\Program Files (x86)\Odoo 13.0e\server\odoo\api.py", line 382, in _call_kw_multi

result = method(recs, *args, **kwargs)

File "C:\Program Files (x86)\Odoo 13.0e\server\odoo\models.py", line 2909, in read

vals[name] = convert(record[name], record, use_name_get)

File "C:\Program Files (x86)\Odoo 13.0e\server\odoo\models.py", line 5589, in __getitem__

return self._fields[key].__get__(self, type(self))

File "C:\Program Files (x86)\Odoo 13.0e\server\odoo\fields.py", line 1002, in __get__

self.compute_value(recs)

File "C:\Program Files (x86)\Odoo 13.0e\server\odoo\fields.py", line 1087, in compute_value

records._compute_field_value(self)

File "C:\Program Files (x86)\Odoo 13.0e\server\odoo\models.py", line 3907, in _compute_field_value

field.compute(self)

File "C:\Program Files (x86)\Odoo 13.0e\server\odoo\addons\base\models\ir_model.py", line 33, in <lambda>

func = lambda self: safe_eval(text, SAFE_EVAL_BASE, {'self': self}, mode="exec")

File "C:\Program Files (x86)\Odoo 13.0e\server\odoo\tools\safe_eval.py", line 347, in safe_eval

c = test_expr(expr, _SAFE_OPCODES, mode=mode)

File "C:\Program Files (x86)\Odoo 13.0e\server\odoo\tools\safe_eval.py", line 206, in test_expr

code_obj = compile(expr, "", mode)

File "<string>", line 1

record in self:

^

SyntaxError: invalid syntax

Best Answer


Guess you forgot to add 'for'

Code 1: 

for record in self:

    if record['planned_revenue'] !=0 :

        record['x_SalesMarginPercentage'] = (record.planned_revenue - record.x_SSSCostPrice) / (record.planned_revenue * .01 )

Code 2:

for record in self:

    if record['planned_revenue'] !=0 & record['x_SSSCostPrice'] !=0 :

        record['x_SalesMarginPercentage'] = (record.planned_revenue - record.x_SSSCostPrice) / (record.planned_revenue * .01 )


Avatar
Discard
Author

Thanks it works.

When enter the zero value in expected revenue, popup screen with below error but why the if condition not executed

Something went wrong :

"crm.lead(<NewId origin=5028>,).x_SalesMarginPercentage"