From 46ccc891abce25883b820f9bfcb3bae7bb17990e Mon Sep 17 00:00:00 2001 From: younes Date: Sun, 23 Nov 2025 08:09:13 +0100 Subject: [PATCH] [IMP] odex_benefit: Clean up unused code --- odex25_ensan/odex_benefit/MODULE_REVIEW.md | 3 - odex25_ensan/odex_benefit/__manifest__.py | 1 - odex25_ensan/odex_benefit/i18n/ar_001.po | 28 ----- .../odex_benefit/models/payment_order.py | 32 +++--- .../odex_benefit/models/seasonal_service.py | 107 +++--------------- .../odex_benefit/security/ir.model.access.csv | 2 - .../odex_benefit/views/payment_order.xml | 19 +--- odex25_ensan/odex_benefit/wizards/__init__.py | 1 - .../wizards/exchange_order_wizard.py | 33 ------ .../wizards/exchange_order_wizard.xml | 25 ---- 10 files changed, 34 insertions(+), 217 deletions(-) delete mode 100644 odex25_ensan/odex_benefit/wizards/exchange_order_wizard.py delete mode 100644 odex25_ensan/odex_benefit/wizards/exchange_order_wizard.xml diff --git a/odex25_ensan/odex_benefit/MODULE_REVIEW.md b/odex25_ensan/odex_benefit/MODULE_REVIEW.md index 213d7d660..dbb7baedf 100644 --- a/odex25_ensan/odex_benefit/MODULE_REVIEW.md +++ b/odex25_ensan/odex_benefit/MODULE_REVIEW.md @@ -486,9 +486,6 @@ ### 3. **Exception Wizard** (`exception_wizard.py`) - إدخال معلومات الاستثناء -### 4. **Exchange Order Wizard** (`exchange_order_wizard.py`) -- إنشاء أمر صرف لطلبات متعددة - ### 5. **Entity Refused Wizard** (`entity_refused_wizard.py`) - إدخال سبب الرفض diff --git a/odex25_ensan/odex_benefit/__manifest__.py b/odex25_ensan/odex_benefit/__manifest__.py index d4bc3829d..6abce9800 100644 --- a/odex25_ensan/odex_benefit/__manifest__.py +++ b/odex25_ensan/odex_benefit/__manifest__.py @@ -30,7 +30,6 @@ 'wizards/researcher_wizard.xml', 'wizards/suspend_reason_wizard.xml', 'wizards/exception_wizard.xml', - 'wizards/exchange_order_wizard.xml', 'views/visit.xml', 'views/main_service.xml', diff --git a/odex25_ensan/odex_benefit/i18n/ar_001.po b/odex25_ensan/odex_benefit/i18n/ar_001.po index da85a865e..55714fe9b 100644 --- a/odex25_ensan/odex_benefit/i18n/ar_001.po +++ b/odex25_ensan/odex_benefit/i18n/ar_001.po @@ -2752,7 +2752,6 @@ msgstr "بإمكانه النشر " #: model_terms:ir.ui.view,arch_db:odex_benefit.view_entity_return_reason_wizard_form #: model_terms:ir.ui.view,arch_db:odex_benefit.view_exception_member_wizard_form #: model_terms:ir.ui.view,arch_db:odex_benefit.view_exception_wizard_form -#: model_terms:ir.ui.view,arch_db:odex_benefit.view_exchange_order_wizard_form #: model_terms:ir.ui.view,arch_db:odex_benefit.view_reason_for_return_wizard #: model_terms:ir.ui.view,arch_db:odex_benefit.view_refuse_reason_wizard #: model_terms:ir.ui.view,arch_db:odex_benefit.view_resarcher_member_wizard_form @@ -3192,7 +3191,6 @@ msgstr "إعدادات ملف الأسرة" #: model_terms:ir.ui.view,arch_db:odex_benefit.return_reason_wizard_form #: model_terms:ir.ui.view,arch_db:odex_benefit.view_confirm_benefit_expense_form #: model_terms:ir.ui.view,arch_db:odex_benefit.view_confirm_benefit_expense_search -#: model_terms:ir.ui.view,arch_db:odex_benefit.view_exchange_order_wizard_form #: model_terms:ir.ui.view,arch_db:odex_benefit.view_reason_for_return_wizard #: model_terms:ir.ui.view,arch_db:odex_benefit.view_refuse_reason_wizard #: model_terms:ir.ui.view,arch_db:odex_benefit.view_visit_skip_otp_wizard_form @@ -12363,7 +12361,6 @@ msgstr "" #: code:addons/odex_benefit/models/benefit.py:0 #: code:addons/odex_benefit/models/family_members.py:0 #: code:addons/odex_benefit/models/service_request.py:0 -#: code:addons/odex_benefit/models/payment_order.py:0 #: code:addons/odex_benefit/models/visit.py:0 #, python-format msgid "You cannot delete this record" @@ -14323,12 +14320,6 @@ msgstr "بانتظار استلام" msgid "Family Received Device" msgstr "تم" -#. module: odex_benefit -#: model:ir.actions.act_window,name:odex_benefit.action_exchange_order_wizard -#: model_terms:ir.ui.view,arch_db:odex_benefit.view_exchange_order_wizard_form -msgid "Exchange Order" -msgstr "إنشاء أمر صرف" - #. module: odex_benefit #: model:ir.model.fields,field_description:odex_benefit.field_seasonal_service__name msgid "Reference" @@ -14340,7 +14331,6 @@ msgid "Request Date" msgstr "تاريخ الطلب" #. module: odex_benefit -#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_grant_benefit__service_type_id #: model:ir.model.fields,field_description:odex_benefit.field_seasonal_service__service_type_id msgid "Seasonal Service Type" msgstr "بند الخدمة" @@ -14352,13 +14342,11 @@ msgstr " الفروع" #. module: odex_benefit #: model:ir.model.fields,field_description:odex_benefit.field_benefit_expense_line__family_category_id -#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_grant_benefit__family_category #: model:ir.model.fields,field_description:odex_benefit.field_seasonal_service__family_category_ids msgid "Family Category" msgstr "فئة الأسرة" #. module: odex_benefit -#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_grant_benefit__aid_amount #: model:ir.model.fields,field_description:odex_benefit.field_seasonal_service__aid_amount msgid "Aid Amount" msgstr "قيمة الخدمة" @@ -14378,17 +14366,6 @@ msgstr "عدد الأفراد المستفيدين" msgid "Total Family Disbursement Amount" msgstr "الأجمالي" -#. module: odex_benefit -#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_grant_benefit__family_id -#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_service__family_ids -msgid "Family" -msgstr "الأسرة" - -#. module: odex_benefit -#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_grant_benefit__branch_custom_id -msgid "Branch" -msgstr "الفرع" - #. module: odex_benefit #: model:ir.model.fields,field_description:odex_benefit.field_services_settings__service_number #: model_terms:ir.ui.view,arch_db:odex_benefit.payment_orders_form @@ -14403,7 +14380,6 @@ msgid "Service Amount" msgstr "مبلغ الخدمة" #. module: odex_benefit -#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_grant_benefit__account_id #: model:ir.model.fields,field_description:odex_benefit.field_seasonal_service__account_id msgid "Expenses Account" msgstr "حساب المصروف" @@ -14416,7 +14392,6 @@ msgstr "أمر الصرف" #. module: odex_benefit #: model:ir.model.fields,field_description:odex_benefit.field_benefit_expense_line__payment_order_id #: model:ir.model.fields,field_description:odex_benefit.field_confirm_benefit_expense__payment_order_id -#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_grant_benefit__payment_order_id #: model:ir.model.fields,field_description:odex_benefit.field_seasonal_service__payment_order_id #: model:ir.model.fields,field_description:odex_benefit.field_service_request__payment_order_id #: model:ir.model.fields.selection,name:odex_benefit.selection__services_settings__payment_method__payment_order @@ -14459,7 +14434,6 @@ msgstr "هل هي خدمة موسمية" #. module: odex_benefit #: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__seasonal_service_id -#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_grant_benefit__seasonal_service_id #: model:ir.model.fields,field_description:odex_benefit.field_service_request__seasonal_service_id #: model_terms:ir.ui.view,arch_db:odex_benefit.seasonal_service_form_view msgid "Seasonal Service" @@ -14475,7 +14449,6 @@ msgstr "طلبات الخدمات الموسمية" #. module: odex_benefit #: model:ir.actions.act_window,name:odex_benefit.seasonal_service_action #: model:ir.ui.menu,name:odex_benefit.seasonal_service_menu -#: model_terms:ir.ui.view,arch_db:odex_benefit.payment_orders_form #: model_terms:ir.ui.view,arch_db:odex_benefit.seasonal_service_tree_view msgid "Seasonal Services" msgstr "الخدمات الموسمية" @@ -16975,7 +16948,6 @@ msgid "Accounting Transfer" msgstr "الترحيل المالي" #. module: odex_benefit -#: model:ir.model.fields,field_description:odex_benefit.field_exchange_order_wizard__accountant_id #: model:ir.model.fields,field_description:odex_benefit.field_family_validation_setting__accountant_id #: model:ir.model.fields,field_description:odex_benefit.field_payment_orders__accountant_id #: model:ir.model.fields,field_description:odex_benefit.field_service_request__accountant_id diff --git a/odex25_ensan/odex_benefit/models/payment_order.py b/odex25_ensan/odex_benefit/models/payment_order.py index ee02c51cf..b4627683e 100644 --- a/odex25_ensan/odex_benefit/models/payment_order.py +++ b/odex25_ensan/odex_benefit/models/payment_order.py @@ -14,9 +14,11 @@ class PaymentOrders(models.Model): return setting.payment_journal_id.id if setting and setting.journal_id else False name = fields.Char(string="Code", copy=False, readonly=True, default=lambda x: _('New')) + # todo handel _compute_ref_num ref_num = fields.Many2one('seasonal.service', string='Ref. Number', compute='_compute_ref_num') payment_order_date = fields.Datetime(string="Payment Order Date", default=fields.Datetime.now) accountant_id = fields.Many2one('res.users', string='Accountant') + # todo remove _compute_service_type_id and _inverse_service_type_id payment_order_description = fields.Many2one('services.settings', string='Payment Order Description', compute='_compute_service_type_id', @@ -28,10 +30,8 @@ class PaymentOrders(models.Model): string='Service Requests', ) benefit_expense_line_ids = fields.One2many('benefit.expense.line', 'payment_order_id', string='Benefit Expense Lines') + # todo need to remove seasonal_requests_ids seasonal_requests_ids = fields.One2many('seasonal.service', 'payment_order_id', string='Seasonal Requests') - family_seasonal_requests_ids = fields.One2many('seasonal.grant.benefit', 'payment_order_id', - string='Seasonal Requests') - total_moves = fields.Integer(string="Total Move Lines", compute='_get_total_moves') state = fields.Selection(string='Status', selection=[('draft', 'Draft'), ('waiting_head', 'Waiting for Head of Expenses Department'), @@ -51,7 +51,8 @@ class PaymentOrders(models.Model): ], string='Payment Order Type', required=True, default='services', ) move_id = fields.Many2one('account.move', ondelete='cascade') - total_amount = fields.Float(string="Total Amount", compute='_compute_total_amount') + move_count = fields.Integer(string="Move Count", compute='_compute_move_count') + total_amount = fields.Float(string="Total Amount", compute='_compute_total_amount', store=True) company_id = fields.Many2one('res.company', string='Company', default=lambda self: self.env.company) currency_id = fields.Many2one('res.currency', string='Currency', related='company_id.currency_id') @@ -87,7 +88,6 @@ class PaymentOrders(models.Model): line_ids = rec.get_lines() move_vals = { 'journal_id': rec.journal_id.id, - # 'payment_order_id': rec.id, # bug 'line_ids': line_ids, 'ref': rec.name + '/' + rec.type, } @@ -156,9 +156,13 @@ class PaymentOrders(models.Model): def unlink(self): for payment in self: if payment.state not in ['draft']: - raise ValidationError(_('You cannot delete this record')) + raise ValidationError(_( + "You cannot delete this payment order.\n" + "Only records in the *Draft* state may be deleted." + )) return super(PaymentOrders, self).unlink() + # todo remove search override @api.model def search(self, args, offset=0, limit=None, order=None, count=False): if self.env.user and self.env.user.id and self.env.user.has_group( @@ -166,22 +170,17 @@ class PaymentOrders(models.Model): args += [('accountant_id', '=', self.env.user.id)] return super(PaymentOrders, self).search(args, offset, limit, order, count) - def _get_total_moves(self): + def _compute_move_count(self): for rec in self: - rec.total_moves = self.env['account.move'].search_count([ - ('payment_order_id', '=', rec.id), ('move_type', '!=', 'in_invoice')]) + rec.move_count = 1 if rec.move_id else 0 def action_open_related_move_records(self): - """ Opens a tree view with related records filtered by a dynamic domain """ - moves = self.env['account.move'].search([ - ('payment_order_id', '=', self.id), ('move_type', '!=', 'in_invoice') - ]).ids return { 'name': _('Moves'), 'type': 'ir.actions.act_window', 'res_model': 'account.move', 'view_mode': 'tree,form', - 'domain': [('id', 'in', moves)], + 'domain': [('id', 'in', self.move_id.ids)], } def _prepare_entry_lines(self, line, validation_setting): @@ -226,7 +225,7 @@ class PaymentOrders(models.Model): for request in self.service_requests_ids: lines.append( { - 'name': f'{"Family code"}{request.family_id.code}-{request.description}-{request.payment_order_id.name}-{request.payment_order_id.ref_num}', + 'name': f'{_("Family code")}-{request.family_id.code}-{request.description}-{request.payment_order_id.name}-{request.payment_order_id.ref_num}', 'benefit_family_id': request.family_id.id, 'account_id': request.account_id.id, 'partner_id': request.family_id.partner_id.id, @@ -243,9 +242,10 @@ class PaymentOrders(models.Model): total_credit += credit_total lines += sum_line + payment_type = dict(self._fields['type']._description_selection(self.env)).get(self.type) lines.append({ 'account_id': self.journal_id.default_account_id.id, - 'name': f'{self.name}-{self.type}', + 'name': f'{self.name}-{payment_type}', 'credit': total_credit, 'debit': 0.0, }) diff --git a/odex25_ensan/odex_benefit/models/seasonal_service.py b/odex25_ensan/odex_benefit/models/seasonal_service.py index ac8e4d140..16f5fc439 100644 --- a/odex25_ensan/odex_benefit/models/seasonal_service.py +++ b/odex25_ensan/odex_benefit/models/seasonal_service.py @@ -26,7 +26,6 @@ class SeasonalService(models.Model): 'category_id', string='Family Category', compute='_compute_family_category_ids', ) - family_ids = fields.One2many('seasonal.grant.benefit', 'seasonal_service_id', string='Family') aid_amount = fields.Float(string="Aid Amount", compute="_compute_amounts", store=True, readonly=False) benefit_member_count = fields.Integer(string="Benefit Member count", compute="compute_family_benefit", store=True) family_count = fields.Integer(string="Family count", compute="compute_family_benefit", store=True) @@ -117,27 +116,22 @@ class SeasonalService(models.Model): if self.member_ids: self.member_ids = [(5, 0, 0)] - def action_open_exchange_order_wizard(self): - - ids = [] + def action_create_payment_order(self): for rec in self: - ids.append(rec.id) - seasonal_services = self.env['seasonal.service'].browse(ids) - if any(request.state not in 'accounting_approve' for request in seasonal_services): - raise UserError(_("All selected requests should be in Accounting Approve state")) - if any(request.payment_order_id for request in seasonal_services): - raise UserError(_("There are already disbursement orders associated with the request(s).")) - else: - return { - 'type': 'ir.actions.act_window', - 'name': 'Exchange Order', - 'res_model': 'exchange.order.wizard', - 'view_mode': 'form', - 'target': 'new', - 'context': {'default_service_ids': ids, - 'seasonal_service': True, - } - } + if rec.state != 'accounting_approve': + raise UserError(_("All selected requests should be in Accounting Approve state")) + if rec.payment_order_id: + raise UserError(_("There are already disbursement orders associated with the request(s).")) + self.env['payment.orders'].create({ + 'state': 'draft', + 'accountant_id': rec.service_type_id.accountant_id.id, + 'seasonal_requests_ids': rec.ids, + 'service_requests_ids': rec.service_requests_ids.ids, + 'is_seasonal': True, + 'type': 'seasonal_services', + }) + # rec.payment_order_id = payment_order.id + rec.is_payment_order_done = True @api.depends('service_requests_ids') def compute_family_benefit(self): @@ -199,19 +193,6 @@ class SeasonalService(models.Model): rec.state = 'done' rec.service_requests_ids.write({'state': 'family_received_device'}) - def action_create_payment_order(self): - for rec in self: - self.env['payment.orders'].create({ - 'state': 'draft', - 'accountant_id': rec.service_type_id.accountant_id.id, - 'seasonal_requests_ids': rec.ids, - 'service_requests_ids': rec.service_requests_ids.ids, - 'is_seasonal': True, - 'type': 'seasonal_services', - }) - # rec.payment_order_id = payment_order.id - rec.is_payment_order_done = True - def action_calculate(self): for rec in self: rec._generate_service_requests() @@ -284,61 +265,3 @@ class SeasonalService(models.Model): for rec in self: rec.service_requests_ids.write({'state': 'draft'}) rec.state = 'calculated' - - -class SeasonalGrantBenefit(models.Model): - _name = 'seasonal.grant.benefit' - - family_id = fields.Many2one('grant.benefit', string='Family', required=True) - family_category = fields.Many2one('benefit.category', string='Family Category', - related='family_id.benefit_category_id') - branch_custom_id = fields.Many2one('branch.settings', string="Branch", related='family_id.branch_custom_id', - store=True) - aid_amount = fields.Float(string="Aid Amount", compute="_compute_aid_amount", store=True) - account_id = fields.Many2one('account.account', string='Expenses Account', related='seasonal_service_id.account_id') - name = fields.Char(string='Reference', related='seasonal_service_id.name') - service_type_id = fields.Many2one('services.settings', related='seasonal_service_id.service_type_id', - string="Seasonal Service Type") - seasonal_service_id = fields.Many2one('seasonal.service', string='Seasonal Service') - payment_order_id = fields.Many2one('payment.orders', string='Payment Order') - - @api.depends('family_id', 'service_type_id') - def _compute_aid_amount(self): - """ Compute Aid Amount based on service_type_id """ - for record in self: - aid_amount = 0.0 - # benefit_members = 1 - if record.service_type_id: - if record.service_type_id.service_type == 'ramadan_basket': - aid_amount = record.service_type_id.max_amount - elif record.service_type_id.service_type == 'eid_gift' and record.family_id: - benefit_members = len(record.family_id.member_ids.filtered( - lambda x: x.member_status == 'benefit' and x.age <= record.service_type_id.max_age)) - aid_amount = record.service_type_id.max_amount * benefit_members - elif record.service_type_id.service_type == 'winter_clothing' and record.family_id: - benefit_members = record.family_id.mapped('benefit_member_count')[0] - aid_amount = record.service_type_id.max_amount * benefit_members - record.write({'aid_amount': aid_amount}) - - @api.onchange('family_id') - def get_family_id_domain(self): - domain = ['|', ('state', '=', 'second_approve'), '&', ('state', 'in', ('waiting_approve', 'first_approve')), - ('action_type', '=', 'suspended')] - if self.seasonal_service_id: - if self.seasonal_service_id.branch_ids: - domain.append( - ('branch_custom_id', 'in', self.seasonal_service_id.branch_ids.ids)) # Filter by selected branches - - if self.seasonal_service_id.family_category_ids: - domain.append(('benefit_category_id', 'in', - self.seasonal_service_id.family_category_ids.ids)) # Filter by selected family categories - - if self.service_type_id and self.service_type_id.service_type == 'eid_gift': - family_ids = self.env['family.member'].search( - [('age', '<=', self.service_type_id.max_age), - ('member_status', '=', 'benefit')]).benefit_id - - domain.append(('id', 'in', family_ids.ids)) # Append the filtered family IDs to domain - families = self.seasonal_service_id.family_ids.mapped('family_id') - domain.append(('id', 'not in', families.ids)) - return {'domain': {'family_id': domain}} diff --git a/odex25_ensan/odex_benefit/security/ir.model.access.csv b/odex25_ensan/odex_benefit/security/ir.model.access.csv index d055990d6..007479da1 100644 --- a/odex25_ensan/odex_benefit/security/ir.model.access.csv +++ b/odex25_ensan/odex_benefit/security/ir.model.access.csv @@ -132,13 +132,11 @@ access_exception_wizard,access_exception_wizard,model_exception_wizard,base.grou access_exception_reason,access_exception_reason,model_exception_reason,base.group_user,1,1,1,1 access_service_request,access_service_request,model_service_request,base.group_user,1,1,1,1 access_seasonal_service,access_seasonal_services,model_seasonal_service,base.group_user,1,1,1,1 -access_seasonal_grant_benefit,access_seasonal_grant_benefits,model_seasonal_grant_benefit,base.group_user,1,1,1,1 access_marital_status,access_marital_status,model_marital_status,base.group_user,1,1,1,1 access_service_attachments_settings,access_service_attachments_settings,model_service_attachments_settings,base.group_user,1,1,1,1 access_category_amount_line,access_category_amount_line,model_category_amount_line,base.group_user,1,1,1,1 access_home_maintenance_lines,access_home_maintenance_lines,model_home_maintenance_lines,base.group_user,1,1,1,1 access_home_maintenance_items,access_home_maintenance_items,model_home_maintenance_items,base.group_user,1,1,1,1 -access_exchange_order_wizard,access_exchange_order_wizard,model_exchange_order_wizard,base.group_user,1,1,1,1 access_payment_orders,access_payment_orders,model_payment_orders,base.group_user,1,1,1,1 access_electrical_devices,access_electrical_devices,model_electrical_devices,base.group_user,1,1,1,1 access_home_furnishing_lines,access_home_furnishing_lines,model_home_furnishing_lines,base.group_user,1,1,1,1 diff --git a/odex25_ensan/odex_benefit/views/payment_order.xml b/odex25_ensan/odex_benefit/views/payment_order.xml index 0c64a0390..6ceffbff3 100644 --- a/odex25_ensan/odex_benefit/views/payment_order.xml +++ b/odex25_ensan/odex_benefit/views/payment_order.xml @@ -49,8 +49,8 @@
@@ -70,7 +70,7 @@ - + - - - - - - - - - - - - - - exchange.order.wizard.form - exchange.order.wizard - -
- - - -
-
-
-
-
- - - - Exchange Order - exchange.order.wizard - form - new - -