Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
83eac3c
[ADD] website_sale_product_pack: New module
chienandalu Jun 18, 2021
08e08a9
[FIX] stock_product_pack: get already computed values if existing
chienandalu Jun 28, 2021
262887a
[UPD] Update website_sale_product_pack.pot
oca-travis Nov 2, 2021
3cac428
[UPD] README.rst
OCA-git-bot Nov 2, 2021
34b03c8
[ADD] icon.png
OCA-git-bot Nov 2, 2021
098295e
[FIX] website_sale_product_pack: Resilient tests
pedrobaeza Jul 5, 2022
ae26ed1
Set portal user pricelist
chienandalu Jul 22, 2022
9b3c1ef
[FIX] website_sale_product_pack: detailed totalized packs
chienandalu Jul 22, 2022
7a9a116
website_sale_product_pack 13.0.1.0.1
OCA-git-bot Jul 22, 2022
cd3c528
website_sale_product_pack 13.0.1.0.2
OCA-git-bot Nov 20, 2022
3f0af2c
[IMP] website_sale_product_pack: Published and unpublished for produc…
OCA-git-bot Jul 22, 2022
d68583c
[UPD] Update website_sale_product_pack.pot
Jan 14, 2023
c2dd0c9
[UPD] README.rst
OCA-git-bot Jan 14, 2023
ae62128
[16.0][MIG] website_sale_product_pack: Migration to 16.0
alvaro-domatix Jul 4, 2023
866b0eb
[FIX] website_sale_product_pack: Fixed KeyError: 'product_id' error d…
lef-adhoc Mar 20, 2024
3db858f
[UPD] Update website_sale_product_pack.pot
Apr 10, 2024
547ea45
[BOT] post-merge updates
OCA-git-bot Apr 10, 2024
ff9ee0e
Added translation using Weblate (Italian)
mymage Apr 15, 2024
b6eb099
Translated using Weblate (Italian)
mymage Apr 19, 2024
937d2eb
[IMP] website_sale_product_pack: pre-commit execution
augusto-weiss Jun 27, 2024
2577e39
[MIG] website_sale_product_pack: Migration to 17.0
augusto-weiss Jun 27, 2024
3036fd2
[UPD] Update website_sale_product_pack.pot
Oct 8, 2024
cd5ab12
[BOT] post-merge updates
OCA-git-bot Oct 8, 2024
d25419d
Update translation files
weblate Oct 8, 2024
a7aac93
Translated using Weblate (Italian)
mymage Oct 9, 2024
6d23ae6
[FIX] website_product_pack: detailed displayed components price on we…
augusto-weiss Nov 23, 2023
78cfecd
[BOT] post-merge updates
OCA-git-bot Nov 4, 2024
f557f36
[17.0][FIX] website_sale_product_pack: add decorator to remove warnings
Abranes Nov 22, 2024
7c8f8c0
[BOT] post-merge updates
OCA-git-bot Nov 22, 2024
ab7a754
[IMP] website_sale_product_pack: pre-commit execution
ALopez-Adhoc Dec 6, 2024
7d775ea
[MIG] website_sale_product_pack: Migration to 18.0
ALopez-Adhoc Dec 6, 2024
064168d
[IMP] website_sale_product_pack: pre-commit execution
lef-adhoc Oct 27, 2025
37e3dd1
[MIG] website_sale_product_pack: Migration to 19.0
lef-adhoc Oct 27, 2025
006d9ca
[DON'T MERGE] test-requirements.txt
lef-adhoc Oct 31, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions test-requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
odoo-addon-product_pack @ git+https://github.com/OCA/product-pack.git@refs/pull/223/head#subdirectory=product_pack
odoo-addon-sale_product_pack @ git+https://github.com/OCA/product-pack.git@refs/pull/225/head#subdirectory=sale_product_pack
111 changes: 111 additions & 0 deletions website_sale_product_pack/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association

=========================
Website Sale Product Pack
=========================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:b253d0a32950c83c03fbde45ce4e7b7335fc773f15534306c65a0ec5344121b8
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |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/license-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--pack-lightgray.png?logo=github
:target: https://github.com/OCA/product-pack/tree/19.0/website_sale_product_pack
:alt: OCA/product-pack
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/product-pack-19-0/product-pack-19-0-website_sale_product_pack
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/product-pack&target_branch=19.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

This module introduces compatibility of product packs with e-commerce:

- In the cart summary, the components aren't editable and are shown
hanging from the main pack reference.
- When we remove a pack from the cart, their components are removed as
well.
- The cart popup summary only shows the main pack line and discards the
sublines in the units count.
- The cart summary shows the component lines hanging from the main one
as well.
- It's ensured the the prices are shown correctly for the whole pack and
that they're correctly summarized depending on the pack type.

**Table of contents**

.. contents::
:local:

Usage
=====

There are several demo packs to test the module. Publish them and add
them to the cart from the frontend. You should have the same quotation
as if you do it in the backend.

Known issues / Roadmap
======================

- Improve pack cart display.
- When we have subpacks (a pack inside a pack) we should improve
visually how it's shown in the cart.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/product-pack/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
`feedback <https://github.com/OCA/product-pack/issues/new?body=module:%20website_sale_product_pack%0Aversion:%2019.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

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

Credits
=======

Authors
-------

* Tecnativa

Contributors
------------

- `Tecnativa <https://www.tecnativa.com>`__:

- David Vidal

- `ADHOC SA <https://www.adhoc.com.ar>`__:

- Nicolas Mac Rouillon

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-pack <https://github.com/OCA/product-pack/tree/19.0/website_sale_product_pack>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
1 change: 1 addition & 0 deletions website_sale_product_pack/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
19 changes: 19 additions & 0 deletions website_sale_product_pack/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Copyright 2021 Tecnativa - David Vidal
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "Website Sale Product Pack",
"category": "E-Commerce",
"summary": "Compatibility module of product pack with e-commerce",
"version": "19.0.1.0.0",
"license": "AGPL-3",
"depends": ["website_sale", "sale_product_pack"],
"data": ["views/templates.xml"],
"assets": {
"web.assets_tests": [
"website_sale_product_pack/static/tests/tours/website_sale_product_pack_tour.esm.js",
],
},
"author": "Tecnativa, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/product-pack",
"installable": True,
}
89 changes: 89 additions & 0 deletions website_sale_product_pack/i18n/it.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * website_sale_product_pack
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-10-09 09:06+0000\n"
"Last-Translator: mymage <stefano.consolaro@mymage.it>\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 5.6.2\n"

