Skip to content

Commit

Permalink
[ADD] stock_service_level
Browse files Browse the repository at this point in the history
  • Loading branch information
petrus-v committed Mar 12, 2024
1 parent 66bd766 commit d4fca4f
Show file tree
Hide file tree
Showing 20 changed files with 1,132 additions and 0 deletions.
1 change: 1 addition & 0 deletions setup/stock_service_level/odoo/addons/stock_service_level
6 changes: 6 additions & 0 deletions setup/stock_service_level/setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import setuptools

setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)
105 changes: 105 additions & 0 deletions stock_service_level/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
===================
Stock service level
===================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:805afd083d8f9337cdae437d74b17782ba04685076de9035600632972829a1fc
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |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%2Fwms-lightgray.png?logo=github
:target: https://github.com/OCA/wms/tree/14.0/stock_service_level
:alt: OCA/wms
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/wms-14-0/wms-14-0-stock_service_level
: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/wms&target_branch=14.0
:alt: Try me on Runboat

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

Base module to manage route / reservation rules per service level.

This module enhances Odoo with service level capabilities for stock moves.
It enables differentiation of service offerings for the same physical product.

A service level refers to a distinct type of service provision associated
with a product. It allows for selling a product with various service
offerings or levels, facilitating customized customer experiences.

Features:

- Enables selling/requesting the same physical product with different service levels.
- Avoids splitting products into separate procurement groups, preserving
flexibility in logistics chain operations.
- Allows definition of different routes for products based on service level
cf `stock_service_level_route` module.
- Select service level on sale order using `sale_stock_service_level` module.

The module integrates seamlessly with Odoo's stock management system.
Users can configure service levels and associated rules through the
interface, enabling efficient management of product variants and service
offerings within the logistics framework.

**Table of contents**

.. contents::
:local:

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

Bugs are tracked on `GitHub Issues <https://github.com/OCA/wms/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/wms/issues/new?body=module:%20stock_service_level%0Aversion:%2014.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
~~~~~~~

* Pierre Verkest <pierreverkest84@gmail.com>

Contributors
~~~~~~~~~~~~

* Pierre Verkest <pierreverkest84@gmail.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.

.. |maintainer-petrus-v| image:: https://github.com/petrus-v.png?size=40px
:target: https://github.com/petrus-v
:alt: petrus-v

Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:

|maintainer-petrus-v|

This module is part of the `OCA/wms <https://github.com/OCA/wms/tree/14.0/stock_service_level>`_ 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 stock_service_level/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
22 changes: 22 additions & 0 deletions stock_service_level/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Copyright 2024 Foodles (http://www.foodles.co).
# @author Pierre Verkest <pierreverkest84@gmail.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "Stock service level",
"summary": "Manage stock route by service level",
"version": "14.0.1.0.0",
"development_status": "Beta",
"category": "Warehouse Management",
"website": "https://github.com/OCA/wms",
"author": "Pierre Verkest <pierreverkest84@gmail.com>, Odoo Community Association (OCA)",
"maintainers": ["petrus-v"],
"license": "AGPL-3",
"application": False,
"installable": True,
"depends": ["stock"],
"data": [
"security/ir.model.access.csv",
"views/stock_picking_views.xml",
"views/stock_service_level.xml",
],
}
98 changes: 98 additions & 0 deletions stock_service_level/i18n/fr.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_service_level
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0+e\n"
"Report-Msgid-Bugs-To: \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: stock_service_level
#: model:ir.model.fields,field_description:stock_service_level.field_stock_service_level__code
msgid "Code"
msgstr "Code"

#. module: stock_service_level
#: model:ir.model.constraint,message:stock_service_level.constraint_stock_service_level_book_format_code_uniq
msgid "Code must be uniq."
msgstr "Le code doit-être unique."

#. module: stock_service_level
#: model_terms:ir.actions.act_window,help:stock_service_level.action_stock_service_level
msgid "Create your first service level !"
msgstr "Créer une préstation / offre / Niveau de service !"

#. module: stock_service_level
#: model:ir.model.fields,field_description:stock_service_level.field_stock_service_level__create_uid
msgid "Created by"
msgstr "Créé par"

#. module: stock_service_level
#: model:ir.model.fields,field_description:stock_service_level.field_stock_service_level__create_date
msgid "Created on"
msgstr "Créé le"

#. module: stock_service_level
#: model:ir.model.fields,field_description:stock_service_level.field_stock_move__display_name
#: model:ir.model.fields,field_description:stock_service_level.field_stock_rule__display_name
#: model:ir.model.fields,field_description:stock_service_level.field_stock_service_level__display_name
msgid "Display Name"
msgstr "Libellé"

#. module: stock_service_level
#: model:ir.model.fields,field_description:stock_service_level.field_stock_move__id
#: model:ir.model.fields,field_description:stock_service_level.field_stock_rule__id
#: model:ir.model.fields,field_description:stock_service_level.field_stock_service_level__id
msgid "ID"
msgstr ""

#. module: stock_service_level
#: model:ir.model.fields,field_description:stock_service_level.field_stock_move____last_update
#: model:ir.model.fields,field_description:stock_service_level.field_stock_rule____last_update
#: model:ir.model.fields,field_description:stock_service_level.field_stock_service_level____last_update
msgid "Last Modified on"
msgstr "Dernière modification le"

#. module: stock_service_level
#: model:ir.model.fields,field_description:stock_service_level.field_stock_service_level__write_uid
msgid "Last Updated by"
msgstr "Dernière modification par"

