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
6 changes: 6 additions & 0 deletions setup/shopfloor_reception_dock/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,
)
6 changes: 6 additions & 0 deletions setup/shopfloor_reception_dock_mobile/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,
)
2 changes: 1 addition & 1 deletion shopfloor_reception/demo/stock_picking_type_demo.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
<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="code">incoming</field>
<field name="show_operations" eval="1" />
<field name="display_completion_info" eval="1" />
</record>
Expand Down
106 changes: 106 additions & 0 deletions shopfloor_reception_dock/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association

=========================
Shopfloor Reception Docks
=========================

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

.. |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%2Fwms-lightgray.png?logo=github
:target: https://github.com/OCA/wms/tree/16.0/shopfloor_reception_dock
: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_dock
: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|

Add docks info to shopfloor.

**Table of contents**

.. contents::
:local:

Use Cases / Context
===================

During reception, carrier trucks deposit goods across various physical
unloading docks. Because these goods are technically in transit or
sitting on an external dock, they have not yet been processed into the
system's internal ``stock.location``\ s. Consequently, they are
invisible to standard inventory tracking.

Warehouse operators using the mobile ``shopfloor`` interface need to
know exactly which dock a specific picking or carrier truck is located
at to efficiently initiate the receiving. Without this visibility,
operators waste significant time searching the physical staging areas
for the correct pallets.

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_dock%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
------------

- Nicolas Delbovier nicolas.delbovier@acsone.eu (https://www.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-jbaudoux| image:: https://github.com/jbaudoux.png?size=40px
:target: https://github.com/jbaudoux
:alt: jbaudoux
.. |maintainer-nicolas-delbovier-acsone| image:: https://github.com/nicolas-delbovier-acsone.png?size=40px
:target: https://github.com/nicolas-delbovier-acsone
:alt: nicolas-delbovier-acsone

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

|maintainer-jbaudoux| |maintainer-nicolas-delbovier-acsone|

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

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
2 changes: 2 additions & 0 deletions shopfloor_reception_dock/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from . import actions
from . import services
15 changes: 15 additions & 0 deletions shopfloor_reception_dock/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Copyright 2026 ACSONE SA/NV
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

{
"name": "Shopfloor Reception Docks",
"summary": """Add docks info to shopfloor""",
"version": "16.0.1.0.0",
"license": "AGPL-3",
"author": "ACSONE SA/NV,Odoo Community Association (OCA)",
Comment thread
nicolas-delbovier-acsone marked this conversation as resolved.
"website": "https://github.com/OCA/wms",
"maintainers": ["jbaudoux", "nicolas-delbovier-acsone"],
"depends": ["shopfloor_reception", "stock_picking_dock"],
"data": [],
"demo": [],
}
4 changes: 4 additions & 0 deletions shopfloor_reception_dock/actions/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
from . import data
from . import schema
from . import search
from . import message
19 changes: 19 additions & 0 deletions shopfloor_reception_dock/actions/data.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Copyright 2026 ACSONE SA/NV
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).


from odoo.addons.component.core import Component


class DataAction(Component):
_inherit = "shopfloor.data.action"

@property
def _picking_parser(self):
res = super()._picking_parser
res += [("dock_ids:docks", self._dock_parser)]
return res

@property
def _dock_parser(self):
return self._simple_record_parser()
27 changes: 27 additions & 0 deletions shopfloor_reception_dock/actions/message.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Copyright 2026 ACSONE SA/NV
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import _

from odoo.addons.component.core import Component


class MessageAction(Component):
_inherit = "shopfloor.message.action"

def dock_no_assigned_picking(self, dock):
return {
"message_type": "error",
"body": _(
"No assigned transfers found for Dock: '%(dock_name)s'",
dock_name=dock.name,
),
}

def dock_pickings_filtered(self, dock):
return {
"message_type": "info",
"body": _(
"Transfers filtered by Dock: '%(dock_name)s'",
dock_name=dock.name,
),
}
17 changes: 17 additions & 0 deletions shopfloor_reception_dock/actions/schema.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Copyright 2026 ACSONE SA/NV
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from odoo.addons.component.core import Component


class ShopfloorSchemaAction(Component):
_inherit = "shopfloor.schema.action"

def picking(self):
res = super().picking()

res.update(
{"docks": self._schema_list_of(self._simple_record(), required=False)}
)

return res
19 changes: 19 additions & 0 deletions shopfloor_reception_dock/actions/search.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Copyright 2026 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
from odoo.addons.component.core import Component


class SearchAction(Component):
_inherit = "shopfloor.search.action"

@property
def _barcode_type_handler(self):
res = super(SearchAction, self)._barcode_type_handler
res["dock"] = self.dock_from_scan
return res

def dock_from_scan(self, barcode):
model = self.env["stock.dock"]
if not barcode:
return model.browse()
return model.search([("barcode", "=", barcode)], limit=1)
4 changes: 4 additions & 0 deletions shopfloor_reception_dock/readme/CONTEXT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
During reception, carrier trucks deposit goods across various physical unloading docks. Because these goods are technically in transit or sitting on an external dock, they have not yet been processed into the system's internal `stock.location`s. Consequently, they are invisible to standard inventory tracking.

Warehouse operators using the mobile `shopfloor` interface need to know exactly which dock a specific picking or carrier truck is located at to efficiently initiate the receiving. Without this visibility, operators waste significant time searching the physical staging areas for the correct pallets.

1 change: 1 addition & 0 deletions shopfloor_reception_dock/readme/CONTRIBUTORS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- Nicolas Delbovier <nicolas.delbovier@acsone.eu> (https://www.acsone.eu/)
1 change: 1 addition & 0 deletions shopfloor_reception_dock/readme/DESCRIPTION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Add docks info to shopfloor.
1 change: 1 addition & 0 deletions shopfloor_reception_dock/services/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import reception
36 changes: 36 additions & 0 deletions shopfloor_reception_dock/services/reception.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Copyright 2026 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
from odoo.addons.component.core import Component


class Reception(Component):
_inherit = "shopfloor.reception"

def _scan_document__get_handlers_by_type(self):
res = super()._scan_document__get_handlers_by_type()
res["dock"] = self._scan_document__by_dock
return res

def _scan_document__by_dock(self, dock, barcode):
if not dock:
return None

pickings = self.env["stock.picking"].search(
[
*self._domain_stock_picking(),
("dock_ids", "in", dock.ids),
],
order=self._order_stock_picking(),
)

if not pickings:
return self._response_for_select_document(
message=self.msg_store.dock_no_assigned_picking(dock)
)

if len(pickings) == 1:
return self._select_picking(pickings)

return self._response_for_select_document(
pickings=pickings, message=self.msg_store.dock_pickings_filtered(dock)
)
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading