odoo-addon-shopfloor-mobile 16.0.1.4.0__py3-none-any.whl → 18.0.1.0.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. odoo/addons/shopfloor_mobile/README.rst +109 -92
  2. odoo/addons/shopfloor_mobile/__manifest__.py +2 -2
  3. odoo/addons/shopfloor_mobile/i18n/shopfloor_mobile.pot +1 -1
  4. odoo/addons/shopfloor_mobile/readme/CONTRIBUTORS.md +11 -0
  5. odoo/addons/shopfloor_mobile/readme/CREDITS.md +5 -0
  6. odoo/addons/shopfloor_mobile/readme/DESCRIPTION.md +30 -0
  7. odoo/addons/shopfloor_mobile/readme/{HISTORY.rst → HISTORY.md} +1 -2
  8. odoo/addons/shopfloor_mobile/readme/ROADMAP.md +43 -0
  9. odoo/addons/shopfloor_mobile/readme/USAGE.md +29 -0
  10. odoo/addons/shopfloor_mobile/static/description/index.html +73 -61
  11. odoo/addons/shopfloor_mobile/static/wms/src/components/{batch_picking_detail.js → batch_picking_detail.esm.js} +0 -1
  12. odoo/addons/shopfloor_mobile/static/wms/src/components/detail/{detail_location.js → detail_location.esm.js} +1 -1
  13. odoo/addons/shopfloor_mobile/static/wms/src/components/detail/{detail_lot.js → detail_lot.esm.js} +2 -1
  14. odoo/addons/shopfloor_mobile/static/wms/src/components/detail/{detail_operation.js → detail_operation.esm.js} +1 -1
  15. odoo/addons/shopfloor_mobile/static/wms/src/components/detail/{detail_package.js → detail_package.esm.js} +1 -1
  16. odoo/addons/shopfloor_mobile/static/wms/src/components/detail/{detail_product.js → detail_product.esm.js} +2 -1
  17. odoo/addons/shopfloor_mobile/static/wms/src/components/detail/{detail_transfer.js → detail_transfer.esm.js} +1 -1
  18. odoo/addons/shopfloor_mobile/static/wms/src/components/forms/{form_edit_stock_picking.js → form_edit_stock_picking.esm.js} +0 -1
  19. odoo/addons/shopfloor_mobile/static/wms/src/components/{manual_select_color.js → manual_select_color.esm.js} +1 -1
  20. odoo/addons/shopfloor_mobile/static/wms/src/components/{misc.js → misc.esm.js} +1 -3
  21. odoo/addons/shopfloor_mobile/static/wms/src/components/{packaging-qty-picker.js → packaging-qty-picker.esm.js} +20 -18
  22. odoo/addons/shopfloor_mobile/static/wms/src/components/scenario_picking_detail/{mixins.js → mixins.esm.js} +2 -3
  23. odoo/addons/shopfloor_mobile/static/wms/src/components/scenario_picking_detail/{picking_select.js → picking_select.esm.js} +8 -5
  24. odoo/addons/shopfloor_mobile/static/wms/src/components/scenario_picking_detail/{picking_summary.js → picking_summary.esm.js} +11 -5
  25. odoo/addons/shopfloor_mobile/static/wms/src/demo/{demo.checkout.js → demo.checkout.esm.js} +4 -4
  26. odoo/addons/shopfloor_mobile/static/wms/src/demo/{demo.cluster_picking.js → demo.cluster_picking.esm.js} +1 -1
  27. odoo/addons/shopfloor_mobile/static/wms/src/demo/{demo.delivery.js → demo.delivery.esm.js} +3 -3
  28. odoo/addons/shopfloor_mobile/static/wms/src/demo/{demo.location_content_transfer.js → demo.location_content_transfer.esm.js} +1 -1
  29. odoo/addons/shopfloor_mobile/static/wms/src/demo/{demo.scan_anything.js → demo.scan_anything.esm.js} +1 -1
  30. odoo/addons/shopfloor_mobile/static/wms/src/demo/{demo.single_pack_transfer.js → demo.single_pack_transfer.esm.js} +1 -1
  31. odoo/addons/shopfloor_mobile/static/wms/src/demo/{demo.zone_picking.js → demo.zone_picking.esm.js} +3 -3
  32. odoo/addons/shopfloor_mobile/static/wms/src/i18n/{add_translations_to_registry.js → add_translations_to_registry.esm.js} +1 -1
  33. odoo/addons/shopfloor_mobile/static/wms/src/scenario/{checkout.js → checkout.esm.js} +7 -6
  34. odoo/addons/shopfloor_mobile/static/wms/src/scenario/{checkout_states.js → checkout_states.esm.js} +3 -1
  35. odoo/addons/shopfloor_mobile/static/wms/src/scenario/{cluster_picking.js → cluster_picking.esm.js} +8 -7
  36. odoo/addons/shopfloor_mobile/static/wms/src/scenario/{delivery.js → delivery.esm.js} +10 -6
  37. odoo/addons/shopfloor_mobile/static/wms/src/scenario/{location_content_transfer.js → location_content_transfer.esm.js} +13 -7
  38. odoo/addons/shopfloor_mobile/static/wms/src/scenario/{single_pack_transfer.js → single_pack_transfer.esm.js} +2 -2
  39. odoo/addons/shopfloor_mobile/static/wms/src/scenario/{zone_picking.js → zone_picking.esm.js} +21 -24
  40. odoo/addons/shopfloor_mobile/static/wms/src/{wms_utils.js → wms_utils.esm.js} +29 -26
  41. odoo/addons/shopfloor_mobile/templates/assets.xml +30 -30
  42. odoo_addon_shopfloor_mobile-18.0.1.0.1.dist-info/METADATA +250 -0
  43. odoo_addon_shopfloor_mobile-18.0.1.0.1.dist-info/RECORD +59 -0
  44. {odoo_addon_shopfloor_mobile-16.0.1.4.0.dist-info → odoo_addon_shopfloor_mobile-18.0.1.0.1.dist-info}/WHEEL +1 -1
  45. odoo_addon_shopfloor_mobile-18.0.1.0.1.dist-info/top_level.txt +1 -0
  46. odoo/addons/shopfloor_mobile/readme/CONTRIBUTORS.rst +0 -12
  47. odoo/addons/shopfloor_mobile/readme/CREDITS.rst +0 -5
  48. odoo/addons/shopfloor_mobile/readme/DESCRIPTION.rst +0 -31
  49. odoo/addons/shopfloor_mobile/readme/ROADMAP.rst +0 -29
  50. odoo/addons/shopfloor_mobile/readme/USAGE.rst +0 -34
  51. odoo_addon_shopfloor_mobile-16.0.1.4.0.dist-info/METADATA +0 -232
  52. odoo_addon_shopfloor_mobile-16.0.1.4.0.dist-info/RECORD +0 -59
  53. odoo_addon_shopfloor_mobile-16.0.1.4.0.dist-info/top_level.txt +0 -1
  54. /odoo/addons/shopfloor_mobile/static/wms/src/components/{batch_picking_line_detail.js → batch_picking_line_detail.esm.js} +0 -0
  55. /odoo/addons/shopfloor_mobile/static/wms/src/components/detail/{detail_picking.js → detail_picking.esm.js} +0 -0
  56. /odoo/addons/shopfloor_mobile/static/wms/src/{screen.js → screen.esm.js} +0 -0
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5
5
  <meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
6
- <title>Shopfloor mobile</title>
6
+ <title>README.rst</title>
7
7
  <style type="text/css">
8
8
 
9
9
  /*
@@ -360,41 +360,47 @@ ul.auto-toc {
360
360
  </style>
361
361
  </head>
362
362
  <body>
363
- <div class="document" id="shopfloor-mobile">
364
- <h1 class="title">Shopfloor mobile</h1>
363
+ <div class="document">
365
364
 
365
+
366
+ <a class="reference external image-reference" href="https://odoo-community.org/get-involved?utm_source=readme">
367
+ <img alt="Odoo Community Association" src="https://odoo-community.org/readme-banner-image" />
368
+ </a>
369
+ <div class="section" id="shopfloor-mobile">
370
+ <h1>Shopfloor mobile</h1>
366
371
  <!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
367
372
  !! This file is generated by oca-gen-addon-readme !!
368
373
  !! changes will be overwritten. !!
369
374
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
370
- !! source digest: sha256:e2e8c5dda324092d44eb40ecd4e2bfd44696c59cdc3af9ded861ef7401f7d971
375
+ !! source digest: sha256:5343b7be8eb4f58f7548ae53194c5554d3a7d9ac639fb64e27cae31cf8cd2766
371
376
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
372
- <p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/wms/tree/16.0/shopfloor_mobile"><img alt="OCA/wms" src="https://img.shields.io/badge/github-OCA%2Fwms-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/wms-16-0/wms-16-0-shopfloor_mobile"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/wms&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
377
+ <p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/license-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/stock-logistics-shopfloor/tree/18.0/shopfloor_mobile"><img alt="OCA/stock-logistics-shopfloor" src="https://img.shields.io/badge/github-OCA%2Fstock--logistics--shopfloor-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/stock-logistics-shopfloor-18-0/stock-logistics-shopfloor-18-0-shopfloor_mobile"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/stock-logistics-shopfloor&amp;target_branch=18.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
373
378
  <p>Frontend for Shopfloor app.</p>
374
- <p>The work is organized in scenario.
375
- A scenario represents a process in the warehouse (eg: receive, deliver).
376
- The app allows to start each process through the main menu.</p>
377
- <p>Each scenario is linked to a specific menu item which can be configured in the backend.
378
- Each scenario drives you through the work to do.</p>
379
+ <p>The work is organized in scenario. A scenario represents a process in
380
+ the warehouse (eg: receive, deliver). The app allows to start each
381
+ process through the main menu.</p>
382
+ <p>Each scenario is linked to a specific menu item which can be configured
383
+ in the backend. Each scenario drives you through the work to do.</p>
379
384
  <div class="section" id="tech-details">
380
- <h1>Tech details</h1>
385
+ <h2>Tech details</h2>
381
386
  <ul>
382
- <li><p class="first">This frontend is built on top of <a class="reference external" href="vuejs.org">VueJS</a> and <a class="reference external" href="vuetifyjs.com/">VuetifyJS</a>
383
- and relies on <cite>shopfloor</cite> module that exposes REST API in Odoo
384
- (based in turn on <a class="reference external" href="https://github.com/OCA/rest-framework/tree/13.0/base_rest">base_rest</a>).</p>
387
+ <li><p class="first">This frontend is built on top of <a class="reference external" href="vuejs.org">VueJS</a> and
388
+ <a class="reference external" href="vuetifyjs.com/">VuetifyJS</a> and relies on shopfloor module that
389
+ exposes REST API in Odoo (based in turn on
390
+ <a class="reference external" href="https://github.com/OCA/rest-framework/tree/13.0/base_rest">base_rest</a>).</p>
385
391
  </li>
386
- <li><p class="first">The whole business logic comes from <cite>shopfloor</cite> module,
387
- this module takes care of providing a nice and reactive UI to work with.</p>
392
+ <li><p class="first">The whole business logic comes from shopfloor module, this module
393
+ takes care of providing a nice and reactive UI to work with.</p>
388
394
  </li>
389
395
  <li><p class="first">No Odoo JS is used, no assets machinery used.</p>
390
396
  <p>Static assets are loaded straight, served by a specific controller.
391
397
  This app is a Single Page App, hence resources are loaded only once.</p>
392
- <p>The version of the module appended to the URL of each resources
393
- makes sure it’s not cached when the version changes.</p>
398
+ <p>The version of the module appended to the URL of each resources makes
399
+ sure it’s not cached when the version changes.</p>
394
400
  </li>
395
- <li><p class="first">When developing you can use a demo mode which allows to define interactive scenario
396
- with pure JS demo data, without interacting with Odoo.
397
- Nothing to deal with Odoo demo data.</p>
401
+ <li><p class="first">When developing you can use a demo mode which allows to define
402
+ interactive scenario with pure JS demo data, without interacting with
403
+ Odoo. Nothing to deal with Odoo demo data.</p>
398
404
  </li>
399
405
  </ul>
400
406
  <p><strong>Table of contents</strong></p>
@@ -404,18 +410,18 @@ Nothing to deal with Odoo demo data.</p>
404
410
  </ul>
405
411
  </div>
406
412
  <div class="section" id="usage">
407
- <h2><a class="toc-backref" href="#toc-entry-1">Usage</a></h2>
413
+ <h3><a class="toc-backref" href="#toc-entry-1">Usage</a></h3>
408
414
  </div>
409
415
  </div>
410
416
  <div class="section" id="pre-requisites">
411
- <h1>Pre-requisites</h1>
417
+ <h2>Pre-requisites</h2>
412
418
  <ul class="simple">
413
419
  <li>Your Odoo instance is accessible via mobile device</li>
414
420
  <li>You have an API Key configured</li>
415
421
  </ul>
416
422
  </div>
417
423
  <div class="section" id="start-the-app">
418
- <h1>Start the app</h1>
424
+ <h2>Start the app</h2>
419
425
  <ul class="simple">
420
426
  <li>Go to “Inventory -&gt; Configuration -&gt; Shopfloor -&gt; Shopfloor App”</li>
421
427
  <li>In the login screen fill in your API key</li>
@@ -423,9 +429,9 @@ Nothing to deal with Odoo demo data.</p>
423
429
  </ul>
424
430
  </div>
425
431
  <div class="section" id="select-a-profile">
426
- <h1>Select a profile</h1>
427
- <p>Several profiles can be configured in the backend,
428
- you must choose one before starting.</p>
432
+ <h2>Select a profile</h2>
433
+ <p>Several profiles can be configured in the backend, you must choose one
434
+ before starting.</p>
429
435
  <ul class="simple">
430
436
  <li>Tap on “Configure profile”</li>
431
437
  <li>Select a profile</li>
@@ -433,17 +439,17 @@ you must choose one before starting.</p>
433
439
  <p>This will load all available menu items for the selected profile.</p>
434
440
  </div>
435
441
  <div class="section" id="change-language">
436
- <h1>Change language</h1>
442
+ <h2>Change language</h2>
437
443
  <ul class="simple">
438
444
  <li>Go to “Settings -&gt; Language”</li>
439
445
  <li>Select a language</li>
440
446
  </ul>
441
447
  </div>
442
448
  <div class="section" id="customization">
443
- <h1>Customization</h1>
444
- <p>Please refer to <cite>shopfloor_mobile_custom_example</cite>.</p>
449
+ <h2>Customization</h2>
450
+ <p>Please refer to shopfloor_mobile_custom_example.</p>
445
451
  <div class="section" id="known-issues-roadmap">
446
- <h2>Known issues / Roadmap</h2>
452
+ <h3>Known issues / Roadmap</h3>
447
453
  <ul>
448
454
  <li><p class="first">Split module by scenario</p>
449
455
  </li>
@@ -460,49 +466,56 @@ you must choose one before starting.</p>
460
466
  <li><p class="first">Use SCSS</p>
461
467
  </li>
462
468
  <li><p class="first">Refactor states definition</p>
463
- <p>States are now part of the scenario data. They should be specific objects with their own class.
464
- They should also provide all the actions that should be displayed w/ their handlers when needed.
465
- Actions can be popup actions or buttons at the bottom of the screen.
466
- The tricky part here could be how to register this states for the given component.
467
- Today states have access to the full object of the scenario component as they are part of it.
468
- <cite>_get_state_spec</cite> could probably lookup for registered states
469
- (eg: when you register a component in the registry you should provide states as well).
470
- When we’ll have states in this fashion we should also consider if they should provide their own template.
471
- This way the component template will hold only the generic bits of the scenario.</p>
469
+ <p>States are now part of the scenario data. They should be specific
470
+ objects with their own class. They should also provide all the actions
471
+ that should be displayed w/ their handlers when needed. Actions can be
472
+ popup actions or buttons at the bottom of the screen. The tricky part
473
+ here could be how to register this states for the given component.
474
+ Today states have access to the full object of the scenario component
475
+ as they are part of it. _get_state_spec could probably lookup for
476
+ registered states (eg: when you register a component in the registry
477
+ you should provide states as well). When we’ll have states in this
478
+ fashion we should also consider if they should provide their own
479
+ template. This way the component template will hold only the generic
480
+ bits of the scenario.</p>
472
481
  </li>
473
482
  <li><p class="first">Back buttons should be smarter</p>
474
- <p>In some cases getting back using history is fine but very often this could lead to outdated data display.
475
- To mitigate this in particular scenario’s steps, custom handlers for the back action have been implemented.
476
- For instance, in cluster_picking when you hit back on manual selection it forces the state to go to start and reload.
477
- For starting we should provide <cite>on_back</cite> property to all states where we want to display it
478
- (no more specific check on the state to display this button).
479
- This part is also related to “Refactor states definition”.</p>
483
+ <p>In some cases getting back using history is fine but very often this
484
+ could lead to outdated data display. To mitigate this in particular
485
+ scenario’s steps, custom handlers for the back action have been
486
+ implemented. For instance, in cluster_picking when you hit back on
487
+ manual selection it forces the state to go to start and reload. For
488
+ starting we should provide on_back property to all states where we
489
+ want to display it (no more specific check on the state to display
490
+ this button). This part is also related to “Refactor states
491
+ definition”.</p>
480
492
  </li>
481
- <li><p class="first">Go through <cite>_.forEach</cite> and similar calls to replace them w/ vanilla JS (eg: <cite>.map()</cite>)</p>
493
+ <li><p class="first">Go through _.forEach and similar calls to replace them w/ vanilla JS
494
+ (eg: .map())</p>
482
495
  </li>
483
496
  </ul>
484
497
  </div>
485
498
  <div class="section" id="changelog">
486
- <h2>Changelog</h2>
499
+ <h3>Changelog</h3>
487
500
  </div>
488
501
  </div>
489
502
  <div class="section" id="section-1">
490
- <h1>13.0.1.0.0</h1>
503
+ <h2>13.0.1.0.0</h2>
491
504
  <p>First official version.</p>
492
505
  <div class="section" id="bug-tracker">
493
- <h2>Bug Tracker</h2>
494
- <p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/wms/issues">GitHub Issues</a>.
506
+ <h3>Bug Tracker</h3>
507
+ <p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/stock-logistics-shopfloor/issues">GitHub Issues</a>.
495
508
  In case of trouble, please check there if your issue has already been reported.
496
509
  If you spotted it first, help us to smash it by providing a detailed and welcomed
497
- <a class="reference external" href="https://github.com/OCA/wms/issues/new?body=module:%20shopfloor_mobile%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
510
+ <a class="reference external" href="https://github.com/OCA/stock-logistics-shopfloor/issues/new?body=module:%20shopfloor_mobile%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
498
511
  <p>Do not contact contributors directly about support or help with technical issues.</p>
499
512
  </div>
500
513
  <div class="section" id="credits">
501
- <h2>Credits</h2>
514
+ <h3>Credits</h3>
502
515
  </div>
503
516
  </div>
504
517
  <div class="section" id="authors">
505
- <h1>Authors</h1>
518
+ <h2>Authors</h2>
506
519
  <ul class="simple">
507
520
  <li>Camptocamp</li>
508
521
  <li>BCIM</li>
@@ -510,7 +523,7 @@ If you spotted it first, help us to smash it by providing a detailed and welcome
510
523
  </ul>
511
524
  </div>
512
525
  <div class="section" id="contributors">
513
- <h1>Contributors</h1>
526
+ <h2>Contributors</h2>
514
527
  <ul class="simple">
515
528
  <li>Simone Orsi &lt;<a class="reference external" href="mailto:simahawk&#64;gmail.com">simahawk&#64;gmail.com</a>&gt;</li>
516
529
  <li>Thierry Ducrest &lt;<a class="reference external" href="mailto:thierry.ducrest&#64;camptocamp.com">thierry.ducrest&#64;camptocamp.com</a>&gt;</li>
@@ -519,16 +532,14 @@ If you spotted it first, help us to smash it by providing a detailed and welcome
519
532
  <li>Sébastien Beau &lt;<a class="reference external" href="mailto:sebastien.beau&#64;akretion.com">sebastien.beau&#64;akretion.com</a>&gt;</li>
520
533
  <li>Jacques-Etienne Baudoux &lt;<a class="reference external" href="mailto:je&#64;bcim.be">je&#64;bcim.be</a>&gt;</li>
521
534
  </ul>
522
- </div>
523
- <div class="section" id="design">
524
- <h1>Design</h1>
535
+ <p><strong>Design</strong></p>
525
536
  <ul class="simple">
526
537
  <li>Joël Grand-Guillaume &lt;<a class="reference external" href="mailto:joel.grandguillaume&#64;camptocamp.com">joel.grandguillaume&#64;camptocamp.com</a>&gt;</li>
527
538
  <li>Jacques-Etienne Baudoux &lt;<a class="reference external" href="mailto:je&#64;bcim.be">je&#64;bcim.be</a>&gt;</li>
528
539
  </ul>
529
540
  </div>
530
541
  <div class="section" id="other-credits">
531
- <h1>Other credits</h1>
542
+ <h2>Other credits</h2>
532
543
  <p><strong>Financial support</strong></p>
533
544
  <ul class="simple">
534
545
  <li>Cosanum</li>
@@ -537,7 +548,7 @@ If you spotted it first, help us to smash it by providing a detailed and welcome
537
548
  </ul>
538
549
  </div>
539
550
  <div class="section" id="maintainers">
540
- <h1>Maintainers</h1>
551
+ <h2>Maintainers</h2>
541
552
  <p>This module is maintained by the OCA.</p>
542
553
  <a class="reference external image-reference" href="https://odoo-community.org">
543
554
  <img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
@@ -547,9 +558,10 @@ mission is to support the collaborative development of Odoo features and
547
558
  promote its widespread use.</p>
548
559
  <p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p>
549
560
  <p><a class="reference external image-reference" href="https://github.com/simahawk"><img alt="simahawk" src="https://github.com/simahawk.png?size=40px" /></a></p>
550
- <p>This module is part of the <a class="reference external" href="https://github.com/OCA/wms/tree/16.0/shopfloor_mobile">OCA/wms</a> project on GitHub.</p>
561
+ <p>This module is part of the <a class="reference external" href="https://github.com/OCA/stock-logistics-shopfloor/tree/18.0/shopfloor_mobile">OCA/stock-logistics-shopfloor</a> project on GitHub.</p>
551
562
  <p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
552
563
  </div>
553
564
  </div>
565
+ </div>
554
566
  </body>
555
567
  </html>
@@ -4,7 +4,6 @@
4
4
  * License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
5
5
  */