#. module: website_sale_product_pack
#: model_terms:ir.ui.view,arch_db:website_sale_product_pack.cart_lines
#: model_terms:ir.ui.view,arch_db:website_sale_product_pack.checkout_layout
msgid "<span>↳ </span>"
msgstr "<span>↳ </span>"

#. module: website_sale_product_pack
#: model:ir.model,name:website_sale_product_pack.model_product_template
msgid "Product"
msgstr "Prodotto"

#. module: website_sale_product_pack
#: model:ir.model,name:website_sale_product_pack.model_product_product
msgid "Product Variant"
msgstr "Variante prodotto"

#. module: website_sale_product_pack
#: model:ir.model,name:website_sale_product_pack.model_sale_order
msgid "Sales Order"
msgstr "Ordine di vendita"

#. module: website_sale_product_pack
#: model:ir.model,name:website_sale_product_pack.model_sale_order_line
msgid "Sales Order Line"
msgstr "Riga ordine di vendita"

#. module: website_sale_product_pack
#: model:ir.model,name:website_sale_product_pack.model_website
msgid "Website"
msgstr "Sito web"

#. module: website_sale_product_pack
#. odoo-python
#: code:addons/website_sale_product_pack/models/product_product.py:0
#, python-format
msgid ""
"You can't add unpublished products (%(unpublished_products)s)to a published "
"pack (%(pack_name)s)"
msgstr ""
"Non si possono aggiungere prodotti non pubblicati (%(unpublished_products)s) "
"ad un pacco pubblicato (%(pack_name)s)"

