In the standard OpenERP installation, if you click on Accounting --> Journal Entries sub menu ----> Journal Items, you see a tree view with two drop down at the top that allow you to filter by period and journal. I thought this was cool functionality, so I was looking into the source. The source of this view is:
<record id="view_move_line_tree" model="ir.ui.view">
<field name="name">account.move.line.tree</field>
<field name="model">account.move.line</field>
<field eval="1" name="priority"/>
<field name="arch" type="xml">
<tree colors="red:state == 'draft';black:state == 'valid'" string="Journal Items" create="true" on_write="on_create_write" version="7.0" editable="top">
<field name="journal_id" options='{"no_open":True}' invisible="context.get('journal_id',False)"/>
<field name="period_id" options='{"no_open":True}' invisible="context.get('period_id',False)"/>
<field name="date"/>
<field name="name"/>
<field name="ref"/>
<field name="statement_id" invisible="1"/>
<field name="partner_id" on_change="onchange_partner_id(move_id, partner_id, account_id, debit, credit, date, journal_id)"/>
<field name="account_id" options='{"no_open":True}' domain="[('journal_id','=',journal_id), ('company_id', '=', company_id)]" on_change="onchange_account_id(account_id, partner_id, context)"/>
<field name="account_tax_id" options='{"no_open":True}' invisible="context.get('journal_type', False) not in ['sale','sale_refund','purchase','purchase_refund','general']"/>
<field name="analytic_account_id" groups="analytic.group_analytic_accounting" domain="[('type','not in',['view','template'])]" invisible="not context.get('analytic_journal_id',False)"/>
<field name="move_id" required="0"/>
<field name="debit" sum="Total Debit"/>
<field name="credit" sum="Total Credit"/>
<field name="date_maturity" invisible="context.get('journal_type', False) not in ['sale','sale_refund','purchase','purchase_refund']"/>
<field name="reconcile"/>
<field name="invoice" invisible="1"/>
<field name="amount_currency" readonly="True" invisible="not context.get('currency',False)"/>
<field name="currency_id" readonly="True" invisible="not context.get('currency',False)" />
<field name="state" invisible="1"/>
<field name="company_id" invisible="1"/>
</tree>
</field>
</record>
My question is: how do they accomplish this functionality? I can't find the answers when looking at the source. To me, it just looks like a regular tree view. What tells the system to put the two dropdowns (and also provide filtering logic) at the top?
Thanks,
Tim