diff --git a/addons/pos_sale/report/sale_report.py b/addons/pos_sale/report/sale_report.py index 5053d78342f..ddc713c0bb9 100644 --- a/addons/pos_sale/report/sale_report.py +++ b/addons/pos_sale/report/sale_report.py @@ -56,7 +56,10 @@ class SaleReport(models.Model): (select sum(t.volume*l.qty/u.factor) from pos_order_line l join product_product p on (l.product_id=p.id) left join product_template t on (p.product_tmpl_id=t.id) - left join uom_uom u on (u.id=t.uom_id)) AS volume + left join uom_uom u on (u.id=t.uom_id)) AS volume, + l.discount as discount, + sum((l.price_unit * l.discount / 100.0 / COALESCE(cr.rate, 1.0))) as discount_amount, + NULL as order_id ''' for field in fields.keys(): diff --git a/addons/sale/report/sale_report.py b/addons/sale/report/sale_report.py index 7809ea0ff3f..0af13520c2a 100644 --- a/addons/sale/report/sale_report.py +++ b/addons/sale/report/sale_report.py @@ -46,6 +46,11 @@ class SaleReport(models.Model): weight = fields.Float('Gross Weight', readonly=True) volume = fields.Float('Volume', readonly=True) + discount = fields.Float('Discount %', readonly=True) + discount_amount = fields.Float('Discount Amount', readonly=True) + + order_id = fields.Integer('Order ID', readonly=True) + def _query(self, with_clause='', fields={}, groupby='', from_clause=''): with_ = """currency_rate as (%s) %s""" % (self.env['res.currency']._select_companies_rates(), with_clause) @@ -78,7 +83,10 @@ class SaleReport(models.Model): partner.country_id as country_id, partner.commercial_partner_id as commercial_partner_id, sum(p.weight * l.product_uom_qty / u.factor * u2.factor) as weight, - sum(p.volume * l.product_uom_qty / u.factor * u2.factor) as volume + sum(p.volume * l.product_uom_qty / u.factor * u2.factor) as volume, + l.discount as discount, + sum((l.price_unit * l.discount / 100.0 / COALESCE(cr.rate, 1.0))) as discount_amount, + s.id as order_id """ for field in fields.values(): @@ -117,7 +125,9 @@ class SaleReport(models.Model): s.team_id, p.product_tmpl_id, partner.country_id, - partner.commercial_partner_id %s + partner.commercial_partner_id, + l.discount, + s.id %s """ % (groupby) return 'WITH %s (SELECT %s FROM %s WHERE l.product_id IS NOT NULL GROUP BY %s)' % (with_, select_, from_, groupby_) diff --git a/addons/sale/report/sale_report_views.xml b/addons/sale/report/sale_report_views.xml index e1ddb6361a1..d3f53f7bc23 100644 --- a/addons/sale/report/sale_report_views.xml +++ b/addons/sale/report/sale_report_views.xml @@ -17,7 +17,7 @@ sale.report.graph sale.report - + @@ -31,9 +31,12 @@ - - + + + + + diff --git a/addons/sale/views/sale_views.xml b/addons/sale/views/sale_views.xml index 5c711dfe2c8..761333e3920 100644 --- a/addons/sale/views/sale_views.xml +++ b/addons/sale/views/sale_views.xml @@ -566,7 +566,7 @@ - + + + + + + diff --git a/addons/website_sale/models/sale_order.py b/addons/website_sale/models/sale_order.py index fc70d78ad67..45f36c11dbd 100644 --- a/addons/website_sale/models/sale_order.py +++ b/addons/website_sale/models/sale_order.py @@ -256,3 +256,9 @@ class SaleOrder(models.Model): self.payment_tx_id.state = 'done' else: raise ValidationError(_("The quote should be sent and the payment acquirer type should be manual or wire transfer")) + + def _set_demo_create_date(self, create_date): + self.env.cr.execute("""UPDATE sale_order SET create_date=%s WHERE id IN %s """, (create_date, tuple(self.ids))) + self.modified(['create_date']) + if self.env.recompute and self.env.context.get('recompute', True): + self.recompute()