From a24fe6c96c324042bb9451a4c759155421edf2ff 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: Sat, 11 Oct 2025 15:51:03 +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 --- yuthon_property/wizard/meter_price_wizard.py | 20 ++++++++++++++---- yuthon_property/wizard/water_price_wizard.py | 22 +++++++++++++++----- 2 files changed, 33 insertions(+), 9 deletions(-) diff --git a/yuthon_property/wizard/meter_price_wizard.py b/yuthon_property/wizard/meter_price_wizard.py index 1c049a582..1291f7797 100644 --- a/yuthon_property/wizard/meter_price_wizard.py +++ b/yuthon_property/wizard/meter_price_wizard.py @@ -1,5 +1,7 @@ from odoo import models, fields, api from odoo.exceptions import UserError, ValidationError +from datetime import date, datetime, time +from datetime import timedelta class MeterPriceWizard(models.TransientModel): @@ -11,9 +13,19 @@ class MeterPriceWizard(models.TransientModel): line_loss = fields.Float(string='线损', default=0.02) def confirm(self): + year = self.price_date.year + month = self.price_date.month + start_date = datetime(year, month, 1).date() + if month == 12: + next_month = 1 + next_year = year + 1 + else: + next_month = month + 1 + next_year = year + end_date = (datetime(next_year, next_month, 1).date() - timedelta(days=1)) valid_contract_lines = self.env['meter.archives.line'].search([ - ('meter_date', '<=', self.price_date), - ('meter_date', '>=', self.price_date), + ('meter_date', '>=', start_date), + ('meter_date', '<=', end_date), ]) for valid in valid_contract_lines: if valid.yuthon_property_ids: @@ -23,8 +35,8 @@ class MeterPriceWizard(models.TransientModel): ('end_date', '>=', self.price_date), ], limit=1) if contract_id: - if contract_id.ele_price > 0: - unit = contract_id.ele_price + if contract_id.lease_contract_id.ele_price > 0: + unit = contract_id.lease_contract_id.ele_price else: unit = self.price else: diff --git a/yuthon_property/wizard/water_price_wizard.py b/yuthon_property/wizard/water_price_wizard.py index f8c6cfe9b..982cf881e 100644 --- a/yuthon_property/wizard/water_price_wizard.py +++ b/yuthon_property/wizard/water_price_wizard.py @@ -1,5 +1,7 @@ from odoo import models, fields, api from odoo.exceptions import UserError, ValidationError +from datetime import date, datetime, time +from datetime import timedelta class WaterPriceWizard(models.TransientModel): @@ -11,9 +13,19 @@ class WaterPriceWizard(models.TransientModel): line_loss = fields.Float(string='线损', default=0.05) def confirm(self): - valid_contract_lines = self.env['meter.archives.line'].search([ - ('meter_date', '<=', self.price_date), - ('meter_date', '>=', self.price_date), + year = self.price_date.year + month = self.price_date.month + start_date = datetime(year, month, 1).date() + if month == 12: + next_month = 1 + next_year = year + 1 + else: + next_month = month + 1 + next_year = year + end_date = (datetime(next_year, next_month, 1).date() - timedelta(days=1)) + valid_contract_lines = self.env['meter.water.line'].search([ + ('meter_date', '>=', start_date), + ('meter_date', '<=', end_date), ]) for valid in valid_contract_lines: if valid.yuthon_property_ids: @@ -23,8 +35,8 @@ class WaterPriceWizard(models.TransientModel): ('end_date', '>=', self.price_date), ], limit=1) if contract_id: - if contract_id.water_price > 0: - unit = contract_id.water_price + if contract_id.lease_contract_id.water_price > 0: + unit = contract_id.lease_contract_id.water_price else: unit = self.price else: