Coder Social home page Coder Social logo

oca / wms Goto Github PK

View Code? Open in Web Editor NEW
146.0 44.0 182.0 17.62 MB

Warehouse Management System for advance logistic with Odoo

License: GNU Affero General Public License v3.0

Python 56.42% HTML 13.91% JavaScript 21.34% SCSS 0.02% CSS 8.30%
erp hacktoberfest odoo

wms's Introduction

Runboat Pre-commit Status Build Status codecov Translation Status

wms

WMS modules for Odoo

Available addons

addon version maintainers summary
delivery_carrier_warehouse 16.0.1.0.1 Get delivery method used in sales orders from warehouse
sale_stock_available_to_promise_release 16.0.1.0.0 Integration between Sales and Available to Promise Release
sale_stock_available_to_promise_release_block 16.0.1.0.0 Block release of deliveries from sales orders.
shopfloor 16.0.2.1.0 guewen simahawk sebalix manage warehouse operations with barcode scanners
shopfloor_base 16.0.1.1.0 guewen simahawk sebalix Core module for creating mobile apps
shopfloor_batch_automatic_creation 16.0.1.0.0 guewen Create batch transfers for Cluster Picking
shopfloor_mobile 16.0.1.1.0 simahawk Mobile frontend for WMS Shopfloor app
shopfloor_mobile_base 16.0.1.1.0 simahawk Mobile frontend for WMS Shopfloor app
shopfloor_mobile_base_auth_api_key 16.0.1.0.0 Provides authentication via API key to Shopfloor base mobile app
shopfloor_rest_log 16.0.1.0.0 simahawk Integrate rest_log into Shopfloor app
shopfloor_workstation 16.0.1.0.0 Manage warehouse workstation with barcode scanners
shopfloor_workstation_mobile 16.0.1.0.0 Shopfloor mobile app integration for workstation
stock_available_to_promise_release 16.0.3.2.1 Release Operations based on available to promise
stock_available_to_promise_release_block 16.0.1.1.1 Block Release of Operations
stock_available_to_promise_release_exclude_location 16.0.1.0.0 Exclude locations from available stock
stock_dynamic_routing 16.0.1.0.2 Dynamic routing of stock moves
stock_picking_batch_creation 16.0.1.0.0 lmignon Create a batch of pickings to be processed all together
stock_picking_completion_info 16.0.1.0.1 Display on current document completion information according to next operations
stock_picking_type_shipping_policy 16.0.1.0.0 Define different shipping policies according to picking type
stock_release_channel 16.0.2.13.0 sebalix jbaudoux mt-software-de Manage workload in WMS with release channels
stock_release_channel_auto_release 16.0.1.0.2 Add an automatic release mode to the release channel
stock_release_channel_batch_mode_commercial_partner 16.0.1.0.2 Release pickings into channels by batch of same commercial entity
stock_release_channel_cutoff 16.0.1.0.2 jbaudoux Add the cutoff time to the release channel
stock_release_channel_delivery 16.0.2.0.0 Add a carrier selection criteria on the release channel
stock_release_channel_geoengine 16.0.1.0.0 Release channel based on geo-localization
stock_release_channel_partner_delivery_window 16.0.1.0.1 jbaudoux Allows to define an end date (and time) on a release channel and propagate it to the concerned pickings
stock_release_channel_partner_public_holidays 16.0.1.0.0 jbaudoux Add an option to exclude the public holidays when assigning th release channel
stock_release_channel_plan 16.0.1.3.0 jbaudoux Manage release channel preparation plan
stock_release_channel_plan_process_end_time 16.0.1.1.0 jbaudoux Glue module between release channel plan and process end time
stock_release_channel_process_end_time 16.0.1.7.0 rousseldenis jbaudoux Allows to define an end date (and time) on a release channel and propagate it to the concerned pickings
stock_release_channel_propagate_channel_picking 16.0.1.2.0 Allows to propagate the channel to every picking that is created from the original one.
stock_release_channel_shipment_advice 16.0.1.1.0 jbaudoux Plan shipment advices for ready and released pickings
stock_release_channel_shipment_advice_process_end_time 16.0.1.0.0 This module allows to set a delay time (in minutes) between the release channel process end time and the shipment advice arrival to the dock time.
stock_release_channel_shipment_advice_toursolver 16.0.1.0.0 Use TourSolver to plan shipment advices for ready and released pickings
stock_release_channel_shipment_lead_time 16.0.1.2.0 jbaudoux Release channel with shipment lead time
stock_release_channel_show_volume 16.0.1.1.0 Display volumes of stock release channels
stock_release_channel_show_weight 16.0.1.1.0 Display weights of stock release channels
stock_storage_type 16.0.1.0.7 jbaudoux rousseldenis Manage packages and locations storage types
stock_storage_type_putaway_abc 16.0.1.0.0 Advanced storage strategy ABC for WMS
stock_warehouse_flow 16.0.1.0.2 Configure routing flow for stock moves

Licenses

This repository is licensed under AGPL-3.0.

However, each module can have a totally different license, as long as they adhere to Odoo Community Association (OCA) policy. Consult each module's __manifest__.py file, which contains a license key that explains its license.


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.

wms's People

Contributors

