Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[16.0][ADD] stock_storage_type_putaway_abc_classification_sale_stock #497

Open
wants to merge 1 commit into
base: 16.0
Choose a base branch
from
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
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,
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
=============================================
Stock Storage Type Putaway Abc Classification
=============================================

.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |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/16.0/stock_storage_type_putaway_abc_classification_sale_stock
:alt: OCA/wms
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/wms-16-0/wms-16-0-stock_storage_type_putaway_abc_classification_sale_stock
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
:target: https://runbot.odoo-community.org/runbot/285/16.0
:alt: Try me on Runbot

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

This module allows to compute the abc_storage field on products from
abc classification profiles.

**Table of contents**

.. contents::
:local:

Usage
=====

See product_abc_classification and stock_storage_type_putaway_abc modules
for configuration.

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 smashing it by providing a detailed and welcomed
`feedback <https://github.com/OCA/wms/issues/new?body=module:%20stock_storage_type_putaway_abc_classification_sale_stock%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
~~~~~~~

* ACSONE SA/NV

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

* Laurent Mignon <laurent.mignon@acsone.eu>
* Denis Roussel <denis.roussel@acsone.eu>

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-lmignon| image:: https://github.com/lmignon.png?size=40px
:target: https://github.com/lmignon
:alt: lmignon
.. |maintainer-rousseldenis| image:: https://github.com/rousseldenis.png?size=40px
:target: https://github.com/rousseldenis
:alt: rousseldenis

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

|maintainer-lmignon| |maintainer-rousseldenis|

This module is part of the `OCA/wms <https://github.com/OCA/wms/tree/16.0/stock_storage_type_putaway_abc_classification_sale_stock>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Copyright 2021 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

{
"name": "Stock Storage Type Putaway Abc Classification",
"summary": """
ABC classification for sales and warehouse management""",
"version": "16.0.1.0.0",
"license": "AGPL-3",
"website": "https://github.com/OCA/wms",
"maintainers": ["lmignon", "rousseldenis"],
"author": "ACSONE SA/NV,Odoo Community Association (OCA)",
"depends": [
"product_abc_classification_sale_stock",
"stock_storage_type_putaway_abc",
],
"installable": True,
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_storage_type_putaway_abc_classification
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-02-03 06:51+0000\n"
"PO-Revision-Date: 2021-02-03 06:51+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: stock_storage_type_putaway_abc_classification
#: model:ir.model,name:stock_storage_type_putaway_abc_classification.model_product_product
#, fuzzy
msgid "Product"
msgstr "Article"

#. module: stock_storage_type_putaway_abc_classification
#: model:ir.model,name:stock_storage_type_putaway_abc_classification.model_product_template
msgid "Product Template"
msgstr "Article"

#. module: stock_storage_type_putaway_abc_classification
#: model:ir.model,name:stock_storage_type_putaway_abc_classification.model_abc_classification_level
msgid "abc.classification.level"
msgstr "Classe ABC"

#~ msgid "Abc storage"
#~ msgstr "Classe ABC"
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_storage_type_putaway_abc_classification_sale_stock
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.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_storage_type_putaway_abc_classification_sale_stock
#: model:ir.model,name:stock_storage_type_putaway_abc_classification_sale_stock.model_product_product
msgid "Product"
msgstr ""

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

#. module: stock_storage_type_putaway_abc_classification_sale_stock
#: model:ir.model,name:stock_storage_type_putaway_abc_classification_sale_stock.model_abc_classification_level
msgid "abc.classification.level"
msgstr ""

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import abc_classification_level, stock_location
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Copyright 2021 ACSONE SA/NV
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from odoo import fields, models

from odoo.addons.stock_storage_type_putaway_abc.models.stock_location import (
ABC_SELECTION,
)


class AbcClassificationLevel(models.Model):

_inherit = "abc.classification.level"
_order = "percentage desc, id desc"

name = fields.Selection(ABC_SELECTION, required=True)

def name_get(self):
field_name = self._fields["name"]
label_by_value = dict(field_name._description_selection(self.env))
vals = []
for record in self:
vals.append((record.id, label_by_value[record.name]))
return vals
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Copyright 2022 ACSONE SA/NV
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import models


class StockLocation(models.Model):

_inherit = "stock.location"

def _get_sorted_leaf_locations_orderby_abc(self, products):
"""
'self' is the location we want to put products and apply the
putaway strategy.
Evaluate the abc classification profile ids in order to retrieve
the corresponding one.
"""
location_level = products.abc_classification_product_level_ids.filtered(
Copy link
Sponsor Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@rousseldenis products means potentially a recordset with more than one product... Do we have to enforce that the method is always called with 1 product our do we have to take the first product into the recordset as into the initial implementation

Copy link
Sponsor Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jbaudoux Your input on this ? IMHO, we indeed could use ensure_one() as we must ensure location_level is 1.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This can be called when computing the putaway of a stock.package.level for a mixed pallet containing multiple products.
Ideally we should get the main product of the set. first is current implementation but the product with the lowest (alphabetically) abc_storage would be a better implementation.

lambda level, location=self: level.profile_type == "sale_stock"
and level.profile_id.warehouse_id == location.warehouse_id
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where is location.warehouse_id coming from ? A location is not linked to a warehouse

)

if not location_level:
return super()._get_sorted_leaf_locations_orderby_abc(products)
return location_level.level_id.name
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
* Laurent Mignon <laurent.mignon@acsone.eu>
* Denis Roussel <denis.roussel@acsone.eu>
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
This module allows to compute the abc_storage field on products from
abc classification profiles.
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
See product_abc_classification and stock_storage_type_putaway_abc modules
for configuration.
Loading
Loading