diff --git a/addons/account/models/account.py b/addons/account/models/account.py
index b2d5b5d2b6e3e87f2d0b9bfd42991c945744de0e..4e945f5bb0bfa986dc4fe11245ea7abc36c812e3 100644
--- a/addons/account/models/account.py
+++ b/addons/account/models/account.py
@@ -160,6 +160,13 @@ class AccountAccount(models.Model):
             for account in self:
                 if (account.company_id.id <> vals['company_id']) and move_lines:
                     raise UserError(_('You cannot change the owner company of an account that already contains journal items.'))
+        # If user change the reconcile flag, all aml should be recomputed for that account and this is very costly.
+        # So to prevent some bugs we add a constraint saying that you cannot change the reconcile field if there is any aml existing
+        # for that account.
+        if vals.get('reconcile'):
+            move_lines = self.env['account.move.line'].search([('account_id', 'in', self.ids)], limit=1)
+            if len(move_lines):
+                raise UserError(_('You cannot change the value of the reconciliation on this account as it already has some moves'))
         return super(AccountAccount, self).write(vals)
 
     @api.multi
diff --git a/addons/account/models/account_journal_dashboard.py b/addons/account/models/account_journal_dashboard.py
index 118955b00bf7c71792bbf0f12a831cc76ecbe3c9..a76bb3c21e9b0740202c18f4341e49c4c2a70648 100644
--- a/addons/account/models/account_journal_dashboard.py
+++ b/addons/account/models/account_journal_dashboard.py
@@ -314,7 +314,7 @@ class account_journal(models.Model):
         })
         ir_model_obj = self.pool['ir.model.data']
         model, action_id = ir_model_obj.get_object_reference(self._cr, self._uid, 'account', action_name)
-        action = self.pool[model].read(self._cr, self._uid, action_id, context=self._context)
+        action = self.pool[model].read(self._cr, self._uid, [action_id], context=self._context)[0]
         action['context'] = ctx
         action['domain'] = self._context.get('use_domain', [])
         return action
@@ -357,7 +357,7 @@ class account_journal(models.Model):
         ctx.pop('group_by', None)
         ir_model_obj = self.pool['ir.model.data']
         model, action_id = ir_model_obj.get_object_reference(self._cr, self._uid, 'account', action_name)
-        action = self.pool[model].read(self._cr, self._uid, action_id, context=self._context)
+        action = self.pool[model].read(self._cr, self._uid, [action_id], context=self._context)[0]
         action['context'] = ctx
         if ctx.get('use_domain', False):
             action['domain'] = ['|', ('journal_id', '=', self.id), ('journal_id', '=', False)]
diff --git a/addons/account_bank_statement_import/account_journal.py b/addons/account_bank_statement_import/account_journal.py
index 7964ecc9aec2418a08157a6371a4aff6669dd3f2..eac0cdb71f29236c6369505d74d2d988eb093b3f 100644
--- a/addons/account_bank_statement_import/account_journal.py
+++ b/addons/account_bank_statement_import/account_journal.py
@@ -14,7 +14,7 @@ class AccountJournal(models.Model):
         action_name = 'action_account_bank_statement_import'
         ir_model_obj = self.pool['ir.model.data']
         model, action_id = ir_model_obj.get_object_reference(self._cr, self._uid, 'account_bank_statement_import', action_name)
-        action = self.pool[model].read(self._cr, self._uid, action_id, context=self.env.context)
+        action = self.pool[model].read(self._cr, self._uid, [action_id], context=self.env.context)[0]
         # Note: this drops action['context'], which is a dict stored as a string, which is not easy to update
         action.update({'context': (u"{'journal_id': " + str(self.id) + u"}")})
         return action
