mirror of
https://github.com/guohuadeng/app-odoo.git
synced 2025-02-23 04:11:36 +02:00
update app
This commit is contained in:
@@ -43,6 +43,7 @@
|
|||||||
'currency': 'EUR',
|
'currency': 'EUR',
|
||||||
'images': ['static/description/banner.png'],
|
'images': ['static/description/banner.png'],
|
||||||
'depends': [
|
'depends': [
|
||||||
|
'base',
|
||||||
'web',
|
'web',
|
||||||
],
|
],
|
||||||
'summary': '''
|
'summary': '''
|
||||||
@@ -67,7 +68,7 @@
|
|||||||
# 'security/*.xml',
|
# 'security/*.xml',
|
||||||
# 'security/ir.model.access.csv',
|
# 'security/ir.model.access.csv',
|
||||||
# 'data/.xml',
|
# 'data/.xml',
|
||||||
# 'views/.xml',
|
# 'views/ir_module_module_views.xml',
|
||||||
# 'report/.xml',
|
# 'report/.xml',
|
||||||
],
|
],
|
||||||
'qweb': [
|
'qweb': [
|
||||||
|
|||||||
@@ -24,4 +24,6 @@
|
|||||||
|
|
||||||
from . import base
|
from . import base
|
||||||
from . import fields
|
from . import fields
|
||||||
|
# from . import validator
|
||||||
|
from . import ir_ui_view
|
||||||
|
|
||||||
|
|||||||
67
app_common/models/ir_ui_view.py
Normal file
67
app_common/models/ir_ui_view.py
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from odoo import api, models, tools, SUPERUSER_ID
|
||||||
|
from odoo.modules.module import get_resource_path
|
||||||
|
from odoo.tools import view_validation
|
||||||
|
from odoo.tools.view_validation import _relaxng_cache, validate, _validators
|
||||||
|
from odoo.tools.safe_eval import safe_eval
|
||||||
|
|
||||||
|
from lxml import etree
|
||||||
|
import logging
|
||||||
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@validate('tree')
|
||||||
|
def app_valid_field_in_tree(arch, **kwargs):
|
||||||
|
# 增加 header
|
||||||
|
return all(
|
||||||
|
child.tag in ('field', 'button', 'control', 'groupby', 'header')
|
||||||
|
for child in arch.xpath('/tree/*')
|
||||||
|
)
|
||||||
|
|
||||||
|
def app_relaxng(view_type):
|
||||||
|
""" Return a validator for the given view type, or None. """
|
||||||
|
if view_type not in _relaxng_cache:
|
||||||
|
# tree 特殊
|
||||||
|
if view_type == 'tree':
|
||||||
|
_file = get_resource_path('app_common', 'rng', 'tree_view.rng')
|
||||||
|
else:
|
||||||
|
_file = get_resource_path('base', 'rng', '%s_view.rng' % view_type)
|
||||||
|
with tools.file_open(_file) as frng:
|
||||||
|
try:
|
||||||
|
relaxng_doc = etree.parse(frng)
|
||||||
|
_relaxng_cache[view_type] = etree.RelaxNG(relaxng_doc)
|
||||||
|
except Exception:
|
||||||
|
_logger.exception('Failed to load RelaxNG XML schema for views validation')
|
||||||
|
_relaxng_cache[view_type] = None
|
||||||
|
_logger.error('==================new rng: %s' % _file)
|
||||||
|
return _relaxng_cache[view_type]
|
||||||
|
|
||||||
|
def app_reset_valid_view(view_type):
|
||||||
|
_relaxng_cache = view_validation._relaxng_cache
|
||||||
|
for pred in _validators[view_type]:
|
||||||
|
# 要pop掉函数 valid_field_in_tree
|
||||||
|
if pred.__name__ == 'valid_field_in_tree':
|
||||||
|
_validators[view_type].remove(pred)
|
||||||
|
try:
|
||||||
|
_relaxng_cache.pop(view_type, None)
|
||||||
|
_relaxng_cache[view_type] = None
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
_relaxng_cache[view_type] = app_relaxng(view_type)
|
||||||
|
|
||||||
|
app_reset_valid_view('tree')
|
||||||
|
view_validation.valid_field_in_tree = app_valid_field_in_tree
|
||||||
|
view_validation.relaxng = app_relaxng
|
||||||
|
|
||||||
|
class View(models.Model):
|
||||||
|
_inherit = 'ir.ui.view'
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super(View, self).__init__(*args, **kwargs)
|
||||||
|
view_validation.relaxng = app_relaxng
|
||||||
|
# 重置 tree
|
||||||
|
app_reset_valid_view('tree')
|
||||||
|
|
||||||
|
# todo: 有可能需要处理增加的 header等标签
|
||||||
|
# 直接重写原生方法
|
||||||
|
# def transfer_node_to_modifiers(node, modifiers, context=None, in_tree_view=False):
|
||||||
78
app_common/models/validator_old.py
Normal file
78
app_common/models/validator_old.py
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from odoo import tools, _
|
||||||
|
from odoo.modules.module import get_resource_path
|
||||||
|
from odoo.tools import view_validation
|
||||||
|
from odoo.tools.view_validation import validate, _validators
|
||||||
|
from lxml import etree
|
||||||
|
import logging
|
||||||
|
|
||||||
|
|
||||||
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
_relaxng_cache = view_validation._relaxng_cache
|
||||||
|
_relaxng_cache['tree'] = None
|
||||||
|
with tools.file_open(get_resource_path('app_common', 'rng', 'tree_view.rng')) as frng:
|
||||||
|
try:
|
||||||
|
text = frng.read()
|
||||||
|
# with tools.file_open('addons/base/rng/common.rng') as common_rng:
|
||||||
|
# common_txt = common_rng.read()
|
||||||
|
# start_pos = common_txt.find('<rng:grammar')
|
||||||
|
# start_pos = common_txt.find('>', start_pos)
|
||||||
|
# end_pos = common_txt.find('</rng:grammar>')
|
||||||
|
# common_content = common_txt[start_pos + 1: end_pos]
|
||||||
|
#
|
||||||
|
# # 从14中学习,最新 common
|
||||||
|
# # <rng:optional><rng:attribute name="kanban_view_ref" />
|
||||||
|
# old_content = '''
|
||||||
|
# <rng:optional><rng:attribute name="kanban_view_ref" /></rng:optional>
|
||||||
|
# '''
|
||||||
|
# new_content = '''
|
||||||
|
# <rng:optional><rng:attribute name="hierarchize"/></rng:optional>
|
||||||
|
# <rng:optional><rng:attribute name="expand"/></rng:optional>
|
||||||
|
# <rng:optional><rng:attribute name="enable_counters"/></rng:optional>
|
||||||
|
# <rng:optional><rng:attribute name="limit"/></rng:optional>
|
||||||
|
# <rng:optional><rng:attribute name="decoration-bf"/></rng:optional>
|
||||||
|
# <rng:optional><rng:attribute name="decoration-it"/></rng:optional>
|
||||||
|
# <rng:optional><rng:attribute name="decoration-danger"/></rng:optional>
|
||||||
|
# <rng:optional><rng:attribute name="decoration-info"/></rng:optional>
|
||||||
|
# <rng:optional><rng:attribute name="decoration-muted"/></rng:optional>
|
||||||
|
# <rng:optional><rng:attribute name="decoration-primary"/></rng:optional>
|
||||||
|
# <rng:optional><rng:attribute name="decoration-success"/></rng:optional>
|
||||||
|
# <rng:optional><rng:attribute name="decoration-warning"/></rng:optional>
|
||||||
|
# <rng:optional><rng:attribute name="kanban_view_ref" /></rng:optional>
|
||||||
|
# '''
|
||||||
|
# common_content = common_content.replace(old_content, new_content)
|
||||||
|
# # common 替代
|
||||||
|
# text = text.replace('<rng:include href=\"common.rng\"/>', common_content)
|
||||||
|
# # tree 替代
|
||||||
|
# old_content = '''<rng:ref name="control"/>'''
|
||||||
|
# new_content = '''<rng:element name="header">
|
||||||
|
# <rng:zeroOrMore>
|
||||||
|
# <rng:ref name="button"/>
|
||||||
|
# </rng:zeroOrMore>
|
||||||
|
# </rng:element>
|
||||||
|
# <rng:ref name="control"/>'''
|
||||||
|
# text = text.replace(old_content, new_content)
|
||||||
|
# # 增加 fx_tree_table 支持
|
||||||
|
# text = text.replace('<rng:optional><rng:attribute name=\"js_class\"/></rng:optional>',
|
||||||
|
# '<rng:optional><rng:attribute name=\"js_class\"/></rng:optional><rng:optional><rng:attribute name=\"options\"/></rng:optional>')
|
||||||
|
|
||||||
|
tmp_doc = etree.fromstring(text.encode('utf-8'))
|
||||||
|
_relaxng_cache['tree'] = etree.RelaxNG(tmp_doc)
|
||||||
|
_logger.warning('=========new tree done: %s' % _relaxng_cache['tree'])
|
||||||
|
except Exception as error:
|
||||||
|
_logger.exception('Failed to load RelaxNG XML schema for views validation, {error}'.format(
|
||||||
|
error=error))
|
||||||
|
_relaxng_cache['tree'] = None
|
||||||
|
|
||||||
|
|
||||||
|
@validate('tree')
|
||||||
|
def app_valid_field_in_tree(arch, **kwargs):
|
||||||
|
# 增加 header
|
||||||
|
return all(
|
||||||
|
child.tag in ('field', 'button', 'control', 'groupby', 'header')
|
||||||
|
for child in arch.xpath('/tree/*')
|
||||||
|
)
|
||||||
|
|
||||||
|
view_validation.valid_field_in_tree = app_valid_field_in_tree
|
||||||
29
app_common/rng/activity_view.rng
Normal file
29
app_common/rng/activity_view.rng
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
|
||||||
|
xmlns:a="http://relaxng.org/ns/annotation/1.0"
|
||||||
|
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
||||||
|
|
||||||
|
<include href="common.rng"/>
|
||||||
|
|
||||||
|
<define name="activity">
|
||||||
|
<element name="activity">
|
||||||
|
<attribute name="string"/>
|
||||||
|
<optional><attribute name="create"/></optional>
|
||||||
|
<interleave>
|
||||||
|
<zeroOrMore><ref name="field"/></zeroOrMore>
|
||||||
|
<optional>
|
||||||
|
<element name="templates">
|
||||||
|
<oneOrMore>
|
||||||
|
<ref name="any"/>
|
||||||
|
</oneOrMore>
|
||||||
|
</element>
|
||||||
|
</optional>
|
||||||
|
</interleave>
|
||||||
|
</element>
|
||||||
|
</define>
|
||||||
|
|
||||||
|
<start>
|
||||||
|
<ref name="activity"/>
|
||||||
|
</start>
|
||||||
|
|
||||||
|
</grammar>
|
||||||
48
app_common/rng/calendar_view.rng
Normal file
48
app_common/rng/calendar_view.rng
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<rng:grammar xmlns:rng="http://relaxng.org/ns/structure/1.0"
|
||||||
|
xmlns:a="http://relaxng.org/ns/annotation/1.0"
|
||||||
|
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
||||||
|
<!-- Handling of element overloading when inheriting from a base
|
||||||
|
template
|
||||||
|
-->
|
||||||
|
<rng:include href="common.rng"/>
|
||||||
|
<rng:define name="calendar">
|
||||||
|
<rng:element name="calendar">
|
||||||
|
<rng:optional><rng:attribute name="string" /></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="date_start" /></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="date_stop" /></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="date_delay" /></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="all_day" /></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="form_view_id" /></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="event_limit" /></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="quick_add" /></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="color" /></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="event_open_popup" /></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="show_unusual_days" /></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="js_class"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="hide_time"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="hide_date"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="create"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="delete"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="scales"/></rng:optional>
|
||||||
|
<rng:optional>
|
||||||
|
<rng:attribute name="mode">
|
||||||
|
<rng:choice>
|
||||||
|
<rng:value>year</rng:value>
|
||||||
|
<rng:value>month</rng:value>
|
||||||
|
<rng:value>week</rng:value>
|
||||||
|
<rng:value>day</rng:value>
|
||||||
|
</rng:choice>
|
||||||
|
</rng:attribute>
|
||||||
|
</rng:optional>
|
||||||
|
<rng:zeroOrMore>
|
||||||
|
<rng:ref name="field"/>
|
||||||
|
</rng:zeroOrMore>
|
||||||
|
</rng:element>
|
||||||
|
</rng:define>
|
||||||
|
<rng:start>
|
||||||
|
<rng:choice>
|
||||||
|
<rng:ref name="calendar" />
|
||||||
|
</rng:choice>
|
||||||
|
</rng:start>
|
||||||
|
</rng:grammar>
|
||||||
433
app_common/rng/common.rng
Normal file
433
app_common/rng/common.rng
Normal file
@@ -0,0 +1,433 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<rng:grammar xmlns:rng="http://relaxng.org/ns/structure/1.0"
|
||||||
|
xmlns:a="http://relaxng.org/ns/annotation/1.0"
|
||||||
|
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
||||||
|
<!-- Handling of element overloading when inheriting from a base
|
||||||
|
template
|
||||||
|
-->
|
||||||
|
|
||||||
|
<rng:define name="overload">
|
||||||
|
<rng:optional>
|
||||||
|
<!--
|
||||||
|
Alter matched element with content
|
||||||
|
-->
|
||||||
|
<rng:choice>
|
||||||
|
<rng:attribute name="position">
|
||||||
|
<rng:choice>
|
||||||
|
<!-- Insert content before first child -->
|
||||||
|
<rng:value>before</rng:value>
|
||||||
|
<!-- Insert content after last child -->
|
||||||
|
<rng:value>after</rng:value>
|
||||||
|
<!-- Replace all children with content -->
|
||||||
|
<rng:value>inside</rng:value>
|
||||||
|
<!-- Replace matched element itself with content -->
|
||||||
|
<rng:value>replace</rng:value>
|
||||||
|
</rng:choice>
|
||||||
|
</rng:attribute>
|
||||||
|
<rng:group>
|
||||||
|
<rng:attribute name="position">
|
||||||
|
<!-- Edit element attributes -->
|
||||||
|
<rng:value>attributes</rng:value>
|
||||||
|
</rng:attribute>
|
||||||
|
<rng:oneOrMore>
|
||||||
|
<rng:element name="attribute">
|
||||||
|
<rng:attribute name="name"><rng:text/></rng:attribute>
|
||||||
|
<rng:text />
|
||||||
|
</rng:element>
|
||||||
|
</rng:oneOrMore>
|
||||||
|
</rng:group>
|
||||||
|
</rng:choice>
|
||||||
|
</rng:optional>
|
||||||
|
</rng:define>
|
||||||
|
|
||||||
|
<rng:define name="modifiable">
|
||||||
|
<rng:optional>
|
||||||
|
<!-- @modifiers contains a JSON map unifying the various
|
||||||
|
modifier attributes: @readonly, @required, @invisible.
|
||||||
|
Each attribute is a key, mapped to a JSON list representing
|
||||||
|
a condition expressed as an OpenERP `domain` filter
|
||||||
|
Only some of the modifier keys make sense on some
|
||||||
|
elements, for example <filter> and <group> only support
|
||||||
|
`invisible`. -->
|
||||||
|
<rng:attribute name="modifiers"/>
|
||||||
|
</rng:optional>
|
||||||
|
</rng:define>
|
||||||
|
|
||||||
|
<rng:define name="access_rights">
|
||||||
|
<rng:optional>
|
||||||
|
<rng:attribute name="groups"/>
|
||||||
|
</rng:optional>
|
||||||
|
</rng:define>
|
||||||
|
|
||||||
|
<rng:define name="container">
|
||||||
|
<rng:optional><rng:attribute name="col"/></rng:optional>
|
||||||
|
<rng:zeroOrMore>
|
||||||
|
<rng:choice>
|
||||||
|
<rng:ref name="field"/>
|
||||||
|
<rng:ref name="group"/>
|
||||||
|
<rng:ref name="button"/>
|
||||||
|
<rng:ref name="label" />
|
||||||
|
<rng:ref name="separator"/>
|
||||||
|
<rng:ref name="image"/>
|
||||||
|
<rng:ref name="filter"/>
|
||||||
|
<rng:ref name="html"/>
|
||||||
|
<rng:element name="newline"><rng:empty/></rng:element>
|
||||||
|
</rng:choice>
|
||||||
|
</rng:zeroOrMore>
|
||||||
|
</rng:define>
|
||||||
|
|
||||||
|
<rng:define name="image">
|
||||||
|
<rng:element name="image">
|
||||||
|
<rng:attribute name="name"/>
|
||||||
|
</rng:element>
|
||||||
|
</rng:define>
|
||||||
|
|
||||||
|
<rng:define name="html">
|
||||||
|
<rng:element name="html">
|
||||||
|
<rng:zeroOrMore>
|
||||||
|
<rng:text/>
|
||||||
|
<rng:ref name="any"/>
|
||||||
|
</rng:zeroOrMore>
|
||||||
|
</rng:element>
|
||||||
|
</rng:define>
|
||||||
|
|
||||||
|
<rng:define name="label">
|
||||||
|
<rng:element name="label">
|
||||||
|
<rng:ref name="overload"/>
|
||||||
|
<rng:ref name="access_rights"/>
|
||||||
|
<rng:ref name="modifiable"/>
|
||||||
|
<rng:optional><rng:attribute name="invisible"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="align"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="nolabel"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="colspan"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="string"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="angle"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="fill"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="help"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="width"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="wrap"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="name"/></rng:optional>
|
||||||
|
<rng:optional>
|
||||||
|
<!-- @for: allows to explicitely link a label to a field -->
|
||||||
|
<rng:attribute name="for"/>
|
||||||
|
</rng:optional>
|
||||||
|
<rng:zeroOrMore>
|
||||||
|
<rng:choice>
|
||||||
|
<rng:text/>
|
||||||
|
<rng:ref name="field"/>
|
||||||
|
<rng:ref name="group"/>
|
||||||
|
<rng:ref name="button"/>
|
||||||
|
<rng:ref name="label" />
|
||||||
|
<rng:ref name="separator"/>
|
||||||
|
<rng:ref name="image"/>
|
||||||
|
<rng:ref name="filter"/>
|
||||||
|
<rng:ref name="html"/>
|
||||||
|
<rng:element name="newline"><rng:empty/></rng:element>
|
||||||
|
</rng:choice>
|
||||||
|
</rng:zeroOrMore>
|
||||||
|
</rng:element>
|
||||||
|
</rng:define>
|
||||||
|
|
||||||
|
<rng:define name="any">
|
||||||
|
<rng:element>
|
||||||
|
<rng:anyName/>
|
||||||
|
<rng:zeroOrMore>
|
||||||
|
<rng:choice>
|
||||||
|
<rng:attribute>
|
||||||
|
<rng:anyName/>
|
||||||
|
</rng:attribute>
|
||||||
|
<rng:text/>
|
||||||
|
<rng:ref name="any"/>
|
||||||
|
</rng:choice>
|
||||||
|
</rng:zeroOrMore>
|
||||||
|
</rng:element>
|
||||||
|
</rng:define>
|
||||||
|
|
||||||
|
<rng:define name="separator">
|
||||||
|
<rng:element name="separator">
|
||||||
|
<rng:ref name="overload"/>
|
||||||
|
<rng:ref name="access_rights"/>
|
||||||
|
<rng:ref name="modifiable"/>
|
||||||
|
<rng:optional><rng:attribute name="invisible"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="name"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="colspan"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="rowspan"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="string"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="col"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="select"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="orientation"/></rng:optional>
|
||||||
|
<rng:zeroOrMore>
|
||||||
|
<rng:choice>
|
||||||
|
<rng:ref name="separator"/>
|
||||||
|
<rng:ref name="button"/>
|
||||||
|
<rng:ref name="field"/>
|
||||||
|
<rng:ref name="label" />
|
||||||
|
<rng:ref name="group" />
|
||||||
|
<rng:ref name="filter"/>
|
||||||
|
<rng:ref name="html"/>
|
||||||
|
<rng:element name="newline"><rng:empty/></rng:element>
|
||||||
|
</rng:choice>
|
||||||
|
</rng:zeroOrMore>
|
||||||
|
</rng:element>
|
||||||
|
</rng:define>
|
||||||
|
|
||||||
|
<rng:define name="xpath">
|
||||||
|
<rng:element name="xpath">
|
||||||
|
<rng:optional><rng:attribute name="expr"/></rng:optional>
|
||||||
|
<rng:ref name="overload"/>
|
||||||
|
<rng:zeroOrMore>
|
||||||
|
<rng:choice>
|
||||||
|
<rng:ref name="any"/>
|
||||||
|
<rng:ref name="button"/>
|
||||||
|
<rng:ref name="html"/>
|
||||||
|
</rng:choice>
|
||||||
|
</rng:zeroOrMore>
|
||||||
|
</rng:element>
|
||||||
|
</rng:define>
|
||||||
|
|
||||||
|
<rng:define name="data">
|
||||||
|
<rng:element name="data">
|
||||||
|
<rng:zeroOrMore>
|
||||||
|
<rng:choice>
|
||||||
|
<rng:ref name="field"/>
|
||||||
|
<rng:ref name="label"/>
|
||||||
|
<rng:ref name="separator"/>
|
||||||
|
<rng:ref name="xpath"/>
|
||||||
|
<rng:ref name="button"/>
|
||||||
|
<rng:ref name="group"/>
|
||||||
|
<rng:ref name="filter"/>
|
||||||
|
<rng:ref name="html"/>
|
||||||
|
<rng:element name="newline"><rng:empty/></rng:element>
|
||||||
|
</rng:choice>
|
||||||
|
</rng:zeroOrMore>
|
||||||
|
</rng:element>
|
||||||
|
</rng:define>
|
||||||
|
|
||||||
|
<rng:define name="field">
|
||||||
|
<rng:element name="field">
|
||||||
|
<rng:attribute name="name" />
|
||||||
|
<rng:ref name="overload"/>
|
||||||
|
<rng:ref name="access_rights"/>
|
||||||
|
<rng:ref name="modifiable"/>
|
||||||
|
<rng:optional><rng:attribute name="domain_filter"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="attrs"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="class"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="string"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="completion"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="width"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="type"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="ref"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="eval"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="search"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="model"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="use"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="on_change"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="domain"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="filter_domain"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="invisible"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="password"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="comparator"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="sum"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="bold"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="avg"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="select"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="hierarchize"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="expand"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="group"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="color"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="groupby"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="disable_counters"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="enable_counters"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="limit"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="operator"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="colspan"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="nolabel"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="required"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="readonly"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="view_mode"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="widget"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="context"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="states"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="digits"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="icon"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="mode"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="size"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="filename"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="height"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="rowspan"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="align"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="selection"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="default_focus"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="filters"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="statusbar_visible"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="can_create" /></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="can_write" /></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="interval" /></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="avatar_field" /></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="write_model" /></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="write_field" /></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="text" /></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="optional" /></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="decoration-bf"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="decoration-it"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="decoration-danger"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="decoration-info"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="decoration-muted"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="decoration-primary"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="decoration-success"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="decoration-warning"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="kanban_view_ref" /></rng:optional>
|
||||||
|
<rng:optional>
|
||||||
|
<rng:attribute name="force_save">
|
||||||
|
<rng:choice>
|
||||||
|
<rng:value>1</rng:value>
|
||||||
|
<rng:value>0</rng:value>
|
||||||
|
</rng:choice>
|
||||||
|
</rng:attribute>
|
||||||
|
</rng:optional>
|
||||||
|
<!-- Widget *static* options defined as an arbitrary JSON dict, with
|
||||||
|
widget-dependent parameters. To be ignored if widget/client does
|
||||||
|
not support them. -->
|
||||||
|
<rng:optional><rng:attribute name="options"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="placeholder"/></rng:optional>
|
||||||
|
<rng:zeroOrMore>
|
||||||
|
<rng:choice>
|
||||||
|
<rng:ref name="data"/>
|
||||||
|
<rng:ref name="field"/>
|
||||||
|
<rng:ref name="label"/>
|
||||||
|
<rng:ref name="separator"/>
|
||||||
|
<rng:ref name="xpath"/>
|
||||||
|
<rng:ref name="button"/>
|
||||||
|
<rng:ref name="group"/>
|
||||||
|
<rng:ref name="filter"/>
|
||||||
|
<rng:ref name="html"/>
|
||||||
|
<rng:element name="newline"><rng:empty/></rng:element>
|
||||||
|
</rng:choice>
|
||||||
|
</rng:zeroOrMore>
|
||||||
|
</rng:element>
|
||||||
|
</rng:define>
|
||||||
|
|
||||||
|
<rng:define name="group">
|
||||||
|
<rng:element name="group">
|
||||||
|
<rng:ref name="overload"/>
|
||||||
|
<rng:ref name="access_rights"/>
|
||||||
|
<rng:ref name="modifiable"/>
|
||||||
|
<rng:optional><rng:attribute name="attrs"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="colspan"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="rowspan"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="expand"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="states"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="string"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="fill"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="height"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="width"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="name"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="color" /></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="invisible"/></rng:optional>
|
||||||
|
<rng:zeroOrMore>
|
||||||
|
<rng:ref name="field"/>
|
||||||
|
</rng:zeroOrMore>
|
||||||
|
<rng:ref name="container"/>
|
||||||
|
</rng:element>
|
||||||
|
</rng:define>
|
||||||
|
|
||||||
|
<rng:define name="button">
|
||||||
|
<rng:element name="button">
|
||||||
|
<rng:ref name="overload"/>
|
||||||
|
<rng:ref name="access_rights"/>
|
||||||
|
<rng:ref name="modifiable"/>
|
||||||
|
<rng:optional><rng:attribute name="attrs"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="invisible"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="name" /></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="icon" /></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="string" /></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="states" /></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="type" /></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="special" /></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="align" /></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="colspan"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="target"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="readonly"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="context"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="confirm"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="help"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="class"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="default_focus"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="tabindex"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="title"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="aria-label"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="aria-pressed"/></rng:optional>
|
||||||
|
<rng:zeroOrMore>
|
||||||
|
<rng:choice>
|
||||||
|
<rng:ref name="field" />
|
||||||
|
<rng:ref name="xpath" />
|
||||||
|
<rng:ref name="separator"/>
|
||||||
|
<rng:ref name="button"/>
|
||||||
|
<rng:ref name="group"/>
|
||||||
|
<rng:ref name="filter"/>
|
||||||
|
<rng:ref name="html"/>
|
||||||
|
<rng:element name="newline"><rng:empty/></rng:element>
|
||||||
|
</rng:choice>
|
||||||
|
</rng:zeroOrMore>
|
||||||
|
|
||||||
|
</rng:element>
|
||||||
|
</rng:define>
|
||||||
|
|
||||||
|
<rng:define name="filter">
|
||||||
|
<rng:element name="filter">
|
||||||
|
<rng:ref name="overload"/>
|
||||||
|
<rng:ref name="access_rights"/>
|
||||||
|
<rng:ref name="modifiable"/>
|
||||||
|
<rng:attribute name="name"/>
|
||||||
|
<rng:optional><rng:attribute name="attrs"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="icon"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="invisible"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="separator" /></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="string" /></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="type" /></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="align" /></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="colspan"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="readonly"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="context"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="help"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="domain"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="date"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="default_period"/></rng:optional>
|
||||||
|
<rng:zeroOrMore>
|
||||||
|
<rng:choice>
|
||||||
|
<rng:ref name="field" />
|
||||||
|
<rng:ref name="xpath" />
|
||||||
|
<rng:ref name="separator"/>
|
||||||
|
<rng:ref name="button"/>
|
||||||
|
<rng:ref name="filter"/>
|
||||||
|
<rng:ref name="html"/>
|
||||||
|
<rng:element name="newline"><rng:empty/></rng:element>
|
||||||
|
</rng:choice>
|
||||||
|
</rng:zeroOrMore>
|
||||||
|
|
||||||
|
</rng:element>
|
||||||
|
</rng:define>
|
||||||
|
|
||||||
|
<rng:define name="create">
|
||||||
|
<rng:element name="create">
|
||||||
|
<rng:ref name="overload"/>
|
||||||
|
<rng:attribute name="string"/>
|
||||||
|
<rng:attribute name="context"/>
|
||||||
|
<rng:ref name="modifiable"/>
|
||||||
|
<rng:optional><rng:attribute name="attrs"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="invisible"/></rng:optional>
|
||||||
|
</rng:element>
|
||||||
|
</rng:define>
|
||||||
|
|
||||||
|
<rng:define name="control">
|
||||||
|
<rng:element name="control">
|
||||||
|
<rng:ref name="overload"/>
|
||||||
|
<rng:oneOrMore>
|
||||||
|
<rng:choice>
|
||||||
|
<rng:ref name="create"/>
|
||||||
|
</rng:choice>
|
||||||
|
</rng:oneOrMore>
|
||||||
|
</rng:element>
|
||||||
|
</rng:define>
|
||||||
|
|
||||||
|
</rng:grammar>
|
||||||
39
app_common/rng/graph_view.rng
Normal file
39
app_common/rng/graph_view.rng
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<rng:grammar xmlns:rng="http://relaxng.org/ns/structure/1.0"
|
||||||
|
xmlns:a="http://relaxng.org/ns/annotation/1.0"
|
||||||
|
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
||||||
|
<!-- Handling of element overloading when inheriting from a base
|
||||||
|
template
|
||||||
|
-->
|
||||||
|
<rng:include href="common.rng"/>
|
||||||
|
<rng:define name="graph">
|
||||||
|
<rng:element name="graph">
|
||||||
|
<rng:optional><rng:attribute name="string" /></rng:optional>
|
||||||
|
<rng:optional>
|
||||||
|
<rng:attribute name="type">
|
||||||
|
<rng:choice>
|
||||||
|
<rng:value>bar</rng:value>
|
||||||
|
<rng:value>pie</rng:value>
|
||||||
|
<rng:value>line</rng:value>
|
||||||
|
<rng:value>pivot</rng:value>
|
||||||
|
</rng:choice>
|
||||||
|
</rng:attribute>
|
||||||
|
</rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="js_class"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="stacked"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="order"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="orientation"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="interval"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="disable_linking"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="sample"/></rng:optional>
|
||||||
|
<rng:zeroOrMore>
|
||||||
|
<rng:ref name="field"/>
|
||||||
|
</rng:zeroOrMore>
|
||||||
|
</rng:element>
|
||||||
|
</rng:define>
|
||||||
|
<rng:start>
|
||||||
|
<rng:choice>
|
||||||
|
<rng:ref name="graph" />
|
||||||
|
</rng:choice>
|
||||||
|
</rng:start>
|
||||||
|
</rng:grammar>
|
||||||
28
app_common/rng/pivot_view.rng
Normal file
28
app_common/rng/pivot_view.rng
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<rng:grammar xmlns:rng="http://relaxng.org/ns/structure/1.0"
|
||||||
|
xmlns:a="http://relaxng.org/ns/annotation/1.0"
|
||||||
|
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
||||||
|
<!-- Handling of element overloading when inheriting from a base
|
||||||
|
template
|
||||||
|
-->
|
||||||
|
<rng:include href="common.rng"/>
|
||||||
|
<rng:define name="pivot">
|
||||||
|
<rng:element name="pivot">
|
||||||
|
<rng:optional><rng:attribute name="sample"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="string"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="stacked"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="display_quantity"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="disable_linking"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="js_class"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="default_order"/></rng:optional>
|
||||||
|
<rng:zeroOrMore>
|
||||||
|
<rng:ref name="field"/>
|
||||||
|
</rng:zeroOrMore>
|
||||||
|
</rng:element>
|
||||||
|
</rng:define>
|
||||||
|
<rng:start>
|
||||||
|
<rng:choice>
|
||||||
|
<rng:ref name="pivot" />
|
||||||
|
</rng:choice>
|
||||||
|
</rng:start>
|
||||||
|
</rng:grammar>
|
||||||
42
app_common/rng/search_view.rng
Normal file
42
app_common/rng/search_view.rng
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<rng:grammar xmlns:rng="http://relaxng.org/ns/structure/1.0"
|
||||||
|
xmlns:a="http://relaxng.org/ns/annotation/1.0"
|
||||||
|
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
||||||
|
<!-- Handling of element overloading when inheriting from a base
|
||||||
|
template
|
||||||
|
-->
|
||||||
|
<rng:include href="common.rng"/>
|
||||||
|
|
||||||
|
<rng:define name="searchpanel">
|
||||||
|
<rng:element name="searchpanel">
|
||||||
|
<rng:ref name="overload"/>
|
||||||
|
<rng:optional><rng:attribute name="view_types"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="class"/></rng:optional>
|
||||||
|
<rng:zeroOrMore>
|
||||||
|
<rng:ref name="field" />
|
||||||
|
</rng:zeroOrMore>
|
||||||
|
</rng:element>
|
||||||
|
</rng:define>
|
||||||
|
|
||||||
|
<rng:define name="search">
|
||||||
|
<rng:element name="search">
|
||||||
|
<rng:ref name="overload"/>
|
||||||
|
<rng:optional><rng:attribute name="string"/></rng:optional>
|
||||||
|
<rng:zeroOrMore>
|
||||||
|
<rng:choice>
|
||||||
|
<rng:ref name="field"/>
|
||||||
|
<rng:ref name="group"/>
|
||||||
|
<rng:ref name="separator"/>
|
||||||
|
<rng:ref name="filter"/>
|
||||||
|
<rng:element name="newline"><rng:empty/></rng:element>
|
||||||
|
<rng:ref name="searchpanel"/>
|
||||||
|
</rng:choice>
|
||||||
|
</rng:zeroOrMore>
|
||||||
|
</rng:element>
|
||||||
|
</rng:define>
|
||||||
|
<rng:start>
|
||||||
|
<rng:choice>
|
||||||
|
<rng:ref name="search" />
|
||||||
|
</rng:choice>
|
||||||
|
</rng:start>
|
||||||
|
</rng:grammar>
|
||||||
54
app_common/rng/search_view_new.rng
Normal file
54
app_common/rng/search_view_new.rng
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<rng:grammar xmlns:rng="http://relaxng.org/ns/structure/1.0"
|
||||||
|
xmlns:a="http://relaxng.org/ns/annotation/1.0"
|
||||||
|
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
||||||
|
<!-- Handling of element overloading when inheriting from a base
|
||||||
|
template
|
||||||
|
-->
|
||||||
|
<rng:include href="common.rng"/>
|
||||||
|
|
||||||
|
<rng:define name="searchpanel">
|
||||||
|
<rng:element name="searchpanel">
|
||||||
|
<rng:ref name="overload"/>
|
||||||
|
<rng:optional><rng:attribute name="view_types"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="class"/></rng:optional>
|
||||||
|
<rng:zeroOrMore>
|
||||||
|
<rng:ref name="field" />
|
||||||
|
</rng:zeroOrMore>
|
||||||
|
</rng:element>
|
||||||
|
</rng:define>
|
||||||
|
|
||||||
|
<rng:define name="superbar">
|
||||||
|
<rng:element name="superbar">
|
||||||
|
<rng:ref name="overload"/>
|
||||||
|
<rng:optional><rng:attribute name="view_types"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="class"/></rng:optional>
|
||||||
|
<rng:zeroOrMore>
|
||||||
|
<rng:ref name="field" />
|
||||||
|
</rng:zeroOrMore>
|
||||||
|
</rng:element>
|
||||||
|
</rng:define>
|
||||||
|
|
||||||
|
<rng:define name="search">
|
||||||
|
<rng:element name="search">
|
||||||
|
<rng:ref name="overload"/>
|
||||||
|
<rng:optional><rng:attribute name="string"/></rng:optional>
|
||||||
|
<rng:zeroOrMore>
|
||||||
|
<rng:choice>
|
||||||
|
<rng:ref name="field"/>
|
||||||
|
<rng:ref name="group"/>
|
||||||
|
<rng:ref name="separator"/>
|
||||||
|
<rng:ref name="filter"/>
|
||||||
|
<rng:element name="newline"><rng:empty/></rng:element>
|
||||||
|
<rng:ref name="searchpanel"/>
|
||||||
|
<rng:ref name="superbar"/>
|
||||||
|
</rng:choice>
|
||||||
|
</rng:zeroOrMore>
|
||||||
|
</rng:element>
|
||||||
|
</rng:define>
|
||||||
|
<rng:start>
|
||||||
|
<rng:choice>
|
||||||
|
<rng:ref name="search" />
|
||||||
|
</rng:choice>
|
||||||
|
</rng:start>
|
||||||
|
</rng:grammar>
|
||||||
94
app_common/rng/tree_view.rng
Normal file
94
app_common/rng/tree_view.rng
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<rng:grammar xmlns:rng="http://relaxng.org/ns/structure/1.0"
|
||||||
|
xmlns:a="http://relaxng.org/ns/annotation/1.0"
|
||||||
|
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
||||||
|
<!-- Handling of element overloading when inheriting from a base
|
||||||
|
template
|
||||||
|
-->
|
||||||
|
<rng:include href="common.rng"/>
|
||||||
|
|
||||||
|
<rng:define name="groupby">
|
||||||
|
<rng:element name="groupby">
|
||||||
|
<rng:attribute name="name"/>
|
||||||
|
<rng:optional><rng:attribute name="expand"/></rng:optional>
|
||||||
|
<rng:zeroOrMore>
|
||||||
|
<rng:ref name="field"/>
|
||||||
|
</rng:zeroOrMore>
|
||||||
|
<rng:zeroOrMore>
|
||||||
|
<rng:ref name="button"/>
|
||||||
|
</rng:zeroOrMore>
|
||||||
|
</rng:element>
|
||||||
|
</rng:define>
|
||||||
|
|
||||||
|
<rng:define name="tree">
|
||||||
|
<rng:element name="tree">
|
||||||
|
<rng:ref name="overload"/>
|
||||||
|
<rng:optional><rng:attribute name="name"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="create"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="delete"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="edit"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="multi_edit"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="export_xlsx"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="duplicate"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="import"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="string"/></rng:optional> <!-- deprecated, has no effect anymore -->
|
||||||
|
<rng:optional><rng:attribute name="class"/></rng:optional>
|
||||||
|
<!-- Allows to take a custom View widget for handling -->
|
||||||
|
<rng:optional><rng:attribute name="js_class"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="options"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="default_order"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="decoration-bf"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="decoration-it"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="decoration-danger"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="decoration-info"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="decoration-muted"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="decoration-primary"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="decoration-success"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="decoration-warning"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="banner_route"/></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="sample"/></rng:optional>
|
||||||
|
<rng:optional>
|
||||||
|
<rng:attribute name="limit">
|
||||||
|
<rng:data type="int"/>
|
||||||
|
</rng:attribute>
|
||||||
|
</rng:optional>
|
||||||
|
<rng:optional>
|
||||||
|
<rng:attribute name="groups_limit">
|
||||||
|
<rng:data type="int"/>
|
||||||
|
</rng:attribute>
|
||||||
|
</rng:optional>
|
||||||
|
<rng:optional>
|
||||||
|
<rng:attribute name="editable">
|
||||||
|
<rng:choice>
|
||||||
|
<rng:value>top</rng:value>
|
||||||
|
<rng:value>bottom</rng:value>
|
||||||
|
</rng:choice>
|
||||||
|
</rng:attribute>
|
||||||
|
</rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="expand"/></rng:optional>
|
||||||
|
<rng:zeroOrMore>
|
||||||
|
<rng:choice>
|
||||||
|
<rng:element name="header">
|
||||||
|
<rng:zeroOrMore>
|
||||||
|
<rng:ref name="button"/>
|
||||||
|
</rng:zeroOrMore>
|
||||||
|
</rng:element>
|
||||||
|
<rng:ref name="control"/>
|
||||||
|
<rng:ref name="field"/>
|
||||||
|
<rng:ref name="separator"/>
|
||||||
|
<rng:ref name="tree"/>
|
||||||
|
<rng:ref name="groupby"/>
|
||||||
|
<rng:ref name="button"/>
|
||||||
|
<rng:ref name="filter"/>
|
||||||
|
<rng:ref name="html"/>
|
||||||
|
<rng:element name="newline"><rng:empty/></rng:element>
|
||||||
|
</rng:choice>
|
||||||
|
</rng:zeroOrMore>
|
||||||
|
</rng:element>
|
||||||
|
</rng:define>
|
||||||
|
<rng:start>
|
||||||
|
<rng:choice>
|
||||||
|
<rng:ref name="tree" />
|
||||||
|
</rng:choice>
|
||||||
|
</rng:start>
|
||||||
|
</rng:grammar>
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<odoo>
|
|
||||||
<data noupdate="1">
|
|
||||||
<!-- model权限 -->
|
|
||||||
<record id="acc_module" model="ir.model.access">
|
|
||||||
<field name="name">acc_module_user</field>
|
|
||||||
<field name="model_id" ref="model_app_order"/>
|
|
||||||
<field name="group_id" ref="base.group_user"/>
|
|
||||||
<field name="perm_read" eval="1"/>
|
|
||||||
<field name="perm_write" eval="1"/>
|
|
||||||
<field name="perm_create" eval="1"/>
|
|
||||||
<field name="perm_unlink" eval="1"/>
|
|
||||||
</record>
|
|
||||||
<!-- 应用权限目录 -->
|
|
||||||
<record model="ir.module.category" id="app_module_category_1">
|
|
||||||
<field name="name">App...</field>
|
|
||||||
<field name="description">Helps you manage your ...</field>
|
|
||||||
<field name="sequence">8</field>
|
|
||||||
</record>
|
|
||||||
<!-- 权限用户 -->
|
|
||||||
<!-- 普通 -->
|
|
||||||
<record id="group_app_user" model="res.groups">
|
|
||||||
<field name="name">App User</field>
|
|
||||||
<field name="category_id" ref="app_module_category_1"/>
|
|
||||||
<field name="implied_ids" eval="[(4, ref('base.group_user'))]"/>
|
|
||||||
<field name="comment">The user will be able to ...</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<!-- 管理员,可以配置 -->
|
|
||||||
<record id="group_app_admin" model="res.groups">
|
|
||||||
<field name="name">App Admin</field>
|
|
||||||
<field name="category_id" ref="app_module_category_1"/>
|
|
||||||
<field name="implied_ids" eval="[(4, ref('group_app_user'))]"/>
|
|
||||||
<field name="comment">The user will be able to config ...</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<!-- group_erp_manager自动有完整权限 -->
|
|
||||||
<record id="base.group_erp_manager" model="res.groups">
|
|
||||||
<field name="implied_ids" eval="[(4, ref('group_app_admin'))]"/>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<!-- Rules -->
|
|
||||||
<record id="rule_user" model="ir.rule">
|
|
||||||
<field name="name">Users are allowed to access their own m///</field>
|
|
||||||
<field name="model_id" ref="model_app_order"/>
|
|
||||||
<field name="domain_force">['|', ('partner_id', 'in', [user.partner_id.id]), ('user_id.id', '=', user.id)]</field>
|
|
||||||
<field name="groups" eval="[(4, ref('base.group_user'))]"/>
|
|
||||||
</record>
|
|
||||||
<!--End -->
|
|
||||||
</data>
|
|
||||||
</odoo>
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
|
||||||
access_product_attribute_value_group_user,product_attribute_value_group.user,app_product_variant_pro.model_product_attribute_value_group,base.group_user,1,0,0,0
|
|
||||||
access_product_attribute_value_group_manager,product_attribute_value_group.manager,app_product_variant_pro.model_product_attribute_value_group,base.group_erp_manager,1,1,1,1
|
|
||||||
|
@@ -1,24 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<odoo>
|
|
||||||
<data>
|
|
||||||
<!--产品list,可调整显示顺序-->
|
|
||||||
<record id="app_product_product_tree_view" model="ir.ui.view">
|
|
||||||
<field name="name">app.product.product.tree</field>
|
|
||||||
<field name="model">product.product</field>
|
|
||||||
<field name="inherit_id" ref="product.product_product_tree_view"/>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<xpath expr="//field[@name='type']" position="after">
|
|
||||||
<field name="abc_classification" widget="label_selection"
|
|
||||||
options="{'classes': {'a': 'danger', 'b': 'primary', 'c': 'default'}}"/>
|
|
||||||
</xpath>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="product_product_action" model="ir.actions.act_window">
|
|
||||||
<field name="name">Product Manager</field>
|
|
||||||
<field name="type">ir.actions.act_window</field>
|
|
||||||
<field name="res_model">product.product</field>
|
|
||||||
<field name="view_mode">tree,form</field>
|
|
||||||
</record>
|
|
||||||
</data>
|
|
||||||
</odoo>
|
|
||||||
@@ -6,8 +6,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Odoo Server 13.0+e\n"
|
"Project-Id-Version: Odoo Server 13.0+e\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2020-08-21 06:23+0000\n"
|
"POT-Creation-Date: 2020-10-30 22:13+0000\n"
|
||||||
"PO-Revision-Date: 2020-08-21 06:23+0000\n"
|
"PO-Revision-Date: 2020-10-30 22:13+0000\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@@ -17,7 +17,6 @@ msgstr ""
|
|||||||
|
|
||||||
#. module: app_odoo_customize
|
#. module: app_odoo_customize
|
||||||
#. openerp-web
|
#. openerp-web
|
||||||
#: code:addons/app_common13/app_odoo_customize/static/src/xml/res_config_edition.xml:0
|
|
||||||
#: code:addons/app_odoo_customize/static/src/xml/res_config_edition.xml:0
|
#: code:addons/app_odoo_customize/static/src/xml/res_config_edition.xml:0
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "(Sunpop.cn Professional Edition)"
|
msgid "(Sunpop.cn Professional Edition)"
|
||||||
@@ -90,7 +89,6 @@ msgstr "<span>设置为 False 则不显示</span>"
|
|||||||
|
|
||||||
#. module: app_odoo_customize
|
#. module: app_odoo_customize
|
||||||
#. openerp-web
|
#. openerp-web
|
||||||
#: code:addons/app_common13/app_odoo_customize/static/src/xml/customize_user_menu.xml:0
|
|
||||||
#: code:addons/app_odoo_customize/static/src/xml/customize_user_menu.xml:0
|
#: code:addons/app_odoo_customize/static/src/xml/customize_user_menu.xml:0
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Activate the developer mode"
|
msgid "Activate the developer mode"
|
||||||
@@ -98,7 +96,6 @@ msgstr "激活开发者模式"
|
|||||||
|
|
||||||
#. module: app_odoo_customize
|
#. module: app_odoo_customize
|
||||||
#. openerp-web
|
#. openerp-web
|
||||||
#: code:addons/app_common13/app_odoo_customize/static/src/xml/customize_user_menu.xml:0
|
|
||||||
#: code:addons/app_odoo_customize/static/src/xml/customize_user_menu.xml:0
|
#: code:addons/app_odoo_customize/static/src/xml/customize_user_menu.xml:0
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Activate the developer mode (with assets)"
|
msgid "Activate the developer mode (with assets)"
|
||||||
@@ -147,7 +144,6 @@ msgstr "数据清理(请谨慎操作!)"
|
|||||||
|
|
||||||
#. module: app_odoo_customize
|
#. module: app_odoo_customize
|
||||||
#. openerp-web
|
#. openerp-web
|
||||||
#: code:addons/app_common13/app_odoo_customize/static/src/xml/customize_user_menu.xml:0
|
|
||||||
#: code:addons/app_odoo_customize/static/src/xml/customize_user_menu.xml:0
|
#: code:addons/app_odoo_customize/static/src/xml/customize_user_menu.xml:0
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Deactivate the developer mode"
|
msgid "Deactivate the developer mode"
|
||||||
@@ -213,7 +209,12 @@ msgstr "删除所有询价单、采购单,采购招标"
|
|||||||
#. module: app_odoo_customize
|
#. module: app_odoo_customize
|
||||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||||
msgid "Delete All Quality"
|
msgid "Delete All Quality"
|
||||||
msgstr ""
|
msgstr "删除所有质检单据"
|
||||||
|
|
||||||
|
#. module: app_odoo_customize
|
||||||
|
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||||
|
msgid "Delete All Quality Setting"
|
||||||
|
msgstr "删除所有质检设置"
|
||||||
|
|
||||||
#. module: app_odoo_customize
|
#. module: app_odoo_customize
|
||||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||||
@@ -242,7 +243,6 @@ msgstr "开发者手册链接"
|
|||||||
|
|
||||||
#. module: app_odoo_customize
|
#. module: app_odoo_customize
|
||||||
#. openerp-web
|
#. openerp-web
|
||||||
#: code:addons/app_common13/app_odoo_customize/static/src/xml/customize_user_menu.xml:0
|
|
||||||
#: code:addons/app_odoo_customize/static/src/xml/customize_user_menu.xml:0
|
#: code:addons/app_odoo_customize/static/src/xml/customize_user_menu.xml:0
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Developer Manual"
|
msgid "Developer Manual"
|
||||||
@@ -305,6 +305,11 @@ msgstr "我的帐户显示标题"
|
|||||||
msgid "My Odoo.com Account Url"
|
msgid "My Odoo.com Account Url"
|
||||||
msgstr "我的帐户链接"
|
msgstr "我的帐户链接"
|
||||||
|
|
||||||
|
#. module: app_odoo_customize
|
||||||
|
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||||
|
msgid "Odoo Customize Setting"
|
||||||
|
msgstr "个性化odoo设置"
|
||||||
|
|
||||||
#. module: app_odoo_customize
|
#. module: app_odoo_customize
|
||||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||||
msgid "Please confirm to delete the select data?"
|
msgid "Please confirm to delete the select data?"
|
||||||
@@ -316,9 +321,9 @@ msgid "Powered by <span>odooApp</span>"
|
|||||||
msgstr "技术支持 <span>Sunpop.cn</span>"
|
msgstr "技术支持 <span>Sunpop.cn</span>"
|
||||||
|
|
||||||
#. module: app_odoo_customize
|
#. module: app_odoo_customize
|
||||||
#: model:ir.actions.act_window,name:app_odoo_customize.action_server_module_multi_refresh_po
|
#: model:ir.actions.server,name:app_odoo_customize.action_server_module_multi_refresh_po
|
||||||
msgid "Refresh Module Translation"
|
msgid "Refresh Translation"
|
||||||
msgstr "更新模块翻译"
|
msgstr "刷新翻译"
|
||||||
|
|
||||||
#. module: app_odoo_customize
|
#. module: app_odoo_customize
|
||||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||||
@@ -507,14 +512,8 @@ msgstr "启用后,会显示在线支持链接"
|
|||||||
msgid "When enable,everyone login can see the debug menu"
|
msgid "When enable,everyone login can see the debug menu"
|
||||||
msgstr "启用后,会显示快速调试菜单"
|
msgstr "启用后,会显示快速调试菜单"
|
||||||
|
|
||||||
#. module: app_odoo_customize
|
|
||||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
|
||||||
msgid "Odoo Customize Setting"
|
|
||||||
msgstr "个性化odoo设置"
|
|
||||||
|
|
||||||
#. module: app_odoo_customize
|
#. module: app_odoo_customize
|
||||||
#. openerp-web
|
#. openerp-web
|
||||||
#: code:addons/app_common13/app_odoo_customize/static/src/xml/res_config_edition.xml:0
|
|
||||||
#: code:addons/app_odoo_customize/static/src/xml/res_config_edition.xml:0
|
#: code:addons/app_odoo_customize/static/src/xml/res_config_edition.xml:0
|
||||||
#: model:ir.ui.menu,name:app_odoo_customize.menu_app_group
|
#: model:ir.ui.menu,name:app_odoo_customize.menu_app_group
|
||||||
#, python-format
|
#, python-format
|
||||||
|
|||||||
@@ -127,9 +127,9 @@ class ResConfigSettings(models.TransientModel):
|
|||||||
sql = "delete from %s" % t_name
|
sql = "delete from %s" % t_name
|
||||||
try:
|
try:
|
||||||
self._cr.execute(sql)
|
self._cr.execute(sql)
|
||||||
|
self._cr.commit()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
_logger.error('remove data error: %s,%s', line, e)
|
_logger.error('remove data error: %s,%s', line, e)
|
||||||
self._cr.commit()
|
|
||||||
# 更新序号
|
# 更新序号
|
||||||
for line in s:
|
for line in s:
|
||||||
domain = [('code', '=ilike', line + '%')]
|
domain = [('code', '=ilike', line + '%')]
|
||||||
|
|||||||
@@ -10,8 +10,11 @@
|
|||||||
<attribute name="groups"/>
|
<attribute name="groups"/>
|
||||||
</field>
|
</field>
|
||||||
<field name="installed_version" position="after">
|
<field name="installed_version" position="after">
|
||||||
<field name="latest_version"/>
|
<field name="latest_version" optional="hide"/>
|
||||||
<field name="local_updatable"/>
|
<field name="local_updatable" optional="show"/>
|
||||||
|
</field>
|
||||||
|
<field name="website" position="attributes">
|
||||||
|
<attribute name="optional">hide</attribute>
|
||||||
</field>
|
</field>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="action_server_module_multi_refresh_po" model="ir.actions.server">
|
<record id="action_server_module_multi_refresh_po" model="ir.actions.server">
|
||||||
<field name="name">Refresh Module Translation</field>
|
<field name="name">Refresh Translation</field>
|
||||||
<field name="type">ir.actions.server</field>
|
<field name="type">ir.actions.server</field>
|
||||||
<field name="binding_model_id" ref="base.model_ir_module_module" />
|
<field name="binding_model_id" ref="base.model_ir_module_module" />
|
||||||
<field name="model_id" ref="base.model_ir_module_module" />
|
<field name="model_id" ref="base.model_ir_module_module" />
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
{
|
{
|
||||||
'name': '2020最新中国企业会计表.Latest Chinese Accounting.',
|
'name': '2020最新中国企业会计表.Latest Chinese Accounting.',
|
||||||
'version': '13.20.04.11',
|
'version': '13.20.10.30',
|
||||||
'author': 'Sunpop.cn',
|
'author': 'Sunpop.cn',
|
||||||
'category': 'Localization',
|
'category': 'Localization',
|
||||||
'website': 'https://www.sunpop.cn',
|
'website': 'https://www.sunpop.cn',
|
||||||
@@ -50,7 +50,7 @@
|
|||||||
""",
|
""",
|
||||||
'depends': [
|
'depends': [
|
||||||
'account',
|
'account',
|
||||||
'l10n_cn',
|
'app_odoo_customize',
|
||||||
],
|
],
|
||||||
'images': ['static/description/banner.png'],
|
'images': ['static/description/banner.png'],
|
||||||
'data': [
|
'data': [
|
||||||
|
|||||||
@@ -3,6 +3,12 @@
|
|||||||
<record id="l10n_cn_tax_group_vat_0" model="account.tax.group">
|
<record id="l10n_cn_tax_group_vat_0" model="account.tax.group">
|
||||||
<field name="name">VAT 0%</field>
|
<field name="name">VAT 0%</field>
|
||||||
</record>
|
</record>
|
||||||
|
<record id="l10n_cn_tax_group_vat_3" model="account.tax.group">
|
||||||
|
<field name="name">VAT 3%</field>
|
||||||
|
</record>
|
||||||
|
<record id="l10n_cn_tax_group_vat_6" model="account.tax.group">
|
||||||
|
<field name="name">VAT 6%</field>
|
||||||
|
</record>
|
||||||
<record id="l10n_cn_tax_group_vat_9" model="account.tax.group">
|
<record id="l10n_cn_tax_group_vat_9" model="account.tax.group">
|
||||||
<field name="name">VAT 9%</field>
|
<field name="name">VAT 9%</field>
|
||||||
</record>
|
</record>
|
||||||
|
|||||||
@@ -72,7 +72,7 @@
|
|||||||
<record id="l10n_cn_standard_sale_included_13" model="account.tax.template">
|
<record id="l10n_cn_standard_sale_included_13" model="account.tax.template">
|
||||||
<field name="chart_template_id" ref="l10n_chart_china_standard_business_latest"/>
|
<field name="chart_template_id" ref="l10n_chart_china_standard_business_latest"/>
|
||||||
<field name="name">13%销项税(含)</field>
|
<field name="name">13%销项税(含)</field>
|
||||||
<field name="description">增值税销项税13%,单价含税</field>
|
<field name="description">增值税销项税13%(价内税)</field>
|
||||||
<field name="amount">13</field>
|
<field name="amount">13</field>
|
||||||
<field name="amount_type">percent</field>
|
<field name="amount_type">percent</field>
|
||||||
<field name="type_tax_use">sale</field>
|
<field name="type_tax_use">sale</field>
|
||||||
@@ -106,7 +106,7 @@
|
|||||||
<record id="l10n_cn_standard_sale_included_10" model="account.tax.template">
|
<record id="l10n_cn_standard_sale_included_10" model="account.tax.template">
|
||||||
<field name="chart_template_id" ref="l10n_chart_china_standard_business_latest"/>
|
<field name="chart_template_id" ref="l10n_chart_china_standard_business_latest"/>
|
||||||
<field name="name">10%销项税(含)</field>
|
<field name="name">10%销项税(含)</field>
|
||||||
<field name="description">增值税销项税10%,单价含税</field>
|
<field name="description">增值税销项税10%(价内税)</field>
|
||||||
<field name="amount">10</field>
|
<field name="amount">10</field>
|
||||||
<field name="amount_type">percent</field>
|
<field name="amount_type">percent</field>
|
||||||
<field name="type_tax_use">sale</field>
|
<field name="type_tax_use">sale</field>
|
||||||
@@ -140,7 +140,7 @@
|
|||||||
<record id="l10n_cn_standard_sale_included_9" model="account.tax.template">
|
<record id="l10n_cn_standard_sale_included_9" model="account.tax.template">
|
||||||
<field name="chart_template_id" ref="l10n_chart_china_standard_business_latest"/>
|
<field name="chart_template_id" ref="l10n_chart_china_standard_business_latest"/>
|
||||||
<field name="name">9%销项税(含)</field>
|
<field name="name">9%销项税(含)</field>
|
||||||
<field name="description">增值税销项税9%,单价含税</field>
|
<field name="description">增值税销项税9%(价内税)</field>
|
||||||
<field name="amount">9</field>
|
<field name="amount">9</field>
|
||||||
<field name="amount_type">percent</field>
|
<field name="amount_type">percent</field>
|
||||||
<field name="type_tax_use">sale</field>
|
<field name="type_tax_use">sale</field>
|
||||||
@@ -174,13 +174,13 @@
|
|||||||
<record id="l10n_cn_standard_sale_included_6" model="account.tax.template">
|
<record id="l10n_cn_standard_sale_included_6" model="account.tax.template">
|
||||||
<field name="chart_template_id" ref="l10n_chart_china_standard_business_latest"/>
|
<field name="chart_template_id" ref="l10n_chart_china_standard_business_latest"/>
|
||||||
<field name="name">6%销项税(含)</field>
|
<field name="name">6%销项税(含)</field>
|
||||||
<field name="description">增值税销项税6%,单价含税</field>
|
<field name="description">增值税销项税6%(价内税)</field>
|
||||||
<field name="amount">6</field>
|
<field name="amount">6</field>
|
||||||
<field name="amount_type">percent</field>
|
<field name="amount_type">percent</field>
|
||||||
<field name="type_tax_use">sale</field>
|
<field name="type_tax_use">sale</field>
|
||||||
<field name="price_include" eval="1"/>
|
<field name="price_include" eval="1"/>
|
||||||
<field name="sequence">6</field>
|
<field name="sequence">6</field>
|
||||||
<field name="tax_group_id" ref="l10n_cn.l10n_cn_tax_group_vat_6"/>
|
<field name="tax_group_id" ref="l10n_cn_tax_group_vat_6"/>
|
||||||
<field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
|
<field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
|
||||||
(0,0, {
|
(0,0, {
|
||||||
'factor_percent': 100,
|
'factor_percent': 100,
|
||||||
@@ -208,13 +208,13 @@
|
|||||||
<record id="l10n_cn_standard_sale_included_3" model="account.tax.template">
|
<record id="l10n_cn_standard_sale_included_3" model="account.tax.template">
|
||||||
<field name="chart_template_id" ref="l10n_chart_china_standard_business_latest"/>
|
<field name="chart_template_id" ref="l10n_chart_china_standard_business_latest"/>
|
||||||
<field name="name">3%销项税(含)</field>
|
<field name="name">3%销项税(含)</field>
|
||||||
<field name="description">增值税销项税3%,单价含税</field>
|
<field name="description">增值税销项税3%(价内税)</field>
|
||||||
<field name="amount">3</field>
|
<field name="amount">3</field>
|
||||||
<field name="amount_type">percent</field>
|
<field name="amount_type">percent</field>
|
||||||
<field name="type_tax_use">sale</field>
|
<field name="type_tax_use">sale</field>
|
||||||
<field name="price_include" eval="1"/>
|
<field name="price_include" eval="1"/>
|
||||||
<field name="sequence">3</field>
|
<field name="sequence">3</field>
|
||||||
<field name="tax_group_id" ref="l10n_cn.l10n_cn_tax_group_vat_3"/>
|
<field name="tax_group_id" ref="l10n_cn_tax_group_vat_3"/>
|
||||||
<field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
|
<field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
|
||||||
(0,0, {
|
(0,0, {
|
||||||
'factor_percent': 100,
|
'factor_percent': 100,
|
||||||
@@ -242,7 +242,7 @@
|
|||||||
<record id="l10n_cn_standard_sale_excluded_13" model="account.tax.template">
|
<record id="l10n_cn_standard_sale_excluded_13" model="account.tax.template">
|
||||||
<field name="chart_template_id" ref="l10n_chart_china_standard_business_latest"/>
|
<field name="chart_template_id" ref="l10n_chart_china_standard_business_latest"/>
|
||||||
<field name="name">13%销项税</field>
|
<field name="name">13%销项税</field>
|
||||||
<field name="description">增值税销项税13%,单价不含税</field>
|
<field name="description">增值税销项税13%(价外税)</field>
|
||||||
<field name="amount">13</field>
|
<field name="amount">13</field>
|
||||||
<field name="amount_type">percent</field>
|
<field name="amount_type">percent</field>
|
||||||
<field name="type_tax_use">sale</field>
|
<field name="type_tax_use">sale</field>
|
||||||
@@ -276,7 +276,7 @@
|
|||||||
<record id="l10n_cn_standard_sale_excluded_10" model="account.tax.template">
|
<record id="l10n_cn_standard_sale_excluded_10" model="account.tax.template">
|
||||||
<field name="chart_template_id" ref="l10n_chart_china_standard_business_latest"/>
|
<field name="chart_template_id" ref="l10n_chart_china_standard_business_latest"/>
|
||||||
<field name="name">10%销项税</field>
|
<field name="name">10%销项税</field>
|
||||||
<field name="description">增值税销项税10%,单价不含税</field>
|
<field name="description">增值税销项税10%(价外税)</field>
|
||||||
<field name="amount">10</field>
|
<field name="amount">10</field>
|
||||||
<field name="amount_type">percent</field>
|
<field name="amount_type">percent</field>
|
||||||
<field name="type_tax_use">sale</field>
|
<field name="type_tax_use">sale</field>
|
||||||
@@ -310,7 +310,7 @@
|
|||||||
<record id="l10n_cn_standard_sale_excluded_9" model="account.tax.template">
|
<record id="l10n_cn_standard_sale_excluded_9" model="account.tax.template">
|
||||||
<field name="chart_template_id" ref="l10n_chart_china_standard_business_latest"/>
|
<field name="chart_template_id" ref="l10n_chart_china_standard_business_latest"/>
|
||||||
<field name="name">9%销项税</field>
|
<field name="name">9%销项税</field>
|
||||||
<field name="description">增值税销项税9%,单价不含税</field>
|
<field name="description">增值税销项税9%(价外税)</field>
|
||||||
<field name="amount">9</field>
|
<field name="amount">9</field>
|
||||||
<field name="amount_type">percent</field>
|
<field name="amount_type">percent</field>
|
||||||
<field name="type_tax_use">sale</field>
|
<field name="type_tax_use">sale</field>
|
||||||
@@ -344,13 +344,13 @@
|
|||||||
<record id="l10n_cn_standard_sale_excluded_6" model="account.tax.template">
|
<record id="l10n_cn_standard_sale_excluded_6" model="account.tax.template">
|
||||||
<field name="chart_template_id" ref="l10n_chart_china_standard_business_latest"/>
|
<field name="chart_template_id" ref="l10n_chart_china_standard_business_latest"/>
|
||||||
<field name="name">6%销项税</field>
|
<field name="name">6%销项税</field>
|
||||||
<field name="description">增值税销项税6%,单价不含税</field>
|
<field name="description">增值税销项税6%(价外税)</field>
|
||||||
<field name="amount">6</field>
|
<field name="amount">6</field>
|
||||||
<field name="amount_type">percent</field>
|
<field name="amount_type">percent</field>
|
||||||
<field name="type_tax_use">sale</field>
|
<field name="type_tax_use">sale</field>
|
||||||
<field name="price_include" eval="0"/>
|
<field name="price_include" eval="0"/>
|
||||||
<field name="sequence">6</field>
|
<field name="sequence">6</field>
|
||||||
<field name="tax_group_id" ref="l10n_cn.l10n_cn_tax_group_vat_6"/>
|
<field name="tax_group_id" ref="l10n_cn_tax_group_vat_6"/>
|
||||||
<field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
|
<field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
|
||||||
(0,0, {
|
(0,0, {
|
||||||
'factor_percent': 100,
|
'factor_percent': 100,
|
||||||
@@ -378,13 +378,13 @@
|
|||||||
<record id="l10n_cn_standard_sale_excluded_3" model="account.tax.template">
|
<record id="l10n_cn_standard_sale_excluded_3" model="account.tax.template">
|
||||||
<field name="chart_template_id" ref="l10n_chart_china_standard_business_latest"/>
|
<field name="chart_template_id" ref="l10n_chart_china_standard_business_latest"/>
|
||||||
<field name="name">3%销项税</field>
|
<field name="name">3%销项税</field>
|
||||||
<field name="description">增值税销项税3%,单价不含税</field>
|
<field name="description">增值税销项税3%(价外税)</field>
|
||||||
<field name="amount">3</field>
|
<field name="amount">3</field>
|
||||||
<field name="amount_type">percent</field>
|
<field name="amount_type">percent</field>
|
||||||
<field name="type_tax_use">sale</field>
|
<field name="type_tax_use">sale</field>
|
||||||
<field name="price_include" eval="0"/>
|
<field name="price_include" eval="0"/>
|
||||||
<field name="sequence">3</field>
|
<field name="sequence">3</field>
|
||||||
<field name="tax_group_id" ref="l10n_cn.l10n_cn_tax_group_vat_3"/>
|
<field name="tax_group_id" ref="l10n_cn_tax_group_vat_3"/>
|
||||||
<field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
|
<field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
|
||||||
(0,0, {
|
(0,0, {
|
||||||
'factor_percent': 100,
|
'factor_percent': 100,
|
||||||
@@ -413,7 +413,7 @@
|
|||||||
<record id="l10n_cn_standard_purchase_excluded_13" model="account.tax.template">
|
<record id="l10n_cn_standard_purchase_excluded_13" model="account.tax.template">
|
||||||
<field name="chart_template_id" ref="l10n_chart_china_standard_business_latest"/>
|
<field name="chart_template_id" ref="l10n_chart_china_standard_business_latest"/>
|
||||||
<field name="name">13%进项税</field>
|
<field name="name">13%进项税</field>
|
||||||
<field name="description">增值税进项税13%,单价不含税</field>
|
<field name="description">增值税进项税13%(价外税)</field>
|
||||||
<field name="amount">13</field>
|
<field name="amount">13</field>
|
||||||
<field name="amount_type">percent</field>
|
<field name="amount_type">percent</field>
|
||||||
<field name="type_tax_use">purchase</field>
|
<field name="type_tax_use">purchase</field>
|
||||||
@@ -447,7 +447,7 @@
|
|||||||
<record id="l10n_cn_standard_purchase_excluded_10" model="account.tax.template">
|
<record id="l10n_cn_standard_purchase_excluded_10" model="account.tax.template">
|
||||||
<field name="chart_template_id" ref="l10n_chart_china_standard_business_latest"/>
|
<field name="chart_template_id" ref="l10n_chart_china_standard_business_latest"/>
|
||||||
<field name="name">10%进项税</field>
|
<field name="name">10%进项税</field>
|
||||||
<field name="description">增值税进项税10%,单价不含税</field>
|
<field name="description">增值税进项税10%(价外税)</field>
|
||||||
<field name="amount">10</field>
|
<field name="amount">10</field>
|
||||||
<field name="amount_type">percent</field>
|
<field name="amount_type">percent</field>
|
||||||
<field name="type_tax_use">purchase</field>
|
<field name="type_tax_use">purchase</field>
|
||||||
@@ -481,7 +481,7 @@
|
|||||||
<record id="l10n_cn_standard_purchase_excluded_9" model="account.tax.template">
|
<record id="l10n_cn_standard_purchase_excluded_9" model="account.tax.template">
|
||||||
<field name="chart_template_id" ref="l10n_chart_china_standard_business_latest"/>
|
<field name="chart_template_id" ref="l10n_chart_china_standard_business_latest"/>
|
||||||
<field name="name">9%进项税</field>
|
<field name="name">9%进项税</field>
|
||||||
<field name="description">增值税进项税9%,单价不含税</field>
|
<field name="description">增值税进项税9%(价外税)</field>
|
||||||
<field name="amount">9</field>
|
<field name="amount">9</field>
|
||||||
<field name="amount_type">percent</field>
|
<field name="amount_type">percent</field>
|
||||||
<field name="type_tax_use">purchase</field>
|
<field name="type_tax_use">purchase</field>
|
||||||
@@ -515,13 +515,13 @@
|
|||||||
<record id="l10n_cn_standard_purchase_excluded_6" model="account.tax.template">
|
<record id="l10n_cn_standard_purchase_excluded_6" model="account.tax.template">
|
||||||
<field name="chart_template_id" ref="l10n_chart_china_standard_business_latest"/>
|
<field name="chart_template_id" ref="l10n_chart_china_standard_business_latest"/>
|
||||||
<field name="name">6%进项税</field>
|
<field name="name">6%进项税</field>
|
||||||
<field name="description">增值税进项税6%,单价不含税</field>
|
<field name="description">增值税进项税6%(价外税)</field>
|
||||||
<field name="amount">6</field>
|
<field name="amount">6</field>
|
||||||
<field name="amount_type">percent</field>
|
<field name="amount_type">percent</field>
|
||||||
<field name="type_tax_use">purchase</field>
|
<field name="type_tax_use">purchase</field>
|
||||||
<field name="price_include" eval="0"/>
|
<field name="price_include" eval="0"/>
|
||||||
<field name="sequence">6</field>
|
<field name="sequence">6</field>
|
||||||
<field name="tax_group_id" ref="l10n_cn.l10n_cn_tax_group_vat_6"/>
|
<field name="tax_group_id" ref="l10n_cn_tax_group_vat_6"/>
|
||||||
<field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
|
<field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
|
||||||
(0,0, {
|
(0,0, {
|
||||||
'factor_percent': 100,
|
'factor_percent': 100,
|
||||||
@@ -549,13 +549,13 @@
|
|||||||
<record id="l10n_cn_standard_purchase_excluded_3" model="account.tax.template">
|
<record id="l10n_cn_standard_purchase_excluded_3" model="account.tax.template">
|
||||||
<field name="chart_template_id" ref="l10n_chart_china_standard_business_latest"/>
|
<field name="chart_template_id" ref="l10n_chart_china_standard_business_latest"/>
|
||||||
<field name="name">3%进项税</field>
|
<field name="name">3%进项税</field>
|
||||||
<field name="description">增值税进项税3%,单价不含税</field>
|
<field name="description">增值税进项税3%(价外税)</field>
|
||||||
<field name="amount">3</field>
|
<field name="amount">3</field>
|
||||||
<field name="amount_type">percent</field>
|
<field name="amount_type">percent</field>
|
||||||
<field name="type_tax_use">purchase</field>
|
<field name="type_tax_use">purchase</field>
|
||||||
<field name="price_include" eval="0"/>
|
<field name="price_include" eval="0"/>
|
||||||
<field name="sequence">3</field>
|
<field name="sequence">3</field>
|
||||||
<field name="tax_group_id" ref="l10n_cn.l10n_cn_tax_group_vat_3"/>
|
<field name="tax_group_id" ref="l10n_cn_tax_group_vat_3"/>
|
||||||
<field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
|
<field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
|
||||||
(0,0, {
|
(0,0, {
|
||||||
'factor_percent': 100,
|
'factor_percent': 100,
|
||||||
|
|||||||
Reference in New Issue
Block a user