[MERGE] forward port branch 9.0 up to e2ede31

This commit is contained in:
Christophe Simonis
2016-10-10 11:39:52 +02:00
9 changed files with 31 additions and 19 deletions
+1 -1
View File
@@ -1383,7 +1383,7 @@ class AccountPaymentTerm(models.Model):
class AccountPaymentTermLine(models.Model): class AccountPaymentTermLine(models.Model):
_name = "account.payment.term.line" _name = "account.payment.term.line"
_description = "Payment Term Line" _description = "Payment Term Line"
_order = "sequence" _order = "sequence, id"
value = fields.Selection([ value = fields.Selection([
('balance', 'Balance'), ('balance', 'Balance'),
@@ -53,6 +53,9 @@ class SaleOrderEventRegistration(models.TransientModel):
registration_line.registration_id.write(values) registration_line.registration_id.write(values)
else: else:
self.env['event.registration'].create(values) 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'} return {'type': 'ir.actions.act_window_close'}
+2 -2
View File
@@ -448,7 +448,7 @@ class product_template(osv.osv):
names = [names] names = [names]
res = {id: {} for id in ids} res = {id: {} for id in ids}
templates = self.browse(cr, uid, ids, context=context) 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 template in templates:
for name in names: for name in names:
res[template.id][name] = getattr(template.product_variant_ids[0], name) if template.id in unique_templates else 0.0 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): 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 ''' ''' 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) 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) variant = self.pool['product.product'].browse(cr, uid, template.product_variant_ids.id, context=context)
return variant.write({name: value}) return variant.write({name: value})
return {} return {}
+2 -1
View File
@@ -378,7 +378,8 @@ class PurchaseOrder(models.Model):
'date': self.date_order, 'date': self.date_order,
'origin': self.name, 'origin': self.name,
'location_dest_id': self._get_destination_location(), '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 @api.multi
@@ -1,16 +1,13 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<openerp> <openerp>
<data> <data noupdate="1">
<!-- Sequence and picking type dropship--> <!-- Sequence and picking type dropship-->
<record id="seq_picking_type_dropship" model="ir.sequence"> <record id="seq_picking_type_dropship" model="ir.sequence">
<field name="name">Dropship</field> <field name="name">Dropship</field>
<field name="prefix">DS</field> <field name="prefix">DS</field>
<field name="padding">5</field> <field name="padding">5</field>
<field name="company_id" eval="False"/> <field name="company_id" eval="False"/>
</record> </record>
<record id="picking_type_dropship" model="stock.picking.type"> <record id="picking_type_dropship" model="stock.picking.type">
<field name="name">Dropship</field> <field name="name">Dropship</field>
<field name="sequence_id" ref="seq_picking_type_dropship"/> <field name="sequence_id" ref="seq_picking_type_dropship"/>
@@ -20,7 +17,6 @@
<field name="default_location_dest_id" ref="stock.stock_location_customers"/> <field name="default_location_dest_id" ref="stock.stock_location_customers"/>
</record> </record>
<!-- Drop Shipping--> <!-- Drop Shipping-->
<record id="route_drop_shipping" model='stock.location.route'> <record id="route_drop_shipping" model='stock.location.route'>
<field name="name">Drop Shipping</field> <field name="name">Drop Shipping</field>
@@ -55,6 +55,7 @@
> .o_form_field { > .o_form_field {
.o-flex(1, 0, 100px); .o-flex(1, 0, 100px);
position: initial;
max-width: 100%; max-width: 100%;
> .o_form_input_dropdown > .o_form_input { > .o_form_input_dropdown > .o_form_input {
+1
View File
@@ -498,6 +498,7 @@ class module(osv.osv):
known_dep_ids, exclude_states, context)) known_dep_ids, exclude_states, context))
return list(known_dep_ids) return list(known_dep_ids)
@api.returns('self')
def upstream_dependencies(self, cr, uid, ids, known_dep_ids=None, def upstream_dependencies(self, cr, uid, ids, known_dep_ids=None,
exclude_states=['installed', 'uninstallable', 'to remove'], exclude_states=['installed', 'uninstallable', 'to remove'],
context=None): context=None):
+6
View File
@@ -1126,6 +1126,8 @@ class BaseModel(object):
:param dict context: :param dict context:
:returns: {ids: list(int)|False, messages: [Message]} :returns: {ids: list(int)|False, messages: [Message]}
""" """
if context is None:
context = {}
cr.execute('SAVEPOINT model_load') cr.execute('SAVEPOINT model_load')
messages = [] messages = []
@@ -1180,6 +1182,10 @@ class BaseModel(object):
if any(message['type'] == 'error' for message in messages): if any(message['type'] == 'error' for message in messages):
cr.execute('ROLLBACK TO SAVEPOINT model_load') cr.execute('ROLLBACK TO SAVEPOINT model_load')
ids = False ids = False
if ids and context.get('defer_parent_store_computation'):
self._parent_store_compute(cr)
return {'ids': ids, 'messages': messages} return {'ids': ids, 'messages': messages}
def _add_fake_fields(self, cr, uid, fields, context=None): def _add_fake_fields(self, cr, uid, fields, context=None):
+12 -8
View File
@@ -711,9 +711,11 @@ class expression(object):
""" Return a domain implementing the child_of operator for [(left,child_of,ids)], """ 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 either as a range using the parent_left/right tree lookup fields
(when available), or as an expanded [(left,in,child_ids)] """ (when available), or as an expanded [(left,in,child_ids)] """
if context is None:
context = {}
if not ids: if not ids:
return FALSE_DOMAIN 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: # 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 += ['&',(prefix+'.parent_left','<',o.parent_right),(prefix+'.parent_left','>=',o.parent_left)]
doms = [] doms = []
@@ -736,7 +738,9 @@ class expression(object):
""" Return a domain implementing the parent_of operator for [(left,parent_of,ids)], """ 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 either as a range using the parent_left/right tree lookup fields
(when available), or as an expanded [(left,in,parent_ids)] """ (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 = [] doms = []
for node in left_model.browse(cr, uid, ids, context=context): for node in left_model.browse(cr, uid, ids, context=context):
if doms: if doms:
@@ -828,7 +832,7 @@ class expression(object):
elif left == 'id' and operator in HIERARCHY_FUNCS: elif left == 'id' and operator in HIERARCHY_FUNCS:
ids2 = to_ids(right, model, context) 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): for dom_leaf in reversed(dom):
new_leaf = create_substitution_leaf(leaf, dom_leaf, model) new_leaf = create_substitution_leaf(leaf, dom_leaf, model)
push(new_leaf) push(new_leaf)
@@ -949,9 +953,9 @@ class expression(object):
elif column._type == 'one2many' and operator in HIERARCHY_FUNCS: elif column._type == 'one2many' and operator in HIERARCHY_FUNCS:
ids2 = to_ids(right, comodel, context) ids2 = to_ids(right, comodel, context)
if column._obj != model._name: 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: 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): for dom_leaf in reversed(dom):
push(create_substitution_leaf(leaf, dom_leaf, model)) 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) return select_from_where(cr, rel_id1, rel_table, rel_id2, ids, operator)
ids2 = to_ids(right, comodel, context) 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) ids2 = comodel.search(cr, uid, dom, context=context)
push(create_substitution_leaf(leaf, ('id', 'in', _rec_convert(ids2)), model)) push(create_substitution_leaf(leaf, ('id', 'in', _rec_convert(ids2)), model))
else: else:
@@ -1046,9 +1050,9 @@ class expression(object):
if operator in HIERARCHY_FUNCS: if operator in HIERARCHY_FUNCS:
ids2 = to_ids(right, comodel, context) ids2 = to_ids(right, comodel, context)
if column._obj != model._name: 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: 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): for dom_leaf in reversed(dom):
push(create_substitution_leaf(leaf, dom_leaf, model)) push(create_substitution_leaf(leaf, dom_leaf, model))
else: else: