From 0249bac45fdff2396b55ba897d3fe5528f3e409e Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Thu, 22 Jun 2023 18:14:11 +0200 Subject: [PATCH 01/17] [REF] split product_pricelist_direct_print into product_pricelist_direct_print and product_pricelist_direct_print_xlsx --- .../README.rst | 0 .../__init__.py | 2 + .../__manifest__.py | 18 +++ .../product_pricelist_direct_print_xlsx.pot | 135 ++++++++++++++++++ .../readme/CONTRIBUTORS.rst | 11 ++ .../readme/DESCRIPTION.rst | 2 + .../report/__init__.py | 1 + .../report/product_pricelist_xlsx.py | 133 +++++++++++++++++ .../report/product_pricelist_xlsx.xml | 10 ++ .../security/ir.model.access.csv | 2 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../tests/__init__.py | 1 + ...est_product_pricelist_direct_print_xlsx.py | 46 ++++++ .../wizards/__init__.py | 1 + .../wizards/product_pricelist_print.py | 20 +++ .../wizards/product_pricelist_print_view.xml | 35 +++++ 16 files changed, 417 insertions(+) create mode 100644 product_pricelist_direct_print_xlsx/README.rst create mode 100644 product_pricelist_direct_print_xlsx/__init__.py create mode 100644 product_pricelist_direct_print_xlsx/__manifest__.py create mode 100644 product_pricelist_direct_print_xlsx/i18n/product_pricelist_direct_print_xlsx.pot create mode 100644 product_pricelist_direct_print_xlsx/readme/CONTRIBUTORS.rst create mode 100644 product_pricelist_direct_print_xlsx/readme/DESCRIPTION.rst create mode 100644 product_pricelist_direct_print_xlsx/report/__init__.py create mode 100644 product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py create mode 100644 product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.xml create mode 100644 product_pricelist_direct_print_xlsx/security/ir.model.access.csv create mode 100644 product_pricelist_direct_print_xlsx/static/description/icon.png create mode 100644 product_pricelist_direct_print_xlsx/tests/__init__.py create mode 100644 product_pricelist_direct_print_xlsx/tests/test_product_pricelist_direct_print_xlsx.py create mode 100644 product_pricelist_direct_print_xlsx/wizards/__init__.py create mode 100644 product_pricelist_direct_print_xlsx/wizards/product_pricelist_print.py create mode 100644 product_pricelist_direct_print_xlsx/wizards/product_pricelist_print_view.xml diff --git a/product_pricelist_direct_print_xlsx/README.rst b/product_pricelist_direct_print_xlsx/README.rst new file mode 100644 index 00000000000..e69de29bb2d diff --git a/product_pricelist_direct_print_xlsx/__init__.py b/product_pricelist_direct_print_xlsx/__init__.py new file mode 100644 index 00000000000..5f9d18631d8 --- /dev/null +++ b/product_pricelist_direct_print_xlsx/__init__.py @@ -0,0 +1,2 @@ +from . import report +from . import wizards diff --git a/product_pricelist_direct_print_xlsx/__manifest__.py b/product_pricelist_direct_print_xlsx/__manifest__.py new file mode 100644 index 00000000000..6029c4b845a --- /dev/null +++ b/product_pricelist_direct_print_xlsx/__manifest__.py @@ -0,0 +1,18 @@ +# Copyright 2017 Tecnativa - Carlos Dauden +# Copyright 2020 Tecnativa - João Marques +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +{ + "name": "Product Pricelist Direct Print (XLSX)", + "summary": "Print price list in XLSX format", + "version": "16.0.1.0.0", + "category": "Product", + "website": "https://github.com/OCA/product-attribute", + "author": "Tecnativa, " "Odoo Community Association (OCA)", + "license": "AGPL-3", + "depends": ["product_pricelist_direct_print", "report_xlsx"], + "data": [ + "security/ir.model.access.csv", + "report/product_pricelist_xlsx.xml", + "wizards/product_pricelist_print_view.xml", + ], +} diff --git a/product_pricelist_direct_print_xlsx/i18n/product_pricelist_direct_print_xlsx.pot b/product_pricelist_direct_print_xlsx/i18n/product_pricelist_direct_print_xlsx.pot new file mode 100644 index 00000000000..a6b90721ef1 --- /dev/null +++ b/product_pricelist_direct_print_xlsx/i18n/product_pricelist_direct_print_xlsx.pot @@ -0,0 +1,135 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_pricelist_direct_print_xlsx +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-06-22 16:35+0000\n" +"PO-Revision-Date: 2023-06-22 16:35+0000\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: product_pricelist_direct_print_xlsx +#: model:ir.model,name:product_pricelist_direct_print_xlsx.model_report_product_pricelist_direct_print_xlsx_report +msgid "Abstract model to export as xlsx the product pricelist" +msgstr "" + +#. module: product_pricelist_direct_print_xlsx +#: model:ir.model.fields,field_description:product_pricelist_direct_print_xlsx.field_product_pricelist_print__breakage_per_category +msgid "Breakage Per Category" +msgstr "" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "Cost Price" +msgstr "" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "Currency:" +msgstr "" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "Date:" +msgstr "" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "Description" +msgstr "" + +#. module: product_pricelist_direct_print_xlsx +#: model_terms:ir.ui.view,arch_db:product_pricelist_direct_print_xlsx.view_product_pricelist_print +msgid "Export" +msgstr "" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "Internal Category" +msgstr "" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "List Price" +msgstr "" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "PRODUCTS" +msgstr "" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "Price List Name:" +msgstr "" + +#. module: product_pricelist_direct_print_xlsx +#: model:ir.model,name:product_pricelist_direct_print_xlsx.model_product_pricelist_print +msgid "Product Pricelist Print" +msgstr "" + +#. module: product_pricelist_direct_print_xlsx +#: model:ir.actions.report,name:product_pricelist_direct_print_xlsx.report +msgid "Product Pricelist XLSX" +msgstr "" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "Sale Price" +msgstr "" + +#. module: product_pricelist_direct_print_xlsx +#: model:ir.model.fields,field_description:product_pricelist_direct_print_xlsx.field_product_pricelist_print__show_internal_category +msgid "Show internal categories" +msgstr "" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "Special Pricelist" +msgstr "" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "Summary:" +msgstr "" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "UoM" +msgstr "" + +#. module: product_pricelist_direct_print_xlsx +#: model_terms:ir.ui.view,arch_db:product_pricelist_direct_print_xlsx.view_product_pricelist_print +msgid "XLSX Export Options" +msgstr "" \ No newline at end of file diff --git a/product_pricelist_direct_print_xlsx/readme/CONTRIBUTORS.rst b/product_pricelist_direct_print_xlsx/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000000..72d7aaaf6f2 --- /dev/null +++ b/product_pricelist_direct_print_xlsx/readme/CONTRIBUTORS.rst @@ -0,0 +1,11 @@ +* `Tecnativa `_: + + * Carlos Dauden + * David Vidal + * Sergio Teruel + * João Marques + * Carlos Roca + +* `CorporateHub `__ + + * Alexey Pelykh diff --git a/product_pricelist_direct_print_xlsx/readme/DESCRIPTION.rst b/product_pricelist_direct_print_xlsx/readme/DESCRIPTION.rst new file mode 100644 index 00000000000..47e4680b712 --- /dev/null +++ b/product_pricelist_direct_print_xlsx/readme/DESCRIPTION.rst @@ -0,0 +1,2 @@ +This module is based on the OCA module ``product_pricelist_direct_print`` +and add the possibility to export price list in XLSX format. diff --git a/product_pricelist_direct_print_xlsx/report/__init__.py b/product_pricelist_direct_print_xlsx/report/__init__.py new file mode 100644 index 00000000000..2b1303f7247 --- /dev/null +++ b/product_pricelist_direct_print_xlsx/report/__init__.py @@ -0,0 +1 @@ +from . import product_pricelist_xlsx diff --git a/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py b/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py new file mode 100644 index 00000000000..3a50ede3ce7 --- /dev/null +++ b/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py @@ -0,0 +1,133 @@ +# Copyright 2021 Tecnativa - Carlos Roca +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from odoo import _, models + + +class ProductPricelistXlsx(models.AbstractModel): + _name = "report.product_pricelist_direct_print_xlsx.report" + _inherit = "report.report_xlsx.abstract" + _description = "Abstract model to export as xlsx the product pricelist" + + def _get_lang(self, user_id, lang_code=False): + if not lang_code: + lang_code = self.env["res.users"].browse(user_id).lang + return self.env["res.lang"]._lang_get(lang_code) + + def _create_product_pricelist_sheet(self, workbook, book, pricelist): + title_format = workbook.add_format( + {"bold": 1, "border": 1, "align": "left", "valign": "vjustify"} + ) + header_format = workbook.add_format( + { + "bold": 1, + "border": 1, + "align": "center", + "valign": "vjustify", + "fg_color": "#F2F2F2", + } + ) + lang = self._get_lang(book.create_uid.id, lang_code=book.lang) + date_format = lang.date_format.replace("%d", "dd") + date_format = date_format.replace("%m", "mm") + date_format = date_format.replace("%Y", "YYYY") + date_format = date_format.replace("/", "-") + date_format = workbook.add_format({"num_format": date_format}) + sheet = workbook.add_worksheet(_("PRODUCTS")) + sheet.set_column("A:A", 45) + sheet.set_column("B:H", 15) + # Title construction + sheet.write("A1", _("Price List Name:"), title_format) + if book.show_pricelist_name: + sheet.write("A2", pricelist.name) + else: + sheet.write("A2", _("Special Pricelist")) + sheet.write("B1", _("Currency:"), title_format) + sheet.write("B2", pricelist.currency_id.name) + sheet.write("D1", _("Date:"), title_format) + sheet.write("D2", book.date, date_format) + # Header construction + if book.partner_id: + sheet.write(4, 0, book.partner_id.name, header_format) + elif book.partner_ids: + sheet.write(4, 0, book.partner_ids[0].name, header_format) + next_col = 0 + sheet.write(5, next_col, _("Description"), header_format) + next_col = self._add_extra_header(sheet, book, next_col, header_format) + if book.show_internal_category: + next_col += 1 + sheet.write(5, next_col, _("Internal Category"), header_format) + if book.show_standard_price: + next_col += 1 + sheet.write(5, next_col, _("Cost Price"), header_format) + if book.show_sale_price: + next_col += 1 + sheet.write(5, next_col, _("Sale Price"), header_format) + next_col += 1 + sheet.write(5, next_col, _("List Price"), header_format) + if book.show_product_uom: + next_col += 1 + sheet.write(5, next_col, _("UoM"), header_format) + return sheet + + def _add_extra_header(self, sheet, book, next_col, header_format): + return next_col + + def _fill_data(self, workbook, sheet, book, pricelist): + bold_format = workbook.add_format({"bold": 1}) + decimal_format = workbook.add_format({"num_format": "0.00"}) + decimal_bold_format = workbook.add_format({"num_format": "0.00", "bold": 1}) + row = 6 + formats = { + "bold_format": bold_format, + "decimal_format": decimal_format, + "decimal_bold_format": decimal_bold_format, + } + for group in book.get_groups_to_print(): + if book.breakage_per_category: + sheet.write(row, 0, group["group_name"], bold_format) + row += 1 + for product in group["products"]: + next_col = 0 + sheet.write(row, next_col, product.display_name) + next_col = self._add_extra_info( + sheet, book, product, row, next_col, **formats + ) + if book.show_internal_category: + next_col += 1 + sheet.write(row, next_col, product.categ_id.display_name) + if book.show_standard_price: + next_col += 1 + sheet.write(row, next_col, product.standard_price, decimal_format) + if book.show_sale_price: + next_col += 1 + sheet.write(row, next_col, product.list_price, decimal_format) + next_col += 1 + sheet.write( + row, + next_col, + book.with_context(product=product).product_price, + decimal_bold_format, + ) + if book.show_product_uom: + next_col += 1 + sheet.write(row, next_col, product.uom_id.name, bold_format) + row += 1 + if book.summary: + sheet.write(row, 0, _("Summary:"), bold_format) + sheet.write(row + 1, 0, book.summary) + return sheet + + def _add_extra_info(self, sheet, book, product, row, next_col, **kw): + return next_col + + def generate_xlsx_report(self, workbook, data, objects): + book = objects[0].with_context( + lang=objects[0].lang + or self.env["res.users"].browse(objects[0].create_uid.id).lang + ) + self = self.with_context( + lang=book.lang or self.env["res.users"].browse(book.create_uid.id).lang + ) + pricelist = book.get_pricelist_to_print() + sheet = self._create_product_pricelist_sheet(workbook, book, pricelist) + sheet = self._fill_data(workbook, sheet, book, pricelist) diff --git a/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.xml b/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.xml new file mode 100644 index 00000000000..e2c7949709f --- /dev/null +++ b/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.xml @@ -0,0 +1,10 @@ + + + + product.pricelist.print + Product Pricelist XLSX + xlsx + product_pricelist_direct_print_xlsx.report + product_pricelist_direct_print_xlsx.report + + diff --git a/product_pricelist_direct_print_xlsx/security/ir.model.access.csv b/product_pricelist_direct_print_xlsx/security/ir.model.access.csv new file mode 100644 index 00000000000..c500110070c --- /dev/null +++ b/product_pricelist_direct_print_xlsx/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_report_product_pricelist_direct_print_xlsx_report,access_report_product_pricelist_direct_print_xlsx_report,model_report_product_pricelist_direct_print_xlsx_report,base.group_user,1,1,1,1 diff --git a/product_pricelist_direct_print_xlsx/static/description/icon.png b/product_pricelist_direct_print_xlsx/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/product_pricelist_direct_print_xlsx/tests/__init__.py b/product_pricelist_direct_print_xlsx/tests/__init__.py new file mode 100644 index 00000000000..3c3fe724308 --- /dev/null +++ b/product_pricelist_direct_print_xlsx/tests/__init__.py @@ -0,0 +1 @@ +from . import test_product_pricelist_direct_print_xlsx diff --git a/product_pricelist_direct_print_xlsx/tests/test_product_pricelist_direct_print_xlsx.py b/product_pricelist_direct_print_xlsx/tests/test_product_pricelist_direct_print_xlsx.py new file mode 100644 index 00000000000..ce6e5c6ef7b --- /dev/null +++ b/product_pricelist_direct_print_xlsx/tests/test_product_pricelist_direct_print_xlsx.py @@ -0,0 +1,46 @@ +# Copyright 2017 Carlos Dauden +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from odoo.tests.common import TransactionCase, tagged + + +@tagged("post_install", "-at_install") +class TestProductPricelistDirectPrintXLSX(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + + # # Set report layout to void to wizard selection layout crashes the test + # report_layout = cls.env.ref("web.report_layout_standard") + # main_company = cls.env.ref("base.main_company") + # main_company.external_report_layout_id = report_layout.view_id.id + + cls.pricelist = cls.env["product.pricelist"].create( + { + "name": "Pricelist for test", + "item_ids": [ + ( + 0, + 0, + { + "applied_on": "3_global", + "percent_price": 5.00, + "compute_price": "percentage", + }, + ) + ], + } + ) + + cls.wiz_obj = cls.env["product.pricelist.print"] + + def test_report(self): + wiz = self.wiz_obj.with_context( + active_model="product.pricelist", + active_id=self.pricelist.id, + ).create({}) + report_xlsx = self.env["ir.actions.report"]._render( + "product_pricelist_direct_print_xlsx.report", wiz.ids + ) + self.assertGreaterEqual(len(report_xlsx[0]), 1) + self.assertEqual(report_xlsx[1], "xlsx") diff --git a/product_pricelist_direct_print_xlsx/wizards/__init__.py b/product_pricelist_direct_print_xlsx/wizards/__init__.py new file mode 100644 index 00000000000..dfc9a481f01 --- /dev/null +++ b/product_pricelist_direct_print_xlsx/wizards/__init__.py @@ -0,0 +1 @@ +from . import product_pricelist_print diff --git a/product_pricelist_direct_print_xlsx/wizards/product_pricelist_print.py b/product_pricelist_direct_print_xlsx/wizards/product_pricelist_print.py new file mode 100644 index 00000000000..a247bddf605 --- /dev/null +++ b/product_pricelist_direct_print_xlsx/wizards/product_pricelist_print.py @@ -0,0 +1,20 @@ +# Copyright 2017 Tecnativa - Carlos Dauden +# Copyright 2018 Tecnativa - David Vidal +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + + +from odoo import fields, models + + +class ProductPricelistPrint(models.TransientModel): + _inherit = "product.pricelist.print" + + breakage_per_category = fields.Boolean(default=True) + + show_internal_category = fields.Boolean(string="Show internal categories") + + def export_xlsx(self): + self.ensure_one() + return self.env.ref("product_pricelist_direct_print_xlsx.report").report_action( + self + ) diff --git a/product_pricelist_direct_print_xlsx/wizards/product_pricelist_print_view.xml b/product_pricelist_direct_print_xlsx/wizards/product_pricelist_print_view.xml new file mode 100644 index 00000000000..d47d3b5450a --- /dev/null +++ b/product_pricelist_direct_print_xlsx/wizards/product_pricelist_print_view.xml @@ -0,0 +1,35 @@ + + + + + + product.pricelist.print + + + + + + + + + + + + + + + From dcf5c0b63a16fefd47f5f6c079f8bb9ed36b9a11 Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Thu, 22 Jun 2023 18:48:36 +0200 Subject: [PATCH 02/17] [REF] Add GRAP to credits ; Add legalsylvain as maintainers of product_pricelist_direct_print --- .../README.rst | 89 ++++ .../__manifest__.py | 2 +- .../product_pricelist_direct_print_xlsx.pot | 6 +- .../readme/CONTRIBUTORS.rst | 6 +- .../static/description/index.html | 436 ++++++++++++++++++ 5 files changed, 533 insertions(+), 6 deletions(-) create mode 100644 product_pricelist_direct_print_xlsx/static/description/index.html diff --git a/product_pricelist_direct_print_xlsx/README.rst b/product_pricelist_direct_print_xlsx/README.rst index e69de29bb2d..ed47806c21c 100644 --- a/product_pricelist_direct_print_xlsx/README.rst +++ b/product_pricelist_direct_print_xlsx/README.rst @@ -0,0 +1,89 @@ +===================================== +Product Pricelist Direct Print (XLSX) +===================================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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%2Fproduct--attribute-lightgray.png?logo=github + :target: https://github.com/OCA/product-attribute/tree/16.0/product_pricelist_direct_print_xlsx + :alt: OCA/product-attribute +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/product-attribute-16-0/product-attribute-16-0-product_pricelist_direct_print_xlsx + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/135/16.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module is based on the OCA module ``product_pricelist_direct_print`` +and add the possibility to export price list in XLSX format. + +**Table of contents** + +.. contents:: + :local: + +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 +* GRAP + +Contributors +~~~~~~~~~~~~ + +* `Tecnativa `_: + + * Carlos Dauden + * David Vidal + * Sergio Teruel + * João Marques + * Carlos Roca + +* `CorporateHub `_: + + * Alexey Pelykh + +* `GRAP `_: + + * Sylvain LE GAL + +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/product-attribute `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/product_pricelist_direct_print_xlsx/__manifest__.py b/product_pricelist_direct_print_xlsx/__manifest__.py index 6029c4b845a..c66c4bf0387 100644 --- a/product_pricelist_direct_print_xlsx/__manifest__.py +++ b/product_pricelist_direct_print_xlsx/__manifest__.py @@ -7,7 +7,7 @@ "version": "16.0.1.0.0", "category": "Product", "website": "https://github.com/OCA/product-attribute", - "author": "Tecnativa, " "Odoo Community Association (OCA)", + "author": "Tecnativa, GRAP, Odoo Community Association (OCA)", "license": "AGPL-3", "depends": ["product_pricelist_direct_print", "report_xlsx"], "data": [ diff --git a/product_pricelist_direct_print_xlsx/i18n/product_pricelist_direct_print_xlsx.pot b/product_pricelist_direct_print_xlsx/i18n/product_pricelist_direct_print_xlsx.pot index a6b90721ef1..c982b3b65e7 100644 --- a/product_pricelist_direct_print_xlsx/i18n/product_pricelist_direct_print_xlsx.pot +++ b/product_pricelist_direct_print_xlsx/i18n/product_pricelist_direct_print_xlsx.pot @@ -1,13 +1,11 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * product_pricelist_direct_print_xlsx +# * product_pricelist_direct_print_xlsx # msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-22 16:35+0000\n" -"PO-Revision-Date: 2023-06-22 16:35+0000\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -132,4 +130,4 @@ msgstr "" #. module: product_pricelist_direct_print_xlsx #: model_terms:ir.ui.view,arch_db:product_pricelist_direct_print_xlsx.view_product_pricelist_print msgid "XLSX Export Options" -msgstr "" \ No newline at end of file +msgstr "" diff --git a/product_pricelist_direct_print_xlsx/readme/CONTRIBUTORS.rst b/product_pricelist_direct_print_xlsx/readme/CONTRIBUTORS.rst index 72d7aaaf6f2..1c39a8b17c6 100644 --- a/product_pricelist_direct_print_xlsx/readme/CONTRIBUTORS.rst +++ b/product_pricelist_direct_print_xlsx/readme/CONTRIBUTORS.rst @@ -6,6 +6,10 @@ * João Marques * Carlos Roca -* `CorporateHub `__ +* `CorporateHub `_: * Alexey Pelykh + +* `GRAP `_: + + * Sylvain LE GAL diff --git a/product_pricelist_direct_print_xlsx/static/description/index.html b/product_pricelist_direct_print_xlsx/static/description/index.html new file mode 100644 index 00000000000..fc1d93a6efa --- /dev/null +++ b/product_pricelist_direct_print_xlsx/static/description/index.html @@ -0,0 +1,436 @@ + + + + + + +Product Pricelist Direct Print (XLSX) + + + +
+

Product Pricelist Direct Print (XLSX)

+ + +

Beta License: AGPL-3 OCA/product-attribute Translate me on Weblate Try me on Runbot

+

This module is based on the OCA module product_pricelist_direct_print +and add the possibility to export price list in XLSX format.

+

Table of contents

+ +
+

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
  • +
  • GRAP
  • +
+
+
+

Contributors

+ +
+
+

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/product-attribute project on GitHub.

+

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

+
+
+
+ + From 1666af52d3bd4f3810ef2781017bf4aa314521af Mon Sep 17 00:00:00 2001 From: Ivorra78 Date: Wed, 23 Aug 2023 09:32:28 +0000 Subject: [PATCH 03/17] Added translation using Weblate (Spanish) --- .../i18n/es.po | 137 ++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 product_pricelist_direct_print_xlsx/i18n/es.po diff --git a/product_pricelist_direct_print_xlsx/i18n/es.po b/product_pricelist_direct_print_xlsx/i18n/es.po new file mode 100644 index 00000000000..e59b29bf9d4 --- /dev/null +++ b/product_pricelist_direct_print_xlsx/i18n/es.po @@ -0,0 +1,137 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_pricelist_direct_print_xlsx +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-08-29 08:31+0000\n" +"Last-Translator: Ivorra78 \n" +"Language-Team: none\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 4.17\n" + +#. module: product_pricelist_direct_print_xlsx +#: model:ir.model,name:product_pricelist_direct_print_xlsx.model_report_product_pricelist_direct_print_xlsx_report +msgid "Abstract model to export as xlsx the product pricelist" +msgstr "" +"Modelo abstracto para exportar como xlsx la lista de precios de los productos" + +#. module: product_pricelist_direct_print_xlsx +#: model:ir.model.fields,field_description:product_pricelist_direct_print_xlsx.field_product_pricelist_print__breakage_per_category +msgid "Breakage Per Category" +msgstr "Ruptura por categoría" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "Cost Price" +msgstr "Precio de coste" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "Currency:" +msgstr "Divisa:" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "Date:" +msgstr "Fecha:" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "Description" +msgstr "Descripción" + +#. module: product_pricelist_direct_print_xlsx +#: model_terms:ir.ui.view,arch_db:product_pricelist_direct_print_xlsx.view_product_pricelist_print +msgid "Export" +msgstr "Exportación" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "Internal Category" +msgstr "Categoría interna" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "List Price" +msgstr "Lista de Precios" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "PRODUCTS" +msgstr "PRODUCTOS" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "Price List Name:" +msgstr "Nombre de la lista de precios:" + +#. module: product_pricelist_direct_print_xlsx +#: model:ir.model,name:product_pricelist_direct_print_xlsx.model_product_pricelist_print +msgid "Product Pricelist Print" +msgstr "Imprimir lista de precios de productos" + +#. module: product_pricelist_direct_print_xlsx +#: model:ir.actions.report,name:product_pricelist_direct_print_xlsx.report +msgid "Product Pricelist XLSX" +msgstr "Lista de precios XLSX de productos" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "Sale Price" +msgstr "Precio de Venta" + +#. module: product_pricelist_direct_print_xlsx +#: model:ir.model.fields,field_description:product_pricelist_direct_print_xlsx.field_product_pricelist_print__show_internal_category +msgid "Show internal categories" +msgstr "Mostrar categorías internas" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "Special Pricelist" +msgstr "Lista de precios especial" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "Summary:" +msgstr "Resumen:" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "UoM" +msgstr "UdM (Unidad De Medida)" + +#. module: product_pricelist_direct_print_xlsx +#: model_terms:ir.ui.view,arch_db:product_pricelist_direct_print_xlsx.view_product_pricelist_print +msgid "XLSX Export Options" +msgstr "Opciones de exportación XLSX" From e92f0cda6430be807023e271a71fee71425a4fa6 Mon Sep 17 00:00:00 2001 From: Davide Corio Date: Wed, 30 Aug 2023 07:17:19 +0000 Subject: [PATCH 04/17] Added translation using Weblate (Italian) --- .../README.rst | 15 +- .../i18n/it.po | 137 ++++++++++++++++++ .../static/description/index.html | 34 +++-- 3 files changed, 164 insertions(+), 22 deletions(-) create mode 100644 product_pricelist_direct_print_xlsx/i18n/it.po diff --git a/product_pricelist_direct_print_xlsx/README.rst b/product_pricelist_direct_print_xlsx/README.rst index ed47806c21c..4ede54d0f5f 100644 --- a/product_pricelist_direct_print_xlsx/README.rst +++ b/product_pricelist_direct_print_xlsx/README.rst @@ -2,10 +2,13 @@ Product Pricelist Direct Print (XLSX) ===================================== -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:982bc768aeb2b6470303c6e4f130766a62c778d3de0c4738754f119fa3cdaf40 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -19,11 +22,11 @@ Product Pricelist Direct Print (XLSX) .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png :target: https://translation.odoo-community.org/projects/product-attribute-16-0/product-attribute-16-0-product_pricelist_direct_print_xlsx :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/135/16.0 - :alt: Try me on Runbot +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/product-attribute&target_branch=16.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| This module is based on the OCA module ``product_pricelist_direct_print`` and add the possibility to export price list in XLSX format. @@ -38,7 +41,7 @@ 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 +If you spotted it first, help us to smash it by providing a detailed and welcomed `feedback `_. Do not contact contributors directly about support or help with technical issues. diff --git a/product_pricelist_direct_print_xlsx/i18n/it.po b/product_pricelist_direct_print_xlsx/i18n/it.po new file mode 100644 index 00000000000..9ccc3f1382e --- /dev/null +++ b/product_pricelist_direct_print_xlsx/i18n/it.po @@ -0,0 +1,137 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_pricelist_direct_print_xlsx +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-08-30 07:22+0000\n" +"Last-Translator: Davide Corio \n" +"Language-Team: none\n" +"Language: it\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 4.17\n" + +#. module: product_pricelist_direct_print_xlsx +#: model:ir.model,name:product_pricelist_direct_print_xlsx.model_report_product_pricelist_direct_print_xlsx_report +#, fuzzy +msgid "Abstract model to export as xlsx the product pricelist" +msgstr "Modello usato come esportare il listino prodotti come xlsx" + +#. module: product_pricelist_direct_print_xlsx +#: model:ir.model.fields,field_description:product_pricelist_direct_print_xlsx.field_product_pricelist_print__breakage_per_category +msgid "Breakage Per Category" +msgstr "Suddivisione per categoria" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "Cost Price" +msgstr "Costo" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "Currency:" +msgstr "Valuta:" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "Date:" +msgstr "Data:" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "Description" +msgstr "Descrizione" + +#. module: product_pricelist_direct_print_xlsx +#: model_terms:ir.ui.view,arch_db:product_pricelist_direct_print_xlsx.view_product_pricelist_print +msgid "Export" +msgstr "Esporta" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "Internal Category" +msgstr "Categoria interna" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "List Price" +msgstr "Prezzo di listino" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "PRODUCTS" +msgstr "PRODOTTI" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "Price List Name:" +msgstr "Nome listino:" + +#. module: product_pricelist_direct_print_xlsx +#: model:ir.model,name:product_pricelist_direct_print_xlsx.model_product_pricelist_print +msgid "Product Pricelist Print" +msgstr "Stampa listino" + +#. module: product_pricelist_direct_print_xlsx +#: model:ir.actions.report,name:product_pricelist_direct_print_xlsx.report +msgid "Product Pricelist XLSX" +msgstr "Listino prodotti XLSX" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "Sale Price" +msgstr "Prezzo di vendita" + +#. module: product_pricelist_direct_print_xlsx +#: model:ir.model.fields,field_description:product_pricelist_direct_print_xlsx.field_product_pricelist_print__show_internal_category +msgid "Show internal categories" +msgstr "Mostra categorie interne" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "Special Pricelist" +msgstr "Listino speciale" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "Summary:" +msgstr "Riepilogo:" + +#. module: product_pricelist_direct_print_xlsx +#. odoo-python +#: code:addons/product_pricelist_direct_print_xlsx/report/product_pricelist_xlsx.py:0 +#, python-format +msgid "UoM" +msgstr "U.M." + +#. module: product_pricelist_direct_print_xlsx +#: model_terms:ir.ui.view,arch_db:product_pricelist_direct_print_xlsx.view_product_pricelist_print +msgid "XLSX Export Options" +msgstr "Opzioni esportazione XLSX" diff --git a/product_pricelist_direct_print_xlsx/static/description/index.html b/product_pricelist_direct_print_xlsx/static/description/index.html index fc1d93a6efa..a02dcb81152 100644 --- a/product_pricelist_direct_print_xlsx/static/description/index.html +++ b/product_pricelist_direct_print_xlsx/static/description/index.html @@ -1,20 +1,20 @@ - + - + Product Pricelist Direct Print (XLSX) -
-

