odoo-addon-stock-release-channel 18.0.1.1.3.2__py3-none-any.whl → 18.0.1.2.0__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.
@@ -11,7 +11,7 @@ Stock Release Channels
11
11
  !! This file is generated by oca-gen-addon-readme !!
12
12
  !! changes will be overwritten. !!
13
13
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
14
- !! source digest: sha256:be2c1914df0053b04555f7eef121dae055b237ac986cd144925b365f1fff7fc4
14
+ !! source digest: sha256:f659e5b251b3a073694215bbe6e155d352cbfb91c66994f49c2945ac9c555ee0
15
15
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
16
16
 
17
17
  .. |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": "18.0.1.1.3",
8
+ "version": "18.0.1.2.0",
9
9
  "development_status": "Beta",
10
10
  "license": "AGPL-3",
11
11
  "author": "Camptocamp, BCIM, ACSONE SA/NV, Odoo Community Association (OCA)",
@@ -2,6 +2,8 @@
2
2
  # Copyright 2024 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
3
3
  # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
4
4
 
5
+ import io
6
+
5
7
  from odoo import api, exceptions, fields, models
6
8
  from odoo.osv import expression
7
9
 
@@ -81,9 +83,16 @@ class StockPicking(models.Model):
81
83
  def assign_release_channel(self):
82
84
  messages = ""
83
85
  for pick in self:
84
- result = self.env["stock.release.channel"].assign_release_channel(pick)
86
+ log_stream = io.StringIO()
87
+ result = self.env["stock.release.channel"].assign_release_channel(
88
+ pick.with_context(assign_release_channel_log_stream=log_stream)
89
+ )
85
90
  if result:
86
91
  messages += result + "\n"
92
+ log = log_stream.getvalue()
93
+ if log:
94
+ messages += f"\nDebug:\n{log}\n"
95
+ log_stream.close()
87
96
  return messages
88
97
 
89
98
  def release_available_to_promise(self):
@@ -128,9 +137,13 @@ class StockPicking(models.Model):
128
137
  :return: release channels
