This commit is contained in:
ivan deng
2018-12-14 15:50:35 +08:00
parent e64f920d2e
commit 16f3d36d94
24 changed files with 409 additions and 76 deletions

View File

@@ -0,0 +1,4 @@
# -*- coding: utf-8 -*-
from . import models
from .hooks import post_init_hook

View File

@@ -0,0 +1,62 @@
# -*- coding: utf-8 -*-
# Created on 2018-08-15
# author: 广州尚鹏http://www.sunpop.cn
# email: 300883@qq.com
# resource of Sunpop
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
# Odoo在线中文用户手册长期更新
# http://www.sunpop.cn/documentation/user/10.0/zh_CN/index.html
# Odoo10离线中文用户手册下载
# http://www.sunpop.cn/odoo10_user_manual_document_offline/
# Odoo10离线开发手册下载-含python教程jquery参考Jinja2模板PostgresSQL参考odoo开发必备
# http://www.sunpop.cn/odoo10_developer_document_offline/
# description:
{
'name': "App Multi Level Account Chart, parent children tree",
'version': '12.0.12.14',
'author': 'Sunpop.cn',
'category': 'Base',
'website': 'http://www.sunpop.cn',
'license': 'LGPL-3',
'sequence': 2,
'summary': """
Use for parent children tree list select navigator. Multi Level Account Chart tree.
ztree widget.
""",
'description': """
zTree widget.
Advance search with real parent children tree, ListView or KanbanView ,
eg: Account Chart tree, Product category tree,Department tree, stock location tree.
超级方便的查询,树状视图。
""",
'price': 0.00,
'currency': 'EUR',
'depends': [
'account',
'l10n_cn_standard_lastest',
],
'images': ['static/description/banner.gif'],
'data': [
'views/account_views.xml',
],
'demo': [
],
'test': [
],
'css': [
],
'qweb': [
'static/src/xml/*.xml',
],
'js': [
],
'post_load': None,
'post_init_hook': 'post_init_hook',
'installable': True,
'application': True,
'auto_install': False,
}

View File

@@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Created on 2018-10-12
# author: 广州尚鹏http://www.sunpop.cn
# email: 300883@qq.com
# resource of Sunpop
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
# Odoo在线中文用户手册长期更新
# http://www.sunpop.cn/documentation/user/10.0/zh_CN/index.html
# Odoo10离线中文用户手册下载
# http://www.sunpop.cn/odoo10_user_manual_document_offline/
# Odoo10离线开发手册下载-含python教程jquery参考Jinja2模板PostgresSQL参考odoo开发必备
# http://www.sunpop.cn/odoo10_developer_document_offline/
# description:
def post_init_hook(cr, pool):
pass
# cr.execute("")

View File

@@ -0,0 +1,14 @@
# Translation of Odoo Server.
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-01-08 14:28+0000\n"
"PO-Revision-Date: 2018-01-08 14:28+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"

View File

@@ -0,0 +1 @@
# -*- coding: utf-8 -*-

View File

@@ -0,0 +1,2 @@
# -*- coding: utf-8 -*-

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -0,0 +1,179 @@
<section class="oe_container">
<div class="oe_row oe_spaced" style="max-width: 95%;">
<h2 class="oe_slogan" style="color:#875A7B;">App ztree widget, for parent children tree list. Demo for hr department employee</h2>
<h3 class="oe_slogan">Very useful for parent child relationship, like product category, stock location, hr department</h3>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<div class="alert alert-info" style="padding:8px;font-weight: 300; font-size: 20px;">
<i class="fa fa-hand-o-right"></i><b> Key features: </b>
<ul class="list-unstyled">
<li>
<i class="fa fa-check-square-o text-primary"></i>
Easy to make custom parent children tree.
</li>
<li>
<i class="fa fa-check-square-o text-primary"></i>
Use in product category.
</li>
<li>
<i class="fa fa-check-square-o text-primary"></i>
Use in stock location.
</li>
<li>
<i class="fa fa-check-square-o text-primary"></i>
Use in hr department, employee.
</li>
<li>
<i class="fa fa-check-square-o text-primary"></i>
It's a widget, you can use it in anywhere in odoo.
</li>
</ul>
</div>
<div class="alert alert-info" style="padding:8px;font-weight: 300; font-size: 20px;">
<i class="fa fa-hand-o-right"></i><b>Extend features(Need extra module, release soon): </b>
<ul class="list-unstyled">
<li>
<i class="fa fa-check-square-o text-primary"></i>
Easy to navigate product, employee in tree or kanban view.
</li>
</ul>
</div>
<div class="alert alert-info" style="padding:8px;font-weight: 300; font-size: 20px;">
<i class="fa fa-hand-o-right"></i><b>Get relate Module </b>
<ul class="list-unstyled">
<li>
<i class="fa fa-link text-primary"></i>
<a href="http://www.odoo.com/apps/modules/12.0/app_web_widget_ztree/" target="_blank" class="text-danger">zTree widget (must need to use in following demo).</a>
</li>
<li>
<i class="fa fa-link text-primary"></i>
<a href="http://www.odoo.com/apps/modules/12.0/app_product_ztree/" target="_blank">Product and category.</a>
</li>
<li>
<i class="fa fa-link text-primary"></i>
<a href="http://www.odoo.com/apps/modules/12.0/app_stock_ztree/" target="_blank">Stock and Location.</a>
</li>
<li>
<i class="fa fa-link text-primary"></i>
<a href="http://www.odoo.com/apps/modules/12.0/app_hr_ztree/" target="_blank">hr department and employee.</a>
</li>
</ul>
</div>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<h4 class="oe_slogan">Use in hr department.</h4>
<div class="oe_demo oe_picture oe_screenshot">
<img src="demo4.jpg">
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<h4 class="oe_slogan">Use in hr employee.</h4>
<div class="oe_demo oe_picture oe_screenshot">
<img src="demo5.jpg">
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<h4 class="oe_slogan">Use in product.</h4>
<div class="oe_demo oe_picture oe_screenshot">
<img src="demo2.jpg">
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<h4 class="oe_slogan">Use in product category.</h4>
<div class="oe_demo oe_picture oe_screenshot">
<img src="demo1.jpg">
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<h4 class="oe_slogan">Use in stock location.</h4>
<div class="oe_demo oe_picture oe_screenshot">
<img src="demo3.jpg">
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<h1>&nbsp;</h1>
<h1 class="text-danger text-center">(!Need extra module and pay, release soon)Easy to navigator.</h1>
<h4 class="oe_slogan">Product, employee in kanban view</h4>
<div class="oe_demo oe_picture oe_screenshot">
<img src="demo11.jpg">
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<h4 class="oe_slogan">(!Need extra module and pay, release soon)List view</h4>
<div class="oe_demo oe_picture oe_screenshot">
<img src="demo12.jpg">
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<h4 class="oe_slogan">Easy to setup just use widget='widget_select'. like this</h4>
<div class="oe_demo oe_picture oe_screenshot">
<img src="setup1.jpg">
</div>
<h1><br/> Use follow param to setup widget:<br/></h1>
<h4>ztree_parent_key: --the key field of parent children relation.</h4>
<h4>ztree_expend_level: --how many level to expend the tree for initialize. Default is 2</h4>
<h4>limit: --how many record to show ztree. Default is 16</h4>
<h4>order: --the field to order by</h4>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced text-center">
<div class="oe_span12">
<h2 class="oe_slogan">Technical Help & Support</h2>
</div>
<div class="col-md-12 pad0">
<div class="oe_mt16">
<p><h4>
For any type of technical help & support requests, Feel free to contact us</h4></p>
<a style="background: #002e5a none repeat scroll 0% 0%; color: rgb(255, 255, 255);position: relative; overflow: hidden;"
class="btn btn-warning btn-lg" rel="nofollow" href="mailto:guohuadeng@hotmail.com"><span
style="height: 354px; width: 354px; top: -147.433px; left: -6.93335px;" class="o_ripple"></span>
<i class="fa fa-envelope"></i> guohuadeng@hotmail.com</a>
<p><h4>
Via QQ: 300883</h4></p>
<a style="background: #002e5a none repeat scroll 0% 0%; color: rgb(255, 255, 255);position: relative; overflow: hidden;"
class="btn btn-warning btn-lg" rel="nofollow" href="mailto:300883@qq.com"><span
style="height: 354px; width: 354px; top: -147.433px; left: -6.93335px;" class="o_ripple"></span>
<i class="fa fa-envelope"></i> 300883@qq.com</a>
</div>
<div class="oe_mt16">
<p><h4>
Visit our website for more support.</h4></p>
<a style="background: #002e5a none repeat scroll 0% 0%; color: rgb(255, 255, 255);position: relative; overflow: hidden;"
class="btn btn-warning btn-lg" rel="nofollow" href="http://www.sunpop.cn" target="_blank"><span
style="height: 354px; width: 354px; top: -147.433px; left: -6.93335px;" class="o_ripple"></span>
<i class="fa fa-web"></i>http://www.sunpop.cn</a>
</div>
</div>
</div>
</section>

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

