Initial commit: OCA Technical packages (595 packages)

This commit is contained in:
Ernad Husremovic 2025-08-29 15:43:03 +02:00
commit 2cc02aac6e
24950 changed files with 2318079 additions and 0 deletions

View file

@ -0,0 +1,46 @@
# Product Pack
Odoo addon: product_pack
## Installation
```bash
pip install odoo-bringout-oca-product-pack-product_pack
```
## Dependencies
This addon depends on:
- product
## Manifest Information
- **Name**: Product Pack
- **Version**: 16.0.1.1.0
- **Category**: Product
- **License**: AGPL-3
- **Installable**: True
## Source
Based on [OCA/product-pack](https://github.com/OCA/product-pack) branch 16.0, addon `product_pack`.
## License
This package maintains the original AGPL-3 license from the upstream Odoo project.
## Documentation
- Overview: doc/OVERVIEW.md
- Architecture: doc/ARCHITECTURE.md
- Models: doc/MODELS.md
- Controllers: doc/CONTROLLERS.md
- Wizards: doc/WIZARDS.md
- Reports: doc/REPORTS.md
- Security: doc/SECURITY.md
- Install: doc/INSTALL.md
- Usage: doc/USAGE.md
- Configuration: doc/CONFIGURATION.md
- Dependencies: doc/DEPENDENCIES.md
- Troubleshooting: doc/TROUBLESHOOTING.md
- FAQ: doc/FAQ.md

View file

@ -0,0 +1,32 @@
# Architecture
```mermaid
flowchart TD
U[Users] -->|HTTP| V[Views and QWeb Templates]
V --> C[Controllers]
V --> W[Wizards Transient Models]
C --> M[Models and ORM]
W --> M
M --> R[Reports]
DX[Data XML] --> M
S[Security ACLs and Groups] -. enforces .-> M
subgraph Product_pack Module - product_pack
direction LR
M:::layer
W:::layer
C:::layer
V:::layer
R:::layer
S:::layer
DX:::layer
end
classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px
```
Notes
- Views include tree/form/kanban templates and report templates.
- Controllers provide website/portal routes when present.
- Wizards are UI flows implemented with `models.TransientModel`.
- Data XML loads data/demo records; Security defines groups and access.

View file

@ -0,0 +1,3 @@
# Configuration
Refer to Odoo settings for product_pack. Configure related models, access rights, and options as needed.

View file

@ -0,0 +1,3 @@
# Controllers
This module does not define custom HTTP controllers.

View file

@ -0,0 +1,5 @@
# Dependencies
This addon depends on:
- [product](../../odoo-bringout-oca-ocb-product)

View file

@ -0,0 +1,4 @@
# FAQ
- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged).
- Q: How to enable? A: Start server with --addon product_pack or install in UI.

View file

@ -0,0 +1,7 @@
# Install
```bash
pip install odoo-bringout-oca-product-pack-product_pack"
# or
uv pip install odoo-bringout-oca-product-pack-product_pack"
```

View file

@ -0,0 +1,14 @@
# Models
Detected core models and extensions in product_pack.
```mermaid
classDiagram
class product_pack_line
class product_product
class product_template
```
Notes
- Classes show model technical names; fields omitted for brevity.
- Items listed under _inherit are extensions of existing models.

View file

@ -0,0 +1,6 @@
# Overview
Packaged Odoo addon: product_pack. Provides features documented in upstream Odoo 16 under this addon.
- Source: OCA/OCB 16.0, addon product_pack
- License: LGPL-3

View file

@ -0,0 +1,3 @@
# Reports
This module does not define custom reports.

View file

@ -0,0 +1,34 @@
# Security
Access control and security definitions in product_pack.
## Access Control Lists (ACLs)
Model access permissions defined in:
- **[ir.model.access.csv](../product_pack/security/ir.model.access.csv)**
- 2 model access rules
## Record Rules
Row-level security rules defined in:
```mermaid
graph TB
subgraph "Security Layers"
A[Users] --> B[Groups]
B --> C[Access Control Lists]
C --> D[Models]
B --> E[Record Rules]
E --> F[Individual Records]
end
```
Security files overview:
- **[ir.model.access.csv](../product_pack/security/ir.model.access.csv)**
- Model access permissions (CRUD rights)
Notes
- Access Control Lists define which groups can access which models
- Record Rules provide row-level security (filter records by user/group)
- Security groups organize users and define permission sets
- All security is enforced at the ORM level by Odoo

View file

@ -0,0 +1,5 @@
# Troubleshooting
- Ensure Python and Odoo environment matches repo guidance.
- Check database connectivity and logs if startup fails.
- Validate that dependent addons listed in DEPENDENCIES.md are installed.

View file

@ -0,0 +1,7 @@
# Usage
Start Odoo including this addon (from repo root):
```bash
python3 scripts/nix_odoo_web_server.py --db-name mydb --addon product_pack
```

View file

@ -0,0 +1,3 @@
# Wizards
This module does not include UI wizards.

View file

@ -0,0 +1,147 @@
============
Product Pack
============
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:d6d79cfb1448cba3c8cc68f89101f6b53245f8a695effd2058ca881dac328748
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |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--pack-lightgray.png?logo=github
:target: https://github.com/OCA/product-pack/tree/16.0/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-16-0/product-pack-16-0-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=16.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
This module allows you to define a product as a *Product Pack*. Each
*Product Pack* has a list of products that are part of this pack.
**Table of contents**
.. contents::
:local:
Usage
=====
To use this module, you need to:
#. Go to *Sales > Products > Products*, create a product and set "Is Pack?".
#. Set *Pack Type* and *Pack component price*.
#. Then choose the products to include in the pack.
`Product pack` is a base module for `sale_product_pack` and other modules that
needs to use packs. `Pack type` and `Pack component price` are used to define
the behavior that the packs will have when it is selected in the sales order
lines (if `sale_product_pack` module is installed).
The options of this field are the followings:
`Pack type`:
* Detailed: It allows you to select an option defined in
`Pack component price` field.
* Non Detailed: Will not show the components information,
only the pack product and the price will be the its price plus the sum of
all the components prices.
`Pack component price`:
* Detailed per component: will show each components and its prices,
including the pack product itself with its price.
* Totalized in main product: will show each component but will not show
components prices. The pack product will be the only one that has price
and this one will be its price plus the sum of all the components prices.
* Ignored: will show each components but will not show
components prices. The pack product will be the only one that has price
and this one will be the price set in the pack product.
Known issues / Roadmap
======================
* It could add another *Pack Type* called maybe *merged* in *Packs*, in which
the calculation of the related sale order line *Unit Price* is equal to
*main product Pack price* + *sum of all its component*
* Make *product.pack.line* multi-company
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:%20product_pack%0Aversion:%2016.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
~~~~~~~
* NaN·tic
* ADHOC SA
* Tecnativa
Contributors
~~~~~~~~~~~~
* `ADHOC SA <https://www.adhoc.com.ar>`_:
* Juan José Scarafía
* Nicolas Mac Rouillon
* Katherine Zaoral
* `NaN·TIC <http://www.nan-tic.com>`_
* `Tecnativa <https://www.tecnativa.com>`_:
* Ernesto Tejeda
* Pedro M. Baeza
* Jairo Llopis
* Sergio Teruel
* `Sygel <https://www.sygel.es>`_:
* Manuel Regidor
* `Acsone <https://www.acsone.eu/>`_:
* Maxime Franco
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.
.. |maintainer-ernestotejeda| image:: https://github.com/ernestotejeda.png?size=40px
:target: https://github.com/ernestotejeda
:alt: ernestotejeda
Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
|maintainer-ernestotejeda|
This module is part of the `OCA/product-pack <https://github.com/OCA/product-pack/tree/16.0/product_pack>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View file

@ -0,0 +1,2 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import models

View file

@ -0,0 +1,23 @@
# Copyright 2019 NaN (http://www.nan-tic.com) - Àngel Àlvarez
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
{
"name": "Product Pack",
"version": "16.0.1.1.0",
"category": "Product",
"summary": "This module allows you to set a product as a Pack",
"website": "https://github.com/OCA/product-pack",
"author": "NaN·tic, ADHOC SA, Tecnativa, Odoo Community Association (OCA)",
"maintainers": ["ernestotejeda"],
"license": "AGPL-3",
"depends": ["product"],
"data": [
"security/ir.model.access.csv",
"views/product_pack_line_views.xml",
"views/product_template_views.xml",
"views/product_product_views.xml",
],
"demo": ["demo/product_product_demo.xml", "demo/product_pack_line_demo.xml"],
"installable": True,
"auto_install": False,
"application": False,
}

View file

@ -0,0 +1,95 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2019 Tecnativa - Ernesto Tejeda
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo noupdate="1">
<record id="pack_cpu_detailed_components_1" model="product.pack.line">
<field name="parent_product_id" ref="product_pack_cpu_detailed_components" />
<field name="product_id" ref="product.product_product_20" />
<field name="quantity" eval="1.0" />
</record>
<record id="pack_cpu_detailed_components_3" model="product.pack.line">
<field name="parent_product_id" ref="product_pack_cpu_detailed_components" />
<field name="product_id" ref="product.product_product_16" />
<field name="quantity" eval="1.0" />
</record>
<record id="pack_cpu_detailed_components_4" model="product.pack.line">
<field name="parent_product_id" ref="product_pack_cpu_detailed_components" />
<field name="product_id" ref="product.product_product_24" />
<field name="quantity" eval="1.0" />
</record>
<record id="pack_cpu_detailed_totalized_1" model="product.pack.line">
<field name="parent_product_id" ref="product_pack_cpu_detailed_totalized" />
<field name="product_id" ref="product.product_product_20" />
<field name="quantity" eval="1.0" />
</record>
<record id="pack_cpu_detailed_totalized_3" model="product.pack.line">
<field name="parent_product_id" ref="product_pack_cpu_detailed_totalized" />
<field name="product_id" ref="product.product_product_16" />
<field name="quantity" eval="1.0" />
</record>
<record id="pack_cpu_detailed_totalized_4" model="product.pack.line">
<field name="parent_product_id" ref="product_pack_cpu_detailed_totalized" />
<field name="product_id" ref="product.product_product_24" />
<field name="quantity" eval="1.0" />
</record>
<record id="pack_cpu_detailed_ignored_1" model="product.pack.line">
<field name="parent_product_id" ref="product_pack_cpu_detailed_ignored" />
<field name="product_id" ref="product.product_product_20" />
<field name="quantity" eval="1.0" />
</record>
<record id="pack_cpu_detailed_ignored_3" model="product.pack.line">
<field name="parent_product_id" ref="product_pack_cpu_detailed_ignored" />
<field name="product_id" ref="product.product_product_16" />
<field name="quantity" eval="1.0" />
</record>
<record id="pack_cpu_detailed_ignored_4" model="product.pack.line">
<field name="parent_product_id" ref="product_pack_cpu_detailed_ignored" />
<field name="product_id" ref="product.product_product_24" />
<field name="quantity" eval="1.0" />
</record>
<record id="pack_cpu_non_detailed_1" model="product.pack.line">
<field name="parent_product_id" ref="product_pack_cpu_non_detailed" />
<field name="product_id" ref="product.product_product_20" />
<field name="quantity" eval="1.0" />
</record>
<record id="pack_cpu_non_detailed_3" model="product.pack.line">
<field name="parent_product_id" ref="product_pack_cpu_non_detailed" />
<field name="product_id" ref="product.product_product_16" />
<field name="quantity" eval="1.0" />
</record>
<record id="pack_cpu_non_detailed_4" model="product.pack.line">
<field name="parent_product_id" ref="product_pack_cpu_non_detailed" />
<field name="product_id" ref="product.product_product_24" />
<field name="quantity" eval="1.0" />
</record>
<record id="pack_pc_detailed_components_1" model="product.pack.line">
<field name="parent_product_id" ref="product_pack_pc_detailed_components" />
<field name="product_id" ref="product.product_product_12" />
<field name="quantity" eval="1.0" />
</record>
<record id="pack_pc_detailed_components_3" model="product.pack.line">
<field name="parent_product_id" ref="product_pack_pc_detailed_components" />
<field name="product_id" ref="product_pack_cpu_detailed_components" />
<field name="quantity" eval="1.0" />
</record>
<record id="pack_pc_detailed_totalized_1" model="product.pack.line">
<field name="parent_product_id" ref="product_pack_pc_detailed_totalized" />
<field name="product_id" ref="product.product_product_12" />
<field name="quantity" eval="1.0" />
</record>
<record id="pack_pc_detailed_totalized_3" model="product.pack.line">
<field name="parent_product_id" ref="product_pack_pc_detailed_totalized" />
<field name="product_id" ref="product_pack_cpu_detailed_totalized" />
<field name="quantity" eval="1.0" />
</record>
<record id="pack_pc_detailed_ignored_1" model="product.pack.line">
<field name="parent_product_id" ref="product_pack_pc_detailed_ignored" />
<field name="product_id" ref="product.product_product_12" />
<field name="quantity" eval="1.0" />
</record>
<record id="pack_pc_detailed_ignored_3" model="product.pack.line">
<field name="parent_product_id" ref="product_pack_pc_detailed_ignored" />
<field name="product_id" ref="product_pack_cpu_detailed_ignored" />
<field name="quantity" eval="1.0" />
</record>
</odoo>

View file

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2019 Tecnativa - Ernesto Tejeda
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo noupdate="1">
<record id="product_pack_cpu_detailed_components" model="product.product">
<field name="name">Pack CPU (Detailed - Displayed Components Price)</field>
<field name="categ_id" ref="product.product_category_4" />
<field name="pack_ok" eval="True" />
<field name="pack_type">detailed</field>
<field name="pack_component_price">detailed</field>
<field name="standard_price">20.5</field>
<field name="list_price">30.75</field>
<field name="type">service</field>
</record>
<record id="product_pack_cpu_detailed_totalized" model="product.product">
<field name="name">Pack CPU (Detailed - Totalized Components Price)</field>
<field name="categ_id" ref="product.product_category_4" />
<field name="pack_ok" eval="True" />
<field name="pack_type">detailed</field>
<field name="pack_component_price">totalized</field>
<field name="standard_price">20.5</field>
<field name="list_price">30.75</field>
<field name="type">service</field>
</record>
<record id="product_pack_cpu_detailed_ignored" model="product.product">
<field name="name">Pack CPU (Detailed - Ignored Components Price)</field>
<field name="categ_id" ref="product.product_category_4" />
<field name="pack_ok" eval="True" />
<field name="pack_type">detailed</field>
<field name="pack_component_price">ignored</field>
<field name="standard_price">20.5</field>
<field name="list_price">30.75</field>
<field name="type">service</field>
</record>
<record id="product_pack_cpu_non_detailed" model="product.product">
<field name="name">Pack CPU (Non Detailed - Totalized Components Price)</field>
<field name="categ_id" ref="product.product_category_4" />
<field name="pack_ok" eval="True" />
<field name="pack_type">non_detailed</field>
<field name="standard_price">20.5</field>
<field name="list_price">30.75</field>
<field name="type">service</field>
</record>
<record id="product_pack_pc_detailed_components" model="product.product">
<field name="name">Pack PC (Detailed - Displayed Components Price)</field>
<field name="categ_id" ref="product.product_category_4" />
<field name="pack_ok" eval="True" />
<field name="pack_type">detailed</field>
<field name="pack_component_price">detailed</field>
<field name="standard_price">20.5</field>
<field name="list_price">30.75</field>
<field name="type">service</field>
</record>
<record id="product_pack_pc_detailed_totalized" model="product.product">
<field name="name">Pack PC (Detailed - Totalized Components Price)</field>
<field name="categ_id" ref="product.product_category_4" />
<field name="pack_ok" eval="True" />
<field name="pack_type">detailed</field>
<field name="pack_component_price">totalized</field>
<field name="standard_price">20.5</field>
<field name="list_price">30.75</field>
<field name="type">service</field>
</record>
<record id="product_pack_pc_detailed_ignored" model="product.product">
<field name="name">Pack PC (Detailed - Ignored Components Price)</field>
<field name="categ_id" ref="product.product_category_4" />
<field name="pack_ok" eval="True" />
<field name="pack_type">detailed</field>
<field name="pack_component_price">ignored</field>
<field name="standard_price">20.5</field>
<field name="list_price">30.75</field>
<field name="type">service</field>
</record>
</odoo>

View file

@ -0,0 +1,270 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * product_pack
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.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: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__create_uid
msgid "Created by"
msgstr "Kreirao"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__create_date
msgid "Created on"
msgstr "Kreirano"
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_type__detailed
msgid "Detailed"
msgstr "Detaljno"
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_component_price__detailed
msgid "Detailed per component"
msgstr "Detaljno po komponenti"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__display_name
msgid "Display Name"
msgstr "Prikazani naziv"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__used_in_pack_line_ids
#: model:ir.model.fields,field_description:product_pack.field_product_template__used_in_pack_line_ids
msgid "Found in packs"
msgstr "Pronađeno u paketima"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__id
msgid "ID"
msgstr "ID"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_modifiable
#: model:ir.model.fields,help:product_pack.field_product_template__pack_modifiable
msgid ""
"If you check this field yo will be able to edit sale/purchase order line "
"relate to its component"
msgstr ""
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_component_price__ignored
msgid "Ignored"
msgstr "Ignorisano"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_ok
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_ok
msgid "Is Pack?"
msgstr "Je li paket?"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_ok
#: model:ir.model.fields,help:product_pack.field_product_template__pack_ok
msgid "Is a Product Pack?"
msgstr "Je li paket proizvoda?"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line____last_update
msgid "Last Modified on"
msgstr "Zadnje mijenjano"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__write_uid
msgid "Last Updated by"
msgstr "Zadnji ažurirao"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__write_date
msgid "Last Updated on"
msgstr "Zadnje ažurirano"
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_type__non_detailed
msgid "Non Detailed"
msgstr "Nedetaljno"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_component_price
#: model:ir.model.fields,help:product_pack.field_product_template__pack_component_price
msgid ""
"On sale orders or purchase orders:\n"
"* Detailed per component: Detail lines with prices.\n"
"* Totalized in main product: Detail lines merging lines prices on pack (don't show component prices).\n"
"* Ignored: Use product pack price (ignore detail line prices)."
msgstr ""
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_type
#: model:ir.model.fields,help:product_pack.field_product_template__pack_type
msgid ""
"On sale orders or purchase orders:\n"
"* Detailed: Display components individually in the sale order.\n"
"* Non Detailed: Do not display components individually in the sale order."
msgstr ""
#. module: product_pack
#: model_terms:ir.ui.view,arch_db:product_pack.product_template_form_view
msgid "Pack"
msgstr "Pakovanje"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_detailed_components_product_template
msgid "Pack CPU (Detailed - Displayed Components Price)"
msgstr "Pack CPU (Detailed - Displayed Components Price)"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_detailed_ignored_product_template
msgid "Pack CPU (Detailed - Ignored Components Price)"
msgstr "Pack CPU (Detailed - Ignored Components Price)"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_detailed_totalized_product_template
msgid "Pack CPU (Detailed - Totalized Components Price)"
msgstr "Pack CPU (Detailed - Totalized Components Price)"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_non_detailed_product_template
msgid "Pack CPU (Non Detailed - Totalized Components Price)"
msgstr "Pack CPU (Non Detailed - Totalized Components Price)"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_component_price
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_component_price
msgid "Pack Component Price"
msgstr "Cijena komponente paketa"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_type
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_type
msgid "Pack Display Type"
msgstr "Vrsta prikaza paketa"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_modifiable
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_modifiable
msgid "Pack Modifiable"
msgstr "Paket se može mijenjati"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_modifiable_invisible
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_modifiable_invisible
msgid "Pack Modifiable Invisible"
msgstr "Pack Modifiable Invisible"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_pc_detailed_components_product_template
msgid "Pack PC (Detailed - Displayed Components Price)"
msgstr "Pack PC (Detailed - Displayed Components Price)"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_pc_detailed_ignored_product_template
msgid "Pack PC (Detailed - Ignored Components Price)"
msgstr "Pack PC (Detailed - Ignored Components Price)"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_pc_detailed_totalized_product_template
msgid "Pack PC (Detailed - Totalized Components Price)"
msgstr "Pack PC (Detailed - Totalized Components Price)"
#. module: product_pack
#: model_terms:ir.ui.view,arch_db:product_pack.product_pack_line_form
msgid "Pack Product Line"
msgstr "Linija paketa proizvoda"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_line_ids
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_line_ids
#: model_terms:ir.ui.view,arch_db:product_pack.nan_product_pack_form
#: model_terms:ir.ui.view,arch_db:product_pack.product_template_only_form_view
msgid "Pack Products"
msgstr "Paket proizvoda"
#. module: product_pack
#. odoo-python
#: code:addons/product_pack/models/product_template.py:0
#: code:addons/product_pack/models/product_template.py:0
#, python-format
msgid ""
"Pack lines products company must be the same as the parent product company"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__used_in_pack_line_ids
#: model:ir.model.fields,help:product_pack.field_product_template__used_in_pack_line_ids
msgid "Packs where product is used."
msgstr "Packs where product is used."
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__parent_product_id
msgid "Parent Product"
msgstr "Nadređeni proizvod"
#. module: product_pack
#: model:ir.model,name:product_pack.model_product_template
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__product_id
msgid "Product"
msgstr "Artikal"
#. module: product_pack
#: model:ir.model,name:product_pack.model_product_product
msgid "Product Variant"
msgstr "Varijanta proizvoda"
#. module: product_pack
#: model:ir.model.constraint,message:product_pack.constraint_product_pack_line_product_uniq
msgid "Product must be only once on a pack!"
msgstr "Product must be only once on a pack!"
#. module: product_pack
#: model:ir.model,name:product_pack.model_product_pack_line
msgid "Product pack line"
msgstr "Linija paketa proizvoda"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_line_ids
#: model:ir.model.fields,help:product_pack.field_product_template__pack_line_ids
msgid "Products that are part of this pack."
msgstr "Proizvodi koji su dio ovog paketa"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__quantity
msgid "Quantity"
msgstr "Količina"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_modifiable_invisible
#: model:ir.model.fields,help:product_pack.field_product_template__pack_modifiable_invisible
msgid ""
"Technical field in order to compute the availability of the Pack Modifiable "
"field"
msgstr ""
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_component_price__totalized
msgid "Totalized in main product"
msgstr "Ukupno u glavnom proizvodu"
#. module: product_pack
#. odoo-python
#: code:addons/product_pack/models/product_pack_line.py:0
#, python-format
msgid ""
"You cannot set recursive packs.\n"
"Product id: %s"
msgstr ""
#. module: product_pack
#: model_terms:ir.ui.view,arch_db:product_pack.product_template_only_form_view
msgid "You must save first to add pack lines"
msgstr "You must save first to add pack lines"

View file

@ -0,0 +1,308 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * product_pack
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2022-02-28 13:17+0000\n"
"Last-Translator: Noel estudillo <noelestudilloviera@gmail.com>\n"
"Language-Team: none\n"
"Language: ca\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.3.2\n"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__create_uid
msgid "Created by"
msgstr "Creat per"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__create_date
msgid "Created on"
msgstr "Creat el"
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_type__detailed
msgid "Detailed"
msgstr "Detallat"
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_component_price__detailed
msgid "Detailed per component"
msgstr "Detallat per component"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__display_name
msgid "Display Name"
msgstr "Nom visualitzat"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__used_in_pack_line_ids
#: model:ir.model.fields,field_description:product_pack.field_product_template__used_in_pack_line_ids
msgid "Found in packs"
msgstr "Es troba en packs"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__id
msgid "ID"
msgstr "ID (identificació)"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_modifiable
#: model:ir.model.fields,help:product_pack.field_product_template__pack_modifiable
msgid ""
"If you check this field yo will be able to edit sale/purchase order line "
"relate to its component"
msgstr ""
"Si marqueu aquest camp, podreu editar la línia de comanda / compra "
"relacionada amb el seu component"
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_component_price__ignored
msgid "Ignored"
msgstr "Ignorat"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_ok
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_ok
msgid "Is Pack?"
msgstr "Es un Pack?"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_ok
#: model:ir.model.fields,help:product_pack.field_product_template__pack_ok
msgid "Is a Product Pack?"
msgstr "¿Es un Pack de Producte?"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line____last_update
msgid "Last Modified on"
msgstr "Última modificació el"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__write_uid
msgid "Last Updated by"
msgstr "Darrera actualització de"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__write_date
msgid "Last Updated on"
msgstr "Darrera actualització el"
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_type__non_detailed
msgid "Non Detailed"
msgstr "No detallat"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_component_price
#: model:ir.model.fields,help:product_pack.field_product_template__pack_component_price
msgid ""
"On sale orders or purchase orders:\n"
"* Detailed per component: Detail lines with prices.\n"
"* Totalized in main product: Detail lines merging lines prices on pack "
"(don't show component prices).\n"
"* Ignored: Use product pack price (ignore detail line prices)."
msgstr ""
"A les comandes de venda o comandes de compra:\n"
"* Detallat per component: Línies de detall amb preus.\n"
"* Totalitzat en el producte principal: Detalla les línies fusionant els "
"preus de les línies en el Pack (no mostren els preus dels components).\n"
"* Ignorat: utilitza el preu del Pack de producte (ignora els preus de la "
"línia de detalls)."
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_type
#: model:ir.model.fields,help:product_pack.field_product_template__pack_type
msgid ""
"On sale orders or purchase orders:\n"
"* Detailed: Display components individually in the sale order.\n"
"* Non Detailed: Do not display components individually in the sale order."
msgstr ""
"En ordres de venda o ordres de compra:\n"
"* Detallat: Mostra els components individualment en línies de la comanda de "
"venda / Comanda de compra.\n"
"* No Detallat: No mostra els components individualment en línies de la "
"comanda de Venda / Comanda de Compra."
#. module: product_pack
#: model_terms:ir.ui.view,arch_db:product_pack.product_template_form_view
msgid "Pack"
msgstr "Pack"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_detailed_components_product_template
msgid "Pack CPU (Detailed - Displayed Components Price)"
msgstr "Pack CPU (Detallat - Preu dels Components Mostrat)"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_detailed_ignored_product_template
msgid "Pack CPU (Detailed - Ignored Components Price)"
msgstr "Pack CPU (Detallat - Preu dels Components Ignorat)"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_detailed_totalized_product_template
msgid "Pack CPU (Detailed - Totalized Components Price)"
msgstr "Pack CPU (Detallat - Preu dels Components Totalitzat)"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_non_detailed_product_template
msgid "Pack CPU (Non Detailed - Totalized Components Price)"
msgstr "Pack CPU (No Detallat - Preu dels Components Totalitzat)"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_component_price
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_component_price
msgid "Pack Component Price"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_type
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_type
msgid "Pack Display Type"
msgstr "Tipus de pantalla de paquet"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_modifiable
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_modifiable
msgid "Pack Modifiable"
msgstr "Pack modificable"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_modifiable_invisible
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_modifiable_invisible
msgid "Pack Modifiable Invisible"
msgstr ""
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_pc_detailed_components_product_template
msgid "Pack PC (Detailed - Displayed Components Price)"
msgstr "Pack PC (Detallat - Preu dels Components Mostrat)"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_pc_detailed_ignored_product_template
msgid "Pack PC (Detailed - Ignored Components Price)"
msgstr "Pack PC (Detallat - Preu dels Components Ignorat)"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_pc_detailed_totalized_product_template
msgid "Pack PC (Detailed - Totalized Components Price)"
msgstr "Pack PC (Detallat - Preu dels Components Totalitzat)"
#. module: product_pack
#: model_terms:ir.ui.view,arch_db:product_pack.product_pack_line_form
msgid "Pack Product Line"
msgstr "Línia de producte pack"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_line_ids
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_line_ids
#: model_terms:ir.ui.view,arch_db:product_pack.nan_product_pack_form
#: model_terms:ir.ui.view,arch_db:product_pack.product_template_only_form_view
msgid "Pack Products"
msgstr "Productes del pack"
#. module: product_pack
#. odoo-python
#: code:addons/product_pack/models/product_template.py:0
#, python-format
msgid ""
"Pack lines products company must be the same as the parent product company"
msgstr ""
"Les línies dels Packs de productes de la companyia han de ser les mateixes "
"que el producte pare de la companyia"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__used_in_pack_line_ids
#: model:ir.model.fields,help:product_pack.field_product_template__used_in_pack_line_ids
msgid "Packs where product is used."
msgstr "Packs on el producte és utilitzat."
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__parent_product_id
msgid "Parent Product"
msgstr "Producte pare"
#. module: product_pack
#: model:ir.model,name:product_pack.model_product_template
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__product_id
msgid "Product"
msgstr "Producte"
#. module: product_pack
#: model:ir.model,name:product_pack.model_product_product
msgid "Product Variant"
msgstr ""
#. module: product_pack
#: model:ir.model.constraint,message:product_pack.constraint_product_pack_line_product_uniq
msgid "Product must be only once on a pack!"
msgstr "¡El producte ha d'estar només una vegada en un pack!"
#. module: product_pack
#: model:ir.model,name:product_pack.model_product_pack_line
msgid "Product pack line"
msgstr "Línia de pack"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_line_ids
#: model:ir.model.fields,help:product_pack.field_product_template__pack_line_ids
msgid "Products that are part of this pack."
msgstr "Productes que formen part del pack."
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__quantity
msgid "Quantity"
msgstr "Quantitat"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_modifiable_invisible
#: model:ir.model.fields,help:product_pack.field_product_template__pack_modifiable_invisible
msgid ""
"Technical field in order to compute the availability of the Pack Modifiable "
"field"
msgstr ""
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_component_price__totalized
msgid "Totalized in main product"
msgstr "Totalitzat en el producte principal"
#. module: product_pack
#. odoo-python
#: code:addons/product_pack/models/product_pack_line.py:0
#, python-format
msgid ""
"You cannot set recursive packs.\n"
"Product id: %s"
msgstr ""
"No pot establir packs recursius.\n"
"ID del producte:%s"
#. module: product_pack
#: model_terms:ir.ui.view,arch_db:product_pack.product_template_only_form_view
msgid "You must save first to add pack lines"
msgstr "Ha de guardar primer per afegir línies de pack"
#~ msgid "Product Template"
#~ msgstr "Plantilla de producte"
#~ msgid "Units"
#~ msgstr "Unitats"
#~ msgid "Pack Product Lines"
#~ msgstr "Línies del producte pack"
#~ msgid "Pack component price"
#~ msgstr "Preu dels components"
#~ msgid "Pack Type"
#~ msgstr "Tipus de Pack"
#~ msgid "kg"
#~ msgstr "kg"

View file

@ -0,0 +1,320 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * product_pack
#
# Translators:
# Juan José Scarafía <scarafia.juanjose@gmail.com>, 2019
# Gonzalo Ruzafa <gr@ingadhoc.com>, 2019
# emiquinodoz <eq@ingadhoc.com>, 2019
# Julián García <jg@adhoc.com.ar>, 2019
# Valentino Defelice <vd@adhoc.com.ar>, 2019
# Santiago Crespo <sc@adhoc.com.ar>, 2019
# Mariana Luz Torres <mt@adhoc.com.ar>, 2019
# Nicolas Mac Rouillon <nmr@ingadhoc.com>, 2019
# Katherine Zaoral <katherine.zaoral@gmail.com>, 2019
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-30 16:02+0000\n"
"PO-Revision-Date: 2019-09-30 16:02+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: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__create_uid
msgid "Created by"
msgstr "Creado por"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__create_date
msgid "Created on"
msgstr "Creado el"
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_type__detailed
msgid "Detailed"
msgstr "Detallado"
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_component_price__detailed
msgid "Detailed per component"
msgstr "Detallado por componente"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__display_name
msgid "Display Name"
msgstr "Nombre mostrado"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__used_in_pack_line_ids
#: model:ir.model.fields,field_description:product_pack.field_product_template__used_in_pack_line_ids
msgid "Found in packs"
msgstr "Encontrado en Packs"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__id
msgid "ID"
msgstr "ID (identificación)"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_modifiable
#: model:ir.model.fields,help:product_pack.field_product_template__pack_modifiable
msgid ""
"If you check this field yo will be able to edit sale/purchase order line "
"relate to its component"
msgstr ""
"Si marca esta casilla serás capaz de editar las lineas de órdenes de venta/"
"compra relativas a sus componentes"
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_component_price__ignored
msgid "Ignored"
msgstr "Ignorado"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_ok
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_ok
msgid "Is Pack?"
msgstr "Es un Pack?"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_ok
#: model:ir.model.fields,help:product_pack.field_product_template__pack_ok
msgid "Is a Product Pack?"
msgstr "¿Es un Pack de Producto?"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line____last_update
msgid "Last Modified on"
msgstr "Última modificación en"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__write_uid
msgid "Last Updated by"
msgstr "Última actualización por"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__write_date
msgid "Last Updated on"
msgstr "Última actualización el"
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_type__non_detailed
msgid "Non Detailed"
msgstr "No detallado"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_component_price
#: model:ir.model.fields,help:product_pack.field_product_template__pack_component_price
msgid ""
"On sale orders or purchase orders:\n"
"* Detailed per component: Detail lines with prices.\n"
"* Totalized in main product: Detail lines merging lines prices on pack "
"(don't show component prices).\n"
"* Ignored: Use product pack price (ignore detail line prices)."
msgstr ""
"En órdenes de venta u órdenes de compra:\n"
"* Detallado por componente: Detalla las lineas con precios.\n"
"* Totalizado en el producto principal: Detalla las lineas mezclando sus "
"precios en el Pack (No muestra los precios de los componentes).\n"
"* Ignorado: Se usa el precio el Pack (los precios de las lineas son "
"ignorados)."
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_type
#: model:ir.model.fields,help:product_pack.field_product_template__pack_type
msgid ""
"On sale orders or purchase orders:\n"
"* Detailed: Display components individually in the sale order.\n"
"* Non Detailed: Do not display components individually in the sale order."
msgstr ""
"En órdenes de venta u órdenes de compra:\n"
"* Detallado: Muestra los componentes individualmente en lineas de la Orden "
"de Venta/Orden de Compra\n"
"* No Detallado: No muestra los componentes individualmente en lineas de la "
"Orden de Venta/Orden de Compra"
#. module: product_pack
#: model_terms:ir.ui.view,arch_db:product_pack.product_template_form_view
msgid "Pack"
msgstr "Pack"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_detailed_components_product_template
msgid "Pack CPU (Detailed - Displayed Components Price)"
msgstr "Pack CPU (Detallado - Precio de los Componentes Mostrado)"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_detailed_ignored_product_template
msgid "Pack CPU (Detailed - Ignored Components Price)"
msgstr "Pack CPU (Detallado - Precio de los Componentes Ignorado)"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_detailed_totalized_product_template
msgid "Pack CPU (Detailed - Totalized Components Price)"
msgstr "Pack CPU (Detallado - Precio de los Componentes Totalizado)"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_non_detailed_product_template
msgid "Pack CPU (Non Detailed - Totalized Components Price)"
msgstr "Pack CPU (No Detallado - Precio de los Componentes Totalizado)"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_component_price
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_component_price
msgid "Pack Component Price"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_type
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_type
msgid "Pack Display Type"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_modifiable
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_modifiable
msgid "Pack Modifiable"
msgstr "Pack modificable"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_modifiable_invisible
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_modifiable_invisible
msgid "Pack Modifiable Invisible"
msgstr ""
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_pc_detailed_components_product_template
msgid "Pack PC (Detailed - Displayed Components Price)"
msgstr "Pack PC (Detallado - Precio de los Componentes Mostrado)"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_pc_detailed_ignored_product_template
msgid "Pack PC (Detailed - Ignored Components Price)"
msgstr "Pack PC (Detallado - Precio de los Componentes Ignorado)"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_pc_detailed_totalized_product_template
msgid "Pack PC (Detailed - Totalized Components Price)"
msgstr "Pack PC (Detallado - Precio de los Componentes Totalizado)"
#. module: product_pack
#: model_terms:ir.ui.view,arch_db:product_pack.product_pack_line_form
msgid "Pack Product Line"
msgstr "Linea de producto pack"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_line_ids
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_line_ids
#: model_terms:ir.ui.view,arch_db:product_pack.nan_product_pack_form
#: model_terms:ir.ui.view,arch_db:product_pack.product_template_only_form_view
msgid "Pack Products"
msgstr "Productos del pack"
#. module: product_pack
#. odoo-python
#: code:addons/product_pack/models/product_template.py:0
#, python-format
msgid ""
"Pack lines products company must be the same as the parent product company"
msgstr ""
"Las líneas de los Packs de productos de la compañía deben ser las mismas que "
"el producto padre de la compañía."
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__used_in_pack_line_ids
#: model:ir.model.fields,help:product_pack.field_product_template__used_in_pack_line_ids
msgid "Packs where product is used."
msgstr "Packs donde el producto es utilizado"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__parent_product_id
msgid "Parent Product"
msgstr "Producto padre"
#. module: product_pack
#: model:ir.model,name:product_pack.model_product_template
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__product_id
msgid "Product"
msgstr "Producto"
#. module: product_pack
#: model:ir.model,name:product_pack.model_product_product
msgid "Product Variant"
msgstr ""
#. module: product_pack
#: model:ir.model.constraint,message:product_pack.constraint_product_pack_line_product_uniq
msgid "Product must be only once on a pack!"
msgstr "¡El producto debe estar solo una vez en un pack!"
#. module: product_pack
#: model:ir.model,name:product_pack.model_product_pack_line
msgid "Product pack line"
msgstr "Linea de pack"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_line_ids
#: model:ir.model.fields,help:product_pack.field_product_template__pack_line_ids
msgid "Products that are part of this pack."
msgstr "Productos que forman parte del pack"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__quantity
msgid "Quantity"
msgstr "Cantidad"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_modifiable_invisible
#: model:ir.model.fields,help:product_pack.field_product_template__pack_modifiable_invisible
msgid ""
"Technical field in order to compute the availability of the Pack Modifiable "
"field"
msgstr ""
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_component_price__totalized
msgid "Totalized in main product"
msgstr "Totalizado en el producto principal"
#. module: product_pack
#. odoo-python
#: code:addons/product_pack/models/product_pack_line.py:0
#, python-format
msgid ""
"You cannot set recursive packs.\n"
"Product id: %s"
msgstr ""
"No puede establecer packs recursivos.\n"
"ID del producto: %s"
#. module: product_pack
#: model_terms:ir.ui.view,arch_db:product_pack.product_template_only_form_view
msgid "You must save first to add pack lines"
msgstr "Debe guardar primero para agregar líneas de paquete"
#~ msgid "Product Template"
#~ msgstr "Plantilla de producto"
#, fuzzy
#~ msgid "Units"
#~ msgstr "Unidad(es)"
#~ msgid "Pack Product Lines"
#~ msgstr "Lineas del producto pack"
#~ msgid "Pack component price"
#~ msgstr "Precio de los componentes"
#~ msgid "Pack Type"
#~ msgstr "Tipo de Pack"
#~ msgid "kg"
#~ msgstr "kg"

View file

@ -0,0 +1,307 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * product_pack
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-11-26 15:05+0000\n"
"Last-Translator: samibc2c <sami.bouzidi@camptocamp.com>\n"
"Language-Team: none\n"
"Language: fr\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: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__create_uid
msgid "Created by"
msgstr "Créé par"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__create_date
msgid "Created on"
msgstr "Créé le"
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_type__detailed
msgid "Detailed"
msgstr "Détaillé"
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_component_price__detailed
msgid "Detailed per component"
msgstr "Détaillé par composant"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__display_name
msgid "Display Name"
msgstr "Nom affiché"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__used_in_pack_line_ids
#: model:ir.model.fields,field_description:product_pack.field_product_template__used_in_pack_line_ids
msgid "Found in packs"
msgstr "Trouvé dans des packs"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__id
msgid "ID"
msgstr "ID"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_modifiable
#: model:ir.model.fields,help:product_pack.field_product_template__pack_modifiable
msgid ""
"If you check this field yo will be able to edit sale/purchase order line "
"relate to its component"
msgstr ""
"Si vous cochez ce champ, vous pourrez modifier la ligne de commande de "
"vente / d'achat relative à son composant"
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_component_price__ignored
msgid "Ignored"
msgstr "Ignoré"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_ok
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_ok
msgid "Is Pack?"
msgstr "Est un pack ?"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_ok
#: model:ir.model.fields,help:product_pack.field_product_template__pack_ok
msgid "Is a Product Pack?"
msgstr "Est un pack d'article ?"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line____last_update
msgid "Last Modified on"
msgstr "Dernière modification le"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__write_uid
msgid "Last Updated by"
msgstr "Dernière mise à jour par"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__write_date
msgid "Last Updated on"
msgstr "Dernière mise à jour le"
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_type__non_detailed
msgid "Non Detailed"
msgstr "Non détaillé"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_component_price
#: model:ir.model.fields,help:product_pack.field_product_template__pack_component_price
msgid ""
"On sale orders or purchase orders:\n"
"* Detailed per component: Detail lines with prices.\n"
"* Totalized in main product: Detail lines merging lines prices on pack "
"(don't show component prices).\n"
"* Ignored: Use product pack price (ignore detail line prices)."
msgstr ""
"Sur les commandes clients ou fournisseurs:\n"
"* Détaillé par composant: lignes détaillées avec prix.\n"
"* Totalisé dans l'article principal: lignes détaillées mais le prix est "
"additionné sur celui du pack (n'affiche pas les prix par composant).\n"
"* Ignoré: utilise le prix du pack d'articles (ignore les prix des "
"composants)."
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_type
#: model:ir.model.fields,help:product_pack.field_product_template__pack_type
msgid ""
"On sale orders or purchase orders:\n"
"* Detailed: Display components individually in the sale order.\n"
"* Non Detailed: Do not display components individually in the sale order."
msgstr ""
"Sur les commandes clients ou fournisseurs:\n"
"* Détaillé: affiche les composants individuellement dans la commande.\n"
"* Non détaillé: n'affiche pas les composants dans la commande."
#. module: product_pack
#: model_terms:ir.ui.view,arch_db:product_pack.product_template_form_view
msgid "Pack"
msgstr "Pack"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_detailed_components_product_template
msgid "Pack CPU (Detailed - Displayed Components Price)"
msgstr "Pack CPU (Détaillé - Prix des composants affiché)"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_detailed_ignored_product_template
msgid "Pack CPU (Detailed - Ignored Components Price)"
msgstr "Pack CPU (Détaillé - Prix des composants ignoré)"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_detailed_totalized_product_template
msgid "Pack CPU (Detailed - Totalized Components Price)"
msgstr "Pack CPU (Détaillé - Prix des composants totalisé)"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_non_detailed_product_template
msgid "Pack CPU (Non Detailed - Totalized Components Price)"
msgstr "Pack CPU (Non détaillé - Prix des composants totalisé)"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_component_price
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_component_price
msgid "Pack Component Price"
msgstr "Prix du composant du pack"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_type
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_type
msgid "Pack Display Type"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_modifiable
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_modifiable
msgid "Pack Modifiable"
msgstr "Pack modifiable"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_modifiable_invisible
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_modifiable_invisible
msgid "Pack Modifiable Invisible"
msgstr "Pack Modifiable Invisible"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_pc_detailed_components_product_template
msgid "Pack PC (Detailed - Displayed Components Price)"
msgstr "Pack PC (Détaillé - Prix des composants affiché)"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_pc_detailed_ignored_product_template
msgid "Pack PC (Detailed - Ignored Components Price)"
msgstr "Pack PC (Détaillé - Prix des composants ignoré)"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_pc_detailed_totalized_product_template
msgid "Pack PC (Detailed - Totalized Components Price)"
msgstr "Pack PC (Détaillé - Prix des composants totalisé)"
#. module: product_pack
#: model_terms:ir.ui.view,arch_db:product_pack.product_pack_line_form
msgid "Pack Product Line"
msgstr "Ligne d'article de pack"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_line_ids
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_line_ids
#: model_terms:ir.ui.view,arch_db:product_pack.nan_product_pack_form
#: model_terms:ir.ui.view,arch_db:product_pack.product_template_only_form_view
msgid "Pack Products"
msgstr "Pack d'articles"
#. module: product_pack
#. odoo-python
#: code:addons/product_pack/models/product_template.py:0
#, python-format
msgid ""
"Pack lines products company must be the same as the parent product company"
msgstr ""
"Les composants d'un pack doivent appartenir à la même société que celle du "
"produit parent"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__used_in_pack_line_ids
#: model:ir.model.fields,help:product_pack.field_product_template__used_in_pack_line_ids
msgid "Packs where product is used."
msgstr "Packs où le produit est utilisé."
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__parent_product_id
msgid "Parent Product"
msgstr "Article parent"
#. module: product_pack
#: model:ir.model,name:product_pack.model_product_template
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__product_id
msgid "Product"
msgstr "Article"
#. module: product_pack
#: model:ir.model,name:product_pack.model_product_product
msgid "Product Variant"
msgstr "Variante d'article"
#. module: product_pack
#: model:ir.model.constraint,message:product_pack.constraint_product_pack_line_product_uniq
msgid "Product must be only once on a pack!"
msgstr "Un article ne doit être apparaître quune seule fois dans un pack!"
#. module: product_pack
#: model:ir.model,name:product_pack.model_product_pack_line
msgid "Product pack line"
msgstr "Ligne de pack d'articles"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_line_ids
#: model:ir.model.fields,help:product_pack.field_product_template__pack_line_ids
msgid "Products that are part of this pack."
msgstr "Articles qui composent ce pack."
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__quantity
msgid "Quantity"
msgstr "Quantité"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_modifiable_invisible
#: model:ir.model.fields,help:product_pack.field_product_template__pack_modifiable_invisible
msgid ""
"Technical field in order to compute the availability of the Pack Modifiable "
"field"
msgstr ""
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_component_price__totalized
msgid "Totalized in main product"
msgstr "Totalisé dans l'article principal"
#. module: product_pack
#. odoo-python
#: code:addons/product_pack/models/product_pack_line.py:0
#, python-format
msgid ""
"You cannot set recursive packs.\n"
"Product id: %s"
msgstr ""
"Vous ne pouvez pas définir de packs récursifs.\n"
"ID du produit: %s"
#. module: product_pack
#: model_terms:ir.ui.view,arch_db:product_pack.product_template_only_form_view
msgid "You must save first to add pack lines"
msgstr "Vous devez d'abord enregistrer pour ajouter des lignes de pack"
#~ msgid "Product Template"
#~ msgstr "Modèle d'article"
#, fuzzy
#~ msgid "Units"
#~ msgstr "Unité(s)"
#~ msgid "Pack Product Lines"
#~ msgstr "Lignes d'article de pack"
#~ msgid "Pack component price"
#~ msgstr "Prix d'un composant du pack"
#~ msgid "Pack Type"
#~ msgstr "Type de pack"
#~ msgid "kg"
#~ msgstr "kg"

View file

@ -0,0 +1,289 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * product_pack
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-02-12 16: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: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__create_uid
msgid "Created by"
msgstr "Creato da"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__create_date
msgid "Created on"
msgstr "Creato il"
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_type__detailed
msgid "Detailed"
msgstr "Dettagliato"
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_component_price__detailed
msgid "Detailed per component"
msgstr "Detagliato per componente"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__display_name
msgid "Display Name"
msgstr "Nome visualizzato"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__used_in_pack_line_ids
#: model:ir.model.fields,field_description:product_pack.field_product_template__used_in_pack_line_ids
msgid "Found in packs"
msgstr "Si trova nei colli"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__id
msgid "ID"
msgstr "ID"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_modifiable
#: model:ir.model.fields,help:product_pack.field_product_template__pack_modifiable
msgid ""
"If you check this field yo will be able to edit sale/purchase order line "
"relate to its component"
msgstr ""
"Se si seleziona questo campo si potrà modificare la riga ordine vendita/"
"acquisto relativa a questo componente"
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_component_price__ignored
msgid "Ignored"
msgstr "Ignorato"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_ok
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_ok
msgid "Is Pack?"
msgstr "È collo?"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_ok
#: model:ir.model.fields,help:product_pack.field_product_template__pack_ok
msgid "Is a Product Pack?"
msgstr "È un collo prodotto?"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line____last_update
msgid "Last Modified on"
msgstr "Ultima modifica il"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__write_uid
msgid "Last Updated by"
msgstr "Ultimo aggiornamento di"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__write_date
msgid "Last Updated on"
msgstr "Ultimo aggiornamento il"
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_type__non_detailed
msgid "Non Detailed"
msgstr "Non dettagliato"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_component_price
#: model:ir.model.fields,help:product_pack.field_product_template__pack_component_price
msgid ""
"On sale orders or purchase orders:\n"
"* Detailed per component: Detail lines with prices.\n"
"* Totalized in main product: Detail lines merging lines prices on pack (don't show component prices).\n"
"* Ignored: Use product pack price (ignore detail line prices)."
msgstr ""
"Negli ordini di vendita o di acquisto:\n"
"* Dettagliato per componente: dettaglio righe con prezzi.\n"
"* Totalizzate nel prodotto principale: dettaglio righe unendo i prezzi delle "
"righe nel collo (non mostra i prezzi dei componenti).\n"
"* Ignorate: usa il prezzo prodotto del collo (ignora il dettaglio prezzi "
"riga)."
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_type
#: model:ir.model.fields,help:product_pack.field_product_template__pack_type
msgid ""
"On sale orders or purchase orders:\n"
"* Detailed: Display components individually in the sale order.\n"
"* Non Detailed: Do not display components individually in the sale order."
msgstr ""
"Negli ordini di ventita o di acquisto:\n"
"* Dettagliati: visualizza i singoli componenti nell'ordine di vendita.\n"
"* Non detagliati: non visualizza i singoli componenti nell'ordine di vendita."
#. module: product_pack
#: model_terms:ir.ui.view,arch_db:product_pack.product_template_form_view
msgid "Pack"
msgstr "Pacco"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_detailed_components_product_template
msgid "Pack CPU (Detailed - Displayed Components Price)"
msgstr "CPU collo (Dettagliato - prezzo componenti visualizzati)"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_detailed_ignored_product_template
msgid "Pack CPU (Detailed - Ignored Components Price)"
msgstr "CPU collo (Dettagliato - prezzo componenti ignorati)"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_detailed_totalized_product_template
msgid "Pack CPU (Detailed - Totalized Components Price)"
msgstr "CPU collo (Dettagliato - prezzo componenti totali)"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_non_detailed_product_template
msgid "Pack CPU (Non Detailed - Totalized Components Price)"
msgstr "CPU collo (Non dettagliato - prezzo componenti totali)"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_component_price
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_component_price
msgid "Pack Component Price"
msgstr "Prezzo componente collo"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_type
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_type
msgid "Pack Display Type"
msgstr "Visualizza tipo collo"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_modifiable
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_modifiable
msgid "Pack Modifiable"
msgstr "Collo modificabile"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_modifiable_invisible
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_modifiable_invisible
msgid "Pack Modifiable Invisible"
msgstr "Collo modificabile invisibile"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_pc_detailed_components_product_template
msgid "Pack PC (Detailed - Displayed Components Price)"
msgstr "PC collo (Dettagliato - prezzo componenti visualizzati)"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_pc_detailed_ignored_product_template
msgid "Pack PC (Detailed - Ignored Components Price)"
msgstr "PC collo (Dettagliato - prezzo componenti ignorati)"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_pc_detailed_totalized_product_template
msgid "Pack PC (Detailed - Totalized Components Price)"
msgstr "PC collo (Dettagliato - prezzo componenti totali)"
#. module: product_pack
#: model_terms:ir.ui.view,arch_db:product_pack.product_pack_line_form
msgid "Pack Product Line"
msgstr "Riga prdotto collo"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_line_ids
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_line_ids
#: model_terms:ir.ui.view,arch_db:product_pack.nan_product_pack_form
#: model_terms:ir.ui.view,arch_db:product_pack.product_template_only_form_view
msgid "Pack Products"
msgstr "Prodotti collo"
#. module: product_pack
#. odoo-python
#: code:addons/product_pack/models/product_template.py:0
#: code:addons/product_pack/models/product_template.py:0
#, python-format
msgid ""
"Pack lines products company must be the same as the parent product company"
msgstr ""
"L'azienda dei prodotti delle righe collo deve essere la stessa del prodotto "
"padre"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__used_in_pack_line_ids
#: model:ir.model.fields,help:product_pack.field_product_template__used_in_pack_line_ids
msgid "Packs where product is used."
msgstr "Colli dove è usato il prdotto."
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__parent_product_id
msgid "Parent Product"
msgstr "Prodotto padre"
#. module: product_pack
#: model:ir.model,name:product_pack.model_product_template
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__product_id
msgid "Product"
msgstr "Prodotto"
#. module: product_pack
#: model:ir.model,name:product_pack.model_product_product
msgid "Product Variant"
msgstr "Variante prodotto"
#. module: product_pack
#: model:ir.model.constraint,message:product_pack.constraint_product_pack_line_product_uniq
msgid "Product must be only once on a pack!"
msgstr "Il prdotto deve essere unico per collo!"
#. module: product_pack
#: model:ir.model,name:product_pack.model_product_pack_line
msgid "Product pack line"
msgstr "Riga collo prodotto"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_line_ids
#: model:ir.model.fields,help:product_pack.field_product_template__pack_line_ids
msgid "Products that are part of this pack."
msgstr "Prodotti che sono presenti in questo collo."
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__quantity
msgid "Quantity"
msgstr "Quantità"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_modifiable_invisible
#: model:ir.model.fields,help:product_pack.field_product_template__pack_modifiable_invisible
msgid ""
"Technical field in order to compute the availability of the Pack Modifiable "
"field"
msgstr ""
"Campo tecnico per calcolare la disponibilità del campo collo modificabile"
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_component_price__totalized
msgid "Totalized in main product"
msgstr "Totali nel prodotto padre"
#. module: product_pack
#. odoo-python
#: code:addons/product_pack/models/product_pack_line.py:0
#, python-format
msgid ""
"You cannot set recursive packs.\n"
"Product id: %s"
msgstr ""
"Non si possono impostare colli ricorsivi.\n"
"ID prodotto: %s"
#. module: product_pack
#: model_terms:ir.ui.view,arch_db:product_pack.product_template_only_form_view
msgid "You must save first to add pack lines"
msgstr "Bisogna salvare prima di aggiungere righe collo"

View file

@ -0,0 +1,273 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * product_pack
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 13.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2020-12-14 00:28+0000\n"
"Last-Translator: Bosd <c5e2fd43-d292-4c90-9d1f-74ff3436329a@anonaddy.me>\n"
"Language-Team: none\n"
"Language: nl\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.3.2\n"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__create_uid
msgid "Created by"
msgstr "Aangemaakt door"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__create_date
msgid "Created on"
msgstr "Aangemaakt op"
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_type__detailed
msgid "Detailed"
msgstr "Gedetailleerd"
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_component_price__detailed
msgid "Detailed per component"
msgstr "Gedetailleerd per component"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__display_name
msgid "Display Name"
msgstr "Weergavenaam"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__used_in_pack_line_ids
#: model:ir.model.fields,field_description:product_pack.field_product_template__used_in_pack_line_ids
msgid "Found in packs"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__id
msgid "ID"
msgstr "ID"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_modifiable
#: model:ir.model.fields,help:product_pack.field_product_template__pack_modifiable
msgid ""
"If you check this field yo will be able to edit sale/purchase order line "
"relate to its component"
msgstr ""
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_component_price__ignored
msgid "Ignored"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_ok
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_ok
msgid "Is Pack?"
msgstr "Is verpakking?"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_ok
#: model:ir.model.fields,help:product_pack.field_product_template__pack_ok
msgid "Is a Product Pack?"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line____last_update
msgid "Last Modified on"
msgstr "Laatst gewijzigt op"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__write_uid
msgid "Last Updated by"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__write_date
msgid "Last Updated on"
msgstr ""
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_type__non_detailed
msgid "Non Detailed"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_component_price
#: model:ir.model.fields,help:product_pack.field_product_template__pack_component_price
msgid ""
"On sale orders or purchase orders:\n"
"* Detailed per component: Detail lines with prices.\n"
"* Totalized in main product: Detail lines merging lines prices on pack "
"(don't show component prices).\n"
"* Ignored: Use product pack price (ignore detail line prices)."
msgstr ""
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_type
#: model:ir.model.fields,help:product_pack.field_product_template__pack_type
msgid ""
"On sale orders or purchase orders:\n"
"* Detailed: Display components individually in the sale order.\n"
"* Non Detailed: Do not display components individually in the sale order."
msgstr ""
#. module: product_pack
#: model_terms:ir.ui.view,arch_db:product_pack.product_template_form_view
msgid "Pack"
msgstr ""
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_detailed_components_product_template
msgid "Pack CPU (Detailed - Displayed Components Price)"
msgstr ""
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_detailed_ignored_product_template
msgid "Pack CPU (Detailed - Ignored Components Price)"
msgstr ""
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_detailed_totalized_product_template
msgid "Pack CPU (Detailed - Totalized Components Price)"
msgstr ""
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_non_detailed_product_template
msgid "Pack CPU (Non Detailed - Totalized Components Price)"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_component_price
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_component_price
msgid "Pack Component Price"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_type
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_type
msgid "Pack Display Type"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_modifiable
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_modifiable
msgid "Pack Modifiable"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_modifiable_invisible
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_modifiable_invisible
msgid "Pack Modifiable Invisible"
msgstr ""
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_pc_detailed_components_product_template
msgid "Pack PC (Detailed - Displayed Components Price)"
msgstr ""
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_pc_detailed_ignored_product_template
msgid "Pack PC (Detailed - Ignored Components Price)"
msgstr ""
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_pc_detailed_totalized_product_template
msgid "Pack PC (Detailed - Totalized Components Price)"
msgstr ""
#. module: product_pack
#: model_terms:ir.ui.view,arch_db:product_pack.product_pack_line_form
msgid "Pack Product Line"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_line_ids
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_line_ids
#: model_terms:ir.ui.view,arch_db:product_pack.nan_product_pack_form
#: model_terms:ir.ui.view,arch_db:product_pack.product_template_only_form_view
msgid "Pack Products"
msgstr ""
#. module: product_pack
#. odoo-python
#: code:addons/product_pack/models/product_template.py:0
#, python-format
msgid ""
"Pack lines products company must be the same as the parent product company"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__used_in_pack_line_ids
#: model:ir.model.fields,help:product_pack.field_product_template__used_in_pack_line_ids
msgid "Packs where product is used."
msgstr ""
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__parent_product_id
msgid "Parent Product"
msgstr ""
#. module: product_pack
#: model:ir.model,name:product_pack.model_product_template
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__product_id
msgid "Product"
msgstr ""
#. module: product_pack
#: model:ir.model,name:product_pack.model_product_product
msgid "Product Variant"
msgstr ""
#. module: product_pack
#: model:ir.model.constraint,message:product_pack.constraint_product_pack_line_product_uniq
msgid "Product must be only once on a pack!"
msgstr ""
#. module: product_pack
#: model:ir.model,name:product_pack.model_product_pack_line
msgid "Product pack line"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_line_ids
#: model:ir.model.fields,help:product_pack.field_product_template__pack_line_ids
msgid "Products that are part of this pack."
msgstr ""
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__quantity
msgid "Quantity"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_modifiable_invisible
#: model:ir.model.fields,help:product_pack.field_product_template__pack_modifiable_invisible
msgid ""
"Technical field in order to compute the availability of the Pack Modifiable "
"field"
msgstr ""
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_component_price__totalized
msgid "Totalized in main product"
msgstr ""
#. module: product_pack
#. odoo-python
#: code:addons/product_pack/models/product_pack_line.py:0
#, python-format
msgid ""
"You cannot set recursive packs.\n"
"Product id: %s"
msgstr ""
#. module: product_pack
#: model_terms:ir.ui.view,arch_db:product_pack.product_template_only_form_view
msgid "You must save first to add pack lines"
msgstr ""

View file

@ -0,0 +1,270 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * product_pack
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.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: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__create_uid
msgid "Created by"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__create_date
msgid "Created on"
msgstr ""
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_type__detailed
msgid "Detailed"
msgstr ""
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_component_price__detailed
msgid "Detailed per component"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__display_name
msgid "Display Name"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__used_in_pack_line_ids
#: model:ir.model.fields,field_description:product_pack.field_product_template__used_in_pack_line_ids
msgid "Found in packs"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__id
msgid "ID"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_modifiable
#: model:ir.model.fields,help:product_pack.field_product_template__pack_modifiable
msgid ""
"If you check this field yo will be able to edit sale/purchase order line "
"relate to its component"
msgstr ""
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_component_price__ignored
msgid "Ignored"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_ok
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_ok
msgid "Is Pack?"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_ok
#: model:ir.model.fields,help:product_pack.field_product_template__pack_ok
msgid "Is a Product Pack?"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line____last_update
msgid "Last Modified on"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__write_uid
msgid "Last Updated by"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__write_date
msgid "Last Updated on"
msgstr ""
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_type__non_detailed
msgid "Non Detailed"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_component_price
#: model:ir.model.fields,help:product_pack.field_product_template__pack_component_price
msgid ""
"On sale orders or purchase orders:\n"
"* Detailed per component: Detail lines with prices.\n"
"* Totalized in main product: Detail lines merging lines prices on pack (don't show component prices).\n"
"* Ignored: Use product pack price (ignore detail line prices)."
msgstr ""
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_type
#: model:ir.model.fields,help:product_pack.field_product_template__pack_type
msgid ""
"On sale orders or purchase orders:\n"
"* Detailed: Display components individually in the sale order.\n"
"* Non Detailed: Do not display components individually in the sale order."
msgstr ""
#. module: product_pack
#: model_terms:ir.ui.view,arch_db:product_pack.product_template_form_view
msgid "Pack"
msgstr ""
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_detailed_components_product_template
msgid "Pack CPU (Detailed - Displayed Components Price)"
msgstr ""
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_detailed_ignored_product_template
msgid "Pack CPU (Detailed - Ignored Components Price)"
msgstr ""
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_detailed_totalized_product_template
msgid "Pack CPU (Detailed - Totalized Components Price)"
msgstr ""
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_non_detailed_product_template
msgid "Pack CPU (Non Detailed - Totalized Components Price)"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_component_price
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_component_price
msgid "Pack Component Price"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_type
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_type
msgid "Pack Display Type"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_modifiable
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_modifiable
msgid "Pack Modifiable"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_modifiable_invisible
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_modifiable_invisible
msgid "Pack Modifiable Invisible"
msgstr ""
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_pc_detailed_components_product_template
msgid "Pack PC (Detailed - Displayed Components Price)"
msgstr ""
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_pc_detailed_ignored_product_template
msgid "Pack PC (Detailed - Ignored Components Price)"
msgstr ""
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_pc_detailed_totalized_product_template
msgid "Pack PC (Detailed - Totalized Components Price)"
msgstr ""
#. module: product_pack
#: model_terms:ir.ui.view,arch_db:product_pack.product_pack_line_form
msgid "Pack Product Line"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_line_ids
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_line_ids
#: model_terms:ir.ui.view,arch_db:product_pack.nan_product_pack_form
#: model_terms:ir.ui.view,arch_db:product_pack.product_template_only_form_view
msgid "Pack Products"
msgstr ""
#. module: product_pack
#. odoo-python
#: code:addons/product_pack/models/product_template.py:0
#: code:addons/product_pack/models/product_template.py:0
#, python-format
msgid ""
"Pack lines products company must be the same as the parent product company"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__used_in_pack_line_ids
#: model:ir.model.fields,help:product_pack.field_product_template__used_in_pack_line_ids
msgid "Packs where product is used."
msgstr ""
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__parent_product_id
msgid "Parent Product"
msgstr ""
#. module: product_pack
#: model:ir.model,name:product_pack.model_product_template
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__product_id
msgid "Product"
msgstr ""
#. module: product_pack
#: model:ir.model,name:product_pack.model_product_product
msgid "Product Variant"
msgstr ""
#. module: product_pack
#: model:ir.model.constraint,message:product_pack.constraint_product_pack_line_product_uniq
msgid "Product must be only once on a pack!"
msgstr ""
#. module: product_pack
#: model:ir.model,name:product_pack.model_product_pack_line
msgid "Product pack line"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_line_ids
#: model:ir.model.fields,help:product_pack.field_product_template__pack_line_ids
msgid "Products that are part of this pack."
msgstr ""
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__quantity
msgid "Quantity"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_modifiable_invisible
#: model:ir.model.fields,help:product_pack.field_product_template__pack_modifiable_invisible
msgid ""
"Technical field in order to compute the availability of the Pack Modifiable "
"field"
msgstr ""
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_component_price__totalized
msgid "Totalized in main product"
msgstr ""
#. module: product_pack
#. odoo-python
#: code:addons/product_pack/models/product_pack_line.py:0
#, python-format
msgid ""
"You cannot set recursive packs.\n"
"Product id: %s"
msgstr ""
#. module: product_pack
#: model_terms:ir.ui.view,arch_db:product_pack.product_template_only_form_view
msgid "You must save first to add pack lines"
msgstr ""

View file

@ -0,0 +1,306 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * product_pack
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-12-03 18:21+0000\n"
"Last-Translator: Peter Romão <peterromao@yahoo.co.uk>\n"
"Language-Team: none\n"
"Language: pt\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: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__create_uid
msgid "Created by"
msgstr "Criado por"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__create_date
msgid "Created on"
msgstr "Criado em"
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_type__detailed
msgid "Detailed"
msgstr "Detalhado"
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_component_price__detailed
msgid "Detailed per component"
msgstr "Detalhado por componente"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__display_name
msgid "Display Name"
msgstr "Nome a Exibir"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__used_in_pack_line_ids
#: model:ir.model.fields,field_description:product_pack.field_product_template__used_in_pack_line_ids
msgid "Found in packs"
msgstr "Aparece em composições"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__id
msgid "ID"
msgstr "ID"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_modifiable
#: model:ir.model.fields,help:product_pack.field_product_template__pack_modifiable
msgid ""
"If you check this field yo will be able to edit sale/purchase order line "
"relate to its component"
msgstr ""
"Se assinalar este campo, poderá editar linhas de encomendas de compra/venda "
"relacionadas com o seu componente"
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_component_price__ignored
msgid "Ignored"
msgstr "Ignorado"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_ok
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_ok
msgid "Is Pack?"
msgstr "É Pack?"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_ok
#: model:ir.model.fields,help:product_pack.field_product_template__pack_ok
msgid "Is a Product Pack?"
msgstr "É uma Composição de Artigos?"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line____last_update
msgid "Last Modified on"
msgstr "Modif. pela Última Vez em"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__write_uid
msgid "Last Updated by"
msgstr "Atualiz. pela Última Vez por"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__write_date
msgid "Last Updated on"
msgstr "Atualiz. pela Última Vez em"
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_type__non_detailed
msgid "Non Detailed"
msgstr "Não Detalhado"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_component_price
#: model:ir.model.fields,help:product_pack.field_product_template__pack_component_price
msgid ""
"On sale orders or purchase orders:\n"
"* Detailed per component: Detail lines with prices.\n"
"* Totalized in main product: Detail lines merging lines prices on pack "
"(don't show component prices).\n"
"* Ignored: Use product pack price (ignore detail line prices)."
msgstr ""
"Em encomendas de compra ou venda:\n"
"* Detalhado por componente: Linha de detalhes com preços.\n"
"* Totalizado no artigo principal: Linhas de detalhes fundindo os preços das "
"linhas na composição (não mostrar preços dos componentes).\n"
"* Ignorado: Usar o preço do artigo composto (ignorar preços das linhas de "
"detalhes)."
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_type
#: model:ir.model.fields,help:product_pack.field_product_template__pack_type
msgid ""
"On sale orders or purchase orders:\n"
"* Detailed: Display components individually in the sale order.\n"
"* Non Detailed: Do not display components individually in the sale order."
msgstr ""
"Em encomendas de compra ou venda:\n"
"* Detalhado: Exibir os componentes individualmente no documento de venda.\n"
"*Não Detalhado: Não exibir os componentes individualmente no documento de "
"venda."
#. module: product_pack
#: model_terms:ir.ui.view,arch_db:product_pack.product_template_form_view
msgid "Pack"
msgstr "Composição"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_detailed_components_product_template
msgid "Pack CPU (Detailed - Displayed Components Price)"
msgstr "Composição CPU (Detalhado - Preço dos Componentes Exibido)"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_detailed_ignored_product_template
msgid "Pack CPU (Detailed - Ignored Components Price)"
msgstr "Composição CPU (Detalhado - Preço dos Componentes Ignorado)"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_detailed_totalized_product_template
msgid "Pack CPU (Detailed - Totalized Components Price)"
msgstr "Composição CPU (Detalhado - Preço dos Componentes Totalizado)"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_non_detailed_product_template
msgid "Pack CPU (Non Detailed - Totalized Components Price)"
msgstr "Composição CPU (Não Detalhado - Preço dos Componentes Totalizado)"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_component_price
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_component_price
msgid "Pack Component Price"
msgstr "Preço do Componente da Composição"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_type
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_type
msgid "Pack Display Type"
msgstr "Tipo de Exibição da Composição"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_modifiable
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_modifiable
msgid "Pack Modifiable"
msgstr "Composição Alterável"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_modifiable_invisible
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_modifiable_invisible
msgid "Pack Modifiable Invisible"
msgstr "Composição Alterável Não Visível"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_pc_detailed_components_product_template
msgid "Pack PC (Detailed - Displayed Components Price)"
msgstr "Composição PC (Detalhado - Preço dos Componentes Exibido)"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_pc_detailed_ignored_product_template
msgid "Pack PC (Detailed - Ignored Components Price)"
msgstr "Composição PC (Detalhado - Preço dos Componentes Ignorado)"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_pc_detailed_totalized_product_template
msgid "Pack PC (Detailed - Totalized Components Price)"
msgstr "Composição PC (Detalhado - Preço dos Componentes Totalizado)"
#. module: product_pack
#: model_terms:ir.ui.view,arch_db:product_pack.product_pack_line_form
msgid "Pack Product Line"
msgstr "Linha de Composição de Artigos"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_line_ids
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_line_ids
#: model_terms:ir.ui.view,arch_db:product_pack.nan_product_pack_form
#: model_terms:ir.ui.view,arch_db:product_pack.product_template_only_form_view
msgid "Pack Products"
msgstr "Composição de Artigos"
#. module: product_pack
#. odoo-python
#: code:addons/product_pack/models/product_template.py:0
#, python-format
msgid ""
"Pack lines products company must be the same as the parent product company"
msgstr ""
"A empresa das linhas dos artigos compostos tem de ser a mesma que a do "
"artigo ascendente"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__used_in_pack_line_ids
#: model:ir.model.fields,help:product_pack.field_product_template__used_in_pack_line_ids
msgid "Packs where product is used."
msgstr "Composições em que o artigo é usado."
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__parent_product_id
msgid "Parent Product"
msgstr "Artigo Ascendente"
#. module: product_pack
#: model:ir.model,name:product_pack.model_product_template
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__product_id
msgid "Product"
msgstr "Artigo"
#. module: product_pack
#: model:ir.model,name:product_pack.model_product_product
msgid "Product Variant"
msgstr "Variante de Artigo"
#. module: product_pack
#: model:ir.model.constraint,message:product_pack.constraint_product_pack_line_product_uniq
msgid "Product must be only once on a pack!"
msgstr "O artigo só pode aparecer uma vez na composição!"
#. module: product_pack
#: model:ir.model,name:product_pack.model_product_pack_line
msgid "Product pack line"
msgstr "Linha do artigo composto"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_line_ids
#: model:ir.model.fields,help:product_pack.field_product_template__pack_line_ids
msgid "Products that are part of this pack."
msgstr "Artigos pertencentes a esta composição."
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__quantity
msgid "Quantity"
msgstr "Quantidade"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_modifiable_invisible
#: model:ir.model.fields,help:product_pack.field_product_template__pack_modifiable_invisible
msgid ""
"Technical field in order to compute the availability of the Pack Modifiable "
"field"
msgstr ""
"Campo técnico para cálculo da disponibilidade do campo Composição Alterável"
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_component_price__totalized
msgid "Totalized in main product"
msgstr "Totalizado no artigo principal"
#. module: product_pack
#. odoo-python
#: code:addons/product_pack/models/product_pack_line.py:0
#, python-format
msgid ""
"You cannot set recursive packs.\n"
"Product id: %s"
msgstr ""
"Não pode atribuir composições recursivas.\n"
"Id de artigo: %s"
#. module: product_pack
#: model_terms:ir.ui.view,arch_db:product_pack.product_template_only_form_view
msgid "You must save first to add pack lines"
msgstr "Para adicionar linhas à composição, deve primeiro guardar alterações"
#~ msgid "Product Template"
#~ msgstr "Modelo de Produto"
#, fuzzy
#~ msgid "Units"
#~ msgstr "Unidade(s)"
#~ msgid "Pack Product Lines"
#~ msgstr "Linhas de Pack de Produtos"
#~ msgid "Pack component price"
#~ msgstr "Preço do componente do pack"
#~ msgid "Pack Type"
#~ msgstr "Tipo de Pack"

View file

@ -0,0 +1,297 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * product_pack
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2022-02-17 12:16+0000\n"
"Last-Translator: Simon S <simon.stromberg@vertel.se>\n"
"Language-Team: none\n"
"Language: sv\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.3.2\n"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__create_uid
msgid "Created by"
msgstr "Skapad av"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__create_date
msgid "Created on"
msgstr "Skapad den"
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_type__detailed
msgid "Detailed"
msgstr "Detaljerad"
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_component_price__detailed
msgid "Detailed per component"
msgstr "Detaljerad per beståndsdel"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__display_name
msgid "Display Name"
msgstr "Visningsnamn"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__used_in_pack_line_ids
#: model:ir.model.fields,field_description:product_pack.field_product_template__used_in_pack_line_ids
msgid "Found in packs"
msgstr "Finns i pack"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__id
msgid "ID"
msgstr "ID"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_modifiable
#: model:ir.model.fields,help:product_pack.field_product_template__pack_modifiable
msgid ""
"If you check this field yo will be able to edit sale/purchase order line "
"relate to its component"
msgstr ""
"Om du kryssar i det här fältet så kommer du att kunna redigera den "
"relaterade orderraden för försäljning/köpordern"
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_component_price__ignored
msgid "Ignored"
msgstr "Ignorerad"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_ok
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_ok
msgid "Is Pack?"
msgstr "Är ett pack?"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_ok
#: model:ir.model.fields,help:product_pack.field_product_template__pack_ok
msgid "Is a Product Pack?"
msgstr "Är ett produkt pack?"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line____last_update
msgid "Last Modified on"
msgstr "Senast ändrad"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__write_uid
msgid "Last Updated by"
msgstr "Senast uppdaterad av"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__write_date
msgid "Last Updated on"
msgstr "Senast uppdaterad den"
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_type__non_detailed
msgid "Non Detailed"
msgstr "Icke detaljerad"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_component_price
#: model:ir.model.fields,help:product_pack.field_product_template__pack_component_price
msgid ""
"On sale orders or purchase orders:\n"
"* Detailed per component: Detail lines with prices.\n"
"* Totalized in main product: Detail lines merging lines prices on pack "
"(don't show component prices).\n"
"* Ignored: Use product pack price (ignore detail line prices)."
msgstr ""
"För sälj eller köpordrar:\n"
"* Detaljerade per beståndsdel: Detaljrader med priser.\n"
"* Summerade i huvudprodukten: Detaljrader med sammanslagna packpriser (visar "
"ej beståndsdelarnas priser).\n"
"* Ignorerade: Använd produkt-packpriser (ignorera detaljradernas priser)."
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_type
#: model:ir.model.fields,help:product_pack.field_product_template__pack_type
msgid ""
"On sale orders or purchase orders:\n"
"* Detailed: Display components individually in the sale order.\n"
"* Non Detailed: Do not display components individually in the sale order."
msgstr ""
"För sälj eller köpordrar:\n"
"* Detaljerad: Visa individuella beståndsdelar i säljordern.\n"
"* Icke detaljerad: Visa inte individuella beståndsdelar i säljordern."
#. module: product_pack
#: model_terms:ir.ui.view,arch_db:product_pack.product_template_form_view
msgid "Pack"
msgstr "Pack"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_detailed_components_product_template
msgid "Pack CPU (Detailed - Displayed Components Price)"
msgstr "Pack CPU (Detaljerad - Visa pris för beståndsdelar)"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_detailed_ignored_product_template
msgid "Pack CPU (Detailed - Ignored Components Price)"
msgstr "Pack CPU (Detaljerad - Ignorera priser för beståndsdelar)"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_detailed_totalized_product_template
msgid "Pack CPU (Detailed - Totalized Components Price)"
msgstr "Pack CPU (Detaljerad - Summerade priser för beståndsdelar)"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_cpu_non_detailed_product_template
msgid "Pack CPU (Non Detailed - Totalized Components Price)"
msgstr "Pack CPU (Icke detaljerad - Summerade priser för beståndsdelar)"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_component_price
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_component_price
msgid "Pack Component Price"
msgstr ""
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_type
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_type
msgid "Pack Display Type"
msgstr "Pack visningstyp"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_modifiable
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_modifiable
msgid "Pack Modifiable"
msgstr "Pack modifierbart"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_modifiable_invisible
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_modifiable_invisible
msgid "Pack Modifiable Invisible"
msgstr ""
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_pc_detailed_components_product_template
msgid "Pack PC (Detailed - Displayed Components Price)"
msgstr "Pack PC (Detaljerad - Visa pris för beståndsdelar)"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_pc_detailed_ignored_product_template
msgid "Pack PC (Detailed - Ignored Components Price)"
msgstr "Pack PC (Detaljerad - Ignorera priser för beståndsdelar)"
#. module: product_pack
#: model:product.template,name:product_pack.product_pack_pc_detailed_totalized_product_template
msgid "Pack PC (Detailed - Totalized Components Price)"
msgstr "Pack PC (Icke detaljerad - Summerade priser för beståndsdelar)"
#. module: product_pack
#: model_terms:ir.ui.view,arch_db:product_pack.product_pack_line_form
msgid "Pack Product Line"
msgstr "Pack produktrad"
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_product__pack_line_ids
#: model:ir.model.fields,field_description:product_pack.field_product_template__pack_line_ids
#: model_terms:ir.ui.view,arch_db:product_pack.nan_product_pack_form
#: model_terms:ir.ui.view,arch_db:product_pack.product_template_only_form_view
msgid "Pack Products"
msgstr "Pack produkter"
#. module: product_pack
#. odoo-python
#: code:addons/product_pack/models/product_template.py:0
#, python-format
msgid ""
"Pack lines products company must be the same as the parent product company"
msgstr "Produktbolaget för packraderna måste vara samma som moderbolaget"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__used_in_pack_line_ids
#: model:ir.model.fields,help:product_pack.field_product_template__used_in_pack_line_ids
msgid "Packs where product is used."
msgstr "Pack där produkt används."
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__parent_product_id
msgid "Parent Product"
msgstr "Moderprodukt"
#. module: product_pack
#: model:ir.model,name:product_pack.model_product_template
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__product_id
msgid "Product"
msgstr "Produkt"
#. module: product_pack
#: model:ir.model,name:product_pack.model_product_product
msgid "Product Variant"
msgstr ""
#. module: product_pack
#: model:ir.model.constraint,message:product_pack.constraint_product_pack_line_product_uniq
msgid "Product must be only once on a pack!"
msgstr "Produkten får endast förekomma en gång per pack!"
#. module: product_pack
#: model:ir.model,name:product_pack.model_product_pack_line
msgid "Product pack line"
msgstr "Produkt packrad"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_line_ids
#: model:ir.model.fields,help:product_pack.field_product_template__pack_line_ids
msgid "Products that are part of this pack."
msgstr "Produkter som tillhör detta pack."
#. module: product_pack
#: model:ir.model.fields,field_description:product_pack.field_product_pack_line__quantity
msgid "Quantity"
msgstr "Kvantitet"
#. module: product_pack
#: model:ir.model.fields,help:product_pack.field_product_product__pack_modifiable_invisible
#: model:ir.model.fields,help:product_pack.field_product_template__pack_modifiable_invisible
msgid ""
"Technical field in order to compute the availability of the Pack Modifiable "
"field"
msgstr ""
#. module: product_pack
#: model:ir.model.fields.selection,name:product_pack.selection__product_template__pack_component_price__totalized
msgid "Totalized in main product"
msgstr "Summerade i huvudprodukten"
#. module: product_pack
#. odoo-python
#: code:addons/product_pack/models/product_pack_line.py:0
#, python-format
msgid ""
"You cannot set recursive packs.\n"
"Product id: %s"
msgstr ""
"Du kan inte sätta rekursiva pack.\n"
"Produkt id: %s"
#. module: product_pack
#: model_terms:ir.ui.view,arch_db:product_pack.product_template_only_form_view
msgid "You must save first to add pack lines"
msgstr "Du måste spara innan du kan addera packrader"
#~ msgid "Product Template"
#~ msgstr "Produktmall"
#~ msgid "Units"
#~ msgstr "Enheter"
#~ msgid "Pack Product Lines"
#~ msgstr "Pack produktrader"
#~ msgid "Pack component price"
#~ msgstr "Packpris för beståndsdel"

View file

@ -0,0 +1,5 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import product_pack_line
from . import product_product
from . import product_template

View file

@ -0,0 +1,59 @@
# Copyright 2019 Tecnativa - Ernesto Tejeda
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import _, api, fields, models
from odoo.exceptions import ValidationError
class ProductPackLine(models.Model):
_name = "product.pack.line"
_description = "Product pack line"
_rec_name = "product_id"
parent_product_id = fields.Many2one(
"product.product",
"Parent Product",
ondelete="cascade",
index=True,
required=True,
)
quantity = fields.Float(
required=True,
default=1.0,
digits="Product UoS",
)
product_id = fields.Many2one(
"product.product",
"Product",
ondelete="cascade",
index=True,
required=True,
)
# because on expand_pack_line we are searching for existing product, we
# need to enforce this condition
_sql_constraints = [
(
"product_uniq",
"unique(parent_product_id, product_id)",
"Product must be only once on a pack!",
),
]
@api.constrains("product_id")
def _check_recursion(self):
"""Check recursion on packs."""
for line in self:
parent_product = line.parent_product_id
pack_lines = line
while pack_lines:
if parent_product in pack_lines.mapped("product_id"):
raise ValidationError(
_("You cannot set recursive packs.\nProduct id: %s")
% parent_product.id
)
pack_lines = pack_lines.mapped("product_id.pack_line_ids")
def get_price(self):
self.ensure_one()
return self.product_id.lst_price * self.quantity

View file

@ -0,0 +1,87 @@
# Copyright 2019 Tecnativa - Ernesto Tejeda
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import api, fields, models
class ProductProduct(models.Model):
_inherit = "product.product"
pack_line_ids = fields.One2many(
"product.pack.line",
"parent_product_id",
"Pack Products",
help="Products that are part of this pack.",
)
used_in_pack_line_ids = fields.One2many(
"product.pack.line",
"product_id",
"Found in packs",
help="Packs where product is used.",
)
def get_pack_lines(self):
"""Returns the content (lines) of the packs.
By default, return all the pack_line_ids, but that function
can be overloaded to introduce filtering function by date, etc..."""
return self.mapped("pack_line_ids")
def split_pack_products(self):
packs = self.filtered(lambda p: p.product_tmpl_id._is_pack_to_be_handled())
return packs, (self - packs)
def price_compute(
self, price_type, uom=False, currency=False, company=False, date=False
):
packs, no_packs = self.split_pack_products()
prices = super(ProductProduct, no_packs).price_compute(
price_type, uom, currency, company, date
)
for product in packs.with_context(prefetch_fields=False):
pack_price = 0.0
for pack_line in product.sudo().pack_line_ids:
pack_price += pack_line.get_price()
pricelist_id_or_name = self._context.get("pricelist")
# if there is a pricelist on the context the returned prices are on
# that currency but, if the pack product has a different currency
# it will be converted again by pp._compute_price_rule, so if
# that is the case we convert the amounts to the pack currency
if pricelist_id_or_name:
pricelist = None
if isinstance(pricelist_id_or_name, list):
pricelist_id_or_name = pricelist_id_or_name[0]
if isinstance(pricelist_id_or_name, str):
pricelist_name_search = self.env["product.pricelist"].name_search(
pricelist_id_or_name, operator="=", limit=1
)
if pricelist_name_search:
pricelist = self.env["product.pricelist"].browse(
[pricelist_name_search[0][0]]
)
elif isinstance(pricelist_id_or_name, int):
pricelist = self.env["product.pricelist"].browse(
pricelist_id_or_name
)
if pricelist and pricelist.currency_id != product.currency_id:
pack_price = pricelist.currency_id._convert(
pack_price,
product.currency_id,
self.company_id or self.env.company,
fields.Date.today(),
)
prices[product.id] = pack_price
return prices
@api.depends("list_price", "price_extra")
def _compute_product_lst_price(self):
packs, no_packs = self.split_pack_products()
ret_val = super(ProductProduct, no_packs)._compute_product_lst_price()
to_uom = None
if "uom" in self._context:
to_uom = self.env["uom.uom"].browse([self._context["uom"]])
for product in packs:
list_price = product.price_compute("list_price").get(product.id)
if to_uom:
list_price = product.uom_id._compute_price(list_price, to_uom)
product.lst_price = list_price + product.price_extra
return ret_val

View file

@ -0,0 +1,137 @@
# Copyright 2019 Tecnativa - Ernesto Tejeda
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import _, api, fields, models
from odoo.exceptions import ValidationError
class ProductTemplate(models.Model):
_inherit = "product.template"
pack_type = fields.Selection(
[("detailed", "Detailed"), ("non_detailed", "Non Detailed")],
string="Pack Display Type",
help="On sale orders or purchase orders:\n"
"* Detailed: Display components individually in the sale order.\n"
"* Non Detailed: Do not display components individually in the"
" sale order.",
)
pack_component_price = fields.Selection(
[
("detailed", "Detailed per component"),
("totalized", "Totalized in main product"),
("ignored", "Ignored"),
],
help="On sale orders or purchase orders:\n"
"* Detailed per component: Detail lines with prices.\n"
"* Totalized in main product: Detail lines merging "
"lines prices on pack (don't show component prices).\n"
"* Ignored: Use product pack price (ignore detail line prices).",
)
pack_ok = fields.Boolean(
"Is Pack?",
help="Is a Product Pack?",
)
pack_line_ids = fields.One2many(
related="product_variant_ids.pack_line_ids",
)
used_in_pack_line_ids = fields.One2many(
related="product_variant_ids.used_in_pack_line_ids",
readonly=True,
)
pack_modifiable = fields.Boolean(
help="If you check this field yo will be able to edit "
"sale/purchase order line relate to its component",
)
pack_modifiable_invisible = fields.Boolean(
compute="_compute_pack_modifiable_invisible",
help="Technical field in order to compute the availability of the "
"Pack Modifiable field",
)
def _get_pack_modifiable_invisible_depends(self):
return ["pack_type", "pack_component_price"]
@api.depends(lambda self: self._get_pack_modifiable_invisible_depends())
def _compute_pack_modifiable_invisible(self):
"""
The pack modifiable field should be invisible when:
- pack details are not displayed or
- pack component prices are not detailed
"""
for product in self:
product.pack_modifiable_invisible = (
product.pack_type != "detailed"
or product.pack_component_price != "detailed"
)
@api.onchange("pack_type", "pack_component_price")
def onchange_pack_type(self):
products = self.filtered(
lambda x: x.pack_modifiable
and (x.pack_type != "detailed" or x.pack_component_price != "detailed")
)
for rec in products:
rec.pack_modifiable = False
@api.constrains("company_id", "product_variant_ids")
def _check_pack_line_company(self):
"""Check packs are related to packs of same company."""
for rec in self:
for line in rec.pack_line_ids:
if (
line.product_id.company_id and rec.company_id
) and line.product_id.company_id != rec.company_id:
raise ValidationError(
_(
"Pack lines products company must be the same as the "
"parent product company"
)
)
for line in rec.used_in_pack_line_ids:
if (
line.product_id.company_id and rec.company_id
) and line.parent_product_id.company_id != rec.company_id:
raise ValidationError(
_(
"Pack lines products company must be the same as the "
"parent product company"
)
)
def write(self, vals):
"""We remove from product.product to avoid error."""
_vals = vals.copy()
if vals.get("pack_line_ids", False):
self.product_variant_ids.write({"pack_line_ids": vals.get("pack_line_ids")})
_vals.pop("pack_line_ids")
return super().write(_vals)
def _is_pack_to_be_handled(self):
"""Method for getting if a template is a computable pack.
:return: True or False.
"""
self.ensure_one()
is_pack = False
if self.env.context.get("whole_pack_price"):
# We could need to check the price of the whole pack (e.g.: e-commerce)
is_pack = (
self.pack_ok
and self.pack_type == "detailed"
and self.pack_component_price == "detailed"
)
is_pack |= self.pack_ok and (
(self.pack_type == "detailed" and self.pack_component_price == "totalized")
or self.pack_type == "non_detailed"
)
return is_pack
def split_pack_products(self):
"""Split products and the pack in 2 separate recordsets.
:return: [packs, no_packs]
"""
packs = self.filtered(lambda p: p._is_pack_to_be_handled())
return packs, (self - packs)

View file

@ -0,0 +1,19 @@
* `ADHOC SA <https://www.adhoc.com.ar>`_:
* Juan José Scarafía
* Nicolas Mac Rouillon
* Katherine Zaoral
* `NaN·TIC <http://www.nan-tic.com>`_
* `Tecnativa <https://www.tecnativa.com>`_:
* Ernesto Tejeda
* Pedro M. Baeza
* Jairo Llopis
* Sergio Teruel
* `Sygel <https://www.sygel.es>`_:
* Manuel Regidor
* `Acsone <https://www.acsone.eu/>`_:
* Maxime Franco