129
138
  """
130
139
  self.ensure_one()
140
+ domain = self._release_channel_possible_candidate_domain
141
+ log = self.env.context.get("assign_release_channel_log_stream")
142
+ if log:
143
+ log.write(f"Find possible channels domain: {domain}\n")
131
144
  return (
132
145
  self.env["stock.release.channel"]
133
- .search(self._release_channel_possible_candidate_domain)
146
+ .search(domain)
134
147
  .sorted(key=lambda r: (not bool(r.partner_ids), r.sequence))
135
148
  )
136
149
 
@@ -583,20 +583,40 @@ class StockReleaseChannel(models.Model):
583
583
  ):
584
584
  return
585
585
  message = ""
586
- for channel in picking._find_release_channel_possible_candidate():
586
+ possible_channels = picking._find_release_channel_possible_candidate()
587
+ log = picking.env.context.get("assign_release_channel_log_stream")
588
+ if log:
589
+ channel_names = ", ".join(possible_channels.mapped("display_name"))
590
+ log.write(f"Candidate channels: {channel_names}\n")
591
+ for channel in possible_channels:
587
592
  current = picking
588
593
  domain = channel._prepare_domain()
589
594
  code = channel.sudo().code
590
595
  if domain:
591
596
  current = picking.filtered_domain(domain)
592
597
  if not current:
598
+ if log:
599
+ log.write(
600
+ f"Channel '{channel.display_name}' excluded by channel "
601
+ "domain\n"
602
+ )
593
603
  continue
594
604
  if code:
595
605
  current = channel._eval_code(current)
596
606
  if not current:
607
+ if log:
608
+ log.write(
609
+ f"Channel '{channel.display_name}' excluded by channel "
610
+ "python code\n"
611
+ )
597
612
  continue
598
613
  current = channel._assign_release_channel_additional_filter(current)
599
614
  if not current:
615
+ if log:
616
+ log.write(
617
+ f"Channel '{channel.display_name}' excluded by channel "
618
+ "additional filter\n"
619
+ )
600
620
  continue
601
621
  if current.release_channel_id != channel:
602
622
  current.release_channel_id = channel
@@ -605,8 +625,7 @@ class StockReleaseChannel(models.Model):
605
625
  if not picking.release_channel_id:
606
626
  # by this point, the picking should have been assigned
607
627
  message_template = (
608
- "Transfer %(picking_name)s could not be assigned to a "
609
- "channel, you should add a final catch-all rule"
628
+ "Transfer %(picking_name)s could not be assigned to a channel"
610
629
  )
611
630
  _logger.warning(message_template, {"picking_name": picking.name})
612
631
  message = self.env._(message_template, picking_name=picking.name)
@@ -372,7 +372,7 @@ ul.auto-toc {
372
372
  !! This file is generated by oca-gen-addon-readme !!
373
373
  !! changes will be overwritten. !!
374
374
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
375
- !! source digest: sha256:be2c1914df0053b04555f7eef121dae055b237ac986cd144925b365f1fff7fc4
375
+ !! source digest: sha256:f659e5b251b3a073694215bbe6e155d352cbfb91c66994f49c2945ac9c555ee0
376
376
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
377
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-release-channel/tree/18.0/stock_release_channel"><img alt="OCA/stock-logistics-release-channel" src="https://img.shields.io/badge/github-OCA%2Fstock--logistics--release--channel-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/stock-logistics-release-channel-18-0/stock-logistics-release-channel-18-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/stock-logistics-release-channel&amp;target_branch=18.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
378
378
  <p>Release channels are:</p>
@@ -43,24 +43,18 @@ class TestReleaseChannel(ReleaseChannelCase):
43
43
  move = self._create_single_move(self.product1, 10)
44
44
  with trap_jobs() as trap:
45
45
  picking = move.picking_id
46
- message = (
47
- f"Transfer {picking.name} could not be assigned to a "
48
- "channel, you should add a final catch-all rule\n"
49
- )
50
46
  picking._delay_assign_release_channel()
51
47
  trap.assert_jobs_count(1, only=picking.assign_release_channel)
52
48
  enqueued_job = trap.enqueued_jobs[0]
53
49
  trap.perform_enqueued_jobs()
54
- self.assertEqual(message, enqueued_job.result)
50
+ message = f"Transfer {picking.name} could not be assigned to a channel"
51
+ self.assertRegex(enqueued_job.result, message)
55
52
  move = self._create_single_move(self.product2, 10)
56
53
  with trap_jobs() as trap:
57
54
  picking = move.picking_id
58
- message = (
59
- f"Transfer {picking.name} could not be assigned to a "
60
- "channel, you should add a final catch-all rule\n"
61
- )
62
55
  picking._delay_assign_release_channel()
63
56
  trap.assert_jobs_count(1, only=picking.assign_release_channel)
64
57
  enqueued_job = trap.enqueued_jobs[0]
65
58
  trap.perform_enqueued_jobs()
66
- self.assertEqual(message, enqueued_job.result)
59
+ message = f"Transfer {picking.name} could not be assigned to a channel"
60
+ self.assertRegex(enqueued_job.result, message)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: odoo-addon-stock_release_channel
3
- Version: 18.0.1.1.3.2
3
+ Version: 18.0.1.2.0
4
4
  Requires-Python: >=3.10
5
5
  Requires-Dist: odoo-addon-queue_job==18.0.*
6
6
  Requires-Dist: odoo-addon-stock_available_to_promise_release==18.0.*
@@ -30,7 +30,7 @@ Stock Release Channels
30
30
  !! This file is generated by oca-gen-addon-readme !!
31
31
  !! changes will be overwritten. !!
32
32
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
33
- !! source digest: sha256:be2c1914df0053b04555f7eef121dae055b237ac986cd144925b365f1fff7fc4
33
+ !! source digest: sha256:f659e5b251b3a073694215bbe6e155d352cbfb91c66994f49c2945ac9c555ee0
34
34
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
35
35
 
36
36
  .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
@@ -1,6 +1,6 @@
1
- odoo/addons/stock_release_channel/README.rst,sha256=2Vyu3451mhqm3hJlpytBP5jVNUzP1DGjw5fh3cNs8mE,6873
1
+ odoo/addons/stock_release_channel/README.rst,sha256=UE8nIfOsVaMxIfrkYIwCcaKiyzfNi2i_e9-LxO9h68w,6873
2
2
  odoo/addons/stock_release_channel/__init__.py,sha256=X9EJGOE2GtZbS0G82PtSXmWSZ_R8jEM0rlJTDliQjp4,21
3
- odoo/addons/stock_release_channel/__manifest__.py,sha256=aicagPNK5cSKHtJd4c10bL8Akz4-4vyunyfabk_baZQ,1351
3
+ odoo/addons/stock_release_channel/__manifest__.py,sha256=DJu4DeTIM134WO2fDaxRdruQhm0GYnuzNBvRfKEA5RY,1351
4
4
  odoo/addons/stock_release_channel/data/ir_cron_data.xml,sha256=XILvZIvmn14uZApFNSzzhtzI-M45fV711k5e9D0iN2g,593
5
5
  odoo/addons/stock_release_channel/data/queue_job_data.xml,sha256=brhyhM8YU_TKfSumeJtiGw_CxdQzm4H2tnZUJo3ze04,590
6
6
  odoo/addons/stock_release_channel/demo/stock_release_channel.xml,sha256=mFDJ2j1nbmAOGbQwFFbT0xrAjW8n893R2MdXTyNhL2c,332
@@ -13,8 +13,8 @@ odoo/addons/stock_release_channel/models/res_company.py,sha256=Vj27CcrLlr8vsgMel
13
13
  odoo/addons/stock_release_channel/models/res_config_settings.py,sha256=-oh2L7FWf60ACuqY5ojgRvlrqNBr9XXMCd78XVN_w9c,571
14
14
  odoo/addons/stock_release_channel/models/res_partner.py,sha256=P4gpRYE8euQzk7TuOPwCp-pvJfMUfVzZqwR5B7oe1Fk,877
15
15
  odoo/addons/stock_release_channel/models/stock_move.py,sha256=iaPhHbzM12YtUjexaCU6MMTQcPPntJ0FJS_BX8NKRHE,1592
16
- odoo/addons/stock_release_channel/models/stock_picking.py,sha256=mkBSCoE6p-_35J-fGjWohWSbtwWb2hwr56hAg-mWk3s,7904
17
- odoo/addons/stock_release_channel/models/stock_release_channel.py,sha256=qQQ9dXzVCNRqqIVYWy4F0vhlBiSJl4YLncQxB3hDdWs,38864
16
+ odoo/addons/stock_release_channel/models/stock_picking.py,sha256=e2zuh9XisKk_7arlOlg-bqyNDyql-g7O8RId8uzJjY0,8375
17
+ odoo/addons/stock_release_channel/models/stock_release_channel.py,sha256=5ADIjauYeyVCHCivCl3wum8K0_vnNBA1Cv4OG4zbZMg,39682
18
18
  odoo/addons/stock_release_channel/readme/CONFIGURE.md,sha256=0I_Dh2FtDqoO6y0tHxjwnY5j5SEeGK7_xjURpODgWSg,95
19
19
  odoo/addons/stock_release_channel/readme/CONTRIBUTORS.md,sha256=xrrJ3yIkmq6TyzXgi_Uu_C5WhkBmYPMgh46h9kuyCDg,426
20
20
  odoo/addons/stock_release_channel/readme/CREDITS.md,sha256=Q-HpCW3wq96Eb9WSup9SZYdgfKNTKnwMcOgCzALQ7jE,50
@@ -22,12 +22,12 @@ odoo/addons/stock_release_channel/readme/DESCRIPTION.md,sha256=fxYLZyWH-ndmc1VGz
22
22
  odoo/addons/stock_release_channel/readme/USAGE.md,sha256=EQWkBSmQwzakAkciBlkSek32TTkSVDSNRG1pRg7cB84,1600
23
23
  odoo/addons/stock_release_channel/security/stock_release_channel.xml,sha256=tSwRdeAVTiScbTCMLOiCJNbYcywepNPZy9rRv2b1SoY,1469
24
24
  odoo/addons/stock_release_channel/static/description/icon.png,sha256=6xBPJauaFOF0KDHfHgQopSc28kKvxMaeoQFQWZtfZDo,9455
25
- odoo/addons/stock_release_channel/static/description/index.html,sha256=tmkG0bSMnkuTlzOGiCUAdnfY3V9mcAxsn6HTT-JxEA8,17933
25
+ odoo/addons/stock_release_channel/static/description/index.html,sha256=btFfywrx5fNeG0IfRwnk4LWHvut9ydT_2y0aVpieymc,17933
26
26
  odoo/addons/stock_release_channel/static/src/js/progressbar_fractional_widget.esm.js,sha256=GNoV3ZbDZXTLxRTyKkp0jwRL99Dr2EgH3TNuBWW80u0,1859
27
27
  odoo/addons/stock_release_channel/static/src/scss/stock_release_channel.scss,sha256=TvyOGHzF7XuxZlTPBmf4aUj3b_quOHPFalpZ0LW5vfM,977
28
28
  odoo/addons/stock_release_channel/tests/__init__.py,sha256=GKpdQIuWCHiN-e1yatgmy07kzgmlrXm8M66uTWfUjIk,266
29
29
  odoo/addons/stock_release_channel/tests/common.py,sha256=0o79MEowUitiyyBxWbw45OjxLX8wPySlR-qrO5uvAOs,8756
30
- odoo/addons/stock_release_channel/tests/test_assign_job.py,sha256=E8k9L8VPSE9Pk_xK8U9qlqYUttrYJ0iGub8MolU06fk,2847
30
+ odoo/addons/stock_release_channel/tests/test_assign_job.py,sha256=KCs3Bqa--ACosJXbK48YMlIeoLPQ9vMNgJ97MlHpr4w,2663
31
31
  odoo/addons/stock_release_channel/tests/test_channel_action.py,sha256=dtaYBCAOyNGyGWpDWDAAxVUgSWXNqR-AznKAq3iOLAI,5466
32
32
  odoo/addons/stock_release_channel/tests/test_channel_computed_fields.py,sha256=TbVkrpn5Sq6nt-QRQEi2OisjkwUuvwPJ75a0V77FsM0,4725
33
33
  odoo/addons/stock_release_channel/tests/test_channel_release_batch.py,sha256=nvLf6TqcnhaA78gSpmK7Pb9unqxTm0RnY4f1QcqFlkY,2247
@@ -42,7 +42,7 @@ odoo/addons/stock_release_channel/views/res_config_settings.xml,sha256=ehTEpYyfE
42
42
  odoo/addons/stock_release_channel/views/res_partner.xml,sha256=01rh7UBBsNqDokHzXsPt7rZKtpT03YKy-e8DHctdbZI,993
43
43
  odoo/addons/stock_release_channel/views/stock_picking_views.xml,sha256=LesPS6bpRomZBpXX84b7ehO5cQvz-DuK6UF73nu1FLA,2963
44
44
  odoo/addons/stock_release_channel/views/stock_release_channel_views.xml,sha256=lirRheO0-JuQBmZ2qiE8GL4mLEZQ2lq8ijZdYY7YwXU,46358
45
- odoo_addon_stock_release_channel-18.0.1.1.3.2.dist-info/METADATA,sha256=6lS9qiSoIigO5Ua16UJH_1P2ZwND58y0gz5ibXJ4Vg4,7639
46
- odoo_addon_stock_release_channel-18.0.1.1.3.2.dist-info/WHEEL,sha256=ZhOvUsYhy81Dx67gN3TV0RchQWBIIzutDZaJODDg2Vo,81
47
- odoo_addon_stock_release_channel-18.0.1.1.3.2.dist-info/top_level.txt,sha256=QE6RBQ0QX5f4eFuUcGgU5Kbq1A_qJcDs-e_vpr6pmfU,4
48
- odoo_addon_stock_release_channel-18.0.1.1.3.2.dist-info/RECORD,,
45
+ odoo_addon_stock_release_channel-18.0.1.2.0.dist-info/METADATA,sha256=45jB9sL5-GqvtNHI3kQbIDHcrpjNMCTlnUsOX32JsB0,7637
46
+ odoo_addon_stock_release_channel-18.0.1.2.0.dist-info/WHEEL,sha256=ZhOvUsYhy81Dx67gN3TV0RchQWBIIzutDZaJODDg2Vo,81
47
+ odoo_addon_stock_release_channel-18.0.1.2.0.dist-info/top_level.txt,sha256=QE6RBQ0QX5f4eFuUcGgU5Kbq1A_qJcDs-e_vpr6pmfU,4
48
+ odoo_addon_stock_release_channel-18.0.1.2.0.dist-info/RECORD,,