From 68e43fe59627f51527cb563def66d99998f0faa9 Mon Sep 17 00:00:00 2001 From: ernesto Date: Tue, 11 Dec 2018 00:24:38 -0500 Subject: [PATCH 01/40] sale_layout_category_hide_detail: New module Hide details for sections in sales orders and invoices for reports and customer portal --- sale_layout_category_hide_detail/README.rst | 111 +++++ sale_layout_category_hide_detail/__init__.py | 3 + .../__manifest__.py | 26 + sale_layout_category_hide_detail/i18n/es.po | 55 +++ .../i18n/sale_layout_category_hide_detail.pot | 53 ++ .../models/__init__.py | 6 + .../models/account_invoice.py | 13 + .../models/res_config_settings.py | 12 + .../models/sale_layout_category.py | 12 + .../models/sale_order.py | 30 ++ .../readme/CONFIGURE.rst | 6 + .../readme/CONTRIBUTORS.rst | 4 + .../readme/DESCRIPTION.rst | 4 + .../readme/USAGE.rst | 18 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 459 ++++++++++++++++++ .../tests/__init__.py | 3 + .../test_sale_layout_category_hide_detail.py | 101 ++++ .../views/account_portal_templates.xml | 38 ++ .../views/invoice_report_templates.xml | 21 + .../views/sale_layout_category_view.xml | 43 ++ .../views/sale_order_report_templates.xml | 21 + .../views/sale_portal_templates.xml | 38 ++ 23 files changed, 1077 insertions(+) create mode 100644 sale_layout_category_hide_detail/README.rst create mode 100644 sale_layout_category_hide_detail/__init__.py create mode 100644 sale_layout_category_hide_detail/__manifest__.py create mode 100644 sale_layout_category_hide_detail/i18n/es.po create mode 100644 sale_layout_category_hide_detail/i18n/sale_layout_category_hide_detail.pot create mode 100644 sale_layout_category_hide_detail/models/__init__.py create mode 100644 sale_layout_category_hide_detail/models/account_invoice.py create mode 100644 sale_layout_category_hide_detail/models/res_config_settings.py create mode 100644 sale_layout_category_hide_detail/models/sale_layout_category.py create mode 100644 sale_layout_category_hide_detail/models/sale_order.py create mode 100644 sale_layout_category_hide_detail/readme/CONFIGURE.rst create mode 100644 sale_layout_category_hide_detail/readme/CONTRIBUTORS.rst create mode 100644 sale_layout_category_hide_detail/readme/DESCRIPTION.rst create mode 100644 sale_layout_category_hide_detail/readme/USAGE.rst create mode 100644 sale_layout_category_hide_detail/static/description/icon.png create mode 100644 sale_layout_category_hide_detail/static/description/index.html create mode 100644 sale_layout_category_hide_detail/tests/__init__.py create mode 100644 sale_layout_category_hide_detail/tests/test_sale_layout_category_hide_detail.py create mode 100644 sale_layout_category_hide_detail/views/account_portal_templates.xml create mode 100644 sale_layout_category_hide_detail/views/invoice_report_templates.xml create mode 100644 sale_layout_category_hide_detail/views/sale_layout_category_view.xml create mode 100644 sale_layout_category_hide_detail/views/sale_order_report_templates.xml create mode 100644 sale_layout_category_hide_detail/views/sale_portal_templates.xml diff --git a/sale_layout_category_hide_detail/README.rst b/sale_layout_category_hide_detail/README.rst new file mode 100644 index 00000000..e771ad07 --- /dev/null +++ b/sale_layout_category_hide_detail/README.rst @@ -0,0 +1,111 @@ +================================ +Sale layout category hide detail +================================ + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fsale--reporting-lightgray.png?logo=github + :target: https://github.com/OCA/sale-reporting/tree/11.0/sale_layout_category_hide_detail + :alt: OCA/sale-reporting +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/sale-reporting-11-0/sale-reporting-11-0-sale_layout_category_hide_detail + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/148/11.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows you to set a new 'Hide details' boolean field on True in +*Report Layout Categories* if you want to hide its lines of +*Quotations / Sales Orders* and *Invoices* in the PDF report and in the +website. + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +To configure this module, you need to: + +#. Go to *Sales -> Configuration -> Settings* +#. Check *Sections on Sales Orders* option. +#. Go to *Sales -> Configuration -> Sales Orders -> Report Layout Categories* + and configure the *Report Layout Categories* + +Usage +===== + +To use this module, you need to: + +#. Go to *Sales -> Configuration -> Sales Orders -> Report Layout Categories*. +#. Create a new *Report Layout Category* with *Hide details* field on *True* + and create another one with *Hide details* field on *False*. +#. Notice when you check *Hide details*, *Add subtotal* is hidden. There's no + sense to not put subtotal when hiding details, so it doesn't matter if you + check the *Add subtotal* or not. +#. Go to *Sales -> Orders -> Quotations* and create a new *Quotation*. +#. Add to the *Quotation* some lines associated with the first + *Report Layout Category* created before and add other lines associated with + the second *Report Layout Category* created. +#. Print this Quotation. In the PDF report the section with *Hide details* + field on *True* will be shown without its lines and with the subtotal. +#. Go to the Quotation in the customer portal. The section with *Hide details* + field on *True* will be shown without its lines and with the subtotal. + +The behavior described before is the same for Quotations and Invoices. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Tecnativa + +Contributors +~~~~~~~~~~~~ + +* `Tecnativa `_: + + * Ernesto Tejeda + * Pedro M. Baeza + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/sale-reporting `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/sale_layout_category_hide_detail/__init__.py b/sale_layout_category_hide_detail/__init__.py new file mode 100644 index 00000000..83e553ac --- /dev/null +++ b/sale_layout_category_hide_detail/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import models diff --git a/sale_layout_category_hide_detail/__manifest__.py b/sale_layout_category_hide_detail/__manifest__.py new file mode 100644 index 00000000..b7b68a37 --- /dev/null +++ b/sale_layout_category_hide_detail/__manifest__.py @@ -0,0 +1,26 @@ +# Copyright 2018 Tecnativa - Ernesto Tejeda +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +{ + "name": "Sale layout category hide detail", + "summary": "Hide details for sections in sales orders and invoices for " + "reports and customer portal", + "version": "11.0.1.0.0", + "category": "Sales Management", + "website": "http://github.com/OCA/sale-reporting", + "author": "Tecnativa, " + "Odoo Community Association (OCA)", + "license": "AGPL-3", + "depends": [ + "sale_management", + ], + "data": [ + "views/sale_layout_category_view.xml", + "views/sale_order_report_templates.xml", + "views/sale_portal_templates.xml", + "views/invoice_report_templates.xml", + "views/account_portal_templates.xml", + ], + "application": False, + 'installable': True, +} diff --git a/sale_layout_category_hide_detail/i18n/es.po b/sale_layout_category_hide_detail/i18n/es.po new file mode 100644 index 00000000..3ad7f263 --- /dev/null +++ b/sale_layout_category_hide_detail/i18n/es.po @@ -0,0 +1,55 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_layout_category_hide_detail +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0-20180919\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-12-18 18:12+0000\n" +"PO-Revision-Date: 2018-12-18 18:12+0000\n" +"Last-Translator: <>\n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: sale_layout_category_hide_detail +#: model:ir.ui.view,arch_db:sale_layout_category_hide_detail.portal_invoice_report_layouted_hide_detail +#: model:ir.ui.view,arch_db:sale_layout_category_hide_detail.portal_order_page_layouted_hide_detail +msgid "&bull;" +msgstr "&bull;" + +#. module: sale_layout_category_hide_detail +#: model:ir.ui.view,arch_db:sale_layout_category_hide_detail.portal_invoice_report_layouted_hide_detail +#: model:ir.ui.view,arch_db:sale_layout_category_hide_detail.portal_order_page_layouted_hide_detail +msgid "Subtotal: " +msgstr "Subtotal: " + +#. module: sale_layout_category_hide_detail +#: model:ir.model.fields,field_description:sale_layout_category_hide_detail.field_sale_layout_category_hide_details +#: model:ir.ui.view,arch_db:sale_layout_category_hide_detail.report_configuration_search_view +msgid "Hide details" +msgstr "Ocultar detalles" + +#. module: sale_layout_category_hide_detail +#: model:ir.model,name:sale_layout_category_hide_detail.model_account_invoice +msgid "Invoice" +msgstr "Factura" + +#. module: sale_layout_category_hide_detail +#: model:ir.model,name:sale_layout_category_hide_detail.model_sale_order +msgid "Quotation" +msgstr "Presupuesto" + +#. module: sale_layout_category_hide_detail +#: model:ir.model,name:sale_layout_category_hide_detail.model_res_config_settings +msgid "res.config.settings" +msgstr "" + +#. module: sale_layout_category_hide_detail +#: model:ir.model,name:sale_layout_category_hide_detail.model_sale_layout_category +msgid "sale.layout_category" +msgstr "sale.layout_category" diff --git a/sale_layout_category_hide_detail/i18n/sale_layout_category_hide_detail.pot b/sale_layout_category_hide_detail/i18n/sale_layout_category_hide_detail.pot new file mode 100644 index 00000000..1d172d6f --- /dev/null +++ b/sale_layout_category_hide_detail/i18n/sale_layout_category_hide_detail.pot @@ -0,0 +1,53 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_layout_category_hide_detail +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: sale_layout_category_hide_detail +#: model:ir.ui.view,arch_db:sale_layout_category_hide_detail.portal_invoice_report_layouted_hide_detail +#: model:ir.ui.view,arch_db:sale_layout_category_hide_detail.portal_order_page_layouted_hide_detail +msgid "&bull;" +msgstr "" + +#. module: sale_layout_category_hide_detail +#: model:ir.ui.view,arch_db:sale_layout_category_hide_detail.portal_invoice_report_layouted_hide_detail +#: model:ir.ui.view,arch_db:sale_layout_category_hide_detail.portal_order_page_layouted_hide_detail +msgid "Subtotal: " +msgstr "" + +#. module: sale_layout_category_hide_detail +#: model:ir.model.fields,field_description:sale_layout_category_hide_detail.field_sale_layout_category_hide_details +#: model:ir.ui.view,arch_db:sale_layout_category_hide_detail.report_configuration_search_view +msgid "Hide details" +msgstr "" + +#. module: sale_layout_category_hide_detail +#: model:ir.model,name:sale_layout_category_hide_detail.model_account_invoice +msgid "Invoice" +msgstr "" + +#. module: sale_layout_category_hide_detail +#: model:ir.model,name:sale_layout_category_hide_detail.model_sale_order +msgid "Quotation" +msgstr "" + +#. module: sale_layout_category_hide_detail +#: model:ir.model,name:sale_layout_category_hide_detail.model_res_config_settings +msgid "res.config.settings" +msgstr "" + +#. module: sale_layout_category_hide_detail +#: model:ir.model,name:sale_layout_category_hide_detail.model_sale_layout_category +msgid "sale.layout_category" +msgstr "" + diff --git a/sale_layout_category_hide_detail/models/__init__.py b/sale_layout_category_hide_detail/models/__init__.py new file mode 100644 index 00000000..ec9204e2 --- /dev/null +++ b/sale_layout_category_hide_detail/models/__init__.py @@ -0,0 +1,6 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import sale_layout_category +from . import sale_order +from . import account_invoice +from . import res_config_settings diff --git a/sale_layout_category_hide_detail/models/account_invoice.py b/sale_layout_category_hide_detail/models/account_invoice.py new file mode 100644 index 00000000..5a8f4ccf --- /dev/null +++ b/sale_layout_category_hide_detail/models/account_invoice.py @@ -0,0 +1,13 @@ +# Copyright 2018 Tecnativa - Ernesto Tejeda +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import api, models + + +class AccountInvoice(models.Model): + _inherit = 'account.invoice' + + @api.multi + def order_lines_layouted(self): + report_pages = super(AccountInvoice, self).order_lines_layouted() + return self.env['sale.order'].lines_layouted_hide_details(report_pages) diff --git a/sale_layout_category_hide_detail/models/res_config_settings.py b/sale_layout_category_hide_detail/models/res_config_settings.py new file mode 100644 index 00000000..ba428bb7 --- /dev/null +++ b/sale_layout_category_hide_detail/models/res_config_settings.py @@ -0,0 +1,12 @@ +# Copyright 2018 Tecnativa - Ernesto Tejeda +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import fields, models + + +class ResConfigSettings(models.TransientModel): + _inherit = 'res.config.settings' + + group_sale_layout = fields.Boolean( + group='base.group_portal,base.group_user', + ) diff --git a/sale_layout_category_hide_detail/models/sale_layout_category.py b/sale_layout_category_hide_detail/models/sale_layout_category.py new file mode 100644 index 00000000..a44d6e0b --- /dev/null +++ b/sale_layout_category_hide_detail/models/sale_layout_category.py @@ -0,0 +1,12 @@ +# Copyright 2018 Tecnativa - Ernesto Tejeda +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import fields, models + + +class SaleLayoutCategory(models.Model): + _inherit = 'sale.layout_category' + + hide_details = fields.Boolean( + string="Hide details", + ) diff --git a/sale_layout_category_hide_detail/models/sale_order.py b/sale_layout_category_hide_detail/models/sale_order.py new file mode 100644 index 00000000..ad17ea13 --- /dev/null +++ b/sale_layout_category_hide_detail/models/sale_order.py @@ -0,0 +1,30 @@ +# Copyright 2018 Tecnativa - Ernesto Tejeda +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import api, models + + +class SaleOrder(models.Model): + _inherit = "sale.order" + + @api.multi + def lines_layouted_hide_details(self, report_pages): + if self.user_has_groups('sale.group_sale_layout'): + for page in report_pages: + for cat_dict in page: + lines = cat_dict['lines'] + category = lines and lines[0].layout_category_id + hide_details = category and category.hide_details + subtotal = sum(l.price_subtotal for l in lines) + cat_dict.update( + hide_details=hide_details, + lines_subtotal=subtotal, + ) + if hide_details: + cat_dict.update(lines=list()) + return report_pages + + @api.multi + def order_lines_layouted(self): + report_pages = super(SaleOrder, self).order_lines_layouted() + return self.lines_layouted_hide_details(report_pages) diff --git a/sale_layout_category_hide_detail/readme/CONFIGURE.rst b/sale_layout_category_hide_detail/readme/CONFIGURE.rst new file mode 100644 index 00000000..6a51625b --- /dev/null +++ b/sale_layout_category_hide_detail/readme/CONFIGURE.rst @@ -0,0 +1,6 @@ +To configure this module, you need to: + +#. Go to *Sales -> Configuration -> Settings* +#. Check *Sections on Sales Orders* option. +#. Go to *Sales -> Configuration -> Sales Orders -> Report Layout Categories* + and configure the *Report Layout Categories* diff --git a/sale_layout_category_hide_detail/readme/CONTRIBUTORS.rst b/sale_layout_category_hide_detail/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000..b31cef32 --- /dev/null +++ b/sale_layout_category_hide_detail/readme/CONTRIBUTORS.rst @@ -0,0 +1,4 @@ +* `Tecnativa `_: + + * Ernesto Tejeda + * Pedro M. Baeza diff --git a/sale_layout_category_hide_detail/readme/DESCRIPTION.rst b/sale_layout_category_hide_detail/readme/DESCRIPTION.rst new file mode 100644 index 00000000..21528f6f --- /dev/null +++ b/sale_layout_category_hide_detail/readme/DESCRIPTION.rst @@ -0,0 +1,4 @@ +This module allows you to set a new 'Hide details' boolean field on True in +*Report Layout Categories* if you want to hide its lines of +*Quotations / Sales Orders* and *Invoices* in the PDF report and in the +website. diff --git a/sale_layout_category_hide_detail/readme/USAGE.rst b/sale_layout_category_hide_detail/readme/USAGE.rst new file mode 100644 index 00000000..595dfbd1 --- /dev/null +++ b/sale_layout_category_hide_detail/readme/USAGE.rst @@ -0,0 +1,18 @@ +To use this module, you need to: + +#. Go to *Sales -> Configuration -> Sales Orders -> Report Layout Categories*. +#. Create a new *Report Layout Category* with *Hide details* field on *True* + and create another one with *Hide details* field on *False*. +#. Notice when you check *Hide details*, *Add subtotal* is hidden. There's no + sense to not put subtotal when hiding details, so it doesn't matter if you + check the *Add subtotal* or not. +#. Go to *Sales -> Orders -> Quotations* and create a new *Quotation*. +#. Add to the *Quotation* some lines associated with the first + *Report Layout Category* created before and add other lines associated with + the second *Report Layout Category* created. +#. Print this Quotation. In the PDF report the section with *Hide details* + field on *True* will be shown without its lines and with the subtotal. +#. Go to the Quotation in the customer portal. The section with *Hide details* + field on *True* will be shown without its lines and with the subtotal. + +The behavior described before is the same for Quotations and Invoices. diff --git a/sale_layout_category_hide_detail/static/description/icon.png b/sale_layout_category_hide_detail/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 zcmW++2RxMjAAjx~&dlBk9S+%}OXg)AGE&Cb*&}d0jUxM@u(PQx^-s)697TX`ehR4?GS^qbkof1cslKgkU)h65qZ9Oc=ml_0temigYLJfnz{IDzUf>bGs4N!v3=Z3jMq&A#7%rM5eQ#dc?k~! zVpnB`o+K7|Al`Q_U;eD$B zfJtP*jH`siUq~{KE)`jP2|#TUEFGRryE2`i0**z#*^6~AI|YzIWy$Cu#CSLW3q=GA z6`?GZymC;dCPk~rBS%eCb`5OLr;RUZ;D`}um=H)BfVIq%7VhiMr)_#G0N#zrNH|__ zc+blN2UAB0=617@>_u;MPHN;P;N#YoE=)R#i$k_`UAA>WWCcEVMh~L_ zj--gtp&|K1#58Yz*AHCTMziU1Jzt_jG0I@qAOHsk$2}yTmVkBp_eHuY$A9)>P6o~I z%aQ?!(GqeQ-Y+b0I(m9pwgi(IIZZzsbMv+9w{PFtd_<_(LA~0H(xz{=FhLB@(1&qHA5EJw1>>=%q2f&^X>IQ{!GJ4e9U z&KlB)z(84HmNgm2hg2C0>WM{E(DdPr+EeU_N@57;PC2&DmGFW_9kP&%?X4}+xWi)( z;)z%wI5>D4a*5XwD)P--sPkoY(a~WBw;E~AW`Yue4kFa^LM3X`8x|}ZUeMnqr}>kH zG%WWW>3ml$Yez?i%)2pbKPI7?5o?hydokgQyZsNEr{a|mLdt;X2TX(#B1j35xPnPW z*bMSSOauW>o;*=kO8ojw91VX!qoOQb)zHJ!odWB}d+*K?#sY_jqPdg{Sm2HdYzdEx zOGVPhVRTGPtv0o}RfVP;Nd(|CB)I;*t&QO8h zFfekr30S!-LHmV_Su-W+rEwYXJ^;6&3|L$mMC8*bQptyOo9;>Qb9Q9`ySe3%V$A*9 zeKEe+b0{#KWGp$F+tga)0RtI)nhMa-K@JS}2krK~n8vJ=Ngm?R!9G<~RyuU0d?nz# z-5EK$o(!F?hmX*2Yt6+coY`6jGbb7tF#6nHA zuKk=GGJ;ZwON1iAfG$E#Y7MnZVmrY|j0eVI(DN_MNFJmyZ|;w4tf@=CCDZ#5N_0K= z$;R~bbk?}TpfDjfB&aiQ$VA}s?P}xPERJG{kxk5~R`iRS(SK5d+Xs9swCozZISbnS zk!)I0>t=A<-^z(cmSFz3=jZ23u13X><0b)P)^1T_))Kr`e!-pb#q&J*Q`p+B6la%C zuVl&0duN<;uOsB3%T9Fp8t{ED108<+W(nOZd?gDnfNBC3>M8WE61$So|P zVvqH0SNtDTcsUdzaMDpT=Ty0pDHHNL@Z0w$Y`XO z2M-_r1S+GaH%pz#Uy0*w$Vdl=X=rQXEzO}d6J^R6zjM1u&c9vYLvLp?W7w(?np9x1 zE_0JSAJCPB%i7p*Wvg)pn5T`8k3-uR?*NT|J`eS#_#54p>!p(mLDvmc-3o0mX*mp_ zN*AeS<>#^-{S%W<*mz^!X$w_2dHWpcJ6^j64qFBft-o}o_Vx80o0>}Du;>kLts;$8 zC`7q$QI(dKYG`Wa8#wl@V4jVWBRGQ@1dr-hstpQL)Tl+aqVpGpbSfN>5i&QMXfiZ> zaA?T1VGe?rpQ@;+pkrVdd{klI&jVS@I5_iz!=UMpTsa~mBga?1r}aRBm1WS;TT*s0f0lY=JBl66Upy)-k4J}lh=P^8(SXk~0xW=T9v*B|gzIhN z>qsO7dFd~mgxAy4V?&)=5ieYq?zi?ZEoj)&2o)RLy=@hbCRcfT5jigwtQGE{L*8<@Yd{zg;CsL5mvzfDY}P-wos_6PfprFVaeqNE%h zKZhLtcQld;ZD+>=nqN~>GvROfueSzJD&BE*}XfU|H&(FssBqY=hPCt`d zH?@s2>I(|;fcW&YM6#V#!kUIP8$Nkdh0A(bEVj``-AAyYgwY~jB zT|I7Bf@%;7aL7Wf4dZ%VqF$eiaC38OV6oy3Z#TER2G+fOCd9Iaoy6aLYbPTN{XRPz z;U!V|vBf%H!}52L2gH_+j;`bTcQRXB+y9onc^wLm5wi3-Be}U>k_u>2Eg$=k!(l@I zcCg+flakT2Nej3i0yn+g+}%NYb?ta;R?(g5SnwsQ49U8Wng8d|{B+lyRcEDvR3+`O{zfmrmvFrL6acVP%yG98X zo&+VBg@px@i)%o?dG(`T;n*$S5*rnyiR#=wW}}GsAcfyQpE|>a{=$Hjg=-*_K;UtD z#z-)AXwSRY?OPefw^iI+ z)AXz#PfEjlwTes|_{sB?4(O@fg0AJ^g8gP}ex9Ucf*@_^J(s_5jJV}c)s$`Myn|Kd z$6>}#q^n{4vN@+Os$m7KV+`}c%4)4pv@06af4-x5#wj!KKb%caK{A&Y#Rfs z-po?Dcb1({W=6FKIUirH&(yg=*6aLCekcKwyfK^JN5{wcA3nhO(o}SK#!CINhI`-I z1)6&n7O&ZmyFMuNwvEic#IiOAwNkR=u5it{B9n2sAJV5pNhar=j5`*N!Na;c7g!l$ z3aYBqUkqqTJ=Re-;)s!EOeij=7SQZ3Hq}ZRds%IM*PtM$wV z@;rlc*NRK7i3y5BETSKuumEN`Xu_8GP1Ri=OKQ$@I^ko8>H6)4rjiG5{VBM>B|%`&&s^)jS|-_95&yc=GqjNo{zFkw%%HHhS~e=s zD#sfS+-?*t|J!+ozP6KvtOl!R)@@-z24}`9{QaVLD^9VCSR2b`b!KC#o;Ki<+wXB6 zx3&O0LOWcg4&rv4QG0)4yb}7BFSEg~=IR5#ZRj8kg}dS7_V&^%#Do==#`u zpy6{ox?jWuR(;pg+f@mT>#HGWHAJRRDDDv~@(IDw&R>9643kK#HN`!1vBJHnC+RM&yIh8{gG2q zA%e*U3|N0XSRa~oX-3EAneep)@{h2vvd3Xvy$7og(sayr@95+e6~Xvi1tUqnIxoIH zVWo*OwYElb#uyW{Imam6f2rGbjR!Y3`#gPqkv57dB6K^wRGxc9B(t|aYDGS=m$&S!NmCtrMMaUg(c zc2qC=2Z`EEFMW-me5B)24AqF*bV5Dr-M5ig(l-WPS%CgaPzs6p_gnCIvTJ=Y<6!gT zVt@AfYCzjjsMEGi=rDQHo0yc;HqoRNnNFeWZgcm?f;cp(6CNylj36DoL(?TS7eU#+ z7&mfr#y))+CJOXQKUMZ7QIdS9@#-}7y2K1{8)cCt0~-X0O!O?Qx#E4Og+;A2SjalQ zs7r?qn0H044=sDN$SRG$arw~n=+T_DNdSrarmu)V6@|?1-ZB#hRn`uilTGPJ@fqEy zGt(f0B+^JDP&f=r{#Y_wi#AVDf-y!RIXU^0jXsFpf>=Ji*TeqSY!H~AMbJdCGLhC) zn7Rx+sXw6uYj;WRYrLd^5IZq@6JI1C^YkgnedZEYy<&4(z%Q$5yv#Boo{AH8n$a zhb4Y3PWdr269&?V%uI$xMcUrMzl=;w<_nm*qr=c3Rl@i5wWB;e-`t7D&c-mcQl7x! zZWB`UGcw=Y2=}~wzrfLx=uet<;m3~=8I~ZRuzvMQUQdr+yTV|ATf1Uuomr__nDf=X zZ3WYJtHp_ri(}SQAPjv+Y+0=fH4krOP@S&=zZ-t1jW1o@}z;xk8 z(Nz1co&El^HK^NrhVHa-_;&88vTU>_J33=%{if;BEY*J#1n59=07jrGQ#IP>@u#3A z;!q+E1Rj3ZJ+!4bq9F8PXJ@yMgZL;>&gYA0%_Kbi8?S=XGM~dnQZQ!yBSgcZhY96H zrWnU;k)qy`rX&&xlDyA%(a1Hhi5CWkmg(`Gb%m(HKi-7Z!LKGRP_B8@`7&hdDy5n= z`OIxqxiVfX@OX1p(mQu>0Ai*v_cTMiw4qRt3~NBvr9oBy0)r>w3p~V0SCm=An6@3n)>@z!|o-$HvDK z|3D2ZMJkLE5loMKl6R^ez@Zz%S$&mbeoqH5`Bb){Ei21q&VP)hWS2tjShfFtGE+$z zzCR$P#uktu+#!w)cX!lWN1XU%K-r=s{|j?)Akf@q#3b#{6cZCuJ~gCxuMXRmI$nGtnH+-h z+GEi!*X=AP<|fG`1>MBdTb?28JYc=fGvAi2I<$B(rs$;eoJCyR6_bc~p!XR@O-+sD z=eH`-ye})I5ic1eL~TDmtfJ|8`0VJ*Yr=hNCd)G1p2MMz4C3^Mj?7;!w|Ly%JqmuW zlIEW^Ft%z?*|fpXda>Jr^1noFZEwFgVV%|*XhH@acv8rdGxeEX{M$(vG{Zw+x(ei@ zmfXb22}8-?Fi`vo-YVrTH*C?a8%M=Hv9MqVH7H^J$KsD?>!SFZ;ZsvnHr_gn=7acz z#W?0eCdVhVMWN12VV^$>WlQ?f;P^{(&pYTops|btm6aj>_Uz+hqpGwB)vWp0Cf5y< zft8-je~nn?W11plq}N)4A{l8I7$!ks_x$PXW-2XaRFswX_BnF{R#6YIwMhAgd5F9X zGmwdadS6(a^fjHtXg8=l?Rc0Sm%hk6E9!5cLVloEy4eh(=FwgP`)~I^5~pBEWo+F6 zSf2ncyMurJN91#cJTy_u8Y}@%!bq1RkGC~-bV@SXRd4F{R-*V`bS+6;W5vZ(&+I<9$;-V|eNfLa5n-6% z2(}&uGRF;p92eS*sE*oR$@pexaqr*meB)VhmIg@h{uzkk$9~qh#cHhw#>O%)b@+(| z^IQgqzuj~Sk(J;swEM-3TrJAPCq9k^^^`q{IItKBRXYe}e0Tdr=Huf7da3$l4PdpwWDop%^}n;dD#K4s#DYA8SHZ z&1!riV4W4R7R#C))JH1~axJ)RYnM$$lIR%6fIVA@zV{XVyx}C+a-Dt8Y9M)^KU0+H zR4IUb2CJ{Hg>CuaXtD50jB(_Tcx=Z$^WYu2u5kubqmwp%drJ6 z?Fo40g!Qd<-l=TQxqHEOuPX0;^z7iX?Ke^a%XT<13TA^5`4Xcw6D@Ur&VT&CUe0d} z1GjOVF1^L@>O)l@?bD~$wzgf(nxX1OGD8fEV?TdJcZc2KoUe|oP1#=$$7ee|xbY)A zDZq+cuTpc(fFdj^=!;{k03C69lMQ(|>uhRfRu%+!k&YOi-3|1QKB z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/sale_layout_category_hide_detail/static/description/index.html b/sale_layout_category_hide_detail/static/description/index.html new file mode 100644 index 00000000..6296e7a2 --- /dev/null +++ b/sale_layout_category_hide_detail/static/description/index.html @@ -0,0 +1,459 @@ + + + + + + +Sale layout category hide detail + + + +
+