#. module: website_sale_product_pack
#. odoo-python
#: code:addons/website_sale_product_pack/models/product_template.py:0
#, python-format
msgid ""
"You can't unpublished product (%(product_name)s) for apublished pack parents "
"(%(pack_parents)s)"
msgstr ""
"Non si può non pubblicare un prodotto (%(product_name)s) per un collo padre "
"pubblicato (%(pack_parents)s)"

#. module: website_sale_product_pack
#. odoo-python
#: code:addons/website_sale_product_pack/models/product_template.py:0
#, python-format
msgid ""
"You can't unpublished products (%(unpublished_products)s) to apublished pack "
"(%(pack_name)s)"
msgstr ""
"Non si può non pubblicare un prodotto (%(unpublished_products)s) di un collo "
"pubblicato (%(pack_name)s)"

#, python-format
#~ msgid ""
#~ "You can't add unpublished products (%(unpublished_products)s) toa "
#~ "published pack (%(pack_name)s)"
#~ msgstr ""
#~ "Non si possono aggiungere prodotti non pubblicati "
#~ "(%(unpublished_products)s) ad un collo pubblicato (%(pack_name)s)"
72 changes: 72 additions & 0 deletions website_sale_product_pack/i18n/website_sale_product_pack.pot
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * website_sale_product_pack
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.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: website_sale_product_pack
#: model_terms:ir.ui.view,arch_db:website_sale_product_pack.cart_lines
#: model_terms:ir.ui.view,arch_db:website_sale_product_pack.checkout_layout
msgid "<span>↳ </span>"
msgstr ""

#. module: website_sale_product_pack
#: model:ir.model,name:website_sale_product_pack.model_product_template
msgid "Product"
msgstr ""

#. module: website_sale_product_pack
#: model:ir.model,name:website_sale_product_pack.model_product_product
msgid "Product Variant"
msgstr ""

#. module: website_sale_product_pack
#: model:ir.model,name:website_sale_product_pack.model_sale_order
msgid "Sales Order"
msgstr ""

#. module: website_sale_product_pack
#: model:ir.model,name:website_sale_product_pack.model_sale_order_line
msgid "Sales Order Line"
msgstr ""

#. module: website_sale_product_pack
#: model:ir.model,name:website_sale_product_pack.model_website
msgid "Website"
msgstr ""

#. module: website_sale_product_pack
#. odoo-python
#: code:addons/website_sale_product_pack/models/product_product.py:0
#, python-format
msgid ""
"You can't add unpublished products (%(unpublished_products)s)to a published "
"pack (%(pack_name)s)"
msgstr ""

#. module: website_sale_product_pack
#. odoo-python
#: code:addons/website_sale_product_pack/models/product_template.py:0
#, python-format
msgid ""
"You can't unpublished product (%(product_name)s) for apublished pack parents"
" (%(pack_parents)s)"
msgstr ""

#. module: website_sale_product_pack
#. odoo-python
#: code:addons/website_sale_product_pack/models/product_template.py:0
#, python-format
msgid ""
"You can't unpublished products (%(unpublished_products)s) to apublished pack"
" (%(pack_name)s)"
msgstr ""
3 changes: 3 additions & 0 deletions website_sale_product_pack/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from . import sale_order
from . import product_product
from . import product_template
26 changes: 26 additions & 0 deletions website_sale_product_pack/models/product_product.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Copyright 2019 Tecnativa - Ernesto Tejeda
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

from odoo import api, models
from odoo.exceptions import ValidationError


class ProductProduct(models.Model):
_inherit = "product.product"

@api.constrains("pack_line_ids")
def check_website_published(self):
for rec in self.filtered("is_published"):
unpublished = rec.pack_line_ids.mapped("product_id").filtered(
lambda x: not x.is_published
)
if unpublished:
raise ValidationError(
self.env._(
"You can't add unpublished products "
"(%(unpublished_products)s) "
"to a published pack (%(pack_name)s)",
unpublished_products=", ".join(unpublished.mapped("name")),
pack_name=rec.name,
)
)
Loading
Loading