Merge pull request #68 from expsa/khazraji_base

kpi fix
This commit is contained in:
mohammed-alkhazrji 2025-12-26 00:06:44 +03:00 committed by GitHub
commit 96e55135a2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
13 changed files with 78 additions and 72 deletions

View File

@ -10,7 +10,6 @@
<field name="user_id" ref="base.user_root"/> <field name="user_id" ref="base.user_root"/>
<field name="interval_number">8</field> <field name="interval_number">8</field>
<field name="interval_type">hours</field> <field name="interval_type">hours</field>
<field name="numbercall">-1</field>
</record> </record>
</data> </data>
</odoo> </odoo>

View File

@ -175,7 +175,7 @@ class kpi_category(models.Model):
"text": self.name, "text": self.name,
"id": self.id, "id": self.id,
} }
if self._context.get("show_tooltip") and hasattr(self, "description") and self.description not in EMPTYHTML: if self._context.get("show_tooltip") and hasattr(self, "description") :
res.update({"a_attr": {"kn_tip": self.description},}) res.update({"a_attr": {"kn_tip": self.description},})
child_res = [] child_res = []
for child in self.child_ids.sorted(lambda ch: ch.sequence): for child in self.child_ids.sorted(lambda ch: ch.sequence):

View File

@ -90,7 +90,7 @@ class kpi_scorecard_line(models.Model):
) )
description = fields.Text( description = fields.Text(
related="kpi_id.description", related="kpi_id.description",
store=True,
) )
period_id = fields.Many2one( period_id = fields.Many2one(
"kpi.period", "kpi.period",

View File

@ -79,7 +79,7 @@
<field name="active"/> <field name="active"/>
</group> </group>
</page> </page>
<page string="Help" attrs="{'invisible': [('help_notes', '=', False)]}"> <page string="Help" invisible="not help_notes">
<field name="kpi_help_dummy" invisible="1"/> <field name="kpi_help_dummy" invisible="1"/>
<field name="help_notes"/> <field name="help_notes"/>
</page> </page>
@ -92,19 +92,19 @@
<field name="name">kpi.category.tree</field> <field name="name">kpi.category.tree</field>
<field name="model">kpi.category</field> <field name="model">kpi.category</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<tree> <list>
<field name="sequence" widget="handle"/> <field name="sequence" widget="handle"/>
<field name='name'/> <field name='name'/>
<field name="parent_id"/> <field name="parent_id"/>
<field name="active" invisible="1"/> <field name="active" invisible="1"/>
</tree> </list>
</field> </field>
</record> </record>
<record id="kpi_category_action" model="ir.actions.act_window"> <record id="kpi_category_action" model="ir.actions.act_window">
<field name="name">KPI Categories</field> <field name="name">KPI Categories</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">kpi.category</field> <field name="res_model">kpi.category</field>
<field name="view_mode">tree,form</field> <field name="view_mode">list,form</field>
<field name="search_view_id" eval="kpi_category_view_search"/> <field name="search_view_id" eval="kpi_category_view_search"/>
</record> </record>

View File

@ -41,10 +41,10 @@
<notebook> <notebook>
<page string="By Periods"> <page string="By Periods">
<field name="periods_ids"> <field name="periods_ids">
<tree editable="top"> <list editable="top">
<field name="period_id" options="{'no_create_edit':1, 'no_quick_create': 1}"/> <field name="period_id" options="{'no_create_edit':1, 'no_quick_create': 1}"/>
<field name="target_value"/> <field name="target_value"/>
</tree> </list>
</field> </field>
</page> </page>
<page string="Notes"> <page string="Notes">
@ -56,7 +56,7 @@
<field name="active"/> <field name="active"/>
</group> </group>
</page> </page>
<page string="Help" attrs="{'invisible': [('help_notes', '=', False)]}"> <page string="Help" invisible="not help_notes">
<field name="kpi_help_dummy" invisible="1"/> <field name="kpi_help_dummy" invisible="1"/>
<field name="help_notes"/> <field name="help_notes"/>
</page> </page>
@ -69,18 +69,18 @@
<field name="name">kpi.constant.tree</field> <field name="name">kpi.constant.tree</field>
<field name="model">kpi.constant</field> <field name="model">kpi.constant</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<tree> <list>
<field name="sequence" widget="handle"/> <field name="sequence" widget="handle"/>
<field name='name'/> <field name='name'/>
<field name="active" invisible="1"/> <field name="active" invisible="1"/>
</tree> </list>
</field> </field>
</record> </record>
<record id="kpi_constant_action" model="ir.actions.act_window"> <record id="kpi_constant_action" model="ir.actions.act_window">
<field name="name">Constants</field> <field name="name">Constants</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">kpi.constant</field> <field name="res_model">kpi.constant</field>
<field name="view_mode">tree,form</field> <field name="view_mode">list,form</field>
<field name="search_view_id" eval="kpi_constant_view_search"/> <field name="search_view_id" eval="kpi_constant_view_search"/>
<field name="help" type="html"> <field name="help" type="html">
<p class="oe_view_nocontent_create"> <p class="oe_view_nocontent_create">

View File

@ -35,7 +35,7 @@
</h1> </h1>
</div> </div>
<h2 class="oe_read_only pull-right text-warning" <h2 class="oe_read_only pull-right text-warning"
attrs="{'invisible': [('formula_warning', '=', False)]}" invisible="not formula_warning "
> >
<field name="formula_warning"/> <field name="formula_warning"/>
</h2> </h2>
@ -58,13 +58,13 @@
<field name="result_type"/> <field name="result_type"/>
<field name="result_appearance"/> <field name="result_appearance"/>
<field name="result_preffix" <field name="result_preffix"
attrs="{'invisible': [('result_appearance', '=', 'monetory')]}" invisible="result_appearance in [ 'monetory']"
/> />
<field name="result_suffix" <field name="result_suffix"
attrs="{'invisible': [('result_appearance', '=', 'monetory')]}" invisible="result_appearance in [ 'monetory']"
/> />
<field name="currency_id" <field name="currency_id"
attrs="{'invisible': [('result_appearance', '!=', 'monetory')]}" invisible="result_appearance not in [ 'monetory']"
/> />
<field name="result_rounding"/> <field name="result_rounding"/>
</group> </group>
@ -124,7 +124,7 @@
/> />
</group> </group>
</page> </page>
<page string="Help" attrs="{'invisible': [('help_notes', '=', False)]}"> <page string="Help" invisible="not help_notes">
<field name="kpi_help_dummy" invisible="1"/> <field name="kpi_help_dummy" invisible="1"/>
<field name="help_notes"/> <field name="help_notes"/>
</page> </page>
@ -136,19 +136,19 @@
<field name="name">kpi.item.tree</field> <field name="name">kpi.item.tree</field>
<field name="model">kpi.item</field> <field name="model">kpi.item</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<tree decoration-warning="formula_warning != False"> <list decoration-warning="formula_warning != False">
<field name="sequence" widget="handle"/> <field name="sequence" widget="handle"/>
<field name="name"/> <field name="name"/>
<field name="active" invisible="1"/> <field name="active" invisible="1"/>
<field name="formula_warning" invisible="0"/> <field name="formula_warning" invisible="0"/>
</tree> </list>
</field> </field>
</record> </record>
<record id="kpi_item_action" model="ir.actions.act_window"> <record id="kpi_item_action" model="ir.actions.act_window">
<field name="name">KPI</field> <field name="name">KPI</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">kpi.item</field> <field name="res_model">kpi.item</field>
<field name="view_mode">tree,form</field> <field name="view_mode">list,form</field>
<field name="search_view_id" eval="kpi_item_view_search"/> <field name="search_view_id" eval="kpi_item_view_search"/>
<field name="help" type="html"> <field name="help" type="html">
<p class="oe_view_nocontent_create"> <p class="oe_view_nocontent_create">

View File

@ -41,7 +41,7 @@
type="action" type="action"
class="oe_stat_button" class="oe_stat_button"
icon="fa-list" icon="fa-list"
context="{'search_default_measure_id': active_id, 'default_measure_id': active_id}" context="{'search_default_measure_id': id, 'default_measure_id': id}"
> >
<field string="Measurements" <field string="Measurements"
name="measures_len" name="measures_len"
@ -61,7 +61,8 @@
<field name="measure_type"/> <field name="measure_type"/>
</group> </group>
<field name="py_code" <field name="py_code"
attrs="{'invisible': [('measure_type', 'not in', ['py_code'])], 'required': [('measure_type', 'in', ['py_code'])]}" invisible="measure_type != 'py_code'"
required="measure_type == 'py_code'"
widget="ace" widget="ace"
options="{'mode': 'python'}" options="{'mode': 'python'}"
/> />
@ -72,7 +73,7 @@
nolabel="1" nolabel="1"
style="color:red;" style="color:red;"
/> />
<group attrs="{'invisible': [('measure_type', 'not in', ['sum', 'average', 'count'])]}"> <group invisible="measure_type not in ['sum', 'average', 'count']">
<field name="model_id" <field name="model_id"
options="{'no_create_edit': 1, 'no_quick_create': 1}" options="{'no_create_edit': 1, 'no_quick_create': 1}"
/> />
@ -81,7 +82,9 @@
('model', '=', model_name), ('model', '=', model_name),
('ttype', 'in', ['integer', 'float', 'monetary']), ('ttype', 'in', ['integer', 'float', 'monetary']),
]" ]"
attrs="{'invisible':['|', ('model_id', '=', False), ('measure_type', '=', 'count')], 'required': [('measure_type', 'in', ['sum', 'average']), ('model_id', '!=', False)]}" invisible="not model_id or measure_type == 'count'"
required="measure_type in ['sum', 'average'] and model_id"
options="{'no_create_edit': 1, 'no_quick_create': 1}" options="{'no_create_edit': 1, 'no_quick_create': 1}"
/> />
<field name="date_field_ids" <field name="date_field_ids"
@ -90,7 +93,7 @@
('ttype', 'in', ['date', 'datetime']), ('ttype', 'in', ['date', 'datetime']),
('store', '=', True), ('store', '=', True),
]" ]"
attrs="{'invisible': [('model_id', '=', False)]}" invisible="not model_id"
options="{'no_create_edit': 1, 'no_quick_create': 1}" options="{'no_create_edit': 1, 'no_quick_create': 1}"
widget="many2many_tags" widget="many2many_tags"
/> />
@ -100,13 +103,13 @@
('ttype', 'in', ['many2one']), ('ttype', 'in', ['many2one']),
('relation', '=', 'res.company'), ('relation', '=', 'res.company'),
]" ]"
attrs="{'invisible':[('model_id', '=', False)]}" invisible="not model_id"
options="{'no_create_edit': 1, 'no_quick_create': 1}" options="{'no_create_edit': 1, 'no_quick_create': 1}"
/> />
<field name="domain" <field name="domain"
widget="domain" widget="domain"
options="{'model': 'model_name'}" options="{'model': 'model_name'}"
attrs="{'invisible': ['|', ('model_id', '=', False), ('measure_type', 'not in', ['sum', 'average', 'count'])]}" invisible="not model_id or measure_type not in ['sum', 'average', 'count']"
style="min-height:200px !important;" style="min-height:200px !important;"
/> />
</group> </group>
@ -119,21 +122,21 @@
<group> <group>
<field name="sequence"/> <field name="sequence"/>
</group> </group>
<group attrs="{'invisible': [('measure_type', 'not in', ['sum', 'average', 'count'])]}"> <group invisible="measure_type not in ['sum', 'average', 'count']">
<field name="model_name" <field name="model_name"
readonly="1" readonly="1"
/> />
<field name="measure_field_name" <field name="measure_field_name"
readonly="1" readonly="1"
attrs="{'invisible':['|', ('model_name', '=', False), ('measure_type', '=', 'count')]}" invisible="not model_name or measure_type == 'count'"
/> />
<field name="date_field_name" <field name="date_field_name"
readonly="1" readonly="1"
attrs="{'invisible': [('model_name', '=', False)]}" invisible="not model_name"
/> />
<field name="company_field_name" <field name="company_field_name"
readonly="1" readonly="1"
attrs="{'invisible': [('model_name', '=', False)]}" invisible="not model_name"
/> />
</group> </group>
</group> </group>
@ -141,7 +144,7 @@
<field name="active"/> <field name="active"/>
</group> </group>
</page> </page>
<page string="Help" attrs="{'invisible': [('help_notes', '=', False)]}"> <page string="Help" invisible="not help_notes">
<field name="kpi_help_dummy" invisible="1"/> <field name="kpi_help_dummy" invisible="1"/>
<field name="help_notes"/> <field name="help_notes"/>
</page> </page>
@ -154,21 +157,21 @@
<field name="name">kpi.measure.tree</field> <field name="name">kpi.measure.tree</field>
<field name="model">kpi.measure</field> <field name="model">kpi.measure</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<tree decoration-muted="existing_kpi != False"> <list decoration-muted="existing_kpi != False">
<field name="sequence" widget="handle"/> <field name="sequence" widget="handle"/>
<field name='name'/> <field name='name'/>
<field name='model_name'/> <field name='model_name'/>
<field name='measure_type'/> <field name='measure_type'/>
<field name="active" invisible="1"/> <field name="active" invisible="1"/>
<field name="existing_kpi" invisible="1"/> <field name="existing_kpi" invisible="1"/>
</tree> </list>
</field> </field>
</record> </record>
<record id="kpi_measure_action" model="ir.actions.act_window"> <record id="kpi_measure_action" model="ir.actions.act_window">
<field name="name">Basic Measurements</field> <field name="name">Basic Measurements</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">kpi.measure</field> <field name="res_model">kpi.measure</field>
<field name="view_mode">tree,form</field> <field name="view_mode">list,form</field>
<field name="search_view_id" eval="kpi_measure_view_search"/> <field name="search_view_id" eval="kpi_measure_view_search"/>
<field name="context">{'search_default_installed_kpis': 1}</field> <field name="context">{'search_default_installed_kpis': 1}</field>
<field name="help" type="html"> <field name="help" type="html">

