diff --git a/addons/account/models/account_invoice.py b/addons/account/models/account_invoice.py index 6e5cd510913..c9a2f8ef50b 100644 --- a/addons/account/models/account_invoice.py +++ b/addons/account/models/account_invoice.py @@ -1383,7 +1383,7 @@ class AccountPaymentTerm(models.Model): class AccountPaymentTermLine(models.Model): _name = "account.payment.term.line" _description = "Payment Term Line" - _order = "sequence" + _order = "sequence, id" value = fields.Selection([ ('balance', 'Balance'), diff --git a/addons/event_sale/wizard/event_edit_registration.py b/addons/event_sale/wizard/event_edit_registration.py index bce6f86dde0..00070903383 100644 --- a/addons/event_sale/wizard/event_edit_registration.py +++ b/addons/event_sale/wizard/event_edit_registration.py @@ -53,6 +53,9 @@ class SaleOrderEventRegistration(models.TransientModel): registration_line.registration_id.write(values) else: self.env['event.registration'].create(values) + if self.env.context.get('active_model') == 'sale.order': + for order in self.env['sale.order'].browse(self.env.context.get('active_ids', [])): + order.order_line._update_registrations(confirm=True) return {'type': 'ir.actions.act_window_close'} diff --git a/addons/product/product.py b/addons/product/product.py index 4224e329f72..825ec1873a8 100644 --- a/addons/product/product.py +++ b/addons/product/product.py @@ -448,7 +448,7 @@ class product_template(osv.osv): names = [names] res = {id: {} for id in ids} templates = self.browse(cr, uid, ids, context=context) - unique_templates = [template.id for template in templates if template.product_variant_count == 1] + unique_templates = [template.id for template in templates if len(template.product_variant_ids) == 1] for template in templates: for name in names: res[template.id][name] = getattr(template.product_variant_ids[0], name) if template.id in unique_templates else 0.0 @@ -457,7 +457,7 @@ class product_template(osv.osv): def _set_product_template_field(self, cr, uid, product_tmpl_id, name, value, args, context=None): ''' Set the standard price modification on the variant if there is only one variant ''' template = self.pool['product.template'].browse(cr, uid, product_tmpl_id, context=context) - if template.product_variant_count == 1: + if len(template.product_variant_ids) == 1: variant = self.pool['product.product'].browse(cr, uid, template.product_variant_ids.id, context=context) return variant.write({name: value}) return {} diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index 490df521f77..8919d0bba6f 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -378,7 +378,8 @@ class PurchaseOrder(models.Model): 'date': self.date_order, 'origin': self.name, 'location_dest_id': self._get_destination_location(), - 'location_id': self.partner_id.property_stock_supplier.id + 'location_id': self.partner_id.property_stock_supplier.id, + 'company_id': self.company_id.id, } @api.multi diff --git a/addons/stock_dropshipping/stock_dropshipping.xml b/addons/stock_dropshipping/stock_dropshipping.xml index 7637e4fe260..7714e26fca3 100644 --- a/addons/stock_dropshipping/stock_dropshipping.xml +++ b/addons/stock_dropshipping/stock_dropshipping.xml @@ -1,16 +1,13 @@ - + - Dropship DS 5 - - Dropship @@ -19,8 +16,7 @@ - - + Drop Shipping diff --git a/addons/web/static/src/less/form_view.less b/addons/web/static/src/less/form_view.less index 97d8dcccccd..ef0bcb44be4 100644 --- a/addons/web/static/src/less/form_view.less +++ b/addons/web/static/src/less/form_view.less @@ -55,8 +55,9 @@ > .o_form_field { .o-flex(1, 0, 100px); + position: initial; max-width: 100%; - + > .o_form_input_dropdown > .o_form_input { border-style: none!important; } diff --git a/openerp/addons/base/module/module.py b/openerp/addons/base/module/module.py index d1adf9ad9a3..5be5fbf2cad 100644 --- a/openerp/addons/base/module/module.py +++ b/openerp/addons/base/module/module.py @@ -498,6 +498,7 @@ class module(osv.osv): known_dep_ids, exclude_states, context)) return list(known_dep_ids) + @api.returns('self') def upstream_dependencies(self, cr, uid, ids, known_dep_ids=None, exclude_states=['installed', 'uninstallable', 'to remove'], context=None): diff --git a/openerp/models.py b/openerp/models.py index 2b94a3bff5f..ca182955c09 100644 --- a/openerp/models.py +++ b/openerp/models.py @@ -1126,6 +1126,8 @@ class BaseModel(object): :param dict context: :returns: {ids: list(int)|False, messages: [Message]} """ + if context is None: + context = {} cr.execute('SAVEPOINT model_load') messages = [] @@ -1180,6 +1182,10 @@ class BaseModel(object): if any(message['type'] == 'error' for message in messages): cr.execute('ROLLBACK TO SAVEPOINT model_load') ids = False + + if ids and context.get('defer_parent_store_computation'): + self._parent_store_compute(cr) + return {'ids': ids, 'messages': messages} def _add_fake_fields(self, cr, uid, fields, context=None): diff --git a/openerp/osv/expression.py b/openerp/osv/expression.py index 13413f2fbf5..71d5c4303c8 100644 --- a/openerp/osv/expression.py +++ b/openerp/osv/expression.py @@ -711,9 +711,11 @@ class expression(object): """ Return a domain implementing the child_of operator for [(left,child_of,ids)], either as a range using the parent_left/right tree lookup fields (when available), or as an expanded [(left,in,child_ids)] """ + if context is None: + context = {} if not ids: return FALSE_DOMAIN - if left_model._parent_store and (not left_model.pool._init): + if left_model._parent_store and (not left_model.pool._init) and (not context.get('defer_parent_store_computation')): # TODO: Improve where joins are implemented for many with '.', replace by: # doms += ['&',(prefix+'.parent_left','<',o.parent_right),(prefix+'.parent_left','>=',o.parent_left)] doms = [] @@ -736,7 +738,9 @@ class expression(object): """ Return a domain implementing the parent_of operator for [(left,parent_of,ids)], either as a range using the parent_left/right tree lookup fields (when available), or as an expanded [(left,in,parent_ids)] """ - if left_model._parent_store and (not left_model.pool._init): + if context is None: + context = {} + if left_model._parent_store and (not left_model.pool._init) and (not context.get('defer_parent_store_computation')): doms = [] for node in left_model.browse(cr, uid, ids, context=context): if doms: @@ -828,7 +832,7 @@ class expression(object): elif left == 'id' and operator in HIERARCHY_FUNCS: ids2 = to_ids(right, model, context) - dom = HIERARCHY_FUNCS[operator](left, ids2, model) + dom = HIERARCHY_FUNCS[operator](left, ids2, model, context=context) for dom_leaf in reversed(dom): new_leaf = create_substitution_leaf(leaf, dom_leaf, model) push(new_leaf) @@ -949,9 +953,9 @@ class expression(object): elif column._type == 'one2many' and operator in HIERARCHY_FUNCS: ids2 = to_ids(right, comodel, context) if column._obj != model._name: - dom = HIERARCHY_FUNCS[operator](left, ids2, comodel, prefix=column._obj) + dom = HIERARCHY_FUNCS[operator](left, ids2, comodel, prefix=column._obj, context=context) else: - dom = HIERARCHY_FUNCS[operator]('id', ids2, model, parent=left) + dom = HIERARCHY_FUNCS[operator]('id', ids2, model, parent=left, context=context) for dom_leaf in reversed(dom): push(create_substitution_leaf(leaf, dom_leaf, model)) @@ -1007,7 +1011,7 @@ class expression(object): return select_from_where(cr, rel_id1, rel_table, rel_id2, ids, operator) ids2 = to_ids(right, comodel, context) - dom = HIERARCHY_FUNCS[operator]('id', ids2, comodel) + dom = HIERARCHY_FUNCS[operator]('id', ids2, comodel, context=context) ids2 = comodel.search(cr, uid, dom, context=context) push(create_substitution_leaf(leaf, ('id', 'in', _rec_convert(ids2)), model)) else: @@ -1046,9 +1050,9 @@ class expression(object): if operator in HIERARCHY_FUNCS: ids2 = to_ids(right, comodel, context) if column._obj != model._name: - dom = HIERARCHY_FUNCS[operator](left, ids2, comodel, prefix=column._obj) + dom = HIERARCHY_FUNCS[operator](left, ids2, comodel, prefix=column._obj, context=context) else: - dom = HIERARCHY_FUNCS[operator]('id', ids2, model, parent=left) + dom = HIERARCHY_FUNCS[operator]('id', ids2, model, parent=left, context=context) for dom_leaf in reversed(dom): push(create_substitution_leaf(leaf, dom_leaf, model)) else: