diff --git a/odex25_ensan/odex_takaful/__manifest__.py b/odex25_ensan/odex_takaful/__manifest__.py index c69cb8324..e4d80f24e 100644 --- a/odex25_ensan/odex_takaful/__manifest__.py +++ b/odex25_ensan/odex_takaful/__manifest__.py @@ -61,6 +61,7 @@ 'wizards/add_details_wizard.xml', 'wizards/donation_extension_wizard.xml', 'wizards/replace_sponsor_wizard.xml', + 'wizards/add_benefit_wizard.xml', 'views/donations_details_lines.xml', 'views/donation_extension_history_views.xml', 'views/donation_replacement_log_views.xml', diff --git a/odex25_ensan/odex_takaful/i18n/ar_001.po b/odex25_ensan/odex_takaful/i18n/ar_001.po index 52e740ab8..98e603f47 100644 --- a/odex25_ensan/odex_takaful/i18n/ar_001.po +++ b/odex25_ensan/odex_takaful/i18n/ar_001.po @@ -840,6 +840,7 @@ msgid "Beneficiary Filters" msgstr " حقول التصفية" #. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_add_benefit_wizard__benefit_id #: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__benefit_id #: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__benefit_id msgid "Beneficiary Name" @@ -1105,6 +1106,7 @@ msgstr "هل يمكن جعل الكافل نشطًا مرة أخرى؟" #. module: odex_takaful #: model:ir.model.fields.selection,name:odex_takaful.selection__month_payment__state__cancel +#: model_terms:ir.ui.view,arch_db:odex_takaful.add_benefit_wizard_form #: model_terms:ir.ui.view,arch_db:odex_takaful.add_details_wizard_form #: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_form #: model_terms:ir.ui.view,arch_db:odex_takaful.donation_extension_wizard_form @@ -1296,14 +1298,19 @@ msgid "Close To Cancel Date" msgstr "" #. module: odex_takaful -#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__state__closed #: model:ir.model.fields.selection,name:odex_takaful.selection__sponsorship_states__name__closed #: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__state__closed -#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_search #: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_view_search msgid "Closed" msgstr "مغلق" +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__state__closed +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_search + +msgid "Closed" +msgstr "ملغي" + #. module: odex_takaful #: model:ir.model.fields,field_description:odex_takaful.field_month_payment__code #: model:ir.model.fields,field_description:odex_takaful.field_month_payment_line__code @@ -1879,6 +1886,7 @@ msgid "Donate For Another Person" msgstr "التبرع لشخص آخر" #. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__donation_replacement_log__record_type__donation #: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__donation_type__donation #: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__donation_types__donation #: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__record_type__donation @@ -1921,6 +1929,7 @@ msgid "Donation Date" msgstr "تاريخ التبرع" #. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donation_replacement_log__donation_detail_id #: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_history__donation_detail_id #: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_wizard__donation_detail_id msgid "Donation Detail" @@ -4835,6 +4844,7 @@ msgstr "استلام الأموال" #. module: odex_takaful #: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__record_type +#: model:ir.model.fields,field_description:odex_takaful.field_donation_replacement_log__record_type #: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__record_type #: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__record_type msgid "Record Type" @@ -5092,6 +5102,7 @@ msgid "Replacement Processes" msgstr "عمليات الإستبدال" #. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donation_replacement_log__replacement_reason_id #: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__replacement_reason_id #: model:ir.model.fields,field_description:odex_takaful.field_replacement_wiz__replacement_reason_id #: model_terms:ir.ui.view,arch_db:odex_takaful.view_replacement_wiz_form @@ -5630,6 +5641,7 @@ msgstr "سجل الكفلاء" #: model:ir.model.fields,field_description:odex_takaful.field_refund_details_lines__sponsorship_id #: model:ir.model.fields,field_description:odex_takaful.field_refund_wiz__sponsorship_id #: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__sponsorship_id +#: model:ir.model.fields.selection,name:odex_takaful.selection__donation_replacement_log__record_type__sponsorship #: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_benefit_arrears__sponsorship_id #: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__sponsorship_id #: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__sponsorship_id @@ -5642,6 +5654,7 @@ msgstr "سجل الكفلاء" #: model:ir.model.fields.selection,name:odex_takaful.selection__replacement_process__record_type__sponsorship #: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsor_operation__operation_type__sponsorship #: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__record_type__sponsorship +#: model:ir.model.fields.selection,name:odex_takaful.selection__donation_replacement_log__record_type__sponsorship #: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_search #: model_terms:ir.ui.view,arch_db:odex_takaful.kafalat_cancel_report_pdf #: model_terms:ir.ui.view,arch_db:odex_takaful.kafalat_payment_report_pdf @@ -7134,6 +7147,7 @@ msgid "هدية مالية" msgstr "" #. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donation_replacement_log__sponsor_id #: model:ir.model.fields.selection,name:odex_takaful.selection__replacement_process__registered_type__sponsor #: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__registered_type__sponsor #, python-format @@ -7341,7 +7355,8 @@ msgstr "المستفيد القديم" #: model:ir.model.fields,field_description:odex_takaful.field_replacement_wiz__old_family_id msgid "Old Family" msgstr "المستفيد القديم عائلة" - #. module: odex_takaful + +#. module: odex_takaful #: model:ir.model.fields,field_description:odex_takaful.field_donation_replacement_log__replacement_ref msgid "replacement Reference" msgstr "المرجع" @@ -7400,10 +7415,34 @@ msgstr "يمكنك الارسال الى مسودة للتبرعات المؤك msgid "Payment registered successfully" msgstr "تمت عملية الدفع بنجاح" - - - - +#. module: odex_takaful +#: code:addons/odex_takaful/models/donation_details_lines.py:0 +#: code:addons/odex_takaful/wizards/add_benefit_wizard.py:0 +#: model:ir.model,name:odex_takaful.model_add_benefit_wizard +#: model_terms:ir.ui.view,arch_db:odex_takaful.add_benefit_wizard_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +#, python-format +msgid "Add Benefit" +msgstr "إضافة مستفيد" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.add_benefit_wizard_form +msgid "Benefit Information" +msgstr "تفاصيل إضافة المستفيد" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donation_replacement_log__user_id +msgid "Replaced By" +msgstr "تم الإستبدال بواسطة" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/donation_details_lines.py:0 +#: model:ir.actions.act_window,name:odex_takaful.action__replacement_log_history +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__replacement_log_ids +#, python-format +msgid "Replacement Log" +msgstr "سجل الإستبدال" diff --git a/odex25_ensan/odex_takaful/models/donation_details_lines.py b/odex25_ensan/odex_takaful/models/donation_details_lines.py index e6637c2ae..40f84fe68 100644 --- a/odex25_ensan/odex_takaful/models/donation_details_lines.py +++ b/odex25_ensan/odex_takaful/models/donation_details_lines.py @@ -77,7 +77,7 @@ class DonationsDetailsLines(models.Model): sponsor_phone = fields.Char(related='sponsor_id.mobile') branch_custom_id = fields.Many2one('branch.settings', compute='_compute_branch_custom_id') record_type = fields.Selection([('sponsorship', 'Sponsorship'),('donation', 'Donation')], compute='_compute_record_type', store=True, readonly=True) - state = fields.Selection([('draft', 'To Pay'),('waiting', 'Waiting'), ('active', 'Active'),('closed', 'Closed'),('extended', 'Extended'),('replace', 'To Replace'), ('paid', 'Paid')], string='State', default='draft') + state = fields.Selection([('draft', 'Draft'),('confirmed', 'Confirmed'),('waiting', 'Waiting'), ('active', 'Active'),('closed', 'Closed'),('extended', 'Extended'),('replace', 'To Replace'), ('paid', 'Paid')], string='State', default='draft') sponsorship_scheduling_line_ids = fields.One2many('sponsorship.scheduling.line', 'donation_detail_linked_id') extension_history_ids = fields.One2many('donation.extension.history', 'donation_detail_id', string='Extension History') @@ -88,6 +88,7 @@ class DonationsDetailsLines(models.Model): show_extend_button = fields.Boolean(string='Show Extend Button', compute='_compute_show_extend_button') show_replaced_button = fields.Boolean(string='Show Replaced Button', compute='_compute_show_replaced_button') + show_add_benefit_button = fields.Boolean(string='Show Add Benefit Button', compute='_compute_show_add_benefit_button') is_paid = fields.Boolean(string="Is Paid", default=False) parent_state = fields.Char(compute='_compute_parent_state') hide_beneficiary_group = fields.Boolean(compute='_compute_hide_beneficiary_group') @@ -141,10 +142,21 @@ class DonationsDetailsLines(models.Model): for rec in self: show_replaced_button = ( ((rec.record_type == 'donation' and rec.donation_mechanism == 'with_conditions') or rec.record_type == 'sponsorship') and - rec.state in ('active', 'paid','replace') + rec.state in ('active', 'paid','replace') and + (rec.benefit_id or rec.benefit_ids or rec.family_id) + ) rec.show_replaced_button = show_replaced_button + @api.depends('record_type', 'state') + def _compute_show_add_benefit_button(self): + for rec in self: + show_add_benefit_button = ( + rec.record_type == 'sponsorship' and + rec.state == 'waiting' + ) + rec.show_add_benefit_button = show_add_benefit_button + @api.depends('sponsorship_duration', 'direct_debit', 'record_type', 'start_date') def _compute_hide_beneficiary_group(self): for rec in self: @@ -208,7 +220,7 @@ class DonationsDetailsLines(models.Model): def _onchange_benefit_id(self): for rec in self: if rec.benefit_id: - if rec.benefit_status and rec.benefit_status == 'non_benefit': + if rec.benefit_status and rec.benefit_status == 'non_benefit' and rec.sponsorship_id.record_type == 'sponsorship': rec.state = 'replace' @api.onchange('product_template_id') def _onchange_product_template_id(self): @@ -801,7 +813,7 @@ class DonationsDetailsLines(models.Model): if 'benefit_id' in vals: new_benefit = rec.benefit_id.name or 'None' sponsorship = self.env['takaful.sponsorship'].browse( - self.env.context.get('active_id')) + self.env.context.get(rec.sponsorship_id)) if sponsorship and len(sponsorship) == 1: message = _("Benefit changed from %s to %s in a donation item.") % ( old_benefit or 'None', new_benefit) @@ -825,14 +837,14 @@ class DonationsDetailsLines(models.Model): if changes: # Find sponsorship sponsorship = rec.sponsorship_id or self.env['takaful.sponsorship'].browse( - self.env.context.get('active_id')) + self.env.context.get(rec.sponsorship_id)) if sponsorship and len(sponsorship) == 1: message = _("Benefit IDs changed in a donation item:
%s") % "
".join(changes) sponsorship.message_post(body=message) self.onset_benefit_id() if self.benefit_id: - if self.benefit_status and self.benefit_status == 'non_benefit': + if self.benefit_status and self.benefit_status == 'non_benefit' and self.sponsorship_id.record_type == 'sponsorship': self.state = 'replace' return res @@ -1046,4 +1058,18 @@ class DonationsDetailsLines(models.Model): 'context': { 'default_donation_detail_id': self.id, }, + } + + + def add_benefit_wizard(self): + self.ensure_one() + return { + 'type': 'ir.actions.act_window', + 'name': _('Add Benefit'), + 'res_model': 'add.benefit.wizard', + 'view_mode': 'form', + 'target': 'new', + 'context': { + 'default_donation_detail_id': self.id, + }, } \ No newline at end of file diff --git a/odex25_ensan/odex_takaful/models/donation_replacement_log.py b/odex25_ensan/odex_takaful/models/donation_replacement_log.py index a2d959998..bb2a2965e 100644 --- a/odex25_ensan/odex_takaful/models/donation_replacement_log.py +++ b/odex25_ensan/odex_takaful/models/donation_replacement_log.py @@ -47,7 +47,7 @@ class DonationReplacementLog(models.Model): user_id = fields.Many2one( 'res.users', - string='Extended By', + string='Replaced By', default=lambda self: self.env.user, readonly=True ) diff --git a/odex25_ensan/odex_takaful/models/family_member.py b/odex25_ensan/odex_takaful/models/family_member.py index baa91e4d2..ca111629f 100644 --- a/odex25_ensan/odex_takaful/models/family_member.py +++ b/odex25_ensan/odex_takaful/models/family_member.py @@ -83,6 +83,6 @@ class FamilyMember(models.Model): sponsorships = sponsorships_main | sponsorships_multi if sponsorships: - if member.member_status and member.member_status == 'non_benefit': + if member.member_status and member.member_status == 'non_benefit' and sponsorships.sponsorship_id.record_type == 'sponsorship': sponsorships.write({'state': 'replace'}) return res diff --git a/odex25_ensan/odex_takaful/models/sponsorship_scheduling_line.py b/odex25_ensan/odex_takaful/models/sponsorship_scheduling_line.py index 7da0619a9..be9c4368d 100644 --- a/odex25_ensan/odex_takaful/models/sponsorship_scheduling_line.py +++ b/odex25_ensan/odex_takaful/models/sponsorship_scheduling_line.py @@ -143,6 +143,13 @@ class SchedulingLine(models.Model): payment_register.action_create_payments() line.sudo().write({'status': 'paid'}) + if line.donation_detail_linked_id.state == 'waiting' or (not line.donation_detail_linked_id.benefit_id and line.donation_detail_linked_id.record_type == 'sponsorship'): + line.donation_detail_linked_id.sudo().write({'state': 'waiting'}) + else: + line.donation_detail_linked_id.sudo().write({'state': 'active'}) + line.donation_detail_linked_id.sponsorship_id.sudo().write({'state': 'wait_pay'}) + + _logger.info(f"Successfully processed scheduled payment for line {line.sequence_no}") else: _logger.warning(f"Scheduling line {line.sequence_no} payment method is not direct debit, skipping auto-payment") diff --git a/odex25_ensan/odex_takaful/models/takaful_sponorship_model.py b/odex25_ensan/odex_takaful/models/takaful_sponorship_model.py index 900720261..a200e6870 100644 --- a/odex25_ensan/odex_takaful/models/takaful_sponorship_model.py +++ b/odex25_ensan/odex_takaful/models/takaful_sponorship_model.py @@ -1241,6 +1241,8 @@ class TakafulSponsorship(models.Model): push.sudo().send_sms_notification() self.state = "confirmed" + for line_state in all_donation_lines: + line_state.state = 'confirmed' faal_kheer_partner_id = self.env.company.faal_kheer_partner_id # if self.sponsor_or_donor_type != 'registered': # return @@ -1703,6 +1705,11 @@ class TakafulSponsorship(models.Model): move_ids = rec.journal_entry_ids.filtered(lambda l: l.move_type == 'out_invoice') move_ids.button_draft() self.write({'state': 'draft'}) + all_donation_lines = (self.donations_details_lines + self.donations_details_lines_mechanism_ids).filtered( + lambda r: r.display_type == False) + for line in all_donation_lines: + line.state = 'draft' + class AnotherSponsors(models.Model): _name = "donate.for.another.person" diff --git a/odex25_ensan/odex_takaful/security/ir.model.access.csv b/odex25_ensan/odex_takaful/security/ir.model.access.csv index d4351f353..9f7dfee61 100644 --- a/odex25_ensan/odex_takaful/security/ir.model.access.csv +++ b/odex25_ensan/odex_takaful/security/ir.model.access.csv @@ -48,7 +48,7 @@ access_donation_extension_history,donation.extension.history.access,model_donati access_donation_extension_wizard_line,donation.extension.wizard.line.access,model_donation_extension_wizard_line,odex_takaful.group_kufula_user,1,1,1,0 access_donation_replacement_log,donation.replacement.log.access,model_donation_replacement_log,odex_takaful.group_kufula_user,1,1,1,0 access_replace_sponsor_wizard,replace.sponsor.wizard.access,model_replace_sponsor_wizard,odex_takaful.group_replace_sponsor,1,1,1,1 - +access_add_benefit_wizard,add.benefit.wizard.access,model_add_benefit_wizard,odex_takaful.group_kufula_user,1,1,1,1 access_group_kufula_user_product_template,access_group_kufula_user_product_template,product.model_product_template,odex_takaful.group_kufula_user,1,1,0,0 access_group_kufula_user_account_move,access_group_kufula_user_account_move,account.model_account_move,odex_takaful.group_kufula_user,1,1,1,0 diff --git a/odex25_ensan/odex_takaful/views/donations_details_lines.xml b/odex25_ensan/odex_takaful/views/donations_details_lines.xml index a908bb1f9..86f7506ba 100644 --- a/odex25_ensan/odex_takaful/views/donations_details_lines.xml +++ b/odex25_ensan/odex_takaful/views/donations_details_lines.xml @@ -61,7 +61,7 @@ donations.details.lines.view.tree donations.details.lines - + @@ -86,7 +86,7 @@ @@ -104,7 +104,7 @@ donations.details.lines.view.form donations.details.lines -
+