View File

@ -53,7 +53,8 @@
widget="domain" widget="domain"
options="{'model': 'model_name'}" options="{'model': 'model_name'}"
style="min-height:200px !important;" style="min-height:200px !important;"
attrs="{'invisible': ['|', ('model_name', '=', False), ('measure_type', 'not in', ['sum', 'average', 'count'])]}" invisible="not model_name or measure_type not in ['sum', 'average', 'count']"
/> />
</group> </group>
<notebook> <notebook>
@ -68,7 +69,7 @@
<field name="measure_type" invisible="1"/> <field name="measure_type" invisible="1"/>
</group> </group>
</page> </page>
<page string="Help" attrs="{'invisible': [('help_notes', '=', False)]}"> <page string="Help" invisible="not help_notes" >
<field name="kpi_help_dummy" invisible="1"/> <field name="kpi_help_dummy" invisible="1"/>
<field name="help_notes"/> <field name="help_notes"/>
</page> </page>
@ -81,19 +82,19 @@
<field name="name">kpi.measure.item.tree</field> <field name="name">kpi.measure.item.tree</field>
<field name="model">kpi.measure.item</field> <field name="model">kpi.measure.item</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<tree> <list>
<field name="sequence" widget="handle"/> <field name="sequence" widget="handle"/>
<field name='name'/> <field name='name'/>
<field name="measure_id"/> <field name="measure_id"/>
<field name="active" invisible="1"/> <field name="active" invisible="1"/>
</tree> </list>
</field> </field>
</record> </record>
<record id="kpi_measure_item_action" model="ir.actions.act_window"> <record id="kpi_measure_item_action" model="ir.actions.act_window">
<field name="name">Measurements (Variables)</field> <field name="name">Measurements (Variables)</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">kpi.measure.item</field> <field name="res_model">kpi.measure.item</field>
<field name="view_mode">tree,form</field> <field name="view_mode">list,form</field>
<field name="search_view_id" eval="kpi_measure_item_view_search"/> <field name="search_view_id" eval="kpi_measure_item_view_search"/>
<field name="domain">[('existing_kpi', '!=', False)]</field> <field name="domain">[('existing_kpi', '!=', False)]</field>
<field name="help" type="html"> <field name="help" type="html">

