@@ -21,6 +21,7 @@
|
||||
'views/inherit_hr_employee_views.xml',
|
||||
'views/hr_attendance_views.xml',
|
||||
'views/resource_calendar_leaves_views.xml',
|
||||
'views/attendance_iot_datas.xml',
|
||||
'views/attendance_iot_manager_views.xml',
|
||||
'views/overtime_approval.xml',
|
||||
'views/go_approval.xml',
|
||||
|
||||
@@ -76,3 +76,23 @@ class BusController(Controller):
|
||||
})
|
||||
print("---------------------------------------------测试成功---------------------------------------")
|
||||
return {"Result": 0, "Msg": "添加成功"}
|
||||
|
||||
@route('/api/v1/record/face', methods=['POST'], type='json', auth='none', csrf=False)
|
||||
def get_model_identify(self):
|
||||
"""
|
||||
获取上传识别成功记录
|
||||
:return:
|
||||
"""
|
||||
data = request.httprequest.json
|
||||
user_name = data.get('logs').get('user_id')
|
||||
employee_id = request.env(user=SUPERUSER_ID)["hr.employee"].search([('user_id', '=', user_name.id)])
|
||||
attendance_iot = request.env(user=SUPERUSER_ID)["attendance.iot.datas"]
|
||||
if not attendance_iot.search(
|
||||
[('employee_id', '=', employee_id.id), ('attendance_number', '=', data.get('sn'))]):
|
||||
attendance_iot.create({
|
||||
'attendance_number': data.get('sn'),
|
||||
'attendance_date': data.get('logs').get('recog_time'),
|
||||
'employee_id': employee_id.id,
|
||||
})
|
||||
print("---------------------------------------------测试成功---------------------------------------")
|
||||
return {"Result": 0, "Msg": "添加成功"}
|
||||
|
||||
@@ -13,4 +13,5 @@ from . import card_approval
|
||||
from . import holiday_manage
|
||||
from . import holiday_manage_balance
|
||||
from . import attendance_iot_manager
|
||||
from . import attendance_iot_datas
|
||||
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
from odoo import api, fields, models, tools
|
||||
from odoo.exceptions import ValidationError
|
||||
|
||||
|
||||
class AttendanceIotDatas(models.Model):
|
||||
_name = 'attendance.iot.datas'
|
||||
_description = '上传识别记录'
|
||||
|
||||
|
||||
employee_id = fields.Many2one('hr.employee', string='人员')
|
||||
attendance_date = fields.Datetime(string='打卡时间')
|
||||
attendance_number = fields.Char(string="设备号")
|
||||
@@ -11,5 +11,6 @@ access_card_approval,card.approval,model_card_approval,base.group_user,1,1,1,1
|
||||
access_holiday_manage,holiday_manage,model_holiday_manage,base.group_user,1,1,1,1
|
||||
access_attendance_iot_manager,attendance_iot_manager,model_attendance_iot_manager,base.group_user,1,1,1,1
|
||||
access_holiday_manage_balance,holiday_manage_balance,model_holiday_manage_balance,base.group_user,1,1,1,1
|
||||
access_attendance_iot_datas,attendance_iot_datas,model_attendance_iot_datas,base.group_user,1,1,1,1
|
||||
|
||||
|
||||
|
||||
|
@@ -30,4 +30,6 @@
|
||||
sequence="15" action="attendance_iot_manager_action"/>
|
||||
<menuitem id="menu_hr_attendance_work" name="考勤时间表配置" parent="hr_attendance.menu_hr_attendance_root"
|
||||
sequence="18" action="resource.action_resource_calendar_form"/>
|
||||
</odoo>
|
||||
<menuitem id="menu_hr_attendance_lot_datas" name="上传识别记录" parent="hr_attendance.menu_hr_attendance_root"
|
||||
sequence="21" action="attendance_iot_datas_action"/>
|
||||
</odoo>
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<record id="attendance_iot_datas_tree" model="ir.ui.view">
|
||||
<field name="name">attendance.iot.datas.tree</field>
|
||||
<field name="model">attendance.iot.datas</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="上传记录">
|
||||
<field name="name"/>
|
||||
<field name="attendance_date"/>
|
||||
<field name="employee_id"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="attendance_iot_datas_action" model="ir.actions.act_window">
|
||||
<field name="name">上传记录</field>
|
||||
<field name="res_model">attendance.iot.datas</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -18,11 +18,21 @@ class YuthonHrDepartment(models.Model):
|
||||
expiration_date = fields.Date(string="失效日期", default=fields.Date.today())
|
||||
end_date = fields.Date(string="结束时间")
|
||||
department_code = fields.Char(string="部门序号", store=True)
|
||||
lower_ids = fields.One2many('hr.department', 'parent_id', string="下级部门")
|
||||
|
||||
@api.onchange('department_code', 'parent_id')
|
||||
def _onchange_department_code(self):
|
||||
for code in self:
|
||||
if code.parent_id.department_code:
|
||||
code.department_code = code.parent_id.department_code + code.department_code if code.department_code else ''
|
||||
code.department_code = code.parent_id.department_code + ('.' + code.department_code.split('.')[-1] if code.department_code else '')
|
||||
else:
|
||||
code.department_code = code.department_code
|
||||
code.department_code = code.department_code
|
||||
code.update_code()
|
||||
def update_code(self):
|
||||
def cycle_code(parent,parent_code):
|
||||
for child in parent.lower_ids:
|
||||
new_code = parent_code +('.' + child.department_code.split('.')[-1] if child.department_code else '')
|
||||
self.env['hr.department'].search([('id', '=', child.id.origin)]).write({'department_code': new_code})
|
||||
cycle_code(child,new_code)
|
||||
|
||||
cycle_code(self, self.department_code)
|
||||
@@ -10,6 +10,7 @@
|
||||
<div class="col-12 text-center">
|
||||
<h1>
|
||||
<field name="full_title" required="1"/>
|
||||
<field name="name" invisible="1"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group col="4" string="基本信息">
|
||||
|
||||
@@ -9,6 +9,7 @@ class HrApplicant(models.Model):
|
||||
room_id = fields.Many2one('room.room',string='地点')
|
||||
interview_results = fields.Selection([('pass', '通过'), ('fail', '不通过')], string="面试结果")
|
||||
|
||||
|
||||
def buttn_applicant_ids(self):
|
||||
self.ensure_one()
|
||||
return {
|
||||
@@ -19,32 +20,41 @@ class HrApplicant(models.Model):
|
||||
'target': 'current',
|
||||
}
|
||||
|
||||
|
||||
def pub_interview_approval(self):
|
||||
for applicant in self:
|
||||
if not applicant.is_interview_status:
|
||||
applicant.is_interview_status = True
|
||||
|
||||
else:
|
||||
raise UserError('已提交面试申请')
|
||||
raise UserError(_('该申请已提交,请勿重复提交!'))
|
||||
|
||||
hr_applicant_ids = self.env["hr.applicant"].browse(self._context.get('active_ids', self._context.get('active_id')))
|
||||
hr_applicant_data = [(6, 0, hr_applicant_ids.ids)]
|
||||
stage_list = [stage.name for stage in self.env['hr.recruitment.stage'].search([])] # 便利出所有的阶段
|
||||
|
||||
for sta in self:
|
||||
stage_self = stage_list.index(sta.stage_id.name)
|
||||
if stage_self == 0:
|
||||
sta.stage_id = self.env['hr.recruitment.stage'].search([('name', '=', stage_list[stage_self + 1])]).id
|
||||
|
||||
form_id = self.env.ref("yuthon_hr_employee_approval.view_yuthon_interview_approval_form").id
|
||||
return {
|
||||
'type': 'ir.actions.act_window',
|
||||
'name': '提交面试申请',
|
||||
'res_model': 'yuthon.interview.approval',
|
||||
"views": [[form_id, "form"]],
|
||||
"context": {
|
||||
'default_name': '面试申请表',
|
||||
'default_job_id': self.job_id.id,
|
||||
'default_department_id': self.department_id.id,
|
||||
'default_applicant_ids': hr_applicant_data
|
||||
form_id = self.env.ref("yuthon_hr_employee_approval.view_yuthon_interview_approval_form").id
|
||||
return {
|
||||
'type': 'ir.actions.act_window',
|
||||
'name': '提交面试申请',
|
||||
'res_model': 'yuthon.interview.approval',
|
||||
"views": [[form_id, "form"]],
|
||||
"context": {
|
||||
'default_name': '面试申请表',
|
||||
'default_job_id': self.job_id.id,
|
||||
'default_department_id': self.department_id.id,
|
||||
'default_applicant_ids': hr_applicant_data
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def write(self, vals):
|
||||
# 调用父类的 write 方法更新记录
|
||||
res = super(HrApplicant, self).write(vals)
|
||||
# 检查是否修改了 'stage_id' 字段
|
||||
if 'stage_id' in vals:
|
||||
self.is_interview_status = False
|
||||
return res
|
||||
|
||||
@@ -18,26 +18,19 @@ class YuthonInterviewApproval(models.Model):
|
||||
applicant_ids = fields.One2many('hr.applicant', 'interview_approval_id', string='应聘面试信息')
|
||||
|
||||
|
||||
def test_submissions(self):
|
||||
# 得到标签顺序列表,用来判断下一个阶段
|
||||
stage_list = [stage.name for stage in self.env['hr.recruitment.stage'].search([])]
|
||||
for applicant in self.applicant_ids:
|
||||
failed_stage = self.env['hr.recruitment.stage'].search([('name', '=', '未通过')], limit=1)
|
||||
if applicant.interview_results == 'pass':
|
||||
current_stage_index = stage_list.index(applicant.stage_id.name)
|
||||
next_stage_index = current_stage_index + 1
|
||||
# 检查是否已经是最后一个阶段
|
||||
if next_stage_index < len(stage_list):
|
||||
next_stage_name = stage_list[next_stage_index]
|
||||
next_stage = self.env['hr.recruitment.stage'].search([('name', '=', next_stage_name)], limit=1)
|
||||
applicant.stage_id = next_stage
|
||||
else:
|
||||
# 已经是最后一个阶段,可以进行其他操作,例如发送通知等
|
||||
raise UserError('已经是最后一个阶段')
|
||||
elif applicant.interview_results == 'fail':
|
||||
applicant.stage_id = failed_stage
|
||||
|
||||
|
||||
|
||||
|
||||
def scheduling_of_meetings(self):
|
||||
form_id = self.env.ref("room.room_booking_view_form").id
|
||||
self.ensure_one()
|
||||
return {
|
||||
'type': 'ir.actions.act_window',
|
||||
'name': '会议安排',
|
||||
'res_model': 'room.booking',
|
||||
"views": [[form_id, "form"]],
|
||||
"context": {
|
||||
'default_name': self.name,
|
||||
'default_employee_ids': [(6, 0, self.employee_ids.ids)]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -29,6 +29,8 @@ class YuthonLeavingApproval(models.Model):
|
||||
is_leaving = fields.Boolean(string="同意离职", default=False)
|
||||
leaving_date = fields.Date(string="工作期限")
|
||||
handover_person = fields.Many2one("hr.employee", string="交接人")
|
||||
|
||||
|
||||
class HrJobType(models.Model):
|
||||
_name = "hr.job.type"
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@ class YuthonOnboardApproval(models.Model):
|
||||
probation_period = fields.Selection([('zero', '0个月'), ('one', '1个月'),
|
||||
('two', '2个月'), ('three', '3个月'), ('year', '1年')], string='试用期结束时间')
|
||||
duration_employment = fields.Date(string='劳动合同期限')
|
||||
duration_employment_end = fields.Date(string='劳动合同结束时间')
|
||||
salary = fields.Float(string='基本工资')
|
||||
oter = fields.Text(string='其他约定')
|
||||
social_security = fields.Char(string='社保时长')
|
||||
|
||||
@@ -27,6 +27,11 @@
|
||||
parent="hr_process_work_job"
|
||||
action="yuthon_message_login_action"
|
||||
sequence="7"/>
|
||||
<menuitem id="hr_menu_prepare_approval"
|
||||
name="编制调整申请表"
|
||||
parent="hr_process_work_job"
|
||||
action="yuthon_prepare_approval_action"
|
||||
sequence="5"/>
|
||||
|
||||
|
||||
<!--人事管理 -->
|
||||
@@ -44,11 +49,6 @@
|
||||
parent="hr_set_process_menu"
|
||||
action="yuthon_leaving_approval_action"
|
||||
sequence="3"/>
|
||||
<menuitem id="hr_menu_prepare_approval"
|
||||
name="编制调整申请表"
|
||||
parent="hr_set_process_menu"
|
||||
action="yuthon_prepare_approval_action"
|
||||
sequence="5"/>
|
||||
<menuitem id="hr_menu_rank_approval"
|
||||
name="职级调整申请表"
|
||||
parent="hr_set_process_menu"
|
||||
|
||||
@@ -18,9 +18,9 @@
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<!-- <header>-->
|
||||
<!-- <button name="test_submissions" string="测试提交" type="object"/>-->
|
||||
<!-- </header>-->
|
||||
<header>
|
||||
<button name="scheduling_of_meetings" string="会议安排" type="object"/>
|
||||
</header>
|
||||
<div class="col-12 text-center">
|
||||
<h1>
|
||||
<field name="name" required="1"/>
|
||||
@@ -48,6 +48,7 @@
|
||||
<field name="interview_time"/>
|
||||
<field name="room_id"/>
|
||||
<field name="interview_results"/>
|
||||
<field name="stage_id"/>
|
||||
<button name="buttn_applicant_ids" type="object" string="详细信息"/>
|
||||
</tree>
|
||||
</field>
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
<label for="duration_employment"/>
|
||||
<div>
|
||||
<field name="duration_employment" class="oe_inline"/>至
|
||||
<field name="duration_employment" class="oe_inline"/>
|
||||
<field name="duration_employment_end" class="oe_inline"/>
|
||||
</div>
|
||||
</group>
|
||||
<group col="2">
|
||||
|
||||
@@ -18,19 +18,26 @@ class IssueApprovalDecision(models.Model):
|
||||
district_bureau = fields.Char(string='区政府、区财政局')
|
||||
remarks = fields.Char(string='备注')
|
||||
|
||||
# @api.onchange('sequence', 'decision_id')
|
||||
# def _onchange_department_code(self):
|
||||
# for code in self:
|
||||
# if code.decision_id.sequence:
|
||||
# code.sequence = code.decision_id.sequence + '.' + code.sequence
|
||||
# else:
|
||||
# code.sequence = code.sequence
|
||||
# for child in code.child_ids:
|
||||
# if code.sequence:
|
||||
# if '.' in child.sequence:
|
||||
# number = code.sequence + '.' + child.sequence.split('.')[-1]
|
||||
# child.write({'sequence': number})
|
||||
# else:
|
||||
# child.sequence = code.sequence + '.' + (child.sequence or '')
|
||||
# else:
|
||||
# child.sequence = child.sequence or ''
|
||||
@api.onchange('sequence', 'decision_id')
|
||||
def _onchange_department_code(self):
|
||||
for code in self:
|
||||
if code.sequence and code.decision_id:
|
||||
code.sequence = code.decision_id.sequence + ('.' + code.sequence if code.sequence else '')
|
||||
else:
|
||||
code.sequence = code.sequence
|
||||
code._update_child_sequences()
|
||||
|
||||
def _update_child_sequences(self):
|
||||
def recursive_update(parent, parent_sequence):
|
||||
# 遍历每个子记录
|
||||
for child in parent.child_ids:
|
||||
# 使用父级的 sequence 更新子级的 sequence
|
||||
new_sequence = parent_sequence + ('.' + child.sequence.split('.')[-1] if child.sequence else '')
|
||||
self.env['issue.approval.decision'].search([('id', '=', child.id.origin)]).write({'sequence': new_sequence})
|
||||
# 递归处理孙级
|
||||
recursive_update(child, new_sequence)
|
||||
# 从当前记录开始递归更新所有子孙级别
|
||||
recursive_update(self, self.sequence)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
<group col="2">
|
||||
<group>
|
||||
<field name="decision_id"/>
|
||||
<field name="child_ids" force_save="1" invisible="1"/>
|
||||
<field name="sequence"/>
|
||||
<field name="council"/>
|
||||
</group>
|
||||
@@ -55,19 +56,6 @@
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_issue_approval_decision_search" model="ir.ui.view">
|
||||
<field name="name">issue.approval.decision.form</field>
|
||||
<field name="model">issue.approval.decision</field>
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
<field name="name"/>
|
||||
<searchpanel>
|
||||
<field name="decision_id"/>
|
||||
</searchpanel>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="issue_approval_decision_action" model="ir.actions.act_window">
|
||||
<field name="name">决策清单</field>
|
||||
<field name="res_model">issue.approval.decision</field>
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
'views/property_move_views.xml',
|
||||
'views/property_assess_views.xml',
|
||||
'views/property_record_views.xml',
|
||||
'views/property_approval_views.xml',
|
||||
'views/property_menu_all.xml',
|
||||
],
|
||||
'demo': [],
|
||||
|
||||
@@ -181,4 +181,11 @@
|
||||
<field name="prefix">PG%(y)s%(month)s%(day)s</field>
|
||||
<field name="padding">3</field>
|
||||
</record>
|
||||
|
||||
<record id="property_approval_code_sequence" model="ir.sequence">
|
||||
<field name="name">新增物业审批编号</field>
|
||||
<field name="code">property_approval_code</field>
|
||||
<field name="prefix">XZ%(y)s%(month)s%(day)s</field>
|
||||
<field name="padding">3</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -1,5 +1,6 @@
|
||||
from . import property_billing_confirmation
|
||||
from . import property_business_confirm
|
||||
from . import property_approval
|
||||
from . import property_capacity
|
||||
from . import property_collection_confirm
|
||||
from . import property_early_quitting
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import models, fields, api, exceptions, _
|
||||
|
||||
|
||||
class PropertyApproval(models.Model):
|
||||
_name = 'property.approval'
|
||||
_inherit = ['mail.thread.main.attachment', 'mail.activity.mixin', 'soong.workflow.mixin']
|
||||
_description = '新增物业审批'
|
||||
|
||||
name = fields.Char(string='标题')
|
||||
tip_description = fields.Html('正文')
|
||||
code = fields.Char(string="编号", default=lambda self: self.env['ir.sequence'].next_by_code('property_approval_code'))
|
||||
property_documents_ids = fields.Many2many('documents.document', string="附件")
|
||||
source = fields.Char(string="来源")
|
||||
|
||||
property_massage_ids = fields.One2many('property.approval.line', 'property_approval_id', string="审批信息")
|
||||
|
||||
|
||||
class PropertyApprovalLine(models.Model):
|
||||
_name = 'property.approval.line'
|
||||
_description = '新增物业审批信息'
|
||||
|
||||
property_approval_id = fields.Many2one('property.approval', string="审批信息")
|
||||
property_address = fields.Char(string="物业地址")
|
||||
is_affirmation = fields.Boolean(string="是否确权")
|
||||
owner = fields.Char(string="权属人")
|
||||
title_number = fields.Char(string="产权编号")
|
||||
area = fields.Float(string="面积")
|
||||
purposes = fields.Char(string="用途")
|
||||
state = fields.Selection([('rental','出租中'), ('vacant', '空置中'), ('rented', '待出租')], string="状态")
|
||||
|
||||
|
||||
|
||||
@@ -14,3 +14,14 @@ class PropertyInformation(models.Model):
|
||||
code = fields.Char(string="编号",
|
||||
default=lambda self: self.env['ir.sequence'].next_by_code('property_information_code'))
|
||||
property_documents_ids = fields.Many2many('documents.document', string="物业信息文件")
|
||||
|
||||
|
||||
original_property_id = fields.Many2one('property.information', string="关联物业管理变更审批")
|
||||
property_name = fields.Char(string="物业名称")
|
||||
company_id = fields.Many2one('res.company', string="所属公司")
|
||||
admin_id = fields.Many2one('res.users', string="管理员")
|
||||
precinct = fields.Char(string="片区")
|
||||
management_type = fields.Char(string="管理类型")
|
||||
property_id = fields.Char(string="物业ID")
|
||||
|
||||
|
||||
|
||||
@@ -6,11 +6,30 @@ from odoo import models, fields, api, exceptions, _
|
||||
|
||||
class PropertyManagement(models.Model):
|
||||
_name = 'property.management'
|
||||
_description = '物业管理审批'
|
||||
_description = '物业管理变更申请表'
|
||||
_inherit = ['mail.thread.main.attachment', 'mail.activity.mixin', 'soong.workflow.mixin']
|
||||
_rec_name = 'name'
|
||||
|
||||
name = fields.Char(string='标题')
|
||||
code = fields.Char(string="编号",
|
||||
default=lambda self: self.env['ir.sequence'].next_by_code('property_management_code'))
|
||||
property_documents_ids = fields.Many2many('documents.document', string="物业管理文件")
|
||||
effective_start_date = fields.Date(string="生效开始日期")
|
||||
effective_end_date = fields.Date(string="生效结束日期")
|
||||
reason_change = fields.Char(string="变更事由")
|
||||
handling_opinions = fields.Text(string="经办意见")
|
||||
original_property_ids = fields.One2many('property.information', 'original_property_id', string="原物业信息")
|
||||
new_property_ids = fields.One2many('property.information.detail.lines', 'new_property_id', string="新物业信息")
|
||||
|
||||
|
||||
class PropertyInformationDetailLines(models.Model):
|
||||
_name = 'property.information.detail.lines'
|
||||
_description = '新物业信息'
|
||||
|
||||
new_property_id = fields.Many2one('property.management', string="新物业信息")
|
||||
new_company = fields.Char(string="新公司")
|
||||
new_admin = fields.Char(string="新管理员")
|
||||
new_precincts = fields.Char(string="新片区")
|
||||
new_management_type = fields.Char(string="新管理类型")
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -25,4 +25,7 @@ access_property_confirm,property_confirm,model_property_confirm,base.group_user,
|
||||
access_property_move,property_move,model_property_move,base.group_user,1,1,1,1
|
||||
access_property_assess,property_assess,model_property_assess,base.group_user,1,1,1,1
|
||||
access_property_assess_line,property_assess_line,model_property_assess_line,base.group_user,1,1,1,1
|
||||
access_property_record,property_record,model_property_record,base.group_user,1,1,1,1
|
||||
access_property_record,property_record,model_property_record,base.group_user,1,1,1,1
|
||||
access_property_approval,property_approval,model_property_approval,base.group_user,1,1,1,1
|
||||
access_property_approval_line,property_approval_line,model_property_approval_line,base.group_user,1,1,1,1
|
||||
access_property_information_detail_lines,property_information_detail_lines,model_property_information_detail_lines,base.group_user,1,1,1,1
|
||||
|
@@ -0,0 +1,68 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<record id="view_property_approval_tree" model="ir.ui.view">
|
||||
<field name="name">property.approval.tree</field>
|
||||
<field name="model">property.approval</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="新增物业审批">
|
||||
<field name="name"/>
|
||||
<field name="code"/>
|
||||
<field name="source"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_property_approval_form" model="ir.ui.view">
|
||||
<field name="name">property.approval.form</field>
|
||||
<field name="model">property.approval</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="新增物业审批">
|
||||
<sheet>
|
||||
<div class="oe_title">
|
||||
<label for="name"/>
|
||||
<h1>
|
||||
<field name="name" required="1"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group col="2">
|
||||
<group>
|
||||
<field name="property_documents_ids" widget="many2many_tags"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="source"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<field name="tip_description" type="html"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="property_massage_ids">
|
||||
<tree editable="bottom">
|
||||
<field name="property_approval_id" column_invisible="1"/>
|
||||
<field name="property_address"/>
|
||||
<field name="is_affirmation"/>
|
||||
<field name="owner"/>
|
||||
<field name="title_number"/>
|
||||
<field name="area"/>
|
||||
<field name="purposes"/>
|
||||
<field name="state"/>
|
||||
</tree>
|
||||
</field>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="property_approval_action" model="ir.actions.act_window">
|
||||
<field name="name">新增物业审批</field>
|
||||
<field name="res_model">property.approval</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<field name="name">property.management.tree</field>
|
||||
<field name="model">property.management</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="物业管理审批">
|
||||
<tree string="物业管理变更申请表">
|
||||
<field name="name"/>
|
||||
<field name="code"/>
|
||||
</tree>
|
||||
@@ -15,7 +15,7 @@
|
||||
<field name="name">property.management.form</field>
|
||||
<field name="model">property.management</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="物业管理审批">
|
||||
<form string="物业管理变更申请表">
|
||||
<sheet>
|
||||
<div class="oe_title">
|
||||
<label for="name"/>
|
||||
@@ -23,23 +23,49 @@
|
||||
<field name="name" required="1"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group>
|
||||
<group col="2">
|
||||
<group>
|
||||
<field name="code"/>
|
||||
<field name="property_documents_ids">
|
||||
<tree>
|
||||
<field name="name"/>
|
||||
</tree>
|
||||
</field>
|
||||
<field name="effective_start_date"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="reason_change"/>
|
||||
<field name="effective_end_date"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<field name="handling_opinions"/>
|
||||
</group>
|
||||
<group string="原物业信息">
|
||||
<field name="original_property_ids" string=" ">
|
||||
<tree editable="bottom">
|
||||
<field name="original_property_id" column_invisible="1"/>
|
||||
<field name="property_name"/>
|
||||
<field name="company_id"/>
|
||||
<field name="admin_id"/>
|
||||
<field name="precinct"/>
|
||||
<field name="management_type"/>
|
||||
<field name="property_id"/>
|
||||
</tree>
|
||||
</field>
|
||||
</group>
|
||||
<group string="新物业信息">
|
||||
<field name="new_property_ids" string=" ">
|
||||
<tree editable="bottom">
|
||||
<field name="new_property_id" column_invisible="1"/>
|
||||
<field name="new_company"/>
|
||||
<field name="new_admin"/>
|
||||
<field name="new_precincts"/>
|
||||
<field name="new_management_type"/>
|
||||
</tree>
|
||||
</field>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="property_management_action" model="ir.actions.act_window">
|
||||
<field name="name">物业管理审批</field>
|
||||
<field name="name">物业管理变更审批</field>
|
||||
<field name="res_model">property.management</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
|
||||
<menuitem
|
||||
id="property_approval_menu"
|
||||
parent="yuthon_property.property_approval_menu"
|
||||
name="新增物业审批"
|
||||
action="property_approval_action"
|
||||
sequence="19"/>
|
||||
|
||||
<menuitem
|
||||
id="property_billing_confirmation_menu"
|
||||
parent="yuthon_property.property_approval_menu"
|
||||
@@ -94,7 +102,7 @@
|
||||
<menuitem
|
||||
id="property_management_menu"
|
||||
parent="yuthon_property.property_approval_menu"
|
||||
name="物业管理审批"
|
||||
name="物业管理变更申请表"
|
||||
action="property_management_action"
|
||||
sequence="33"/>
|
||||
|
||||
|
||||
@@ -93,6 +93,11 @@
|
||||
parent="hr_process_work_job_menu_board"
|
||||
action="yuthon_hr_employee_approval.yuthon_message_login_action"
|
||||
sequence="9"/>
|
||||
<menuitem id="hr_menu_prepare_approval_root_board"
|
||||
name="编制调整申请表"
|
||||
parent="hr_process_work_job_menu_board"
|
||||
action="yuthon_hr_employee_approval.yuthon_prepare_approval_action"
|
||||
sequence="11"/>
|
||||
<menuitem id="hr_recruitment_app2_menu_board"
|
||||
name="应用"
|
||||
parent="hr_recruitment_setting_menu_board"
|
||||
@@ -137,6 +142,8 @@
|
||||
parent="hr_recruitment_setting_menu_board"
|
||||
action="hr_recruitment.hr_applicant_category_action"
|
||||
sequence="15"/>
|
||||
|
||||
|
||||
<!-- 人事 -->
|
||||
<menuitem id="hr_menu_root_board"
|
||||
name="人事管理"
|
||||
@@ -189,21 +196,16 @@
|
||||
parent="hr_set_process_menu_root_board"
|
||||
action="yuthon_hr_employee_approval.yuthon_leaving_approval_action"
|
||||
sequence="3"/>
|
||||
<menuitem id="hr_menu_prepare_approval_root_board"
|
||||
name="编制调整申请表"
|
||||
parent="hr_set_process_menu_root_board"
|
||||
action="yuthon_hr_employee_approval.yuthon_prepare_approval_action"
|
||||
sequence="5"/>
|
||||
<menuitem id="hr_menu_rank_approval_root_board"
|
||||
name="职级调整申请表"
|
||||
parent="hr_set_process_menu_root_board"
|
||||
action="yuthon_none_action"
|
||||
sequence="7"/>
|
||||
sequence="5"/>
|
||||
<menuitem id="hr_menu_reassignment_approval_root_board"
|
||||
name="调岗申请"
|
||||
parent="hr_set_process_menu_root_board"
|
||||
action="yuthon_hr_employee_approval.yuthon_reassignment_approval_action"
|
||||
sequence="9"/>
|
||||
sequence="7"/>
|
||||
<menuitem id="hr_menu_reward_approval_root_board"
|
||||
name="员工奖罚"
|
||||
parent="hr_set_process_menu_root_board"
|
||||
|
||||
Reference in New Issue
Block a user