diff options
| author | Mitali Patel <mpa@odoo.com> | 2018-05-16 11:58:08 +0530 |
|---|---|---|
| committer | Thibault Delavallée <tde@odoo.com> | 2018-07-19 11:26:46 +0200 |
| commit | 220ac81fa6e8695dc68abd18997c16c6c919db0d (patch) | |
| tree | 3bf3bc0588681c650c59fe5fc632c1174713729e /addons | |
| parent | d61534ac870335fdf340a46a4a92c90d35183789 (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__.py | 4 | ||||
| -rw-r--r-- | addons/point_of_sale/data/digest_data.xml | 8 | ||||
| -rw-r--r-- | addons/point_of_sale/models/__init__.py | 1 | ||||
| -rw-r--r-- | addons/point_of_sale/models/digest.py | 29 | ||||
| -rw-r--r-- | addons/point_of_sale/views/digest_views.xml | 15 | ||||
| -rw-r--r-- | addons/point_of_sale/views/pos_order_view.xml | 7 |
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> |