Sale layout category hide detail

+ + +

Beta License: AGPL-3 OCA/sale-reporting Translate me on Weblate Try me on Runbot

+

This module allows you to set a new ‘Hide details’ boolean field on True in +Report Layout Categories if you want to hide its lines of +Quotations / Sales Orders and Invoices in the PDF report and in the +website.

+

Table of contents

+ +
+

Configuration

+

To configure this module, you need to:

+
    +
  1. Go to Sales -> Configuration -> Settings
  2. +
  3. Check Sections on Sales Orders option.
  4. +
  5. Go to Sales -> Configuration -> Sales Orders -> Report Layout Categories +and configure the Report Layout Categories
  6. +
+
+
+

Usage

+

To use this module, you need to:

+
    +
  1. Go to Sales -> Configuration -> Sales Orders -> Report Layout Categories.
  2. +
  3. Create a new Report Layout Category with Hide details field on True +and create another one with Hide details field on False.
  4. +
  5. Notice when you check Hide details, Add subtotal is hidden. There’s no +sense to not put subtotal when hiding details, so it doesn’t matter if you +check the Add subtotal or not.
  6. +
  7. Go to Sales -> Orders -> Quotations and create a new Quotation.
  8. +
  9. Add to the Quotation some lines associated with the first +Report Layout Category created before and add other lines associated with +the second Report Layout Category created.
  10. +
  11. Print this Quotation. In the PDF report the section with Hide details +field on True will be shown without its lines and with the subtotal.
  12. +
  13. Go to the Quotation in the customer portal. The section with Hide details +field on True will be shown without its lines and with the subtotal.
  14. +
