416 lines
22 KiB
XML
416 lines
22 KiB
XML
|
<?xml version="1.0" encoding="UTF-8"?>
|
||
|
<odoo>
|
||
|
<record id='fleet_vehicle_log_contract_view_form' model='ir.ui.view'>
|
||
|
<field name="name">fleet.vehicle.log_contract.form</field>
|
||
|
<field name="model">fleet.vehicle.log.contract</field>
|
||
|
<field name="arch" type="xml">
|
||
|
<form string="Contract logs">
|
||
|
<field name="company_id" invisible="1"/>
|
||
|
<header>
|
||
|
<button name="action_open" invisible="state != 'futur'" type="object" string="Start Contract" class="oe_highlight" groups="fleet.fleet_group_manager"/>
|
||
|
<button name="action_close" invisible="state != 'futur'" type="object" string="Cancel" groups="fleet.fleet_group_manager"/>
|
||
|
<button name="action_close" invisible="state not in ('open', 'expired', 'futur')" type="object" string="Close Contract" groups="fleet.fleet_group_manager"/>
|
||
|
<button name="action_draft" invisible="state != 'closed'" type="object" string="Reset To Draft" groups="fleet.fleet_group_manager"/>
|
||
|
<field name="state" widget="statusbar" />
|
||
|
</header>
|
||
|
<sheet>
|
||
|
<field name="active" invisible="1"/>
|
||
|
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" invisible="active"/>
|
||
|
<field name="currency_id" invisible="1"/>
|
||
|
<div class="oe_title">
|
||
|
<h1><field name="name"/></h1>
|
||
|
</div>
|
||
|
<group string="Information" col="2">
|
||
|
<group col="1">
|
||
|
<field name="ins_ref"/>
|
||
|
<field name="cost_subtype_id"/>
|
||
|
<field name="insurer_id" widget="many2one_avatar"/>
|
||
|
<field name="service_ids" widget="many2many_tags"/>
|
||
|
<field name="company_id" groups="base.group_multi_company"/>
|
||
|
</group>
|
||
|
<group col="2">
|
||
|
<field name="start_date"/>
|
||
|
<field name="expiration_date" required="cost_frequency != 'no'"/>
|
||
|
<field name="user_id" widget="many2one_avatar_user"/>
|
||
|
<field name="purchaser_id" invisible="1"/>
|
||
|
</group>
|
||
|
</group>
|
||
|
<group string="Vehicle" col="2">
|
||
|
<group col="1">
|
||
|
<field name="vehicle_id"/>
|
||
|
</group>
|
||
|
<group col="2">
|
||
|
<field name="purchaser_id" widget="many2one_avatar"/>
|
||
|
</group>
|
||
|
</group>
|
||
|
<group string="Cost" col="2">
|
||
|
<group>
|
||
|
<field name="amount" string="Activation Cost" help="Cost that is paid only once at the creation of the contract" widget="monetary" class="w-25"/>
|
||
|
<label for="cost_generated"/>
|
||
|
<div class="o_row">
|
||
|
<span class="w-25">
|
||
|
<field name="cost_generated" invisible="cost_frequency == 'no'" widget="monetary"/>
|
||
|
</span>
|
||
|
<field name="cost_frequency"/>
|
||
|
</div>
|
||
|
</group>
|
||
|
<group>
|
||
|
<field name="date"/>
|
||
|
</group>
|
||
|
</group>
|
||
|
<separator string="Terms and Conditions"/>
|
||
|
<field name="notes" nolabel="1" placeholder="Write here all other information relative to this contract" />
|
||
|
</sheet>
|
||
|
<div class="oe_chatter">
|
||
|
<field name="message_follower_ids"/>
|
||
|
<field name="activity_ids"/>
|
||
|
<field name="message_ids"/>
|
||
|
</div>
|
||
|
</form>
|
||
|
</field>
|
||
|
</record>
|
||
|
|
||
|
<record id='fleet_vehicle_log_contract_view_tree' model='ir.ui.view'>
|
||
|
<field name="name">fleet.vehicle.log.contract.tree</field>
|
||
|
<field name="model">fleet.vehicle.log.contract</field>
|
||
|
<field name="arch" type="xml">
|
||
|
<tree string="Contract logs"
|
||
|
decoration-warning="expires_today"
|
||
|
decoration-danger="days_left==0 and not expires_today"
|
||
|
decoration-muted="state=='closed'"
|
||
|
default_order="expiration_date"
|
||
|
sample="1">
|
||
|
<field name="active" column_invisible="True"/>
|
||
|
<field name="expires_today" column_invisible="True"/>
|
||
|
<field name="name" class="fw-bold" />
|
||
|
<field name="start_date" />
|
||
|
<field name="expiration_date" widget="remaining_days"/>
|
||
|
<field name="days_left" column_invisible="True"/>
|
||
|
<field name="vehicle_id"/>
|
||
|
<field name="insurer_id" />
|
||
|
<field name="purchaser_id" widget="many2one_avatar"/>
|
||
|
<field name="cost_generated" widget="monetary"/>
|
||
|
<field name="currency_id" column_invisible="True"/>
|
||
|
<field name="cost_frequency"/>
|
||
|
<field name="state" widget="badge" decoration-info="state == 'open'" decoration-danger="state == 'expired'" />
|
||
|
<field name="activity_exception_decoration" widget="activity_exception"/>
|
||
|
</tree>
|
||
|
</field>
|
||
|
</record>
|
||
|
|
||
|
<record id='fleet_vehicle_log_contract_view_kanban' model='ir.ui.view'>
|
||
|
<field name="name">fleet.vehicle.log.contract.kanban</field>
|
||
|
<field name="model">fleet.vehicle.log.contract</field>
|
||
|
<field name="arch" type="xml">
|
||
|
<kanban class="o_kanban_mobile" sample="1">
|
||
|
<field name="activity_state"/>
|
||
|
<progressbar field="activity_state" colors='{"planned": "success", "today": "warning", "overdue": "danger"}'/>
|
||
|
<templates>
|
||
|
<t t-name="kanban-box">
|
||
|
<div t-attf-class="oe_kanban_global_click">
|
||
|
<div>
|
||
|
<strong>
|
||
|
<field name="vehicle_id" widget="res_partner_many2one"/>
|
||
|
<span class="float-end badge text-bg-secondary">
|
||
|
<field name="state"/>
|
||
|
</span>
|
||
|
</strong>
|
||
|
</div>
|
||
|
<div>
|
||
|
<t t-if="luxon.DateTime.fromISO(record.expiration_date.raw_value) < luxon.DateTime.local()" t-set="expiration_class" t-value="'oe_kanban_text_red'"/>
|
||
|
<span t-att-class="expiration_class"><field name="start_date"/> - <field name="expiration_date"/></span>
|
||
|
</div>
|
||
|
<div>
|
||
|
<field name="insurer_id" widget="res_partner_many2one"/>
|
||
|
</div>
|
||
|
</div>
|
||
|
</t>
|
||
|
</templates>
|
||
|
</kanban>
|
||
|
</field>
|
||
|
</record>
|
||
|
|
||
|
<record id="fleet_vehicle_log_contract_view_graph" model="ir.ui.view">
|
||
|
<field name="name">fleet.vehicle.log.contract.graph</field>
|
||
|
<field name="model">fleet.vehicle.log.contract</field>
|
||
|
<field name="arch" type="xml">
|
||
|
<graph string="Contract Costs Per Month" sample="1">
|
||
|
<field name="date"/>
|
||
|
<field name="vehicle_id"/>
|
||
|
<field name="amount" type="measure"/>
|
||
|
</graph>
|
||
|
</field>
|
||
|
</record>
|
||
|
|
||
|
<record id="fleet_vehicle_log_contract_view_search" model="ir.ui.view">
|
||
|
<field name="name">fleet.vehicle.log.contract.search</field>
|
||
|
<field name="model">fleet.vehicle.log.contract</field>
|
||
|
<field name="arch" type="xml">
|
||
|
<search string="Vehicles Contracts">
|
||
|
<field name="vehicle_id" string="Vehicle" filter_domain="[('vehicle_id.name','ilike', self)]"/>
|
||
|
<field name="purchaser_id" string="Driver" filter_domain="[('purchaser_id','child_of', self)]"/>
|
||
|
<field name="insurer_id" string="Vendor" filter_domain="[('insurer_id','child_of', self)]"/>
|
||
|
<filter string="In Progress" name="open" domain="[('state', '=', 'open')]"/>
|
||
|
<filter string="Expired" name="expired" domain="[('state', '=', 'expired')]"/>
|
||
|
<separator/>
|
||
|
<filter string="Archived" name="inactive" domain="[('active', '=', False)]"/>
|
||
|
<separator/>
|
||
|
<filter invisible="1" string="Late Activities" name="activities_overdue"
|
||
|
domain="[('my_activity_date_deadline', '<', context_today().strftime('%Y-%m-%d'))]"
|
||
|
help="Show all records which has next action date is before today"/>
|
||
|
<filter invisible="1" string="Today Activities" name="activities_today"
|
||
|
domain="[('my_activity_date_deadline', '=', context_today().strftime('%Y-%m-%d'))]"/>
|
||
|
<filter invisible="1" string="Future Activities" name="activities_upcoming_all"
|
||
|
domain="[('my_activity_date_deadline', '>', context_today().strftime('%Y-%m-%d'))]"/>
|
||
|
<group expand="0" string="Group By">
|
||
|
<filter string="Vehicle" name="vehicle" context="{'group_by': 'vehicle_id'}"/>
|
||
|
</group>
|
||
|
</search>
|
||
|
</field>
|
||
|
</record>
|
||
|
|
||
|
<record id="fleet_vehicle_log_contract_view_activity" model="ir.ui.view">
|
||
|
<field name="name">fleet.vehicle.log.contract.activity</field>
|
||
|
<field name="model">fleet.vehicle.log.contract</field>
|
||
|
<field name="arch" type="xml">
|
||
|
<activity string="Vehicles Contracts">
|
||
|
<field name="purchaser_id"/>
|
||
|
<templates>
|
||
|
<div t-name="activity-box">
|
||
|
<img t-att-src="activity_image('res.partner', 'avatar_128', record.purchaser_id.raw_value)" t-att-title="record.purchaser_id.value" t-att-alt="record.purchaser_id.value"/>
|
||
|
<div class="ms-2">
|
||
|
<field name="vehicle_id" display="full" class="o_text_block"/>
|
||
|
</div>
|
||
|
</div>
|
||
|
</templates>
|
||
|
</activity>
|
||
|
</field>
|
||
|
</record>
|
||
|
|
||
|
<record id="fleet_vehicle_log_contract_view_pivot" model="ir.ui.view">
|
||
|
<field name="model">fleet.vehicle.log.contract</field>
|
||
|
<field name="arch" type="xml">
|
||
|
<pivot>
|
||
|
<field name="expiration_date" type="col" />
|
||
|
<field name="cost_subtype_id" type="row" />
|
||
|
<field name="vehicle_id" type="row" />
|
||
|
</pivot>
|
||
|
</field>
|
||
|
</record>
|
||
|
|
||
|
<record id='fleet_vehicle_log_contract_action' model='ir.actions.act_window'>
|
||
|
<field name="name">Contracts</field>
|
||
|
<field name="res_model">fleet.vehicle.log.contract</field>
|
||
|
<field name="view_mode">tree,kanban,form,graph,pivot,activity</field>
|
||
|
<field name="context">{'search_default_open': 1}</field>
|
||
|
<field name="help" type="html">
|
||
|
<p class="o_view_nocontent_smiling_face">
|
||
|
Create a new contract
|
||
|
</p><p>
|
||
|
Manage all your contracts (leasing, insurances, etc.) with
|
||
|
their related services, costs. Odoo will automatically warn
|
||
|
you when some contracts have to be renewed.
|
||
|
</p><p>
|
||
|
Each contract (e.g.: leasing) may include several services
|
||
|
(reparation, insurances, periodic maintenance).
|
||
|
</p>
|
||
|
</field>
|
||
|
</record>
|
||
|
|
||
|
<menuitem action="fleet_vehicle_log_contract_action" parent="fleet_vehicles" id="fleet_vehicle_log_contract_menu" groups="fleet_group_user" sequence="2"/>
|
||
|
|
||
|
<record id='fleet_vehicle_log_services_view_form' model='ir.ui.view'>
|
||
|
<field name="name">fleet.vehicle.log.services.form</field>
|
||
|
<field name="model">fleet.vehicle.log.services</field>
|
||
|
<field name="arch" type="xml">
|
||
|
<form string="Services Logs">
|
||
|
<field name="active" invisible="1" />
|
||
|
<field name="currency_id" invisible="1" />
|
||
|
<header>
|
||
|
<field name="state" widget="statusbar" options="{'clickable': '1'}"/>
|
||
|
</header>
|
||
|
<sheet>
|
||
|
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" invisible="active"/>
|
||
|
<group col="2">
|
||
|
<group>
|
||
|
<field name="description" />
|
||
|
<field name="service_type_id" />
|
||
|
<field name="date" />
|
||
|
<field name="amount" widget="monetary"/>
|
||
|
<field name="vendor_id" widget="many2one_avatar"/>
|
||
|
</group>
|
||
|
<group>
|
||
|
<field name="vehicle_id"/>
|
||
|
<field name="purchaser_id" widget="many2one_avatar"/>
|
||
|
<label for="odometer"/>
|
||
|
<div class="o_row">
|
||
|
<field name="odometer" class="w-25"/>
|
||
|
<field name="odometer_unit" class="ps-1 ps-sm-0"/>
|
||
|
</div>
|
||
|
</group>
|
||
|
</group>
|
||
|
<separator string="Notes"/>
|
||
|
<field nolabel="1" name="notes" placeholder="Write here any other information related to the service completed."/>
|
||
|
</sheet>
|
||
|
<div class="oe_chatter">
|
||
|
<field name="message_follower_ids"/>
|
||
|
<field name="activity_ids"/>
|
||
|
<field name="message_ids"/>
|
||
|
</div>
|
||
|
</form>
|
||
|
</field>
|
||
|
</record>
|
||
|
|
||
|
<record id='fleet_vehicle_log_services_view_tree' model='ir.ui.view'>
|
||
|
<field name="name">fleet.vehicle.log.services.tree</field>
|
||
|
<field name="model">fleet.vehicle.log.services</field>
|
||
|
<field name="arch" type="xml">
|
||
|
<tree string="Services Logs" multi_edit="1" expand="1">
|
||
|
<field name="date" readonly="1" />
|
||
|
<field name="description" />
|
||
|
<field name="service_type_id" />
|
||
|
<field name="vehicle_id" readonly="1" widget="many2one_avatar" />
|
||
|
<field name="purchaser_id" readonly="1" widget="many2one_avatar"/>
|
||
|
<field name="vendor_id" optional="show" />
|
||
|
<field name="inv_ref" column_invisible="True" />
|
||
|
<field name="notes" optional="show" />
|
||
|
<field name="amount" sum="Total" widget="monetary"/>
|
||
|
<field name="currency_id" column_invisible="True"/>
|
||
|
<field name="state" readonly="1" widget="badge" decoration-success="state == 'done'" decoration-warning="state == 'new'" decoration-info="state == 'running'" />
|
||
|
</tree>
|
||
|
</field>
|
||
|
</record>
|
||
|
|
||
|
<record id='fleet_vehicle_log_services_view_kanban' model='ir.ui.view'>
|
||
|
<field name="name">fleet.vehicle.log.services.kanban</field>
|
||
|
<field name="model">fleet.vehicle.log.services</field>
|
||
|
<field name="arch" type="xml">
|
||
|
<kanban default_group_by="state">
|
||
|
<field name="currency_id"/>
|
||
|
<field name="activity_ids"/>
|
||
|
<field name="activity_state"/>
|
||
|
<field name="purchaser_id"/>
|
||
|
<field name="vendor_id"/>
|
||
|
<field name="amount"/>
|
||
|
<progressbar field="activity_state" colors='{"planned": "success", "today": "warning", "overdue": "danger"}'/>
|
||
|
<templates>
|
||
|
<t t-name="kanban-box">
|
||
|
<div t-attf-class="oe_kanban_global_click container" class="o_kanban_record_has_image_fill">
|
||
|
<div class="oe_kanban_details">
|
||
|
<div class="o_kanban_record_top">
|
||
|
<img t-att-src="kanban_image('fleet.vehicle', 'image_128', record.vehicle_id.raw_value)" t-att-alt="record.vehicle_id.value" class="o_image_24_cover float-start"/>
|
||
|
<div class="o_kanban_record_headings ps-2 pe-2">
|
||
|
<div class="text-truncate">
|
||
|
<strong class="o_kanban_record_title">
|
||
|
<field name="vehicle_id"/>
|
||
|
<span t-attf-class="float-end badge #{['todo', 'running'].indexOf(record.state.raw_value) > -1 ? 'text-bg-secondary' : ['cancelled'].indexOf(record.state.raw_value) > -1 ? 'text-bg-danger' : 'text-bg-success'}">
|
||
|
<field name="state"/>
|
||
|
</span>
|
||
|
</strong>
|
||
|
</div>
|
||
|
<div class="text-truncate">
|
||
|
<em><field name="service_type_id"/></em>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="text-truncate">
|
||
|
<field name="purchaser_id"/>
|
||
|
<span class="float-end"><field name="date"/></span>
|
||
|
</div>
|
||
|
<div class="text-truncate">
|
||
|
<field name="vendor_id"/>
|
||
|
</div>
|
||
|
<div class="o_kanban_record_bottom">
|
||
|
<div class="oe_kanban_bottom_left">
|
||
|
<field name="amount" widget="monetary" options="{'currency_field': 'currency_id'}"/>
|
||
|
</div>
|
||
|
<div class="oe_kanban_bottom_right">
|
||
|
<field name="activity_ids" widget="kanban_activity"/>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</t>
|
||
|
</templates>
|
||
|
</kanban>
|
||
|
</field>
|
||
|
</record>
|
||
|
|
||
|
<record id="fleet_vehicle_log_services_view_graph" model="ir.ui.view">
|
||
|
<field name="name">fleet.vehicle.log.services.graph</field>
|
||
|
<field name="model">fleet.vehicle.log.services</field>
|
||
|
<field name="arch" type="xml">
|
||
|
<graph string="Services Costs Per Month" sample="1">
|
||
|
<field name="date"/>
|
||
|
<field name="vehicle_id"/>
|
||
|
<field name="amount" type="measure"/>
|
||
|
</graph>
|
||
|
</field>
|
||
|
</record>
|
||
|
|
||
|
<record id="fleet_vehicle_log_services_view_activity" model="ir.ui.view">
|
||
|
<field name="model">fleet.vehicle.log.services</field>
|
||
|
<field name="arch" type="xml">
|
||
|
<activity string="Services">
|
||
|
<templates>
|
||
|
<div t-name="activity-box">
|
||
|
<img t-att-src="activity_image('fleet.vehicle', 'image_128', record.vehicle_id.raw_value)" role="img" t-att-title="record.vehicle_id.value" t-att-alt="record.vehicle_id.value"/>
|
||
|
<div class="ms-2">
|
||
|
<field name="vehicle_id" class="o_text_block"/>
|
||
|
<field t-if="record.description.raw_value" name="description" muted="1" class="o_text_block"/>
|
||
|
</div>
|
||
|
</div>
|
||
|
</templates>
|
||
|
</activity>
|
||
|
</field>
|
||
|
</record>
|
||
|
|
||
|
<record id="fleet_vehicle_log_services_view_pivot" model="ir.ui.view">
|
||
|
<field name="model">fleet.vehicle.log.services</field>
|
||
|
<field name="arch" type="xml">
|
||
|
<pivot>
|
||
|
<field name="currency_id" invisible="1" />
|
||
|
<field name="service_type_id" type="col" />
|
||
|
<field name="vendor_id" type="row" />
|
||
|
<field name="vehicle_id" type="row" />
|
||
|
<field name="amount" type="measure" />
|
||
|
</pivot>
|
||
|
</field>
|
||
|
</record>
|
||
|
|
||
|
<record id='fleet_vehicle_log_services_view_search' model='ir.ui.view'>
|
||
|
<field name="name">fleet.vehicle.log.services.search</field>
|
||
|
<field name="model">fleet.vehicle.log.services</field>
|
||
|
<field name="arch" type="xml">
|
||
|
<search string="Services Logs" >
|
||
|
<field name="vehicle_id"/>
|
||
|
<field name="service_type_id"/>
|
||
|
<separator/>
|
||
|
<filter string="Archived" name="inactive" domain="[('active', '=', False)]"/>
|
||
|
<group expand="1" string="Group By">
|
||
|
<filter string="Service Type" name="groupby_service_type_id" context="{'group_by': 'service_type_id'}"/>
|
||
|
<filter string="Fleet Manager" name="groupby_manager_id" context="{'group_by': 'manager_id'}"/>
|
||
|
</group>
|
||
|
</search>
|
||
|
</field>
|
||
|
</record>
|
||
|
|
||
|
<record id='fleet_vehicle_log_services_action' model='ir.actions.act_window'>
|
||
|
<field name="name">Services</field>
|
||
|
<field name="res_model">fleet.vehicle.log.services</field>
|
||
|
<field name="view_mode">tree,kanban,form,graph,pivot,activity</field>
|
||
|
<field name="context">{'search_default_groupby_service_type_id': 1}</field>
|
||
|
<field name="help" type="html">
|
||
|
<p class="o_view_nocontent_smiling_face">
|
||
|
Create a new service entry
|
||
|
</p><p>
|
||
|
Track all the services done on your vehicle.
|
||
|
Services can be of many types: occasional repair, fixed maintenance, etc.
|
||
|
</p>
|
||
|
</field>
|
||
|
</record>
|
||
|
|
||
|
<menuitem action="fleet_vehicle_log_services_action" parent="fleet_vehicles" id="fleet_vehicle_log_services_menu" groups="fleet_group_user" sequence="3"/>
|
||
|
|
||
|
</odoo>
|