bguillot avatar francesco-ooops avatar glitchov avatar grindtildeath avatar guewen avatar gurneyalex avatar hparfr avatar ibuioli avatar ivorra78 avatar jbaudoux avatar jumisanar avatar lmarion-source avatar lmignon avatar marcelsavegnago avatar mmequignon avatar mt-software-de avatar mymage avatar oca-git-bot avatar oca-transbot avatar oca-travis avatar phuctranfxvn avatar rousseldenis avatar santostelmo avatar sbejaoui avatar sbidoul avatar sebalix avatar sebastienbeau avatar simahawk avatar tdu avatar weblate avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wms's Issues

Backport shopfloor to v12

Hi,

I start to working at the backport of shopfloor modules to version 12.0.

https://github.com/kmee/wms/tree/12.0-mig-shopfloor

I didn't find anybody working in this backport yet... if any one is working on it I would like to help.

I try to do a git am:
git format-patch --keep-subject --stdout kmee/12.0..origin/13.0-shopfloor -- shopfloor | git am -3 --keep --ignore-whitespace

But i came across many conflicts... I was wondering if it would be a good time to diverge from the branch of @simahawk. So I thought about keeping in sync with PR (#25) to avoid unnecessary rebases. And then when the merge is done, i will create the appropriate PRs for the backport for v12.

If anyone knows a better approach, please let me know.

Todo:

[BUG] shopfloor_ui_tests filename too long

Using Windows if I try to clone this repo I get:
error: unable to create file shopfloor_ui_tests/cypress/screenshots/shopfloor_mobile_base_auth_api_key/test_authentication_apikey.js/Test to make sure that the user can log in and log out -- Log in to the Shopfloor app -- Preparation tests -- Checks that the request to user_config fails (user is not authenticated) (failed).png: Filename too long

@JuMiSanAr Please could you check this?

Field `profile_id` does not exist

Hi, i'm getting the following error installing Shopfloor (13.0.2.1.0) in an empty (new/fresh) database. Is there a fast work-around for now?

ValueError: <class 'odoo.tools.convert.ParseError'>: "Error while validating view

Field `profile_id` does not exist

Error context:
View `shopfloor menu tree`
[view_id: 1194, xml_id: n/a, model: shopfloor.menu, parent_id: n/a]

[QUESTION] stock_dynamic_routing: push rules

Hi,

I have followed the testing steps described here #31 and I have a question regarding the section Steps to try the Push Routing Transfer.

When I create the Purchase Order and confirm it I, indeed, get two pickings as expected but when I validate the first one (using the Validate button) the stock move line is created with the wrong destination location as you can see in the image:

image

Instead of Bay A/ Bin 1 it should go to the Handover location. This is because in the action_assign, upon creating the stock move line Odoo is checking for putaway strategies in the destination location of the move (Handover) and it's finding the one that was defined previously in Stock:

  • "[DESK0004] Customizable Desk (Aluminium, Black)" from WH/Stock to location "WH/Stock/Highbay/Bay A/Bin 1"

Only reason I find for this to be this way is that it is intended to be like this and the move line must be created manually specifying the destination location. Is that the case?

Thanks in advance.

Filename too long

As preiously mentioned in #429 there are filenames too long that cause issues in Windows

$ git checkout 15.0
error: cannot stat 'shopfloor_ui_tests/cypress/screenshots/shopfloor_mobile_base_auth_api_key/test_authentication_apikey.js/Test to make sure that the user can log in and log out -- Log in to the Shopfloor app -- Preparation tests -- Checks that the request to user_config fails (user is not authenticated) (failed).png': Filename too long
error: The following untracked working tree files would be overwritten by checkout:
.copier-answers.yml
.editorconfig
.eslintrc.yml
.flake8
.github/workflows/pre-commit.yml
.github/workflows/stale.yml
.github/workflows/test.yml
.gitignore
.isort.cfg
.pre-commit-config.yaml
.prettierrc.yml
.pylintrc
.pylintrc-mandatory
LICENSE
README.md
setup/.setuptools-odoo-make-default-ignore
setup/README

Additional context
Add any other context about the problem here. (e.g. OS, Python version, ...)

stock_available_to_promise_release - Support multiple warehouses

Wrong Quantities if multiple warehouses

def _ordered_available_to_promise_locations(self):

The method _ordered_available_to_promise_locations returns the view locations of all warehouses.
This method is also used to get the available qty to promise see here:

locations = moves._ordered_available_to_promise_locations()

until line

There is a problem if we have two different warehouses which are completely independent from each other, than the qty of all warehouses are computed and this is not correct. We should only use the locations of the moves warehouse child locations.

[RFC][WMS] OCA apps

Hi,

We're working at @camptocamp on Odoo logistic projects since a while and we also have an on-going important project to replace an existing WMS. I though it might be the time to build up an OCA WMS apps.

Before proposing this, I 've been in touch with Odoo to first ask if they want to implement some of the foreseen features in the core. After some talks with them, it turns out they won't do it (too complex, not fit their strategy, etc..)

Here is the first draft document that try to define the features list: https://docs.google.com/document/d/1mct6bFFWJqW01wGFcjc-uQNEjyCxvh6Y9TuFdRhe-b0/edit#

Linked issues

Keep it mind that the main goal here is for us to cover our customer needs and we will try to release a first viable version here.

We wanted to share it ASAP with you all in order for you to comments, participate and contribute to it if you feel the will !

I will keep you updated in this issue about our progress. Feel free to participate.

Best regards,

Joël

[14.0] picking_batch returns empty list, even if there are suitable batches

When using the cluster picking scenario in the App, "Get Work" and "Manual Selection" return an empty list, even though there are suitable batches in the backend.

I could track the problem to shopfloor/actions/data.py line 251:

    def picking_batch(self, record, with_pickings=False, **kw):
        parser = self._picking_batch_parser
        if with_pickings:
            parser.append(("picking_ids:pickings", self._picking_parser))
        return self._jsonify(record, parser, **kw)

The record given, contains multiple entries in my example. I tested it with wdb:

>>>record.search([])
[stock.picking.batch(8, 6, 5, 4, 3, 2, 1)]

But the _jsonify function returns an empty list:

>>>__return__
[]

I also checked if the records have fields fitting for the parser, but that seems to be the case.

API key

We're using the shopfloor app and need to re-enter the API key every day or sometimes multiple times a day. Is this normal behaviour?

[RFC] Cluster picking location as destination

Hi,

For the cluster picking, I need to have multiple sale orders per "temporary destination" (= a bin, =a trolley...) and there is a picking unicity constraint on packs.

I think allowing to use locations instead of pack will solve my problem and allow to lower the entry barrier of shopfloor for smaller warehouses.
These locations will be sublocations of the picking type destination (ie: WH/PACK/BIN{1..n}).

I don't remember the good reasons to manage these "temporary destinations" only as pack and not as locations as well.

To start the implementation, I propose the following changes in cluster picking :

  • rename def scan_destination_pack to def scan_destination
  • allow barcode of scan_destination to be a location or a pack

[EDIT]

  • there is also some changes in mobile_app, "package_dest" should be renamed in "destination"
    [/EDIT]

Do you agree with these changes ? @guewen @jgrandguillaume @simahawk

Migration to version 16.0

Todo

https://github.com/OCA/maintainer-tools/wiki/Migration-to-version-16.0

Modules to migrate

Missing module? Check https://github.com/OCA/maintainer-tools/wiki/%5BFAQ%5D-Missing-modules-in-migration-issue-list

[16.0] stock_move_source_relocate

Hi,

I've seen and tested the module stock_move_source_relocate in 14.0 (https://github.com/OCA/wms/tree/14.0/stock_move_source_relocate) and it seems to suit perfectly my need.
However, this module as not been ported to 16.0 which we are using.

A PR to port to 15.0 has been created but closed without any explanation : #592

Is there any plan to upgrade this module to 16.0 ?
Or is the feature moved to another module ?
If no plan, I might have a look to upgrade it myself, if easy enough :)

Migration to version 17.0

Todo

https://github.com/OCA/maintainer-tools/wiki/Migration-to-version-17.0

Modules to migrate

  • stock_available_to_promise_release
  • stock_dynamic_routing
  • stock_picking_completion_info
  • stock_picking_type_shipping_policy
  • stock_release_channel
  • stock_release_channel_auto_release
  • stock_release_channel_batch_mode_commercial_partner
  • stock_release_channel_cutoff
  • stock_release_channel_partner_public_holidays
  • stock_release_channel_process_end_time
  • stock_release_channel_propagate_channel_picking
  • stock_release_channel_shipment_advice
  • stock_release_channel_shipment_lead_time
  • stock_storage_type
  • stock_storage_type_putaway_abc
  • stock_warehouse_flow

Missing module? Check https://github.com/OCA/maintainer-tools/wiki/%5BFAQ%5D-Missing-modules-in-migration-issue-list

Shopfloor: question regarding the beta development status and future plans

Hello,

I have a customer who like to upgrade to Odoo v16. They currently have a custom written barcode scanning interface to manage outgoing deliveries but they very much like Shopfloor. I saw the development status of Shopfloor in v14 is still beta. Does anybody knows if there are companies who use Shopfloor v14 in production? And if so, is it safe to use?
Further more, I don't see anyone working on a migration to v15 for Shopfloor. Are there people here planning to do so? I'm happy to help but it seems quite an effort. For example, in the manifest of v14 there are a lot of TODO's related to deps.

Split of Shopfloor

Hello,

I want to use shopfloor in V12, so I planned to backport it.

I will not use all the dependencies, for instance the storage types, the manufacturer.

So I propose to split shopfloor in V13 to reduce the dependencies of the module shopfloor (to avoid backport of modules that I will not use at all and maybe no one will because its in V12)

Moreover, I discussed that with @simahawk, and he proposed also to create a module shopfloor_base and put there all the base stuff without the scenarios, it makes sense if you want to use shopfloor but with other scenarios.

If you have some comments or advice, they are welcomed.

I will make a PR regarding that.

Thanks !

[14.0] Reception Mobile: You need to supply a Lot/Serial Number for product

Module

shopfloor_reception_mobile and other related modules.

Describe the bug

