diff --git a/odex25_takaful/odex_takaful/i18n/ar_001.po b/odex25_takaful/odex_takaful/i18n/ar_001.po index d971b1bf8..7aaf5f8d6 100644 --- a/odex25_takaful/odex_takaful/i18n/ar_001.po +++ b/odex25_takaful/odex_takaful/i18n/ar_001.po @@ -7532,3 +7532,37 @@ msgstr "إجمالي مبلغ الدفع" #: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_wizard__remaining_amount msgid "Remaining Amount" msgstr "المبلغ المتبقى" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__direct_debit_filter +msgid "Payment Type (Filter)" +msgstr "طريقة الدفع" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__direct_debit_filter__other +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_search +msgid "Other Payments" +msgstr "طرق اخرى" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__direct_debit_filter__direct +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_search +msgid "Direct Debit" +msgstr "إستقطاع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__number_of_family_member +#: model:ir.model.fields,field_description:odex_takaful.field_family_member__number_of_family_member +msgid "Number Of Family Member" +msgstr "عدد افراد الاسرة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__age +msgid "Age" +msgstr "العمر" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__diseases_attachment_ids +msgid "Diseases Attachment" +msgstr "الأمراض" + diff --git a/odex25_takaful/odex_takaful/models/donation_details_lines.py b/odex25_takaful/odex_takaful/models/donation_details_lines.py index cc33b2c35..8752c09c6 100644 --- a/odex25_takaful/odex_takaful/models/donation_details_lines.py +++ b/odex25_takaful/odex_takaful/models/donation_details_lines.py @@ -49,7 +49,7 @@ class DonationsDetailsLines(models.Model): education_status = fields.Selection(string='Education Status', selection=[('educated', 'educated'), ('illiterate', 'illiterate'), ('under_study_age', 'Under Study Age')]) - education_level = fields.Many2one("education.level", string='Education Levels') + education_level = fields.Many2one(related='benefit_id.education_levels', string='Education Levels', store=True) members_domain_ids = fields.Many2many('family.member', compute='_compute_members_domain_ids') family_domain_ids = fields.Many2many('grant.benefit', compute='_compute_family_domain_ids') @@ -98,7 +98,10 @@ class DonationsDetailsLines(models.Model): debit_payment_attachment_file_name = fields.Char('Debit Payment File Name', required=False) journal_id = fields.Many2one('account.journal', string="Journal",domain="[('type','=','bank')]",default=_default_journal_id) benefit_status = fields.Selection(related='benefit_id.member_status') + diseases_attachment_ids = fields.Many2many('ir.attachment', compute='_compute_get_diseases') ages = fields.Integer(compute='_compute_get_age_range' , store=True) + age = fields.Integer(related='benefit_id.age') + number_of_family_member = fields.Integer(related='benefit_id.number_of_family_member') waiting_date = fields.Date( string="تاريخ الانتظار", ) @@ -113,6 +116,30 @@ class DonationsDetailsLines(models.Model): ('all', 'جميع الأعمار'), ], string="الفئة العمرية", compute="_compute_age_category") + direct_debit_filter = fields.Selection( + [ + ('direct', 'Direct Debit'), + ('other', 'Other Payments'), + ], + string="Payment Type (Filter)", + compute="_compute_direct_debit_filter", store=True, + ) + + @api.depends('benefit_id.diseases_attachment_ids') + def _compute_get_diseases(self): + for rec in self: + rec.diseases_attachment_ids = rec.benefit_id.diseases_attachment_ids.ids + + @api.depends('direct_debit') + def _compute_direct_debit_filter(self): + for rec in self: + if rec.direct_debit: + rec.direct_debit_filter = 'direct' + else: + rec.direct_debit_filter = 'other' + + + @api.depends('sponsorship_duration', 'payment_month_count', 'direct_debit') def _compute_age_category(self): for rec in self: diff --git a/odex25_takaful/odex_takaful/models/family_member.py b/odex25_takaful/odex_takaful/models/family_member.py index 232357975..f1b6fc1ca 100644 --- a/odex25_takaful/odex_takaful/models/family_member.py +++ b/odex25_takaful/odex_takaful/models/family_member.py @@ -9,6 +9,9 @@ class GrantBenefit(models.Model): def action_second_accepted(self): super(GrantBenefit, self).action_second_accepted() for member in self.member_ids: + if not member.is_new and member.member_status == 'benefit': + self.is_restricted = True + self.is_new = True sponsorships_main = self.env['donations.details.lines'].search([ ('benefit_id', '=', member.id,),('state', '=', 'active') ]) @@ -35,10 +38,34 @@ class FamilyMember(models.Model): sponsorship_id = fields.Many2one('takaful.sponsorship', string='Sponsorship') sponsorship_end_date = fields.Date(string='Sponsorship End Date') is_restricted = fields.Boolean(string="Is Restricted ?", default=False, readonly=True) + is_new = fields.Boolean(string="Is new ?", default=False, readonly=True) general_restriction = fields.Boolean(string="General Restriction", default=False, readonly=True) kafala_status = fields.Selection( [('have_kafala', 'Have Kafala'), ('have_not_kafala', 'Have not Kafala')], string='Kafala Status', compute='_compute_kafala_status', store=True, readonly=True) + education_levels = fields.Many2one("education.level", string='Education Levels', compute='_compute_education_levels', store=True) + number_of_family_member = fields.Integer(compute='_compute_number_of_family_member' , store=True, string='Number Of Family Member') + + @api.depends('benefit_id','relationn','member_status') + def _compute_number_of_family_member(self): + for rec in self: + if rec.relationn.relation_type in ('mother', 'replacement_mother'): + family_members = rec.benefit_id.member_ids.filtered( + lambda m: m.relationn.relation_type in ('daughter', 'son') and m.member_status == 'benefit' + ) + rec.number_of_family_member = len(family_members) + + + @api.depends('member_education_status_ids', 'education_status', 'member_education_status_ids.case_study') + def _compute_education_levels(self): + for record in self: + record.education_levels = ( + record.member_education_status_ids.search( + [('case_study', '=', 'continuous')], + order='create_date desc', + limit=1 + ).education_levels if record.education_status == 'educated' else False) + @api.depends('sponsor_related_id') def _compute_kafala_status(self): @@ -79,30 +106,11 @@ class FamilyMember(models.Model): today = fields.Date.today() restriction_period = self.env['ir.config_parameter'].sudo().get_param('odex_takaful.restriction_period') for benefit in benefit_ids: - create_date = benefit.create_date.date() + create_date = benefit.approve_date.date() benefit_date = create_date + timedelta(days=int(restriction_period) or 0) - if benefit_date >= today: + benefit_date_to = today - timedelta(days=int(restriction_period) or 0) + + if benefit_date >= today or benefit_date <= benefit_date_to: benefit.is_restricted = False - def create(self, vals): - res = super(FamilyMember, self).create(vals) - self.is_restricted = True - return res - # @api.model - # def write(self, vals): - # res = super(FamilyMember, self).write(vals) - # if 'member_status' in vals: - # for member in self: - # sponsorships_main = self.env['donations.details.lines'].search([ - # ('benefit_id', '=', member.id) - # ]) - # sponsorships_multi = self.env['donations.details.lines'].search([ - # ('benefit_ids', 'in', member.id) - # ]) - # sponsorships = sponsorships_main | sponsorships_multi - # - # if sponsorships: - # 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_takaful/odex_takaful/models/takaful_sponorship_model.py b/odex25_takaful/odex_takaful/models/takaful_sponorship_model.py index 18f6e8898..0d96fe58e 100644 --- a/odex25_takaful/odex_takaful/models/takaful_sponorship_model.py +++ b/odex25_takaful/odex_takaful/models/takaful_sponorship_model.py @@ -1340,12 +1340,13 @@ class TakafulSponsorship(models.Model): 'partner_id': partner_id.id, 'invoice_origin': self.code, } + sponsorship = line.sponsorship_id or line.sponsorship_mechanism_id invoice_line_vals = [(0, 0, { 'product_id': line.product_id.id, 'price_unit': line.total_donation_amount, 'quantity': 1, 'name': _("Sponsorship Entitlement Number %s") % line.sequence_no, - 'analytic_account_id': line.sponsorship_id.branch_custom_id.branch.analytic_account_id.id, + 'analytic_account_id': sponsorship.branch_custom_id.branch.analytic_account_id.id, }) for line in all_donation_lines] current_invoice = self.journal_entry_ids.filtered(lambda r: r.move_type == 'out_invoice' and r.state == 'draft') diff --git a/odex25_takaful/odex_takaful/views/donations_details_lines.xml b/odex25_takaful/odex_takaful/views/donations_details_lines.xml index 936aa3463..4a6da854c 100644 --- a/odex25_takaful/odex_takaful/views/donations_details_lines.xml +++ b/odex25_takaful/odex_takaful/views/donations_details_lines.xml @@ -11,6 +11,7 @@ + @@ -33,6 +34,10 @@ + + + + @@ -52,6 +57,8 @@ + + @@ -75,6 +82,10 @@ + + + + @@ -372,6 +383,10 @@ + + + + @@ -421,6 +436,10 @@ + + + + diff --git a/odex25_takaful/odex_takaful/views/family_member.xml b/odex25_takaful/odex_takaful/views/family_member.xml index 2af57680e..f554f8e83 100644 --- a/odex25_takaful/odex_takaful/views/family_member.xml +++ b/odex25_takaful/odex_takaful/views/family_member.xml @@ -17,6 +17,7 @@ + @@ -62,6 +63,7 @@ + @@ -96,6 +98,11 @@ + + + @@ -110,6 +117,9 @@ decoration-success="kafala_status == 'have_kafala'" decoration-danger="kafala_status == 'have_not_kafala'"/> + + +