From bffd5d9eb6c794f4f7aad0c8d62a5ad7e67f3bc5 Mon Sep 17 00:00:00 2001 From: Kitti U Date: Fri, 9 Aug 2019 12:27:10 +0700 Subject: [PATCH] [12.0][IMP] excel_import_export, excel_import_export_demo Add report action feature and new examples --- excel_import_export_demo/__init__.py | 1 + excel_import_export_demo/__manifest__.py | 8 +++- .../readme/DESCRIPTION.rst | 2 + excel_import_export_demo/readme/HISTORY.rst | 5 ++ excel_import_export_demo/readme/USAGE.rst | 14 ++++-- .../report_action/__init__.py | 4 ++ .../report_action/partner_list/__init__.py | 4 ++ .../partner_list/partner_list.xlsx | Bin 0 -> 5259 bytes .../report_action/partner_list/report.xml | 10 ++++ .../partner_list/report_partner_list.py | 37 +++++++++++++++ .../partner_list/report_partner_list.xml | 43 ++++++++++++++++++ .../report_action/partner_list/templates.xml | 29 ++++++++++++ .../report_action/sale_order/report.xml | 13 ++++++ .../sale_order/sale_order_form.xlsx | Bin 0 -> 5369 bytes .../report_action/sale_order/templates.xml | 36 +++++++++++++++ 15 files changed, 202 insertions(+), 4 deletions(-) create mode 100644 excel_import_export_demo/report_action/__init__.py create mode 100644 excel_import_export_demo/report_action/partner_list/__init__.py create mode 100644 excel_import_export_demo/report_action/partner_list/partner_list.xlsx create mode 100644 excel_import_export_demo/report_action/partner_list/report.xml create mode 100644 excel_import_export_demo/report_action/partner_list/report_partner_list.py create mode 100644 excel_import_export_demo/report_action/partner_list/report_partner_list.xml create mode 100644 excel_import_export_demo/report_action/partner_list/templates.xml create mode 100644 excel_import_export_demo/report_action/sale_order/report.xml create mode 100644 excel_import_export_demo/report_action/sale_order/sale_order_form.xlsx create mode 100644 excel_import_export_demo/report_action/sale_order/templates.xml diff --git a/excel_import_export_demo/__init__.py b/excel_import_export_demo/__init__.py index 1334da2f4..c839a7771 100644 --- a/excel_import_export_demo/__init__.py +++ b/excel_import_export_demo/__init__.py @@ -3,3 +3,4 @@ from . import import_export_sale_order from . import report_sale_order +from . import report_action diff --git a/excel_import_export_demo/__manifest__.py b/excel_import_export_demo/__manifest__.py index 9463f279f..6f2c47433 100644 --- a/excel_import_export_demo/__manifest__.py +++ b/excel_import_export_demo/__manifest__.py @@ -1,7 +1,7 @@ # Copyright 2019 Ecosoft Co., Ltd (http://ecosoft.co.th/) # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) -{'name': 'Excel Import/Export Demo', +{'name': 'Excel Import/Export/Report Demo', 'version': '12.0.1.0.0', 'author': 'Ecosoft,Odoo Community Association (OCA)', 'license': 'AGPL-3', @@ -15,6 +15,12 @@ 'report_sale_order/templates.xml', 'import_sale_orders/menu_action.xml', 'import_sale_orders/templates.xml', + # Use report action + 'report_action/sale_order/report.xml', + 'report_action/sale_order/templates.xml', + 'report_action/partner_list/report.xml', + 'report_action/partner_list/templates.xml', + 'report_action/partner_list/report_partner_list.xml', ], 'installable': True, 'development_status': 'alpha', diff --git a/excel_import_export_demo/readme/DESCRIPTION.rst b/excel_import_export_demo/readme/DESCRIPTION.rst index e1c00d558..4915cfd09 100644 --- a/excel_import_export_demo/readme/DESCRIPTION.rst +++ b/excel_import_export_demo/readme/DESCRIPTION.rst @@ -3,3 +3,5 @@ This module provide some example use case for excel_import_export 1. Import/Export Sales Order (import_export_sale_order) 2. Import New Sales Orders (import_sale_orders) 3. Sales Orders Report (report_sale_order) +4. Print Quoation / Order (.xlsx) (report_action/sale_order) +5. Run Partner List Report (report_action/partner_list) diff --git a/excel_import_export_demo/readme/HISTORY.rst b/excel_import_export_demo/readme/HISTORY.rst index b8d1b41b6..3b4b1bf79 100644 --- a/excel_import_export_demo/readme/HISTORY.rst +++ b/excel_import_export_demo/readme/HISTORY.rst @@ -1,3 +1,8 @@ +12.0.1.0.0 (2019-08-09) +~~~~~~~~~~~~~~~~~~~~~~~ + +* Add 2 new examples using report action, 1) sale_order 2) partner_list + 12.0.1.0.0 (2019-02-24) ~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/excel_import_export_demo/readme/USAGE.rst b/excel_import_export_demo/readme/USAGE.rst index cdf6bdeff..c95b0bd79 100644 --- a/excel_import_export_demo/readme/USAGE.rst +++ b/excel_import_export_demo/readme/USAGE.rst @@ -1,11 +1,19 @@ -**Use Case 1:** Export/Import Excel on existing document +**Example 1:** Export/Import Excel on existing document To test this use case, go to any Sales Order and use Export Excel or Import Excel in action menu. -**Use Case 2:** Import Excel Files +**Example 2:** Import Excel Files To test this use case, go to Settings > Excel Import/Export > Sample Import Sales Order -**Use Case 3:** Create Excel Report +**Example 3:** Create Excel Report To test this use case, go to Settings > Excel Import/Export > Sample Sales Report + +**Example 4:** Printout Excel on existing document, using report action + +To test this use case, go to any Sales Order and click print "Quotation / Order (.xlsx)". + +**Example 5:** Run Partner List Report, using report action + +To test this use case, go to menu Sales > Reporting > Partner List Report diff --git a/excel_import_export_demo/report_action/__init__.py b/excel_import_export_demo/report_action/__init__.py new file mode 100644 index 000000000..d24f25e9e --- /dev/null +++ b/excel_import_export_demo/report_action/__init__.py @@ -0,0 +1,4 @@ +# Copyright 2019 Ecosoft Co., Ltd (http://ecosoft.co.th/) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) + +from . import partner_list diff --git a/excel_import_export_demo/report_action/partner_list/__init__.py b/excel_import_export_demo/report_action/partner_list/__init__.py new file mode 100644 index 000000000..3785abc03 --- /dev/null +++ b/excel_import_export_demo/report_action/partner_list/__init__.py @@ -0,0 +1,4 @@ +# Copyright 2019 Ecosoft Co., Ltd (http://ecosoft.co.th/) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) + +from . import report_partner_list diff --git a/excel_import_export_demo/report_action/partner_list/partner_list.xlsx b/excel_import_export_demo/report_action/partner_list/partner_list.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..3f6c11e25acc33c8eae6e55fa7a28119bba5ffb1 GIT binary patch literal 5259 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 CUdMF+ literal 0 HcmV?d00001 diff --git a/excel_import_export_demo/report_action/partner_list/report.xml b/excel_import_export_demo/report_action/partner_list/report.xml new file mode 100644 index 000000000..71d2286c1 --- /dev/null +++ b/excel_import_export_demo/report_action/partner_list/report.xml @@ -0,0 +1,10 @@ + + + + diff --git a/excel_import_export_demo/report_action/partner_list/report_partner_list.py b/excel_import_export_demo/report_action/partner_list/report_partner_list.py new file mode 100644 index 000000000..ac248ac4d --- /dev/null +++ b/excel_import_export_demo/report_action/partner_list/report_partner_list.py @@ -0,0 +1,37 @@ +# Copyright 2019 Ecosoft Co., Ltd (http://ecosoft.co.th/) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) + +from odoo import models, fields, api + + +class ReportPartnerList(models.TransientModel): + _name = 'report.partner.list' + _description = 'Wizard for report.partner.list' + + partner_ids = fields.Many2many( + comodel_name='res.partner', + ) + supplier = fields.Boolean( + default=True, + ) + customer = fields.Boolean( + default=True, + ) + results = fields.Many2many( + 'res.partner', + string='Results', + compute='_compute_results', + help='Use compute fields, so there is nothing store in database', + ) + + @api.multi + def _compute_results(self): + """ On the wizard, result will be computed and added to results line + before export to excel by report_excel action + """ + self.ensure_one() + domain = ['|', ('supplier', '=', self.supplier), + ('customer', '=', self.customer)] + if self.partner_ids: + domain.append(('id', 'in', self.partner_ids.ids)) + self.results = self.env['res.partner'].search(domain, order='id') diff --git a/excel_import_export_demo/report_action/partner_list/report_partner_list.xml b/excel_import_export_demo/report_action/partner_list/report_partner_list.xml new file mode 100644 index 000000000..48720dd99 --- /dev/null +++ b/excel_import_export_demo/report_action/partner_list/report_partner_list.xml @@ -0,0 +1,43 @@ + + + + + partner.list.wizard + report.partner.list + +
+ + + + + + + + + +
+
+
+
+
+ + + Partner List Report + report.partner.list + form + form + new + + + + +
diff --git a/excel_import_export_demo/report_action/partner_list/templates.xml b/excel_import_export_demo/report_action/partner_list/templates.xml new file mode 100644 index 000000000..f716c8f32 --- /dev/null +++ b/excel_import_export_demo/report_action/partner_list/templates.xml @@ -0,0 +1,29 @@ + + + + + report.partner.list + partner_list.xlsx + Partner List Report Template + Sample Partner List Report Template for testing + + { + '__EXPORT__': { + 1: { + 'results': { + 'A4': 'id', + 'B4': 'name${value or ""}#{style=text}', + 'C4': 'phone${value or ""}#{style=text}', + 'D4': 'email${value or ""}#{style=text}', + } + } + }, + } + + + + + + + + diff --git a/excel_import_export_demo/report_action/sale_order/report.xml b/excel_import_export_demo/report_action/sale_order/report.xml new file mode 100644 index 000000000..38301b657 --- /dev/null +++ b/excel_import_export_demo/report_action/sale_order/report.xml @@ -0,0 +1,13 @@ + + + + + + diff --git a/excel_import_export_demo/report_action/sale_order/sale_order_form.xlsx b/excel_import_export_demo/report_action/sale_order/sale_order_form.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..db9d9431e1c026e807a3cdef3f40e48d34b9dc8e GIT binary patch literal 5369 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 Ho`3oeC3zAv literal 0 HcmV?d00001 diff --git a/excel_import_export_demo/report_action/sale_order/templates.xml b/excel_import_export_demo/report_action/sale_order/templates.xml new file mode 100644 index 000000000..c46a64a59 --- /dev/null +++ b/excel_import_export_demo/report_action/sale_order/templates.xml @@ -0,0 +1,36 @@ + + + + + sale.order + sale_order_form.xlsx + Sale Order Template + Sample Sales Order Template for testing + + { + '__EXPORT__': { + 'sale_order': { + '_HEAD_': { + 'B2': 'partner_id.display_name${value or ""}#{align=left;style=text}', + 'B3': 'name${value or ""}#{align=left;style=text}', + }, + 'order_line': { + 'A6': 'product_id.display_name${value or ""}#{style=text}', + 'B6': 'name${value or ""}#{style=text}', + 'C6': 'product_uom_qty${value or 0}#{style=number}', + 'D6': 'product_uom.name${value or ""}#{style=text}', + 'E6': 'price_unit${value or 0}#{style=number}', + 'F6': 'tax_id${value and ",".join([x.display_name for x in value]) or ""}', + 'G6': 'price_subtotal${value or 0}#{style=number}@{sum}', + } + } + }, + } + + + + + + + +