fix: correct sponsor/donor fields behavior and logic
- Fixed sponsor_donor_type: added default='registered' in Python model - Fixed preferred_communication: removed duplicate field, unified with correct attrs - Fixed sponsor_id: always visible, readonly when new_sponsor selected - Fixed sponsor_phone: readonly for registered/new_sponsor, editable for unknown - Fixed preferred_communication: hidden for unknown, readonly always, not required - Fixed create_new_sponsor button: moved next to sponsor_id field with correct visibility logic - Added required attribute to sponsor_or_donor_type and sponsor_donor_type fields - Enhanced JavaScript: added _update method to reinitialize UI on form re-renders - Enhanced CSS: unified button widths for donation mechanism options All changes are Odoo 14 compatible and tested. Synced with latest dev_odex25_ensan on 20251112
This commit is contained in:
parent
0a19a0489f
commit
240b65c88d
|
|
@ -69,7 +69,7 @@ class TakafulSponsorship(models.Model):
|
|||
sponsor_note = fields.Text(string='Sponsor Note')
|
||||
sponsor_or_donor_type = fields.Selection(string='Sponsor / Donor Type',selection=[('registered', 'Registered'), ('new_sponsor', 'New Sponsor'), ('unknown', 'Unknown')], required=True, default='registered')
|
||||
# ('not_registered', 'Not Registered'),
|
||||
sponsor_donor_type = fields.Selection(string='Sponsor / Donor Type',selection=[('registered', 'Registered'), ('new_sponsor', 'New Sponsor')])
|
||||
sponsor_donor_type = fields.Selection(string='Sponsor / Donor Type',selection=[('registered', 'Registered'), ('new_sponsor', 'New Sponsor')], default='registered')
|
||||
sponsor_name = fields.Char(string="Sponsor Name")
|
||||
sponsor_phone = fields.Char(string="Sponsor Phone", compute='_compute_sponsor_phone', store=True, readonly=False)
|
||||
sponsor_title = fields.Many2one('res.partner.title',string='Sponsor Title')
|
||||
|
|
|
|||
|
|
@ -127,6 +127,12 @@
|
|||
font-size: 16px;
|
||||
}
|
||||
|
||||
.mechanism_option span {
|
||||
min-width: 90px;
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.mechanism_option:hover {
|
||||
border-color: #ffc107;
|
||||
background: #fffbf0;
|
||||
|
|
@ -175,9 +181,24 @@
|
|||
});
|
||||
},
|
||||
|
||||
_update: function () {
|
||||
var result = this._super.apply(this, arguments);
|
||||
if (this.mode === 'edit' && this.modelName === 'takaful.sponsorship') {
|
||||
var self = this;
|
||||
setTimeout(function() {
|
||||
self._setupSimpleUI();
|
||||
}, 50);
|
||||
}
|
||||
return result;
|
||||
},
|
||||
|
||||
_setupSimpleUI: function () {
|
||||
var self = this;
|
||||
|
||||
// Remove old event handlers to prevent duplicates
|
||||
this.$('.record_option').off('click');
|
||||
this.$('.mechanism_option').off('click');
|
||||
|
||||
// Record Type Options - Odoo 14 Compatible Method
|
||||
this.$('.record_option').on('click', function () {
|
||||
var $option = $(this);
|
||||
|
|
|
|||
|
|
@ -148,41 +148,62 @@
|
|||
<label string="Sponsor / Donor Type" for="sponsor_or_donor_type"/>
|
||||
<div class="o_row">
|
||||
<field name="sponsor_or_donor_type"
|
||||
attrs="{'invisible': [('record_type','!=','donation')],'readonly': [('state','!=','draft')]}"/>
|
||||
attrs="{'invisible': [('record_type','!=','donation')], 'required': [('record_type','=','donation')], 'readonly': [('state','!=','draft')]}"/>
|
||||
<field name="sponsor_donor_type"
|
||||
attrs="{'invisible': [('record_type','!=','sponsorship')], 'readonly': [('state','!=','draft')]}"/>
|
||||
attrs="{'invisible': [('record_type','!=','sponsorship')], 'required': [('record_type','=','sponsorship')], 'readonly': [('state','!=','draft')]}"/>
|
||||
</div>
|
||||
|
||||
<label string="Sponsor Name" for="sponsor_id"/>
|
||||
<div class="o_row">
|
||||
<field name="sponsor_id" nolabel="1"
|
||||
context="{'form_view_ref': 'odex_takaful.view_takaful_sponsor_form'}"
|
||||
attrs="{
|
||||
'required': ['|',
|
||||
'&', ('record_type','=','donation'), ('sponsor_or_donor_type','=','registered'),
|
||||
'&', ('record_type','=','sponsorship'), ('sponsor_donor_type','=','registered')
|
||||
],
|
||||
'readonly': ['|',
|
||||
('state','!=','draft'),
|
||||
'|',
|
||||
'&', ('record_type','=','donation'), ('sponsor_or_donor_type','=','new_sponsor'),
|
||||
'&', ('record_type','=','sponsorship'), ('sponsor_donor_type','=','new_sponsor')
|
||||
]
|
||||
}"
|
||||
force_save="1"
|
||||
options="{'no_create': True, 'no_create_edit': True}"/>
|
||||
|
||||
<button name="create_new_sponsor" type="object"
|
||||
string="إنشاء مشترك"
|
||||
class="btn-primary oe_highlight"
|
||||
icon="fa-plus"
|
||||
attrs="{
|
||||
'invisible': [
|
||||
'|','|',('sponsor_id','!=',False),
|
||||
'&', ('record_type', '!=', 'donation'), ('sponsor_donor_type', '!=', 'new_sponsor'),
|
||||
'&', ('record_type', '!=', 'sponsorship'), ('sponsor_or_donor_type', '!=', 'new_sponsor')
|
||||
'invisible': ['|', '|',
|
||||
('sponsor_id','!=',False),
|
||||
'&', ('record_type', '=', 'donation'), ('sponsor_or_donor_type', '!=', 'new_sponsor'),
|
||||
'&', ('record_type', '=', 'sponsorship'), ('sponsor_donor_type', '!=', 'new_sponsor')
|
||||
]
|
||||
}"/>
|
||||
</div>
|
||||
|
||||
<field name="sponsor_id" string="Sponsor Name"
|
||||
context="{'form_view_ref': 'odex_takaful.view_takaful_sponsor_form'}"
|
||||
attrs="{'invisible': [('sponsor_id','=',False), ('sponsor_or_donor_type','!=','registered')],
|
||||
'required':[('sponsor_or_donor_type','=','registered')],
|
||||
'readonly':[('state','!=','draft')]}"
|
||||
force_save="1" options="{'no_create': True, 'no_create_edit': True}"
|
||||
help="Select registered sponsor from the list"/>
|
||||
|
||||
<field name="preferred_communication"
|
||||
attrs="{'invisible': [('sponsor_id','=',False), ('sponsor_or_donor_type','!=','registered')]}"
|
||||
force_save="1" options="{'no_create': True, 'no_create_edit': True}"/>
|
||||
|
||||
<field name="sponsor_phone" string="رقم الجوال" widget="phone"
|
||||
attrs="{'invisible': [('sponsor_or_donor_type','=', False)], 'readonly': [('sponsor_or_donor_type', '!=', 'unknown')]}"
|
||||
placeholder="05xxxxxxxx" help="Saudi mobile number format"/>
|
||||
attrs="{
|
||||
'readonly': ['|',
|
||||
'&', ('record_type','=','donation'), ('sponsor_or_donor_type','!=','unknown'),
|
||||
'&', ('record_type','=','sponsorship'), ('sponsor_donor_type','!=','unknown')
|
||||
]
|
||||
}"
|
||||
placeholder="05xxxxxxxx"/>
|
||||
|
||||
<field name="preferred_communication"
|
||||
attrs="{'invisible': ['|', ('sponsor_or_donor_type','!=','new_sponsor'), ('record_type','!=','donation')], 'required': [('sponsor_or_donor_type','=','new_sponsor')]}"
|
||||
force_save="1" options="{'no_create': True, 'no_create_edit': True}"/>
|
||||
<field name="preferred_communication" string="طريقة التواصل المفضلة"
|
||||
attrs="{
|
||||
'invisible': ['|',
|
||||
'&', ('record_type','=','donation'), ('sponsor_or_donor_type','=','unknown'),
|
||||
'&', ('record_type','=','sponsorship'), ('sponsor_donor_type','=','unknown')
|
||||
],
|
||||
'readonly': [True]
|
||||
}"
|
||||
force_save="1"
|
||||
options="{'no_create': True, 'no_create_edit': True}"/>
|
||||
</group>
|
||||
|
||||
<group name="group_right" string="Basic Information">
|
||||
|
|
|
|||
Loading…
Reference in New Issue