odoo-addon-stock-release-channel 18.0.1.1.2.1__py3-none-any.whl → 18.0.1.1.3__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:0e3bededd4f98e146c985777dbb190649092bac2badc8614221b02bfeb3eb7a8
14
+ !! source digest: sha256:be2c1914df0053b04555f7eef121dae055b237ac986cd144925b365f1fff7fc4
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.2",
8
+ "version": "18.0.1.1.3",
9
9
  "development_status": "Beta",
10
10
  "license": "AGPL-3",
11
11
  "author": "Camptocamp, BCIM, ACSONE SA/NV, Odoo Community Association (OCA)",
@@ -211,6 +211,11 @@ msgstr ""
211
211
  msgid "Deliveries"
212
212
  msgstr ""
213
213
 
214
+ #. module: stock_release_channel
215
+ #: model:ir.model.fields,field_description:stock_release_channel.field_stock_picking__delivery_date
216
+ msgid "Delivery Date"
217
+ msgstr ""
218
+
214
219
  #. module: stock_release_channel
215
220
  #: model:ir.model.fields,field_description:stock_release_channel.field_stock_release_channel__display_name
216
221
  msgid "Display Name"
@@ -2,7 +2,7 @@
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
- from odoo import exceptions, fields, models
5
+ from odoo import api, exceptions, fields, models
6
6
  from odoo.osv import expression
7
7
 
8
8
  from odoo.addons.queue_job.job import identity_exact
@@ -20,6 +20,10 @@ class StockPicking(models.Model):
20
20
  inverse="_inverse_release_channel_id",
21
21
  )
22
22
 
23
+ delivery_date = fields.Date(
24
+ compute="_compute_delivery_date",
25
+ )
26
+
23
27
  def _inverse_release_channel_id(self):
24
28
  """When the release channel is modified, update the expected date
25
29
 
@@ -45,6 +49,28 @@ class StockPicking(models.Model):
45
49
  all_moves = moves.browse(move_chain_ids)
46
50
  all_moves._release_set_expected_date(new_date)
47
51
 
52
+ @api.depends("release_channel_id", "need_release", "partner_id")
53
+ def _compute_delivery_date(self):
54
+ # compute the earliest delivery date from the scheduled date
55
+ for picking in self:
56
+ channel = picking.release_channel_id
57
+ if not channel or not picking.partner_id or picking.need_release:
58
+ picking.delivery_date = False
59
+ continue
60
+ # Use the scheduled date as preparation end date
61
+ steps = channel._delivery_date_steps
62
+ # skip any step until preparation included
63
+ for i, step in enumerate(steps):
64
+ if step == "preparation":
65
+ steps = steps[i + 1 :]
66
+ break
67
+ delivery_dt = channel._get_earliest_delivery_date(
68
+ picking.partner_id,
69
+ picking.scheduled_date,
70
+ steps=steps,
71
+ )
72
+ picking.delivery_date = channel._localize(delivery_dt).date()
73
+
48
74
  def _delay_assign_release_channel(self):
49
75
  for picking in self:
50
76
  picking.with_delay(
@@ -952,7 +952,7 @@ class StockReleaseChannel(models.Model):
952
952
  """
953
953
  return defaultdict(list)
954
954
 
955
- def _get_earliest_delivery_date(self, partner, order_dt):
955
+ def _get_earliest_delivery_date(self, partner, start_dt, steps=None):
956
956
  """Compute the earliest delivery date for this channel
957
957
 
958
958
  Go through each steps. All generators of a step must agree on a date.
@@ -963,13 +963,14 @@ class StockReleaseChannel(models.Model):
963
963
  This algorithm performs a quick convergence to a date.
964
964
  """
965
965
  self.ensure_one()
966
- best_dt = order_dt
967
- limit_dt = order_dt + timedelta(days=DELIVERY_DATE_COMPUTATION_LIMIT_DAYS)
968
- for step in self._delivery_date_steps:
966
+ best_dt = start_dt
967
+ limit_dt = start_dt + timedelta(days=DELIVERY_DATE_COMPUTATION_LIMIT_DAYS)
968
+ _logger.debug(f"Compute earliest delivery date starting from {best_dt}")
969
+ steps = steps or self._delivery_date_steps
970
+ for step in steps:
969
971
  funcs = self._delivery_date_generators.get(step)
970
972
  if not funcs:
971
973
  continue
972
- _logger.debug(f"Compute earliest delivery date for {step}")
973
974
  generators = []
974
975
  best_generators = []
975
976
  start_dt = best_dt
@@ -980,6 +981,7 @@ class StockReleaseChannel(models.Model):
980
981
  new_dt = next(gen)
981
982
  if new_dt > best_dt:
982
983
  best_dt = new_dt
984
+ _logger.debug(f" new {step} date {best_dt} from {gen.__name__}")
983
985
  best_generators = [gen]
984
986
  elif new_dt == best_dt:
985
987
  best_generators.append(gen)
@@ -996,10 +998,14 @@ class StockReleaseChannel(models.Model):
996
998
  continue
997
999
  best_dt = gen.send(previous_dt := best_dt)
998
1000
  if best_dt != previous_dt:
999
- _logger.debug(f"New {step} date {best_dt} from {gen}")
1001
+ _logger.debug(
1002
+ f" new {step} date {best_dt} from {gen.__name__}"
1003
+ )
1000
1004
  best_generators = [gen]
1001
1005
  else:
1002
1006
  best_generators.append(gen)
