153 lines
6.3 KiB
XML
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>
|