[IMP] odex_benefit: IMP benefit
This commit is contained in:
parent
3029e053db
commit
c852aac5da
|
|
@ -4671,6 +4671,7 @@ msgstr "المراحل التعليمية"
|
|||
#: model:ir.model.fields,field_description:odex_benefit.field_family_member__education_levels
|
||||
#: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__education_levels
|
||||
#: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__replacement_education_levels
|
||||
#: model:ir.model.fields,field_description:odex_benefit.field_res_partner__education_level_ids
|
||||
msgid "Education Levels"
|
||||
msgstr "المرحلة التعليمية"
|
||||
|
||||
|
|
@ -17289,4 +17290,10 @@ msgstr "يجب أن يكون تاريخ البدء وتاريخ الانتهاء
|
|||
msgid ""
|
||||
"Payment Type requires a period of %s months, but selected period is %s "
|
||||
"months."
|
||||
msgstr "يتطلب نوع السداد فترة %s أشهر، ولكن الفترة المحددة هي %s أشهر."
|
||||
msgstr "يتطلب نوع السداد فترة %s أشهر، ولكن الفترة المحددة هي %s أشهر."
|
||||
|
||||
#. module: odex_benefit
|
||||
#: model:ir.model.fields,field_description:odex_benefit.field_res_partner__is_education_entity
|
||||
msgid "Is Education Entity"
|
||||
msgstr "جهة تعليمية"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
from odoo import fields, models,api
|
||||
from odoo import fields, models, api
|
||||
|
||||
|
||||
class EducationPeriod(models.Model):
|
||||
|
|
@ -10,4 +10,5 @@ class EducationPeriod(models.Model):
|
|||
start_date = fields.Date(string='Period Start Date', required=True)
|
||||
end_date = fields.Date(string='Period End Date', required=True)
|
||||
education_level_ids = fields.Many2many('education.level', string='Education Levels')
|
||||
education_entity_ids = fields.Many2many("res.partner", string='Education Entities')
|
||||
education_entity_ids = fields.Many2many(
|
||||
"res.partner", domain="[('is_education_entity','=',True)]", string='Education Entities')
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ from dateutil.relativedelta import relativedelta
|
|||
from odoo import models, fields, api, _
|
||||
from odoo.exceptions import UserError
|
||||
from odoo.tools import date_utils
|
||||
from dateutil.relativedelta import relativedelta
|
||||
|
||||
|
||||
class ConfirmBenefitExpense(models.Model):
|
||||
|
|
@ -118,6 +119,19 @@ class ConfirmBenefitExpense(models.Model):
|
|||
if rec.move_state == 'done' and rec.payment_state == 'done':
|
||||
rec.state = 'confirm'
|
||||
|
||||
def _get_month_count(self):
|
||||
self.ensure_one()
|
||||
if not self.start_date or not self.end_date:
|
||||
return 1
|
||||
|
||||
start = fields.Date.from_string(self.start_date)
|
||||
end = fields.Date.from_string(self.end_date)
|
||||
|
||||
diff = relativedelta(end, start)
|
||||
months = diff.years * 12 + diff.months + 1
|
||||
|
||||
return max(1, months)
|
||||
|
||||
@api.model
|
||||
def create(self, vals):
|
||||
res = super(ConfirmBenefitExpense, self).create(vals)
|
||||
|
|
@ -129,6 +143,7 @@ class ConfirmBenefitExpense(models.Model):
|
|||
|
||||
def _update_benefit_expense_lines(self):
|
||||
self.ensure_one()
|
||||
month_count = self._get_month_count()
|
||||
for line in self.benefit_expense_line_ids:
|
||||
family = line.family_id
|
||||
income, meals, clotting, othaim = 0, 0, 0, 0
|
||||
|
|
@ -137,12 +152,12 @@ class ConfirmBenefitExpense(models.Model):
|
|||
monthly_meals = 0.0 if family.meal_card else family.family_monthly_meals
|
||||
othaime = family.family_monthly_meals if family.meal_card else 0.0
|
||||
if self.cash_expense:
|
||||
income = family.family_monthly_income
|
||||
income = family.family_monthly_income * month_count
|
||||
if self.meal_expense:
|
||||
meals = monthly_meals
|
||||
othaim = othaime
|
||||
meals = monthly_meals * month_count
|
||||
othaim = othaime * month_count
|
||||
if self.cloth_expense:
|
||||
clotting = family.family_monthly_clotting
|
||||
clotting = family.family_monthly_clotting * month_count
|
||||
vals = {
|
||||
'branch_id': family.branch_custom_id.id,
|
||||
'family_category_id': family.benefit_category_id.id,
|
||||
|
|
|
|||
|
|
@ -60,6 +60,8 @@ class SeasonalService(models.Model):
|
|||
column2='family_member_id', string='Family Members', copy=False)
|
||||
family_domain_ids = fields.Many2many(comodel_name='grant.benefit', compute='_compute_domain_ids',
|
||||
string="Eligible Families")
|
||||
allowed_member_ids = fields.Many2many('family.member', compute='_compute_allowed_member_ids',
|
||||
string="Allowed Members", )
|
||||
service_delivery_method = fields.Selection(selection=[
|
||||
('cash', 'Cash'),
|
||||
('in_kind', 'In kind'), ], string='Service Delivery Method', default='cash')
|
||||
|
|
@ -80,6 +82,25 @@ class SeasonalService(models.Model):
|
|||
payment_order_state = "waiting"
|
||||
rec.payment_order_state = payment_order_state
|
||||
|
||||
@api.depends('benefit_ids', 'service_type_id')
|
||||
def _compute_allowed_member_ids(self):
|
||||
for rec in self:
|
||||
domain = [('benefit_id', 'in', rec.benefit_ids.ids),
|
||||
('member_status', '=', 'benefit')]
|
||||
|
||||
members = self.env['family.member'].sudo().search(domain)
|
||||
|
||||
if rec.service_type_id.is_this_service_for_student:
|
||||
members = members.filtered(
|
||||
lambda m: (
|
||||
m.education_status == 'educated'
|
||||
and any(edu.case_study == 'continuous'
|
||||
for edu in m.member_education_status_ids)
|
||||
)
|
||||
)
|
||||
|
||||
rec.allowed_member_ids = members
|
||||
|
||||
@api.onchange('service_type_id')
|
||||
def _onchange_service_type_id(self):
|
||||
if self.benefit_ids:
|
||||
|
|
@ -88,7 +109,6 @@ class SeasonalService(models.Model):
|
|||
if self.service_type_id and self.service_type_id.benefit_category_ids:
|
||||
self.family_category_ids = [(6, 0, self.service_type_id.benefit_category_ids.ids)]
|
||||
|
||||
|
||||
@api.depends('branch_ids', 'family_category_ids')
|
||||
def _compute_domain_ids(self):
|
||||
for rec in self:
|
||||
|
|
@ -132,7 +152,6 @@ class SeasonalService(models.Model):
|
|||
if len(members_to_keep) != len(self.member_ids):
|
||||
self.member_ids = [(6, 0, members_to_keep.ids)]
|
||||
|
||||
|
||||
@api.model
|
||||
def create(self, vals):
|
||||
res = super(SeasonalService, self).create(vals)
|
||||
|
|
|
|||
|
|
@ -368,8 +368,6 @@ class ServiceRequest(models.Model):
|
|||
|
||||
count = len(count_members)
|
||||
|
||||
rec.service_benefit_count = count
|
||||
|
||||
domain_members = family_members
|
||||
|
||||
if rec.service_cat:
|
||||
|
|
@ -384,7 +382,10 @@ class ServiceRequest(models.Model):
|
|||
for edu in m.member_education_status_ids)
|
||||
)
|
||||
)
|
||||
if rec.benefit_type == "family":
|
||||
count = len(domain_members)
|
||||
|
||||
rec.service_benefit_count = count
|
||||
rec.member_domain_ids = domain_members
|
||||
|
||||
def action_send_to_researcher(self):
|
||||
|
|
|
|||
|
|
@ -89,6 +89,7 @@
|
|||
<field name="benefit_type" invisible="1"/>
|
||||
<field name="currency_id" invisible="1"/>
|
||||
<field name="company_id" invisible="1"/>
|
||||
<field name="allowed_member_ids" widget="many" invisible="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
|
|
@ -190,7 +191,7 @@
|
|||
</page>
|
||||
<page string="Members" attrs="{'invisible': [('benefit_type', '!=', 'member')]}">
|
||||
<field name="member_ids" attrs="{'readonly': [('state', '!=', 'draft')]}"
|
||||
domain="[('benefit_id', 'in', benefit_ids),('member_status', '=', 'benefit')]"/>
|
||||
domain="[('id', 'in', allowed_member_ids)]"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
|
|
|
|||
Loading…
Reference in New Issue