Initial commit: OCA Mrp packages (117 packages)

This commit is contained in:
Ernad Husremovic 2025-08-29 15:43:05 +02:00
commit 277e84fd7a
4403 changed files with 395154 additions and 0 deletions

View file

@ -0,0 +1,44 @@
# MRP BoM Tracking
Odoo addon: mrp_bom_tracking
## Installation
```bash
pip install odoo-bringout-oca-manufacture-mrp_bom_tracking
```
## Dependencies
This addon depends on:
- mrp
## Manifest Information
- **Name**: MRP BoM Tracking
- **Version**: 16.0.1.0.1
- **Category**: Manufacturing
- **License**: LGPL-3
- **Installable**: True
## Source
Based on [OCA/manufacture](https://github.com/OCA/manufacture) branch 16.0, addon `mrp_bom_tracking`.
## License
This package maintains the original LGPL-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
- 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 Mrp_bom_tracking Module - mrp_bom_tracking
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 mrp_bom_tracking. 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:
- [mrp](../../odoo-bringout-oca-ocb-mrp)

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 mrp_bom_tracking or install in UI.

View file

@ -0,0 +1,7 @@
# Install
```bash
pip install odoo-bringout-oca-manufacture-mrp_bom_tracking"
# or
uv pip install odoo-bringout-oca-manufacture-mrp_bom_tracking"
```

View file

@ -0,0 +1,13 @@
# Models
Detected core models and extensions in mrp_bom_tracking.
```mermaid
classDiagram
class mrp_bom
class mrp_bom_line
```
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: mrp_bom_tracking. Provides features documented in upstream Odoo 16 under this addon.
- Source: OCA/OCB 16.0, addon mrp_bom_tracking
- License: LGPL-3

View file

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

View file

@ -0,0 +1,8 @@
# Security
This module does not define custom security rules or access controls beyond Odoo defaults.
Default Odoo security applies:
- Base user access through standard groups
- Model access inherited from dependencies
- No custom row-level security rules

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 mrp_bom_tracking
```

View file

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

View file

@ -0,0 +1,84 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association
================
MRP BoM Tracking
================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:7ac67e68b34699102e2d34fc31dd3275a2f29e0909c54be34e24ab4b5f14d812
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png
:target: https://odoo-community.org/page/development-status
:alt: Production/Stable
.. |badge2| image:: https://img.shields.io/badge/license-LGPL--3-blue.png
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
:alt: License: LGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmanufacture-lightgray.png?logo=github
:target: https://github.com/OCA/manufacture/tree/16.0/mrp_bom_tracking
:alt: OCA/manufacture
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/manufacture-16-0/manufacture-16-0-mrp_bom_tracking
: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/manufacture&target_branch=16.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
This module adds track visibility to some fields of mrp boms. Also,
it log notes for any change in the bom lines (components).
**Table of contents**
.. contents::
:local:
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/manufacture/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/manufacture/issues/new?body=module:%20mrp_bom_tracking%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
~~~~~~~
* ForgeFlow
Contributors
~~~~~~~~~~~~
* Miquel Raïch <miquel.raich@forgeflow.com>
* Lois Rilo <lois.rilo@forgeflow.com>
* Joan Sisquella <joan.sisquella@forgeflow.com>
* Urvisha Desai <udesaia@opensourceintegrators.com>
Maintainers
~~~~~~~~~~~
This module is maintained by the OCA.
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
This module is part of the `OCA/manufacture <https://github.com/OCA/manufacture/tree/16.0/mrp_bom_tracking>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View file

@ -0,0 +1,3 @@
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl).
from . import models

View file

@ -0,0 +1,16 @@
# Copyright 2019 ForgeFlow S.L. (https://www.forgeflow.com)
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl).
{
"name": "MRP BoM Tracking",
"version": "16.0.1.0.1",
"author": "ForgeFlow, Odoo Community Association (OCA)",
"summary": "Logs any change to a BoM in the chatter",
"website": "https://github.com/OCA/manufacture",
"category": "Manufacturing",
"depends": ["mrp"],
"data": ["views/bom_template.xml"],
"license": "LGPL-3",
"installable": True,
"development_status": "Production/Stable",
}

View file

@ -0,0 +1,126 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * mrp_bom_tracking
#
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: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template
msgid "-&gt;"
msgstr "-&gt;"
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template_2
msgid ""
":\n"
" New component<br/>"
msgstr ""
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template_2
msgid ""
":\n"
" Removed component<br/>"
msgstr ""
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template
msgid ""
"<br/>\n"
" Product Unit of Measure:"
msgstr ""
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template
msgid "<strong>The component quantities or UoMs have been updated.</strong>"
msgstr "<strong>Količine komponenata su ažurirane.</strong>"
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template_2
msgid "<strong>The components have changed.</strong>"
msgstr "<strong>Komponente su izmjenjene.</strong>"
#. module: mrp_bom_tracking
#: model:ir.model,name:mrp_bom_tracking.model_mrp_bom
msgid "Bill of Material"
msgstr "Sastavnica"
#. module: mrp_bom_tracking
#: model:ir.model,name:mrp_bom_tracking.model_mrp_bom_line
msgid "Bill of Material Line"
msgstr "Stavka sastavnice"
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__type
msgid "BoM Type"
msgstr "Tip sastavnice"
#. module: mrp_bom_tracking
#: model:ir.model.fields,help:mrp_bom_tracking.field_mrp_bom__product_id
msgid ""
"If a product variant is defined the BOM is available only for this product."
msgstr ""
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__picking_type_id
msgid "Operation Type"
msgstr "Tip operacije"
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__product_tmpl_id
msgid "Product"
msgstr "Proizvod"
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template
msgid "Product Quantity:"
msgstr "Količina proizvoda:"
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__product_id
msgid "Product Variant"
msgstr "Varijanta proizvoda"
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__product_qty
msgid "Quantity"
msgstr "Količina"
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__code
msgid "Reference"
msgstr "Referenca"
#. module: mrp_bom_tracking
#: model:ir.model.fields,help:mrp_bom_tracking.field_mrp_bom__product_qty
msgid ""
"This should be the smallest quantity that this product can be produced in. "
"If the BOM contains operations, make sure the work center capacity is "
"accurate."
msgstr ""
#. module: mrp_bom_tracking
#: model:ir.model.fields,help:mrp_bom_tracking.field_mrp_bom__picking_type_id
msgid ""
"When a procurement has a produce route with a operation type set, it will "
"try to create a Manufacturing Order for that product using a BoM of the same"
" operation type. That allows to define stock rules which trigger different "
"manufacturing orders with different BoMs."
msgstr ""
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template
msgid "component<br/>"
msgstr "komponenta<br/>"

View file

@ -0,0 +1,127 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * mrp_bom_tracking
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: de\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"
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template
msgid "-&gt;"
msgstr ""
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template_2
msgid ""
":\n"
" New component<br/>"
msgstr ""
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template_2
msgid ""
":\n"
" Removed component<br/>"
msgstr ""
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template
msgid ""
"<br/>\n"
" Product Unit of Measure:"
msgstr ""
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template
msgid "<strong>The component quantities or UoMs have been updated.</strong>"
msgstr ""
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template_2
msgid "<strong>The components have changed.</strong>"
msgstr ""
#. module: mrp_bom_tracking
#: model:ir.model,name:mrp_bom_tracking.model_mrp_bom
msgid "Bill of Material"
msgstr ""
#. module: mrp_bom_tracking
#: model:ir.model,name:mrp_bom_tracking.model_mrp_bom_line
msgid "Bill of Material Line"
msgstr ""
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__type
msgid "BoM Type"
msgstr ""
#. module: mrp_bom_tracking
#: model:ir.model.fields,help:mrp_bom_tracking.field_mrp_bom__product_id
msgid ""
"If a product variant is defined the BOM is available only for this product."
msgstr ""
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__picking_type_id
msgid "Operation Type"
msgstr ""
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__product_tmpl_id
msgid "Product"
msgstr ""
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template
msgid "Product Quantity:"
msgstr ""
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__product_id
msgid "Product Variant"
msgstr ""
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__product_qty
msgid "Quantity"
msgstr ""
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__code
msgid "Reference"
msgstr ""
#. module: mrp_bom_tracking
#: model:ir.model.fields,help:mrp_bom_tracking.field_mrp_bom__product_qty
msgid ""
"This should be the smallest quantity that this product can be produced in. "
"If the BOM contains operations, make sure the work center capacity is "
"accurate."
msgstr ""
#. module: mrp_bom_tracking
#: model:ir.model.fields,help:mrp_bom_tracking.field_mrp_bom__picking_type_id
msgid ""
"When a procurement has a produce route with a operation type set, it will "
"try to create a Manufacturing Order for that product using a BoM of the same "
"operation type. That allows to define stock rules which trigger different "
"manufacturing orders with different BoMs."
msgstr ""
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template
msgid "component<br/>"
msgstr ""

