shcool/yuthon_attendance/views/attendance_views.xml
2026-07-31 20:38:10 +08:00

153 lines
6.3 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- ============ 列表视图 ============ -->
<record id="view_yuthon_attendance_list" model="ir.ui.view">
<field name="name">yuthon.attendance.list</field>
<field name="model">yuthon.attendance</field>
<field name="arch" type="xml">
<list string="出勤记录" decoration-danger="status == 'absent'"
decoration-warning="status == 'late'">
<field name="employee_id"/>
<field name="date"/>
<field name="check_in"/>
<field name="check_out"/>
<field name="working_hours"/>
<field name="status"/>
<field name="late_minutes"/>
</list>
</field>
</record>
<!-- ============ 表单视图 ============ -->
<record id="view_yuthon_attendance_form" model="ir.ui.view">
<field name="name">yuthon.attendance.form</field>
<field name="model">yuthon.attendance</field>
<field name="arch" type="xml">
<form string="出勤记录">
<sheet>
<group>
<group>
<field name="employee_id"/>
<field name="date"/>
<field name="check_in"/>
<field name="check_out"/>
</group>
<group>
<field name="working_hours"/>
<field name="status"/>
<field name="late_minutes"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<!-- ============ 搜索视图 ============ -->
<record id="view_yuthon_attendance_search" model="ir.ui.view">
<field name="name">yuthon.attendance搜索</field>
<field name="model">yuthon.attendance</field>
<field name="arch" type="xml">
<search string="搜索出勤">
<field name="employee_id"/>
<field name="date"/>
<separator/>
<filter name="filter_late" string="迟到"
domain="[('status', '=', 'late')]"/>
<filter name="filter_absent" string="缺勤"
domain="[('status', '=', 'absent')]"/>
<separator/>
<group expand="0" string="分组">
<filter name="groupby_employee" string="按教职工"
context="{'group_by': 'employee_id'}"/>
<filter name="groupby_status" string="按状态"
context="{'group_by': 'status'}"/>
</group>
</search>
</field>
</record>
<!-- ============ 图形(迟到分钟汇总) ============ -->
<record id="view_yuthon_attendance_graph" model="ir.ui.view">
<field name="name">yuthon.attendance.graph</field>
<field name="model">yuthon.attendance</field>
<field name="arch" type="xml">
<graph string="各教职工迟到分钟数" type="bar">
<field name="employee_id" type="row"/>
<field name="late_minutes" type="measure"/>
</graph>
</field>
</record>
<!-- ============ 透视表 ============ -->
<record id="view_yuthon_attendance_pivot" model="ir.ui.view">
<field name="name">yuthon.attendance.pivot</field>
<field name="model">yuthon.attendance</field>
<field name="arch" type="xml">
<pivot string="出勤透视">
<field name="employee_id" type="row"/>
<field name="status" type="col"/>
<field name="late_minutes" type="measure"/>
</pivot>
</field>
</record>
<!-- ============ 动作 ============ -->
<record id="action_yuthon_attendance" model="ir.actions.act_window">
<field name="name">出勤记录</field>
<field name="res_model">yuthon.attendance</field>
<field name="view_mode">list,form,graph,pivot</field>
<field name="search_view_id" ref="view_yuthon_attendance_search"/>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
登记第一条出勤记录
</p>
</field>
</record>
<!-- ============ 子菜单(挂载到 yuthon_employee 的根菜单) ============ -->
<menuitem id="menu_yuthon_attendance" name="出勤"
parent="yuthon_employee.menu_yuthon_hr_root"
action="action_yuthon_attendance" sequence="20"/>
<!-- ============ 注入「教职工」视图(模块组合演示) ============ -->
<!-- 列表:追加出勤记录数列 -->
<record id="view_yuthon_employee_list_attendance" model="ir.ui.view">
<field name="name">yuthon.employee.list.inherit.attendance</field>
<field name="model">yuthon.employee</field>
<field name="inherit_id" ref="yuthon_employee.view_yuthon_employee_list"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='base_salary']" position="after">
<field name="attendance_count"/>
</xpath>
</field>
</record>
<!-- 表单:注入出勤记录页 -->
<record id="view_yuthon_employee_form_attendance" model="ir.ui.view">
<field name="name">yuthon.employee.form.inherit.attendance</field>
<field name="model">yuthon.employee</field>
<field name="inherit_id" ref="yuthon_employee.view_yuthon_employee_form"/>
<field name="arch" type="xml">
<xpath expr="//sheet" position="inside">
<notebook>
<page string="出勤记录">
<field name="attendance_ids">
<list>
<field name="date"/>
<field name="check_in"/>
<field name="check_out"/>
<field name="working_hours"/>
<field name="status"/>
<field name="late_minutes"/>
</list>
</field>
</page>
</notebook>
</xpath>
</field>
</record>
</odoo>