several small fixes:

- systemmodule ir und res aufgenommen
- Version auf Major.Minor reduziert
- reihenfolge der Module fixiert
This commit is contained in:
2026-08-08 01:29:43 +02:00
parent 4fff05a09e
commit 64fda357ad
291 changed files with 18425 additions and 1456 deletions
+5
View File
@@ -0,0 +1,5 @@
{
"version": "8.0",
"module": "company",
"files": []
}
+40
View File
@@ -0,0 +1,40 @@
{
"version": "8.0",
"module": "country",
"files": [
{
"file": "/home/uha4/tmp/tryton/modules/country/country.py",
"class": "Subdivision",
"method": "__register__",
"line": 401,
"operations": [
{
"object": "table_h",
"operation": "not_null_action",
"line": 407,
"args": [
"'type'"
],
"kwargs": {
"action": "'remove'"
},
"code": "table_h.not_null_action('type', action='remove')",
"phase": "after_super"
},
{
"object": "table_h",
"operation": "not_null_action",
"line": 410,
"args": [
"'code'"
],
"kwargs": {
"action": "'remove'"
},
"code": "table_h.not_null_action('code', action='remove')",
"phase": "after_super"
}
]
}
]
}
+45
View File
@@ -0,0 +1,45 @@
{
"version": "8.0",
"module": "currency",
"files": [
{
"file": "/home/uha4/tmp/tryton/modules/currency/currency.py",
"class": "Currency",
"method": "__register__",
"line": 77,
"operations": [
{
"object": "table_h",
"operation": "not_null_action",
"line": 83,
"args": [
"'symbol'",
"'remove'"
],
"kwargs": {},
"code": "table_h.not_null_action('symbol', 'remove')",
"phase": "after_super"
}
]
},
{
"file": "/home/uha4/tmp/tryton/modules/currency/currency.py",
"class": "CurrencyRate",
"method": "__register__",
"line": 278,
"operations": [
{
"object": "table_h",
"operation": "drop_constraint",
"line": 283,
"args": [
"'check_currency_rate'"
],
"kwargs": {},
"code": "table_h.drop_constraint('check_currency_rate')",
"phase": "after_super"
}
]
}
]
}
+587
View File
@@ -0,0 +1,587 @@
{
"version": "8.0",
"module": "ir",
"files": [
{
"file": "/home/uha4/tmp/tryton/trytond/trytond/ir/export.py",
"class": "Export",
"method": "__register__",
"line": 68,
"operations": [
{
"object": "cursor",
"operation": "execute",
"line": 79,
"args": [
"*table.update([table.user], [table.create_uid])"
],
"kwargs": {},
"code": "cursor.execute(*table.update([table.user], [table.create_uid]))",
"phase": "after_super",
"condition": "not user_exists"
},
{
"object": "table",
"operation": "update",
"line": 79,
"args": [
"[table.user]",
"[table.create_uid]"
],
"kwargs": {},
"code": "table.update([table.user], [table.create_uid])",
"phase": "after_super",
"condition": "not user_exists"
}
]
},
{
"file": "/home/uha4/tmp/tryton/trytond/trytond/ir/model.py",
"class": "Model",
"method": "__register__",
"line": 82,
"operations": [
{
"object": "table_h",
"operation": "column_rename",
"line": 88,
"args": [
"'name'",
"'string'"
],
"kwargs": {},
"code": "table_h.column_rename('name', 'string')",
"phase": "before_super",
"condition": "table_h.column_exist('model')"
},
{
"object": "table_h",
"operation": "column_rename",
"line": 89,
"args": [
"'model'",
"'name'"
],
"kwargs": {},
"code": "table_h.column_rename('model', 'name')",
"phase": "before_super",
"condition": "table_h.column_exist('model')"
},
{
"object": "table_h",
"operation": "drop_constraint",
"line": 90,
"args": [
"'model_uniq'"
],
"kwargs": {},
"code": "table_h.drop_constraint('model_uniq')",
"phase": "before_super"
}
]
},
{
"file": "/home/uha4/tmp/tryton/trytond/trytond/ir/model.py",
"class": "ModelField",
"method": "__register__",
"line": 325,
"operations": [
{
"object": "table_h",
"operation": "column_rename",
"line": 337,
"args": [
"'model'",
"'_temp_model'"
],
"kwargs": {},
"code": "table_h.column_rename('model', '_temp_model')",
"phase": "before_super",
"condition": "table_h.column_exist('model') and table_h.column_is_type('model', 'INTEGER')"
},
{
"object": "table_h",
"operation": "add_column",
"line": 338,
"args": [
"'model'",
"'VARCHAR'"
],
"kwargs": {},
"code": "table_h.add_column('model', 'VARCHAR')",
"phase": "before_super",
"condition": "table_h.column_exist('model') and table_h.column_is_type('model', 'INTEGER')"
},
{
"object": "cursor",
"operation": "execute",
"line": 339,
"args": [
"*table.update([table.model], [model.name], from_=[model], where=table._temp_model == model.id)"
],
"kwargs": {},
"code": "cursor.execute(*table.update([table.model], [model.name], from_=[model], where=table._temp_model == model.id))",
"phase": "before_super",
"condition": "table_h.column_exist('model') and table_h.column_is_type('model', 'INTEGER')"
},
{
"object": "table",
"operation": "update",
"line": 339,
"args": [
"[table.model]",
"[model.name]"
],
"kwargs": {
"from_": "[model]",
"where": "table._temp_model == model.id"
},
"code": "table.update([table.model], [model.name], from_=[model], where=table._temp_model == model.id)",
"phase": "before_super",
"condition": "table_h.column_exist('model') and table_h.column_is_type('model', 'INTEGER')"
},
{
"object": "table_h",
"operation": "drop_column",
"line": 343,
"args": [
"'_temp_model'"
],
"kwargs": {},
"code": "table_h.drop_column('_temp_model')",
"phase": "before_super",
"condition": "table_h.column_exist('model') and table_h.column_is_type('model', 'INTEGER')"
},
{
"object": "table_h",
"operation": "column_rename",
"line": 346,
"args": [
"'field_description'",
"'string'"
],
"kwargs": {},
"code": "table_h.column_rename('field_description', 'string')",
"phase": "before_super"
}
]
},
{
"file": "/home/uha4/tmp/tryton/trytond/trytond/ir/model.py",
"class": "ModelAccess",
"method": "__register__",
"line": 539,
"operations": [
{
"object": "table_h",
"operation": "column_rename",
"line": 551,
"args": [
"'model'",
"'_temp_model'"
],
"kwargs": {},
"code": "table_h.column_rename('model', '_temp_model')",
"phase": "before_super",
"condition": "table_h.column_exist('model') and table_h.column_is_type('model', 'INTEGER')"
},
{
"object": "table_h",
"operation": "add_column",
"line": 552,
"args": [
"'model'",
"'VARCHAR'"
],
"kwargs": {},
"code": "table_h.add_column('model', 'VARCHAR')",
"phase": "before_super",
"condition": "table_h.column_exist('model') and table_h.column_is_type('model', 'INTEGER')"
},
{
"object": "cursor",
"operation": "execute",
"line": 553,
"args": [
"*table.update([table.model], [model.name], from_=[model], where=table._temp_model == model.id)"
],
"kwargs": {},
"code": "cursor.execute(*table.update([table.model], [model.name], from_=[model], where=table._temp_model == model.id))",
"phase": "before_super",
"condition": "table_h.column_exist('model') and table_h.column_is_type('model', 'INTEGER')"
},
{
"object": "table",
"operation": "update",
"line": 553,
"args": [
"[table.model]",
"[model.name]"
],
"kwargs": {
"from_": "[model]",
"where": "table._temp_model == model.id"
},
"code": "table.update([table.model], [model.name], from_=[model], where=table._temp_model == model.id)",
"phase": "before_super",
"condition": "table_h.column_exist('model') and table_h.column_is_type('model', 'INTEGER')"
},
{
"object": "table_h",
"operation": "drop_column",
"line": 557,
"args": [
"'_temp_model'"
],
"kwargs": {},
"code": "table_h.drop_column('_temp_model')",
"phase": "before_super",
"condition": "table_h.column_exist('model') and table_h.column_is_type('model', 'INTEGER')"
}
]
},
{
"file": "/home/uha4/tmp/tryton/trytond/trytond/ir/model.py",
"class": "ModelFieldAccess",
"method": "__register__",
"line": 772,
"operations": [
{
"object": "table_h",
"operation": "column_rename",
"line": 784,
"args": [
"'field'",
"'_temp_field'"
],
"kwargs": {},
"code": "table_h.column_rename('field', '_temp_field')",
"phase": "before_super",
"condition": "table_h.column_exist('field') and table_h.column_is_type('field', 'INTEGER')"
},
{
"object": "table_h",
"operation": "add_column",
"line": 785,
"args": [
"'model'",
"'VARCHAR'"
],
"kwargs": {},
"code": "table_h.add_column('model', 'VARCHAR')",
"phase": "before_super",
"condition": "table_h.column_exist('field') and table_h.column_is_type('field', 'INTEGER')"
},
{
"object": "table_h",
"operation": "add_column",
"line": 786,
"args": [
"'field'",
"'VARCHAR'"
],
"kwargs": {},
"code": "table_h.add_column('field', 'VARCHAR')",
"phase": "before_super",
"condition": "table_h.column_exist('field') and table_h.column_is_type('field', 'INTEGER')"
},
{
"object": "cursor",
"operation": "execute",
"line": 787,
"args": [
"*table.update([table.model, table.field], [field.model, field.name], from_=[field], where=table._temp_field == field.id)"
],
"kwargs": {},
"code": "cursor.execute(*table.update([table.model, table.field], [field.model, field.name], from_=[field], where=table._temp_field == field.id))",
"phase": "before_super",
"condition": "table_h.column_exist('field') and table_h.column_is_type('field', 'INTEGER')"
},
{
"object": "table",
"operation": "update",
"line": 787,
"args": [
"[table.model, table.field]",
"[field.model, field.name]"
],
"kwargs": {
"from_": "[field]",
"where": "table._temp_field == field.id"
},
"code": "table.update([table.model, table.field], [field.model, field.name], from_=[field], where=table._temp_field == field.id)",
"phase": "before_super",
"condition": "table_h.column_exist('field') and table_h.column_is_type('field', 'INTEGER')"
},
{
"object": "table_h",
"operation": "drop_column",
"line": 792,
"args": [
"'_temp_field'"
],
"kwargs": {},
"code": "table_h.drop_column('_temp_field')",
"phase": "before_super",
"condition": "table_h.column_exist('field') and table_h.column_is_type('field', 'INTEGER')"
}
]
},
{
"file": "/home/uha4/tmp/tryton/trytond/trytond/ir/model.py",
"class": "ModelButton",
"method": "__register__",
"line": 949,
"operations": [
{
"object": "table_h",
"operation": "column_rename",
"line": 961,
"args": [
"'model'",
"'_temp_model'"
],
"kwargs": {},
"code": "table_h.column_rename('model', '_temp_model')",
"phase": "before_super",
"condition": "table_h.column_exist('model') and table_h.column_is_type('model', 'INTEGER')"
},
{
"object": "table_h",
"operation": "add_column",
"line": 962,
"args": [
"'model'",
"'VARCHAR'"
],
"kwargs": {},
"code": "table_h.add_column('model', 'VARCHAR')",
"phase": "before_super",
"condition": "table_h.column_exist('model') and table_h.column_is_type('model', 'INTEGER')"
},
{
"object": "cursor",
"operation": "execute",
"line": 963,
"args": [
"*table.update([table.model], [model.name], from_=[model], where=table._temp_model == model.id)"
],
"kwargs": {},
"code": "cursor.execute(*table.update([table.model], [model.name], from_=[model], where=table._temp_model == model.id))",
"phase": "before_super",
"condition": "table_h.column_exist('model') and table_h.column_is_type('model', 'INTEGER')"
},
{
"object": "table",
"operation": "update",
"line": 963,
"args": [
"[table.model]",
"[model.name]"
],
"kwargs": {
"from_": "[model]",
"where": "table._temp_model == model.id"
},
"code": "table.update([table.model], [model.name], from_=[model], where=table._temp_model == model.id)",
"phase": "before_super",
"condition": "table_h.column_exist('model') and table_h.column_is_type('model', 'INTEGER')"
},
{
"object": "table_h",
"operation": "drop_column",
"line": 967,
"args": [
"'_temp_model'"
],
"kwargs": {},
"code": "table_h.drop_column('_temp_model')",
"phase": "before_super",
"condition": "table_h.column_exist('model') and table_h.column_is_type('model', 'INTEGER')"
},
{
"object": "table_h",
"operation": "drop_constraint",
"line": 972,
"args": [
"'name_model_uniq'"
],
"kwargs": {},
"code": "table_h.drop_constraint('name_model_uniq')",
"phase": "after_super"
}
]
},
{
"file": "/home/uha4/tmp/tryton/trytond/trytond/ir/model.py",
"class": "ModelData",
"method": "__register__",
"line": 1301,
"operations": [
{
"object": "table_h",
"operation": "drop_constraint",
"line": 1307,
"args": [
"'fs_id_module_model_uniq'"
],
"kwargs": {},
"code": "table_h.drop_constraint('fs_id_module_model_uniq')",
"phase": "after_super"
}
]
},
{
"file": "/home/uha4/tmp/tryton/trytond/trytond/ir/rule.py",
"class": "RuleGroup",
"method": "__register__",
"line": 100,
"operations": [
{
"object": "table_h",
"operation": "column_rename",
"line": 112,
"args": [
"'model'",
"'_temp_model'"
],
"kwargs": {},
"code": "table_h.column_rename('model', '_temp_model')",
"phase": "before_super",
"condition": "table_h.column_exist('model') and table_h.column_is_type('model', 'INTEGER')"
},
{
"object": "table_h",
"operation": "add_column",
"line": 113,
"args": [
"'model'",
"'VARCHAR'"
],
"kwargs": {},
"code": "table_h.add_column('model', 'VARCHAR')",
"phase": "before_super",
"condition": "table_h.column_exist('model') and table_h.column_is_type('model', 'INTEGER')"
},
{
"object": "cursor",
"operation": "execute",
"line": 114,
"args": [
"*table.update([table.model], [model.name], from_=[model], where=table._temp_model == model.id)"
],
"kwargs": {},
"code": "cursor.execute(*table.update([table.model], [model.name], from_=[model], where=table._temp_model == model.id))",
"phase": "before_super",
"condition": "table_h.column_exist('model') and table_h.column_is_type('model', 'INTEGER')"
},
{
"object": "table",
"operation": "update",
"line": 114,
"args": [
"[table.model]",
"[model.name]"
],
"kwargs": {
"from_": "[model]",
"where": "table._temp_model == model.id"
},
"code": "table.update([table.model], [model.name], from_=[model], where=table._temp_model == model.id)",
"phase": "before_super",
"condition": "table_h.column_exist('model') and table_h.column_is_type('model', 'INTEGER')"
},
{
"object": "table_h",
"operation": "drop_column",
"line": 118,
"args": [
"'_temp_model'"
],
"kwargs": {},
"code": "table_h.drop_column('_temp_model')",
"phase": "before_super",
"condition": "table_h.column_exist('model') and table_h.column_is_type('model', 'INTEGER')"
}
]
},
{
"file": "/home/uha4/tmp/tryton/trytond/trytond/ir/ui/view.py",
"class": "ViewTreeWidth",
"method": "__register__",
"line": 511,
"operations": [
{
"object": "table_h",
"operation": "not_null_action",
"line": 517,
"args": [
"'width'",
"'remove'"
],
"kwargs": {},
"code": "table_h.not_null_action('width', 'remove')",
"phase": "after_super"
}
]
},
{
"file": "/home/uha4/tmp/tryton/trytond/trytond/ir/ui/view.py",
"class": "ViewTreeOptional",
"method": "__register__",
"line": 690,
"operations": [
{
"object": "table_h",
"operation": "column_rename",
"line": 699,
"args": [
"'view_id'",
"'view'"
],
"kwargs": {},
"code": "table_h.column_rename('view_id', 'view')",
"phase": "before_super"
},
{
"object": "cursor",
"operation": "execute",
"line": 704,
"args": [
"*table.update([table.model], [view.select(view.model, where=view.id == table.view)], where=table.model == Null)"
],
"kwargs": {},
"code": "cursor.execute(*table.update([table.model], [view.select(view.model, where=view.id == table.view)], where=table.model == Null))",
"phase": "after_super"
},
{
"object": "table",
"operation": "update",
"line": 704,
"args": [
"[table.model]",
"[view.select(view.model, where=view.id == table.view)]"
],
"kwargs": {
"where": "table.model == Null"
},
"code": "table.update([table.model], [view.select(view.model, where=view.id == table.view)], where=table.model == Null)",
"phase": "after_super"
},
{
"object": "view",
"operation": "select",
"line": 706,
"args": [
"view.model"
],
"kwargs": {
"where": "view.id == table.view"
},
"code": "view.select(view.model, where=view.id == table.view)",
"phase": "after_super"
}
]
}
]
}
+179
View File
@@ -0,0 +1,179 @@
{
"version": "8.0",
"module": "party",
"files": [
{
"file": "/home/uha4/tmp/tryton/modules/party/address.py",
"class": "Address",
"method": "__register__",
"line": 161,
"operations": [
{
"object": "table",
"operation": "column_rename",
"line": 166,
"args": [
"'street'",
"'street_unstructured'"
],
"kwargs": {},
"code": "table.column_rename('street', 'street_unstructured')",
"phase": "before_super"
},
{
"object": "table",
"operation": "column_rename",
"line": 167,
"args": [
"'name'",
"'building_name'"
],
"kwargs": {},
"code": "table.column_rename('name', 'building_name')",
"phase": "before_super"
}
]
},
{
"file": "/home/uha4/tmp/tryton/modules/party/configuration.py",
"class": "Configuration",
"method": "__register__",
"line": 33,
"operations": [
{
"object": "cursor",
"operation": "execute",
"line": 44,
"args": [
"*table.update([table.identifier_types], [cls.identifier_types.sql_format(identifier_types)])"
],
"kwargs": {},
"code": "cursor.execute(*table.update([table.identifier_types], [cls.identifier_types.sql_format(identifier_types)]))",
"phase": "after_super",
"condition": "configuration.identifier_types != identifier_types"
},
{
"object": "table",
"operation": "update",
"line": 44,
"args": [
"[table.identifier_types]",
"[cls.identifier_types.sql_format(identifier_types)]"
],
"kwargs": {},
"code": "table.update([table.identifier_types], [cls.identifier_types.sql_format(identifier_types)])",
"phase": "after_super",
"condition": "configuration.identifier_types != identifier_types"
}
]
},
{
"file": "/home/uha4/tmp/tryton/modules/party/party.py",
"class": "Identifier",
"method": "__register__",
"line": 859,
"operations": [
{
"object": "cursor",
"operation": "execute",
"line": 878,
"args": [
"*table.update([table.type], ['uy_rut'], where=table.type == 'uy_ruc')"
],
"kwargs": {},
"code": "cursor.execute(*table.update([table.type], ['uy_rut'], where=table.type == 'uy_ruc'))",
"phase": "after_super"
},
{
"object": "table",
"operation": "update",
"line": 878,
"args": [
"[table.type]",
"['uy_rut']"
],
"kwargs": {
"where": "table.type == 'uy_ruc'"
},
"code": "table.update([table.type], ['uy_rut'], where=table.type == 'uy_ruc')",
"phase": "after_super"
},
{
"object": "cursor",
"operation": "execute",
"line": 882,
"args": [
"*table.update([table.type], ['co_nit'], where=table.type == 'co_rut')"
],
"kwargs": {},
"code": "cursor.execute(*table.update([table.type], ['co_nit'], where=table.type == 'co_rut'))",
"phase": "after_super"
},
{
"object": "table",
"operation": "update",
"line": 882,
"args": [
"[table.type]",
"['co_nit']"
],
"kwargs": {
"where": "table.type == 'co_rut'"
},
"code": "table.update([table.type], ['co_nit'], where=table.type == 'co_rut')",
"phase": "after_super"
},
{
"object": "cursor",
"operation": "execute",
"line": 887,
"args": [
"*table.update([table.code_compact], [table.code])"
],
"kwargs": {},
"code": "cursor.execute(*table.update([table.code_compact], [table.code]))",
"phase": "after_super",
"condition": "fill_code_compact"
},
{
"object": "table",
"operation": "update",
"line": 887,
"args": [
"[table.code_compact]",
"[table.code]"
],
"kwargs": {},
"code": "table.update([table.code_compact], [table.code])",
"phase": "after_super",
"condition": "fill_code_compact"
},
{
"object": "cursor",
"operation": "execute",
"line": 890,
"args": [
"*table.update([table.type], ['si_maticna'], where=table.type == 'si_businessid')"
],
"kwargs": {},
"code": "cursor.execute(*table.update([table.type], ['si_maticna'], where=table.type == 'si_businessid'))",
"phase": "after_super"
},
{
"object": "table",
"operation": "update",
"line": 890,
"args": [
"[table.type]",
"['si_maticna']"
],
"kwargs": {
"where": "table.type == 'si_businessid'"
},
"code": "table.update([table.type], ['si_maticna'], where=table.type == 'si_businessid')",
"phase": "after_super"
}
]
}
]
}
+5
View File
@@ -0,0 +1,5 @@
{
"version": "8.0",
"module": "product",
"files": []
}
+5
View File
@@ -0,0 +1,5 @@
{
"version": "8.0",
"module": "product_measurements",
"files": []
}
+104
View File
@@ -0,0 +1,104 @@
{
"version": "8.0",
"module": "production",
"files": [
{
"file": "/home/uha4/tmp/tryton/modules/production/bom.py",
"class": "BOMInput",
"method": "__register__",
"line": 208,
"operations": [
{
"object": "table_h",
"operation": "column_rename",
"line": 214,
"args": [
"'uom'",
"'unit'"
],
"kwargs": {},
"code": "table_h.column_rename('uom', 'unit')",
"phase": "before_super",
"condition": "table_h.column_exist('uom') and (not table_h.column_exist('unit'))"
},
{
"object": "table_h",
"operation": "drop_constraint",
"line": 220,
"args": [
"'product_bom_uniq'"
],
"kwargs": {},
"code": "table_h.drop_constraint('product_bom_uniq')",
"phase": "after_super"
},
{
"object": "table_h",
"operation": "not_null_action",
"line": 222,
"args": [
"'product'",
"'remove'"
],
"kwargs": {},
"code": "table_h.not_null_action('product', 'remove')",
"phase": "after_super"
}
]
},
{
"file": "/home/uha4/tmp/tryton/modules/production/ir.py",
"class": "Cron",
"method": "__register__",
"line": 19,
"operations": [
{
"object": "cursor",
"operation": "execute",
"line": 26,
"args": [
"*table.update([table.method], ['ir.cron|stock_shipment_assign_try'], where=table.method == 'production|assign_cron')"
],
"kwargs": {},
"code": "cursor.execute(*table.update([table.method], ['ir.cron|stock_shipment_assign_try'], where=table.method == 'production|assign_cron'))",
"phase": "after_super"
},
{
"object": "table",
"operation": "update",
"line": 26,
"args": [
"[table.method]",
"['ir.cron|stock_shipment_assign_try']"
],
"kwargs": {
"where": "table.method == 'production|assign_cron'"
},
"code": "table.update([table.method], ['ir.cron|stock_shipment_assign_try'], where=table.method == 'production|assign_cron')",
"phase": "after_super"
}
]
},
{
"file": "/home/uha4/tmp/tryton/modules/production/production.py",
"class": "Production",
"method": "__register__",
"line": 276,
"operations": [
{
"object": "table_h",
"operation": "column_rename",
"line": 282,
"args": [
"'uom'",
"'unit'"
],
"kwargs": {},
"code": "table_h.column_rename('uom', 'unit')",
"phase": "before_super",
"condition": "table_h.column_exist('uom') and (not table_h.column_exist('unit'))"
}
]
}
]
}
+5
View File
@@ -0,0 +1,5 @@
{
"version": "8.0",
"module": "production_split",
"files": []
}
+26
View File
@@ -0,0 +1,26 @@
{
"version": "8.0",
"module": "res",
"files": [
{
"file": "/home/uha4/tmp/tryton/trytond/trytond/res/user.py",
"class": "User",
"method": "__register__",
"line": 198,
"operations": [
{
"object": "table_h",
"operation": "not_null_action",
"line": 203,
"args": [
"'menu'",
"'remove'"
],
"kwargs": {},
"code": "table_h.not_null_action('menu', 'remove')",
"phase": "after_super"
}
]
}
]
}
+5
View File
@@ -0,0 +1,5 @@
{
"version": "8.0",
"module": "stock_lot",
"files": []
}
+5
View File
@@ -0,0 +1,5 @@
{
"version": "8.0",
"module": "stock_lot_sled",
"files": []
}
+5
View File
@@ -0,0 +1,5 @@
{
"version": "8.0",
"module": "stock_product_location",
"files": []
}
+5
View File
@@ -0,0 +1,5 @@
{
"version": "8.0",
"module": "stock_split",
"files": []
}