odoo-addon-stock-release-channel 16.0.2.18.0.2__py3-none-any.whl → 16.0.2.18.2__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.
@@ -7,7 +7,7 @@ Stock Release Channels
7
7
  !! This file is generated by oca-gen-addon-readme !!
8
8
  !! changes will be overwritten. !!
9
9
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
10
- !! source digest: sha256:93fa48450721de36fe59554810f82bfb161e861a82bc96f08a3cdd1ea3daebcf
10
+ !! source digest: sha256:c3300cb077a8ef44fa9666327c346ae054fb1a6d4df8c5ab5d166f76f5af7436
11
11
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
12
12
 
13
13
  .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
@@ -5,7 +5,7 @@
5
5
  {
6
6
  "name": "Stock Release Channels",
7
7
  "summary": "Manage workload in WMS with release channels",
8
- "version": "16.0.2.18.0",
8
+ "version": "16.0.2.18.2",
9
9
  "development_status": "Beta",
10
10
  "license": "AGPL-3",
11
11
  "author": "Camptocamp, BCIM, ACSONE SA/NV, Odoo Community Association (OCA)",
@@ -6,11 +6,13 @@
6
6
  import logging
7
7
  from collections import defaultdict
8
8
  from copy import deepcopy
9
+ from operator import itemgetter
9
10
 
10
11
  from pytz import timezone
11
12
 
12
13
  from odoo import _, api, exceptions, fields, models
13
14
  from odoo.osv.expression import NEGATIVE_TERM_OPERATORS
15
+ from odoo.tools import groupby
14
16
  from odoo.tools.safe_eval import (
15
17
  datetime as safe_datetime,
16
18
  dateutil as safe_dateutil,
@@ -104,7 +106,8 @@ class StockReleaseChannel(models.Model):
104
106
  )
105
107
  open_picking_ids = fields.One2many(
106
108
  string="Open Transfers",
107
- related="picking_ids",
109
+ comodel_name="stock.picking",
110
+ inverse_name="release_channel_id",
108
111
  readonly=True,
109
112
  domain=[("state", "not in", ("done", "cancel"))],
110
113
  )
@@ -459,15 +462,18 @@ class StockReleaseChannel(models.Model):
459
462
  WITH RECURSIVE
460
463
  pickings AS (
461
464
  SELECT move.picking_id,
465
+ stock_picking.release_channel_id,
462
466
  true as outgoing,
463
467
  ''::varchar as state, -- no need it, we exclude outgoing
464
468
  move.id as move_orig_id
465
469
  FROM stock_move move
470
+ INNER JOIN stock_picking ON move.picking_id = stock_picking.id
466
471
  WHERE move.picking_id in %s
467
472
 
468
473
  UNION
469
474
 
470
475
  SELECT move.picking_id,
476
+ pickings.release_channel_id,
471
477
  false as outgoing,
472
478
  picking.state,
473
479
  rel.move_orig_id
@@ -479,7 +485,7 @@ class StockReleaseChannel(models.Model):
479
485
  INNER JOIN stock_picking picking
480
486
  ON picking.id = move.picking_id
481
487
  )
482
- SELECT DISTINCT picking_id, state FROM pickings
488
+ SELECT DISTINCT release_channel_id, picking_id, state FROM pickings
483
489
  WHERE outgoing is false;
484
490
  """
485
491
  return (query, (tuple(pickings.ids),))
@@ -489,20 +495,24 @@ class StockReleaseChannel(models.Model):
489
495
  ["move_dest_ids", "move_orig_ids", "picking_id"]
490
496
  )
491
497
  self.env["stock.picking"].flush_model(["state"])
492
- for channel in self:
493
- domain = self._field_picking_domains()["released"]
494
- domain += [("release_channel_id", "=", channel.id)]
495
- released = self.env["stock.picking"].search(domain)
496
498
 
497
- if not released:
499
+ domain = self._field_picking_domains()["released"]
500
+ domain += [("release_channel_id", "in", self.ids)]
501
+ released = self.env["stock.picking"].search(domain)
502
+
503
+ if not released:
504
+ for channel in self:
498
505
  channel.picking_chain_ids = False
499
506
  channel.count_picking_chain = 0
500
507
  channel.count_picking_chain_in_progress = 0
501
508
  channel.count_picking_chain_done = 0
502
- continue
509
+ return
503
510
 
504
- self.env.cr.execute(*self._query_get_chain(released))
505
- rows = self.env.cr.dictfetchall()
511
+ self.env.cr.execute(*self._query_get_chain(released))
512
+ rows = self.env.cr.dictfetchall()
513
+ rows_by_channel = dict(groupby(rows, key=itemgetter("release_channel_id")))
514
+ for channel in self:
515
+ rows = rows_by_channel.get(channel.id, [])
506
516
  channel.picking_chain_ids = [row["picking_id"] for row in rows]
507
517
  channel.count_picking_chain_in_progress = sum(
508
518
  [1 for row in rows if row["state"] not in ("cancel", "done")]
@@ -367,7 +367,7 @@ ul.auto-toc {
367
367
  !! This file is generated by oca-gen-addon-readme !!
368
368
  !! changes will be overwritten. !!
369
369
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
370
- !! source digest: sha256:93fa48450721de36fe59554810f82bfb161e861a82bc96f08a3cdd1ea3daebcf
370
+ !! source digest: sha256:c3300cb077a8ef44fa9666327c346ae054fb1a6d4df8c5ab5d166f76f5af7436
371
371
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
372
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/stock_release_channel"><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-stock_release_channel"><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>
373
373
  <p>Release channels are:</p>
@@ -126,3 +126,13 @@ class TestReleaseChannel(ReleaseChannelCase):
126
126
  self.env.company.recompute_channel_on_pickings_at_release = True
127
127
  move.release_available_to_promise()
128
128
  self.assertEqual(move.picking_id.release_channel_id, channel)
129
+
130
+ def test_open_picking(self):
131
+ self.assertFalse(self.default_channel.open_picking_ids)
132
+ move = self._create_single_move(self.product1, 10)
133
+ move.picking_id.assign_release_channel()
134
+ self.assertEqual(move.picking_id.release_channel_id.id, self.default_channel.id)
135
+ self.assertEqual(self.default_channel.open_picking_ids, move.picking_id)
136
+ move.quantity_done = move.product_uom_qty
137
+ move.picking_id._action_done()
138
+ self.assertFalse(self.default_channel.open_picking_ids)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: odoo-addon-stock_release_channel
3
- Version: 16.0.2.18.0.2
3
+ Version: 16.0.2.18.2
4
4
  Summary: Manage workload in WMS with release channels
5
5
  Home-page: https://github.com/OCA/wms
6
6
  Author: Camptocamp, BCIM, ACSONE SA/NV, Odoo Community Association (OCA)
@@ -25,7 +25,7 @@ Stock Release Channels
25
25
  !! This file is generated by oca-gen-addon-readme !!
26
26
  !! changes will be overwritten. !!
27
27
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
28
- !! source digest: sha256:93fa48450721de36fe59554810f82bfb161e861a82bc96f08a3cdd1ea3daebcf
28
+ !! source digest: sha256:c3300cb077a8ef44fa9666327c346ae054fb1a6d4df8c5ab5d166f76f5af7436
29
29
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
30
30
 
31
31
  .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
@@ -1,6 +1,6 @@
1
- odoo/addons/stock_release_channel/README.rst,sha256=cmvnmiwbL16hE0_5-ZT9UxriUZKNJKg2K0mjZof1gdE,6403
1
+ odoo/addons/stock_release_channel/README.rst,sha256=JnHMW19GKaZ8GrNX3RgqJSdQ_ye_yhvFxep2v6exS3w,6403
2
2
  odoo/addons/stock_release_channel/__init__.py,sha256=X9EJGOE2GtZbS0G82PtSXmWSZ_R8jEM0rlJTDliQjp4,21
3
- odoo/addons/stock_release_channel/__manifest__.py,sha256=0poAVMPEPcClb1ZR3XFFtaoKzQzgfSKwAPglOqW2XcA,1296
3
+ odoo/addons/stock_release_channel/__manifest__.py,sha256=MUFuQmoq10LAvkF0-FnBn9UGBISRdhdXiAgvoxgNNz4,1296
4
4
  odoo/addons/stock_release_channel/data/ir_cron_data.xml,sha256=Fs0se4lPKelUpNvJnfEde32718SRlKCt0hEqQWQ-tQg,639
5
5
  odoo/addons/stock_release_channel/data/queue_job_data.xml,sha256=MyCGOSZNti3sgtwtco1_EBCM246w2JG8F478tczgbtA,592
6
6
  odoo/addons/stock_release_channel/demo/stock_release_channel.xml,sha256=vV4B7aykN0VNn0xxubIHikwVi0RPMhZDWcYn5BH68ck,334
@@ -15,7 +15,7 @@ odoo/addons/stock_release_channel/models/res_config_settings.py,sha256=-oh2L7FWf
15
15
  odoo/addons/stock_release_channel/models/res_partner.py,sha256=WAXmL3C_ghueQ2jsXIpWTLojf8ANcUNZ8_xd_yoos2w,521
16
16
  odoo/addons/stock_release_channel/models/stock_move.py,sha256=iaPhHbzM12YtUjexaCU6MMTQcPPntJ0FJS_BX8NKRHE,1592
17
17
  odoo/addons/stock_release_channel/models/stock_picking.py,sha256=kicXUKEUV8YxdzL10QDaAiQRMebbhpOLb7KL6LVQe4M,5653
18
- odoo/addons/stock_release_channel/models/stock_release_channel.py,sha256=9U5AS6ZCwtqaQ-ERC0jjxPGZ0AscLFCcB_ERA-OjlXE,33987
18
+ odoo/addons/stock_release_channel/models/stock_release_channel.py,sha256=p6FzMDV2-GhTMrakCARjb2uXHa-eOLjEsT7VuCvwNtA,34438
19
19
  odoo/addons/stock_release_channel/readme/CONFIGURE.rst,sha256=foUMWWFytuVRVkV1V4uA4FvsW2I5izyrcR1CzZ6mQTI,93
20
20
  odoo/addons/stock_release_channel/readme/CONTRIBUTORS.rst,sha256=q95yj-6flBF2N4IB-vbF_p06ClGmIrCySl2bfz9ExPA,414
21
21
  odoo/addons/stock_release_channel/readme/CREDITS.rst,sha256=-JppA6kiiAVqptoc7ytAB6vOqf_0W5uJrZLh70XGE3w,50
@@ -23,7 +23,7 @@ odoo/addons/stock_release_channel/readme/DESCRIPTION.rst,sha256=LJj2UQ3g5NteOFkf
23
23
  odoo/addons/stock_release_channel/readme/USAGE.rst,sha256=uKImsGjEDoJdmYBbgXcDLcBQ8eh4wZzPE8kGfAQvyDA,1588
24
24
  odoo/addons/stock_release_channel/security/stock_release_channel.xml,sha256=U0WfLbMKR4mnNdI4mfN8e7UTxLnyd17eVNhsBy-dMSc,1471
25
25
  odoo/addons/stock_release_channel/static/description/icon.png,sha256=6xBPJauaFOF0KDHfHgQopSc28kKvxMaeoQFQWZtfZDo,9455
26
- odoo/addons/stock_release_channel/static/description/index.html,sha256=06M2WEH-6jcZAHEUfpgl0kLfrAnOO73XDbnRWTfossA,17424
26
+ odoo/addons/stock_release_channel/static/description/index.html,sha256=KjbAF3k9MoMFUa0cim9kDo3-KiObRhoqiv9Q6Itun2o,17424
27
27
  odoo/addons/stock_release_channel/static/src/js/progressbar_fractional_widget.js,sha256=sZBSmKdZSR1GFeu04iOH72h7FX5CqujgfTRmFYhh5z0,3184
28
28
  odoo/addons/stock_release_channel/static/src/scss/stock_release_channel.scss,sha256=DK0Azc8Gk3FlxeKzjZpLhRZzCQmgXdfLNmfz1CbNN0g,975
29
29
  odoo/addons/stock_release_channel/tests/__init__.py,sha256=kjERz9Kti9xbMmP0MgbNnnSDUdMRzZqH78VLjFn3xfk,226
@@ -32,14 +32,14 @@ odoo/addons/stock_release_channel/tests/test_assign_job.py,sha256=E8k9L8VPSE9Pk_
32
32
  odoo/addons/stock_release_channel/tests/test_channel_action.py,sha256=dtaYBCAOyNGyGWpDWDAAxVUgSWXNqR-AznKAq3iOLAI,5466
33
33
  odoo/addons/stock_release_channel/tests/test_channel_computed_fields.py,sha256=TbVkrpn5Sq6nt-QRQEi2OisjkwUuvwPJ75a0V77FsM0,4725
34
34
  odoo/addons/stock_release_channel/tests/test_channel_release_batch.py,sha256=nvLf6TqcnhaA78gSpmK7Pb9unqxTm0RnY4f1QcqFlkY,2247
35
- odoo/addons/stock_release_channel/tests/test_release_channel.py,sha256=G68FjTw0BQUkCNLDzMiwcFb-tiN5Aq2ekdLnQBcOA8w,4978
35
+ odoo/addons/stock_release_channel/tests/test_release_channel.py,sha256=cY1c1DpOTb_zIF19_kZVIVZH9GZjaSa2TJeckFtDKDk,5507
36
36
  odoo/addons/stock_release_channel/tests/test_release_channel_lifecycle.py,sha256=hCtjqWMgLorYhdnzB8lp3ksmC3qTBrrVVtEMuifrVvE,4455
37
37
  odoo/addons/stock_release_channel/tests/test_release_channel_partner.py,sha256=jMdMJRZ1UR6z6diA-DxRmHm-AN01J0YFEa1d9KqctPk,3471
38
38
  odoo/addons/stock_release_channel/views/res_config_settings.xml,sha256=-7hoXY3H-4sNSsSgW4Z2Un2K4Y_HB07yBhnpZspECj0,1701
39
39
  odoo/addons/stock_release_channel/views/res_partner.xml,sha256=_eJwfkaXRVNSVcg62MyTg7EJjA4fxQdCujMkDylio0Q,995
40
40
  odoo/addons/stock_release_channel/views/stock_picking_views.xml,sha256=mtspBuMsNlkKoSUw3-SR16PVxIaSj7JTQ1JfvAGwG5c,2824
41
41
  odoo/addons/stock_release_channel/views/stock_release_channel_views.xml,sha256=XmTz3w6VpJ0Rxhp9HGwTPB6Y4bb5maE2hPVT-9JBZ9Y,48468
42
- odoo_addon_stock_release_channel-16.0.2.18.0.2.dist-info/METADATA,sha256=A3A3uSJ4BojJ2yHtuPIYTG8oBhWS-oRScGu2RHzrMHM,7133
43
- odoo_addon_stock_release_channel-16.0.2.18.0.2.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
44
- odoo_addon_stock_release_channel-16.0.2.18.0.2.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
45
- odoo_addon_stock_release_channel-16.0.2.18.0.2.dist-info/RECORD,,
42
+ odoo_addon_stock_release_channel-16.0.2.18.2.dist-info/METADATA,sha256=cHCoUSeZSdxw_Lc74xKGGs3l6zNakk6BpziKgKbgSrs,7131
43
+ odoo_addon_stock_release_channel-16.0.2.18.2.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
44
+ odoo_addon_stock_release_channel-16.0.2.18.2.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
45
+ odoo_addon_stock_release_channel-16.0.2.18.2.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.44.0)
2
+ Generator: bdist_wheel (0.45.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5