View file

@ -0,0 +1,2 @@
This module allows you to define a product as a *Product Pack*. Each
*Product Pack* has a list of products that are part of this pack.

View file

@ -0,0 +1,4 @@
* It could add another *Pack Type* called maybe *merged* in *Packs*, in which
the calculation of the related sale order line *Unit Price* is equal to
*main product Pack price* + *sum of all its component*
* Make *product.pack.line* multi-company

View file

@ -0,0 +1,30 @@
To use this module, you need to:
#. Go to *Sales > Products > Products*, create a product and set "Is Pack?".
#. Set *Pack Type* and *Pack component price*.
#. Then choose the products to include in the pack.
`Product pack` is a base module for `sale_product_pack` and other modules that
needs to use packs. `Pack type` and `Pack component price` are used to define
the behavior that the packs will have when it is selected in the sales order
lines (if `sale_product_pack` module is installed).
The options of this field are the followings:
`Pack type`:
* Detailed: It allows you to select an option defined in
`Pack component price` field.
* Non Detailed: Will not show the components information,
only the pack product and the price will be the its price plus the sum of
all the components prices.
`Pack component price`:
* Detailed per component: will show each components and its prices,
including the pack product itself with its price.
* Totalized in main product: will show each component but will not show
components prices. The pack product will be the only one that has price
and this one will be its price plus the sum of all the components prices.
* Ignored: will show each components but will not show
components prices. The pack product will be the only one that has price
and this one will be the price set in the pack product.

