Impacted versions:
At least version 10, version 11(Can only re-produce the problem sometimes)

Steps to reproduce:
Please see this screencast recorded on odoo runbot.
https://youtu.be/cSPQvp9jQJc

Current behavior:
When users search by account in Journal Entries List View. A special value "dummy_account_id" is set in context, in order to facilitate search by account on account.move level.
With this context value , when users create a journal entries, the system will add default value before the creation.

https://github.com/odoo/odoo/blob/fc69b37cf710623ea215cd085e998679d8c50985/odoo/models.py#L3802

This method will set "dummy_account_id" to the previously searched account in vals.

Then the system continue creating account.move and related account.move.line records.
It is fine until the system run this:
https://github.com/odoo/odoo/blob/fc69b37cf710623ea215cd085e998679d8c50985/odoo/models.py#L3830

Since "dummy_account_id" is related field, and it now has value. The system will change the first related  account.move.line record to dummy_account_id.

Eventualy, the account is wrongly set to "dummy_account_id".

Expected behavior:
This is a feature which will fill the form field value with searched value for users. But the journal entry creation should not be affected by dummy_account_id, since it is only for searching purpose.

@Yenthe666 Would you please review this issue and help to bring related odoo staff to this issue?
total_credit += aml.credit
            if aml.amount_residual_currency:
                aml_to_balance_currency |= aml
            maxdate = max(aml.date, maxdate)
            if not currency and aml.currency_id:
                currency = aml.currency_id
            if aml.currency_id and aml.currency_id == currency:
                total_amount_currency += aml.amount_currency
            partial_rec_set |= aml.matched_debit_ids | aml.matched_credit_ids
        if currency and aml_to_balance_currency:
            aml = aml_to_balance_currency[0]
            #eve
            partial_rec = aml.credit and aml.matched_debit_ids[0] or aml.matched_credit_ids[0]
            aml_id, partial_rec_id = partial_rec.with_context(skip_full_reconcile_check=True).create_exchange_rate_entry(aml_to_balance_currency, 0.0, total_amount_currency, currency, maxdate)
            self |= aml_id
            partial_rec_set |= partial_rec_id
            total_amount_currency += aml_id.amount_currency
        partial_rec_ids = [x.id for x in list(partial_rec_set)]
        #if 
        digits_rounding_precision = self[0].company_id.currency_id.rounding
        if float_compare(total_debit, total_credit, precision_rounding=digits_rounding_precision) == 0 \
          and (not currency or float_is_zero(total_amount_currency, precision_rounding=currency.rounding)):
            #in 
            self.env['account.full.reconcile'].with_context(check_move_validity=False).create({
                'partial_reconcile_ids': [(6, 0, partial_rec_ids)],
                'reconciled_line_ids': [(6, 0, self.ids)],
                'exchange_move_id': aml_id.move_id.id if aml_id else False,
                'exchange_partial_rec_id': partial_rec_id.id if partial_rec_id else False})
    @api.multi
    def remove_move_reconcile(self):