From 46180408cb1cda084fe763adb7ecb47c08b00d0d Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Fri, 23 Sep 2016 17:09:16 +0200 Subject: [PATCH] [IMP] point_of_sale: restore proper sales of the day report The previous report was a workaround to avoid changing the model in the stable version using a custom widget. Replace by a proper wizard. --- addons/point_of_sale/__manifest__.py | 1 + addons/point_of_sale/models/pos_order.py | 22 ++++--- addons/point_of_sale/static/src/js/report.js | 63 ------------------- addons/point_of_sale/static/src/xml/pos.xml | 24 ------- .../views/point_of_sale_template.xml | 1 - .../views/pos_order_report_view.xml | 7 ++- addons/point_of_sale/wizard/__init__.py | 1 + addons/point_of_sale/wizard/pos_details.py | 33 ++++++++++ addons/point_of_sale/wizard/pos_details.xml | 23 +++++++ 9 files changed, 76 insertions(+), 99 deletions(-) delete mode 100644 addons/point_of_sale/static/src/js/report.js create mode 100644 addons/point_of_sale/wizard/pos_details.py create mode 100644 addons/point_of_sale/wizard/pos_details.xml diff --git a/addons/point_of_sale/__manifest__.py b/addons/point_of_sale/__manifest__.py index d85d1e68700..28ae1045948 100644 --- a/addons/point_of_sale/__manifest__.py +++ b/addons/point_of_sale/__manifest__.py @@ -34,6 +34,7 @@ Main Features 'security/ir.model.access.csv', 'data/default_barcode_patterns.xml', 'wizard/pos_box.xml', + 'wizard/pos_details.xml', 'wizard/pos_discount.xml', 'wizard/pos_open_statement.xml', 'wizard/pos_payment.xml', diff --git a/addons/point_of_sale/models/pos_order.py b/addons/point_of_sale/models/pos_order.py index 37e0ad4c1f7..b069d627a76 100644 --- a/addons/point_of_sale/models/pos_order.py +++ b/addons/point_of_sale/models/pos_order.py @@ -790,13 +790,13 @@ class ReportSaleDetails(models.AbstractModel): @api.model - def get_sale_details(self, date_start=False, date_stop=False, company=False): + def get_sale_details(self, date_start=False, date_stop=False, configs=False): """ Serialise the orders of the day information - params: date_start, date_stop string representing the day of order + params: date_start, date_stop string representing the datetime of order """ - if not company: - company = self.env.user.company_id + if not configs: + configs = self.env['pos.config'].search([]) today = fields.Datetime.from_string(fields.Date.context_today(self)) if date_start: @@ -807,7 +807,7 @@ class ReportSaleDetails(models.AbstractModel): if date_stop: # set time to 23:59:59 - date_stop = fields.Datetime.from_string(date_stop) + timedelta(days=1, seconds=-1) + date_stop = fields.Datetime.from_string(date_stop) else: # stop by default today 23:59:59 date_stop = today + timedelta(days=1, seconds=-1) @@ -817,9 +817,13 @@ class ReportSaleDetails(models.AbstractModel): date_start = fields.Datetime.to_string(date_start) date_stop = fields.Datetime.to_string(date_stop) - orders = self.env['pos.order'].search([('date_order', '>=', date_start), ('date_order', '<=', date_stop), - ('state', 'in', ['paid','invoiced','done']), - ('company_id', '=', company.id)]) + + orders = self.env['pos.order'].search([ + ('date_order', '>=', date_start), + ('date_order', '<=', date_stop), + ('state', 'in', ['paid','invoiced','done']), + ('config_id', 'in', configs.ids)]) + user_currency = self.env.user.company_id.currency_id total = 0.0 @@ -876,7 +880,7 @@ class ReportSaleDetails(models.AbstractModel): } @api.multi - def render_html(self, data=None): + def render_html(self, docids, data=None): company = request.env.user.company_id date_start = self.env.context.get('date_start', False) date_stop = self.env.context.get('date_stop', False) diff --git a/addons/point_of_sale/static/src/js/report.js b/addons/point_of_sale/static/src/js/report.js deleted file mode 100644 index 783ace7f655..00000000000 --- a/addons/point_of_sale/static/src/js/report.js +++ /dev/null @@ -1,63 +0,0 @@ -odoo.define('point_of_sale.report', function (require) { -"use strict"; - -var chat_manager = require('mail.chat_manager'); -var composer = require('mail.composer'); -var ChatThread = require('mail.ChatThread'); -var utils = require('mail.utils'); - -var config = require('web.config'); -var core = require('web.core'); -var data = require('web.data'); -var Dialog = require('web.Dialog'); -var framework = require('web.framework'); -var Model = require('web.Model'); - -var pyeval = require('web.pyeval'); -var SearchView = require('web.SearchView'); - -var ActionManager = require('web.ActionManager'); -var ControlPanelMixin = require('web.ControlPanelMixin'); -var datepicker = require('web.datepicker'); -var Widget = require('web.Widget'); - -var QWeb = core.qweb; -var _t = core._t; - -// TODO replace in v10 with proper wizard -var PosDetailsWidget = Widget.extend(ControlPanelMixin, { - template: 'WizardSaleDetailsReport', - events: { - "click .js_generate": "renderReport", - }, - - renderElement: function() { - this._super(); - - var current_date = new moment(); - this.dp_start = new datepicker.DateWidget(this); - this.dp_start.insertBefore(this.$el.find('.js_date_start')); - this.dp_start.set_value(current_date.format('YYYY-MM-DD')); - - this.dp_stop = new datepicker.DateWidget(this); - this.dp_stop.insertAfter(this.$el.find('.js_date_stop')); - this.dp_stop.set_value(current_date.format('YYYY-MM-DD')); - - }, - - renderReport: function() { - var start = this.dp_start.get_value(); - var stop = this.dp_stop.get_value(); - var url = '/pos/sale_details_report?date_start='+start+'&date_stop='+stop; - window.open(url, '_blank'); - - }, - -}); - - -core.action_registry.add('report_pos_details', PosDetailsWidget); - -return PosDetailsWidget; - -}); diff --git a/addons/point_of_sale/static/src/xml/pos.xml b/addons/point_of_sale/static/src/xml/pos.xml index d7d54123a8c..1b044274ce8 100644 --- a/addons/point_of_sale/static/src/xml/pos.xml +++ b/addons/point_of_sale/static/src/xml/pos.xml @@ -938,30 +938,6 @@ - -
-
-

Select Dates for the report

- - - - - - - - - -
Start date
Stop date
-

- -

-
- - -
-
- -