View File

@ -45,7 +45,7 @@
type="object" type="object"
class="oe_stat_button" class="oe_stat_button"
icon="fa-stop" icon="fa-stop"
attrs="{'invisible': [('state', 'not in', ['open'])]}" invisible="state not in ['open']"
> >
Close Period Close Period
</button> </button>
@ -53,7 +53,7 @@
type="object" type="object"
class="oe_stat_button" class="oe_stat_button"
icon="fa-refresh" icon="fa-refresh"
attrs="{'invisible': [('state', 'not in', ['closed'])]}" invisible="state not in ['closed']"
> >
Re-Open Period Re-Open Period
</button> </button>
@ -61,8 +61,9 @@
type="action" type="action"
class="oe_stat_button" class="oe_stat_button"
icon="fa-exchange" icon="fa-exchange"
attrs="{'invisible': [('state', 'not in', ['open'])]}" invisible="state not in ['open']"
context="{'default_period_id': active_id}"
context="{'default_period_id': id}"
> >
Substitute Targets Substitute Targets
</button> </button>
@ -80,11 +81,12 @@
<div> <div>
<field name="date_start" <field name="date_start"
class="oe_inline" class="oe_inline"
attrs="{'readonly': [('state', 'not in', 'open')]}" readonly="state not in ['open']"
/> to /> to
<field name="date_end" <field name="date_end"
class="oe_inline" class="oe_inline"
attrs="{'readonly': [('state', 'not in', 'open')]}" readonly="state not in ['open']"
/> />
</div> </div>
<field name="template_id" <field name="template_id"
@ -99,12 +101,13 @@
<notebook invisible="context.get('quick_kpi_period')"> <notebook invisible="context.get('quick_kpi_period')">
<page string="Targets"> <page string="Targets">
<field name="line_ids" <field name="line_ids"
attrs="{'readonly': [('state', 'not in', 'open')]}" readonly="state not in ['open']"
> >
<tree editable="bottom"> <list editable="bottom">
<field name="kpi_id"/> <field name="kpi_id"/>
<field name="target_value"/> <field name="target_value"/>
</tree> </list>
</field> </field>
</page> </page>
<page string="Misc"> <page string="Misc">
@ -114,7 +117,7 @@
/> />
</group> </group>
</page> </page>
<page string="Help" attrs="{'invisible': [('help_notes', '=', False)]}"> <page string="Help" invisible="not help_notes">
<field name="kpi_help_dummy" invisible="1"/> <field name="kpi_help_dummy" invisible="1"/>
<field name="help_notes"/> <field name="help_notes"/>
</page> </page>
@ -127,19 +130,19 @@
<field name="name">kpi.period.tree</field> <field name="name">kpi.period.tree</field>
<field name="model">kpi.period</field> <field name="model">kpi.period</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<tree decoration-muted="state == 'closed'"> <list decoration-muted="state == 'closed'">
<field name="name"/> <field name="name"/>
<field name="date_start"/> <field name="date_start"/>
<field name="date_end"/> <field name="date_end"/>
<field name="state"/> <field name="state"/>
</tree> </list>
</field> </field>
</record> </record>
<record id="kpi_period_action" model="ir.actions.act_window"> <record id="kpi_period_action" model="ir.actions.act_window">
<field name="name">Periods</field> <field name="name">Periods</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">kpi.period</field> <field name="res_model">kpi.period</field>
<field name="view_mode">tree,form</field> <field name="view_mode">list,form</field>
<field name="search_view_id" eval="kpi_period_view_search"/> <field name="search_view_id" eval="kpi_period_view_search"/>
<field name="context">{'search_default_open_periods': 1}</field> <field name="context">{'search_default_open_periods': 1}</field>
<field name="help" type="html"> <field name="help" type="html">

