IMP benefit

This commit is contained in:
younes 2025-10-12 20:38:03 +01:00
parent 851f0a2c49
commit aabe1646a4
5 changed files with 54 additions and 63 deletions

View File

@ -9,7 +9,7 @@ class ServicesSettings(models.Model):
help='Link the service to an HR department'
)
hr_department_id = fields.Many2one(
'hr.department', string='Linked Department', readonly=True
'hr.department', string='Linked Department'
)
manager_id = fields.Many2one(
'hr.employee', string='Manager',
@ -29,59 +29,6 @@ class ServicesSettings(models.Model):
])
@api.model
def create(self, vals):
service = super().create(vals)
if service.linked_to_department:
dept = self.env['hr.department'].search([('name', '=', service.service_name)], limit=1)
if not dept:
dept = self.env['hr.department'].create({
'name': service.service_name,
'department_type': 'unit',
'manager_id': service.manager_id.id,
'service_link_id': service.id
})
service.hr_department_id = dept.id
return service
def write(self, vals):
res = super().write(vals)
for service in self:
# If linked_to_department field updated
if 'linked_to_department' in vals:
if service.linked_to_department and not service.hr_department_id:
# Create department if missing
dept = self.env['hr.department'].search([('name', '=', service.service_name)], limit=1)
if not dept:
dept = self.env['hr.department'].create({
'name': service.service_name,
'department_type': 'unit',
'manager_id': service.manager_id.id,
'service_link_id': service.id
})
service.hr_department_id = dept.id
elif not service.linked_to_department and service.hr_department_id:
# Remove linked department if no dependencies (employees or requests)
hr_dept = service.hr_department_id
empowerment_request = self.env['empowerment.request'].search([('department_id', '=', hr_dept.id)], limit=1)
if hr_dept.employee_ids or empowerment_request:
raise ValidationError(_('لا يمكن فك الربط، قسم الموارد البشرية مرتبط بموظفين أو طلبات.'))
hr_dept.unlink()
service.hr_department_id = False
return res
def unlink(self):
for service in self:
if service.linked_to_department and service.hr_department_id:
hr_dept = service.hr_department_id
empowerment_request = self.env['empowerment.request'].search([('department_id', '=', hr_dept.id)], limit=1)
if hr_dept.employee_ids or empowerment_request:
raise ValidationError(_('لا يمكن حذف الخدمة، القسم مرتبط بموظفين أو طلبات.'))
hr_dept.unlink()
return super().unlink()
class HrDepartment(models.Model):
_inherit = 'hr.department'

View File

@ -9,7 +9,7 @@
<group>
<field name="linked_to_department" />
<field name="hr_department_id" readonly="1" />
<field name="hr_department_id"/>
<field name="manager_id" />
</group>

View File

@ -9854,6 +9854,7 @@ msgstr "احتساب قيمة الإيجار"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__rent_attachment
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__member_rent_attachment
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__new_rent_attachment
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__rent_attachment
msgid "Rent Attachment"
msgstr "مرفق عقد الإيجار"
@ -9865,6 +9866,7 @@ msgstr "معلومات عقد الإيجار"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__member_rent_contract_number
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__new_rent_contract_number
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__rent_contract_number
msgid "Rent Contract Number"
msgstr "رقم العقد"
@ -9872,6 +9874,7 @@ msgstr "رقم العقد"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__rent_end_date
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__member_rent_end_date
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__new_rent_end_date
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__rent_end_date
msgid "Rent End Date"
msgstr "تاريخ نهاية العقد"
@ -9905,6 +9908,7 @@ msgstr "سكن مشترك إيجار"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__rent_start_date
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__member_rent_start_date
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__new_rent_start_date
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__rent_start_date
msgid "Rent Start Date"
msgstr "تاريخ بداية العقد"
@ -10077,6 +10081,7 @@ msgstr ""
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__required_attach
#: model:ir.model.fields,field_description:odex_benefit.field_services_settings__required_attach
msgid "Required Attach"
msgstr "ملفات مطلوبة"
@ -16382,3 +16387,39 @@ msgstr "عمر العضو"
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__is_orphan
msgid "Orphaned (Both Parents Deceased)"
msgstr "فاقد الأبوين"
#. module: odex_benefit
#: model_terms:ir.ui.view,arch_db:odex_benefit.services_settings_form
msgid "Services Attachments"
msgstr "المستندات المطلوبة"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__new_rent_payment_date_exception
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__rent_payment_date_exception
msgid "Rent Payment Date Exception?"
msgstr "استثناء في تاريخ دفع الإيجار؟"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__rent_amount_payment
msgid "Rent Amount Payment"
msgstr "مبلغ دفع الإيجار"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__new_rent_contract
msgid "New Rent Contract?"
msgstr "عقد إيجار جديد؟"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__estimated_rent_amount_payment
msgid "Estimated Rent Amount Payment"
msgstr "المبلغ التقديري لدفع الإيجار"
#. module: odex_benefit
#: model_terms:ir.ui.view,arch_db:odex_benefit.service_request_form
msgid "New Rent Contract Information"
msgstr "معلومات عقد الإيجار الجديد"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__new_rent_amount_payment
msgid "New Rent Amount Payment"
msgstr "مبلغ دفع الإيجار الجديد"

