I am working with Odoo and facing an issue where changes made to the journal_id in the account.move model's default_get method are not reflected in the UI for credit notes, although the debug shows that the changes are applied. This problem does not occur with invoices when removing a specific condition. Here is the code snippet:
class AccountMove(models.Model):
_inherit = 'account.move'
@api.model
def default_get(self, fields_list):
res = super().default_get(fields_list)
journal = self.env.company.credit_notes_journal_id
context = self._context.get('default_move_type')
if 'journal_id' in res and journal and context == 'out_refund':
res['journal_id'] = journal.id
return res
he journal_id is correctly set when the condition meets for credit notes (out_refund), as verified by debugging. However, the UI does not reflect this change and shows a different journal than the one specified.
I have ensured that:
- There are no other overrides of default_get causing conflicts.
- There isn't an unnoticed @api.onchange method that might affect this behavior.
- This setup works as expected for invoices but not for credit notes.
Question:
Is there a mechanism or method prior to default_get that sets or overrides the value of journal_id before the form view is loaded? Or am I missing an @api.onchange decorator that is required for the UI to reflect the changes made in default_get? Additionally, why does this approach work for invoices but not for credit notes?
Additional Context:
This behavior is consistent across all custom modules; there is no modification of the journal elsewhere. Debugging suggests that this default_get method is the last to execute before the form view is rendered.
Any guidance or insights into this issue would be greatly appreciated. Thank you!