diff --git a/odex25_benefit/odex_benefit/models/benefit.py b/odex25_benefit/odex_benefit/models/benefit.py index 9ccc26cb7..004088da5 100644 --- a/odex25_benefit/odex_benefit/models/benefit.py +++ b/odex25_benefit/odex_benefit/models/benefit.py @@ -391,7 +391,7 @@ class GrantBenefitProfile(models.Model): total_income = fields.Float('Total Income', compute="get_total_income", store=True) benefit_member_count = fields.Integer(string="Members count", compute="get_members_count") non_member_count = fields.Integer(string="Non Benefit Members count", compute="get_non_members_count") - member_income = fields.Integer(string="Member Income Average", compute="get_member_income",store=True,tracking=True) + member_income = fields.Float(string="Member Income Average", compute="get_member_income",store=True,tracking=True) request_activity_id = fields.Many2one('mail.activity') state = fields.Selection([ ('draft', 'Draft'), @@ -646,6 +646,15 @@ class GrantBenefitProfile(models.Model): ) current_rent_contract_id = fields.Many2one('rent.contract',string='Current Active Rent Contract',compute='_compute_current_rent_contract',store=True,) notes = fields.Html(string='Notes', tracking=True) + color = fields.Integer(string="Color Index",related='benefit_category_id.color') + decoration_color = fields.Selection([ + ('danger', 'Red'), + ('success', 'Green'), + ('warning', 'Orange'), + ('info', 'Blue'), + ('primary', 'Primary'), + ('muted', 'Muted'), + ], default='info',related='benefit_category_id.decoration_color') _sql_constraints = [ ('unique_code', "unique (code) WHERE state NOT IN ('draft', 'new')", 'This code already exists') @@ -1617,7 +1626,7 @@ class GrantBenefitProfile(models.Model): self.partner_id.send_sms_notification(message, self.phone) for rec in self: visits = self.env['visit.location'].search([('benefit_id', '=', rec.id),('state', 'not in', ['close', 'done'])]) - if rec.action_type == 'new' and not rec.benefit_category_id.is_benefit: + if not rec.benefit_category_id.is_benefit: raise ValidationError(_("The procedure cannot be continued; the family is not a beneficiary.")) if rec.action_type == 'new' and visits: raise ValidationError(_("Please complete your pending visits before proceeding.")) @@ -2301,14 +2310,16 @@ class GrantBenefitProfile(models.Model): @api.depends('benefit_member_count','total_income','total_expenses') def get_member_income(self): for ben in self: + income = 0.0 family_income = ben.total_income - ben.total_expenses if ben.benefit_member_count: if ben.benefit_member_count > 3: - ben.member_income = family_income / ben.benefit_member_count + income = family_income / ben.benefit_member_count elif ben.benefit_member_count <= 3: - ben.member_income = family_income / 3 + income = family_income / 3 else: - ben.member_income = family_income + income = family_income + ben.member_income = income @api.depends("member_income") def get_benefit_category(self): diff --git a/odex25_benefit/odex_benefit/models/benefit_config.py b/odex25_benefit/odex_benefit/models/benefit_config.py index ef046bf52..02f911940 100644 --- a/odex25_benefit/odex_benefit/models/benefit_config.py +++ b/odex25_benefit/odex_benefit/models/benefit_config.py @@ -29,6 +29,16 @@ class BenefitCategory(models.Model): state = fields.Selection([('draft', 'Draft'), ('approve', 'Approved'), ('rejected', 'Rejected'), ], default='draft') + color = fields.Integer(string="Color Index", default=0) + decoration_color = fields.Selection([ + ('danger', 'Red'), + ('success', 'Green'), + ('warning', 'Orange'), + ('info', 'Blue'), + ('primary', 'Primary'), + ('muted', 'Muted'), + ]) + def get_benefits_total(self): for rec in self: @@ -754,6 +764,7 @@ class SuspendReason(models.Model): need_service_manager_approval = fields.Boolean( string="Needs Service Manager Approval" ) + check_all_members_non_benefit = fields.Boolean(string="Check All Members Non-Benefit",default=False) class ReturnReason(models.Model): _name = "return.reason" @@ -1024,8 +1035,8 @@ class RentContract(models.Model): ('1', 'Yearly'), ('2', 'Half-yearly'), ('4', 'Quarterly'), - ('5', 'Monthly'), - ], string='Payment Type', required=True) + ('12', 'Monthly'), + ], string='Payment Type', required=True, default='2') rent_amount = fields.Float(string='Rent Amount', required=True) contract_attachment = fields.Many2many( 'ir.attachment', 'rent_contract_attachment_rel', diff --git a/odex25_benefit/odex_benefit/models/service_request.py b/odex25_benefit/odex_benefit/models/service_request.py index afc5390b6..bc1f11f08 100644 --- a/odex25_benefit/odex_benefit/models/service_request.py +++ b/odex25_benefit/odex_benefit/models/service_request.py @@ -437,14 +437,10 @@ class ServiceRequest(models.Model): else: rec.has_money_field_is_appearance = False - @api.depends('family_id.mother_marital_conf', 'family_id.replacement_mother_marital_conf') + @api.depends('family_id.mother_marital_conf') def _compute_is_orphan(self): for rec in self: - if not rec.family_id.add_replacement_mother: - mother_dead = bool(getattr(rec.family_id.mother_marital_conf, 'is_dead', False)) - else: - mother_dead = bool(getattr(rec.family_id.replacement_mother_marital_conf, 'is_dead', False)) - rec.is_orphan = mother_dead + rec.is_orphan = bool(getattr(rec.family_id.mother_marital_conf, 'is_dead', False)) def _expand_states(self, states, domain, order): return [key for key, val in type(self).state.selection] diff --git a/odex25_benefit/odex_benefit/views/benefit_config_view.xml b/odex25_benefit/odex_benefit/views/benefit_config_view.xml index 43bdbe8ac..91bf5c5f3 100644 --- a/odex25_benefit/odex_benefit/views/benefit_config_view.xml +++ b/odex25_benefit/odex_benefit/views/benefit_config_view.xml @@ -41,7 +41,12 @@ - + + + + + + @@ -918,6 +923,8 @@ attrs="{'invisible': [('is_stop_reason','=',False),('is_resume_reason','=',False)]}"/> + @@ -1530,7 +1537,7 @@ - + diff --git a/odex25_benefit/odex_benefit/views/benefit_view.xml b/odex25_benefit/odex_benefit/views/benefit_view.xml index 4456a28a1..9fbe3ab74 100644 --- a/odex25_benefit/odex_benefit/views/benefit_view.xml +++ b/odex25_benefit/odex_benefit/views/benefit_view.xml @@ -435,16 +435,31 @@ diff --git a/odex25_benefit/odex_benefit/wizards/suspend_reason_wizard.py b/odex25_benefit/odex_benefit/wizards/suspend_reason_wizard.py index 536add5bd..62aaa9693 100644 --- a/odex25_benefit/odex_benefit/wizards/suspend_reason_wizard.py +++ b/odex25_benefit/odex_benefit/wizards/suspend_reason_wizard.py @@ -89,6 +89,10 @@ class SuspendReasonWizard(models.TransientModel): 'resume_notes': rec.suspend_description, } else: + if rec.suspend_reason.check_all_members_non_benefit: + if benefit.benefit_member_count > 0: + raise UserError( + _("Operation not allowed: The family has %s benefit member(s). All members must be non-benefit to proceed.") % benefit.benefit_member_count) benefit.member_ids.write({ 'is_excluded_suspension': False, 'is_member_workflow': False, diff --git a/odex25_benefit/odex_benefit/wizards/suspend_reason_wizard.xml b/odex25_benefit/odex_benefit/wizards/suspend_reason_wizard.xml index f3727d743..f092153e5 100644 --- a/odex25_benefit/odex_benefit/wizards/suspend_reason_wizard.xml +++ b/odex25_benefit/odex_benefit/wizards/suspend_reason_wizard.xml @@ -13,7 +13,7 @@ - + @@ -39,7 +39,7 @@ - +