From 089a96aa19d0b3c014654c0c4d5ba22e77d27761 Mon Sep 17 00:00:00 2001 From: younes Date: Thu, 25 Dec 2025 13:38:37 +0100 Subject: [PATCH] [IMP] odex_benefit: IMP benefit --- odex25_benefit/odex_benefit/i18n/ar_001.po | 4 -- .../odex_benefit/models/benefit_config.py | 7 +-- .../odex_benefit/models/service_request.py | 44 +++++++++++++------ .../views/benefit_config_view.xml | 5 ++- .../odex_benefit/views/service_request.xml | 21 --------- 5 files changed, 35 insertions(+), 46 deletions(-) diff --git a/odex25_benefit/odex_benefit/i18n/ar_001.po b/odex25_benefit/odex_benefit/i18n/ar_001.po index b3b6b17b3..974ed0f5c 100644 --- a/odex25_benefit/odex_benefit/i18n/ar_001.po +++ b/odex25_benefit/odex_benefit/i18n/ar_001.po @@ -9841,7 +9841,6 @@ msgstr "احتساب قيمة الإيجار" #. module: odex_benefit #: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__rent_attachment -#: model:ir.model.fields,field_description:odex_benefit.field_service_request__member_rent_attachment #: model:ir.model.fields,field_description:odex_benefit.field_service_request__rent_attachment msgid "Rent Attachment" msgstr "مرفق عقد الإيجار" @@ -9852,14 +9851,12 @@ msgid "Rent Contract Information" msgstr "معلومات عقد الإيجار" #. module: odex_benefit -#: model:ir.model.fields,field_description:odex_benefit.field_service_request__member_rent_contract_number #: model:ir.model.fields,field_description:odex_benefit.field_service_request__rent_contract_number msgid "Rent Contract Number" msgstr "رقم العقد" #. module: odex_benefit #: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__rent_end_date -#: model:ir.model.fields,field_description:odex_benefit.field_service_request__member_rent_end_date #: model:ir.model.fields,field_description:odex_benefit.field_service_request__rent_end_date msgid "Rent End Date" msgstr "تاريخ نهاية العقد" @@ -9891,7 +9888,6 @@ msgstr "سكن مشترك إيجار" #. module: odex_benefit #: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__rent_start_date -#: model:ir.model.fields,field_description:odex_benefit.field_service_request__member_rent_start_date #: model:ir.model.fields,field_description:odex_benefit.field_service_request__rent_start_date msgid "Rent Start Date" msgstr "تاريخ بداية العقد" diff --git a/odex25_benefit/odex_benefit/models/benefit_config.py b/odex25_benefit/odex_benefit/models/benefit_config.py index b8d022b9f..ce5a7d067 100644 --- a/odex25_benefit/odex_benefit/models/benefit_config.py +++ b/odex25_benefit/odex_benefit/models/benefit_config.py @@ -1040,9 +1040,4 @@ class RentContract(models.Model): def _onchange_landlord_type(self): for rec in self: if rec.landlord_type == 'family': - rec.member_id = False - - @api.onchange('contract_type') - def _onchange_contract_type(self): - if self.contract_type == 'unlimited': - self.end_date = False \ No newline at end of file + rec.member_id = False \ No newline at end of file diff --git a/odex25_benefit/odex_benefit/models/service_request.py b/odex25_benefit/odex_benefit/models/service_request.py index c35ac3e56..a91fc0269 100644 --- a/odex25_benefit/odex_benefit/models/service_request.py +++ b/odex25_benefit/odex_benefit/models/service_request.py @@ -76,13 +76,6 @@ class ServiceRequest(models.Model): rent_payment_date_exception = fields.Boolean(string='Rent Payment Date Exception?') start = fields.Date(string="Start Date") end = fields.Date(string='End Date') - # Rent details for member - member_rent_contract_number = fields.Char(string="Rent Contract Number") - member_rent_start_date = fields.Date(string='Rent Start Date') - member_rent_end_date = fields.Date(string='Rent End Date') - member_rent_attachment = fields.Many2many('ir.attachment', 'rel_member_rent_attachment_service_request', - 'service_request_id', - 'attachment_id', string='Rent Attachment') added_amount_if_mother_dead = fields.Float(string="Added Amount (If mother dead)", compute="_get_added_amount_if_mother_dead") attachment_lines = fields.One2many( @@ -488,7 +481,7 @@ class ServiceRequest(models.Model): raise UserError(_('You cannot delete this record')) return super(ServiceRequest, self).unlink() - @api.depends('family_id','member_id','benefit_type') + @api.depends('family_id', 'member_id', 'benefit_type') def _compute_rent_details(self): for rec in self: contract = False @@ -774,12 +767,35 @@ class ServiceRequest(models.Model): for rec in self: if rec.service_type != 'rent': continue - if rec.start and rec.end and rec.rent_start_date and rec.rent_end_date: - if not (rec.rent_start_date <= rec.start <= rec.rent_end_date and - rec.rent_start_date <= rec.end <= rec.rent_end_date): - raise UserError(_( - "The Start Date and End Date must be within the Rent Start Date and Rent End Date range." - )) + # if rec.start and rec.end and rec.rent_start_date and rec.rent_end_date: + # if not (rec.rent_start_date <= rec.start <= rec.rent_end_date and + # rec.rent_start_date <= rec.end <= rec.rent_end_date): + # raise UserError(_( + # "The Start Date and End Date must be within the Rent Start Date and Rent End Date range." + # )) + + contract = rec.family_id.current_rent_contract_id if rec.benefit_type == 'family' else False + if rec.benefit_type == 'member' and rec.member_id: + member_contracts = rec.family_id.rent_contract_ids.filtered( + lambda c: c.state == 'active' and c.member_id == rec.member_id and c.landlord_type == 'member' + ).sorted('start_date', reverse=True) + contract = member_contracts[:1] or False + + if contract: + if contract.contract_type == 'fixed': + if rec.start and rec.end and rec.rent_start_date and rec.rent_end_date: + if not (rec.rent_start_date <= rec.start <= rec.rent_end_date and + rec.rent_start_date <= rec.end <= rec.rent_end_date): + raise UserError( + _("Requested rent period must be fully within the contract period " + "because the contract is fixed-term.") + ) + else: + if rec.start and rec.rent_start_date: + if rec.start <= rec.rent_start_date: + raise UserError( + _("Requested start date cannot be before the contract start date.") + ) if rec.payment_type and rec.start and rec.end: months_map = { '1': 12, # yearly diff --git a/odex25_benefit/odex_benefit/views/benefit_config_view.xml b/odex25_benefit/odex_benefit/views/benefit_config_view.xml index 5b80deab7..0cb974216 100644 --- a/odex25_benefit/odex_benefit/views/benefit_config_view.xml +++ b/odex25_benefit/odex_benefit/views/benefit_config_view.xml @@ -43,7 +43,7 @@ - + @@ -1011,6 +1011,9 @@ + + + diff --git a/odex25_benefit/odex_benefit/views/service_request.xml b/odex25_benefit/odex_benefit/views/service_request.xml index 02b2af180..0f3c925e3 100644 --- a/odex25_benefit/odex_benefit/views/service_request.xml +++ b/odex25_benefit/odex_benefit/views/service_request.xml @@ -336,40 +336,19 @@ attrs="{'required':[('service_type','=','rent')]}"/> - - - - -