添加功能
This commit is contained in:
@@ -6,9 +6,9 @@
|
||||
<field name="implied_ids" eval="[Command.link(ref('base.group_user'))]"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/>
|
||||
</record>
|
||||
<record model="ir.rule" id="room_booking_rule">
|
||||
<field name="name">预定会议多公司</field>
|
||||
<field name="model_id" ref="model_room_booking"/>
|
||||
<record model="ir.rule" id="room_room_rule">
|
||||
<field name="name">会议室多公司</field>
|
||||
<field name="model_id" ref="model_room_room"/>
|
||||
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
|
||||
</record>
|
||||
<!-- <record id="room_room_comp_rule" model="ir.rule">-->
|
||||
|
||||
@@ -23,6 +23,23 @@ class YuthonUserRole(models.Model):
|
||||
company_id = fields.Many2one('res.company', string="公司", default=lambda self: self.env.company)
|
||||
pinyin_name = fields.Char(string="拼音名称", compute='_compute_pinyin', index=True)
|
||||
|
||||
@api.onchange('is_main')
|
||||
def _onchange_is_main(self):
|
||||
for employee in self.personnel_ids:
|
||||
employee_id = self.env['hr.employee'].search([('id', '=', employee.id.origin)])
|
||||
if self.is_main:
|
||||
# 1. 是主角色:替换主角色,清空辅助角色中的当前记录
|
||||
employee_id.user_role_id = self.id.origin
|
||||
if self.id.origin in employee_id.user_role_ids.ids:
|
||||
employee_id.user_role_ids = [(3, self.id.origin)] # 从辅助角色移除
|
||||
else:
|
||||
# 2. 不是主角色:检查辅助角色,没有则添加
|
||||
if self.id.origin not in employee_id.user_role_ids.ids:
|
||||
employee_id.user_role_ids = [(4, self.id.origin)] #
|
||||
|
||||
|
||||
|
||||
|
||||
@api.depends('department_id')
|
||||
def _compute_display_name(self):
|
||||
for record in self:
|
||||
|
||||
@@ -28,7 +28,7 @@ class SoongWorkflowRecord(models.Model):
|
||||
re.name = res_name
|
||||
return super(SoongWorkflowRecord, self).read(fields=fields, load=load)
|
||||
|
||||
name = fields.Char(string="名称")
|
||||
name = fields.Text(string="名称")
|
||||
code = fields.Char(string="流水号")
|
||||
write_date2 = fields.Datetime(string="最后更新日期", readoly="1")
|
||||
res_model = fields.Char(string="Res Model", required=True)
|
||||
|
||||
@@ -57,7 +57,7 @@ class SoongWorkflowCommentWizard(models.TransientModel):
|
||||
@api.onchange('employee_ids1')
|
||||
def _onchange_employee_ids1(self):
|
||||
if len(self.employee_ids1) == 1:
|
||||
self.employee_ids = self.employee_ids
|
||||
self.employee_ids = self.employee_ids1
|
||||
|
||||
@api.constrains('employee_ids')
|
||||
def _check_employee_ids(self):
|
||||
|
||||
@@ -49,5 +49,12 @@ class YuthonServiceApproval(models.Model):
|
||||
|
||||
@api.onchange('service_type')
|
||||
def _onchange_service_type(self):
|
||||
if self.service_type:
|
||||
self.name = self.users_id.name + '-' + self.service_type.name
|
||||
if self.service_type and self.users_id.name:
|
||||
# 创建一个映射表,将技术值映射到显示文本
|
||||
service_type_map = {
|
||||
'done': '在职证明',
|
||||
'leaving': '离职证明',
|
||||
'income': '收入证明'
|
||||
}
|
||||
service_display = service_type_map.get(self.service_type, self.service_type)
|
||||
self.name = f"{self.users_id.name}的{service_display}"
|
||||
@@ -299,6 +299,11 @@ class YuthonProperty(models.Model):
|
||||
}
|
||||
}
|
||||
|
||||
@api.depends('precinct_id', 'admin_id')
|
||||
def _compute_display_name(self):
|
||||
for record in self:
|
||||
if record.precinct_id and record.admin_id:
|
||||
record.display_name = record.precinct_id.name + record.admin_id.name
|
||||
|
||||
def put_assessment_approval(self):
|
||||
for record in self:
|
||||
|
||||
@@ -283,7 +283,7 @@
|
||||
<searchpanel>
|
||||
<field name="property_floor_id" select="multi"/>
|
||||
<field name="company_id" enable_counters="1" select="multi"/>
|
||||
<field name="tenure_type" enable_counters="1" select="multi"/>
|
||||
<field name="tenure_type" enable_counters="1" select="multi" string="权属类型"/>
|
||||
<field name="precinct_id" string="所属片区" enable_counters="1" select="multi"/>
|
||||
<field name="property_floor_id" select="multi"/>
|
||||
</searchpanel>
|
||||
|
||||
@@ -42,6 +42,13 @@
|
||||
<field name="padding">3</field>
|
||||
<field name="company_id" eval="False"/>
|
||||
</record>
|
||||
<record id="yuthon_trade_premium_code_sequence" model="ir.sequence">
|
||||
<field name="name">缴保编号</field>
|
||||
<field name="code">yuthon_trade_premium_code</field>
|
||||
<field name="prefix">JB%(y)s%(month)s%(day)s</field>
|
||||
<field name="padding">3</field>
|
||||
<field name="company_id" eval="False"/>
|
||||
</record>
|
||||
<record id="property_personal_condolences_code_sequence" model="ir.sequence">
|
||||
<field name="name">个人慰问编号</field>
|
||||
<field name="code">property_personal_condolences_code</field>
|
||||
|
||||
@@ -9,7 +9,7 @@ class YuthonMutualApproval(models.Model):
|
||||
|
||||
code = fields.Char(string="编号",
|
||||
default=lambda self: self.env['ir.sequence'].next_by_code('yuthon_leaving_approval_code'))
|
||||
users_id = fields.Many2one('res.users', string="经办人", default=lambda self: self.env.user.id)
|
||||
users_id = fields.Many2one('res.users', string="姓名 ", default=lambda self: self.env.user.id)
|
||||
text = fields.Text(string='正文')
|
||||
name = fields.Char(string="标题")
|
||||
department_id = fields.Many2one(related='users_id.employee_id.department_id', string="部门")
|
||||
@@ -19,12 +19,21 @@ class YuthonMutualApproval(models.Model):
|
||||
work_end = fields.Boolean(string="结束")
|
||||
active = fields.Boolean('Active', default=True, tracking=True)
|
||||
|
||||
@api.onchange('users_id', 'insurance_ids')
|
||||
def _onchange_set_employee_id(self):
|
||||
"""当用户或保单明细变化时,自动设置employee_id"""
|
||||
employee = self.env['hr.employee'].search(
|
||||
[('user_id', '=', self.users_id.id)], limit=1
|
||||
)
|
||||
for line in self.insurance_ids:
|
||||
if not line.employee_id:
|
||||
line.employee_id = employee.id
|
||||
|
||||
def _get_default_name_title(self):
|
||||
return self._description if self._description else self._name
|
||||
|
||||
name_title = fields.Char(default=_get_default_name_title)
|
||||
mutual_type = fields.Char(string="患病疾病种类")
|
||||
mutual_type_id = fields.Many2one('yuthon.mutual.type', string="疾病种类")
|
||||
hospital = fields.Char(string="治疗医院")
|
||||
hospital_start_time = fields.Date(string="开始时间")
|
||||
hospital_end_time = fields.Date(string="结束时间")
|
||||
@@ -36,7 +45,6 @@ class YuthonMutualLine(models.Model):
|
||||
|
||||
mutual_id = fields.Many2one('yuthon.mutual.approval', string="关联缴保申请单")
|
||||
insurance_id = fields.Many2one('yuthon.insurance.policy', string="保单名称")
|
||||
employee_id = fields.Many2one('hr.employee')
|
||||
code = fields.Char(related='insurance_id.code', string="编号")
|
||||
start_date = fields.Date(related='insurance_id.start_date', string="开始日期")
|
||||
end_date = fields.Date(related='insurance_id.end_date', string="结束日期")
|
||||
employee_ids = fields.Many2many(related='insurance_id.employee_ids', string="参保人员")
|
||||
fee = fields.Float(string="保费")
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from datetime import datetime, timedelta, time
|
||||
from odoo import models, fields, api, exceptions, _
|
||||
|
||||
class YuthonTaskApproval(models.Model):
|
||||
@@ -11,7 +11,7 @@ class YuthonTaskApproval(models.Model):
|
||||
|
||||
name = fields.Char(string='标题')
|
||||
code = fields.Char(string="作业编号",
|
||||
default=lambda self: self.env['ir.sequence'].next_by_code('yuthon_task_approval_code_sequence'))
|
||||
default=lambda self: self.env['ir.sequence'].next_by_code('yuthon_task_approval_code'))
|
||||
users_id = fields.Many2one('res.users', string="申请人", default=lambda self: self.env.user.id)
|
||||
department_id = fields.Many2one(related='users_id.employee_id.department_id', string="部门")
|
||||
document_ids = fields.Many2many('ir.attachment', string="附件")
|
||||
@@ -19,8 +19,8 @@ class YuthonTaskApproval(models.Model):
|
||||
employee_ids = fields.Many2many('hr.employee', string="作业人员")
|
||||
task_id = fields.Many2one('yuthon.task.setting', string="作业项目")
|
||||
stack_position_ids = fields.Many2many('yuthon.stack.position', string="作业堆位")
|
||||
task_start_time = fields.Datetime(string="作业开始时间", default=fields.Datetime.now())
|
||||
task_end_time = fields.Datetime(string="作业结束时间", default=fields.Datetime.now())
|
||||
task_start_time = fields.Datetime(string="作业开始时间", default=lambda self: fields.Datetime.to_string(datetime.now() - timedelta(hours=8)))
|
||||
task_end_time = fields.Datetime(string="作业结束时间", default=lambda self: fields.Datetime.to_string(datetime.combine(datetime.now().date(), time(8, 0))))
|
||||
urgency_level = fields.Selection([('normal', '普件'), ('urgent', '急件'), ('emergency', '特急件')], string='紧急度',
|
||||
default='normal')
|
||||
active = fields.Boolean('Active', default=True, tracking=True)
|
||||
|
||||
@@ -12,15 +12,17 @@ class YuthonTradePremium(models.Model):
|
||||
department_id = fields.Many2one(related='users_id.employee_id.department_id', string="部门")
|
||||
code = fields.Char(string="编号",
|
||||
default=lambda self: self.env['ir.sequence'].next_by_code(
|
||||
'property_personal_condolences_code_sequence'))
|
||||
employee_id = fields.Many2one('hr.employee', string='参保名单', required=True)
|
||||
fee = fields.Float(string='费用')
|
||||
text = fields.Text(string='正文')
|
||||
trade_date = fields.Date(string='保期')
|
||||
'yuthon_trade_premium_code'))
|
||||
employee_ids = fields.Many2many(related="insurance_id.employee_ids", string='参保名单')
|
||||
number = fields.Integer(string="人数", compute='_compute_employee_ids', store=True)
|
||||
fee = fields.Float(string='个人保费')
|
||||
total = fields.Float(string='总保费', compute='_compute_total', store=True)
|
||||
text = fields.Text(string='申请事由')
|
||||
start_date = fields.Date(string='开始时间')
|
||||
end_date = fields.Date(string='结束时间')
|
||||
urgency_level = fields.Selection([('normal', '普件'), ('urgent', '急件'), ('emergency', '特急件')], string='紧急度',
|
||||
default='normal')
|
||||
documents_ids = fields.Many2many('ir.attachment', string="附件")
|
||||
insurance_ids = fields.One2many('yuthon.trade.line', 'trade_id', string="保单列表明细")
|
||||
work_end = fields.Boolean(string="结束")
|
||||
active = fields.Boolean('Active', default=True, tracking=True)
|
||||
|
||||
@@ -29,17 +31,21 @@ class YuthonTradePremium(models.Model):
|
||||
|
||||
name_title = fields.Char(default=_get_default_name_title)
|
||||
|
||||
@api.depends('employee_ids')
|
||||
def _compute_employee_ids(self):
|
||||
for record in self:
|
||||
if record.employee_ids:
|
||||
record.number = len(record.employee_ids)
|
||||
|
||||
@api.depends('number', 'fee')
|
||||
def _compute_total(self):
|
||||
for record in self:
|
||||
record.total = record.number * record.fee
|
||||
|
||||
class YuthonTradeLine(models.Model):
|
||||
_name = 'yuthon.trade.line'
|
||||
_description = '保单明细'
|
||||
|
||||
trade_id = fields.Many2one('yuthon.trade.premium', string="关联缴保申请单")
|
||||
insurance_id = fields.Many2one('yuthon.insurance.policy', string="保单名称")
|
||||
code = fields.Char(related='insurance_id.code', string="编号")
|
||||
start_date = fields.Date(related='insurance_id.start_date', string="开始日期")
|
||||
end_date = fields.Date(related='insurance_id.end_date', string="结束日期")
|
||||
employee_ids = fields.Many2many(related='insurance_id.employee_ids', string="参保人员")
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -48,3 +48,9 @@ class ProjectFundingSetting(models.Model):
|
||||
_description = '资金来源'
|
||||
|
||||
name = fields.Char(string='名称')
|
||||
|
||||
class YuthonMutualType(models.Model):
|
||||
_name = 'yuthon.mutual.type'
|
||||
_description = '疾病种类'
|
||||
|
||||
name = fields.Char(string='名称')
|
||||
@@ -21,7 +21,6 @@ access_yuthon_message_approval,yuthon_message_approval,model_yuthon_message_appr
|
||||
access_yuthon_publish_type,yuthon_publish_type,model_yuthon_publish_type,base.group_user,1,1,1,1
|
||||
access_yuthon_mutual_approval,yuthon_mutual_approval,model_yuthon_mutual_approval,base.group_user,1,1,1,1
|
||||
access_yuthon_insurance_policy,yuthon_insurance_policy,model_yuthon_insurance_policy,base.group_user,1,1,1,1
|
||||
access_yuthon_trade_line,yuthon_trade_line,model_yuthon_trade_line,base.group_user,1,1,1,1
|
||||
access_yuthon_mutual_line,yuthon_mutual_line,model_yuthon_mutual_line,base.group_user,1,1,1,1
|
||||
access_yuthon_task_approval,yuthon_task_approval,model_yuthon_task_approval,base.group_user,1,1,1,1
|
||||
access_yuthon_task_setting,yuthon_task_setting,model_yuthon_task_setting,base.group_user,1,1,1,1
|
||||
@@ -33,6 +32,7 @@ access_seals_scope_setting,seals_scope_setting,model_seals_scope_setting,base.gr
|
||||
access_sending_unit_setting,sending_unit_setting,model_sending_unit_setting,base.group_user,1,1,1,1
|
||||
access_trade_project_approval,trade_project_approval,model_trade_project_approval,base.group_user,1,1,1,1
|
||||
access_project_funding_setting,project_funding_setting,model_project_funding_setting,base.group_user,1,1,1,1
|
||||
access_yuthon_mutual_type,yuthon_mutual_type,model_yuthon_mutual_type,base.group_user,1,1,1,1
|
||||
access_project_classify_setting,project_classify_setting,model_project_classify_setting,base.group_user,1,1,1,1
|
||||
|
||||
|
||||
|
||||
|
@@ -44,25 +44,31 @@
|
||||
<field name="users_id"/>
|
||||
<field name="department_id" invisible="1"/>
|
||||
<field name="text"/>
|
||||
<field name="documents_ids" widget="preview_many2many"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<field name="mutual_type"/>
|
||||
<field name="hospital"/>
|
||||
<field name="hospital_start_time"/>
|
||||
<field name="hospital_end_time"/>
|
||||
<field name="mutual_type_id"/>
|
||||
<field name="hospital"/>
|
||||
<label for="hospital_start_time"/>
|
||||
<div class="d-inline-flex w-100">
|
||||
<field name="hospital_start_time" string="住院日期:" class="me-2"
|
||||
style="max-width: 10rem !important;"/>至
|
||||
<field name="hospital_end_time" string=" " class="ms-2"
|
||||
style="max-width: 10rem !important;"/>
|
||||
</div>
|
||||
</group>
|
||||
<group>
|
||||
<field name="documents_ids" widget="preview_many2many"/>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="保单列表">
|
||||
<field name="insurance_ids">
|
||||
<tree editable="bottom">
|
||||
<field name="employee_id" column_invisible="1"/>
|
||||
<field name="mutual_id" column_invisible="1"/>
|
||||
<field name="insurance_id"/>
|
||||
<field name="code"/>
|
||||
<field name="start_date"/>
|
||||
<field name="end_date"/>
|
||||
<field name="employee_ids" widget="many2many_tags"/>
|
||||
<field name="insurance_id" domain="[('employee_ids', 'in', employee_id)]"/>
|
||||
<field name="code" string="参保编号"/>
|
||||
<field name="fee"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
|
||||
@@ -168,4 +168,9 @@
|
||||
parent="executive_trade_setting"
|
||||
action="view_yuthon_insurance_policy_action"
|
||||
sequence="95"/>
|
||||
<menuitem id="yuthon_mutual_type_board"
|
||||
name="疾病种类"
|
||||
parent="executive_trade_setting"
|
||||
action="view_yuthon_mutual_type_action"
|
||||
sequence="100"/>
|
||||
</odoo>
|
||||
@@ -40,30 +40,20 @@
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="users_id"/>
|
||||
<field name="department_id" invisbiel="1"/>
|
||||
<field name="documents_ids" widget="preview_many2many"/>
|
||||
<field name="department_id" invisible="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<field name="insurance_id"/>
|
||||
<field name="employee_id" widget="ztree_select"/>
|
||||
<field name="employee_ids" widget="many2many_tags"/>
|
||||
<field name="number"/>
|
||||
<field name="fee"/>
|
||||
<field name="trade_date"/>
|
||||
<field name="total"/>
|
||||
<field name="start_date"/>
|
||||
<field name="end_date"/>
|
||||
<field name="text"/>
|
||||
<field name="documents_ids" widget="preview_many2many"/>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="保单列表">
|
||||
<field name="insurance_ids">
|
||||
<tree editable="bottom">
|
||||
<field name="trade_id" column_invisible="1"/>
|
||||
<field name="insurance_id"/>
|
||||
<field name="code"/>
|
||||
<field name="start_date"/>
|
||||
<field name="end_date"/>
|
||||
<field name="employee_ids" widget="many2many_tags"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
|
||||
@@ -98,4 +98,18 @@
|
||||
<field name="res_model">project.funding.setting</field>
|
||||
<field name="view_mode">tree</field>
|
||||
</record>
|
||||
<record id="view_yuthon_mutual_type_tree" model="ir.ui.view">
|
||||
<field name="name">疾病种类</field>
|
||||
<field name="model">yuthon.mutual.type</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="疾病种类" editable="bottom">
|
||||
<field name="name"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_yuthon_mutual_type_action" model="ir.actions.act_window">
|
||||
<field name="name">疾病种类</field>
|
||||
<field name="res_model">yuthon.mutual.type</field>
|
||||
<field name="view_mode">tree</field>
|
||||
</record>
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user