'Create the journal entry corresponding to the \'incoming money\' part of an internal transfer, return the reconciliable move line'

def _create_transfer_entry(self, amount):

    aml_obj = self.env['account.move.line'].with_context(check_move_validity=False)
    (debit, credit, amount_currency, dummy) = aml_obj.with_context(date=self.payment_date).compute_amount_fields(amount, self.currency_id, self.company_id.currency_id)
    amount_currency = ((self.destination_journal_id.currency_id and self.currency_id.with_context(date=self.payment_date).compute(amount, self.destination_journal_id.currency_id)) or 0)
    dst_move = self.env['account.move'].create(self._get_move_vals(self.destination_journal_id))
    dst_liquidity_aml_dict = self._get_shared_move_line_vals(debit, credit, amount_currency, dst_move.id)
    dst_liquidity_aml_dict.update({'name': (_('Transfer    from    %s') % self.journal_id.name), 'account_id': self.destination_journal_id.default_credit_account_id.id, 'currency_id': self.destination_journal_id.currency_id.id, 'payment_id': self.id, 'journal_id': self.destination_journal_id.id})
    aml_obj.create(dst_liquidity_aml_dict)
    transfer_debit_aml_dict = self._get_shared_move_line_vals(credit, debit, 0, dst_move.id)
    transfer_debit_aml_dict.update({'name': self.name, 'payment_id': self.id, 'account_id': self.company_id.transfer_account_id.id, 'journal_id': self.destination_journal_id.id})
    if (self.currency_id != self.company_id.currency_id):
        transfer_debit_aml_dict.update({'currency_id': self.currency_id.id, 'amount_currency': (- self.amount)})
    transfer_debit_aml = aml_obj.create(transfer_debit_aml_dict)
    dst_move.post()
    return transfer_debit_aml
