With the conversion of the views to owl, we added an extra div around fields that represents the whole field, and wraps potentially multiple elements that may be rendered by a field widget. This changes the DOM structure, and to allow concrete fields to control everything about the way they are displayed, we decided to use the css rule "display: contents" for that div. As it turns out, while this does give more control to the field widget, it breaks a lot of existing css rules, and also prevents classes that are applied on that div from the arch from affecting any css property related to layout (such as margin, position or padding). Because of that, we decided to revert this change, and set this div's display property to inline-block (the same as legacy field widgets) and adapt the few fields where this does not work out of the box, which fixes many issues. Part-of: odoo/odoo#98711
154 lines
8.6 KiB
XML
154 lines
8.6 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<odoo>
|
|
<!-- MEMBERSHIP/CURRENT MEMBERS -->
|
|
|
|
<record model="ir.ui.view" id="membership_members_tree">
|
|
<field name="name">Members</field>
|
|
<field name="model">res.partner</field>
|
|
<field name="arch" type="xml">
|
|
<tree string="Members">
|
|
<field name="name"/>
|
|
<field name="membership_state" widget="badge" decoration-info="membership_state =='waiting'"
|
|
decoration-success="membership_state in ['invoiced', 'free', 'paid']"/>
|
|
<field name="associate_member"/>
|
|
<field name="membership_start"/>
|
|
<field name="membership_stop"/>
|
|
<field name="user_id" invisible="1"/>
|
|
<field name="company_id" groups="base.group_multi_company"/>
|
|
</tree>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="view_res_partner_member_filter" model="ir.ui.view">
|
|
<field name="name">res.partner.select</field>
|
|
<field name="model">res.partner</field>
|
|
<field name="priority">50</field>
|
|
<field name="arch" type="xml">
|
|
<search string="Membership Partners">
|
|
<field name="name"
|
|
filter_domain="['|', '|', ('name', 'ilike', self), ('parent_id', 'ilike', self), ('ref' , '=', self)]"/>
|
|
<field name="category_id"/>
|
|
<field name="membership_start" invisible="1"/>
|
|
<field name="membership_stop" string="End Membership Date"/>
|
|
<filter name="customer" string="Customers" domain="[('customer_rank' ,'>', 0)]"/>
|
|
<filter name="supplier" string="Vendors" domain="[('supplier_rank', '>', 0)]"/>
|
|
<separator/>
|
|
<filter name="all_members" string="Members" domain="[('membership_state', 'in', ['invoiced', 'paid', 'free'])]" help="Invoiced/Paid/Free"/>
|
|
<separator/>
|
|
<filter string="Start Date" name="start_date" date="membership_start"/>
|
|
<filter string="End Date" name="end_date" date="membership_stop"/>
|
|
<group expand="0" string="Group By" colspan="10" col="8">
|
|
<filter string="Salesperson" name="salesperson" domain="[]" context="{'group_by' : 'user_id'}"/>
|
|
<filter string="Associate Member" name = "associate" domain="[]" context="{'group_by': 'associate_member'}"/>
|
|
<filter string="Membership State" name="membership_state" domain="[]" context="{'group_by': 'membership_state'}"/>
|
|
<filter string="Start Date" name="start_month" help="Starting Date Of Membership" domain="[]" context="{'group_by': 'membership_start'}"/>
|
|
<filter string="End Date" name="end_month" help="Ending Date Of Membership" domain="[]" context="{'group_by': 'membership_stop'}"/>
|
|
</group>
|
|
</search>
|
|
</field>
|
|
</record>
|
|
|
|
<record model="ir.actions.act_window" id="action_membership_members">
|
|
<field name="name">Members</field>
|
|
<field name="res_model">res.partner</field>
|
|
<field name="view_mode">kanban,tree,form,activity</field>
|
|
<field name="search_view_id" ref="view_res_partner_member_filter"/>
|
|
<field name="context">{"search_default_all_members": 1, "default_free_member": True}</field>
|
|
<field name="help" type="html">
|
|
<p class="o_view_nocontent_smiling_face">
|
|
Add a new member
|
|
</p><p>
|
|
Odoo helps you easily track all activities related to a member:
|
|
Current Membership Status, Discussions and History of Membership, etc.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<record model="ir.actions.act_window.view" id="action_membership_members_view_tree">
|
|
<field name="sequence" eval="2"/>
|
|
<field name="view_mode">tree</field>
|
|
<field name="view_id" ref="membership_members_tree"/>
|
|
<field name="act_window_id" ref="action_membership_members"/>
|
|
</record>
|
|
|
|
<record model="ir.actions.act_window.view" id="action_membership_members_view_form">
|
|
<field name="sequence" eval="3"/>
|
|
<field name="view_mode">form</field>
|
|
<field name="view_id" ref="base.view_partner_form"/>
|
|
<field name="act_window_id" ref="action_membership_members"/>
|
|
</record>
|
|
<record model="ir.actions.act_window.view" id="action_membership_members_view_kanban">
|
|
<field name="sequence" eval="1"/>
|
|
<field name="view_mode">kanban</field>
|
|
<field name="view_id" ref="base.res_partner_kanban_view"/>
|
|
<field name="act_window_id" ref="action_membership_members"/>
|
|
</record>
|
|
<menuitem name="Members" id="menu_membership" sequence="0" parent="menu_association" action="action_membership_members"/>
|
|
|
|
<!-- PARTNERS -->
|
|
|
|
<record model="ir.ui.view" id="view_partner_tree">
|
|
<field name="name">res.partner.tree.form.inherit</field>
|
|
<field name="model">res.partner</field>
|
|
<field name="inherit_id" ref="base.view_partner_tree"/>
|
|
<field name="arch" type="xml">
|
|
<field name="category_id" position="after">
|
|
<field name="membership_state" optional="hide" decoration-info="membership_state =='waiting'"
|
|
decoration-success="membership_state in ['invoiced', 'free', 'paid']" widget="badge"/>
|
|
</field>
|
|
</field>
|
|
</record>
|
|
|
|
<record model="ir.ui.view" id="view_partner_form">
|
|
<field name="name">res.partner.form.inherit</field>
|
|
<field name="model">res.partner</field>
|
|
<field name="inherit_id" ref="base.view_partner_form"/>
|
|
<field name="arch" type="xml">
|
|
<notebook position="inside">
|
|
<page string="Membership" name="membership">
|
|
<group>
|
|
<group>
|
|
<field name="free_member"/>
|
|
<label for="membership_state"/>
|
|
<div>
|
|
<field name="membership_state" class="oe_inline"/>
|
|
<button name="%(action_membership_invoice_view)d" type="action" string="Buy Membership"
|
|
attrs="{'invisible':[('free_member','=',True)]}" class="oe_link"/>
|
|
</div>
|
|
</group>
|
|
<group>
|
|
<field name="associate_member" attrs="{'invisible':[('free_member','=',True)]}"/>
|
|
<field name="membership_start" attrs="{'invisible':[('membership_start','=',False)]}"/>
|
|
<field name="membership_stop" attrs="{'invisible':[('membership_stop','=',False)]}"/>
|
|
<field name="membership_cancel" attrs="{'invisible':[('membership_cancel','=',False)]}"/>
|
|
</group>
|
|
</group>
|
|
<field name="member_lines" nolabel="1" colspan="4" readonly="1">
|
|
<tree string="Memberships">
|
|
<field name="date"/>
|
|
<field name="membership_id"/>
|
|
<field name="member_price"/>
|
|
<field name="account_invoice_id"/>
|
|
<field name="state"/>
|
|
</tree>
|
|
<form string="Memberships">
|
|
<group col="2">
|
|
<group>
|
|
<field name="membership_id"/>
|
|
<field name="date"/>
|
|
<field name="state"/>
|
|
</group>
|
|
<group>
|
|
<field name="member_price"/>
|
|
<field name="account_invoice_id" context="{'form_view_ref': 'account.view_move_form'}"/>
|
|
</group>
|
|
</group>
|
|
</form>
|
|
</field>
|
|
|
|
</page>
|
|
</notebook>
|
|
</field>
|
|
</record>
|
|
</odoo>
|