View file

@ -0,0 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_product_pack_line_user,product.pack.line,model_product_pack_line,base.group_user,1,0,0,0
access_product_pack_line_system,product.pack.line,model_product_pack_line,base.group_system,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_product_pack_line_user product.pack.line model_product_pack_line base.group_user 1 0 0 0
3 access_product_pack_line_system product.pack.line model_product_pack_line base.group_system 1 1 1 1

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View file

@ -0,0 +1,495 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
<title>Product Pack</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: grey; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document" id="product-pack">
<h1 class="title">Product Pack</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:d6d79cfb1448cba3c8cc68f89101f6b53245f8a695effd2058ca881dac328748
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/product-pack/tree/16.0/product_pack"><img alt="OCA/product-pack" src="https://img.shields.io/badge/github-OCA%2Fproduct--pack-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/product-pack-16-0/product-pack-16-0-product_pack"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/product-pack&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module allows you to define a product as a <em>Product Pack</em>. Each
<em>Product Pack</em> has a list of products that are part of this pack.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#usage" id="toc-entry-1">Usage</a></li>
<li><a class="reference internal" href="#known-issues-roadmap" id="toc-entry-2">Known issues / Roadmap</a></li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-3">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-4">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-5">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-6">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-7">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="usage">
<h1><a class="toc-backref" href="#toc-entry-1">Usage</a></h1>
<p>To use this module, you need to:</p>
<ol class="arabic simple">
<li>Go to <em>Sales &gt; Products &gt; Products</em>, create a product and set “Is Pack?”.</li>
<li>Set <em>Pack Type</em> and <em>Pack component price</em>.</li>
<li>Then choose the products to include in the pack.</li>
</ol>
<p><cite>Product pack</cite> is a base module for <cite>sale_product_pack</cite> and other modules that
needs to use packs. <cite>Pack type</cite> and <cite>Pack component price</cite> are used to define
the behavior that the packs will have when it is selected in the sales order
lines (if <cite>sale_product_pack</cite> module is installed).
The options of this field are the followings:</p>
<p><cite>Pack type</cite>:</p>
<blockquote>
<ul class="simple">
<li>Detailed: It allows you to select an option defined in
<cite>Pack component price</cite> field.</li>
<li>Non Detailed: Will not show the components information,
only the pack product and the price will be the its price plus the sum of
all the components prices.</li>
</ul>
</blockquote>
<p><cite>Pack component price</cite>:</p>
<blockquote>
<ul class="simple">
<li>Detailed per component: will show each components and its prices,
including the pack product itself with its price.</li>
<li>Totalized in main product: will show each component but will not show
components prices. The pack product will be the only one that has price
and this one will be its price plus the sum of all the components prices.</li>
<li>Ignored: will show each components but will not show
components prices. The pack product will be the only one that has price
and this one will be the price set in the pack product.</li>
</ul>
</blockquote>
</div>
<div class="section" id="known-issues-roadmap">
<h1><a class="toc-backref" href="#toc-entry-2">Known issues / Roadmap</a></h1>
<ul class="simple">
<li>It could add another <em>Pack Type</em> called maybe <em>merged</em> in <em>Packs</em>, in which
the calculation of the related sale order line <em>Unit Price</em> is equal to
<em>main product Pack price</em> + <em>sum of all its component</em></li>
<li>Make <em>product.pack.line</em> multi-company</li>
</ul>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#toc-entry-3">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/product-pack/issues">GitHub Issues</a>.
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
<a class="reference external" href="https://github.com/OCA/product-pack/issues/new?body=module:%20product_pack%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h1><a class="toc-backref" href="#toc-entry-4">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#toc-entry-5">Authors</a></h2>
<ul class="simple">
<li>NaN·tic</li>
<li>ADHOC SA</li>
<li>Tecnativa</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#toc-entry-6">Contributors</a></h2>
<ul class="simple">
<li><a class="reference external" href="https://www.adhoc.com.ar">ADHOC SA</a>:<ul>
<li>Juan José Scarafía</li>
<li>Nicolas Mac Rouillon</li>
<li>Katherine Zaoral</li>
</ul>
</li>
<li><a class="reference external" href="http://www.nan-tic.com">NaN·TIC</a></li>
<li><a class="reference external" href="https://www.tecnativa.com">Tecnativa</a>:<ul>
<li>Ernesto Tejeda</li>
<li>Pedro M. Baeza</li>
<li>Jairo Llopis</li>
<li>Sergio Teruel</li>
</ul>
</li>
<li><a class="reference external" href="https://www.sygel.es">Sygel</a>:<ul>
<li>Manuel Regidor</li>
</ul>
</li>
<li><a class="reference external" href="https://www.acsone.eu/">Acsone</a>:<ul>
<li>Maxime Franco</li>
</ul>
</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#toc-entry-7">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a>
<p>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.</p>
<p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p>
<p><a class="reference external image-reference" href="https://github.com/ernestotejeda"><img alt="ernestotejeda" src="https://github.com/ernestotejeda.png?size=40px" /></a></p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/product-pack/tree/16.0/product_pack">OCA/product-pack</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
</div>
</body>
</html>

View file

@ -0,0 +1 @@
from . import test_product_pack

View file

@ -0,0 +1,16 @@
# Copyright 2021 ACSONE SA/NV
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
class ProductPackCommon:
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.product_pack_line_obj = cls.env["product.pack.line"]
cls.cpu_detailed = cls.env.ref(
"product_pack.product_pack_cpu_detailed_components"
)
vals = {
"name": "Company Pack 2",
}
cls.company_2 = cls.env["res.company"].create(vals)

View file

@ -0,0 +1,136 @@
# Copyright 2021 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from psycopg2 import IntegrityError
from odoo.exceptions import ValidationError
from odoo.tests import Form
from odoo.tests.common import TransactionCase
from odoo.tools import mute_logger
from .common import ProductPackCommon
class TestProductPack(ProductPackCommon, TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
def test_product_pack_recursion(self):
# Add pack product in its pack lines
# Check constraint raises
with self.assertRaises(ValidationError):
self.cpu_detailed.write(
{
"pack_line_ids": [
(
0,
0,
{
"product_id": self.cpu_detailed.id,
"quantity": 1.0,
},
)
]
}
)
@mute_logger("odoo.sql_db")
def test_product_in_pack_unique(self):
# Add product that is already in the concerned pack
# Check constraint raises
product_line = self.env.ref("product.product_product_16")
with self.assertRaises(IntegrityError), self.env.cr.savepoint():
self.cpu_detailed.write(
{
"pack_line_ids": [
(
0,
0,
{
"product_id": product_line.id,
"quantity": 1.0,
},
)
]
}
)
def test_get_pack_line_price(self):
# Check pack line price from product one
component = self.env.ref("product_pack.pack_cpu_detailed_components_1")
component.product_id.list_price = 30.0
self.assertEqual(
30.0,
self.cpu_detailed.pack_line_ids.filtered(
lambda l: l.product_id == component.product_id
).get_price(),
)
def test_get_pack_lst_price(self):
# Check pack lst_price if totalized from components
pack = self.env.ref("product_pack.product_pack_cpu_detailed_totalized")
component_1 = self.env.ref("product_pack.pack_cpu_detailed_totalized_1")
component_1.product_id.list_price = 30.0
component_2 = self.env.ref("product_pack.pack_cpu_detailed_totalized_3")
component_2.product_id.list_price = 15.0
component_3 = self.env.ref("product_pack.pack_cpu_detailed_components_4")
component_3.product_id.list_price = 5.0
self.assertEqual(50.0, pack.lst_price)
def test_pack_company(self):
# Try to assign pack lines with product that do not belong to pack
# company
component = self.env.ref("product_pack.pack_cpu_detailed_totalized_1")
with self.assertRaises(ValidationError), self.env.cr.savepoint():
component.product_id.company_id = self.company_2
def test_pack_line_company(self):
# Try to assign pack lines with product that do not belong to pack
# company
pack = self.env.ref("product_pack.product_pack_cpu_detailed_totalized")
with self.assertRaises(ValidationError), self.env.cr.savepoint():
pack.company_id = self.company_2
def test_pack_type(self):
# Change pack type from detailed to non detailed
pack = self.env.ref(
"product_pack.product_pack_cpu_detailed_components"
).product_tmpl_id
pack.pack_modifiable = True
with Form(pack) as pack_form:
pack_form.pack_type = "non_detailed"
self.assertFalse(pack_form.pack_modifiable)
def test_pack_modifiable(self):
# Pack is detailed with component price as detailed
# Pack modifiable invisible should be False
# Set the Pack as non detailed
# Pack modifiable invisible should be True
# Set the Pack as detailed with component price as totalized
# Pack modifiable invisible should be True
pack = self.env.ref(
"product_pack.product_pack_cpu_detailed_components"
).product_tmpl_id
self.assertFalse(pack.pack_modifiable_invisible)
pack.pack_type = "non_detailed"
self.assertTrue(pack.pack_modifiable_invisible)
pack.pack_type = "detailed"
pack.pack_component_price = "totalized"
self.assertTrue(pack.pack_modifiable_invisible)
def test_price_compute_with_pricelist_context(self):
# Ensure that the price_compute method correctly handles the
# price list context when the price list is missing.
product_pack = self.env.ref("product_pack.product_pack_cpu_detailed_totalized")
component_1 = self.env.ref("product_pack.pack_cpu_detailed_totalized_1")
component_1.product_id.list_price = 30.0
component_2 = self.env.ref("product_pack.pack_cpu_detailed_totalized_3")
component_2.product_id.list_price = 15.0
component_3 = self.env.ref("product_pack.pack_cpu_detailed_components_4")
component_3.product_id.list_price = 5.0
price = (
product_pack.with_context(pricelist="pricelist test")
.price_compute("list_price")
.get(product_pack.id)
)
self.assertEqual(price, 50.0)

View file

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2019 Tecnativa - Ernesto Tejeda
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>
<record id="product_pack_line_form" model="ir.ui.view">
<field name="name">product.pack.line.form</field>
<field name="model">product.pack.line</field>
<field name="arch" type="xml">
<form string="Pack Product Line">
<group>
<field name="product_id" />
<field name="quantity" />
</group>
</form>
</field>
</record>
<record id="product_pack_line_tree" model="ir.ui.view">
<field name="name">product.pack.line.tree</field>
<field name="model">product.pack.line</field>
<field name="arch" type="xml">
<tree editable="bottom">
<field name="product_id" />
<field name="quantity" />
</tree>
</field>
</record>
</odoo>

View file

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2019 Tecnativa - Ernesto Tejeda
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>
<record model="ir.ui.view" id="nan_product_pack_form">
<field name="name">product.product.pack.form</field>
<field name="model">product.product</field>
<field name="inherit_id" ref="product.product_normal_form_view" />
<field name="arch" type="xml">
<group name="group_pack">
<group string="Pack Products" colspan="4">
<field name="pack_line_ids" nolabel="1" colspan="2" />
</group>
</group>
</field>
</record>
</odoo>

View file

@ -0,0 +1,71 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2019 Tecnativa - Ernesto Tejeda
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>
<!-- Generic Product Template view modification -->
<record id="product_template_form_view" model="ir.ui.view">
<field name="name">product.template.pack.form</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_form_view" />
<field name="arch" type="xml">
<div name="options" position="inside">
<div>
<field name="pack_ok" />
<label for="pack_ok" />
</div>
</div>
<notebook position="inside">
<page
name="page_pack"
string="Pack"
attrs="{'invisible': [('pack_ok', '=', False)]}"
>
<group name="group_pack">
<group colspan="4" col="4">
<field name="pack_modifiable_invisible" invisible="1" />
<field
name="pack_type"
attrs="{'required':[('pack_ok','=',True)]}"
/>
<field
name="pack_component_price"
attrs="{'required':[('pack_type', '=', 'detailed')], 'invisible':[('pack_type', '!=', 'detailed')]}"
/>
<field
name="pack_modifiable"
attrs="{'invisible':[('pack_modifiable_invisible','=', True)]}"
/>
</group>
</group>
</page>
</notebook>
</field>
</record>
<!-- Product Template view modification -->
<record model="ir.ui.view" id="product_template_only_form_view">
<field name="name">product.template.pack.form</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_only_form_view" />
<field name="arch" type="xml">
<page name="page_pack" position="attributes">
<attribute
name="attrs"
>{'invisible': ['|', ('product_variant_count', '>', 1), ('pack_ok', '=', False)]}</attribute>
</page>
<group name="group_pack">
<group string="Pack Products" colspan="4">
<field name="id" invisible="1" />
<p
attrs="{'invisible': [('id', '!=', False)]}"
>You must save first to add pack lines</p>
</group>
<field
name="pack_line_ids"
nolabel="1"
colspan="4"
attrs="{'readonly': [('id', '=', False)]}"
/>
</group>
</field>
</record>
</odoo>

View file

@ -0,0 +1,42 @@
[project]
name = "odoo-bringout-oca-product-pack-product_pack"
version = "16.0.0"
description = "Product Pack - This module allows you to set a product as a Pack"
authors = [
{ name = "Ernad Husremovic", email = "hernad@bring.out.ba" }
]
dependencies = [
"odoo-bringout-oca-ocb-product>=16.0.0",
"requests>=2.25.1"
]
readme = "README.md"
requires-python = ">= 3.11"
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Office/Business",
]
[project.urls]
homepage = "https://github.com/bringout/0"
repository = "https://github.com/bringout/0"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.metadata]
allow-direct-references = true
[tool.hatch.build.targets.wheel]
packages = ["product_pack"]
[tool.rye]
managed = true
dev-dependencies = [
"pytest>=8.4.1",
]