odoo-addon-delivery-multi-destination 16.0.1.0.1__py3-none-any.whl → 16.0.2.0.0.6__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 (27) hide show
  1. odoo/addons/delivery_multi_destination/README.rst +1 -1
  2. odoo/addons/delivery_multi_destination/__init__.py +1 -0
  3. odoo/addons/delivery_multi_destination/__manifest__.py +1 -1
  4. odoo/addons/delivery_multi_destination/demo/delivery_carrier_demo.xml +1 -0
  5. odoo/addons/delivery_multi_destination/i18n/cs_CZ.po +30 -16
  6. odoo/addons/delivery_multi_destination/i18n/de.po +30 -16
  7. odoo/addons/delivery_multi_destination/i18n/delivery_multi_destination.pot +29 -0
  8. odoo/addons/delivery_multi_destination/i18n/es.po +32 -15
  9. odoo/addons/delivery_multi_destination/i18n/fr.po +30 -16
  10. odoo/addons/delivery_multi_destination/i18n/it.po +32 -15
  11. odoo/addons/delivery_multi_destination/i18n/nl.po +30 -16
  12. odoo/addons/delivery_multi_destination/i18n/nl_NL.po +30 -16
  13. odoo/addons/delivery_multi_destination/i18n/pt_BR.po +34 -17
  14. odoo/addons/delivery_multi_destination/i18n/sl.po +32 -18
  15. odoo/addons/delivery_multi_destination/i18n/zh_CN.po +30 -16
  16. odoo/addons/delivery_multi_destination/migrations/16.0.2.0.0/pre-migration.py +15 -0
  17. odoo/addons/delivery_multi_destination/models/delivery_carrier.py +101 -70
  18. odoo/addons/delivery_multi_destination/readme/newsfragments/540.feature.rst +4 -0
  19. odoo/addons/delivery_multi_destination/static/description/index.html +1 -1
  20. odoo/addons/delivery_multi_destination/tests/test_delivery_multi_destination.py +16 -2
  21. odoo/addons/delivery_multi_destination/wizards/__init__.py +5 -0
  22. odoo/addons/delivery_multi_destination/wizards/choose_delivery_carrier.py +27 -0
  23. {odoo_addon_delivery_multi_destination-16.0.1.0.1.dist-info → odoo_addon_delivery_multi_destination-16.0.2.0.0.6.dist-info}/METADATA +2 -2
  24. odoo_addon_delivery_multi_destination-16.0.2.0.0.6.dist-info/RECORD +35 -0
  25. odoo_addon_delivery_multi_destination-16.0.1.0.1.dist-info/RECORD +0 -31
  26. {odoo_addon_delivery_multi_destination-16.0.1.0.1.dist-info → odoo_addon_delivery_multi_destination-16.0.2.0.0.6.dist-info}/WHEEL +0 -0
  27. {odoo_addon_delivery_multi_destination-16.0.1.0.1.dist-info → odoo_addon_delivery_multi_destination-16.0.2.0.0.6.dist-info}/top_level.txt +0 -0
@@ -21,10 +21,40 @@ class DeliveryCarrier(models.Model):
21
21
  ondelete="cascade",
22
22
  )
23
23
  destination_type = fields.Selection(
24
- selection=[("one", "One destination"), ("multi", "Multiple destinations")],
25
- default="one",
26
- required=True,
24
+ selection=[
25
+ ("one", "One destination"),
26
+ ("multi", "Multiple destinations"),
27
+ ],
28
+ compute="_compute_destination_type",
29
+ inverse="_inverse_destination_type",
30
+ store=True,
27
31
  )
32
+ delivery_type = fields.Selection(
33
+ selection_add=[("base_on_destination", "Based on Destination")],
34
+ ondelete={"base_on_destination": "set default"},
35
+ )
36
+
37
+ @api.depends("delivery_type")
38
+ def _compute_destination_type(self):
39
+ for carrier in self:
40
+ if carrier.delivery_type == "base_on_destination":
41
+ carrier.destination_type = "multi"
42
+ else:
43
+ carrier.destination_type = "one"
44
+
45
+ def _inverse_destination_type(self):
46
+ for carrier in self:
47
+ # Switch to multi
48
+ if carrier.destination_type == "multi":
49
+ carrier.delivery_type = "base_on_destination"
50
+ # Switch away from multi -> we know that destination_type is
51
+ # non-multi. However, in a hypothetical scenario where we switch
52
+ # from one non-multi destination_type to another, we don't want to
53
+ # forcibly reset delivery_type to 'fixed' each time, so we check
54
+ # whether delivery_type is invalid for a non-multi destination_type
55
+ # before we forcibly reset to 'fixed'.
56
+ elif carrier.delivery_type == "base_on_destination":
57
+ carrier.delivery_type = "fixed"
28
58
 
29
59
  @api.onchange("destination_type", "child_ids")
30
60
  def _onchange_destination_type(self):
@@ -32,14 +62,14 @@ class DeliveryCarrier(models.Model):
32
62
  if self.destination_type == "multi" and self.child_ids and not self.product_id:
33
63
  self.product_id = fields.first(self.child_ids.product_id)
34
64
 
35
- def search(self, args, offset=0, limit=None, order=None, count=False):
36
- """Don't show by default children carriers."""
65
+ def search(self, domain, offset=0, limit=None, order=None, count=False):
66
+ """Don't show children carriers by default."""
37
67
  if not self.env.context.get("show_children_carriers"):
38
- if args is None:
39
- args = []
40
- args += [("parent_id", "=", False)]
41
- return super(DeliveryCarrier, self).search(
42
- args,
68
+ if domain is None:
69
+ domain = []
70
+ domain += [("parent_id", "=", False)]
71
+ return super().search(
72
+ domain,
43
73
  offset=offset,
44
74
  limit=limit,
45
75
  order=order,
@@ -48,10 +78,17 @@ class DeliveryCarrier(models.Model):
48
78
 
49
79
  @api.model
50
80
  def name_search(self, name="", args=None, operator="ilike", limit=100):
51
- """Don't show by default children carriers."""
52
- args = args or []
53
- args += [("parent_id", "=", False)]
54
- return super().name_search(name=name, args=args, operator=operator, limit=limit)
81
+ """Don't show children carriers by default."""
82
+ if not self.env.context.get("show_children_carriers"):
83
+ if args is None:
84
+ args = []
85
+ args += [("parent_id", "=", False)]
86
+ return super().name_search(
87
+ name=name,
88
+ args=args,
89
+ operator=operator,
90
+ limit=limit,
91
+ )
55
92
 
56
93
  def available_carriers(self, partner):
57
94
  """If the carrier is multi, we test the availability on children."""
@@ -66,60 +103,54 @@ class DeliveryCarrier(models.Model):
66
103
  available |= carrier
67
104
  return available
68
105
 
69
- def rate_shipment(self, order):
70
- """We have to override this method for getting the proper price
71
- according destination on sales orders.
72
- """
73
- if self.destination_type == "one":
74
- return super().rate_shipment(order)
75
- else:
76
- carrier = self.with_context(show_children_carriers=True)
77
- for subcarrier in carrier.child_ids:
78
- if subcarrier._match_address(order.partner_shipping_id):
79
- return super(
80
- DeliveryCarrier,
81
- subcarrier,
82
- ).rate_shipment(order)
106
+ def base_on_destination_rate_shipment(self, order):
107
+ carrier = self.with_context(show_children_carriers=True)
108
+ for subcarrier in carrier.child_ids:
109
+ if subcarrier._match_address(order.partner_shipping_id):
110
+ return subcarrier.rate_shipment(order)
111
+ # this should normally not happen, because the delivery carrier should
112
+ # be filtered out before, but in case it is somehow selected anyway,
113
+ # at least it will fail nicely.
114
+ return {
115
+ "success": False,
116
+ "price": 0.0,
117
+ "error_message": _(
118
+ "Error: this delivery method is not available for this address."
119
+ ),
120
+ "warning_message": False,
121
+ }
83
122
 
84
- def send_shipping(self, pickings):
85
- """We have to override this method for redirecting the result to the
86
- proper "child" carrier.
87
- """
88
- if self.destination_type == "one" or not self:
89
- return super().send_shipping(pickings)
90
- else:
91
- carrier = self.with_context(show_children_carriers=True)
92
- res = []
93
- for p in pickings:
94
- picking_res = False
95
- for subcarrier in carrier.child_ids.filtered(
96
- lambda x: not x.company_id or x.company_id == p.company_id
97
- ):
98
- if subcarrier.delivery_type == "fixed":
99
- if subcarrier._match_address(p.partner_id):
100
- picking_res = [
101
- {
102
- "exact_price": subcarrier.fixed_price,
103
- "tracking_number": False,
104
- }
105
- ]
106
- break
107
- else:
108
- try:
109
- # on base_on_rule_send_shipping, the method
110
- # _get_price_available is called using p.carrier_id,
111
- # ignoring the self arg, so we need to temporarily replace
112
- # it with the subcarrier
113
- p.carrier_id = subcarrier.id
114
- picking_res = super(
115
- DeliveryCarrier, subcarrier
116
- ).send_shipping(p)
117
- break
118
- except Exception: # pylint: disable=except-pass
119
- pass
120
- finally:
121
- p.carrier_id = carrier
122
- if not picking_res:
123
- raise ValidationError(_("There is no matching delivery rule."))
124
- res += picking_res
125
- return res
123
+ def base_on_destination_send_shipping(self, pickings):
124
+ carrier = self.with_context(show_children_carriers=True)
125
+ res = []
126
+ for p in pickings:
127
+ picking_res = False
128
+ for subcarrier in carrier.child_ids.filtered(
129
+ lambda x: not x.company_id or x.company_id == p.company_id
130
+ ):
131
+ if subcarrier.delivery_type == "fixed":
132
+ if subcarrier._match_address(p.partner_id):
133
+ picking_res = [
134
+ {
135
+ "exact_price": subcarrier.fixed_price,
136
+ "tracking_number": False,
137
+ }
138
+ ]
139
+ break
140
+ else:
141
+ try:
142
+ # on base_on_rule_send_shipping, the method
143
+ # _get_price_available is called using p.carrier_id,
144
+ # ignoring the self arg, so we need to temporarily replace
145
+ # it with the subcarrier
146
+ p.carrier_id = subcarrier.id
147
+ picking_res = subcarrier.send_shipping(p)
148
+ break
149
+ except Exception: # pylint: disable=except-pass
150
+ pass
151
+ finally:
152
+ p.carrier_id = carrier
153
+ if not picking_res:
154
+ raise ValidationError(_("There is no matching delivery rule."))
155
+ res += picking_res
156
+ return res
@@ -0,0 +1,4 @@
1
+ Introduced 'based on destination' delivery type. This is the delivery type used
2
+ by all multi-destination carriers instead of 'fixed'. Consequently, destination
3
+ type has been turned into a computed field that checks if the delivery type is
4
+ 'based on destination' or not.
@@ -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:65f3fca5db6ace0fcb048cbd2b4bfd33a5753a2ec9f6cd5d8a1e8a92284f7ce8
375
+ !! source digest: sha256:25e624cc13975bea90a7a3aadc32eef1f35fefa8ea2223ba32dc6dd702552b28
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/delivery-carrier/tree/16.0/delivery_multi_destination"><img alt="OCA/delivery-carrier" src="https://img.shields.io/badge/github-OCA%2Fdelivery--carrier-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/delivery-carrier-16-0/delivery-carrier-16-0-delivery_multi_destination"><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/delivery-carrier&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
378
378
  <p>This module allows to set different price rules depending on the destination.</p>
@@ -72,6 +72,7 @@ class TestDeliveryMultiDestination(common.TransactionCase):
72
72
  {
73
73
  "name": "Test carrier single",
74
74
  "destination_type": "one",
75
+ "fixed_price": 100,
75
76
  "child_ids": False,
76
77
  }
77
78
  )
@@ -84,8 +85,7 @@ class TestDeliveryMultiDestination(common.TransactionCase):
84
85
  carrier_form = Form(self.env["delivery.carrier"])
85
86
  carrier_form.name = "Test carrier multi"
86
87
  carrier_form.product_id = self.product
87
- carrier_form.delivery_type = "fixed"
88
- carrier_form.fixed_price = 100
88
+ carrier_form.delivery_type = "base_on_destination"
89
89
  # this needs to be done in this order
90
90
  carrier_form.destination_type = "multi"
91
91
  for child_item in childs:
@@ -136,6 +136,20 @@ class TestDeliveryMultiDestination(common.TransactionCase):
136
136
  sale_order_line = order.order_line.filtered("is_delivery")
137
137
  self.assertAlmostEqual(sale_order_line.price_unit, 150, 2)
138
138
 
139
+ def test_compute(self):
140
+ self.carrier_multi.delivery_type = "fixed"
141
+ self.assertEqual(self.carrier_multi.destination_type, "one")
142
+ self.carrier_multi.delivery_type = "base_on_destination"
143
+ self.assertEqual(self.carrier_multi.destination_type, "multi")
144
+
145
+ def test_inverse(self):
146
+ self.carrier_multi.destination_type = "one"
147
+ self.assertEqual(self.carrier_multi.destination_type, "one")
148
+ self.assertEqual(self.carrier_multi.delivery_type, "fixed")
149
+ self.carrier_multi.destination_type = "multi"
150
+ self.assertEqual(self.carrier_multi.destination_type, "multi")
151
+ self.assertEqual(self.carrier_multi.delivery_type, "base_on_destination")
152
+
139
153
  def test_search(self):
140
154
  carriers = self.env["delivery.carrier"].search([])
141
155
  children_carrier = self.carrier_multi.with_context(
@@ -0,0 +1,5 @@
1
+ # SPDX-FileCopyrightText: 2024 Coop IT Easy SC
2
+ #
3
+ # SPDX-License-Identifier: AGPL-3.0-or-later
4
+
5
+ from . import choose_delivery_carrier
@@ -0,0 +1,27 @@
1
+ # SPDX-FileCopyrightText: 2024 Coop IT Easy SC
2
+ #
3
+ # SPDX-License-Identifier: AGPL-3.0-or-later
4
+
5
+ from odoo import _, api, models
6
+
7
+
8
+ class ChooseDeliveryCarrier(models.TransientModel):
9
+ _inherit = "choose.delivery.carrier"
10
+
11
+ @api.onchange("carrier_id")
12
+ def _onchange_carrier_id(self):
13
+ result = super()._onchange_carrier_id()
14
+ if self.delivery_type == "base_on_destination":
15
+ vals = self._get_shipment_rate()
16
+ # although ._onchange_carrier_id() in the delivery module can
17
+ # return a dict with an "error" key and a string value, this is
18
+ # not handled by the caller (see BaseModel._onchange_eval()),
19
+ # which only handles dicts with a "warning" key and a dict as a
20
+ # value.
21
+ if vals.get("error_message"):
22
+ return {
23
+ "warning": {"title": _("Error"), "message": vals["error_message"]}
24
+ }
25
+ if vals.get("warning_message"):
26
+ return {"warning": {"message": vals["warning_message"]}}
27
+ return result
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: odoo-addon-delivery_multi_destination
3
- Version: 16.0.1.0.1
3
+ Version: 16.0.2.0.0.6
4
4
  Summary: Multiple destinations for the same delivery method
5
5
  Home-page: https://github.com/OCA/delivery-carrier
6
6
  Author: Tecnativa, Odoo Community Association (OCA)
@@ -26,7 +26,7 @@ Multiple destinations for the same delivery method
26
26
  !! This file is generated by oca-gen-addon-readme !!
27
27
  !! changes will be overwritten. !!
28
28
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
29
- !! source digest: sha256:65f3fca5db6ace0fcb048cbd2b4bfd33a5753a2ec9f6cd5d8a1e8a92284f7ce8
29
+ !! source digest: sha256:25e624cc13975bea90a7a3aadc32eef1f35fefa8ea2223ba32dc6dd702552b28
30
30
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
31
31
 
32
32
  .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
@@ -0,0 +1,35 @@
1
+ odoo/addons/delivery_multi_destination/README.rst,sha256=aiwO7yxzseVQ6ZLKa1vKyuFmYMP6tMCsIdygI6WVxtA,4418
2
+ odoo/addons/delivery_multi_destination/__init__.py,sha256=zI6OgKd-jvRibsvs40jL7kgXqg4cvbAufnC02Ac8Zvs,109
3
+ odoo/addons/delivery_multi_destination/__manifest__.py,sha256=yTSZaOuW6OnwvZLcy0DFj5Hvn_J2_NTCWCBgJZl7xkk,694
4
+ odoo/addons/delivery_multi_destination/demo/delivery_carrier_demo.xml,sha256=6k6ImN8f1e6UtuhUCNFXWVL-X0ROrOkUVXKSHnc_m30,3817
5
+ odoo/addons/delivery_multi_destination/i18n/cs_CZ.po,sha256=oJ93mx5Mvhe5jW6g_3wCZDGIVSlAFtQTECrlGLSxkzI,4761
6
+ odoo/addons/delivery_multi_destination/i18n/de.po,sha256=mnmL6qUHHQxpT-NTPccUeZkUb7jf-Ud0MUgj588mm1Y,4634
7
+ odoo/addons/delivery_multi_destination/i18n/delivery_multi_destination.pot,sha256=os7ybwX4dY0lrqjenS8m7mgYKmG9ZZJ-EHM4X_HHgUg,4152
8
+ odoo/addons/delivery_multi_destination/i18n/es.po,sha256=fQdQFDcpzbf0VhPhl9xLpoOlYEVS2F9VqFtTIgKPTUo,4885
9
+ odoo/addons/delivery_multi_destination/i18n/fr.po,sha256=LpVpZNFnz_r69PCL4VdJhhR-2EoTHHOnRZyc4fq-BME,4452
10
+ odoo/addons/delivery_multi_destination/i18n/it.po,sha256=usXBioDAeiR2WyuOcuaV_YXnk0yCatmL85hhiPVDRNA,4843
11
+ odoo/addons/delivery_multi_destination/i18n/nl.po,sha256=GECjjy8OwVi7nAlRqNCDo8us-NbSaYjS2rssK4sHIQU,4452
12
+ odoo/addons/delivery_multi_destination/i18n/nl_NL.po,sha256=BpwWz6PPORRtx7qQ_MZ4YgYGNek39RTJvyujBGagsLs,4461
13
+ odoo/addons/delivery_multi_destination/i18n/pt_BR.po,sha256=LaJ-56qOnsZf3_LFe00rMHD5a5ZYgSkobZrhVmXeaGk,5049
14
+ odoo/addons/delivery_multi_destination/i18n/sl.po,sha256=y7td5RwT0r_Rz9JM3N7uyBt7lT_JoesUOGsa2uq9GBc,4581
15
+ odoo/addons/delivery_multi_destination/i18n/zh_CN.po,sha256=F77ETzLT-Zdg4u5s1aDr2O3cxbg41tKBZaObOSegXTY,4617
16
+ odoo/addons/delivery_multi_destination/migrations/16.0.2.0.0/pre-migration.py,sha256=LssV1emY80IxVTUUyx8w6Skx2xgALvlxLyTBUOQNLOg,387
17
+ odoo/addons/delivery_multi_destination/models/__init__.py,sha256=-K4wh1XVA03SZzTTycr_kcgawLtJanP54sq4kwHL5eA,97
18
+ odoo/addons/delivery_multi_destination/models/delivery_carrier.py,sha256=fLtiiTbGSQnC7YJq5_HSnMPWMUF9dOEThsd1_jnRxSI,6299
19
+ odoo/addons/delivery_multi_destination/readme/CONFIGURE.rst,sha256=7ODOGLMD-pk4sqqbXT2EEvsJ-rafrnQz4Xwe3WeD9Xk,386
20
+ odoo/addons/delivery_multi_destination/readme/CONTRIBUTORS.rst,sha256=qYFJW8WItTLugT9t5wMcw4A9AVUrCAI5UPrKlwaNJnc,209
21
+ odoo/addons/delivery_multi_destination/readme/DESCRIPTION.rst,sha256=zGE7V1m8-nd6FcVva5rSgmnD1i8gOQoIP_4aMeHKEGE,383
22
+ odoo/addons/delivery_multi_destination/readme/ROADMAP.rst,sha256=mFUYDdJtYvVAOcxbnU3uIEAb5pCfyvKC-FoOFbx_9ko,129
23
+ odoo/addons/delivery_multi_destination/readme/USAGE.rst,sha256=1L4dwqAZ4L8oNQMO90fp64D4_IVf1AEpBGpun6HNFDo,153
24
+ odoo/addons/delivery_multi_destination/readme/newsfragments/540.feature.rst,sha256=HcMNzTYCiVEPVJM7nmzRf6Nl9uSO5iI8QY32tcYmB8o,270
25
+ odoo/addons/delivery_multi_destination/static/description/icon.png,sha256=6xBPJauaFOF0KDHfHgQopSc28kKvxMaeoQFQWZtfZDo,9455
26
+ odoo/addons/delivery_multi_destination/static/description/index.html,sha256=XFmOKNy61Te44Ov8jeGZkQcF__cXPRxTbEZaLuk6lm0,14477
27
+ odoo/addons/delivery_multi_destination/tests/__init__.py,sha256=84QCPauC2-TkXZsq1euuy3oNLYJpiocgsAVkUqpUsLI,112
28
+ odoo/addons/delivery_multi_destination/tests/test_delivery_multi_destination.py,sha256=IX8m8fi6TeH3QiNTQGTPmlFrgmWALqlNTphpzRem8Tk,8149
29
+ odoo/addons/delivery_multi_destination/views/delivery_carrier_view.xml,sha256=EpJXlKQraYrvdjNnXEf28hWladF3ak0vbCyAnpQHPq4,4234
30
+ odoo/addons/delivery_multi_destination/wizards/__init__.py,sha256=WzkF-IFQ_LPMzbez5zfXFInhBYCYOjtu79Jrg7g5-2c,133
31
+ odoo/addons/delivery_multi_destination/wizards/choose_delivery_carrier.py,sha256=X8lmXdG2WYYLat-vHKWsUzJx7MevDzmRH9XREek8PUc,1072
32
+ odoo_addon_delivery_multi_destination-16.0.2.0.0.6.dist-info/METADATA,sha256=JldvZfBNqX3LDsNN3lPKgzGII_ppO6MUv48snsEiPms,4974
33
+ odoo_addon_delivery_multi_destination-16.0.2.0.0.6.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
34
+ odoo_addon_delivery_multi_destination-16.0.2.0.0.6.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
35
+ odoo_addon_delivery_multi_destination-16.0.2.0.0.6.dist-info/RECORD,,
@@ -1,31 +0,0 @@
1
- odoo/addons/delivery_multi_destination/README.rst,sha256=sMlwqkiBtJw4lVcORKR_3j6W2ruYr9yQVnRaS8yrteg,4418
2
- odoo/addons/delivery_multi_destination/__init__.py,sha256=eShEGRadAlxopoLqIQ4-N42FM7MWPSuBe0h_l1cXTPM,87
3
- odoo/addons/delivery_multi_destination/__manifest__.py,sha256=tYybI9qPY1iV-wrh1dMvD93mmPNHQUfeQRGWcjQEuzI,694
4
- odoo/addons/delivery_multi_destination/demo/delivery_carrier_demo.xml,sha256=8B4KyxiIkHNsfKVjP5GmInxWHacxOpv4UnhUSI1rg18,3753
5
- odoo/addons/delivery_multi_destination/i18n/cs_CZ.po,sha256=Gy90AL5-iA9bSzCVk_x83-uC14HTtNy-6cet7lVxOJc,5186
6
- odoo/addons/delivery_multi_destination/i18n/de.po,sha256=YMzrA3CrCYt5WpmDOWnWwHWlLdHTGnBPSPjh8yOlvUA,5059
7
- odoo/addons/delivery_multi_destination/i18n/delivery_multi_destination.pot,sha256=AIP8TaInXZ__vkMXmR6nNG4NIYy-mEdKqRp9HHTb49U,3201
8
- odoo/addons/delivery_multi_destination/i18n/es.po,sha256=T_PWVcFdRcsyMC9nXH7UdI4N87QS6V38YhLmkXHXkOY,5279
9
- odoo/addons/delivery_multi_destination/i18n/fr.po,sha256=SG4tDQJEr3Sl_Z9agYRo0ynL9XjVobmYSF9zBAh_N-Y,4877
10
- odoo/addons/delivery_multi_destination/i18n/it.po,sha256=Kl8gCNq2ROR_EcuSOrznMJ38x45i1nSMNS4lxGy2mDk,5237
11
- odoo/addons/delivery_multi_destination/i18n/nl.po,sha256=IqNJr-phqOD3N012UyS5i9f3DQfPN3qPDhOA_N-FsXs,4877
12
- odoo/addons/delivery_multi_destination/i18n/nl_NL.po,sha256=fikck4zgmwKf3MYgTh41O2JBUasrtW09Jpl5hQV1dds,4886
13
- odoo/addons/delivery_multi_destination/i18n/pt_BR.po,sha256=dT7k4N1HoMzK8izV-fe6uucF9l8o4mqPadMNXe2aSB8,5443
14
- odoo/addons/delivery_multi_destination/i18n/sl.po,sha256=_3ENaKvSpzNj9YgTcewlKXj3AI9e6Hhc2_iGU6lZO9A,5006
15
- odoo/addons/delivery_multi_destination/i18n/zh_CN.po,sha256=H-BZaqv1GF2iSJJ-TIhB2dLKGztd3w05XJwvPNSRYpI,5042
16
- odoo/addons/delivery_multi_destination/models/__init__.py,sha256=-K4wh1XVA03SZzTTycr_kcgawLtJanP54sq4kwHL5eA,97
17
- odoo/addons/delivery_multi_destination/models/delivery_carrier.py,sha256=qqzYBc9UdP6gJOK7VS558tU_B1IPQOWVbZnT5jyOsnk,5152
18
- odoo/addons/delivery_multi_destination/readme/CONFIGURE.rst,sha256=7ODOGLMD-pk4sqqbXT2EEvsJ-rafrnQz4Xwe3WeD9Xk,386
19
- odoo/addons/delivery_multi_destination/readme/CONTRIBUTORS.rst,sha256=qYFJW8WItTLugT9t5wMcw4A9AVUrCAI5UPrKlwaNJnc,209
20
- odoo/addons/delivery_multi_destination/readme/DESCRIPTION.rst,sha256=zGE7V1m8-nd6FcVva5rSgmnD1i8gOQoIP_4aMeHKEGE,383
21
- odoo/addons/delivery_multi_destination/readme/ROADMAP.rst,sha256=mFUYDdJtYvVAOcxbnU3uIEAb5pCfyvKC-FoOFbx_9ko,129
22
- odoo/addons/delivery_multi_destination/readme/USAGE.rst,sha256=1L4dwqAZ4L8oNQMO90fp64D4_IVf1AEpBGpun6HNFDo,153
23
- odoo/addons/delivery_multi_destination/static/description/icon.png,sha256=6xBPJauaFOF0KDHfHgQopSc28kKvxMaeoQFQWZtfZDo,9455
24
- odoo/addons/delivery_multi_destination/static/description/index.html,sha256=Qs23K8Y5fa4jeemDTH5IJjFDcHSqZNwxbWvkdigOzuE,14477
25
- odoo/addons/delivery_multi_destination/tests/__init__.py,sha256=84QCPauC2-TkXZsq1euuy3oNLYJpiocgsAVkUqpUsLI,112
26
- odoo/addons/delivery_multi_destination/tests/test_delivery_multi_destination.py,sha256=kMvXo_By6mpnymJuqFowUR9jEK5AD-env4MYD08fnWw,7428
27
- odoo/addons/delivery_multi_destination/views/delivery_carrier_view.xml,sha256=EpJXlKQraYrvdjNnXEf28hWladF3ak0vbCyAnpQHPq4,4234
28
- odoo_addon_delivery_multi_destination-16.0.1.0.1.dist-info/METADATA,sha256=qG7W7UWNKjZGV7UMMUy0s1uZB0McyKy0m4_q7-KnRa8,4972
29
- odoo_addon_delivery_multi_destination-16.0.1.0.1.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
30
- odoo_addon_delivery_multi_destination-16.0.1.0.1.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
31
- odoo_addon_delivery_multi_destination-16.0.1.0.1.dist-info/RECORD,,