From 8373f078b547b3af53ca391c6b3c27dd1a4f54de Mon Sep 17 00:00:00 2001 From: younes Date: Tue, 16 Dec 2025 19:46:57 +0100 Subject: [PATCH] [IMP] odex_benefit: IMP benefit --- odex25_benefit/odex_benefit/i18n/ar_001.po | 67 ++++++++++++++++++- .../odex_benefit/models/family_expense.py | 15 ++--- .../models/family_expense_line.py | 2 +- .../odex_benefit/models/seasonal_service.py | 13 ++-- .../views/family_expense_view.xml | 2 +- .../views/seasonal_service_view.xml | 4 +- .../wizards/reason_for_return_wizard.py | 28 ++++++-- .../odex_benefit/wizards/researcher_wizard.py | 5 ++ 8 files changed, 114 insertions(+), 22 deletions(-) diff --git a/odex25_benefit/odex_benefit/i18n/ar_001.po b/odex25_benefit/odex_benefit/i18n/ar_001.po index f1956665a..5e62a85f8 100644 --- a/odex25_benefit/odex_benefit/i18n/ar_001.po +++ b/odex25_benefit/odex_benefit/i18n/ar_001.po @@ -10057,6 +10057,7 @@ msgstr "إعادة جدولة" #. module: odex_benefit #: model:ir.model.fields,field_description:odex_benefit.field_changes_requests__researcher_ids +#: model:ir.model.fields,field_description:odex_benefit.field_benefit_expense_line__researcher_id #: model:ir.model.fields,field_description:odex_benefit.field_family_complaints__researcher_id #: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__researcher_id #: model:ir.model.fields,field_description:odex_benefit.field_service_request__researcher_id @@ -17365,6 +17366,7 @@ msgid "Third Approve" msgstr "اعتماد مديرة خدمات المستفيدين الإيقاف" #. module: odex_benefit +#: code:addons/odex_benefit/models/seasonal_service.py:0 #: code:addons/odex_benefit/models/family_expense.py:0 #, python-format msgid "Reason for Return" @@ -17614,4 +17616,67 @@ msgstr "رقم الجوال" #: code:addons/odex_benefit/models/benefit_config.py:0 #, python-format msgid "Please enter a valid Saudi mobile number (example: 05xxxxxxxx)." -msgstr "رجاءً أدخل رقم جوال سعودي صالح (مثال: 05xxxxxxxx)." \ No newline at end of file +msgstr "رجاءً أدخل رقم جوال سعودي صالح (مثال: 05xxxxxxxx)." + +#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_confirm_benefit_expense__has_draft_return_lines +msgid "Has Draft Return Lines" +msgstr "هل يحتوي على سطور رجيع مسودة" + +#. module: odex_benefit +#: code:addons/odex_benefit/models/family_expense.py:0 +#, python-format +msgid "This action is only available for return calculations." +msgstr "هذا الإجراء متاح فقط لحسابات الرجيع." + +#. module: odex_benefit +#: code:addons/odex_benefit/models/family_expense.py:0 +#, python-format +msgid "No return lines in draft state to send to specialist." +msgstr "لا توجد سطور رجيع في حالة المسودة لإرسالها إلى الأخصائي." + +#. module: odex_benefit +#: code:addons/odex_benefit/models/family_expense.py:0 +#, python-format +msgid "" +"The following families do not have an assigned researcher:\n" +"%s\n" +"\n" +"Please assign researchers to these families before sending." +msgstr "الأسر التالية ليس لديها أخصائي:\n" +"%s\n" +"\n" +"يرجى إسناد أخصائيين إلى هذه الأسر قبل الإرسال." + +#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_service_request__researcher_opinion +msgid "Specialist Opinion" +msgstr "رأي الأخصائي" + +#. module: odex_benefit +#: code:addons/odex_benefit/models/service_request.py:0 +#, python-format +msgid "Please write the specialist opinion before completing the action." +msgstr "يرجى كتابة رأي الأخصائي قبل إكمال الإجراء." + +#. module: odex_benefit +#: model_terms:ir.ui.view,arch_db:odex_benefit.view_confirm_benefit_expense_form +msgid "Send to Researchers" +msgstr "إرسال إلى الأخصائيين" + +#. module: odex_benefit +#: model_terms:ir.ui.view,arch_db:odex_benefit.service_request_form +msgid "Researcher Opinion" +msgstr "رأي الأخصائي" + +#. module: odex_benefit +#: code:addons/odex_benefit/wizards/reason_for_return_wizard.py:0 +#, python-format +msgid "" +"State Changed: %s → Calculated
Returned By: " +"%s
Reason: %s" +msgstr "تم تغيير الحالة: %s → تم الحساب
تم الإرجاع بواسطة: " +"%s
السبب: %s" + + + diff --git a/odex25_benefit/odex_benefit/models/family_expense.py b/odex25_benefit/odex_benefit/models/family_expense.py index 9d3d0afb6..e2431ade1 100644 --- a/odex25_benefit/odex_benefit/models/family_expense.py +++ b/odex25_benefit/odex_benefit/models/family_expense.py @@ -98,7 +98,7 @@ class ConfirmBenefitExpense(models.Model): line_domain_ids = fields.Many2many(comodel_name='benefit.expense.line', compute='_compute_domain_ids', string="Return Line Domain", ) - has_draft_return_lines = fields.Boolean(string="Has Pending Return Lines", + has_draft_return_lines = fields.Boolean(string="Has Draft Return Lines", compute='_compute_has_draft_return_lines', ) @api.depends('return_expense_line_ids') @@ -321,10 +321,9 @@ class ConfirmBenefitExpense(models.Model): rec.family_monthly_othaime = sum(lines.mapped('family_monthly_othaime')) rec.family_monthly_total = rec.family_monthly_income + rec.family_monthly_meals + rec.family_monthly_clotting - expense_lines = lines.filtered(lambda l: not l.meal_card) othaim_lines = lines.filtered('meal_card') - rec.family_count_expense = len(expense_lines.mapped('family_id')) - rec.member_count_expense = sum(expense_lines.mapped('benefit_member_count')) + rec.family_count_expense = len(lines.mapped('family_id')) + rec.member_count_expense = sum(lines.mapped('benefit_member_count')) rec.family_count_othaim = len(othaim_lines.mapped('family_id')) rec.member_count_othaim = sum(othaim_lines.mapped('benefit_member_count')) @@ -352,21 +351,21 @@ class ConfirmBenefitExpense(models.Model): if not return_lines: raise UserError(_("No return lines in draft state to send to specialist.")) - lines_without_specialist = self.env['benefit.expense.line'] + lines_without_researcher = self.env['benefit.expense.line'] for line in return_lines: family = line.family_id researcher = family.researcher_id if hasattr(family, 'researcher_id') else False if not researcher: - lines_without_specialist |= line + lines_without_researcher |= line continue line.write({ 'researcher_id': researcher.id, 'state': 'waiting_processing' }) - if lines_without_specialist: - families_without_specialist = lines_without_specialist.mapped('family_id.name') + if lines_without_researcher: + families_without_specialist = lines_without_researcher.mapped('family_id.name') raise UserError(_( "The following families do not have an assigned researcher:\n%s\n\n" "Please assign researchers to these families before sending." diff --git a/odex25_benefit/odex_benefit/models/family_expense_line.py b/odex25_benefit/odex_benefit/models/family_expense_line.py index 964a71c73..e7254e2de 100644 --- a/odex25_benefit/odex_benefit/models/family_expense_line.py +++ b/odex25_benefit/odex_benefit/models/family_expense_line.py @@ -34,7 +34,7 @@ class BenefitExpenseLine(models.Model): ('waiting_processing', 'Waiting Processing'), ('processing_done', 'Processing Done'), ], string="Status", default='draft', tracking=True) - researcher_id = fields.Many2one("committees.line", string="Researcher") + researcher_id = fields.Many2one("committees.line", string="Researcher", tracking=True, copy=False) @api.depends('family_monthly_income', 'family_monthly_clotting', 'family_monthly_meals') def _compute_total_family_expenses(self): diff --git a/odex25_benefit/odex_benefit/models/seasonal_service.py b/odex25_benefit/odex_benefit/models/seasonal_service.py index c5be0c2b1..f36fdd84b 100644 --- a/odex25_benefit/odex_benefit/models/seasonal_service.py +++ b/odex25_benefit/odex_benefit/models/seasonal_service.py @@ -384,11 +384,14 @@ class SeasonalService(models.Model): rec.state = 'draft' def action_reset_to_calculated(self): - for rec in self: - rec.service_requests_ids.write({'state': 'draft'}) - rec.payment_order_id.unlink() - rec.vendor_bill.unlink() - rec.state = 'calculated' + self.ensure_one() + return { + 'name': _('Reason for Return'), + 'type': 'ir.actions.act_window', + 'res_model': 'reason.for.return.wizard', + 'view_mode': 'form', + 'target': 'new', + } def action_open_related_move_records(self): return { diff --git a/odex25_benefit/odex_benefit/views/family_expense_view.xml b/odex25_benefit/odex_benefit/views/family_expense_view.xml index 73b33e3db..e9bb6d0f8 100644 --- a/odex25_benefit/odex_benefit/views/family_expense_view.xml +++ b/odex25_benefit/odex_benefit/views/family_expense_view.xml @@ -49,7 +49,7 @@ groups="odex_benefit.group_family_services_manager" type="object" states="draft" class="btn btn-info"/> -