+

The behavior described before is the same for Quotations and Invoices.

+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Tecnativa
  • +
+
+
+

Contributors

+
    +
  • Tecnativa:
      +
    • Ernesto Tejeda
    • +
    • Pedro M. Baeza
    • +
    +
  • +
+
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/sale-reporting project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/sale_layout_category_hide_detail/tests/__init__.py b/sale_layout_category_hide_detail/tests/__init__.py new file mode 100644 index 00000000..02d74603 --- /dev/null +++ b/sale_layout_category_hide_detail/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import test_sale_layout_category_hide_detail diff --git a/sale_layout_category_hide_detail/tests/test_sale_layout_category_hide_detail.py b/sale_layout_category_hide_detail/tests/test_sale_layout_category_hide_detail.py new file mode 100644 index 00000000..fd5cfd1a --- /dev/null +++ b/sale_layout_category_hide_detail/tests/test_sale_layout_category_hide_detail.py @@ -0,0 +1,101 @@ +# Copyright 2018 Tecnativa - Ernesto Tejeda +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +import odoo.tests.common as common + + +class TestSaleLastPriceInfo(common.TransactionCase): + + def setUp(self): + super(TestSaleLastPriceInfo, self).setUp() + + # partner + partner_1 = self.env.ref('base.res_partner_1') + # Products + product_product_16 = self.env.ref('product.product_product_16') + product_product_24 = self.env.ref('product.product_product_24') + product_order_01 = self.env.ref('product.product_order_01') + # Report Layout Categories + self.sale_layout_cat_1 = self.env.ref('sale.sale_layout_cat_1') + self.sale_layout_cat_2 = self.env.ref('sale.sale_layout_cat_2') + + self.sale_order = self.env['sale.order'].create({ + 'partner_id': partner_1.id, + 'order_line': [ + (0, 0, { + 'name': product_product_16.name, + 'product_id': product_product_16.id, + 'layout_category_id': self.sale_layout_cat_1.id, + 'product_uom_qty': 1, + 'price_unit': 100, + }), + (0, 0, { + 'name': product_product_24.name, + 'product_id': product_product_24.id, + 'layout_category_id': self.sale_layout_cat_1.id, + 'product_uom_qty': 1, + 'price_unit': 200, + }), + (0, 0, { + 'name': product_order_01.name, + 'product_id': product_order_01.id, + 'layout_category_id': self.sale_layout_cat_2.id, + 'product_uom_qty': 1, + 'price_unit': 300, + }), + ], + }) + config = self.env['res.config.settings'].create({}) + config.group_sale_layout = True + config.execute() + + def test_sale_order_order_lines_layouted(self): + self.check_order_lines_layouted(self.sale_order) + + def test_account_invoice_order_lines_layouted(self): + # Confirm sale order + self.sale_order.action_confirm() + + # Create invoice from self.sale_order + context = { + "active_model": 'sale.order', + "active_ids": [self.sale_order.id], + "active_id": self.sale_order.id, + "open_invoices": True, + } + payment = self.env['sale.advance.payment.inv'].create({ + 'advance_payment_method': 'all', + }) + action_invoice = payment.with_context(context).create_invoices() + invoice_id = action_invoice['res_id'] + invoice = self.env['account.invoice'].browse(invoice_id) + + # Check hide_details + self.check_order_lines_layouted(invoice) + + def check_order_lines_layouted(self, obj): + report_pages = obj.order_lines_layouted() + + # There are two pages because sale_layout_cat_1.pagebreak == True + # In the first page is sale_layout_cat_1 + self.assertEqual(report_pages[0][0]['name'], + self.sale_layout_cat_1.name) + # In the second page is sale_layout_cat_2 + self.assertEqual(report_pages[1][0]['name'], + self.sale_layout_cat_2.name) + + # After set self.sale_layout_cat_1.hide_details = True the returned + # list of order_lines_layouted method will be different, + # sale_layout_cat_1 dict will have the followings changes: + # - Set 'hide_details' on True + # - Set 'lines' empty + # The other layout dict (sale_layout_cat_2 dict) wont be affected + self.sale_layout_cat_1.hide_details = True + report_pages_hide_details = obj.order_lines_layouted() + + report_pages[0][0].update( + hide_details=True, + lines=list(), + ) + self.assertEqual(report_pages[0][0], report_pages_hide_details[0][0]) + self.assertEqual(report_pages[1][0], report_pages_hide_details[1][0]) diff --git a/sale_layout_category_hide_detail/views/account_portal_templates.xml b/sale_layout_category_hide_detail/views/account_portal_templates.xml new file mode 100644 index 00000000..2ea93ced --- /dev/null +++ b/sale_layout_category_hide_detail/views/account_portal_templates.xml @@ -0,0 +1,38 @@ + + + + + diff --git a/sale_layout_category_hide_detail/views/invoice_report_templates.xml b/sale_layout_category_hide_detail/views/invoice_report_templates.xml new file mode 100644 index 00000000..c9fb18a7 --- /dev/null +++ b/sale_layout_category_hide_detail/views/invoice_report_templates.xml @@ -0,0 +1,21 @@ + + + + + diff --git a/sale_layout_category_hide_detail/views/sale_layout_category_view.xml b/sale_layout_category_hide_detail/views/sale_layout_category_view.xml new file mode 100644 index 00000000..0dc2eef1 --- /dev/null +++ b/sale_layout_category_hide_detail/views/sale_layout_category_view.xml @@ -0,0 +1,43 @@ + + + + + report.configuration.form.view.inherit + sale.layout_category + + + + + + + {'invisible': [('hide_details', '=', True)]} + + + + + + report.configuration.tree.view.inherit + sale.layout_category + + + + + + + {'invisible': [('hide_details', '=', True)]} + + + + + + report.configuration.search.view.inherit + sale.layout_category + + + + + + + + diff --git a/sale_layout_category_hide_detail/views/sale_order_report_templates.xml b/sale_layout_category_hide_detail/views/sale_order_report_templates.xml new file mode 100644 index 00000000..97053fb3 --- /dev/null +++ b/sale_layout_category_hide_detail/views/sale_order_report_templates.xml @@ -0,0 +1,21 @@ + + + + + diff --git a/sale_layout_category_hide_detail/views/sale_portal_templates.xml b/sale_layout_category_hide_detail/views/sale_portal_templates.xml new file mode 100644 index 00000000..36731d27 --- /dev/null +++ b/sale_layout_category_hide_detail/views/sale_portal_templates.xml @@ -0,0 +1,38 @@ + + + + + From 4c186598523d5df31a919aa3099959f8aef68b46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marta=20V=C3=A1zquez=20Rodr=C3=ADguez?= Date: Fri, 1 Mar 2019 13:06:27 +0000 Subject: [PATCH 02/40] Translated using Weblate (Spanish) Currently translated at 100.0% (7 of 7 strings) Translation: sale-reporting-11.0/sale-reporting-11.0-sale_layout_category_hide_detail Translate-URL: https://translation.odoo-community.org/projects/sale-reporting-11-0/sale-reporting-11-0-sale_layout_category_hide_detail/es/ --- sale_layout_category_hide_detail/i18n/es.po | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/sale_layout_category_hide_detail/i18n/es.po b/sale_layout_category_hide_detail/i18n/es.po index 3ad7f263..597f90ad 100644 --- a/sale_layout_category_hide_detail/i18n/es.po +++ b/sale_layout_category_hide_detail/i18n/es.po @@ -7,26 +7,27 @@ msgstr "" "Project-Id-Version: Odoo Server 11.0-20180919\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-12-18 18:12+0000\n" -"PO-Revision-Date: 2018-12-18 18:12+0000\n" -"Last-Translator: <>\n" +"PO-Revision-Date: 2019-03-01 15:53+0000\n" +"Last-Translator: Marta Vázquez Rodríguez \n" "Language-Team: \n" -"Language: \n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Plural-Forms: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.4\n" #. module: sale_layout_category_hide_detail #: model:ir.ui.view,arch_db:sale_layout_category_hide_detail.portal_invoice_report_layouted_hide_detail #: model:ir.ui.view,arch_db:sale_layout_category_hide_detail.portal_order_page_layouted_hide_detail msgid "&bull;" -msgstr "&bull;" +msgstr "& bull;" #. module: sale_layout_category_hide_detail #: model:ir.ui.view,arch_db:sale_layout_category_hide_detail.portal_invoice_report_layouted_hide_detail #: model:ir.ui.view,arch_db:sale_layout_category_hide_detail.portal_order_page_layouted_hide_detail msgid "Subtotal: " -msgstr "Subtotal: " +msgstr " Subtotal: " #. module: sale_layout_category_hide_detail #: model:ir.model.fields,field_description:sale_layout_category_hide_detail.field_sale_layout_category_hide_details @@ -47,9 +48,9 @@ msgstr "Presupuesto" #. module: sale_layout_category_hide_detail #: model:ir.model,name:sale_layout_category_hide_detail.model_res_config_settings msgid "res.config.settings" -msgstr "" +msgstr "'res.config.settings'" #. module: sale_layout_category_hide_detail #: model:ir.model,name:sale_layout_category_hide_detail.model_sale_layout_category msgid "sale.layout_category" -msgstr "sale.layout_category" +msgstr "'sale.layout_category'" From 6c9e71aef5bb5c97cfef46ca6916425459c74e32 Mon Sep 17 00:00:00 2001 From: ernesto Date: Wed, 3 Jul 2019 18:27:48 -0400 Subject: [PATCH 03/40] [MIG] sale_layout_category_hide_detail: Migration to 12.0 --- sale_layout_category_hide_detail/README.rst | 88 +++++++++------ .../__manifest__.py | 13 +-- sale_layout_category_hide_detail/i18n/es.po | 81 ++++++++------ .../i18n/sale_layout_category_hide_detail.pot | 53 --------- .../models/__init__.py | 2 - .../models/account_invoice.py | 18 ++-- .../models/res_config_settings.py | 12 --- .../models/sale_layout_category.py | 12 --- .../models/sale_order.py | 35 ++---- .../readme/CONFIGURE.rst | 6 -- .../readme/DESCRIPTION.rst | 8 +- .../readme/ROADMAP.rst | 3 + .../readme/USAGE.rst | 53 ++++++--- .../static/description/index.html | 77 +++++++------ .../description/readme-icons/eye-slash.png | Bin 0 -> 855 bytes .../static/description/readme-icons/eye.png | Bin 0 -> 982 bytes .../description/readme-icons/minus-circle.png | Bin 0 -> 645 bytes .../description/readme-icons/plus-circle.png | Bin 0 -> 948 bytes .../static/src/js/boolean_fa_icon_widget.js | 78 ++++++++++++++ .../src/js/hide_details_translations.js | 11 ++ .../js/sale_layout_category_hide_detail.js | 65 +++++++++++ .../tests/__init__.py | 3 - .../test_sale_layout_category_hide_detail.py | 101 ------------------ .../views/account_invoice_view.xml | 82 ++++++++++++++ .../views/account_portal_templates.xml | 38 ------- .../views/assets.xml | 12 +++ .../views/invoice_report_templates.xml | 39 ++++--- .../views/sale_layout_category_view.xml | 43 -------- .../views/sale_order_report_templates.xml | 43 +++++--- .../views/sale_portal_templates.xml | 68 ++++++------ .../views/sale_views.xml | 71 ++++++++++++ 31 files changed, 634 insertions(+), 481 deletions(-) delete mode 100644 sale_layout_category_hide_detail/i18n/sale_layout_category_hide_detail.pot delete mode 100644 sale_layout_category_hide_detail/models/res_config_settings.py delete mode 100644 sale_layout_category_hide_detail/models/sale_layout_category.py delete mode 100644 sale_layout_category_hide_detail/readme/CONFIGURE.rst create mode 100644 sale_layout_category_hide_detail/readme/ROADMAP.rst create mode 100644 sale_layout_category_hide_detail/static/description/readme-icons/eye-slash.png create mode 100644 sale_layout_category_hide_detail/static/description/readme-icons/eye.png create mode 100644 sale_layout_category_hide_detail/static/description/readme-icons/minus-circle.png create mode 100644 sale_layout_category_hide_detail/static/description/readme-icons/plus-circle.png create mode 100644 sale_layout_category_hide_detail/static/src/js/boolean_fa_icon_widget.js create mode 100644 sale_layout_category_hide_detail/static/src/js/hide_details_translations.js create mode 100644 sale_layout_category_hide_detail/static/src/js/sale_layout_category_hide_detail.js delete mode 100644 sale_layout_category_hide_detail/tests/__init__.py delete mode 100644 sale_layout_category_hide_detail/tests/test_sale_layout_category_hide_detail.py create mode 100644 sale_layout_category_hide_detail/views/account_invoice_view.xml delete mode 100644 sale_layout_category_hide_detail/views/account_portal_templates.xml create mode 100644 sale_layout_category_hide_detail/views/assets.xml delete mode 100644 sale_layout_category_hide_detail/views/sale_layout_category_view.xml create mode 100644 sale_layout_category_hide_detail/views/sale_views.xml diff --git a/sale_layout_category_hide_detail/README.rst b/sale_layout_category_hide_detail/README.rst index e771ad07..0e51b258 100644 --- a/sale_layout_category_hide_detail/README.rst +++ b/sale_layout_category_hide_detail/README.rst @@ -14,66 +14,90 @@ Sale layout category hide detail :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fsale--reporting-lightgray.png?logo=github - :target: https://github.com/OCA/sale-reporting/tree/11.0/sale_layout_category_hide_detail + :target: https://github.com/OCA/sale-reporting/tree/12.0/sale_layout_category_hide_detail :alt: OCA/sale-reporting .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/sale-reporting-11-0/sale-reporting-11-0-sale_layout_category_hide_detail + :target: https://translation.odoo-community.org/projects/sale-reporting-12-0/sale-reporting-12-0-sale_layout_category_hide_detail :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/148/11.0 + :target: https://runbot.odoo-community.org/runbot/148/12.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| -This module allows you to set a new 'Hide details' boolean field on True in -*Report Layout Categories* if you want to hide its lines of -*Quotations / Sales Orders* and *Invoices* in the PDF report and in the -website. +This module allows you to check/uncheck the new 'Show details' and +'Show subtotal' flags in *Sale order section lines* and +*Customer invoice section lines* if you want to show or hide their +lines or their subtotals in the PDF report and in the website. **Table of contents** .. contents:: :local: -Configuration -============= - -To configure this module, you need to: - -#. Go to *Sales -> Configuration -> Settings* -#. Check *Sections on Sales Orders* option. -#. Go to *Sales -> Configuration -> Sales Orders -> Report Layout Categories* - and configure the *Report Layout Categories* - Usage ===== To use this module, you need to: -#. Go to *Sales -> Configuration -> Sales Orders -> Report Layout Categories*. -#. Create a new *Report Layout Category* with *Hide details* field on *True* - and create another one with *Hide details* field on *False*. -#. Notice when you check *Hide details*, *Add subtotal* is hidden. There's no - sense to not put subtotal when hiding details, so it doesn't matter if you - check the *Add subtotal* or not. #. Go to *Sales -> Orders -> Quotations* and create a new *Quotation*. -#. Add to the *Quotation* some lines associated with the first - *Report Layout Category* created before and add other lines associated with - the second *Report Layout Category* created. -#. Print this Quotation. In the PDF report the section with *Hide details* - field on *True* will be shown without its lines and with the subtotal. -#. Go to the Quotation in the customer portal. The section with *Hide details* - field on *True* will be shown without its lines and with the subtotal. +#. In *Order lines* tab add a section line. +#. Add some product lines. +#. Add another section line, but this time, click on the *plus-circle* + icon |plus-circle-icon| on your right. That icon will be replaced by + *minus-circle* icon |minus-circle-icon|. That mean *Show subtotal* field is + set to False. +#. Add some product lines. +#. Add another section line and click on the *eye* icon |eye-icon| on your + right. That icon will be replaced by *eye-slash* icon |eye-slash-icon|. + That mean *Show details* field is set to False. +#. Add some product lines. +#. Print a *Quotation / Order* report for this quotation. + +After following the steps described above, in the report you will see the +following: + + * The first 'line section' and its product order lines will be shown in + a normal way. + * The second 'line section' and its product order lines will be shown in + a normal way, but the subtotal won't be shown. That is because in this + section line *Show subtotal* field was set to False. + * The third 'line section' will show the name on the left and the + subtotal on the right. Besides, its product order lines won't be shown. + That is because in this line *Show details* field was set to False. The behavior described before is the same for Quotations and Invoices. +.. |eye-icon| image:: sale_layout_category_hide_detail/static/description/readme-icons/eye.png + :alt: plus-circle icon + :width: 12 px + +.. |eye-slash-icon| image:: sale_layout_category_hide_detail/static/description/readme-icons/eye-slash.png + :alt: minus-circle icon + :width: 12 px + +.. |plus-circle-icon| image:: sale_layout_category_hide_detail/static/description/readme-icons/plus-circle.png + :alt: plus-circle icon + :width: 12 px + +.. |minus-circle-icon| image:: sale_layout_category_hide_detail/static/description/readme-icons/minus-circle.png + :alt: minus-circle icon + :width: 12 px + +Known issues / Roadmap +====================== + +* The `boolean_fa_icon` widget has not been extracted to a module into OCA/web + because until now this widget has not been needed for anything else, but it's + good that in the future that would be done. + Bug Tracker =========== Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -106,6 +130,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/sale-reporting `_ project on GitHub. +This module is part of the `OCA/sale-reporting `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/sale_layout_category_hide_detail/__manifest__.py b/sale_layout_category_hide_detail/__manifest__.py index b7b68a37..84011a37 100644 --- a/sale_layout_category_hide_detail/__manifest__.py +++ b/sale_layout_category_hide_detail/__manifest__.py @@ -1,11 +1,11 @@ -# Copyright 2018 Tecnativa - Ernesto Tejeda +# Copyright 2018-2019 Tecnativa - Ernesto Tejeda # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). { "name": "Sale layout category hide detail", - "summary": "Hide details for sections in sales orders and invoices for " + "summary": "Hide details for sections in sale orders and invoices for " "reports and customer portal", - "version": "11.0.1.0.0", + "version": "12.0.1.0.0", "category": "Sales Management", "website": "http://github.com/OCA/sale-reporting", "author": "Tecnativa, " @@ -15,11 +15,12 @@ "sale_management", ], "data": [ - "views/sale_layout_category_view.xml", + "views/assets.xml", + "views/account_invoice_view.xml", + "views/invoice_report_templates.xml", + "views/sale_views.xml", "views/sale_order_report_templates.xml", "views/sale_portal_templates.xml", - "views/invoice_report_templates.xml", - "views/account_portal_templates.xml", ], "application": False, 'installable': True, diff --git a/sale_layout_category_hide_detail/i18n/es.po b/sale_layout_category_hide_detail/i18n/es.po index 597f90ad..570e5eec 100644 --- a/sale_layout_category_hide_detail/i18n/es.po +++ b/sale_layout_category_hide_detail/i18n/es.po @@ -1,56 +1,73 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * sale_layout_category_hide_detail +# * sale_layout_category_hide_detail # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 11.0-20180919\n" +"Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-12-18 18:12+0000\n" -"PO-Revision-Date: 2019-03-01 15:53+0000\n" -"Last-Translator: Marta Vázquez Rodríguez \n" +"POT-Creation-Date: 2019-08-12 14:31+0000\n" +"PO-Revision-Date: 2019-08-12 14:31+0000\n" +"Last-Translator: <>\n" "Language-Team: \n" -"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.4\n" +"Plural-Forms: \n" #. module: sale_layout_category_hide_detail -#: model:ir.ui.view,arch_db:sale_layout_category_hide_detail.portal_invoice_report_layouted_hide_detail -#: model:ir.ui.view,arch_db:sale_layout_category_hide_detail.portal_order_page_layouted_hide_detail -msgid "&bull;" -msgstr "& bull;" +#: model:ir.model,name:sale_layout_category_hide_detail.model_account_invoice_line +msgid "Invoice Line" +msgstr "Linea de factura" #. module: sale_layout_category_hide_detail -#: model:ir.ui.view,arch_db:sale_layout_category_hide_detail.portal_invoice_report_layouted_hide_detail -#: model:ir.ui.view,arch_db:sale_layout_category_hide_detail.portal_order_page_layouted_hide_detail -msgid "Subtotal: " -msgstr " Subtotal: " +#: model:ir.model,name:sale_layout_category_hide_detail.model_sale_order_line +msgid "Sales Order Line" +msgstr "Línea de pedido de venta" #. module: sale_layout_category_hide_detail -#: model:ir.model.fields,field_description:sale_layout_category_hide_detail.field_sale_layout_category_hide_details -#: model:ir.ui.view,arch_db:sale_layout_category_hide_detail.report_configuration_search_view -msgid "Hide details" -msgstr "Ocultar detalles" +#: model:ir.model.fields,field_description:sale_layout_category_hide_detail.field_account_invoice_line__show_details +#: model:ir.model.fields,field_description:sale_layout_category_hide_detail.field_sale_order_line__show_details +msgid "Show details" +msgstr "Mostrar detalles" #. module: sale_layout_category_hide_detail -#: model:ir.model,name:sale_layout_category_hide_detail.model_account_invoice -msgid "Invoice" -msgstr "Factura" +#: model:ir.model.fields,field_description:sale_layout_category_hide_detail.field_account_invoice_line__show_subtotal +#: model:ir.model.fields,field_description:sale_layout_category_hide_detail.field_sale_order_line__show_subtotal +msgid "Show subtotal" +msgstr "Mostrar subtotal" #. module: sale_layout_category_hide_detail -#: model:ir.model,name:sale_layout_category_hide_detail.model_sale_order -msgid "Quotation" -msgstr "Presupuesto" +#: model_terms:ir.ui.view,arch_db:sale_layout_category_hide_detail.report_saleorder_document_hide_detail +#: model_terms:ir.ui.view,arch_db:sale_layout_category_hide_detail.sale_order_portal_content_hide_detail +msgid "Subtotal" +msgstr "Subtotal" #. module: sale_layout_category_hide_detail -#: model:ir.model,name:sale_layout_category_hide_detail.model_res_config_settings -msgid "res.config.settings" -msgstr "'res.config.settings'" +#. openerp-web +#: code:addons/sale_layout_category_hide_detail/static/src/js/hide_details_translations.js:9 +#, python-format +msgid "Switch to: details hidden" +msgstr "Cambiar a: detalles ocultos" #. module: sale_layout_category_hide_detail -#: model:ir.model,name:sale_layout_category_hide_detail.model_sale_layout_category -msgid "sale.layout_category" -msgstr "'sale.layout_category'" +#. openerp-web +#: code:addons/sale_layout_category_hide_detail/static/src/js/hide_details_translations.js:10 +#, python-format +msgid "Switch to: details shown" +msgstr "Cambiar a: detalles mostrados" + +#. module: sale_layout_category_hide_detail +#. openerp-web +#: code:addons/sale_layout_category_hide_detail/static/src/js/hide_details_translations.js:11 +#, python-format +msgid "Switch to: subtotal hidden" +msgstr "Cambiar a: subtotal oculto" + +#. module: sale_layout_category_hide_detail +#. openerp-web +#: code:addons/sale_layout_category_hide_detail/static/src/js/hide_details_translations.js:12 +#, python-format +msgid "Switch to: subtotal shown" +msgstr "Cambiar a: subtotal mostrado" + diff --git a/sale_layout_category_hide_detail/i18n/sale_layout_category_hide_detail.pot b/sale_layout_category_hide_detail/i18n/sale_layout_category_hide_detail.pot deleted file mode 100644 index 1d172d6f..00000000 --- a/sale_layout_category_hide_detail/i18n/sale_layout_category_hide_detail.pot +++ /dev/null @@ -1,53 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * sale_layout_category_hide_detail -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 11.0\n" -"Report-Msgid-Bugs-To: \n" -"Last-Translator: <>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" - -#. module: sale_layout_category_hide_detail -#: model:ir.ui.view,arch_db:sale_layout_category_hide_detail.portal_invoice_report_layouted_hide_detail -#: model:ir.ui.view,arch_db:sale_layout_category_hide_detail.portal_order_page_layouted_hide_detail -msgid "&bull;" -msgstr "" - -#. module: sale_layout_category_hide_detail -#: model:ir.ui.view,arch_db:sale_layout_category_hide_detail.portal_invoice_report_layouted_hide_detail -#: model:ir.ui.view,arch_db:sale_layout_category_hide_detail.portal_order_page_layouted_hide_detail -msgid "Subtotal: " -msgstr "" - -#. module: sale_layout_category_hide_detail -#: model:ir.model.fields,field_description:sale_layout_category_hide_detail.field_sale_layout_category_hide_details -#: model:ir.ui.view,arch_db:sale_layout_category_hide_detail.report_configuration_search_view -msgid "Hide details" -msgstr "" - -#. module: sale_layout_category_hide_detail -#: model:ir.model,name:sale_layout_category_hide_detail.model_account_invoice -msgid "Invoice" -msgstr "" - -#. module: sale_layout_category_hide_detail -#: model:ir.model,name:sale_layout_category_hide_detail.model_sale_order -msgid "Quotation" -msgstr "" - -#. module: sale_layout_category_hide_detail -#: model:ir.model,name:sale_layout_category_hide_detail.model_res_config_settings -msgid "res.config.settings" -msgstr "" - -#. module: sale_layout_category_hide_detail -#: model:ir.model,name:sale_layout_category_hide_detail.model_sale_layout_category -msgid "sale.layout_category" -msgstr "" - diff --git a/sale_layout_category_hide_detail/models/__init__.py b/sale_layout_category_hide_detail/models/__init__.py index ec9204e2..f9400ba0 100644 --- a/sale_layout_category_hide_detail/models/__init__.py +++ b/sale_layout_category_hide_detail/models/__init__.py @@ -1,6 +1,4 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from . import sale_layout_category from . import sale_order from . import account_invoice -from . import res_config_settings diff --git a/sale_layout_category_hide_detail/models/account_invoice.py b/sale_layout_category_hide_detail/models/account_invoice.py index 5a8f4ccf..ec4c1ec4 100644 --- a/sale_layout_category_hide_detail/models/account_invoice.py +++ b/sale_layout_category_hide_detail/models/account_invoice.py @@ -1,13 +1,15 @@ -# Copyright 2018 Tecnativa - Ernesto Tejeda +# Copyright 2018-2019 Tecnativa - Ernesto Tejeda # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from odoo import api, models +from odoo import fields, models -class AccountInvoice(models.Model): - _inherit = 'account.invoice' +class AccountInvoiceLine(models.Model): + _inherit = 'account.invoice.line' - @api.multi - def order_lines_layouted(self): - report_pages = super(AccountInvoice, self).order_lines_layouted() - return self.env['sale.order'].lines_layouted_hide_details(report_pages) + show_details = fields.Boolean( + string="Show details", + default=True) + show_subtotal = fields.Boolean( + string="Show subtotal", + default=True) diff --git a/sale_layout_category_hide_detail/models/res_config_settings.py b/sale_layout_category_hide_detail/models/res_config_settings.py deleted file mode 100644 index ba428bb7..00000000 --- a/sale_layout_category_hide_detail/models/res_config_settings.py +++ /dev/null @@ -1,12 +0,0 @@ -# Copyright 2018 Tecnativa - Ernesto Tejeda -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). - -from odoo import fields, models - - -class ResConfigSettings(models.TransientModel): - _inherit = 'res.config.settings' - - group_sale_layout = fields.Boolean( - group='base.group_portal,base.group_user', - ) diff --git a/sale_layout_category_hide_detail/models/sale_layout_category.py b/sale_layout_category_hide_detail/models/sale_layout_category.py deleted file mode 100644 index a44d6e0b..00000000 --- a/sale_layout_category_hide_detail/models/sale_layout_category.py +++ /dev/null @@ -1,12 +0,0 @@ -# Copyright 2018 Tecnativa - Ernesto Tejeda -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). - -from odoo import fields, models - - -class SaleLayoutCategory(models.Model): - _inherit = 'sale.layout_category' - - hide_details = fields.Boolean( - string="Hide details", - ) diff --git a/sale_layout_category_hide_detail/models/sale_order.py b/sale_layout_category_hide_detail/models/sale_order.py index ad17ea13..c7d4b014 100644 --- a/sale_layout_category_hide_detail/models/sale_order.py +++ b/sale_layout_category_hide_detail/models/sale_order.py @@ -1,30 +1,15 @@ -# Copyright 2018 Tecnativa - Ernesto Tejeda +# Copyright 2018-2019 Tecnativa - Ernesto Tejeda # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from odoo import api, models +from odoo import fields, models -class SaleOrder(models.Model): - _inherit = "sale.order" +class SaleOrderLine(models.Model): + _inherit = 'sale.order.line' - @api.multi - def lines_layouted_hide_details(self, report_pages): - if self.user_has_groups('sale.group_sale_layout'): - for page in report_pages: - for cat_dict in page: - lines = cat_dict['lines'] - category = lines and lines[0].layout_category_id - hide_details = category and category.hide_details - subtotal = sum(l.price_subtotal for l in lines) - cat_dict.update( - hide_details=hide_details, - lines_subtotal=subtotal, - ) - if hide_details: - cat_dict.update(lines=list()) - return report_pages - - @api.multi - def order_lines_layouted(self): - report_pages = super(SaleOrder, self).order_lines_layouted() - return self.lines_layouted_hide_details(report_pages) + show_details = fields.Boolean( + string="Show details", + default=True) + show_subtotal = fields.Boolean( + string="Show subtotal", + default=True) diff --git a/sale_layout_category_hide_detail/readme/CONFIGURE.rst b/sale_layout_category_hide_detail/readme/CONFIGURE.rst deleted file mode 100644 index 6a51625b..00000000 --- a/sale_layout_category_hide_detail/readme/CONFIGURE.rst +++ /dev/null @@ -1,6 +0,0 @@ -To configure this module, you need to: - -#. Go to *Sales -> Configuration -> Settings* -#. Check *Sections on Sales Orders* option. -#. Go to *Sales -> Configuration -> Sales Orders -> Report Layout Categories* - and configure the *Report Layout Categories* diff --git a/sale_layout_category_hide_detail/readme/DESCRIPTION.rst b/sale_layout_category_hide_detail/readme/DESCRIPTION.rst index 21528f6f..15818f9e 100644 --- a/sale_layout_category_hide_detail/readme/DESCRIPTION.rst +++ b/sale_layout_category_hide_detail/readme/DESCRIPTION.rst @@ -1,4 +1,4 @@ -This module allows you to set a new 'Hide details' boolean field on True in -*Report Layout Categories* if you want to hide its lines of -*Quotations / Sales Orders* and *Invoices* in the PDF report and in the -website. +This module allows you to check/uncheck the new 'Show details' and +'Show subtotal' flags in *Sale order section lines* and +*Customer invoice section lines* if you want to show or hide their +lines or their subtotals in the PDF report and in the website. diff --git a/sale_layout_category_hide_detail/readme/ROADMAP.rst b/sale_layout_category_hide_detail/readme/ROADMAP.rst new file mode 100644 index 00000000..0267799c --- /dev/null +++ b/sale_layout_category_hide_detail/readme/ROADMAP.rst @@ -0,0 +1,3 @@ +* The `boolean_fa_icon` widget has not been extracted to a module into OCA/web + because until now this widget has not been needed for anything else, but it's + good that in the future that would be done. diff --git a/sale_layout_category_hide_detail/readme/USAGE.rst b/sale_layout_category_hide_detail/readme/USAGE.rst index 595dfbd1..fa9606cc 100644 --- a/sale_layout_category_hide_detail/readme/USAGE.rst +++ b/sale_layout_category_hide_detail/readme/USAGE.rst @@ -1,18 +1,45 @@ To use this module, you need to: -#. Go to *Sales -> Configuration -> Sales Orders -> Report Layout Categories*. -#. Create a new *Report Layout Category* with *Hide details* field on *True* - and create another one with *Hide details* field on *False*. -#. Notice when you check *Hide details*, *Add subtotal* is hidden. There's no - sense to not put subtotal when hiding details, so it doesn't matter if you - check the *Add subtotal* or not. #. Go to *Sales -> Orders -> Quotations* and create a new *Quotation*. -#. Add to the *Quotation* some lines associated with the first - *Report Layout Category* created before and add other lines associated with - the second *Report Layout Category* created. -#. Print this Quotation. In the PDF report the section with *Hide details* - field on *True* will be shown without its lines and with the subtotal. -#. Go to the Quotation in the customer portal. The section with *Hide details* - field on *True* will be shown without its lines and with the subtotal. +#. In *Order lines* tab add a section line. +#. Add some product lines. +#. Add another section line, but this time, click on the *plus-circle* + icon |plus-circle-icon| on your right. That icon will be replaced by + *minus-circle* icon |minus-circle-icon|. That mean *Show subtotal* field is + set to False. +#. Add some product lines. +#. Add another section line and click on the *eye* icon |eye-icon| on your + right. That icon will be replaced by *eye-slash* icon |eye-slash-icon|. + That mean *Show details* field is set to False. +#. Add some product lines. +#. Print a *Quotation / Order* report for this quotation. + +After following the steps described above, in the report you will see the +following: + + * The first 'line section' and its product order lines will be shown in + a normal way. + * The second 'line section' and its product order lines will be shown in + a normal way, but the subtotal won't be shown. That is because in this + section line *Show subtotal* field was set to False. + * The third 'line section' will show the name on the left and the + subtotal on the right. Besides, its product order lines won't be shown. + That is because in this line *Show details* field was set to False. The behavior described before is the same for Quotations and Invoices. + +.. |eye-icon| image:: sale_layout_category_hide_detail/static/description/readme-icons/eye.png + :alt: plus-circle icon + :width: 12 px + +.. |eye-slash-icon| image:: sale_layout_category_hide_detail/static/description/readme-icons/eye-slash.png + :alt: minus-circle icon + :width: 12 px + +.. |plus-circle-icon| image:: sale_layout_category_hide_detail/static/description/readme-icons/plus-circle.png + :alt: plus-circle icon + :width: 12 px + +.. |minus-circle-icon| image:: sale_layout_category_hide_detail/static/description/readme-icons/minus-circle.png + :alt: minus-circle icon + :width: 12 px diff --git a/sale_layout_category_hide_detail/static/description/index.html b/sale_layout_category_hide_detail/static/description/index.html index 6296e7a2..b44fb29e 100644 --- a/sale_layout_category_hide_detail/static/description/index.html +++ b/sale_layout_category_hide_detail/static/description/index.html @@ -367,16 +367,16 @@

