diff --git a/app_base_chinese/__init__.py b/app_base_chinese/__init__.py index b801727f..0190a7f5 100644 --- a/app_base_chinese/__init__.py +++ b/app_base_chinese/__init__.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- from .hooks import pre_init_hook +from .hooks import post_init_hook from . import controllers from . import models from . import ir diff --git a/app_base_chinese/__manifest__.py b/app_base_chinese/__manifest__.py index 1ad1638b..afe4d8f8 100644 --- a/app_base_chinese/__manifest__.py +++ b/app_base_chinese/__manifest__.py @@ -18,7 +18,7 @@ { 'name': "App base chinese,中国化基本模块增强", - 'version': '11.0.10.31', + 'version': '11.19.03.04', 'author': 'Sunpop.cn', 'category': 'Base', 'website': 'http://www.sunpop.cn', @@ -34,11 +34,16 @@ odoo Chinese Enhance. 中国化增强-基础 1. 中文默认值,如国家、时区、货币等。处理模块 base, product. 2. 客户加简称,地址显示中文化,客户编码显示优先 - 3. todo:中文演示数据(只有demo模式才加载) + 3. 客户地址显示增加手机号与电话号码 + 4. 货币处理,增加排序显示 + 5. 修正产品类别的列表及m2o字段中不显示中文目录名的Bug + 11. todo:中文演示数据(只有demo模式才加载) """, 'pre_init_hook': 'pre_init_hook', + 'post_init_hook': 'post_init_hook', 'depends': [ + 'base', 'product', 'l10n_cn' ], @@ -46,11 +51,15 @@ 'data': [ 'views/res_partner_category_views.xml', 'views/res_partner_views.xml', + 'views/res_currency_views.xml', + 'views/ir_default_views.xml', 'data/ir_default_data.xml', 'data/ir_sequence_data.xml', 'data/base_data.xml', + 'data/res_country_data.xml', 'data/res_currency_data.xml', 'data/product_data.xml', + 'data/product_pricelist_data.xml', ], 'demo': [ ], @@ -64,5 +73,5 @@ ], 'installable': True, 'application': True, - 'auto_install': True, + 'auto_install': False, } diff --git a/app_base_chinese/data/ir_default_data.xml b/app_base_chinese/data/ir_default_data.xml index 557affeb..d01324e0 100644 --- a/app_base_chinese/data/ir_default_data.xml +++ b/app_base_chinese/data/ir_default_data.xml @@ -4,27 +4,27 @@ - + - + - + "Asia/Shanghai" - + "inbox" - + "product" diff --git a/app_base_chinese/data/product_data.xml b/app_base_chinese/data/product_data.xml index 4ed14751..23e21456 100644 --- a/app_base_chinese/data/product_data.xml +++ b/app_base_chinese/data/product_data.xml @@ -4,22 +4,11 @@ - - 全部 - - - 可销售 - - - - - 公斤 - - - - - + + + + + + diff --git a/app_base_chinese/data/product_pricelist_data.xml b/app_base_chinese/data/product_pricelist_data.xml new file mode 100644 index 00000000..37c61161 --- /dev/null +++ b/app_base_chinese/data/product_pricelist_data.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/app_base_chinese/data/res_country_data.xml b/app_base_chinese/data/res_country_data.xml new file mode 100644 index 00000000..cef3b7f1 --- /dev/null +++ b/app_base_chinese/data/res_country_data.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/app_base_chinese/hooks.py b/app_base_chinese/hooks.py index 14d46a56..01f1a1d0 100644 --- a/app_base_chinese/hooks.py +++ b/app_base_chinese/hooks.py @@ -15,13 +15,29 @@ # http://www.sunpop.cn/odoo10_developer_document_offline/ # description: -from odoo import api, SUPERUSER_ID +from odoo import api, SUPERUSER_ID, _ def pre_init_hook(cr): """ 数据初始化,只在安装时执行,更新时不执行 """ + pass + +def post_init_hook(cr, registry): + """ + 数据初始化,只在安装后执行,更新时不执行 + """ try: + env = api.Environment(cr, SUPERUSER_ID, {}) + # oname = env['product.category'].with_context(lang='zh_CN').browse(1).name + # if oname: + # env['product.category'].with_context(lang='zh_CN').browse(1).write({ + # 'name': oname + 'sunpop.cn', + # }) + # env['product.category'].with_context(lang='zh_CN').browse(1).write({ + # 'name': oname, + # }) + env['product.category'].with_context(lang='zh_CN').browse(1)._compute_complete_name() pass except Exception as e: raise Warning(e) diff --git a/app_base_chinese/i18n/zh_CN.po b/app_base_chinese/i18n/zh_CN.po index d822b8a4..bca1b3ea 100644 --- a/app_base_chinese/i18n/zh_CN.po +++ b/app_base_chinese/i18n/zh_CN.po @@ -4,10 +4,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 11.0+e-20180915\n" +"Project-Id-Version: Odoo Server 12.0+e-20181122\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-11-04 16:22+0000\n" -"PO-Revision-Date: 2018-11-04 16:22+0000\n" +"POT-Creation-Date: 2018-11-27 17:02+0000\n" +"PO-Revision-Date: 2018-11-27 17:02+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -16,145 +16,82 @@ msgstr "" "Plural-Forms: \n" #. module: app_base_chinese -#: model:ir.ui.view,arch_db:app_base_chinese.app_view_partner_form +#: model_terms:ir.ui.view,arch_db:app_base_chinese.app_view_partner_form msgid "(edit)" msgstr "(编辑)" #. module: app_base_chinese -#: model:ir.ui.view,arch_db:app_base_chinese.app_view_partner_form +#: model_terms:ir.ui.view,arch_db:app_base_chinese.app_view_partner_form msgid "Address" msgstr "地址" #. module: app_base_chinese -#: model:ir.ui.view,arch_db:app_base_chinese.app_res_partner_view_filter_customer -#: model:ir.ui.view,arch_db:app_base_chinese.app_view_partner_form +#: model_terms:ir.ui.view,arch_db:app_base_chinese.app_view_partner_form msgid "City" msgstr "城市" -#. module: app_base_chinese -#: model:ir.actions.act_window,help:app_base_chinese.app_action_partner_customer_form -#: model:ir.actions.act_window,help:app_base_chinese.app_action_partner_form -#: model:ir.actions.act_window,help:app_base_chinese.app_action_partner_supplier_form -msgid "Click to add a contact in your address book." -msgstr "点击在你的地址簿添加联系人。" - -#. module: app_base_chinese -#: model:ir.ui.view,arch_db:app_base_chinese.app_res_partner_view_filter_customer -msgid "Companies" -msgstr "公司" - #. module: app_base_chinese #: model:ir.model,name:app_base_chinese.model_res_partner msgid "Contact" msgstr "联系人" #. module: app_base_chinese -#: model:ir.ui.view,arch_db:app_base_chinese.app_view_partner_form +#: model_terms:ir.ui.view,arch_db:app_base_chinese.app_view_partner_form msgid "Country" msgstr "国家/地区" #. module: app_base_chinese -#: model:ir.ui.view,arch_db:app_base_chinese.app_res_partner_kanban_view +#: model_terms:ir.ui.view,arch_db:app_base_chinese.app_res_partner_kanban_view msgid "Credit:" -msgstr "授信额度:" +msgstr "信用额度" #. module: app_base_chinese -#: model:ir.actions.act_window,name:app_base_chinese.app_action_partner_customer_form -#: model:ir.ui.view,arch_db:app_base_chinese.app_view_partner_customer_tree -msgid "Customers" -msgstr "客户" +#: model:ir.model,name:app_base_chinese.model_res_partner_category +msgid "Partner Tags" +msgstr "业务伙伴标签" #. module: app_base_chinese -#: model:ir.actions.act_window,name:app_base_chinese.app_action_partner_employee_form -msgid "Employees" -msgstr "员工" +#: model:ir.model.fields,field_description:app_base_chinese.field_res_partner_category__sequence +msgid "Sequence" +msgstr "序号" #. module: app_base_chinese -#: model:ir.ui.view,arch_db:app_base_chinese.app_res_partner_view_filter_customer -msgid "Group By" -msgstr "分组" - -#. module: app_base_chinese -#: model:ir.ui.view,arch_db:app_base_chinese.app_res_partner_view_filter_customer -msgid "My Partners" -msgstr "我的业务伙伴" - -#. module: app_base_chinese -#: model:ir.actions.act_window,name:app_base_chinese.app_action_partner_other_form -msgid "Other Partners" -msgstr "其它业务伙伴" - -#. module: app_base_chinese -#: model:ir.actions.act_window,name:app_base_chinese.app_action_partner_form -msgid "Partner" -msgstr "合作伙伴" - -#. module: app_base_chinese -#: model:ir.ui.view,arch_db:app_base_chinese.app_res_partner_view_filter_customer -msgid "Persons" -msgstr "个人" - -#. module: app_base_chinese -#: model:ir.ui.view,arch_db:app_base_chinese.app_res_partner_view_filter_customer -msgid "Salesperson" -msgstr "销售员" - -#. module: app_base_chinese -#: model:ir.ui.view,arch_db:app_base_chinese.app_res_partner_view_filter_customer -msgid "Search Partner" -msgstr "搜索业务伙伴" - -#. module: app_base_chinese -#: model:ir.model.fields,field_description:app_base_chinese.field_res_partner_short_name -#: model:ir.model.fields,field_description:app_base_chinese.field_res_users_short_name +#: model:ir.model.fields,field_description:app_base_chinese.field_res_partner__short_name msgid "Short Name" msgstr "简称" #. module: app_base_chinese -#: model:ir.ui.view,arch_db:app_base_chinese.app_view_partner_form +#: model_terms:ir.ui.view,arch_db:app_base_chinese.app_view_partner_form msgid "State" -msgstr "州/省" +msgstr "省份" #. module: app_base_chinese -#: model:ir.ui.view,arch_db:app_base_chinese.app_view_partner_form +#: model_terms:ir.ui.view,arch_db:app_base_chinese.app_view_partner_form msgid "Street..." msgstr "街道..." #. module: app_base_chinese -#: model:ir.ui.view,arch_db:app_base_chinese.app_res_partner_view_filter_customer -msgid "Tag" -msgstr "标签" +#: model:ir.model.fields,help:app_base_chinese.field_res_partner_category__sequence +msgid "Used to order partner category" +msgstr "显示排序" #. module: app_base_chinese -#: code:addons/app_base_chinese/models/res_partner.py:14 -#: sql_constraint:res.partner:0 -#, python-format -msgid "The reference must be unique" -msgstr "编码必须唯一" - -#. module: app_base_chinese -#: code:addons/app_base_chinese/models/res_partner.py:21 -#, python-format -msgid "The reference must be unique!" -msgstr "编码必须唯一" - -#. module: app_base_chinese -#: model:ir.actions.act_window,name:app_base_chinese.app_action_partner_supplier_form -#: model:ir.ui.view,arch_db:app_base_chinese.app_view_partner_supplier_tree -msgid "Vendors" -msgstr "供应商" - -#. module: app_base_chinese -#: model:ir.ui.view,arch_db:app_base_chinese.app_view_partner_form +#: model_terms:ir.ui.view,arch_db:app_base_chinese.app_view_partner_form msgid "ZIP" -msgstr "邮箱" +msgstr "邮编" #. module: app_base_chinese -#: model:ir.ui.view,arch_db:app_base_chinese.app_view_partner_form +#: model_terms:ir.ui.view,arch_db:app_base_chinese.app_view_partner_form msgid "e.g. VIP001" -msgstr "例如 VIP001" +msgstr "" #. module: app_base_chinese -#: model:ir.ui.view,arch_db:app_base_chinese.app_view_partner_form +#: model_terms:ir.ui.view,arch_db:app_base_chinese.app_view_partner_form msgid "手机:" -msgstr "手机:" +msgstr "" + +#. module: app_base_chinese +#: model_terms:ir.ui.view,arch_db:app_base_chinese.app_view_partner_form +msgid "电话:" +msgstr "" + diff --git a/app_base_chinese/models/__init__.py b/app_base_chinese/models/__init__.py index 2d36cef7..f0ffb65f 100644 --- a/app_base_chinese/models/__init__.py +++ b/app_base_chinese/models/__init__.py @@ -1,6 +1,8 @@ # -*- coding: utf-8 -*- from . import res_partner +from . import res_partner_category +from . import res_currency diff --git a/app_base_chinese/models/res_currency.py b/app_base_chinese/models/res_currency.py new file mode 100644 index 00000000..ad714fac --- /dev/null +++ b/app_base_chinese/models/res_currency.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +from odoo import api, fields, models + + +class ResCurrency(models.Model): + _inherit = 'res.currency' + _order = 'active desc, sequence, name' + + sequence = fields.Integer('Sequence', default=10, help="Determine the display order. Sort ascending.") + + def rmb_upper(self, value): + """ + 人民币大写 + 传入浮点类型的值返回 unicode 字符串 + :param 传入阿拉伯数字 + :return 返回值是对应阿拉伯数字的绝对值的中文数字 + """ + if self.name != 'CNY': + return; + rmbmap = [u"零", u"壹", u"贰", u"叁", u"肆", u"伍", u"陆", u"柒", u"捌", u"玖"] + unit = [u"分", u"角", u"元", u"拾", u"佰", u"仟", u"万", u"拾", u"佰", u"仟", u"亿", + u"拾", u"佰", u"仟", u"万", u"拾", u"佰", u"仟", u"兆"] + # 冲红负数处理 + xflag = 0 + if value < 0: + xflag = value + value = abs(value) + # 先把value 数字进行格式化保留两位小数,转成字符串然后去除小数点 + nums = map(int, list(str('%0.2f' % value).replace('.', ''))) + words = [] + zflag = 0 # 标记连续0次数,以删除万字,或适时插入零字 + start = len(nums) - 3 + for i in range(start, -3, -1): # 使i对应实际位数,负数为角分 + # 大部分情况对应数字不等于零 或者是刚开始循环 + if 0 != nums[start - i] or len(words) == 0: + if zflag: + words.append(rmbmap[0]) + zflag = 0 + words.append(rmbmap[nums[start - i]]) # 数字对应的中文字符 + words.append(unit[i + 2]) # 列表此位置的单位 + # 控制‘万/元’ 万和元比较特殊,如2拾万和2拾1万 无论有没有这个1 万字是必须的 + elif 0 == i or (0 == i % 4 and zflag < 3): + # 上面那种情况定义了 2拾1万 的显示 这个是特殊对待的 2拾万(一类)的显示 + words.append(unit[i + 2]) + # 元(控制条件为 0 == i )和万(控制条为(0 == i % 4 and zflag < 3))的情况的处理是一样的 + zflag = 0 + else: + zflag += 1 + if words[-1] != unit[0]: # 结尾非‘分’补整字 最小单位 如果最后一个字符不是最小单位(分)则要加一个整字 + words.append(u"整") + if xflag < 0: # 如果为负数则要在数字前面加上‘负’字 + words.insert(0, u"负") + return ''.join(words) diff --git a/app_base_chinese/models/res_partner.py b/app_base_chinese/models/res_partner.py index 5913cfc6..0bb0e839 100644 --- a/app_base_chinese/models/res_partner.py +++ b/app_base_chinese/models/res_partner.py @@ -9,26 +9,16 @@ class ResPartner(models.Model): short_name = fields.Char('Short Name') # 简称 - # ref,编码限制在 app_partner_auto_reference - # 显示[编码]简称 - @api.multi - def name_get(self): - result = [] - for partner in self: - if partner.short_name: - name = partner.short_name - else: - name = partner.name - if partner.ref: - name = '[' + partner.ref + ']' + name - result.append((partner.id, name)) - return result - - -class PartnerCategory(models.Model): - _inherit = 'res.partner.category' - _order = 'sequence, name' - - sequence = fields.Integer('Sequence', help="Used to order partner category") - - + # 增加地址显示中的手机号与电话号码 + # 选项 show_address 开启则增加显示手机与电话号 + def _get_name(self): + name = super(ResPartner, self)._get_name() or '' + partner = self + if self._context.get('show_address'): + if partner.mobile and partner.phone: + name = name + "\n" + partner.mobile + "," + partner.phone + elif partner.mobile: + name = name + "\n" + partner.mobile + elif partner.phone: + name = name + "\n" + partner.phone + return name diff --git a/app_base_chinese/models/res_partner_category.py b/app_base_chinese/models/res_partner_category.py new file mode 100644 index 00000000..44d2b0b3 --- /dev/null +++ b/app_base_chinese/models/res_partner_category.py @@ -0,0 +1,9 @@ +# -*- coding: utf-8 -*- + +from odoo import api, models, fields, _ + +class PartnerCategory(models.Model): + _inherit = 'res.partner.category' + _order = 'sequence, name' + + sequence = fields.Integer('Sequence', help="Used to order partner category") diff --git a/app_base_chinese/static/description/cnreadme.jpg b/app_base_chinese/static/description/cnreadme.jpg new file mode 100644 index 00000000..8deafc3c Binary files /dev/null and b/app_base_chinese/static/description/cnreadme.jpg differ diff --git a/app_base_chinese/static/description/demo1.jpg b/app_base_chinese/static/description/demo1.jpg index d2fe97dc..3eb8d87b 100644 Binary files a/app_base_chinese/static/description/demo1.jpg and b/app_base_chinese/static/description/demo1.jpg differ diff --git a/app_base_chinese/static/description/demo2.jpg b/app_base_chinese/static/description/demo2.jpg new file mode 100644 index 00000000..d79f409d Binary files /dev/null and b/app_base_chinese/static/description/demo2.jpg differ diff --git a/app_base_chinese/static/description/demo3.jpg b/app_base_chinese/static/description/demo3.jpg new file mode 100644 index 00000000..d990d41c Binary files /dev/null and b/app_base_chinese/static/description/demo3.jpg differ diff --git a/app_base_chinese/static/description/index.html b/app_base_chinese/static/description/index.html index 9953b7e9..ea794d90 100644 --- a/app_base_chinese/static/description/index.html +++ b/app_base_chinese/static/description/index.html @@ -4,7 +4,7 @@

App base chinese. Local customize for china user

Set all chinese default value. Like Default country, timezone, currency, partner...

-

Lastest update: v11.0.11.07, 2018-11-07

+

Lastest update: v12.19.3.04

@@ -24,17 +24,42 @@ Set partner to chinese format. +
  • + + Fix Category Display not in english bug. +
  • - +
    +
    +
    +

    Set Default country, state, timezone, currency.

    +
    + +
    +
    + +
    +
    +
    + +
    +
    +

    Fix Category Display not in english bug.

    +
    + +
    +
    +
    +
    diff --git a/app_base_chinese/views/ir_default_views.xml b/app_base_chinese/views/ir_default_views.xml new file mode 100644 index 00000000..da1be17a --- /dev/null +++ b/app_base_chinese/views/ir_default_views.xml @@ -0,0 +1,27 @@ + + + + + + app.res.currency.tree + res.currency + + + + + + + + + + app.res.currency.form + res.currency + + + + + + + + + diff --git a/app_base_chinese/views/res_currency_views.xml b/app_base_chinese/views/res_currency_views.xml new file mode 100644 index 00000000..d2616545 --- /dev/null +++ b/app_base_chinese/views/res_currency_views.xml @@ -0,0 +1,27 @@ + + + + + + app.ir.default tree view + ir.default + + + + + + + + + + app.ir.default form view + ir.default + + + + + + + + + diff --git a/app_base_chinese/views/res_partner_category_views.xml b/app_base_chinese/views/res_partner_category_views.xml index ba174895..e1a0ae91 100644 --- a/app_base_chinese/views/res_partner_category_views.xml +++ b/app_base_chinese/views/res_partner_category_views.xml @@ -1,7 +1,7 @@ - + app Contact Tags res.partner.category diff --git a/app_base_chinese/views/res_partner_views.xml b/app_base_chinese/views/res_partner_views.xml index 828279a0..79eabba7 100644 --- a/app_base_chinese/views/res_partner_views.xml +++ b/app_base_chinese/views/res_partner_views.xml @@ -7,39 +7,29 @@ res.partner - - - + + + + - - - - - 1 + - -
    -
    -
    - - - - - - -
    + + + + + + + + + + + @@ -54,118 +44,107 @@ {'invisible': [('is_company','!=', True)]} - - - - + + + 1 + + + + + + + + + + + + + + - -
    -
    - [] - - - -
    -
    - -
    -
    - -
    -
    - -
    -
    - -
    - - - -
    -
    -
    电话: - -
    -
    手机: - -
    -
    + + [] + + +
    +
    +
    +
    + + + + app.res.partner.form.address + res.partner + + + + + + + + + + + + + + + + + + + app.res.partner.form + res.partner + + + + + + + + + + + + + + + + + + + app.res.partner.view.form.private + res.partner + + + + + + + + + + + + + - app.res.partner.tree res.partner - - - - - + - - 0 - - - - - - - app.res.partner.tree - res.partner - - - - - - - - - - - - - - - - - - app.res.partner.tree - res.partner - - - - - - - - - - - @@ -190,147 +169,9 @@ - - - app.res.partner.select.customer - res.partner - - - - - - - - - - - - - - - - - - - - - - - - - Customers - ir.actions.act_window - res.partner - kanban,tree,form - - [('customer', '=', 1),('is_company', '=', 1)] - {'default_customer':1,'default_is_company':1} - - - -

    - Click to add a contact in your address book. -

    -

    - Odoo helps you easily track all activities related to - a customer: discussions, history of business opportunities, - documents, etc. -

    -
    -
    - - - - kanban - - - - - - tree - - - - - - - Vendors - ir.actions.act_window - res.partner - form - kanban,tree,form - [('supplier', '=', 1),('is_company', '=', 1)] - {'default_supplier': 1,'default_is_company':1} - - -

    - Click to add a contact in your address book. -

    -

    - Odoo helps you easily track all activities related to - a supplier: discussions, history of purchases, - documents, etc. -

    -
    -
    - - - - kanban - - - - - - tree - - - - - Partner - ir.actions.act_window - res.partner - form - kanban,tree,form - - {'default_customer': 0,'default_supplier': 0,'default_is_company':1} - - - -

    - Click to add a contact in your address book. -

    -

    - Odoo helps you easily track all activities related to - a supplier: discussions, history of purchases, - documents, etc. -

    -
    -
    - - - Employees - ir.actions.act_window - res.partner - form - [('employee','=',1)] - {'default_customer':0, 'default_supplier':0 , 'default_employee':1} - - - - - Other Partners - ir.actions.act_window - res.partner - form - [('supplier','<>',1),('customer','<>',1)] - - -