Skip to Content
Menu
This question has been flagged
1 Reply
3417 Views

Hello !

I have created onchange function based on one2many field. Here have some field like as float, int,char , boolean . The main fact is that the boolean field didn't change when i select any one2many field value . reference_id contains one2many field. The boolean field have sorted the previous value . it's not changing .Please tell me how can i solve this ?

here is the model views:

reference_id = fields.Many2one('eem.pre_costing', string='Reference :', domain=[('state', '=', 'confirm')],
required=True, tracking=True)
purpose = fields.Text(string='Purpose :', required=True, tracking=True)
requested_amount = fields.Float(string="Requested Amount :")
" boolean field
purchase = fields.Boolean(string='Purchase :', default=False, tracking=True)
miscellaneous = fields.Boolean(string='Miscellaneous :', default=False, tracking=True)
gift_donation = fields.Boolean(string='Gift & Donation :', default=False, tracking=True)
printing_stationery = fields.Boolean(string='Printing&Stationery :', default=False, tracking=True)


onchange function
@api.onchange('reference_id')
def onchange_reference_id(self):
if self.reference_id.purpose:
self.purpose = self.reference_id.purpose
if self.reference_id.total_pre_costing_amount:
self.requested_amount = self.reference_id.total_pre_costing_amount
if self.reference_id.purchase:
self.purchase = self.reference_id.purchase
if self.reference_id.miscellaneous:
self.miscellaneous = self.reference_id.miscellaneous
if self.reference_id.gift_donation:
self.gift_donation = self.reference_id.gift_donation
if self.reference_id.printing_stationery:
self.printing_stationery = self.reference_id.printing_stationery

else:
self.purpose = ''
self.purchase = ''
self.miscellaneous = ''
self.gift_donation = ''
self.printing_stationery = ''



Avatar
Discard

At the end you assign string to boolean Field. You should rather use true/false. Can't you add a new Field like prev_reference_id ?

Author

No i don't need new field i just want change base on one2many field. if i set true or false it what would be the change ? Like one model boolean field has true then based on reference_id , another model that i have linked by reference_id here boolean field will be true but its not working .

Author Best Answer
Thanks @tadeusz Jan Karpinskai for your collaboration.
It's the perfect solution :

@api.onchange('reference_id')
def onchange_reference_id(self):
for billing in self:
reference_id = billing.reference_id
if billing.reference_id:
billing.purchase = reference_id.purchase
billing.employee_id = reference_id.employee_id
billing.expense_dept = reference_id.expense_dept
billing.purpose = reference_id.purpose
billing.requested_amount = reference_id.total_pre_costing_amount
billing.miscellaneous = reference_id.miscellaneous
billing.gift_donation = reference_id.gift_donation
billing.printing_stationery = reference_id.printing_stationery
else:
billing.purchase = False
billing.employee_id = False
billing.expense_dept = ''
billing.purpose = ''
billing.requested_amount = 0.0
billing.miscellaneous = False
billing.gift_donation = False
billing.printing_stationery = False


Avatar
Discard
Related Posts Replies Views Activity
1
Jun 22
1294
1
Jun 22
577
1
Jan 22
1732
0
Sep 20
1739
0
Apr 16
2202