Merge pull request !9804 from 李鹏宇/dev
This commit is contained in:
@@ -11,6 +11,7 @@
|
||||
'views/pre_arrears_report.xml',
|
||||
'views/pre_advance_report.xml',
|
||||
'views/month_receivable_report.xml',
|
||||
'views/total_received_report.xml',
|
||||
'views/penalty_arrears_report.xml',
|
||||
'views/penalty_month_received_report.xml',
|
||||
'views/penalty_year_cum_report.xml',
|
||||
|
||||
@@ -17,6 +17,7 @@ from . import staff_position_report
|
||||
from . import pre_arrears_report
|
||||
from . import pre_advance_report
|
||||
from . import month_receivable_report
|
||||
from . import total_received_report
|
||||
from . import penalty_arrears_report
|
||||
from . import penalty_month_received_report
|
||||
from . import penalty_year_cum_report
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
import datetime
|
||||
import calendar
|
||||
|
||||
from odoo import api, models
|
||||
|
||||
|
||||
class TotalReceivedReport(models.Model):
|
||||
_inherit = 'receivable.modify.line'
|
||||
|
||||
@api.model
|
||||
def get_total_received_report(self, params):
|
||||
"""实收总额:查询月当月,应收类型不为押金和违约金的已对金额"""
|
||||
domain = [('reconciliation_date', '!=', False)]
|
||||
|
||||
# 单月日期过滤
|
||||
if params.get('date_start'):
|
||||
query_date = datetime.datetime.fromisoformat(params['date_start']).date()
|
||||
month_start = query_date.replace(day=1)
|
||||
last_day = calendar.monthrange(query_date.year, query_date.month)[1]
|
||||
month_end = query_date.replace(day=last_day)
|
||||
domain += [
|
||||
('reconciliation_date', '>=', month_start),
|
||||
('reconciliation_date', '<=', month_end),
|
||||
]
|
||||
|
||||
# 排除押金和违约金
|
||||
domain += [
|
||||
('receivable_id.management_type_id.name', 'not in', ['押金', '违约金']),
|
||||
]
|
||||
|
||||
if params.get('keyword'):
|
||||
keyword = params['keyword']
|
||||
domain += ['|', '|',
|
||||
('receivable_id.lessee_id.name', 'ilike', keyword),
|
||||
('receivable_id.property_name', 'ilike', keyword),
|
||||
('receivable_id.contract_id.contract_code', 'ilike', keyword),
|
||||
]
|
||||
|
||||
lines = self.search(domain, order='reconciliation_date asc')
|
||||
|
||||
rows = []
|
||||
total_amount = 0.0
|
||||
for idx, line in enumerate(lines, start=1):
|
||||
rec = line.receivable_id
|
||||
contract = rec.contract_id if rec else None
|
||||
amount = round(line.original_amount or 0.0, 2)
|
||||
total_amount += amount
|
||||
|
||||
# 物业穿透
|
||||
property_val = ''
|
||||
if contract and contract.lease_ids and contract.lease_ids[0].address_id:
|
||||
prop = contract.lease_ids[0].address_id
|
||||
property_val = {
|
||||
'model': 'yuthon.property',
|
||||
'id': prop.id,
|
||||
'display_name': rec.property_name or prop.name,
|
||||
}
|
||||
elif rec:
|
||||
property_val = rec.property_name or ''
|
||||
|
||||
# 合同穿透
|
||||
contract_val = ''
|
||||
if contract:
|
||||
contract_val = {
|
||||
'model': 'property.lease.contract',
|
||||
'id': contract.id,
|
||||
'display_name': contract.contract_code or '',
|
||||
}
|
||||
|
||||
# 承租方穿透
|
||||
lessee_val = ''
|
||||
if rec and rec.lessee_id:
|
||||
lessee_val = {
|
||||
'model': 'property.tenant.information',
|
||||
'id': rec.lessee_id.id,
|
||||
'display_name': rec.lessee_id.name,
|
||||
}
|
||||
|
||||
rows.append({
|
||||
'序号': idx,
|
||||
'物业名称': property_val,
|
||||
'合同编号': contract_val,
|
||||
'承租方名称': lessee_val,
|
||||
'金额': amount,
|
||||
'所属公司': contract.lessor_id.name if contract and contract.lessor_id else '',
|
||||
'管理员': contract.admin_id.name if contract and contract.admin_id else '',
|
||||
})
|
||||
|
||||
stats = [{'name': '合计', 'amount': round(total_amount, 2)}]
|
||||
return {'rows': rows, 'stats': stats}
|
||||
@@ -45,9 +45,9 @@
|
||||
action="action_month_receivable_report"/>
|
||||
<menuitem id="yuthon_property_income_total_received_menu"
|
||||
sequence="5"
|
||||
name="实收总额"
|
||||
name="本月实收总额"
|
||||
parent="yuthon_property_income_menu"
|
||||
action="action_report_placeholder"/>
|
||||
action="action_total_received_report"/>
|
||||
<menuitem id="yuthon_property_income_month_received_menu"
|
||||
sequence="6"
|
||||
name="本月实收"
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="action_total_received_report" model="ir.actions.client">
|
||||
<field name="name">实收总额</field>
|
||||
<field name="tag">receivable_report_client</field>
|
||||
<field name="context">
|
||||
{
|
||||
"sideBar": true,
|
||||
"report_config": {
|
||||
"model": "receivable.modify.line",
|
||||
"method": "get_total_received_report",
|
||||
"dateMode": "single",
|
||||
"columns": [
|
||||
{"headerName": "序号", "field": "序号", "width": 45, "flex": 0, "pinned": "left"},
|
||||
{"headerName": "物业名称", "field": "物业名称", "flex": 2.5},
|
||||
{"headerName": "合同编号", "field": "合同编号", "flex": 1.2},
|
||||
{"headerName": "承租方名称", "field": "承租方名称", "flex": 1.6},
|
||||
{"headerName": "金额", "field": "金额", "flex": 1, "type": "number"},
|
||||
{"headerName": "所属公司", "field": "所属公司", "flex": 1.2},
|
||||
{"headerName": "管理员", "field": "管理员", "flex": 1}
|
||||
]
|
||||
}
|
||||
}
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user