[IMP] odex_benefit: IMP benefit
This commit is contained in:
parent
593e9fbdb3
commit
424303fd8b
|
|
@ -16572,12 +16572,6 @@ msgid ""
|
||||||
"service between %s and %s."
|
"service between %s and %s."
|
||||||
msgstr "يتداخل هذا الطلب مع طلبات أخرى لنفس الخدمة [%s] خلال الفترة من %s إلى %s."
|
msgstr "يتداخل هذا الطلب مع طلبات أخرى لنفس الخدمة [%s] خلال الفترة من %s إلى %s."
|
||||||
|
|
||||||
#. module: odex_benefit
|
|
||||||
#: code:addons/odex_benefit/models/service_request.py:0
|
|
||||||
#, python-format
|
|
||||||
msgid "This service is not eligible because the son is not working."
|
|
||||||
msgstr "هذه الخدمة غير مستحقة لأن الفرد لا يعمل."
|
|
||||||
|
|
||||||
#. module: odex_benefit
|
#. module: odex_benefit
|
||||||
#: code:addons/odex_benefit/models/benefit.py:0
|
#: code:addons/odex_benefit/models/benefit.py:0
|
||||||
#: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__total_father_families
|
#: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__total_father_families
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,11 @@ class ServiceRequest(models.Model):
|
||||||
compute="_get_estimated_rent_amount_payment")
|
compute="_get_estimated_rent_amount_payment")
|
||||||
service_type = fields.Selection([('rent', 'Rent')], string='Service Type', related='service_cat.service_type')
|
service_type = fields.Selection([('rent', 'Rent')], string='Service Type', related='service_cat.service_type')
|
||||||
max_limit_period = fields.Selection(string='Maximum Limit Period', related='service_cat.max_limit_period')
|
max_limit_period = fields.Selection(string='Maximum Limit Period', related='service_cat.max_limit_period')
|
||||||
|
payment_method = fields.Selection([
|
||||||
|
('none', 'None'),
|
||||||
|
('payment_order', 'Payment Order'),
|
||||||
|
('invoice', 'Invoice'),
|
||||||
|
], string='Payment Method', default="payment_order")
|
||||||
# is_alternative_housing = fields.Boolean(string='Is Alternative Housing?')
|
# is_alternative_housing = fields.Boolean(string='Is Alternative Housing?')
|
||||||
rent_contract_number = fields.Char(string="Rent Contract Number", compute='_compute_rent_details', store=True)
|
rent_contract_number = fields.Char(string="Rent Contract Number", compute='_compute_rent_details', store=True)
|
||||||
rent_start_date = fields.Date(string='Rent Start Date', compute='_compute_rent_details', store=True)
|
rent_start_date = fields.Date(string='Rent Start Date', compute='_compute_rent_details', store=True)
|
||||||
|
|
@ -95,8 +100,7 @@ class ServiceRequest(models.Model):
|
||||||
device_account_id = fields.Many2one('account.account', string='Expenses Account', related='device_id.account_id')
|
device_account_id = fields.Many2one('account.account', string='Expenses Account', related='device_id.account_id')
|
||||||
accountant_id = fields.Many2one('res.users', string='Accountant', related='service_cat.accountant_id',
|
accountant_id = fields.Many2one('res.users', string='Accountant', related='service_cat.accountant_id',
|
||||||
readonly=False)
|
readonly=False)
|
||||||
service_producer_id = fields.Many2one('res.partner', string='Service Producer',
|
service_producer_id = fields.Many2one('res.partner', string='Service Producer', )
|
||||||
related='service_cat.service_producer_id')
|
|
||||||
is_service_producer = fields.Boolean(string='Is Service Producer?', related='service_cat.is_service_producer')
|
is_service_producer = fields.Boolean(string='Is Service Producer?', related='service_cat.is_service_producer')
|
||||||
# maintenance_items_id = fields.Many2one('home.maintenance.lines', string="Maintenance Items")
|
# maintenance_items_id = fields.Many2one('home.maintenance.lines', string="Maintenance Items")
|
||||||
maintenance_items_ids = fields.One2many('home.maintenance.items', 'service_request_id',
|
maintenance_items_ids = fields.One2many('home.maintenance.items', 'service_request_id',
|
||||||
|
|
@ -180,6 +184,9 @@ class ServiceRequest(models.Model):
|
||||||
car_name = fields.Char(string='Car Name')
|
car_name = fields.Char(string='Car Name')
|
||||||
car_owner_id = fields.Many2one('family.member', domain="[('benefit_id','=',family_id)]", string="Car Owner")
|
car_owner_id = fields.Many2one('family.member', domain="[('benefit_id','=',family_id)]", string="Car Owner")
|
||||||
car_model_id = fields.Many2one('benefit.vehicle.model', string='Car model')
|
car_model_id = fields.Many2one('benefit.vehicle.model', string='Car model')
|
||||||
|
car_price = fields.Float(string='Car Price')
|
||||||
|
car_remaining_amount = fields.Float(string='Remaining Amount',compute='_compute_remaining_amount',store=True,)
|
||||||
|
show_car_remaining_amount = fields.Boolean(string='Show Car Remaining Amount',compute='_compute_remaining_amount')
|
||||||
application_form = fields.Many2many('ir.attachment', 'request_application_form_rel', 'request_id', 'attachment_id',
|
application_form = fields.Many2many('ir.attachment', 'request_application_form_rel', 'request_id', 'attachment_id',
|
||||||
string="Application Form")
|
string="Application Form")
|
||||||
driving_license = fields.Many2many('ir.attachment', 'request_driving_license_rel', 'request_id', 'attachment_id',
|
driving_license = fields.Many2many('ir.attachment', 'request_driving_license_rel', 'request_id', 'attachment_id',
|
||||||
|
|
@ -227,6 +234,20 @@ class ServiceRequest(models.Model):
|
||||||
payment_order_state = "waiting"
|
payment_order_state = "waiting"
|
||||||
rec.payment_order_state = payment_order_state
|
rec.payment_order_state = payment_order_state
|
||||||
|
|
||||||
|
@api.depends('car_price', 'requested_service_amount', 'service_cat.service_type')
|
||||||
|
def _compute_remaining_amount(self):
|
||||||
|
for rec in self:
|
||||||
|
if rec.service_cat and rec.service_cat.service_type == 'buy_car':
|
||||||
|
if rec.car_price and rec.requested_service_amount:
|
||||||
|
rec.car_remaining_amount = rec.car_price - rec.requested_service_amount
|
||||||
|
rec.show_car_remaining_amount = rec.car_price > rec.requested_service_amount
|
||||||
|
else:
|
||||||
|
rec.car_remaining_amount = 0.0
|
||||||
|
rec.show_car_remaining_amount = False
|
||||||
|
else:
|
||||||
|
rec.car_remaining_amount = 0.0
|
||||||
|
rec.show_car_remaining_amount = False
|
||||||
|
|
||||||
def action_return_bank(self):
|
def action_return_bank(self):
|
||||||
self.ensure_one()
|
self.ensure_one()
|
||||||
return {
|
return {
|
||||||
|
|
@ -523,7 +544,15 @@ class ServiceRequest(models.Model):
|
||||||
@api.onchange('family_id', 'service_cat')
|
@api.onchange('family_id', 'service_cat')
|
||||||
def _onchange_member(self):
|
def _onchange_member(self):
|
||||||
for rec in self:
|
for rec in self:
|
||||||
rec.benefit_type = rec.service_cat.benefit_type
|
if rec.service_cat:
|
||||||
|
rec.benefit_type = rec.service_cat.benefit_type
|
||||||
|
rec.service_producer_id = rec.service_cat.service_producer_id
|
||||||
|
rec.payment_method = rec.service_cat.payment_method
|
||||||
|
else:
|
||||||
|
rec.benefit_type = False
|
||||||
|
rec.service_producer_id = False
|
||||||
|
rec.payment_method = 'payment_order'
|
||||||
|
|
||||||
if not rec.family_id:
|
if not rec.family_id:
|
||||||
rec.member_id = False
|
rec.member_id = False
|
||||||
rec.service_cat = False
|
rec.service_cat = False
|
||||||
|
|
@ -610,24 +639,35 @@ class ServiceRequest(models.Model):
|
||||||
raise ValidationError(
|
raise ValidationError(
|
||||||
_("You cannot request this service because you are less than %s") % rec.service_cat.min_count_member)
|
_("You cannot request this service because you are less than %s") % rec.service_cat.min_count_member)
|
||||||
if rec.service_cat.service_type == 'recruiting_driver':
|
if rec.service_cat.service_type == 'recruiting_driver':
|
||||||
son_members_above_age = rec.family_id.mapped('member_ids').filtered(
|
|
||||||
lambda x: x.relationn.relation_type == 'son' and x.age > 18)
|
|
||||||
daughter_members_above_age = rec.family_id.mapped('member_ids').filtered(
|
|
||||||
lambda x: x.relationn.relation_type == 'daughter' and x.age > 18)
|
|
||||||
disable_mother = rec.family_id.mapped('member_ids').filtered(
|
|
||||||
lambda x: x.relationn.relation_type == 'mother')
|
|
||||||
work_mother = rec.family_id.mapped('member_ids').filtered(
|
|
||||||
lambda x: x.relationn.relation_type == 'mother' and x.benefit_id.is_mother_work)
|
|
||||||
disable_replacement_mother = rec.family_id.mapped('member_ids').filtered(
|
|
||||||
lambda x: x.relationn.relation_type == 'replacement_mother')
|
|
||||||
work_replacement_mother = rec.family_id.mapped('member_ids').filtered(
|
|
||||||
lambda
|
|
||||||
x: x.relationn.relation_type == 'replacement_mother' and x.replacement_is_mother_work)
|
|
||||||
if not rec.family_id.has_car:
|
if not rec.family_id.has_car:
|
||||||
raise ValidationError(_("You cannot request this service because you do not have a car"))
|
raise ValidationError(_("You cannot request this service because you do not have a car"))
|
||||||
if son_members_above_age or daughter_members_above_age:
|
#son_members_above_age = rec.family_id.member_ids.filtered(
|
||||||
|
# lambda x: x.relationn.relation_type == 'son' and x.age > 18)
|
||||||
|
#daughter_members_above_age = rec.family_id.member_ids.filtered(
|
||||||
|
# lambda x: x.relationn.relation_type == 'daughter' and x.age > 18)
|
||||||
|
|
||||||
|
children_above_18_living_with_family = rec.family_id.member_ids.filtered(
|
||||||
|
lambda m: m.relationn.relation_type in ('son', 'daughter')
|
||||||
|
and m.age > 18
|
||||||
|
and not m.member_location_conf.is_far_from_family
|
||||||
|
)
|
||||||
|
|
||||||
|
if children_above_18_living_with_family:
|
||||||
raise ValidationError(
|
raise ValidationError(
|
||||||
_("You cannot request this service because children above 18 years"))
|
_("You cannot request this service because there is at least one child over 18 years old living with the family.")
|
||||||
|
)
|
||||||
|
|
||||||
|
disable_mother = rec.family_id.member_ids.filtered(
|
||||||
|
lambda x: x.relationn.relation_type == 'mother' and bool(x.disabilities_attachment_ids))
|
||||||
|
work_mother = rec.family_id.member_ids.filtered(
|
||||||
|
lambda x: x.relationn.relation_type == 'mother' and x.is_work)
|
||||||
|
disable_replacement_mother = rec.family_id.member_ids.filtered(
|
||||||
|
lambda x: x.relationn.relation_type == 'replacement_mother' and bool(x.disabilities_attachment_ids))
|
||||||
|
work_replacement_mother = rec.family_id.member_ids.filtered(
|
||||||
|
lambda x: x.relationn.relation_type == 'replacement_mother' and x.is_work)
|
||||||
|
#if son_members_above_age or daughter_members_above_age:
|
||||||
|
# raise ValidationError(
|
||||||
|
# _("You cannot request this service because children above 18 years"))
|
||||||
if rec.family_id.add_replacement_mother and not disable_replacement_mother and not work_replacement_mother:
|
if rec.family_id.add_replacement_mother and not disable_replacement_mother and not work_replacement_mother:
|
||||||
raise ValidationError(
|
raise ValidationError(
|
||||||
_("You cannot request this service because mother should be worked or has disability"))
|
_("You cannot request this service because mother should be worked or has disability"))
|
||||||
|
|
@ -807,9 +847,6 @@ class ServiceRequest(models.Model):
|
||||||
remaining = 0
|
remaining = 0
|
||||||
rec.service_max_amount = remaining
|
rec.service_max_amount = remaining
|
||||||
if rec.service_cat.service_type == 'marriage':
|
if rec.service_cat.service_type == 'marriage':
|
||||||
if rec.member_id.relationn.relation_type == 'son' and not rec.member_id.is_work:
|
|
||||||
raise ValidationError(_("This service is not eligible because the son is not working."))
|
|
||||||
|
|
||||||
if rec.marriage_contract_date and rec.date:
|
if rec.marriage_contract_date and rec.date:
|
||||||
request_date = rec.date.date() if isinstance(rec.date, datetime) else rec.date
|
request_date = rec.date.date() if isinstance(rec.date, datetime) else rec.date
|
||||||
contract_date = rec.marriage_contract_date
|
contract_date = rec.marriage_contract_date
|
||||||
|
|
@ -823,7 +860,7 @@ class ServiceRequest(models.Model):
|
||||||
rec.requested_service_amount = rec.service_max_amount
|
rec.requested_service_amount = rec.service_max_amount
|
||||||
if rec.member_age > rec.service_cat.max_age:
|
if rec.member_age > rec.service_cat.max_age:
|
||||||
raise ValidationError(_("Member Age should be less than %s ") % rec.service_cat.max_age)
|
raise ValidationError(_("Member Age should be less than %s ") % rec.service_cat.max_age)
|
||||||
if rec.member_payroll > rec.service_cat.member_max_payroll:
|
if rec.member_id.is_work and rec.member_payroll > rec.service_cat.member_max_payroll:
|
||||||
raise ValidationError(
|
raise ValidationError(
|
||||||
_("Member Payroll should be less than %s ") % rec.service_cat.member_max_payroll)
|
_("Member Payroll should be less than %s ") % rec.service_cat.member_max_payroll)
|
||||||
if not rec.is_orphan and rec.requested_service_amount > rec.service_max_amount:
|
if not rec.is_orphan and rec.requested_service_amount > rec.service_max_amount:
|
||||||
|
|
@ -908,6 +945,12 @@ class ServiceRequest(models.Model):
|
||||||
})
|
})
|
||||||
|
|
||||||
elif service_cats.payment_method == "invoice":
|
elif service_cats.payment_method == "invoice":
|
||||||
|
missing_producer = self.filtered(lambda r: not r.service_producer_id)
|
||||||
|
if missing_producer:
|
||||||
|
names = ", ".join(missing_producer.mapped('name'))
|
||||||
|
raise UserError(_(
|
||||||
|
"The following service requests do not have a Service Producer defined:\n%s"
|
||||||
|
) % names)
|
||||||
invalid_records = self.filtered(
|
invalid_records = self.filtered(
|
||||||
lambda r: r.state != 'accounting_approve'
|
lambda r: r.state != 'accounting_approve'
|
||||||
or r.payment_order_state != 'none'
|
or r.payment_order_state != 'none'
|
||||||
|
|
|
||||||
|
|
@ -224,14 +224,15 @@
|
||||||
groups="odex_benefit.group_benefit_accounting_accept"/>
|
groups="odex_benefit.group_benefit_accounting_accept"/>
|
||||||
<field name="vendor_bill" invisible="1"/>
|
<field name="vendor_bill" invisible="1"/>
|
||||||
<field name="is_service_producer" invisible="1"/>
|
<field name="is_service_producer" invisible="1"/>
|
||||||
<field name="service_producer_id"
|
<field name="service_producer_id" force_save="1"
|
||||||
attrs="{'invisible':[('is_service_producer','=',False)],'readonly':[('state','not in',['draft','researcher','waiting_approve'])]}"/>
|
attrs="{'invisible':[('payment_method','!=','invoice')],'readonly':[('state','in',['family_received_device','send_request_to_supplier'])],'required': [('payment_method','=','invoice'), ('state','=','accounting_approve')]}"/>
|
||||||
<field name="currency_id" groups="base.group_multi_currency"/>
|
<field name="currency_id" groups="base.group_multi_currency"/>
|
||||||
<field name="company_id" groups="base.group_multi_company"/>
|
<field name="company_id" groups="base.group_multi_company"/>
|
||||||
</group>
|
</group>
|
||||||
<group>
|
<group>
|
||||||
<field name="available_service_cats" invisible="1"/>
|
<field name="available_service_cats" invisible="1"/>
|
||||||
<field name="max_limit_period" invisible="1"/>
|
<field name="max_limit_period" invisible="1"/>
|
||||||
|
<field name="payment_method" force_save="1" invisible="1"/>
|
||||||
<field name="service_cat"
|
<field name="service_cat"
|
||||||
attrs="{'readonly':[('state','not in',['draft','researcher','waiting_approve'])]}"
|
attrs="{'readonly':[('state','not in',['draft','researcher','waiting_approve'])]}"
|
||||||
domain="[('id','in',available_service_cats)]" required="1"/>
|
domain="[('id','in',available_service_cats)]" required="1"/>
|
||||||
|
|
@ -265,6 +266,9 @@
|
||||||
<field name="sub_service_category"
|
<field name="sub_service_category"
|
||||||
attrs="{'readonly':[('state','not in',['draft','researcher','waiting_approve'])]}"
|
attrs="{'readonly':[('state','not in',['draft','researcher','waiting_approve'])]}"
|
||||||
invisible="1"/>
|
invisible="1"/>
|
||||||
|
<field name="show_car_remaining_amount" invisible="1"/>
|
||||||
|
<field name="car_price"
|
||||||
|
attrs="{'readonly':[('state','not in',['draft','researcher','waiting_approve'])],'invisible': [('service_type', '!=', 'buy_car')]}"/>
|
||||||
<field name="requested_service_amount" attrs="{'readonly': [
|
<field name="requested_service_amount" attrs="{'readonly': [
|
||||||
'|',
|
'|',
|
||||||
'&',
|
'&',
|
||||||
|
|
@ -272,6 +276,8 @@
|
||||||
('service_type', 'in', ['marriage', 'eid_gift', 'winter_clothing', 'ramadan_basket']),
|
('service_type', 'in', ['marriage', 'eid_gift', 'winter_clothing', 'ramadan_basket']),
|
||||||
('service_type', 'in', ['electrical_devices', 'home_furnishing'])
|
('service_type', 'in', ['electrical_devices', 'home_furnishing'])
|
||||||
]}" force_save="1" required="1"/>
|
]}" force_save="1" required="1"/>
|
||||||
|
<field name="car_remaining_amount" readonly="1"
|
||||||
|
attrs="{'invisible': [('show_car_remaining_amount', '=', False)]}"/>
|
||||||
<field name="service_max_amount" force_save="1" readonly="1"/>
|
<field name="service_max_amount" force_save="1" readonly="1"/>
|
||||||
<field name="exception"
|
<field name="exception"
|
||||||
attrs="{'readonly':[('state','not in',['draft','researcher','waiting_approve'])]}"/>
|
attrs="{'readonly':[('state','not in',['draft','researcher','waiting_approve'])]}"/>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue