@@ -37,6 +37,7 @@
|
||||
'depends': ['account', 'purchase', 'hr_expense', 'web'],
|
||||
'assets': {
|
||||
'web.assets_backend': [
|
||||
'list_view_sticky_header_and_column/static/src/scss/form.scss',
|
||||
'list_view_sticky_header_and_column/static/src/js'
|
||||
'/list_view_sticky_header_and_column.js',
|
||||
'list_view_sticky_header_and_column/static/src/xml'
|
||||
|
||||
@@ -0,0 +1,146 @@
|
||||
.o_form_view.o_xxl_form_view, {
|
||||
.o_form_sheet_bg {
|
||||
> .o_form_sheet {
|
||||
width: 100%;
|
||||
max-width: calc(100% - 100px) !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
button.btn {
|
||||
margin-left: 3px;
|
||||
}
|
||||
|
||||
/*
|
||||
选择o_wrap_field下具有o_required_modifier元素的标签, 在标签子元素o_wrap_label的label标签前面添加一个红色*号
|
||||
*/
|
||||
.o_wrap_field:has(.o_required_modifier) > .o_wrap_label {
|
||||
position: relative; /* 为了使绝对定位的星号相对于标签定位 */
|
||||
}
|
||||
.o_wrap_field:has(.o_required_modifier) > .o_wrap_label label::before {
|
||||
content: "*";
|
||||
color: red;
|
||||
font-weight: bold;
|
||||
position: absolute;
|
||||
left: 0.3rem; /* 根据需要调整位置 */
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
font-size: 1.2rem; /* 根据需要调整字体大小 */
|
||||
}
|
||||
|
||||
//.o_wrap_field:has(.o_required_modifier) > .o_wrap_label label::before {
|
||||
// content: "*";
|
||||
// color: red;
|
||||
// font-weight: bold;
|
||||
// display: inline-block;
|
||||
// //margin-left: -0.5rem;
|
||||
//}
|
||||
|
||||
// 修改表单内label的样式
|
||||
.o_form_sheet, .o_form_nosheet {
|
||||
.grid {
|
||||
gap: 0 !important;
|
||||
}
|
||||
//.o_group {
|
||||
// border-bottom: 1px solid black;
|
||||
//}
|
||||
> .o_inner_group:first-child {
|
||||
border: 1px solid #{$gray-200};
|
||||
border-bottom: none;
|
||||
}
|
||||
> .o_inner_group:not(:first-child) {
|
||||
border-right: 1px solid #{$gray-200};
|
||||
border-left: 2px solid #{$gray-200};
|
||||
}
|
||||
> .o_group:first-child {
|
||||
border: 1px solid #{$gray-200};
|
||||
border-bottom: none;
|
||||
}
|
||||
.o_group {
|
||||
border-right: 1px solid #{$gray-200};
|
||||
border-left: 1px solid #{$gray-200};
|
||||
//box-shadow: inset 1px 0 0 #{$gray-200}, inset -1px 0 0 #{$gray-200};
|
||||
margin-right: calc(var(--gutter-x) * .0) !important;
|
||||
margin-left: calc(var(--gutter-x) * .0) !important;
|
||||
.o_inner_group {
|
||||
padding-right: calc(var(--gutter-x) * .0) !important;
|
||||
padding-left: calc(var(--gutter-x) * .0) !important;
|
||||
}
|
||||
//* {
|
||||
// padding-right: calc(var(--gutter-x) * .0) !important;
|
||||
// padding-left: calc(var(--gutter-x) * .0) !important;
|
||||
//}
|
||||
}
|
||||
.o_horizontal_separator:not(:empty) {
|
||||
text-align: center;
|
||||
border-bottom: 1px solid #FFFFFF;
|
||||
box-shadow: none;
|
||||
//box-shadow: inset 0 1px 0 0 #FFFFFF !important;
|
||||
padding: 0.5rem 1rem;
|
||||
background: #{$gray-200};
|
||||
margin-bottom: 0 !important;
|
||||
margin-top: 0 !important;
|
||||
font-size: var(--body-font-size);
|
||||
}
|
||||
.o_inner_group {
|
||||
--columns: 1;
|
||||
gap: 0 !important;;
|
||||
margin-bottom: 0 !important;
|
||||
border-left: 1px solid #{$gray-200};
|
||||
margin-right: 0;
|
||||
//box-shadow: inset 1px 0 0 #{$gray-200}, inset -1px 0 0 #{$gray-200}, inset 0 1px 0 #{$gray-200};
|
||||
//grid-template-columns: minmax(150px, auto) minmax(0, 1fr) !important;
|
||||
}
|
||||
.o_wrap_field {
|
||||
.o_form_label {
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
.o_field_widget {
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
.o_wrap_label {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.o_wrap_label:not(:last-child) {
|
||||
padding: 0.8rem 1rem;
|
||||
}
|
||||
// 其实也是选择的label,不过防止有些样式覆盖
|
||||
.o_cell.o_wrap_label {
|
||||
background: #{$gray-200} !important;
|
||||
border-bottom: 1px solid #FFFFFF !important;
|
||||
//margin-right: -1px !important;
|
||||
}
|
||||
|
||||
.o_wrap_input {
|
||||
padding: 0 0 0 1rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
.o_field_x2many_list {
|
||||
margin-left: -1rem !important;
|
||||
width: calc(100% + 1rem) !important;
|
||||
}
|
||||
}
|
||||
// 选择的也是o_wrap_input,不过有些字段设置nolabel后上面的选择不会被识别
|
||||
.o_cell:not(.o_wrap_label) {
|
||||
border: 1px solid #{$gray-200} !important;
|
||||
margin-top: -1px !important;
|
||||
//box-shadow: inset 0 -1px 0 #{$gray-200};
|
||||
border-right: none;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
.o_form_statusbar {
|
||||
border: 1px solid #{$gray-200};
|
||||
border-bottom: none;
|
||||
.o_form_statusbar {
|
||||
button {}
|
||||
}
|
||||
}
|
||||
}
|
||||
//.o_form_editable {
|
||||
// .o_wrap_input {
|
||||
// box-shadow: inset 0px -15px 30px -30px #{$gray-200};
|
||||
// }
|
||||
//}
|
||||
+6
-4
@@ -33,10 +33,10 @@
|
||||
}
|
||||
.o_form_view:not(.o_field_highlight) .o_field_widget:not(.o_field_invalid):not(.o_field_highlight) .o_input:not(:hover):not(:focus) {
|
||||
--o-input-border-color: transparent;
|
||||
border-style: solid;
|
||||
border-color: #000;
|
||||
border-width: 0px;
|
||||
border-bottom-width: 1px;
|
||||
//border-style: solid;
|
||||
//border-color: #000;
|
||||
//border-width: 0px;
|
||||
//border-bottom-width: 1px;
|
||||
}
|
||||
body.white .table {
|
||||
width: -webkit-fill-available !important;
|
||||
@@ -63,3 +63,5 @@ th:hover .fa-thumb-tack,
|
||||
th.clicked-header .fa-thumb-tack {
|
||||
display: block;
|
||||
}
|
||||
|
||||
//.o_input:hover{background: #b3c8df!important;}
|
||||
|
||||
@@ -24,18 +24,17 @@ class RoomBooking(models.Model):
|
||||
default=lambda self: self.env.user.id if not self.env.user._is_public() else False,
|
||||
tracking=5)
|
||||
|
||||
# Fields used to group bookings in gantt view
|
||||
office_id = fields.Many2one(related="room_id.office_id", string="Office", readonly=True, store=True)
|
||||
company_id = fields.Many2one(related="room_id.company_id", string="Company", readonly=True, store=True)
|
||||
# pengyuthon
|
||||
|
||||
department_id = fields.Many2one('hr.department', related='organizer_id.employee_id.department_id', string="申请人部门")
|
||||
is_notice = fields.Boolean(string="是否发布通知", default=True)
|
||||
is_hour = fields.Boolean(string="提前一小时", default=True)
|
||||
is_day = fields.Boolean(string="提前一天", default=True)
|
||||
meeting_type = fields.Selection([('up', '线上'), ('down', '线下'), ('exterior', '外部')], default='down', string="会议形式",
|
||||
required=True)
|
||||
meeting_type_id = fields.Many2one('room.meeting.type', string="会议类型",)
|
||||
room_users_ids = fields.Many2many('res.users', string="会议参加人员",store=True)
|
||||
meeting_type_id = fields.Many2one('room.meeting.type', string="会议类型")
|
||||
room_users_ids = fields.Many2many('res.users', string="会议参加人员", store=True)
|
||||
other_company_id = fields.Many2one('res.partner', string="外部公司")
|
||||
other_company_user_ids = fields.One2many(related="other_company_id.child_ids", string="其他人员")
|
||||
|
||||
@@ -53,7 +52,6 @@ class RoomBooking(models.Model):
|
||||
# 关联流程
|
||||
relevancy_type = fields.Selection([('none', '无')], string="关联流程类型")
|
||||
|
||||
#打开选择范围弹窗
|
||||
def open_select_range_wizard(self):
|
||||
return {
|
||||
'name': '选择范围',
|
||||
@@ -67,7 +65,6 @@ class RoomBooking(models.Model):
|
||||
@api.model_create_multi
|
||||
def create(self, vals_list):
|
||||
bookings = super(RoomBooking, self).create(vals_list)
|
||||
# Notify frontend views of new bookings
|
||||
for room, bookings in bookings.grouped("room_id").items():
|
||||
room._notify_booking_view("create", bookings)
|
||||
data = vals_list[0]
|
||||
@@ -112,29 +109,6 @@ class RoomBooking(models.Model):
|
||||
html_content = file.read().replace('姓名', html_select)
|
||||
self.write({'meeting_data': html_content})
|
||||
|
||||
# @api.depends('department_ids', 'employee_ids', 'users_role_ids')
|
||||
# def compute_room_users_ids(self):
|
||||
# department_users_list = users_role_list = []
|
||||
# for users in self:
|
||||
# if users.department_ids:
|
||||
# # 查看是否下级部门
|
||||
# for depart in users.department_ids:
|
||||
# department_users_data = users.env['hr.employee'].search([('department_id', '=', depart.id)])
|
||||
# department_users_list = [de.user_id.id for de in department_users_data]
|
||||
# if depart.child_ids:
|
||||
# for child in depart.child_ids:
|
||||
# department_child_users_data = users.env['hr.employee'].search(
|
||||
# [('department_id', '=', child.id)])
|
||||
# department_users_list += [de.user_id.id for de in department_child_users_data]
|
||||
# employee_users_list = users.employee_ids.user_id.ids
|
||||
# if users.users_role_ids:
|
||||
# for user_id in users.users_role_ids:
|
||||
# user_role_data = users.env['hr.employee'].search(['|', ('user_role_id', '=', user_id.id), ('user_role_ids', '=', user_id.id)])
|
||||
# users_role_list = [ro.user_id.id for ro in user_role_data]
|
||||
# publish_user_list = department_users_list + employee_users_list + users_role_list
|
||||
# false_none_list = [x for x in publish_user_list if x != False]
|
||||
# users.room_users_ids = [(6, 0, list(set(false_none_list)))]
|
||||
|
||||
@api.onchange('department_ids', 'employee_ids', 'users_role_ids', 'room_users_ids')
|
||||
def onchange_partner_ids(self):
|
||||
for par in self:
|
||||
@@ -161,9 +135,6 @@ class RoomBooking(models.Model):
|
||||
self.env['room.meeting.sign'].create({
|
||||
'room_booking_id': self.id,
|
||||
'partner_name': external.name,
|
||||
# 'sign_user_name': external.name, # 单位名称里面的联系人
|
||||
# 'job': external.function,
|
||||
# 'mobile': external.mobile,
|
||||
'user_type': 'outsiders',
|
||||
'sign_type': 'no',
|
||||
})
|
||||
@@ -181,9 +152,7 @@ class RoomBooking(models.Model):
|
||||
# 企业用户发送通知
|
||||
partner_ids = self.sudo().env['res.users'].search([('id', 'in', self.room_users_ids.ids)]).mapped(
|
||||
'partner_id').ids
|
||||
self.sudo().with_context(lang=self.env.lang)._message_auto_subscribe_notify(partner_ids,
|
||||
'room.message_yuthon_room_users_data')
|
||||
# odoo发通知
|
||||
self.sudo().with_context(lang=self.env.lang)._message_auto_subscribe_notify(partner_ids, 'room.message_yuthon_room_users_data')
|
||||
|
||||
def meeting_sign_in(self):
|
||||
# 页面填写信息之后返回给地址
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
.wizard_width {
|
||||
width: 50% !important;
|
||||
.horizontal-button {
|
||||
white-space: nowrap !important; /* 确保文本不换行 */
|
||||
}
|
||||
@@ -128,8 +128,7 @@
|
||||
<button name="meeting_sign_in" string="签到" invisible="meeting_type != 'down'" type="object"
|
||||
class="oe_highlight"/>
|
||||
<button name="meeting_partner_create" string="录入" invisible="meeting_type != 'down'"
|
||||
type="object"
|
||||
class="oe_highlight"/>
|
||||
type="object" class="oe_highlight"/>
|
||||
<button name="sync_wechat_room" string="同步企业微信" type="object" class="oe_highlight"/>
|
||||
</header>
|
||||
<group>
|
||||
@@ -152,61 +151,65 @@
|
||||
<field name="meeting_type_id" required="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<div>
|
||||
<button name="open_select_range_wizard" type="object">参与范围</button>
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<group>
|
||||
<field name="room_users_ids" widget="many2many_tags"/>
|
||||
<field name="partner_ids" widget="many2many_tags" force_save="1" invisible="1"/>
|
||||
<field name="other_company_user_ids" widget="many2many_tags" readonly="1"/>
|
||||
<field name="is_notice"/>
|
||||
</group>
|
||||
<group>
|
||||
<button name="open_select_range_wizard" string="选择范围" type="object" class="btn btn-primary horizontal-button"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<group>
|
||||
<field name="is_hour" invisible="not is_notice"/>
|
||||
<field name="is_day" invisible="not is_notice"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="room_users_ids" widget="many2many_tags"/>
|
||||
<field name="partner_ids" widget="many2many_tags" force_save="1" invisible="1"/>
|
||||
<field name="other_company_user_ids" widget="many2many_tags" readonly="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page name="sign" string="签到详情">
|
||||
<group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page name="sign" string="签到详情">
|
||||
<group>
|
||||
<field name="should_user"/>
|
||||
<group>
|
||||
<field name="should_user"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="right_user"/>
|
||||
</group>
|
||||
<field name="meeting_sing_ids">
|
||||
<tree delete="0" create="0">
|
||||
<field name="room_booking_id" column_invisible="1"/>
|
||||
<field name="sign_user_name"/>
|
||||
<field name="partner_name"/>
|
||||
<field name="job"/>
|
||||
<field name="mobile"/>
|
||||
<field name="user_type"/>
|
||||
<field name="sign_type"/>
|
||||
<field name="sign_time"/>
|
||||
</tree>
|
||||
</field>
|
||||
</group>
|
||||
<group>
|
||||
<field name="right_user"/>
|
||||
</group>
|
||||
<field name="meeting_sing_ids">
|
||||
<tree delete="0" create="0">
|
||||
<field name="room_booking_id" column_invisible="1"/>
|
||||
<field name="sign_user_name"/>
|
||||
<field name="partner_name"/>
|
||||
<field name="job"/>
|
||||
<field name="mobile"/>
|
||||
<field name="user_type"/>
|
||||
<field name="sign_type"/>
|
||||
<field name="sign_time"/>
|
||||
</tree>
|
||||
</field>
|
||||
</group>
|
||||
</page>
|
||||
<page name="meeting_html" string="会议说明">
|
||||
<button name="button_meeting_data" string="座位排列" type="object" class="oe_highlight"/>
|
||||
<field name="meeting_data" widget="tinymce"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids"/>
|
||||
<field name="message_ids"/>
|
||||
</div>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
</page>
|
||||
<page name="meeting_html" string="会议说明">
|
||||
<button name="button_meeting_data" string="座位排列" type="object" class="oe_highlight"/>
|
||||
<field name="meeting_data" widget="tinymce"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids"/>
|
||||
<field name="message_ids"/>
|
||||
</div>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="room_booking_action" model="ir.actions.act_window">
|
||||
<field name="name">Bookings</field>
|
||||
<field name="res_model">room.booking</field>
|
||||
<field name="view_mode">gantt,calendar,list,kanban,form,search</field>
|
||||
</record>
|
||||
</odoo>
|
||||
<record id="room_booking_action" model="ir.actions.act_window">
|
||||
<field name="name">Bookings</field>
|
||||
<field name="res_model">room.booking</field>
|
||||
<field name="view_mode">gantt,calendar,list,kanban,form,search</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<field name="name">room.select.range.wizard.form</field>
|
||||
<field name="model">room.select.range.wizard</field>
|
||||
<field name="arch" type="xml">
|
||||
<form js_class="wizard_width">
|
||||
<form>
|
||||
<group col="2">
|
||||
<group>
|
||||
<field name="department_ids" widget="many2many_tags"/>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='work_email']" position="after">
|
||||
<field name="user_role_id"/>
|
||||
<field name="user_role_ids" widget="many2many_tags" force_save="1"/>
|
||||
<field name="user_role_ids" widget="many2many_tags"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -12,8 +12,7 @@
|
||||
'category': 'Human Resources/Attendances',
|
||||
'sequence': 240,
|
||||
'website': 'https://www.pengyuthon.com',
|
||||
# 'depends': ['hr_attendance', 'resource', 'base', 'hr', 'mail', 'soong_workflow'],
|
||||
'depends': ['hr_attendance', 'resource', 'base', 'hr', 'mail','soong_workflow','yuthon_holiday'],
|
||||
'depends': ['hr_attendance', 'resource', 'base', 'hr', 'mail', 'soong_workflow'],
|
||||
'data': [
|
||||
'security/ir.model.access.csv',
|
||||
# 'security/approval_attendance.xml',
|
||||
@@ -29,7 +28,6 @@
|
||||
'views/go_approval.xml',
|
||||
'views/duty_approval.xml',
|
||||
'views/leave_approval.xml',
|
||||
# 'views/holidays_approval.xml',
|
||||
'views/remove_holiday_approval.xml',
|
||||
'views/card_approval.xml',
|
||||
'views/holiday_manage.xml',
|
||||
|
||||
@@ -8,7 +8,6 @@ from . import overtime_approval
|
||||
from . import go_approval
|
||||
from . import duty_approval
|
||||
from . import leave_approval
|
||||
from . import holidays_approval
|
||||
from . import remove_holiday_approval
|
||||
from . import card_approval
|
||||
from . import holiday_manage
|
||||
|
||||
@@ -1,85 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from email.policy import default
|
||||
|
||||
from odoo import api, fields, models, tools, _
|
||||
from datetime import datetime, time, timedelta
|
||||
from odoo.exceptions import ValidationError, UserError
|
||||
|
||||
|
||||
class HolidaysApprovals(models.Model):
|
||||
_name = 'holidays.approval'
|
||||
_description = "请假审批"
|
||||
# _inherit = ['mail.thread.main.attachment', 'mail.activity.mixin', 'soong.workflow.mixin']
|
||||
_inherit = ['mail.thread.main.attachment', 'mail.activity.mixin', 'soong.workflow.mixin']
|
||||
|
||||
name = fields.Char(string="名称")
|
||||
company_page = fields.Selection([('tz', '天河投资'), ('wg', '天河物管'), ('lc', '天河粮储')], string="公司")
|
||||
applicant_id = fields.Many2one('hr.employee', string="申请人", default=lambda self: self.env.user.id)
|
||||
leave_absence_id = fields.Many2one('hr.employee', string="请假人")
|
||||
code = fields.Char(string="编号", default=lambda self: self.env['ir.sequence'].next_by_code('holidays_approval'))
|
||||
department_id = fields.Many2one('hr.department', string="部门")
|
||||
approvals_ids = fields.One2many('holidays.approvals.line', 'approvals_id', string="请假审批行")
|
||||
|
||||
def holiday_approval(self):
|
||||
pass
|
||||
|
||||
@api.onchange('applicant_id')
|
||||
def _onchange_applicant_id(self):
|
||||
self.leave_absence_id = self.applicant_id
|
||||
|
||||
|
||||
class HolidaysApprovalsLine(models.Model):
|
||||
_name = 'holidays.approvals.line'
|
||||
_description = '请假审批行'
|
||||
|
||||
name = fields.Char(string="请假事由")
|
||||
approvals_id = fields.Many2one('holidays.approval', string="管理请假审批")
|
||||
vacation_category = fields.Many2one('holiday.type.setting', string="休假类别")
|
||||
leave_type_id = fields.Many2one('hr.leave.type', string="请假类型",)
|
||||
days_available = fields.Float(string="可用天数", store=True)
|
||||
applicants = fields.Selection([('hour', '按小时'), ('day', '天'), ('half_day', '半天')], string="申请单位",
|
||||
store=True)
|
||||
date_start = fields.Datetime(string="开始时间", default=fields.Datetime.now)
|
||||
date_end = fields.Datetime(string="结束时间")
|
||||
leave_days = fields.Float(string='请假天数', store=True,compute='_compute_leave_days')
|
||||
surplus_days = fields.Float(string="剩余天数",compute='_compute_surplus_days')
|
||||
|
||||
@api.onchange('leave_type_id')
|
||||
def onchange_approvals_ids(self):
|
||||
for rec in self:
|
||||
rec.days_available = rec.leave_type_id.holiday_days
|
||||
rec.applicants = rec.leave_type_id.request_unit
|
||||
|
||||
@api.depends('date_start', 'date_end')
|
||||
def _compute_leave_days(self):
|
||||
for rec in self:
|
||||
if rec.date_start and rec.date_end:
|
||||
delta = rec.date_end - rec.date_start
|
||||
rec.leave_days = delta.days + (delta.seconds / 86400)
|
||||
if rec.applicants == 'hour':
|
||||
rec.leave_days = rec.leave_days / 24
|
||||
else:
|
||||
rec.leave_days = 0
|
||||
|
||||
@api.depends('leave_days', 'days_available')
|
||||
def _compute_surplus_days(self):
|
||||
for rec in self:
|
||||
rec.surplus_days = rec.days_available - rec.leave_days
|
||||
|
||||
def button_holiday_detail(self):
|
||||
return {
|
||||
'name': '请假详情',
|
||||
'view_mode': 'form',
|
||||
'res_model': 'holiday.details.wizard',
|
||||
'type': 'ir.actions.act_window',
|
||||
'target': 'new',
|
||||
"context": {
|
||||
'default_holiday_days': self.leave_type_id.holiday_days,
|
||||
'default_vacation_days_description': self.leave_type_id.vacation_days_description,
|
||||
'default_vacation_type_id': self.vacation_category.id,
|
||||
'default_annual': self.leave_type_id.annual,
|
||||
'default_treated': self.leave_type_id.treated,
|
||||
'default_remarks': self.leave_type_id.remarks,
|
||||
'default_leave_type_id': self.leave_type_id.id,
|
||||
}
|
||||
}
|
||||
@@ -20,4 +20,3 @@ access_holidays_approvals_line,holidays.approvals.line,model_holidays_approvals_
|
||||
access_go_approvals_line,go.approvals.line,model_go_approvals_line,base.group_user,1,1,1,1
|
||||
access_overtime_user_line,overtime.user.line,model_overtime_user_line,base.group_user,1,1,1,1
|
||||
access_duty_approval_line,duty.approval.line,model_duty_approval_line,base.group_user,1,1,1,1
|
||||
access_holiday_details_wizard,holiday.details.wizard,model_holiday_details_wizard,base.group_user,1,1,1,1
|
||||
|
||||
|
@@ -1,67 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
|
||||
<record id="holiday_approval_tree" model="ir.ui.view">
|
||||
<field name="name">holiday.approval.tree</field>
|
||||
<field name="model">holidays.approval</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<field name="company_page"/>
|
||||
<field name="applicant_id"/>
|
||||
<field name="department_id"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="holiday_approval_form" model="ir.ui.view">
|
||||
<field name="name">holiday.approval.actions</field>
|
||||
<field name="model">holidays.approval</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<!-- <header>-->
|
||||
<!-- <button name="holiday_approval" string="发起申请" type="object" class="oe_highlight"/>-->
|
||||
<!-- </header>-->
|
||||
<sheet>
|
||||
<group col="3">
|
||||
<group>
|
||||
<field name="code"/>
|
||||
<field name="leave_absence_id"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="department_id"/>
|
||||
<field name="applicant_id"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="company_page"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="请假详情">
|
||||
<field name="approvals_ids" string=" ">
|
||||
<tree editable="bottom">
|
||||
<field name="approvals_id" column_invisible="1"/>
|
||||
<field name="vacation_category" string="假期类别"/>
|
||||
<field name="leave_type_id" string="假期类型"/>
|
||||
<field name="days_available" readonly="1" sum="Total" force_save="1"/>
|
||||
<field name="applicants" readonly="1" force_save="1"/>
|
||||
<field name="leave_days" sum="Total"/>
|
||||
<field name="surplus_days" sum="Total"/>
|
||||
<field name="date_start"/>
|
||||
<field name="date_end"/>
|
||||
<field name="name"/>
|
||||
<button name="button_holiday_detail" string="假期详情" class="oe_highlight" type="object"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="approval_request_holiday" model="ir.actions.act_window">
|
||||
<field name="name">请假</field>
|
||||
<field name="res_model">holidays.approval</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -1,4 +1,3 @@
|
||||
from . import attendance_iot_manager_wizard
|
||||
from . import holiday_details_wizard
|
||||
|
||||
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
from odoo import api, fields, models, tools
|
||||
from odoo.exceptions import ValidationError
|
||||
|
||||
|
||||
class HolidayDetailsWizard(models.Model):
|
||||
_name = 'holiday.details.wizard'
|
||||
_description = '假期详情弹窗'
|
||||
|
||||
holiday_days = fields.Float(string='假期天数')
|
||||
vacation_days_description = fields.Text(string='假期天数说明')
|
||||
vacation_type_id = fields.Many2one('holiday.type.setting', string='假期类别')
|
||||
leave_type_id = fields.Many2one('hr.leave.type', string='假期类型',domain="[('vacation_type_id', '=', vacation_category)]")
|
||||
annual = fields.Char(string='年次')
|
||||
travel_leave = fields.Char(string='路程假')
|
||||
treated = fields.Text(string='待遇')
|
||||
remarks = fields.Text(string="备注")
|
||||
details_id = fields.Many2one('holiday.details.wizard', string='假期详情')
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<record id="view_holiday_details_wizard_form" model="ir.ui.view">
|
||||
<field name="name">holiday.details.wizard.form</field>
|
||||
<field name="model">holiday.details.wizard</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="假期需求及待遇">
|
||||
<group string="假期需求及待遇">
|
||||
<field name="vacation_type_id" string="假期类别"/>
|
||||
<field name="leave_type_id" string="假期类型"/>
|
||||
<field name="holiday_days"/>
|
||||
<field name="vacation_days_description"/>
|
||||
<field name="annual"/>
|
||||
<field name="travel_leave"/>
|
||||
<field name="treated"/>
|
||||
<field name="remarks"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -23,4 +23,5 @@
|
||||
<field name="padding">3</field>
|
||||
<field name="company_id" eval="False"/>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
@@ -1,16 +1,21 @@
|
||||
from odoo import api, fields, models, _
|
||||
from odoo.exceptions import UserError
|
||||
|
||||
|
||||
class RoomBooking(models.Model):
|
||||
_inherit = 'room.booking'
|
||||
|
||||
room_booking_library_ids = fields.One2many('issue.library', 'room_booking_id')
|
||||
is_issue = fields.Boolean(string="是否关联议题")
|
||||
issue_meeting_line_ids = fields.One2many('issue.meeting.line', 'meeting_booking_id', string="关联议题明细行")
|
||||
|
||||
def bottom_meeting_approval(self):
|
||||
library_data = []
|
||||
for library in self.room_booking_library_ids:
|
||||
for library in self.issue_meeting_line_ids:
|
||||
if library.state == 'done':
|
||||
raise UserError('当前纪要不允许重复提交')
|
||||
library.state = 'done'
|
||||
library_data.append((0, 0, {
|
||||
'name': library.name,
|
||||
'minutes_id': library.issue_library_id.id,
|
||||
'decision_results': library.decision_results,
|
||||
'overview': library.decision_details,
|
||||
}))
|
||||
@@ -25,3 +30,29 @@ class RoomBooking(models.Model):
|
||||
'default_meeting_date': self.start_datetime,
|
||||
'default_meeting_minutes_ids': library_data
|
||||
}}
|
||||
|
||||
@api.model_create_multi
|
||||
def create(self, vals_list):
|
||||
res = super().create(vals_list)
|
||||
for vals in vals_list:
|
||||
if vals['issue_meeting_line_ids']:
|
||||
for line in vals['issue_meeting_line_ids']:
|
||||
self.env['issue.library.room.line'].create({
|
||||
'issue_library_id': line[2]['issue_library_id'],
|
||||
'room_booking_id': res.id,
|
||||
'room_id': vals['room_id'],
|
||||
'meeting_type_id': vals['meeting_type_id'],
|
||||
'approval_date': vals['start_datetime'],
|
||||
})
|
||||
return res
|
||||
|
||||
|
||||
class IssueMeetingLine(models.Model):
|
||||
_name = 'issue.meeting.line'
|
||||
_description = '关联议题明细行'
|
||||
|
||||
meeting_booking_id = fields.Many2one('room.booking', string='关联会议室')
|
||||
issue_library_id = fields.Many2one('issue.library', string='关联议题')
|
||||
decision_results = fields.Selection([('agree', '通过'), ('disagree', '未通过')], string="决策结果")
|
||||
decision_details = fields.Text(string="决策详情")
|
||||
state = fields.Selection([('no', '未提交'), ('done', '已提交')], default='no', string="状态")
|
||||
|
||||
@@ -30,9 +30,6 @@ class IssueApproval(models.Model):
|
||||
decision_display = fields.Char(string="决策清单", default='{"template": "yuthon_issue.html_decision_demo"}')
|
||||
is_parent_unit = fields.Boolean(string="上级单位")
|
||||
|
||||
def pub_meeting_minutes(self):
|
||||
pass
|
||||
|
||||
|
||||
class IssueApprovalLine(models.Model):
|
||||
_name = 'issue.approval.line'
|
||||
|
||||
@@ -25,12 +25,11 @@ class IssueLibrary(models.Model):
|
||||
relevancy_type = fields.Selection([('none', '无')], string="关联流程类型")
|
||||
issue_approval_id = fields.Many2one('issue.approval', string="关联议题审批")
|
||||
issue_library_line_ids = fields.One2many('issue.library.line', 'issue_library_id', string="决策明细")
|
||||
issue_library_approval_line_ids = fields.One2many('issue.library.approval.line', 'issue_approval_id', string='流程记录')
|
||||
room_booking_id = fields.Many2one('room.booking', string="会议室")
|
||||
issue_library_approval_line_ids = fields.One2many('issue.library.approval.line', 'issue_library_id', string='流程记录')
|
||||
approval_decision_sequence = fields.Char(string="决策清单事项")
|
||||
decision_results = fields.Selection([('agree', '通过'), ('disagree', '未通过')], string="决策结果")
|
||||
decision_details = fields.Text(string="决策详情")
|
||||
is_booking = fields.Boolean(string="是否上会")
|
||||
|
||||
issue_library_room_line_ids = fields.One2many('issue.library.room.line', 'issue_library_id', string="关联会议明细行")
|
||||
# 权限相关隐藏字段
|
||||
employee_id = fields.Many2one('hr.employee', string='创建人', default=lambda self: self.env.user.employee_id)
|
||||
department_id = fields.Many2one('hr.department', string='部门', related='employee_id.department_id')
|
||||
@@ -87,6 +86,7 @@ class IssueLibrary(models.Model):
|
||||
"views": [[form_id, "form"]],
|
||||
"context": {
|
||||
"id": issue_approval_id.id,
|
||||
"is_issue": True,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -100,6 +100,11 @@ class IssueLibrary(models.Model):
|
||||
raise UserError("当前状态不允许上会")
|
||||
for meet in self:
|
||||
meet.write({"state": "on_meet"})
|
||||
issue_details = []
|
||||
for issue in issue_active_ids:
|
||||
issue_details.append((0, 0, {
|
||||
'issue_library_id': issue.id,
|
||||
}))
|
||||
form_id = self.env.ref("room.room_booking_view_form").id
|
||||
return {
|
||||
"type": "ir.actions.act_window",
|
||||
@@ -107,7 +112,8 @@ class IssueLibrary(models.Model):
|
||||
"res_model": "room.booking",
|
||||
"views": [[form_id, "form"]],
|
||||
"context": {
|
||||
'default_room_booking_library_ids': [(6, 0, issue_active_ids.ids)],
|
||||
'default_is_issue': True,
|
||||
'default_issue_meeting_line_ids': issue_details,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -151,14 +157,14 @@ class IssueLibraryLine(models.Model):
|
||||
team_meet = fields.Selection(related='issue_approval_decision_id.team_meet', string='经营班子会')
|
||||
board_meet = fields.Selection(related='issue_approval_decision_id.board_meet', string='董事会')
|
||||
district_bureau = fields.Selection(related='issue_approval_decision_id.district_bureau', string='上级单位')
|
||||
ordinal = fields.Char(related='issue_approval_decision_id.sequence',string='序号')
|
||||
ordinal = fields.Char(related='issue_approval_decision_id.sequence', string='序号')
|
||||
|
||||
|
||||
class IssueLibraryApprovalLine(models.Model):
|
||||
_name = "issue.library.approval.line"
|
||||
_description = '关联流程明细'
|
||||
|
||||
issue_approval_id = fields.Many2one('issue.library')
|
||||
issue_library_id = fields.Many2one('issue.library', string="关联议题")
|
||||
workflow_record_id = fields.Many2one('soong.workflow.record', string="标题")
|
||||
code = fields.Char(string="流程编号")
|
||||
approval_type = fields.Many2one(related="workflow_record_id.workflow_id", string="类型")
|
||||
@@ -172,3 +178,14 @@ class IssueLibraryApprovalLine(models.Model):
|
||||
"name": self.workflow_record_id.name,
|
||||
"view_mode": "form",
|
||||
}
|
||||
|
||||
|
||||
class IssueLibraryRoomLine(models.Model):
|
||||
_name = "issue.library.room.line"
|
||||
_description = '关联会议明细'
|
||||
|
||||
issue_library_id = fields.Many2one('issue.library', string="关联议题")
|
||||
room_booking_id = fields.Many2one('room.booking', string="会议名称")
|
||||
room_id = fields.Many2one('room.room', string="会议地点")
|
||||
meeting_type_id = fields.Many2one('room.meeting.type', string="会议类型")
|
||||
approval_date = fields.Datetime(related="room_booking_id.write_date", string="创建日期")
|
||||
|
||||
@@ -12,15 +12,17 @@ class IssueMeetingMinutes(models.Model):
|
||||
meeting_type_id = fields.Many2one('room.meeting.type', string="会议类型")
|
||||
meeting_date = fields.Datetime(string="会议时间")
|
||||
code = fields.Char(string='编号', required=True, copy=False,
|
||||
default=lambda self: self.env['ir.sequence'].next_by_code('issue_meeting_code_num_sequence'))
|
||||
default=lambda self: self.env['ir.sequence'].next_by_code('issue_meeting_minutes_code'))
|
||||
meeting_minutes_ids = fields.One2many('issue.meeting.minutes.line', 'meeting_minutes_id', string="会议纪要明细")
|
||||
notice_documents_ids = fields.Many2many('documents.document', string="纪要签名附件")
|
||||
|
||||
|
||||
|
||||
class IssueMeetingMinutesLine(models.Model):
|
||||
_name = 'issue.meeting.minutes.line'
|
||||
_description = '会议纪要明细行'
|
||||
|
||||
meeting_minutes_id = fields.Many2one('issue.meeting.minutes', string="关联会议纪要")
|
||||
name = fields.Char(string='事项名称', required=True)
|
||||
minutes_id = fields.Many2one('issue.library',string='事项名称', required=True)
|
||||
decision_results = fields.Selection([('agree', '通过'), ('disagree', '未通过')], string="审议情况")
|
||||
overview = fields.Text(string="概述")
|
||||
@@ -1,5 +1,5 @@
|
||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_issue_library_line,issue_library_line,model_issue_library_line,base.group_user,1,1,1,1
|
||||
access_issue_library_line,issue_library_line,model_issue_library_line,,1,1,1,1
|
||||
access_issue_approval_decision,issue_approval_decision,model_issue_approval_decision,base.group_user,1,1,1,1
|
||||
access_issue_approval_decision_type,issue_approval_decision_type,model_issue_approval_decision_type,base.group_user,1,1,1,1
|
||||
access_issue_library_approval_line,issue_library_approval_line,model_issue_library_approval_line,base.group_user,1,1,1,1
|
||||
@@ -8,15 +8,6 @@ access_issue_approval_line,issue_approval_line,model_issue_approval_line,base.gr
|
||||
access_issue_library,issue_library,model_issue_library,base.group_user,1,1,1,1
|
||||
access_issue_meeting_minutes_line,issue_meeting_minutes_line,model_issue_meeting_minutes_line,base.group_user,1,1,1,1
|
||||
access_issue_meeting_minutes,issue_meeting_minutes,model_issue_meeting_minutes,base.group_user,1,1,1,1
|
||||
access_issue_meeting_line,issue_meeting_line,model_issue_meeting_line,base.group_user,1,1,1,1
|
||||
access_issue_library_room_line,issue_library_room_line,model_issue_library_room_line,base.group_user,1,1,1,1
|
||||
|
||||
access_issue_library,issue_library,model_issue_library,group_topic_admin,1,1,1,1
|
||||
access_issue_library,issue_library,model_issue_library,group_party_topic,1,1,1,1
|
||||
access_issue_library,issue_library,model_issue_library,group_team_topic,1,1,1,1
|
||||
access_issue_library,issue_library,model_issue_library,group_board_topic,1,1,1,1
|
||||
|
||||
access_issue_library,issue_library,model_issue_library,group_property_admin,1,1,1,1
|
||||
access_issue_library,issue_library,model_issue_library,property_group_party_topic,1,1,1,1
|
||||
access_issue_library,issue_library,model_issue_library,property_group_team_topic,1,1,1,1
|
||||
access_issue_library,issue_library,model_issue_library,group_grain_admin,1,1,1,1
|
||||
access_issue_library,issue_library,model_issue_library,group_grain_party_topic,1,1,1,1
|
||||
access_issue_library,issue_library,model_issue_library,group_grain_team_topic,1,1,1,1
|
||||
|
||||
|
@@ -5,19 +5,31 @@
|
||||
<field name="model">room.booking</field>
|
||||
<field name="inherit_id" ref="room.room_booking_view_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='room_id']" position="after">
|
||||
<field name="is_issue"/>
|
||||
</xpath>
|
||||
<xpath expr="//page[@name='sign']" position="after">
|
||||
<page string="关联议题">
|
||||
<field name="room_booking_library_ids">
|
||||
<page string="关联议题" invisible="is_issue == False">
|
||||
<field name="issue_meeting_line_ids">
|
||||
<tree editable="bottom">
|
||||
<field name="room_booking_id" column_invisible="1"/>
|
||||
<field name="name"/>
|
||||
<field name="meeting_booking_id" column_invisible="1"/>
|
||||
<field name="issue_library_id" readonly="1"/>
|
||||
<field name="decision_results"/>
|
||||
<field name="decision_details"/>
|
||||
<field name="state"/>
|
||||
</tree>
|
||||
</field>
|
||||
<button name="bottom_meeting_approval" string="提交会议审批单" type="object" class="oe_highlight"/>
|
||||
<button name="bottom_meeting_approval" string="提交会议纪要审批单" type="object" class="oe_highlight"/>
|
||||
</page>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="issue_meeting_action" model="ir.actions.act_window">
|
||||
<field name="name">议题相关会议</field>
|
||||
<field name="res_model">room.booking</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="domain">[('is_issue','=',True)]</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
||||
@@ -80,11 +80,23 @@
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="issue_approval_decision_search" model="ir.ui.view">
|
||||
<field name="name">issue.approval.decision.search</field>
|
||||
<field name="model">issue.approval.decision</field>
|
||||
<field name="priority">20</field>
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
<field name="specifics"/>
|
||||
</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>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="context">{'search_default_group_decision_type_on_id': True, 'search_default_group_decision_type_id': True}
|
||||
<field name="context">{'search_default_group_decision_type_on_id': True,
|
||||
'search_default_group_decision_type_id': True}
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
<field name="department_id"/>
|
||||
<field name="issue_display" widget="json_template"/>
|
||||
<field name="decision_display" widget="json_template"/>
|
||||
<button name="pub_meeting_minutes" string="会议纪要" type="object" class="oe_highlight"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -34,17 +34,9 @@
|
||||
<field name="state" widget="statusbar"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<group>
|
||||
<div class="oe_title">
|
||||
<label for="name"/>
|
||||
<h1>
|
||||
<field name="name" required="1"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group/>
|
||||
</group>
|
||||
<group>
|
||||
<group>
|
||||
<field name="name" required="1"/>
|
||||
<field name="code"/>
|
||||
<field name="approval_decision_sequence" invisible="1"/>
|
||||
<field name="notice_documents_ids" widget="preview_many2many"/>
|
||||
@@ -55,6 +47,7 @@
|
||||
<field name="department_id" invisible="1"/>
|
||||
<field name="yuthon_company" invisible="1"/>
|
||||
<field name="users_role_ids" invisible="1" widget="many2many_tags"/>
|
||||
<field name="is_booking"/>
|
||||
</group>
|
||||
</group>
|
||||
<group col="4">
|
||||
@@ -88,7 +81,7 @@
|
||||
<page string="关联流程">
|
||||
<field name="issue_library_approval_line_ids" readonly="1">
|
||||
<tree>
|
||||
<field name="issue_approval_id" column_invisible="1"/>
|
||||
<field name="issue_library_id" column_invisible="1"/>
|
||||
<field name="workflow_record_id" string="标题"/>
|
||||
<field name="code"/>
|
||||
<field name="approval_type"/>
|
||||
@@ -105,6 +98,17 @@
|
||||
<group/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="关联会议" invisible="is_booking == False">
|
||||
<field name="issue_library_room_line_ids" readonly="1">
|
||||
<tree>
|
||||
<field name="issue_library_id" column_invisible="1"/>
|
||||
<field name="room_booking_id"/>
|
||||
<field name="room_id"/>
|
||||
<field name="meeting_type_id"/>
|
||||
<field name="approval_date"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
@@ -211,18 +215,10 @@
|
||||
<field name="state" widget="statusbar"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<group>
|
||||
<div class="oe_title">
|
||||
<label for="name"/>
|
||||
<h1>
|
||||
<field name="name" required="1"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group/>
|
||||
</group>
|
||||
<group>
|
||||
<group>
|
||||
<field name="code"/>
|
||||
<field name="name" required="1"/>
|
||||
<field name="approval_decision_sequence" invisible="1"/>
|
||||
<field name="notice_documents_ids" widget="preview_many2many"/>
|
||||
<field name="creart_datetime"/>
|
||||
@@ -232,6 +228,7 @@
|
||||
<field name="department_id" invisible="1"/>
|
||||
<field name="yuthon_company" invisible="1"/>
|
||||
<field name="users_role_ids" invisible="1" widget="many2many_tags"/>
|
||||
<field name="is_booking"/>
|
||||
</group>
|
||||
</group>
|
||||
<group col="2">
|
||||
@@ -257,7 +254,7 @@
|
||||
<page string="关联流程">
|
||||
<field name="issue_library_approval_line_ids" readonly="1">
|
||||
<tree>
|
||||
<field name="issue_approval_id" column_invisible="1"/>
|
||||
<field name="issue_library_id" column_invisible="1"/>
|
||||
<field name="workflow_record_id" string="标题"/>
|
||||
<field name="code"/>
|
||||
<field name="approval_type"/>
|
||||
@@ -274,6 +271,17 @@
|
||||
<group/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="关联会议" invisible="is_booking == False">
|
||||
<field name="issue_library_room_line_ids" readonly="1">
|
||||
<tree>
|
||||
<field name="issue_library_id" column_invisible="1"/>
|
||||
<field name="room_booking_id"/>
|
||||
<field name="room_id"/>
|
||||
<field name="meeting_type_id"/>
|
||||
<field name="approval_date"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
@@ -353,17 +361,9 @@
|
||||
<field name="state" widget="statusbar"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<group>
|
||||
<div class="oe_title">
|
||||
<label for="name"/>
|
||||
<h1>
|
||||
<field name="name" required="1"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group/>
|
||||
</group>
|
||||
<group>
|
||||
<group>
|
||||
<field name="name" required="1"/>
|
||||
<field name="code"/>
|
||||
<field name="approval_decision_sequence" invisible="1"/>
|
||||
<field name="notice_documents_ids" widget="preview_many2many"/>
|
||||
@@ -374,6 +374,7 @@
|
||||
<field name="department_id" invisible="1"/>
|
||||
<field name="yuthon_company" invisible="1"/>
|
||||
<field name="users_role_ids" invisible="1" widget="many2many_tags"/>
|
||||
<field name="is_booking"/>
|
||||
</group>
|
||||
</group>
|
||||
<group col="2">
|
||||
@@ -399,7 +400,7 @@
|
||||
<page string="关联流程">
|
||||
<field name="issue_library_approval_line_ids" readonly="1">
|
||||
<tree>
|
||||
<field name="issue_approval_id" column_invisible="1"/>
|
||||
<field name="issue_library_id" column_invisible="1"/>
|
||||
<field name="workflow_record_id" string="标题"/>
|
||||
<field name="code"/>
|
||||
<field name="approval_type"/>
|
||||
@@ -416,6 +417,17 @@
|
||||
<group/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="关联会议" invisible="is_booking == False">
|
||||
<field name="issue_library_room_line_ids" readonly="1">
|
||||
<tree>
|
||||
<field name="issue_library_id" column_invisible="1"/>
|
||||
<field name="room_booking_id"/>
|
||||
<field name="room_id"/>
|
||||
<field name="meeting_type_id"/>
|
||||
<field name="approval_date"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
@@ -494,18 +506,10 @@
|
||||
<field name="state" widget="statusbar"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<group>
|
||||
<div class="oe_title">
|
||||
<label for="name"/>
|
||||
<h1>
|
||||
<field name="name" required="1"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group/>
|
||||
</group>
|
||||
<group>
|
||||
<group>
|
||||
<field name="code"/>
|
||||
<field name="name" required="1"/>
|
||||
<field name="approval_decision_sequence" invisible="1"/>
|
||||
<field name="notice_documents_ids" widget="preview_many2many"/>
|
||||
<field name="creart_datetime"/>
|
||||
@@ -515,6 +519,7 @@
|
||||
<field name="department_id" invisible="1"/>
|
||||
<field name="yuthon_company" invisible="1"/>
|
||||
<field name="users_role_ids" invisible="1" widget="many2many_tags"/>
|
||||
<field name="is_booking"/>
|
||||
</group>
|
||||
</group>
|
||||
<group col="2">
|
||||
@@ -540,7 +545,7 @@
|
||||
<page string="关联流程">
|
||||
<field name="issue_library_approval_line_ids" readonly="1">
|
||||
<tree>
|
||||
<field name="issue_approval_id" column_invisible="1"/>
|
||||
<field name="issue_library_id" column_invisible="1"/>
|
||||
<field name="workflow_record_id" string="标题"/>
|
||||
<field name="code"/>
|
||||
<field name="approval_type"/>
|
||||
@@ -557,6 +562,17 @@
|
||||
<group/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="关联会议" invisible="is_booking == False">
|
||||
<field name="issue_library_room_line_ids" readonly="1">
|
||||
<tree>
|
||||
<field name="issue_library_id" column_invisible="1"/>
|
||||
<field name="room_booking_id"/>
|
||||
<field name="room_id"/>
|
||||
<field name="meeting_type_id"/>
|
||||
<field name="approval_date"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
@@ -636,18 +652,10 @@
|
||||
<field name="state" widget="statusbar"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<group>
|
||||
<div class="oe_title">
|
||||
<label for="name"/>
|
||||
<h1>
|
||||
<field name="name" required="1"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group/>
|
||||
</group>
|
||||
<group>
|
||||
<group>
|
||||
<field name="code"/>
|
||||
<field name="name" required="1"/>
|
||||
<field name="approval_decision_sequence" invisible="1"/>
|
||||
<field name="notice_documents_ids" widget="preview_many2many"/>
|
||||
<field name="creart_datetime"/>
|
||||
@@ -657,6 +665,7 @@
|
||||
<field name="department_id" invisible="1"/>
|
||||
<field name="yuthon_company" invisible="1"/>
|
||||
<field name="users_role_ids" invisible="1" widget="many2many_tags"/>
|
||||
<field name="is_booking"/>
|
||||
</group>
|
||||
</group>
|
||||
<group col="2">
|
||||
@@ -682,7 +691,7 @@
|
||||
<page string="关联流程">
|
||||
<field name="issue_library_approval_line_ids" readonly="1">
|
||||
<tree>
|
||||
<field name="issue_approval_id" column_invisible="1"/>
|
||||
<field name="issue_library_id" column_invisible="1"/>
|
||||
<field name="workflow_record_id" string="标题"/>
|
||||
<field name="code"/>
|
||||
<field name="approval_type"/>
|
||||
@@ -699,6 +708,17 @@
|
||||
<group/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="关联会议" invisible="is_booking == False">
|
||||
<field name="issue_library_room_line_ids" readonly="1">
|
||||
<tree>
|
||||
<field name="issue_library_id" column_invisible="1"/>
|
||||
<field name="room_booking_id"/>
|
||||
<field name="room_id"/>
|
||||
<field name="meeting_type_id"/>
|
||||
<field name="approval_date"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
@@ -778,18 +798,10 @@
|
||||
<field name="state" widget="statusbar"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<group>
|
||||
<div class="oe_title">
|
||||
<label for="name"/>
|
||||
<h1>
|
||||
<field name="name" required="1"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group/>
|
||||
</group>
|
||||
<group>
|
||||
<group>
|
||||
<field name="code"/>
|
||||
<field name="name" required="1"/>
|
||||
<field name="approval_decision_sequence" invisible="1"/>
|
||||
<field name="notice_documents_ids" widget="preview_many2many"/>
|
||||
<field name="creart_datetime"/>
|
||||
@@ -799,6 +811,7 @@
|
||||
<field name="department_id" invisible="1"/>
|
||||
<field name="yuthon_company" invisible="1"/>
|
||||
<field name="users_role_ids" invisible="1" widget="many2many_tags"/>
|
||||
<field name="is_booking"/>
|
||||
</group>
|
||||
</group>
|
||||
<group col="2">
|
||||
@@ -824,7 +837,7 @@
|
||||
<page string="关联流程">
|
||||
<field name="issue_library_approval_line_ids" readonly="1">
|
||||
<tree>
|
||||
<field name="issue_approval_id" column_invisible="1"/>
|
||||
<field name="issue_library_id" column_invisible="1"/>
|
||||
<field name="workflow_record_id" string="标题"/>
|
||||
<field name="code"/>
|
||||
<field name="approval_type"/>
|
||||
@@ -841,6 +854,17 @@
|
||||
<group/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="关联会议" invisible="is_booking == False">
|
||||
<field name="issue_library_room_line_ids" readonly="1">
|
||||
<tree>
|
||||
<field name="issue_library_id" column_invisible="1"/>
|
||||
<field name="room_booking_id"/>
|
||||
<field name="room_id"/>
|
||||
<field name="meeting_type_id"/>
|
||||
<field name="approval_date"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
@@ -920,18 +944,10 @@
|
||||
<field name="state" widget="statusbar"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<group>
|
||||
<div class="oe_title">
|
||||
<label for="name"/>
|
||||
<h1>
|
||||
<field name="name" required="1"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group/>
|
||||
</group>
|
||||
<group>
|
||||
<group>
|
||||
<field name="code"/>
|
||||
<field name="name" required="1"/>
|
||||
<field name="approval_decision_sequence" invisible="1"/>
|
||||
<field name="notice_documents_ids" widget="preview_many2many"/>
|
||||
<field name="creart_datetime"/>
|
||||
@@ -941,6 +957,7 @@
|
||||
<field name="department_id" invisible="1"/>
|
||||
<field name="yuthon_company" invisible="1"/>
|
||||
<field name="users_role_ids" invisible="1" widget="many2many_tags"/>
|
||||
<field name="is_booking"/>
|
||||
</group>
|
||||
</group>
|
||||
<group col="2">
|
||||
@@ -966,7 +983,7 @@
|
||||
<page string="关联流程">
|
||||
<field name="issue_library_approval_line_ids" readonly="1">
|
||||
<tree>
|
||||
<field name="issue_approval_id" column_invisible="1"/>
|
||||
<field name="issue_library_id" column_invisible="1"/>
|
||||
<field name="workflow_record_id" string="标题"/>
|
||||
<field name="code"/>
|
||||
<field name="approval_type"/>
|
||||
@@ -983,6 +1000,17 @@
|
||||
<group/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="关联会议" invisible="is_booking == False">
|
||||
<field name="issue_library_room_line_ids" readonly="1">
|
||||
<tree>
|
||||
<field name="issue_library_id" column_invisible="1"/>
|
||||
<field name="room_booking_id"/>
|
||||
<field name="room_id"/>
|
||||
<field name="meeting_type_id"/>
|
||||
<field name="approval_date"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
@@ -1062,18 +1090,10 @@
|
||||
<field name="state" widget="statusbar"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<group>
|
||||
<div class="oe_title">
|
||||
<label for="name"/>
|
||||
<h1>
|
||||
<field name="name" required="1"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group/>
|
||||
</group>
|
||||
<group>
|
||||
<group>
|
||||
<field name="code"/>
|
||||
<field name="name" required="1"/>
|
||||
<field name="approval_decision_sequence" invisible="1"/>
|
||||
<field name="notice_documents_ids" widget="preview_many2many"/>
|
||||
<field name="creart_datetime"/>
|
||||
@@ -1083,6 +1103,7 @@
|
||||
<field name="department_id" invisible="1"/>
|
||||
<field name="yuthon_company" invisible="1"/>
|
||||
<field name="users_role_ids" invisible="1" widget="many2many_tags"/>
|
||||
<field name="is_booking"/>
|
||||
</group>
|
||||
</group>
|
||||
<group col="2">
|
||||
@@ -1108,7 +1129,7 @@
|
||||
<page string="关联流程">
|
||||
<field name="issue_library_approval_line_ids" readonly="1">
|
||||
<tree>
|
||||
<field name="issue_approval_id" column_invisible="1"/>
|
||||
<field name="issue_library_id" column_invisible="1"/>
|
||||
<field name="workflow_record_id" string="标题"/>
|
||||
<field name="code"/>
|
||||
<field name="approval_type"/>
|
||||
@@ -1125,6 +1146,17 @@
|
||||
<group/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="关联会议" invisible="is_booking == False">
|
||||
<field name="issue_library_room_line_ids" readonly="1">
|
||||
<tree>
|
||||
<field name="issue_library_id" column_invisible="1"/>
|
||||
<field name="room_booking_id"/>
|
||||
<field name="room_id"/>
|
||||
<field name="meeting_type_id"/>
|
||||
<field name="approval_date"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
@@ -1172,8 +1204,8 @@
|
||||
(0, 0, {'view_mode': 'form', 'view_id': ref('yuthon_issue.view_issue_library_form10')})]"/>
|
||||
</record>
|
||||
|
||||
<!--物管委议题库-->
|
||||
<record id="view_issue_library_tree11" model="ir.ui.view">
|
||||
<!--物管委议题库-->
|
||||
<record id="view_issue_library_tree11" model="ir.ui.view">
|
||||
<field name="name">issue.library.tree</field>
|
||||
<field name="model">issue.library</field>
|
||||
<field name="arch" type="xml">
|
||||
@@ -1207,18 +1239,10 @@
|
||||
<field name="state" widget="statusbar"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<group>
|
||||
<div class="oe_title">
|
||||
<label for="name"/>
|
||||
<h1>
|
||||
<field name="name" required="1"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group/>
|
||||
</group>
|
||||
<group>
|
||||
<group>
|
||||
<field name="code"/>
|
||||
<field name="name" required="1"/>
|
||||
<field name="approval_decision_sequence" invisible="1"/>
|
||||
<field name="notice_documents_ids" widget="preview_many2many"/>
|
||||
<field name="creart_datetime"/>
|
||||
@@ -1228,6 +1252,7 @@
|
||||
<field name="department_id" invisible="1"/>
|
||||
<field name="yuthon_company" invisible="1"/>
|
||||
<field name="users_role_ids" invisible="1" widget="many2many_tags"/>
|
||||
<field name="is_booking"/>
|
||||
</group>
|
||||
</group>
|
||||
<group col="4">
|
||||
@@ -1261,7 +1286,7 @@
|
||||
<page string="关联流程">
|
||||
<field name="issue_library_approval_line_ids" readonly="1">
|
||||
<tree>
|
||||
<field name="issue_approval_id" column_invisible="1"/>
|
||||
<field name="issue_library_id" column_invisible="1"/>
|
||||
<field name="workflow_record_id" string="标题"/>
|
||||
<field name="code"/>
|
||||
<field name="approval_type"/>
|
||||
@@ -1278,6 +1303,17 @@
|
||||
<group/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="关联会议" invisible="is_booking == False">
|
||||
<field name="issue_library_room_line_ids" readonly="1">
|
||||
<tree>
|
||||
<field name="issue_library_id" column_invisible="1"/>
|
||||
<field name="room_booking_id"/>
|
||||
<field name="room_id"/>
|
||||
<field name="meeting_type_id"/>
|
||||
<field name="approval_date"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
@@ -1334,7 +1370,7 @@
|
||||
(0, 0, {'view_mode': 'tree', 'view_id': ref('yuthon_issue.view_issue_library_tree11')}),
|
||||
(0, 0, {'view_mode': 'form', 'view_id': ref('yuthon_issue.view_issue_library_form11')})]"/>
|
||||
</record>
|
||||
<!--粮储议题库-->
|
||||
<!--粮储议题库-->
|
||||
<record id="view_issue_library_tree12" model="ir.ui.view">
|
||||
<field name="name">issue.library.tree</field>
|
||||
<field name="model">issue.library</field>
|
||||
@@ -1369,18 +1405,10 @@
|
||||
<field name="state" widget="statusbar"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<group>
|
||||
<div class="oe_title">
|
||||
<label for="name"/>
|
||||
<h1>
|
||||
<field name="name" required="1"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group/>
|
||||
</group>
|
||||
<group>
|
||||
<group>
|
||||
<field name="code"/>
|
||||
<field name="name" required="1"/>
|
||||
<field name="approval_decision_sequence" invisible="1"/>
|
||||
<field name="notice_documents_ids" widget="preview_many2many"/>
|
||||
<field name="creart_datetime"/>
|
||||
@@ -1390,6 +1418,7 @@
|
||||
<field name="department_id" invisible="1"/>
|
||||
<field name="yuthon_company" invisible="1"/>
|
||||
<field name="users_role_ids" invisible="1" widget="many2many_tags"/>
|
||||
<field name="is_booking"/>
|
||||
</group>
|
||||
</group>
|
||||
<group col="4">
|
||||
@@ -1423,7 +1452,7 @@
|
||||
<page string="关联流程">
|
||||
<field name="issue_library_approval_line_ids" readonly="1">
|
||||
<tree>
|
||||
<field name="issue_approval_id" column_invisible="1"/>
|
||||
<field name="issue_library_id" column_invisible="1"/>
|
||||
<field name="workflow_record_id" string="标题"/>
|
||||
<field name="code"/>
|
||||
<field name="approval_type"/>
|
||||
@@ -1440,6 +1469,17 @@
|
||||
<group/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="关联会议" invisible="is_booking == False">
|
||||
<field name="issue_library_room_line_ids" readonly="1">
|
||||
<tree>
|
||||
<field name="issue_library_id" column_invisible="1"/>
|
||||
<field name="room_booking_id"/>
|
||||
<field name="room_id"/>
|
||||
<field name="meeting_type_id"/>
|
||||
<field name="approval_date"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
<field name="meeting_minutes_ids">
|
||||
<tree editable="bottom">
|
||||
<field name="meeting_minutes_id" column_invisible="1"/>
|
||||
<field name="name"/>
|
||||
<field name="minutes_id"/>
|
||||
<field name="decision_results"/>
|
||||
<field name="overview"/>
|
||||
</tree>
|
||||
|
||||
@@ -42,6 +42,12 @@
|
||||
action="issue_library_approval_action"
|
||||
sequence="28"/>
|
||||
|
||||
<menuitem id="issue_meeting_menu"
|
||||
parent="tianhe_issue_library_menu_root"
|
||||
name="议题相关会议"
|
||||
action="issue_meeting_action"
|
||||
sequence="29"/>
|
||||
|
||||
<menuitem id="issue_meeting_minutes_menu"
|
||||
parent="tianhe_issue_library_menu_root"
|
||||
name="会议纪要"
|
||||
|
||||
@@ -9,8 +9,18 @@
|
||||
'license': 'LGPL-3',
|
||||
'data': [
|
||||
'security/ir.model.access.csv',
|
||||
'data/data_yuthon_resource_mgmt_config.xml',
|
||||
'views/yuthon_property_views.xml',
|
||||
'views/property_type_views.xml',
|
||||
'views/property_patrol_duty.xml',
|
||||
'views/property_patrol_plan.xml',
|
||||
'views/property_route_management.xml',
|
||||
'views/property_patrol_position.xml',
|
||||
'views/property_patrol_standard.xml',
|
||||
'views/yuthon_draw_result_views.xml',
|
||||
'views/yuthon_expert_database_views.xml',
|
||||
'views/yuthon_resource_mgmt_config_views.xml',
|
||||
'views/yuthon_property_evaluation_views.xml',
|
||||
'views/menuitem.xml',
|
||||
],
|
||||
'demo': [],
|
||||
|
||||
@@ -0,0 +1,111 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<record model="yuthon.resource.type" id="yuthon_resource_type_data0">
|
||||
<field name="name">厂房</field>
|
||||
</record>
|
||||
<record model="yuthon.resource.type" id="yuthon_resource_type_data1">
|
||||
<field name="name">商铺</field>
|
||||
</record>
|
||||
<record model="yuthon.resource.type" id="yuthon_resource_type_data2">
|
||||
<field name="name">办公</field>
|
||||
</record>
|
||||
<record model="yuthon.resource.type" id="yuthon_resource_type_data3">
|
||||
<field name="name">仓库</field>
|
||||
</record>
|
||||
<record model="yuthon.resource.type" id="yuthon_resource_type_data4">
|
||||
<field name="name">宿舍</field>
|
||||
</record>
|
||||
<record model="yuthon.resource.type" id="yuthon_resource_type_data5">
|
||||
<field name="name">专业市场</field>
|
||||
</record>
|
||||
<record model="yuthon.resource.type" id="yuthon_resource_type_data6">
|
||||
<field name="name">公租房</field>
|
||||
</record>
|
||||
<record model="yuthon.resource.type" id="yuthon_resource_type_data7">
|
||||
<field name="name">车位</field>
|
||||
</record>
|
||||
<record model="yuthon.resource.type" id="yuthon_resource_type_data8">
|
||||
<field name="name">土地</field>
|
||||
</record>
|
||||
<record model="yuthon.resource.type" id="yuthon_resource_type_data9">
|
||||
<field name="name">广告位</field>
|
||||
</record>
|
||||
<record model="yuthon.resource.type" id="yuthon_resource_type_data10">
|
||||
<field name="name">管子间</field>
|
||||
</record>
|
||||
|
||||
<record model="yuthon.resource.house.type" id="yuthon_resource_house_type_data0">
|
||||
<field name="name">一房一厅</field>
|
||||
</record>
|
||||
<record model="yuthon.resource.house.type" id="yuthon_resource_house_type_data1">
|
||||
<field name="name">一房一厅一卫</field>
|
||||
</record>
|
||||
<record model="yuthon.resource.house.type" id="yuthon_resource_house_type_data2">
|
||||
<field name="name">两房一厅</field>
|
||||
</record>
|
||||
<record model="yuthon.resource.house.type" id="yuthon_resource_house_type_data3">
|
||||
<field name="name">两房一厅一卫</field>
|
||||
</record>
|
||||
<record model="yuthon.resource.house.type" id="yuthon_resource_house_type_data4">
|
||||
<field name="name">两房两厅</field>
|
||||
</record>
|
||||
<record model="yuthon.resource.house.type" id="yuthon_resource_house_type_data5">
|
||||
<field name="name">两房两厅一卫</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record model="yuthon.resource.purpose" id="yuthon_resource_purpose_data0">
|
||||
<field name="name">可租</field>
|
||||
</record>
|
||||
<record model="yuthon.resource.purpose" id="yuthon_resource_purpose_data1">
|
||||
<field name="name">自用</field>
|
||||
</record>
|
||||
<record model="yuthon.resource.purpose" id="yuthon_resource_purpose_data2">
|
||||
<field name="name">不可租</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record model="yuthon.resource.management.type" id="yuthon_resource_management_type_data0">
|
||||
<field name="name">代管</field>
|
||||
</record>
|
||||
<record model="yuthon.resource.management.type" id="yuthon_resource_management_type_data1">
|
||||
<field name="name">自营</field>
|
||||
</record>
|
||||
|
||||
<record model="yuthon.resource.billing.type" id="yuthon_resource_billing_type_data0">
|
||||
<field name="name">收据</field>
|
||||
</record>
|
||||
<record model="yuthon.resource.billing.type" id="yuthon_resource_billing_type_data1">
|
||||
<field name="name">普票</field>
|
||||
</record>
|
||||
<record model="yuthon.resource.billing.type" id="yuthon_resource_billing_type_data2">
|
||||
<field name="name">专票</field>
|
||||
</record>
|
||||
<record model="yuthon.resource.billing.type" id="yuthon_resource_billing_type_data3">
|
||||
<field name="name">全电票</field>
|
||||
</record>
|
||||
|
||||
<record model="property.type" id="yuthon_property_type_data0">
|
||||
<field name="name">待评估</field>
|
||||
</record>
|
||||
<record model="property.type" id="yuthon_property_type_data1">
|
||||
<field name="name">评估中</field>
|
||||
</record>
|
||||
<record model="property.type" id="yuthon_property_type_data2">
|
||||
<field name="name">评估备案</field>
|
||||
</record>
|
||||
<record model="property.type" id="yuthon_property_type_data3">
|
||||
<field name="name">挂网</field>
|
||||
</record>
|
||||
<record model="property.type" id="yuthon_property_type_data4">
|
||||
<field name="name">签约中</field>
|
||||
</record>
|
||||
<record model="property.type" id="yuthon_property_type_data5">
|
||||
<field name="name">已出租</field>
|
||||
</record>
|
||||
<record model="property.type" id="yuthon_property_type_data6">
|
||||
<field name="name">闲置</field>
|
||||
</record>
|
||||
|
||||
|
||||
</odoo>
|
||||
@@ -1,2 +1,11 @@
|
||||
from . import yuthon_property
|
||||
from . import property_type
|
||||
from . import property_patrol_duty
|
||||
from . import property_patrol_plan
|
||||
from . import property_patrol_position
|
||||
from . import property_patrol_standard
|
||||
from . import property_route_management
|
||||
from . import yuthon_resource_mgmt_config
|
||||
from . import yuthon_draw_result
|
||||
from . import yuthon_expert_database
|
||||
from . import yuthon_property_evaluation
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
from odoo import models, fields, api
|
||||
|
||||
|
||||
class PropertyPatrolDuty(models.Model):
|
||||
_name = 'property.patrol.duty'
|
||||
_description = '巡更任务'
|
||||
|
||||
number = fields.Integer(string='序号')
|
||||
task_number = fields.Char(string='任务编号')
|
||||
task_category = fields.Char(string='任务类别')
|
||||
route_name = fields.Char(string='路线名称')
|
||||
people = fields.Char(string='责任人')
|
||||
scheduled_time = fields.Datetime(string='计划巡检时间')
|
||||
task_status = fields.Selection([('all_tasks', '全部任务'), ('not_started', '未开始'),
|
||||
('ing', '进行中'), ('ed', '已完成'),
|
||||
('overtime', '超时关闭'), ('void', '已作废')], string='任务状态')
|
||||
timeout_cause = fields.Char(string='超时原因')
|
||||
create_date = fields.Date(string="开工时间")
|
||||
end_date = fields.Date(string="完工时间")
|
||||
point_random = fields.Char(string='点位随机')
|
||||
inspection_completion = fields.Char(string='巡检完成率')
|
||||
inspection_schedule = fields.Char(string='巡检进度')
|
||||
controls = fields.Char(string='操作')
|
||||
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
from odoo import models, fields, api
|
||||
|
||||
|
||||
class PropertyPatrolPlan(models.Model):
|
||||
_name = 'property.patrol.plan'
|
||||
_description = '巡更计划'
|
||||
|
||||
plan_name = fields.Char(string='计划名称')
|
||||
plan_category = fields.Char(string='计划类型')
|
||||
people = fields.Char(string='巡检责任人')
|
||||
time = fields.Integer(string='巡检周期')
|
||||
start_date = fields.Date(string="生效日")
|
||||
end_date = fields.Date(string="失效日")
|
||||
generation_number = fields.Integer(string='任务生成数')
|
||||
completed_number = fields.Integer(string='任务完成数')
|
||||
founder = fields.Char(string='创建人/时间')
|
||||
controls = fields.Char(string='操作')
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
from odoo import models, fields, api
|
||||
|
||||
|
||||
class PropertyPatrolPosition(models.Model):
|
||||
_name = 'property.patrol.position'
|
||||
_description = '巡更点位'
|
||||
|
||||
number = fields.Integer(string='序号')
|
||||
point_number = fields.Char(string='点位编号')
|
||||
point_name = fields.Char(string='点位名称')
|
||||
external_coding = fields.Char(string='外部编码')
|
||||
position = fields.Char(string='具体位置')
|
||||
adapt_work = fields.Char(string='适应岗位')
|
||||
founder = fields.Char(string='创建人/时间')
|
||||
clock_in = fields.Boolean(string='扫码签到')
|
||||
picture = fields.Boolean(string='强制拍照')
|
||||
outside = fields.Char(string='外部二维码')
|
||||
code_management = fields.Char(string='二维码管理')
|
||||
controls = fields.Char(string='操作')
|
||||
@@ -0,0 +1,18 @@
|
||||
from odoo import models, fields, api
|
||||
|
||||
|
||||
class PropertyPatrolStandard(models.Model):
|
||||
_name = 'property.patrol.standard'
|
||||
_description = '巡更标准'
|
||||
|
||||
number = fields.Integer(string='序号')
|
||||
task_number = fields.Char(string='任务编号')
|
||||
question_type = fields.Char(string='题类型')
|
||||
check_item = fields.Selection([('sweep_floor', '扫地拖地'), ('gate', '看大门'), ('Back door', '看后门')], string='检查顶')
|
||||
title = fields.Selection([('cleaning', '保洁卫生'), ('gate', '看大门'), ('back_door', '看后门')], string='标题')
|
||||
check_details = fields.Selection([('gate', '看大门'), ('back_door', '看后门')], string='检查明细')
|
||||
result_option = fields.Selection([('ood', '好'), ('normal', '一般'), ('bad', '差')], string='检查明细')
|
||||
people = fields.Char(string='创建人')
|
||||
time = fields.Datetime(string='时间')
|
||||
ed_time = fields.Datetime(string='最后修改')
|
||||
controls = fields.Char(string='操作')
|
||||
@@ -0,0 +1,13 @@
|
||||
from odoo import models, fields, api
|
||||
|
||||
|
||||
class PropertyRouteManagement(models.Model):
|
||||
_name = 'property.route.management'
|
||||
_description = '路线管理'
|
||||
|
||||
number = fields.Integer(string='序号')
|
||||
patrol_types = fields.Char(string='安防巡更类型')
|
||||
route_sequence = fields.Char(string='路线顺序')
|
||||
patrol_number = fields.Integer(string='巡更点数量')
|
||||
founder = fields.Char(string='创建人/时间')
|
||||
controls = fields.Char(string='操作')
|
||||
@@ -0,0 +1,18 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from odoo import models, fields, api
|
||||
|
||||
|
||||
class YuthonDrawResult(models.Model):
|
||||
_name = 'yuthon.draw.result'
|
||||
_description = '抽签结果'
|
||||
_rec_name = 'project'
|
||||
|
||||
date = fields.Date(string='日期')
|
||||
project = fields.Char(string='项目')
|
||||
company = fields.Char(string='单位')
|
||||
expert = fields.Char(string='专家')
|
||||
phone = fields.Char(string='联系电话')
|
||||
email = fields.Char(string='邮箱')
|
||||
attachment = fields.Binary(string='抽签结果附件')
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from odoo import models, fields, api
|
||||
|
||||
|
||||
GENDER_SELECTION = [
|
||||
('0', '男'),
|
||||
('1', '女'),
|
||||
('99', '其他'),
|
||||
]
|
||||
|
||||
|
||||
class YuthonExpertDatabase(models.Model):
|
||||
_name = 'yuthon.expert.database'
|
||||
_description = '专家库'
|
||||
|
||||
name = fields.Char(string='姓名')
|
||||
gender = fields.Selection(selection=GENDER_SELECTION, string='性别')
|
||||
company = fields.Char(string='单位名称')
|
||||
id_number = fields.Char(string='身份证号')
|
||||
certificate_number = fields.Char(string='评估师证书号')
|
||||
phone = fields.Char(string='联系电话')
|
||||
email = fields.Char(string='邮箱')
|
||||
effective_date = fields.Date(string='生效日期')
|
||||
expiration_date = fields.Date(string='失效日期')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -7,62 +7,107 @@ class YuthonProperty(models.Model):
|
||||
_inherit = ['mail.thread.main.attachment', 'mail.activity.mixin']
|
||||
_rec_name = 'name'
|
||||
|
||||
name = fields.Char(string="名称")
|
||||
property_precinct = fields.Char(string="楼盘片区")
|
||||
property_floor = fields.Integer(string="楼层")
|
||||
name = fields.Char(string="资产名称")
|
||||
premises = fields.Char(string="楼盘")
|
||||
units = fields.Char(string="单元")
|
||||
house_type_id = fields.Many2one('yuthon.resource.house.type', string="户型")
|
||||
property_room = fields.Char(string="区")
|
||||
property_house = fields.Char(string="户型")
|
||||
property_orientation = fields.Char(string="朝向")
|
||||
property_use_id = fields.Integer(string="物业用途ID")
|
||||
property_asset_type = fields.Selection([('plant', '厂房'), ('goods', '商品'),
|
||||
('office', '写字楼'), ('dormitory', '宿舍'),
|
||||
('rig', '设备等管理用房')], string='管理类型')
|
||||
property_asset_use = fields.Selection([('hire', '出租'), ('personal', '自用')], string='资产用途')
|
||||
property_use_type = fields.Selection([('work', '办公'), ('dorm', '宿舍'), ('cater', '餐饮'),('shops', '商铺'),
|
||||
('plant', '厂房')], string='出租用途')
|
||||
property_use_time = fields.Datetime(string="使用年限")
|
||||
property_rent_type = fields.Selection([('could', '可租'), ('no', '不可租'),
|
||||
('done', '已租'), ('none', '空置'),('assessment','评估'),
|
||||
('none_assessment', '待评估'),('filing', '备案'),('hang', '挂网'),
|
||||
('agency', '签约中')], string="出租状态")
|
||||
state_id = fields.Many2one('property.type', string='状态')
|
||||
building_area = fields.Float(string="建筑面积")
|
||||
actual_area = fields.Float(string="实际面积")
|
||||
management_area = fields.Float(string="管理面积")
|
||||
effective_date = fields.Date(string="生效日期")
|
||||
property_source = fields.Selection([('cut', '划入'), ('self', '自建'),
|
||||
('replace', '置换'), ('buy', '购入'),
|
||||
('entrust', '委托'), ('Rent', '租入')], string='来源')
|
||||
('entrust', '委托'), ('Rent', '租入')], string='资产来源')
|
||||
remark = fields.Char(string="备注")
|
||||
vr_link = fields.Char(string="VR链接")
|
||||
other_materials = fields.Binary(string="其他材料", readonly=False)
|
||||
|
||||
abbreviation = fields.Char(string="简称")
|
||||
property_floor = fields.Integer(string="楼层")
|
||||
property_orientation = fields.Selection([('north', '东'), ('south', '南'), ('east', '西'), ('west', '北')],
|
||||
string="朝向")
|
||||
street = fields.Char(string="街道")
|
||||
property_area = fields.Float(string="产权面积")
|
||||
pooled_area = fields.Float(string="公摊面积")
|
||||
rentable_area = fields.Float(string="可租面积")
|
||||
end_date = fields.Date(string="结束日期")
|
||||
state_id = fields.Many2one('property.type', string='状态')
|
||||
is_meter = fields.Boolean(string="是否有水表")
|
||||
is_electricity_meter = fields.Boolean(string="是否有电表")
|
||||
|
||||
company_page = fields.Selection([('tz', '天河投资'), ('wg', '天河物管'), ('lc', '天河粮储')], string="所属公司")
|
||||
admin_id = fields.Many2one('res.users', string="管理员")
|
||||
purpose_id = fields.Many2one('yuthon.resource.purpose', string="资产用途")
|
||||
mgmt_type_id = fields.Many2one('yuthon.resource.management.type', string="管理类型")
|
||||
is_confirm_authorization = fields.Boolean(string="是否确权")
|
||||
owner_id = fields.Many2one('res.users', string="权属人")
|
||||
property_card = fields.Html(string="产权证")
|
||||
life_timer = fields.Datetime(string="使用时间")
|
||||
property_use_time = fields.Selection([('a', '70年'), ('b', '40年')], string="使用年限")
|
||||
|
||||
property_precinct = fields.Char(string="片区")
|
||||
asset_type_id = fields.Many2one('yuthon.resource.type', string="资产类型")
|
||||
is_hvac = fields.Boolean(string="是否使用中央空调")
|
||||
is_handle_land = fields.Boolean(string="是否办理土地有偿使用手续")
|
||||
|
||||
ame = fields.Char(string='标题')
|
||||
decoration_type = fields.Selection([('blank', '毛坯'), ('hardcover', '精装'), ('brands', '简装'), ('rsz', '豪装')],
|
||||
string="装修类型")
|
||||
water_meter_ids = fields.One2many('yuthon.property.water', 'yuthon_property_id', string='水表列表')
|
||||
energy_meter_ids = fields.One2many('yuthon.property.energy', 'yuthon_property_id', string='电表列表')
|
||||
|
||||
@api.onchange('building_area')
|
||||
def _onchange_building_area(self):
|
||||
for rec in self:
|
||||
rec.management_area = rec.building_area
|
||||
rec.rentable_area = rec.building_area
|
||||
|
||||
property_use_id = fields.Integer(string="物业用途ID")
|
||||
image_1920 = fields.Image(string="图片")
|
||||
description = fields.Html(string="描述")
|
||||
ame = fields.Char(string='标题')
|
||||
code = fields.Char(string="编号",
|
||||
default=lambda self: self.env['ir.sequence'].next_by_code('property_message_code'))
|
||||
rental_unit_price = fields.Float(string="评估单价")
|
||||
address = fields.Char(string="物业地址")
|
||||
is_confirm_authorization = fields.Boolean(string="是否确权")
|
||||
is_handle_land = fields.Boolean(string="是否办理土地有偿使用手续")
|
||||
owner = fields.Char(string="权属人")
|
||||
title_number = fields.Char(string="产权编号")
|
||||
property_area = fields.Float(string="产权面积")
|
||||
suite_area = fields.Float(string="套内面积")
|
||||
pooled_area = fields.Float(string="公摊面积")
|
||||
start_time = fields.Date(string="开始时间")
|
||||
end_time = fields.Date(string="结束时间")
|
||||
management_area = fields.Float(string="管理面积")
|
||||
rentable_area = fields.Float(string="可租面积")
|
||||
is_meter = fields.Boolean(string="是否支持多个水表")
|
||||
|
||||
is_electricity_meter = fields.Boolean(string="是否支持多个电表")
|
||||
is_hvac = fields.Boolean(string="是否中央空调")
|
||||
manage_standard = fields.Char(string="物业管理费标准")
|
||||
remarks = fields.Char(string="备注")
|
||||
company_page = fields.Selection([('tz', '天河投资'), ('wg', '天河物管'), ('lc', '天河粮储')], string="所属公司")
|
||||
property = fields.Selection([('escrow','代管'), ('self','私有')], string="属性")
|
||||
street = fields.Char(string="街道")
|
||||
admin = fields.Many2one('res.users', string="管理员")
|
||||
title_address = fields.Char(string="产权地址")
|
||||
rental_address = fields.Char(string="出租地址")
|
||||
|
||||
def put_change_title(self):
|
||||
pass
|
||||
|
||||
|
||||
def put_change_manage(self):
|
||||
pass
|
||||
pass
|
||||
|
||||
|
||||
class YuthonPropertyWater(models.Model):
|
||||
_name = 'yuthon.property.water'
|
||||
_description = '水表'
|
||||
_rec_name = 'code'
|
||||
|
||||
code = fields.Char(string='编码')
|
||||
rate = fields.Integer(string="倍率")
|
||||
standard = fields.Integer(string="标准")
|
||||
installation_date = fields.Datetime(string="安装日期")
|
||||
demolition_date = fields.Datetime(string="拆除日期")
|
||||
location = fields.Datetime(string="位置")
|
||||
yuthon_property_id = fields.Many2one('yuthon.property', string="物业管理")
|
||||
|
||||
|
||||
class YuthonPropertyEnergy(models.Model):
|
||||
_name = 'yuthon.property.energy'
|
||||
_description = '电表'
|
||||
_rec_name = 'code'
|
||||
|
||||
code = fields.Char(string='编码')
|
||||
rate = fields.Integer(string="倍率")
|
||||
standard = fields.Integer(string="标准")
|
||||
installation_date = fields.Datetime(string="安装日期")
|
||||
demolition_date = fields.Datetime(string="拆除日期")
|
||||
location = fields.Datetime(string="位置")
|
||||
yuthon_property_id = fields.Many2one('yuthon.property', string="物业管理")
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from odoo import models, fields, api
|
||||
|
||||
|
||||
class YuthonPropertyEvaluation(models.Model):
|
||||
_name = 'yuthon.property.evaluation'
|
||||
_inherit = ['mail.thread', 'mail.activity.mixin']
|
||||
_description = '物业评估'
|
||||
|
||||
owner = fields.Char(string='权属人')
|
||||
property_address = fields.Char(string='物业地址')
|
||||
property_area = fields.Float(string='产权面积')
|
||||
rentable_area = fields.Float(string='可租面积')
|
||||
unit_price = fields.Float(string='单价')
|
||||
current_status = fields.Date(string='现状(合同到期日)')
|
||||
registered_use = fields.Char(string='证载用途')
|
||||
rental_use = fields.Char(string='出租用途')
|
||||
rental_conditions = fields.Text(string='出租条件')
|
||||
district_manager = fields.Char(string='片区负责人')
|
||||
company = fields.Char(string='所属公司')
|
||||
remarks = fields.Text(string='备注')
|
||||
|
||||
sequence = fields.Integer(string='序号', default=10)
|
||||
|
||||
evaluation_asset = fields.Char(string='评估资产')
|
||||
evaluation_area = fields.Float(string='评估面积(m²)')
|
||||
evaluation_category = fields.Char(string='评估类别')
|
||||
set_purpose = fields.Char(string='设定用途')
|
||||
last_hand_rent_price = fields.Float(string='上一手历史租金单价(元/m²•月)')
|
||||
gov_rent_price = fields.Float(string='政府租金参考价')
|
||||
evaluation_rent_price = fields.Float(string='评估散租单价(元/m²•月)')
|
||||
evaluation_rent_total = fields.Float(string='评估总价(元•月,散租)')
|
||||
evaluation_whole_rent_price = fields.Float(string='评估整租单价(元/m² •月)')
|
||||
evaluation_whole_rent_total = fields.Float(string='评估总价(元•月,整租)')
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
from pkg_resources import require
|
||||
|
||||
from odoo import models, fields, api
|
||||
|
||||
|
||||
class YuthonResourceMgmtConfig(models.Model):
|
||||
_name = 'yuthon.resource.mgmt.config'
|
||||
_description = '资源管理配置'
|
||||
_inherit = ['mail.thread.main.attachment', 'mail.activity.mixin']
|
||||
|
||||
asset_type_id = fields.Many2one('yuthon.resource.type', string="资产类型", required=True)
|
||||
house_type_id = fields.Many2one('yuthon.resource.house.type', string="户型")
|
||||
purpose_id = fields.Many2one('yuthon.resource.purpose', string="用途")
|
||||
mgmt_type_id = fields.Many2one('yuthon.resource.management.type', string="管理类型")
|
||||
billing_type_id = fields.Many2one('yuthon.resource.billing.type', string="开票类型")
|
||||
|
||||
|
||||
class YuthonResourceType(models.Model):
|
||||
_name = 'yuthon.resource.type'
|
||||
_description = '资产类型'
|
||||
|
||||
name = fields.Char(string="资产类型")
|
||||
|
||||
|
||||
class YuthonResourceHouseType(models.Model):
|
||||
_name = 'yuthon.resource.house.type'
|
||||
_description = '户型'
|
||||
|
||||
name = fields.Char(string="户型")
|
||||
|
||||
|
||||
class YuthonResourcePurpose(models.Model):
|
||||
_name = 'yuthon.resource.purpose'
|
||||
_description = '用途'
|
||||
|
||||
name = fields.Char(string="用途")
|
||||
|
||||
|
||||
class YuthonResourceManagementType(models.Model):
|
||||
_name = 'yuthon.resource.management.type'
|
||||
_description = '管理类型'
|
||||
|
||||
name = fields.Char(string="管理类型")
|
||||
|
||||
|
||||
class YuthonResourceBillingType(models.Model):
|
||||
_name = 'yuthon.resource.billing.type'
|
||||
_description = '开票类型'
|
||||
|
||||
name = fields.Char(string="开票类型")
|
||||
@@ -1,4 +1,21 @@
|
||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_yuthon_property,yuthon_property,model_yuthon_property,base.group_user,1,1,1,1
|
||||
access_property_type,property_type,model_property_type,base.group_user,1,1,1,1
|
||||
access_property_patrol_duty,property_patrol_duty,model_property_patrol_duty,base.group_user,1,1,1,1
|
||||
access_property_patrol_plan,property_patrol_plan,model_property_patrol_plan,base.group_user,1,1,1,1
|
||||
access_property_route_management,property_route_management,model_property_route_management,base.group_user,1,1,1,1
|
||||
access_property_patrol_position,property_patrol_position,model_property_patrol_position,base.group_user,1,1,1,1
|
||||
access_property_patrol_standard,property_patrol_standard,model_property_patrol_standard,base.group_user,1,1,1,1
|
||||
access_yuthon_draw_result,yuthon.draw.result,model_yuthon_draw_result,base.group_user,1,1,1,1
|
||||
access_yuthon_expert_database,yuthon.expert.database,model_yuthon_expert_database,base.group_user,1,1,1,1
|
||||
access_yuthon_property_water,yuthon.property.water,model_yuthon_property_water,base.group_user,1,1,1,1
|
||||
access_yuthon_property_energy,yuthon.property.energy,model_yuthon_property_energy,base.group_user,1,1,1,1
|
||||
access_yuthon_resource_mgmt_config,yuthon.resource.mgmt.config,model_yuthon_resource_mgmt_config,base.group_user,1,1,1,1
|
||||
access_yuthon_resource_type,yuthon.resource.type,model_yuthon_resource_type,base.group_user,1,1,1,1
|
||||
access_yuthon_resource_house_type,yuthon.resource.house.type,model_yuthon_resource_house_type,base.group_user,1,1,1,1
|
||||
access_yuthon_resource_purpose,yuthon.resource.purpose,model_yuthon_resource_purpose,base.group_user,1,1,1,1
|
||||
access_yuthon_resource_management_type,yuthon.resource.management.type,model_yuthon_resource_management_type,base.group_user,1,1,1,1
|
||||
access_yuthon_resource_billing_type,yuthon.resource.billing.type,model_yuthon_resource_billing_type,base.group_user,1,1,1,1
|
||||
access_yuthon_property_evaluation,yuthon.property.evaluation,model_yuthon_property_evaluation,base.group_user,1,1,1,1
|
||||
|
||||
|
||||
|
||||
|
@@ -31,21 +31,27 @@
|
||||
sequence="5"
|
||||
name="已评估"
|
||||
parent="yuthon_property_menu"
|
||||
action="yuthon_property_action"/>
|
||||
action="yuthon_property_evaluation_action2"/>
|
||||
<menuitem id="yuthon_property_evaluation_experts_menu"
|
||||
sequence="7"
|
||||
name="评估专家库"
|
||||
name="评估专家库(二期)"
|
||||
parent="yuthon_property_menu"/>
|
||||
<menuitem id="yuthon_property_evaluation_list_menu"
|
||||
sequence="1"
|
||||
name="专家列表"
|
||||
parent="yuthon_property_evaluation_experts_menu"
|
||||
action="yuthon_property_action"/>
|
||||
action="yuthon_expert_database_action"/>
|
||||
<menuitem id="yuthon_property_evaluation_lottery_menu"
|
||||
sequence="3"
|
||||
name="专家抽签"
|
||||
parent="yuthon_property_evaluation_experts_menu"
|
||||
action="yuthon_property_action"/>
|
||||
action="base.open_module_tree"/>
|
||||
<menuitem id="yuthon_property_draw_result_menu"
|
||||
sequence="4"
|
||||
name="抽签结果"
|
||||
parent="yuthon_property_evaluation_experts_menu"
|
||||
action="yuthon_draw_result_action"/>
|
||||
|
||||
<menuitem id="yuthon_property_menu_data"
|
||||
sequence="7"
|
||||
name="招租"
|
||||
@@ -168,7 +174,7 @@
|
||||
|
||||
<menuitem id="yuthon_security_inspection_menu"
|
||||
sequence="15"
|
||||
name="安全巡检"
|
||||
name="安全巡检(二期)"
|
||||
parent="yuthon_property_menu_root"
|
||||
action="property_assess_action"/>
|
||||
<menuitem id="yuthon_property_schedule_tasks"
|
||||
@@ -190,41 +196,31 @@
|
||||
name="配置"
|
||||
parent="yuthon_property_schedule_tasks"
|
||||
action="property_assess_action"/>
|
||||
<!-- <menuitem id="yuthon_property_inspection_items"-->
|
||||
<!-- sequence="1"-->
|
||||
<!-- name="巡检项目"-->
|
||||
<!-- parent="yuthon_property_schedule_setting"-->
|
||||
<!-- action="property_assess_action"/>-->
|
||||
<!-- <menuitem id="yuthon_property_inspection_meters"-->
|
||||
<!-- sequence="3"-->
|
||||
<!-- name="巡检水电表"-->
|
||||
<!-- parent="yuthon_property_schedule_setting"-->
|
||||
<!-- action="property_assess_action"/>-->
|
||||
<!-- <menuitem id="yuthon_property_inspection_stairwells"-->
|
||||
<!-- sequence="5"-->
|
||||
<!-- name="巡检楼梯间"-->
|
||||
<!-- parent="yuthon_property_schedule_setting"-->
|
||||
<!-- action="property_assess_action"/>-->
|
||||
<!-- <menuitem id="yuthon_property_inspection_lobby"-->
|
||||
<!-- sequence="7"-->
|
||||
<!-- name="巡检大堂"-->
|
||||
<!-- parent="yuthon_property_schedule_setting"-->
|
||||
<!-- action="property_assess_action"/>-->
|
||||
<!-- <menuitem id="yuthon_property_inspection_device"-->
|
||||
<!-- sequence="9"-->
|
||||
<!-- name="巡检设备"-->
|
||||
<!-- parent="yuthon_property_schedule_setting"-->
|
||||
<!-- action="property_assess_action"/>-->
|
||||
<!-- <menuitem id="yuthon_property_inspection_vacant"-->
|
||||
<!-- sequence="11"-->
|
||||
<!-- name="巡检空置房"-->
|
||||
<!-- parent="yuthon_property_schedule_setting"-->
|
||||
<!-- action="property_assess_action"/>-->
|
||||
<!-- <menuitem id="yuthon_property_inspection_other"-->
|
||||
<!-- sequence="13"-->
|
||||
<!-- name="巡检违章装修"-->
|
||||
<!-- parent="yuthon_property_schedule_setting"-->
|
||||
<!-- action="property_assess_action"/>-->
|
||||
<menuitem id="yuthon_property_patrol_duty"
|
||||
sequence="7"
|
||||
name="巡更任务"
|
||||
parent="yuthon_security_inspection_menu"
|
||||
action="property_patrol_duty"/>
|
||||
<menuitem id="yuthon_property_patrol_plan"
|
||||
sequence="9"
|
||||
name="巡更计划"
|
||||
parent="yuthon_security_inspection_menu"
|
||||
action="property_patrol_plan"/>
|
||||
<menuitem id="yuthon_property_route_management"
|
||||
sequence="11"
|
||||
name="路线管理"
|
||||
parent="yuthon_security_inspection_menu"
|
||||
action="property_route_management"/>
|
||||
<menuitem id="yuthon_property_patrol_position"
|
||||
sequence="13"
|
||||
name="巡更点位"
|
||||
parent="yuthon_security_inspection_menu"
|
||||
action="property_patrol_position"/>
|
||||
<menuitem id="yuthon_property_patrol_standard"
|
||||
sequence="15"
|
||||
name="巡更标准"
|
||||
parent="yuthon_security_inspection_menu"
|
||||
action="property_patrol_standard"/>
|
||||
|
||||
<menuitem id="yuthon_customer_service_menu"
|
||||
sequence="17"
|
||||
@@ -253,194 +249,41 @@
|
||||
|
||||
|
||||
<menuitem
|
||||
id="property_approval_menu"
|
||||
id="resource_management_menu"
|
||||
parent="yuthon_property_menu_root"
|
||||
name="资源管理"
|
||||
sequence="2"/>
|
||||
|
||||
<menuitem
|
||||
id="resource_mgmt_config_menu"
|
||||
parent="resource_management_menu"
|
||||
name="配置"
|
||||
action="yuthon_resource_mgmt_config_action"
|
||||
sequence="-1"/>
|
||||
|
||||
<menuitem id="yuthon_resource_type_menu" parent="resource_mgmt_config_menu" name="资产类型"
|
||||
action="yuthon_resource_type_action" sequence="10"/>
|
||||
<menuitem id="yuthon_resource_house_type_menu" parent="resource_mgmt_config_menu" name="户型"
|
||||
action="yuthon_resource_house_type_action" sequence="20"/>
|
||||
<menuitem id="yuthon_resource_purpose_menu" parent="resource_mgmt_config_menu" name="用途"
|
||||
action="yuthon_resource_purpose_action" sequence="30"/>
|
||||
<menuitem id="yuthon_resource_management_type_menu" parent="resource_mgmt_config_menu" name="管理类型"
|
||||
action="yuthon_resource_management_type_action" sequence="10"/>
|
||||
<menuitem id="yuthon_resource_mgmt_config_menu" parent="resource_mgmt_config_menu" name="开票类型"
|
||||
action="yuthon_resource_mgmt_config_action" sequence="10"/>
|
||||
|
||||
|
||||
<menuitem
|
||||
id="property_approval_management_menu"
|
||||
parent="property_approval_menu"
|
||||
parent="resource_management_menu"
|
||||
name="物业信息"
|
||||
sequence="1"
|
||||
action="yuthon_property_action"/>
|
||||
<!-- <!– 二级标题 –>-->
|
||||
<!-- <menuitem id="yuthon_property_evaluated_menu"-->
|
||||
<!-- sequence="9"-->
|
||||
<!-- name="评估"-->
|
||||
<!-- parent="yuthon_property_menu_root"/>-->
|
||||
<!-- <!– 三级标题 –>-->
|
||||
<!-- <menuitem id="yuthon_property_tobe_menu"-->
|
||||
<!-- sequence="1"-->
|
||||
<!-- name="待评估"-->
|
||||
<!-- parent="yuthon_property_evaluated_menu"-->
|
||||
<!-- action="property_assess_action"/>-->
|
||||
|
||||
<!-- <!– 二级标题 –>-->
|
||||
<!-- <menuitem id="yuthon_property_contract_menu"-->
|
||||
<!-- sequence="12"-->
|
||||
<!-- name="合同"-->
|
||||
<!-- parent="yuthon_property_menu_root"/>-->
|
||||
<!-- <!– 三级标题 –>-->
|
||||
<!-- <menuitem id="yuthon_property_contract_assessment_menu"-->
|
||||
<!-- sequence="1"-->
|
||||
<!-- name="评估合同"-->
|
||||
<!-- parent="yuthon_property_contract_menu"-->
|
||||
<!-- action="property_assess_action"/>-->
|
||||
|
||||
<!-- <menuitem id="yuthon_property_contract_lease_menu"-->
|
||||
<!-- sequence="5"-->
|
||||
<!-- name="租凭合同"-->
|
||||
<!-- parent="yuthon_property_contract_menu"-->
|
||||
<!-- action="property_assess_action"/>-->
|
||||
|
||||
<!-- <menuitem id="yuthon_property_contract_build_menu"-->
|
||||
<!-- sequence="10"-->
|
||||
<!-- name="建设工程合同"-->
|
||||
<!-- parent="yuthon_property_contract_menu"/>-->
|
||||
<!-- <!–四级标题–>-->
|
||||
<!-- <menuitem id="yuthon_property_contract_design_menu"-->
|
||||
<!-- sequence="1"-->
|
||||
<!-- name="设计"-->
|
||||
<!-- parent="yuthon_property_contract_build_menu"-->
|
||||
<!-- action="property_assess_action"/>-->
|
||||
|
||||
<!-- <menuitem id="yuthon_property_contract_cost_menu"-->
|
||||
<!-- sequence="5"-->
|
||||
<!-- name="造价"-->
|
||||
<!-- parent="yuthon_property_contract_build_menu"-->
|
||||
<!-- action="property_assess_action"/>-->
|
||||
|
||||
<!-- <menuitem id="yuthon_property_contract_supervisor_menu"-->
|
||||
<!-- sequence="10"-->
|
||||
<!-- name="监理"-->
|
||||
<!-- parent="yuthon_property_contract_build_menu"-->
|
||||
<!-- action="property_assess_action"/>-->
|
||||
|
||||
<!-- <menuitem id="yuthon_property_contract_construction_menu"-->
|
||||
<!-- sequence="15"-->
|
||||
<!-- name="施工"-->
|
||||
<!-- parent="yuthon_property_contract_build_menu"-->
|
||||
<!-- action="property_assess_action"/>-->
|
||||
|
||||
<!-- <menuitem id="yuthon_property_contract_supplement_menu"-->
|
||||
<!-- sequence="20"-->
|
||||
<!-- name="补充"-->
|
||||
<!-- parent="yuthon_property_contract_build_menu"-->
|
||||
<!-- action="property_assess_action"/>-->
|
||||
<!-- <!–三级标题–>-->
|
||||
<!-- <menuitem id="yuthon_property_contract_upkeep_menu"-->
|
||||
<!-- sequence="1"-->
|
||||
<!-- name="维保合同"-->
|
||||
<!-- parent="yuthon_property_contract_menu"-->
|
||||
<!-- action="property_assess_action"/>-->
|
||||
|
||||
<!-- <menuitem id="yuthon_property_contract_review_menu"-->
|
||||
<!-- sequence="5"-->
|
||||
<!-- name="年审合同"-->
|
||||
<!-- parent="yuthon_property_contract_menu"-->
|
||||
<!-- action="property_assess_action"/>-->
|
||||
|
||||
<!-- <menuitem id="yuthon_property_contract_purchase_menu"-->
|
||||
<!-- sequence="10"-->
|
||||
<!-- name="采购合同"-->
|
||||
<!-- parent="yuthon_property_contract_menu"-->
|
||||
<!-- action="property_assess_action"/>-->
|
||||
<!-- <!– 二级标题 –>-->
|
||||
<!-- <menuitem id="yuthon_property_inspection_menu"-->
|
||||
<!-- sequence="15"-->
|
||||
<!-- name="安全巡检"-->
|
||||
<!-- parent="yuthon_property_menu_root"/>-->
|
||||
<!-- <!– 三级标题 –>-->
|
||||
<!-- <menuitem id="yuthon_property_inspection_plan_menu"-->
|
||||
<!-- sequence="1"-->
|
||||
<!-- name="计划"-->
|
||||
<!-- parent="yuthon_property_inspection_menu"-->
|
||||
<!-- action="property_assess_action"/>-->
|
||||
|
||||
<!-- <menuitem id="yuthon_property_inspection_ledger_menu"-->
|
||||
<!-- sequence="5"-->
|
||||
<!-- name="巡检台账"-->
|
||||
<!-- parent="yuthon_property_inspection_menu"-->
|
||||
<!-- action="property_assess_action"/>-->
|
||||
|
||||
<!-- <menuitem id="yuthon_property_inspection_rec_menu"-->
|
||||
<!-- sequence="15"-->
|
||||
<!-- name="整改"-->
|
||||
<!-- parent="yuthon_property_inspection_menu"-->
|
||||
<!-- action="property_assess_action"/>-->
|
||||
|
||||
<!-- <menuitem id="yuthon_property_inspection_configure_menu"-->
|
||||
<!-- sequence="20"-->
|
||||
<!-- name="配置"-->
|
||||
<!-- parent="yuthon_property_inspection_menu"-->
|
||||
<!-- action="property_assess_action"/>-->
|
||||
<!-- <!– 二级标题 –>-->
|
||||
<!-- <menuitem id="yuthon_property_cost_menu"-->
|
||||
<!-- sequence="17"-->
|
||||
<!-- name="费用"-->
|
||||
<!-- parent="yuthon_property_menu_root"/>-->
|
||||
<!-- <!– 三级标题 –>-->
|
||||
<!-- <menuitem id="yuthon_property_cost_rent_menu"-->
|
||||
<!-- sequence="1"-->
|
||||
<!-- name="租金"-->
|
||||
<!-- parent="yuthon_property_cost_menu"-->
|
||||
<!-- action="property_assess_action"/>-->
|
||||
|
||||
<!-- <menuitem id="yuthon_property_cost_deposit_menu"-->
|
||||
<!-- sequence="5"-->
|
||||
<!-- name="押金"-->
|
||||
<!-- parent="yuthon_property_cost_menu"-->
|
||||
<!-- action="property_assess_action"/>-->
|
||||
|
||||
<!-- <menuitem id="yuthon_property_cost_hyd_menu"-->
|
||||
<!-- sequence="10"-->
|
||||
<!-- name="水电费"-->
|
||||
<!-- parent="yuthon_property_cost_menu"-->
|
||||
<!-- action="property_assess_action"/>-->
|
||||
|
||||
<!-- <menuitem id="yuthon_property_cost_default_menu"-->
|
||||
<!-- sequence="15"-->
|
||||
<!-- name="违约金"-->
|
||||
<!-- parent="yuthon_property_cost_menu"-->
|
||||
<!-- action="property_assess_action"/>-->
|
||||
|
||||
<!-- <menuitem id="yuthon_property_cost_main_menu"-->
|
||||
<!-- sequence="20"-->
|
||||
<!-- name="维修费"-->
|
||||
<!-- parent="yuthon_property_cost_menu"-->
|
||||
<!-- action="property_assess_action"/>-->
|
||||
|
||||
<!-- <menuitem id="yuthon_property_cost_other_menu"-->
|
||||
<!-- sequence="25"-->
|
||||
<!-- name="其他"-->
|
||||
<!-- parent="yuthon_property_cost_menu"-->
|
||||
<!-- action="property_assess_action"/>-->
|
||||
<!-- <!– 二级标题 –>-->
|
||||
<!-- <menuitem id="yuthon_property_form_menu"-->
|
||||
<!-- sequence="19"-->
|
||||
<!-- name="报表"-->
|
||||
<!-- parent="yuthon_property_menu_root"/>-->
|
||||
<!-- <!– 三级标题 –>-->
|
||||
<!-- <menuitem id="yuthon_property_form_report_menu"-->
|
||||
<!-- sequence="1"-->
|
||||
<!-- name="经营报表"-->
|
||||
<!-- parent="yuthon_property_form_menu"-->
|
||||
<!-- action="property_assess_action"/>-->
|
||||
|
||||
<!-- <menuitem id="yuthon_property_form_ledger_menu"-->
|
||||
<!-- sequence="5"-->
|
||||
<!-- name="台账"-->
|
||||
<!-- parent="yuthon_property_form_menu"-->
|
||||
<!-- action="property_assess_action"/>-->
|
||||
|
||||
<!-- <menuitem id="yuthon_property_setting_menu"-->
|
||||
<!-- sequence="99"-->
|
||||
<!-- name="配置"-->
|
||||
<!-- parent="yuthon_property_menu_root"/>-->
|
||||
|
||||
<!-- <menuitem id="yuthon_property_type_setting_menu"-->
|
||||
<!-- sequence="1"-->
|
||||
<!-- name="物业状态配置"-->
|
||||
<!-- parent="yuthon_property_setting_menu"-->
|
||||
<!-- action="property_type_action"/>-->
|
||||
<menuitem
|
||||
id="property_approval_menu"
|
||||
parent="resource_management_menu"
|
||||
name="物业审批"
|
||||
action="yuthon_property_action"
|
||||
sequence="2"/>
|
||||
</odoo>
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<record id="view_property_patrol_duty_tree" model="ir.ui.view">
|
||||
<field name="name">property.patrol.duty.tree</field>
|
||||
<field name="model">property.patrol.duty</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="巡更任务" editable="bottom">
|
||||
<field name="number"/>
|
||||
<field name="task_number"/>
|
||||
<field name="task_category"/>
|
||||
<field name="route_name"/>
|
||||
<field name="people"/>
|
||||
<field name="scheduled_time"/>
|
||||
<field name="task_status"/>
|
||||
<field name="timeout_cause"/>
|
||||
<field name="create_date"/>
|
||||
<field name="end_date"/>
|
||||
<field name="point_random"/>
|
||||
<field name="inspection_completion"/>
|
||||
<field name="inspection_schedule"/>
|
||||
<field name="controls"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="property_patrol_duty_form" model="ir.ui.view">
|
||||
<field name="name">property.patrol.duty.form</field>
|
||||
<field name="model">property.patrol.duty</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="巡更任务">
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="number"/>
|
||||
<field name="task_number"/>
|
||||
<field name="task_category"/>
|
||||
<field name="route_name"/>
|
||||
<field name="people"/>
|
||||
<field name="scheduled_time"/>
|
||||
<field name="task_status"/>
|
||||
<field name="timeout_cause"/>
|
||||
<field name="create_date"/>
|
||||
<field name="end_date"/>
|
||||
<field name="point_random"/>
|
||||
<field name="inspection_completion"/>
|
||||
<field name="inspection_schedule"/>
|
||||
<field name="controls"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="property_patrol_duty" model="ir.actions.act_window">
|
||||
<field name="name">巡更任务</field>
|
||||
<field name="res_model">property.patrol.duty</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -0,0 +1,48 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<record id="view_property_patrol_plan_tree" model="ir.ui.view">
|
||||
<field name="name">property.patrol.plan.tree</field>
|
||||
<field name="model">property.patrol.plan</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="巡更计划" editable="bottom">
|
||||
<field name="plan_name"/>
|
||||
<field name="plan_category"/>
|
||||
<field name="people"/>
|
||||
<field name="time"/>
|
||||
<field name="start_date"/>
|
||||
<field name="end_date"/>
|
||||
<field name="generation_number"/>
|
||||
<field name="completed_number"/>
|
||||
<field name="founder"/>
|
||||
<field name="controls"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="property_patrol_plan_form" model="ir.ui.view">
|
||||
<field name="name">property.patrol.plan.form</field>
|
||||
<field name="model">property.patrol.plan</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="巡更计划">
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="plan_name"/>
|
||||
<field name="plan_category"/>
|
||||
<field name="people"/>
|
||||
<field name="time"/>
|
||||
<field name="start_date"/>
|
||||
<field name="end_date"/>
|
||||
<field name="generation_number"/>
|
||||
<field name="completed_number"/>
|
||||
<field name="founder"/>
|
||||
<field name="controls"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="property_patrol_plan" model="ir.actions.act_window">
|
||||
<field name="name">巡更计划</field>
|
||||
<field name="res_model">property.patrol.plan</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -0,0 +1,52 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<record id="view_property_patrol_position_tree" model="ir.ui.view">
|
||||
<field name="name">property.patrol.position.tree</field>
|
||||
<field name="model">property.patrol.position</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="巡更点位" editable="bottom">
|
||||
<field name="number"/>
|
||||
<field name="point_number"/>
|
||||
<field name="point_name"/>
|
||||
<field name="external_coding"/>
|
||||
<field name="position"/>
|
||||
<field name="adapt_work"/>
|
||||
<field name="founder"/>
|
||||
<field name="clock_in"/>
|
||||
<field name="picture"/>
|
||||
<field name="outside"/>
|
||||
<field name="code_management"/>
|
||||
<field name="controls"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="property_patrol_position_form" model="ir.ui.view">
|
||||
<field name="name">property.patrol.position.form</field>
|
||||
<field name="model">property.patrol.position</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="巡更点位">
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="number"/>
|
||||
<field name="point_number"/>
|
||||
<field name="point_name"/>
|
||||
<field name="external_coding"/>
|
||||
<field name="position"/>
|
||||
<field name="adapt_work"/>
|
||||
<field name="founder"/>
|
||||
<field name="clock_in"/>
|
||||
<field name="picture"/>
|
||||
<field name="outside"/>
|
||||
<field name="code_management"/>
|
||||
<field name="controls"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="property_patrol_position" model="ir.actions.act_window">
|
||||
<field name="name">巡更点位</field>
|
||||
<field name="res_model">property.patrol.position</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -0,0 +1,50 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<record id="view_property_patrol_standard_tree" model="ir.ui.view">
|
||||
<field name="name">property.patrol.standard.tree</field>
|
||||
<field name="model">property.patrol.standard</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="巡更标准" editable="bottom">
|
||||
<field name="number"/>
|
||||
<field name="task_number"/>
|
||||
<field name="question_type"/>
|
||||
<field name="check_item"/>
|
||||
<field name="title"/>
|
||||
<field name="check_details"/>
|
||||
<field name="result_option"/>
|
||||
<field name="people"/>
|
||||
<field name="time"/>
|
||||
<field name="ed_time"/>
|
||||
<field name="controls"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="property_patrol_standard_form" model="ir.ui.view">
|
||||
<field name="name">property.patrol.standard.form</field>
|
||||
<field name="model">property.patrol.standard</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="巡更标准">
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="number"/>
|
||||
<field name="task_number"/>
|
||||
<field name="question_type"/>
|
||||
<field name="check_item"/>
|
||||
<field name="title"/>
|
||||
<field name="check_details"/>
|
||||
<field name="result_option"/>
|
||||
<field name="people"/>
|
||||
<field name="time"/>
|
||||
<field name="ed_time"/>
|
||||
<field name="controls"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="property_patrol_standard" model="ir.actions.act_window">
|
||||
<field name="name">巡更标准</field>
|
||||
<field name="res_model">property.patrol.standard</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<record id="view_property_route_management_tree" model="ir.ui.view">
|
||||
<field name="name">property.route.management.tree</field>
|
||||
<field name="model">property.route.management</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="路线管理" editable="bottom">
|
||||
<field name="number"/>
|
||||
<field name="patrol_types"/>
|
||||
<field name="route_sequence"/>
|
||||
<field name="patrol_number"/>
|
||||
<field name="founder"/>
|
||||
<field name="controls"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="property_route_management_form" model="ir.ui.view">
|
||||
<field name="name">property.route.management.form</field>
|
||||
<field name="model">property.route.management</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="路线管理">
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="number"/>
|
||||
<field name="patrol_types"/>
|
||||
<field name="route_sequence"/>
|
||||
<field name="patrol_number"/>
|
||||
<field name="founder"/>
|
||||
<field name="controls"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="property_route_management" model="ir.actions.act_window">
|
||||
<field name="name">路线管理</field>
|
||||
<field name="res_model">property.route.management</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -0,0 +1,46 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
|
||||
<record id="yuthon_draw_result_view_tree" model="ir.ui.view">
|
||||
<field name="name">yuthon_draw_result_view_tree</field>
|
||||
<field name="model">yuthon.draw.result</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree editable="bottom">
|
||||
<field name="date"/>
|
||||
<field name="project"/>
|
||||
<field name="company"/>
|
||||
<field name="expert"/>
|
||||
<field name="phone"/>
|
||||
<field name="email"/>
|
||||
<field name="attachment" widget="image" options='{"zoom": true, "size": [40, 40]}'/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="yuthon_draw_result_view_search" model="ir.ui.view">
|
||||
<field name="name">yuthon_draw_result_view_search</field>
|
||||
<field name="model">yuthon.draw.result</field>
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
<field name="date"/>
|
||||
<field name="project"/>
|
||||
<field name="company"/>
|
||||
<field name="expert"/>
|
||||
<field name="phone"/>
|
||||
<field name="email"/>
|
||||
<separator/>
|
||||
<group expand="0" >
|
||||
<filter name="date" context="{'group_by':'date'}"/>
|
||||
<filter name="expert" context="{'group_by':'expert'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="yuthon_draw_result_action" model="ir.actions.act_window">
|
||||
<field name="name">抽签结果</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">yuthon.draw.result</field>
|
||||
<field name="view_mode">tree</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -0,0 +1,50 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
|
||||
<record id="yuthon_expert_database_view_tree" model="ir.ui.view">
|
||||
<field name="name">yuthon_expert_database_view_tree</field>
|
||||
<field name="model">yuthon.expert.database</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree editable="bottom">
|
||||
<field name="name" required="1"/>
|
||||
<field name="gender" required="1"/>
|
||||
<field name="company"/>
|
||||
<field name="id_number"/>
|
||||
<field name="certificate_number"/>
|
||||
<field name="phone"/>
|
||||
<field name="email"/>
|
||||
<field name="effective_date" />
|
||||
<field name="expiration_date"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="yuthon_expert_database_view_search" model="ir.ui.view">
|
||||
<field name="name">yuthon_expert_database_view_search</field>
|
||||
<field name="model">yuthon.expert.database</field>
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
<field name="name" />
|
||||
<field name="gender" />
|
||||
<field name="company"/>
|
||||
<field name="id_number"/>
|
||||
<field name="certificate_number"/>
|
||||
<field name="phone"/>
|
||||
<field name="email"/>
|
||||
<field name="effective_date" />
|
||||
<field name="expiration_date"/>
|
||||
<separator/>
|
||||
<group expand="0" >
|
||||
<filter name="gender" context="{'group_by':'gender'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="yuthon_expert_database_action" model="ir.actions.act_window">
|
||||
<field name="name">专家库</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">yuthon.expert.database</field>
|
||||
<field name="view_mode">tree</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -0,0 +1,175 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<!--待评估物业-->
|
||||
<record id="yuthon_property_evaluation_view_tree1" model="ir.ui.view">
|
||||
<field name="name">yuthon_property_evaluation_view_tree</field>
|
||||
<field name="model">yuthon.property.evaluation</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<field name="owner"/>
|
||||
<field name="property_address"/>
|
||||
<field name="property_area"/>
|
||||
<field name="rentable_area"/>
|
||||
<field name="unit_price"/>
|
||||
<field name="current_status"/>
|
||||
<field name="registered_use"/>
|
||||
<field name="rental_use"/>
|
||||
<field name="rental_conditions"/>
|
||||
<field name="district_manager"/>
|
||||
<field name="company"/>
|
||||
<field name="remarks"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="yuthon_property_evaluation_view_form1" model="ir.ui.view">
|
||||
<field name="name">yuthon_property_evaluation_view_form1</field>
|
||||
<field name="model">yuthon.property.evaluation</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<field name="owner"/>
|
||||
<field name="property_address"/>
|
||||
<field name="property_area"/>
|
||||
<field name="rentable_area"/>
|
||||
<field name="unit_price"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="current_status"/>
|
||||
<field name="registered_use"/>
|
||||
<field name="rental_use"/>
|
||||
<field name="district_manager"/>
|
||||
<field name="company"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<field name="rental_conditions"/>
|
||||
<field name="remarks"/>
|
||||
</group>
|
||||
</sheet>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids"/>
|
||||
<field name="activity_ids"/>
|
||||
<field name="message_ids"/>
|
||||
</div>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- 已评估物业-->
|
||||
|
||||
|
||||
<record id="yuthon_property_evaluation_view_tree2" model="ir.ui.view">
|
||||
<field name="name">yuthon_property_evaluation_view_tree</field>
|
||||
<field name="model">yuthon.property.evaluation</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="evaluation_asset"/>
|
||||
<field name="evaluation_area"/>
|
||||
<field name="evaluation_category"/>
|
||||
<field name="owner"/>
|
||||
<field name="registered_use"/>
|
||||
<field name="set_purpose"/>
|
||||
<field name="current_status"/>
|
||||
<field name="rental_conditions"/>
|
||||
<field name="remarks"/>
|
||||
<field name="last_hand_rent_price"/>
|
||||
<field name="gov_rent_price" optional="hide"/>
|
||||
<field name="evaluation_rent_price" optional="hide"/>
|
||||
<field name="evaluation_rent_total" optional="hide"/>
|
||||
<field name="evaluation_whole_rent_price" optional="hide"/>
|
||||
<field name="evaluation_whole_rent_total" optional="hide"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="yuthon_property_evaluation_view_form2" model="ir.ui.view">
|
||||
<field name="name">yuthon_property_evaluation_view_form1</field>
|
||||
<field name="model">yuthon.property.evaluation</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<field name="evaluation_asset"/>
|
||||
<field name="evaluation_area"/>
|
||||
<field name="evaluation_category"/>
|
||||
<field name="owner"/>
|
||||
<field name="rental_conditions"/>
|
||||
<field name="last_hand_rent_price"/>
|
||||
<field name="gov_rent_price"/>
|
||||
<field name="evaluation_rent_price"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="registered_use"/>
|
||||
<field name="set_purpose"/>
|
||||
<field name="current_status"/>
|
||||
<field name="remarks"/>
|
||||
<field name="evaluation_rent_total" />
|
||||
<field name="evaluation_whole_rent_price" />
|
||||
<field name="evaluation_whole_rent_total"/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids"/>
|
||||
<field name="activity_ids"/>
|
||||
<field name="message_ids"/>
|
||||
</div>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="yuthon_property_evaluation_view_search" model="ir.ui.view">
|
||||
<field name="name">yuthon_property_evaluation_view_search</field>
|
||||
<field name="model">yuthon.property.evaluation</field>
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
<field name="property_address"/>
|
||||
<field name="property_area"/>
|
||||
<field name="rentable_area"/>
|
||||
<field name="unit_price"/>
|
||||
<field name="current_status"/>
|
||||
<field name="registered_use"/>
|
||||
<field name="rental_use"/>
|
||||
<field name="rental_conditions"/>
|
||||
<field name="district_manager"/>
|
||||
<field name="company"/>
|
||||
<separator/>
|
||||
<group expand="0">
|
||||
<filter name="owner" context="{'group_by':'owner'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="yuthon_property_evaluation_action1" model="ir.actions.act_window">
|
||||
<field name="name">待评估物业</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">yuthon.property.evaluation</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="domain">[]</field>
|
||||
<field name="context">{}</field>
|
||||
<field name="view_ids" eval="[(5, 0, 0),
|
||||
(0, 0, {'view_mode': 'tree', 'view_id': ref('yuthon_property_evaluation_view_tree1')}),
|
||||
(0, 0, {'view_mode': 'form', 'view_id': ref('yuthon_property_evaluation_view_form1')})]"/>
|
||||
<field name="search_view_id" ref="yuthon_property_evaluation_view_search"/>
|
||||
</record>
|
||||
|
||||
<record id="yuthon_property_evaluation_action2" model="ir.actions.act_window">
|
||||
<field name="name">已评估物业</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">yuthon.property.evaluation</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="domain">[]</field>
|
||||
<field name="context">{}</field>
|
||||
<field name="view_ids" eval="[(5, 0, 0),
|
||||
(0, 0, {'view_mode': 'tree', 'view_id': ref('yuthon_property_evaluation_view_tree2')}),
|
||||
(0, 0, {'view_mode': 'form', 'view_id': ref('yuthon_property_evaluation_view_form2')})]"/>
|
||||
<field name="search_view_id" ref="yuthon_property_evaluation_view_search"/>
|
||||
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -5,101 +5,117 @@
|
||||
<field name="model">yuthon.property</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="物业管理">
|
||||
<header>
|
||||
<button name="put_change_title" string="提交产权变更审批" type="object"/>
|
||||
<button name="put_change_manage" string="提交管理变更审批" type="object"/>
|
||||
</header>
|
||||
<field name="name"/>
|
||||
<field name="property_precinct" optional="show"/>
|
||||
<field name="address" optional="hide"/>
|
||||
<field name="is_confirm_authorization" optional="hide"/>
|
||||
<field name="is_handle_land" optional="hide"/>
|
||||
<field name="owner" optional="show"/>
|
||||
<field name="title_number" optional="show"/>
|
||||
<field name="property_area" optional="show"/>
|
||||
<field name="pooled_area" optional="show"/>
|
||||
<field name="start_time" optional="show"/>
|
||||
<field name="end_time" optional="show"/>
|
||||
<field name="management_area" optional="hide"/>
|
||||
<field name="rentable_area" optional="hide"/>
|
||||
<field name="property_floor" optional="hide"/>
|
||||
<header>
|
||||
<button name="put_change_title" string="提交产权变更审批" type="object"/>
|
||||
<button name="put_change_manage" string="提交管理变更审批" type="object"/>
|
||||
</header>
|
||||
<field name="name" required="1"/>
|
||||
<field name="premises"/>
|
||||
<field name="units"/>
|
||||
<field name="house_type_id" optional="hide"/>
|
||||
<field name="property_room" optional="hide"/>
|
||||
<field name="street" optional="hide"/>
|
||||
<field name="property_house" optional="hide"/>
|
||||
<field name="building_area" optional="hide"/>
|
||||
<field name="actual_area" optional="hide"/>
|
||||
<field name="management_area" optional="hide"/>
|
||||
<field name="effective_date" optional="hide"/>
|
||||
<field name="property_source" optional="hide"/>
|
||||
<field name="property_floor" optional="hide"/>
|
||||
<field name="property_orientation" optional="hide"/>
|
||||
<field name="property_use_id" optional="hide"/>
|
||||
<field name="property_asset_type" optional="hide"/>
|
||||
<field name="property_use_type" optional="hide"/>
|
||||
<field name="property_rent_type" optional="hide"/>
|
||||
<field name="is_meter" optional="show"/>
|
||||
<field name="is_electricity_meter" optional="show"/>
|
||||
<field name="is_hvac" optional="hide"/>
|
||||
<field name="manage_standard" optional="show"/>
|
||||
<field name="remarks" optional="hide"/>
|
||||
<field name="company_page" optional="hide"/>
|
||||
<field name="property" optional="hide"/>
|
||||
<field name="rental_unit_price" optional="show"/>
|
||||
<field name="admin" optional="show"/>
|
||||
<field name="street" optional="hide"/>
|
||||
<field name="property_area"/>
|
||||
<field name="pooled_area"/>
|
||||
<field name="rentable_area"/>
|
||||
<field name="end_date"/>
|
||||
<field name="state_id"/>
|
||||
<field name="is_meter"/>
|
||||
<field name="is_electricity_meter"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="yuthon_property_form" model="ir.ui.view">
|
||||
<field name="name">yuthon.property.form</field>
|
||||
<field name="model">yuthon.property</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="产品管理">
|
||||
<form string="资产信息">
|
||||
<sheet>
|
||||
<field name="image_1920" widget="image" class="oe_avatar" optional="{'preview_image': 'image_128'}"/>
|
||||
<div class="oe_title">
|
||||
<label for="name" string="名称"/>
|
||||
<h1>
|
||||
<field name="name" required="1"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group>
|
||||
<field name="image_1920" widget="image" class="oe_avatar"
|
||||
optional="{'preview_image': 'image_128'}"/>
|
||||
|
||||
<group string="基本信息">
|
||||
<group>
|
||||
<field name="owner"/>
|
||||
<field name="title_number"/>
|
||||
<field name="property_asset_type"/>
|
||||
<field name="property_area"/>
|
||||
<field name="suite_area"/>
|
||||
<field name="pooled_area"/>
|
||||
<field name="start_time"/>
|
||||
<field name="end_time"/>
|
||||
<field name="name" required="1"/>
|
||||
<field name="premises"/>
|
||||
<field name="units"/>
|
||||
<field name="house_type_id"/>
|
||||
<field name="property_room"/>
|
||||
<field name="building_area"/>
|
||||
<field name="actual_area"/>
|
||||
<field name="management_area"/>
|
||||
<field name="effective_date"/>
|
||||
<field name="property_source"/>
|
||||
<field name="remark"/>
|
||||
<field name="vr_link"/>
|
||||
<field name="other_materials"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="abbreviation"/>
|
||||
<field name="property_floor"/>
|
||||
<field name="property_orientation"/>
|
||||
|
||||
<field name="street"/>
|
||||
<field name="property_area"/>
|
||||
<field name="pooled_area"/>
|
||||
<field name="rentable_area"/>
|
||||
<field name="end_date"/>
|
||||
<field name="state_id"/>
|
||||
<field name="is_meter"/>
|
||||
<field name="is_electricity_meter"/>
|
||||
<field name="manage_standard"/>
|
||||
<field name="company_page"/>
|
||||
<field name="admin"/>
|
||||
<field name="rental_unit_price"/>
|
||||
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="更多详情">
|
||||
<group string="属性价值" col="1">
|
||||
<group col="2">
|
||||
<group>
|
||||
<group>
|
||||
<field name="property_precinct"/>
|
||||
<field name="address"/>
|
||||
<field name="is_confirm_authorization"/>
|
||||
<field name="property_use_id"/>
|
||||
<field name="property_use_type"/>
|
||||
<field name="property_rent_type"/>
|
||||
<field name="property"/>
|
||||
<field name="rental_address"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="management_area"/>
|
||||
<field name="rentable_area"/>
|
||||
<field name="property_floor"/>
|
||||
<field name="property_room"/>
|
||||
<field name="property_asset_type"/>
|
||||
<field name="street"/>
|
||||
<field name="title_address"/>
|
||||
<field name="remarks"/>
|
||||
</group>
|
||||
<field name="company_page"/>
|
||||
<field name="admin_id"/>
|
||||
<field name="purpose_id"/>
|
||||
<field name="mgmt_type_id"/>
|
||||
<field name="is_confirm_authorization"/>
|
||||
<field name="owner_id"/>
|
||||
<field name="property_card"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="property_precinct"/>
|
||||
<field name="asset_type_id"/>
|
||||
<field name="is_hvac"/>
|
||||
<field name="is_handle_land"/>
|
||||
</group>
|
||||
</group>
|
||||
<group col="2">
|
||||
<group>
|
||||
<field name="life_timer"/>
|
||||
</group>
|
||||
<group>
|
||||
<div>
|
||||
<field name="property_use_time"/>
|
||||
</div>
|
||||
</group>
|
||||
</group>
|
||||
</group>
|
||||
<group string="招商信息">
|
||||
<group>
|
||||
<field name="ame"/>
|
||||
<field name="decoration_type"/>
|
||||
</group>
|
||||
</group>
|
||||
|
||||
<notebook>
|
||||
<page string="水表列表" invisible="is_meter == False">
|
||||
<field name="water_meter_ids"/>
|
||||
</page>
|
||||
<page string="电表列表" invisible="is_electricity_meter == False">
|
||||
<field name="energy_meter_ids"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
@@ -118,16 +134,12 @@
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
<field name="company_page" string="公司"/>
|
||||
<field name="owner" string="负责人"/>
|
||||
<field name="owner_id" string="负责人"/>
|
||||
<field name="property_precinct" string="片区"/>
|
||||
<filter string="可租" name="could" domain="[('property_rent_type', '=', 'could')]"/>
|
||||
<filter string="不可租" name="could" domain="[('property_rent_type', '=', 'no')]"/>
|
||||
<filter string="已租" name="done" domain="[('property_rent_type', '=', 'done')]"/>
|
||||
<filter string="空置" name="none" domain="[('property_rent_type', '=', 'none')]"/>
|
||||
<separator/>
|
||||
<filter string="可租" name="could" domain="[('state_id', '=', 'could')]"/>
|
||||
<group expand="0">
|
||||
<filter name="group_statu" string="物业状态" context="{'group_by': 'state_id'}"/>
|
||||
<filter name="group_purpose" string="资产用途" context="{'group_by': 'purpose_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
@@ -145,7 +157,7 @@
|
||||
<t t-name="kanban-box">
|
||||
<div class="oe_kanban_card oe_kanban_global_click">
|
||||
<div class="o_kanban_image me-1">
|
||||
<img t-att-src="kanban_image('product.product', 'image_128', record.id.raw_value)"
|
||||
<img t-att-src="kanban_image('yuthon.property', 'image_1920', record.id.raw_value)"
|
||||
alt="Product" class="o_image_64_contain"/>
|
||||
</div>
|
||||
<div class="oe_kanban_details">
|
||||
@@ -154,14 +166,18 @@
|
||||
<strong class="o_kanban_record_title">
|
||||
<field name="name"/>
|
||||
</strong>
|
||||
<div>
|
||||
<span>面积:</span>
|
||||
<div>
|
||||
<span>面积:</span>
|
||||
<field name="property_area"/>
|
||||
</div>
|
||||
<div>
|
||||
<span>评估单价:</span>
|
||||
<field name="rental_unit_price"/>
|
||||
</div>
|
||||
<div>
|
||||
<span>管理员:</span>
|
||||
<field name="admin_id"/>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <field name="priority" widget="priority"/>-->
|
||||
</div>
|
||||
@@ -192,4 +208,36 @@
|
||||
<field name="search_view_id" ref="yuthon_property_search"/>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="view_yuthon_property_water_tree" model="ir.ui.view">
|
||||
<field name="name">yuthon.property.water.tree</field>
|
||||
<field name="model">yuthon.property.water</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree editable="bottom">
|
||||
<field name="code"/>
|
||||
<field name="rate"/>
|
||||
<field name="standard"/>
|
||||
<field name="installation_date"/>
|
||||
<field name="demolition_date"/>
|
||||
<field name="location"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_yuthon_property_energy_tree" model="ir.ui.view">
|
||||
<field name="name">yuthon.property.energy.tree</field>
|
||||
<field name="model">yuthon.property.energy</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree editable="bottom">
|
||||
<field name="code"/>
|
||||
<field name="rate"/>
|
||||
<field name="standard"/>
|
||||
<field name="installation_date"/>
|
||||
<field name="demolition_date"/>
|
||||
<field name="location"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
</odoo>
|
||||
@@ -0,0 +1,98 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<record id="view_yuthon_resource_mgmt_config_tree" model="ir.ui.view">
|
||||
<field name="name">yuthon.resource.mgmt.config.tree</field>
|
||||
<field name="model">yuthon.resource.mgmt.config</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree editable="bottom">
|
||||
<field name="asset_type_id"/>
|
||||
<field name="house_type_id"/>
|
||||
<field name="purpose_id"/>
|
||||
<field name="mgmt_type_id"/>
|
||||
<field name="billing_type_id"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="yuthon_resource_mgmt_config_action" model="ir.actions.act_window">
|
||||
<field name="name">资源管理配置</field>
|
||||
<field name="res_model">yuthon.resource.mgmt.config</field>
|
||||
<field name="view_mode">tree</field>
|
||||
</record>
|
||||
|
||||
<record id="view_yuthon_resource_type_tree" model="ir.ui.view">
|
||||
<field name="name">yuthon.resource.type.tree</field>
|
||||
<field name="model">yuthon.resource.type</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree editable="bottom">
|
||||
<field name="name"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="yuthon_resource_type_action" model="ir.actions.act_window">
|
||||
<field name="name">资产类型</field>
|
||||
<field name="res_model">yuthon.resource.type</field>
|
||||
<field name="view_mode">tree</field>
|
||||
</record>
|
||||
|
||||
<record id="view_yuthon_resource_house_type_tree" model="ir.ui.view">
|
||||
<field name="name">yuthon.resource.house.type.tree</field>
|
||||
<field name="model">yuthon.resource.house.type</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree editable="bottom">
|
||||
<field name="name"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="yuthon_resource_house_type_action" model="ir.actions.act_window">
|
||||
<field name="name">户型</field>
|
||||
<field name="res_model">yuthon.resource.house.type</field>
|
||||
<field name="view_mode">tree</field>
|
||||
</record>
|
||||
|
||||
<record id="view_yuthon_resource_purpose_tree" model="ir.ui.view">
|
||||
<field name="name">yuthon.resource.purpose.tree</field>
|
||||
<field name="model">yuthon.resource.purpose</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree editable="bottom">
|
||||
<field name="name"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="yuthon_resource_purpose_action" model="ir.actions.act_window">
|
||||
<field name="name">用途</field>
|
||||
<field name="res_model">yuthon.resource.purpose</field>
|
||||
<field name="view_mode">tree</field>
|
||||
</record>
|
||||
|
||||
<record id="view_yuthon_resource_management_type_tree" model="ir.ui.view">
|
||||
<field name="name">yuthon.resource.management.type.tree</field>
|
||||
<field name="model">yuthon.resource.management.type</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree editable="bottom">
|
||||
<field name="name"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="yuthon_resource_management_type_action" model="ir.actions.act_window">
|
||||
<field name="name">管理类型</field>
|
||||
<field name="res_model">yuthon.resource.management.type</field>
|
||||
<field name="view_mode">tree</field>
|
||||
</record>
|
||||
|
||||
<record id="view_yuthon_resource_billing_type_tree" model="ir.ui.view">
|
||||
<field name="name">yuthon.resource.billing.type.tree</field>
|
||||
<field name="model">yuthon.resource.billing.type</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree editable="bottom">
|
||||
<field name="name"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="yuthon_resource_mgmt_config_action" model="ir.actions.act_window">
|
||||
<field name="name">开票类型</field>
|
||||
<field name="res_model">yuthon.resource.billing.type</field>
|
||||
<field name="view_mode">tree</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
@@ -453,11 +453,11 @@
|
||||
parent="holiday_set_menu_board"
|
||||
action="hr_holidays.open_view_accrual_plans"
|
||||
sequence="3"/>
|
||||
<menuitem id="holiday_management_allocation_board"
|
||||
<menuitem id="holiday_management_allocation_board"
|
||||
name="假期分配"
|
||||
parent="holiday_set_menu_board"
|
||||
action="hr_holidays.hr_leave_allocation_action_approve_department"
|
||||
sequence="3"/>
|
||||
sequence="5"/>
|
||||
<menuitem id="holiday_set_vacation_board"
|
||||
name="公共假期"
|
||||
parent="holiday_set_menu_board"
|
||||
|
||||
Reference in New Issue
Block a user