'Create new move lines from new_mv_line_dicts (if not empty) then call reconcile_partial on self and new move lines
:param new_mv_line_dicts: list of dicts containing values suitable fot account_move_line.create()'

@api.multi
def process_reconciliation(self, new_mv_line_dicts):

    if ((len(self) < 1) or ((len(self) + len(new_mv_line_dicts)) < 2)):
        raise UserError(_('A    reconciliation    must    involve    at    least    2    move    lines.'))
    if (len(new_mv_line_dicts) > 0):
        writeoff_lines = self.env['account.move.line']
        company_currency = self[0].account_id.company_id.currency_id
        writeoff_currency = (self[0].currency_id or company_currency)
        for mv_line_dict in new_mv_line_dicts:
            if (writeoff_currency != company_currency):
                mv_line_dict['debit'] = writeoff_currency.compute(mv_line_dict['debit'], company_currency)
                mv_line_dict['credit'] = writeoff_currency.compute(mv_line_dict['credit'], company_currency)
            writeoff_lines += self._create_writeoff(mv_line_dict)
        (self + writeoff_lines).reconcile()
    else:
        self.reconcile()
