From 2ab3c94049982bc6986bf36c2c45434db8fad3c3 Mon Sep 17 00:00:00 2001 From: Victor Feyens Date: Thu, 23 Dec 2021 16:25:26 +0100 Subject: [PATCH 01/24] [MOV] sale: correct file name --- addons/sale/report/__init__.py | 4 ++-- .../report/{invoice_report.py => account_invoice_report.py} | 0 2 files changed, 2 insertions(+), 2 deletions(-) rename addons/sale/report/{invoice_report.py => account_invoice_report.py} (100%) diff --git a/addons/sale/report/__init__.py b/addons/sale/report/__init__.py index 90248f477ca..ae80b99ad9c 100644 --- a/addons/sale/report/__init__.py +++ b/addons/sale/report/__init__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from . import sale_report -from . import invoice_report +from . import account_invoice_report from . import report_all_channels_sales +from . import sale_report diff --git a/addons/sale/report/invoice_report.py b/addons/sale/report/account_invoice_report.py similarity index 100% rename from addons/sale/report/invoice_report.py rename to addons/sale/report/account_invoice_report.py From 202490e1fcd58aac214e676bb13c4f1706cb83d6 Mon Sep 17 00:00:00 2001 From: Victor Feyens Date: Thu, 23 Dec 2021 16:27:41 +0100 Subject: [PATCH 02/24] [MOV] sale: account_invoice_report views into its own file --- addons/sale/__manifest__.py | 2 + .../report/account_invoice_report_views.xml | 18 +++++ addons/sale/views/crm_team_views.xml | 79 ++++++++----------- 3 files changed, 53 insertions(+), 46 deletions(-) create mode 100644 addons/sale/report/account_invoice_report_views.xml diff --git a/addons/sale/__manifest__.py b/addons/sale/__manifest__.py index ddc91098081..9ab85a2c7c9 100644 --- a/addons/sale/__manifest__.py +++ b/addons/sale/__manifest__.py @@ -14,6 +14,8 @@ This module contains all the common features of Sales Management and eCommerce. 'data': [ 'security/sale_security.xml', 'security/ir.model.access.csv', + + 'report/account_invoice_report_views.xml', 'report/sale_report.xml', 'report/sale_report_views.xml', 'report/sale_report_templates.xml', diff --git a/addons/sale/report/account_invoice_report_views.xml b/addons/sale/report/account_invoice_report_views.xml new file mode 100644 index 00000000000..08df6ff4882 --- /dev/null +++ b/addons/sale/report/account_invoice_report_views.xml @@ -0,0 +1,18 @@ + + + + + account.invoice.report.search.inherit + account.invoice.report + + + + + + + + + + + + diff --git a/addons/sale/views/crm_team_views.xml b/addons/sale/views/crm_team_views.xml index e702e094449..ef2b29ada3f 100644 --- a/addons/sale/views/crm_team_views.xml +++ b/addons/sale/views/crm_team_views.xml @@ -1,53 +1,25 @@ - - crm.team.form - crm.team - 9 - - - -
-
-
- - -
-
- - account.invoice.report.search.inherit - account.invoice.report - - - - - - - - - - - - - - New Quotation - sale.order - ir.actions.act_window - form - { - 'search_default_team_id': [active_id], - 'default_team_id': active_id, - 'default_user_id': uid, - } + + crm.team.form + crm.team + 9 + + + +
+
+
+ +
-
@@ -140,6 +112,21 @@
+ + + New Quotation + sale.order + ir.actions.act_window + form + { + 'search_default_team_id': [active_id], + 'default_team_id': active_id, + 'default_user_id': uid, + } + + + + ['|', ('res_model', '=', False), ('res_model', 'in', ['sale.order', 'res.partner', 'product.template', 'product.product'])] From 1a484e14cad60e066eff31bec648a6d23953c04f Mon Sep 17 00:00:00 2001 From: Victor Feyens Date: Thu, 23 Dec 2021 16:29:52 +0100 Subject: [PATCH 03/24] [MOV] sale: rename sale_report.xml --- addons/sale/__manifest__.py | 2 +- addons/sale/report/{sale_report.xml => ir_actions_report.xml} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename addons/sale/report/{sale_report.xml => ir_actions_report.xml} (100%) diff --git a/addons/sale/__manifest__.py b/addons/sale/__manifest__.py index 9ab85a2c7c9..bad31172638 100644 --- a/addons/sale/__manifest__.py +++ b/addons/sale/__manifest__.py @@ -16,7 +16,7 @@ This module contains all the common features of Sales Management and eCommerce. 'security/ir.model.access.csv', 'report/account_invoice_report_views.xml', - 'report/sale_report.xml', + 'report/ir_actions_report.xml', 'report/sale_report_views.xml', 'report/sale_report_templates.xml', 'report/report_all_channels_sales_views.xml', diff --git a/addons/sale/report/sale_report.xml b/addons/sale/report/ir_actions_report.xml similarity index 100% rename from addons/sale/report/sale_report.xml rename to addons/sale/report/ir_actions_report.xml From d28bf15ca42d01fc07fac746c69cd4a8289b1baf Mon Sep 17 00:00:00 2001 From: Victor Feyens Date: Thu, 23 Dec 2021 16:31:50 +0100 Subject: [PATCH 04/24] [MOV] sale: rename sale_report_templates.xml --- addons/sale/__manifest__.py | 2 +- ...ale_report_templates.xml => ir_actions_report_templates.xml} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename addons/sale/report/{sale_report_templates.xml => ir_actions_report_templates.xml} (100%) diff --git a/addons/sale/__manifest__.py b/addons/sale/__manifest__.py index bad31172638..1ad6f7bba28 100644 --- a/addons/sale/__manifest__.py +++ b/addons/sale/__manifest__.py @@ -16,9 +16,9 @@ This module contains all the common features of Sales Management and eCommerce. 'security/ir.model.access.csv', 'report/account_invoice_report_views.xml', + 'report/ir_actions_report_templates.xml', 'report/ir_actions_report.xml', 'report/sale_report_views.xml', - 'report/sale_report_templates.xml', 'report/report_all_channels_sales_views.xml', 'data/ir_sequence_data.xml', 'data/mail_data_various.xml', diff --git a/addons/sale/report/sale_report_templates.xml b/addons/sale/report/ir_actions_report_templates.xml similarity index 100% rename from addons/sale/report/sale_report_templates.xml rename to addons/sale/report/ir_actions_report_templates.xml From c7d8510084490d5f9f39d901550947463b6ec5a8 Mon Sep 17 00:00:00 2001 From: Victor Feyens Date: Thu, 30 Dec 2021 10:39:48 +0100 Subject: [PATCH 05/24] [REM] sale: unused reporting model Unused since #28633 --- addons/sale/__manifest__.py | 2 +- addons/sale/report/__init__.py | 1 - .../sale/report/report_all_channels_sales.py | 87 ------------------- .../report_all_channels_sales_views.xml | 8 -- addons/sale/report/sale_report_views.xml | 6 ++ addons/sale/security/ir.model.access.csv | 1 - 6 files changed, 7 insertions(+), 98 deletions(-) delete mode 100644 addons/sale/report/report_all_channels_sales.py delete mode 100644 addons/sale/report/report_all_channels_sales_views.xml diff --git a/addons/sale/__manifest__.py b/addons/sale/__manifest__.py index 1ad6f7bba28..f546ef8d0f2 100644 --- a/addons/sale/__manifest__.py +++ b/addons/sale/__manifest__.py @@ -19,7 +19,7 @@ This module contains all the common features of Sales Management and eCommerce. 'report/ir_actions_report_templates.xml', 'report/ir_actions_report.xml', 'report/sale_report_views.xml', - 'report/report_all_channels_sales_views.xml', + 'data/ir_sequence_data.xml', 'data/mail_data_various.xml', 'data/mail_template_data.xml', diff --git a/addons/sale/report/__init__.py b/addons/sale/report/__init__.py index ae80b99ad9c..4deca10a758 100644 --- a/addons/sale/report/__init__.py +++ b/addons/sale/report/__init__.py @@ -2,5 +2,4 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. from . import account_invoice_report -from . import report_all_channels_sales from . import sale_report diff --git a/addons/sale/report/report_all_channels_sales.py b/addons/sale/report/report_all_channels_sales.py deleted file mode 100644 index b5355b4d776..00000000000 --- a/addons/sale/report/report_all_channels_sales.py +++ /dev/null @@ -1,87 +0,0 @@ -# -*- coding: utf-8 -*- -# Part of Odoo. See LICENSE file for full copyright and licensing details. - -from odoo import api, fields, models, tools - - -class PosSaleReport(models.Model): - _name = "report.all.channels.sales" - _description = "Sales by Channel (All in One)" - _auto = False - - name = fields.Char('Order Reference', readonly=True) - partner_id = fields.Many2one('res.partner', 'Partner', readonly=True) - product_id = fields.Many2one('product.product', string='Product', readonly=True) - product_tmpl_id = fields.Many2one('product.template', 'Product Template', readonly=True) - date_order = fields.Datetime(string='Date Order', readonly=True) - user_id = fields.Many2one('res.users', 'Salesperson', readonly=True) - categ_id = fields.Many2one('product.category', 'Product Category', readonly=True) - company_id = fields.Many2one('res.company', 'Company', readonly=True) - price_total = fields.Float('Total', readonly=True) - pricelist_id = fields.Many2one('product.pricelist', 'Pricelist', readonly=True) - country_id = fields.Many2one('res.country', 'Partner Country', readonly=True) - price_subtotal = fields.Float(string='Price Subtotal', readonly=True) - product_qty = fields.Float('Product Quantity', readonly=True) - analytic_account_id = fields.Many2one('account.analytic.account', 'Analytic Account', readonly=True) - team_id = fields.Many2one('crm.team', 'Sales Team', readonly=True) - - def _so(self): - so_str = """ - SELECT sol.id AS id, - so.name AS name, - so.partner_id AS partner_id, - sol.product_id AS product_id, - pro.product_tmpl_id AS product_tmpl_id, - so.date_order AS date_order, - so.user_id AS user_id, - pt.categ_id AS categ_id, - so.company_id AS company_id, - sol.price_total / CASE COALESCE(so.currency_rate, 0) WHEN 0 THEN 1.0 ELSE so.currency_rate END AS price_total, - so.pricelist_id AS pricelist_id, - rp.country_id AS country_id, - sol.price_subtotal / CASE COALESCE(so.currency_rate, 0) WHEN 0 THEN 1.0 ELSE so.currency_rate END AS price_subtotal, - (sol.product_uom_qty / u.factor * u2.factor) as product_qty, - so.analytic_account_id AS analytic_account_id, - so.team_id AS team_id - - FROM sale_order_line sol - JOIN sale_order so ON (sol.order_id = so.id) - LEFT JOIN product_product pro ON (sol.product_id = pro.id) - JOIN res_partner rp ON (so.partner_id = rp.id) - LEFT JOIN product_template pt ON (pro.product_tmpl_id = pt.id) - LEFT JOIN product_pricelist pp ON (so.pricelist_id = pp.id) - LEFT JOIN uom_uom u on (u.id=sol.product_uom) - LEFT JOIN uom_uom u2 on (u2.id=pt.uom_id) - WHERE so.state in ('sale','done') - """ - return so_str - - def _from(self): - return """(%s)""" % (self._so()) - - def _get_main_request(self): - request = """ - CREATE or REPLACE VIEW %s AS - SELECT id AS id, - name, - partner_id, - product_id, - product_tmpl_id, - date_order, - user_id, - categ_id, - company_id, - price_total, - pricelist_id, - analytic_account_id, - country_id, - team_id, - price_subtotal, - product_qty - FROM %s - AS foo""" % (self._table, self._from()) - return request - - def init(self): - tools.drop_view_if_exists(self.env.cr, self._table) - self.env.cr.execute(self._get_main_request()) diff --git a/addons/sale/report/report_all_channels_sales_views.xml b/addons/sale/report/report_all_channels_sales_views.xml deleted file mode 100644 index e6f3cc065ef..00000000000 --- a/addons/sale/report/report_all_channels_sales_views.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - Sales Analysis - sale.report - pivot - - diff --git a/addons/sale/report/sale_report_views.xml b/addons/sale/report/sale_report_views.xml index 33bfcdfe7b4..339a8bd1fda 100644 --- a/addons/sale/report/sale_report_views.xml +++ b/addons/sale/report/sale_report_views.xml @@ -94,4 +94,10 @@ {'search_default_Sales':1, 'group_by_no_leaf':1,'group_by':[]} This report performs analysis on your quotations and sales orders. Analysis check your sales revenues and sort it by different group criteria (salesman, partner, product, etc.) Use this report to perform analysis on sales not having invoiced yet. If you want to analyse your turnover, you should use the Invoice Analysis report in the Accounting application. + + + Sales Analysis + sale.report + pivot +
diff --git a/addons/sale/security/ir.model.access.csv b/addons/sale/security/ir.model.access.csv index e6b7d46fcb9..2648ea4aa65 100644 --- a/addons/sale/security/ir.model.access.csv +++ b/addons/sale/security/ir.model.access.csv @@ -50,7 +50,6 @@ access_account_tax_sale_manager,account.tax sale manager,account.model_account_t access_account_tax_group_sale_manager,account.tax.group sale manager,account.model_account_tax_group,sales_team.group_sale_salesman,1,0,0,0 access_account_account_sale_manager,account.account sale manager,account.model_account_account,sales_team.group_sale_manager,1,0,0,0 access_mail_activity_type_sale_manager,mail.activity.type.sale.manager,mail.model_mail_activity_type,sales_team.group_sale_manager,1,1,1,1 -access_report_all_channels_sales,access_report_all_channels_sales,model_report_all_channels_sales,sales_team.group_sale_manager,1,0,0,0 access_sale_payment_acquirer_onboarding_wizard,access.sale.payment.acquirer.onboarding.wizard,model_sale_payment_acquirer_onboarding_wizard,base.group_system,1,1,1,0 access_sale_advance_payment_inv,access.sale.advance.payment.inv,model_sale_advance_payment_inv,sales_team.group_sale_salesman,1,1,1,0 access_sale_order_cancel,access.sale.order.cancel,model_sale_order_cancel,sales_team.group_sale_salesman,1,1,1,0 From bc9b2dbb456fe18b58d8fe91f85a1ac48b8ce563 Mon Sep 17 00:00:00 2001 From: Victor Feyens Date: Thu, 23 Dec 2021 17:19:19 +0100 Subject: [PATCH 06/24] [IMP] sale: report folder code cleanup Code indentation Attributes ordering qweb code cleanup ... --- addons/sale/report/account_invoice_report.py | 4 +- .../report/account_invoice_report_views.xml | 10 ++-- addons/sale/report/ir_actions_report.xml | 46 +++++++++---------- .../report/ir_actions_report_templates.xml | 44 +++++++++--------- addons/sale/report/sale_report.py | 8 ++-- addons/sale/report/sale_report_views.xml | 6 +-- 6 files changed, 61 insertions(+), 57 deletions(-) diff --git a/addons/sale/report/account_invoice_report.py b/addons/sale/report/account_invoice_report.py index f41cc8c3f7f..cf751da997e 100644 --- a/addons/sale/report/account_invoice_report.py +++ b/addons/sale/report/account_invoice_report.py @@ -7,7 +7,7 @@ from odoo import fields, models class AccountInvoiceReport(models.Model): _inherit = 'account.invoice.report' - team_id = fields.Many2one('crm.team', string='Sales Team') + team_id = fields.Many2one(comodel_name='crm.team', string="Sales Team") def _select(self): - return super(AccountInvoiceReport, self)._select() + ", move.team_id as team_id" + return super()._select() + ", move.team_id as team_id" diff --git a/addons/sale/report/account_invoice_report_views.xml b/addons/sale/report/account_invoice_report_views.xml index 08df6ff4882..3521a61cfc4 100644 --- a/addons/sale/report/account_invoice_report_views.xml +++ b/addons/sale/report/account_invoice_report_views.xml @@ -6,12 +6,12 @@ account.invoice.report - - - - + + + + - + diff --git a/addons/sale/report/ir_actions_report.xml b/addons/sale/report/ir_actions_report.xml index e3160d14d83..ff5fbbe635f 100644 --- a/addons/sale/report/ir_actions_report.xml +++ b/addons/sale/report/ir_actions_report.xml @@ -1,27 +1,27 @@ - - - Quotation / Order - sale.order - qweb-pdf - sale.report_saleorder - sale.report_saleorder - (object.state in ('draft', 'sent') and 'Quotation - %s' % (object.name)) or 'Order - %s' % (object.name) - - report - - - PRO-FORMA Invoice - sale.order - qweb-pdf - sale.report_saleorder_pro_forma - sale.report_saleorder_pro_forma - 'PRO-FORMA - %s' % (object.name) - - report - - - + + Quotation / Order + sale.order + qweb-pdf + sale.report_saleorder + sale.report_saleorder + (object.state in ('draft', 'sent') and 'Quotation - %s' % (object.name)) or 'Order - %s' % (object.name) + + report + + + + PRO-FORMA Invoice + sale.order + qweb-pdf + sale.report_saleorder_pro_forma + sale.report_saleorder_pro_forma + 'PRO-FORMA - %s' % (object.name) + + report + + + diff --git a/addons/sale/report/ir_actions_report_templates.xml b/addons/sale/report/ir_actions_report_templates.xml index f6d0ba612a0..2c98288aeb8 100644 --- a/addons/sale/report/ir_actions_report_templates.xml +++ b/addons/sale/report/ir_actions_report_templates.xml @@ -13,10 +13,16 @@ and doc.partner_invoice_id != doc.partner_id or doc.partner_shipping_id != doc.partner_invoice_id"> - Invoicing and Shipping Address: - Invoicing Address: + + + Invoicing and Shipping Address: + + + Invoicing Address: + +
+ t-options='{"widget": "contact", "fields": ["address", "name", "phone"], "no_marker": True, "phone_icons": True}'/> Shipping Address:

- - Order # - Quotation # - - - Pro-Forma Invoice # - + Pro-Forma Invoice # + Quotation # + Order #

-
+
Your Reference:

-
- Order Date: -

-

-
- Quotation Date: +
+ Quotation Date: + Order Date:

-
+
Expiration:

@@ -111,14 +112,14 @@ - + - + @@ -170,7 +171,8 @@

-

+

Fiscal Position Remark:

diff --git a/addons/sale/report/sale_report.py b/addons/sale/report/sale_report.py index 1e623181231..d77d735b9a6 100644 --- a/addons/sale/report/sale_report.py +++ b/addons/sale/report/sale_report.py @@ -53,9 +53,9 @@ class SaleReport(models.Model): discount = fields.Float('Discount %', readonly=True) discount_amount = fields.Float('Discount Amount', readonly=True) - campaign_id = fields.Many2one('utm.campaign', 'Campaign') - medium_id = fields.Many2one('utm.medium', 'Medium') - source_id = fields.Many2one('utm.source', 'Source') + campaign_id = fields.Many2one('utm.campaign', 'Campaign', readonly=True) + medium_id = fields.Many2one('utm.medium', 'Medium', readonly=True) + source_id = fields.Many2one('utm.source', 'Source', readonly=True) order_id = fields.Many2one('sale.order', 'Order #', readonly=True) @@ -158,6 +158,8 @@ class SaleReport(models.Model): tools.drop_view_if_exists(self.env.cr, self._table) self.env.cr.execute("""CREATE or REPLACE VIEW %s as (%s)""" % (self._table, self._query())) + +# FIXME is this used somewhere ? class SaleOrderReportProforma(models.AbstractModel): _name = 'report.sale.report_saleproforma' _description = 'Proforma Report' diff --git a/addons/sale/report/sale_report_views.xml b/addons/sale/report/sale_report_views.xml index 339a8bd1fda..e2cb72f7d4d 100644 --- a/addons/sale/report/sale_report_views.xml +++ b/addons/sale/report/sale_report_views.xml @@ -49,8 +49,8 @@ - - + + @@ -73,7 +73,7 @@ - + Date: Thu, 23 Dec 2021 17:35:23 +0100 Subject: [PATCH 07/24] [IMP] sale: fix indentation of payment_views.xml --- addons/sale/views/payment_views.xml | 52 ++++++++++++++--------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/addons/sale/views/payment_views.xml b/addons/sale/views/payment_views.xml index c04e203528e..ef3b702d874 100644 --- a/addons/sale/views/payment_views.xml +++ b/addons/sale/views/payment_views.xml @@ -1,30 +1,30 @@ - - - payment.acquirer.form.inherit.sale.payment - payment.acquirer - - - - - - - - - payment.transaction.form.inherit.sale.payment - payment.transaction - - - - - - - - + + payment.acquirer.form.inherit.sale.payment + payment.acquirer + + + + + + + + + + payment.transaction.form.inherit.sale.payment + payment.transaction + + + + + + + + From 7acd2adad9195849ad9ce4fa50914663c00f7718 Mon Sep 17 00:00:00 2001 From: Victor Feyens Date: Thu, 23 Dec 2021 17:38:37 +0100 Subject: [PATCH 08/24] [MOV] sale: simplify sale_views.xml Move views & actions related to models defined in other modules in their specific xml files. --- addons/sale/__manifest__.py | 2 + .../report/account_invoice_report_views.xml | 19 ++ addons/sale/report/sale_report_views.xml | 21 ++ addons/sale/views/account_views.xml | 103 ++++++++ addons/sale/views/product_views.xml | 103 ++++++++ addons/sale/views/sale_views.xml | 244 ------------------ 6 files changed, 248 insertions(+), 244 deletions(-) create mode 100644 addons/sale/views/account_views.xml diff --git a/addons/sale/__manifest__.py b/addons/sale/__manifest__.py index f546ef8d0f2..cc716a9bb68 100644 --- a/addons/sale/__manifest__.py +++ b/addons/sale/__manifest__.py @@ -26,6 +26,8 @@ This module contains all the common features of Sales Management and eCommerce. 'data/mail_templates.xml', 'data/sale_data.xml', 'wizard/sale_make_invoice_advance_views.xml', + + 'views/account_views.xml', 'views/sale_views.xml', 'views/crm_team_views.xml', 'views/res_partner_views.xml', diff --git a/addons/sale/report/account_invoice_report_views.xml b/addons/sale/report/account_invoice_report_views.xml index 3521a61cfc4..90fc3f2517c 100644 --- a/addons/sale/report/account_invoice_report_views.xml +++ b/addons/sale/report/account_invoice_report_views.xml @@ -15,4 +15,23 @@ + + account.invoice.report.view.tree.inherit.sale + account.invoice.report + + + + + + + + + + Invoices Analysis + account.invoice.report + graph + [('state', 'not in', ['draft', 'cancel'])] + {'search_default_month':1, 'search_default_team_id': [active_id]} + From this report, you can have an overview of the amount invoiced to your customer. The search tool can also be used to personalise your Invoices reports and so, match this analysis to your needs. + diff --git a/addons/sale/report/sale_report_views.xml b/addons/sale/report/sale_report_views.xml index e2cb72f7d4d..2300f7a4619 100644 --- a/addons/sale/report/sale_report_views.xml +++ b/addons/sale/report/sale_report_views.xml @@ -100,4 +100,25 @@ sale.report pivot + + + Quotations Analysis + sale.report + graph + [('state','=','draft'),('team_id', '=', active_id)] + {'search_default_order_month':1} + This report performs analysis on your quotations. Analysis check your sales revenues and sort it by different group criteria (salesman, partner, product, etc.) Use this report to perform analysis on sales not having invoiced yet. If you want to analyse your turnover, you should use the Invoice Analysis report in the Accounting application. + + + + Sales Analysis + sale.report + graph + [('state','not in',('draft','cancel'))] + { + 'search_default_Sales': 1, + 'search_default_filter_date': 1, + 'search_default_team_id': [active_id]} + This report performs analysis on your sales orders. Analysis check your sales revenues and sort it by different group criteria (salesman, partner, product, etc.) Use this report to perform analysis on sales not having invoiced yet. If you want to analyse your turnover, you should use the Invoice Analysis report in the Accounting application. + diff --git a/addons/sale/views/account_views.xml b/addons/sale/views/account_views.xml new file mode 100644 index 00000000000..05a745d3fed --- /dev/null +++ b/addons/sale/views/account_views.xml @@ -0,0 +1,103 @@ + + + + + account.move.groupby + account.move + + + + + + + + + + + + + account.move.tree.inherit.sale + account.move + + + + + + + + + + Account Invoice + account.move + + + + + product.group_discount_per_so_line + + + + + + + + + + + + + + + + + Invoices + account.move + tree,form,kanban + + [ + ('state', '=', 'posted'), + ('move_type', 'in', ['out_invoice', 'out_refund'])] + { + 'search_default_team_id': [active_id], + 'default_team_id': active_id, + 'default_move_type':'out_invoice', + 'move_type':'out_invoice', + 'journal_type': 'sale', + } + + + +

+ Create a customer invoice +

+ Create invoices, register payments and keep track of the discussions with your customers. +

+
+
+ + + 1 + tree + + + + + 2 + form + + + + + + Accrued Revenue Entry + ir.actions.act_window + account.accrued.orders.wizard + form + + + new + +
\ No newline at end of file diff --git a/addons/sale/views/product_views.xml b/addons/sale/views/product_views.xml index 82f52914589..daaf7c80e4e 100644 --- a/addons/sale/views/product_views.xml +++ b/addons/sale/views/product_views.xml @@ -1,6 +1,17 @@ + + product.template.product.website.form + product.template + + + + 0 + + + + product.template.sales product.template @@ -21,4 +32,96 @@ + + + product.product.sale.order + product.product + + + +
+ +
+ + + + + + +
+
+ + + product.template.sale.order.button + product.template + + + +
+ +
+ + + + + + +
+
+ + + product.template.invoice.policy + product.template + 15 + + + + + + + + + + + + + + + Products + ir.actions.act_window + product.template + kanban,tree,form,activity + + + {"search_default_filter_to_sell":1, "sale_multi_pricelist_product_template": 1} + +

+ Create a new product +

+ You must define a product for everything you sell or purchase, + whether it's a storable product, a consumable or a service. +

+
+
+
diff --git a/addons/sale/views/sale_views.xml b/addons/sale/views/sale_views.xml index 8f3c246b2b0..be5366df0fa 100644 --- a/addons/sale/views/sale_views.xml +++ b/addons/sale/views/sale_views.xml @@ -61,35 +61,6 @@ action="sales_team.sales_team_crm_tag_action" sequence="2"/> - - Products - ir.actions.act_window - product.template - kanban,tree,form,activity - - - {"search_default_filter_to_sell":1, "sale_multi_pricelist_product_template": 1} - -

- Create a new product -

- You must define a product for everything you sell or purchase, - whether it's a storable product, a consumable or a service. -

-
-
- - - product.template.product.website.form - product.template - - - - 0 - - - - @@ -891,16 +862,6 @@ action = records.action_quotation_sent() - - Accrued Revenue Entry - ir.actions.act_window - account.accrued.orders.wizard - form - - - new - - - - product.product.sale.order - product.product - - - -
- -
- - - - - - -
-
- - - product.template.sale.order.button - product.template - - - -
- -
- - - - - - -
-
- - - product.template.invoice.policy - product.template - 15 - - - - - - - - - - - - - - - - account.move.groupby - account.move - - - - - - - - - - - - - account.move.tree.inherit.sale - account.move - - - - - - - - - - - Account Invoice - account.move - - - - - product.group_discount_per_so_line - - - - - - - - - - - - - - - - - - account.invoice.report.view.tree.inherit.sale - account.invoice.report - - - - - - - - Sales Orders @@ -1311,72 +1134,5 @@

- - Invoices - account.move - tree,form,kanban - - [ - ('state', '=', 'posted'), - ('move_type', 'in', ['out_invoice', 'out_refund'])] - { - 'search_default_team_id': [active_id], - 'default_team_id': active_id, - 'default_move_type':'out_invoice', - 'move_type':'out_invoice', - 'journal_type': 'sale', - } - - - -

