Merge pull request !2900 from 李鹏宇/dev
This commit is contained in:
李鹏宇
2025-05-27 11:45:01 +00:00
committed by Gitee
18 changed files with 116 additions and 26 deletions
+22
View File
@@ -22,6 +22,28 @@ class YuthonUserRole(models.Model):
employee_ids = fields.One2many('hr.employee', 'user_role_id')
company_id = fields.Many2one('res.company', string="公司", default=lambda self: self.env.company)
pinyin_name = fields.Char(string="拼音名称", compute='_compute_pinyin', index=True)
is_company = fields.Boolean(string="本公司", default=True, compute='_compute_is_company')
@api.depends_context('uid', 'company')
@api.depends('company_id')
def _compute_is_company(self):
user_employee = self._get_valid_employee_for_user()
active_company_id = user_employee.company_id
for employee in self:
if active_company_id.name == '天河投资集团':
employee.is_company = True
else:
employee.is_company = employee.company_id == active_company_id
def _get_valid_employee_for_user(self):
user = self.env.user
employee = user.employee_ids
if not employee:
user_employees = user.employee_id.sudo().search([
('user_id', '=', user.id)
])
employee = user_employees.filtered(lambda r: r.company_id == user.company_id) or user_employees[:1]
return employee
@api.onchange('is_main')
def _onchange_is_main(self):
@@ -2,7 +2,7 @@
<odoo>
<template id="soong_workflow_log_manager">
<notebook>
<page string="审批详情" invisible="not log_ids">
<page string="审批详情">
<field name="log_ids" style="width:100%%; margin-top: 10px;">
<tree create="false" edit="true" delete="true" editable="bottom">
<field name="sequence" string="" column_invisible="1"/>
@@ -16,7 +16,7 @@
</tree>
</field>
</page>
<page string="抄送/传阅记录" invisible="not log_ids">
<page string="抄送/传阅记录">
<field name="log_ids2" style="width:100%%; margin-top: 10px;">
<tree create="false" edit="true" delete="true" editable="bottom">
<field name="done_by" string=""/>
@@ -52,7 +52,7 @@
</template>
<template id="soong_workflow_log">
<notebook>
<page string="审批详情" invisible="not log_ids">
<page string="审批详情">
<field name="log_ids" style="width:100%%; margin-top: 10px;">
<tree create="false" edit="false" delete="false" editable="bottom" decoration-danger="node_btn_name == '1'">
<field name="sequence" string="" column_invisible="1"/>
@@ -66,7 +66,7 @@
</tree>
</field>
</page>
<page string="抄送/传阅记录" invisible="not log_ids">
<page string="抄送/传阅记录">
<field name="log_ids2" style="width:100%%; margin-top: 10px;">
<tree edit="true" delete="true" editable="bottom">
<field name="done_by" string=""/>
@@ -10,6 +10,7 @@
<field name="department_id" widget="ztree_select"/>
<field name="personnel_ids" widget="many2many_tags" force_save="1"/>
<field name="number_people"/>
<field name="is_company"/>
<field name="is_main" optional="hide"/>
<field name="pinyin_name" column_invisible="1"/>
<field name="company_id" optional="show" required="1"/>
@@ -65,6 +66,7 @@
<!-- Actions -->
<record id="view_soong_user_role_action" model="ir.actions.act_window">
<field name="name">角色配置</field>
<field name="domain">[('is_company','=',True)]</field>
<field name="res_model">soong.user.role</field>
<field name="view_mode">tree,search,form</field>
<field name="search_view_id" ref="soong_user_role_search"/>
+1 -1
View File
@@ -236,7 +236,7 @@ class HrLeave(models.Model):
days -= 1
current_date += timedelta(days=1)
self.number_of_days = days
holiday.number_of_days = days
def remove_leading_zero(self, date_str):
month, day = date_str.split('月')
@@ -114,3 +114,13 @@ class YuthonShiftApproval(models.Model):
self.resource_ids = [(6, 0, resource_ids)]
class YuthonShiftContext(models.Model):
_name = 'yuthon.shift.context'
_description = 'Shift Context'
_order = 'start_datetime desc'
start_datetime = fields.Datetime(string='Start Datetime')
end_datetime = fields.Datetime(string='End Datetime')
planning_name = fields.Char(string='Planning Name')
@@ -54,4 +54,3 @@ access_attendance_correct_wizard,attendance.correct.wizard,model_attendance_corr
access_yuthon_run_wizard,yuthon.run.wizard,model_yuthon_run_wizard,base.group_user,1,1,1,1
access_yuthon_high_wizard,yuthon.high.wizard,model_yuthon_high_wizard,base.group_user,1,1,1,1
access_yuthon_integrated_wizard,yuthon.integrated.wizard,model_yuthon_integrated_wizard,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
54
55
56
@@ -66,12 +66,12 @@
</group>
<group col="2">
<group>
<field name="shift_id" domain="[('resource_id', '=', resource_id)]"/>
<field name="return_id" domain="[('resource_id', '=', transferees_id)]" invisible="alternate_shifts != 'transferees'"/>
<field name="shift_id" domain="[('resource_id', '=', resource_id)]" context="{'tree_view_ref':'yuthon_hr_attendance.view_yuthon_shift_context'}"/>
<field name="return_id" domain="[('resource_id', '=', transferees_id)]" invisible="alternate_shifts != 'transferees'" context="{'tree_view_ref':'yuthon_hr_attendance.view_yuthon_shift_context'}"/>
</group>
<group>
<field name="shift_two_id" domain="[('resource_id', '=', resource_id)]" invisible="alternate_shifts != 'transferees'"/>
<field name="return_two_id" domain="[('resource_id', '=', transferees_id)]" invisible="alternate_shifts != 'transferees'"/>
<field name="shift_two_id" domain="[('resource_id', '=', resource_id)]" invisible="alternate_shifts != 'transferees'" context="{'tree_view_ref':'yuthon_hr_attendance.view_yuthon_shift_context'}"/>
<field name="return_two_id" domain="[('resource_id', '=', transferees_id)]" invisible="alternate_shifts != 'transferees'" context="{'tree_view_ref':'yuthon_hr_attendance.view_yuthon_shift_context'}"/>
</group>
</group>
</sheet>
@@ -83,4 +83,21 @@
<field name="res_model">yuthon.shift.approval</field>
<field name="view_mode">tree,form</field>
</record>
<record id="view_yuthon_shift_context" model="ir.ui.view">
<field name="name">yuthon.shift.context</field>
<field name="model">yuthon.shift.context</field>
<field name="arch" type="xml">
<tree string="Yuthon shift context">
<field name="start_datetime"/>
<field name="end_datetime"/>
<field name="planning_name"/>
</tree>
</field>
</record>
<record id="action_yuthon_shift_context" model="ir.actions.act_window">
<field name="name">Yuthon shift context</field>
<field name="res_model">yuthon.shift.context</field>
<field name="view_mode">tree</field>
</record>
</odoo>
@@ -23,6 +23,28 @@ class YuthonHrDepartment(models.Model):
department_code = fields.Char(string="部门序号")
company_id = fields.Many2one('res.company', string="公司", index=True, default=lambda self: self.env.company)
pinyin_name = fields.Char(string="拼音名称", compute='_compute_pinyin', index=True, store=True)
is_company = fields.Boolean(string="本公司", default=True, compute='_compute_is_company')
@api.depends_context('uid', 'company')
@api.depends('company_id')
def _compute_is_company(self):
user_employee = self._get_valid_employee_for_user()
active_company_id = user_employee.company_id
for employee in self:
if active_company_id.name == '天河投资集团':
employee.is_company = True
else:
employee.is_company = employee.company_id == active_company_id
def _get_valid_employee_for_user(self):
user = self.env.user
employee = user.employee_ids
if not employee:
user_employees = user.employee_id.sudo().search([
('user_id', '=', user.id)
])
employee = user_employees.filtered(lambda r: r.company_id == user.company_id) or user_employees[:1]
return employee
@api.constrains('create_date', 'end_date')
def _check_start_end_time(self):
@@ -73,6 +73,7 @@ class YuthonHrEmployee(models.Model):
company_old_year = fields.Integer(string="司龄(年)", compute='_compute_company_old')
regularization_year = fields.Integer(string="转正(年)", compute='_compute_regularization_year')
open_start_time = fields.Date(string="参加工作时间")
is_membership = fields.Boolean(string="工会会员")
cumulative_work_month = fields.Integer(string="累计工作月数", compute='_compute_social_insurance_info', store=True)
cumulative_work_years = fields.Char(string="累计工作年限", compute='_compute_cumulative_work_years', store=True)
interrupt_work_month = fields.Integer(string="中断工作月数")
@@ -166,8 +167,30 @@ class YuthonHrEmployee(models.Model):
pension_insurance_base = fields.Float(string='基本养老费基数', compute='_compute_insurance_bases')
work_injury_insurance_base = fields.Float(string='失业保险金基数', compute='_compute_insurance_bases')
housing_fund_base = fields.Float(string='住房公积金基数', compute='_compute_insurance_bases')
is_company = fields.Boolean(string="本公司", default=True, compute='_compute_is_company')
last_attendance = fields.Boolean(string="上月全勤", store=True)
@api.depends_context('uid', 'company')
@api.depends('company_id')
def _compute_is_company(self):
user_employee = self._get_valid_employee_for_user()
active_company_id = user_employee.company_id
for employee in self:
if active_company_id.name == '天河投资集团':
employee.is_company = True
else:
employee.is_company = employee.company_id == active_company_id
def _get_valid_employee_for_user(self):
user = self.env.user
employee = user.employee_ids
if not employee:
user_employees = user.employee_id.sudo().search([
('user_id', '=', user.id)
])
employee = user_employees.filtered(lambda r: r.company_id == user.company_id) or user_employees[:1]
return employee
@api.depends('normal_overtime_hours', 'weekend_overtime_hours', 'holiday_overtime_hours')
def _compute_overtime_this_month(self):
for employee in self:
@@ -3,8 +3,6 @@
<record id="hr.hr_department_kanban_action" model="ir.actions.act_window">
<field name="view_mode">tree,kanban,hierarchy,form</field>
</record>
<record id="yuthon_hr_department_inherit" model="ir.ui.view">
<field name="name">yuthon.hr.department.inherit</field>
<field name="model">hr.department</field>
@@ -34,6 +32,7 @@
<xpath expr="//field[@name='name']" position="after">
<field name="department_code"/>
<field name="department_phone"/>
<field name="is_company" optional="hide"/>
<field name="pinyin_name" column_invisible="1"/>
<field name="department_fax" column_invisible="1"/>
<field name="department_location"/>
@@ -64,7 +63,6 @@
</xpath>
</field>
</record>
<record id="sync_hr_do_department_to_res_groups" model="ir.actions.server">
<field name="name">批量生成权限组</field>
<field name="model_id" ref="hr.model_hr_department"/>
@@ -131,6 +131,7 @@
<field name="social_insurance_time"/>
<field name="is_annual_salary"/>
<field name="is_accum_salary"/>
<field name="is_membership"/>
</group>
<group string="其他">
<field name="archiving_agency"/>
@@ -368,6 +369,7 @@
<field name="political_aspects"/>
<field name="user_role_id" column_invisible="1"/>
<field name="use_user_type" optional="hide"/>
<field name="is_company" optional="hide"/>
<field name="salary_group_id" column_invisible="1"/>
<field name="user_number" optional="hide"/>
<field name="mobile_phone" optional="hide"/>
@@ -451,6 +453,7 @@
<record id="all_employee_contacts_action" model="ir.actions.act_window">
<field name="name">通讯录</field>
<field name="res_model">hr.employee</field>
<field name="domain">[('is_company','=',True)]</field>
<field name="view_mode">tree,kanban,form,search</field>
<field name="view_ids" eval="[(5, 0, 0),
(0, 0, {'view_mode': 'tree', 'view_id': ref('yuthon_hr_employee.view_employee_contacts_tree')}),
@@ -17,7 +17,7 @@ class YuthonOfficialIncomingParty(models.Model):
major_event_category = fields.Integer(string="重大事项所属类别")
official_partner_id = fields.Many2one('official.partner', string="来文单位")
remarks = fields.Char(string="备注事项")
main_text = fields.Html(string='正文')
main_text = fields.Text(string='正文')
come_file_id = fields.Char(string="来文编号")
incoming_file_id = fields.Char(string="收文编号")
main_flats = fields.Char(string="主送")
+1 -1
View File
@@ -18,7 +18,7 @@ class YuthonOfficial(models.Model):
major_event_category = fields.Integer(string="重大事项所属类别")
official_partner_id = fields.Many2one('official.partner', string="来文单位")
remarks = fields.Char(string="备注事项")
main_text = fields.Html(string='正文')
main_text = fields.Text(string='正文')
come_file_id = fields.Char(string="来文编号")
incoming_file_id = fields.Char(string="收文编号")
main_flats = fields.Char(string="主送")
@@ -17,7 +17,7 @@ class YuthonOfficialIncomingLabor(models.Model):
major_event_category = fields.Integer(string="重大事项所属类别")
official_partner_id = fields.Many2one('official.partner', string="来文单位")
remarks = fields.Char(string="备注事项")
main_text = fields.Html(string='正文')
main_text = fields.Text(string='正文')
come_file_id = fields.Char(string="来文编号")
incoming_file_id = fields.Char(string="收文编号")
main_flats = fields.Char(string="主送")
@@ -12,16 +12,13 @@ class YuthonOfficialIncomingNormal(models.Model):
name = fields.Char(string="标题")
code = fields.Char(string="编号", default=lambda self: self.env['ir.sequence'].next_by_code('official_code'))
official_type_id = fields.Many2one('official.type', string="公文种类")
reference_cold = fields.Integer(string="来文字号")
reference_date = fields.Date(string='来问日期')
major_event_category = fields.Integer(string="重大事项所属类别")
official_partner_id = fields.Many2one('official.partner', string="来文单位")
remarks = fields.Char(string="备注事项")
main_text = fields.Html(string='正文')
main_text = fields.Text(string='正文')
come_file_id = fields.Char(string="来文编号")
incoming_file_id = fields.Char(string="收文编号")
main_flats = fields.Char(string="主送")
servings_number = fields.Integer(string="份数")
urgency_level = fields.Selection([('normal', '一般'), ('urgent', '紧急'), ('extra_urgent', '特急')], string="紧急程度", default='normal')
secret_level = fields.Selection([('normal', '一般'), ('urgent', '秘密'), ('secret', '机密'), ('so_secret', '绝密')], string="密级")
time_date = fields.Datetime(string="日期", default=fields.Datetime.now)
@@ -15,7 +15,7 @@ class YuthonOfficialLabor(models.Model):
reference_cold = fields.Integer(string="公文字号")
major_event_category = fields.Integer(string="重大事项所属类别")
remarks = fields.Char(string="备注事项")
main_text = fields.Html(string='正文')
main_text = fields.Text(string='正文')
main_flats = fields.Char(string="主送")
copy_flats = fields.Char(string="抄送")
servings_number = fields.Integer(string="份数")
@@ -17,7 +17,7 @@ class YuthonOfficialParty(models.Model):
major_event_category = fields.Integer(string="重大事项所属类别")
# official_partner_id = fields.Many2one('official.partner', string="来文单位")
remarks = fields.Char(string="备注事项")
main_text = fields.Html(string='正文')
main_text = fields.Text(string='正文')
# come_file_id = fields.Char(string="来文编号")
# incoming_file_id = fields.Char(string="收文编号")
main_flats = fields.Char(string="主送")
@@ -52,16 +52,13 @@
<group string="行政信息">
<group col="2">
<field name="official_partner_id"/>
<field name="reference_cold"/>
<field name="secret_level"/>
<field name="time_date"/>
<field name="remarks"/>
</group>
<group>
<field name="users_id"/>
<field name="department_id" widget="ztree_select"/>
<field name="main_flats"/>
<field name="servings_number"/>
<field name="department_id" widget="ztree_select"/>>
<field name="is_supervising"/>
<field name="deadline" invisible="not is_supervising"/>
<field name="done_date" invisible="not is_supervising"/>