!9054 添加功能

Merge pull request !9054 from 李鹏宇/dev_zhou
This commit is contained in:
李鹏宇
2026-02-27 10:41:53 +00:00
committed by Gitee
2 changed files with 84 additions and 15 deletions
+2 -7
View File
@@ -342,21 +342,16 @@ class HrAttendance(models.Model):
continue
url = f'https://phone.thtzjt.com/phone/AttendanceSummary/{fields.date.today().year}/{fields.date.today().month}/{emp.user_id.id}'
self.sudo().env["wecom.apps"].sync_send_message_textcard(category='att_ok',
self.sudo().env["wecom.apps"].sync_send_message_textcard(category='att',
user_id=emp.wecom_userid,
title=f'【{title}】',
description='考勤异常请尽快处理',
url=url, btntxt="查看详情")
self.sudo().env["wecom.apps"].sync_send_message_textcard(category='att_ok',
self.sudo().env["wecom.apps"].sync_send_message_textcard(category='att',
user_id='18562027762',
title='【考勤异常提醒】',
description='考勤异常请尽快处理',
url=url, btntxt="查看详情")
self.sudo().env["wecom.apps"].sync_send_message_textcard(category='att_ok',
user_id='78',
title=f'【{title}】',
description=f'单独给叶发的测试{emp.name}后续关掉',
url=url, btntxt="查看详情")
def missing_card_judgment(self):
today = fields.Date.today()
@@ -3,6 +3,7 @@
from odoo import models, fields, api, exceptions, _
from datetime import timedelta
from dateutil.relativedelta import relativedelta
class PropertyManagement(models.Model):
@@ -79,14 +80,88 @@ class PropertyManagement(models.Model):
def approval_end(self):
for record in self:
for line in record.management_line2_ids:
for manage_line in record.management_line2_ids:
# 更新信息行的结束日期
if line.information_line_id:
line.information_line_id.write({'end_date': fields.Date.today()})
if manage_line.information_line_id:
manage_line.information_line_id.write({'end_date': fields.Date.today()})
# 直接从关联的上一条记录获取值(如果存在)
prev_info = line.information_line_id
prev_info = manage_line.information_line_id
target_start_time = record.start_time
target_property_id = line.property_id.id
target_property_id = manage_line.property_id.id
if prev_info.company_id.id != record.company_id.id:
lease_contract = self.env['property.lease.contract.line'].search(
[('address_id', '=', manage_line.property_id.id),
('lease_id', '!=', False),
('lease_id.contact_state', '=', 'ing'),
], limit=1)
if lease_contract:
lease_contract_ids = lease_contract.lease_id
version_str = lease_contract_ids.version.lstrip('V')
main_version = version_str.split('.')[0]
new_main_version = int(main_version) + 1
new_version = f"V{new_main_version}.0"
record_id = self.env['property.lease.contract'].search(
[('contract_code', '=', lease_contract_ids.contract_code),
('version', '=', new_version)
])
if record_id:
continue
new_contract = lease_contract_ids.with_context(skip_contract_code_check=True).copy()
new_contract.write({
'work_end': False,
'version': new_version,
'condition': 'new',
'code': self.env['ir.sequence'].next_by_code('property_lease_contract_code'),
'self_users_ids': [(6, 0, [self.env.user.id])],
'contact_state': 'to',
})
new_contract.lessor_id = record.company_id.id
new_contract.users_id = record.user_id
lease_contract.lease_id.contact_state = 'terminate'
water_lines = self.env['property.water.fee.line'].search([
('contract_id', '=', lease_contract.lease_id.id)
])
for line in water_lines:
line.copy({'contract_id': new_contract.id})
# 复制电费明细行
electric_lines = self.env['property.electric.fee.line'].search([
('contract_id', '=', lease_contract.lease_id.id)
])
for line in electric_lines:
line.copy({'contract_id': new_contract.id})
# 复制物业管理费明细行
manage_lines = self.env['property.management.breakdown.line'].search([
('breakdown_id', '=', lease_contract.lease_id.id)
])
for line in manage_lines:
line.copy({'breakdown_id': new_contract.id})
# 复制其他费用明细行
other_lines = self.env['property.other.fee.line'].search([
('other_id', '=', lease_contract.lease_id.id)
])
for line in other_lines:
line.copy({'other_id': new_contract.id})
# 复制子合同明细
subset_lines = self.env['property.subset.contract'].search([
('subset_id', '=', lease_contract.lease_id.id)
])
for line in subset_lines:
line.copy({'subset_id': new_contract.id})
lease_lines = self.env['property.lease.contract.line'].search([
('lease_id', '=', lease_contract.lease_id.id)
])
for line in lease_lines:
line.copy({'lease_id': new_contract.id})
lease_contract.lease_id.term_end_time = record.start_time - relativedelta(days=1)
lease_contract.lease_id.actual_end_time = record.start_time - relativedelta(days=1)
new_contract.term_start_time = record.start_time
new_contract.actual_start_time = record.start_time
new_contract._compute_name()
new_contract._onchange_contract_sort()
new_contract._update_wkf_records()
new_contract._onchange_action_generate_details()
existing_info = self.env['manage.information.line'].search([
('yuthon_property_id', '=', target_property_id),
('start_time', '=', target_start_time)
@@ -97,7 +172,7 @@ class PropertyManagement(models.Model):
# 创建新的信息行记录,从prev_info获取缺失的值
info_line_vals = {
'yuthon_property_id': line.property_id.id,
'yuthon_property_id': manage_line.property_id.id,
'purpose_id': record.purpose_id.id if record.purpose_id else prev_info.purpose_id.id,
'precinct_id': record.precinct_id.id if record.precinct_id else prev_info.precinct_id.id,
'management_area': prev_info.management_area if prev_info else 0.0,
@@ -110,8 +185,7 @@ class PropertyManagement(models.Model):
prev_info.end_date = record.start_time - timedelta(days=1)
# 创建新记录
self.env['manage.information.line'].create(info_line_vals)
line.property_id.compute_information_fields()
manage_line.property_id.compute_information_fields()
record.write({'is_line': True})
def put_property_management(self):