[MERGE] forward port of branch 7.0 up to a87d60f
This commit is contained in:
commit
550910a8f6
|
@ -858,18 +858,20 @@ result = rules.NET > categories.NET * 0.10''',
|
||||||
rule = self.browse(cr, uid, rule_id, context=context)
|
rule = self.browse(cr, uid, rule_id, context=context)
|
||||||
if rule.amount_select == 'fix':
|
if rule.amount_select == 'fix':
|
||||||
try:
|
try:
|
||||||
return rule.amount_fix, eval(rule.quantity, localdict), 100.0
|
return rule.amount_fix, float(eval(rule.quantity, localdict)), 100.0
|
||||||
except:
|
except:
|
||||||
raise osv.except_osv(_('Error!'), _('Wrong quantity defined for salary rule %s (%s).')% (rule.name, rule.code))
|
raise osv.except_osv(_('Error!'), _('Wrong quantity defined for salary rule %s (%s).')% (rule.name, rule.code))
|
||||||
elif rule.amount_select == 'percentage':
|
elif rule.amount_select == 'percentage':
|
||||||
try:
|
try:
|
||||||
return eval(rule.amount_percentage_base, localdict), eval(rule.quantity, localdict), rule.amount_percentage
|
return (float(eval(rule.amount_percentage_base, localdict)),
|
||||||
|
float(eval(rule.quantity, localdict)),
|
||||||
|
rule.amount_percentage)
|
||||||
except:
|
except:
|
||||||
raise osv.except_osv(_('Error!'), _('Wrong percentage base or quantity defined for salary rule %s (%s).')% (rule.name, rule.code))
|
raise osv.except_osv(_('Error!'), _('Wrong percentage base or quantity defined for salary rule %s (%s).')% (rule.name, rule.code))
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
eval(rule.amount_python_compute, localdict, mode='exec', nocopy=True)
|
eval(rule.amount_python_compute, localdict, mode='exec', nocopy=True)
|
||||||
return localdict['result'], 'result_qty' in localdict and localdict['result_qty'] or 1.0, 'result_rate' in localdict and localdict['result_rate'] or 100.0
|
return float(localdict['result']), 'result_qty' in localdict and localdict['result_qty'] or 1.0, 'result_rate' in localdict and localdict['result_rate'] or 100.0
|
||||||
except:
|
except:
|
||||||
raise osv.except_osv(_('Error!'), _('Wrong python code defined for salary rule %s (%s).')% (rule.name, rule.code))
|
raise osv.except_osv(_('Error!'), _('Wrong python code defined for salary rule %s (%s).')% (rule.name, rule.code))
|
||||||
|
|
||||||
|
|
|
@ -1013,10 +1013,12 @@ class purchase_order_line(osv.osv):
|
||||||
context_partner.update( {'lang': lang, 'partner_id': partner_id} )
|
context_partner.update( {'lang': lang, 'partner_id': partner_id} )
|
||||||
product = product_product.browse(cr, uid, product_id, context=context_partner)
|
product = product_product.browse(cr, uid, product_id, context=context_partner)
|
||||||
#call name_get() with partner in the context to eventually match name and description in the seller_ids field
|
#call name_get() with partner in the context to eventually match name and description in the seller_ids field
|
||||||
dummy, name = product_product.name_get(cr, uid, product_id, context=context_partner)[0]
|
if not name or not uom_id:
|
||||||
if product.description_purchase:
|
# The 'or not uom_id' part of the above condition can be removed in master. See commit message of the rev. introducing this line.
|
||||||
name += '\n' + product.description_purchase
|
dummy, name = product_product.name_get(cr, uid, product_id, context=context_partner)[0]
|
||||||
res['value'].update({'name': name})
|
if product.description_purchase:
|
||||||
|
name += '\n' + product.description_purchase
|
||||||
|
res['value'].update({'name': name})
|
||||||
|
|
||||||
# - set a domain on product_uom
|
# - set a domain on product_uom
|
||||||
res['domain'] = {'product_uom': [('category_id','=',product.uom_id.category_id.id)]}
|
res['domain'] = {'product_uom': [('category_id','=',product.uom_id.category_id.id)]}
|
||||||
|
|
|
@ -208,7 +208,7 @@
|
||||||
<page string="Purchase Order">
|
<page string="Purchase Order">
|
||||||
<field name="order_line">
|
<field name="order_line">
|
||||||
<tree string="Purchase Order Lines" editable="bottom">
|
<tree string="Purchase Order Lines" editable="bottom">
|
||||||
<field name="product_id" on_change="onchange_product_id(parent.pricelist_id,product_id,0,False,parent.partner_id, parent.date_order,parent.fiscal_position,date_planned,name,price_unit,context)"/>
|
<field name="product_id" on_change="onchange_product_id(parent.pricelist_id,product_id,0,False,parent.partner_id, parent.date_order,parent.fiscal_position,date_planned,False,price_unit,context)"/>
|
||||||
<field name="name"/>
|
<field name="name"/>
|
||||||
<field name="date_planned"/>
|
<field name="date_planned"/>
|
||||||
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
|
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
|
||||||
|
@ -387,7 +387,7 @@
|
||||||
<sheet>
|
<sheet>
|
||||||
<group>
|
<group>
|
||||||
<group>
|
<group>
|
||||||
<field name="product_id" on_change="onchange_product_id(parent.pricelist_id,product_id,0,False,parent.partner_id, parent.date_order,parent.fiscal_position,date_planned,name,price_unit,context)"/>
|
<field name="product_id" on_change="onchange_product_id(parent.pricelist_id,product_id,0,False,parent.partner_id, parent.date_order,parent.fiscal_position,date_planned,False,price_unit,context)"/>
|
||||||
<label for="product_qty"/>
|
<label for="product_qty"/>
|
||||||
<div>
|
<div>
|
||||||
<field name="product_qty" on_change="onchange_product_id(parent.pricelist_id,product_id,product_qty,product_uom,parent.partner_id,parent.date_order,parent.fiscal_position,date_planned,name,price_unit,context)" class="oe_inline"/>
|
<field name="product_qty" on_change="onchange_product_id(parent.pricelist_id,product_id,product_qty,product_uom,parent.partner_id,parent.date_order,parent.fiscal_position,date_planned,name,price_unit,context)" class="oe_inline"/>
|
||||||
|
|
|
@ -297,10 +297,10 @@ class purchase_order_line(osv.osv):
|
||||||
_inherit = 'purchase.order.line'
|
_inherit = 'purchase.order.line'
|
||||||
def onchange_product_id(self,cr, uid, ids, pricelist, product, qty, uom,
|
def onchange_product_id(self,cr, uid, ids, pricelist, product, qty, uom,
|
||||||
partner_id, date_order=False, fiscal_position_id=False, date_planned=False,
|
partner_id, date_order=False, fiscal_position_id=False, date_planned=False,
|
||||||
name=False, price_unit=False, notes=False, context=None):
|
name=False, price_unit=False, context=None):
|
||||||
warning = {}
|
warning = {}
|
||||||
if not product:
|
if not product:
|
||||||
return {'value': {'price_unit': price_unit or 0.0, 'name': name or '', 'notes': notes or '', 'product_uom' : uom or False}, 'domain':{'product_uom':[]}}
|
return {'value': {'price_unit': price_unit or 0.0, 'name': name or '', 'product_uom' : uom or False}, 'domain':{'product_uom':[]}}
|
||||||
product_obj = self.pool.get('product.product')
|
product_obj = self.pool.get('product.product')
|
||||||
product_info = product_obj.browse(cr, uid, product)
|
product_info = product_obj.browse(cr, uid, product)
|
||||||
title = False
|
title = False
|
||||||
|
@ -315,7 +315,7 @@ class purchase_order_line(osv.osv):
|
||||||
return {'value': {'product_id': False}, 'warning': warning}
|
return {'value': {'product_id': False}, 'warning': warning}
|
||||||
|
|
||||||
result = super(purchase_order_line, self).onchange_product_id(cr, uid, ids, pricelist, product, qty, uom,
|
result = super(purchase_order_line, self).onchange_product_id(cr, uid, ids, pricelist, product, qty, uom,
|
||||||
partner_id, date_order, fiscal_position_id)
|
partner_id, date_order, fiscal_position_id, date_planned, name, price_unit, context=context)
|
||||||
|
|
||||||
if result.get('warning',False):
|
if result.get('warning',False):
|
||||||
warning['title'] = title and title +' & '+result['warning']['title'] or result['warning']['title']
|
warning['title'] = title and title +' & '+result['warning']['title'] or result['warning']['title']
|
||||||
|
|
|
@ -226,6 +226,7 @@
|
||||||
var item = false;
|
var item = false;
|
||||||
if (record) {
|
if (record) {
|
||||||
item = record.attributes;
|
item = record.attributes;
|
||||||
|
this.dataset.select_id(record.get('id'));
|
||||||
} else {
|
} else {
|
||||||
record = this.make_empty_record(false);
|
record = this.make_empty_record(false);
|
||||||
this.records.add(record, {
|
this.records.add(record, {
|
||||||
|
|
|
@ -66,6 +66,10 @@ class format_address(object):
|
||||||
doc = etree.fromstring(arch)
|
doc = etree.fromstring(arch)
|
||||||
for node in doc.xpath("//div[@class='address_format']"):
|
for node in doc.xpath("//div[@class='address_format']"):
|
||||||
tree = etree.fromstring(v)
|
tree = etree.fromstring(v)
|
||||||
|
for child in node.xpath("//field"):
|
||||||
|
if child.attrib.get('modifiers'):
|
||||||
|
for field in tree.xpath("//field[@name='%s']" % child.attrib.get('name')):
|
||||||
|
field.attrib['modifiers'] = child.attrib.get('modifiers')
|
||||||
node.getparent().replace(node, tree)
|
node.getparent().replace(node, tree)
|
||||||
arch = etree.tostring(doc)
|
arch = etree.tostring(doc)
|
||||||
break
|
break
|
||||||
|
|
Loading…
Reference in New Issue