Merge pull request #2034 from expsa/manar_dev_benefit_1_1

UPDATE odex_benefit
This commit is contained in:
Manar416 2025-01-01 15:45:50 +02:00 committed by GitHub
commit 322e87e8cd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
13 changed files with 188 additions and 10 deletions

View File

@ -47,12 +47,15 @@
'views/service_request.xml',
'views/benefit_config_view.xml',
'views/generate_reports.xml',
'views/service_refuse_reason.xml',
'views/res_country.xml',
'templates/benefit_email.xml',
'data/sequence_data.xml',
'wizards/entity_refused_wizard_view.xml',
'wizards/entity_black_list_wizard_view.xml',
'wizards/service_refuse_reason_wizard.xml',
'wizards/reason_for_return_wizard.xml',
],
'external_dependencies': {
'python': ['num2words'],

View File

@ -3125,6 +3125,7 @@ msgstr "إعدادات ملف الأسرة"
#. module: odex_benefit
#: model_terms:ir.ui.view,arch_db:odex_benefit.view_confirm_benefit_expense_form
#: model_terms:ir.ui.view,arch_db:odex_benefit.view_refuse_reason_wizard
msgid "Confirm"
msgstr "تاكيد"
@ -9237,6 +9238,8 @@ msgstr ""
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_family_member__reason
#: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__reason
#: model:ir.model.fields,field_description:odex_benefit.field_service_refuse_reason__name
#: model:ir.model.fields,field_description:odex_benefit.field_service_refuse_reason_wizard__reason_id
msgid "Reason"
msgstr "السبب"
@ -9423,6 +9426,7 @@ msgstr "تاريخ الرفض"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_entity_refuse_reason__name
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__refuse_reason_id
msgid "Refuse Reason"
msgstr "سبب الرفض"
@ -13756,3 +13760,49 @@ msgstr ""
#: model:ir.model.fields.selection,name:odex_benefit.selection__grant_benefit__mother_marital__hanging
msgid "معلقة"
msgstr ""
#. module: odex_benefit
#: model:ir.ui.menu,name:odex_benefit.menu_refuse_reason
msgid "Service Refuse Reasons"
msgstr "أسباب رفض الخدمات"
#. module: odex_benefit
#: model:ir.actions.act_window,name:odex_benefit.action_refuse_reason
#: model:ir.model,name:odex_benefit.model_service_refuse_reason
msgid "Reasons for Service Rejection"
msgstr "أسباب رفض الخدمات"
#. module: odex_benefit
#: model_terms:ir.ui.view,arch_db:odex_benefit.view_service_refuse_reason_form
msgid "Service Refuse Reason"
msgstr "أسباب رفض الخدمات"
#. module: odex_benefit
#: model_terms:ir.ui.view,arch_db:odex_benefit.view_refuse_reason_wizard
msgid "Select Reason"
msgstr "اختر سبب الرفض"
#. module: odex_benefit
#: model_terms:ir.ui.view,arch_db:odex_benefit.service_request_form
msgid "Return the request to the specialist"
msgstr "إعادة الطلب إلي الاخصائي"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__return_reason
msgid "Reason for Returning the Request"
msgstr "سبب إعادة الطلب"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__specialist_note
msgid "Specialist's Note After Return"
msgstr "ملاحظة اﻹخصائي بعد اﻹعادة"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_reason_for_return_wizard__reason
msgid "reason for return"
msgstr "سبب إعادة الطلب"
#. module: odex_benefit
#: model:ir.model,name:odex_benefit.model_reason_for_return_wizard
msgid "Reason For Return Wizard"
msgstr "سبب إعادة الطلب"

View File

@ -27,4 +27,5 @@ from . import res_country_inherit
from . import service_request
from . import payment_order
from . import family_complaints
from . import service_refuse_reason
# from . import res_config_settings

View File

@ -0,0 +1,9 @@
# -*- coding: utf-8 -*-
from odoo import models, fields
class RefuseReason(models.Model):
_name = 'service.refuse.reason'
_description = 'Reasons for Service Rejection'
name = fields.Char(string='Reason', required=True)

View File

@ -137,6 +137,11 @@ class ServiceRequest(models.Model):
], string='state',default='draft', tracking=True)
state_a = fields.Selection(related='state', tracking=False)
state_b = fields.Selection(related='state', tracking=False)
refuse_reason_id = fields.Many2one('service.refuse.reason', string="Refuse Reason")
return_reason = fields.Text(string="Reason for Returning the Request")
specialist_note = fields.Text(string="Specialist's Note After Return")
@api.model
def search(self, args, offset=0, limit=None, order=None, count=False):
@ -396,12 +401,25 @@ class ServiceRequest(models.Model):
rec.state = 'family_received_device'
def action_accounting_first_refuse(self):
for rec in self:
rec.state = 'draft'
return {
'name': 'Reason for Returning the Request',
'type': 'ir.actions.act_window',
'res_model': 'reason.for.return.wizard',
'view_mode': 'form',
'target': 'new',
}
def action_refuse(self):
for rec in self:
rec.state = 'refused'
# for rec in self:
# rec.state = 'refused'
return {
'name': 'Select Reason',
'type': 'ir.actions.act_window',
'res_model': 'service.refuse.reason.wizard',
'view_mode': 'form',
'target': 'new',
}
@api.onchange('service_cat','family_id')
def onchange_service_cat(self):

