Merge pull request #4340 from expsa/you_dev_odex25_ensan

IMP benefit
This commit is contained in:
kchyounes19 2025-08-27 11:18:59 +01:00 committed by GitHub
commit 50636af14c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 83 additions and 21 deletions

View File

@ -9673,7 +9673,7 @@ msgstr "رقم الإشارة"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_visit_location__name
msgid "Reference"
msgstr "كود الزيارة"
msgstr "رقم الزيارة"
#. module: odex_benefit
#: model_terms:ir.ui.view,arch_db:odex_benefit.external_request_form

View File

@ -659,6 +659,41 @@ class VisitsSettings(models.Model):
_name = 'visits.types'
name = fields.Char(string="Name")
creation_method = fields.Selection(
[('manual', 'Manual'),('automatic', 'Automatic')],
string="Creation Method",
default='manual',
help="Whether the visit is entered manually or created automatically"
)
recurrence_interval = fields.Integer(
string="Recurrence Interval",
default=1,
help="Determines how often visits are created automatically"
)
recurrence_period = fields.Selection([
('days', 'Days'),
('weeks', 'Weeks'),
('months', 'Months')
], string="Recurrence Period", default='days',
help="Time unit for recurrence")
otp_verification = fields.Boolean(
string="OTP Verification",
default=False,
help="Whether this visit requires OTP confirmation from the family"
)
otp_validity_minutes = fields.Integer(
string="OTP Validity (Minutes)",
default=5,
help="OTP code validity duration in minutes"
)
active = fields.Boolean(
string="Active",
default=True
)
survey_id = fields.Many2one(
'survey.survey',
string="Evaluation Survey"
)
class SurveySetting(models.Model):
_name = 'survey.setting'

View File

