!12185 添加功能

Merge pull request !12185 from 李鹏宇/dev_zhou
This commit is contained in:
李鹏宇
2026-06-18 11:13:52 +00:00
committed by Gitee
2 changed files with 41 additions and 8 deletions
@@ -2,7 +2,7 @@
from dateutil.relativedelta import relativedelta
from odoo import models, fields, api, exceptions, _
from odoo.exceptions import ValidationError, UserError
from datetime import datetime, timedelta
from datetime import datetime, timedelta, date
import logging
from odoo.osv import expression
_logger = logging.getLogger(__name__)
@@ -230,14 +230,47 @@ class ReceivableModifyLine(models.Model):
original_amount = fields.Float(related='bank_id.original_amount', string='流水金额', store=False)
payout_date = fields.Date(related='receivable_id.payout_date', string='最终收款日期')
no_amount = fields.Float(compute="_compute_no_amount", string='未对')
bank_state = fields.Selection(related='bank_id.bank_state', string='状态', store=False)
receivable_id = fields.Many2one('property.accounts.receivable', string='合同编号')
is_reconciliation = fields.Boolean(related='receivable_id.is_reconciliation', string='已对')
receivable_id = fields.Many2one('property.accounts.receivable', string='应收账单id')
contract_id = fields.Many2one('property.lease.contract', string='关联租赁合同', compute='_compute_contract_id')
management_type_id = fields.Many2one('yuthon.management.type', related='receivable_id.management_type_id', string='应收类型', store=True)
due_date = fields.Date(related='receivable_id.due_date', string='应收开始', store=True)
due_date_end = fields.Date(related='receivable_id.due_date_end', string='应收结束', store=True)
property_name = fields.Text(string='物业名称', compute='_compute_property_name', store=False, search='_search_property_name')
delivered1 = fields.Float(related='receivable_id.original_amount', string='当期金额', store=False)
delivered1 = fields.Float(string='当期金额', compute='_compute_delivered1')
@api.depends('receivable_id', 'receivable_id.original_amount',
'receivable_id.management_type_id', 'amount', 'reconciliation_date')
def _compute_delivered1(self):
"""按 receivable_id 分组,收款日期升序,逐行累减计算当期金额。
仅租金类型生效,非租金取 original_amount。
"""
for rec in self:
if not rec.receivable_id:
rec.delivered1 = 0
continue
if rec.receivable_id.management_type_id.name != '租金':
rec.delivered1 = rec.receivable_id.original_amount
continue
all_lines = self.search([('receivable_id', '=', rec.receivable_id.id)])
sorted_lines = all_lines.sorted(
key=lambda l: (
0 if l.reconciliation_date else 1,
l.reconciliation_date or date.max,
l.id,
)
)
cumsum = 0.0
for line in sorted_lines:
if line.id == rec.id:
remaining = rec.receivable_id.original_amount - cumsum
rec.delivered1 = rec.receivable_id.original_amount if remaining <= 0 else remaining
break
cumsum += line.amount
remake = fields.Text(related='receivable_id.remark', string='备注', store=False)
# lessee_id = fields.Many2one(
# "property.tenant.information",
@@ -122,16 +122,17 @@
<field name="arch" type="xml">
<tree string="应收流水中间表" editable="top" default_order="due_date desc">
<field name="bank_id"/>
<field name="bank_state"/>
<field name="receivable_id"/>
<field name="is_reconciliation"/>
<field name="original_amount"/>
<field name="reconciliation_date"/>
<field name="not_collected"/>
<field name="not_collected" column_invisible="1"/>
<field name="delivered1"/>
<field name="amount"/>
<field name="no_amount"/>
<field name="due_date"/>
<field name="due_date_end"/>
<field name="receivable_id"/>
<field name="contract_id"/>
<field name="lessee_id"/>
<field name="property_name"/>
<field name="management_type_id"/>
@@ -179,7 +180,6 @@
<field name="amount"/>
<field name="delivered1"/>
<field name="is_penalty"/>
<field name="bank_state"/>
<group expand="0" string="分组">
<filter string="应收类型" name="group_by_management_type" context="{'group_by':'management_type_id'}"/>
<filter string="对账日期" name="group_by_reconciliation_date" context="{'group_by':'reconciliation_date'}"/>