odoo-addon-stock-request 15.0.1.7.1__py3-none-any.whl → 15.0.1.8.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.
- odoo/addons/stock_request/README.rst +1 -1
- odoo/addons/stock_request/__manifest__.py +1 -1
- odoo/addons/stock_request/i18n/ca.po +7 -0
- odoo/addons/stock_request/i18n/de.po +7 -0
- odoo/addons/stock_request/i18n/el_GR.po +7 -0
- odoo/addons/stock_request/i18n/es.po +7 -0
- odoo/addons/stock_request/i18n/es_ES.po +7 -0
- odoo/addons/stock_request/i18n/eu.po +7 -0
- odoo/addons/stock_request/i18n/fi.po +7 -0
- odoo/addons/stock_request/i18n/fr.po +7 -0
- odoo/addons/stock_request/i18n/fr_CH.po +7 -0
- odoo/addons/stock_request/i18n/fr_FR.po +7 -0
- odoo/addons/stock_request/i18n/gl.po +7 -0
- odoo/addons/stock_request/i18n/hr.po +7 -0
- odoo/addons/stock_request/i18n/hr_HR.po +7 -0
- odoo/addons/stock_request/i18n/it.po +7 -0
- odoo/addons/stock_request/i18n/ja.po +7 -0
- odoo/addons/stock_request/i18n/ja_JP.po +7 -0
- odoo/addons/stock_request/i18n/nl.po +7 -0
- odoo/addons/stock_request/i18n/nl_NL.po +7 -0
- odoo/addons/stock_request/i18n/pt.po +7 -0
- odoo/addons/stock_request/i18n/pt_BR.po +7 -0
- odoo/addons/stock_request/i18n/ro.po +7 -0
- odoo/addons/stock_request/i18n/ru.po +7 -0
- odoo/addons/stock_request/i18n/sl.po +7 -0
- odoo/addons/stock_request/i18n/stock_request.pot +7 -0
- odoo/addons/stock_request/i18n/tr.po +7 -0
- odoo/addons/stock_request/i18n/tr_TR.po +7 -0
- odoo/addons/stock_request/i18n/vi_VN.po +7 -0
- odoo/addons/stock_request/i18n/zh_CN.po +7 -0
- odoo/addons/stock_request/models/stock_request_order.py +77 -0
- odoo/addons/stock_request/static/description/index.html +1 -1
- odoo/addons/stock_request/tests/test_stock_request.py +185 -0
- odoo/addons/stock_request/views/stock_request_order_views.xml +6 -0
- {odoo_addon_stock_request-15.0.1.7.1.dist-info → odoo_addon_stock_request-15.0.1.8.0.1.dist-info}/METADATA +2 -2
- {odoo_addon_stock_request-15.0.1.7.1.dist-info → odoo_addon_stock_request-15.0.1.8.0.1.dist-info}/RECORD +38 -38
- {odoo_addon_stock_request-15.0.1.7.1.dist-info → odoo_addon_stock_request-15.0.1.8.0.1.dist-info}/WHEEL +0 -0
- {odoo_addon_stock_request-15.0.1.7.1.dist-info → odoo_addon_stock_request-15.0.1.8.0.1.dist-info}/top_level.txt +0 -0
@@ -757,6 +757,7 @@ msgstr ""
|
|
757
757
|
#. module: stock_request
|
758
758
|
#: model:ir.model.fields,field_description:stock_request.field_stock_request__route_id
|
759
759
|
#: model:ir.model.fields,field_description:stock_request.field_stock_request_abstract__route_id
|
760
|
+
#: model:ir.model.fields,field_description:stock_request.field_stock_request_order__route_id
|
760
761
|
#: model_terms:ir.ui.view,arch_db:stock_request.stock_request_search
|
761
762
|
msgid "Route"
|
762
763
|
msgstr ""
|
@@ -764,6 +765,7 @@ msgstr ""
|
|
764
765
|
#. module: stock_request
|
765
766
|
#: model:ir.model.fields,field_description:stock_request.field_stock_request__route_ids
|
766
767
|
#: model:ir.model.fields,field_description:stock_request.field_stock_request_abstract__route_ids
|
768
|
+
#: model:ir.model.fields,field_description:stock_request.field_stock_request_order__route_ids
|
767
769
|
msgid "Routes"
|
768
770
|
msgstr ""
|
769
771
|
|
@@ -972,6 +974,11 @@ msgstr ""
|
|
972
974
|
msgid "The picking policy must be equal to the order"
|
973
975
|
msgstr ""
|
974
976
|
|
977
|
+
#. module: stock_request
|
978
|
+
#: model:ir.model.fields,help:stock_request.field_stock_request_order__route_id
|
979
|
+
msgid "The route related to a stock request order"
|
980
|
+
msgstr ""
|
981
|
+
|
975
982
|
#. module: stock_request
|
976
983
|
#: code:addons/stock_request/models/stock_request_order.py:0
|
977
984
|
#, python-format
|
@@ -752,6 +752,7 @@ msgstr ""
|
|
752
752
|
#. module: stock_request
|
753
753
|
#: model:ir.model.fields,field_description:stock_request.field_stock_request__route_id
|
754
754
|
#: model:ir.model.fields,field_description:stock_request.field_stock_request_abstract__route_id
|
755
|
+
#: model:ir.model.fields,field_description:stock_request.field_stock_request_order__route_id
|
755
756
|
#: model_terms:ir.ui.view,arch_db:stock_request.stock_request_search
|
756
757
|
msgid "Route"
|
757
758
|
msgstr ""
|
@@ -759,6 +760,7 @@ msgstr ""
|
|
759
760
|
#. module: stock_request
|
760
761
|
#: model:ir.model.fields,field_description:stock_request.field_stock_request__route_ids
|
761
762
|
#: model:ir.model.fields,field_description:stock_request.field_stock_request_abstract__route_ids
|
763
|
+
#: model:ir.model.fields,field_description:stock_request.field_stock_request_order__route_ids
|
762
764
|
msgid "Routes"
|
763
765
|
msgstr ""
|
764
766
|
|
@@ -968,6 +970,11 @@ msgstr ""
|
|
968
970
|
msgid "The picking policy must be equal to the order"
|
969
971
|
msgstr ""
|
970
972
|
|
973
|
+
#. module: stock_request
|
974
|
+
#: model:ir.model.fields,help:stock_request.field_stock_request_order__route_id
|
975
|
+
msgid "The route related to a stock request order"
|
976
|
+
msgstr ""
|
977
|
+
|
971
978
|
#. module: stock_request
|
972
979
|
#: code:addons/stock_request/models/stock_request_order.py:0
|
973
980
|
#, python-format
|
@@ -756,6 +756,7 @@ msgstr ""
|
|
756
756
|
#. module: stock_request
|
757
757
|
#: model:ir.model.fields,field_description:stock_request.field_stock_request__route_id
|
758
758
|
#: model:ir.model.fields,field_description:stock_request.field_stock_request_abstract__route_id
|
759
|
+
#: model:ir.model.fields,field_description:stock_request.field_stock_request_order__route_id
|
759
760
|
#: model_terms:ir.ui.view,arch_db:stock_request.stock_request_search
|
760
761
|
msgid "Route"
|
761
762
|
msgstr ""
|
@@ -763,6 +764,7 @@ msgstr ""
|
|
763
764
|
#. module: stock_request
|
764
765
|
#: model:ir.model.fields,field_description:stock_request.field_stock_request__route_ids
|
765
766
|
#: model:ir.model.fields,field_description:stock_request.field_stock_request_abstract__route_ids
|
767
|
+
#: model:ir.model.fields,field_description:stock_request.field_stock_request_order__route_ids
|
766
768
|
msgid "Routes"
|
767
769
|
msgstr ""
|
768
770
|
|
@@ -971,6 +973,11 @@ msgstr ""
|
|
971
973
|
msgid "The picking policy must be equal to the order"
|
972
974
|
msgstr ""
|
973
975
|
|
976
|
+
#. module: stock_request
|
977
|
+
#: model:ir.model.fields,help:stock_request.field_stock_request_order__route_id
|
978
|
+
msgid "The route related to a stock request order"
|
979
|
+
msgstr ""
|
980
|
+
|
974
981
|
#. module: stock_request
|
975
982
|
#: code:addons/stock_request/models/stock_request_order.py:0
|
976
983
|
#, python-format
|
@@ -757,6 +757,7 @@ msgstr ""
|
|
757
757
|
#. module: stock_request
|
758
758
|
#: model:ir.model.fields,field_description:stock_request.field_stock_request__route_id
|
759
759
|
#: model:ir.model.fields,field_description:stock_request.field_stock_request_abstract__route_id
|
760
|
+
#: model:ir.model.fields,field_description:stock_request.field_stock_request_order__route_id
|
760
761
|
#: model_terms:ir.ui.view,arch_db:stock_request.stock_request_search
|
761
762
|
msgid "Route"
|
762
763
|
msgstr ""
|
@@ -764,6 +765,7 @@ msgstr ""
|
|
764
765
|
#. module: stock_request
|
765
766
|
#: model:ir.model.fields,field_description:stock_request.field_stock_request__route_ids
|
766
767
|
#: model:ir.model.fields,field_description:stock_request.field_stock_request_abstract__route_ids
|
768
|
+
#: model:ir.model.fields,field_description:stock_request.field_stock_request_order__route_ids
|
767
769
|
msgid "Routes"
|
768
770
|
msgstr ""
|
769
771
|
|
@@ -972,6 +974,11 @@ msgstr ""
|
|
972
974
|
msgid "The picking policy must be equal to the order"
|
973
975
|
msgstr ""
|
974
976
|
|
977
|
+
#. module: stock_request
|
978
|
+
#: model:ir.model.fields,help:stock_request.field_stock_request_order__route_id
|
979
|
+
msgid "The route related to a stock request order"
|
980
|
+
msgstr ""
|
981
|
+
|
975
982
|
#. module: stock_request
|
976
983
|
#: code:addons/stock_request/models/stock_request_order.py:0
|
977
984
|
#, python-format
|
@@ -757,6 +757,7 @@ msgstr ""
|
|
757
757
|
#. module: stock_request
|
758
758
|
#: model:ir.model.fields,field_description:stock_request.field_stock_request__route_id
|
759
759
|
#: model:ir.model.fields,field_description:stock_request.field_stock_request_abstract__route_id
|
760
|
+
#: model:ir.model.fields,field_description:stock_request.field_stock_request_order__route_id
|
760
761
|
#: model_terms:ir.ui.view,arch_db:stock_request.stock_request_search
|
761
762
|
msgid "Route"
|
762
763
|
msgstr ""
|
@@ -764,6 +765,7 @@ msgstr ""
|
|
764
765
|
#. module: stock_request
|
765
766
|
#: model:ir.model.fields,field_description:stock_request.field_stock_request__route_ids
|
766
767
|
#: model:ir.model.fields,field_description:stock_request.field_stock_request_abstract__route_ids
|
768
|
+
#: model:ir.model.fields,field_description:stock_request.field_stock_request_order__route_ids
|
767
769
|
msgid "Routes"
|
768
770
|
msgstr ""
|
769
771
|
|
@@ -972,6 +974,11 @@ msgstr ""
|
|
972
974
|
msgid "The picking policy must be equal to the order"
|
973
975
|
msgstr ""
|
974
976
|
|
977
|
+
#. module: stock_request
|
978
|
+
#: model:ir.model.fields,help:stock_request.field_stock_request_order__route_id
|
979
|
+
msgid "The route related to a stock request order"
|
980
|
+
msgstr ""
|
981
|
+
|
975
982
|
#. module: stock_request
|
976
983
|
#: code:addons/stock_request/models/stock_request_order.py:0
|
977
984
|
#, python-format
|
@@ -763,6 +763,7 @@ msgstr "责任用户"
|
|
763
763
|
#. module: stock_request
|
764
764
|
#: model:ir.model.fields,field_description:stock_request.field_stock_request__route_id
|
765
765
|
#: model:ir.model.fields,field_description:stock_request.field_stock_request_abstract__route_id
|
766
|
+
#: model:ir.model.fields,field_description:stock_request.field_stock_request_order__route_id
|
766
767
|
#: model_terms:ir.ui.view,arch_db:stock_request.stock_request_search
|
767
768
|
msgid "Route"
|
768
769
|
msgstr "路线"
|
@@ -770,6 +771,7 @@ msgstr "路线"
|
|
770
771
|
#. module: stock_request
|
771
772
|
#: model:ir.model.fields,field_description:stock_request.field_stock_request__route_ids
|
772
773
|
#: model:ir.model.fields,field_description:stock_request.field_stock_request_abstract__route_ids
|
774
|
+
#: model:ir.model.fields,field_description:stock_request.field_stock_request_order__route_ids
|
773
775
|
msgid "Routes"
|
774
776
|
msgstr "路线"
|
775
777
|
|
@@ -983,6 +985,11 @@ msgstr ""
|
|
983
985
|
msgid "The picking policy must be equal to the order"
|
984
986
|
msgstr "拣货策略必须等于订单"
|
985
987
|
|
988
|
+
#. module: stock_request
|
989
|
+
#: model:ir.model.fields,help:stock_request.field_stock_request_order__route_id
|
990
|
+
msgid "The route related to a stock request order"
|
991
|
+
msgstr ""
|
992
|
+
|
986
993
|
#. module: stock_request
|
987
994
|
#: code:addons/stock_request/models/stock_request_order.py:0
|
988
995
|
#, python-format
|
@@ -139,10 +139,87 @@ class StockRequestOrder(models.Model):
|
|
139
139
|
string="Stock requests", compute="_compute_stock_request_count", readonly=True
|
140
140
|
)
|
141
141
|
|
142
|
+
route_ids = fields.Many2many(
|
143
|
+
"stock.location.route",
|
144
|
+
string="Routes",
|
145
|
+
compute="_compute_route_ids",
|
146
|
+
readonly=True,
|
147
|
+
)
|
148
|
+
|
149
|
+
route_id = fields.Many2one(
|
150
|
+
"stock.location.route",
|
151
|
+
compute="_compute_route_id",
|
152
|
+
inverse="_inverse_route_id",
|
153
|
+
readonly=True,
|
154
|
+
states={"draft": [("readonly", False)]},
|
155
|
+
store=True,
|
156
|
+
help="The route related to a stock request order",
|
157
|
+
domain="[('id', 'in', route_ids)]",
|
158
|
+
)
|
159
|
+
|
142
160
|
_sql_constraints = [
|
143
161
|
("name_uniq", "unique(name, company_id)", "Stock Request name must be unique")
|
144
162
|
]
|
145
163
|
|
164
|
+
@api.depends("warehouse_id", "location_id", "stock_request_ids")
|
165
|
+
def _compute_route_ids(self):
|
166
|
+
route_obj = self.env["stock.location.route"]
|
167
|
+
routes = route_obj.search(
|
168
|
+
[("warehouse_ids", "in", self.mapped("warehouse_id").ids)]
|
169
|
+
)
|
170
|
+
routes_by_warehouse = {}
|
171
|
+
for route in routes:
|
172
|
+
for warehouse in route.warehouse_ids:
|
173
|
+
routes_by_warehouse.setdefault(
|
174
|
+
warehouse.id, self.env["stock.location.route"]
|
175
|
+
)
|
176
|
+
routes_by_warehouse[warehouse.id] |= route
|
177
|
+
for record in self:
|
178
|
+
routes = route_obj
|
179
|
+
if record.warehouse_id and routes_by_warehouse.get(record.warehouse_id.id):
|
180
|
+
routes |= routes_by_warehouse[record.warehouse_id.id]
|
181
|
+
parents = record.get_parents().ids
|
182
|
+
filtered_routes = routes.filtered(
|
183
|
+
lambda r: any(p.location_id.id in parents for p in r.rule_ids)
|
184
|
+
)
|
185
|
+
if record.stock_request_ids:
|
186
|
+
all_routes = record.stock_request_ids.mapped("route_ids")
|
187
|
+
common_routes = all_routes
|
188
|
+
for line in record.stock_request_ids:
|
189
|
+
common_routes &= line.route_ids
|
190
|
+
final_routes = filtered_routes | common_routes
|
191
|
+
record.route_ids = [(6, 0, final_routes.ids)]
|
192
|
+
else:
|
193
|
+
record.route_ids = [(6, 0, filtered_routes.ids)]
|
194
|
+
|
195
|
+
def get_parents(self):
|
196
|
+
location = self.location_id
|
197
|
+
result = location
|
198
|
+
while location.location_id:
|
199
|
+
location = location.location_id
|
200
|
+
result |= location
|
201
|
+
return result
|
202
|
+
|
203
|
+
@api.depends("stock_request_ids")
|
204
|
+
def _compute_route_id(self):
|
205
|
+
for order in self:
|
206
|
+
if order.stock_request_ids:
|
207
|
+
first_route = order.stock_request_ids[0].route_id or False
|
208
|
+
if any(r.route_id != first_route for r in order.stock_request_ids):
|
209
|
+
first_route = False
|
210
|
+
order.route_id = first_route
|
211
|
+
|
212
|
+
def _inverse_route_id(self):
|
213
|
+
for order in self:
|
214
|
+
if order.route_id:
|
215
|
+
order.stock_request_ids.write({"route_id": order.route_id.id})
|
216
|
+
|
217
|
+
@api.onchange("route_id")
|
218
|
+
def _onchange_route_id(self):
|
219
|
+
if self.route_id:
|
220
|
+
for request in self.stock_request_ids:
|
221
|
+
request.route_id = self.route_id
|
222
|
+
|
146
223
|
@api.depends("stock_request_ids.state")
|
147
224
|
def _compute_state(self):
|
148
225
|
for item in self:
|
@@ -366,7 +366,7 @@ ul.auto-toc {
|
|
366
366
|
!! This file is generated by oca-gen-addon-readme !!
|
367
367
|
!! changes will be overwritten. !!
|
368
368
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
369
|
-
!! source digest: sha256:
|
369
|
+
!! source digest: sha256:9922750ed65a20a1bf7665de38bf99f1a0ff2254a2106a9cc19980733827ded9
|
370
370
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
371
371
|
<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/lgpl-3.0-standalone.html"><img alt="License: LGPL-3" src="https://img.shields.io/badge/licence-LGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/stock-logistics-warehouse/tree/15.0/stock_request"><img alt="OCA/stock-logistics-warehouse" src="https://img.shields.io/badge/github-OCA%2Fstock--logistics--warehouse-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/stock-logistics-warehouse-15-0/stock-logistics-warehouse-15-0-stock_request"><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-warehouse&target_branch=15.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
|
372
372
|
<p>This module was written to allow users to request products that are
|
@@ -77,6 +77,9 @@ class TestStockRequest(common.TransactionCase):
|
|
77
77
|
self.route_2 = self._create_location_route(
|
78
78
|
name="Transfer", company_id=self.company_2.id
|
79
79
|
)
|
80
|
+
self.route_3 = self._create_location_route(
|
81
|
+
name="Transfer", company_id=self.main_company.id
|
82
|
+
)
|
80
83
|
self.uom_dozen = self.env["uom.uom"].create(
|
81
84
|
{
|
82
85
|
"name": "Test-DozenA",
|
@@ -1377,3 +1380,185 @@ class TestStockRequestOrderState(TestStockRequest):
|
|
1377
1380
|
1,
|
1378
1381
|
"Quantity in progress should be the rounded down quantity after confirmation",
|
1379
1382
|
)
|
1383
|
+
|
1384
|
+
def test_route_id_propagation_on_creation(self):
|
1385
|
+
order_vals = {
|
1386
|
+
"company_id": self.main_company.id,
|
1387
|
+
"warehouse_id": self.warehouse.id,
|
1388
|
+
"location_id": self.warehouse.lot_stock_id.id,
|
1389
|
+
"expected_date": fields.Datetime.now(),
|
1390
|
+
"route_id": self.route.id,
|
1391
|
+
"stock_request_ids": [
|
1392
|
+
(
|
1393
|
+
0,
|
1394
|
+
0,
|
1395
|
+
{
|
1396
|
+
"product_id": self.product.id,
|
1397
|
+
"product_uom_id": self.product.uom_id.id,
|
1398
|
+
"product_uom_qty": 5.0,
|
1399
|
+
},
|
1400
|
+
),
|
1401
|
+
(
|
1402
|
+
0,
|
1403
|
+
0,
|
1404
|
+
{
|
1405
|
+
"product_id": self.product.id,
|
1406
|
+
"product_uom_id": self.product.uom_id.id,
|
1407
|
+
"product_uom_qty": 10.0,
|
1408
|
+
},
|
1409
|
+
),
|
1410
|
+
],
|
1411
|
+
}
|
1412
|
+
order = self.request_order.create(order_vals)
|
1413
|
+
self.assertEqual(len(order.stock_request_ids), 2)
|
1414
|
+
order.write({"route_id": self.route_3})
|
1415
|
+
for request in order.stock_request_ids:
|
1416
|
+
self.assertEqual(
|
1417
|
+
request.route_id.id,
|
1418
|
+
order.route_id.id,
|
1419
|
+
"The route_id from stock.request.order has not "
|
1420
|
+
"been set in the associated stock.requests.",
|
1421
|
+
)
|
1422
|
+
|
1423
|
+
def test_compute_route_id_consistency_1(self):
|
1424
|
+
order_vals = {
|
1425
|
+
"company_id": self.main_company.id,
|
1426
|
+
"warehouse_id": self.warehouse.id,
|
1427
|
+
"location_id": self.warehouse.lot_stock_id.id,
|
1428
|
+
"expected_date": fields.Datetime.now(),
|
1429
|
+
"stock_request_ids": [
|
1430
|
+
(
|
1431
|
+
0,
|
1432
|
+
0,
|
1433
|
+
{
|
1434
|
+
"product_id": self.product.id,
|
1435
|
+
"product_uom_id": self.product.uom_id.id,
|
1436
|
+
"product_uom_qty": 5.0,
|
1437
|
+
"route_id": self.route.id,
|
1438
|
+
},
|
1439
|
+
),
|
1440
|
+
(
|
1441
|
+
0,
|
1442
|
+
0,
|
1443
|
+
{
|
1444
|
+
"product_id": self.product.id,
|
1445
|
+
"product_uom_id": self.product.uom_id.id,
|
1446
|
+
"product_uom_qty": 10.0,
|
1447
|
+
"route_id": self.route_3.id,
|
1448
|
+
},
|
1449
|
+
),
|
1450
|
+
],
|
1451
|
+
}
|
1452
|
+
order = self.request_order.create(order_vals)
|
1453
|
+
order._compute_route_id()
|
1454
|
+
self.assertFalse(
|
1455
|
+
order.route_id,
|
1456
|
+
"Route ID should be False due to inconsistent routes in stock requests.",
|
1457
|
+
)
|
1458
|
+
|
1459
|
+
def test_compute_route_id_consistency_2(self):
|
1460
|
+
order_vals = {
|
1461
|
+
"company_id": self.main_company.id,
|
1462
|
+
"warehouse_id": self.warehouse.id,
|
1463
|
+
"location_id": self.warehouse.lot_stock_id.id,
|
1464
|
+
"expected_date": fields.Datetime.now(),
|
1465
|
+
"stock_request_ids": [
|
1466
|
+
(
|
1467
|
+
0,
|
1468
|
+
0,
|
1469
|
+
{
|
1470
|
+
"product_id": self.product.id,
|
1471
|
+
"product_uom_id": self.product.uom_id.id,
|
1472
|
+
"product_uom_qty": 5.0,
|
1473
|
+
"route_id": self.route.id,
|
1474
|
+
},
|
1475
|
+
),
|
1476
|
+
(
|
1477
|
+
0,
|
1478
|
+
0,
|
1479
|
+
{
|
1480
|
+
"product_id": self.product.id,
|
1481
|
+
"product_uom_id": self.product.uom_id.id,
|
1482
|
+
"product_uom_qty": 10.0,
|
1483
|
+
"route_id": self.route.id,
|
1484
|
+
},
|
1485
|
+
),
|
1486
|
+
],
|
1487
|
+
}
|
1488
|
+
order = self.request_order.create(order_vals)
|
1489
|
+
order._compute_route_id()
|
1490
|
+
self.assertEqual(order.route_id, self.route)
|
1491
|
+
|
1492
|
+
def test_inverse_route_id_propagation(self):
|
1493
|
+
order_vals = {
|
1494
|
+
"company_id": self.main_company.id,
|
1495
|
+
"warehouse_id": self.warehouse.id,
|
1496
|
+
"location_id": self.warehouse.lot_stock_id.id,
|
1497
|
+
"expected_date": fields.Datetime.now(),
|
1498
|
+
"stock_request_ids": [
|
1499
|
+
(
|
1500
|
+
0,
|
1501
|
+
0,
|
1502
|
+
{
|
1503
|
+
"product_id": self.product.id,
|
1504
|
+
"product_uom_id": self.product.uom_id.id,
|
1505
|
+
"product_uom_qty": 5.0,
|
1506
|
+
},
|
1507
|
+
),
|
1508
|
+
(
|
1509
|
+
0,
|
1510
|
+
0,
|
1511
|
+
{
|
1512
|
+
"product_id": self.product.id,
|
1513
|
+
"product_uom_id": self.product.uom_id.id,
|
1514
|
+
"product_uom_qty": 10.0,
|
1515
|
+
},
|
1516
|
+
),
|
1517
|
+
],
|
1518
|
+
}
|
1519
|
+
order = self.request_order.create(order_vals)
|
1520
|
+
order.route_id = self.route.id
|
1521
|
+
order._inverse_route_id()
|
1522
|
+
for request in order.stock_request_ids:
|
1523
|
+
self.assertEqual(
|
1524
|
+
request.route_id.id,
|
1525
|
+
self.route.id,
|
1526
|
+
"Route ID should propagate to all stock requests.",
|
1527
|
+
)
|
1528
|
+
|
1529
|
+
def test_onchange_route_id_propagation(self):
|
1530
|
+
order_vals = {
|
1531
|
+
"company_id": self.main_company.id,
|
1532
|
+
"warehouse_id": self.warehouse.id,
|
1533
|
+
"location_id": self.warehouse.lot_stock_id.id,
|
1534
|
+
"expected_date": fields.Datetime.now(),
|
1535
|
+
"stock_request_ids": [
|
1536
|
+
(
|
1537
|
+
0,
|
1538
|
+
0,
|
1539
|
+
{
|
1540
|
+
"product_id": self.product.id,
|
1541
|
+
"product_uom_id": self.product.uom_id.id,
|
1542
|
+
"product_uom_qty": 5.0,
|
1543
|
+
},
|
1544
|
+
),
|
1545
|
+
(
|
1546
|
+
0,
|
1547
|
+
0,
|
1548
|
+
{
|
1549
|
+
"product_id": self.product.id,
|
1550
|
+
"product_uom_id": self.product.uom_id.id,
|
1551
|
+
"product_uom_qty": 10.0,
|
1552
|
+
},
|
1553
|
+
),
|
1554
|
+
],
|
1555
|
+
}
|
1556
|
+
order = self.request_order.create(order_vals)
|
1557
|
+
order.route_id = self.route.id
|
1558
|
+
order._onchange_route_id()
|
1559
|
+
for request in order.stock_request_ids:
|
1560
|
+
self.assertEqual(
|
1561
|
+
request.route_id.id,
|
1562
|
+
self.route.id,
|
1563
|
+
"Route ID should update on all stock requests on onchange.",
|
1564
|
+
)
|
@@ -91,6 +91,11 @@
|
|
91
91
|
name="location_id"
|
92
92
|
groups="stock.group_stock_multi_locations"
|
93
93
|
/>
|
94
|
+
<field name="route_ids" invisible="1" />
|
95
|
+
<field
|
96
|
+
name="route_id"
|
97
|
+
groups="stock.group_stock_multi_locations"
|
98
|
+
/>
|
94
99
|
<field name="allow_virtual_location" invisible="1" />
|
95
100
|
<field
|
96
101
|
name="procurement_group_id"
|
@@ -115,6 +120,7 @@
|
|
115
120
|
'default_procurement_group_id': procurement_group_id,
|
116
121
|
'default_company_id': company_id,
|
117
122
|
'default_state': state,
|
123
|
+
'default_route_id': route_id,
|
118
124
|
}"
|
119
125
|
attrs="{'readonly': [('state', '!=', 'draft')]}"
|
120
126
|
>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: odoo-addon-stock-request
|
3
|
-
Version: 15.0.1.
|
3
|
+
Version: 15.0.1.8.0.1
|
4
4
|
Summary: Internal request for stock
|
5
5
|
Home-page: https://github.com/OCA/stock-logistics-warehouse
|
6
6
|
Author: ForgeFlow, Odoo Community Association (OCA)
|
@@ -23,7 +23,7 @@ Stock Request
|
|
23
23
|
!! This file is generated by oca-gen-addon-readme !!
|
24
24
|
!! changes will be overwritten. !!
|
25
25
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
26
|
-
!! source digest: sha256:
|
26
|
+
!! source digest: sha256:9922750ed65a20a1bf7665de38bf99f1a0ff2254a2106a9cc19980733827ded9
|
27
27
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
28
28
|
|
29
29
|
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
|
@@ -1,35 +1,35 @@
|
|
1
|
-
odoo/addons/stock_request/README.rst,sha256=
|
1
|
+
odoo/addons/stock_request/README.rst,sha256=6JHog8hD1gwpvKUj0vx2_uIx4ral1KNfhGOU-M72j5Y,4874
|
2
2
|
odoo/addons/stock_request/__init__.py,sha256=X9EJGOE2GtZbS0G82PtSXmWSZ_R8jEM0rlJTDliQjp4,21
|
3
|
-
odoo/addons/stock_request/__manifest__.py,sha256=
|
3
|
+
odoo/addons/stock_request/__manifest__.py,sha256=7Nyl5gsti_k_yHlVmECqjspC0O86K4jD-8p4XKMNStg,951
|
4
4
|
odoo/addons/stock_request/data/stock_request_sequence_data.xml,sha256=MKvzK__cH1gecmyqWK6Vj7yJ0o1-oKbqy2ydNoTUhs0,683
|
5
|
-
odoo/addons/stock_request/i18n/ca.po,sha256=
|
6
|
-
odoo/addons/stock_request/i18n/de.po,sha256=
|
7
|
-
odoo/addons/stock_request/i18n/el_GR.po,sha256=
|
8
|
-
odoo/addons/stock_request/i18n/es.po,sha256=
|
9
|
-
odoo/addons/stock_request/i18n/es_ES.po,sha256=
|
10
|
-
odoo/addons/stock_request/i18n/eu.po,sha256=
|
11
|
-
odoo/addons/stock_request/i18n/fi.po,sha256=
|
12
|
-
odoo/addons/stock_request/i18n/fr.po,sha256=
|
13
|
-
odoo/addons/stock_request/i18n/fr_CH.po,sha256=
|
14
|
-
odoo/addons/stock_request/i18n/fr_FR.po,sha256=
|
15
|
-
odoo/addons/stock_request/i18n/gl.po,sha256=
|
16
|
-
odoo/addons/stock_request/i18n/hr.po,sha256=
|
17
|
-
odoo/addons/stock_request/i18n/hr_HR.po,sha256=
|
18
|
-
odoo/addons/stock_request/i18n/it.po,sha256=
|
19
|
-
odoo/addons/stock_request/i18n/ja.po,sha256=
|
20
|
-
odoo/addons/stock_request/i18n/ja_JP.po,sha256=
|
21
|
-
odoo/addons/stock_request/i18n/nl.po,sha256=
|
22
|
-
odoo/addons/stock_request/i18n/nl_NL.po,sha256=
|
23
|
-
odoo/addons/stock_request/i18n/pt.po,sha256=
|
24
|
-
odoo/addons/stock_request/i18n/pt_BR.po,sha256=
|
25
|
-
odoo/addons/stock_request/i18n/ro.po,sha256=
|
26
|
-
odoo/addons/stock_request/i18n/ru.po,sha256=
|
27
|
-
odoo/addons/stock_request/i18n/sl.po,sha256=
|
28
|
-
odoo/addons/stock_request/i18n/stock_request.pot,sha256=
|
29
|
-
odoo/addons/stock_request/i18n/tr.po,sha256=
|
30
|
-
odoo/addons/stock_request/i18n/tr_TR.po,sha256=
|
31
|
-
odoo/addons/stock_request/i18n/vi_VN.po,sha256=
|
32
|
-
odoo/addons/stock_request/i18n/zh_CN.po,sha256=
|
5
|
+
odoo/addons/stock_request/i18n/ca.po,sha256=xaIpl-ssQ_68GPgUCfeZ4Qpl6G595gopvbhcNworDcE,45732
|
6
|
+
odoo/addons/stock_request/i18n/de.po,sha256=1JhIiiKWVlqlU4mc4vEtbflIBjOKHEdW5drsXsSuu3Y,50700
|
7
|
+
odoo/addons/stock_request/i18n/el_GR.po,sha256=EsWo6LpaO-DJxY53frA_OesRhCq9hUg6Qdip-2ra7SE,45752
|
8
|
+
odoo/addons/stock_request/i18n/es.po,sha256=4ElTfLcU2GGjEnrihhSXfoMbtS3bMVG6ksRVRr7Kabw,52567
|
9
|
+
odoo/addons/stock_request/i18n/es_ES.po,sha256=WlUc5QgvTtL16qfh3QO4SzjYh4KWyrzRtdQQgKbAKOY,45749
|
10
|
+
odoo/addons/stock_request/i18n/eu.po,sha256=0dzcBcRW5geP04tm5aOomGT_pSArxM-3OYCSyYyWdu4,45732
|
11
|
+
odoo/addons/stock_request/i18n/fi.po,sha256=_erJawuAJmzm0HGxKUd1_4XTeQy_A0MvCl5Kq6fC-aM,45729
|
12
|
+
odoo/addons/stock_request/i18n/fr.po,sha256=7LT5ik78nnWRFWJcuKzEpkCcSMiXbgNVKPrPhABOSAQ,45729
|
13
|
+
odoo/addons/stock_request/i18n/fr_CH.po,sha256=cCWbCVr-1q8heN3RegbA6zCXtcA8NEzoTgl7DblLdu0,45752
|
14
|
+
odoo/addons/stock_request/i18n/fr_FR.po,sha256=Uml2dXpeOisKTfJdPmhnG0dLb2dHIoj5oC4FLublGVw,45747
|
15
|
+
odoo/addons/stock_request/i18n/gl.po,sha256=BLHl9_BRozjTr2Ep9kjhhbk3PvlRddLo0fXFAwxkWjY,45732
|
16
|
+
odoo/addons/stock_request/i18n/hr.po,sha256=Z6TQl0uxL7R0l_xfZfarCPml5gIGDg-b2ZcA0vJ5q3Y,45808
|
17
|
+
odoo/addons/stock_request/i18n/hr_HR.po,sha256=NsH43W4WY3DLPUxPoNyFm2dRBWmf6ZjOW2DrfzeSr_k,45827
|
18
|
+
odoo/addons/stock_request/i18n/it.po,sha256=BQZgeRaOkJduP-BfEmEonohKdIWxfTzczSOTeGREOwk,45732
|
19
|
+
odoo/addons/stock_request/i18n/ja.po,sha256=TKnM_PAHp5YFzO2_eM5ERIhMKIBoZ3yu_-jfraHPMFk,45487
|
20
|
+
odoo/addons/stock_request/i18n/ja_JP.po,sha256=wcCihJWNxt9DT9GC0HdRRSCZzcYN_yxb5p4wet5PSjs,45490
|
21
|
+
odoo/addons/stock_request/i18n/nl.po,sha256=x3DclwQ3SFUFZaCsMS_ChZB7bUbQuxccjyI1KTIay8c,45729
|
22
|
+
odoo/addons/stock_request/i18n/nl_NL.po,sha256=tLBSerHBBpv8RJ8jVhkjDr_vJ6um8xif60L2Gv5Vz0A,45752
|
23
|
+
odoo/addons/stock_request/i18n/pt.po,sha256=RXrrcFclBa0ywuNAU4eym-0coY-FSFMv1a9E9bC_ZaQ,45734
|
24
|
+
odoo/addons/stock_request/i18n/pt_BR.po,sha256=FJgu-oqOpQYuj2qJoDCyzq_1mh0EnRn_VEfb9j_vFt0,45751
|
25
|
+
odoo/addons/stock_request/i18n/ro.po,sha256=BbH3vhKVJJdpDucEsoWEOvy6MMYqJDX33pAeidP8U9Q,45775
|
26
|
+
odoo/addons/stock_request/i18n/ru.po,sha256=xUaZgfkiI4tm4eWfnQMT3VGXmCv_ULImbN8qZr1WuWY,45891
|
27
|
+
odoo/addons/stock_request/i18n/sl.po,sha256=j2vvQAmHrHqzFzHJTIe-yC3TUektcL54jRfTQ8JpudY,45789
|
28
|
+
odoo/addons/stock_request/i18n/stock_request.pot,sha256=vtAibF7GobhG8hOFsidIMc5LVlbYx4HlF3kaigSfknI,45428
|
29
|
+
odoo/addons/stock_request/i18n/tr.po,sha256=givSOpJxSnV9PdVCzu2svJh7vEBpC-o7xdAtQRm_F7E,45729
|
30
|
+
odoo/addons/stock_request/i18n/tr_TR.po,sha256=Sd5MM-2nhJY3eiSm_fb3D9z8pS5Gmz2FhbIV2qJAi3Q,45747
|
31
|
+
odoo/addons/stock_request/i18n/vi_VN.po,sha256=Vf8Y7Iekd2LRYxjrifM9N6uk-szZ0ISwj5mZ2vBoJnE,45752
|
32
|
+
odoo/addons/stock_request/i18n/zh_CN.po,sha256=rnh2ahmesHjW8VQqQIgeaD1-7oJpnMiM4-xBp03pCvc,50817
|
33
33
|
odoo/addons/stock_request/migrations/15.0.1.4.0/noupdate_changes.xml,sha256=dIlyU9LK6MuL7wFd29Te7wONI0J4SSS_y1Wi1JyopOw,524
|
34
34
|
odoo/addons/stock_request/migrations/15.0.1.4.0/post-migration.py,sha256=cYHRFqjoDAT8ZSci0UikmzR3iYa-155OGjXokK2Rsk0,315
|
35
35
|
odoo/addons/stock_request/models/__init__.py,sha256=UectPmFQEw_3FXs6QynT2GyZWQjnDhVdBYIyxrDIVGM,432
|
@@ -44,7 +44,7 @@ odoo/addons/stock_request/models/stock_picking.py,sha256=65XbzhNNeliiaugeI13IxgZ
|
|
44
44
|
odoo/addons/stock_request/models/stock_request.py,sha256=Qh4TZQrcHNZX41vUSW9_AT7lGw5ZtpWiuOVi6KU9xOU,15928
|
45
45
|
odoo/addons/stock_request/models/stock_request_abstract.py,sha256=7IpAbvJB6jYiIn9ynjSphtRCvcdLceENpmSqxWWceKA,9561
|
46
46
|
odoo/addons/stock_request/models/stock_request_allocation.py,sha256=Kqq6VcZgYSbw2OSooeWgzVLBlWyiVJbR71dyKciPzUg,2927
|
47
|
-
odoo/addons/stock_request/models/stock_request_order.py,sha256=
|
47
|
+
odoo/addons/stock_request/models/stock_request_order.py,sha256=NOgMY0jNV6n2pMsBIrI6GSG-IoLkJlTOtaFJQG_pgpM,15449
|
48
48
|
odoo/addons/stock_request/models/stock_rule.py,sha256=bo-oD3LubsetGtFs7m3OpZxQ1QIPPBP9EoNByDKgisI,1048
|
49
49
|
odoo/addons/stock_request/models/stock_warehouse.py,sha256=yiJG9Yw2A1dBXwi61ehdlRbyD8PnGJqiyfJxxyN8KQQ,1476
|
50
50
|
odoo/addons/stock_request/readme/CONFIGURE.rst,sha256=oWuZKRYFvcvc6abPWiHAKiTqASkPxbsg1j8rP3MIL20,409
|
@@ -56,18 +56,18 @@ odoo/addons/stock_request/security/ir.model.access.csv,sha256=dsUwAR79-qQNVwCZhv
|
|
56
56
|
odoo/addons/stock_request/security/stock_request_security.xml,sha256=VP0gCObFyM2wl0jcsO_J0vt2_jV0BQWtj4UMSqPellA,5978
|
57
57
|
odoo/addons/stock_request/static/description/icon.png,sha256=HZGM_z7Ta3zNQ2924BUiMfDuVSCWqrEwUQMWXBnK7yk,15218
|
58
58
|
odoo/addons/stock_request/static/description/icon.svg,sha256=e3qo4KGYRy7Mfzhb_bCfVA-73Rk2Lx1z9_kz7tTjdO0,9771
|
59
|
-
odoo/addons/stock_request/static/description/index.html,sha256=
|
59
|
+
odoo/addons/stock_request/static/description/index.html,sha256=HK-l-ZdO4aMKYUF6RlagtksV6kOxkSjacHfwp7lGtkg,16015
|
60
60
|
odoo/addons/stock_request/tests/__init__.py,sha256=3NQ2fafGprBbsMjR2Y__yzyvFX5Vio1r0j6tT3FTbas,33
|
61
|
-
odoo/addons/stock_request/tests/test_stock_request.py,sha256=
|
61
|
+
odoo/addons/stock_request/tests/test_stock_request.py,sha256=t8yCkIWvr1AHU5560QphbnuQCXmlKhECnAw5nR9Y_ZQ,62828
|
62
62
|
odoo/addons/stock_request/views/product.xml,sha256=CJ6RE5uGQLlIMDCPKxw8nhodb_rR3jaj-mF5ozCFUKI,1517
|
63
63
|
odoo/addons/stock_request/views/res_config_settings_views.xml,sha256=-IJlvPYAXkO3P-QOJZlmaJ3yqdfyHdUg_arTvGm5ECo,8513
|
64
64
|
odoo/addons/stock_request/views/stock_move_views.xml,sha256=Z5pNG0WfYz-CTlxgB-rma0BoT08VQDHnm3J_Ksu9BxA,1072
|
65
65
|
odoo/addons/stock_request/views/stock_picking_views.xml,sha256=l0YKqO46QFDdiBoSzOoU7PBrLnNkFxPIHFbBcPWXTVk,1036
|
66
66
|
odoo/addons/stock_request/views/stock_request_allocation_views.xml,sha256=NhoVR2RSOx_OuiKP34g5yzc4U0jNHbVwHySZsIF9BOc,2615
|
67
67
|
odoo/addons/stock_request/views/stock_request_menu.xml,sha256=S_3HPkmYcHC_xtPjusHiZX7RUW5CGrJW3w52ScnJFNw,1308
|
68
|
-
odoo/addons/stock_request/views/stock_request_order_views.xml,sha256=
|
68
|
+
odoo/addons/stock_request/views/stock_request_order_views.xml,sha256=YtB8xkt9nxkYN9FexOH1T6e8_FalgQRhA3ZSWMrj1os,10247
|
69
69
|
odoo/addons/stock_request/views/stock_request_views.xml,sha256=k6jts8SJz1WCqaeCod9dHABEC7i3W1fT-zajr-TUWHo,11319
|
70
|
-
odoo_addon_stock_request-15.0.1.
|
71
|
-
odoo_addon_stock_request-15.0.1.
|
72
|
-
odoo_addon_stock_request-15.0.1.
|
73
|
-
odoo_addon_stock_request-15.0.1.
|
70
|
+
odoo_addon_stock_request-15.0.1.8.0.1.dist-info/METADATA,sha256=qhdpAwyDhhD-e-nntFjosc-E-8MSHVwILPvlAoDHQqg,5431
|
71
|
+
odoo_addon_stock_request-15.0.1.8.0.1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
72
|
+
odoo_addon_stock_request-15.0.1.8.0.1.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
|
73
|
+
odoo_addon_stock_request-15.0.1.8.0.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|