View file

@ -0,0 +1,146 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * mrp_bom_tracking
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-07-23 12:10+0000\n"
"Last-Translator: Ivorra78 <informatica@totmaterial.es>\n"
"Language-Team: none\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.17\n"
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template
msgid "-&gt;"
msgstr "-&gt;"
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template_2
msgid ""
":\n"
" New component<br/>"
msgstr ""
":\n"
" Nuevo componente<br/>"
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template_2
msgid ""
":\n"
" Removed component<br/>"
msgstr ""
":\n"
" Eliminar componente<br/>"
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template
msgid ""
"<br/>\n"
" Product Unit of Measure:"
msgstr ""
"<br/>\n"
" Unidad de medida del producto:"
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template
msgid "<strong>The component quantities or UoMs have been updated.</strong>"
msgstr ""
"<strong>Se han actualizado las cantidades o UM de los componentes.</strong>"
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template_2
msgid "<strong>The components have changed.</strong>"
msgstr "<strong>Los componentes han cambiado.</strong>"
#. module: mrp_bom_tracking
#: model:ir.model,name:mrp_bom_tracking.model_mrp_bom
msgid "Bill of Material"
msgstr "Factura de material"
#. module: mrp_bom_tracking
#: model:ir.model,name:mrp_bom_tracking.model_mrp_bom_line
msgid "Bill of Material Line"
msgstr "Línea de la factura de materiales"
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__type
msgid "BoM Type"
msgstr "Tipo BoM"
#. module: mrp_bom_tracking
#: model:ir.model.fields,help:mrp_bom_tracking.field_mrp_bom__product_id
msgid ""
"If a product variant is defined the BOM is available only for this product."
msgstr ""
"Si se define una variante de producto, la lista de materiales sólo está "
"disponible para este producto."
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__picking_type_id
msgid "Operation Type"
msgstr "Tipo de operación"
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__product_tmpl_id
msgid "Product"
msgstr "producto"
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template
msgid "Product Quantity:"
msgstr "Cantidad de Productos:"
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__product_id
msgid "Product Variant"
msgstr "Variante de Producto"
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__product_qty
msgid "Quantity"
msgstr "cantidad"
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__code
msgid "Reference"
msgstr "referencia"
#. module: mrp_bom_tracking
#: model:ir.model.fields,help:mrp_bom_tracking.field_mrp_bom__product_qty
msgid ""
"This should be the smallest quantity that this product can be produced in. "
"If the BOM contains operations, make sure the work center capacity is "
"accurate."
msgstr ""
"Esta debe ser la cantidad más pequeña en la que se puede fabricar este "
"producto. Si la lista de materiales contiene operaciones, asegúrese de que "
"la capacidad del puesto de trabajo es correcta."
#. module: mrp_bom_tracking
#: model:ir.model.fields,help:mrp_bom_tracking.field_mrp_bom__picking_type_id
msgid ""
"When a procurement has a produce route with a operation type set, it will "
"try to create a Manufacturing Order for that product using a BoM of the same "
"operation type. That allows to define stock rules which trigger different "
"manufacturing orders with different BoMs."
msgstr ""
"Cuando un aprovisionamiento tiene una ruta 'producir' con un tipo de "
"operación establecido, intentará crear una Orden de Fabricación para ese "
"producto utilizando una lista de materiales del mismo tipo de operación. "
"Esto permite definir reglas de stock que activen diferentes órdenes de "
"fabricación con diferentes listas de materiales."
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template
msgid "component<br/>"
msgstr "componente<br/>"

View file

