summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorMitali Patel <mpa@odoo.com>2018-05-16 11:58:08 +0530
committerThibault Delavallée <tde@odoo.com>2018-07-19 11:26:46 +0200
commit220ac81fa6e8695dc68abd18997c16c6c919db0d (patch)
tree3bf3bc0588681c650c59fe5fc632c1174713729e /addons
parentd61534ac870335fdf340a46a4a92c90d35183789 (diff)
[IMP] point_of_sale: implement digest KPIs / tips
Purpose of this commit is to send POS sales details in digest emails. Those are added in the default digest template. This commit is linked to task ID 30655 and PR #18318.
Diffstat (limited to 'addons')
-rw-r--r--addons/point_of_sale/__manifest__.py4
-rw-r--r--addons/point_of_sale/data/digest_data.xml8
-rw-r--r--addons/point_of_sale/models/__init__.py1
-rw-r--r--addons/point_of_sale/models/digest.py29
-rw-r--r--addons/point_of_sale/views/digest_views.xml15
-rw-r--r--addons/point_of_sale/views/pos_order_view.xml7
6 files changed, 63 insertions, 1 deletions
diff --git a/addons/point_of_sale/__manifest__.py b/addons/point_of_sale/__manifest__.py
index 4d7787743cf..bd97ecf1c69 100644
--- a/addons/point_of_sale/__manifest__.py
+++ b/addons/point_of_sale/__manifest__.py
@@ -8,11 +8,12 @@
'sequence': 20,
'summary': 'Touchscreen Interface for Shops',
'description': "",
- 'depends': ['stock_account', 'barcodes', 'web_editor'],
+ 'depends': ['stock_account', 'barcodes', 'web_editor', 'digest'],
'data': [
'security/point_of_sale_security.xml',
'security/ir.model.access.csv',
'data/default_barcode_patterns.xml',
+ 'data/digest_data.xml',
'wizard/pos_box.xml',
'wizard/pos_details.xml',
'wizard/pos_discount.xml',
@@ -36,6 +37,7 @@
'views/account_statement_report.xml',
'views/res_config_settings_views.xml',
'views/res_users_views.xml',
+ 'views/digest_views.xml',
'views/res_partner_view.xml',
'views/report_statement.xml',
'views/report_userlabel.xml',
diff --git a/addons/point_of_sale/data/digest_data.xml b/addons/point_of_sale/data/digest_data.xml
new file mode 100644
index 00000000000..348c528d020
--- /dev/null
+++ b/addons/point_of_sale/data/digest_data.xml
@@ -0,0 +1,8 @@
+<?xml version='1.0' encoding='utf-8'?>
+<odoo>
+ <data noupdate="1">
+ <record id="digest.digest_digest_default" model="digest.digest">
+ <field name="kpi_pos_total">True</field>
+ </record>
+ </data>
+</odoo>
diff --git a/addons/point_of_sale/models/__init__.py b/addons/point_of_sale/models/__init__.py
index 6417e3f1b7d..0ead169fa06 100644
--- a/addons/point_of_sale/models/__init__.py
+++ b/addons/point_of_sale/models/__init__.py
@@ -5,6 +5,7 @@ from . import account_bank_statement
from . import account_journal
from . import account_tax
from . import barcode_rule
+from . import digest
from . import pos_category
from . import pos_config
from . import pos_order
diff --git a/addons/point_of_sale/models/digest.py b/addons/point_of_sale/models/digest.py
new file mode 100644
index 00000000000..ea115f9b194
--- /dev/null
+++ b/addons/point_of_sale/models/digest.py
@@ -0,0 +1,29 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import fields, models, _
+from odoo.exceptions import AccessError
+
+
+class Digest(models.Model):
+ _inherit = 'digest.digest'
+
+ kpi_pos_total = fields.Boolean('POS Sales')
+ kpi_pos_total_value = fields.Monetary(compute='_compute_kpi_pos_total_value')
+
+ def _compute_kpi_pos_total_value(self):
+ if not self.env.user.has_group('point_of_sale.group_pos_user'):
+ raise AccessError(_("Do not have access, skip this data for user's digest email"))
+ for record in self:
+ start, end, company = record._get_kpi_compute_parameters()
+ record.kpi_pos_total_value = sum(self.env['pos.order'].search([
+ ('date_order', '>=', start),
+ ('date_order', '<', end),
+ ('state', 'not in', ['draft', 'cancel', 'invoiced']),
+ ('company_id', '=', company.id)
+ ]).mapped('amount_total'))
+
+ def compute_kpis_actions(self, company, user):
+ res = super(Digest, self).compute_kpis_actions(company, user)
+ res['kpi_pos_total'] = 'point_of_sale.action_pos_sale_graph&menu_id=%s' % self.env.ref('point_of_sale.menu_point_root').id
+ return res
diff --git a/addons/point_of_sale/views/digest_views.xml b/addons/point_of_sale/views/digest_views.xml
new file mode 100644
index 00000000000..5c7deb86b34
--- /dev/null
+++ b/addons/point_of_sale/views/digest_views.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+ <record id="digest_digest_view_form" model="ir.ui.view">
+ <field name="name">digest.digest.view.form.inherit.sale.order</field>
+ <field name="model">digest.digest</field>
+ <field name="inherit_id" ref="digest.digest_digest_view_form" />
+ <field name="arch" type="xml">
+ <xpath expr="//group[@name='kpi_general']" position="after">
+ <group name="kpi_pos" string="Point of Sale">
+ <field name="kpi_pos_total"/>
+ </group>
+ </xpath>
+ </field>
+ </record>
+</odoo>
diff --git a/addons/point_of_sale/views/pos_order_view.xml b/addons/point_of_sale/views/pos_order_view.xml
index 906d8844507..6b3da82bb99 100644
--- a/addons/point_of_sale/views/pos_order_view.xml
+++ b/addons/point_of_sale/views/pos_order_view.xml
@@ -163,6 +163,13 @@
</p>
</field>
</record>
+ <record id="action_pos_sale_graph" model="ir.actions.act_window">
+ <field name="name">Orders</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">pos.order</field>
+ <field name="view_mode">graph,tree,kanban,form</field>
+ <field name="domain">[('state', 'not in', ['draft', 'cancel', 'invoiced'])]</field>
+ </record>
<record id="view_pos_order_tree" model="ir.ui.view">
<field name="name">pos.order.tree</field>
<field name="model">pos.order</field>