[IMP] odex_benefit: IMP benefit
This commit is contained in:
parent
5c29f36027
commit
317311c4c1
|
|
@ -14468,11 +14468,6 @@ msgstr "الخدمات الموسمية"
|
|||
msgid "Draft"
|
||||
msgstr "مسودة"
|
||||
|
||||
#. module: odex_benefit
|
||||
#: model_terms:ir.ui.view,arch_db:odex_benefit.seasonal_service_form_view
|
||||
msgid "Get Families"
|
||||
msgstr "جلب الأسر"
|
||||
|
||||
#. module: odex_benefit
|
||||
#: code:addons/odex_benefit/models/seasonal_service.py:0
|
||||
#, python-format
|
||||
|
|
|
|||
|
|
@ -8,25 +8,31 @@ class SeasonalService(models.Model):
|
|||
_name = 'seasonal.service'
|
||||
_inherit = ['mail.thread', 'mail.activity.mixin']
|
||||
|
||||
name = fields.Char(string='Reference', required=True, copy=False, readonly=True, index=True,default=lambda self: _('New'))
|
||||
name = fields.Char(string='Reference', required=True, copy=False, readonly=True, index=True,
|
||||
default=lambda self: _('New'))
|
||||
date = fields.Datetime(string='Request Date', default=fields.Datetime.now, copy=False)
|
||||
service_type_id = fields.Many2one('services.settings', domain="[('is_seasonal_service','=',True)]",string="Seasonal Service Type", required=True)
|
||||
branch_ids = fields.Many2many('branch.settings', 'service_branch_rel', 'service_id', 'branch_id', string='Branches', required=True)
|
||||
service_type_id = fields.Many2one('services.settings', domain="[('is_seasonal_service','=',True)]",
|
||||
string="Seasonal Service Type", required=True)
|
||||
benefit_type = fields.Selection(string='Benefit Type', related='service_type_id.benefit_type')
|
||||
branch_ids = fields.Many2many('branch.settings', 'service_branch_rel', 'service_id', 'branch_id', string='Branches',
|
||||
required=True)
|
||||
family_category_ids = fields.Many2many(
|
||||
'benefit.category',
|
||||
'service_category_rel',
|
||||
'service_id',
|
||||
'category_id',
|
||||
string='Family Category',
|
||||
compute='_compute_family_category_ids' ,)
|
||||
family_ids = fields.One2many('seasonal.grant.benefit', 'seasonal_service_id', string='Family')
|
||||
aid_amount = fields.Float(string="Aid Amount",compute="_compute_aid_amount", store=True)
|
||||
'benefit.category',
|
||||
'service_category_rel',
|
||||
'service_id',
|
||||
'category_id',
|
||||
string='Family Category',
|
||||
compute='_compute_family_category_ids', )
|
||||
family_ids = fields.One2many('seasonal.grant.benefit', 'seasonal_service_id', string='Family')
|
||||
aid_amount = fields.Float(string="Aid Amount", compute="_compute_aid_amount", store=True)
|
||||
benefit_member_count = fields.Integer(string="Benefit Member count", compute="compute_family_benefit", store=True)
|
||||
family_count = fields.Integer(string="Family count", compute="compute_family_benefit", store=True)
|
||||
family_disbursement_total_amount = fields.Float(string="Total Family Disbursement Amount", compute="_compute_family_disbursement", store=True)
|
||||
payment_order_id = fields.Many2one('payment.orders',string='Payment Order', copy= False)
|
||||
family_disbursement_total_amount = fields.Float(string="Total Family Disbursement Amount",
|
||||
compute="_compute_family_disbursement", store=True)
|
||||
payment_order_id = fields.Many2one('payment.orders', string='Payment Order', copy=False)
|
||||
state = fields.Selection(selection=[
|
||||
('draft', 'Draft'),
|
||||
('calculated', 'Calculated'),
|
||||
('approval_of_beneficiary_services', 'Approval of beneficiary services'),
|
||||
('accounting_approve', 'Accounting Approve'),
|
||||
|
||||
|
|
@ -35,17 +41,37 @@ class SeasonalService(models.Model):
|
|||
account_id = fields.Many2one('account.account', string='Expenses Account', related="service_type_id.account_id")
|
||||
service_requests_ids = fields.One2many('service.request', 'seasonal_service_id', string='Service Requests')
|
||||
benefit_ids = fields.Many2many(comodel_name='grant.benefit', relation='benefit_grant_seasonal_service_rel',
|
||||
column1='seasonal_service_id',
|
||||
column2='benefit_id', string='Families', copy=False)
|
||||
member_ids = fields.Many2many(comodel_name='family.member', relation='family_member_seasonal_service_rel',
|
||||
column1='seasonal_service_id',
|
||||
column2='benefit_id', string='Families',copy=False)
|
||||
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")
|
||||
service_delivery_method = fields.Selection(selection=[
|
||||
('cash', 'Cash'),
|
||||
('in_kind', 'In kind'),], string='Service Delivery Method', default='cash')
|
||||
|
||||
@api.depends('branch_ids', 'family_category_ids')
|
||||
def _compute_domain_ids(self):
|
||||
for rec in self:
|
||||
domain = ['|', ('state', '=', 'second_approve'), '&', ('state', 'in', ('waiting_approve', 'first_approve')),
|
||||
('action_type', '=', 'suspended')]
|
||||
if self.branch_ids:
|
||||
domain.append(('branch_custom_id', 'in', self.branch_ids.ids))
|
||||
if self.family_category_ids:
|
||||
domain.append(('benefit_category_id', 'in', self.family_category_ids.ids))
|
||||
|
||||
@api.depends('service_type_id','service_type_id.benefit_category_ids')
|
||||
families = self.env['grant.benefit'].sudo().search(domain)
|
||||
rec.family_domain_ids = families
|
||||
|
||||
@api.depends('service_type_id', 'service_type_id.benefit_category_ids')
|
||||
def _compute_family_category_ids(self):
|
||||
for record in self:
|
||||
if record.service_type_id and record.service_type_id.benefit_category_ids:
|
||||
if record.service_type_id and record.service_type_id.benefit_category_ids:
|
||||
record.family_category_ids = record.service_type_id.benefit_category_ids
|
||||
else:
|
||||
record.family_category_ids = []
|
||||
else:
|
||||
record.family_category_ids = []
|
||||
|
||||
@api.model
|
||||
def create(self, vals):
|
||||
|
|
@ -62,11 +88,10 @@ class SeasonalService(models.Model):
|
|||
|
||||
@api.onchange('service_type_id')
|
||||
def _onchange_service_type_id(self):
|
||||
"""
|
||||
Clears the One2many field when service_type_id is changed and data exists in the other field.
|
||||
"""
|
||||
if self.family_ids:
|
||||
self.family_ids = [(5, 0, 0)]
|
||||
if self.benefit_ids:
|
||||
self.benefit_ids = [(5, 0, 0)]
|
||||
if self.member_ids:
|
||||
self.member_ids = [(5, 0, 0)]
|
||||
|
||||
def action_open_exchange_order_wizard(self):
|
||||
ids = []
|
||||
|
|
@ -79,15 +104,15 @@ class SeasonalService(models.Model):
|
|||
raise UserError(_("There are already disbursement orders associated with the request(s)."))
|
||||
else:
|
||||
return {
|
||||
'type': 'ir.actions.act_window',
|
||||
'name': 'Exchange Order',
|
||||
'res_model': 'exchange.order.wizard',
|
||||
'view_mode': 'form',
|
||||
'target': 'new',
|
||||
'context': {'default_service_ids': ids,
|
||||
'seasonal_service': True,
|
||||
}
|
||||
}
|
||||
'type': 'ir.actions.act_window',
|
||||
'name': 'Exchange Order',
|
||||
'res_model': 'exchange.order.wizard',
|
||||
'view_mode': 'form',
|
||||
'target': 'new',
|
||||
'context': {'default_service_ids': ids,
|
||||
'seasonal_service': True,
|
||||
}
|
||||
}
|
||||
|
||||
@api.depends('family_ids', 'family_ids.family_id')
|
||||
def compute_family_benefit(self):
|
||||
|
|
@ -95,7 +120,7 @@ class SeasonalService(models.Model):
|
|||
record.family_count = len(record.family_ids)
|
||||
if record.service_type_id and record.service_type_id.service_type == 'eid_gift':
|
||||
record.benefit_member_count = len(record.family_ids.family_id.member_ids.filtered(
|
||||
lambda x: x.member_status == 'benefit' and x.age <= self.service_type_id.eid_gift_max_age))
|
||||
lambda x: x.member_status == 'benefit' and x.age <= self.service_type_id.max_age))
|
||||
else:
|
||||
record.benefit_member_count = sum(record.family_ids.family_id.mapped('benefit_member_count'))
|
||||
|
||||
|
|
@ -106,11 +131,11 @@ class SeasonalService(models.Model):
|
|||
aid_amount = 0.0
|
||||
if record.service_type_id:
|
||||
if record.service_type_id.service_type == 'ramadan_basket':
|
||||
aid_amount = record.service_type_id.ramadan_basket_member_amount
|
||||
aid_amount = record.service_type_id.max_amount
|
||||
elif record.service_type_id.service_type == 'eid_gift':
|
||||
aid_amount = record.service_type_id.eid_gift_member_amount
|
||||
aid_amount = record.service_type_id.max_amount
|
||||
elif record.service_type_id.service_type == 'winter_clothing':
|
||||
aid_amount = record.service_type_id.winter_clothing_member_amount
|
||||
aid_amount = record.service_type_id.max_amount
|
||||
record.write({'aid_amount': aid_amount})
|
||||
|
||||
@api.depends('service_type_id', 'aid_amount', 'benefit_member_count', 'family_count')
|
||||
|
|
@ -129,7 +154,6 @@ class SeasonalService(models.Model):
|
|||
else:
|
||||
record.family_disbursement_total_amount = 0.0
|
||||
|
||||
|
||||
def action_approval_of_beneficiary_services(self):
|
||||
for rec in self:
|
||||
if not rec.service_requests_ids:
|
||||
|
|
@ -140,42 +164,54 @@ class SeasonalService(models.Model):
|
|||
rec.state = 'approval_of_beneficiary_services'
|
||||
|
||||
def action_accounting_approve(self):
|
||||
for rec in self:
|
||||
rec.service_requests_ids.write({'state': 'send_request_to_supplier'})
|
||||
rec.state = 'accounting_approve'
|
||||
|
||||
for rec in self:
|
||||
rec.service_requests_ids.write({'state': 'send_request_to_supplier'})
|
||||
rec.state = 'accounting_approve'
|
||||
|
||||
def get_families(self):
|
||||
if self.family_ids:
|
||||
self.family_ids.unlink()
|
||||
domain = ['|', ('state', '=', 'second_approve'), '&', ('state', 'in', ('waiting_approve','first_approve')),('action_type', '=', 'suspended')]
|
||||
if self.branch_ids:
|
||||
domain.append(('branch_custom_id', 'in', self.branch_ids.ids)) # Filter by selected branches
|
||||
def action_calculate(self):
|
||||
# if self.service_type_id and self.service_type_id.service_type == 'eid_gift':
|
||||
# family_ids = self.env['family.member'].search(
|
||||
# [('age', '<=', self.service_type_id.eid_gift_max_age),('member_status','=','benefit')]).benefit_id
|
||||
|
||||
if self.family_category_ids:
|
||||
domain.append(('benefit_category_id', 'in', self.family_category_ids.ids)) # Filter by selected family categories
|
||||
|
||||
if self.service_type_id and self.service_type_id.service_type == 'eid_gift':
|
||||
family_ids = self.env['family.member'].search(
|
||||
[('age', '<=', self.service_type_id.eid_gift_max_age),('member_status','=','benefit')]).benefit_id
|
||||
|
||||
domain.append(('id', 'in', family_ids.ids)) # Append the filtered family IDs to domain
|
||||
families = self.env['grant.benefit'].sudo().search(domain)
|
||||
if not self.family_ids and families:
|
||||
for rec in families:
|
||||
self.family_ids = [(0, 0, {
|
||||
'family_id': rec.id,
|
||||
})]
|
||||
# domain.append(('id', 'in', family_ids.ids)) # Append the filtered family IDs to domain
|
||||
Service = self.env['service.request']
|
||||
vals = []
|
||||
for rec in self:
|
||||
if not rec.benefit_ids:
|
||||
raise UserError(_("You must add at least one family."))
|
||||
|
||||
rec.service_requests_ids.unlink()
|
||||
if rec.benefit_type == "family":
|
||||
for benefit in rec.benefit_ids:
|
||||
service_request = Service.create(
|
||||
{'family_id': benefit.id, 'service_cat': rec.service_type_id.id, 'seasonal_service_id': rec.id,
|
||||
'benefit_type': rec.benefit_type})
|
||||
service_request.onchange_requested_service_amount()
|
||||
if rec.service_delivery_method == "cash":
|
||||
service_request.requested_service_amount = service_request.service_max_amount
|
||||
else:
|
||||
service_request.requested_service_amount = 0
|
||||
service_request.is_in_kind = True
|
||||
else:
|
||||
pass
|
||||
|
||||
rec.state = 'calculated'
|
||||
|
||||
def action_recalculate(self):
|
||||
for rec in self:
|
||||
rec.service_requests_ids.unlink()
|
||||
|
||||
def action_reset_to_draft(self):
|
||||
for rec in self:
|
||||
rec.service_requests_ids.write({'state': 'draft'})
|
||||
rec.service_requests_ids.unlink()
|
||||
rec.state = 'draft'
|
||||
|
||||
|
||||
class SeasonalGrantBenefit(models.Model):
|
||||
_name = 'seasonal.grant.benefit'
|
||||
|
||||
family_id = fields.Many2one('grant.benefit',string='Family', required=True)
|
||||
family_id = fields.Many2one('grant.benefit', string='Family', required=True)
|
||||
family_category = fields.Many2one('benefit.category', string='Family Category',
|
||||
related='family_id.benefit_category_id')
|
||||
branch_custom_id = fields.Many2one('branch.settings', string="Branch", related='family_id.branch_custom_id',
|
||||
|
|
@ -183,12 +219,12 @@ class SeasonalGrantBenefit(models.Model):
|
|||
aid_amount = fields.Float(string="Aid Amount", compute="_compute_aid_amount", store=True)
|
||||
account_id = fields.Many2one('account.account', string='Expenses Account', related='seasonal_service_id.account_id')
|
||||
name = fields.Char(string='Reference', related='seasonal_service_id.name')
|
||||
service_type_id = fields.Many2one('services.settings', related='seasonal_service_id.service_type_id', string="Seasonal Service Type")
|
||||
seasonal_service_id = fields.Many2one('seasonal.service',string='Seasonal Service')
|
||||
payment_order_id = fields.Many2one('payment.orders',string='Payment Order')
|
||||
service_type_id = fields.Many2one('services.settings', related='seasonal_service_id.service_type_id',
|
||||
string="Seasonal Service Type")
|
||||
seasonal_service_id = fields.Many2one('seasonal.service', string='Seasonal Service')
|
||||
payment_order_id = fields.Many2one('payment.orders', string='Payment Order')
|
||||
|
||||
|
||||
@api.depends('family_id','service_type_id')
|
||||
@api.depends('family_id', 'service_type_id')
|
||||
def _compute_aid_amount(self):
|
||||
""" Compute Aid Amount based on service_type_id """
|
||||
for record in self:
|
||||
|
|
@ -196,33 +232,35 @@ class SeasonalGrantBenefit(models.Model):
|
|||
# benefit_members = 1
|
||||
if record.service_type_id:
|
||||
if record.service_type_id.service_type == 'ramadan_basket':
|
||||
aid_amount = record.service_type_id.ramadan_basket_member_amount
|
||||
aid_amount = record.service_type_id.max_amount
|
||||
elif record.service_type_id.service_type == 'eid_gift' and record.family_id:
|
||||
benefit_members = len(record.family_id.member_ids.filtered(lambda x: x.member_status == 'benefit' and x.age <= record.service_type_id.eid_gift_max_age))
|
||||
aid_amount = record.service_type_id.eid_gift_member_amount * benefit_members
|
||||
benefit_members = len(record.family_id.member_ids.filtered(
|
||||
lambda x: x.member_status == 'benefit' and x.age <= record.service_type_id.max_age))
|
||||
aid_amount = record.service_type_id.max_amount * benefit_members
|
||||
elif record.service_type_id.service_type == 'winter_clothing' and record.family_id:
|
||||
benefit_members = record.family_id.mapped('benefit_member_count')[0]
|
||||
aid_amount = record.service_type_id.winter_clothing_member_amount * benefit_members
|
||||
aid_amount = record.service_type_id.max_amount * benefit_members
|
||||
record.write({'aid_amount': aid_amount})
|
||||
|
||||
@api.onchange('family_id')
|
||||
def get_family_id_domain(self):
|
||||
domain = ['|', ('state', '=', 'second_approve'), '&', ('state', 'in', ('waiting_approve','first_approve')),('action_type', '=', 'suspended')]
|
||||
domain = ['|', ('state', '=', 'second_approve'), '&', ('state', 'in', ('waiting_approve', 'first_approve')),
|
||||
('action_type', '=', 'suspended')]
|
||||
if self.seasonal_service_id:
|
||||
if self.seasonal_service_id.branch_ids:
|
||||
domain.append(('branch_custom_id', 'in', self.seasonal_service_id.branch_ids.ids)) # Filter by selected branches
|
||||
domain.append(
|
||||
('branch_custom_id', 'in', self.seasonal_service_id.branch_ids.ids)) # Filter by selected branches
|
||||
|
||||
if self.seasonal_service_id.family_category_ids:
|
||||
domain.append(('benefit_category_id', 'in', self.seasonal_service_id.family_category_ids.ids)) # Filter by selected family categories
|
||||
domain.append(('benefit_category_id', 'in',
|
||||
self.seasonal_service_id.family_category_ids.ids)) # Filter by selected family categories
|
||||
|
||||
if self.service_type_id and self.service_type_id.service_type == 'eid_gift':
|
||||
family_ids = self.env['family.member'].search(
|
||||
[('age', '<=', self.service_type_id.eid_gift_max_age),('member_status','=','benefit')]).benefit_id
|
||||
[('age', '<=', self.service_type_id.max_age),
|
||||
('member_status', '=', 'benefit')]).benefit_id
|
||||
|
||||
domain.append(('id', 'in', family_ids.ids)) # Append the filtered family IDs to domain
|
||||
families = self.seasonal_service_id.family_ids.mapped('family_id')
|
||||
domain.append(('id', 'not in', families.ids))
|
||||
return {'domain': {'family_id': domain}}
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -137,8 +137,7 @@ class ServiceRequest(models.Model):
|
|||
('yes', 'Yes'),
|
||||
('no', 'No'),
|
||||
], string='Has Marriage Course')
|
||||
#Eid Gift
|
||||
eid_gift_benefit_count = fields.Integer(string='Eid Gift Benefit Count',compute="_get_eid_gift_benefit_count")
|
||||
service_benefit_count = fields.Integer(string='Service Benefit Count',compute="_compute_service_benefit_count")
|
||||
#Buy home
|
||||
amount_for_buy_home_for_member_count = fields.Float(string="Amount For Buy Home for member count")
|
||||
home_age = fields.Integer(string='Home Age')
|
||||
|
|
@ -192,6 +191,7 @@ class ServiceRequest(models.Model):
|
|||
string="Owner Identity")
|
||||
seasonal_service_id = fields.Many2one('seasonal.service', string='Seasonal Service', ondelete='cascade')
|
||||
is_seasonal = fields.Boolean(string='Is Seasonal Service?',related='service_cat.is_seasonal_service')
|
||||
is_in_kind = fields.Boolean(string="In Kind",default=False)
|
||||
|
||||
@api.depends('requested_service_amount', 'service_max_amount')
|
||||
def _get_money_for_payment_is_appearance(self):
|
||||
|
|
@ -420,12 +420,18 @@ class ServiceRequest(models.Model):
|
|||
rec.rent_for_alternative_housing = self.env['services.settings'].search([('service_type','=','rent')],limit=1).id
|
||||
else:
|
||||
rec.rent_for_alternative_housing = False
|
||||
@api.depends('family_id')
|
||||
def _get_eid_gift_benefit_count(self):
|
||||
|
||||
@api.depends('family_id','service_cat')
|
||||
def _compute_service_benefit_count(self):
|
||||
for rec in self:
|
||||
rec.eid_gift_benefit_count = 0
|
||||
if rec.family_id:
|
||||
rec.eid_gift_benefit_count = len(rec.family_id.member_ids.filtered(lambda x: x.age <= rec.service_cat.max_age))
|
||||
count = 1
|
||||
if rec.benefit_type == "family":
|
||||
count = len(rec.family_id.member_ids)
|
||||
if rec.service_cat.max_age > 0:
|
||||
count = len(
|
||||
rec.family_id.member_ids.filtered(lambda x: x.age <= rec.service_cat.max_age))
|
||||
rec.service_benefit_count = count
|
||||
|
||||
|
||||
@api.onchange('requests_counts', 'service_type', 'service_reason_id')
|
||||
def _get_max_transportation_amounts(self):
|
||||
|
|
@ -565,22 +571,11 @@ class ServiceRequest(models.Model):
|
|||
furnishing_cost_sum += rec.furnishing_cost
|
||||
self.requested_service_amount = furnishing_cost_sum
|
||||
|
||||
@api.onchange('member_id','family_id','eid_gift_benefit_count','service_cat')
|
||||
@api.onchange('family_id','service_cat')
|
||||
def _onchange_member(self):
|
||||
for rec in self:
|
||||
if rec.family_id:
|
||||
rec.benefit_type = rec.service_cat.benefit_type
|
||||
if rec.benefit_type == 'family' and rec.service_type == 'eid_gift':
|
||||
rec.requested_service_amount = rec.eid_gift_benefit_count * rec.service_cat.eid_gift_member_amount
|
||||
if rec.benefit_type == 'member' and rec.service_type == 'eid_gift':
|
||||
rec.requested_service_amount = rec.service_cat.eid_gift_member_amount
|
||||
if rec.benefit_type == 'family' and rec.service_type == 'winter_clothing':
|
||||
rec.requested_service_amount = rec.benefit_member_count * rec.service_cat.winter_clothing_member_amount
|
||||
if rec.benefit_type == 'member' and rec.service_type == 'winter_clothing':
|
||||
rec.requested_service_amount = rec.service_cat.winter_clothing_member_amount
|
||||
if rec.benefit_type == 'family' and rec.service_type == 'ramadan_basket':
|
||||
rec.requested_service_amount = rec.service_cat.ramadan_basket_member_amount
|
||||
else:
|
||||
rec.benefit_type = rec.service_cat.benefit_type
|
||||
if not rec.family_id:
|
||||
rec.member_id = False
|
||||
rec.service_cat = False
|
||||
rec.available_service_cats = False
|
||||
|
|
@ -814,8 +809,7 @@ class ServiceRequest(models.Model):
|
|||
total_spent = sum(existing_requests_within_year.mapped('requested_service_amount'))
|
||||
rec.service_max_amount = rec.service_cat.max_amount - total_spent
|
||||
elif rec.max_limit_period == "individual":
|
||||
if rec.benefit_type == "family":
|
||||
rec.service_max_amount *= rec.benefit_member_count
|
||||
rec.service_max_amount *= rec.service_benefit_count
|
||||
elif rec.max_limit_period == "recurrence_period":
|
||||
pass
|
||||
|
||||
|
|
@ -883,15 +877,15 @@ class ServiceRequest(models.Model):
|
|||
raise UserError(
|
||||
_("You Cannot request this service for period more than %s") % rec.service_cat.rent_period)
|
||||
# Validation for 'family' benefit type with 'eid_gift' service type
|
||||
if rec.benefit_type == 'family' and rec.service_cat.service_type == 'eid_gift':
|
||||
if rec.eid_gift_benefit_count == 0:
|
||||
raise UserError(
|
||||
_("You cannot request this service because family should have members his age less than %s") % rec.service_cat.eid_gift_max_age)
|
||||
#if rec.benefit_type == 'family' and rec.service_cat.service_type == 'eid_gift':
|
||||
# if rec.eid_gift_benefit_count == 0:
|
||||
# raise UserError(
|
||||
# _("You cannot request this service because family should have members his age less than %s") % rec.service_cat.max_age)
|
||||
# Validation for 'member' benefit type with 'eid_gift' service type
|
||||
if rec.benefit_type == 'member' and rec.service_cat.service_type == 'eid_gift':
|
||||
if rec.member_id.age > rec.service_cat.eid_gift_max_age:
|
||||
raise UserError(
|
||||
_("You cannot request this service because your age should be less than %s") % rec.service_cat.eid_gift_max_age)
|
||||
#if rec.benefit_type == 'member' and rec.service_cat.service_type == 'eid_gift':
|
||||
# if rec.member_id.age > rec.service_cat.max_age:
|
||||
# raise UserError(
|
||||
# _("You cannot request this service because your age should be less than %s") % rec.service_cat.max_age)
|
||||
|
||||
@api.onchange('member_id')
|
||||
def onchange_member_id(self):
|
||||
|
|
|
|||
|
|
@ -46,13 +46,6 @@ class ServicesSettings(models.Model):
|
|||
member_max_payroll = fields.Float(string='Member Max Payroll')
|
||||
fatherless_member_amount = fields.Float(string='Fatherless Member Amount')
|
||||
orphan_member_amount = fields.Float(string='Orphan Member Amount')
|
||||
# Eid Gift
|
||||
eid_gift_max_age = fields.Integer(string='Eid Gift Max Age')
|
||||
eid_gift_member_amount = fields.Float(string='Eid Gift Member Amount')
|
||||
#Winter clothing
|
||||
winter_clothing_member_amount = fields.Float(string="Winter clothing Member Amount")
|
||||
#Ramadan Basket
|
||||
ramadan_basket_member_amount = fields.Float(string='Ramadan Basket Member Amount')
|
||||
#Buy Home
|
||||
limit_person_line_ids = fields.One2many('service.limit.person.line', 'services_settings_id')
|
||||
buy_home_max_total_amount = fields.Float(string='Buy Home Max Total Amount')
|
||||
|
|
@ -117,6 +110,7 @@ class ServicesSettings(models.Model):
|
|||
string='Maximum Number of Months',
|
||||
help='Specify the maximum allowed number of months when the period type is monthly.'
|
||||
)
|
||||
in_kind = fields.Boolean(string="In Kind")
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -6,14 +6,7 @@
|
|||
<field name="sequence">1</field>
|
||||
</record>
|
||||
|
||||
<record id="translation_benefit_ar" model="ir.translation">
|
||||
<field name="name">ir.module.category,name</field>
|
||||
<field name="lang">ar_001</field>
|
||||
<field name="type">model</field>
|
||||
<field name="res_id" eval="ref('module_category_benefit')"/>
|
||||
<field name="src">Beneficiaries Management</field>
|
||||
<field name="value">فئات المستفيدين</field>
|
||||
</record>
|
||||
|
||||
|
||||
<!-- <record id="group_benefit_user" model="res.groups">-->
|
||||
<!-- <field name="name">Beneficiaries User</field>-->
|
||||
|
|
|
|||
|
|
@ -143,7 +143,7 @@
|
|||
<field name="education_status"/>
|
||||
<field name="benefit_id" attrs="{'readonly': [('state','!=','draft')]}" force_save="1"
|
||||
required="1"/>
|
||||
<field name="partner_id" />
|
||||
<field name="partner_id"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="is_work"
|
||||
|
|
@ -211,7 +211,8 @@
|
|||
attrs="{'invisible': [('education_status', '!=', 'educated')]}">
|
||||
<field name="member_education_status_ids" mode="tree,form"/>
|
||||
</page>
|
||||
<page string="Exams Degrees" attrs="{'invisible': [('education_status', '!=', 'educated')]}">
|
||||
<page string="Exams Degrees"
|
||||
attrs="{'invisible': [('education_status', '!=', 'educated')]}">
|
||||
<field name="exam_ids" mode="tree" options="{'no_open': True}"
|
||||
widget="one2many_list">
|
||||
<tree editable="bottom">
|
||||
|
|
@ -219,7 +220,8 @@
|
|||
<field name="exam_id" options="{'no_create_edit': True, 'no_create': True}"/>
|
||||
<field name="exam_degree"/>
|
||||
<field name="exam_date"/>
|
||||
<field name="exam_attachment" widget="binary" filename="exam_attachment_file_name"/>
|
||||
<field name="exam_attachment" widget="binary"
|
||||
filename="exam_attachment_file_name"/>
|
||||
<field name="exam_attachment_file_name" invisible="1"/>
|
||||
|
||||
</tree>
|
||||
|
|
@ -294,6 +296,23 @@
|
|||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="family_member_kanban" model="ir.ui.view">
|
||||
<field name="name">family.member.kanban</field>
|
||||
<field name="model">family.member</field>
|
||||
<field name="arch" type="xml">
|
||||
<kanban create="0">
|
||||
<field name="name"/>
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<div t-attf-class="oe_kanban_global_click">
|
||||
<div class="oe_kanban_details">
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="family_member_search" model="ir.ui.view">
|
||||
<field name="name">family.member.search</field>
|
||||
|
|
@ -321,7 +340,7 @@
|
|||
<record model="ir.actions.act_window" id="family_member_action">
|
||||
<field name="name">Family Members</field>
|
||||
<field name="res_model">family.member</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_mode">tree,kanban,form</field>
|
||||
<field name="help" type="html">
|
||||
<p class="oe_view_nocontent_create">Create the Member
|
||||
</p>
|
||||
|
|
|
|||
|
|
@ -8,13 +8,20 @@
|
|||
<field name="arch" type="xml">
|
||||
<form string="Seasonal Service">
|
||||
<header>
|
||||
<button name="action_calculate" type="object"
|
||||
string="Calculate" class="btn btn-info"
|
||||
attrs="{'invisible': [('state', '!=', 'draft')]}"/>
|
||||
|
||||
<button name="action_approval_of_beneficiary_services" type="object"
|
||||
string="Approve Beneficiary Services" class="oe_highlight"
|
||||
attrs="{'invisible': [('state', '!=', 'draft')]}"
|
||||
attrs="{'invisible': [('state', '!=', 'calculated')]}"
|
||||
groups="odex_benefit.group_approval_of_beneficiary_services"/>
|
||||
<button name="get_families" type="object"
|
||||
string="Get Families" class="oe_highlight"
|
||||
attrs="{'invisible': [('state', '!=', 'draft')]}"/>
|
||||
<button string="Withdraw" type="object" name="action_reset_to_draft" class="btn btn-danger"
|
||||
states="calculated"/>
|
||||
<button name="action_recalculate" string="Recalculate" class="btn btn-info"
|
||||
type="object" states="calculated"/>
|
||||
|
||||
|
||||
<button name="action_accounting_approve" type="object"
|
||||
string="Accounting Approve"
|
||||
class="oe_highlight"
|
||||
|
|
@ -29,7 +36,7 @@
|
|||
groups="odex_benefit.group_benefit_accounting_accept"/>
|
||||
|
||||
<field name="state" widget="statusbar"
|
||||
statusbar_visible="draft, approval_of_beneficiary_services,accounting_approve"/>
|
||||
statusbar_visible="draft,calculated,approval_of_beneficiary_services,accounting_approve"/>
|
||||
</header>
|
||||
<sheet>
|
||||
|
||||
|
|
@ -42,9 +49,11 @@
|
|||
<field name="date" attrs="{'readonly': [('state', '!=', 'draft')]}"/>
|
||||
<field name="service_type_id"
|
||||
attrs="{'readonly': [('state', '!=', 'draft')]}"/>
|
||||
<field name="service_delivery_method" attrs="{'readonly': [('state', '!=', 'draft')]}"/>
|
||||
<field name="branch_ids" widget="many2many_tags"
|
||||
attrs="{'readonly': [('state', '!=', 'draft')]}"/>
|
||||
<field name="family_category_ids" widget="many2many_tags" readonly="1"/>
|
||||
<field name="family_domain_ids" widget="many2many_tags" invisible="1"/>
|
||||
<field name="payment_order_id" readonly="1"
|
||||
groups="odex_benefit.group_benefit_accounting_accept"
|
||||
attrs="{
|
||||
|
|
@ -58,6 +67,7 @@
|
|||
<field name="family_count" readonly="1"/>
|
||||
<field name="benefit_member_count" readonly="1"/>
|
||||
<field name="family_disbursement_total_amount" readonly="1"/>
|
||||
<field name="benefit_type" invisible="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
|
|
@ -73,11 +83,30 @@
|
|||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Services Requests">
|
||||
<field name="service_requests_ids" widget="one2many_list" mode="tree,form"/>
|
||||
<page string="Families">
|
||||
<field name="benefit_ids" domain="[('id', 'in', family_domain_ids)]"/>
|
||||
</page>
|
||||
<page string="Families">
|
||||
<field name="benefit_ids"/>
|
||||
<page string="Members" attrs="{'invisible': [('benefit_type', '!=', 'member')]}">
|
||||
<field name="member_ids" domain="[('benefit_id', 'in', family_domain_ids)]"/>
|
||||
</page>
|
||||
<page string="Services Requests">
|
||||
<field name="service_requests_ids">
|
||||
<tree>
|
||||
<field name="family_id"/>
|
||||
<field name="branch_custom_id" optional="hidden"/>
|
||||
<field name="researcher_id" optional="hidden"/>
|
||||
<field name="family_category"/>
|
||||
<field name="benefit_member_count"/>
|
||||
<field name="service_benefit_count"/>
|
||||
<field name="requested_service_amount"
|
||||
attrs="{'column_invisible':[('parent.service_delivery_method','!=','cash')]}"/>
|
||||
<field name="state" widget="badge" decoration-success="state in ['gm_assistant']"
|
||||
decoration-muted="state == 'draft'"
|
||||
decoration-danger="state in ['refused']"
|
||||
decoration-info="state in ['first_approve','waiting_approve']"
|
||||
decoration-warning="state in ['researcher']"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
|
|
|
|||
|
|
@ -177,7 +177,7 @@
|
|||
<field name="family_category" force_save="1"/>
|
||||
<field name="researcher_id" force_save="1"/>
|
||||
<field name="benefit_member_count" force_save="1"/>
|
||||
<field name="eid_gift_benefit_count"
|
||||
<field name="service_benefit_count"
|
||||
attrs="{'invisible':['|',('service_type','!=','eid_gift'),('benefit_type','!=','family')]}"/>
|
||||
<field name="branch_custom_id" force_save="1"/>
|
||||
<field name="member_id"
|
||||
|
|
@ -205,6 +205,8 @@
|
|||
<field name="service_cat"
|
||||
attrs="{'readonly':[('state','not in',['draft','researcher','waiting_approve'])]}"
|
||||
domain="[('id','in',available_service_cats)]" required="1"/>
|
||||
<field name="is_in_kind"
|
||||
attrs="{'readonly':[('state','not in',['draft','researcher','waiting_approve'])]}"/>
|
||||
<label for="start" string="Period"
|
||||
attrs="{'invisible': ['&', ('service_type', '!=', 'rent'), ('max_limit_period', '!=', 'month')]}"/>
|
||||
<div name="dates" class="o_row"
|
||||
|
|
@ -467,9 +469,10 @@
|
|||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<field name="name"/>
|
||||
<field name="create_date"/>
|
||||
<field name="date"/>
|
||||
<field name="create_uid" string="Request Creator"/>
|
||||
<field name="family_id"/>
|
||||
<field name="branch_custom_id"/>
|
||||
<field name="researcher_id"/>
|
||||
<field name="need_status"/>
|
||||
<field name="main_service_category" invisible="1"/>
|
||||
|
|
|
|||
|
|
@ -51,7 +51,8 @@
|
|||
<field name="currency_id" invisible="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="max_age" attrs="{'invisible': [('benefit_type', '=', 'family')]}"/>
|
||||
<field name="max_age"/>
|
||||
<field name="in_kind" widget="boolean_toggle"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
|
|
@ -209,24 +210,6 @@
|
|||
</field>
|
||||
</group>
|
||||
</page>
|
||||
<page string="Eid Gift Settings" attrs="{'invisible':[('service_type','!=','eid_gift')]}">
|
||||
<group>
|
||||
<field name="eid_gift_max_age"/>
|
||||
<field name="eid_gift_member_amount"/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="Winter Clothing Settings"
|
||||
attrs="{'invisible':[('service_type','!=','winter_clothing')]}">
|
||||
<group>
|
||||
<field name="winter_clothing_member_amount"/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="Ramadan Basket Settings"
|
||||
attrs="{'invisible':[('service_type','!=','ramadan_basket')]}">
|
||||
<group>
|
||||
<field name="ramadan_basket_member_amount"/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="Amounts by Number of Persons"
|
||||
attrs="{'invisible':[('max_limit_type', '!=', 'amount_person')]}">
|
||||
<field name="limit_person_line_ids" widget="one2many_list">
|
||||
|
|
|
|||
Loading…
Reference in New Issue