浏览代码

Merge branch 'dev' of yuyang/practice into master

Admin 1 年之前
父节点
当前提交
3ddd29a7e7

+ 1 - 1
README.md

@@ -1 +1 @@
-This is Henry's practice demo.
+This is YuYang's practice demo.

+ 2 - 0
employee/__init__.py

@@ -0,0 +1,2 @@
+# -*- coding: utf-8 -*-
+from . import models

+ 23 - 0
employee/__manifest__.py

@@ -0,0 +1,23 @@
+# -*- coding: utf-8 -*-
+{
+    'name': 'Employee',  # 模块标题
+    'version': '13.0.1.0',  # 版本号
+    'summary': '对员工的基本信息,部门和职位进行管理',  # 子标题
+    'description': '''
+        员工管理模块
+    ''',  # 模块的描述性文字
+    'author': 'yy',  # 作者
+    'sequence': 15,  # 序列号
+    'category': 'Uncategorized',  # 模块的分类
+    'license': 'LGPL-3',
+    'depends': ['base'],  # 模块的依赖
+    'data': ['security/ir.model.access.csv', 'views/employee.xml', 'views/menu.xml'],  # 加载XML文件
+    'demo': [],  # 加载demo文件
+    'qweb': [],  # 加载template文件
+    'installable': True,
+    'application': True,
+    'auto_install': False,
+    # 'pre_init_hook': '',
+    # 'post_init_hook': '',
+    # 'uninstall_hook': '',
+}

+ 2 - 0
employee/models/__init__.py

@@ -0,0 +1,2 @@
+# -*- coding: utf-8 -*-
+from . import employee

+ 43 - 0
employee/models/employee.py

@@ -0,0 +1,43 @@
+# -*- coding: utf-8 -*-
+import base64
+import logging
+
+from odoo import api, fields, models
+from odoo.modules.module import get_module_resource
+from odoo import tools, _
+
+_logger = logging.getLogger(__name__)
+
+GENDER = [
+    ('male', '男'),
+    ('female', '女'),
+    ('other', '其他')
+]
+
+MARITAL = [
+    ('single', '单身'),
+    ('married', '已婚'),
+    ('cohabitant', '合法同居'),
+    ('widower', '丧偶'),
+    ('divorced', '离婚')
+]
+
+
+class Employee(models.Model):
+    _name = 'ml.employee'
+    _description = '''员工信息'''
+
+    name = fields.Char(string='姓名')
+    company_id = fields.Many2one('res.company', string='公司')
+    gender = fields.Selection(GENDER, string='性别')
+    country_id = fields.Many2one('res.country', string='国籍')
+    birthday = fields.Date(string='生日')
+    marital = fields.Selection(MARITAL, string='婚姻状况', default='single')
+
+    address = fields.Char(string='家庭住址')
+    mobile_phone = fields.Char(string='手机号')
+    work_email = fields.Char(string='工作邮箱')
+    leader_id = fields.Many2one('ml.employee', string='所属上级')
+    subordinate_ids = fields.One2many('ml.employee', 'leader_id', string='下属')
+    note = fields.Text(string='备注信息')
+

+ 2 - 0
employee/security/ir.model.access.csv

@@ -0,0 +1,2 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_ml_employee,员工档案权限,employee.model_ml_employee,,1,1,1,1

+ 100 - 0
employee/views/employee.xml

@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+    <data>
+        <record id="view_ml_employee_form" model="ir.ui.view">
+            <field name="name">员工信息表单</field>
+            <field name="model">ml.employee</field>
+            <field name="arch" type="xml">
+                <form string="员工信息">
+                    <sheet>
+                        <div class="oe_title">
+                            <label for="name" class="oe_edit_only"/>
+                            <h1>
+                                <field name="name" placeholder="员工姓名" required="True"/>
+                            </h1>
+                        </div>
+                        <notebook>
+                            <page string="员工信息">
+                                <group>
+                                    <group string="基本信息">
+                                        <field name="gender" required="True"/>
+                                        <field name="country_id"/>
+                                        <field name="birthday"/>
+                                        <field name="marital"/>
+                                    </group>
+                                    <group string="工作信息">
+                                        <field name="company_id" options="{'no_open': True, 'no_create': True}"
+                                               groups="base.group_multi_company"/>
+                                        <field name="address"/>
+                                        <field name="mobile_phone" widget="phone"/>
+                                        <field name="work_email" widget="email"/>
+                                        <field name="leader_id" options="{'no_open': True, 'no_create': True}"/>
+                                    </group>
+                                </group>
+                            </page>
+                            <page string="下属信息">
+                                <field name="subordinate_ids">
+                                    <tree editable="bottom">
+                                        <field name="name" attrs="{'required': True}"/>
+                                        <field name="gender" required="True"/>
+                                        <field name="country_id"/>
+                                        <field name="mobile_phone"/>
+                                        <field name="work_email"/>
+                                    </tree>
+                                </field>
+                            </page>
+                        </notebook>
+                    </sheet>
+                </form>
+            </field>
+        </record>
+        <record id="view_ml_employee_tree" model="ir.ui.view">
+            <field name="name">员工信息列表</field>
+            <field name="model">ml.employee</field>
+            <field name="arch" type="xml">
+                <tree string="员工信息">
+                    <field name="name"/>
+                    <field name="company_id"/>
+                    <field name="gender"/>
+                    <field name="country_id"/>
+                    <field name="mobile_phone"/>
+                    <field name="work_email"/>
+                    <field name="leader_id"/>
+                </tree>
+            </field>
+        </record>
+        <record id="view_ml_employee_filter" model="ir.ui.view">
+            <field name="name">员工搜索视图</field>
+            <field name="model">ml.employee</field>
+            <field name="arch" type="xml">
+                <search string="员工">
+                    <!--用于搜索的字段-->
+                    <field name="name" string="员工"
+                           filter_domain="['|',('work_email','ilike',self),('name','ilike',self)]"/>
+                    <field name="gender" string="性别"/>
+                    <separator/>
+                    <!--定义好的过滤器-->
+                    <filter string="男员工" name="gender_male"
+                            domain="[('gender', '=', 'male')]"/>
+                    <filter string="女员工" name="gender_female"
+                            domain="[('gender', '=', 'female')]"/>
+                    <separator/>
+                    <!--分组-->
+                    <group expand="0" string="分组">
+                        <filter name="group_leader" string="领导" domain="[]" context="{'group_by':'leader_id'}"/>
+                        <filter name="group_company" string="Company" domain="[]" context="{'group_by':'company_id'}"
+                                groups="base.group_multi_company"/>
+                    </group>
+                </search>
+            </field>
+        </record>
+        <record model="ir.actions.act_window" id="view_ml_employee_action">
+            <field name="name">员工信息</field>
+            <field name="res_model">ml.employee</field>
+            <field name="view_mode">tree,form</field>
+            <field name="view_id" ref="view_ml_employee_tree"/>
+            <field name="search_view_id" ref="view_ml_employee_filter"/>
+        </record>
+
+    </data>
+</odoo>

+ 24 - 0
employee/views/menu.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+    <data>
+        <!--一级菜单-->
+        <menuitem
+                id="menu_employee_root"
+                name="员工"
+                web_icon="hr,static/description/icon.png"
+                sequence="1"/>
+        <!--二级菜单 -->
+        <menuitem
+                id="menu_employee_info"
+                name="员工信息"
+                parent="menu_employee_root"
+                sequence="1"/>
+        <!--三级菜单 -->
+        <menuitem
+                id="menu_view_ml_employee_tree"
+                name="员工档案"
+                action="view_ml_employee_action"
+                parent="menu_employee_info"
+                sequence="1"/>
+    </data>
+</odoo>