添加功能

This commit is contained in:
李鹏宇
2025-11-29 19:51:55 +08:00
parent 7869755c82
commit eaa91c4864
7 changed files with 65 additions and 30 deletions
@@ -42,6 +42,7 @@ class FinancialSheetLine(models.Model):
_name = 'financial.sheet.line'
_description = '财务数据表行'
employee_ids = fields.Many2many('hr.employee', string='人员')
sheet_id = fields.Many2one('financial.sheet.collection', string='关联财务数据表')
collection_id = fields.Many2one('sheet.collection.setting', string='项目名称')
this_issue_number = fields.Integer(string='本期数')
+20 -2
View File
@@ -10,7 +10,8 @@ class SheetCollectionSetting(models.Model):
sequence = fields.Integer(string='序号')
name = fields.Char(string='名称')
user_role_id = fields.Many2one('soong.user.role', string="角色")
employee_ids = fields.Many2many('hr.employee', string='员工')
user_role_ids = fields.Many2many('soong.user.role', string="角色")
start_date = fields.Date(string="生效日期", default=fields.Datetime.today())
end_date = fields.Date(string="失效日期")
is_enable = fields.Boolean(string="是否启用", compute="compute_is_enable")
@@ -26,6 +27,14 @@ class SheetCollectionSetting(models.Model):
else:
record.is_enable = record.start_date <= today <= record.end_date
@api.onchange('user_role_ids')
def _onchange_user_role_ids(self):
for rec in self:
domain = ['|', ('user_role_id', 'in', rec.user_role_ids.ids),
('user_role_ids', 'in', rec.user_role_ids.ids)]
new_employees = self.env['hr.employee'].search(domain)
all_employees = rec.employee_ids | new_employees
rec.employee_ids = all_employees
class SummaryTableSetting(models.Model):
_name = 'summary.table.setting'
@@ -34,7 +43,8 @@ class SummaryTableSetting(models.Model):
sequence = fields.Integer(string='序号')
name = fields.Char(string='名称')
company_id = fields.Many2one('res.company', string="公司")
employee_ids = fields.Many2many('hr.employee', string='员工')
user_role_ids = fields.Many2many('soong.user.role', string="角色")
start_date = fields.Date(string="生效日期", default=fields.Datetime.today())
end_date = fields.Date(string="失效日期")
is_enable = fields.Boolean(string="是否启用", compute="compute_is_enable")
@@ -50,3 +60,11 @@ class SummaryTableSetting(models.Model):
else:
record.is_enable = record.start_date <= today <= record.end_date
@api.onchange('user_role_ids')
def _onchange_user_role_ids(self):
for rec in self:
domain = ['|', ('user_role_id', 'in', rec.user_role_ids.ids),
('user_role_ids', 'in', rec.user_role_ids.ids)]
new_employees = self.env['hr.employee'].search(domain)
all_employees = rec.employee_ids | new_employees
rec.employee_ids = all_employees
@@ -28,13 +28,13 @@
<sheet>
<group col="2">
<group>
<field name="employee_id"/>
<field name="company_id"/>
<field name="department_id"/>
<field name="employee_id" invisible="1"/>
<field name="company_id" invisible="1"/>
<field name="department_id" invisible="1"/>
</group>
<group>
<field name="user_role_id"/>
<field name="create_date" readonly="1"/>
<field name="user_role_id" invisible="1"/>
<field name="create_date" invisible="1"/>
</group>
</group>
<notebook>
@@ -13,7 +13,7 @@
<field name="department_id"/>
<field name="user_role_id"/>
<field name="account_type"/>
<field name="create_date"/>
<field name="create_date" readonly="1"/>
<button name="button_put" string="发送" type="object" class="oe_highlight"
invisible="account_type == 'ok'"/>
<button name="open_record" type="object" string="详情" class="btn-primary"/>
@@ -28,13 +28,13 @@
<sheet>
<group col="2">
<group>
<field name="employee_id"/>
<field name="company_id"/>
<field name="employee_id" invisible="1"/>
<field name="company_id" invisible="1"/>
</group>
<group>
<field name="department_id"/>
<field name="user_role_id"/>
<field name="create_date" readonly="1"/>
<field name="department_id" invisible="1"/>
<field name="user_role_id" invisible="1"/>
<field name="create_date" invisible="1"/>
</group>
</group>
<notebook>
@@ -7,7 +7,8 @@
<tree string="财务数据表项目配置" editable="bottom">
<field name="sequence"/>
<field name="name"/>
<field name="user_role_id"/>
<field name="employee_ids" widget="many2many_tags"/>
<field name="user_role_ids" widget="many2many_tags"/>
<field name="start_date"/>
<field name="end_date"/>
<field name="is_enable"/>
@@ -26,7 +27,8 @@
<tree string="信息汇总表项目配置" editable="bottom">
<field name="sequence"/>
<field name="name"/>
<field name="company_id"/>
<field name="employee_ids" widget="many2many_tags"/>
<field name="user_role_ids" widget="many2many_tags"/>
<field name="start_date"/>
<field name="end_date"/>
<field name="is_enable"/>
@@ -85,6 +85,7 @@ class PenaltyLineWizard(models.Model):
('due_date', '=', penalty_start_date),
('management_type_id.name', '=', '违约金'),
], limit=1)
if penalty_receivable_id:
penalty_lines = self.env['receivable.modify.line'].search([
('receivable_id', '=', penalty_receivable_id.id),
@@ -113,14 +114,14 @@ class PenaltyLineWizard(models.Model):
else:
current_penalty = 0
else:
penalty_receivable_id = self.env['property.accounts.receivable'].search([
penalty_receivable_id1 = self.env['property.accounts.receivable'].search([
('contract_id', '=', receivable.contract_id.id),
('due_date', '=', pay_date.replace(day=1)),
('management_type_id.name', '=', '违约金'),
], limit=1)
if penalty_receivable_id:
days_overdue = (pay_date - penalty_receivable_id.due_date).days + 1
current_penalty = penalty_receivable_id.original_amount
if penalty_receivable_id1:
days_overdue = (pay_date - penalty_receivable_id1.due_date).days + 1
current_penalty = penalty_receivable_id1.original_amount
else:
days_overdue = 0
current_penalty = 0
@@ -146,6 +147,16 @@ class PenaltyLineWizard(models.Model):
'remake': pay_remake,
}))
# 未支付的违约金(静态)
if not penalty_receivable_id.payout_date and penalty_receivable_id:
new_penalty_lines.append((0, 0, {
'date': penalty_receivable_id.due_date_end,
'remake': f'未交违约金',
'days_overdue': (penalty_receivable_id.due_date_end - penalty_receivable_id.due_date).days + 1,
'remaining_principal': 0,
'penalty': penalty_receivable_id.submitted,
}))
self.penalty_line_ids = new_penalty_lines
self.pay_line_ids = new_pay_lines
@@ -523,7 +523,7 @@ class PropertyReconciliationWizard(models.Model):
management_type_id = self.env['yuthon.management.type'].search([('name', '=', '违约金')])
if line.collection_type == 'penalty':
penalty_date = line.due_date
first_day_of_last_month = (penalty_date.replace(day=1) - relativedelta(days=1)).replace(day=1)
first_day_of_last_month = penalty_date.replace(day=1) - relativedelta(months=2)
# 上个月最后一天:当前月第一天减1天
last_day_of_last_month = penalty_date.replace(day=1) - relativedelta(days=1)
is_create = self.env['property.reconciliation.line'].search([
@@ -557,7 +557,7 @@ class PropertyReconciliationWizard(models.Model):
extract_start_date = datetime.strptime(extract_start_date, "%Y-%m-%d").date()
extract_end_date = datetime.strptime(extract_end_date, "%Y-%m-%d").date()
reconciliation_id = self.env['property.reconciliation.line'].search(domain2, limit=1)
self.env['property.accounts.receivable'].create({
receivable_id = self.env['property.accounts.receivable'].create({
'is_reconciliation': is_reconciliation,
'due_date': extract_start_date,
'due_date_end': extract_end_date,
@@ -582,15 +582,18 @@ class PropertyReconciliationWizard(models.Model):
'bank_id': rec.bank_id.id if line.amount != 0 else None,
'reconciliation_time': fields.Datetime.now(),
})
self.env['receivable.modify.line'].create({
'bank_id': rec.bank_id.id,
'not_collected': line.rent,
'is_write': True if line.amount != 0 else False,
'is_penalty': True,
'reconciliation_date': rec.actual_date if line.amount != 0 else None,
'receivable_id': existing_record.id,
'amount': line.amount,
})
if existing_record:
receivable_id = existing_record.id
self.env['receivable.modify.line'].create({
'bank_id': rec.bank_id.id,
'not_collected': line.rent,
'is_write': True if line.amount != 0 else False,
'is_penalty': True,
'reconciliation_date': rec.actual_date if line.amount != 0 else None,
'receivable_id': receivable_id.id,
'amount': line.amount,
})
rec.amount_been_reconciled += line.amount
yes_amount += line.amount