diff --git a/app_base_chinese/__manifest__.py b/app_base_chinese/__manifest__.py
index 57536704..44b9e7ee 100644
--- a/app_base_chinese/__manifest__.py
+++ b/app_base_chinese/__manifest__.py
@@ -18,7 +18,7 @@
{
'name': "App base chinese,中国化基本模块增强",
- 'version': '13.20.09.19',
+ 'version': '13.20.10.19',
'author': 'Sunpop.cn',
'category': 'Base',
'website': 'https://www.sunpop.cn',
diff --git a/app_base_chinese/hooks.py b/app_base_chinese/hooks.py
index 519e6004..9db55990 100644
--- a/app_base_chinese/hooks.py
+++ b/app_base_chinese/hooks.py
@@ -33,13 +33,13 @@ def post_init_hook(cr, registry):
env = api.Environment(cr, SUPERUSER_ID, {})
ids = env['product.category'].sudo().with_context(lang='zh_CN').search([
('parent_id', '!=', False)
- ], order='complete_name')
+ ], order='parent_path')
for rec in ids:
rec._compute_complete_name()
ids = env['stock.location'].sudo().with_context(lang='zh_CN').search([
('location_id', '!=', False),
('usage', '!=', 'views'),
- ], order='complete_name')
+ ], order='parent_path')
for rec in ids:
rec._compute_complete_name()
# 超级用户改时区为中国
@@ -52,4 +52,4 @@ def uninstall_hook(cr, registry):
"""
数据初始化,卸载时执行
"""
- pass
\ No newline at end of file
+ pass
diff --git a/app_common/models/__init__.py b/app_common/models/__init__.py
index 736cc270..d80621c4 100644
--- a/app_common/models/__init__.py
+++ b/app_common/models/__init__.py
@@ -23,3 +23,5 @@
# description:
from . import base
+from . import fields
+
diff --git a/app_common/models/fields.py b/app_common/models/fields.py
new file mode 100644
index 00000000..2d34e486
--- /dev/null
+++ b/app_common/models/fields.py
@@ -0,0 +1,48 @@
+# -*- coding: utf-8 -*-
+
+from odoo.fields import Field, resolve_mro
+from odoo.fields import Selection as oldSelection
+from odoo.tools import merge_sequences
+import logging
+
+_logger = logging.getLogger(__name__)
+
+class Selection(Field):
+ def _setup_attrs_app(self, model, name):
+ Field._setup_attrs(self, model, name)
+
+ # determine selection (applying 'selection_add' extensions)
+ values = None
+ labels = {}
+
+ for field in reversed(resolve_mro(model, name, self._can_setup_from)):
+ # We cannot use field.selection or field.selection_add here
+ # because those attributes are overridden by ``_setup_attrs``.
+ if 'selection' in field.args:
+ selection = field.args['selection']
+ if isinstance(selection, list):
+ if (
+ values is not None
+ and values != [kv[0] for kv in selection]
+ ):
+ _logger.debug("%s: selection=%r overrides existing selection; use selection_add instead", self, selection)
+ values = [kv[0] for kv in selection]
+ labels = dict(selection)
+ else:
+ self.selection = selection
+ values = None
+ labels = {}
+
+ if 'selection_add' in field.args:
+ selection_add = field.args['selection_add']
+ assert isinstance(selection_add, list), \
+ "%s: selection_add=%r must be a list" % (self, selection_add)
+ assert values is not None, \
+ "%s: selection_add=%r on non-list selection %r" % (self, selection_add, self.selection)
+ values = merge_sequences(values, [kv[0] for kv in selection_add])
+ labels.update(kv for kv in selection_add if len(kv) == 2)
+
+ if values is not None:
+ self.selection = [(value, labels[value]) for value in values]
+
+oldSelection._setup_attrs = Selection._setup_attrs_app
\ No newline at end of file
diff --git a/app_product_category_zchart/views/product_category_views.xml b/app_product_category_zchart/views/product_category_views.xml
index 04e33cb1..7c9c758a 100644
--- a/app_product_category_zchart/views/product_category_views.xml
+++ b/app_product_category_zchart/views/product_category_views.xml
@@ -5,7 +5,7 @@
product.category
-
+