odoo-addon-shipment-advice 16.0.1.5.0__py3-none-any.whl → 16.0.1.6.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/shipment_advice/README.rst +2 -1
- odoo/addons/shipment_advice/__manifest__.py +1 -1
- odoo/addons/shipment_advice/i18n/es.po +32 -0
- odoo/addons/shipment_advice/i18n/fr.po +32 -0
- odoo/addons/shipment_advice/i18n/it.po +32 -0
- odoo/addons/shipment_advice/i18n/shipment_advice.pot +32 -0
- odoo/addons/shipment_advice/models/res_company.py +9 -0
- odoo/addons/shipment_advice/models/res_config_settings.py +4 -0
- odoo/addons/shipment_advice/models/shipment_advice.py +29 -5
- odoo/addons/shipment_advice/models/stock_move.py +17 -0
- odoo/addons/shipment_advice/models/stock_picking.py +9 -0
- odoo/addons/shipment_advice/readme/CONTRIBUTORS.rst +1 -0
- odoo/addons/shipment_advice/static/description/index.html +2 -1
- odoo/addons/shipment_advice/tests/__init__.py +2 -0
- odoo/addons/shipment_advice/tests/common.py +50 -16
- odoo/addons/shipment_advice/tests/test_shipment_advice.py +17 -13
- odoo/addons/shipment_advice/tests/test_shipment_advice_async.py +15 -15
- odoo/addons/shipment_advice/tests/test_shipment_advice_auto_close.py +46 -0
- odoo/addons/shipment_advice/tests/test_shipment_advice_load.py +13 -13
- odoo/addons/shipment_advice/tests/test_shipment_advice_picking_values.py +20 -0
- odoo/addons/shipment_advice/tests/test_shipment_advice_plan.py +2 -2
- odoo/addons/shipment_advice/tests/test_shipment_advice_stock_user.py +3 -3
- odoo/addons/shipment_advice/tests/test_shipment_advice_unload.py +8 -8
- odoo/addons/shipment_advice/views/res_config_settings.xml +18 -0
- odoo/addons/shipment_advice/views/shipment_advice.xml +4 -1
- odoo/addons/shipment_advice/views/stock_picking.xml +1 -0
- {odoo_addon_shipment_advice-16.0.1.5.0.dist-info → odoo_addon_shipment_advice-16.0.1.6.0.1.dist-info}/METADATA +6 -5
- {odoo_addon_shipment_advice-16.0.1.5.0.dist-info → odoo_addon_shipment_advice-16.0.1.6.0.1.dist-info}/RECORD +30 -28
- {odoo_addon_shipment_advice-16.0.1.5.0.dist-info → odoo_addon_shipment_advice-16.0.1.6.0.1.dist-info}/WHEEL +1 -1
- {odoo_addon_shipment_advice-16.0.1.5.0.dist-info → odoo_addon_shipment_advice-16.0.1.6.0.1.dist-info}/top_level.txt +0 -0
|
@@ -7,7 +7,7 @@ Shipment Advice
|
|
|
7
7
|
!! This file is generated by oca-gen-addon-readme !!
|
|
8
8
|
!! changes will be overwritten. !!
|
|
9
9
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
10
|
-
!! source digest: sha256:
|
|
10
|
+
!! source digest: sha256:34e6a179b9a0304d4d12e6a1ec5e161d7ad127fec1463f2061c083e562a5f789
|
|
11
11
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
12
12
|
|
|
13
13
|
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
|
|
@@ -61,6 +61,7 @@ Contributors
|
|
|
61
61
|
* Simone Orsi <simahawk@gmail.com>
|
|
62
62
|
* `Trobz <https://trobz.com>`_:
|
|
63
63
|
* Dung Tran <dungtd@trobz.com>
|
|
64
|
+
* Michael Tietz (MT Software) <mtietz@mt-software.de>
|
|
64
65
|
|
|
65
66
|
Design
|
|
66
67
|
~~~~~~
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
{
|
|
5
5
|
"name": "Shipment Advice",
|
|
6
6
|
"summary": "Manage your (un)loading process through shipment advices.",
|
|
7
|
-
"version": "16.0.1.
|
|
7
|
+
"version": "16.0.1.6.0",
|
|
8
8
|
"author": "Camptocamp, Odoo Community Association (OCA)",
|
|
9
9
|
"website": "https://github.com/OCA/stock-logistics-transport",
|
|
10
10
|
"category": "Warehouse Management",
|
|
@@ -1038,6 +1038,12 @@ msgstr ""
|
|
|
1038
1038
|
msgid "Shipment Advice"
|
|
1039
1039
|
msgstr "Aviso de envío"
|
|
1040
1040
|
|
|
1041
|
+
#. module: shipment_advice
|
|
1042
|
+
#: model:ir.model.fields,field_description:shipment_advice.field_res_company__shipment_advice_auto_close_incoming
|
|
1043
|
+
#: model:ir.model.fields,field_description:shipment_advice.field_res_config_settings__shipment_advice_auto_close_incoming
|
|
1044
|
+
msgid "Shipment Advice: Auto Close Incoming Advices"
|
|
1045
|
+
msgstr ""
|
|
1046
|
+
|
|
1041
1047
|
#. module: shipment_advice
|
|
1042
1048
|
#: model:ir.model.fields,field_description:shipment_advice.field_res_company__shipment_advice_outgoing_backorder_policy
|
|
1043
1049
|
#: model:ir.model.fields,field_description:shipment_advice.field_res_config_settings__shipment_advice_outgoing_backorder_policy
|
|
@@ -1138,6 +1144,22 @@ msgstr ""
|
|
|
1138
1144
|
msgid "This Week"
|
|
1139
1145
|
msgstr "Esta semana"
|
|
1140
1146
|
|
|
1147
|
+
#. module: shipment_advice
|
|
1148
|
+
#: model_terms:ir.ui.view,arch_db:shipment_advice.res_config_settings_view_form
|
|
1149
|
+
msgid ""
|
|
1150
|
+
"This flag indicates if an incoming shipment advice\n"
|
|
1151
|
+
" will be automatically set to done\n"
|
|
1152
|
+
" if all related moves are done or canceled"
|
|
1153
|
+
msgstr ""
|
|
1154
|
+
|
|
1155
|
+
#. module: shipment_advice
|
|
1156
|
+
#: model:ir.model.fields,help:shipment_advice.field_res_company__shipment_advice_auto_close_incoming
|
|
1157
|
+
#: model:ir.model.fields,help:shipment_advice.field_res_config_settings__shipment_advice_auto_close_incoming
|
|
1158
|
+
msgid ""
|
|
1159
|
+
"This flag indicates if an incoming shipment advice will be automatically set "
|
|
1160
|
+
"to done if all related moves are done or canceled"
|
|
1161
|
+
msgstr ""
|
|
1162
|
+
|
|
1141
1163
|
#. module: shipment_advice
|
|
1142
1164
|
#. odoo-python
|
|
1143
1165
|
#: code:addons/shipment_advice/models/stock_move_line.py:0
|
|
@@ -1370,6 +1392,11 @@ msgstr ""
|
|
|
1370
1392
|
msgid "Validate"
|
|
1371
1393
|
msgstr "Validar"
|
|
1372
1394
|
|
|
1395
|
+
#. module: shipment_advice
|
|
1396
|
+
#: model:ir.model.fields,field_description:shipment_advice.field_stock_picking__loaded_waiting_quantity
|
|
1397
|
+
msgid "Waiting Quantity"
|
|
1398
|
+
msgstr ""
|
|
1399
|
+
|
|
1373
1400
|
#. module: shipment_advice
|
|
1374
1401
|
#: model:ir.model.fields,field_description:shipment_advice.field_shipment_advice__warehouse_id
|
|
1375
1402
|
#: model_terms:ir.ui.view,arch_db:shipment_advice.shipment_advice_view_search
|
|
@@ -1489,6 +1516,11 @@ msgstr ""
|
|
|
1489
1516
|
"No puedes descargar solo este movimiento, debes descargar todo el contenido "
|
|
1490
1517
|
"del paquete."
|
|
1491
1518
|
|
|
1519
|
+
#. module: shipment_advice
|
|
1520
|
+
#: model_terms:ir.ui.view,arch_db:shipment_advice.res_config_settings_view_form
|
|
1521
|
+
msgid "shipment_advice_auto_close_incoming"
|
|
1522
|
+
msgstr ""
|
|
1523
|
+
|
|
1492
1524
|
#. module: shipment_advice
|
|
1493
1525
|
#: model_terms:ir.ui.view,arch_db:shipment_advice.res_config_settings_view_form
|
|
1494
1526
|
msgid "shipment_advice_run_in_queue_job"
|
|
@@ -1029,6 +1029,12 @@ msgstr ""
|
|
|
1029
1029
|
msgid "Shipment Advice"
|
|
1030
1030
|
msgstr "Note d'envoi"
|
|
1031
1031
|
|
|
1032
|
+
#. module: shipment_advice
|
|
1033
|
+
#: model:ir.model.fields,field_description:shipment_advice.field_res_company__shipment_advice_auto_close_incoming
|
|
1034
|
+
#: model:ir.model.fields,field_description:shipment_advice.field_res_config_settings__shipment_advice_auto_close_incoming
|
|
1035
|
+
msgid "Shipment Advice: Auto Close Incoming Advices"
|
|
1036
|
+
msgstr ""
|
|
1037
|
+
|
|
1032
1038
|
#. module: shipment_advice
|
|
1033
1039
|
#: model:ir.model.fields,field_description:shipment_advice.field_res_company__shipment_advice_outgoing_backorder_policy
|
|
1034
1040
|
#: model:ir.model.fields,field_description:shipment_advice.field_res_config_settings__shipment_advice_outgoing_backorder_policy
|
|
@@ -1128,6 +1134,22 @@ msgstr ""
|
|
|
1128
1134
|
msgid "This Week"
|
|
1129
1135
|
msgstr "Cette semaine"
|
|
1130
1136
|
|
|
1137
|
+
#. module: shipment_advice
|
|
1138
|
+
#: model_terms:ir.ui.view,arch_db:shipment_advice.res_config_settings_view_form
|
|
1139
|
+
msgid ""
|
|
1140
|
+
"This flag indicates if an incoming shipment advice\n"
|
|
1141
|
+
" will be automatically set to done\n"
|
|
1142
|
+
" if all related moves are done or canceled"
|
|
1143
|
+
msgstr ""
|
|
1144
|
+
|
|
1145
|
+
#. module: shipment_advice
|
|
1146
|
+
#: model:ir.model.fields,help:shipment_advice.field_res_company__shipment_advice_auto_close_incoming
|
|
1147
|
+
#: model:ir.model.fields,help:shipment_advice.field_res_config_settings__shipment_advice_auto_close_incoming
|
|
1148
|
+
msgid ""
|
|
1149
|
+
"This flag indicates if an incoming shipment advice will be automatically set "
|
|
1150
|
+
"to done if all related moves are done or canceled"
|
|
1151
|
+
msgstr ""
|
|
1152
|
+
|
|
1131
1153
|
#. module: shipment_advice
|
|
1132
1154
|
#. odoo-python
|
|
1133
1155
|
#: code:addons/shipment_advice/models/stock_move_line.py:0
|
|
@@ -1356,6 +1378,11 @@ msgstr ""
|
|
|
1356
1378
|
msgid "Validate"
|
|
1357
1379
|
msgstr ""
|
|
1358
1380
|
|
|
1381
|
+
#. module: shipment_advice
|
|
1382
|
+
#: model:ir.model.fields,field_description:shipment_advice.field_stock_picking__loaded_waiting_quantity
|
|
1383
|
+
msgid "Waiting Quantity"
|
|
1384
|
+
msgstr ""
|
|
1385
|
+
|
|
1359
1386
|
#. module: shipment_advice
|
|
1360
1387
|
#: model:ir.model.fields,field_description:shipment_advice.field_shipment_advice__warehouse_id
|
|
1361
1388
|
#: model_terms:ir.ui.view,arch_db:shipment_advice.shipment_advice_view_search
|
|
@@ -1465,6 +1492,11 @@ msgstr ""
|
|
|
1465
1492
|
"Vous ne pouvez pas décharger ce mouvement seul, vous devez décharger le "
|
|
1466
1493
|
"contenu du pack entier."
|
|
1467
1494
|
|
|
1495
|
+
#. module: shipment_advice
|
|
1496
|
+
#: model_terms:ir.ui.view,arch_db:shipment_advice.res_config_settings_view_form
|
|
1497
|
+
msgid "shipment_advice_auto_close_incoming"
|
|
1498
|
+
msgstr ""
|
|
1499
|
+
|
|
1468
1500
|
#. module: shipment_advice
|
|
1469
1501
|
#: model_terms:ir.ui.view,arch_db:shipment_advice.res_config_settings_view_form
|
|
1470
1502
|
msgid "shipment_advice_run_in_queue_job"
|
|
@@ -1037,6 +1037,12 @@ msgstr "Esegue l'avviso di spedizione nella coda lavoro"
|
|
|
1037
1037
|
msgid "Shipment Advice"
|
|
1038
1038
|
msgstr "Avviso spedizione"
|
|
1039
1039
|
|
|
1040
|
+
#. module: shipment_advice
|
|
1041
|
+
#: model:ir.model.fields,field_description:shipment_advice.field_res_company__shipment_advice_auto_close_incoming
|
|
1042
|
+
#: model:ir.model.fields,field_description:shipment_advice.field_res_config_settings__shipment_advice_auto_close_incoming
|
|
1043
|
+
msgid "Shipment Advice: Auto Close Incoming Advices"
|
|
1044
|
+
msgstr ""
|
|
1045
|
+
|
|
1040
1046
|
#. module: shipment_advice
|
|
1041
1047
|
#: model:ir.model.fields,field_description:shipment_advice.field_res_company__shipment_advice_outgoing_backorder_policy
|
|
1042
1048
|
#: model:ir.model.fields,field_description:shipment_advice.field_res_config_settings__shipment_advice_outgoing_backorder_policy
|
|
@@ -1135,6 +1141,22 @@ msgstr "L'azienda è impostata automaticamente in base alle preferenze utente."
|
|
|
1135
1141
|
msgid "This Week"
|
|
1136
1142
|
msgstr "Questa settimana"
|
|
1137
1143
|
|
|
1144
|
+
#. module: shipment_advice
|
|
1145
|
+
#: model_terms:ir.ui.view,arch_db:shipment_advice.res_config_settings_view_form
|
|
1146
|
+
msgid ""
|
|
1147
|
+
"This flag indicates if an incoming shipment advice\n"
|
|
1148
|
+
" will be automatically set to done\n"
|
|
1149
|
+
" if all related moves are done or canceled"
|
|
1150
|
+
msgstr ""
|
|
1151
|
+
|
|
1152
|
+
#. module: shipment_advice
|
|
1153
|
+
#: model:ir.model.fields,help:shipment_advice.field_res_company__shipment_advice_auto_close_incoming
|
|
1154
|
+
#: model:ir.model.fields,help:shipment_advice.field_res_config_settings__shipment_advice_auto_close_incoming
|
|
1155
|
+
msgid ""
|
|
1156
|
+
"This flag indicates if an incoming shipment advice will be automatically set "
|
|
1157
|
+
"to done if all related moves are done or canceled"
|
|
1158
|
+
msgstr ""
|
|
1159
|
+
|
|
1138
1160
|
#. module: shipment_advice
|
|
1139
1161
|
#. odoo-python
|
|
1140
1162
|
#: code:addons/shipment_advice/models/stock_move_line.py:0
|
|
@@ -1375,6 +1397,11 @@ msgstr ""
|
|
|
1375
1397
|
msgid "Validate"
|
|
1376
1398
|
msgstr "Valida"
|
|
1377
1399
|
|
|
1400
|
+
#. module: shipment_advice
|
|
1401
|
+
#: model:ir.model.fields,field_description:shipment_advice.field_stock_picking__loaded_waiting_quantity
|
|
1402
|
+
msgid "Waiting Quantity"
|
|
1403
|
+
msgstr ""
|
|
1404
|
+
|
|
1378
1405
|
#. module: shipment_advice
|
|
1379
1406
|
#: model:ir.model.fields,field_description:shipment_advice.field_shipment_advice__warehouse_id
|
|
1380
1407
|
#: model_terms:ir.ui.view,arch_db:shipment_advice.shipment_advice_view_search
|
|
@@ -1496,6 +1523,11 @@ msgstr ""
|
|
|
1496
1523
|
"Non si può scaricare questa riga da sola, bisogna scaricare l'intero "
|
|
1497
1524
|
"contenuto del collo."
|
|
1498
1525
|
|
|
1526
|
+
#. module: shipment_advice
|
|
1527
|
+
#: model_terms:ir.ui.view,arch_db:shipment_advice.res_config_settings_view_form
|
|
1528
|
+
msgid "shipment_advice_auto_close_incoming"
|
|
1529
|
+
msgstr ""
|
|
1530
|
+
|
|
1499
1531
|
#. module: shipment_advice
|
|
1500
1532
|
#: model_terms:ir.ui.view,arch_db:shipment_advice.res_config_settings_view_form
|
|
1501
1533
|
msgid "shipment_advice_run_in_queue_job"
|
|
@@ -973,6 +973,12 @@ msgstr ""
|
|
|
973
973
|
msgid "Shipment Advice"
|
|
974
974
|
msgstr ""
|
|
975
975
|
|
|
976
|
+
#. module: shipment_advice
|
|
977
|
+
#: model:ir.model.fields,field_description:shipment_advice.field_res_company__shipment_advice_auto_close_incoming
|
|
978
|
+
#: model:ir.model.fields,field_description:shipment_advice.field_res_config_settings__shipment_advice_auto_close_incoming
|
|
979
|
+
msgid "Shipment Advice: Auto Close Incoming Advices"
|
|
980
|
+
msgstr ""
|
|
981
|
+
|
|
976
982
|
#. module: shipment_advice
|
|
977
983
|
#: model:ir.model.fields,field_description:shipment_advice.field_res_company__shipment_advice_outgoing_backorder_policy
|
|
978
984
|
#: model:ir.model.fields,field_description:shipment_advice.field_res_config_settings__shipment_advice_outgoing_backorder_policy
|
|
@@ -1068,6 +1074,22 @@ msgstr ""
|
|
|
1068
1074
|
msgid "This Week"
|
|
1069
1075
|
msgstr ""
|
|
1070
1076
|
|
|
1077
|
+
#. module: shipment_advice
|
|
1078
|
+
#: model_terms:ir.ui.view,arch_db:shipment_advice.res_config_settings_view_form
|
|
1079
|
+
msgid ""
|
|
1080
|
+
"This flag indicates if an incoming shipment advice\n"
|
|
1081
|
+
" will be automatically set to done\n"
|
|
1082
|
+
" if all related moves are done or canceled"
|
|
1083
|
+
msgstr ""
|
|
1084
|
+
|
|
1085
|
+
#. module: shipment_advice
|
|
1086
|
+
#: model:ir.model.fields,help:shipment_advice.field_res_company__shipment_advice_auto_close_incoming
|
|
1087
|
+
#: model:ir.model.fields,help:shipment_advice.field_res_config_settings__shipment_advice_auto_close_incoming
|
|
1088
|
+
msgid ""
|
|
1089
|
+
"This flag indicates if an incoming shipment advice will be automatically set"
|
|
1090
|
+
" to done if all related moves are done or canceled"
|
|
1091
|
+
msgstr ""
|
|
1092
|
+
|
|
1071
1093
|
#. module: shipment_advice
|
|
1072
1094
|
#. odoo-python
|
|
1073
1095
|
#: code:addons/shipment_advice/models/stock_move_line.py:0
|
|
@@ -1285,6 +1307,11 @@ msgstr ""
|
|
|
1285
1307
|
msgid "Validate"
|
|
1286
1308
|
msgstr ""
|
|
1287
1309
|
|
|
1310
|
+
#. module: shipment_advice
|
|
1311
|
+
#: model:ir.model.fields,field_description:shipment_advice.field_stock_picking__loaded_waiting_quantity
|
|
1312
|
+
msgid "Waiting Quantity"
|
|
1313
|
+
msgstr ""
|
|
1314
|
+
|
|
1288
1315
|
#. module: shipment_advice
|
|
1289
1316
|
#: model:ir.model.fields,field_description:shipment_advice.field_shipment_advice__warehouse_id
|
|
1290
1317
|
#: model_terms:ir.ui.view,arch_db:shipment_advice.shipment_advice_view_search
|
|
@@ -1388,6 +1415,11 @@ msgid ""
|
|
|
1388
1415
|
" content."
|
|
1389
1416
|
msgstr ""
|
|
1390
1417
|
|
|
1418
|
+
#. module: shipment_advice
|
|
1419
|
+
#: model_terms:ir.ui.view,arch_db:shipment_advice.res_config_settings_view_form
|
|
1420
|
+
msgid "shipment_advice_auto_close_incoming"
|
|
1421
|
+
msgstr ""
|
|
1422
|
+
|
|
1391
1423
|
#. module: shipment_advice
|
|
1392
1424
|
#: model_terms:ir.ui.view,arch_db:shipment_advice.res_config_settings_view_form
|
|
1393
1425
|
msgid "shipment_advice_run_in_queue_job"
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# Copyright 2021 Camptocamp SA
|
|
2
|
+
# Copyright 2024 Michael Tietz (MT Software) <mtietz@mt-software.de>
|
|
2
3
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
|
3
4
|
|
|
4
5
|
from odoo import fields, models
|
|
@@ -29,3 +30,11 @@ class ResCompany(models.Model):
|
|
|
29
30
|
"shipment advice validation through a queued jobs. Each picking will be "
|
|
30
31
|
"validated in a separate job.",
|
|
31
32
|
)
|
|
33
|
+
shipment_advice_auto_close_incoming = fields.Boolean(
|
|
34
|
+
string="Shipment Advice: Auto Close Incoming Advices",
|
|
35
|
+
help=(
|
|
36
|
+
"This flag indicates if an incoming shipment advice "
|
|
37
|
+
"will be automatically set to done "
|
|
38
|
+
"if all related moves are done or canceled"
|
|
39
|
+
),
|
|
40
|
+
)
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# Copyright 2021 Camptocamp SA
|
|
2
|
+
# Copyright 2024 Michael Tietz (MT Software) <mtietz@mt-software.de>
|
|
2
3
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
|
3
4
|
|
|
4
5
|
from odoo import fields, models
|
|
@@ -13,3 +14,6 @@ class ResConfigSettings(models.TransientModel):
|
|
|
13
14
|
shipment_advice_run_in_queue_job = fields.Boolean(
|
|
14
15
|
related="company_id.shipment_advice_run_in_queue_job", readonly=False
|
|
15
16
|
)
|
|
17
|
+
shipment_advice_auto_close_incoming = fields.Boolean(
|
|
18
|
+
related="company_id.shipment_advice_auto_close_incoming", readonly=False
|
|
19
|
+
)
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# Copyright 2021 Camptocamp SA
|
|
2
|
+
# Copyright 2024 Michael Tietz (MT Software) <mtietz@mt-software.de>
|
|
2
3
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
|
3
4
|
|
|
4
5
|
from odoo import _, api, fields, models
|
|
@@ -58,7 +59,6 @@ class ShipmentAdvice(models.Model):
|
|
|
58
59
|
string="Type",
|
|
59
60
|
default="outgoing",
|
|
60
61
|
required=True,
|
|
61
|
-
states={"draft": [("readonly", False)]},
|
|
62
62
|
readonly=True,
|
|
63
63
|
help="Use incoming to plan receptions, use outgoing for deliveries.",
|
|
64
64
|
)
|
|
@@ -254,7 +254,7 @@ class ShipmentAdvice(models.Model):
|
|
|
254
254
|
|
|
255
255
|
@api.model_create_multi
|
|
256
256
|
def create(self, vals_list):
|
|
257
|
-
defaults = self.default_get(["name"])
|
|
257
|
+
defaults = self.default_get(["name", "shipment_type"])
|
|
258
258
|
outgoing_sequence = self.env.ref(
|
|
259
259
|
"shipment_advice.shipment_advice_outgoing_sequence"
|
|
260
260
|
)
|
|
@@ -263,7 +263,7 @@ class ShipmentAdvice(models.Model):
|
|
|
263
263
|
)
|
|
264
264
|
for vals in vals_list:
|
|
265
265
|
sequence = outgoing_sequence
|
|
266
|
-
if vals["shipment_type"] == "incoming":
|
|
266
|
+
if vals.get("shipment_type", defaults["shipment_type"]) == "incoming":
|
|
267
267
|
sequence = incomig_sequence
|
|
268
268
|
if vals.get("name", "/") == "/" and defaults.get("name", "/") == "/":
|
|
269
269
|
vals["name"] = sequence.next_by_id()
|
|
@@ -314,6 +314,7 @@ class ShipmentAdvice(models.Model):
|
|
|
314
314
|
|
|
315
315
|
def action_done(self):
|
|
316
316
|
self._check_action_done_allowed()
|
|
317
|
+
self = self.with_context(shipment_advice_ignore_auto_close=True)
|
|
317
318
|
for shipment in self:
|
|
318
319
|
shipment._action_done()
|
|
319
320
|
return True
|
|
@@ -417,8 +418,12 @@ class ShipmentAdvice(models.Model):
|
|
|
417
418
|
}
|
|
418
419
|
)
|
|
419
420
|
return
|
|
420
|
-
|
|
421
|
-
|
|
421
|
+
self._close_shipments()
|
|
422
|
+
|
|
423
|
+
def _close_shipments(self):
|
|
424
|
+
for shipment in self:
|
|
425
|
+
if not shipment.departure_date:
|
|
426
|
+
shipment.departure_date = fields.Datetime.now()
|
|
422
427
|
self.write({"state": "done", "error_message": False})
|
|
423
428
|
|
|
424
429
|
@api.model
|
|
@@ -429,6 +434,25 @@ class ShipmentAdvice(models.Model):
|
|
|
429
434
|
error=str(error),
|
|
430
435
|
)
|
|
431
436
|
|
|
437
|
+
def auto_close_incoming_shipment_advices(self):
|
|
438
|
+
"""Set incoming shipment advice to done when all planned moves are processed"""
|
|
439
|
+
if self.env.context.get("shipment_advice_ignore_auto_close"):
|
|
440
|
+
return
|
|
441
|
+
shipment_ids_to_close = []
|
|
442
|
+
for shipment in self:
|
|
443
|
+
if (
|
|
444
|
+
shipment.shipment_type != "incoming"
|
|
445
|
+
or not shipment.company_id.shipment_advice_auto_close_incoming
|
|
446
|
+
or any(
|
|
447
|
+
move.state not in ("cancel", "done")
|
|
448
|
+
for move in shipment.planned_move_ids
|
|
449
|
+
)
|
|
450
|
+
):
|
|
451
|
+
continue
|
|
452
|
+
shipment_ids_to_close.append(shipment.id)
|
|
453
|
+
if shipment_ids_to_close:
|
|
454
|
+
self.browse(shipment_ids_to_close)._close_shipments()
|
|
455
|
+
|
|
432
456
|
def action_cancel(self):
|
|
433
457
|
for shipment in self:
|
|
434
458
|
if shipment.state not in ("confirmed", "in_progress"):
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# Copyright 2021 Camptocamp SA
|
|
2
|
+
# Copyright 2024 Michael Tietz (MT Software) <mtietz@mt-software.de>
|
|
2
3
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
|
3
4
|
|
|
4
5
|
from odoo import fields, models
|
|
@@ -18,3 +19,19 @@ class StockMove(models.Model):
|
|
|
18
19
|
def _plan_in_shipment(self, shipment_advice):
|
|
19
20
|
"""Plan the moves into the given shipment advice."""
|
|
20
21
|
self.shipment_advice_id = shipment_advice
|
|
22
|
+
|
|
23
|
+
def _prepare_merge_moves_distinct_fields(self):
|
|
24
|
+
res = super()._prepare_merge_moves_distinct_fields()
|
|
25
|
+
# Avoid having stock move assign to different shipment merged together
|
|
26
|
+
res.append("shipment_advice_id")
|
|
27
|
+
return res
|
|
28
|
+
|
|
29
|
+
def _action_done(self, cancel_backorder=False):
|
|
30
|
+
res = super()._action_done(cancel_backorder=cancel_backorder)
|
|
31
|
+
res.shipment_advice_id.auto_close_incoming_shipment_advices()
|
|
32
|
+
return res
|
|
33
|
+
|
|
34
|
+
def _action_cancel(self):
|
|
35
|
+
res = super()._action_cancel()
|
|
36
|
+
self.shipment_advice_id.auto_close_incoming_shipment_advices()
|
|
37
|
+
return res
|
|
@@ -68,6 +68,9 @@ class StockPicking(models.Model):
|
|
|
68
68
|
"shipment.advice",
|
|
69
69
|
compute="_compute_loaded_in_shipment",
|
|
70
70
|
)
|
|
71
|
+
loaded_waiting_quantity = fields.Float(
|
|
72
|
+
"Waiting Quantity", compute="_compute_shipment_loaded_progress"
|
|
73
|
+
)
|
|
71
74
|
|
|
72
75
|
@api.depends("move_line_ids.shipment_advice_id")
|
|
73
76
|
def _compute_loaded_in_shipment(self):
|
|
@@ -157,6 +160,12 @@ class StockPicking(models.Model):
|
|
|
157
160
|
picking.loaded_weight_progress = (
|
|
158
161
|
f"{picking.loaded_weight} / {total_weight}"
|
|
159
162
|
)
|
|
163
|
+
waiting_moves = picking.move_ids.filtered(
|
|
164
|
+
lambda ml: ml.state not in ["done", "cancel"]
|
|
165
|
+
)
|
|
166
|
+
picking.loaded_waiting_quantity = sum(
|
|
167
|
+
waiting_moves.mapped("product_qty")
|
|
168
|
+
) - sum(waiting_moves.mapped("reserved_availability"))
|
|
160
169
|
# Overall progress based on the operation type
|
|
161
170
|
if picking.picking_type_id.show_entire_packs:
|
|
162
171
|
picking.loaded_progress_f = picking.loaded_packages_progress_f
|
|
@@ -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:
|
|
370
|
+
!! source digest: sha256:34e6a179b9a0304d4d12e6a1ec5e161d7ad127fec1463f2061c083e562a5f789
|
|
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/stock-logistics-transport/tree/16.0/shipment_advice"><img alt="OCA/stock-logistics-transport" src="https://img.shields.io/badge/github-OCA%2Fstock--logistics--transport-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/stock-logistics-transport-16-0/stock-logistics-transport-16-0-shipment_advice"><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-transport&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>Manage your (un)loading process through shipment advices.</p>
|
|
@@ -409,6 +409,7 @@ If you spotted it first, help us to smash it by providing a detailed and welcome
|
|
|
409
409
|
<li>Simone Orsi <<a class="reference external" href="mailto:simahawk@gmail.com">simahawk@gmail.com</a>></li>
|
|
410
410
|
<li><a class="reference external" href="https://trobz.com">Trobz</a>:
|
|
411
411
|
* Dung Tran <<a class="reference external" href="mailto:dungtd@trobz.com">dungtd@trobz.com</a>></li>
|
|
412
|
+
<li>Michael Tietz (MT Software) <<a class="reference external" href="mailto:mtietz@mt-software.de">mtietz@mt-software.de</a>></li>
|
|
412
413
|
</ul>
|
|
413
414
|
</div>
|
|
414
415
|
<div class="section" id="design">
|
|
@@ -2,5 +2,7 @@ from . import test_shipment_advice
|
|
|
2
2
|
from . import test_shipment_advice_async
|
|
3
3
|
from . import test_shipment_advice_plan
|
|
4
4
|
from . import test_shipment_advice_load
|
|
5
|
+
from . import test_shipment_advice_picking_values
|
|
5
6
|
from . import test_shipment_advice_unload
|
|
6
7
|
from . import test_shipment_advice_stock_user
|
|
8
|
+
from . import test_shipment_advice_auto_close
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
# Copyright 2021 Camptocamp SA
|
|
2
|
+
# Copyright 2024 Michael Tietz (MT Software) <mtietz@mt-software.de>
|
|
2
3
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
|
3
4
|
|
|
4
5
|
from odoo import fields
|
|
5
|
-
from odoo.tests.common import TransactionCase, new_test_user
|
|
6
|
+
from odoo.tests.common import Form, TransactionCase, new_test_user
|
|
6
7
|
|
|
7
8
|
|
|
8
9
|
class Common(TransactionCase):
|
|
@@ -124,30 +125,33 @@ class Common(TransactionCase):
|
|
|
124
125
|
else:
|
|
125
126
|
self.assertIn("IN", shipment_advice.name)
|
|
126
127
|
|
|
127
|
-
|
|
128
|
+
@classmethod
|
|
129
|
+
def confirm_shipment_advice(cls, shipment_advice, arrival_date=None):
|
|
128
130
|
if shipment_advice.state != "draft":
|
|
129
131
|
return
|
|
130
132
|
if arrival_date is None:
|
|
131
133
|
arrival_date = fields.Datetime.now()
|
|
132
134
|
shipment_advice.arrival_date = arrival_date
|
|
133
135
|
shipment_advice.action_confirm()
|
|
134
|
-
self.assertEqual(shipment_advice.state, "confirmed")
|
|
135
136
|
|
|
136
|
-
|
|
137
|
-
|
|
137
|
+
@classmethod
|
|
138
|
+
def progress_shipment_advice(cls, shipment_advice, dock=None):
|
|
139
|
+
cls.confirm_shipment_advice(shipment_advice)
|
|
138
140
|
if shipment_advice.state != "confirmed":
|
|
139
141
|
return
|
|
140
|
-
shipment_advice.dock_id = dock or
|
|
142
|
+
shipment_advice.dock_id = dock or cls.dock
|
|
141
143
|
shipment_advice.action_in_progress()
|
|
142
|
-
self.assertEqual(shipment_advice.state, "in_progress")
|
|
143
144
|
|
|
144
|
-
|
|
145
|
-
|
|
145
|
+
@classmethod
|
|
146
|
+
def cancel_shipment_advice(cls, shipment_advice, dock=None):
|
|
147
|
+
cls.confirm_shipment_advice(shipment_advice)
|
|
148
|
+
if shipment_advice.state != "confirmed":
|
|
149
|
+
return
|
|
146
150
|
shipment_advice.action_cancel()
|
|
147
|
-
self.assertEqual(shipment_advice.state, "cancel")
|
|
148
151
|
|
|
149
|
-
|
|
150
|
-
|
|
152
|
+
@classmethod
|
|
153
|
+
def plan_records_in_shipment(cls, shipment_advice, records, user=None):
|
|
154
|
+
wiz_model = cls.env["wizard.plan.shipment"].with_context(
|
|
151
155
|
active_model=records._name,
|
|
152
156
|
active_ids=records.ids,
|
|
153
157
|
)
|
|
@@ -157,9 +161,22 @@ class Common(TransactionCase):
|
|
|
157
161
|
wiz.action_plan()
|
|
158
162
|
return wiz
|
|
159
163
|
|
|
160
|
-
|
|
164
|
+
@classmethod
|
|
165
|
+
def unplan_records_from_shipment(cls, records, user=None):
|
|
166
|
+
wiz_model = cls.env["wizard.unplan.shipment"].with_context(
|
|
167
|
+
active_model=records._name,
|
|
168
|
+
active_ids=records.ids,
|
|
169
|
+
)
|
|
170
|
+
wiz = wiz_model.create({})
|
|
171
|
+
if user:
|
|
172
|
+
wiz = wiz.with_user(user)
|
|
173
|
+
wiz.action_unplan()
|
|
174
|
+
return wiz
|
|
175
|
+
|
|
176
|
+
@classmethod
|
|
177
|
+
def load_records_in_shipment(cls, shipment_advice, records, user=None):
|
|
161
178
|
"""Load pickings, move lines or package levels in the givent shipment."""
|
|
162
|
-
wiz_model =
|
|
179
|
+
wiz_model = cls.env["wizard.load.shipment"].with_context(
|
|
163
180
|
active_model=records._name,
|
|
164
181
|
active_ids=records.ids,
|
|
165
182
|
)
|
|
@@ -169,12 +186,29 @@ class Common(TransactionCase):
|
|
|
169
186
|
wiz.action_load()
|
|
170
187
|
return wiz
|
|
171
188
|
|
|
172
|
-
|
|
189
|
+
@classmethod
|
|
190
|
+
def unload_records_from_shipment(cls, shipment_advice, records):
|
|
173
191
|
"""Unload pickings, move lines or package levels from the givent shipment."""
|
|
174
|
-
wiz_model =
|
|
192
|
+
wiz_model = cls.env["wizard.unload.shipment"].with_context(
|
|
175
193
|
active_model=records._name,
|
|
176
194
|
active_ids=records.ids,
|
|
177
195
|
)
|
|
178
196
|
wiz = wiz_model.create({})
|
|
179
197
|
wiz.action_unload()
|
|
180
198
|
return wiz
|
|
199
|
+
|
|
200
|
+
@classmethod
|
|
201
|
+
def validate_picking(cls, picking, qty_done=None):
|
|
202
|
+
picking.ensure_one()
|
|
203
|
+
for ml in picking.move_line_ids:
|
|
204
|
+
ml.qty_done = qty_done or ml.reserved_uom_qty
|
|
205
|
+
action_data = picking.button_validate()
|
|
206
|
+
if action_data is True:
|
|
207
|
+
return cls.env["stock.picking"]
|
|
208
|
+
backorder_wizard = Form(
|
|
209
|
+
cls.env["stock.backorder.confirmation"].with_context(
|
|
210
|
+
**action_data["context"]
|
|
211
|
+
)
|
|
212
|
+
).save()
|
|
213
|
+
backorder_wizard.process()
|
|
214
|
+
return cls.env["stock.picking"].search([("backorder_id", "=", picking.id)])
|
|
@@ -24,7 +24,7 @@ class TestShipmentAdvice(Common):
|
|
|
24
24
|
self.shipment_advice_out.action_confirm()
|
|
25
25
|
|
|
26
26
|
def test_shipment_advice_in_progress(self):
|
|
27
|
-
self.
|
|
27
|
+
self.confirm_shipment_advice(self.shipment_advice_out)
|
|
28
28
|
with self.assertRaises(UserError):
|
|
29
29
|
self.shipment_advice_out.action_in_progress()
|
|
30
30
|
self.shipment_advice_out.dock_id = self.dock
|
|
@@ -41,8 +41,8 @@ class TestShipmentAdvice(Common):
|
|
|
41
41
|
with self.assertRaises(UserError):
|
|
42
42
|
self.shipment_advice_in.action_done()
|
|
43
43
|
self._check_sequence(self.shipment_advice_in)
|
|
44
|
-
self.
|
|
45
|
-
self.
|
|
44
|
+
self.plan_records_in_shipment(self.shipment_advice_in, picking)
|
|
45
|
+
self.progress_shipment_advice(self.shipment_advice_in)
|
|
46
46
|
for ml in picking.move_line_ids:
|
|
47
47
|
ml.qty_done = ml.reserved_uom_qty
|
|
48
48
|
picking._action_done()
|
|
@@ -62,8 +62,8 @@ class TestShipmentAdvice(Common):
|
|
|
62
62
|
"""
|
|
63
63
|
picking = self.move_product_in1.picking_id
|
|
64
64
|
# Plan a move
|
|
65
|
-
self.
|
|
66
|
-
self.
|
|
65
|
+
self.plan_records_in_shipment(self.shipment_advice_in, self.move_product_in1)
|
|
66
|
+
self.progress_shipment_advice(self.shipment_advice_in)
|
|
67
67
|
# Receive it (making its related transfer partially received)
|
|
68
68
|
for ml in self.move_product_in1.move_line_ids:
|
|
69
69
|
ml.qty_done = ml.reserved_uom_qty
|
|
@@ -82,8 +82,8 @@ class TestShipmentAdvice(Common):
|
|
|
82
82
|
validate all fully loaded transfers.
|
|
83
83
|
"""
|
|
84
84
|
picking = self.move_product_out1.picking_id
|
|
85
|
-
self.
|
|
86
|
-
self.
|
|
85
|
+
self.progress_shipment_advice(self.shipment_advice_out)
|
|
86
|
+
self.load_records_in_shipment(self.shipment_advice_out, picking)
|
|
87
87
|
self.shipment_advice_out.action_done()
|
|
88
88
|
self.assertEqual(self.shipment_advice_out.state, "done")
|
|
89
89
|
self.assertTrue(
|
|
@@ -103,8 +103,8 @@ class TestShipmentAdvice(Common):
|
|
|
103
103
|
company.shipment_advice_outgoing_backorder_policy = "leave_open"
|
|
104
104
|
# Load a transfer partially (here a package)
|
|
105
105
|
package_level = self.move_product_out2.move_line_ids.package_level_id
|
|
106
|
-
self.
|
|
107
|
-
self.
|
|
106
|
+
self.progress_shipment_advice(self.shipment_advice_out)
|
|
107
|
+
self.load_records_in_shipment(self.shipment_advice_out, package_level)
|
|
108
108
|
# Validate the shipment => the transfer is still open
|
|
109
109
|
self.shipment_advice_out.action_done()
|
|
110
110
|
picking = package_level.picking_id
|
|
@@ -127,8 +127,8 @@ class TestShipmentAdvice(Common):
|
|
|
127
127
|
company.shipment_advice_outgoing_backorder_policy = "create_backorder"
|
|
128
128
|
# Load a transfer partially (here a package)
|
|
129
129
|
package_level = self.move_product_out2.move_line_ids.package_level_id
|
|
130
|
-
self.
|
|
131
|
-
self.
|
|
130
|
+
self.progress_shipment_advice(self.shipment_advice_out)
|
|
131
|
+
self.load_records_in_shipment(self.shipment_advice_out, package_level)
|
|
132
132
|
self.assertEqual(package_level.picking_id, self.move_product_out1.picking_id)
|
|
133
133
|
# Validate the shipment => the transfer is validated, creating a backorder
|
|
134
134
|
self.shipment_advice_out.action_done()
|
|
@@ -148,7 +148,7 @@ class TestShipmentAdvice(Common):
|
|
|
148
148
|
self.assertEqual(picking2.state, "assigned")
|
|
149
149
|
|
|
150
150
|
def test_shipment_advice_cancel(self):
|
|
151
|
-
self.
|
|
151
|
+
self.progress_shipment_advice(self.shipment_advice_out)
|
|
152
152
|
self.shipment_advice_out.action_cancel()
|
|
153
153
|
self.assertEqual(self.shipment_advice_out.state, "cancel")
|
|
154
154
|
|
|
@@ -160,6 +160,10 @@ class TestShipmentAdvice(Common):
|
|
|
160
160
|
def test_shipment_advice_draft(self):
|
|
161
161
|
with self.assertRaises(UserError):
|
|
162
162
|
self.shipment_advice_out.action_draft()
|
|
163
|
-
self.
|
|
163
|
+
self.cancel_shipment_advice(self.shipment_advice_out)
|
|
164
164
|
self.shipment_advice_out.action_draft()
|
|
165
165
|
self.assertEqual(self.shipment_advice_out.state, "draft")
|
|
166
|
+
|
|
167
|
+
def test_shipment_name(self):
|
|
168
|
+
self.assertTrue("OUT" in self.shipment_advice_out.name)
|
|
169
|
+
self.assertTrue("IN" in self.shipment_advice_in.name)
|
|
@@ -50,8 +50,8 @@ class TestShipmentAdvice(Common):
|
|
|
50
50
|
transfers. Here the planned transfers have been fully received.
|
|
51
51
|
"""
|
|
52
52
|
picking = self.move_product_in1.picking_id
|
|
53
|
-
self.
|
|
54
|
-
self.
|
|
53
|
+
self.plan_records_in_shipment(self.shipment_advice_in, picking)
|
|
54
|
+
self.progress_shipment_advice(self.shipment_advice_in)
|
|
55
55
|
for ml in picking.move_line_ids:
|
|
56
56
|
ml.qty_done = ml.reserved_uom_qty
|
|
57
57
|
picking._action_done()
|
|
@@ -79,8 +79,8 @@ class TestShipmentAdvice(Common):
|
|
|
79
79
|
"""
|
|
80
80
|
picking = self.move_product_in1.picking_id
|
|
81
81
|
# Plan a move
|
|
82
|
-
self.
|
|
83
|
-
self.
|
|
82
|
+
self.plan_records_in_shipment(self.shipment_advice_in, self.move_product_in1)
|
|
83
|
+
self.progress_shipment_advice(self.shipment_advice_in)
|
|
84
84
|
# Receive it (making its related transfer partially received)
|
|
85
85
|
for ml in self.move_product_in1.move_line_ids:
|
|
86
86
|
ml.qty_done = ml.reserved_uom_qty
|
|
@@ -107,8 +107,8 @@ class TestShipmentAdvice(Common):
|
|
|
107
107
|
validate all fully loaded transfers.
|
|
108
108
|
"""
|
|
109
109
|
pickings = self.move1.picking_id | self.move2.picking_id | self.move3.picking_id
|
|
110
|
-
self.
|
|
111
|
-
self.
|
|
110
|
+
self.progress_shipment_advice(self.shipment_advice_out)
|
|
111
|
+
self.load_records_in_shipment(self.shipment_advice_out, pickings)
|
|
112
112
|
with trap_jobs() as trap:
|
|
113
113
|
self.shipment_advice_out.action_done()
|
|
114
114
|
trap.assert_jobs_count(5) # 3 pickings + 1 for unplan + 1 for postprocess
|
|
@@ -135,8 +135,8 @@ class TestShipmentAdvice(Common):
|
|
|
135
135
|
company.shipment_advice_outgoing_backorder_policy = "leave_open"
|
|
136
136
|
# Load a transfer partially (here a package)
|
|
137
137
|
package_level = self.move_product_out2.move_line_ids.package_level_id
|
|
138
|
-
self.
|
|
139
|
-
self.
|
|
138
|
+
self.progress_shipment_advice(self.shipment_advice_out)
|
|
139
|
+
self.load_records_in_shipment(self.shipment_advice_out, package_level)
|
|
140
140
|
# Validate the shipment => the transfer is still open
|
|
141
141
|
with trap_jobs() as trap:
|
|
142
142
|
self.shipment_advice_out.action_done()
|
|
@@ -167,8 +167,8 @@ class TestShipmentAdvice(Common):
|
|
|
167
167
|
company.shipment_advice_outgoing_backorder_policy = "create_backorder"
|
|
168
168
|
# Load a transfer partially (here a package)
|
|
169
169
|
package_level = self.move_product_out2.move_line_ids.package_level_id
|
|
170
|
-
self.
|
|
171
|
-
self.
|
|
170
|
+
self.progress_shipment_advice(self.shipment_advice_out)
|
|
171
|
+
self.load_records_in_shipment(self.shipment_advice_out, package_level)
|
|
172
172
|
self.assertEqual(package_level.picking_id, self.move_product_out1.picking_id)
|
|
173
173
|
# Validate the shipment => the transfer is validated, creating a backorder
|
|
174
174
|
with trap_jobs() as trap:
|
|
@@ -202,8 +202,8 @@ class TestShipmentAdvice(Common):
|
|
|
202
202
|
- the shipment advice moves to the "error" state
|
|
203
203
|
"""
|
|
204
204
|
pickings = self.move1.picking_id | self.move2.picking_id | self.move3.picking_id
|
|
205
|
-
self.
|
|
206
|
-
self.
|
|
205
|
+
self.progress_shipment_advice(self.shipment_advice_out)
|
|
206
|
+
self.load_records_in_shipment(self.shipment_advice_out, pickings)
|
|
207
207
|
# provoke validation error by setting internal package as destination
|
|
208
208
|
pickings[0].move_line_ids.result_package_id = self.package
|
|
209
209
|
with trap_jobs() as trap:
|
|
@@ -279,10 +279,10 @@ class TestShipmentAdvice(Common):
|
|
|
279
279
|
# Load a transfer partially (here a package)
|
|
280
280
|
package_level = self.move_product_out2.move_line_ids.package_level_id
|
|
281
281
|
picking = package_level.picking_id
|
|
282
|
-
self.
|
|
283
|
-
self.
|
|
282
|
+
self.progress_shipment_advice(self.shipment_advice_out)
|
|
283
|
+
self.plan_records_in_shipment(self.shipment_advice_out, picking)
|
|
284
284
|
self.assertEqual(len(self.shipment_advice_out.planned_move_ids), 3)
|
|
285
|
-
self.
|
|
285
|
+
self.load_records_in_shipment(self.shipment_advice_out, package_level)
|
|
286
286
|
self.assertEqual(len(package_level.move_line_ids.move_id), 2)
|
|
287
287
|
# Validate the shipment => the transfer is validated, creating a backorder
|
|
288
288
|
with trap_jobs() as trap:
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Copyright 2024 Michael Tietz (MT Software) <mtietz@mt-software.de>
|
|
2
|
+
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
|
3
|
+
|
|
4
|
+
from .common import Common
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class TestShipmentAdviceAutoClose(Common):
|
|
8
|
+
@classmethod
|
|
9
|
+
def setUpClass(cls):
|
|
10
|
+
super().setUpClass()
|
|
11
|
+
cls.shipment_advice_in.company_id.shipment_advice_auto_close_incoming = True
|
|
12
|
+
cls.picking1 = cls.move_product_in1.picking_id
|
|
13
|
+
group = cls.env["procurement.group"].create({})
|
|
14
|
+
cls.move_product_in21 = cls._create_move(
|
|
15
|
+
cls.picking_type_in, cls.product_in, 5, group
|
|
16
|
+
)
|
|
17
|
+
cls.picking2 = cls.move_product_in21.picking_id
|
|
18
|
+
cls.pickings = cls.picking1 | cls.picking2
|
|
19
|
+
cls.plan_records_in_shipment(cls.shipment_advice_in, cls.pickings)
|
|
20
|
+
cls.progress_shipment_advice(cls.shipment_advice_in)
|
|
21
|
+
|
|
22
|
+
def test_auto_close_incoming_on_done(self):
|
|
23
|
+
self.validate_picking(self.picking1)
|
|
24
|
+
self.assertEqual(self.shipment_advice_in.state, "in_progress")
|
|
25
|
+
self.validate_picking(self.picking2)
|
|
26
|
+
self.assertEqual(self.shipment_advice_in.state, "done")
|
|
27
|
+
|
|
28
|
+
def test_auto_close_incoming_on_cancel(self):
|
|
29
|
+
self.validate_picking(self.picking1)
|
|
30
|
+
self.assertEqual(self.shipment_advice_in.state, "in_progress")
|
|
31
|
+
self.picking2.action_cancel()
|
|
32
|
+
self.assertEqual(self.shipment_advice_in.state, "done")
|
|
33
|
+
|
|
34
|
+
def test_no_auto_close_on_outgoing(self):
|
|
35
|
+
picking = self.move_product_out1.picking_id
|
|
36
|
+
self.plan_records_in_shipment(self.shipment_advice_out, picking)
|
|
37
|
+
self.progress_shipment_advice(self.shipment_advice_out)
|
|
38
|
+
self.validate_picking(picking)
|
|
39
|
+
self.assertEqual(picking.state, "done")
|
|
40
|
+
self.assertEqual(self.shipment_advice_out.state, "in_progress")
|
|
41
|
+
|
|
42
|
+
def test_no_auto_close_context(self):
|
|
43
|
+
pickings = self.pickings.with_context(shipment_advice_ignore_auto_close=True)
|
|
44
|
+
for picking in pickings:
|
|
45
|
+
self.validate_picking(picking)
|
|
46
|
+
self.assertEqual(self.shipment_advice_in.state, "in_progress")
|
|
@@ -8,7 +8,7 @@ from .common import Common
|
|
|
8
8
|
|
|
9
9
|
class TestShipmentAdviceLoad(Common):
|
|
10
10
|
def test_shipment_advice_load_picking_not_planned(self):
|
|
11
|
-
self.
|
|
11
|
+
self.progress_shipment_advice(self.shipment_advice_out)
|
|
12
12
|
picking = self.move_product_out1.picking_id
|
|
13
13
|
wiz_model = self.env["wizard.load.shipment"].with_context(
|
|
14
14
|
active_model=picking._name,
|
|
@@ -42,9 +42,9 @@ class TestShipmentAdviceLoad(Common):
|
|
|
42
42
|
|
|
43
43
|
def test_shipment_advice_load_picking_already_planned(self):
|
|
44
44
|
picking = self.move_product_out1.picking_id
|
|
45
|
-
self.
|
|
46
|
-
self.
|
|
47
|
-
wiz = self.
|
|
45
|
+
self.plan_records_in_shipment(self.shipment_advice_out, picking)
|
|
46
|
+
self.progress_shipment_advice(self.shipment_advice_out)
|
|
47
|
+
wiz = self.load_records_in_shipment(self.shipment_advice_out, picking)
|
|
48
48
|
self.assertEqual(wiz.picking_ids, picking)
|
|
49
49
|
self.assertFalse(wiz.move_line_ids)
|
|
50
50
|
# Check planned entries
|
|
@@ -73,7 +73,7 @@ class TestShipmentAdviceLoad(Common):
|
|
|
73
73
|
self.assertEqual(wiz.shipment_advice_id.loaded_package_ids, self.package)
|
|
74
74
|
|
|
75
75
|
def test_shipment_advice_load_move_line_not_planned(self):
|
|
76
|
-
self.
|
|
76
|
+
self.progress_shipment_advice(self.shipment_advice_out)
|
|
77
77
|
move = self.move_product_out1
|
|
78
78
|
wiz_model = self.env["wizard.load.shipment"].with_context(
|
|
79
79
|
active_model=move.move_line_ids._name,
|
|
@@ -101,9 +101,9 @@ class TestShipmentAdviceLoad(Common):
|
|
|
101
101
|
|
|
102
102
|
def test_shipment_advice_load_move_line_already_planned(self):
|
|
103
103
|
move = self.move_product_out1
|
|
104
|
-
self.
|
|
105
|
-
self.
|
|
106
|
-
wiz = self.
|
|
104
|
+
self.plan_records_in_shipment(self.shipment_advice_out, move)
|
|
105
|
+
self.progress_shipment_advice(self.shipment_advice_out)
|
|
106
|
+
wiz = self.load_records_in_shipment(
|
|
107
107
|
self.shipment_advice_out, move.move_line_ids
|
|
108
108
|
)
|
|
109
109
|
self.assertEqual(wiz.move_line_ids, move.move_line_ids)
|
|
@@ -127,8 +127,8 @@ class TestShipmentAdviceLoad(Common):
|
|
|
127
127
|
def test_shipment_advice_load_moves_different_pack(self):
|
|
128
128
|
move = self.move_product_out1
|
|
129
129
|
move_package_ids = self.move_product_out2 + self.move_product_out3
|
|
130
|
-
self.
|
|
131
|
-
self.
|
|
130
|
+
self.plan_records_in_shipment(self.shipment_advice_out, move)
|
|
131
|
+
self.progress_shipment_advice(self.shipment_advice_out)
|
|
132
132
|
wiz_model = self.env["wizard.load.shipment"].with_context(
|
|
133
133
|
active_model=move.move_line_ids._name,
|
|
134
134
|
active_ids=move.move_line_ids.ids + move_package_ids.move_line_ids.ids,
|
|
@@ -140,12 +140,12 @@ class TestShipmentAdviceLoad(Common):
|
|
|
140
140
|
def test_shipment_advice_already_planned_load_move_line_not_planned(self):
|
|
141
141
|
# Plan the first move
|
|
142
142
|
move1 = self.move_product_out1
|
|
143
|
-
self.
|
|
143
|
+
self.plan_records_in_shipment(self.shipment_advice_out, move1)
|
|
144
144
|
# But load something else => error
|
|
145
145
|
package_level = self.move_product_out2.move_line_ids.package_level_id
|
|
146
|
-
self.
|
|
146
|
+
self.progress_shipment_advice(self.shipment_advice_out)
|
|
147
147
|
with self.assertRaisesRegex(UserError, "planned already"):
|
|
148
|
-
self.
|
|
148
|
+
self.load_records_in_shipment(
|
|
149
149
|
self.shipment_advice_out,
|
|
150
150
|
package_level,
|
|
151
151
|
)
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Copyright 2024 Camptocamp SA
|
|
2
|
+
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
|
3
|
+
|
|
4
|
+
from .common import Common
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class TestShipmentPickingValues(Common):
|
|
8
|
+
def test_picking_loaded_waiting_quantity_no(self):
|
|
9
|
+
move = self.move_product_out1
|
|
10
|
+
picking = move.picking_id
|
|
11
|
+
self.load_records_in_shipment(self.shipment_advice_out, picking)
|
|
12
|
+
self.assertEqual(picking.loaded_waiting_quantity, 0)
|
|
13
|
+
|
|
14
|
+
def test_picking_loaded_waiting_quantity_yes(self):
|
|
15
|
+
move = self.move_product_out1
|
|
16
|
+
picking = move.picking_id
|
|
17
|
+
quantity = move.product_qty
|
|
18
|
+
move.move_line_ids.reserved_uom_qty = quantity - 3
|
|
19
|
+
self.load_records_in_shipment(self.shipment_advice_out, picking)
|
|
20
|
+
self.assertEqual(picking.loaded_waiting_quantity, 3)
|
|
@@ -7,7 +7,7 @@ from .common import Common
|
|
|
7
7
|
class TestShipmentAdvicePlan(Common):
|
|
8
8
|
def test_shipment_advice_plan_picking(self):
|
|
9
9
|
picking = self.move_product_out1.picking_id
|
|
10
|
-
wiz = self.
|
|
10
|
+
wiz = self.plan_records_in_shipment(self.shipment_advice_out, picking)
|
|
11
11
|
self.assertEqual(wiz.picking_ids, picking)
|
|
12
12
|
self.assertFalse(wiz.move_ids)
|
|
13
13
|
self.assertEqual(wiz.shipment_advice_id, self.shipment_advice_out)
|
|
@@ -18,7 +18,7 @@ class TestShipmentAdvicePlan(Common):
|
|
|
18
18
|
|
|
19
19
|
def test_shipment_advice_plan_move(self):
|
|
20
20
|
picking = self.move_product_out1.picking_id
|
|
21
|
-
wiz = self.
|
|
21
|
+
wiz = self.plan_records_in_shipment(
|
|
22
22
|
self.shipment_advice_out, self.move_product_out1
|
|
23
23
|
)
|
|
24
24
|
self.assertEqual(wiz.move_ids, self.move_product_out1)
|
|
@@ -80,13 +80,13 @@ class TestShipmentAdviceStockUser(Common):
|
|
|
80
80
|
|
|
81
81
|
def test_wizard_plan_and_load_shipment(self):
|
|
82
82
|
move = self.move_product_out1
|
|
83
|
-
self.
|
|
83
|
+
self.plan_records_in_shipment(
|
|
84
84
|
self.shipment_advice_out,
|
|
85
85
|
move,
|
|
86
86
|
user=self.stock_user,
|
|
87
87
|
)
|
|
88
|
-
self.
|
|
89
|
-
wiz = self.
|
|
88
|
+
self.progress_shipment_advice(self.shipment_advice_out)
|
|
89
|
+
wiz = self.load_records_in_shipment(
|
|
90
90
|
self.shipment_advice_out,
|
|
91
91
|
move.move_line_ids,
|
|
92
92
|
user=self.stock_user,
|
|
@@ -6,10 +6,10 @@ from .common import Common
|
|
|
6
6
|
|
|
7
7
|
class TestShipmentAdviceUnload(Common):
|
|
8
8
|
def test_shipment_advice_unload_picking(self):
|
|
9
|
-
self.
|
|
9
|
+
self.progress_shipment_advice(self.shipment_advice_out)
|
|
10
10
|
# Load picking
|
|
11
11
|
picking = self.move_product_out1.picking_id
|
|
12
|
-
self.
|
|
12
|
+
self.load_records_in_shipment(self.shipment_advice_out, picking)
|
|
13
13
|
self.assertEqual(self.shipment_advice_out.loaded_picking_ids, picking)
|
|
14
14
|
self.assertEqual(
|
|
15
15
|
self.shipment_advice_out.loaded_move_line_ids,
|
|
@@ -18,29 +18,29 @@ class TestShipmentAdviceUnload(Common):
|
|
|
18
18
|
| self.move_product_out3.move_line_ids,
|
|
19
19
|
)
|
|
20
20
|
# Unload it
|
|
21
|
-
self.
|
|
21
|
+
self.unload_records_from_shipment(self.shipment_advice_out, picking)
|
|
22
22
|
self.assertFalse(self.shipment_advice_out.loaded_picking_ids)
|
|
23
23
|
self.assertFalse(self.shipment_advice_out.loaded_move_line_ids)
|
|
24
24
|
|
|
25
25
|
def test_shipment_advice_unload_move_line(self):
|
|
26
|
-
self.
|
|
26
|
+
self.progress_shipment_advice(self.shipment_advice_out)
|
|
27
27
|
# Load move line
|
|
28
28
|
move_line = self.move_product_out1.move_line_ids
|
|
29
|
-
self.
|
|
29
|
+
self.load_records_in_shipment(self.shipment_advice_out, move_line)
|
|
30
30
|
self.assertEqual(move_line.qty_done, 20)
|
|
31
31
|
self.assertEqual(
|
|
32
32
|
self.shipment_advice_out.loaded_move_line_without_package_ids, move_line
|
|
33
33
|
)
|
|
34
34
|
# Unload it
|
|
35
|
-
self.
|
|
35
|
+
self.unload_records_from_shipment(self.shipment_advice_out, move_line)
|
|
36
36
|
self.assertFalse(move_line.qty_done)
|
|
37
37
|
self.assertFalse(self.shipment_advice_out.loaded_move_line_without_package_ids)
|
|
38
38
|
|
|
39
39
|
def test_shipment_advice_unload_package_level(self):
|
|
40
|
-
self.
|
|
40
|
+
self.progress_shipment_advice(self.shipment_advice_out)
|
|
41
41
|
# Load package level
|
|
42
42
|
package_level = self.move_product_out2.move_line_ids.package_level_id
|
|
43
|
-
self.
|
|
43
|
+
self.load_records_in_shipment(self.shipment_advice_out, package_level)
|
|
44
44
|
self.assertTrue(package_level.is_done)
|
|
45
45
|
self.assertEqual(self.move_product_out2.move_line_ids.qty_done, 10)
|
|
46
46
|
self.assertEqual(self.move_product_out3.move_line_ids.qty_done, 10)
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
2
2
|
<!-- Copyright 2021 Camptocamp SA
|
|
3
|
+
Copyright 2024 Michael Tietz (MT Software) <mtietz@mt-software.de>
|
|
3
4
|
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
|
|
4
5
|
<odoo>
|
|
5
6
|
<record id="res_config_settings_view_form" model="ir.ui.view">
|
|
@@ -44,6 +45,23 @@
|
|
|
44
45
|
</div>
|
|
45
46
|
</div>
|
|
46
47
|
</div>
|
|
48
|
+
<div
|
|
49
|
+
class="col-12 col-lg-6 o_setting_box"
|
|
50
|
+
id="shipment_advice_auto_close_incoming"
|
|
51
|
+
title="shipment_advice_auto_close_incoming"
|
|
52
|
+
>
|
|
53
|
+
<div class="o_setting_left_pane">
|
|
54
|
+
<field name="shipment_advice_auto_close_incoming" />
|
|
55
|
+
</div>
|
|
56
|
+
<div class="o_setting_right_pane">
|
|
57
|
+
<label for="shipment_advice_auto_close_incoming" />
|
|
58
|
+
<div class="text-muted">
|
|
59
|
+
This flag indicates if an incoming shipment advice
|
|
60
|
+
will be automatically set to done
|
|
61
|
+
if all related moves are done or canceled
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
</div>
|
|
47
65
|
</xpath>
|
|
48
66
|
</field>
|
|
49
67
|
</record>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: odoo-addon-shipment_advice
|
|
3
|
-
Version: 16.0.1.
|
|
3
|
+
Version: 16.0.1.6.0.1
|
|
4
4
|
Summary: Manage your (un)loading process through shipment advices.
|
|
5
5
|
Home-page: https://github.com/OCA/stock-logistics-transport
|
|
6
6
|
Author: Camptocamp, Odoo Community Association (OCA)
|
|
@@ -11,9 +11,9 @@ Classifier: Framework :: Odoo
|
|
|
11
11
|
Classifier: Framework :: Odoo :: 16.0
|
|
12
12
|
Classifier: License :: OSI Approved :: GNU Affero General Public License v3
|
|
13
13
|
Requires-Python: >=3.10
|
|
14
|
-
Requires-Dist: odoo-addon-queue-job
|
|
15
|
-
Requires-Dist: odoo-addon-stock-dock
|
|
16
|
-
Requires-Dist: odoo
|
|
14
|
+
Requires-Dist: odoo-addon-queue-job<16.1dev,>=16.0dev
|
|
15
|
+
Requires-Dist: odoo-addon-stock-dock<16.1dev,>=16.0dev
|
|
16
|
+
Requires-Dist: odoo<16.1dev,>=16.0a
|
|
17
17
|
|
|
18
18
|
===============
|
|
19
19
|
Shipment Advice
|
|
@@ -24,7 +24,7 @@ Shipment Advice
|
|
|
24
24
|
!! This file is generated by oca-gen-addon-readme !!
|
|
25
25
|
!! changes will be overwritten. !!
|
|
26
26
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
27
|
-
!! source digest: sha256:
|
|
27
|
+
!! source digest: sha256:34e6a179b9a0304d4d12e6a1ec5e161d7ad127fec1463f2061c083e562a5f789
|
|
28
28
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
29
29
|
|
|
30
30
|
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
|
|
@@ -78,6 +78,7 @@ Contributors
|
|
|
78
78
|
* Simone Orsi <simahawk@gmail.com>
|
|
79
79
|
* `Trobz <https://trobz.com>`_:
|
|
80
80
|
* Dung Tran <dungtd@trobz.com>
|
|
81
|
+
* Michael Tietz (MT Software) <mtietz@mt-software.de>
|
|
81
82
|
|
|
82
83
|
Design
|
|
83
84
|
~~~~~~
|
|
@@ -1,44 +1,46 @@
|
|
|
1
|
-
odoo/addons/shipment_advice/README.rst,sha256=
|
|
1
|
+
odoo/addons/shipment_advice/README.rst,sha256=4BR9JuVlUKKlqzSsM79Ku7OCNRF3FFW825zld4qXVoo,3443
|
|
2
2
|
odoo/addons/shipment_advice/__init__.py,sha256=0XNpxETgFdVxFDEw03O8oL3NtTSk3we-HEZW2sPKzIU,43
|
|
3
|
-
odoo/addons/shipment_advice/__manifest__.py,sha256=
|
|
3
|
+
odoo/addons/shipment_advice/__manifest__.py,sha256=pdIxMoAVumfKpxQYTj_KRRtZTIsN6NsY7PWXEV02RdM,1301
|
|
4
4
|
odoo/addons/shipment_advice/data/ir_sequence.xml,sha256=7y13W1xPr3o_deB6s5a_UHSJGMpFGCA8JTc7xI5L0-c,1066
|
|
5
5
|
odoo/addons/shipment_advice/data/queue_job_channel.xml,sha256=wZSQNo7aAknlMpTC-mxXRvYf0rXSF53B3hI7NXwKciA,350
|
|
6
6
|
odoo/addons/shipment_advice/data/queue_job_function.xml,sha256=cEy-z8znwYUB8GDNjouWgwS-Rbfn1zl7nbpLvdXRD_U,1151
|
|
7
7
|
odoo/addons/shipment_advice/demo/stock_dock.xml,sha256=hhwcQa6JGbN-oQYrkrrgPmH1hbH1p7YEGuKZY9NGMT0,267
|
|
8
|
-
odoo/addons/shipment_advice/i18n/es.po,sha256=
|
|
9
|
-
odoo/addons/shipment_advice/i18n/fr.po,sha256=
|
|
10
|
-
odoo/addons/shipment_advice/i18n/it.po,sha256=
|
|
11
|
-
odoo/addons/shipment_advice/i18n/shipment_advice.pot,sha256=
|
|
8
|
+
odoo/addons/shipment_advice/i18n/es.po,sha256=fCAPUSRzmG-Fgl0t27SFa0NUf9j0AdpVBCwCRoxppOE,57757
|
|
9
|
+
odoo/addons/shipment_advice/i18n/fr.po,sha256=AaOAmmENm2Qcd-eu7SF-UbDtHXx-JvCeMMU-Wl8JCnU,55605
|
|
10
|
+
odoo/addons/shipment_advice/i18n/it.po,sha256=177BtK1BtuZ0UXaJOe5tdprtKTUzmHK64QZeKYsSt44,58640
|
|
11
|
+
odoo/addons/shipment_advice/i18n/shipment_advice.pot,sha256=Rw4a6mSDBSWYieFLAlPquPeVaIg8M6y44JVcPgzh640,48221
|
|
12
12
|
odoo/addons/shipment_advice/models/__init__.py,sha256=kvmDs7RDo8Tnvv0w_2GcxgVcw9nATFSixZ1tFlVNNz8,207
|
|
13
|
-
odoo/addons/shipment_advice/models/res_company.py,sha256=
|
|
14
|
-
odoo/addons/shipment_advice/models/res_config_settings.py,sha256=
|
|
15
|
-
odoo/addons/shipment_advice/models/shipment_advice.py,sha256=
|
|
16
|
-
odoo/addons/shipment_advice/models/stock_move.py,sha256=
|
|
13
|
+
odoo/addons/shipment_advice/models/res_company.py,sha256=PXjmBwOvjDagL2xLA0JBD40E1cBJVyh_lVQc3R1I5tk,1669
|
|
14
|
+
odoo/addons/shipment_advice/models/res_config_settings.py,sha256=VGgAvuRnmaN2EoV3fZPdqW3gOJeKtFJX5w3R8cLHYeE,727
|
|
15
|
+
odoo/addons/shipment_advice/models/shipment_advice.py,sha256=EQDsyXfVBvdeaXtazV3pQSokzi-07qYKhRX7icec7sU,21352
|
|
16
|
+
odoo/addons/shipment_advice/models/stock_move.py,sha256=P6dman_04CcGZkQmfzcAn0O7DgR0FLrugCuVPW4IMtA,1237
|
|
17
17
|
odoo/addons/shipment_advice/models/stock_move_line.py,sha256=gkGBrDFJ1BZC8uY9wwwFSuk_xw__HdRTW2DTGk2WdxI,5378
|
|
18
18
|
odoo/addons/shipment_advice/models/stock_package_level.py,sha256=0_S4KRBy02kkmBu5Pbcw6g-etJtATveTZh42Srz1R_o,1431
|
|
19
|
-
odoo/addons/shipment_advice/models/stock_picking.py,sha256=
|
|
20
|
-
odoo/addons/shipment_advice/readme/CONTRIBUTORS.rst,sha256=
|
|
19
|
+
odoo/addons/shipment_advice/models/stock_picking.py,sha256=K1BbrAXPyKeIg_sPbxhwgdBkjND_FanjszY1DrMj8zw,8861
|
|
20
|
+
odoo/addons/shipment_advice/readme/CONTRIBUTORS.rst,sha256=BCvWvogVfa_k5j5jF5fkxv-ooTo_LjcBKSI-mas-HT0,373
|
|
21
21
|
odoo/addons/shipment_advice/readme/CREDITS.rst,sha256=CuObn3b483zExCIho2SzTKfTU3M7H3vMQNHdTAc7UV4,138
|
|
22
22
|
odoo/addons/shipment_advice/readme/DESCRIPTION.rst,sha256=m5Xql8e7i_F_7AMLc-1lBRGVCHUca9kJ78ZRxOUaOl8,58
|
|
23
23
|
odoo/addons/shipment_advice/report/report_shipment_advice.xml,sha256=hKMUP7iuRLpeBOB7-bNr38d83WB5aet76mElIoTS_5Q,7696
|
|
24
24
|
odoo/addons/shipment_advice/report/reports.xml,sha256=8LeKVB1M0a4gsLyrwd68RMnxoUw0xCYIn2KN4jlCuLA,1523
|
|
25
25
|
odoo/addons/shipment_advice/security/ir.model.access.csv,sha256=FeiNV6yP6OOOwJw2MHyo1B3TQQ-umOz75A7QAlCTPZs,657
|
|
26
26
|
odoo/addons/shipment_advice/static/description/icon.png,sha256=6xBPJauaFOF0KDHfHgQopSc28kKvxMaeoQFQWZtfZDo,9455
|
|
27
|
-
odoo/addons/shipment_advice/static/description/index.html,sha256=
|
|
28
|
-
odoo/addons/shipment_advice/tests/__init__.py,sha256=
|
|
29
|
-
odoo/addons/shipment_advice/tests/common.py,sha256=
|
|
30
|
-
odoo/addons/shipment_advice/tests/test_shipment_advice.py,sha256=
|
|
31
|
-
odoo/addons/shipment_advice/tests/test_shipment_advice_async.py,sha256=
|
|
32
|
-
odoo/addons/shipment_advice/tests/
|
|
33
|
-
odoo/addons/shipment_advice/tests/
|
|
34
|
-
odoo/addons/shipment_advice/tests/
|
|
35
|
-
odoo/addons/shipment_advice/tests/
|
|
36
|
-
odoo/addons/shipment_advice/
|
|
37
|
-
odoo/addons/shipment_advice/
|
|
27
|
+
odoo/addons/shipment_advice/static/description/index.html,sha256=YIGWG2hxw-d50PbRVFCDOMF_0COWvRhF3d2O6zlQf4A,13795
|
|
28
|
+
odoo/addons/shipment_advice/tests/__init__.py,sha256=nWHgeD6l3judyJhGVx996KU99UMvDI0TIl0QhG3LqLQ,340
|
|
29
|
+
odoo/addons/shipment_advice/tests/common.py,sha256=dEpqCye2-xBP8dPy5ftIX9ZY8w56F3pshUgR0qg0jXY,8159
|
|
30
|
+
odoo/addons/shipment_advice/tests/test_shipment_advice.py,sha256=tC1S1XsCZ1PauKplUjoMfa2EUbwhVFCz-iwzfMQ6JOo,7670
|
|
31
|
+
odoo/addons/shipment_advice/tests/test_shipment_advice_async.py,sha256=w-vBtm1771G4E_AD75iBNYgQikqLc7TASbVpRHMX3Yg,14581
|
|
32
|
+
odoo/addons/shipment_advice/tests/test_shipment_advice_auto_close.py,sha256=QHSAPsJH9p2NPMEo7gEAHrMBwRbPcr6RyG5bhsXNU38,2047
|
|
33
|
+
odoo/addons/shipment_advice/tests/test_shipment_advice_load.py,sha256=frf8-XkZyGwM-h21CZtec4ISLxodOcUkDWjkr69yFPM,8062
|
|
34
|
+
odoo/addons/shipment_advice/tests/test_shipment_advice_picking_values.py,sha256=VsQUqr0gwdqo8ppEoTOD6ii9hBmp3amNDa5xOV07-WU,784
|
|
35
|
+
odoo/addons/shipment_advice/tests/test_shipment_advice_plan.py,sha256=6-ArD_3ZjYo0q_TM8YLcRbEkEv3Y8bag6cz_F8WyCao,1548
|
|
36
|
+
odoo/addons/shipment_advice/tests/test_shipment_advice_stock_user.py,sha256=FrJCnl8jCytkuvN70H1_hmEN-QdLSTVqSAY5FsqZsHQ,4328
|
|
37
|
+
odoo/addons/shipment_advice/tests/test_shipment_advice_unload.py,sha256=FAkgou08zSIfBXY9t0-XOC8zGk-fuq8OQh7CfsXeq8s,2710
|
|
38
|
+
odoo/addons/shipment_advice/views/res_config_settings.xml,sha256=gFGVuzb54xVOJ22Poz9Q8vfvHzWfgNzJO4DBQCv3A0A,3425
|
|
39
|
+
odoo/addons/shipment_advice/views/shipment_advice.xml,sha256=Bz3gG4Mra1K_U86y9vzPUmV4npDrdkadsfIgrIYcE50,16859
|
|
38
40
|
odoo/addons/shipment_advice/views/stock_move.xml,sha256=sQNoEgFOYNT4lUc4GRhDO9xWznjk-pPJqPVfzKoClnI,2275
|
|
39
41
|
odoo/addons/shipment_advice/views/stock_move_line.xml,sha256=RJ-MCrapTt2uRhxHnEm7KFJmgz_ecQtsaHk_ah9RMos,3250
|
|
40
42
|
odoo/addons/shipment_advice/views/stock_package_level.xml,sha256=0smz8ZWu9p6GsFn5Px3fSmFUZJgPif8wUJQBR1GFJoc,2171
|
|
41
|
-
odoo/addons/shipment_advice/views/stock_picking.xml,sha256=
|
|
43
|
+
odoo/addons/shipment_advice/views/stock_picking.xml,sha256=gQh7ABERuDe6BU53eykYAJe2r11-p0zCJF7UkL6hXQ8,8062
|
|
42
44
|
odoo/addons/shipment_advice/wizards/__init__.py,sha256=PWEljvfDbqYr3SrKAVpmaE25XvKFjuW2NCACSkyQzao,116
|
|
43
45
|
odoo/addons/shipment_advice/wizards/load_shipment.py,sha256=eeoDAaYBDE94ZFb1NGcJhwAiW73zizUHbS5jvd7WK6w,8541
|
|
44
46
|
odoo/addons/shipment_advice/wizards/load_shipment.xml,sha256=1kb49KAO08qWmYYGyskFojDvuUO11EuLMCK-XRpMx54,2734
|
|
@@ -48,7 +50,7 @@ odoo/addons/shipment_advice/wizards/unload_shipment.py,sha256=J0GtSHeykr5YsJH48a
|
|
|
48
50
|
odoo/addons/shipment_advice/wizards/unload_shipment.xml,sha256=xYL7hKrlH11PfRPOV9uTGDeafSA7KlmZbm5AZ8icqyQ,1562
|
|
49
51
|
odoo/addons/shipment_advice/wizards/unplan_shipment.py,sha256=zdzK3vRbZW0eY3iw9eOGxXhs5YDTjZhT9JBSyRoqqoM,4163
|
|
50
52
|
odoo/addons/shipment_advice/wizards/unplan_shipment.xml,sha256=KX4lF5O-HOwcylK3odlqfQd-TDvQLTYtfsxptinIsIQ,1832
|
|
51
|
-
odoo_addon_shipment_advice-16.0.1.
|
|
52
|
-
odoo_addon_shipment_advice-16.0.1.
|
|
53
|
-
odoo_addon_shipment_advice-16.0.1.
|
|
54
|
-
odoo_addon_shipment_advice-16.0.1.
|
|
53
|
+
odoo_addon_shipment_advice-16.0.1.6.0.1.dist-info/METADATA,sha256=dVTHgcLwraXhPo5ARu_l9kQ0C8GpBS1Mg6D5ZNClLpE,4114
|
|
54
|
+
odoo_addon_shipment_advice-16.0.1.6.0.1.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
|
|
55
|
+
odoo_addon_shipment_advice-16.0.1.6.0.1.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
|
|
56
|
+
odoo_addon_shipment_advice-16.0.1.6.0.1.dist-info/RECORD,,
|
|
File without changes
|