1007
+ gen_names = ",".join(gen.__name__ for gen in generators)
1008
+ _logger.debug(f" {step} date {best_dt} agreed by {gen_names}")
1003
1009
  for gen in generators:
1004
1010
  gen.close()
1005
1011
  if best_dt is None:
@@ -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:0e3bededd4f98e146c985777dbb190649092bac2badc8614221b02bfeb3eb7a8
375
+ !! source digest: sha256:be2c1914df0053b04555f7eef121dae055b237ac986cd144925b365f1fff7fc4
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>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: odoo-addon-stock_release_channel
3
- Version: 18.0.1.1.2.1
3
+ Version: 18.0.1.1.3
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:0e3bededd4f98e146c985777dbb190649092bac2badc8614221b02bfeb3eb7a8
33
+ !! source digest: sha256:be2c1914df0053b04555f7eef121dae055b237ac986cd144925b365f1fff7fc4
34
34
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
35
35
 
36
36
  .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
@@ -1,20 +1,20 @@
1
- odoo/addons/stock_release_channel/README.rst,sha256=8rn-dRmeszPlKUZVVIpYno9KE2XuqKAoRqQJ3wu3H9I,6873
1
+ odoo/addons/stock_release_channel/README.rst,sha256=2Vyu3451mhqm3hJlpytBP5jVNUzP1DGjw5fh3cNs8mE,6873
2
2
  odoo/addons/stock_release_channel/__init__.py,sha256=X9EJGOE2GtZbS0G82PtSXmWSZ_R8jEM0rlJTDliQjp4,21
3
- odoo/addons/stock_release_channel/__manifest__.py,sha256=nq7HmfqK-ydsFafmaWjWfa3ZlxyjzGjJLiW7-VvHGEU,1351
3
+ odoo/addons/stock_release_channel/__manifest__.py,sha256=aicagPNK5cSKHtJd4c10bL8Akz4-4vyunyfabk_baZQ,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
7
7
  odoo/addons/stock_release_channel/i18n/es.po,sha256=-RVBDUvnzsyPtGpMxexS4g8-4ijlQrzVB-4dOBvjWuk,33890
8
8
  odoo/addons/stock_release_channel/i18n/fr.po,sha256=3_eGxskC46cEYoJwP4zkqFDyePOtbiTbRS1NA-47PFw,29463
9
9
  odoo/addons/stock_release_channel/i18n/it.po,sha256=clCZnQs8fvF26lDb1ps49avn4EDcao42s1HC-j16by0,36194
10
- odoo/addons/stock_release_channel/i18n/stock_release_channel.pot,sha256=uWVCd3oIiirb7kCohHEA0-xGUtpSXX3c_VcsUSN3FbQ,28084
10
+ odoo/addons/stock_release_channel/i18n/stock_release_channel.pot,sha256=B4m9Cn_vu1QoLv7fvgm0KNxzdU_TvhRboKyyYTJCw_8,28250
11
11
  odoo/addons/stock_release_channel/models/__init__.py,sha256=7bzf3wef0yG6SnmE67xQwGn1EM4phSOfm0o4t8k6-oU,175
12
12
  odoo/addons/stock_release_channel/models/res_company.py,sha256=Vj27CcrLlr8vsgMelp9ix5z8IkJYhfEb7FBdO23r2VI,616
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=EKwpiwQSNjiuWmQoT3SMF8sdTRWpF0C8S_0NYhLP_NY,6836
17
- odoo/addons/stock_release_channel/models/stock_release_channel.py,sha256=eKK0kqVoMqA8tJiC6hlbLIpCJbatgHLSwkzH4XTYabQ,38516
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
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,7 +22,7 @@ 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=6lJCqbEO8M2lnnJyueVYfPDLqudOZCGhvXoH5tomnsw,17933
25
+ odoo/addons/stock_release_channel/static/description/index.html,sha256=tmkG0bSMnkuTlzOGiCUAdnfY3V9mcAxsn6HTT-JxEA8,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
@@ -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.2.1.dist-info/METADATA,sha256=Th1D0ChWVEzs8GPNhbNx-vdrdbBBBltxVA1iFfcS4jo,7639
46
- odoo_addon_stock_release_channel-18.0.1.1.2.1.dist-info/WHEEL,sha256=ZhOvUsYhy81Dx67gN3TV0RchQWBIIzutDZaJODDg2Vo,81
47
- odoo_addon_stock_release_channel-18.0.1.1.2.1.dist-info/top_level.txt,sha256=QE6RBQ0QX5f4eFuUcGgU5Kbq1A_qJcDs-e_vpr6pmfU,4
48
- odoo_addon_stock_release_channel-18.0.1.1.2.1.dist-info/RECORD,,
45
+ odoo_addon_stock_release_channel-18.0.1.1.3.dist-info/METADATA,sha256=5Ru6fw5QQGBFtcmZa0yll27iKmm7cj1ac3yoawsyGVc,7637
46
+ odoo_addon_stock_release_channel-18.0.1.1.3.dist-info/WHEEL,sha256=ZhOvUsYhy81Dx67gN3TV0RchQWBIIzutDZaJODDg2Vo,81
47
+ odoo_addon_stock_release_channel-18.0.1.1.3.dist-info/top_level.txt,sha256=QE6RBQ0QX5f4eFuUcGgU5Kbq1A_qJcDs-e_vpr6pmfU,4
48
+ odoo_addon_stock_release_channel-18.0.1.1.3.dist-info/RECORD,,