Merge pull request #1898 from expsa/tasks_2_12

Buy Home Service
This commit is contained in:
enagahh 2024-12-08 15:16:43 +02:00 committed by GitHub
commit 02dca6f7cd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 96 additions and 7 deletions

View File

@ -121,6 +121,8 @@ class ServiceRequest(models.Model):
], string='Has Marriage Course')
#Eid Gift
eid_gift_benefit_count = fields.Integer(string='Eid Gift Benefit Count',compute="_get_eid_gift_benefit_count")
#Buy home
amount_for_buy_home_for_member_count = fields.Float(string="Amount For Buy Home for member count",compute='_get_amount_for_buy_home')
state = fields.Selection( selection = [
('draft', 'Draft'),
('researcher', 'Researcher'),
@ -199,7 +201,7 @@ class ServiceRequest(models.Model):
if 'new_rent_start_date' in vals:
update_values['rent_start_date'] = vals['new_rent_start_date']
if 'new_rent_end_date' in vals:
update_values['rent_end_date'] = vals['new_rent_end_date']
update_values['rent_end_date'] = vals['new_rent_end_date']
if 'new_rent_amount' in vals:
update_values['rent_amount'] = vals['new_rent_amount']
if 'new_payment_type' in vals:
@ -355,6 +357,13 @@ class ServiceRequest(models.Model):
rec.max_universities_training_institutes_transportation_amount = rec.requests_counts * rec.service_cat.max_universities_training_institutes_transportation_amount
rec.max_hospitals_transportation_amount = rec.requests_counts * rec.service_cat.max_hospitals_transportation_amount
rec.max_programs_transportation_amount = rec.requests_counts * rec.service_cat.max_programs_transportation_amount
@api.depends('service_cat','family_id')
def _get_amount_for_buy_home(self):
for rec in self:
rec.amount_for_buy_home_for_member_count = 0
if rec.service_type == 'buy_home':
rec.amount_for_buy_home_for_member_count = (rec.service_cat.buy_home_lines.filtered(lambda x : x.min_count_member <= rec.benefit_member_count <= rec.benefit_member_count)).amount_for_buy_home
def action_for_researcher(self):
for rec in self:
rec.state = 'researcher'
@ -758,7 +767,43 @@ class ServiceRequest(models.Model):
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"))
# Validation for 'family' benefit type with 'natural_disasters' service type
if rec.benefit_type == 'family' and rec.service_cat.service_type == 'natural_disasters':
if rec.requested_service_amount > rec.service_cat.natural_disasters_max_amount:
self.benefit_type = False
res['warning'] = {'title': _('ValidationError'),
'message': _(
"You cannot request more than %s") % rec.service_cat.natural_disasters_max_amount}
return res
# Validation for 'family' benefit type with 'legal_arguments' service type
if rec.benefit_type == 'family' and rec.service_cat.service_type == 'legal_arguments':
if rec.requested_service_amount > rec.service_cat.legal_arguments_max_amount:
self.benefit_type = False
res['warning'] = {'title': _('ValidationError'),
'message': _(
"You cannot request more than %s") % rec.service_cat.legal_arguments_max_amount}
return res
# Validation for 'family' benefit type with 'buy_home' service type
if rec.benefit_type == 'family' and rec.service_cat.service_type == 'buy_home':
# Search for existing requests
existing_buy_home_requests = self.search([('family_id', '=', self.family_id.id),
('service_cat.service_type', '=', 'buy_home'),
('id', '!=', self._origin.id)])
existing_home_restoration_requests = self.search([('family_id', '=', self.family_id.id),
('service_cat.service_type', '=',
'home_restoration'),
('id', '!=', self._origin.id)])
if rec.requested_service_amount > rec.service_cat.buy_home_max_total_amount:
self.benefit_type = False
res['warning'] = {'title': _('ValidationError'),
'message': _(
"You cannot request more than %s") % rec.service_cat.buy_home_max_total_amount}
return res
if existing_buy_home_requests:
raise UserError(_("You cannot request this service Again"))
if existing_home_restoration_requests:
raise UserError(
_("You cannot request this service Again Because you request Home restoration service"))
@api.onchange('requested_quantity','benefit_type')
def onchange_requested_quantity(self):

View File

@ -17,7 +17,8 @@ class ServicesSettings(models.Model):
,('transportation_insurance','Transportation Insurance'),('debits','Debits'),('health_care','Health Care'),
('providing_medicines_medical_devices_and_needs_the_disabled','Providing Medicines Medical Devices And Needs The Disabled'),
('recruiting_domestic_worker_or_nurse','Recruiting a domestic worker or nurse') ,('marriage','Marriage'),('eid_gift','Eid gift'),
('winter_clothing','Winter clothing'),('ramadan_basket','Ramadan basket'),('natural_disasters','Natural disasters'),('legal_arguments','Legal arguments')]
('winter_clothing','Winter clothing'),('ramadan_basket','Ramadan basket'),('natural_disasters','Natural disasters'),
('legal_arguments','Legal arguments'),('buy_home','Buy Home')]
,string='Service Type')
max_amount_for_student = fields.Float(string='Max Amount for Student')
raise_amount_for_orphan = fields.Float(string='Raise Amount For Orphan')
@ -76,8 +77,9 @@ class ServicesSettings(models.Model):
natural_disasters_max_amount = fields.Float(string='Natural disasters Max Amount')
# Legal Arguments
legal_arguments_max_amount = fields.Float(string='Legal Arguments Max Amount')
#Buy Home
buy_home_lines = fields.One2many('buy.home.lines', 'services_settings_id')
buy_home_max_total_amount = fields.Float(string='Buy Home Max Total Amount')
class RentLines(models.Model):
_name = 'rent.lines'
@ -129,6 +131,7 @@ class ElectricityBillLines(models.Model):
max_count_member = fields.Integer(string='To')
max_amount_for_electricity_bill = fields.Float(string='Max Amount For Electricity Bill')
services_settings_id = fields.Many2one('services.settings', string='Services Settings')
class WaterBillLines(models.Model):
_name = 'water.bill.lines'
@ -138,4 +141,11 @@ class WaterBillLines(models.Model):
max_amount_for_water_bill = fields.Float(string='Max Amount For Electricity Bill')
services_settings_id = fields.Many2one('services.settings', string='Services Settings')
class BuyHomeLines(models.Model):
_name = 'buy.home.lines'
min_count_member = fields.Integer(string='From')
max_count_member = fields.Integer(string='To')
amount_for_buy_home = fields.Float(string='Amount For Buy Home')
services_settings_id = fields.Many2one('services.settings', string='Services Settings')

View File

@ -137,4 +137,5 @@ access_electricity_bill_lines,access_electricity_bill_lines,model_electricity_bi
access_water_bill_lines,access_water_bill_lines,model_water_bill_lines,base.group_user,1,1,1,1
access_age_category,access_age_category,model_age_category,base.group_user,1,1,1,1
access_complaints_category,access_complaints_category,model_complaints_category,base.group_user,1,1,1,1
access_family_complaints,access_family_complaints,model_family_complaints,base.group_user,1,1,1,1
access_family_complaints,access_family_complaints,model_family_complaints,base.group_user,1,1,1,1
access_buy_home_lines,access_buy_home_lines,model_buy_home_lines,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
137 access_water_bill_lines access_water_bill_lines model_water_bill_lines base.group_user 1 1 1 1
138 access_age_category access_age_category model_age_category base.group_user 1 1 1 1
139 access_complaints_category access_complaints_category model_complaints_category base.group_user 1 1 1 1
140 access_family_complaints access_family_complaints model_family_complaints base.group_user 1 1 1 1
141 access_buy_home_lines access_buy_home_lines model_buy_home_lines base.group_user 1 1 1 1

View File

@ -84,6 +84,7 @@
('service_type', '=', 'eid_gift'),
('service_type', '=', 'winter_clothing'),
('service_type', '=', 'ramadan_basket')]}" force_save="1" required="1" />
<field name="amount_for_buy_home_for_member_count" attrs="{'invisible':[('service_type','!=','buy_home')]}"/>
<field name="max_electricity_bill_amount" readonly="1" force_save="1" attrs="{'invisible':[('service_type','!=','electricity_bill')]}"/>
<field name="max_water_bill_amount" readonly="1" force_save="1" attrs="{'invisible':[('service_type','!=','water_bill')]}"/>
<field name="aid_amount" invisible="1"/>

View File

@ -212,7 +212,19 @@
<field name="legal_arguments_max_amount"/>
</group>
</page>
<page string="Buy Car Settings" attrs="{'invisible':[('service_type','!=','buy_home')]}">
<group>
<field name="benefit_category_ids" widget="many2many_tags"/>
<field name="buy_home_max_total_amount"/>
</group>
<field name="buy_home_lines" widget="one2many_list">
<tree editable="bottom">
<field name="min_count_member"/>
<field name="max_count_member"/>
<field name="amount_for_buy_home"/>
</tree>
</field>
</page>
</notebook>
</sheet>
</form>

View File

@ -360,6 +360,26 @@ class ServiceRequestInherit(models.Model):
res['warning'] = {'title': _('ValidationError'),
'message': _("You cannot request more than %s") % rec.service_cat.legal_arguments_max_amount}
return res
# Validation for 'family' benefit type with 'buy_home' service type
if rec.benefit_type == 'family' and rec.service_cat.service_type == 'buy_home':
# Search for existing requests
existing_buy_home_requests = self.search([('family_id', '=', self.family_id.id),
('service_cat.service_type', '=','buy_home'),
('id', '!=', self._origin.id)])
existing_home_restoration_requests = self.search([('family_id', '=', self.family_id.id),
('service_cat.service_type', '=', 'home_restoration'),
('id', '!=', self._origin.id)])
if rec.requested_service_amount > rec.service_cat.buy_home_max_total_amount:
self.benefit_type = False
res['warning'] = {'title': _('ValidationError'),
'message': _(
"You cannot request more than %s") % rec.service_cat.buy_home_max_total_amount}
return res
if existing_buy_home_requests:
raise UserError(_("You cannot request this service Again"))
if existing_home_restoration_requests:
raise UserError(_("You cannot request this service Again Because you request Home restoration service"))