@ -7,17 +7,22 @@ class Visit(models.Model):
_inherit = ['mail.thread', 'mail.activity.mixin']
_order = 'create_date desc'
@api.model
def _default_researcher_team(self):
researcher_team = self.env['committees.line'].search([('employee_id','in',[self.env.user.employee_id.id])],limit=1)
return researcher_team.id
benefit_type = fields.Selection([
('benefit', 'Benefit'),
('family', 'Family'),
], string='Type', default="benefit")
benefit_id = fields.Many2one(
'grant.benefit',string='Family file',domain="[('state', '=', 'second_approve')]")
'grant.benefit',string='Family file',domain="[('researcher_id','=',researcher_team),('state', '=', 'second_approve')]")
benefit_name = fields.Char(related="benefit_id.name")
benefit_code= fields.Char(related="benefit_id.code")
researcher_team = fields.Many2one("committees.line", string="Researcher Team",related="benefit_id.researcher_id")
researcher_team = fields.Many2one("committees.line", string="Researcher Team", default=_default_researcher_team)
researcher_ids = fields.Many2many("hr.employee", string="Researcher",compute="get_researcher_ids",readonly=False)
visit_date = fields.Datetime(string='Visit Date')
visit_date = fields.Datetime(string='Visit Date', tracking=True)
description = fields.Char(string='Description')
message = fields.Text(string='Message')
visit_objective = fields.Selection([
@ -38,7 +43,7 @@ class Visit(models.Model):
('done', 'Done'),
('cancel', 'Cancel'),
('close', 'Close'),
], string='State',default="draft")
], string='State',default="draft", tracking=True)
family_id = fields.Many2one('benefit.family')
reason = fields.Text(string='Reason/Justification')
name = fields.Char(string='Reference', required=True, copy=False, readonly=True, index=True,

View File

@ -5,7 +5,7 @@ access_benefit_branch_manager_record,access_benefit_branch_manager_record,model_
access_benefit_manager_record,access_benefit_manager_record,model_grant_benefit,odex_benefit.group_benefit_manager,1,1,1,1
access_benefit_edit_record,access_benefit_edit_record,model_grant_benefit,odex_benefit.group_benefit_edit,1,1,1,1
access_education_status_all,education_status,model_education_status,odex_benefit.group_benefit_info,1,1,1,1
access_education_status_all,education_status,model_education_status,,1,0,0,0
access_education_status_all_users,education_status_all_users,model_education_status,,1,0,0,0
access_weak_course_all,weak_course,model_weak_course,odex_benefit.group_benefit_info,1,1,1,1
access_benefit_family_record,access_benefit_family_record,model_benefit_family,,1,1,1,0
access_benefit_record_city,access_benefit_record_city,model_res_country_city,,1,1,0,0

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
5 access_benefit_manager_record access_benefit_manager_record model_grant_benefit odex_benefit.group_benefit_manager 1 1 1 1
6 access_benefit_edit_record access_benefit_edit_record model_grant_benefit odex_benefit.group_benefit_edit 1 1 1 1
7 access_education_status_all education_status model_education_status odex_benefit.group_benefit_info 1 1 1 1
8 access_education_status_all access_education_status_all_users education_status education_status_all_users model_education_status 1 0 0 0
9 access_weak_course_all weak_course model_weak_course odex_benefit.group_benefit_info 1 1 1 1
10 access_benefit_family_record access_benefit_family_record model_benefit_family 1 1 1 0
11 access_benefit_record_city access_benefit_record_city model_res_country_city 1 1 0 0

View File

@ -5,10 +5,7 @@
<record model="ir.actions.act_window" id="grant_benefit_dashboard_action">
<field name="name">Family Profile</field>
<field name="res_model">grant.benefit</field>
<!-- <field name="view_type">form</field>-->
<field name="view_mode">kanban,form,tree,activity,google_map</field>
<!-- <field name="domain">[('state','=','draft')]-->
<!-- </field>-->
<field name="context">{'is_benefit': True,'search_default_state': 1}</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">Create the Benefit

View File

@ -870,6 +870,17 @@
<group>
<group>
<field name="name"/>
<field name="creation_method"/>
<label for="recurrence_interval" attrs="{'invisible':[('creation_method','!=','automatic')]}"/>
<div class="o_row" attrs="{'invisible':[('creation_method','!=','automatic')]}">
<field name="recurrence_interval" class="oe_inline" nolabel="1"/>
<field name="recurrence_period" class="oe_inline" nolabel="1"/>
</div>
</group>
<group>
<field name="otp_verification" widget="boolean_toggle"/>
<field name="otp_validity_minutes" attrs="{'invisible':[('otp_verification','=',False)]}"/>
<field name="survey_id"/>
</group>
</group>
</sheet>
@ -882,6 +893,9 @@
<field name="arch" type="xml">
<tree string="Visits Types">
<field name="name"/>
<field name="creation_method"/>
<field name="otp_verification" widget="boolean_toggle"/>
<field name="survey_id"/>
</tree>
</field>
</record>

View File

@ -17,15 +17,10 @@
<sheet>
<group>
<group>
<!-- <field name="benefit_type"/>-->
<field name="name"/>
<field name="description" attrs="{'readonly':[('state', 'in', ['close','cancel'])]}"/>
<field name="visit_types" attrs="{'readonly':[('state', 'in', ['close','cancel'])]}"/>
<field name="description" invisible="1" attrs="{'readonly':[('state', 'in', ['close','cancel'])]}"/>
<field name="visit_types" domain="[('creation_method','=','manual')]" attrs="{'readonly':[('state', 'in', ['close','cancel'])]}"/>
<field name="benefit_id" attrs="{'readonly':[('state', 'in', ['close','cancel'])]}"/>
<!-- <field name="benefit_code"/>-->
<!-- <field name="family_id" attrs="{'invisible':[('benefit_type','=','benefit')]}"/>-->
<!-- <field name="selector"/>-->
<!-- <field name="researcher_id" attrs="{'invisible':[('selector','=','researcher_team')]}"/>-->
<field name="researcher_team" attrs="{'readonly':[('state', 'in', ['close','cancel'])]}"/>
<field name="researcher_ids" invisible="1" widget="many2many_tags" attrs="{'readonly':[('state', 'in', ['close','cancel'])]}" force_save="1"/>
<field name="message" attrs="{'invisible':[('state', 'not in', ['draft', 'contact'])],'readonly':[('state', 'in', ['close','cancel'])]}"/>
@ -40,6 +35,7 @@
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers" groups="base.group_user"/>
<field name="activity_ids"/>
<field name="message_ids" widget="mail_thread"/>
</div>
</form>
@ -50,17 +46,35 @@
<field name="model">visit.location</field>
<field name="arch" type="xml">
<tree string="Visits">
<field name="name"/>
<field name="benefit_id"/>
<field name="researcher_team"/>
<field name="visit_date"/>
<field name="description"/>
<field name="description" invisible="1"/>
<field name="visit_objective" invisible="1"/>
<field name="visit_types"/>
<field name="contact_type"/>
<field name="state"/>
<field name="state" widget="badge" decoration-muted="state in ['draft']" decoration-info="state in ['contact']" decoration-warning="state in ['schedule_a_visit']" decoration-success="state in ['done', 'close']" decoration-danger="state in ['cancel']"/>
</tree>
</field>
</record>
<!-- <record id="visit_location_activity_view" model="ir.ui.view">-->
<!-- <field name="name">visit.location.activity.view</field>-->
<!-- <field name="model">visit.location</field>-->
<!-- <field name="arch" type="xml">-->
<!-- <activity string="Activity">-->
<!-- <field name="id"/>-->
<!-- <templates>-->
<!-- <div t-name="activity-box">-->
<!-- <div>-->
<!-- <field name="name" display="full"/>-->
<!-- <field name="benefit_id" muted="1" display="full"/>-->
<!-- </div>-->
<!-- </div>-->
<!-- </templates>-->
<!-- </activity>-->
<!-- </field>-->
<!-- </record>-->
<record model="ir.ui.view" id="visit_search">
<field name="name">visit.location.search</field>
<field name="model">visit.location</field>
@ -68,9 +82,6 @@
<search>
<field name="benefit_id"/>
<field name="benefit_code"/>
<!-- <field name="id_number"/>-->
<!-- <field name="email"/>-->
<!-- <field name="phone"/>-->
</search>
</field>
</record>