@ -0,0 +1,139 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * mrp_bom_tracking
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-02-20 17:06+0000\n"
"Last-Translator: ahmedtrigui <trigui43@gmail.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: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template
msgid "-&gt;"
msgstr ""
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template_2
msgid ""
":\n"
" New component<br/>"
msgstr "Nouveau composant"
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template_2
msgid ""
":\n"
" Removed component<br/>"
msgstr ""
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template
msgid ""
"<br/>\n"
" Product Unit of Measure:"
msgstr ""
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template
msgid "<strong>The component quantities or UoMs have been updated.</strong>"
msgstr ""
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template_2
msgid "<strong>The components have changed.</strong>"
msgstr ""
#. module: mrp_bom_tracking
#: model:ir.model,name:mrp_bom_tracking.model_mrp_bom
msgid "Bill of Material"
msgstr "Nomenclature"
#. module: mrp_bom_tracking
#: model:ir.model,name:mrp_bom_tracking.model_mrp_bom_line
msgid "Bill of Material Line"
msgstr "Ligne de nomenclature"
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__type
msgid "BoM Type"
msgstr "Type de nomenclature"
#. module: mrp_bom_tracking
#: model:ir.model.fields,help:mrp_bom_tracking.field_mrp_bom__product_id
msgid ""
"If a product variant is defined the BOM is available only for this product."
msgstr ""
"Si une variante de produit est définie, la nomenclature est disponible "
"uniquement pour ce produit."
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__picking_type_id
msgid "Operation Type"
msgstr "Type d'opération"
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__product_tmpl_id
msgid "Product"
msgstr "Article"
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template
msgid "Product Quantity:"
msgstr "Quantité d'article"
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__product_id
msgid "Product Variant"
msgstr "Variante d'article"
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__product_qty
msgid "Quantity"
msgstr "Quantité"
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__code
msgid "Reference"
msgstr "Référence"
#. module: mrp_bom_tracking
#: model:ir.model.fields,help:mrp_bom_tracking.field_mrp_bom__product_qty
msgid ""
"This should be the smallest quantity that this product can be produced in. "
"If the BOM contains operations, make sure the work center capacity is "
"accurate."
msgstr ""
"Il doit s'agir de la plus petite quantité dans laquelle ce produit peut être "
"fabriqué. Si la nomenclature contient des opérations, assurez-vous que la "
"capacité du centre de charge est exacte."
#. module: mrp_bom_tracking
#: model:ir.model.fields,help:mrp_bom_tracking.field_mrp_bom__picking_type_id
msgid ""
"When a procurement has a produce route with a operation type set, it will "
"try to create a Manufacturing Order for that product using a BoM of the same"
" operation type. That allows to define stock rules which trigger different "
"manufacturing orders with different BoMs."
msgstr ""
"Lorsqu'un approvisionnement comporte une gamme de produits avec un type "
"d'opération défini, il tente de créer un ordre de fabrication pour ce "
"produit en utilisant une nomenclature du même type d'opération. Cela permet "
"de définir des règles de stock qui déclenchent différents ordres de "
"fabrication avec différentes nomenclatures."
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template
msgid "component<br/>"
msgstr "Composant<br/>"

View file

@ -0,0 +1,138 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * mrp_bom_tracking
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-06-17 13:17+0000\n"
"Last-Translator: Bole <bole@dajmi5.com>\n"
"Language-Team: none\n"
"Language: hr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 4.17\n"
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template
msgid "-&gt;"
msgstr "-&gt;"
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template_2
msgid ""
":\n"
" New component<br/>"
msgstr ""
":\n"
" Nova komponenta<br/>"
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template_2
msgid ""
":\n"
" Removed component<br/>"
msgstr ""
":\n"
" Uklonjena komponenta<br/>"
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template
msgid ""
"<br/>\n"
" Product Unit of Measure:"
msgstr ""
"<br/>\n"
" Jedinica mjere proizvoda:"
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template
msgid "<strong>The component quantities or UoMs have been updated.</strong>"
msgstr "<strong>Količine komponenata su ažurirane.</strong>"
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template_2
msgid "<strong>The components have changed.</strong>"
msgstr "<strong>Komponente su izmjenjene.</strong>"
#. module: mrp_bom_tracking
#: model:ir.model,name:mrp_bom_tracking.model_mrp_bom
msgid "Bill of Material"
msgstr "Sastavnica"
#. module: mrp_bom_tracking
#: model:ir.model,name:mrp_bom_tracking.model_mrp_bom_line
msgid "Bill of Material Line"
msgstr "Stavka sastavnice"
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__type
msgid "BoM Type"
msgstr "Tip sastavnice"
#. module: mrp_bom_tracking
#: model:ir.model.fields,help:mrp_bom_tracking.field_mrp_bom__product_id
msgid ""
"If a product variant is defined the BOM is available only for this product."
msgstr ""
"Ako je varijanta proizvoda definirana, sastavnica je dostupna za ovaj "
"proizvod."
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__picking_type_id
msgid "Operation Type"
msgstr "Tip operacije"
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__product_tmpl_id
msgid "Product"
msgstr "Proizvod"
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template
msgid "Product Quantity:"
msgstr "Količina proizvoda:"
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__product_id
msgid "Product Variant"
msgstr "Varijanta proizvoda"
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__product_qty
msgid "Quantity"
msgstr "Količina"
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__code
msgid "Reference"
msgstr "Referenca"
#. module: mrp_bom_tracking
#: model:ir.model.fields,help:mrp_bom_tracking.field_mrp_bom__product_qty
msgid ""
"This should be the smallest quantity that this product can be produced in. "
"If the BOM contains operations, make sure the work center capacity is "
"accurate."
msgstr ""
#. module: mrp_bom_tracking
#: model:ir.model.fields,help:mrp_bom_tracking.field_mrp_bom__picking_type_id
msgid ""
"When a procurement has a produce route with a operation type set, it will "
"try to create a Manufacturing Order for that product using a BoM of the same"
" operation type. That allows to define stock rules which trigger different "
"manufacturing orders with different BoMs."
msgstr ""
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template
msgid "component<br/>"
msgstr ""