UserError(_('You need to supply a Lot/Serial Number for product: \n - ') +
odoo.exceptions.UserError: You need to supply a Lot/Serial Number for product: - [FURN_7777] Office Chair,
eventhough i have input the Lot/Serial Number for product.

To Reproduce

V14. I try this on runboat :
using link:
http://oca-wms-14-0-a8ddb01413fa.runboat.odoo-community.org/web#action=139&model=shopfloor.app&view_type=list&cids=&menu_id=110
using Shopfloor Demo (user auth), username and pass : demo, demo.

Steps to reproduce the behavior:

  1. Change the traceability of [FURN_7777] Office Chair to be tracking by Lot.
  2. Try to receive WH/IN/00002 where there are 35 unit of that product.
  3. Scan the product
  4. Input Lot
  5. Input Expired date
  6. Input Qty
  7. Process without Pack
  8. Set Destination Location
  9. Mark As Done
  10. Confirm
  11. The error message appear: 400 Bad Request, You need to supply a Lot/Serial Number for product - [FURN_7777] Office Chair.

Expected behavior
User can input new Lot / Serial number in shopfloor mobile smoothly.

Additional context
Running it on runboat and local

stock_storage_type: putaway strategy "do not mix" should give priority to location that already contains the product (the one with the less qty)

As stated here it would be nice to improve the put away strategy for 'do not mix product" to give priority to location that already contains the product.

A solution could be to reorder the list of valid stock locations into the the method _select_final_valid_putaway_locations. This would require to modify the method signature to pass at least the package_storage_type..

something like this

def _select_final_valid_putaway_locations(
    self, package_storage_type, quants, products, limit=None
):
    locations = self
    if package_storage_type.do_not_mix_products:
        # give priority to the location that already contains the product, the one with the less qty first
        locations = locations.sorted(lambda l:sum(l.mapped('quant_ids.qty')) or 99999)
    return locations[:limit]

My main concern here is that we break the original order but do we agree that's the expected result in this specific case?

Migration to version 15.0

Todo

https://github.com/OCA/maintainer-tools/wiki/Migration-to-version-15.0

Modules to migrate

  • delivery_carrier_preference - By @flachica - #453
  • delivery_carrier_warehouse - By @flachica - #454
  • delivery_preference_glue_stock_picking_group
  • sale_stock_available_to_promise_release
  • shopfloor
  • shopfloor_base
  • shopfloor_batch_automatic_creation
  • shopfloor_checkout_sync
  • shopfloor_delivery_shipment
  • shopfloor_delivery_shipment_mobile
  • shopfloor_example
  • shopfloor_mobile
  • shopfloor_mobile_base
  • shopfloor_packing_info
  • shopfloor_rest_log
  • shopfloor_workstation
  • shopfloor_workstation_mobile
  • stock_available_to_promise_release
  • stock_available_to_promise_release_dynamic_routing
  • stock_checkout_sync
  • stock_dynamic_routing
  • stock_dynamic_routing_checkout_sync - By @bizzappdev - #593
  • stock_dynamic_routing_reserve_rule
  • stock_move_source_relocate - By @bizzappdev - #592
  • stock_move_source_relocate_dynamic_routing
  • stock_picking_completion_info
  • stock_picking_consolidation_priority - By @bizzappdev - #591
  • stock_picking_type_shipping_policy - By @bizzappdev - #540
  • stock_picking_type_shipping_policy_group_by
  • stock_reception_screen
  • stock_reception_screen_measuring_device
  • stock_reception_screen_qty_by_packaging
  • stock_storage_type
  • stock_storage_type_buffer
  • stock_storage_type_putaway_abc

Missing module? Check https://github.com/OCA/maintainer-tools/wiki/%5BFAQ%5D-Missing-modules-in-migration-issue-list

shopfloor_mobile_base: Wrong menu id when odoo is called into the init state on first click on a menu

Module

shopfloor_mobile_base.

Describe the bug

2 menus to the same scenario with an init state where odoo is called(ex location_content_transfer) with != pircking types

states: {
                init: {
                    enter: () => {
                        this.wait_call(this.odoo.call("start_or_recover"));
                    },
                },
....

Click on the fist menu. When you click on the second menu, the call to odoo is made with the menu_id of the fist menu.

To Reproduce

13.0, 14.0:

Expected behavior
Call to odoo into the init state should be made with the right menu id

Additional context
The init state is called by the router into beforeRouteUpdate. At this stage, the menu_id is not yet changed to the one for the requested new route.

Shopfloor Mobile App Issues in Odoo 14

Context
Module: Shopfloor Mobile for Odoo 14
Odoo Version: 14 (latest version of OCB 14)
For context, also occurs when installing shopfloor examples.
Appears to somewhat work with demo data installed. but not on a clean database.

Description
Upon installing the Shopfloor Mobile application in Odoo 14, the app fails to appear in the app menu despite all dependencies appearing to be met. In addition, I attempted to create and delete a test app, which yielded an Odoo Server Error.
when installing with demo data, the app appears, but again, creating an app then deleting an app, same error occurs.

Steps to Reproduce
Install the Shopfloor Mobile module in Odoo 14.
Observe the absence of the app in the app menu.
Create a test app.
Attempt to delete the test app.

Expected Behavior
The Shopfloor Mobile app should appear and be operational in the app menu after installation. Additionally, when deleting an app, the operation should complete without errors.

Encountered Errors
The following error occurs when trying to delete the test app:

Traceback (most recent call last):
File "/odoo14/odoo14-server/odoo/addons/base/models/ir_http.py", line 237, in _dispatch
result = request.dispatch()
File "/odoo14/odoo14-server/odoo/http.py", line 696, in dispatch
result = self._call_function(**self.params)
File "/odoo14/odoo14-server/odoo/http.py", line 370, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/odoo14/odoo14-server/odoo/service/model.py", line 94, in wrapper
return f(dbname, *args, **kwargs)
File "/odoo14/odoo14-server/odoo/http.py", line 358, in checked_call
result = self.endpoint(*a, **kw)
File "/odoo14/odoo14-server/odoo/http.py", line 919, in call
return self.method(*args, **kw)
File "/odoo14/odoo14-server/odoo/http.py", line 544, in response_wrap
response = f(*args, **kw)
File "/odoo14/odoo14-server/addons/web/controllers/main.py", line 1370, in call_kw
return self._call_kw(model, method, args, kwargs)
File "/odoo14/odoo14-server/addons/web/controllers/main.py", line 1362, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/odoo14/odoo14-server/odoo/api.py", line 399, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
File "/odoo14/odoo14-server/odoo/api.py", line 386, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "/odoo14/odoo14-server/custom/endpoint_route_handler/models/endpoint_route_sync_mixin.py", line 84, in unlink
self._unregister_controllers()
File "/odoo14/odoo14-server/custom/endpoint_route_handler/models/endpoint_route_sync_mixin.py", line 101, in _unregister_controllers
self._endpoint_registry.drop_rules(self._registered_endpoint_rule_keys())
File "/odoo14/odoo14-server/custom/endpoint_route_handler/registry.py", line 241, in drop_rules
self.cr.execute("DELETE FROM endpoint_route WHERE key IN %s", (tuple(keys),))
File "", line 2, in execute
File "/odoo14/odoo14-server/odoo/sql_db.py", line 101, in check
return f(self, *args, **kwargs)
File "/odoo14/odoo14-server/odoo/sql_db.py", line 301, in execute
res = self._obj.execute(query, params)
Exception

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "/odoo14/odoo14-server/odoo/http.py", line 652, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/odoo14/odoo14-server/odoo/http.py", line 317, in _handle_exception
raise exception.with_traceback(None) from new_cause
psycopg2.errors.SyntaxError: syntax error at or near ")"
LINE 1: DELETE FROM endpoint_route WHERE key IN ()
^

I have very limited coding knowledge, but for some reason, the _registered_endpoint_rule_keys() method is returning an empty list.

Additional Context
All dependencies appear to be met, the list of installed Python libraries and Odoo modules can be found in the attachments.
Potential error sources such as base_rest and the endpoint route module have been explored.
The issue persists in the latest version of OCB 14.

Potential Impact
If unresolved, this issue could potentially affect the usability and functionality of the Shopfloor Mobile module in Odoo 14 for other users.

here is a list of python libraries installed:
Package Version


apispec 6.3.0
appdirs 1.4.4
attrs 23.1.0
Babel 2.6.0
beautifulsoup4 4.12.2
cached-property 1.5.2
cachetools 5.3.1
Cerberus 1.3.4
certifi 2023.5.7
chardet 3.0.4
decorator 4.3.0
defusedxml 0.7.1
docutils 0.14
ebaysdk 2.1.5
freezegun 0.3.15
gevent 20.9.0
greenlet 0.4.17
idna 2.6
isodate 0.6.1
Jinja2 2.11.2
libsass 0.17.0
lxml 4.6.5
Mako 1.0.7
MarkupSafe 1.1.0
num2words 0.5.6
ofxparse 0.19
packaging 23.1
parse-accept-language 0.1.2
passlib 1.7.1
Pillow 8.1.1
pip 20.0.2
pkg-resources 0.0.0
polib 1.1.0
psutil 5.6.6
psycopg2 2.8.5
pyasn1 0.5.0
pyasn1-modules 0.3.0
pydot 1.4.1
pyparsing 3.0.9
PyPDF2 1.26.0
pyquerystring 1.1
pyserial 3.4
python-dateutil 2.7.3
python-ldap 3.1.0
python-stdnum 1.8
pytz 2023.3
pyusb 1.0.2
qrcode 6.1
reportlab 3.5.55
requests 2.21.0
requests-toolbelt 1.0.0
setuptools 44.0.0
six 1.16.0
soupsieve 2.4.1
urllib3 1.24.3
vobject 0.9.6.1
Werkzeug 0.16.1
wheel 0.34.2
xlrd 1.2.0
XlsxWriter 1.1.2
xlwt 1.3.0
zeep 3.2.0
zope.event 4.6
zope.interface 6.0

Modules installed:
Module Name Latest Version
Sales 14.0.1.0
Invoicing 14.0.1.1
Inventory 14.0.1.1
Purchase 14.0.1.2
Manufacturing 14.0.2.0
Shopfloor 14.0.3.5.0
Shopfloor Base 14.0.2.10.0
Stock Putaway Hooks 14.0.1.0.0
Discuss 14.0.1.0
WMS Accounting 14.0.1.1
Purchase Stock 14.0.1.2
Import/Export Invoices From XML/PDF 14.0.1.0
Import/Export invoices with Factur-X 14.0.1.0
Import/Export invoices with generic UBL 14.0.1.0
Import/Export electronic invoices with UBL/CII 14.0.1.0
Analytic Accounting 14.0.1.1
Signup 14.0.1.0
Two-Factor Authentication (TOTP) 14.0.1.0
TOTPortal 14.0.1.0
Barcode 14.0.2.0
Base 14.0.1.3
Base import 14.0.1.0
Base Many2many Custom Field 14.0.1.1.0
Base Rest 14.0.4.8.3
Initial Setup Tools 14.0.1.0
Sparse Fields 14.0.1.0
IM Bus 14.0.1.0
Components 14.0.1.1.2
Delivery Costs 14.0.1.0
KPI Digests 14.0.1.1
Endpoint route handler 14.0.2.0.1
Email Gateway 14.0.1.0
In-App Purchases 14.0.1.1
IAP / Mail 14.0.1.0
JSONifier 14.0.1.1.0
Australian - Accounting 14.0.1.1
OdooBot 14.0.1.2
Accounting - MRP 14.0.1.0
Manufacturing Expiry 14.0.1.0
Partner Autocomplete 14.0.1.0
Payment Acquirer 14.0.1.0
Fix register payment wizard with 'payment' module 14.0.1.0
Transfer Payment Acquirer 14.0.1.0
Just In Time Scheduling 14.0.1.0
Products & Pricelists 14.0.1.2
Products Expiration Date 14.0.1.0
Product logistics UoM 14.0.1.0.2
Product Manufacturer 14.0.1.0.2
Product Packaging Dimension 14.0.1.0.2
Product Packaging Type 14.0.0.2.0
Purchase and MRP Management 14.0.1.0
Resource 14.0.1.1
Sales 14.0.1.1
Sales and MRP Management 14.0.1.0
Sale Purchase 14.0.1.0
MTO Sale <-> Purchase 14.0.1.0
Sales and Warehouse Management 14.0.1.0
Sales Teams 14.0.1.0
Shopfloor mobile 14.0.1.31.0
Shopfloor mobile 14.0.3.16.0
SMS gateway 14.0.2.1
Snail Mail 14.0.0.3
snailmail_account 14.0.0.1
Stock Helpers 14.0.1.2.0
Stock Move Common Destination 14.0.1.0.0
Warehouse Management: Batch Transfer 14.0.1.0
Stock Picking Completion Info 14.0.1.1.0
Stock Picking Delivery Link 14.0.1.0.0
Stock Picking Progress 14.0.1.2.0
Stock Quant Package Dimension 14.0.2.2.0
Stock Quant Package Product Packaging 14.0.1.1.0
Stock - SMS 14.0.1.0
Stock Storage Type 14.0.1.12.0
Units of measure 14.0.1.0
UTM Trackers 14.0.1.0
Web 14.0.1.0
Web Domain Field 14.0.1.0.2
Web Editor 14.0.1.0
Gauge Widget for Kanban 14.0.1.0
Tours 14.0.0.1

stock_storage_type: allow to restrict some putaway sequence

Use cases

Use case 1: Choose destination according to demand on the location

In the pack put-away sequence, I have 2 rules:

  • Stock <= I want to add here a condition to only send in Stock if there is a demand in Stock
  • Over-stock

When we store a product after a reception, I have to prevent to consume to much pickable locations in Stock. If the location storage type is configured on "only empty" or "do not mix lot", you don't want to send the operator to a empty location in Stock if there is already enough stock. And you don't want to send all in over-stock if there is a demand in Stock.

Use case 2: Choose destination according to stock (existing lot) on the location

  • Stock <= I want to add here a condition to only send in Stock if the lot is already in stock
  • Over-stock

When we store a product after reception, I have to prevent to consume to much locations in over-stock if I can fill a location in Stock with additional product. In this case, even if there is no qualified demand for Stock, I still want to put-away the product in Stock if there is enough space in the current location. This is in case of "do not mix lot" and slow rotating products (class C). If the lot is already in stock on a location, I want first to fill that location and not consume a new over-stock location.

Proposal

Add a model to express a stock storage location sequence condition as an eval python code (like sale exception).
In the "stock.storage.location.sequence", add an optional condition field (m2m_tags).
In the loop evaluating each pack putaway sequence (https://github.com/OCA/wms/blob/14.0/stock_storage_type/models/stock_location.py#L359), check if all the conditions are met to elect the destination location.

Side note: To support fixed locations put-away, if the put-away strategy is None, we also need to compute the odoo standard put-away on that destination.

cc @lmignon @sebalix @jgrandguillaume

Improve printing from shopfloor

I'd like to improve in shopfloor the way we handle printing.

Currently you can configure on the user a normal and a label printer. Those are set by scanning a workstation.
Documents can then be printed automatically with OCA/report-print-send#310 that allows to configure on the picking type attachments or reports to print.

In shopfloor, some menu expects you to scan a workstation before hands. However you can open the scenario from the menu and if you forgot to scan the right workstation, it will fail at the end of the process (usually silently by not printing but logging a message on the picking that you don't see - you just don't get the paper).

What about explicitly listing the printer types on the shopfloor menu and when you open the menu, show the printing config before launching the scenario? So if you require a label printer on the menu, the user needs to have one defined on his preferences/profile. When you open the menu, you see the printing config and can confirm it is right.

I would also add an optional menu on the workstation so that when you scan the workstation, it can immediately launch the scenario (without showing the printing config). Currently, it only opens the profile and you still have to choose one entry from the menu.

@simahawk @lmignon @bguillot @sebalix @jgrandguillaume

Migration to version 14.0

Todo

https://github.com/OCA/maintainer-tools/wiki/Migration-to-version-14.0

Modules to migrate

  • delivery_carrier_preference: #185
  • delivery_carrier_warehouse #167
  • sale_stock_available_to_promise_release #274
  • stock_available_to_promise_release #184
  • stock_dynamic_routing
  • stock_dynamic_routing_checkout_sync: #298
  • stock_move_source_relocate #290
  • stock_move_source_relocate_dynamic_routing #291
  • stock_picking_type_shipping_policy #277
  • stock_picking_type_shipping_policy_group_by #181
  • stock_storage_type #123
  • stock_storage_type_putaway_abc #288
  • shopfloor
  • shopfloor_mobile

Missing module? Check https://github.com/OCA/maintainer-tools/wiki/%5BFAQ%5D-Missing-modules-in-migration-issue-list

try use auth_api key but have error using shopfloor_mobile

auth_api_key
when I push the LOGIN button
shopfloor_mobile2
this is the console error:
odoo.addons.shopfloor.services.service.ShopfloorServiceDispatchException: dispatch() got an unexpected keyword argument '_id'
can you please document steps to setup shopfloor_mobile?
Thanks

[RFC][WMS] Warehouse map and location attributes

Source : https://docs.google.com/document/d/1mct6bFFWJqW01wGFcjc-uQNEjyCxvh6Y9TuFdRhe-b0/edit#
Part of: #1

This RCF to propose a POC implementation for the following

  • Define warehouse map attributes on bin locations: corridor, shelf, height position that will compute the name for the location:
    • thus having a consistent naming within the warehouse. E.e Corridor + “.” + shelf + “.” + height -> 001.01.001
    • Can base the round trip picking order (sequence) on simple sort based on location name
  • Define location kind in an extendable manner. So you can easily identify all locations of a given kind (e.g. bin, tray, aisle, vertical lift,..)
    • Some of the location kind might allows you to define some additional attributes. E.g.
      • Tray might allows you to define a tray type
      • Zone might allow you to set the related zone
      • Bin might allows you to define related constraints

[RFC][WMS] Virtual Good Reservation

Source : https://docs.google.com/document/d/1mct6bFFWJqW01wGFcjc-uQNEjyCxvh6Y9TuFdRhe-b0/edit#
Part of: #1

This RCF to propose a POC implementation for the following

  • Currently the reservation is performed by adding reserved quantities on quants, which is fine as long as the reservation is made right after the order confirmation. This way, the first arrived, first served principle is always applied. But if you release warehouse operations in a chosen order (through deliver round for example), then you need to be sure the reservations are made in respect to the first arrived first served principle and not driven by the order you choose to release your operations.
  • Allow each delivery move to mark a quantity as virtually reserved. Simple rule would be first ordered, first served. More complex rules could be implemented.
  • When the reservation of a picking move occurs, the quantity that is reserved is then based on the quantity that was promised to the customer (virtually reserved):
    • The moves can be reserved in any order, the right quantity is always reserved
    • The removal strategy is computed only when the reservation occurs. If you reserve order 2 before order 1 (because you have/want to deliver order 2) you can apply correctly fifo/fefo.
      • For instance order 1 must be delivered in 1 month, order 2 must be delivered now.
      • Virtually lock quantities to be able to serve order 1
      • Reserve remaining quantity for order 2 and apply fefo
  • Allow to limit the promised quantity in time. If a customer order now for a planned delivery in 2 months, then allow to not lock this quantity as virtually reserved
    Allow to perform reservations jointly with your delivery rounds planning. Reserve only the quants you planned to deliver.

[12.0] stock_move_location_dest_constraint_tag

I've tried this module with various settings https://github.com/guewen/stock-logistics-warehouse/tree/wms-aggr/stock_move_location_dest_constraint_tag
Example:
Product A
Product B
Customer
Address Customer A (destination of Product A)(SubLocation CustomerA)
Address Customer B (destination of Product B)(SubLocation CustomerB)

SO:
Product A (putaway Rule A direct on Address Customer A)
Product B (putaway Rule B direct on Address Customer B)

Expected Result on Confirm:
2 delivery
WH/OUT1 with destination of Product A
WH/OUT2 with destination of Product B

But it doesn't happen
Maybe I've commited some error to understand the module?
I accept advice, Sorry for my question but I don't know where to bang my head anymore

Thank you in advance

Track progress of the WMS apps and related module

Replaces #1

This issue intend to track the related work of the WMS OCA app and helps to gether all the related modules.

It rely on this WIP document that define the features list: https://docs.google.com/document/d/1mct6bFFWJqW01wGFcjc-uQNEjyCxvh6Y9TuFdRhe-b0/edit#

Related work

Dynamic routing of operation

Classify operation depending on where they are reserved, manage handover places, creates different goods flow by carriers. Route explains the steps you want to produce whereas the “picking routing operation” defines how operations are grouped according to their final source
and destination location.

Packaging management

To better manage the product packaging we need to have them properly defined for each product and classify them by type. Most common type are usually:

  • Retail box
  • Transport box
  • Pallet

It is a basic requirement for improved reservation rules, efficient barcode operation and usage of measurement machines such as Cubiscan for example.

Put away based on storage type, ABC class and constraints (height, weight,..)

Define storage type on location and attribute storage type on PACK. Storage type can also be define on product packaging to help filling up the info while receiving products.
The idea is that anything getting in the warehouse is given a unique PACK ID with proper storage type and attributes (height, weight, etc..). Product are classified in A,B,C Class as well as location depending on their accessibility.
Put away will then compute the proper location based on those information.

Reservation rules by packaging and location

Provide configurable reservation rule by location and packaging type with sequence. Thus allows to drive reservation differently depending on the packaging type to retrieve. For example, pick first pallets from Location A and then boxes from location B.

It supports several removal strategies: default FIFO/FEFO prefer packaging or empty bin to favor emptying spaces over anything else.

Virtual reservation and release of operations

Make the final stock reservation when needed, decoupled from the order confirmation while respecting the order of arrival through virtual reservation. Thus also help to create internal operations such as pick or ship when required only.

When operation release occurs, only create moves for the goods we have in stocks. This will avoid having backorder in internal warehouse operations (only the delivery order will have ones),

Delivery windows, weekly delivery and cut-off time

Define delivery windows for your customers where they can receive your goods. Setup weekly day of delivery if required. Handle cut-off time by customer depending on where they are.

Group and consolidate your shipment for several orders

Group several orders into one consolidated shipment by carrier during packing operations.

Manage replenishment zone

Re-allocate your needs for stocks to drive your replenishment operations within your location (from a pallet storage to a shelving one for example). This allows you to re-allocate a missing stock quantity to a given location to wait for stock there while performing replenishment (technically, it allows to change the source of a stock move to make it hit a stock rule).

Advanced barcode scanner

Decouple transnational Odoo documents and flows toward an efficient shop-floor process. Do not rely on finding the proper operation to process, but scan location and package to deduce what to do with it. Proceed with operation by machine type or zone rather than Odoo document. Get optimized path computed properly.

Configure your barcode menu, chose which scanning process to apply to each operation, allow to process several operation type within a same barcode menu.

Provide state of the art logistics features to handle zero checks, inventory errors and stock out, etc..

Warehouse map

Allow to represent the warehouse map precisely by defining relevant attributes and naming convention. Thus will also constitute a per-requisit for having a proper path computed while making an optimized picking tour.

Interface with measurement machine

Here with Cubiscan, but interface might serve as a base for other brand.

Interface with vertical automated storage

Provide the proper interface and link to connect vertical lift machines such as Kardex.

Minimum shelf-life

Ensure a minimum shelf life to your customers.

Manage dangerous goods

Handle proper attributes and report for dangerous goods handling in respect to EU legislation.

Old follow up (v12)

As work has started on v12, we had several PR and issues open for it.

[RFC] Shopfloor: prevent user login on two devices at the same time

ATM there's no shared notion of "logged in user" between Odoo and the app.

Probably we should have something similar to POS and have a shopfloor.session.

It could work like:

  1. login -> I create a session (which will store the IP of the device as well, user, etc)
  2. when try to login from another device -> check if session is active and from a different IP -> ask to take over -> invalidate former session
  3. sessions will have a TTL and will be wiped after this time automatically
  4. In theory on every request we should check if the session is still valid otherwise if you try to use a device which was logged in and left on any screen but login will lead to the same problem (could come from an HTTP header) -> this might add overhead
  5. as an alternative to pt 4 we could use push notifications to notify the device the session has been overtaken and logout

@guewen @sebalix @sebastienbeau @hparfr @bguillot what do you think? Any better/easier/more flexible/more secure/pick-your-motivation option?

[REQ] shopfloor_mobile and barcode scanning with mobile phone

Hello,

I've been testing out the wms-modules and I'm very impressed with the features I've found. Now I've been testing shopfloor_mobile and just noticed a handy feature that currently seems to be missing:

barcode scanning with a mobile phone.

Currently it seems scanning a barcode in the app needs to happen with a device with an integrated barcode scanner or a bluetooth scanner. Many (web)applications provide an UI with the possibility to scan a barcode using the camera of the phone, which would be a nice feature for the shopfloor_mobile-app. This would make using and testing the app easier and more cost-efficient since it wouldn't require a user to get a barcode scanner-enabled device. I'm interested in using this app in my company's warehouse and right now we're using mobile phones to process Delivery Orders. It would be a big help if we could continue to use the same devices with shopfloor_mobile also. It would be great if you'd consider adding this as a feature to the app.

I'm sorry if this isn't the right place to post requests, please move this to a better place or give advice for the right way to request features.

Field Dependency (estimated_pack_weight_kg) error when installing shopfloor module

Module

shopfloor

Describe the bug

I have installed shopfloor_base correctly
When I try to install shopfloor, I get the following error:

ValueError: Field stock.quant.package.shopfloor_weight cannot find dependency 'estimated_pack_weight_kg' on model 'stock.quant.package'.

I have also tried to install directly shopfloor without installing shopfloor_base first. I got the same result. All dependencies are installed.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.