Sale layout category hide detail

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/sale-reporting Translate me on Weblate Try me on Runbot

-

This module allows you to set a new ‘Hide details’ boolean field on True in -Report Layout Categories if you want to hide its lines of -Quotations / Sales Orders and Invoices in the PDF report and in the -website.

+

Beta License: AGPL-3 OCA/sale-reporting Translate me on Weblate Try me on Runbot

+

This module allows you to check/uncheck the new ‘Show details’ and +‘Show subtotal’ flags in Sale order section lines and +Customer invoice section lines if you want to show or hide their +lines or their subtotals in the PDF report and in the website.

Table of contents

-
-

Configuration

-

To configure this module, you need to:

-
    -
  1. Go to Sales -> Configuration -> Settings
  2. -
  3. Check Sections on Sales Orders option.
  4. -
  5. Go to Sales -> Configuration -> Sales Orders -> Report Layout Categories -and configure the Report Layout Categories
  6. -
-
-

Usage

+

Usage

To use this module, you need to:

    -
  1. Go to Sales -> Configuration -> Sales Orders -> Report Layout Categories.
  2. -
  3. Create a new Report Layout Category with Hide details field on True -and create another one with Hide details field on False.
  4. -
  5. Notice when you check Hide details, Add subtotal is hidden. There’s no -sense to not put subtotal when hiding details, so it doesn’t matter if you -check the Add subtotal or not.
  6. Go to Sales -> Orders -> Quotations and create a new Quotation.
  7. -
  8. Add to the Quotation some lines associated with the first -Report Layout Category created before and add other lines associated with -the second Report Layout Category created.
  9. -
  10. Print this Quotation. In the PDF report the section with Hide details -field on True will be shown without its lines and with the subtotal.
  11. -
  12. Go to the Quotation in the customer portal. The section with Hide details -field on True will be shown without its lines and with the subtotal.
  13. +
  14. In Order lines tab add a section line.
  15. +
  16. Add some product lines.
  17. +
  18. Add another section line, but this time, click on the plus-circle +icon plus-circle icon on your right. That icon will be replaced by +minus-circle icon minus-circle icon. That mean Show subtotal field is +set to False.
  19. +
  20. Add some product lines.
  21. +
  22. Add another section line and click on the eye icon plus-circle icon on your +right. That icon will be replaced by eye-slash icon minus-circle icon. +That mean Show details field is set to False.
  23. +
  24. Add some product lines.
  25. +
  26. Print a Quotation / Order report for this quotation.