Product Pricelist Direct Print (XLSX)

+
+ + +Odoo Community Association + +
+

Product Pricelist Direct Print (XLSX)

-

Beta License: AGPL-3 OCA/product-attribute Translate me on Weblate Try me on Runboat

+

Beta License: AGPL-3 OCA/product-attribute Translate me on Weblate Try me on Runboat

This module is based on the OCA module product_pricelist_direct_print and add the possibility to export price list in XLSX format.

@@ -386,7 +391,7 @@

Product Pricelist Direct Print (XLSX)

-

Bug Tracker

+

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 to smash it by providing a detailed and welcomed @@ -394,16 +399,16 @@

Bug Tracker

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

-

Credits

+

Credits

-

Authors

+

Authors

  • Tecnativa
  • GRAP
-

Contributors

+

Contributors

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association @@ -438,5 +443,6 @@

Maintainers

+
From 9a1c2fdaef8576199938e375fdbd3becaa68d726 Mon Sep 17 00:00:00 2001 From: farhatzaf Date: Tue, 24 Mar 2026 15:12:05 -0400 Subject: [PATCH 16/17] [IMP] product_pricelist_direct_print_xlsx: pre-commit auto fixes --- product_pricelist_direct_print_xlsx/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/product_pricelist_direct_print_xlsx/__manifest__.py b/product_pricelist_direct_print_xlsx/__manifest__.py index 8516414d214..dc35fd72142 100644 --- a/product_pricelist_direct_print_xlsx/__manifest__.py +++ b/product_pricelist_direct_print_xlsx/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Product Pricelist Direct Print (XLSX)", "summary": "Print price list in XLSX format", - "version": "18.0.1.0.0", + "version": "19.0.1.0.0", "category": "Product", "website": "https://github.com/OCA/product-attribute", "author": "Tecnativa, GRAP, Odoo Community Association (OCA)", From 3e69749fe7d52f15ef61ee8679fe13105de38978 Mon Sep 17 00:00:00 2001 From: farhatzaf Date: Tue, 24 Mar 2026 15:17:22 -0400 Subject: [PATCH 17/17] [MIG] product_pricelist_direct_print_xlsx: Migration to 19.0