[IMP] odex_benefit: IMP benefit

This commit is contained in:
younes 2025-11-02 07:29:20 +01:00
parent df61a5339e
commit 1e03138dd1
5 changed files with 107 additions and 14 deletions

View File

@ -15209,16 +15209,19 @@ msgstr "إعدادات المركبات"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_cars_line__application_form
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__application_form
msgid "Application Form"
msgstr "الاستمارة"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_cars_line__driving_license
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__driving_license
msgid "Driving License"
msgstr "رخصة القيادة"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_cars_line__owner_identity
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__owner_identity
msgid "Owner Identity"
msgstr "هوية المالك"
@ -16753,3 +16756,42 @@ msgstr "يحتوي على موظفين"
msgid "Number"
msgstr "رقم"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__member_payroll
msgid "Member Payroll"
msgstr "مرتب الفرد"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__has_marriage_course
msgid "Has Marriage Course"
msgstr "الحصول على دورة تأهيلية"
#. module: odex_benefit
#: model_terms:ir.ui.view,arch_db:odex_benefit.view_confirm_benefit_expense_form
msgid "Total Moves"
msgstr "القيد المحاسبي"
#. module: odex_benefit
#: model_terms:ir.ui.view,arch_db:odex_benefit.service_request_form
msgid "Car Information"
msgstr "بيانات السيارة"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__car_name
msgid "Car Name"
msgstr "اسم السيارة"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__car_owner_id
msgid "Car Owner"
msgstr "اسم المالك"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__car_model_id
msgid "Car model"
msgstr "موديل السيارة"
#. module: odex_benefit
#: model:ir.model.fields.selection,name:odex_benefit.selection__services_settings__max_limit_type__none
msgid "No Limit"
msgstr "لا يوجد"

View File

@ -181,6 +181,15 @@ class ServiceRequest(models.Model):
string='Has money to pay first payment?')
has_money_field_is_appearance = fields.Boolean(string='Has money Field is appearance?',
compute='_get_money_field_is_appearance')
car_name = fields.Char(string='Car Name')
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')
application_form = fields.Many2many('ir.attachment', 'request_application_form_rel', 'request_id', 'attachment_id',
string="Application Form")
driving_license = fields.Many2many('ir.attachment', 'request_driving_license_rel', 'request_id', 'attachment_id',
string="Driving License")
owner_identity = fields.Many2many('ir.attachment', 'request_owner_identity_rel', 'request_id', 'attachment_id',
string="Owner Identity")
@api.depends('requested_service_amount', 'service_max_amount')
def _get_money_for_payment_is_appearance(self):
@ -427,6 +436,16 @@ class ServiceRequest(models.Model):
def action_researcher_send_request(self):
for rec in self:
if not rec.requested_service_amount or rec.requested_service_amount <= 0:
raise UserError("Please enter a valid service amount.")
if rec.attachment_lines:
for attach_line in rec.attachment_lines:
if not attach_line.service_attach:
raise UserError(
"Some attachment records are missing files. Please make sure all required attachments are uploaded before submitting."
)
rec.state = 'waiting_approve'
def action_operations_chief_approve(self):
@ -474,8 +493,6 @@ class ServiceRequest(models.Model):
if rec.service_type == 'electrical_devices':
rec.state = 'approval_of_beneficiary_services'
else:
if rec.service_type == 'buy_car':
rec.family_id.has_car = True
rec.service_approval_date = fields.Datetime.now()
rec.state = 'send_request_to_supplier'
@ -486,6 +503,21 @@ class ServiceRequest(models.Model):
def action_request_done(self):
for rec in self:
if rec.service_type == 'buy_car':
car_vals = {
'benefit_id': rec.family_id.id,
'name': rec.car_name,
'member_id': rec.car_owner_id.id,
'car_model': rec.car_model_id.id,
}
car = self.env['cars.line'].create(car_vals)
if rec.application_form:
car.application_form = [(6, 0, rec.application_form.ids)]
if rec.driving_license:
car.driving_license = [(6, 0, rec.driving_license.ids)]
if rec.owner_identity:
car.owner_identity = [(6, 0, rec.owner_identity.ids)]
rec.family_id.has_car = True
rec.state = 'family_received_device'
def action_send_request_to_supplier(self):
@ -757,6 +789,8 @@ class ServiceRequest(models.Model):
'max_amount_for_bill'), default=0.0) or 0
elif max_limit_type == 'service':
pass
elif max_limit_type == 'none':
pass
elif max_limit_type == 'amount_person':
rec.service_max_amount = rec.service_cat.limit_person_line_ids and max(rec.service_cat.limit_person_line_ids.filtered(
lambda x: x.min_count_member <= rec.benefit_member_count <= x.max_count_member)).amount or 0
@ -814,7 +848,7 @@ class ServiceRequest(models.Model):
raise UserError(_("You Should take a course"))
continue
if rec.requested_service_amount > rec.service_max_amount and service_type not in special_services:
if rec.requested_service_amount > rec.service_max_amount and service_type not in special_services and not max_limit_type == 'none':
raise ValidationError(
_("You cannot request more than %s") % rec.service_max_amount
)

