[IMP] odex_benefit: Updates to Service Configuration and Request

This commit is contained in:
younes 2025-10-26 15:08:41 +01:00
parent 7c86b831ee
commit 21e0ed1530
5 changed files with 36 additions and 36 deletions

View File

@ -2737,6 +2737,7 @@ msgstr "بإمكانه النشر "
#: model_terms:ir.ui.view,arch_db:odex_benefit.receive_food_basket_form
#: model_terms:ir.ui.view,arch_db:odex_benefit.view_confirm_benefit_expense_form
#: model_terms:ir.ui.view,arch_db:odex_benefit.view_confirm_benefit_expense_search
#: model_terms:ir.ui.view,arch_db:odex_benefit.view_family_bank_report_wizard_form
#: model_terms:ir.ui.view,arch_db:odex_benefit.view_entity_black_list_wizard_form
#: model_terms:ir.ui.view,arch_db:odex_benefit.view_entity_final_refused_reason_wizard_form
#: model_terms:ir.ui.view,arch_db:odex_benefit.view_entity_refused_reason_wizard_form
@ -16362,7 +16363,7 @@ msgstr "مبلغ العضو فاقد الأبوين"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__member_age
msgid "Member Age"
msgstr "عمر العضو"
msgstr "عمر الفرد"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__is_orphan
@ -16605,4 +16606,10 @@ msgstr "يرجى اختيار مصروف شهري واحد على الأقل."
#: code:addons/odex_benefit/wizards/family_bank_report_wizard.py:0
#, python-format
msgid "No debit lines with family information found."
msgstr "لم يتم العثور على قيود تحتوي على معلومات الأسر."
msgstr "لم يتم العثور على قيود تحتوي على معلومات الأسر."
#. module: odex_benefit
#: model_terms:ir.ui.view,arch_db:odex_benefit.view_family_bank_report_wizard_form
msgid "Print Excel Report"
msgstr "طباعة تقرير Excel"

View File

@ -10,6 +10,7 @@ class ServiceRequest(models.Model):
name = fields.Char(string='Reference', required=True, copy=False, readonly=True, index=True,default=lambda self: _('New'))
benefit_type = fields.Selection(string='Benefit Type',selection=[('family', 'Family'),('member', 'Member')])
date = fields.Datetime(string='Request Date',default=fields.Datetime.now)
marriage_contract_date = fields.Date(string="Marriage Contract Date")
family_id = fields.Many2one('grant.benefit',string='Family',domain="['|',('state','=','second_approve'),'&',('state','in',['waiting_approve','first_approve']),('action_type','=','suspended')]")
researcher_id = fields.Many2one("committees.line", string="Researcher", related="family_id.researcher_id",store=True)
family_category = fields.Many2one('benefit.category',string='Family Category',related='family_id.benefit_category_id')
@ -561,6 +562,7 @@ class ServiceRequest(models.Model):
'date',
'service_cat',
'family_id',
'member_id',
'exception_or_steal',
'home_furnishing_exception',
'has_marriage_course',
@ -568,7 +570,8 @@ class ServiceRequest(models.Model):
'service_reason_id',
'device_id',
'requested_quantity',
'amount_for_buy_home_for_member_count'
'amount_for_buy_home_for_member_count',
'marriage_contract_date'
)
def onchange_requested_service_amount(self):
res = {}
@ -585,6 +588,9 @@ class ServiceRequest(models.Model):
period = rec.service_cat.recurrence_period or 'months'
max_limit_type = rec.service_cat.max_limit_type
special_services = ['home_furnishing', 'electrical_devices','rent','alternative_housing']
base_domain = [('family_id', '=', family_id),('service_cat', '=', rec.service_cat.id),('id', '!=', rec._origin.id),('state', '!=', 'refused')]
if rec.benefit_type == "member":
base_domain.append(('member_id', '=', rec.member_id.id))
if rec.service_cat.service_type == 'buy_car':
if rec.family_id.has_car:
raise ValidationError(_("You cannot request this service because you have a car."))
@ -616,7 +622,6 @@ class ServiceRequest(models.Model):
if not rec.family_id.add_replacement_mother and not disable_mother and not work_mother:
raise ValidationError(
_("You cannot request this service because mother should be worked or has disability"))
# check if 'home_restoration' service
if service_type in ['home_maintenance','complete_building_house','buy_home']:
existing_request_restoration = Service.search([
('family_id', '=', family_id),
@ -656,12 +661,6 @@ class ServiceRequest(models.Model):
_("You cannot request this service Again Because the home Age More than %s") % rec.service_cat.home_age)
if allowed:
base_domain = [
('family_id', '=', family_id),
('service_cat.service_type', '=', service_type),
('id', '!=', rec._origin.id),
('state', '!=', 'refused')
]
if allowed == 'unlimited':
pass
elif allowed == 'once':
@ -750,17 +749,21 @@ class ServiceRequest(models.Model):
continue
if rec.service_cat.service_type == 'health_care':
domain = [
('family_id', '=', self.family_id.id),
('service_cat.service_type', '=', 'health_care'),
('date', '>', date_before_year),
('id', '!=', self._origin.id),
('state', '!=', 'refused')
]
existing_requests_within_year = self.search(domain)
domain = base_domain + [('date', '>', date_before_year)]
existing_requests_within_year = Service.search(domain)
rec.service_max_amount = rec.service_cat.max_health_care_amount - sum(existing_requests_within_year.mapped('requested_service_amount'))
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:
request_date = rec.date.date() if isinstance(rec.date, datetime) else rec.date
contract_date = rec.marriage_contract_date
diff_days = (request_date - contract_date).days
if diff_days > 365:
raise ValidationError(
_("You cannot request this service because the marriage contract date exceeds one year."))
rec.service_max_amount = rec.service_cat.fatherless_member_amount
if rec.is_orphan:
rec.service_max_amount = rec.service_cat.orphan_member_amount
@ -781,18 +784,6 @@ class ServiceRequest(models.Model):
_("You cannot request more than %s") % rec.service_max_amount
)
# if rec.benefit_type == 'family' and rec.service_cat.service_type == 'electrical_devices':
# Check for existing request of the same type in seven years and not exception or steal
# existing_request = self.search([
# ('family_id', '=', rec.family_id.id),
# ('service_cat.service_type', '=', 'electrical_devices'),
# ('date', '>', date_before_seven_years), ('device_id', '=', rec.device_id.id)
# ], limit=1)
# if existing_request and not rec.exception_or_steal:
# raise UserError(
# _("You Cannot request this service twice in seven years"))
# Validation for 'member' benefit type
if rec.benefit_type == 'member' and rec.service_cat.service_type == 'rent':
max_requested_amount = rec.service_cat.max_amount_for_student

