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'"/>
+
+
+