Skip to content

Commit

Permalink
Merge PR #951 into 16.0
Browse files Browse the repository at this point in the history
Signed-off-by rousseldenis
  • Loading branch information
OCA-git-bot committed Jan 6, 2025
2 parents 455a2da + efd9014 commit 7603e67
Show file tree
Hide file tree
Showing 40 changed files with 5,661 additions and 0 deletions.
1 change: 1 addition & 0 deletions setup/shopfloor_reception/odoo/addons/shopfloor_reception
6 changes: 6 additions & 0 deletions setup/shopfloor_reception/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,
)
97 changes: 97 additions & 0 deletions shopfloor_reception/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
===================
Shopfloor Reception
===================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:2daa340b0e627a464975665796f422f9792c329d73389a28e995a4a0c11234a2
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |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/shopfloor_reception
: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-shopfloor_reception
: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=16.0
:alt: Try me on Runboat

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

Shopfloor implementation of the reception scenario.
Allows to receive products and create the proper packs for each logistic unit.

**Table of contents**

.. contents::
:local:

Known issues / Roadmap
======================

Implement methods in the backend to cancel lines (to be used by the frontend in select_line & set_quantity).

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:%20shopfloor_reception%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
~~~~~~~

* Camptocamp

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

* Matthieu Méquignon <matthieu.mequignon@camptocamp.com>
* Juan Miguel Sánchez Arce <juan.sanchez@camptocamp.com>
* Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
* Michael Tietz (MT Software) <mtietz@mt-software.de>
* Souheil Bejaoui <souheil.bejaoui@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-mmequignon| image:: https://github.com/mmequignon.png?size=40px
:target: https://github.com/mmequignon
:alt: mmequignon
.. |maintainer-JuMiSanAr| image:: https://github.com/JuMiSanAr.png?size=40px
:target: https://github.com/JuMiSanAr
:alt: JuMiSanAr

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

|maintainer-mmequignon| |maintainer-JuMiSanAr|

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

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
3 changes: 3 additions & 0 deletions shopfloor_reception/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from . import services
from . import models
from .hooks import post_init_hook, uninstall_hook
22 changes: 22 additions & 0 deletions shopfloor_reception/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"name": "Shopfloor Reception",
"summary": "Reception scenario for shopfloor",
"version": "16.0.1.0.0",
"development_status": "Beta",
"category": "Inventory",
"website": "https://github.com/OCA/wms",
"author": "Camptocamp, Odoo Community Association (OCA)",
"maintainers": ["mmequignon", "JuMiSanAr"],
"license": "AGPL-3",
"installable": True,
"depends": ["shopfloor"],
"data": [
"data/shopfloor_scenario_data.xml",
],
"demo": [
"demo/stock_picking_type_demo.xml",
"demo/shopfloor_menu_demo.xml",
],
"post_init_hook": "post_init_hook",
"uninstall_hook": "uninstall_hook",
}
18 changes: 18 additions & 0 deletions shopfloor_reception/data/shopfloor_scenario_data.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2022 Camptocamp SA
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo noupdate="1">

<record id="scenario_reception" model="shopfloor.scenario">
<field name="name">Reception</field>
<field name="key">reception</field>
<field name="options_edit">
{
"auto_post_line": true,
"allow_return": true,
"scan_location_or_pack_first": true
}
</field>
</record>

</odoo>
18 changes: 18 additions & 0 deletions shopfloor_reception/demo/shopfloor_menu_demo.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2022 Camptocamp SA
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo>

<record id="shopfloor_menu_demo_reception" model="shopfloor.menu">
<field name="name">Reception</field>
<field name="sequence">45</field>
<field name="profile_id" ref="shopfloor.profile_demo_1" />
<field name="scenario_id" ref="shopfloor_reception.scenario_reception" />
<field
name="picking_type_ids"
eval="[(4, ref('shopfloor_reception.picking_type_reception_demo'))]"
/>
</record>


</odoo>
23 changes: 23 additions & 0 deletions shopfloor_reception/demo/stock_picking_type_demo.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2022 Camptocamp SA
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo>

<record id="picking_type_reception_demo" model="stock.picking.type">
<field name="name">Reception</field>
<field name="sequence_code">RCP</field>
<field name="sequence" eval="10" />
<field name="warehouse_id" ref="stock.warehouse0" />
<field name="default_location_src_id" ref="stock.stock_location_suppliers" />
<field name="default_location_dest_id" ref="stock.stock_location_company" />
<field name="show_entire_packs" eval="1" />
<field name="use_create_lots" eval="0" />
<field name="use_existing_lots" eval="1" />
<field name="color" eval="5" />
<field name="code">internal</field>
<field name="show_operations" eval="1" />
<field name="display_completion_info" eval="1" />
</record>


</odoo>
61 changes: 61 additions & 0 deletions shopfloor_reception/docs/reception_sequence_graph.mermaid
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
%%{init: {'theme': 'neutral' } }%%
sequenceDiagram
participant select_document
participant select_move
participant set_lot
participant set_quantity
participant set_destination
participant select_dest_package
rect rgb(0, 250, 250)
note left of select_document: scan_document(barcode)
select_document ->> select_document: Error: barcode not found
select_document ->> select_document: Multiple picking matching the product / packaging barcode
select_document ->> select_move: Picking scanned, one has been found
select_document ->> set_lot: Packaging / Product has been scanned, single correspondance. Tracked product
select_document ->> set_quantity: Packaging / Product has been scanned, single correspondance. Not tracked product
end
rect rgb(100, 250, 170)
note left of select_move: scan_line(picking_id, barcode)
select_move ->> select_move: Error: barcode not found
select_move ->> set_lot: Packaging / Product has been scanned, single correspondance. Tracked product
select_move ->> set_quantity: Packaging / Product has been scanned, single correspondance. Not tracked product
end
rect rgb(250, 220, 200)
note left of set_lot: set_lot(picking_id, select_line_ids, lot_name=None, expiration_date=None)
set_lot ->> select_move: User clicked on back
set_lot ->> set_lot: Barcode not found. Ask user to create one from barcode
set_lot ->> set_lot: expiration_date has been set on the selected line
set_lot ->> set_lot: lot_it has been set on the selected line
set_lot ->> set_lot: Error: expiration_date is required
note right of set_lot: set_lot_confirm_action(picking_id, select_line_ids)
set_lot ->> set_quantity: User clicked on the confirm button
end
rect rgb(250, 150, 250)
note left of set_quantity: set_quantity(picking_id, select_line_ids, quantity=None, barcode=None, confirmation=None)
set_quantity ->> set_quantity: Quantity has been set
set_quantity ->> set_quantity: User scanned a product / packaging, quantity has been incremented
set_quantity ->> set_quantity: Error: User tried to scan a package with a non valid location
set_quantity ->> set_quantity: Error: User tried to scan a non valid location
set_quantity ->> set_quantity: Warning: User scanned an unknown barcode. Ask to create a package
set_quantity ->> select_move: User scanned a package with a valid location
set_quantity ->> select_move: User scanned a valid location
set_quantity ->> set_destination: User scanner a package with no location
note right of set_quantity: process_with_new_pack(picking_id, select_line_ids)
set_quantity ->> set_destination: User confirmed the creation of a new package
note right of set_quantity: process_with_existing_pack(picking_id, select_line_ids)
set_quantity ->> select_dest_package: User asked to use an existing package
note right of set_quantity: process_with_new_pack(picking_id, select_line_ids)
set_quantity ->> set_destination: User clicked on "process with new pack"
end
rect rgb(220, 220, 220)
note left of set_destination: set_destination(picking_id, selected_line_ids, location_id, confirmation=False)
set_destination ->> set_destination: Warning: User scanned a child location of the picking type. Ask for confirmation
set_destination ->> set_destination: Error: User tried to scan a non-valid location
set_destination ->> select_move: User scanned a child location of the move's dest location
end
rect rgb(250, 150, 150)
note left of select_dest_package: select_dest_package(picking_id, selected_line_ids, location_id, confirmation=False)
select_dest_package ->> select_move: User scanned a valid package
select_dest_package ->> select_dest_package: Warning: User scanned an unknown barcode. Confirm to create one.
select_dest_package ->> select_dest_package: Error: User scanned a non-empty package
end
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
24 changes: 24 additions & 0 deletions shopfloor_reception/hooks.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Copyright 2023 Camptocamp SA
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)