View file

@ -0,0 +1,146 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * mrp_bom_tracking
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-10-23 09:06+0000\n"
"Last-Translator: mymage <stefano.consolaro@mymage.it>\n"
"Language-Team: none\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.6.2\n"
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template
msgid "-&gt;"
msgstr "-&gt;"
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template_2
msgid ""
":\n"
" New component<br/>"
msgstr ""
":\n"
" Nuovo componente<br/>"
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template_2
msgid ""
":\n"
" Removed component<br/>"
msgstr ""
":\n"
" Componente rimosso<br/>"
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template
msgid ""
"<br/>\n"
" Product Unit of Measure:"
msgstr ""
"<br/>\n"
" Unità di misura del prodotto:"
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template
msgid "<strong>The component quantities or UoMs have been updated.</strong>"
msgstr ""
"<strong>Le quantità del componente o le UdM sono state aggiornate.</strong>"
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template_2
msgid "<strong>The components have changed.</strong>"
msgstr "<strong>Il componente è stato cambiato.</strong>"
#. module: mrp_bom_tracking
#: model:ir.model,name:mrp_bom_tracking.model_mrp_bom
msgid "Bill of Material"
msgstr "Distinta base"
#. module: mrp_bom_tracking
#: model:ir.model,name:mrp_bom_tracking.model_mrp_bom_line
msgid "Bill of Material Line"
msgstr "Riga distinta base"
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__type
msgid "BoM Type"
msgstr "Tipo DiBa"
#. module: mrp_bom_tracking
#: model:ir.model.fields,help:mrp_bom_tracking.field_mrp_bom__product_id
msgid ""
"If a product variant is defined the BOM is available only for this product."
msgstr ""
"Se è definita una variante prodotto la DiBa è disponibile solo per questo "
"prodotto."
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__picking_type_id
msgid "Operation Type"
msgstr "Tipo di operazione"
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__product_tmpl_id
msgid "Product"
msgstr "Prodotto"
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template
msgid "Product Quantity:"
msgstr "Quantità prodotto:"
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__product_id
msgid "Product Variant"
msgstr "Variante prodotto"
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__product_qty
msgid "Quantity"
msgstr "Quantità"
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__code
msgid "Reference"
msgstr "Riferimento"
#. module: mrp_bom_tracking
#: model:ir.model.fields,help:mrp_bom_tracking.field_mrp_bom__product_qty
msgid ""
"This should be the smallest quantity that this product can be produced in. "
"If the BOM contains operations, make sure the work center capacity is "
"accurate."
msgstr ""
"Questa dovrebbe essere la quantità minima di produzione del prodotto. Se la "
"DiBa contiene operazioni, assicurarsi che la capacità del centro di lavoro "
"sia precisa."
#. module: mrp_bom_tracking
#: model:ir.model.fields,help:mrp_bom_tracking.field_mrp_bom__picking_type_id
msgid ""
"When a procurement has a produce route with a operation type set, it will "
"try to create a Manufacturing Order for that product using a BoM of the same "
"operation type. That allows to define stock rules which trigger different "
"manufacturing orders with different BoMs."
msgstr ""
"Quando un approvvigionamento ha una rotta 'produzione' con un tipo "
"operazione impostato, tenterà di creare un ordine di produzione per il "
"prodotto utilizzando la DiBa dello stesso tipo operazione. Questo consente "
"di definire regole di magazzino che generano differenti ordini di produzione "
"con differenti DiBa."
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template
msgid "component<br/>"
msgstr "componente<br/>"

View file

