[IMP] update grant.benefit

This commit is contained in:
younes 2025-08-17 16:11:29 +01:00
parent a6bc34c46d
commit e2aa3782f3
10 changed files with 150 additions and 107 deletions

View File

@ -22,7 +22,7 @@ class EmpowermentRequest(models.Model):
member_ids = fields.One2many(
'family.member',
compute='_compute_family_members',
string='Family Member',
string='Family Member',ondelete="restrict"
)
benefit_category_id = fields.Many2one(related='familye_id.benefit_category_id', string='Family Category', readonly=True)
relationship = fields.Char(string='Beneficiary Relationship', readonly=True)

View File

@ -268,7 +268,7 @@ class PaProgramActivityRegistration(models.Model):
member_ids = fields.One2many(
'family.member',
'benefit_id',
string='Family Members',
string='Family Members',ondelete="restrict"
)
branch_custom_id = fields.Many2one(string='Branch', related='familye_id.branch_custom_id', readonly=True)

View File

@ -7863,7 +7863,7 @@ msgstr "الاجتماعات"
#: model:ir.model.fields,field_description:odex_benefit.field_suspend_reason_wizard__member_id
#: model:ir.model.fields.selection,name:odex_benefit.selection__service_request__benefit_type__member
msgid "Member"
msgstr "العضو"
msgstr "الفرد"
#. module: odex_benefit
#: model:ir.model,name:odex_benefit.model_family_member
@ -7899,12 +7899,12 @@ msgstr "رقم هوية الفرد"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_family_member__member_income
msgid "Member Income"
msgstr "دخل العضو"
msgstr "دخل الفرد"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__member_income
msgid "Member Income Average"
msgstr "متوسط دخل العضو"
msgstr "متوسط دخل الفرد"
#. module: odex_benefit
#: model:ir.actions.act_window,name:odex_benefit.member_location_action

View File