import logging

from odoo import SUPERUSER_ID, api

from odoo.addons.shopfloor_base.utils import purge_endpoints, register_new_services

from .services.reception import Reception as Service

_logger = logging.getLogger(__file__)


def post_init_hook(cr, registry):
env = api.Environment(cr, SUPERUSER_ID, {})
_logger.info("Register routes for %s", Service._usage)
register_new_services(env, Service)


def uninstall_hook(cr, registry):
env = api.Environment(cr, SUPERUSER_ID, {})
_logger.info("Refreshing routes for existing apps")
purge_endpoints(env, Service._usage)
49 changes: 49 additions & 0 deletions shopfloor_reception/i18n/it.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * shopfloor_reception
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-09-20 04:45+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 4.17\n"

#. module: shopfloor_reception
#: model:ir.model.fields,field_description:shopfloor_reception.field_stock_picking__display_name
msgid "Display Name"
msgstr "Nome visualizzato"

#. module: shopfloor_reception
#: model:ir.model.fields,field_description:shopfloor_reception.field_stock_picking__id
msgid "ID"
msgstr "ID"

#. module: shopfloor_reception
#: model:ir.model.fields,field_description:shopfloor_reception.field_stock_picking__is_shopfloor_created
msgid "Is Shopfloor Created"
msgstr "Il reparto è crato"

#. module: shopfloor_reception
#: model:ir.model.fields,field_description:shopfloor_reception.field_stock_picking____last_update
msgid "Last Modified on"
msgstr "Ultima modifica il"

#. module: shopfloor_reception
#: model:shopfloor.menu,name:shopfloor_reception.shopfloor_menu_demo_reception
#: model:shopfloor.scenario,name:shopfloor_reception.scenario_reception
#: model:stock.picking.type,name:shopfloor_reception.picking_type_reception_demo
msgid "Reception"
msgstr "Ricezione"

#. module: shopfloor_reception
#: model:ir.model,name:shopfloor_reception.model_stock_picking
msgid "Transfer"
msgstr "Trasferimento"
46 changes: 46 additions & 0 deletions shopfloor_reception/i18n/shopfloor_reception.pot
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * shopfloor_reception
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.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: shopfloor_reception
#: model:ir.model.fields,field_description:shopfloor_reception.field_stock_picking__display_name
msgid "Display Name"
msgstr ""

#. module: shopfloor_reception
#: model:ir.model.fields,field_description:shopfloor_reception.field_stock_picking__id
msgid "ID"
msgstr ""

#. module: shopfloor_reception
#: model:ir.model.fields,field_description:shopfloor_reception.field_stock_picking__is_shopfloor_created
msgid "Is Shopfloor Created"
msgstr ""

#. module: shopfloor_reception
#: model:ir.model.fields,field_description:shopfloor_reception.field_stock_picking____last_update
msgid "Last Modified on"
msgstr ""

#. module: shopfloor_reception
#: model:shopfloor.menu,name:shopfloor_reception.shopfloor_menu_demo_reception
#: model:shopfloor.scenario,name:shopfloor_reception.scenario_reception
#: model:stock.picking.type,name:shopfloor_reception.picking_type_reception_demo
msgid "Reception"
msgstr ""

#. module: shopfloor_reception
#: model:ir.model,name:shopfloor_reception.model_stock_picking
msgid "Transfer"
msgstr ""
1 change: 1 addition & 0 deletions shopfloor_reception/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import stock_picking
10 changes: 10 additions & 0 deletions shopfloor_reception/models/stock_picking.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Copyright 2023 Camptocamp SA
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)

from odoo import fields, models


class StockPicking(models.Model):
_inherit = "stock.picking"

is_shopfloor_created = fields.Boolean()
Loading

0 comments on commit 7603e67

Please sign in to comment.