@ -0,0 +1,126 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * mrp_bom_tracking
#
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: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template
msgid "-&gt;"
msgstr ""
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template_2
msgid ""
":\n"
" New component<br/>"
msgstr ""
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template_2
msgid ""
":\n"
" Removed component<br/>"
msgstr ""
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template
msgid ""
"<br/>\n"
" Product Unit of Measure:"
msgstr ""
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template
msgid "<strong>The component quantities or UoMs have been updated.</strong>"
msgstr ""
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template_2
msgid "<strong>The components have changed.</strong>"
msgstr ""
#. module: mrp_bom_tracking
#: model:ir.model,name:mrp_bom_tracking.model_mrp_bom
msgid "Bill of Material"
msgstr ""
#. module: mrp_bom_tracking
#: model:ir.model,name:mrp_bom_tracking.model_mrp_bom_line
msgid "Bill of Material Line"
msgstr ""
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__type
msgid "BoM Type"
msgstr ""
#. module: mrp_bom_tracking
#: model:ir.model.fields,help:mrp_bom_tracking.field_mrp_bom__product_id
msgid ""
"If a product variant is defined the BOM is available only for this product."
msgstr ""
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__picking_type_id
msgid "Operation Type"
msgstr ""
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__product_tmpl_id
msgid "Product"
msgstr ""
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_line_template
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template
msgid "Product Quantity:"
msgstr ""
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__product_id
msgid "Product Variant"
msgstr ""
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__product_qty
msgid "Quantity"
msgstr ""
#. module: mrp_bom_tracking
#: model:ir.model.fields,field_description:mrp_bom_tracking.field_mrp_bom__code
msgid "Reference"
msgstr ""
#. module: mrp_bom_tracking
#: model:ir.model.fields,help:mrp_bom_tracking.field_mrp_bom__product_qty
msgid ""
"This should be the smallest quantity that this product can be produced in. "
"If the BOM contains operations, make sure the work center capacity is "
"accurate."
msgstr ""
#. module: mrp_bom_tracking
#: model:ir.model.fields,help:mrp_bom_tracking.field_mrp_bom__picking_type_id
msgid ""
"When a procurement has a produce route with a operation type set, it will "
"try to create a Manufacturing Order for that product using a BoM of the same"
" operation type. That allows to define stock rules which trigger different "
"manufacturing orders with different BoMs."
msgstr ""
#. module: mrp_bom_tracking
#: model_terms:ir.ui.view,arch_db:mrp_bom_tracking.track_bom_template
msgid "component<br/>"
msgstr ""

View file

@ -0,0 +1,3 @@
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl).
from . import mrp_bom

View file

@ -0,0 +1,96 @@
# Copyright 2019 ForgeFlow S.L. (https://www.forgeflow.com)
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl).
from odoo import fields, models
from odoo.tools import float_compare
class MrpBom(models.Model):
_inherit = "mrp.bom"
code = fields.Char(tracking=True)
product_id = fields.Many2one(tracking=True)
product_tmpl_id = fields.Many2one(tracking=True)
product_qty = fields.Float(tracking=True)
picking_type_id = fields.Many2one(tracking=True)
type = fields.Selection(tracking=True)
def write(self, values):
bom_line_ids = {}
if "bom_line_ids" in values:
for bom in self:
del_lines = []
for line in values["bom_line_ids"]:
if line[0] == 2:
del_lines.append(line[1])
if del_lines:
bom.message_post_with_view(
"mrp_bom_tracking.track_bom_template",
values={
"lines": self.env["mrp.bom.line"].browse(del_lines),
"mode": "Removed",
},
subtype_id=self.env.ref("mail.mt_note").id,
)
bom_line_ids[bom.id] = bom.bom_line_ids
res = super(MrpBom, self).write(values)
if "bom_line_ids" in values:
for bom in self:
new_lines = bom.bom_line_ids - bom_line_ids[bom.id]
if new_lines:
bom.message_post_with_view(
"mrp_bom_tracking.track_bom_template",
values={"lines": new_lines, "mode": "New"},
subtype_id=self.env.ref("mail.mt_note").id,
)
return res
class MrpBomLine(models.Model):
_inherit = "mrp.bom.line"
def write(self, values):
if "product_id" in values:
for bom in self.mapped("bom_id"):
lines = self.filtered(lambda l: l.bom_id == bom)
product_id = values.get("product_id")
if product_id:
product_id = self.env["product.product"].browse(product_id)
product_id = product_id or lines.product_id
if lines and product_id != lines.product_id:
bom.message_post_with_view(
"mrp_bom_tracking.track_bom_template_2",
values={"lines": lines, "product_id": product_id},
subtype_id=self.env.ref("mail.mt_note").id,
)
elif "product_qty" in values or "product_uom_id" in values:
for bom in self.mapped("bom_id"):
lines = self.filtered(lambda l: l.bom_id == bom)
if lines:
product_qty = values.get("product_qty") or lines.product_qty
product_uom_id = values.get("product_uom_id")
if product_uom_id:
product_uom_id = self.env["uom.uom"].browse(product_uom_id)
# Catch and discard float write rounding errors
# when the qty has not even changed
if (
float_compare(
product_qty,
lines.product_qty,
precision_rounding=lines.product_uom_id.rounding,
)
== 0
and not product_uom_id
):
continue
product_uom_id = product_uom_id or lines.product_uom_id
bom.message_post_with_view(
"mrp_bom_tracking.track_bom_line_template",
values={
"lines": lines,
"product_qty": product_qty,
"product_uom_id": product_uom_id,
},
subtype_id=self.env.ref("mail.mt_note").id,
)
return super(MrpBomLine, self).write(values)

