odoo-addon-stock-barcodes 15.0.3.1.5.2__py3-none-any.whl → 15.0.3.2.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (23) hide show
  1. odoo/addons/stock_barcodes/README.rst +1 -1
  2. odoo/addons/stock_barcodes/__manifest__.py +1 -1
  3. odoo/addons/stock_barcodes/hooks.py +15 -13
  4. odoo/addons/stock_barcodes/i18n/es.po +69 -133
  5. odoo/addons/stock_barcodes/i18n/stock_barcodes.pot +55 -2
  6. odoo/addons/stock_barcodes/models/__init__.py +1 -0
  7. odoo/addons/stock_barcodes/models/stock_barcodes_action.py +1 -1
  8. odoo/addons/stock_barcodes/models/stock_move.py +37 -0
  9. odoo/addons/stock_barcodes/models/stock_move_line.py +6 -12
  10. odoo/addons/stock_barcodes/models/stock_picking.py +9 -36
  11. odoo/addons/stock_barcodes/models/stock_picking_type.py +5 -6
  12. odoo/addons/stock_barcodes/static/description/index.html +8 -5
  13. odoo/addons/stock_barcodes/tests/test_stock_barcodes_picking.py +1 -0
  14. odoo/addons/stock_barcodes/wizard/stock_barcodes_read.py +14 -23
  15. odoo/addons/stock_barcodes/wizard/stock_barcodes_read_picking.py +230 -24
  16. odoo/addons/stock_barcodes/wizard/stock_barcodes_read_picking_views.xml +12 -1
  17. odoo/addons/stock_barcodes/wizard/stock_barcodes_read_todo.py +42 -105
  18. odoo/addons/stock_barcodes/wizard/stock_barcodes_read_todo_view.xml +45 -3
  19. odoo/addons/stock_barcodes/wizard/stock_barcodes_read_views.xml +0 -1
  20. {odoo_addon_stock_barcodes-15.0.3.1.5.2.dist-info → odoo_addon_stock_barcodes-15.0.3.2.0.dist-info}/METADATA +4 -4
  21. {odoo_addon_stock_barcodes-15.0.3.1.5.2.dist-info → odoo_addon_stock_barcodes-15.0.3.2.0.dist-info}/RECORD +23 -22
  22. {odoo_addon_stock_barcodes-15.0.3.1.5.2.dist-info → odoo_addon_stock_barcodes-15.0.3.2.0.dist-info}/WHEEL +1 -1
  23. {odoo_addon_stock_barcodes-15.0.3.1.5.2.dist-info → odoo_addon_stock_barcodes-15.0.3.2.0.dist-info}/top_level.txt +0 -0
@@ -7,7 +7,7 @@ Stock Barcodes
7
7
  !! This file is generated by oca-gen-addon-readme !!
8
8
  !! changes will be overwritten. !!
9
9
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
10
- !! source digest: sha256:2cb108800d4184b951795fa6c906ec0d63a06035061daad42aca10893c49a5be
10
+ !! source digest: sha256:aaf3270f55f43b616a2ceb165378f0909ba3cc1a3d0d36d21a65e4c04c06998f
11
11
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
12
12
 
13
13
  .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
@@ -3,7 +3,7 @@
3
3
  {
4
4
  "name": "Stock Barcodes",
5
5
  "summary": "It provides read barcode on stock operations.",
6
- "version": "15.0.3.1.5",
6
+ "version": "15.0.3.2.0",
7
7
  "author": "Tecnativa, " "Odoo Community Association (OCA)",
8
8
  "website": "https://github.com/OCA/stock-logistics-barcode",
9
9
  "license": "AGPL-3",
@@ -1,18 +1,20 @@
1
1
  # Copyright 2021 Tecnativa - Sergio Teruel
2
+ # Copyright 2024 Tecnativa - Carlos Dauden
2
3
  # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
3
- from odoo import tools
4
4
 
5
5
 
6
6
  def pre_init_hook(cr):
7
- if not tools.column_exists(cr, "stock_move_line", "barcode_scan_state"):
8
- cr.execute(
9
- """
10
- ALTER TABLE stock_move_line
11
- ADD COLUMN barcode_scan_state varchar"""
12
- )
13
- cr.execute(
14
- """
15
- UPDATE stock_move_line sml
16
- SET barcode_scan_state = 'pending'
17
- """
18
- )
7
+ cr.execute(
8
+ """
9
+ ALTER TABLE stock_move_line
10
+ ADD COLUMN IF NOT EXISTS barcode_scan_state VARCHAR DEFAULT 'pending';
11
+ ALTER TABLE stock_move_line ALTER COLUMN barcode_scan_state DROP DEFAULT;
12
+ """
13
+ )
14
+ cr.execute(
15
+ """
16
+ ALTER TABLE stock_move
17
+ ADD COLUMN IF NOT EXISTS barcode_backorder_action VARCHAR DEFAULT 'pending';
18
+ ALTER TABLE stock_move ALTER COLUMN barcode_backorder_action DROP DEFAULT;
19
+ """
20
+ )
@@ -6,16 +6,16 @@ msgid ""
6
6
  msgstr ""
7
7
  "Project-Id-Version: Odoo Server 11.0\n"
8
8
  "Report-Msgid-Bugs-To: \n"
9
- "POT-Creation-Date: 2021-02-06 20:07+0000\n"
10
- "PO-Revision-Date: 2023-10-30 21:36+0000\n"
11
- "Last-Translator: Ivorra78 <informatica@totmaterial.es>\n"
9
+ "POT-Creation-Date: 2024-07-19 08:31+0000\n"
10
+ "PO-Revision-Date: 2024-07-19 10:32+0200\n"
11
+ "Last-Translator: Sergio Teruel <sergio.teruel@tecnativa.com>\n"
12
12
  "Language-Team: \n"
13
13
  "Language: es\n"
14
14
  "MIME-Version: 1.0\n"
15
15
  "Content-Type: text/plain; charset=UTF-8\n"
16
16
  "Content-Transfer-Encoding: 8bit\n"
17
17
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
18
- "X-Generator: Weblate 4.17\n"
18
+ "X-Generator: Poedit 3.0.1\n"
19
19
 
20
20
  #. module: stock_barcodes
21
21
  #: model:ir.model.fields,help:stock_barcodes.field_wiz_candidate_picking__state
@@ -152,11 +152,11 @@ msgstr "<i class=\"fa fa-trash-o\" title=\"Limpiar valores\"/>"
152
152
  #. module: stock_barcodes
153
153
  #: model_terms:ir.ui.view,arch_db:stock_barcodes.view_stock_barcodes_read_picking_form
154
154
  msgid ""
155
- "<i class=\"fa fa-upload\" title=\"Fill from pencil\" style=\"font-size:1.5em"
156
- "\"/>"
155
+ "<i class=\"fa fa-upload\" title=\"Fill from pencil\" style=\"font-"
156
+ "size:1.5em\"/>"
157
157
  msgstr ""
158
- "<i class=\"fa fa-upload\" title=\"Fill from pencil\" style=\"font-size:1.5em"
159
- "\"/>"
158
+ "<i class=\"fa fa-upload\" title=\"Fill from pencil\" style=\"font-"
159
+ "size:1.5em\"/>"
160
160
 
161
161
  #. module: stock_barcodes
162
162
  #: model_terms:ir.ui.view,arch_db:stock_barcodes.view_stock_barcodes_read_form
@@ -330,6 +330,11 @@ msgstr "Poner en paquete automáticamente antes de la validación del albarán"
330
330
  msgid "Back"
331
331
  msgstr "Atrás"
332
332
 
333
+ #. module: stock_barcodes
334
+ #: model:ir.model.fields,field_description:stock_barcodes.field_stock_move__barcode_backorder_action
335
+ msgid "Backorder action"
336
+ msgstr "Acción entrega parcial"
337
+
333
338
  #. module: stock_barcodes
334
339
  #: model:ir.model.fields,field_description:stock_barcodes.field_wiz_stock_barcodes_read__barcode
335
340
  #: model:ir.model.fields,field_description:stock_barcodes.field_wiz_stock_barcodes_read_inventory__barcode
@@ -515,6 +520,12 @@ msgstr "movimientos confirmados"
515
520
  msgid "Context"
516
521
  msgstr "Contexto"
517
522
 
523
+ #. module: stock_barcodes
524
+ #: model:ir.model.fields.selection,name:stock_barcodes.selection__stock_move__barcode_backorder_action__create_backorder
525
+ #: model_terms:ir.ui.view,arch_db:stock_barcodes.view_stock_barcodes_todo_kanban
526
+ msgid "Create Backorder"
527
+ msgstr "Crear entrega parcial"
528
+
518
529
  #. module: stock_barcodes
519
530
  #: model:ir.model.fields,field_description:stock_barcodes.field_stock_barcodes_option_group__create_lot
520
531
  msgid "Create lots if not match"
@@ -578,6 +589,13 @@ msgstr "Registro del producto escaneado"
578
589
  msgid "Customers"
579
590
  msgstr "Clientes"
580
591
 
592
+ #. module: stock_barcodes
593
+ #: model:ir.model.fields,help:stock_barcodes.field_wiz_stock_barcodes_read__product_uom_id
594
+ #: model:ir.model.fields,help:stock_barcodes.field_wiz_stock_barcodes_read_inventory__product_uom_id
595
+ #: model:ir.model.fields,help:stock_barcodes.field_wiz_stock_barcodes_read_picking__product_uom_id
596
+ msgid "Default unit of measure used for all stock operations."
597
+ msgstr ""
598
+
581
599
  #. module: stock_barcodes
582
600
  #: model:ir.model.fields,help:stock_barcodes.field_stock_barcodes_option_group__manual_entry
583
601
  msgid "Default value when open scan interface"
@@ -900,6 +918,12 @@ msgstr "Cantidad inventariada"
900
918
  msgid "Inventory quants"
901
919
  msgstr "Cantds de Inventario"
902
920
 
921
+ #. module: stock_barcodes
922
+ #: model:ir.model.fields,field_description:stock_barcodes.field_wiz_stock_barcodes_read_picking__todo_line_is_extra_line
923
+ #: model:ir.model.fields,field_description:stock_barcodes.field_wiz_stock_barcodes_read_todo__is_extra_line
924
+ msgid "Is Extra Line"
925
+ msgstr ""
926
+
903
927
  #. module: stock_barcodes
904
928
  #: model:ir.model.fields,field_description:stock_barcodes.field_stock_barcodes_option_group__is_manual_confirm
905
929
  #: model:ir.model.fields,field_description:stock_barcodes.field_wiz_stock_barcodes_read__is_manual_confirm
@@ -1159,6 +1183,11 @@ msgstr "Se ha encontrado más de un producto"
1159
1183
  msgid "Move Line"
1160
1184
  msgstr "Línea de Movimiento"
1161
1185
 
1186
+ #. module: stock_barcodes
1187
+ #: model_terms:ir.ui.view,arch_db:stock_barcodes.view_stock_barcodes_todo_kanban
1188
+ msgid "NOT AVAILABLE"
1189
+ msgstr ""
1190
+
1162
1191
  #. module: stock_barcodes
1163
1192
  #: model:ir.model.fields,field_description:stock_barcodes.field_stock_barcodes_action__name
1164
1193
  #: model:ir.model.fields,field_description:stock_barcodes.field_stock_barcodes_option__name
@@ -1183,6 +1212,12 @@ msgstr "Nuevo movimiento:"
1183
1212
  msgid "New Picking Barcode Option Group"
1184
1213
  msgstr "Nuevo Grupo de Opciones de Código de Barras de Albarán"
1185
1214
 
1215
+ #. module: stock_barcodes
1216
+ #: model:ir.model.fields.selection,name:stock_barcodes.selection__stock_move__barcode_backorder_action__skip_backorder
1217
+ #: model_terms:ir.ui.view,arch_db:stock_barcodes.view_stock_barcodes_todo_kanban
1218
+ msgid "No Backorder"
1219
+ msgstr "No crear entrega parcial"
1220
+
1186
1221
  #. module: stock_barcodes
1187
1222
  #: model:ir.model.fields.selection,name:stock_barcodes.selection__wiz_stock_barcodes_read__message_type__not_found
1188
1223
  #: model:ir.model.fields.selection,name:stock_barcodes.selection__wiz_stock_barcodes_read_inventory__message_type__not_found
@@ -1213,6 +1248,11 @@ msgstr "Notas"
1213
1248
  msgid "OK"
1214
1249
  msgstr "Aceptar"
1215
1250
 
1251
+ #. module: stock_barcodes
1252
+ #: model_terms:ir.ui.view,arch_db:stock_barcodes.view_stock_barcodes_todo_kanban
1253
+ msgid "Odoo will not create a backorder for this move. Are you sure?"
1254
+ msgstr "Odoo no creará una entrega parcial para este movimiento. ¿Está seguro?"
1255
+
1216
1256
  #. module: stock_barcodes
1217
1257
  #: model_terms:ir.ui.view,arch_db:stock_barcodes.view_stock_barcodes_read_picking_form
1218
1258
  msgid "Open"
@@ -1306,6 +1346,7 @@ msgid "Partner"
1306
1346
  msgstr "Empresa"
1307
1347
 
1308
1348
  #. module: stock_barcodes
1349
+ #: model:ir.model.fields.selection,name:stock_barcodes.selection__stock_move__barcode_backorder_action__pending
1309
1350
  #: model:ir.model.fields.selection,name:stock_barcodes.selection__stock_move_line__barcode_scan_state__pending
1310
1351
  #: model:ir.model.fields.selection,name:stock_barcodes.selection__wiz_stock_barcodes_read_todo__state__pending
1311
1352
  msgid "Pending"
@@ -1416,13 +1457,6 @@ msgstr "Cdad. de producto"
1416
1457
  msgid "Product Qty. Done"
1417
1458
  msgstr ""
1418
1459
 
1419
- #. module: stock_barcodes
1420
- #: model:ir.model.fields,field_description:stock_barcodes.field_wiz_stock_barcodes_read__product_uom_id
1421
- #: model:ir.model.fields,field_description:stock_barcodes.field_wiz_stock_barcodes_read_inventory__product_uom_id
1422
- #: model:ir.model.fields,field_description:stock_barcodes.field_wiz_stock_barcodes_read_picking__product_uom_id
1423
- msgid "Product Uom"
1424
- msgstr "Udm del Producto"
1425
-
1426
1460
  #. module: stock_barcodes
1427
1461
  #: model_terms:ir.ui.view,arch_db:stock_barcodes.view_stock_barcodes_read_picking_form
1428
1462
  msgid "Put in pack"
@@ -1506,6 +1540,11 @@ msgstr "Modelo"
1506
1540
  msgid "Reserved"
1507
1541
  msgstr "Reservado"
1508
1542
 
1543
+ #. module: stock_barcodes
1544
+ #: model_terms:ir.ui.view,arch_db:stock_barcodes.view_stock_barcodes_todo_kanban
1545
+ msgid "Restore to pending"
1546
+ msgstr ""
1547
+
1509
1548
  #. module: stock_barcodes
1510
1549
  #: model:ir.model.fields,field_description:stock_barcodes.field_wiz_stock_barcodes_read__result_package_id
1511
1550
  #: model:ir.model.fields,field_description:stock_barcodes.field_wiz_stock_barcodes_read_inventory__result_package_id
@@ -1655,6 +1694,7 @@ msgid "Steps to scan"
1655
1694
  msgstr "Pasos a escanear"
1656
1695
 
1657
1696
  #. module: stock_barcodes
1697
+ #: model:ir.model,name:stock_barcodes.model_stock_move
1658
1698
  #: model:ir.model.fields,field_description:stock_barcodes.field_wiz_stock_barcodes_read_todo__stock_move_ids
1659
1699
  msgid "Stock Move"
1660
1700
  msgstr "Movimiento de Existencias"
@@ -1691,6 +1731,11 @@ msgstr ""
1691
1731
  "botón \"Nuevo\" en un tipo de operación. Se utilizará para crear un albarán "
1692
1732
  "no planificado."
1693
1733
 
1734
+ #. module: stock_barcodes
1735
+ #: model_terms:ir.ui.view,arch_db:stock_barcodes.view_stock_barcodes_todo_kanban
1736
+ msgid "This move will be set to pending. Are you sure?"
1737
+ msgstr ""
1738
+
1694
1739
  #. module: stock_barcodes
1695
1740
  #: model:ir.model.fields,field_description:stock_barcodes.field_wiz_stock_barcodes_read_picking__todo_line_ids
1696
1741
  msgid "To Do Lines"
@@ -1734,6 +1779,13 @@ msgstr "Tipo de operación"
1734
1779
  msgid "Type of operation"
1735
1780
  msgstr "Tipo de operación"
1736
1781
 
1782
+ #. module: stock_barcodes
1783
+ #: model:ir.model.fields,field_description:stock_barcodes.field_wiz_stock_barcodes_read__product_uom_id
1784
+ #: model:ir.model.fields,field_description:stock_barcodes.field_wiz_stock_barcodes_read_inventory__product_uom_id
1785
+ #: model:ir.model.fields,field_description:stock_barcodes.field_wiz_stock_barcodes_read_picking__product_uom_id
1786
+ msgid "Unit of Measure"
1787
+ msgstr ""
1788
+
1737
1789
  #. module: stock_barcodes
1738
1790
  #: model:ir.model.fields,field_description:stock_barcodes.field_wiz_stock_barcodes_read_todo__uom_id
1739
1791
  msgid "Uom"
@@ -1830,9 +1882,8 @@ msgstr "Asistente para leer códigos de barras desde el inventario"
1830
1882
 
1831
1883
  #. module: stock_barcodes
1832
1884
  #: model:ir.model,name:stock_barcodes.model_wiz_stock_barcodes_read_picking
1833
- msgid "Wizard to read barcode on picking batch"
1834
- msgstr ""
1835
- "Asistente para leer códigos de barras desde las agrupaciones de albaranes"
1885
+ msgid "Wizard to read barcode on picking"
1886
+ msgstr "Asistente para leer códigos de barras desde los albaranes"
1836
1887
 
1837
1888
  #. module: stock_barcodes
1838
1889
  #: model:ir.model,name:stock_barcodes.model_wiz_stock_barcodes_read_todo
@@ -1920,118 +1971,3 @@ msgstr "desbloquear el albarán"
1920
1971
  #, python-format
1921
1972
  msgid "{name} is required"
1922
1973
  msgstr ""
1923
-
1924
- #~ msgid "<span>Apply inventory</span>"
1925
- #~ msgstr "<span>Aplicar inventario</span>"
1926
-
1927
- #~ msgid "<span>Total Qty</span>"
1928
- #~ msgstr "<span>Cdad. total</span>"
1929
-
1930
- #~ msgid "<i class=\"fa fa-upload fa-2x\" title=\"Fill from pencil\"/>"
1931
- #~ msgstr "<i class=\"fa fa-upload fa-2x\" title=\"Rellenar desde lápiz\"/>"
1932
-
1933
- #~ msgid "Wizard to read barcode on picking"
1934
- #~ msgstr "Asistente para leer códigos de barras desde los albaranes"
1935
-
1936
- #~ msgid "List view of lines"
1937
- #~ msgstr "Vista lista de líneas"
1938
-
1939
- #, python-format
1940
- #~ msgid "There is no lots to assign quantities"
1941
- #~ msgstr "No hay lotes para asignar la cantidad"
1942
-
1943
- #~ msgid "<span>New lot</span>"
1944
- #~ msgstr "<span>Nuevo lote</span>"
1945
-
1946
- #~ msgid "Barcode not found"
1947
- #~ msgstr "Código de barras no encontrado"
1948
-
1949
- #~ msgid "Barcode: %s (%s)"
1950
- #~ msgstr "Cód. Barras: %s (%s)"
1951
-
1952
- #~ msgid "Clean lot"
1953
- #~ msgstr "Borrar lote"
1954
-
1955
- #~ msgid "Companies"
1956
- #~ msgstr "Compañías"
1957
-
1958
- #~ msgid "Confirmed moves allowed"
1959
- #~ msgstr "Permitir movimientos confirmados"
1960
-
1961
- #~ msgid "Demand:"
1962
- #~ msgstr "Demanda:"
1963
-
1964
- #~ msgid "Done:"
1965
- #~ msgstr "Hecho:"
1966
-
1967
- #~ msgid "Get lots automatically for inventories"
1968
- #~ msgstr "Obtener lotes automáticamente para inventarios"
1969
-
1970
- #~ msgid ""
1971
- #~ "If checked the lot will be set automatically with the same removal "
1972
- #~ "strategy"
1973
- #~ msgstr ""
1974
- #~ "Si esta marcado el lote se establecerá automáticamente según la "
1975
- #~ "estrategia de retirada"
1976
-
1977
- #~ msgid ""
1978
- #~ "If checked, after a product barcode is read, the quantities will be "
1979
- #~ "distributed\n"
1980
- #~ " among all existing lots by removal "
1981
- #~ "strategy order."
1982
- #~ msgstr ""
1983
- #~ "Si está marcado, después de escanear un código de barras de producto, las "
1984
- #~ "cantidades se distribuirán entre todos los lotes existentes por orden "
1985
- #~ "según la estrategia de retirada"
1986
-
1987
- #~ msgid ""
1988
- #~ "If user input more quantities than existing it, the exceeded quantities "
1989
- #~ "will be assigned to last lot"
1990
- #~ msgstr ""
1991
- #~ "Si el usuario introduce más cantidades de las existentes, las cantidades "
1992
- #~ "sobrantes se asignarán al último lote"
1993
-
1994
- #~ msgid "Manual entry data"
1995
- #~ msgstr "Entrada manual de datos"
1996
-
1997
- #~ msgid "New lot"
1998
- #~ msgstr "Nuevo lote"
1999
-
2000
- #~ msgid "OCA Stock Barcodes reader"
2001
- #~ msgstr "Lector de códigos de barras (OCA)"
2002
-
2003
- #~ msgid "Reserved:"
2004
- #~ msgstr "Reservado:"
2005
-
2006
- #~ msgid "Set a default value for scanner."
2007
- #~ msgstr "Establece un valor por defecto para el lector."
2008
-
2009
- #~ msgid "There are no stock moves to assign this operation"
2010
- #~ msgstr "No hay movimientos de stock para realizar esta operación"
2011
-
2012
- #~ msgid "Waiting for input lot"
2013
- #~ msgstr "A la espera de leer lote"
2014
-
2015
- #~ msgid "Procurement purchase grouping settings"
2016
- #~ msgstr "Agrupación de la compra abastecida"
2017
-
2018
- #, fuzzy
2019
- #~| msgid "Picking"
2020
- #~ msgid "Stock Picking"
2021
- #~ msgstr "Albarán"
2022
-
2023
- #~ msgid "The operation type determines the picking view"
2024
- #~ msgstr "El tipo de albarán determina la vista de albarán"
2025
-
2026
- #~ msgid "barcode"
2027
- #~ msgstr "código de barras"
2028
-
2029
- #~ msgid "This product has not prepare to receipt"
2030
- #~ msgstr "Este producto no está listo para ser recibido"
2031
-
2032
- #~ msgid "# Scan log"
2033
- #~ msgstr "Lecturas"
2034
-
2035
- #, fuzzy
2036
- #~ msgid "Barcode read successfully"
2037
- #~ msgstr "Leer más"
@@ -262,6 +262,11 @@ msgstr ""
262
262
  msgid "Back"
263
263
  msgstr ""
264
264
 
265
+ #. module: stock_barcodes
266
+ #: model:ir.model.fields,field_description:stock_barcodes.field_stock_move__barcode_backorder_action
267
+ msgid "Backorder action"
268
+ msgstr ""
269
+
265
270
  #. module: stock_barcodes
266
271
  #: model:ir.model.fields,field_description:stock_barcodes.field_wiz_stock_barcodes_read__barcode
267
272
  #: model:ir.model.fields,field_description:stock_barcodes.field_wiz_stock_barcodes_read_inventory__barcode
@@ -448,6 +453,12 @@ msgstr ""
448
453
  msgid "Context"
449
454
  msgstr ""
450
455
 
456
+ #. module: stock_barcodes
457
+ #: model:ir.model.fields.selection,name:stock_barcodes.selection__stock_move__barcode_backorder_action__create_backorder
458
+ #: model_terms:ir.ui.view,arch_db:stock_barcodes.view_stock_barcodes_todo_kanban
459
+ msgid "Create Backorder"
460
+ msgstr ""
461
+
451
462
  #. module: stock_barcodes
452
463
  #: model:ir.model.fields,field_description:stock_barcodes.field_stock_barcodes_option_group__create_lot
453
464
  msgid "Create lots if not match"
@@ -636,6 +647,11 @@ msgstr ""
636
647
  msgid "Forced"
637
648
  msgstr ""
638
649
 
650
+ #. module: stock_barcodes
651
+ #: model:ir.model.fields,field_description:stock_barcodes.field_wiz_stock_barcodes_read_picking__forced_todo_key
652
+ msgid "Forced Todo Key"
653
+ msgstr ""
654
+
639
655
  #. module: stock_barcodes
640
656
  #: model:ir.model.fields,field_description:stock_barcodes.field_stock_barcodes_option_group__auto_lot
641
657
  #: model:ir.model.fields,field_description:stock_barcodes.field_wiz_stock_barcodes_read__auto_lot
@@ -825,6 +841,12 @@ msgstr ""
825
841
  msgid "Inventory quants"
826
842
  msgstr ""
827
843
 
844
+ #. module: stock_barcodes
845
+ #: model:ir.model.fields,field_description:stock_barcodes.field_wiz_stock_barcodes_read_picking__todo_line_is_extra_line
846
+ #: model:ir.model.fields,field_description:stock_barcodes.field_wiz_stock_barcodes_read_todo__is_extra_line
847
+ msgid "Is Extra Line"
848
+ msgstr ""
849
+
828
850
  #. module: stock_barcodes
829
851
  #: model:ir.model.fields,field_description:stock_barcodes.field_stock_barcodes_option_group__is_manual_confirm
830
852
  #: model:ir.model.fields,field_description:stock_barcodes.field_wiz_stock_barcodes_read__is_manual_confirm
@@ -846,6 +868,11 @@ msgstr ""
846
868
  msgid "Is Pending"
847
869
  msgstr ""
848
870
 
871
+ #. module: stock_barcodes
872
+ #: model:ir.model.fields,field_description:stock_barcodes.field_wiz_stock_barcodes_read_todo__is_stock_move_line_origin
873
+ msgid "Is Stock Move Line Origin"
874
+ msgstr ""
875
+
849
876
  #. module: stock_barcodes
850
877
  #: model:ir.model.fields,help:stock_barcodes.field_stock_barcodes_option_group__confirmed_moves
851
878
  #: model:ir.model.fields,help:stock_barcodes.field_wiz_stock_barcodes_read__confirmed_moves
@@ -1081,6 +1108,11 @@ msgstr ""
1081
1108
  msgid "Move Line"
1082
1109
  msgstr ""
1083
1110
 
1111
+ #. module: stock_barcodes
1112
+ #: model_terms:ir.ui.view,arch_db:stock_barcodes.view_stock_barcodes_todo_kanban
1113
+ msgid "NOT AVAILABLE"
1114
+ msgstr ""
1115
+
1084
1116
  #. module: stock_barcodes
1085
1117
  #: model:ir.model.fields,field_description:stock_barcodes.field_stock_barcodes_action__name
1086
1118
  #: model:ir.model.fields,field_description:stock_barcodes.field_stock_barcodes_option__name
@@ -1105,6 +1137,12 @@ msgstr ""
1105
1137
  msgid "New Picking Barcode Option Group"
1106
1138
  msgstr ""
1107
1139
 
1140
+ #. module: stock_barcodes
1141
+ #: model:ir.model.fields.selection,name:stock_barcodes.selection__stock_move__barcode_backorder_action__skip_backorder
1142
+ #: model_terms:ir.ui.view,arch_db:stock_barcodes.view_stock_barcodes_todo_kanban
1143
+ msgid "No Backorder"
1144
+ msgstr ""
1145
+
1108
1146
  #. module: stock_barcodes
1109
1147
  #: model:ir.model.fields.selection,name:stock_barcodes.selection__wiz_stock_barcodes_read__message_type__not_found
1110
1148
  #: model:ir.model.fields.selection,name:stock_barcodes.selection__wiz_stock_barcodes_read_inventory__message_type__not_found
@@ -1135,6 +1173,11 @@ msgstr ""
1135
1173
  msgid "OK"
1136
1174
  msgstr ""
1137
1175
 
1176
+ #. module: stock_barcodes
1177
+ #: model_terms:ir.ui.view,arch_db:stock_barcodes.view_stock_barcodes_todo_kanban
1178
+ msgid "Odoo will not create a backorder for this move. Are you sure?"
1179
+ msgstr ""
1180
+
1138
1181
  #. module: stock_barcodes
1139
1182
  #: model_terms:ir.ui.view,arch_db:stock_barcodes.view_stock_barcodes_read_picking_form
1140
1183
  msgid "Open"
@@ -1228,6 +1271,7 @@ msgid "Partner"
1228
1271
  msgstr ""
1229
1272
 
1230
1273
  #. module: stock_barcodes
1274
+ #: model:ir.model.fields.selection,name:stock_barcodes.selection__stock_move__barcode_backorder_action__pending
1231
1275
  #: model:ir.model.fields.selection,name:stock_barcodes.selection__stock_move_line__barcode_scan_state__pending
1232
1276
  #: model:ir.model.fields.selection,name:stock_barcodes.selection__wiz_stock_barcodes_read_todo__state__pending
1233
1277
  msgid "Pending"
@@ -1351,8 +1395,6 @@ msgid "Put in pack"
1351
1395
  msgstr ""
1352
1396
 
1353
1397
  #. module: stock_barcodes
1354
- #: model:ir.model.fields,field_description:stock_barcodes.field_wiz_stock_barcodes_read__qty_available
1355
- #: model:ir.model.fields,field_description:stock_barcodes.field_wiz_stock_barcodes_read_inventory__qty_available
1356
1398
  #: model:ir.model.fields,field_description:stock_barcodes.field_wiz_stock_barcodes_read_picking__qty_available
1357
1399
  msgid "Qty Available"
1358
1400
  msgstr ""
@@ -1428,6 +1470,11 @@ msgstr ""
1428
1470
  msgid "Reserved"
1429
1471
  msgstr ""
1430
1472
 
1473
+ #. module: stock_barcodes
1474
+ #: model_terms:ir.ui.view,arch_db:stock_barcodes.view_stock_barcodes_todo_kanban
1475
+ msgid "Restore to pending"
1476
+ msgstr ""
1477
+
1431
1478
  #. module: stock_barcodes
1432
1479
  #: model:ir.model.fields,field_description:stock_barcodes.field_wiz_stock_barcodes_read__result_package_id
1433
1480
  #: model:ir.model.fields,field_description:stock_barcodes.field_wiz_stock_barcodes_read_inventory__result_package_id
@@ -1575,6 +1622,7 @@ msgid "Steps to scan"
1575
1622
  msgstr ""
1576
1623
 
1577
1624
  #. module: stock_barcodes
1625
+ #: model:ir.model,name:stock_barcodes.model_stock_move
1578
1626
  #: model:ir.model.fields,field_description:stock_barcodes.field_wiz_stock_barcodes_read_todo__stock_move_ids
1579
1627
  msgid "Stock Move"
1580
1628
  msgstr ""
@@ -1608,6 +1656,11 @@ msgid ""
1608
1656
  " an operation type. It will be used to create a non planned picking."
1609
1657
  msgstr ""
1610
1658
 
1659
+ #. module: stock_barcodes
1660
+ #: model_terms:ir.ui.view,arch_db:stock_barcodes.view_stock_barcodes_todo_kanban
1661
+ msgid "This move will be set to pending. Are you sure?"
1662
+ msgstr ""
1663
+
1611
1664
  #. module: stock_barcodes
1612
1665
  #: model:ir.model.fields,field_description:stock_barcodes.field_wiz_stock_barcodes_read_picking__todo_line_ids
1613
1666
  msgid "To Do Lines"
@@ -1,6 +1,7 @@
1
1
  from . import stock_barcodes_action
2
2
  from . import stock_barcodes_option
3
3
  from . import stock_barcodes_read_log
4
+ from . import stock_move
4
5
  from . import stock_move_line
5
6
  from . import stock_picking
6
7
  from . import stock_picking_type
@@ -43,7 +43,7 @@ class StockBarcodesAction(models.Model):
43
43
  }
44
44
  if option_group.get_option_value("location_id", "filled_default"):
45
45
  vals["location_id"] = (
46
- self.env["stock.warehouse"].search([])[:1].lot_stock_id.id
46
+ self.env["stock.warehouse"].search([], limit=1).lot_stock_id.id
47
47
  )
48
48
  wiz = self.env["wiz.stock.barcodes.read.inventory"].create(vals)
49
49
  action = self.env["ir.actions.actions"]._for_xml_id(
@@ -0,0 +1,37 @@
1
+ # Copyright 2024 Tecnativa - Sergio Teruel
2
+ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
3
+
4
+ from odoo import fields, models
5
+
6
+
7
+ class StockMove(models.Model):
8
+ _inherit = "stock.move"
9
+
10
+ barcode_backorder_action = fields.Selection(
11
+ [
12
+ ("pending", "Pending"),
13
+ ("create_backorder", "Create Backorder"),
14
+ ("skip_backorder", "No Backorder"),
15
+ ],
16
+ string="Backorder action",
17
+ default="pending",
18
+ )
19
+
20
+ def _action_done(self, cancel_backorder=False):
21
+ moves_cancel_backorder = self.browse()
22
+ if not cancel_backorder:
23
+ moves_cancel_backorder = self.filtered(
24
+ lambda sm: sm.barcode_backorder_action == "skip_backorder"
25
+ )
26
+ super(StockMove, moves_cancel_backorder)._action_done(cancel_backorder=True)
27
+ moves_backorder = self - moves_cancel_backorder
28
+ moves_backorder.barcode_backorder_action = "pending"
29
+ return super(StockMove, moves_backorder)._action_done(
30
+ cancel_backorder=cancel_backorder
31
+ )
32
+
33
+ def copy_data(self, default=None):
34
+ vals_list = super().copy_data(default=default)
35
+ for vals in vals_list:
36
+ vals.pop("barcode_backorder_action", None)
37
+ return vals_list
@@ -28,19 +28,13 @@ class StockMoveLine(models.Model):
28
28
 
29
29
  def action_barcode_detailed_operation_unlink(self):
30
30
  for sml in self:
31
- if sml.product_uom_qty:
32
- sml._barcodes_process_line_to_unlink()
33
- else:
34
- sml.unlink()
31
+ stock_move = sml.move_id
32
+ stock_move.barcode_backorder_action = "pending"
33
+ sml.unlink()
35
34
  # HACK: To force refresh wizard values
36
35
  wiz_barcode = self.env["wiz.stock.barcodes.read.picking"].browse(
37
36
  self.env.context.get("wiz_barcode_id", False)
38
37
  )
39
- if wiz_barcode.option_group_id.barcode_guided_mode == "guided":
40
- wiz_barcode.todo_line_id.line_ids = wiz_barcode.todo_line_id.line_ids
41
- if not any(wiz_barcode.todo_line_id.line_ids.mapped("qty_done")):
42
- wiz_barcode.fill_todo_records()
43
- wiz_barcode.determine_todo_action()
44
- else:
45
- wiz_barcode.fill_todo_records()
46
- wiz_barcode.todo_line_id.line_ids = wiz_barcode.todo_line_id.line_ids
38
+ stock_move._action_assign()
39
+ wiz_barcode.fill_todo_records()
40
+ wiz_barcode.determine_todo_action()
@@ -1,7 +1,6 @@
1
1
  # Copyright 2019 Sergio Teruel <sergio.teruel@tecnativa.com>
2
2
  # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
3
3
  from odoo import models
4
- from odoo.tools.float_utils import float_compare
5
4
 
6
5
 
7
6
  class StockPicking(models.Model):
@@ -19,7 +18,7 @@ class StockPicking(models.Model):
19
18
  }
20
19
  if self.picking_type_id.code == "outgoing":
21
20
  vals["location_dest_id"] = self.location_dest_id.id
22
- if self.picking_type_id.code == "incoming":
21
+ elif self.picking_type_id.code == "incoming":
23
22
  vals["location_id"] = self.location_id.id
24
23
 
25
24
  if option_group.get_option_value("location_id", "filled_default"):
@@ -33,8 +32,8 @@ class StockPicking(models.Model):
33
32
  wiz = self.env["wiz.stock.barcodes.read.picking"].create(
34
33
  self._prepare_barcode_wiz_vals(option_group)
35
34
  )
36
- wiz.determine_todo_action()
37
35
  wiz.fill_pending_moves()
36
+ wiz.determine_todo_action()
38
37
  action = self.env["ir.actions.actions"]._for_xml_id(
39
38
  "stock_barcodes.action_stock_barcodes_read_picking"
40
39
  )
@@ -42,41 +41,15 @@ class StockPicking(models.Model):
42
41
  return action
43
42
 
44
43
  def button_validate(self):
45
- if (
46
- self.picking_type_id.barcode_option_group_id.auto_put_in_pack
47
- and not self.move_line_ids.mapped("result_package_id")
48
- ):
49
- self.action_put_in_pack()
50
- create_backorder = False
51
- # Variable initialized as True to optimize break loop
52
- skip_backorder = True
44
+ put_in_pack_picks = self.filtered(
45
+ lambda p: p.picking_type_id.barcode_option_group_id.auto_put_in_pack
46
+ and not p.move_line_ids.result_package_id
47
+ )
48
+ if put_in_pack_picks:
49
+ put_in_pack_picks.action_put_in_pack()
53
50
  if self.env.context.get("stock_barcodes_validate_picking", False):
54
- # Avoid backorder when all move lines are processed (done or done_forced)
55
- prec = self.env["decimal.precision"].precision_get(
56
- "Product Unit of Measure"
57
- )
58
- for move in self.move_lines.filtered(lambda sm: sm.state != "cancel"):
59
- if (
60
- float_compare(
61
- move.quantity_done, move.product_uom_qty, precision_digits=prec
62
- )
63
- < 0
64
- ):
65
- # In normal conditions backorder will be created
66
- create_backorder = True
67
- if not move.move_line_ids or any(
68
- sml.barcode_scan_state in ["pending"]
69
- for sml in move.move_line_ids
70
- ):
71
- # If any move are not processed we can not skip backorder
72
- skip_backorder = False
73
- break
74
- if create_backorder and skip_backorder:
75
51
  res = super(
76
- StockPicking,
77
- self.with_context(
78
- picking_ids_not_to_backorder=self.ids, skip_backorder=True
79
- ),
52
+ StockPicking, self.with_context(skip_backorder=True)
80
53
  ).button_validate()
81
54
  else:
82
55
  res = super().button_validate()