6
6
 
7
- /* eslint-disable strict */
8
7
  Vue.component("batch-picking-detail", {
9
8
  props: ["record"],
10
9
  methods: {
@@ -4,7 +4,7 @@
4
4
  * License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
5
5
  */
6
6
 
7
- import {ItemDetailMixin} from "/shopfloor_mobile_base/static/wms/src/components/detail/detail_mixin.js";
7
+ import {ItemDetailMixin} from "/shopfloor_mobile_base/static/src/components/detail/detail_mixin.esm.js";
8
8
 
9
9
  Vue.component("detail-location", {
10
10
  mixins: [ItemDetailMixin],
@@ -4,7 +4,7 @@
4
4
  * License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
5
5
  */
6
6
 
7
- import {ItemDetailMixin} from "/shopfloor_mobile_base/static/wms/src/components/detail/detail_mixin.js";
7
+ import {ItemDetailMixin} from "/shopfloor_mobile_base/static/src/components/detail/detail_mixin.esm.js";
8
8
 
9
9
  // TODO: this should be probably merged or combined w/ detail-product
10
10
  Vue.component("detail-lot", {
@@ -44,6 +44,7 @@ Vue.component("detail-lot", {
44
44
  {path: "product_name", label: "Name"},
45
45
  ];
46
46
  },
47
+ /* eslint-disable no-unused-vars */
47
48
  render_packaging(record, field) {
48
49
  return [record.name, "(" + record.code + ")", "= " + record.qty].join(" ");
49
50
  },
@@ -4,7 +4,7 @@
4
4
  * License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
5
5
  */
6
6
 
7
- import {ItemDetailMixin} from "/shopfloor_mobile_base/static/wms/src/components/detail/detail_mixin.js";
7
+ import {ItemDetailMixin} from "/shopfloor_mobile_base/static/src/components/detail/detail_mixin.esm.js";
8
8
 
9
9
  // TODO: this should probably trashed in favour of detail-transfer
10
10
  // ATM is used only by single pack transfer to display package level info.
@@ -4,7 +4,7 @@
4
4
  * License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
5
5
  */
6
6
 
7
- import {ItemDetailMixin} from "/shopfloor_mobile_base/static/wms/src/components/detail/detail_mixin.js";
7
+ import {ItemDetailMixin} from "/shopfloor_mobile_base/static/src/components/detail/detail_mixin.esm.js";
8
8
 
9
9
  Vue.component("detail-package", {
10
10
  mixins: [ItemDetailMixin],
@@ -4,7 +4,7 @@
4
4
  * License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
5
5
  */
6
6
 
7
- import {ItemDetailMixin} from "/shopfloor_mobile_base/static/wms/src/components/detail/detail_mixin.js";
7
+ import {ItemDetailMixin} from "/shopfloor_mobile_base/static/src/components/detail/detail_mixin.esm.js";
8
8
 
9
9
  // TODO: refactor according to new data from backend and maybe merge w/ `detail-lot`
10
10
  Vue.component("detail-product", {
@@ -36,6 +36,7 @@ Vue.component("detail-product", {
36
36
  {path: "product_name", label: "Name"},
37
37
  ];
38
38
  },
39
+ /* eslint-disable no-unused-vars */
39
40
  render_packaging(record, field) {
40
41
  return [record.name, "(" + record.code + ")", "= " + record.qty].join(" ");
41
42
  },
@@ -4,7 +4,7 @@
4
4
  * License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
5
5
  */
6
6
 
7
- import {ItemDetailMixin} from "/shopfloor_mobile_base/static/wms/src/components/detail/detail_mixin.js";
7
+ import {ItemDetailMixin} from "/shopfloor_mobile_base/static/src/components/detail/detail_mixin.esm.js";
8
8
 
9
9
  Vue.component("detail-transfer", {
10
10
  mixins: [ItemDetailMixin],
@@ -4,7 +4,6 @@
4
4
  * License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
5
5
  */
6
6
 
7
- /* eslint-disable strict */
8
7
  Vue.component("form-edit-stock-picking", {
9
8
  props: ["record", "form"],
10
9
  data: function () {
@@ -8,7 +8,7 @@ const Base = Vue.options.components["manual-select"];
8
8
  const Custom = Base.extend({
9
9
  methods: {
10
10
  selected_color_klass(rec, modifier) {
11
- let color;
11
+ let color = "";
12
12
  if (rec && rec.qty_done && rec.quantity) {
13
13
  if (rec.qty_done < rec.quantity)
14
14
  color = this.utils.colors.color_for("item_selected_partial");
@@ -4,9 +4,7 @@
4
4
  * License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
5
5
  */
6
6
 
7
- /* eslint-disable strict */
8
-
9
- import {ItemDetailMixin} from "/shopfloor_mobile_base/static/wms/src/components/detail/detail_mixin.js";
7
+ import {ItemDetailMixin} from "/shopfloor_mobile_base/static/src/components/detail/detail_mixin.esm.js";
10
8
 
11
9
  // TODO: could be merged w/ userConfirmation
12
10
  Vue.component("last-operation", {
@@ -8,12 +8,14 @@
8
8
 
9
9
  export var PackagingQtyPickerMixin = {
10
10
  props: {
11
- options: Object, // options are replaced by props
11
+ // Options are replaced by props
12
+ options: Object,
12
13
  mode: String,
13
14
  qtyInit: Number,
14
15
  uom: {type: Object, required: true},
15
16
  availablePackaging: Array,
16
- pkgNameKey: String, // "code" or "name"
17
+ // "code" or "name"
18
+ pkgNameKey: String,
17
19
  },
18
20
  data: function () {
19
21
  return {
@@ -56,8 +58,8 @@ export var PackagingQtyPickerMixin = {
56
58
  packaging_by_id: function (id) {
57
59
  // Special case for UOM ids as they can clash w/ pkg ids
58
60
  // we prefix it w/ "uom-"
59
- id = id.startsWith("uom-") ? id : parseInt(id, 10);
60
- return _.find(this.sorted_packaging, ["id", id]);
61
+ const _id = id.startsWith("uom-") ? id : parseInt(id, 10);
62
+ return _.find(this.sorted_packaging, ["id", _id]);
61
63
  },
62
64
  /**
63
65
  *
@@ -89,10 +91,9 @@ export var PackagingQtyPickerMixin = {
89
91
  const res = {};
90
92
  // Const min_unit = _.last(pkg_by_qty);
91
93
  pkg_by_qty.forEach(function (pkg) {
92
- let qty_per_pkg = 0;
93
- [qty_per_pkg, qty] = self._qty_by_pkg(pkg.qty, qty);
94
- res[pkg.id] = qty_per_pkg;
95
- if (!qty) return;
94
+ const [_qty_per_pkg, _qty] = self._qty_by_pkg(pkg.qty, qty);
95
+ res[pkg.id] = _qty_per_pkg;
96
+ if (!_qty) return;
96
97
  });
97
98
  return res;
98
99
  },
@@ -140,7 +141,7 @@ export var PackagingQtyPickerMixin = {
140
141
  * Include the uom
141
142
  */
142
143
  sorted_packaging: function () {
143
- let packagings = _.reverse(
144
+ const packagings = _.reverse(
144
145
  _.sortBy(
145
146
  _.filter(this.availablePackaging, _.property("qty")),
146
147
  _.property("qty")
@@ -158,10 +159,10 @@ export var PackagingQtyPickerMixin = {
158
159
  */
159
160
  contained_packaging: function () {
160
161
  const self = this;
161
- let res = {},
162
- qty_per_pkg,
163
- remaining,
164
- elected_next_pkg;
162
+ const res = {};
163
+ let qty_per_pkg = [],
164
+ remaining = 0,
165
+ elected_next_pkg = {};
165
166
  const packaging = this.sorted_packaging;
166
167
  _.forEach(packaging, function (pkg, i) {
167
168
  const next_pkgs = packaging.slice(i + 1);
@@ -192,14 +193,15 @@ export var PackagingQtyPicker = Vue.component("packaging-qty-picker", {
192
193
  },
193
194
  data: function () {
194
195
  return {
195
- panel: 0, // expand panel by default
196
+ // Expand panel by default
197
+ panel: 0,
196
198
  };
197
199
  },
198
200
  watch: {
199
201
  qty_by_pkg: {
200
202
  deep: true,
201
203
  handler: function () {
202
- // prevent watched qty to update again qty_by_pkg
204
+ // Prevent watched qty to update again qty_by_pkg
203
205
  this.qty_by_pkg_manual = true;
204
206
  this.compute_qty();
205
207
  this.qty_by_pkg_manual = false;
@@ -215,7 +217,7 @@ export var PackagingQtyPicker = Vue.component("packaging-qty-picker", {
215
217
  },
216
218
  computed: {
217
219
  qty_color: function () {
218
- if (this.qty == this.qtyTodo) {
220
+ if (this.qty === this.qtyTodo) {
219
221
  if (this.readonly) return "";
220
222
  return "background-color: rgb(143, 191, 68)";
221
223
  }
@@ -305,10 +307,10 @@ export var PackagingQtyPickerDisplay = Vue.component("packaging-qty-picker-displ
305
307
  },
306
308
  computed: {
307
309
  visible_packaging: function () {
308
- let packagings = _.filter(this.sorted_packaging, this.display_pkg);
310
+ const packagings = _.filter(this.sorted_packaging, this.display_pkg);
309
311
  // Do not display if only uom packaging
310
312
  if (
311
- packagings.length == 1 &&
313
+ packagings.length === 1 &&
312
314
  packagings[0].id.toString().startsWith("uom-")
313
315
  )
314
316
  return [];
@@ -3,9 +3,8 @@
3
3
  * @author Simone Orsi <simahawk@gmail.com>
4
4
  * License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
5
5
  */
6
- /* eslint-disable strict */
7
- /* eslint-disable no-implicit-globals */
8
- import {PickingDetailMixin} from "../detail/detail_picking.js";
6
+
7
+ import {PickingDetailMixin} from "../detail/detail_picking.esm.js";
9
8
 
10
9
  // Maybe worth to move it to its own file
11
10
  export var ListActionsConsumerMixin = {
@@ -3,10 +3,9 @@
3
3
  * @author Simone Orsi <simahawk@gmail.com>
4
4
  * License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
5
5
  */
6
- /* eslint-disable strict */
7
- /* eslint-disable no-implicit-globals */
8
- import {PickingDetailSelectMixin} from "./mixins.js";
9
- import {ItemDetailMixin} from "/shopfloor_mobile_base/static/wms/src/components/detail/detail_mixin.js";
6
+
7
+ import {ItemDetailMixin} from "/shopfloor_mobile_base/static/src/components/detail/detail_mixin.esm.js";
8
+ import {PickingDetailSelectMixin} from "./mixins.esm.js";
10
9
 
11
10
  Vue.component("detail-picking-select", {
12
11
  mixins: [PickingDetailSelectMixin],
@@ -16,12 +15,15 @@ Vue.component("detail-picking-select", {
16
15
  return {
17
16
  action_qty_edit: {
18
17
  comp_name: "edit-action",
18
+ /* eslint-disable no-unused-vars */
19
19
  get_record: function (rec, action) {
20
20
  return rec;
21
21
  },
22
+ /* eslint-disable no-unused-vars */
22
23
  get_options: function (rec, action) {
23
24
  return {click_event: "qty_edit"};
24
25
  },
26
+ /* eslint-disable no-unused-vars */
25
27
  enabled: function (rec, action) {
26
28
  return true;
27
29
  },
@@ -43,7 +45,7 @@ Vue.component("picking-select-line-content", {
43
45
  // Display detail fields on demand if the package contains only 1 line
44
46
  if (
45
47
  this.options.show_oneline_package_content &&
46
- record.package_dest.move_line_count == 1
48
+ record.package_dest.move_line_count === 1
47
49
  ) {
48
50
  fields = [
49
51
  {path: "product.display_name", label: "Product"},
@@ -69,6 +71,7 @@ Vue.component("picking-select-line-content", {
69
71
  opts.loud_title = true;
70
72
  return opts;
71
73
  },
74
+ /* eslint-disable no-unused-vars */
72
75
  get_wrapper_klass(record) {
73
76
  return "";
74
77
  },
@@ -4,10 +4,9 @@
4
4
  * License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
5
5
  */
6
6
 
7
- /* eslint-disable strict */
8
- /* eslint-disable no-implicit-globals */
9
- import {PickingDetailListMixin} from "./mixins.js";
10
- import {ItemDetailMixin} from "/shopfloor_mobile_base/static/wms/src/components/detail/detail_mixin.js";
7
+ /* eslint-disable sort-imports */
8
+ import {PickingDetailListMixin} from "./mixins.esm.js";
9
+ import {ItemDetailMixin} from "/shopfloor_mobile_base/static/src/components/detail/detail_mixin.esm.js";
11
10
 
12
11
  Vue.component("picking-summary", {
13
12
  mixins: [PickingDetailListMixin],
@@ -38,6 +37,7 @@ Vue.component("picking-summary", {
38
37
  return {
39
38
  action_change_pkg: {
40
39
  comp_name: "edit-action",
40
+ /* eslint-disable no-unused-vars */
41
41
  get_record: function (rec, action) {
42
42
  /**
43
43
  * Here we can get records grouped.
@@ -54,9 +54,11 @@ Vue.component("picking-summary", {
54
54
  }
55
55
  return rec;
56
56
  },
57
+ /* eslint-disable no-unused-vars */
57
58
  get_options: function (rec, action) {
58
59
  return {click_event: "pkg_change_type"};
59
60
  },
61
+ /* eslint-disable no-unused-vars */
60
62
  enabled: function (rec, action) {
61
63
  // Exclude for non-packaged records.
62
64
  // NOTE: `pack` is available only if records are grouped.
@@ -66,11 +68,13 @@ Vue.component("picking-summary", {
66
68
  },
67
69
  action_cancel_line: {
68
70
  comp_name: "cancel-move-line-action",
71
+ /* eslint-disable no-unused-vars */
69
72
  get_options: function (rec, action) {
70
73
  return {
71
74
  package_cancel_key: self.$props.action_cancel_package_key,
72
75
  };
73
76
  },
77
+ /* eslint-disable no-unused-vars */
74
78
  get_record: function (rec, action) {
75
79
  if (rec.records) {
76
80
  // Lines grouped, get real line
@@ -78,6 +82,7 @@ Vue.component("picking-summary", {
78
82
  }
79
83
  return rec;
80
84
  },
85
+ /* eslint-disable no-unused-vars */
81
86
  enabled: function (rec, action) {
82
87
  return true;
83
88
  },
@@ -102,9 +107,10 @@ Vue.component("picking-summary-content", {
102
107
  },
103
108
  watch: {
104
109
  panel: {
110
+ /* eslint-disable no-unused-vars */
105
111
  handler: function (newVal, oldVal) {
106
112
  // The panel is opened
107
- $(this.$parent.$el).toggleClass("inner-panel-expanded", newVal == 0);
113
+ $(this.$parent.$el).toggleClass("inner-panel-expanded", newVal === 0);
108
114
  },
109
115
  },
110
116
  },