+

After following the steps described above, in the report you will see the +following:

+
+
    +
  • The first ‘line section’ and its product order lines will be shown in +a normal way.
  • +
  • The second ‘line section’ and its product order lines will be shown in +a normal way, but the subtotal won’t be shown. That is because in this +section line Show subtotal field was set to False.
  • +
  • The third ‘line section’ will show the name on the left and the +subtotal on the right. Besides, its product order lines won’t be shown. +That is because in this line Show details field was set to False.
  • +
+

The behavior described before is the same for Quotations and Invoices.

+
+

Known issues / Roadmap

+
    +
  • The boolean_fa_icon widget has not been extracted to a module into OCA/web +because until now this widget has not been needed for anything else, but it’s +good that in the future that would be done.
  • +
+

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -feedback.

+feedback.

Do not contact contributors directly about support or help with technical issues.

@@ -450,7 +461,7 @@

Maintainers

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

-

This module is part of the OCA/sale-reporting project on GitHub.

+

This module is part of the OCA/sale-reporting project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

diff --git a/sale_layout_category_hide_detail/static/description/readme-icons/eye-slash.png b/sale_layout_category_hide_detail/static/description/readme-icons/eye-slash.png new file mode 100644 index 0000000000000000000000000000000000000000..310a7a4c432c0e9d50a59f4ecd24eece6a012dda GIT binary patch literal 855 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10f+@+{-GzZ+Rj;xUkjGiz z5n0T@z;^_M8K-LVNdpDhOFVsD*&nlWG4V0CP7hxM)THX^;uzv_{OuL*j^0EG_7C?H zmrc1N>vLl3oAeatcha7bHzr8wL@1;rCN^qBdQ4L}B+)g+J8;pIH&c3_7$r4IPA@Pi zK9=-sqs9B5HOGC@*8JQ*`+e=a|NkrX|3ClxqyJ#ij_2oQ|0-X^);ld?o##b6#gZ(k zo`NN5*SB`tJzji~xwE_P)hqWX$=m;R^lrSW?)!JlF?-I5XXmdp3$}exmw(?*YG9Gf@mb++f7u3qk1;kZz~pn~WZn=AsYT7!4Y znmpZ?`Kz4zHKn_UYMpPWw(#C$yWPs?KBbtIZ~2|Dc;mRu0%eyKV@}*X-fZ`--azZ- z^>>MVH=c}c5WYHZK z<_A7X;nt652w25zQ=BTp(BJYwWh+0o$k4UEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10f+@+{-GzZ+Rj;xUkjGiz z5m^kh={g8AI%&+V01C2~c>21sKW67*;$>d9izN}LX^E$cV~EG`w^w|9?xYH^eYmgJ z8ju*d%U3EQdE?cH1sj`U7ccZ(qsVBgCdZ@tP3hK=#kLo`-xqD%UiE3&^j~u$Jl9-1 zcI8G$hQf^i4c{)0{Rh<61pLSsjJ$UE-KD8{ot<*l?{n`}&Z|tnH?y7n+kD-SE7D?t z>8pLU1b!S2o&0R=AL*tU>Z&HI1V2wO((&}1WtMed!;>l&!`*Ku2k7TD_v}BjB22F( z)x1}-;8=p<$=D_#>#dc6nH4QGp+WnEo+H+Q*jWyG!WzD2?9;V$9#EnllIel+jv zis*IG=XQB-wa!1dA&=92DQ`t+^Z7L={yf&H_CJ((SnNx7@GRAgYx+-{m>12e$vGPS zs>E}BV|t3r_bDrw^*ml)_K67Tk6pHB_4PR&9jV<)W!&O3CuoH}`|`>#ce-34pEqa8 zO1A16-Q+9m$GV@Kw^+y;QXQ4}|$viaMQL~ULd%VteU z*sbiwaxOc3R{niAeTyfS#^-)qirgN0>s?|0%^u0e>mEhW0y(xBq_{ zRZV3{K`$XwNCdZQ%E|d30nQ+Yc;#oJ7>-tW^?dKGe^?qNSvcz>tcjxV8_xN~z zUei?mS-LMgVBYkA_1ESvwv#7s>6){Ib@imO!dlPM(Gg3n zqK_8YdhE)&2OC7#SE^>Kd5q z8XANc7+4t^TNxN@8yHy`7_7MT`VxwU-29Zxv`X9>ZuSS~0X0a1YzWRzD=AMbN@XZ7 iFW1Y=%Pvk%EJ)SMFG`>N&PEETh{4m<&t;ucLK6Vhk4UEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10f+@+{-GzZ+Rj;xUkjGiz z5n0T@z;^_M8K-LVNdpDhOFVsD*&nlWG4UGxPhp8>U|tIBQu=1e0!%ZLZ@D6QMOv z3qMwuscrLo_q+1`0uGzY&-={I9x%K3gNgGo+mB<{@1F&RxN3=OL`h0wNvc(HQ7VvP zFfuT-)HN{IH8cn@Ft9Q-wlX!)HZZa>Ft~W@zcz}7-29Zxv`X9>7PPxh2WpT6*$|wc qR#Ki=l*&+EUaps!mtCBkSdglhUz9%kosASw5re0zpUXO@geCwzdh3n= literal 0 HcmV?d00001 diff --git a/sale_layout_category_hide_detail/static/description/readme-icons/plus-circle.png b/sale_layout_category_hide_detail/static/description/readme-icons/plus-circle.png new file mode 100644 index 0000000000000000000000000000000000000000..cf7d62cc302cde1a227952048436c2b7c1dfc7df GIT binary patch literal 948 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10f+@+{-GzZ+Rj;xUkjGiz z5m^kh={g8AI%&+V01C2~c>21sKW67*w6aS6HwkDlQbGJ>|pR-!`RBiFGxdn$ji(lp5-yV}!`ecta>!r27HM)On{K{nceudDN zS%#O^X-$f;bd8lZRAxCId*OcWKCX-JWs?uGI=6n@t!$CC=}GR=m{k+!eyO}%mUe&J zO7<@r(mvJh^RqlvtDnxR+@INW!YeKQW9z{w4@xH=+a#lv^F*!wTE+Dv$Im{qD%7`_ zrB*)SRbF`0-I&aS-j2q;Kld-tgd}ZO`w{)YpAJ?e@yr zLoZ8~f2lmYv`1lM*rrz@ZU$MWc4vA@rx`bGugOq(d#FL&sOd)5$)@kN)1|6-B~P(P zovD*C$=b4DPA&JrJ?uMI){CjUs^iOAmwx$s&W(?gqXcGe4xHhfe=ykYU)$D&|D{8+$8s4VruxOV(Z+G|7BMF z(JMStaP5L$Mat3X`)v2HHfh@196kDJd-k$C7fBZswFj!L>avViNZhlH;S|x4`cQxKr y12ss3YzWRzD=AMbN@XZ7FW1Y=%Pvk%EJ)SMFG`>N&PEETh{4m<&t;ucLK6VV;FW#= literal 0 HcmV?d00001 diff --git a/sale_layout_category_hide_detail/static/src/js/boolean_fa_icon_widget.js b/sale_layout_category_hide_detail/static/src/js/boolean_fa_icon_widget.js new file mode 100644 index 00000000..e289b955 --- /dev/null +++ b/sale_layout_category_hide_detail/static/src/js/boolean_fa_icon_widget.js @@ -0,0 +1,78 @@ +/* Copyright 2019 Tecnativa - Ernesto Tejeda + * License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + */ +odoo.define('sale_layout_category_hide_detail.boolean_fa_icon_widget', function (require) { + "use strict"; + + var core = require('web.core'); + var AbstractField = require('web.AbstractField'); + var registry = require('web.field_registry'); + + var _t = core._t; + + var BooleanFaIconWidget = AbstractField.extend({ + className: 'o_boolean_fa_icon_widget', + events: { + 'click': '_toggleValue' + }, + supportedFieldTypes: ['boolean'], + + //-------------------------------------------------------------------------- + // Public + //-------------------------------------------------------------------------- + + /** + * A boolean field is always set since false is a valid value. + * + * @override + */ + isSet: function () { + return true; + }, + + //-------------------------------------------------------------------------- + // Private + //-------------------------------------------------------------------------- + + /** + * Render font-awesome icon based on state + * + * @override + * @private + */ + _render: function () { + //set icon class + var fa_icons = this.attrs.options.fa_icons; + var icon_true = fa_icons && fa_icons.icon_true || 'fa-check-square-o'; + var icon_false = fa_icons && fa_icons.icon_false || 'fa-square-o'; + var fa_class = this.value ? icon_true : icon_false; + //set tip message + var terminology = this.attrs.options.terminology; + var hover_true = terminology && _t(terminology.hover_true) || _t('Click to uncheck'); + var hover_false = terminology && _t(terminology.hover_false) || _t('Click to check'); + var tip = this.value ? hover_true : hover_false; + //set template and add it to $el + var template = ""; + this.$el.empty().append(_.str.sprintf(template, fa_class, tip)) + }, + + //-------------------------------------------------------------------------- + // Handlers + //-------------------------------------------------------------------------- + + /** + * Toggle value + * + * @private + * @param {MouseEvent} event + */ + _toggleValue: function (event) { + event.preventDefault(); + event.stopPropagation(); + this._setValue(!this.value); + }, + }); + + registry.add('boolean_fa_icon', BooleanFaIconWidget); + return BooleanFaIconWidget; +}); diff --git a/sale_layout_category_hide_detail/static/src/js/hide_details_translations.js b/sale_layout_category_hide_detail/static/src/js/hide_details_translations.js new file mode 100644 index 00000000..cb4e58c9 --- /dev/null +++ b/sale_layout_category_hide_detail/static/src/js/hide_details_translations.js @@ -0,0 +1,11 @@ +// This is an hack to get the hover_* options translated on the +// boolean_fa_icon_widget terminology widget. The terms are translated through +// _t(opt_terms.hover_true) or _t(opt_terms.hover_true) which will only work +// if the terms are already present in the translation map. +// This code does nothing but marks the strings as translatable +var _t = function(x) { return x; }; + +_t("Switch to: details hidden"); +_t("Switch to: details shown"); +_t("Switch to: subtotal hidden"); +_t("Switch to: subtotal shown"); diff --git a/sale_layout_category_hide_detail/static/src/js/sale_layout_category_hide_detail.js b/sale_layout_category_hide_detail/static/src/js/sale_layout_category_hide_detail.js new file mode 100644 index 00000000..251526fe --- /dev/null +++ b/sale_layout_category_hide_detail/static/src/js/sale_layout_category_hide_detail.js @@ -0,0 +1,65 @@ +/* Copyright 2019 Tecnativa - Ernesto Tejeda + * License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + */ +odoo.define('sale_layout_category_hide_detail.sale_layout_category_hide_detail', function (require) { + "use strict"; + + var fieldRegistry = require('web.field_registry'); + var section_and_note_one2many = fieldRegistry.get('section_and_note_one2many'); + + var SectionAndNoteListRenderer = { + _renderBodyCell: function (record, node, index, options) { + var $cell = this._super.apply(this, arguments); + + var options = this.state.fieldsInfo.list[node.attrs.name].options; + var show_in_line_section = options.show_in_line_section; + + var isSection = record.data.display_type === 'line_section'; + var isNote = record.data.display_type === 'line_note'; + if (isSection || isNote) { + if (show_in_line_section) { + return $cell.removeClass('o_hidden'); + } else if (node.attrs.name === "name") { + var nbrColumns = this._getNumberOfCols(); + if (this.handleField) { + nbrColumns--; + } + if (this.addTrashIcon) { + nbrColumns--; + } + nbrColumns -= this._getNumberOfLineSectionFields(); + $cell.attr('colspan', nbrColumns); + } + } + return $cell; + }, + _getNumberOfLineSectionFields: function () { + var section_fields_count = 0; + var self = this; + this.columns.forEach(function(elem) { + var options = self.state.fieldsInfo.list[elem.attrs.name].options; + if (options.show_in_line_section) + section_fields_count ++; + }); + return section_fields_count; + }, + _renderHeaderCell: function (node) { + var $th = this._super.apply(this, arguments); + var options = this.state.fieldsInfo.list[node.attrs.name].options; + var show_in_line_section = options.show_in_line_section; + if (show_in_line_section) + $th.text("").removeClass('o_column_sortable'); + return $th + }, + }; + + section_and_note_one2many.include({ + _getRenderer: function () { + var result = this._super.apply(this, arguments); + if (this.view.arch.tag === 'tree') { + result.include(SectionAndNoteListRenderer) + } + return result + }, + }); +}); diff --git a/sale_layout_category_hide_detail/tests/__init__.py b/sale_layout_category_hide_detail/tests/__init__.py deleted file mode 100644 index 02d74603..00000000 --- a/sale_layout_category_hide_detail/tests/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). - -from . import test_sale_layout_category_hide_detail diff --git a/sale_layout_category_hide_detail/tests/test_sale_layout_category_hide_detail.py b/sale_layout_category_hide_detail/tests/test_sale_layout_category_hide_detail.py deleted file mode 100644 index fd5cfd1a..00000000 --- a/sale_layout_category_hide_detail/tests/test_sale_layout_category_hide_detail.py +++ /dev/null @@ -1,101 +0,0 @@ -# Copyright 2018 Tecnativa - Ernesto Tejeda -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). - -import odoo.tests.common as common - - -class TestSaleLastPriceInfo(common.TransactionCase): - - def setUp(self): - super(TestSaleLastPriceInfo, self).setUp() - - # partner - partner_1 = self.env.ref('base.res_partner_1') - # Products - product_product_16 = self.env.ref('product.product_product_16') - product_product_24 = self.env.ref('product.product_product_24') - product_order_01 = self.env.ref('product.product_order_01') - # Report Layout Categories - self.sale_layout_cat_1 = self.env.ref('sale.sale_layout_cat_1') - self.sale_layout_cat_2 = self.env.ref('sale.sale_layout_cat_2') - - self.sale_order = self.env['sale.order'].create({ - 'partner_id': partner_1.id, - 'order_line': [ - (0, 0, { - 'name': product_product_16.name, - 'product_id': product_product_16.id, - 'layout_category_id': self.sale_layout_cat_1.id, - 'product_uom_qty': 1, - 'price_unit': 100, - }), - (0, 0, { - 'name': product_product_24.name, - 'product_id': product_product_24.id, - 'layout_category_id': self.sale_layout_cat_1.id, - 'product_uom_qty': 1, - 'price_unit': 200, - }), - (0, 0, { - 'name': product_order_01.name, - 'product_id': product_order_01.id, - 'layout_category_id': self.sale_layout_cat_2.id, - 'product_uom_qty': 1, - 'price_unit': 300, - }), - ], - }) - config = self.env['res.config.settings'].create({}) - config.group_sale_layout = True - config.execute() - - def test_sale_order_order_lines_layouted(self): - self.check_order_lines_layouted(self.sale_order) - - def test_account_invoice_order_lines_layouted(self): - # Confirm sale order - self.sale_order.action_confirm() - - # Create invoice from self.sale_order - context = { - "active_model": 'sale.order', - "active_ids": [self.sale_order.id], - "active_id": self.sale_order.id, - "open_invoices": True, - } - payment = self.env['sale.advance.payment.inv'].create({ - 'advance_payment_method': 'all', - }) - action_invoice = payment.with_context(context).create_invoices() - invoice_id = action_invoice['res_id'] - invoice = self.env['account.invoice'].browse(invoice_id) - - # Check hide_details - self.check_order_lines_layouted(invoice) - - def check_order_lines_layouted(self, obj): - report_pages = obj.order_lines_layouted() - - # There are two pages because sale_layout_cat_1.pagebreak == True - # In the first page is sale_layout_cat_1 - self.assertEqual(report_pages[0][0]['name'], - self.sale_layout_cat_1.name) - # In the second page is sale_layout_cat_2 - self.assertEqual(report_pages[1][0]['name'], - self.sale_layout_cat_2.name) - - # After set self.sale_layout_cat_1.hide_details = True the returned - # list of order_lines_layouted method will be different, - # sale_layout_cat_1 dict will have the followings changes: - # - Set 'hide_details' on True - # - Set 'lines' empty - # The other layout dict (sale_layout_cat_2 dict) wont be affected - self.sale_layout_cat_1.hide_details = True - report_pages_hide_details = obj.order_lines_layouted() - - report_pages[0][0].update( - hide_details=True, - lines=list(), - ) - self.assertEqual(report_pages[0][0], report_pages_hide_details[0][0]) - self.assertEqual(report_pages[1][0], report_pages_hide_details[1][0]) diff --git a/sale_layout_category_hide_detail/views/account_invoice_view.xml b/sale_layout_category_hide_detail/views/account_invoice_view.xml new file mode 100644 index 00000000..840de0b5 --- /dev/null +++ b/sale_layout_category_hide_detail/views/account_invoice_view.xml @@ -0,0 +1,82 @@ + + + + + + + account.invoice.line.hide.detail.form + account.invoice.line + + + + + + + + + + + + + account.invoice.hide.detail.form + account.invoice + + + + + + + + + + + + + col-#{record.display_type.raw_value === 'line_section' ? '8' : 12} + + + +
+ + + + +
+
+
+
+
+
+
diff --git a/sale_layout_category_hide_detail/views/account_portal_templates.xml b/sale_layout_category_hide_detail/views/account_portal_templates.xml deleted file mode 100644 index 2ea93ced..00000000 --- a/sale_layout_category_hide_detail/views/account_portal_templates.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - diff --git a/sale_layout_category_hide_detail/views/assets.xml b/sale_layout_category_hide_detail/views/assets.xml new file mode 100644 index 00000000..379725e0 --- /dev/null +++ b/sale_layout_category_hide_detail/views/assets.xml @@ -0,0 +1,12 @@ + + + + + diff --git a/sale_layout_category_hide_detail/views/invoice_report_templates.xml b/sale_layout_category_hide_detail/views/invoice_report_templates.xml index c9fb18a7..cc69a8f9 100644 --- a/sale_layout_category_hide_detail/views/invoice_report_templates.xml +++ b/sale_layout_category_hide_detail/views/invoice_report_templates.xml @@ -1,21 +1,34 @@ - -