View File

@ -139,4 +139,7 @@ access_age_category,access_age_category,model_age_category,base.group_user,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_buy_home_lines,access_buy_home_lines,model_buy_home_lines,base.group_user,1,1,1,1
access_location_settings,access_location_settings,model_location_settings,base.group_user,1,1,1,1
access_location_settings,access_location_settings,model_location_settings,base.group_user,1,1,1,1
access_service_refuse_reason,access_service_refuse_reason,model_service_refuse_reason,base.group_user,1,1,1,1
access_service_refuse_reason_wizard,access_service_refuse_reason_wizard,model_service_refuse_reason_wizard,base.group_user,1,1,1,1
access_reason_for_return_wizard,access_reason_for_return_wizard,model_reason_for_return_wizard,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
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
142 access_location_settings access_location_settings model_location_settings base.group_user 1 1 1 1
143 access_service_refuse_reason access_service_refuse_reason model_service_refuse_reason base.group_user 1 1 1 1
144 access_service_refuse_reason_wizard access_service_refuse_reason_wizard model_service_refuse_reason_wizard base.group_user 1 1 1 1
145 access_reason_for_return_wizard access_reason_for_return_wizard model_reason_for_return_wizard base.group_user 1 1 1 1

View File

@ -0,0 +1,26 @@
<odoo>
<record id="view_service_refuse_reason_form" model="ir.ui.view">
<field name="name">service.refuse.reason.form</field>
<field name="model">service.refuse.reason</field>
<field name="arch" type="xml">
<form string="Service Refuse Reason">
<sheet>
<group>
<field name="name"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="action_refuse_reason" model="ir.actions.act_window">
<field name="name">Reasons for Service Rejection</field>
<field name="res_model">service.refuse.reason</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem id="menu_refuse_reason" name="Service Refuse Reasons" parent="menu_benefits_config_others" action="action_refuse_reason"/>
</odoo>

View File

