bemade-addons/portal_planning/views/portal_planning_exchange_views.xml
2025-06-19 11:31:33 -04:00

153 lines
8.6 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Vue form pour portal.planning.exchange -->
<record id="view_portal_planning_exchange_form" model="ir.ui.view">
<field name="name">portal.planning.exchange.form</field>
<field name="model">portal.planning.exchange</field>
<field name="arch" type="xml">
<form string="Échange de planning">
<header>
<button name="action_submit" string="Soumettre" type="object" class="oe_highlight" invisible="not can_submit"/>
<button name="action_accept" string="Accepter" type="object" class="oe_highlight" invisible="not can_accept"/>
<button name="action_approve" string="Approuver" type="object" class="oe_highlight" invisible="not can_approve"/>
<button name="action_reject" string="Refuser" type="object" invisible="not can_reject"/>
<button name="action_cancel" string="Annuler" type="object" invisible="not can_cancel"/>
<field name="state" widget="statusbar" statusbar_visible="draft,pending,accepted,approved,rejected"/>
</header>
<sheet>
<div class="oe_title">
<h1>
<field name="name"/>
</h1>
</div>
<group>
<group>
<field name="source_user_id" readonly="1"/>
<field name="source_employee_id" readonly="1"/>
<field name="date" readonly="1"/>
<field name="company_id" groups="base.group_multi_company"/>
</group>
<group>
<field name="state" invisible="1"/>
<field name="can_submit" invisible="1"/>
<field name="can_accept" invisible="1"/>
<field name="can_approve" invisible="1"/>
<field name="can_reject" invisible="1"/>
<field name="can_cancel" invisible="1"/>
<field name="approver_id" readonly="1" invisible="approver_id == False"/>
<field name="approval_date" readonly="1" invisible="approval_date == False"/>
</group>
</group>
<group string="Créneau à échanger">
<group>
<field name="source_slot_id" domain="[('employee_id.user_id', '=', source_user_id)]" readonly="state != 'draft'"/>
<field name="source_start" readonly="1"/>
<field name="source_end" readonly="1"/>
</group>
<group>
<field name="source_role_id" readonly="1"/>
</group>
</group>
<group string="Demande ouverte" invisible="state != 'draft'">
<field name="is_open_request" readonly="state != 'draft'"/>
</group>
<group string="Dates préférées" invisible="is_open_request == False or state != 'draft'">
<group>
<field name="preferred_start" required="is_open_request == True" readonly="state != 'draft'"/>
<field name="preferred_end" required="is_open_request == True" readonly="state != 'draft'"/>
</group>
</group>
<group string="Échange avec" invisible="is_open_request == True">
<group>
<field name="target_employee_id" required="is_open_request == False" readonly="state != 'draft'"/>
<field name="target_slot_id" domain="[('employee_id', '=', target_employee_id)]" required="is_open_request == False" readonly="state != 'draft'"/>
<field name="target_start" readonly="1"/>
<field name="target_end" readonly="1"/>
</group>
<group>
<field name="target_user_id" readonly="1"/>
<field name="target_role_id" readonly="1"/>
</group>
</group>
<group string="Notes">
<field name="notes" nolabel="1" placeholder="Notes concernant l'échange..."/>
</group>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers"/>
<field name="activity_ids" widget="mail_activity"/>
<field name="message_ids" widget="mail_thread"/>
</div>
</form>
</field>
</record>
<!-- Vue list pour portal.planning.exchange -->
<record id="view_portal_planning_exchange_tree" model="ir.ui.view">
<field name="name">portal.planning.exchange.list</field>
<field name="model">portal.planning.exchange</field>
<field name="arch" type="xml">
<list string="Échanges de planning" decoration-info="state == 'pending'" decoration-warning="state == 'accepted'" decoration-success="state == 'approved'" decoration-danger="state == 'rejected'" decoration-muted="state == 'cancelled'">
<field name="name"/>
<field name="date"/>
<field name="source_employee_id"/>
<field name="source_slot_id"/>
<field name="target_employee_id"/>
<field name="is_open_request"/>
<field name="state"/>
</list>
</field>
</record>
<!-- Vue search pour portal.planning.exchange -->
<record id="view_portal_planning_exchange_search" model="ir.ui.view">
<field name="name">portal.planning.exchange.search</field>
<field name="model">portal.planning.exchange</field>
<field name="arch" type="xml">
<search string="Rechercher Échanges de Planning">
<field name="name"/>
<field name="source_employee_id"/>
<field name="target_employee_id"/>
<field name="source_slot_id"/>
<filter string="Brouillons" name="draft" domain="[('state', '=', 'draft')]"/>
<filter string="En attente" name="pending" domain="[('state', '=', 'pending')]"/>
<filter string="Acceptés" name="accepted" domain="[('state', '=', 'accepted')]"/>
<filter string="Approuvés" name="approved" domain="[('state', '=', 'approved')]"/>
<filter string="Refusés" name="rejected" domain="[('state', '=', 'rejected')]"/>
<filter string="Annulés" name="cancelled" domain="[('state', '=', 'cancelled')]"/>
<filter string="Demandes ouvertes" name="open_requests" domain="[('is_open_request', '=', True)]"/>
<group expand="0" string="Group By">
<filter string="Employé source" name="source_employee" context="{'group_by': 'source_employee_id'}"/>
<filter string="Employé cible" name="target_employee" context="{'group_by': 'target_employee_id'}"/>
<filter string="État" name="state" context="{'group_by': 'state'}"/>
<filter string="Date de demande" name="date" context="{'group_by': 'date:day'}"/>
</group>
</search>
</field>
</record>
<!-- Action pour portal.planning.exchange -->
<record id="action_portal_planning_exchange" model="ir.actions.act_window">
<field name="name">Échanges de Planning</field>
<field name="res_model">portal.planning.exchange</field>
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="view_portal_planning_exchange_search"/>
<field name="context">{'search_default_pending': 1}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Aucun échange de planning disponible
</p>
<p>
Les demandes d'échange de planning des utilisateurs du portail seront affichées ici.
</p>
</field>
</record>
<!-- Menu pour portal.planning.exchange -->
<menuitem id="menu_portal_planning_exchange"
name="Échanges de Planning"
parent="planning.planning_menu_root"
action="action_portal_planning_exchange"
sequence="30"/>
</odoo>