Skip to content
Snippets Groups Projects
Commit ef2b1dd1 authored by Carlos Lopez's avatar Carlos Lopez Committed by tafaRU
Browse files

[IMP] sale, pos_sale: facilitate inheritance on sale report


closes odoo/odoo#74896

closes odoo/odoo#78468

Signed-off-by: default avatarVictor Feyens (vfe) <vfe@odoo.com>
parent 58cd10eb
No related branches found
No related tags found
No related merge requests found
......@@ -19,9 +19,9 @@ class SaleReport(models.Model):
('pos_done', 'Posted'),
('invoiced', 'Invoiced')], string='Status', readonly=True)
def _query(self, with_clause='', fields={}, groupby='', from_clause=''):
res = super(SaleReport, self)._query(with_clause, fields, groupby, from_clause)
def _select_pos(self, fields=None):
if not fields:
fields = {}
select_ = '''
MIN(l.id) AS id,
l.product_id AS product_id,
......@@ -62,7 +62,9 @@ class SaleReport(models.Model):
for field in fields.keys():
select_ += ', NULL AS %s' % (field)
return select_
def _from_pos(self):
from_ = '''
pos_order_line l
join pos_order pos on (l.order_id=pos.id)
......@@ -74,7 +76,9 @@ class SaleReport(models.Model):
LEFT JOIN pos_config config ON (config.id = session.config_id)
left join product_pricelist pp on (pos.pricelist_id = pp.id)
'''
return from_
def _group_by_pos(self):
groupby_ = '''
l.order_id,
l.product_id,
......@@ -97,6 +101,13 @@ class SaleReport(models.Model):
u.factor,
pos.crm_team_id
'''
current = '(SELECT %s FROM %s GROUP BY %s)' % (select_, from_, groupby_)
return groupby_
def _query(self, with_clause='', fields=None, groupby='', from_clause=''):
if not fields:
fields = {}
res = super()._query(with_clause, fields, groupby, from_clause)
current = '(SELECT %s FROM %s GROUP BY %s)' % \
(self._select_pos(fields), self._from_pos(), self._group_by_pos())
return '%s UNION ALL %s' % (res, current)
......@@ -58,9 +58,9 @@ class SaleReport(models.Model):
order_id = fields.Many2one('sale.order', 'Order #', readonly=True)
def _query(self, with_clause='', fields={}, groupby='', from_clause=''):
with_ = ("WITH %s" % with_clause) if with_clause else ""
def _select_sale(self, fields=None):
if not fields:
fields = {}
select_ = """
coalesce(min(l.id), -s.id) as id,
l.product_id as product_id,
......@@ -101,7 +101,9 @@ class SaleReport(models.Model):
for field in fields.values():
select_ += field
return select_
def _from_sale(self, from_clause=''):
from_ = """
sale_order_line l
right outer join sale_order s on (s.id=l.order_id)
......@@ -113,7 +115,9 @@ class SaleReport(models.Model):
left join product_pricelist pp on (s.pricelist_id = pp.id)
%s
""" % from_clause
return from_
def _group_by_sale(self, groupby=''):
groupby_ = """
l.product_id,
l.order_id,
......@@ -138,8 +142,14 @@ class SaleReport(models.Model):
l.discount,
s.id %s
""" % (groupby)
return groupby_
return '%s (SELECT %s FROM %s GROUP BY %s)' % (with_, select_, from_, groupby_)
def _query(self, with_clause='', fields=None, groupby='', from_clause=''):
if not fields:
fields = {}
with_ = ("WITH %s" % with_clause) if with_clause else ""
return '%s (SELECT %s FROM %s GROUP BY %s)' % \
(with_, self._select_sale(fields), self._from_sale(from_clause), self._group_by_sale(groupby))
def init(self):
# self._table = sale_report
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment