From 3010f59c481e39d8473a5630d5971e5bba430f05 Mon Sep 17 00:00:00 2001 From: younes Date: Thu, 8 Jan 2026 14:57:23 +0100 Subject: [PATCH] [IMP] odex_benefit: IMP benefit --- .../odex_benefit/data/server_actions.xml | 10 --- odex25_benefit/odex_benefit/i18n/ar_001.po | 13 ++-- odex25_benefit/odex_benefit/models/benefit.py | 18 +++--- .../odex_benefit/models/family_members.py | 11 ++++ .../odex_benefit/models/service_request.py | 15 ++--- .../odex_benefit/views/actions_and_menus.xml | 1 - .../views/benefit_config_view.xml | 32 ---------- .../odex_benefit/views/benefit_view.xml | 4 +- .../odex_benefit/views/family_members.xml | 4 ++ .../odex_benefit/views/service_request.xml | 64 +++++++++++-------- .../wizards/family_bank_report_wizard.py | 2 +- 11 files changed, 78 insertions(+), 96 deletions(-) diff --git a/odex25_benefit/odex_benefit/data/server_actions.xml b/odex25_benefit/odex_benefit/data/server_actions.xml index 69142eccf..25c735b5f 100644 --- a/odex25_benefit/odex_benefit/data/server_actions.xml +++ b/odex25_benefit/odex_benefit/data/server_actions.xml @@ -33,16 +33,6 @@ action - - Re-Assign Benefit Sequence - - - code - - action = records.assign_sequence_to_all() - - - Assign Specialist (Mass) diff --git a/odex25_benefit/odex_benefit/i18n/ar_001.po b/odex25_benefit/odex_benefit/i18n/ar_001.po index c81fc1143..7b0554fe7 100644 --- a/odex25_benefit/odex_benefit/i18n/ar_001.po +++ b/odex25_benefit/odex_benefit/i18n/ar_001.po @@ -7891,7 +7891,6 @@ msgstr "المرفقات الرئيسية" #. module: odex_benefit #: model_terms:ir.ui.view,arch_db:odex_benefit.main_service_form -#: model_terms:ir.ui.view,arch_db:odex_benefit.service_request_search msgid "Main Service" msgstr "نوع الخدمة الرئيسية" @@ -9873,7 +9872,6 @@ msgstr "" #: model:ir.model.fields,field_description:odex_benefit.field_benefits_representative__ref #: model:ir.model.fields,field_description:odex_benefit.field_external_benefits__ref #: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__ref -#: model:ir.model.fields,field_description:odex_benefit.field_service_request__name #: model:ir.model.fields,field_description:odex_benefit.field_visit_location__name #: model:ir.model.fields,field_description:odex_benefit.field_seasonal_service__name #, fuzzy @@ -9886,6 +9884,11 @@ msgstr "" "#-#-#-#-# catalog.po (Odoo Server 14.0) #-#-#-#-#\n" "الرقم التسلسلي" +#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_service_request__name +msgid "Reference" +msgstr "رقم الخدمة" + #. module: odex_benefit #: model:ir.model.fields,field_description:odex_benefit.field_entity_refuse_reason__date msgid "Refuse Date" @@ -11117,7 +11120,6 @@ msgstr "يدرس خارج السعودية" #. module: odex_benefit #: model:ir.model.fields,field_description:odex_benefit.field_service_request__sub_service_category -#: model_terms:ir.ui.view,arch_db:odex_benefit.service_request_search msgid "Sub Service Category" msgstr "الخدمة الفرعية" @@ -12687,11 +12689,6 @@ msgstr "" msgid "bad" msgstr "سيء" -#. module: odex_benefit -#: model_terms:ir.ui.view,arch_db:odex_benefit.banks_view_tree -msgid "banks_tree" -msgstr "" - #. module: odex_benefit #: model:ir.model.fields.selection,name:odex_benefit.selection__generate_reports__qualification_type__behavior msgid "behavior" diff --git a/odex25_benefit/odex_benefit/models/benefit.py b/odex25_benefit/odex_benefit/models/benefit.py index 867567871..9ccc26cb7 100644 --- a/odex25_benefit/odex_benefit/models/benefit.py +++ b/odex25_benefit/odex_benefit/models/benefit.py @@ -27,15 +27,15 @@ class GrantBenefitProfile(models.Model): def get_url(self): return "wwww" - def name_get(self): - result = [] - for rec in self: - if rec.name and rec.code: - display_name = f"{rec.code} - {rec.name}" - result.append((rec.id, display_name)) - else: - result.append((rec.id, rec.name or rec.code or "")) - return result + #def name_get(self): + # result = [] + # for rec in self: + # if rec.name and rec.code: + # display_name = f"{rec.code} - {rec.name}" + # result.append((rec.id, display_name)) + # else: + # result.append((rec.id, rec.name or rec.code or "")) + # return result @api.model def _name_search(self, name, args=None, operator='ilike', limit=100, name_get_uid=None): diff --git a/odex25_benefit/odex_benefit/models/family_members.py b/odex25_benefit/odex_benefit/models/family_members.py index 016688d45..09639501f 100644 --- a/odex25_benefit/odex_benefit/models/family_members.py +++ b/odex25_benefit/odex_benefit/models/family_members.py @@ -1,6 +1,8 @@ # -*- coding: utf-8 -*- import logging from datetime import datetime, date +from re import search + from dateutil.relativedelta import relativedelta as rd from odoo import models, fields, api, _ from odoo.exceptions import UserError, ValidationError @@ -38,8 +40,11 @@ class FamilyMemberProfile(models.Model): name = fields.Char(string="Name", compute='get_partner_name', store=True, readonly=False) member_id_number = fields.Char(string="Member Id Number") benefit_id = fields.Many2one("grant.benefit", string="Responsable", default=_default_benefit) + benefit_code = fields.Char(string='Family Code', related='benefit_id.code', store=True) branch_custom_id = fields.Many2one('branch.settings', string="Branch", related="benefit_id.branch_custom_id", search="_search_branch_custom_id") + researcher_id = fields.Many2one("committees.line", string="Researcher", related="benefit_id.researcher_id", search="_search_researcher_id") + benefit_category_id = fields.Many2one('benefit.category', string='Benefit Category',related="benefit_id.benefit_category_id",search="_search_benefit_category_id") gender = fields.Selection(selection=[('male', 'Male'), ('female', 'Female')], string="Gender") member_phone = fields.Char(string="Member Phone") member_location = fields.Selection(selection=[('with_family', 'With Family'), ('with_relative', 'with a relative'), @@ -307,6 +312,12 @@ class FamilyMemberProfile(models.Model): def _search_branch_custom_id(self, operator, value): return [('benefit_id.branch_custom_id', operator, value)] + def _search_researcher_id(self, operator, value): + return [('benefit_id.researcher_id', operator, value)] + + def _search_benefit_category_id(self, operator, value): + return [('benefit_id.benefit_category_id', operator, value)] + @api.model def name_search(self, name='', args=None, operator='ilike', limit=100): if self._context.get('members_domain_force_all'): diff --git a/odex25_benefit/odex_benefit/models/service_request.py b/odex25_benefit/odex_benefit/models/service_request.py index f6ba2683e..afc5390b6 100644 --- a/odex25_benefit/odex_benefit/models/service_request.py +++ b/odex25_benefit/odex_benefit/models/service_request.py @@ -20,7 +20,8 @@ class ServiceRequest(models.Model): researcher_id = fields.Many2one("committees.line", string="Researcher", related="family_id.researcher_id", store=True) family_category = fields.Many2one('benefit.category', string='Family Category', - related='family_id.benefit_category_id') + related='family_id.benefit_category_id', search="_search_benefit_category_id") + family_code = fields.Char(string='Family Code', related='family_id.code', store=True) benefit_member_count = fields.Integer(string="Benefit Member count", related='family_id.benefit_member_count') branch_custom_id = fields.Many2one('branch.settings', string="Branch", related='family_id.branch_custom_id', store=True) @@ -58,7 +59,7 @@ class ServiceRequest(models.Model): rent_start_date = fields.Date(string='Rent Start Date', compute='_compute_rent_details', store=True) rent_end_date = fields.Date(string='Rent End Date', compute='_compute_rent_details', store=True) rent_amount = fields.Float(string='Rent Amount', compute='_compute_rent_details', store=True) - rent_amount_payment = fields.Float(string='Rent Amount Payment', compute='_get_rent_amount_payment',store=True) + rent_amount_payment = fields.Float(string='Rent Amount Payment', compute='_get_rent_amount_payment', store=True) payment_type = fields.Selection( [ ('1', 'Yearly'), @@ -204,6 +205,9 @@ class ServiceRequest(models.Model): compute='_compute_related_information_html', store=True, ) researcher_opinion = fields.Html(string='Specialist Opinion', tracking=True) + def _search_benefit_category_id(self, operator, value): + return [('family_id.benefit_category_id', operator, value)] + def action_create_project(self): pass @@ -758,11 +762,6 @@ class ServiceRequest(models.Model): rec.service_cat = False rec.available_service_cats = False - @api.onchange('service_cat', 'family_id') - def _onchange_service_cat(self): - if self.service_cat.service_type == 'rent' and self.family_id.property_type_code != 'rent' and self.benefit_type == 'family': - raise UserError(_("You cannot benefit from this service (property type not rent)")) - @api.onchange('start', 'end', 'rent_start_date', 'rent_end_date', 'payment_type') def _check_date_range(self): for rec in self: @@ -979,7 +978,7 @@ class ServiceRequest(models.Model): else: if service_type in special_services: if service_type == 'electrical_devices': - #rec.service_max_amount = rec.device_id.price_unit if rec.device_id else 0.0 + # rec.service_max_amount = rec.device_id.price_unit if rec.device_id else 0.0 if rec.device_id: rec.service_max_amount = rec.device_id.price_unit * rec.requested_quantity rec.requested_service_amount = rec.service_max_amount diff --git a/odex25_benefit/odex_benefit/views/actions_and_menus.xml b/odex25_benefit/odex_benefit/views/actions_and_menus.xml index 31e9ac5a3..7ac943335 100644 --- a/odex25_benefit/odex_benefit/views/actions_and_menus.xml +++ b/odex25_benefit/odex_benefit/views/actions_and_menus.xml @@ -207,7 +207,6 @@ res.bank tree,form -

Create the first Bank

diff --git a/odex25_benefit/odex_benefit/views/benefit_config_view.xml b/odex25_benefit/odex_benefit/views/benefit_config_view.xml index 3553bf92c..43bdbe8ac 100644 --- a/odex25_benefit/odex_benefit/views/benefit_config_view.xml +++ b/odex25_benefit/odex_benefit/views/benefit_config_view.xml @@ -544,38 +544,6 @@
- - - Odex - Banks form - res.bank - primary - -
- - - - - - - - - - - -
-
-
- - banks_view_tree - res.bank - - - - - - - - diff --git a/odex25_benefit/odex_benefit/views/benefit_view.xml b/odex25_benefit/odex_benefit/views/benefit_view.xml index b34126bf7..29b6ce59c 100644 --- a/odex25_benefit/odex_benefit/views/benefit_view.xml +++ b/odex25_benefit/odex_benefit/views/benefit_view.xml @@ -2083,7 +2083,7 @@ grant.benefit - + @@ -2125,12 +2125,12 @@ grant.benefit + - diff --git a/odex25_benefit/odex_benefit/views/family_members.xml b/odex25_benefit/odex_benefit/views/family_members.xml index 5e469331e..193088428 100644 --- a/odex25_benefit/odex_benefit/views/family_members.xml +++ b/odex25_benefit/odex_benefit/views/family_members.xml @@ -180,6 +180,9 @@ + + + @@ -337,6 +340,7 @@ family.member + diff --git a/odex25_benefit/odex_benefit/views/service_request.xml b/odex25_benefit/odex_benefit/views/service_request.xml index 7bfdbcec6..a83a6857a 100644 --- a/odex25_benefit/odex_benefit/views/service_request.xml +++ b/odex25_benefit/odex_benefit/views/service_request.xml @@ -196,12 +196,13 @@ + @@ -210,7 +211,7 @@ + attrs="{'invisible':[('benefit_type','!=','member')],'readonly':[('state','not in',['draft','researcher'])],'required':[('benefit_type','=','member')]}"/> @@ -233,10 +234,10 @@ + attrs="{'readonly':[('state','not in',['draft','researcher'])]}"/> + attrs="{'readonly':[('state','not in',['draft','researcher'])]}"/> + attrs="{'invisible':[('service_type', '!=', 'electrical_devices')],'readonly':[('state','not in',['draft','researcher'])]}"> @@ -438,6 +440,7 @@ @@ -461,18 +464,22 @@ service.request.tree service.request - + + + - + - + - + + @@ -495,12 +502,19 @@ service.request + + + + + - - + + + diff --git a/odex25_benefit/odex_benefit/wizards/family_bank_report_wizard.py b/odex25_benefit/odex_benefit/wizards/family_bank_report_wizard.py index 37ee85c71..432206121 100644 --- a/odex25_benefit/odex_benefit/wizards/family_bank_report_wizard.py +++ b/odex25_benefit/odex_benefit/wizards/family_bank_report_wizard.py @@ -40,7 +40,7 @@ class FamilyBankReportWizard(models.TransientModel): beneficiary_name = family.acc_holder_name or '' beneficiary_id = family.acc_holder_id_number or '' grouped[key] = { - 'bank_name': (family.bank_id.code or ''), + 'bank_name': (family.bank_id.bic or ''), 'account_number': 'SA' + (family.acc_number or ''), 'beneficiary_name': beneficiary_name, 'beneficiary_id': beneficiary_id,