mirror of
https://github.com/guohuadeng/app-odoo.git
synced 2025-02-23 04:11:36 +02:00
update chinese
This commit is contained in:
@@ -32,6 +32,7 @@
|
|||||||
'description': """
|
'description': """
|
||||||
odoo Chinese enhance. 中国化增强-基础
|
odoo Chinese enhance. 中国化增强-基础
|
||||||
1. 中文默认值,如国家、时区、货币等。处理模块 base, product.
|
1. 中文默认值,如国家、时区、货币等。处理模块 base, product.
|
||||||
|
2. 客户加简称,地址显示中文化,编码显示优先
|
||||||
2. 中文演示数据(只有demo模式才加载)
|
2. 中文演示数据(只有demo模式才加载)
|
||||||
""",
|
""",
|
||||||
'pre_init_hook': 'pre_init_hook',
|
'pre_init_hook': 'pre_init_hook',
|
||||||
@@ -41,6 +42,7 @@
|
|||||||
],
|
],
|
||||||
'images': [],
|
'images': [],
|
||||||
'data': [
|
'data': [
|
||||||
|
'views/res_partner_views.xml',
|
||||||
'data/ir_value_data.xml',
|
'data/ir_value_data.xml',
|
||||||
'data/ir_sequence_data.xml',
|
'data/ir_sequence_data.xml',
|
||||||
'data/base_data.xml',
|
'data/base_data.xml',
|
||||||
|
|||||||
@@ -1,2 +1,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from . import res_partner
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
35
app_base_chinese/models/res_partner.py
Normal file
35
app_base_chinese/models/res_partner.py
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from odoo import api, models, fields, _
|
||||||
|
from odoo.exceptions import UserError, ValidationError
|
||||||
|
|
||||||
|
|
||||||
|
class ResPartner(models.Model):
|
||||||
|
_inherit = 'res.partner'
|
||||||
|
|
||||||
|
short_name = fields.Char('Short Name') # 简称
|
||||||
|
|
||||||
|
# 在原唯一检查中增加ref唯一
|
||||||
|
_sql_constraints = [
|
||||||
|
('uniq_ref', 'unique(ref)', _('The reference must be unique')),
|
||||||
|
]
|
||||||
|
|
||||||
|
@api.constrains('ref')
|
||||||
|
def _check_ref(self):
|
||||||
|
customers = self.search([('ref', '=', self.ref)], limit=2)
|
||||||
|
if len(customers) > 1:
|
||||||
|
raise ValidationError(_('The reference must be unique!'))
|
||||||
|
|
||||||
|
# 显示[编码]简称
|
||||||
|
@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
|
||||||
350
app_base_chinese/views/res_partner_views.xml
Normal file
350
app_base_chinese/views/res_partner_views.xml
Normal file
@@ -0,0 +1,350 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
<data noupdate="0">
|
||||||
|
<!-- Partner Form视图,用继承方式改写2018-11-21,ivan -->
|
||||||
|
<record id="app_view_partner_form" model="ir.ui.view">
|
||||||
|
<field name="name">app.res.partner.form</field>
|
||||||
|
<field name="model">res.partner</field>
|
||||||
|
<field name="inherit_id" ref="base.view_partner_form"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<xpath expr="//page[@name='sales_purchases']//field[@name='ref']" position="replace">
|
||||||
|
</xpath>
|
||||||
|
<!-- 客户编号设计在重要位置,在ui层必填,其它联系人type时不需要填 2017-10-22 -->
|
||||||
|
<xpath expr="//field[@name='type']" position="after">
|
||||||
|
<field name="ref" placeholder="e.g. VIP001" />
|
||||||
|
<field name="short_name"/>
|
||||||
|
</xpath>
|
||||||
|
<xpath expr="//field[@name='website']" position="attributes">
|
||||||
|
<attribute name="invisible">1</attribute>
|
||||||
|
</xpath>
|
||||||
|
<!-- 信用额度 -->
|
||||||
|
<xpath expr="//field[@name='category_id']" position="after">
|
||||||
|
<field name="credit_limit"/>
|
||||||
|
</xpath>
|
||||||
|
<!--res.partner客户 地址中国化 -->
|
||||||
|
<xpath expr="//div[@class='o_address_format']" position="replace">
|
||||||
|
<div class="o_address_format">
|
||||||
|
<div class="oe_edit_only">
|
||||||
|
<button name="open_parent" type="object" string="(edit)" class="oe_link"
|
||||||
|
attrs="{'invisible': ['|', ('parent_id', '=', False), ('type', '!=', 'contact')]}"/>
|
||||||
|
</div>
|
||||||
|
<field name="country_id" placeholder="Country" class="o_address_country" options='{"no_open": True, "no_create": True}'
|
||||||
|
attrs="{'readonly': [('type', '=', 'contact'),('parent_id', '!=', False)]}"/>
|
||||||
|
<field name="state_id" class="o_address_state" placeholder="State" options='{"no_open": True}'
|
||||||
|
attrs="{'readonly': [('type', '=', 'contact'),('parent_id', '!=', False)]}" context="{'country_id': country_id, 'zip': zip}"/>
|
||||||
|
<field name="city" placeholder="City" class="o_address_city"
|
||||||
|
attrs="{'readonly': [('type', '=', 'contact'),('parent_id', '!=', False)]}"/>
|
||||||
|
<field name="zip" placeholder="ZIP" class="o_address_zip"
|
||||||
|
attrs="{'readonly': [('type', '=', 'contact'),('parent_id', '!=', False)]}"/>
|
||||||
|
<field name="street" placeholder="Street..." class="o_address_street"
|
||||||
|
attrs="{'readonly': [('type', '=', 'contact'),('parent_id', '!=', False)]}"/>
|
||||||
|
<field name="street2" invisible="1"/>
|
||||||
|
</div>
|
||||||
|
</xpath>
|
||||||
|
<!-- res.partner联系人 form -->
|
||||||
|
<!-- 所有类型联系人默认都不是客户,不是供应商-->
|
||||||
|
<xpath expr="//field[@name='child_ids']" position="attributes">
|
||||||
|
<attribute name="context">
|
||||||
|
{'default_parent_id': active_id, 'default_street': street, 'default_street2': street2, 'default_city': city, 'default_state_id':
|
||||||
|
state_id, 'default_zip': zip, 'default_country_id': country_id, 'default_supplier': 0, 'default_customer': 0,
|
||||||
|
'default_lang': lang,}
|
||||||
|
</attribute>
|
||||||
|
</xpath>
|
||||||
|
<!--联系人,如果是个人类型,不允许其下再有联系人-->
|
||||||
|
<xpath expr="//notebook/page[1]" position="attributes">
|
||||||
|
<attribute name="attrs">{'invisible': [('is_company','!=', True)]}</attribute>
|
||||||
|
</xpath>
|
||||||
|
<!-- 联系人也显示地址,中国格式 -->
|
||||||
|
<xpath expr="//page//form[1]//group//group" position="replace">
|
||||||
|
<group attrs="">
|
||||||
|
<label for="street" string="Address"/>
|
||||||
|
<div>
|
||||||
|
<div class="o_address_format" name="div_address">
|
||||||
|
<field name="country_id" placeholder="Country" class="o_address_country"
|
||||||
|
options='{"no_open": True, "no_create": True}'/>
|
||||||
|
<field name="state_id" class="o_address_state" placeholder="State"
|
||||||
|
options='{"no_open": True}' context="{'country_id': country_id, 'zip': zip}"/>
|
||||||
|
<field name="city" placeholder="City" class="o_address_city"/>
|
||||||
|
<field name="zip" placeholder="ZIP" class="o_address_zip"/>
|
||||||
|
<field name="street" placeholder="Street..." class="o_address_street"/>
|
||||||
|
<field name="street2" invisible="1"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</group>
|
||||||
|
</xpath>
|
||||||
|
<!-- res.partner联系人 kanban -->
|
||||||
|
<!-- 显示类型和地址等 -->
|
||||||
|
<xpath expr="//page//kanban[1]//templates//div[@class='oe_kanban_details']" position="replace">
|
||||||
|
<div class="oe_kanban_details">
|
||||||
|
<div>
|
||||||
|
[<field name="ref"/>]
|
||||||
|
<strong>
|
||||||
|
<field name="name"/>
|
||||||
|
</strong>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<field name="type"/>
|
||||||
|
</div>
|
||||||
|
<div t-if="record.function.raw_value">
|
||||||
|
<field name="function"/>
|
||||||
|
</div>
|
||||||
|
<div t-if="record.email.raw_value">
|
||||||
|
<field name="email"/>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<field t-if="record.state_id.raw_value" name="state_id"/>
|
||||||
|
<div>
|
||||||
|
<field name="city"/>
|
||||||
|
<field name="street"/>
|
||||||
|
<field name="zip" invisible="1"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div t-if="record.phone.raw_value">电话:
|
||||||
|
<field name="phone"/>
|
||||||
|
</div>
|
||||||
|
<div t-if="record.mobile.raw_value">手机:
|
||||||
|
<field name="mobile"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</xpath>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Partner tree 视图,公用的,暂时没用 -->
|
||||||
|
<record id="app_view_partner_tree" model="ir.ui.view">
|
||||||
|
<field name="name">app.res.partner.tree</field>
|
||||||
|
<field name="model">res.partner</field>
|
||||||
|
<field name="inherit_id" ref="base.view_partner_tree"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<xpath expr="//field[@name='phone']" position="before">
|
||||||
|
<field name="short_name"/>
|
||||||
|
<field name="ref"/>
|
||||||
|
<field name="mobile"/>
|
||||||
|
</xpath>
|
||||||
|
<xpath expr="//field[@name='email']" position="after">
|
||||||
|
<field name="state_id"/>
|
||||||
|
<field name="city"/>
|
||||||
|
<field name="street"/>
|
||||||
|
</xpath>
|
||||||
|
<xpath expr="//field[@name='user_id']" position="attributes">
|
||||||
|
<attribute name="invisible">0</attribute>
|
||||||
|
</xpath>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Partner customer tree 视图-->
|
||||||
|
<record id="app_view_partner_customer_tree" model="ir.ui.view">
|
||||||
|
<field name="name">app.res.partner.tree</field>
|
||||||
|
<field name="model">res.partner</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<tree string="Customers">
|
||||||
|
<!--<field name="sale_type"/>-->
|
||||||
|
<field name="display_name"/>
|
||||||
|
<field name="ref"/>
|
||||||
|
<field name="short_name"/>
|
||||||
|
<field name="mobile"/>
|
||||||
|
<field name="state_id"/>
|
||||||
|
<field name="city"/>
|
||||||
|
<field name="street"/>
|
||||||
|
<field name="credit_limit"/>
|
||||||
|
</tree>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Partner supplier tree 视图-->
|
||||||
|
<record id="app_view_partner_supplier_tree" model="ir.ui.view">
|
||||||
|
<field name="name">app.res.partner.tree</field>
|
||||||
|
<field name="model">res.partner</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<tree string="Vendors">
|
||||||
|
<field name="display_name"/>
|
||||||
|
<field name="short_name"/>
|
||||||
|
<field name="ref"/>
|
||||||
|
<field name="mobile"/>
|
||||||
|
<field name="phone"/>
|
||||||
|
<field name="email"/>
|
||||||
|
<field name="state_id"/>
|
||||||
|
<field name="city"/>
|
||||||
|
</tree>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!--Partner kanban 视图,用继承方式改写2017-11-23,ivan-->
|
||||||
|
<record id="app_res_partner_kanban_view" model="ir.ui.view">
|
||||||
|
<field name="name">app.res.partner.kanban</field>
|
||||||
|
<field name="model">res.partner</field>
|
||||||
|
<field name="inherit_id" ref="base.res_partner_kanban_view"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<xpath expr="//templates" position="before">
|
||||||
|
<field name="credit_limit"/>
|
||||||
|
</xpath>
|
||||||
|
<xpath expr="//div[@class='oe_kanban_details']/ul" position="inside">
|
||||||
|
<li t-if="record.mobile.raw_value" class="o_text_overflow">
|
||||||
|
, <field name="mobile"/>
|
||||||
|
</li>
|
||||||
|
<li t-if="record.credit_limit.raw_value">
|
||||||
|
Credit:<field name="credit_limit"/>
|
||||||
|
</li>
|
||||||
|
</xpath>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- 为客户菜单单独增加筛选器 2017-11-13 -->
|
||||||
|
<record id="app_res_partner_view_filter_customer" model="ir.ui.view">
|
||||||
|
<field name="name">app.res.partner.select.customer</field>
|
||||||
|
<field name="model">res.partner</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<search string="Search Partner">
|
||||||
|
<field name="name"
|
||||||
|
filter_domain="['|','|',('display_name','ilike',self),('ref','=',self),('email','ilike',self)]"/>
|
||||||
|
<!-- 添加手机号查询客户功能 2017-11-13 -->
|
||||||
|
<field name="mobile"/>
|
||||||
|
<filter help="My Partners" domain="[('user_id','=',uid)]"/>
|
||||||
|
<separator/>
|
||||||
|
<filter string="Persons" name="type_person" domain="[('is_company','=',0)]"/>
|
||||||
|
<filter string="Companies" name="type_company" domain="[('is_company','=',1)]"/>
|
||||||
|
<separator/>
|
||||||
|
<field name="category_id" string="Tag" filter_domain="[('category_id','ilike', self)]"/>
|
||||||
|
<field name="user_id"/>
|
||||||
|
<field name="parent_id" domain="[('is_company','=',1)]" operator="child_of"/>
|
||||||
|
<group expand="0" name="group_by" string="Group By">
|
||||||
|
<filter name="salesperson" string="Salesperson" domain="[]" context="{'group_by' : 'user_id'}"/>
|
||||||
|
<filter string="City" context="{'group_by': 'city'}"/>
|
||||||
|
<!-- 不需要按国家分组 -->
|
||||||
|
<!-- <filter string="Country" context="{'group_by': 'country_id'}"/> -->
|
||||||
|
</group>
|
||||||
|
</search>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="app_action_partner_customer_form" model="ir.actions.act_window">
|
||||||
|
<field name="name">Customers</field>
|
||||||
|
<field name="type">ir.actions.act_window</field>
|
||||||
|
<field name="res_model">res.partner</field>
|
||||||
|
<field name="view_mode">kanban,tree,form</field>
|
||||||
|
<!-- domain客户 2017-11-19 -->
|
||||||
|
<field name="domain">[('customer', '=', 1),('is_company', '=', 1)]</field>
|
||||||
|
<field name="context">{'default_customer':1,'default_is_company':1}</field>
|
||||||
|
<!-- 指定独立筛选器 2017-11-14 -->
|
||||||
|
<field name="search_view_id" ref="app_res_partner_view_filter_customer"/>
|
||||||
|
<field name="help" type="html">
|
||||||
|
<p class="oe_view_nocontent_create">
|
||||||
|
Click to add a contact in your address book.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Odoo helps you easily track all activities related to
|
||||||
|
a customer: discussions, history of business opportunities,
|
||||||
|
documents, etc.
|
||||||
|
</p>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="app_action_customer_form_view1" model="ir.actions.act_window.view">
|
||||||
|
<field name="sequence" eval="1"/>
|
||||||
|
<field name="view_mode">kanban</field>
|
||||||
|
<field name="view_id" ref="base.res_partner_kanban_view"/>
|
||||||
|
<field name="act_window_id" ref="app_action_partner_customer_form"/>
|
||||||
|
</record>
|
||||||
|
<record id="app_action_customer_form_view2" model="ir.actions.act_window.view">
|
||||||
|
<field name="sequence" eval="2"/>
|
||||||
|
<field name="view_mode">tree</field>
|
||||||
|
<field name="view_id" ref="app_view_partner_customer_tree"/>
|
||||||
|
<field name="act_window_id" ref="app_action_partner_customer_form"/>
|
||||||
|
</record>
|
||||||
|
<!--end客户-->
|
||||||
|
|
||||||
|
<!-- 为供应商菜单单独增加筛选器 2017-11-13 -->
|
||||||
|
<record id="app_action_partner_supplier_form" model="ir.actions.act_window">
|
||||||
|
<field name="name">Vendors</field>
|
||||||
|
<field name="type">ir.actions.act_window</field>
|
||||||
|
<field name="res_model">res.partner</field>
|
||||||
|
<field name="view_type">form</field>
|
||||||
|
<field name="view_mode">kanban,tree,form</field>
|
||||||
|
<field name="domain">[('supplier', '=', 1),('is_company', '=', 1)]</field>
|
||||||
|
<field name="context">{'default_supplier': 1,'default_is_company':1}</field>
|
||||||
|
<field name="filter" eval="True"/>
|
||||||
|
<field name="help" type="html">
|
||||||
|
<p class="oe_view_nocontent_create">
|
||||||
|
Click to add a contact in your address book.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Odoo helps you easily track all activities related to
|
||||||
|
a supplier: discussions, history of purchases,
|
||||||
|
documents, etc.
|
||||||
|
</p>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="app_action_supplier_form_view1" model="ir.actions.act_window.view">
|
||||||
|
<field name="sequence" eval="1"/>
|
||||||
|
<field name="view_mode">kanban</field>
|
||||||
|
<field name="view_id" ref="base.res_partner_kanban_view"/>
|
||||||
|
<field name="act_window_id" ref="app_action_partner_supplier_form"/>
|
||||||
|
</record>
|
||||||
|
<record id="app_action_supplier_form_view2" model="ir.actions.act_window.view">
|
||||||
|
<field name="sequence" eval="2"/>
|
||||||
|
<field name="view_mode">tree</field>
|
||||||
|
<field name="view_id" ref="app_view_partner_supplier_tree"/>
|
||||||
|
<field name="act_window_id" ref="app_action_partner_supplier_form"/>
|
||||||
|
</record>
|
||||||
|
<!--end供应商-->
|
||||||
|
|
||||||
|
<!-- 所有合作伙伴 2017-11-13 -->
|
||||||
|
<record id="app_action_partner_form" model="ir.actions.act_window">
|
||||||
|
<field name="name">Partner</field>
|
||||||
|
<field name="type">ir.actions.act_window</field>
|
||||||
|
<field name="res_model">res.partner</field>
|
||||||
|
<field name="view_type">form</field>
|
||||||
|
<field name="view_mode">kanban,tree,form</field>
|
||||||
|
<field name="domain"></field>
|
||||||
|
<field name="context">{'default_customer': 0,'default_supplier': 0,'default_is_company':1}</field>
|
||||||
|
<field name="filter" eval="True"/>
|
||||||
|
<field name="view_id" ref="base.res_partner_kanban_view"/>
|
||||||
|
<field name="help" type="html">
|
||||||
|
<p class="oe_view_nocontent_create">
|
||||||
|
Click to add a contact in your address book.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Odoo helps you easily track all activities related to
|
||||||
|
a supplier: discussions, history of purchases,
|
||||||
|
documents, etc.
|
||||||
|
</p>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="app_action_partner_employee_form" model="ir.actions.act_window">
|
||||||
|
<field name="name">Employees</field>
|
||||||
|
<field name="type">ir.actions.act_window</field>
|
||||||
|
<field name="res_model">res.partner</field>
|
||||||
|
<field name="view_type">form</field>
|
||||||
|
<field name="domain">[('employee','=',1)]</field>
|
||||||
|
<field name="context">{'default_customer':0, 'default_supplier':0 , 'default_employee':1}</field>
|
||||||
|
<field name="filter" eval="True"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="app_action_partner_other_form" model="ir.actions.act_window">
|
||||||
|
<field name="name">Other Partners</field>
|
||||||
|
<field name="type">ir.actions.act_window</field>
|
||||||
|
<field name="res_model">res.partner</field>
|
||||||
|
<field name="view_type">form</field>
|
||||||
|
<field name="domain">[('supplier','<>',1),('customer','<>',1)]</field>
|
||||||
|
<field name="filter" eval="True"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!--<!– partner 菜单 –>-->
|
||||||
|
<!--<menuitem id="app_menu_partner" name="Partner" parent="app_home.app_menu_master_data" sequence="3"/>-->
|
||||||
|
<!--<!– 客户 –>-->
|
||||||
|
<!--<menuitem id="app_menu_partner_customer_form" action="app_action_partner_customer_form" parent="app_menu_partner" sequence="2"/>-->
|
||||||
|
<!--<!– 供应商 –>-->
|
||||||
|
<!--<menuitem id="app_menu_partner_supplier_form" action="app_action_partner_supplier_form" parent="app_menu_partner" sequence="3"/>-->
|
||||||
|
<!--<!– 所有partner –>-->
|
||||||
|
<!--<menuitem id="app_menu_partner_form" action="app_action_partner_form" parent="app_menu_partner" sequence="4"/>-->
|
||||||
|
<!--<!– 联系人分类标签 –>-->
|
||||||
|
<!--<menuitem id="app_menu_partner_category_form" action="base.action_partner_category_form" name="Contact Tags" sequence="11"-->
|
||||||
|
<!--parent="app_menu_partner" groups="base.group_no_one"/>-->
|
||||||
|
<!--<!– 联系人称谓 –>-->
|
||||||
|
<!--<menuitem id="app_menu_partner_title_contact" action="base.action_partner_title_contact" parent="app_menu_partner" sequence="12"-->
|
||||||
|
<!--groups="base.group_no_one"/>-->
|
||||||
|
|
||||||
|
</data>
|
||||||
|
</odoo>
|
||||||
Reference in New Issue
Block a user