View File

@@ -0,0 +1,17 @@
<odoo>
<data>
<!-- account -->
<record id="app_view_account_form" model="ir.ui.view">
<field name="name">app.account.account.form</field>
<field name="model">account.account</field>
<field name="inherit_id" ref="l10n_cn_standard_lastest.app_view_account_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='parent_id']" position="attributes">
<!-- Add your fields or attributes here -->
<attribute name="widget">ztree_select</attribute>
<attribute name="ztree_parent_key">parent_id</attribute>
</xpath>
</field>
</record>
</data>
</odoo>

View File

@@ -3,7 +3,7 @@
<data noupdate="1"> <data noupdate="1">
<!-- Country --> <!-- Country -->
<record id="base.cn" model="res.country"> <record id="base.cn" model="res.country">
<field eval="'%(country_name)s%(state_name)s%(city)s%(street)s%(street2)s %(zip)s'" name="address_format" /> <field eval="'%(country_name)s%(state_name)s%(city)s%(zip)s\n%(street)s\n%(street2)s'" name="address_format" />
</record> </record>
</data> </data>
</odoo> </odoo>

View File

@@ -19,24 +19,17 @@
<field name="credit_limit"/> <field name="credit_limit"/>
</xpath> </xpath>
<!--res.partner客户 地址中国化 --> <!--res.partner客户 地址中国化 -->
<xpath expr="//div[@class='o_address_format']" position="replace"> <xpath expr="//field[@name='street']" position="before">
<div class="o_address_format"> <xpath expr="//field[@name='country_id']" position="move"/>
<div class="oe_edit_only"> </xpath>
<button name="open_parent" type="object" string="(edit)" class="oe_link" <xpath expr="//field[@name='street']" position="before">
attrs="{'invisible': ['|', ('parent_id', '=', False), ('type', '!=', 'contact')]}"/> <xpath expr="//field[@name='state_id']" position="move"/>
</div> </xpath>
<field name="country_id" placeholder="Country" class="o_address_country" options='{"no_open": True, "no_create": True}' <xpath expr="//field[@name='street']" position="before">
attrs="{'readonly': [('type', '=', 'contact'),('parent_id', '!=', False)]}"/> <xpath expr="//field[@name='city']" position="move"/>
<field name="state_id" class="o_address_state" placeholder="State" options='{"no_open": True}' </xpath>
attrs="{'readonly': [('type', '=', 'contact'),('parent_id', '!=', False)]}" context="{'country_id': country_id, 'zip': zip}"/> <xpath expr="//field[@name='street']" position="before">
<field name="city" placeholder="City" class="o_address_city" <xpath expr="//field[@name='zip']" position="move"/>
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> </xpath>
<!-- res.partner联系人 form --> <!-- res.partner联系人 form -->
<!-- 所有类型联系人默认都不是客户,不是供应商--> <!-- 所有类型联系人默认都不是客户,不是供应商-->
@@ -56,57 +49,101 @@
<attribute name="required">1</attribute> <attribute name="required">1</attribute>
</xpath> </xpath>
<!-- 联系人也显示地址,中国格式 --> <!-- 联系人也显示地址,中国格式 -->
<xpath expr="//page//field[@name='child_ids']//form[1]//group//group" position="replace"> <!--res.partner客户 地址中国化 -->
<group attrs=""> <xpath expr="//field[@name='child_ids']//form[1]//field[@name='street']" position="before">
<label for="street" string="Address"/> <xpath expr="//field[@name='child_ids']//form[1]//field[@name='country_id']" position="move"/>
<div> </xpath>
<div class="o_address_format" name="div_address"> <xpath expr="//field[@name='child_ids']//form[1]//field[@name='street']" position="before">
<field name="country_id" placeholder="Country" class="o_address_country" <xpath expr="//field[@name='child_ids']//form[1]//field[@name='state_id']" position="move"/>
options='{"no_open": True, "no_create": True}'/> </xpath>
<field name="state_id" class="o_address_state" placeholder="State" <xpath expr="//field[@name='child_ids']//form[1]//field[@name='street']" position="before">
options='{"no_open": True}' context="{'country_id': country_id, 'zip': zip}"/> <xpath expr="//field[@name='child_ids']//form[1]//field[@name='city']" position="move"/>
<field name="city" placeholder="City" class="o_address_city"/> </xpath>
<field name="zip" placeholder="ZIP" class="o_address_zip"/> <xpath expr="//field[@name='child_ids']//form[1]//field[@name='street']" position="before">
<field name="street" placeholder="Street..." class="o_address_street"/> <xpath expr="//field[@name='child_ids']//form[1]//field[@name='zip']" position="move"/>
<field name="street2" invisible="1"/>
</div>
</div>
</group>
</xpath> </xpath>
<!-- res.partner联系人 kanban --> <!-- res.partner联系人 kanban -->
<!-- 显示类型和地址等 --> <!-- 显示类型和地址等 -->
<xpath expr="//page//field[@name='child_ids']//kanban[1]//templates//div[@class='oe_kanban_details']" position="replace"> <xpath expr="//field[@name='child_ids']//kanban[1]//templates//field[@name='name']" position="before">
<div class="oe_kanban_details"> <t t-if="record.ref.raw_value">[<field name="ref"/>]</t>
<div> </xpath>
[<field name="ref"/>] <xpath expr="//field[@name='child_ids']//kanban[1]//templates//field[@name='name']" position="after">
<strong> <div t-if="record.type.raw_value"><field name="type"/></div>
<field name="name"/> </xpath>
</strong> </field>
</div> </record>
<div>
<field name="type"/> <!--res.partner open地址中国化 -->
</div> <record id="app_view_partner_address_form" model="ir.ui.view">
<div t-if="record.function.raw_value"> <field name="name">app.res.partner.form.address</field>
<field name="function"/> <field name="model">res.partner</field>
</div> <field name="inherit_id" ref="base.view_partner_address_form"/>
<div t-if="record.email.raw_value"> <field name="arch" type="xml">
<field name="email"/> <xpath expr="//field[@name='street']" position="before">
</div> <xpath expr="//field[@name='country_id']" position="move"/>
<div> </xpath>
<field t-if="record.state_id.raw_value" name="state_id"/> <xpath expr="//field[@name='street']" position="before">
<div> <xpath expr="//field[@name='state_id']" position="move"/>
<field name="city"/> </xpath>
<field name="street"/> <xpath expr="//field[@name='street']" position="before">
<field name="zip" invisible="1"/> <xpath expr="//field[@name='city']" position="move"/>
</div> </xpath>
</div> <xpath expr="//field[@name='street']" position="before">
<div t-if="record.phone.raw_value">Tel: <xpath expr="//field[@name='zip']" position="move"/>
<field name="phone"/> </xpath>
</div> </field>
<div t-if="record.mobile.raw_value">Mobile: </record>
<field name="mobile"/> <!--res.partner open地址中国化 -->
</div> <record id="app_view_partner_short_form" model="ir.ui.view">
</div> <field name="name">app.res.partner.form</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_short_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='street']" position="before">
<xpath expr="//field[@name='country_id']" position="move"/>
</xpath>
<xpath expr="//field[@name='street']" position="before">
<xpath expr="//field[@name='state_id']" position="move"/>
</xpath>
<xpath expr="//field[@name='street']" position="before">
<xpath expr="//field[@name='city']" position="move"/>
</xpath>
<xpath expr="//field[@name='street']" position="before">
<xpath expr="//field[@name='zip']" position="move"/>
</xpath>
</field>
</record>
<!--res.partner 私人地址中国化 -->
<record id="app_res_partner_view_form_private" model="ir.ui.view">
<field name="name">app.res.partner.view.form.private</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.res_partner_view_form_private"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='street']" position="before">
<xpath expr="//field[@name='country_id']" position="move"/>
</xpath>
<xpath expr="//field[@name='street']" position="before">
<xpath expr="//field[@name='state_id']" position="move"/>
</xpath>
<xpath expr="//field[@name='street']" position="before">
<xpath expr="//field[@name='city']" position="move"/>
</xpath>
<xpath expr="//field[@name='street']" position="before">
<xpath expr="//field[@name='zip']" position="move"/>
</xpath>
</field>
</record>
<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="mobile"/>
</xpath>
<xpath expr="//field[@name='email']" position="after">
<field name="category_id"/>
</xpath> </xpath>
</field> </field>
</record> </record>

