Merge pull request #6273 from expsa/er

[IMP] odex_benefit: IMP benefit
This commit is contained in:
kchyounes19 2026-01-20 14:26:29 +01:00 committed by GitHub
commit 02c3cb7f7c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 50 additions and 45 deletions

View File

@ -3,6 +3,7 @@ access_benefit_researcher_record,access_benefit_researcher_record,model_grant_be
access_benefit_woman_commitee_record,access_benefit_record,model_grant_benefit,odex_benefit.group_benefit_woman_commitee,1,1,1,1
access_benefit_branch_manager_record,access_benefit_branch_manager_record,model_grant_benefit,odex_benefit.group_benefit_branch_manager,1,1,1,1
access_benefit_manager_record,access_benefit_manager_record,model_grant_benefit,odex_benefit.group_benefit_manager,1,1,1,1
access_benefit_family_services_manager,access_benefit_family_services_manager,model_grant_benefit,odex_benefit.group_family_services_manager,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_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

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
3 access_benefit_woman_commitee_record access_benefit_record model_grant_benefit odex_benefit.group_benefit_woman_commitee 1 1 1 1
4 access_benefit_branch_manager_record access_benefit_branch_manager_record model_grant_benefit odex_benefit.group_benefit_branch_manager 1 1 1 1
5 access_benefit_manager_record access_benefit_manager_record model_grant_benefit odex_benefit.group_benefit_manager 1 1 1 1
6 access_benefit_family_services_manager access_benefit_family_services_manager model_grant_benefit odex_benefit.group_family_services_manager 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_users 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

View File

@ -107,7 +107,6 @@
<field name="name">Family Services Manager</field>
<field name="category_id" ref="module_category_benefit"/>
<field name="users" eval="[(4, ref('base.user_root'))]"/>
<field name="implied_ids" eval="[(4, ref('group_benefit_manager'))]"/>
</record>
<record id="group_service_legal_department" model="res.groups">
@ -133,7 +132,7 @@
<field name="name">Show All Benefits Profiles</field>
<field name="model_id" ref="model_grant_benefit"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('group_benefit_manager')),(4, ref('group_benefit_supervisor'))]"/>
<field name="groups" eval="[(4, ref('group_benefit_manager')),(4, ref('group_benefit_supervisor')),(4, ref('group_family_services_manager'))]"/>
<field name="active" eval="True" />
</record>
@ -166,7 +165,7 @@
<field name="name">Show All Visit Location</field>
<field name="model_id" ref="model_visit_location"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('group_benefit_manager')),(4, ref('group_benefit_supervisor'))]"/>
<field name="groups" eval="[(4, ref('group_benefit_manager')),(4, ref('group_benefit_supervisor')),(4, ref('group_family_services_manager'))]"/>
<field name="active" eval="True" />
</record>
@ -215,7 +214,7 @@
<field name="name">Show All Family Complaints</field>
<field name="model_id" ref="model_family_complaints"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('group_benefit_manager')),(4, ref('group_benefit_supervisor'))]"/>
<field name="groups" eval="[(4, ref('group_benefit_manager')),(4, ref('group_benefit_supervisor')),(4, ref('group_family_services_manager'))]"/>
<field name="active" eval="True" />
</record>
@ -295,7 +294,7 @@
<field name="name">Show All Family Members</field>
<field name="model_id" ref="model_family_member"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('group_benefit_manager')),(4, ref('group_benefit_supervisor'))]"/>
<field name="groups" eval="[(4, ref('group_benefit_manager')),(4, ref('group_benefit_supervisor')),(4, ref('group_family_services_manager'))]"/>
<field name="active" eval="True" />
</record>

View File

@ -774,7 +774,7 @@
<!--Benefit Menus-->
<!--###########################################################-->
<menuitem id="benefits_root_menu" name="Benefit Management"
web_icon="odex_benefit,static/description/icon1.png" groups="odex_benefit.group_benefit_info,odex_benefit.group_benefit_manager,odex_benefit.group_benefit_researcher,odex_benefit.group_benefit_woman_commitee,odex_benefit.group_benefit_branch_manager"/>
web_icon="odex_benefit,static/description/icon1.png" groups="odex_benefit.group_benefit_info,odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager,odex_benefit.group_benefit_researcher,odex_benefit.group_benefit_woman_commitee,odex_benefit.group_benefit_branch_manager"/>
<!-- <menuitem id="benefits_root_menu" name="Benefit Management"/>-->
<!--#ملفات المستفيدين-->
<menuitem id="benefit_main_menu" name="Benefit Managements"
@ -1035,7 +1035,7 @@
parent="odex_benefit.benefit_tools" sequence="4"/>
<menuitem id="services_settings_menu" name="Services Settings" sequence="100"
parent="odex_benefit.benefit_tools_services_settings_menu" action="services_settings_action" groups="odex_benefit.group_benefit_manager"/>
parent="odex_benefit.benefit_tools_services_settings_menu" action="services_settings_action" groups="odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager"/>
<menuitem id="services_requests_menu" name="Services Requests" sequence="2"
parent="odex_benefit.benefit_services" action="service_request_action"/>
<menuitem id="services_requests_account_menu" name="Services Requests" sequence="9"

View File

@ -367,24 +367,24 @@
<button name="action_first_accepted" type="object"
string="First Accept" class="oe_highlight"
confirm="Are you sure you want to accept ?"
groups="odex_benefit.group_benefit_woman_commitee,odex_benefit.group_benefit_manager"
groups="odex_benefit.group_benefit_woman_commitee,odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager"
attrs="{'invisible': ['|',('action_type','not in',['new','edit_info']),('state','not in',['waiting_approve'])]}"/>
<button name="action_second_accepted" type="object"
string="Second Accept" class="oe_highlight"
confirm="Are you sure you want to accept ?"
groups="odex_benefit.group_benefit_branch_manager,odex_benefit.group_benefit_manager"
groups="odex_benefit.group_benefit_branch_manager,odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager"
attrs="{'invisible': ['|',('action_type','not in',['new','edit_info']),('state','not in',['first_approve'])]}"/>
<button name="action_refuse" type="object"
string="Final Refuse" class="oe_highlight"
confirm="Are you sure you want to final refuse ?"
groups="odex_benefit.group_benefit_manager,odex_benefit.group_benefit_branch_manager,odex_benefit.group_benefit_woman_commitee"
groups="odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager,odex_benefit.group_benefit_branch_manager,odex_benefit.group_benefit_woman_commitee"
states="first_refusal"
/>
<button name="complete_data" type="object"
string="Researcher Assignment" class="oe_highlight"
confirm="Are you sure you want to Researcher assignment ?"
states="new"
groups="odex_benefit.group_benefit_manager,odex_benefit.group_benefit_branch_manager,odex_benefit.group_benefit_woman_commitee"/>
groups="odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager,odex_benefit.group_benefit_branch_manager,odex_benefit.group_benefit_woman_commitee"/>
<button name="finish_complete_data" type="object"
string="Finish Complete" class="oe_highlight"
confirm="Are you sure you want to Finish Complete data ?"
@ -392,19 +392,19 @@
<button name="action_first_refusal" type="object"
string="First Refuse" class="btn btn-danger"
confirm="Are you sure you want to refuse ?"
groups="odex_benefit.group_benefit_manager,odex_benefit.group_benefit_branch_manager,odex_benefit.group_benefit_woman_commitee,odex_benefit.group_benefit_researcher"
groups="odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager,odex_benefit.group_benefit_branch_manager,odex_benefit.group_benefit_woman_commitee,odex_benefit.group_benefit_researcher"
attrs="{'invisible': ['|',('action_type','!=','new'),('state','not in',['waiting_approve','complete_info'])]}"
/>
<button name="action_set_to_new" type="object"
string="Set To for Researcher" class="btn btn-warning"
confirm="Are you sure you want to set the state to Waiting for Researcher?"
groups="odex_benefit.group_benefit_manager,odex_benefit.group_benefit_branch_manager,odex_benefit.group_benefit_woman_commitee"
groups="odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager,odex_benefit.group_benefit_branch_manager,odex_benefit.group_benefit_woman_commitee"
attrs="{'invisible': ['|',('action_type','not in',['new','edit_info']),('state','not in',['waiting_approve','first_approve','refused','first_refusal'])]}"
/>
<button name="action_black_list" type="object"
string="Black List" class="btn btn-dark-grey"
attrs="{'invisible': ['|',('action_type','not in',['new','edit_info']),('state','not in',['waiting_approve','refused'])]}"
groups="odex_benefit.group_benefit_manager,odex_benefit.group_benefit_branch_manager,odex_benefit.group_benefit_woman_commitee"
groups="odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager,odex_benefit.group_benefit_branch_manager,odex_benefit.group_benefit_woman_commitee"
confirm="Are you sure you want to move to black list ?"/>
<button name="action_suspend" type="object"
string="Temporarily Suspended" class="btn btn-danger"
@ -421,15 +421,15 @@
<button name="action_suspend_first_accept" type="object"
string="First Approve" class="oe_highlight"
attrs="{'invisible': ['|',('action_type','!=','suspended'),('state', 'not in', ['waiting_approve'])]}"
groups="odex_benefit.group_benefit_woman_commitee,odex_benefit.group_benefit_manager"
groups="odex_benefit.group_benefit_woman_commitee,odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager"
/>
<button name="action_suspend_second_accept" type="object"
string="Second Approve" class="oe_highlight"
groups="odex_benefit.group_benefit_branch_manager,odex_benefit.group_benefit_manager"
groups="odex_benefit.group_benefit_branch_manager,odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager"
attrs="{'invisible': ['|',('action_type','!=','suspended'),('state', 'not in', ['first_approve'])]}"/>
<button name="action_suspend_third_accept" type="object"
string="Third Approve" class="oe_highlight"
groups="odex_benefit.group_benefit_manager"
groups="odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager"
attrs="{'invisible': ['|',('action_type','!=','suspended'),('state', 'not in', ['family_services_manager'])]}"/>
<!-- Resume from suspension -->
<button name="action_resume_first_accept" type="object"
@ -453,11 +453,11 @@
/>
<button name="action_resume_third_accept" type="object"
string="Resume Approval by Family Services Manager" class="oe_highlight"
groups="odex_benefit.group_benefit_manager"
groups="odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager"
attrs="{'invisible': ['|',('action_type','not in',['resume_from_final','resume_from_temporary']),('state', 'not in', ['family_services_manager'])]}"/>
<button name="action_reject_resume" type="object"
string="Reject Resume" class="btn btn-danger"
groups="odex_benefit.group_benefit_manager"
groups="odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager"
attrs="{'invisible': ['|',('action_type','not in',['resume_from_final','resume_from_temporary']),('state', '!=', 'family_services_manager')]}"
/>
<button name="action_resume_family" string="Resume Family Service"
@ -467,7 +467,7 @@
<button name="action_final_suspend" type="object"
string="Final Suspension" class="btn btn-danger"
attrs="{'invisible': [('state', '!=', 'temporary_suspended')]}"
groups="odex_benefit.group_benefit_manager"/>
groups="odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager"/>
<button name="action_suspend_refuse" type="object"
string="Suspend Refuse" class="oe_highlight"
attrs="{'invisible': ['|',('action_type','!=','suspended'),('state', 'not in', ['waiting_approve','first_approve','family_services_manager','suspended_second_approve'])]}"
@ -479,15 +479,16 @@
confirm="Are you sure you want to move to Temporarily Exception ?"/>
<button name="action_exception_first_accept" type="object"
string="Exception First Approve" class="oe_highlight"
groups="odex_benefit.group_benefit_woman_commitee,odex_benefit.group_benefit_manager"
groups="odex_benefit.group_benefit_woman_commitee,odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager"
attrs="{'invisible': ['|',('action_type','!=','exception'),('state', 'not in', ['waiting_approve'])]}"/>
<button name="action_exception_second_accept" type="object"
string="Exception Second Approve" class="oe_highlight"
attrs="{'invisible': ['|',('action_type','!=','exception'),('state', 'not in', ['first_approve'])]}"
groups="odex_benefit.group_benefit_branch_manager,odex_benefit.group_benefit_manager"/>
groups="odex_benefit.group_benefit_branch_manager,odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager"/>
<button name="action_exception_final_accept" type="object"
string="Exception Final Approve" class="oe_highlight"
states="exception_second_approve" groups="odex_benefit.group_benefit_manager"/>
states="exception_second_approve"
groups="odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager"/>
<button name="action_exception_refuse" type="object"
string="Exception Refuse" class="oe_highlight"
attrs="{'invisible': ['|',('action_type','!=','exception'),('state', 'not in', ['waiting_approve','first_approve','exception_second_approve'])]}"
@ -1512,14 +1513,14 @@
readonly="1" string="Region"/> -->
<field name="city_id" readonly="1" string="City" force_save="1"
options="{'no_create': True, 'no_create_edit': True}"
groups="odex_benefit.group_benefit_manager"/>
groups="odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager"/>
<!-- <field name="res_city_id" string="Res City"
options="{'no_create': True, 'no_create_edit': True}"/> -->
<!-- <field name="housing_city"/> -->
<field name="district_id" force_save="1"
options="{'no_create': True, 'no_create_edit': True}"
attrs="{'readonly':[('state', 'not in', ['draft', 'new', 'complete_info'])]}"
groups="odex_benefit.group_benefit_manager"/>
groups="odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager"/>
<field name="zip"
attrs="{'required':[('state','not in',['draft','new'])],'readonly':[('state','not in',['draft','new','complete_info'])]}"/>
<field name="short_number"/>
@ -1961,7 +1962,9 @@
<field name="notes" nolabel="1"/>
</group>
</page>
<page string="Configuration" groups="odex_benefit.group_benefit_manager" invisible="1">
<page string="Configuration"
groups="odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager"
invisible="1">
<!-- <group col="4">-->
<!-- <field name="is_life" attrs="{'invisible':[('is_life','!=',False)]}"/>-->
<!-- <field name="is_sport" widget="boolean_toggle"/>-->
@ -1987,14 +1990,15 @@
<field name="has_car" widget="boolean_toggle" invisible="1"
attrs="{'readonly':[('state','not in',['draft','new','complete_info'])]}"/>
<field name="is_excluded_suspension" invisible="1"
groups="odex_benefit.group_benefit_manager,odex_benefit.group_benefit_branch_manager,odex_benefit.group_benefit_woman_commitee"
groups="odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager,odex_benefit.group_benefit_branch_manager,odex_benefit.group_benefit_woman_commitee"
readonly="1" force_save="1"/>
</group>
<group>
<!-- <field name="request_producer_id"/> -->
<field name="user_id" readonly="1" force_save="1"
groups="odex_benefit.group_benefit_manager"/>
<field name="is_from_portal" groups="odex_benefit.group_benefit_manager"/>
groups="odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager"/>
<field name="is_from_portal"
groups="odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager"/>
<field name="password" password="True" invisible="1"/>
<field name="has_needs" invisible="1"/>
<!-- <field name="required_attach" attrs="{'required':[('state','not in',['draft'])]}"/>-->
@ -2018,7 +2022,8 @@
<field name="name">grant.benefit.form</field>
<field name="model">grant.benefit</field>
<field name="inherit_id" ref="odex_benefit.grant_benefit_form"/>
<field name="groups_id" eval="[(6,0,[ref('odex_benefit.group_benefit_manager')])]"/>
<field name="groups_id"
eval="[(6,0,[ref('odex_benefit.group_benefit_manager'),ref('odex_benefit.group_family_services_manager')])]"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='city_id']" position="replace">
<field name="city_id" invisible="1"/>

View File

@ -62,10 +62,10 @@
<button string="Confirm" type="object" name="action_accounting_approve" class="oe_highlight"
states="assistant_general_manager"
groups="odex_benefit.group_benefit_manager"/>
groups="odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager"/>
<button string="Reset" type="object" name="action_reset_to_calculated" class="btn btn-danger"
states="assistant_general_manager"
groups="odex_benefit.group_benefit_manager"/>
groups="odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager"/>
<button string="Reset" type="object" name="action_reset_to_calculated" class="btn btn-danger"
states="accounting_approve" groups="odex_benefit.group_family_services_manager"/>
</header>

View File

@ -21,20 +21,20 @@
/>
<button name="action_suspend_third_accept" type="object"
string="Third Approve" class="oe_highlight"
groups="odex_benefit.group_benefit_manager"
groups="odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager"
attrs="{'invisible': ['|','|',('action_type','!=','suspended'),('state', 'not in', ['family_services_manager']),('is_member_workflow','=',False)]}"/>
<button name="action_resume_first_accept" type="object"
string="Resume Approval by Operations Head" class="oe_highlight"
attrs="{'invisible': ['|','|',('action_type','not in',['resume_from_final','resume_from_temporary']),('state', 'not in', ['waiting_approve']),('is_member_workflow','=',False)]}"
groups="odex_benefit.group_benefit_woman_commitee,odex_benefit.group_benefit_manager"
groups="odex_benefit.group_benefit_woman_commitee,odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager"
/>
<button name="action_resume_second_accept" type="object"
string="Resume Approval by Branch Manager" class="oe_highlight"
groups="odex_benefit.group_benefit_branch_manager,odex_benefit.group_benefit_manager"
groups="odex_benefit.group_benefit_branch_manager,odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager"
attrs="{'invisible': ['|','|',('action_type','not in',['resume_from_final','resume_from_temporary']),('state', 'not in', ['first_approve']),('is_member_workflow','=',False)]}"/>
<button name="action_resume_third_accept" type="object"
string="Resume Approval by Family Services Manager" class="oe_highlight"
groups="odex_benefit.group_benefit_manager"
groups="odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager"
attrs="{'invisible': ['|','|',('action_type','not in',['resume_from_final','resume_from_temporary']),('state', 'not in', ['family_services_manager']),('is_member_workflow','=',False)]}"/>
<button name="action_resume_member" string="Resume Member Service"
type="object" class="btn btn-success"
@ -43,7 +43,7 @@
<button name="action_final_suspend" type="object"
string="Final Suspension" class="btn btn-danger"
attrs="{'invisible': ['|',('state', '!=', 'temporary_suspended'),('is_member_workflow','=',False)]}"
groups="odex_benefit.group_benefit_manager"/>
groups="odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager"/>
<button name="action_reject_resume" type="object"
string="Reject Resume" class="oe_highlight"
attrs="{'invisible': ['|','|',('action_type','not in',['resume_from_final','resume_from_temporary']),('state', 'not in', ['waiting_approve','first_approve','family_services_manager']),('is_member_workflow','=',False)]}"
@ -65,17 +65,17 @@
attrs="{'invisible': [('member_status','=','benefit')]}"/>
<button name="action_exception_first_accept" type="object"
string="Exception First Approve" class="oe_highlight"
groups="odex_benefit.group_benefit_woman_commitee,odex_benefit.group_benefit_manager"
groups="odex_benefit.group_benefit_woman_commitee,odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager"
attrs="{'invisible': ['|',('action_type','!=','exception'),('state','not in',['waiting_approve'])]}"/>
<button name="action_exception_second_accept" type="object"
string="Exception Second Approve" class="oe_highlight"
groups="odex_benefit.group_benefit_branch_manager,odex_benefit.group_benefit_manager"
groups="odex_benefit.group_benefit_branch_manager,odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager"
attrs="{'invisible': ['|',('action_type','!=','exception'),('state', 'not in', ['first_approve'])]}"
/>
<button name="action_exception_final_accept" type="object"
string="Exception Final Approve" class="oe_highlight"
attrs="{'invisible': [('state','not in',['exception_second_approve'])]}"
groups="odex_benefit.group_benefit_manager"/>
groups="odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager"/>
<button name="action_exception_refuse" type="object"
string="Exception Refuse" class="btn btn-danger"
attrs="{'invisible': ['|',('action_type','!=','exception'),('state', 'not in', ['waiting_approve','first_approve','family_services_manager','exception_second_approve'])]}"