- Create a customer invoice -

- Create invoices, register payments and keep track of the discussions with your customers. -

-
-
- - 1 - tree - - - - - 2 - form - - - - - - Quotations Analysis - sale.report - graph - [('state','=','draft'),('team_id', '=', active_id)] - {'search_default_order_month':1} - This report performs analysis on your quotations. Analysis check your sales revenues and sort it by different group criteria (salesman, partner, product, etc.) Use this report to perform analysis on sales not having invoiced yet. If you want to analyse your turnover, you should use the Invoice Analysis report in the Accounting application. - - - - Sales Analysis - sale.report - graph - [('state','not in',('draft','cancel'))] - { - 'search_default_Sales': 1, - 'search_default_filter_date': 1, - 'search_default_team_id': [active_id]} - This report performs analysis on your sales orders. Analysis check your sales revenues and sort it by different group criteria (salesman, partner, product, etc.) Use this report to perform analysis on sales not having invoiced yet. If you want to analyse your turnover, you should use the Invoice Analysis report in the Accounting application. - - - - Invoices Analysis - account.invoice.report - graph - [('state', 'not in', ['draft', 'cancel'])] - {'search_default_month':1, 'search_default_team_id': [active_id]} - From this report, you can have an overview of the amount invoiced to your customer. The search tool can also be used to personalise your Invoices reports and so, match this analysis to your needs. - From c1289fc04991a9bdaab5ff4ab9980ce356b074f0 Mon Sep 17 00:00:00 2001 From: Victor Feyens Date: Thu, 23 Dec 2021 18:15:45 +0100 Subject: [PATCH 09/24] [REF] sale(_management): specify menus in a dedicated file Use the recursive definition of menuitems Only archive the root menu (to be unarchived in sale_management) Clean menus specifications, order attributes, ... --- addons/sale/__manifest__.py | 6 +- addons/sale/views/mail_activity_views.xml | 7 +- .../sale/views/res_config_settings_views.xml | 7 - addons/sale/views/sale_menus.xml | 142 ++++++++++++++++++ addons/sale/views/sale_views.xml | 95 ------------ addons/sale_management/__manifest__.py | 14 +- .../views/res_config_settings_views.xml | 10 ++ .../views/sale_management_menus.xml | 21 +++ .../views/sale_management_views.xml | 63 -------- .../views/sale_order_template_views.xml | 2 - .../views/sale_order_views.xml | 3 - 11 files changed, 188 insertions(+), 182 deletions(-) create mode 100644 addons/sale/views/sale_menus.xml create mode 100644 addons/sale_management/views/sale_management_menus.xml delete mode 100644 addons/sale_management/views/sale_management_views.xml diff --git a/addons/sale/__manifest__.py b/addons/sale/__manifest__.py index cc716a9bb68..d3d1e6e8607 100644 --- a/addons/sale/__manifest__.py +++ b/addons/sale/__manifest__.py @@ -25,7 +25,10 @@ This module contains all the common features of Sales Management and eCommerce. 'data/mail_template_data.xml', 'data/mail_templates.xml', 'data/sale_data.xml', + 'wizard/sale_make_invoice_advance_views.xml', + 'wizard/sale_order_cancel_views.xml', + 'wizard/sale_payment_link_views.xml', 'views/account_views.xml', 'views/sale_views.xml', @@ -41,8 +44,7 @@ This module contains all the common features of Sales Management and eCommerce. 'views/product_views.xml', 'views/product_packaging_views.xml', 'views/utm_campaign_views.xml', - 'wizard/sale_order_cancel_views.xml', - 'wizard/sale_payment_link_views.xml', + 'views/sale_menus.xml', ], 'demo': [ 'data/product_product_demo.xml', diff --git a/addons/sale/views/mail_activity_views.xml b/addons/sale/views/mail_activity_views.xml index e0f453ae228..1721470b931 100644 --- a/addons/sale/views/mail_activity_views.xml +++ b/addons/sale/views/mail_activity_views.xml @@ -8,8 +8,5 @@ ['|', ('res_model', '=', False), ('res_model', '=', 'sale.order')] {'default_res_model': 'sale.order'} - - \ No newline at end of file + + diff --git a/addons/sale/views/res_config_settings_views.xml b/addons/sale/views/res_config_settings_views.xml index bbf000397bb..2ecae6ee066 100644 --- a/addons/sale/views/res_config_settings_views.xml +++ b/addons/sale/views/res_config_settings_views.xml @@ -446,11 +446,4 @@ {'module' : 'sale_management', 'bin_size': False} - - diff --git a/addons/sale/views/sale_menus.xml b/addons/sale/views/sale_menus.xml new file mode 100644 index 00000000000..e202632ec0c --- /dev/null +++ b/addons/sale/views/sale_menus.xml @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/addons/sale/views/sale_views.xml b/addons/sale/views/sale_views.xml index be5366df0fa..034cc6f8a61 100644 --- a/addons/sale/views/sale_views.xml +++ b/addons/sale/views/sale_views.xml @@ -1,76 +1,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - sale.order.activity sale.order @@ -829,12 +759,6 @@ - - Orders to Invoice ir.actions.act_window @@ -862,16 +786,6 @@ action = records.action_quotation_sent() - - - - Orders to Upsell ir.actions.act_window @@ -892,10 +806,6 @@

- - Quotations @@ -972,11 +882,6 @@ - - sale.order.line.tree sale.order.line diff --git a/addons/sale_management/__manifest__.py b/addons/sale_management/__manifest__.py index ec9fd4ecb68..f73af7e59f9 100644 --- a/addons/sale_management/__manifest__.py +++ b/addons/sale_management/__manifest__.py @@ -38,17 +38,21 @@ The Dashboard for the Sales Manager will include 'website': 'https://www.odoo.com/app/sales', 'depends': ['sale', 'digest'], 'data': [ - 'security/sale_management_security.xml', + # TODO VFE add data validation on manifest loading + # We were loading digest_data twice... 'data/digest_data.xml', + + 'security/ir.model.access.csv', + 'security/sale_management_security.xml', + + 'report/sale_report_templates.xml', + 'views/sale_portal_templates.xml', 'views/sale_order_template_views.xml', - 'security/ir.model.access.csv', 'views/res_config_settings_views.xml', - 'data/digest_data.xml', - 'views/sale_management_views.xml', 'views/digest_views.xml', 'views/sale_order_views.xml', - 'report/sale_report_templates.xml', + 'views/sale_management_menus.xml', ], 'demo': [ 'data/sale_order_template_demo.xml', diff --git a/addons/sale_management/views/res_config_settings_views.xml b/addons/sale_management/views/res_config_settings_views.xml index 03c9d6d3e88..61733c8b786 100644 --- a/addons/sale_management/views/res_config_settings_views.xml +++ b/addons/sale_management/views/res_config_settings_views.xml @@ -47,4 +47,14 @@ + + res.config.settings.view.form.inherit.sale.management + res.config.settings + + + + app_settings_block + + +
diff --git a/addons/sale_management/views/sale_management_menus.xml b/addons/sale_management/views/sale_management_menus.xml new file mode 100644 index 00000000000..dfe88f4e7dc --- /dev/null +++ b/addons/sale_management/views/sale_management_menus.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + diff --git a/addons/sale_management/views/sale_management_views.xml b/addons/sale_management/views/sale_management_views.xml deleted file mode 100644 index a099504ed27..00000000000 --- a/addons/sale_management/views/sale_management_views.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - res.config.settings.view.form.inherit.sale.management - res.config.settings - - - - app_settings_block - - - - - diff --git a/addons/sale_management/views/sale_order_template_views.xml b/addons/sale_management/views/sale_order_template_views.xml index a27a12f2cef..cccbed28706 100644 --- a/addons/sale_management/views/sale_order_template_views.xml +++ b/addons/sale_management/views/sale_order_template_views.xml @@ -144,6 +144,4 @@ - - diff --git a/addons/sale_management/views/sale_order_views.xml b/addons/sale_management/views/sale_order_views.xml index ddffddf1cf7..55c67d47801 100644 --- a/addons/sale_management/views/sale_order_views.xml +++ b/addons/sale_management/views/sale_order_views.xml @@ -103,7 +103,4 @@ - From 419d479f24cd5a66064916355b942adc49766138 Mon Sep 17 00:00:00 2001 From: Victor Feyens Date: Thu, 23 Dec 2021 18:44:23 +0100 Subject: [PATCH 10/24] [FIX] sale: xml files loading order Changes of previous commits led to an invalid loading order, where some action were defined after their place of use. --- addons/sale/__manifest__.py | 3 +- addons/sale/views/crm_team_views.xml | 30 ++++++++++---------- addons/sale/views/product_views.xml | 42 ++++++++++++++-------------- 3 files changed, 38 insertions(+), 37 deletions(-) diff --git a/addons/sale/__manifest__.py b/addons/sale/__manifest__.py index d3d1e6e8607..1c2e47ff332 100644 --- a/addons/sale/__manifest__.py +++ b/addons/sale/__manifest__.py @@ -30,8 +30,9 @@ This module contains all the common features of Sales Management and eCommerce. 'wizard/sale_order_cancel_views.xml', 'wizard/sale_payment_link_views.xml', + 'views/sale_views.xml', # TODO Split into SO & SOL views + 'views/account_views.xml', - 'views/sale_views.xml', 'views/crm_team_views.xml', 'views/res_partner_views.xml', 'views/mail_activity_views.xml', diff --git a/addons/sale/views/crm_team_views.xml b/addons/sale/views/crm_team_views.xml index ef2b29ada3f..c3ec883a3a4 100644 --- a/addons/sale/views/crm_team_views.xml +++ b/addons/sale/views/crm_team_views.xml @@ -1,6 +1,21 @@ + + + New Quotation + sale.order + ir.actions.act_window + form + { + 'search_default_team_id': [active_id], + 'default_team_id': active_id, + 'default_user_id': uid, + } + + + + crm.team.form crm.team @@ -112,21 +127,6 @@ - - - New Quotation - sale.order - ir.actions.act_window - form - { - 'search_default_team_id': [active_id], - 'default_team_id': active_id, - 'default_user_id': uid, - } - - - - ['|', ('res_model', '=', False), ('res_model', 'in', ['sale.order', 'res.partner', 'product.template', 'product.product'])] diff --git a/addons/sale/views/product_views.xml b/addons/sale/views/product_views.xml index daaf7c80e4e..2bda3bec8bb 100644 --- a/addons/sale/views/product_views.xml +++ b/addons/sale/views/product_views.xml @@ -12,27 +12,6 @@ - - product.template.sales - product.template - - - - 0 - - - - - - product.product.sale.order product.product @@ -106,6 +85,27 @@ + + product.template.sales + product.template + + + + 0 + + + + + + Products ir.actions.act_window From 1df4e06b91b52f5aae6dba5532bc54167b827baf Mon Sep 17 00:00:00 2001 From: Victor Feyens Date: Mon, 27 Dec 2021 11:48:44 +0100 Subject: [PATCH 11/24] [MOV] sale: split sale_views.xml (1) --- addons/sale/__manifest__.py | 4 +- ...le_views.xml => sale_order_line_views.xml} | 0 addons/sale/views/sale_order_views.xml | 1043 +++++++++++++++++ 3 files changed, 1046 insertions(+), 1 deletion(-) rename addons/sale/views/{sale_views.xml => sale_order_line_views.xml} (100%) create mode 100644 addons/sale/views/sale_order_views.xml diff --git a/addons/sale/__manifest__.py b/addons/sale/__manifest__.py index 1c2e47ff332..545f468f235 100644 --- a/addons/sale/__manifest__.py +++ b/addons/sale/__manifest__.py @@ -30,7 +30,9 @@ This module contains all the common features of Sales Management and eCommerce. 'wizard/sale_order_cancel_views.xml', 'wizard/sale_payment_link_views.xml', - 'views/sale_views.xml', # TODO Split into SO & SOL views + # Define sale order views before their references + 'views/sale_order_views.xml', + 'views/sale_order_line_views.xml', 'views/account_views.xml', 'views/crm_team_views.xml', diff --git a/addons/sale/views/sale_views.xml b/addons/sale/views/sale_order_line_views.xml similarity index 100% rename from addons/sale/views/sale_views.xml rename to addons/sale/views/sale_order_line_views.xml diff --git a/addons/sale/views/sale_order_views.xml b/addons/sale/views/sale_order_views.xml new file mode 100644 index 00000000000..034cc6f8a61 --- /dev/null +++ b/addons/sale/views/sale_order_views.xml @@ -0,0 +1,1043 @@ + + + + + sale.order.activity + sale.order + + + +
+
+ + +
+
+
+
+
+
+ + + sale.order.calendar + sale.order + + + + + + + + + + + + sale.order.graph + sale.order + + + + + + + + + sale.order.pivot + sale.order + + + + + + + + + + + sale.order.kanban + sale.order + + + + + + + + + + + + +
+
+
+ +
+ +
+
+
+ + +
+
+ +
+
+
+
+
+
+
+
+ + + sale.order.tree + sale.order + 2 + + + + + + + + + + + + + + + + + + + + + + + + + sale.order.tree + sale.order + 4 + + + + + + + + + + + + + + + + + + + + + + + + sale.order.tree + sale.order + + primary + + + /sales/sale_quotation_onboarding_panel + + + + + + sale.order.form + sale.order + +
+
+ +
+ +
+ + +
+
+

+ +

+
+ + + + + + + + +
+
+ +
+
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + +