#### Impacted versions:
10.0 confirmed, though it may be present in earlier versions (particularly 9.0 and/or saas)
#### Steps to reproduce:
- Create some orders in a PoS session, but without an internet connection so they are not sent to the server
- Close the frontend UI with the orders still not being sent
  - You will be shown a warning, but close the frontend anyway
- Close the session in the backend
- Open a new session in the same PoS, with the same user

#### Current behavior:
- As soon as the PoS frontend is loaded, the user shown an error popup with a traceback, warning them that they cannot create multiple sessions for the same point of sale. The tracebcak is at the end of this issue description.
- No new orders appear in the backend, and manual synchronization does not work, even if the internet connection is working. The connections status simply shows a red warning triangle, and trying to manually sync orders by pressing it does nothing.
#### Expected behavior:
- Whether or not the user is warned, they should be able to accept new orders in the current session, and be able to handle the problematic orders later
#### Code details:

The problem appears to stem from the fact that the recovery mechanism for PoS orders has undergone a lot of complicated rework in the past two years, and it may be that some of that work has gotten incorrectly merged. A rough timeline:
1. bed409322d71935903f6c2e9880bc6462c58b78e @mart-e adds the `rescue` flag on the `pos.session` model, allowing such sessions to circumvent the constraint checking (so that the same user and same points of sale can have multiple recovery sessions open simultaneously)
1. 23d7caa8d50de8b5307936af2750c2ffe9c82540 @jorenvo reverts that functionality in order to fix something
1. e892c574825c19598fe3c243fcb651f8b6d50d0f @odony adds back the recovery functionality.

The commit by @odony seems to have been done using the old API, is it maybe meant for a saas branch originally? It seems possible that that code was not meant to get merged into 10.0. It was merged into 9.0 in this pull request: https://github.com/brain-tec/odoo/pull/111

The problem is that @odony's code requires the existence of the `recovery` field on `pos.session`, but as of e91a8d428ff0ca953a7ed2967d3be3f518f05b49, the field is not present in the model, apparently due to the revert done by @jorenvo.

Perhaps the commit authors are better equipped to comment on what would be the best way to fix this: should the recovery mechanism work like @mart-e intended, or was it removed with good reason?

Here is the traceback that is shown to the user when they open the PoS frontend with a new session:
```
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/odoo/http.py", line 638, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/usr/lib/python2.7/dist-packages/odoo/http.py", line 675, in dispatch
    result = self._call_function(**self.params)
  File "/usr/lib/python2.7/dist-packages/odoo/http.py", line 331, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/odoo/service/model.py", line 119, in wrapper
    return f(dbname, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/odoo/http.py", line 324, in checked_call
    result = self.endpoint(*a, **kw)
  File "/usr/lib/python2.7/dist-packages/odoo/http.py", line 933, in __call__
    return self.method(*args, **kw)
  File "/usr/lib/python2.7/dist-packages/odoo/http.py", line 504, in response_wrap
    response = f(*args, **kw)
  File "/usr/lib/python2.7/dist-packages/odoo/addons/web/controllers/main.py", line 862, in call_kw
    return self._call_kw(model, method, args, kwargs)
  File "/usr/lib/python2.7/dist-packages/odoo/addons/web/controllers/main.py", line 854, in _call_kw
    return call_kw(request.env[model], method, args, kwargs)
  File "/usr/lib/python2.7/dist-packages/odoo/api.py", line 679, in call_kw
    return call_kw_model(method, model, args, kwargs)
  File "/usr/lib/python2.7/dist-packages/odoo/api.py", line 664, in call_kw_model
    result = method(recs, *args, **kwargs)
  File "/opt/odoo_addons/pos_orders/models/wk_orders.py", line 16, in create_from_ui
    order_ids = super(PosOrder,self).create_from_ui(orders);
  File "/usr/lib/python2.7/dist-packages/odoo/addons/point_of_sale/models/pos_order.py", line 503, in create_from_ui
    pos_order = self._process_order(order)
  File "/usr/lib/python2.7/dist-packages/odoo/addons/point_of_sale/models/pos_order.py", line 102, in _process_order
    pos_order['pos_session_id'] = self._get_valid_session(pos_order).id
  File "/usr/lib/python2.7/dist-packages/odoo/addons/point_of_sale/models/pos_order.py", line 73, in _get_valid_session
    'rescue': True,    # avoid conflict with live sessions
  File "/usr/lib/python2.7/dist-packages/odoo/addons/point_of_sale/models/pos_session.py", line 193, in create
    res = super(PosSession, self.with_context(ctx).sudo(uid)).create(values)
  File "/usr/lib/python2.7/dist-packages/odoo/models.py", line 3810, in create
    record = self.browse(self._create(old_vals))
  File "/usr/lib/python2.7/dist-packages/odoo/models.py", line 3968, in _create
    self._validate_fields(vals)
  File "/usr/lib/python2.7/dist-packages/odoo/models.py", line 1069, in _validate_fields
    check(self)
  File "/usr/lib/python2.7/dist-packages/odoo/addons/point_of_sale/models/pos_session.py", line 134, in _check_pos_config
    raise ValidationError(_("You cannot create two active sessions related to the same point of sale!"))
ValidationError: (u'You cannot create two active sessions related to the same point of sale!', None)
```
addons/point_of_sale/tests/test_point_of_sale_flow.py
self.pos_order_pos1.picking_id.state,
            'done',
            'Picking should be in done state.'
        )
        self.assertEqual(
            self.pos_order_pos1.picking_id.move_lines.mapped('state'),
            ['done', 'done'],
            'Move Lines should be in done state.'
        )
        self.pos_order_pos2 = self.PosOrder.create({
            'company_id': self.company_id,
            'pricelist_id': self.partner1.property_product_pricelist.id,
            'partner_id': self.partner1.id,
            'lines': [(0, 0, {
                'name': "OL/0003",
                'product_id': self.product3.id,
                'price_unit': 450,
                'discount': 0.0,
                'qty': (-2.0),
            }), (0, 0, {
                'name': "OL/0004",
                'product_id': self.product4.id,
                'price_unit': 300,
                'discount': 0.0,
                'qty': (-3.0),
            })]
        })
        
        context_make_payment = {
            "active_ids": [self.pos_order_pos2.id],