Skip to content
Snippets Groups Projects
  • Marco Folco's avatar
    e14e3ac0
    [MOD] modifed plan and insurance usage · e14e3ac0
    Marco Folco authored
    Now the res.partner is a insurance_grouper
    Each plan has an associated res.partner
    Modified views, grouper view is a simplified view of the plan partner one
    Modified views names, 'health insurances' is now 'Groupers' and 'Health Insurance Plans' is now 'Health Insurances'
    e14e3ac0
    History
    [MOD] modifed plan and insurance usage
    Marco Folco authored
    Now the res.partner is a insurance_grouper
    Each plan has an associated res.partner
    Modified views, grouper view is a simplified view of the plan partner one
    Modified views names, 'health insurances' is now 'Groupers' and 'Health Insurance Plans' is now 'Health Insurances'
insurance_grouper_view.xml 16.36 KiB
<?xml version="1.0" encoding="UTF-8"?>

<odoo>
    <data>
        
        <!-- Form View -->
        <record id="insurance_grouper_view_form" model="ir.ui.view">
            <field name="name">insurance.grouper.form</field>
            <field name="model">res.partner</field>
            <field eval="8" name="priority"/>
            <field name="arch" type="xml">
                <form string="Insurance Grouper">
                    <sheet>
                        <div class="oe_title">
                            <h1 class="mt0">
                                <field name="ref" class="col-2 oe_inline" placeholder="XXXX" required="True"/>
                                    -
                                <field name="name" class="col-7" placeholder="Name" required="True"/>
                            </h1>
                            <field name="partner_type" readonly="True" invisible="True"/> 
                        </div>
                        <group>
                            <group>
                                <field name="can_import_roll"/>
                                <field name="requires_plan"/>
                            </group>
                            <group>
                                <field name="phone" widget="phone"/>
                                <field name="email" widget="email" context="{'gravatar_image': True}"/>
                                <field name="website" widget="url" placeholder="e.g. https://www.eynes.com.ar"/>
                            </group>
                        </group>
                        <notebook>
                            <page name="health_insurance_plans" string="Plans" autofocus="autofocus">
                                <field name="health_insurance_plan_ids">
                                    <tree editable="top">
                                        <field name="name"/>
                                        <field name="code"/>
                                    </tree>
                                </field>
                            </page>
                            <page string="Contacts &amp; Addresses">
                                <field name="child_ids" mode="kanban">
                                    <kanban>
                                        <field name="id"/>
                                        <field name="color"/>
                                        <field name="name"/>
                                        <field name="title"/>
                                        <field name="type"/>
                                        <field name="email"/>
                                        <field name="parent_id"/>
                                        <field name="is_company"/>
                                        <field name="function"/>
                                        <field name="phone"/>
                                        <field name="street"/>
                                        <field name="street2"/>
                                        <field name="zip"/>
                                        <field name="city"/>
                                        <field name="country_id"/>
                                        <field name="mobile"/>
                                        <field name="state_id"/>
                                        <field name="image_small"/>
                                        <field name="lang"/>
                                        <!-- fields in form x2many view to diminish requests -->
                                        <field name="comment"/>
                                        <field name="customer"/>
                                        <field name="display_name"/>
                                        <field name="supplier"/>
                                        <templates>
                                            <t t-name="kanban-box">
                                                <t t-set="color" t-value="kanban_color(record.color.raw_value)"/>
                                                <div t-att-class="color + (record.title.raw_value == 1 ? ' oe_kanban_color_alert' : '') + ' oe_kanban_global_click'">
                                                    <div class="o_kanban_image">
                                                        <img alt="" t-if="record.image_small.raw_value" t-att-src="kanban_image('res.partner', 'image_small', record.id.raw_value)"/>
                                                        <t t-if="!record.image_small.raw_value">
                                                            <img alt="Delivery" t-if="record.type.raw_value === 'delivery'" t-att-src="_s + &quot;/base/static/img/truck.png&quot;"/>
                                                            <img alt="Invoice" t-if="record.type.raw_value === 'invoice'" t-att-src="_s + &quot;/base/static/img/money.png&quot;"/>
                                                            <t t-if="record.type.raw_value !== 'invoice' &amp;&amp; record.type.raw_value !== 'delivery'">
                                                                <img alt="Logo" t-if="record.is_company.raw_value === true" t-att-src="_s + &quot;/base/static/img/company_image.png&quot;"/>
                                                                <img alt="Avatar" t-if="record.is_company.raw_value === false" t-att-src="_s + &quot;/base/static/img/avatar.png&quot;"/>
                                                            </t>
                                                        </t>
                                                    </div>
                                                    <div class="oe_kanban_details">
                                                        <field name="name"/>
                                                        <div t-if="record.function.raw_value"><field name="function"/></div>
                                                        <div t-if="record.email.raw_value"><field name="email" widget="email"/></div>
                                                        <div t-if="record.type.raw_value != 'contact'">
                                                            <div>
                                                                <field name="zip"/>
                                                                <field name="city"/>
                                                            </div>
                                                            <field t-if="record.state_id.raw_value" name="state_id"/>
                                                            <field name="country_id"/>
                                                        </div>
                                                        <div t-if="record.phone.raw_value">Phone: <field name="phone"/></div>
                                                        <div t-if="record.mobile.raw_value">Mobile: <field name="mobile"/></div>
                                                    </div>
                                                </div>
                                            </t>
                                        </templates>
                                    </kanban>
                                    <form string="Contact / Address">
                                        <sheet>
                                            <!-- parent_id and type fields needed in attrs in base_address_city module which overwrites
                                            _fields_view_get() of partner. It would be better to put those fields there but the web client
                                            dosen't support when a field is displayed several times in the same view.-->
                                            <field name="type" required="1" widget="radio" options="{'horizontal': true}"/>
                                            <field name="parent_id" invisible="1"/>
                                            <hr/>
                                            <group>
                                                <group attrs="{'invisible': [('type','=', 'contact')]}">
                                                    <label for="street" string="Address"/>
                                                    <div>
                                                        <div class="o_address_format" name="div_address">
                                                            <field name="street" placeholder="Street..." class="o_address_street"/>
                                                            <field name="street2" placeholder="Street 2..." class="o_address_street"/>
                                                            <field name="city" placeholder="City" class="o_address_city"/>
                                                            <field name="state_id" class="o_address_state" placeholder="State" options="{&quot;no_open&quot;: True}" context="{'country_id': country_id, 'zip': zip}"/>
                                                            <field name="zip" placeholder="ZIP" class="o_address_zip"/>
                                                            <field name="country_id" placeholder="Country" class="o_address_country" options="{&quot;no_open&quot;: True, &quot;no_create&quot;: True}"/>
                                                        </div>
                                                    </div>
                                                </group>
                                                <group>
                                                    <field name="name" string="Contact Name" attrs="{'required' : [('type', '=', 'contact')]}"/>
                                                    <field name="title" placeholder="e.g. Mr." attrs="{'invisible': [('type','!=', 'contact')]}"/>
                                                    <field name="function" placeholder="e.g. Sales Director" attrs="{'invisible': [('type','!=', 'contact')]}"/>
                                                    <field name="email"/>
                                                    <field name="phone" widget="phone"/>
                                                    <field name="mobile" widget="phone"/>
                                                    <field name="comment" placeholder="internal note..."/>
                                                </group>
                                            </group>
                                            <field name="supplier" invisible="True"/>
                                            <field name="customer" invisible="True"/>
                                            <field name="lang" invisible="True"/>
                                            <field name="image" invisible="True"/>
                                            <field name="user_id" invisible="True"/>
                                        </sheet>
                                    </form>
                                </field>
                            </page>
                            <page name="internal_notes" string="Internal Notes">
                                <field name="comment" placeholder="Internal note..."/>
                            </page>
                        </notebook>
                    </sheet>
                </form>
            </field>
        </record>
        
        <!-- Kanban View -->
        <record id="insurance_grouper_view_kanban" model="ir.ui.view">
            <field name="name">insurance.grouper.kanban</field>
            <field name="model">res.partner</field>
            <field name="arch" type="xml">
                <kanban>
                    <field name="id"/>
                    <field name="name"/>
                    <field name="email"/>
                    <field name="state_id"/>
                    <field name="zip"/>
                    <field name="city"/>
                    <field name="phone"/>
                    <field name="country_id"/>
                    <field name="ref"/>
                    <templates>
                        <t t-name="kanban-box">
                            <div t-attf-class="oe_kanban_card oe_kanban_global_click">
                                <div class="o_kanban_record_top">
                                    <div class="o_kanban_record_headings">
                                        <h1><field name="name" class="o_kanban_record_title"/></h1>
                                    </div>
                                    <div class="oe_inline" style="border: 1px solid #dee2e6;">
                                            <strong style="padding: 3px;"><field name="ref"/></strong>
                                    </div>
                                </div>
                                <div t-if="record.email.raw_value"><field name="email" widget="email"/></div>
                                    <div>
                                        <field name="zip"/>
                                        <field name="city"/>
                                    </div>
                                <field t-if="record.state_id.raw_value" name="state_id"/>
                                <field name="country_id"/>
                                <div t-if="record.phone.raw_value">Phone: <field name="phone"/></div>
                            </div>
                        </t>
                    </templates>
                </kanban>
            </field>
        </record>

        <!-- Tree View -->
        <record id="insurance_grouper_view_tree" model="ir.ui.view">
            <field name="name">insurance.grouper.tree</field>
            <field name="model">res.partner</field>
            <field eval="8" name="priority"/>
            <field name="arch" type="xml">
                <tree string="Health Insurances">
                    <field name="name" string="Name"/>
                    <field name="ref"/>
                    <field name="email"/>
                    <field name="phone"/>
                </tree>
            </field>
        </record>

        <!-- Search View -->
        <record id="insurance_grouper_view_search" model="ir.ui.view">
            <field name="name">health.insurance.search</field>
            <field name="model">res.partner</field>
            <field name="arch" type="xml">
                <search string="Search grouper">
                   <field name="name"
                       filter_domain="['|','|',('display_name','ilike',self),
                                    ('ref','=',self),('email','ilike',self)]"/>
                   <field name="ref"/>
               </search>
            </field>
        </record>

        <!-- Action View -->
        <record id="insurance_grouper_action" model="ir.actions.act_window">
            <field name="name">Groupers</field>
            <field name="type">ir.actions.act_window</field>
            <field name="res_model">res.partner</field>
            <field name="view_type">form</field>
            <field name="view_mode">kanban,tree,form</field>
            <field name="search_view_id" ref="insurance_grouper_view_search"/>
            <field name="domain">[('partner_type','=','insurance')]</field>
            <field name="context">{'default_partner_type': 'insurance'}</field>
        </record>
        
        <record id="insurance_grouper_action_kanban_view" model="ir.actions.act_window.view">
            <field name="sequence" eval="1"/>
            <field name="view_mode">kanban</field>
            <field name="view_id" ref="insurance_grouper_view_kanban"/>
            <field name="act_window_id" ref="insurance_grouper_action"/>
        </record>

        <record id="insurance_grouper_action_tree_view" model="ir.actions.act_window.view">
            <field name="sequence" eval="2"/>
            <field name="view_mode">tree</field>
            <field name="view_id" ref="insurance_grouper_view_tree"/>
            <field name="act_window_id" ref="insurance_grouper_action"/>
        </record>

        <record id="insurance_grouper_action_form_view" model="ir.actions.act_window.view">
            <field name="sequence" eval="3"/>
            <field name="view_mode">form</field>
            <field name="view_id" ref="insurance_grouper_view_form"/>
            <field name="act_window_id" ref="insurance_grouper_action"/>
        </record>

        <!-- Menu Item -->
        <menuitem id="menu_insurance_grouper" name="Groupers" 
            parent="health_insurance.menu_health_insurance_root"
            action="insurance_grouper_action" sequence="1" groups="base.group_user"/>
    
    </data>
</odoo>