@ -7,7 +7,7 @@ class EducationStatus(models.Model):
mother_grant_benefit_id = fields.Many2one('grant.benefit', string='Grant Benefit')
replacement_grant_benefit_id = fields.Many2one('grant.benefit', string='Grant Benefit')
family_member_id = fields.Many2one('family.member', string='Grant Benefit')
family_member_id = fields.Many2one('family.member', string='Grant Benefit',ondelete="restrict")
name = fields.Char(
string="Sequence",

View File

@ -4,7 +4,7 @@ class MemberDisabilities(models.Model):
_name = 'member.disabilities'
name = fields.Char(string="Name")
member_id = fields.Many2one('family.member',string="Member")
member_id = fields.Many2one('family.member',string="Member",ondelete="restrict")
disabilities_id = fields.Many2one('disabilities.settings', string="disability")
disability_attach = fields.Binary(attachment=True, string="disability Attach")
expiration_date = fields.Date(string='Expiration date')

View File

@ -4,7 +4,7 @@ class MemberDiseases(models.Model):
_name = 'member.diseases'
name = fields.Char(string="Name")
member_id = fields.Many2one('family.member',string="Member")
member_id = fields.Many2one('family.member',string="Member",ondelete="restrict")
diseases_id = fields.Many2one('diseases.settings', string="Disease")
disease_attach = fields.Binary(attachment=True, string="Diseases Attach")
expiration_date = fields.Date(string='Expiration date')

View File

@ -4,7 +4,7 @@ class MemberHobbies(models.Model):
_name = 'member.hobbies'
name = fields.Char(string="Name")
member_id = fields.Many2one('family.member',string="Member")
member_id = fields.Many2one('family.member',string="Member",ondelete="restrict")
hobbies_id = fields.Many2one('hobbies.settings',string="Hobby")
hobby_attach = fields.Binary(attachment=True,string="Hobby Attach")
expiration_date = fields.Date(string='Expiration date')

View File

@ -5,6 +5,7 @@ from odoo.exceptions import UserError, ValidationError
class Visit(models.Model):
_name = 'visit.location'
_inherit = ['mail.thread', 'mail.activity.mixin']
_order = 'create_date desc'
benefit_type = fields.Selection([
('benefit', 'Benefit'),

View File

@ -9,7 +9,8 @@
<field name="lon"/>
<field name="partner_id"/>
<field name="user_id"/>
<progressbar field="activity_state" colors='{"planned": "success", "today": "warning", "overdue": "danger"}'/>
<progressbar field="activity_state"
colors='{"planned": "success", "today": "warning", "overdue": "danger"}'/>
<templates>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_content">
@ -210,7 +211,7 @@
<!-- string="Not Leaving" attrs="{'invisible':[('state','=','not_leaving')]}"-->
<!-- />-->
<field name="state" widget="statusbar"
statusbar_visible="draft,new,complete_info,waiting_approve,first_approve,second_approve,first_refusal,refused,temporarily_suspended"/>
statusbar_visible="draft,new,complete_info,waiting_approve,first_approve,second_approve"/>
</header>
<sheet>
<div class="oe_button_box" name="button_box"
@ -242,11 +243,12 @@
<field name="total_service_requests" string="Service Requests" widget="statinfo"/>
</button>
<button icon="fa-file" name="action_open_related_seasonal_service_requests" type="object">
<field name="total_seasonal_service_requests" string="Seasonal Service Requests" widget="statinfo"/>
<field name="total_seasonal_service_requests" string="Seasonal Service Requests"
widget="statinfo"/>
</button>
<!-- <button icon="fa-usd" name="action_open_related_invoice_records" type="object">-->
<!-- <field name="invoices_count" string="Invoices" widget="statinfo"/>-->
<!-- </button>-->
<!-- <button icon="fa-usd" name="action_open_related_invoice_records" type="object">-->
<!-- <field name="invoices_count" string="Invoices" widget="statinfo"/>-->
<!-- </button>-->
<!-- <button name="open_expenses"-->
<!-- type="object" class="oe_stat_button" icon="fa-money">-->
@ -276,9 +278,9 @@
attrs="{'required':[('state','not in',['draft','new'])]}" readonly="1"
force_save="1"/>
<field name="last_visit_date" readonly="1"/>
<!-- required="1"-->
<!-- required="1"-->
<field name="benefit_category_id" readonly="1" force_save="1" />
<!-- required="1"-->
<!-- required="1"-->
<field name="benefit_category_id" readonly="1" force_save="1"/>
<field name="member_income" readonly="1" force_save="1"/>
<button name="%(odex_benefit.grant_map)d" string="Map" type="action"
context="{'search_default_name': name}" icon="fa-map-marker"
@ -547,11 +549,11 @@
<field name="member_ids" widget="one2many_list"
attrs="{'readonly':[('state','not in',['draft','new','complete_info','edit_info'])]}">
<form string="Family Member">
<widget name="web_ribbon" title="Non Benefit Member" bg_color="bg-danger"
attrs="{'invisible': [('member_status', '!=', 'non_benefit')]}"/>
<widget name="web_ribbon" title="Benefit Member" bg_color="bg-success"
attrs="{'invisible': [('member_status', '!=', 'benefit')]}"/>
<sheet>
<widget name="web_ribbon" title="Non Benefit Member" bg_color="bg-danger"
attrs="{'invisible': [('member_status', '!=', 'non_benefit')]}"/>
<widget name="web_ribbon" title="Benefit Member" bg_color="bg-success"
attrs="{'invisible': [('member_status', '!=', 'benefit')]}"/>
<group>
<label for="relationn" string="Relation"/>
<div>
@ -566,52 +568,44 @@
<group>
<field placeholder="Name" name="name" class="oe_inline" readonly="1"
force_save="1" invisible="1"/>
<field name="is_mother" invisible="1"/>
<field name="member_first_name" force_save="1"
attrs="{'invisible':[('is_mother','=',True)],'required':[('is_mother','=',False)]}"/>
<field name="mother_first_name" force_save="1"
attrs="{'invisible':[('is_mother','=',False)],'required':[('is_mother','=',True)]}"/>
<field name="member_third_name" force_save="1"
attrs="{'invisible':[('is_mother','=',True)],'required':[('is_mother','=',False)]}"/>
<field name="is_mother" invisible="1"/>
<field name="mother_first_name" force_save="1"
attrs="{'invisible':[('is_mother','=',False)],'required':[('is_mother','=',True)]}"/>
<field name="mother_third_name" force_save="1"
attrs="{'invisible':[('is_mother','=',False)],'required':[('is_mother','=',True)]}"/>
<field name="member_id_number" required="1"/>
<field name="is_dead"/>
<!-- <field name="gender" required="1"/>-->
<field name="birth_date" required="1"/>
<field name="member_phone"
attrs="{'invisible':[('is_mother','=',True)]}"/>
<field name="member_location" force_save="1" invisible="1"/>
<field name="member_location_conf" force_save="1"
attrs="{'invisible':[('is_mother','=',True)]}"/>
<field name="is_work" attrs="{'invisible':[('age','&lt;',18)]}"/>
<field name="member_income"
attrs="{'invisible':[('age','&lt;',18)], 'required':[('is_work','=',True), ('age','>=',18)]}"/>
<field name="need_transportation"/>
<field name="has_disabilities"/>
<field name="minor_siblings"/>
<field name="sponsor_id"/>
<field name="is_excluded_suspension" readonly="1" force_save="1"/>
<field name="member_status" readonly="1" widget="badge"
decoration-success="member_status == 'benefit'"
decoration-danger="member_status == 'non_benefit'"/>
</group>
<group>
<field name="member_second_name" force_save="1"
attrs="{'invisible':[('is_mother','=',True)],'required':[('is_mother','=',False)]}"/>
<field name="mother_second_name" force_save="1"
attrs="{'invisible':[('is_mother','=',False)],'required':[('is_mother','=',True)]}"/>
<field name="member_family_name" force_save="1"
attrs="{'invisible':[('is_mother','=',True)],'required':[('is_mother','=',False)]}"/>
<field name="mother_second_name" force_save="1"
attrs="{'invisible':[('is_mother','=',False)],'required':[('is_mother','=',True)]}"/>
<field name="mother_family_name" force_save="1"
attrs="{'invisible':[('is_mother','=',False)],'required':[('is_mother','=',True)]}"/>
<field name="benefit_id" invisible="1"/>
<field name="member_phone"
attrs="{'invisible':[('is_mother','=',True)]}"/>
<field name="birth_date" required="1"/>
<field name="age" required="1"/>
<field name="age_status"/>
<field name="member_id_number" required="1"/>
</group>
</group>
<group>
<group>
<field name="is_dead"/>
<field name="minor_siblings"/>
<field name="has_disabilities"/>
<!--<field name="gender" required="1"/>-->
<field name="is_married"
attrs="{'invisible':[('is_mother','=',True)]}"/>
<field name="is_alhaju" widget="radio"/>
<field name="is_amra" widget="radio"/>
<field name="mother_marital_conf"
attrs="{'invisible':[('is_mother','=',False)]}"
options="{'no_create': True, 'no_create_edit': True}"
@ -622,6 +616,26 @@
options="{'no_create': True, 'no_create_edit': True}"
groups="!odex_benefit.group_benefit_manager"/>
</group>
<group>
<field name="is_work" attrs="{'invisible':[('age','&lt;',18)]}"/>
<field name="member_income"
attrs="{'invisible':[('age','&lt;',18)], 'required':[('is_work','=',True), ('age','>=',18)]}"/>
<field name="need_transportation"/>
<field name="is_alhaju" widget="radio"/>
<field name="is_amra" widget="radio"/>
</group>
</group>
<group>
<group>
<field name="sponsor_id"/>
<field name="is_excluded_suspension" readonly="1" force_save="1"/>
</group>
<group>
<field name="benefit_id" invisible="1"/>
<field name="member_status" readonly="1" widget="badge"
decoration-success="member_status == 'benefit'"
decoration-danger="member_status == 'non_benefit'"/>
</group>
</group>
<notebook>
<page string="Hobbies">
@ -727,33 +741,35 @@
<group>
<field name="is_family_member"/>
<field name="account_relation"
attrs="{'readonly':[('state','not in',['draft','new','complete_info'])]}"
attrs="{'readonly':[('state','not in',['complete_info','waiting_approve','first_approve'])]}"
options='{"no_open": True,"no_create_edit": True}'
groups="!odex_benefit.group_benefit_manager"/>
<label for="acc_number"/>
<div class="o_row">
<field name="acc_number" width="100%"
attrs="{'required':[('state','not in',['draft','new'])],'readonly':[('state','not in',['draft','new','complete_info'])]}"/>
attrs="{'required':[('state','in',['first_approve'])],'readonly':[('state','not in',['complete_info','waiting_approve','first_approve'])]}"/>
<field name="sa_iban"/>
</div>
<field name="iban_document" attrs="{'required':[('state','not in',['draft','new'])], 'readonly':[('state','not in',['draft','new','complete_info'])]}" widget="many2many_attachment_preview" />
<field name="iban_document"
attrs="{'required':[('state','in',['first_approve'])], 'readonly':[('state','not in',['complete_info','waiting_approve','first_approve'])]}"
widget="many2many_attachment_preview"/>
</group>
<group>
<field name="bank_id"
attrs="{'readonly':[('state','not in',['draft','new','complete_info'])],'required':[('state','not in',['draft','new'])]}"
attrs="{'readonly':[('state','not in',['complete_info','waiting_approve','first_approve'])],'required':[('state','in',['first_approve'])]}"
options="{'no_create': True, 'no_create_edit': True}"
groups="!odex_benefit.group_benefit_manager"/>
<field name="acc_holder_name"
attrs="{'invisible':[('is_family_member','=',True)],'readonly':[('state','not in',['draft','new','complete_info','edit_info'])],'required':[('state','not in',['draft','new']),('is_family_member','=',False)]}"/>
attrs="{'invisible':[('is_family_member','=',True)],'readonly':[('state','not in',['complete_info','waiting_approve','first_approve'])],'required':[('state','in',['first_approve']),('is_family_member','=',False)]}"/>
<field name="family_member_id"
attrs="{'invisible':[('is_family_member','=',False)],'readonly':[('state','not in',['draft','new','complete_info','edit_info'])],'required':[('state','not in',['draft','new']),('is_family_member','=',True)]}"
attrs="{'invisible':[('is_family_member','=',False)],'readonly':[('state','not in',['complete_info','waiting_approve','first_approve'])],'required':[('state','in',['first_approve']),('is_family_member','=',True)]}"
options="{'no_create': True, 'no_create_edit': True}"
groups="!odex_benefit.group_benefit_manager"/>
<field name="owner_identity_attachment_ids"
attrs="{'invisible':[('is_family_member','=',True)],'readonly':[('state','not in',['draft','new','complete_info','edit_info'])]}"
attrs="{'invisible':[('is_family_member','=',True)],'readonly':[('state','not in',['complete_info','waiting_approve','first_approve'])]}"
widget="many2many_attachment_preview"/>
<field name="family_approval_attachment_ids"
attrs="{'invisible':[('is_family_member','=',True)],'readonly':[('state','not in',['draft','new','complete_info','edit_info'])]}"
attrs="{'invisible':[('is_family_member','=',True)],'readonly':[('state','not in',['complete_info','waiting_approve','first_approve'])]}"
widget="many2many_attachment_preview"/>
</group>
</group>
@ -919,9 +935,17 @@
<field name="expenses_type_custom"/>
<field name="note"/>
<field name="amount" sum="amount"/>
<button name="action_accept" type="object" string="Accept" class="oe_highlight" attrs="{'invisible':[('state','=','accepted')]}" groups="odex_benefit.group_accept_income_and_expenses"/>
<button name="action_refuse" type="object" string="Refuse" class="oe_highlight" attrs="{'invisible':[('state','=','refused')]}" groups="odex_benefit.group_accept_income_and_expenses"/>
<field name="state" readonly="1" force_save="1" widget="badge" decoration-warning="state in ['waiting']" decoration-success="state in ['accepted']" decoration-danger="state in ['refused']"/>
<button name="action_accept" type="object" string="Accept"
class="oe_highlight"
attrs="{'invisible':[('state','=','accepted')]}"
groups="odex_benefit.group_accept_income_and_expenses"/>
<button name="action_refuse" type="object" string="Refuse"
class="oe_highlight" attrs="{'invisible':[('state','=','refused')]}"
groups="odex_benefit.group_accept_income_and_expenses"/>
<field name="state" readonly="1" force_save="1" widget="badge"
decoration-warning="state in ['waiting']"
decoration-success="state in ['accepted']"
decoration-danger="state in ['refused']"/>
</tree>
</field>
</group>
@ -936,9 +960,16 @@
<field name="salary_attach" widget="many2many_attachment_preview"/>
<field name="attach_start_date"/>
<field name="attach_end_date"/>
<button name="action_accept" type="object" string="Accept" class="oe_highlight" attrs="{'invisible':[('state','=','accepted')]}" groups="odex_benefit.group_accept_income_and_expenses"/>
<button name="action_refuse" type="object" string="Refuse" class="oe_highlight" attrs="{'invisible':[('state','=','refused')]}" groups="odex_benefit.group_accept_income_and_expenses"/>
<field name="state" readonly="1" force_save="1" widget="badge" decoration-warning="state in ['waiting']" decoration-success="state in ['accepted']" decoration-danger="state in ['refused']"/>
<button name="action_accept" type="object" string="Accept" class="oe_highlight"
attrs="{'invisible':[('state','=','accepted')]}"
groups="odex_benefit.group_accept_income_and_expenses"/>
<button name="action_refuse" type="object" string="Refuse" class="oe_highlight"
attrs="{'invisible':[('state','=','refused')]}"
groups="odex_benefit.group_accept_income_and_expenses"/>
<field name="state" readonly="1" force_save="1" widget="badge"
decoration-warning="state in ['waiting']"
decoration-success="state in ['accepted']"
decoration-danger="state in ['refused']"/>
<field name="is_required" invisible="1"/>
<field name="is_default" invisible="1"/>
</tree>
@ -1202,7 +1233,7 @@
<field name="partner_id" readonly="1" required="0" force_save="1" string="Partner"
invisible="1"/>
<field name="user_id" readonly="1" force_save="1"/>
<field name="is_from_portal" />
<field name="is_from_portal"/>
<field name="password" password="True" invisible="1"/>
<field name="has_needs" invisible="1"/>
<!-- <field name="required_attach" attrs="{'required':[('state','not in',['draft'])]}"/>-->
@ -1587,15 +1618,15 @@
</field>
</record>
<record id="set_lines_action" model="ir.actions.server">
<field name="name">Update Lines State </field>
<field name="type">ir.actions.server</field>
<field name="model_id" ref="odex_benefit.model_grant_benefit"/>
<field name="binding_model_id" ref="odex_benefit.model_grant_benefit"/>
<field name="state">code</field>
<field name="code">
action = records.action_set_waiting_if_needed()
</field>
</record>
<record id="set_lines_action" model="ir.actions.server">
<field name="name">Update Lines State</field>
<field name="type">ir.actions.server</field>
<field name="model_id" ref="odex_benefit.model_grant_benefit"/>
<field name="binding_model_id" ref="odex_benefit.model_grant_benefit"/>
<field name="state">code</field>
<field name="code">
action = records.action_set_waiting_if_needed()
</field>
</record>
</data>
</odoo>

View File

@ -54,43 +54,54 @@
<field name="relationn" class="oe_inline" nolabel="1" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}" required="1" options='{"no_open": True,"no_create_edit": True}'/>
</div>
</group>
<group>
<group>
<field name="member_first_name" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}" required="1"/>
<field name="member_third_name" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}" required="1"/>
<field name="member_id_number" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}" required="1"/>
<!-- <field name="gender" required="1" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}"/>-->
<field name="is_dead" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}"/>
<field name="member_location" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}" invisible="1"/>
<field name="member_location_conf" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}"/>
<field name="is_work" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}"/>
<field name="member_income" attrs="{'required':[('is_work','=',True)],'readonly':[('state','not in',['draft','complete_info','edit_info'])]}"/>
<field name="need_transportation" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}"/>
<field name="has_disabilities" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}"/>
<field name="minor_siblings" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}"/>
<field name="sponsor_id" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}" invisible="1"/>
<field name="sponsor_related_id" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}"/>
<field name="sponsorship_id" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}"/>
<field name="is_excluded_suspension" readonly="1" force_save="1"/>
<group>
<group>
<field name="member_first_name" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}" required="1"/>
<field name="member_third_name" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}" required="1"/>
<!-- <field name="gender" required="1" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}"/>-->
<field name="birth_date" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}" required="1"/>
<field name="member_location" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}" invisible="1"/>
<field name="member_phone" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}"/>
<field name="member_location_conf" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}"/>
</group>
<group>
<field name="member_second_name" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}" required="1"/>
<field name="member_family_name" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}" required="1"/>
<field name="age" readonly="1" required="1" force_save="1"/>
<field name="age_status"/>
<field name="member_id_number" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}" required="1"/>
</group>
</group>
<group>
<field name="member_second_name" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}" required="1"/>
<field name="member_family_name" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}" required="1"/>
<field name="member_phone" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}"/>
<field name="birth_date" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}" required="1"/>
<field name="age" readonly="1" required="1" force_save="1"/>
<field name="age_status"/>
<field name="is_married" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}"/>
<field name="is_alhaju" widget="radio" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}"/>
<field name="is_amra" widget="radio" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}"/>
<field name="mother_marital_conf" attrs="{'invisible':['|',('relationn','=','mother'),('relationn','=','replacement_mother')]}"/>
<field name="mother_location" invisible="1"/>
<field name="mother_location_conf" attrs="{'invisible':['|',('relationn','=','mother'),('relationn','=','replacement_mother')]}"/>
<field name="benefit_id" attrs="{'readonly': [('state','!=','draft')]}" force_save="1" required="1"/>
<field name="member_status" readonly="1" widget="badge" decoration-success="member_status == 'benefit'" decoration-danger="member_status == 'non_benefit'"/>
<group>
<group>
<field name="is_dead" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}"/>
<field name="minor_siblings" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}"/>
<field name="has_disabilities" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}"/>
<field name="is_married" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}"/>
<field name="mother_location_conf" attrs="{'invisible':['|',('relationn','=','mother'),('relationn','=','replacement_mother')]}"/>
<field name="mother_location" invisible="1"/>
<field name="mother_marital_conf" attrs="{'invisible':['|',('relationn','=','mother'),('relationn','=','replacement_mother')]}"/>
</group>
<group>
<field name="is_work" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}"/>
<field name="member_income" attrs="{'required':[('is_work','=',True)],'readonly':[('state','not in',['draft','complete_info','edit_info'])]}"/>
<field name="need_transportation" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}"/>
<field name="is_amra" widget="radio" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}"/>
<field name="is_alhaju" widget="radio" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}"/>
</group>
</group>
</group>
<group>
<group>
<field name="sponsor_related_id" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}"/>
<field name="sponsor_id" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}" invisible="1"/>
<field name="sponsorship_id" attrs="{'readonly':[('state','not in',['draft','complete_info','edit_info'])]}"/>
<field name="is_excluded_suspension" readonly="1" force_save="1"/>
</group>
<group>
<field name="benefit_id" attrs="{'readonly': [('state','!=','draft')]}" force_save="1" required="1"/>
<field name="member_status" readonly="1" widget="badge" decoration-success="member_status == 'benefit'" decoration-danger="member_status == 'non_benefit'"/>
</group>
</group>
<notebook>
<page string="Hobbies">
<field name="hobbies_attachment_ids" widget="one2many_list">