From 032c846a80c800bb38b86fb943e60fa0d1ce5ed3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= <9664676+pengyuthon@user.noreply.gitee.com> Date: Tue, 16 Jun 2026 11:34:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wizard/contract_rental_wizard.py | 38 +++++++++++++++++++ .../wizard/contract_rental_wizard_views.xml | 28 ++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 yuthon_property_approval/wizard/contract_rental_wizard.py create mode 100644 yuthon_property_approval/wizard/contract_rental_wizard_views.xml diff --git a/yuthon_property_approval/wizard/contract_rental_wizard.py b/yuthon_property_approval/wizard/contract_rental_wizard.py new file mode 100644 index 000000000..6d831f88b --- /dev/null +++ b/yuthon_property_approval/wizard/contract_rental_wizard.py @@ -0,0 +1,38 @@ +from odoo import models, fields, api +from odoo.exceptions import UserError +from datetime import datetime + + +class ContractRentalWizard(models.Model): + _name = 'property.contract.rental.wizard' + _description = '指定合同租金生成向导' + + select_month = fields.Selection( + [('1', '一月'), ('2', '二月'), ('3', '三月'), ('4', '四月'), + ('5', '五月'), ('6', '六月'), ('7', '七月'), ('8', '八月'), + ('9', '九月'), ('10', '十月'), ('11', '十一月'), ('12', '十二月')], + string='选择月份', default=lambda self: str(datetime.now().month)) + + select_year = fields.Selection( + selection=[(str(i), str(i)) for i in range(2024, 2060)], + string='选择年份', default=lambda self: str(datetime.now().year)) + + contract_ids = fields.Many2many('property.lease.contract', string='合同') + + def confirm(self): + """对选中的合同生成选定年月的租金""" + self.ensure_one() + if not self.contract_ids: + raise UserError('请选择至少一个合同') + temp_wizard = self.env['property.rental.wizard'].new({ + 'select_month': self.select_month, + 'select_year': self.select_year, + }) + date_field = datetime(int(self.select_year), int(self.select_month), 1).date() + date_field_year_month = date_field.strftime('%Y-%m') + for contract in self.contract_ids: + multiplier = temp_wizard.get_multiplier(contract.cycle_dict) + for rent_id in contract.breakdown_ids: + temp_wizard.process_rent_record( + contract, rent_id, date_field_year_month, multiplier) + temp_wizard.create_deposit_list(contract) diff --git a/yuthon_property_approval/wizard/contract_rental_wizard_views.xml b/yuthon_property_approval/wizard/contract_rental_wizard_views.xml new file mode 100644 index 000000000..26a304124 --- /dev/null +++ b/yuthon_property_approval/wizard/contract_rental_wizard_views.xml @@ -0,0 +1,28 @@ + + + + 指定合同租金生成 + property.contract.rental.wizard + +
+ + + + + + + +
+
+
+
+
+ + 生成租金 + property.contract.rental.wizard + form + new + +