@@ -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'}"/>
|
||||
|
||||
Reference in New Issue
Block a user