View File

@ -92,6 +92,7 @@ class ServicesSettings(models.Model):
string="Requires Visit?"
)
max_limit_type = fields.Selection([
('none', 'No Limit'),
('fixed', 'Fixed Amount'),
('amount_person', 'Amount by Individuals'),
('category', 'Amount by Category'),

View File

@ -64,11 +64,11 @@
states="account_manager" groups="odex25_account_payment_fix.group_general_manager"/>
</header>
<sheet>
<div class="oe_button_box" name="button_box" attrs="{'invisible':[('state','in',['draft'])]}">
<div class="oe_button_box" name="button_box">
<button name="action_open_related_invoice_records"
class="oe_stat_button"
icon="fa-file-text-o"
type="object">
type="object" attrs="{'invisible': [('total_invoices', '=', 0)]}">
<field name="total_invoices" widget="statinfo" string="Total Moves"/>
</button>
</div>

View File

@ -170,7 +170,7 @@
<field name="date"
attrs="{'readonly':[('state','not in',['draft','researcher','waiting_approve'])]}"
required="1"/>
<field name="benefit_type" readonly="1" force_save="1"/>
<field name="benefit_type" invisible="1"/>
<field name="family_id"
attrs="{'readonly':[('state','not in',['draft','researcher','waiting_approve'])]}"
required="1"/>
@ -210,17 +210,17 @@
<div name="dates" class="o_row"
attrs="{'invisible': ['&amp;', ('service_type', '!=', 'rent'), ('max_limit_period', '!=', 'month')]}">
<field name="start"
attrs="{'readonly':[('state','not in',['draft','researcher','waiting_approve'])]}"/>
attrs="{'required': [('max_limit_period', '=', 'month')],'readonly':[('state','not in',['draft','researcher','waiting_approve'])]}"/>
<i class="fa fa-long-arrow-right mx-2 oe_edit_only"
aria-label="Arrow icon" title="Arrow"/>
<i class="fa fa-long-arrow-right mx-2 oe_read_only"
aria-label="Arrow icon" title="Arrow"
attrs="{'invisible': [('start', '=', False), ('end', '=', False)]}"/>
<field name="end"
attrs="{'readonly':[('state','not in',['draft','researcher','waiting_approve'])]}"/>
attrs="{'required': [('max_limit_period', '=', 'month')],'readonly':[('state','not in',['draft','researcher','waiting_approve'])]}"/>
</div>
<field name="marriage_contract_date"
attrs="{'invisible':[('service_type', '!=', 'marriage')]}"/>
attrs="{'invisible':[('service_type', '!=', 'marriage')],'required':[('service_type','=','marriage')]}"/>
<field name="service_approval_date"
attrs="{'invisible':[('service_approval_date','=',False)]}"/>
<field name="need_status"
@ -247,8 +247,6 @@
attrs="{'invisible':[('service_type','!=','buy_home')]}"/>
<field name="home_age" attrs="{'invisible':[('service_type','!=','buy_home')]}"/>
<field name="aid_amount" invisible="1"/>
<field name="description"
attrs="{'readonly':[('state','not in',['draft','researcher','waiting_approve'])]}"/>
<field name="service_attach" invisible="1" widget="many2many_attachment_preview"/>
<field name="has_marriage_course"
attrs="{'readonly':[('state','not in',['draft','researcher','waiting_approve'])],'invisible':[('service_type','!=','marriage')],'required':[('service_type','=','marriage')]}"/>
@ -257,12 +255,16 @@
readonly="1"/>
<field name="refuse_reason" attrs="{'invisible': [('refuse_reason', '=', False)]}"
readonly="1"/>
<field name="return_reason" attrs="{'invisible': [('return_reason', '=', False)]}"
readonly="1"/>
<field name="specialist_note" attrs="{'invisible': [('return_reason', '=', False)]}"/>
<field name="required_attach" invisible="1"/>
</group>
</group>
<group>
<field name="description"
attrs="{'readonly':[('state','not in',['draft','researcher','waiting_approve'])]}"/>
<field name="return_reason" attrs="{'invisible': [('return_reason', '=', False)]}"
readonly="1"/>
<field name="specialist_note" attrs="{'invisible': [('return_reason', '=', False)]}"/>
</group>
<notebook>
<page string="Services Attachments Settings"
attrs="{'invisible':[('required_attach','=',False)]}">
@ -434,6 +436,20 @@
<field name="service_conditions"/>
</group>
</page>
<page string="Car Information" attrs="{'invisible':[('service_type', '!=', 'buy_car')]}">
<group>
<group>
<field name="car_name"/>
<field name="car_owner_id"/>
<field name="car_model_id"/>
</group>
<group>
<field name="application_form" widget="many2many_attachment_preview"/>
<field name="driving_license" widget="many2many_attachment_preview"/>
<field name="owner_identity" widget="many2many_attachment_preview"/>
</group>
</group>
</page>
</notebook>
</sheet>
<div class="oe_chatter">