This question has been flagged

Hi!!

I'm working in odoo 13. I added a field in database models in sale.report with name "x_studio_sector" what is a Char. Then in sale.report analysis view i want to filter by that field but i can't, this error appears:

Traceback (most recent call last):
File "/opt/odoo13/odoo/odoo/http.py", line 624, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/opt/odoo13/odoo/odoo/http.py", line 310, in _handle_exception
raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
File "/opt/odoo13/odoo/odoo/tools/pycompat.py", line 14, in reraise
raise value
File "/opt/odoo13/odoo/odoo/http.py", line 669, in dispatch
result = self._call_function(**self.params)
File "/opt/odoo13/odoo/odoo/http.py", line 350, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/opt/odoo13/odoo/odoo/service/model.py", line 94, in wrapper
return f(dbname, *args, **kwargs)
File "/opt/odoo13/odoo/odoo/http.py", line 339, in checked_call
result = self.endpoint(*a, **kw)
File "/opt/odoo13/odoo/odoo/http.py", line 915, in __call__
return self.method(*args, **kw)
File "/opt/odoo13/odoo/odoo/http.py", line 515, in response_wrap
response = f(*args, **kw)
File "/opt/odoo13/odoo/addons/web/controllers/main.py", line 1339, in call_kw
return self._call_kw(model, method, args, kwargs)
File "/opt/odoo13/odoo/addons/web/controllers/main.py", line 1331, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/opt/odoo13/odoo/odoo/api.py", line 383, in call_kw
result = _call_kw_model(method, model, args, kwargs)
File "/opt/odoo13/odoo/odoo/api.py", line 356, in _call_kw_model
result = method(recs, *args, **kwargs)
File "/opt/odoo13/odoo/odoo/models.py", line 2187, in read_group
result = self._read_group_raw(domain, fields, groupby, offset=offset, limit=limit, orderby=orderby, lazy=lazy)
File "/opt/odoo13/odoo/odoo/models.py", line 2312, in _read_group_raw
self._cr.execute(query, where_clause_params)
File "/opt/odoo13/odoo/odoo/sql_db.py", line 173, in wrapper
return f(self, *args, **kwargs)
File "/opt/odoo13/odoo/odoo/sql_db.py", line 250, in execute
res = self._obj.execute(query, params)
psycopg2.errors.UndefinedColumn: column sale_report.x_studio_sector does not exist
LINE 4: ...'sent')) OR "sale_report"."state" IS NULL) AND ("sale_repo...
^



I have made a module to enter the field from python, is like that:



from odoo import fields, models


class Salereport(models.Model):
_inherit = "sale.report"

x_studio_sector = fields.Char("x_studio_sector",store=True)



still not working, does anyone have any ideas? Thanks!

Avatar
Discard
Author

Hi Niyas,

Still not working... I have this module now:

from odoo import fields, models


class SaleReport(models.Model):
_inherit = "sale.report"

x_studio_sector = fields.Char("x_studio_sector",store=True)

x_studio_sector = fields.Float('Margin')

def _query(self, with_clause='', fields={}, groupby='', from_clause=''):

fields['margin'] = ", l.x_studio_sector"

return super(SaleReport, self)._query(with_clause, fields, groupby, from_clause)

Author Best Answer

Hi, finally the solution was that code:

from odoo import _, exceptions, models, api, fields


class SaleReport(models.Model):

_inherit = 'sale.report'

x_studio_sector = fields.Char(String = "x_studio_sector")

def _query(self, with_clause='', fields={}, groupby='', from_clause=''):

fields['x_studio_sector'] = ", s.x_studio_sector"
groupby += ', s.x_studio_sector'
return super(SaleReport, self)._query(with_clause, fields, groupby, from_clause)

Avatar
Discard
Best Answer

Hi,

You have add this field also to the query that creates this model. Do as follows,

Thanks

Avatar
Discard

class SaleReport(models.Model):

_inherit = 'sale.report'

x_studio_sector = fields.Float('Margin')

def _query(self, with_clause='', fields={}, groupby='', from_clause=''):

fields['margin'] = ", l.x_studio_sector"

return super(SaleReport, self)._query(with_clause, fields, groupby, from_clause)

There was a mistake in the code i have shared, please update as follows,

fields['x_studio_sector'] = ", l.x_studio_sector"

class SaleReport(models.Model):

_inherit = 'sale.report'

x_studio_sector = fields.Float('Margin')

def _query(self, with_clause='', fields={}, groupby='', from_clause=''):

fields['margin'] = ", "" as x_studio_sector"

return super(SaleReport, self)._query(with_clause, fields, groupby, from_clause)