diff --git a/addons/point_of_sale/static/src/js/models.js b/addons/point_of_sale/static/src/js/models.js
index 50b6dda2b5a43711162a46f470d4ed2e87e3d252..904cfcb9c4248ffdffe6c2ea4ea2f450570a46c3 100644
--- a/addons/point_of_sale/static/src/js/models.js
+++ b/addons/point_of_sale/static/src/js/models.js
@@ -1810,7 +1810,7 @@ exports.Order = Backbone.Model.extend({
     },
 
     initialize_validation_date: function () {
-        this.validation_date = this.validation_date || new Date();
+        this.validation_date = new Date();
     },
 
     set_tip: function(tip) {
diff --git a/addons/purchase_requisition/purchase_requisition_view.xml b/addons/purchase_requisition/purchase_requisition_view.xml
index 1ba167db5e898a11708bfbfd0effe74afcf9d36a..3885934dce809c35d94e4c03937c0751df53eb00 100644
--- a/addons/purchase_requisition/purchase_requisition_view.xml
+++ b/addons/purchase_requisition/purchase_requisition_view.xml
@@ -139,7 +139,7 @@
                         <field name="ordering_date" attrs="{'readonly': [('state','not in',('draft','in_progress','open'))]}"/>
                         <field name="schedule_date" attrs="{'readonly': [('state','not in',('draft','in_progress','open'))]}"/>
                         <field name="origin" placeholder="e.g. PO0025" attrs="{'readonly': [('state', '!=', 'draft')]}"/>
-                        <field name="picking_type_id" widget="selection" groups="stock.group_stock_adv_location" attrs="{'readonly': [('state', '!=', 'draft')]}"/>
+                        <field name="picking_type_id" widget="selection" groups="stock.group_adv_location" attrs="{'readonly': [('state', '!=', 'draft')]}"/>
                         <field name="company_id" groups="base.group_multi_company" options="{'no_create': True}" attrs="{'readonly': [('state','not in',('draft'))]}"/>
                     </group>
                 </group>
diff --git a/doc/cla/individual/tiangolo.md b/doc/cla/individual/tiangolo.md
new file mode 100644
index 0000000000000000000000000000000000000000..dfb1c19c218007de4848389bf3d7b16385d6765a
--- /dev/null
+++ b/doc/cla/individual/tiangolo.md
@@ -0,0 +1,11 @@
+Colombia, 2016-10-04
+
+I hereby agree to the terms of the Odoo Individual Contributor License
+Agreement v1.0.
+
+I declare that I am authorized and able to make this agreement and sign this
+declaration.
+
+Signed,
+
+Sebastián Ramírez tiangolo@gmail.com https://github.com/tiangolo
diff --git a/doc/howtos/backend.rst b/doc/howtos/backend.rst
index afde93b349dbe61ebacaf5d92743844ce505283e..46ff5f8137a94212dedc020c39cdf6ba3e677c6b 100644
--- a/doc/howtos/backend.rst
+++ b/doc/howtos/backend.rst
@@ -211,7 +211,7 @@ overridden by setting :attr:`~openerp.models.Model._rec_name`.
 
     .. only:: solutions
 
-        Edit the file ``openacademy/models.py`` to include a *Course* class.
+        Edit the file ``openacademy/models/models.py`` to include a *Course* class.
 
         .. patch::
 
@@ -255,7 +255,7 @@ be declared in the ``'data'`` list (always loaded) or in the ``'demo'`` list
 
     .. only:: solutions
 
-        Edit the file ``openacademy/demo.xml`` to include some data.
+        Edit the file ``openacademy/demo/demo.xml`` to include some data.
 
         .. patch::
 
@@ -484,7 +484,7 @@ client data; it is also related to its sale order line records.
 
     .. only:: solutions
 
-        #. Create the class *Session* in ``openacademy/models.py``.
+        #. Create the class *Session* in ``openacademy/models/models.py``.
         #. Add access to the session object in ``openacademy/view/openacademy.xml``.
 
         .. patch::
@@ -684,7 +684,7 @@ instead of a single view its ``arch`` field is composed of any number of
            inspect the view, find its external ID and the place to put the
            new field.
 
-       #. Create a file ``openacademy/partner.py`` and import it in
+       #. Create a file ``openacademy/models/partner.py`` and import it in
           ``__init__.py``
        #. Create a file ``openacademy/views/partner.xml`` and add it to
           ``__openerp__.py``
diff --git a/openerp/models.py b/openerp/models.py
index ca182955c095724866b8412688b61f9ff77901e9..750849b40506a270195243f01a1cad7eeb15abb0 100644
--- a/openerp/models.py
+++ b/openerp/models.py
@@ -2022,7 +2022,7 @@ class BaseModel(object):
         for order_part in orderby.split(','):
             order_split = order_part.split()
             order_field = order_split[0]
-            if order_field in groupby_fields:
+            if order_field == 'id' or order_field in groupby_fields:
 
                 if self._fields[order_field.split(':')[0]].type == 'many2one':
                     order_clause = self._generate_order_by(order_part, query).replace('ORDER BY ', '')
diff --git a/openerp/tools/misc.py b/openerp/tools/misc.py
index 2dbe2bad3824970c4a47a16c783ceac401991f6e..18f9dc1820564ff5ec1cfcb64c7e97ec5c48e51c 100644
--- a/openerp/tools/misc.py
+++ b/openerp/tools/misc.py
@@ -340,13 +340,13 @@ try:
     # add some sanitizations to respect the excel sheet name restrictions
     # as the sheet name is often translatable, can not control the input
     class PatchedWorkbook(xlwt.Workbook):
-        def add_sheet(self, name):
+        def add_sheet(self, name, cell_overwrite_ok=False):
             # invalid Excel character: []:*?/\
             name = re.sub(r'[\[\]:*?/\\]', '', name)
 
             # maximum size is 31 characters
             name = name[:31]
-            return super(PatchedWorkbook, self).add_sheet(name)
+            return super(PatchedWorkbook, self).add_sheet(name, cell_overwrite_ok=cell_overwrite_ok)
 
     xlwt.Workbook = PatchedWorkbook