Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
110 changes: 110 additions & 0 deletions mrp_production_unique_lot/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association

=========================
MRP Production Unique Lot
=========================

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

.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmanufacture-lightgray.png?logo=github
:target: https://github.com/OCA/manufacture/tree/19.0/mrp_production_unique_lot
:alt: OCA/manufacture
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/manufacture-19-0/manufacture-19-0-mrp_production_unique_lot
: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=19.0
:alt: Try me on Runboat

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

This module enforces that each Manufacturing Order (MO) has a unique lot
number for its finished products.

A lot generated by one MO cannot be reused in another MO, and this
constraint is applied when validating the production.

Additionally, to improve user usability, the domain of the
lot_producing_id field has been updated to ensure only lot numbers that
have not been used are selectable, only in case the product is tracked
by lots.

**Table of contents**

.. contents::
:local:

Usage
=====

1. **Configuring The Operation Type**

- Navigate to Inventory > Configuration > Operation Types.
- Open the Manufacturing operation type.
- Check the option 'Force Production Lot Uniqueness'.

2. **Creating a Manufacturing Order**

- Create an MO for a product that is tracked by lots.
- Assign an existing **lot number** for the finished product. This
should be a lot number used on a done production.

3. **Validating the Manufacturing Order**

- When you validate the MO, an error is thrown because the lot has
already been produced.

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_production_unique_lot%0Aversion:%2019.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

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

Credits
=======

Authors
-------

* ForgeFlow

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

- Marina Alapont <marina.alapont@forgeflow.com>
- Jasmin Solanki <jasmin.solanki@forgeflow.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/19.0/mrp_production_unique_lot>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
1 change: 1 addition & 0 deletions mrp_production_unique_lot/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
21 changes: 21 additions & 0 deletions mrp_production_unique_lot/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Copyright 2025 ForgeFlow, S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
{
"name": "MRP Production Unique Lot",
"Summary": "Ensures that production lot numbers are unique and cannot be reused "
"in another manufacturing order.",
"version": "19.0.1.0.0",
"author": "ForgeFlow, Odoo Community Association (OCA)",
"license": "AGPL-3",
"website": "https://github.com/OCA/manufacture",
"category": "Manufacturing",
"depends": [
"mrp",
],
"data": [
"views/stock_picking_views.xml",
"views/mrp_production_views.xml",
],
"installable": True,
"auto_install": False,
}
67 changes: 67 additions & 0 deletions mrp_production_unique_lot/i18n/da_DK.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * mrp_production_unique_lot
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-09 10:46+0000\n"
"PO-Revision-Date: 2025-09-09 10:46+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"

#. module: mrp_production_unique_lot
#: model:ir.model.fields,field_description:mrp_production_unique_lot.field_mrp_production__allowed_lot_producing_ids
msgid "Allowed Lot/Serial Numbers"
msgstr "Tilladte Lot/Serienumre"

#. module: mrp_production_unique_lot
#: model:ir.model.fields,field_description:mrp_production_unique_lot.field_mrp_production__force_lot_uniqueness
#: model:ir.model.fields,field_description:mrp_production_unique_lot.field_stock_picking_type__force_production_lot_uniqueness
msgid "Force Production Lot Uniqueness"
msgstr "Gennemtving entydighed af produktionslot"

#. module: mrp_production_unique_lot
#: model:ir.model.fields,help:mrp_production_unique_lot.field_mrp_production__force_lot_uniqueness
#: model:ir.model.fields,help:mrp_production_unique_lot.field_stock_picking_type__force_production_lot_uniqueness
msgid ""
"If checked, each Manufacturing Order (MO) will have a unique lot number for "
"its finished products. Therefore, lot numbers that have already been used in"
" an MO cannot be reused."
msgstr ""
"Hvis markeret, vil hver produktionsordre (MO) have et unikt lotnummer for "
"sine færdigvarer. Derfor kan lotnumre, der allerede er brugt i en "
"MO, ikke genbruges."

#. module: mrp_production_unique_lot
#: model:ir.model,name:mrp_production_unique_lot.model_stock_picking_type
msgid "Picking Type"
msgstr "Pluk type"

#. module: mrp_production_unique_lot
#: model:ir.model,name:mrp_production_unique_lot.model_mrp_production
msgid "Production Order"
msgstr "Produktionsordre"

#. module: mrp_production_unique_lot
#. odoo-python
#: code:addons/mrp_production_unique_lot/models/mrp_production.py:0
#, python-format
msgid ""
"The lot number %(number)s used for byproduct %(product_name)s has already "
"been produced"
msgstr ""
"Lotnummeret %(number)s, brugt til biproduktet %(product_name)s, er allerede "
"blevet produceret."