View File

@ -9,7 +9,7 @@
<field name="arch" type="xml">
<xpath expr="//group[@name='country_details']" position="after">
<group>
<field name="is_excluded" groups="odex_benefit.group_benefit_manager"></field>
<field name="is_excluded" groups="odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager"/>
</group>
</xpath>
</field>

View File

@ -25,7 +25,7 @@
<button name="action_approval_of_gm_assistant" type="object"
string="Approve" class="oe_highlight"
groups="odex_benefit.group_benefit_manager"
groups="odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager"
attrs="{'invisible': [('state', '!=', 'gm_assistant')]}"/>
<button name="action_reset_to_calculated" type="object"

View File

@ -152,16 +152,16 @@
string="Beneficiary Approve" class="oe_highlight"
confirm="Are you sure you want to approve ?"
states="gm_assistant"
groups="odex_benefit.group_benefit_branch_manager,odex_benefit.group_benefit_manager"/>
groups="odex_benefit.group_benefit_branch_manager,odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager"/>
<button name="action_first_refuse" type="object"
string="Return the request to the specialist" class="btn btn-warning"
states="gm_assistant"
groups="odex_benefit.group_benefit_branch_manager,odex_benefit.group_benefit_manager"
groups="odex_benefit.group_benefit_branch_manager,odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager"
/>
<button name="action_refuse" type="object"
string="Refuse" class="btn btn-danger"
states="gm_assistant"
groups="odex_benefit.group_benefit_branch_manager,odex_benefit.group_benefit_manager"
groups="odex_benefit.group_benefit_branch_manager,odex_benefit.group_benefit_manager,odex_benefit.group_family_services_manager"
/>
<field name="state" widget="statusbar"
statusbar_visible="draft,researcher,waiting_approve,first_approve,accounting_approve,send_request_to_supplier,family_received_device,refused"/>