@ -24,9 +24,8 @@
confirm="Are you sure you want to approve ?"
states="second_approve" groups="odex_benefit.group_benefit_accounting_accept"/>
<button name="action_accounting_first_refuse" type="object"
string="Accounting First Refuse" class="oe_highlight"
confirm="Are you sure you want to first refuse ?"
states="second_approve" groups="odex_benefit.group_benefit_accounting_accept"/>
string="Return the request to the specialist" class="oe_highlight"
states="second_approve" groups="odex_benefit.group_benefit_accounting_accept,odex_benefit.group_benefit_woman_commitee,odex_benefit.group_benefit_branch_manager"/>
<button name="action_send_request_to_supplier" type="object"
string="Send Request To Supplier" class="oe_highlight"
confirm="Are you sure you want to send request to supplier ?"
@ -36,7 +35,6 @@
groups="odex_benefit.group_benefit_accounting_accept" attrs="{'invisible': ['|',('service_type','!=','electrical_devices'),('state_b','!=','send_request_to_supplier')]}" />
<button name="action_refuse" type="object"
string="Refuse" class="oe_highlight"
confirm="Are you sure you want to refuse request ?"
states="first_approve,second_approve,draft,send_request,accounting_approve"/>
<field name="state" widget="statusbar" invisible="1"/>
<field name="state_a" widget="statusbar" statusbar_visible="draft,researcher,send_request,first_approve,second_approve,accounting_approve,refused" attrs="{'invisible': [('service_type','=','electrical_devices')]}"/>
@ -93,6 +91,9 @@
<field name="service_attach" attrs="{'readonly':[('state','not in',['draft','researcher','send_request'])]}" widget="many2many_attachment_preview"/>
<field name="has_marriage_course" attrs="{'readonly':[('state','not in',['draft','researcher','send_request'])],'invisible':[('service_type','!=','marriage')],'required':[('service_type','=','marriage')]}"/>
<field name="service_type" invisible="1"/>
<field name="refuse_reason_id" readonly="1"/>
<field name="return_reason" readonly="1"/>
<field name="specialist_note" attrs="{'invisible': [('return_reason', '=', False)]}"/>
</group>
</group>
<notebook>

View File

@ -5,4 +5,5 @@ from . import researcher_wizard
from . import suspend_reason_wizard
from . import exception_wizard
from . import exchange_order_wizard
from . import service_refuse_reason_wizard
from . import reason_for_return_wizard

View File

@ -0,0 +1,16 @@
# -*- coding: utf-8 -*-
from odoo import models, fields, api
class ReasonForReturnWizard(models.TransientModel):
_name = 'reason.for.return.wizard'
_description = 'Reason For Return Wizard'
reason = fields.Text(string="reason for return", required=True)
def action_confirm(self):
for record in self:
record.env['service.request'].browse(self._context.get('active_id')).write({
'return_reason': record.reason,
'state': 'draft',
})

View File

@ -0,0 +1,17 @@
<odoo>
<record id="view_reason_for_return_wizard" model="ir.ui.view">
<field name="name">reason.for.return.wizard.form</field>
<field name="model">reason.for.return.wizard</field>
<field name="arch" type="xml">
<form>
<group>
<field name="reason"/>
</group>
<footer>
<button string="Confirm" type="object" name="action_confirm" class="btn-primary"/>
<button string="Cancel" type="object" class="btn-secondary" special="cancel"/>
</footer>
</form>
</field>
</record>
</odoo>

View File

@ -0,0 +1,16 @@
# -*- coding: utf-8 -*-
from odoo import models, fields
class RefuseReasonWizard(models.TransientModel):
_name = 'service.refuse.reason.wizard'
_description = 'Wizard to select a reason for service rejection'
reason_id = fields.Many2one('service.refuse.reason', string="Reason", required=True)
def action_confirm(self):
for record in self:
record.env['service.request'].browse(self._context.get('active_id')).write({
'refuse_reason_id': record.reason_id.id,
'state': 'refused',
})

View File

@ -0,0 +1,17 @@
<odoo>
<record id="view_refuse_reason_wizard" model="ir.ui.view">
<field name="name">service.refuse.reason.wizard.form</field>
<field name="model">service.refuse.reason.wizard</field>
<field name="arch" type="xml">
<form string="Select Reason">
<group>
<field name="reason_id"/>
</group>
<footer>
<button string="Confirm" type="object" name="action_confirm" class="btn-primary"/>
<button string="Cancel" type="object" class="btn-secondary" special="cancel"/>
</footer>
</form>
</field>
</record>
</odoo>