View File

@@ -13,10 +13,10 @@ class SaleOrderLine(models.Model):
# weight_uom_name = fields.Char(string='Weight Measure', related='product_id.weight_uom_id.name', readonly=True) # weight_uom_name = fields.Char(string='Weight Measure', related='product_id.weight_uom_id.name', readonly=True)
weight = fields.Float(string='Weight', related='product_id.weight', store=True, readonly=True) weight = fields.Float(string='Weight', related='product_id.weight', store=True, readonly=True)
weight_subtotal = fields.Float(string='Weight Subtotal', compute='_compute_weight_subtotal', weight_subtotal = fields.Float(string='Weight Subtotal', compute='_compute_weight_subtotal',
inverse='_set_weight_subtotal', store=True) inverse='_set_weight_subtotal', store=True)
@api.multi @api.multi
@api.depends('product_id', 'product_uom', 'product_uom_qty') @api.depends('product_id', 'weight', 'product_uom', 'product_uom_qty')
def _compute_weight_subtotal(self): def _compute_weight_subtotal(self):
for line in self: for line in self:
weight_subtotal = 0 weight_subtotal = 0

View File

@@ -10,18 +10,15 @@
{ {
'name': '2018最新中国企业会计表.Latest Chinese Accounting.', 'name': '2018最新中国企业会计表.Latest Chinese Accounting.',
'version': '12.0.11.14', 'version': '12.0.12.14',
'author': 'Sunpop.cn', 'author': 'Sunpop.cn',
'category': 'Localization', 'category': 'Localization',
'website': 'http://www.sunpop.cn', 'website': 'http://www.sunpop.cn',
'license': 'LGPL-3', 'license': 'LGPL-3',
'sequence': 12, 'sequence': 12,
'summary': """ 'summary': """
Chinese enhance. Focus on account chart. Multi level account chart. Chinese enhance. Focus on account chart.
update tax. Add account chart group data. Account group, Chinese tax.
add account chart group data.
Set account group.
Set chinese tax.
Set chinese account report. Set chinese account report.
""", """,
'description': """ 'description': """
@@ -31,7 +28,7 @@
2. 将菜单中设置为"财务" 2. 将菜单中设置为"财务"
3. 补充分类及标签信息。 3. 补充分类及标签信息。
4. 更新税信息。 4. 更新税信息。
5. 增加树状结构,可设置上级科目,配合 "app_web_superbar" 使用可轻易实现树状导航。 5. 增加树状结构,支持二级科目,可设置上级科目,配合 "app_web_superbar" 使用可轻易实现树状导航。
6. 使用金蝶的会计科目命名法对多级科目进行初始化。可自行调整为用友科目命名法 6. 使用金蝶的会计科目命名法对多级科目进行初始化。可自行调整为用友科目命名法
7. 注意,必须在没有业务数据,没有会计科目的初始环境。可以使用 "app_odoo_customize" 模块清除财务数据,重置会计科目。 7. 注意,必须在没有业务数据,没有会计科目的初始环境。可以使用 "app_odoo_customize" 模块清除财务数据,重置会计科目。