View File

@ -20,7 +20,7 @@ class ServicesSettings(models.Model):
('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'),('buy_home','Buy Home'),('main_service','Main Service')]
('legal_arguments','Legal arguments'),('buy_home','Buy Home'),('main_service','Main Service'),('normal_service', 'Normal Service')]
,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')

View File

@ -145,12 +145,12 @@
<button name="action_first_refuse" type="object"
string="Return the request to the specialist" class="btn btn-warning"
states="gm_assistant"
groups="odex_benefit.group_benefit_branch_manager,odex_benefit.group_benefit_manager"
groups="odex_benefit.group_benefit_branch_manager,odex_benefit.group_benefit_manager"
/>
<button name="action_refuse" type="object"
string="Refuse" class="btn btn-danger"
states="gm_assistant"
groups="odex_benefit.group_benefit_branch_manager,odex_benefit.group_benefit_manager"
groups="odex_benefit.group_benefit_branch_manager,odex_benefit.group_benefit_manager"
/>
<field name="state" widget="statusbar"
statusbar_visible="draft,researcher,waiting_approve,first_approve,accounting_approve,send_request_to_supplier,family_received_device,refused"/>
@ -182,6 +182,7 @@
<field name="branch_custom_id" force_save="1"/>
<field name="member_id"
attrs="{'invisible':[('benefit_type','!=','member')],'readonly':[('state','not in',['draft','researcher','waiting_approve'])],'required':[('benefit_type','=','member')]}"/>
<field name="is_orphan" attrs="{'invisible':[('service_type', '!=', 'marriage')]}"/>
<field name="member_age" attrs="{'invisible':[('benefit_type','!=','member')]}"/>
<field name="member_payroll" attrs="{'invisible':[('service_type','!=','marriage')]}"/>
<field name="account_id" invisible="1"/>
@ -203,8 +204,9 @@
<field name="service_cat"
attrs="{'readonly':[('state','not in',['draft','researcher','waiting_approve'])]}"
domain="[('id','in',available_service_cats)]" required="1"/>
<field name="is_orphan" attrs="{'invisible':[('service_type', '!=', 'marriage')]}"/>
<field name="service_approval_date"/>
<field name="marriage_contract_date" attrs="{'invisible':[('service_type', '!=', 'marriage')]}"/>
<field name="service_approval_date"
attrs="{'invisible':[('service_approval_date','=',False)]}"/>
<field name="need_status"
attrs="{'readonly':[('state','not in',['draft','researcher','waiting_approve'])]}"/>
<field name="main_service_category"

View File

@ -226,7 +226,7 @@
</group>
</page>
<page string="Amounts by Number of Persons"
attrs="{'invisible':['|',('service_type','!=','buy_home'),('max_limit_type', '!=', 'amount_person')]}">
attrs="{'invisible':[('max_limit_type', '!=', 'amount_person')]}">
<field name="limit_person_line_ids" widget="one2many_list">
<tree editable="bottom">
<field name="min_count_member"/>