@@ -70,7 +70,6 @@ class Home(http.Controller):
|
||||
def web_room_partner_create(self, room_id=None, **kw):
|
||||
ensure_db()
|
||||
values = {k: v for k, v in request.params.items()}
|
||||
_logger.info("Initial values: %s", values)
|
||||
if not (room_id or values['room_id']):
|
||||
values['error'] = "缺少会议号"
|
||||
response = request.render('room.partner_create_form_room', values)
|
||||
|
||||
@@ -36,6 +36,7 @@ class RoomBooking(models.Model):
|
||||
required=True)
|
||||
meeting_type_id = fields.Many2one('room.meeting.type', string="会议类型")
|
||||
room_users_ids = fields.Many2many('res.users', string="出席人员")
|
||||
room_users_names = fields.Char(string="出席人员char", compute="_compute_room_users", store=True)
|
||||
other_company_id = fields.Many2one('res.partner', string="外部公司")
|
||||
host = fields.Many2one('res.users', string="主持人")
|
||||
stationed_group = fields.Boolean(string="驻组参会")
|
||||
@@ -55,6 +56,12 @@ class RoomBooking(models.Model):
|
||||
# 关联流程
|
||||
relevancy_type = fields.Selection([('none', '无')], string="关联流程类型")
|
||||
|
||||
@api.depends('room_users_ids')
|
||||
def _compute_room_users(self):
|
||||
for i in self:
|
||||
employee_list = [rec.name for rec in i.room_users_ids]
|
||||
i.room_users_names = ','.join(employee_list)
|
||||
|
||||
@api.onchange('meeting_type_id')
|
||||
def _onchange_meeting_type_id(self):
|
||||
if self.meeting_type_id:
|
||||
|
||||
@@ -32,6 +32,8 @@
|
||||
string="Bookings"
|
||||
plan="0">
|
||||
<templates>
|
||||
<field name="name"/>
|
||||
<field name="room_users_names"/>
|
||||
<div t-name="gantt-popover">
|
||||
<div class="o_gantt_popover">
|
||||
<ul class="ps-1 mb-0 list-unstyled">
|
||||
@@ -44,18 +46,10 @@
|
||||
<i class="fa fa-long-arrow-right" title="Until"/>
|
||||
<t t-out="stop_datetime.toFormat(' f')"/>
|
||||
</li>
|
||||
<li>
|
||||
<li>
|
||||
<strong>参会人员:</strong>
|
||||
<t t-out="room_users_names"/>
|
||||
</li>
|
||||
<li class="o_gantt_popover_content_item mt-2">
|
||||
<strong>出席人员:</strong>
|
||||
<t t-if="room_users_ids">
|
||||
<t t-foreach="room_users_ids" t-as="user">
|
||||
<t t-if="!loop.first">, </t>
|
||||
<t t-out="user[1]"/>
|
||||
</t>
|
||||
</t>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@@ -178,15 +172,9 @@
|
||||
<group/>
|
||||
<group/>
|
||||
</group>
|
||||
<group col="4">
|
||||
<group>
|
||||
<field name="room_users_ids" widget="many2many_tags"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="other_company_user_ids" widget="many2many_tags" readonly="1"/>
|
||||
</group>
|
||||
<group/>
|
||||
<group/>
|
||||
<group>
|
||||
<field name="room_users_ids" widget="many2many_tags"/>
|
||||
<field name="other_company_user_ids" widget="many2many_tags" readonly="0"/>
|
||||
</group>
|
||||
<group col="5">
|
||||
<group>
|
||||
|
||||
@@ -153,11 +153,6 @@
|
||||
<div t-attf-class="clearfix oe_login_buttons text-center gap-1 d-grid mb-1">
|
||||
<button type="submit" class="btn btn-primary">提交</button>
|
||||
</div>
|
||||
|
||||
<t t-foreach="new_partner" t-as="p">
|
||||
<label for="p_name" class="form-label">人员名称</label>
|
||||
<input type="text" placeholder="名字" name="p_name" readonly="readonly" t-att-value="p.name" id="p_name" t-attf-class="form-control" />
|
||||
</t>
|
||||
</form>
|
||||
</div>
|
||||
</t>
|
||||
|
||||
@@ -15,7 +15,7 @@ class YuthonUserRole(models.Model):
|
||||
end_time = fields.Date(string="终止日期")
|
||||
parent_id = fields.Many2one('soong.user.role', string='上级角色')
|
||||
user_role_group_ids = fields.Many2many('soong.user.role.group', string='角色分组', index=True)
|
||||
personnel_ids = fields.Many2many('hr.employee', string='在岗人员')
|
||||
personnel_ids = fields.Many2many('hr.employee', string='在岗人员', store=True, index=True)
|
||||
number_people = fields.Integer(string="在岗人数", compute='_compute_employee_ids')
|
||||
personnel = fields.Text(string="在岗人员")
|
||||
employee_ids = fields.One2many('hr.employee', 'user_role_id')
|
||||
@@ -32,14 +32,6 @@ class YuthonUserRole(models.Model):
|
||||
display_parts.append(f"({record.department_id.name})")
|
||||
record.display_name = " ".join(display_parts)
|
||||
|
||||
def write(self, vals):
|
||||
res = super(YuthonUserRole, self).write(vals)
|
||||
if 'personnel_ids' in vals:
|
||||
for record in self:
|
||||
for personnel_id in record.personnel_ids:
|
||||
personnel_id.write({'user_role_id': record.id})
|
||||
return res
|
||||
|
||||
@api.depends('name')
|
||||
def _compute_pinyin(self):
|
||||
for employee in self:
|
||||
@@ -61,6 +53,15 @@ class YuthonUserRole(models.Model):
|
||||
if rec.personnel_ids:
|
||||
rec.number_people = len(rec.personnel_ids)
|
||||
|
||||
@api.onchange('personnel_ids')
|
||||
def _onchange_personnel_ids(self):
|
||||
for record in self:
|
||||
for personnel_id in record.personnel_ids:
|
||||
employee = self.env['hr.employee'].search([('id', '=', personnel_id.id.origin)], limit=1)
|
||||
if employee:
|
||||
if self.id.origin != employee.user_role_id.id:
|
||||
new_user_role_ids = employee.user_role_ids.ids + [self.id.origin]
|
||||
employee.write({'user_role_ids': [(6, 0, new_user_role_ids)],})
|
||||
|
||||
class YuthonUserRoleGroup(models.Model):
|
||||
_name = 'soong.user.role.group'
|
||||
|
||||
@@ -26,6 +26,7 @@ class SoongWorkflowLog(models.Model):
|
||||
approval_state = fields.Selection([('0', '待办'), ('1', '办理中'), ('2', '已办结'), ('3', '结束')], string='审批状态', default='0')
|
||||
comment = fields.Char(string="意见")
|
||||
date_create = fields.Datetime(string="时间", default=lambda self: fields.Datetime.now())
|
||||
active = fields.Boolean(string="归档", default=True)
|
||||
|
||||
@api.depends("workflow_id", "node_id", "node_btn_id")
|
||||
def _compute_name(self):
|
||||
|
||||
@@ -289,6 +289,7 @@ class SoongWorkflowMixin(models.AbstractModel):
|
||||
"target": "new",
|
||||
"context": {
|
||||
"default_res_id": self.id,
|
||||
"default_code":self.code,
|
||||
"default_res_model": self._name,
|
||||
"default_log_ids": logs.ids,
|
||||
"default_node_btn_id": btn_rec.id,
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
<field name="done_by"/>
|
||||
<field name="lase_click_date"/>
|
||||
<field name="comment"/>
|
||||
<field name="active" column_invisible="1"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -115,7 +115,7 @@
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">soong.workflow.record</field>
|
||||
<field name="view_mode">tree,form,search</field>
|
||||
<!-- <field name="domain">[("is_department_record", "=", True)]</field>-->
|
||||
<field name="domain">[('reclaim_state', '=', False)]</field>
|
||||
<field name="search_view_id" ref="soong_workflow_record_search"/>
|
||||
</record>
|
||||
<record id="soong_workflow_record_action_reclaim" model="ir.actions.act_window">
|
||||
@@ -123,7 +123,7 @@
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">soong.workflow.record</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="domain">[('users_ids', 'in', [uid]), ('reclaim_state', '=', True)]</field>
|
||||
<field name="domain">[('reclaim_state', '=', True)]</field>
|
||||
<field name="search_view_id" ref="soong_workflow_record_search"/>
|
||||
<field name="view_ids" eval="[(5, 0, 0),
|
||||
(0, 0, {'view_mode': 'tree', 'view_id': ref('soong_workflow.soong_workflow_record_tree_restore')})]"/>
|
||||
|
||||
@@ -15,11 +15,12 @@ class SoongWorkflowCommentWizard(models.TransientModel):
|
||||
name = fields.Char(string="name")
|
||||
res_model = fields.Char()
|
||||
res_id = fields.Integer()
|
||||
code = fields.Char()
|
||||
log_ids = fields.Many2many(comodel_name="soong.workflow.log")
|
||||
node_btn_id = fields.Many2one(comodel_name="soong.workflow.node.button")
|
||||
node_btn_name = fields.Char(string="动作名称", related='node_btn_id.name')
|
||||
user_id = fields.Many2one('res.users',string='用户',default=lambda self: self.env.user)
|
||||
user_role_id = fields.Many2one('soong.user.role', string="角色", compute='_compute_user_role_id', store=True)
|
||||
user_role_ids = fields.Many2many('soong.user.role', string="角色", compute='_compute_user_role_ids', store=True)
|
||||
node_link_len = fields.Char(string="转交2")
|
||||
is_supervising = fields.Boolean(string="是否督办")
|
||||
comment_note_id = fields.Many2one('soong.note', string="常用意见", default='妥否,呈领导审批')
|
||||
@@ -47,13 +48,13 @@ class SoongWorkflowCommentWizard(models.TransientModel):
|
||||
if self.comment_note_id:
|
||||
self.comment_note = self.comment_note_id.name
|
||||
|
||||
@api.depends('user_id.employee_id.user_role_id')
|
||||
def _compute_user_role_id(self):
|
||||
@api.depends('user_id.employee_ids.user_role_ids')
|
||||
def _compute_user_role_ids(self):
|
||||
for record in self:
|
||||
if record.user_id and record.user_id.employee_ids:
|
||||
record.user_role_id = record.user_id.employee_ids.user_role_id
|
||||
if record.user_id:
|
||||
record.user_role_ids = record.user_id.employee_ids.user_role_ids
|
||||
else:
|
||||
record.user_role_id = False
|
||||
record.user_role_ids = False
|
||||
|
||||
@api.onchange('record_id')
|
||||
def _onchange_record_id(self):
|
||||
@@ -102,7 +103,7 @@ class SoongWorkflowCommentWizard(models.TransientModel):
|
||||
'|', ('department_id', '=', record_id.department_id.id), ('department_ids', 'in', record_id.department_id.id), ('company_id', '=', self.env.user.company_id.id)]) # 不自动匹配
|
||||
elif link_users_group_ids:
|
||||
# 不自动匹配
|
||||
employee_user_role_ids = self.env['hr.employee'].search(['|', ('user_role_id', 'in', link_users_group_ids.user_role_ids.ids), ('user_role_ids', 'in', link_users_group_ids.user_role_ids.ids),])
|
||||
employee_user_role_ids = self.env['hr.employee'].search(['|', ('user_role_id', 'in', link_users_group_ids.user_role_ids.ids), ('user_role_ids', 'in', link_users_group_ids.user_role_ids.ids)])
|
||||
# 自动匹配
|
||||
employee_user_role_id = self.env['hr.employee'].search([('id', 'in', employee_user_role_ids.ids),
|
||||
'|', ('department_id', '=', record_id.department_id.id),
|
||||
@@ -135,6 +136,7 @@ class SoongWorkflowCommentWizard(models.TransientModel):
|
||||
first_node = self.sudo().env["soong.workflow.log"].search([("model", "=", self.res_model), ("res_id", "=", self.res_id)])
|
||||
if not now_record_obj:
|
||||
self.sudo().env["soong.workflow.log"].create({
|
||||
"code": self.code,
|
||||
"model": self.res_model,
|
||||
"res_id": self.res_id,
|
||||
"node_id": self.node_btn_id.node_id.id if first_node else record_id.workflow_id.node_ids[0].id,
|
||||
@@ -153,6 +155,7 @@ class SoongWorkflowCommentWizard(models.TransientModel):
|
||||
next_node_id = record_id.workflow_id.node_ids.search([('name', 'ilike', self.trans_link_id.name),
|
||||
('workflow_id', '=', record_id.workflow_id.id)])
|
||||
self.sudo().env["soong.workflow.log"].create({
|
||||
"code": self.code,
|
||||
"model": self.res_model,
|
||||
"res_id": self.res_id,
|
||||
"node_id": next_node_id.id,
|
||||
@@ -180,6 +183,7 @@ class SoongWorkflowCommentWizard(models.TransientModel):
|
||||
"approval_state_copy": "0",
|
||||
})
|
||||
self.sudo().env["soong.workflow.log2"].create({
|
||||
"code": self.code,
|
||||
"model": self.res_model,
|
||||
"res_id": self.res_id,
|
||||
"node_id": self.node_btn_id.node_id.id,
|
||||
@@ -210,6 +214,7 @@ class SoongWorkflowCommentWizard(models.TransientModel):
|
||||
"node_btn_name": "1"})
|
||||
# if not self.sudo().env["soong.workflow.log"].search([('node_id', '=', next_node_id.id)]):
|
||||
self.sudo().env["soong.workflow.log"].create({
|
||||
"code": self.code,
|
||||
"model": self.res_model,
|
||||
"res_id": self.res_id,
|
||||
"node_id": next_node_id.id,
|
||||
@@ -235,6 +240,7 @@ class SoongWorkflowCommentWizard(models.TransientModel):
|
||||
"approval_state": "2",
|
||||
"lase_click_date": fields.Datetime.now()})
|
||||
self.sudo().env["soong.workflow.log"].create({
|
||||
"code": self.code,
|
||||
"model": self.res_model,
|
||||
"res_id": self.res_id,
|
||||
"node_id": record_id.workflow_id.node_ids[-1].id,
|
||||
@@ -257,6 +263,7 @@ class SoongWorkflowCommentWizard(models.TransientModel):
|
||||
"approval_state_copy": "0",
|
||||
})
|
||||
self.sudo().env["soong.workflow.log2"].create({
|
||||
"code": self.code,
|
||||
"model": self.res_model,
|
||||
"res_id": self.res_id,
|
||||
"node_id": self.node_btn_id.node_id.id,
|
||||
|
||||
@@ -9,10 +9,10 @@
|
||||
<field name="arch" type="xml">
|
||||
<form string="意见">
|
||||
<group invisible="node_btn_name in ['分发', '结束', '收回']">
|
||||
<field name="comment_note_id" required="node_btn_name not in ['结束', '收回']" domain="[('note_setting_id.users_role_ids', 'in', user_role_id)]"/>
|
||||
<field name="comment_note_id" domain="[('note_setting_id.users_role_ids', 'in', user_role_ids)]"/>
|
||||
<field name="comment_note" required="node_btn_name not in ['结束', '收回']"/>
|
||||
<field name="user_id" invisible="1"/>
|
||||
<field name="user_role_id" invisible="1"/>
|
||||
<field name="user_role_ids" widget="many2many_tags" invisible="1"/>
|
||||
<field name="node_btn_id" invisible="1"/>
|
||||
<field name="node_btn_name" invisible="1"/>
|
||||
<field name="node_link_len" invisible="1"/>
|
||||
|
||||
@@ -17,6 +17,17 @@ class SoongWorkflowRecordDeleteWizard(models.TransientModel):
|
||||
def add_comment(self):
|
||||
for record in self:
|
||||
if record.name == "OK":
|
||||
self.env["soong.workflow.record"].sudo().search([("id", "=", record.record_id.id)]).write({
|
||||
"active": False
|
||||
})
|
||||
if record.record_id.reclaim_state == False:
|
||||
self.env["soong.workflow.record"].sudo().search([("id", "=", record.record_id.id)]).write({
|
||||
"reclaim_state": True
|
||||
})
|
||||
log_ids = self.env["soong.workflow.log"].sudo().search([("code", "=", record.record_id.code)])
|
||||
for log_id in log_ids:
|
||||
log_id.sudo().write({
|
||||
"active": False
|
||||
})
|
||||
else:
|
||||
self.env["soong.workflow.record"].sudo().search(
|
||||
[("id", "=", record.record_id.id), ('reclaim_state', "=", True)]).write({
|
||||
"active": False
|
||||
})
|
||||
@@ -5,9 +5,9 @@
|
||||
text-overflow: clip !important; // 移除省略号(或直接不设置)
|
||||
min-width: max-content !important; // 按内容撑开列宽(可选)
|
||||
}
|
||||
tr .o_data_cell {
|
||||
white-space: pre-wrap !important;
|
||||
}
|
||||
//tr .o_data_cell {
|
||||
// white-space: pre-wrap !important;
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -54,119 +54,131 @@
|
||||
<field name="work_end" invisible="1"/>
|
||||
<field name="custom_document_ids" widget="preview_many2many" options="{'show_select_btn': false}"/>
|
||||
<field name="holiday_allowance"/>
|
||||
<field name="is_hour"/>
|
||||
<field name="is_day"/>
|
||||
</group>
|
||||
</group>
|
||||
<group string="按天请假" invisible="not is_day"/>
|
||||
<group>
|
||||
<field name="is_day"/>
|
||||
</group>
|
||||
<group invisible="not is_day" col="2">
|
||||
<group>
|
||||
<!-- <field name="leave_ids" invisible="not is_day"-->
|
||||
<!-- context="{-->
|
||||
<!-- 'default_holiday_type': 'employee',-->
|
||||
<!-- 'default_employee_id': employee_id,-->
|
||||
<!-- 'holiday_status_id_default_request_unit': 'day'-->
|
||||
<!-- }">-->
|
||||
<field name="leave_ids" invisible="not is_day"
|
||||
context="{
|
||||
'default_holiday_type': 'employee',
|
||||
'default_employee_id': employee_id,
|
||||
}">
|
||||
<tree editable="bottom">
|
||||
<field name="employee_id" readonly="1" force_save="1" column_invisible="1"/>
|
||||
<field name="state" column_invisible="True"/>
|
||||
<field name="employee_company_id" column_invisible="True"/>
|
||||
<field name="name" column_invisible="True"/>
|
||||
<field name="holiday_type" column_invisible="True"/>
|
||||
<field name="user_id" column_invisible="True"/>
|
||||
<field name="batch_id" class="list_width2" column_invisible="True"/>
|
||||
<field name="request_hour_from" column_invisible="True"/>
|
||||
<field name="request_unit_hours" column_invisible="True"/>
|
||||
<field name="holiday_status_id"
|
||||
domain="[
|
||||
'|',
|
||||
('requires_allocation', '=', 'no'),
|
||||
'&',
|
||||
('has_valid_allocation', '=', True),
|
||||
'|',
|
||||
('allows_negative', '=', True),
|
||||
'&',
|
||||
('virtual_remaining_leaves', '>', 0),
|
||||
('allows_negative', '=', False),
|
||||
]"
|
||||
context="{'employee_id': employee_id}"
|
||||
options="{'no_create': True, 'no_open': True, 'request_type': 'leave'}"
|
||||
readonly="state in ['cancel', 'refuse', 'validate', 'validate1']"
|
||||
width="300px"
|
||||
/>
|
||||
<!-- <field name="holiday_status_id"-->
|
||||
<!-- domain="[-->
|
||||
<!-- ('request_unit', '=', 'day'),-->
|
||||
<!-- '|',-->
|
||||
<!-- ('requires_allocation', '=', 'no'),-->
|
||||
<!-- '&',-->
|
||||
<!-- ('has_valid_allocation', '=', True),-->
|
||||
<!-- '|',-->
|
||||
<!-- ('allows_negative', '=', True),-->
|
||||
<!-- '&',-->
|
||||
<!-- ('virtual_remaining_leaves', '>', 0),-->
|
||||
<!-- ('allows_negative', '=', False),-->
|
||||
<!-- ]"-->
|
||||
<!-- context="{'employee_id': employee_id}"-->
|
||||
<!-- options="{'no_create': True, 'no_open': True, 'request_type': 'leave'}"-->
|
||||
<!-- readonly="state in ['cancel', 'refuse', 'validate', 'validate1']"-->
|
||||
<!-- width="200px"-->
|
||||
<!-- />-->
|
||||
<field name="request_date_from" width="300px" string="开始日期"/>
|
||||
<field name="request_date_to" width="300px" string="结束日期"/>
|
||||
<field name="number_of_days_display" string="天" width="100px"/>
|
||||
<field name="leave_documents_ids" widget="preview_many2many" options="{'preview_type': 'button', 'preview_string': ' '}" string=" " width="100px" readonly='true'/>
|
||||
<field name="request_hour_to" column_invisible="True"/>
|
||||
</tree>
|
||||
</field>
|
||||
<group string="按小时请假" invisible="not is_hour"/>
|
||||
<field name="hour_leave_ids" invisible="not is_hour"
|
||||
context="{
|
||||
'default_holiday_type': 'employee',
|
||||
'default_employee_id': employee_id,
|
||||
'default_request_unit_hours': True,
|
||||
'no_change_request_unit_hours': True,
|
||||
'holiday_status_id_default_request_unit': 'hour'
|
||||
}">
|
||||
<tree editable="bottom">
|
||||
<field name="employee_id" readonly="1" force_save="1" column_invisible="1"/>
|
||||
<field name="state" column_invisible="True"/>
|
||||
<field name="employee_company_id" column_invisible="True"/>
|
||||
<field name="name" column_invisible="True"/>
|
||||
<field name="holiday_type" column_invisible="True"/>
|
||||
<field name="user_id" column_invisible="True"/>
|
||||
<field name="batch_id" column_invisible="True"/>
|
||||
<field name="holiday_status_id" domain="[
|
||||
('request_unit', '=', 'hour'),
|
||||
'|',
|
||||
('requires_allocation', '=', 'no'),
|
||||
'&',
|
||||
('has_valid_allocation', '=', True),
|
||||
'|',
|
||||
('allows_negative', '=', True),
|
||||
'&',
|
||||
('virtual_remaining_leaves', '>', 0),
|
||||
('allows_negative', '=', False),
|
||||
]"
|
||||
context="{'employee_id': employee_id}"
|
||||
options="{'no_create': True, 'no_open': True, 'request_type': 'leave'}"
|
||||
readonly="state in ['cancel', 'refuse', 'validate', 'validate1']"
|
||||
width="300px"
|
||||
/>
|
||||
<field name="request_unit_hours" column_invisible="True" force_save="1"/>
|
||||
<field name="request_date_from" width="300px" string="请假日期"/>
|
||||
<field name="request_hour_from" width="200px"/>
|
||||
<field name="request_hour_from_real" column_invisible="True"/>
|
||||
<field name="request_hour_to" width="200px"/>
|
||||
<field name="request_date_to" column_invisible="True"/>
|
||||
<field name="number_of_hours_text" string="小时" width="100px"/>
|
||||
<field name="leave_documents_ids" widget="preview_many2many" options="{'preview_type': 'button', 'preview_string': ' '}" string=" " width="100px" readonly="1"/>
|
||||
<field name="number_of_days_display" column_invisible="True"/>
|
||||
</tree>
|
||||
</field>
|
||||
<field name="leave_ids" invisible="not is_day"
|
||||
context="{
|
||||
'default_holiday_type': 'employee',
|
||||
'default_employee_id': employee_id,
|
||||
}" string=" ">
|
||||
<tree editable="bottom">
|
||||
<field name="employee_id" readonly="1" force_save="1" column_invisible="1"/>
|
||||
<field name="state" column_invisible="True"/>
|
||||
<field name="employee_company_id" column_invisible="True"/>
|
||||
<field name="name" column_invisible="True"/>
|
||||
<field name="holiday_type" column_invisible="True"/>
|
||||
<field name="user_id" column_invisible="True"/>
|
||||
<field name="batch_id" class="list_width2" column_invisible="True"/>
|
||||
<field name="request_hour_from" column_invisible="True"/>
|
||||
<field name="request_unit_hours" column_invisible="True"/>
|
||||
<field name="holiday_status_id"
|
||||
domain="[
|
||||
'|',
|
||||
('requires_allocation', '=', 'no'),
|
||||
'&',
|
||||
('has_valid_allocation', '=', True),
|
||||
'|',
|
||||
('allows_negative', '=', True),
|
||||
'&',
|
||||
('virtual_remaining_leaves', '>', 0),
|
||||
('allows_negative', '=', False),
|
||||
]"
|
||||
context="{'employee_id': employee_id}"
|
||||
options="{'no_create': True, 'no_open': True, 'request_type': 'leave'}"
|
||||
readonly="state in ['cancel', 'refuse', 'validate', 'validate1']"
|
||||
width="100px"
|
||||
/>
|
||||
<!-- <field name="holiday_status_id"-->
|
||||
<!-- domain="[-->
|
||||
<!-- ('request_unit', '=', 'day'),-->
|
||||
<!-- '|',-->
|
||||
<!-- ('requires_allocation', '=', 'no'),-->
|
||||
<!-- '&',-->
|
||||
<!-- ('has_valid_allocation', '=', True),-->
|
||||
<!-- '|',-->
|
||||
<!-- ('allows_negative', '=', True),-->
|
||||
<!-- '&',-->
|
||||
<!-- ('virtual_remaining_leaves', '>', 0),-->
|
||||
<!-- ('allows_negative', '=', False),-->
|
||||
<!-- ]"-->
|
||||
<!-- context="{'employee_id': employee_id}"-->
|
||||
<!-- options="{'no_create': True, 'no_open': True, 'request_type': 'leave'}"-->
|
||||
<!-- readonly="state in ['cancel', 'refuse', 'validate', 'validate1']"-->
|
||||
<!-- width="200px"-->
|
||||
<!-- />-->
|
||||
<field name="request_date_from" width="100px" string="开始日期"/>
|
||||
<field name="request_date_to" width="100px" string="结束日期"/>
|
||||
<field name="number_of_days_display" string="天" width="100px"/>
|
||||
<field name="leave_documents_ids" widget="preview_many2many" options="{'preview_type': 'button', 'preview_string': ' '}" string=" " width="100px" readonly='true'/>
|
||||
<field name="request_hour_to" column_invisible="True"/>
|
||||
</tree>
|
||||
</field>
|
||||
</group>
|
||||
<group/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="is_hour"/>
|
||||
</group>
|
||||
<group invisible="not is_hour" string=" ">
|
||||
<group>
|
||||
<field name="hour_leave_ids" invisible="not is_hour"
|
||||
context="{
|
||||
'default_holiday_type': 'employee',
|
||||
'default_employee_id': employee_id,
|
||||
'default_request_unit_hours': True,
|
||||
'no_change_request_unit_hours': True,
|
||||
'holiday_status_id_default_request_unit': 'hour'
|
||||
}">
|
||||
<tree editable="bottom">
|
||||
<field name="employee_id" readonly="1" force_save="1" column_invisible="1"/>
|
||||
<field name="state" column_invisible="True"/>
|
||||
<field name="employee_company_id" column_invisible="True"/>
|
||||
<field name="name" column_invisible="True"/>
|
||||
<field name="holiday_type" column_invisible="True"/>
|
||||
<field name="user_id" column_invisible="True"/>
|
||||
<field name="batch_id" column_invisible="True"/>
|
||||
<field name="holiday_status_id" domain="[
|
||||
('request_unit', '=', 'hour'),
|
||||
'|',
|
||||
('requires_allocation', '=', 'no'),
|
||||
'&',
|
||||
('has_valid_allocation', '=', True),
|
||||
'|',
|
||||
('allows_negative', '=', True),
|
||||
'&',
|
||||
('virtual_remaining_leaves', '>', 0),
|
||||
('allows_negative', '=', False),
|
||||
]"
|
||||
context="{'employee_id': employee_id}"
|
||||
options="{'no_create': True, 'no_open': True, 'request_type': 'leave'}"
|
||||
readonly="state in ['cancel', 'refuse', 'validate', 'validate1']"
|
||||
width="100px"
|
||||
/>
|
||||
<field name="request_unit_hours" column_invisible="True" force_save="1"/>
|
||||
<field name="request_date_from" width="100px" string="请假日期"/>
|
||||
<field name="request_hour_from" width="200px"/>
|
||||
<field name="request_hour_from_real" column_invisible="True"/>
|
||||
<field name="request_hour_to" width="200px"/>
|
||||
<field name="request_date_to" column_invisible="True"/>
|
||||
<field name="number_of_hours_text" string="小时" width="100px"/>
|
||||
<field name="leave_documents_ids" widget="preview_many2many" options="{'preview_type': 'button', 'preview_string': ' '}" string=" " width="100px" readonly="1"/>
|
||||
<field name="number_of_days_display" column_invisible="True"/>
|
||||
</tree>
|
||||
</field>
|
||||
</group>
|
||||
<group/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="department_id" invisible="1"/>
|
||||
<field name="user_role_id" invisible="1"/>
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
<field name="district_party_id"/>
|
||||
<field name="remarks"/>
|
||||
<field name="scope"/>
|
||||
<field name="company_id"/>
|
||||
<field name="company_id" optional="hide"/>
|
||||
<field name="start_date" optional="hide"/>
|
||||
<field name="end_date" optional="hide"/>
|
||||
</tree>
|
||||
@@ -40,7 +40,7 @@
|
||||
<group col="2">
|
||||
<group>
|
||||
<field name="sequence" force_save="1"/>
|
||||
<field name="decision_type_on_id" force_save="1"/>
|
||||
<field name="decision_type_on_id" force_save="1" invisible="1"/>
|
||||
<field name="council_id"/>
|
||||
</group>
|
||||
<group>
|
||||
|
||||
@@ -1,2 +1 @@
|
||||
from . import models
|
||||
from . import wizard
|
||||
from . import models
|
||||
@@ -15,7 +15,6 @@
|
||||
'views/yuthon_will_task_views.xml',
|
||||
'views/yuthon_task_time_views.xml',
|
||||
'views/yuthon_task_menu.xml',
|
||||
'wizard/task_room_wizard.xml',
|
||||
],
|
||||
'assets': {
|
||||
'web.assets_backend': [
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_yuthon_task_time,yuthon_task_time,model_yuthon_task_time,yuthon_will_task.group_yuthon_will_task_user,1,1,1,1
|
||||
access_yuthon_will_task,yuthon_will_task,model_yuthon_will_task,yuthon_will_task.group_yuthon_will_task_user,1,1,1,1
|
||||
access_task_room_wizard,task_room_wizard,model_task_room_wizard,yuthon_will_task.group_yuthon_will_task_user,1,1,1,1
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -5,11 +5,11 @@
|
||||
<field name="name">日程组</field>
|
||||
</record>
|
||||
<record id="group_yuthon_will_task_user" model="res.groups">
|
||||
<field name="name">日程用户</field>
|
||||
<field name="name">日程-用户</field>
|
||||
<field name="category_id" ref="module_yuthon_will_task"/>
|
||||
</record>
|
||||
<record id="group_yuthon_will_task_leader" model="res.groups">
|
||||
<field name="name">日程组管理员</field>
|
||||
<field name="name">日程-管理员</field>
|
||||
<field name="category_id" ref="module_yuthon_will_task"/>
|
||||
<field name="implied_ids" eval="[(4, ref('group_yuthon_will_task_user'))]"/>
|
||||
</record>
|
||||
|
||||
@@ -10,12 +10,12 @@ export class CustomTaskListController extends ListController {
|
||||
openTaskForm() {
|
||||
this.actionService.doAction({
|
||||
type: 'ir.actions.act_window',
|
||||
res_model: 'task.room.wizard',
|
||||
res_model: 'yuthon.will.task',
|
||||
name: '日程会议',
|
||||
view_mode: 'form',
|
||||
view_type: 'form',
|
||||
views: [[false, 'form']],
|
||||
target: 'new',
|
||||
target: 'current',
|
||||
context: {},
|
||||
});
|
||||
}
|
||||
@@ -27,7 +27,7 @@ export class CustomTaskListController extends ListController {
|
||||
view_mode: 'form',
|
||||
view_type: 'form',
|
||||
views: [[false, 'form']],
|
||||
target: 'new',
|
||||
target: 'current',
|
||||
context: {},
|
||||
});
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<button type="button" class="btn btn-primary" style="margin-left: 10px;" t-on-click="openTaskForm">
|
||||
新建日程
|
||||
</button>
|
||||
<button type="button" class="btn btn-primary" style="margin-left: 10px;" t-on-click="openMeetForm">
|
||||
<button type="button" class="btn btn-primary" style="margin-left: 10px;" t-on-click="openMeetingArrangementForm">
|
||||
新建会议
|
||||
</button>
|
||||
</xpath>
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
from . import task_room_wizard
|
||||
@@ -1,25 +0,0 @@
|
||||
from odoo import api, fields, models
|
||||
|
||||
|
||||
class TaskRoomWizard(models.Model):
|
||||
_name = 'task.room.wizard'
|
||||
_description = '安排日程会议弹窗'
|
||||
|
||||
def create_will_task(self):
|
||||
form_id = self.env.ref('yuthon_will_task.view_yuthon_will_task_form').id
|
||||
return {
|
||||
"type": "ir.actions.act_window",
|
||||
"name": "日程安排",
|
||||
"res_model": "yuthon.will.task",
|
||||
"views": [[form_id, "form"]],
|
||||
}
|
||||
|
||||
def create_room(self):
|
||||
form_id = self.env.ref('room.room_booking_view_form').id
|
||||
return {
|
||||
"type": "ir.actions.act_window",
|
||||
"name": "会议安排",
|
||||
"res_model": "room.booking",
|
||||
"views": [[form_id, "form"]],
|
||||
}
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<record id="view_task_room_wizard" model="ir.ui.view">
|
||||
<field name="name">安排日程会议</field>
|
||||
<field name="model">task.room.wizard</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="安排日程会议">
|
||||
<group col="2">
|
||||
<group>
|
||||
<button name="create_will_task" type="object" string="日程" class="btn btn-primary button_width"/>
|
||||
</group>
|
||||
<group>
|
||||
<button name="create_room" type="object" string="会议" class="btn btn-primary button_width"/>
|
||||
</group>
|
||||
</group>
|
||||
<footer/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user