#. module: mrp_production_unique_lot
#. odoo-python
#: code:addons/mrp_production_unique_lot/models/mrp_production.py:0
#, python-format
msgid "This lot number for product %s has already been produced"
msgstr "Dette lotnummer for produktet %s er allerede blevet produceret."
68 changes: 68 additions & 0 deletions mrp_production_unique_lot/i18n/it.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * mrp_production_unique_lot
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-10-30 10:43+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.10.4\n"

#. module: mrp_production_unique_lot
#: model:ir.model.fields,field_description:mrp_production_unique_lot.field_mrp_production__allowed_lot_producing_ids
msgid "Allowed Lot/Serial Numbers"
msgstr "Numeri lotto/seriali consentiti"

#. module: mrp_production_unique_lot
#: model:ir.model.fields,field_description:mrp_production_unique_lot.field_mrp_production__force_lot_uniqueness
#: model:ir.model.fields,field_description:mrp_production_unique_lot.field_stock_picking_type__force_production_lot_uniqueness
msgid "Force Production Lot Uniqueness"
msgstr "Forza unicità lotto produzione"

#. module: mrp_production_unique_lot
#: model:ir.model.fields,help:mrp_production_unique_lot.field_mrp_production__force_lot_uniqueness
#: model:ir.model.fields,help:mrp_production_unique_lot.field_stock_picking_type__force_production_lot_uniqueness
msgid ""
"If checked, each Manufacturing Order (MO) will have a unique lot number for "
"its finished products. Therefore, lot numbers that have already been used in"
" an MO cannot be reused."
msgstr ""
"Se selezionata, ogni ordine di produzione (OP) avrà un numero di lotto "
"univoco per i suoi prodotti finiti. Pertanto, i numeri di lotto già "
"utilizzati in un OP non potranno essere riutilizzati."

#. module: mrp_production_unique_lot
#: model:ir.model,name:mrp_production_unique_lot.model_stock_picking_type
msgid "Picking Type"
msgstr "Tipo prelievo"

#. module: mrp_production_unique_lot
#: model:ir.model,name:mrp_production_unique_lot.model_mrp_production
msgid "Production Order"
msgstr "Ordine di produzione"

#. module: mrp_production_unique_lot
#. odoo-python
#: code:addons/mrp_production_unique_lot/models/mrp_production.py:0
#, python-format
msgid ""
"The lot number %(number)s used for byproduct %(product_name)s has already "
"been produced"
msgstr ""
"Il numero di lotto %(number)s usato per il semilavorato %(product_name)s è "
"già stato prodotto"

#. module: mrp_production_unique_lot
#. odoo-python
#: code:addons/mrp_production_unique_lot/models/mrp_production.py:0
#, python-format
msgid "This lot number for product %s has already been produced"
msgstr "Questo numero di lotto per il prodotto %s è già stato prodotto"
60 changes: 60 additions & 0 deletions mrp_production_unique_lot/i18n/mrp_production_unique_lot.pot
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * mrp_production_unique_lot
#
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_production_unique_lot
#: model:ir.model.fields,field_description:mrp_production_unique_lot.field_mrp_production__allowed_lot_producing_ids
msgid "Allowed Lot/Serial Numbers"
msgstr ""

#. module: mrp_production_unique_lot
#: model:ir.model.fields,field_description:mrp_production_unique_lot.field_mrp_production__force_lot_uniqueness
#: model:ir.model.fields,field_description:mrp_production_unique_lot.field_stock_picking_type__force_production_lot_uniqueness
msgid "Force Production Lot Uniqueness"
msgstr ""

#. module: mrp_production_unique_lot
#: model:ir.model.fields,help:mrp_production_unique_lot.field_mrp_production__force_lot_uniqueness
#: model:ir.model.fields,help:mrp_production_unique_lot.field_stock_picking_type__force_production_lot_uniqueness
msgid ""
"If checked, each Manufacturing Order (MO) will have a unique lot number for "
"its finished products. Therefore, lot numbers that have already been used in"
" an MO cannot be reused."
msgstr ""

#. module: mrp_production_unique_lot
#: model:ir.model,name:mrp_production_unique_lot.model_stock_picking_type
msgid "Picking Type"
msgstr ""

#. module: mrp_production_unique_lot
#: model:ir.model,name:mrp_production_unique_lot.model_mrp_production
msgid "Production Order"
msgstr ""

#. module: mrp_production_unique_lot
#. odoo-python
#: code:addons/mrp_production_unique_lot/models/mrp_production.py:0
#, python-format
msgid ""
"The lot number %(number)s used for byproduct %(product_name)s has already "
"been produced"
msgstr ""

#. module: mrp_production_unique_lot
#. odoo-python
#: code:addons/mrp_production_unique_lot/models/mrp_production.py:0
#, python-format
msgid "This lot number for product %s has already been produced"
msgstr ""
2 changes: 2 additions & 0 deletions mrp_production_unique_lot/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from . import mrp_production
from . import stock_picking_type
Loading