diff --git a/odex25_ensan/odex_benefit/i18n/ar_001.po b/odex25_ensan/odex_benefit/i18n/ar_001.po index 6be7df8f6..d9c718658 100644 --- a/odex25_ensan/odex_benefit/i18n/ar_001.po +++ b/odex25_ensan/odex_benefit/i18n/ar_001.po @@ -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 "لا يوجد" \ No newline at end of file diff --git a/odex25_ensan/odex_benefit/models/service_request.py b/odex25_ensan/odex_benefit/models/service_request.py index 6c3916517..485075962 100644 --- a/odex25_ensan/odex_benefit/models/service_request.py +++ b/odex25_ensan/odex_benefit/models/service_request.py @@ -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 ) diff --git a/odex25_ensan/odex_benefit/models/services_settings.py b/odex25_ensan/odex_benefit/models/services_settings.py index 1efa2b375..6115d84d9 100644 --- a/odex25_ensan/odex_benefit/models/services_settings.py +++ b/odex25_ensan/odex_benefit/models/services_settings.py @@ -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'), diff --git a/odex25_ensan/odex_benefit/views/family_expense_view.xml b/odex25_ensan/odex_benefit/views/family_expense_view.xml index 0b918e194..1a3f76ba9 100644 --- a/odex25_ensan/odex_benefit/views/family_expense_view.xml +++ b/odex25_ensan/odex_benefit/views/family_expense_view.xml @@ -64,11 +64,11 @@ states="account_manager" groups="odex25_account_payment_fix.group_general_manager"/> -
+
diff --git a/odex25_ensan/odex_benefit/views/service_request.xml b/odex25_ensan/odex_benefit/views/service_request.xml index cad2a5956..c8c5f0cc7 100644 --- a/odex25_ensan/odex_benefit/views/service_request.xml +++ b/odex25_ensan/odex_benefit/views/service_request.xml @@ -170,7 +170,7 @@ - + @@ -210,17 +210,17 @@
+ attrs="{'required': [('max_limit_period', '=', 'month')],'readonly':[('state','not in',['draft','researcher','waiting_approve'])]}"/> + attrs="{'required': [('max_limit_period', '=', 'month')],'readonly':[('state','not in',['draft','researcher','waiting_approve'])]}"/>
+ attrs="{'invisible':[('service_type', '!=', 'marriage')],'required':[('service_type','=','marriage')]}"/> - @@ -257,12 +255,16 @@ readonly="1"/> - - + + + + + @@ -434,6 +436,20 @@ + + + + + + + + + + + + + +