View File

@ -36,7 +36,7 @@
invisible="1" invisible="1"
/> />
</group> </group>
<div attrs="{'invisible': [('help_notes', '=', False)]}"> <div invisible="not help_notes">
<field name="kpi_help_dummy" invisible="1"/> <field name="kpi_help_dummy" invisible="1"/>
<label for="help_notes" invisible="1"/> <label for="help_notes" invisible="1"/>
<field name="help_notes"/> <field name="help_notes"/>
@ -49,7 +49,7 @@
<field name="name">kpi.scorecard.line.kanban</field> <field name="name">kpi.scorecard.line.kanban</field>
<field name="model">kpi.scorecard.line</field> <field name="model">kpi.scorecard.line</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<kanban js_class="scorecard_kanban" <kanban
class="kpi-kanban-view" class="kpi-kanban-view"
group_create="0" group_create="0"
group_delete="0" group_delete="0"

View File

@ -6,7 +6,7 @@
<field name="model">res.config.settings</field> <field name="model">res.config.settings</field>
<field name="inherit_id" ref="base.res_config_settings_view_form"/> <field name="inherit_id" ref="base.res_config_settings_view_form"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
<xpath expr="//div[hasclass('settings')]" position="inside"> <xpath expr="//form" position="inside">
<div class="app_settings_block" <div class="app_settings_block"
data-string="KPI Scorecard" data-string="KPI Scorecard"
string="KPI Scorecard" string="KPI Scorecard"