#. module: stock_service_level
#: model:ir.model.fields,field_description:stock_service_level.field_stock_service_level__write_date
msgid "Last Updated on"
msgstr "Dernière modification le"

#. module: stock_service_level
#: model:ir.model.fields,field_description:stock_service_level.field_stock_service_level__name
msgid "Name"
msgstr "Nom"

#. module: stock_service_level
#: model:ir.actions.act_window,name:stock_service_level.action_stock_service_level
#: model:ir.model.fields,field_description:stock_service_level.field_stock_move__service_level_id
#: model:ir.ui.menu,name:stock_service_level.menu_action_stock_service_level
msgid "Service level"
msgstr "Prestation"

#. module: stock_service_level
#: model:ir.model,name:stock_service_level.model_stock_move
msgid "Stock Move"
msgstr "Ligne de transfert"

#. module: stock_service_level
#: model:ir.model,name:stock_service_level.model_stock_rule
msgid "Stock Rule"
msgstr "Règle de stock"

#. module: stock_service_level
#: model:ir.model,name:stock_service_level.model_stock_service_level
msgid "Stock Service level"
msgstr "Prestation / Offre / Niveau de service"
97 changes: 97 additions & 0 deletions stock_service_level/i18n/stock_service_level.pot
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_service_level
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0+e\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: stock_service_level
#: model:ir.model.fields,field_description:stock_service_level.field_stock_service_level__code
msgid "Code"
msgstr ""

#. module: stock_service_level
#: model:ir.model.constraint,message:stock_service_level.constraint_stock_service_level_book_format_code_uniq
msgid "Code must be uniq."
msgstr ""

#. module: stock_service_level
#: model_terms:ir.actions.act_window,help:stock_service_level.action_stock_service_level
msgid "Create your first service level !"
msgstr ""

#. module: stock_service_level
#: model:ir.model.fields,field_description:stock_service_level.field_stock_service_level__create_uid
msgid "Created by"
msgstr ""

#. module: stock_service_level
#: model:ir.model.fields,field_description:stock_service_level.field_stock_service_level__create_date
msgid "Created on"
msgstr ""

#. module: stock_service_level
#: model:ir.model.fields,field_description:stock_service_level.field_stock_move__display_name
#: model:ir.model.fields,field_description:stock_service_level.field_stock_rule__display_name
#: model:ir.model.fields,field_description:stock_service_level.field_stock_service_level__display_name
msgid "Display Name"
msgstr ""

#. module: stock_service_level
#: model:ir.model.fields,field_description:stock_service_level.field_stock_move__id
#: model:ir.model.fields,field_description:stock_service_level.field_stock_rule__id
#: model:ir.model.fields,field_description:stock_service_level.field_stock_service_level__id
msgid "ID"
msgstr ""

#. module: stock_service_level
#: model:ir.model.fields,field_description:stock_service_level.field_stock_move____last_update
#: model:ir.model.fields,field_description:stock_service_level.field_stock_rule____last_update
#: model:ir.model.fields,field_description:stock_service_level.field_stock_service_level____last_update
msgid "Last Modified on"
msgstr ""

#. module: stock_service_level
#: model:ir.model.fields,field_description:stock_service_level.field_stock_service_level__write_uid
msgid "Last Updated by"
msgstr ""

#. module: stock_service_level
#: model:ir.model.fields,field_description:stock_service_level.field_stock_service_level__write_date
msgid "Last Updated on"
msgstr ""

#. module: stock_service_level
#: model:ir.model.fields,field_description:stock_service_level.field_stock_service_level__name
msgid "Name"
msgstr ""

#. module: stock_service_level
#: model:ir.actions.act_window,name:stock_service_level.action_stock_service_level
#: model:ir.model.fields,field_description:stock_service_level.field_stock_move__service_level_id
#: model:ir.ui.menu,name:stock_service_level.menu_action_stock_service_level
msgid "Service level"
msgstr ""

#. module: stock_service_level
#: model:ir.model,name:stock_service_level.model_stock_move
msgid "Stock Move"
msgstr ""

#. module: stock_service_level
#: model:ir.model,name:stock_service_level.model_stock_rule
msgid "Stock Rule"
msgstr ""

#. module: stock_service_level
#: model:ir.model,name:stock_service_level.model_stock_service_level
msgid "Stock Service level"
msgstr ""
3 changes: 3 additions & 0 deletions stock_service_level/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from . import stock_move
from . import stock_rule
from . import stock_service_level
26 changes: 26 additions & 0 deletions stock_service_level/models/stock_move.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Copyright 2024 Foodles (https://www.foodles.co)
# @author Pierre Verkest <pierreverkest84@gmail.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import api, fields, models


class StockMove(models.Model):
_inherit = "stock.move"

service_level_id = fields.Many2one(
comodel_name="stock.service.level",
string="Service level",
)

def _prepare_procurement_values(self):
return {
**super()._prepare_procurement_values(),
"service_level_id": self.service_level_id.id,
}

@api.model
def _prepare_merge_moves_distinct_fields(self):
return [
*super()._prepare_merge_moves_distinct_fields(),
"service_level_id",
]
11 changes: 11 additions & 0 deletions stock_service_level/models/stock_rule.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Copyright 2024 Foodles (https://www.foodles.co)
# @author Pierre Verkest <pierreverkest84@gmail.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import models


class StockRule(models.Model):
_inherit = "stock.rule"

def _get_custom_move_fields(self):
return [*super()._get_custom_move_fields(), "service_level_id"]
Loading

0 comments on commit d4fca4f

Please sign in to comment.