View File

@ -564,7 +564,7 @@ class ServiceRequest(models.Model):
interval = rec.service_cat.recurrence_interval or 1
period = rec.service_cat.recurrence_period or 'months'
max_limit_type = rec.service_cat.max_limit_type
special_services = ['home_furnishing', 'electrical_devices']
special_services = ['home_furnishing', 'electrical_devices','rent','alternative_housing']
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."))
@ -867,7 +867,7 @@ class ServiceRequest(models.Model):
ids.append(rec.id)
default_service_ids = ids
service_requests = self.env['service.request'].browse(ids)
if any(request.state not in 'accounting_approve' for request in service_requests):
if any(request.state not in 'send_request_to_supplier' for request in service_requests):
raise UserError(_("All selected requests should be in Accounting Approve state"))
if any(request.payment_order_id for request in service_requests):
raise UserError(_("All selected requests should be not has payment order"))
@ -887,7 +887,7 @@ class ServiceRequest(models.Model):
ids.append(rec.id)
service_requests = self.env['service.request'].browse(ids)
service_producer_id = self.env['service.request'].search([('id','=',ids[0])],limit=1)
if any(request.state not in 'family_received_device' for request in service_requests):
if any(request.state not in 'approval_of_beneficiary_services' for request in service_requests):
raise UserError(_("All selected requests should be in Family Received Device state"))
if any(request.vendor_bill for request in service_requests):
raise UserError(_("All selected requests should be not has Vendor Bill"))

View File

@ -22,14 +22,15 @@
</group>
<group>
<field name="service_category"/>
<field name="parent_service" attrs="{'invisible':[('service_type','=','main_service')]}"/>
<field name="parent_service"
attrs="{'invisible':[('service_type','=','main_service')]}"/>
<field name="benefit_category_ids" widget="many2many_tags" required="1"/>
<field name="currency_id" groups="base.group_multi_currency"/>
<field name="company_id" groups="base.group_multi_company"/>
</group>
</group>
<notebook>
<page string="Settings">
<page string="Settings" attrs="{'invisible':[('service_type','=','main_service')]}">
<group>
<group>
<field name="max_limit_type"/>
@ -75,7 +76,8 @@
<field name="is_main_service" invisible="1" widget="boolean_toggle"/>
<field name="is_service_producer" widget="boolean_toggle"
attrs="{'invisible':[('service_type','=','main_service')]}"/>
<field name="is_this_service_for_student" invisible="1" widget="boolean_toggle"/>
<field name="is_this_service_for_student" invisible="1"
widget="boolean_toggle"/>
<field name="needs_beneficiary_manager_approval" widget="boolean_toggle"
attrs="{'invisible':[('service_type','=','main_service')]}"/>
</group>
@ -98,7 +100,7 @@
</group>
</group>
</page>
<page string="Eligibility Criteria">
<page string="Eligibility Criteria" attrs="{'invisible':[('service_type','=','main_service')]}">
<group>
<field name="service_conditions"/>
</group>
@ -242,8 +244,9 @@
<field name="name">services.settings.tree</field>
<field name="model">services.settings</field>
<field name="arch" type="xml">
<tree string="Services Settings">
<tree string="Services Settings" decoration-info="service_type=='main_service'">
<field name="service_number"/>
<field name="service_type" invisible="1"/>
<field name="service_name"/>
<field name="service_category"/>
<field name="parent_service"/>