View File

@ -1,16 +1,16 @@
<odoo> <odoo>
<template id="assets_backend" name="list asssets" inherit_id="web.assets_backend"> <!-- <template id="assets_backend" name="list asssets" inherit_id="web.assets_backend">-->
<xpath expr="." position="inside"> <!-- <xpath expr="." position="inside">-->
<!-- Formula --> <!-- &lt;!&ndash; Formula &ndash;&gt;-->
<script type="text/javascript" src="/kpi_scorecard/static/src/js/kpi_formula.js"/> <!-- <script type="text/javascript" src="/kpi_scorecard/static/src/js/kpi_formula.js"/>-->
<link type="text/css" rel='stylesheet' href='/kpi_scorecard/static/src/css/kpi_widgets.css'/> <!-- <link type="text/css" rel='stylesheet' href='/kpi_scorecard/static/src/css/kpi_widgets.css'/>-->
<!-- Kanban --> <!-- &lt;!&ndash; Kanban &ndash;&gt;-->
<script type="text/javascript" src="/kpi_scorecard/static/src/js/scorecard_kanbancontroller.js"/> <!-- <script type="text/javascript" src="/kpi_scorecard/static/src/js/scorecard_kanbancontroller.js"/>-->
<script type="text/javascript" src="/kpi_scorecard/static/src/js/scorecard_kanbanmodel.js"/> <!-- <script type="text/javascript" src="/kpi_scorecard/static/src/js/scorecard_kanbanmodel.js"/>-->
<script type="text/javascript" src="/kpi_scorecard/static/src/js/scorecard_kanbanview.js"/> <!-- <script type="text/javascript" src="/kpi_scorecard/static/src/js/scorecard_kanbanview.js"/>-->
<link type="text/css" rel='stylesheet' href='/kpi_scorecard/static/src/css/kpi_kanban.css'/> <!-- <link type="text/css" rel='stylesheet' href='/kpi_scorecard/static/src/css/kpi_kanban.css'/>-->
</xpath> <!-- </xpath>-->
</template> <!-- </template>-->
</odoo> </odoo>

View File

@ -13,7 +13,7 @@
options="{'no_create_edit': 1, 'no_quick_create': 1}" options="{'no_create_edit': 1, 'no_quick_create': 1}"
/> />
</group> </group>
<div attrs="{'invisible': [('help_notes', '=', False)]}"> <div invisible="not help_notes">
<field name="kpi_help_dummy" invisible="1"/> <field name="kpi_help_dummy" invisible="1"/>
<label for="help_notes" invisible="1"/> <label for="help_notes" invisible="1"/>
<field name="help_notes"/> <field name="help_notes"/>