View file

@ -0,0 +1,4 @@
* Miquel Raïch <miquel.raich@forgeflow.com>
* Lois Rilo <lois.rilo@forgeflow.com>
* Joan Sisquella <joan.sisquella@forgeflow.com>
* Urvisha Desai <udesaia@opensourceintegrators.com>

View file

@ -0,0 +1,2 @@
This module adds track visibility to some fields of mrp boms. Also,
it log notes for any change in the bom lines (components).

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View file

@ -0,0 +1,433 @@
<!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>README.rst</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
Despite the name, some widely supported CSS2 features are used.
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: gray; } /* 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, pre.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">
<a class="reference external image-reference" href="https://odoo-community.org/get-involved?utm_source=readme">
<img alt="Odoo Community Association" src="https://odoo-community.org/readme-banner-image" />
</a>
<div class="section" id="mrp-bom-tracking">
<h1>MRP BoM Tracking</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:7ac67e68b34699102e2d34fc31dd3275a2f29e0909c54be34e24ab4b5f14d812
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Production/Stable" src="https://img.shields.io/badge/maturity-Production%2FStable-green.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/lgpl-3.0-standalone.html"><img alt="License: LGPL-3" src="https://img.shields.io/badge/license-LGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/manufacture/tree/16.0/mrp_bom_tracking"><img alt="OCA/manufacture" src="https://img.shields.io/badge/github-OCA%2Fmanufacture-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/manufacture-16-0/manufacture-16-0-mrp_bom_tracking"><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/manufacture&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 adds track visibility to some fields of mrp boms. Also,
it log notes for any change in the bom lines (components).</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-1">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-2">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-3">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-4">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-5">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="bug-tracker">
<h2><a class="toc-backref" href="#toc-entry-1">Bug Tracker</a></h2>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/manufacture/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/manufacture/issues/new?body=module:%20mrp_bom_tracking%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">
<h2><a class="toc-backref" href="#toc-entry-2">Credits</a></h2>
<div class="section" id="authors">
<h3><a class="toc-backref" href="#toc-entry-3">Authors</a></h3>
<ul class="simple">
<li>ForgeFlow</li>
</ul>
</div>
<div class="section" id="contributors">
<h3><a class="toc-backref" href="#toc-entry-4">Contributors</a></h3>
<ul class="simple">
<li>Miquel Raïch &lt;<a class="reference external" href="mailto:miquel.raich&#64;forgeflow.com">miquel.raich&#64;forgeflow.com</a>&gt;</li>
<li>Lois Rilo &lt;<a class="reference external" href="mailto:lois.rilo&#64;forgeflow.com">lois.rilo&#64;forgeflow.com</a>&gt;</li>
<li>Joan Sisquella &lt;<a class="reference external" href="mailto:joan.sisquella&#64;forgeflow.com">joan.sisquella&#64;forgeflow.com</a>&gt;</li>
<li>Urvisha Desai &lt;<a class="reference external" href="mailto:udesaia&#64;opensourceintegrators.com">udesaia&#64;opensourceintegrators.com</a>&gt;</li>
</ul>
</div>
<div class="section" id="maintainers">
<h3><a class="toc-backref" href="#toc-entry-5">Maintainers</a></h3>
<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>This module is part of the <a class="reference external" href="https://github.com/OCA/manufacture/tree/16.0/mrp_bom_tracking">OCA/manufacture</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>
</div>
</body>
</html>

View file

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

View file

@ -0,0 +1,66 @@
# Copyright 2019 ForgeFlow S.L. (https://www.forgeflow.com)
# - Lois Rilo <lois.rilo@forgeflow.com>
# License LGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo.tests.common import TransactionCase
class TestBomTracking(TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.product_obj = cls.env["product.product"]
cls.bom_obj = cls.env["mrp.bom"]
cls.bom_line_obj = cls.env["mrp.bom.line"]
# Create products:
cls.product_1 = cls.product_obj.create({"name": "TEST 01", "type": "product"})
cls.component_1 = cls.product_obj.create({"name": "RM 01", "type": "product"})
cls.component_2 = cls.product_obj.create({"name": "RM 02", "type": "product"})
# cls.uom_1 = cls.env['uom.uom'].create({"name": "RM UOM", "category_id": 1})
cls.component_2_alt = cls.product_obj.create(
{"name": "RM 02-B", "type": "product"}
)
# Create Bills of Materials:
cls.bom = cls.bom_obj.create(
{"product_tmpl_id": cls.product_1.product_tmpl_id.id}
)
cls.line_1 = cls.bom_line_obj.create(
{"product_id": cls.component_1.id, "bom_id": cls.bom.id, "product_qty": 2.0}
)
cls.line_2 = cls.bom_line_obj.create(
{"product_id": cls.component_2.id, "bom_id": cls.bom.id, "product_qty": 5.0}
)
def test_01_change_bom_lines(self):
self.component_3 = self.product_obj.create({"name": "RM 03", "type": "product"})
bom_line_ids = self.bom_line_obj.create(
{
"product_id": self.component_3.id,
"product_qty": 2.0,
"bom_id": self.bom.id,
}
)
self.bom.write({"bom_line_ids": [(6, 0, bom_line_ids.ids)]})
def test_01_change_bom_line_qty(self):
before = self.bom.message_ids
self.line_2.write({"product_qty": 3.0})
after = self.bom.message_ids
self.assertEqual(len(after - before), 1)
def test_02_change_bom_line_product(self):
before = self.bom.message_ids
self.line_2.write({"product_id": self.component_2_alt.id})
after = self.bom.message_ids
self.assertEqual(len(after - before), 1)
self.line_2.write({"product_uom_id": 2})
def test_03_change_bom_line_qty_rounding(self):
self.line_2.write({"product_qty": 2})
before = self.bom.message_ids
self.line_2.write({"product_qty": 2.0000000000001})
after = self.bom.message_ids
self.assertEqual(len(after - before), 0)

View file

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2019 ForgeFlow S.L. (https://www.forgeflow.com)
License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl). -->
<odoo>
<template id="track_bom_line_template">
<div>
<strong>The component quantities or UoMs have been updated.</strong>
<ul>
<t t-foreach="lines" t-as="line">
<li><t t-esc="line.product_id.display_name" />:</li>
Product Quantity: <t t-esc="line.product_qty" /><t
t-if='line.product_qty != product_qty'
> -&gt; <t t-esc="float(product_qty)" /></t><br />
Product Unit of Measure: <t
t-esc="line.product_uom_id.display_name"
/><t t-if='line.product_uom_id != product_uom_id'> -&gt; <t
t-esc="product_uom_id.display_name"
/></t><br />
</t>
</ul>
</div>
</template>
<template id="track_bom_template">
<div>
<strong>The components have changed.</strong>
<ul>
<t t-foreach="lines" t-as="line">
<li><t t-esc="line.product_id.display_name" />: <t
t-esc="mode"
/> component<br /></li>
Product Quantity: <t t-esc="line.product_qty" /><br />
Product Unit of Measure: <t
t-esc="line.product_uom_id.display_name"
/><br />
</t>
</ul>
</div>
</template>
<template id="track_bom_template_2">
<div>
<strong>The components have changed.</strong>
<ul>
<t t-foreach="lines" t-as="line">
<li><t t-esc="line.product_id.display_name" />:
Removed component<br /></li>
<li><t t-esc="product_id.display_name" />:
New component<br /></li>
</t>
</ul>
</div>
</template>
</odoo>

View file

@ -0,0 +1,42 @@
[project]
name = "odoo-bringout-oca-manufacture-mrp_bom_tracking"
version = "16.0.0"
description = "MRP BoM Tracking - Logs any change to a BoM in the chatter"
authors = [
{ name = "Ernad Husremovic", email = "hernad@bring.out.ba" }
]
dependencies = [
"odoo-bringout-oca-ocb-mrp>=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 = ["mrp_bom_tracking"]
[tool.rye]
managed = true
dev-dependencies = [
"pytest>=8.4.1",
]