diff --git a/addons/analytic_user_function/i18n/analytic_user_function.pot b/addons/analytic_user_function/i18n/analytic_user_function.pot
index 6d9501ab66b78..e80f971a3b6d2 100644
--- a/addons/analytic_user_function/i18n/analytic_user_function.pot
+++ b/addons/analytic_user_function/i18n/analytic_user_function.pot
@@ -130,9 +130,3 @@ msgstr ""
#: field:account.analytic.account,user_product_ids:0
msgid "Users/Products Rel."
msgstr ""
-
-#. module: analytic_user_function
-#: view:hr_timesheet_sheet.sheet:analytic_user_function.hr_timesheet_sheet_form_inherit
-msgid "on_change_account_id(account_id, user_id, unit_amount)"
-msgstr ""
-
diff --git a/addons/delivery/sale.py b/addons/delivery/sale.py
index a31b51ce000dc..83744d56e0a4c 100644
--- a/addons/delivery/sale.py
+++ b/addons/delivery/sale.py
@@ -66,6 +66,7 @@ def delivery_set(self, cr, uid, ids, context=None):
acc_fp_obj = self.pool.get('account.fiscal.position')
self._delivery_unset(cr, uid, ids, context=context)
currency_obj = self.pool.get('res.currency')
+ line_ids = []
for order in self.browse(cr, uid, ids, context=context):
grid_id = carrier_obj.grid_get(cr, uid, [order.carrier_id.id], order.partner_shipping_id.id)
if not grid_id:
@@ -84,7 +85,7 @@ def delivery_set(self, cr, uid, ids, context=None):
price_unit = currency_obj.compute(cr, uid, order.company_id.currency_id.id, order.pricelist_id.currency_id.id,
price_unit, context=dict(context or {}, date=order.date_order))
#create the sale order line
- line_obj.create(cr, uid, {
+ line_id = line_obj.create(cr, uid, {
'order_id': order.id,
'name': grid.carrier_id.name,
'product_uom_qty': 1,
@@ -94,3 +95,5 @@ def delivery_set(self, cr, uid, ids, context=None):
'tax_id': [(6, 0, taxes_ids)],
'is_delivery': True
}, context=context)
+ line_ids.append(line_id)
+ return line_ids
diff --git a/addons/payment_ogone/models/ogone.py b/addons/payment_ogone/models/ogone.py
index 3903a752c4351..e3e33c69db93d 100644
--- a/addons/payment_ogone/models/ogone.py
+++ b/addons/payment_ogone/models/ogone.py
@@ -5,6 +5,7 @@
from lxml import etree, objectify
from pprint import pformat
import time
+from datetime import datetime
from urllib import urlencode
import urllib2
import urlparse
@@ -13,7 +14,7 @@
from openerp.addons.payment_ogone.controllers.main import OgoneController
from openerp.addons.payment_ogone.data import ogone
from openerp.osv import osv, fields
-from openerp.tools import float_round
+from openerp.tools import float_round, DEFAULT_SERVER_DATE_FORMAT
from openerp.tools.float_utils import float_compare
_logger = logging.getLogger(__name__)
@@ -244,7 +245,7 @@ def _ogone_form_validate(self, cr, uid, tx, data, context=None):
if status in self._ogone_valid_tx_status:
tx.write({
'state': 'done',
- 'date_validate': data['TRXDATE'],
+ 'date_validate': datetime.strptime(data['TRXDATE'],'%m/%d/%y').strftime(DEFAULT_SERVER_DATE_FORMAT),
'acquirer_reference': data['PAYID'],
})
return True
diff --git a/addons/point_of_sale/point_of_sale.py b/addons/point_of_sale/point_of_sale.py
index 3fbd3257b0fa5..8f84809164f62 100644
--- a/addons/point_of_sale/point_of_sale.py
+++ b/addons/point_of_sale/point_of_sale.py
@@ -689,7 +689,8 @@ def _amount_all(self, cr, uid, ids, name, args, context=None):
val1 += self._amount_line_tax(cr, uid, line, context=context)
val2 += line.price_subtotal
res[order.id]['amount_tax'] = cur_obj.round(cr, uid, cur, val1)
- res[order.id]['amount_total'] = cur_obj.round(cr, uid, cur, val1+val2)
+ amount_untaxed = cur_obj.round(cr, uid, cur, val2)
+ res[order.id]['amount_total'] = res[order.id]['amount_tax'] + amount_untaxed
return res
_columns = {
diff --git a/addons/product/product.py b/addons/product/product.py
index 30ee7a9a9b7a7..44f6dcf81a306 100644
--- a/addons/product/product.py
+++ b/addons/product/product.py
@@ -946,12 +946,12 @@ def _get_image_variant(self, cr, uid, ids, name, args, context=None):
def _set_image_variant(self, cr, uid, id, name, value, args, context=None):
image = tools.image_resize_image_big(value)
- res = self.write(cr, uid, [id], {'image_variant': image}, context=context)
+
product = self.browse(cr, uid, id, context=context)
- if not product.product_tmpl_id.image:
- product.write({'image_variant': None})
- product.product_tmpl_id.write({'image': image})
- return res
+ if product.product_tmpl_id.image:
+ product.image_variant = image
+ else:
+ product.product_tmpl_id.image = image
def _get_price_extra(self, cr, uid, ids, name, args, context=None):
result = dict.fromkeys(ids, False)
diff --git a/addons/stock/res_config.py b/addons/stock/res_config.py
index b0c9088e05105..852550976da01 100644
--- a/addons/stock/res_config.py
+++ b/addons/stock/res_config.py
@@ -82,10 +82,10 @@ class stock_config_settings(osv.osv_memory):
'group_uom': fields.boolean("Manage different units of measure for products",
implied_group='product.group_uom',
help="""Allows you to select and maintain different units of measure for products."""),
- 'group_uos': fields.boolean("Invoice products in a different unit of measure than the sales order",
+ 'group_uos': fields.boolean("Store products in a different unit of measure than the sales order",
implied_group='product.group_uos',
- help='Allows you to sell units of a product, but invoice based on a different unit of measure.\n'
- 'For instance, you can sell pieces of meat that you invoice based on their weight.'),
+ help='Allows you to store units of a product, but sell and invoice based on a different unit of measure.\n'
+ 'For instance, you can store pieces of meat that you sell and invoice based on their weight.'),
'group_stock_packaging': fields.boolean("Allow to define several packaging methods on products",
implied_group='product.group_stock_packaging',
help="""Allows you to create and manage your packaging dimensions and types you want to be maintained in your system."""),
diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js
index a926ad1d8e50f..a66ed59801745 100644
--- a/addons/web/static/src/js/view_form.js
+++ b/addons/web/static/src/js/view_form.js
@@ -4391,12 +4391,12 @@ instance.web.form.One2ManyViewManager = instance.web.ViewManager.extend({
});
instance.web.form.One2ManyDataSet = instance.web.BufferedDataSet.extend({
- get_context: function() {
+ get_context: function(extra_context) {
this.context = this.o2m.build_context();
- var self = this;
- _.each(arguments, function(context) {
- self.context.add(context);
- });
+ if(extra_context)
+ {
+ this.context.add(extra_context);
+ }
return this.context;
}
});
diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js
index ee934d6a2c94c..b08f5ca3bc9d7 100644
--- a/addons/web/static/src/js/view_list.js
+++ b/addons/web/static/src/js/view_list.js
@@ -2305,7 +2305,7 @@ instance.web.list.Binary = instance.web.list.Column.extend({
* @private
*/
_format: function (row_data, options) {
- var text = _t("Download");
+ var text = _t("Download"), filename=_t('Binary file');
var value = row_data[this.id].value;
if (!value) {
return options.value_if_empty || '';
@@ -2323,11 +2323,13 @@ instance.web.list.Binary = instance.web.list.Column.extend({
if (this.filename && row_data[this.filename]) {
text = _.str.sprintf(_t("Download \"%s\""), instance.web.format_value(
row_data[this.filename].value, {type: 'char'}));
+ filename = row_data[this.filename].value;
}
- return _.template('<%-text%> (<%-size%>)', {
+ return _.template('<%-text%> (<%-size%>)', {
text: text,
href: download_url,
size: instance.web.binary_to_binsize(value),
+ download: filename,
});
}
});
diff --git a/doc/cla/corporate/meta-it.md b/doc/cla/corporate/meta-it.md
new file mode 100644
index 0000000000000..01b33f35c8b41
--- /dev/null
+++ b/doc/cla/corporate/meta-it.md
@@ -0,0 +1,15 @@
+France, 2015 June 25
+
+META-IT agrees to the terms of the Odoo Corporate Contributor License
+Agreement v1.0.
+
+I declare that I am authorized and able to make this agreement and sign this
+declaration.
+
+Signed,
+
+Robin Lucbenet robin@meta-it.fr https://github.com/n1b0r
+
+List of contributors:
+
+Guillaume Masson guillaume.masson@meta-it.fr
diff --git a/doc/cla/individual/nicobustillos.md b/doc/cla/individual/nicobustillos.md
index 5e460b51c51ab..aac29668a5d24 100644
--- a/doc/cla/individual/nicobustillos.md
+++ b/doc/cla/individual/nicobustillos.md
@@ -8,4 +8,4 @@ declaration.
Signed,
-Nicolas Bustillos nicolas.bustillos@poiesisconsulting.com https://github.com/nicobustillos
+Nicolas Bustillos nicobustillos@users.noreply.github.com https://github.com/nicobustillos
diff --git a/doc/cla/individual/npiganeau.md b/doc/cla/individual/npiganeau.md
index 4cd08fcb99c42..a01f87403d2a1 100644
--- a/doc/cla/individual/npiganeau.md
+++ b/doc/cla/individual/npiganeau.md
@@ -8,4 +8,4 @@ declaration.
Signed,
-Nicolas Piganeau nicolas.piganeau@ndp-systemes.fr https://github.com/npiganeau
\ No newline at end of file
+Nicolas Piganeau npi@m4x.org https://github.com/npiganeau
\ No newline at end of file
diff --git a/openerp/addons/base/ir/ir_ui_view.py b/openerp/addons/base/ir/ir_ui_view.py
index ea7b11c426d05..341f1ad71192a 100644
--- a/openerp/addons/base/ir/ir_ui_view.py
+++ b/openerp/addons/base/ir/ir_ui_view.py
@@ -203,7 +203,7 @@ def _check_xml(self, cr, uid, ids, context=None):
# Sanity checks: the view should not break anything upon rendering!
# Any exception raised below will cause a transaction rollback.
for view in self.browse(cr, uid, ids, context):
- view_def = self.read_combined(cr, uid, view.id, None, context=context)
+ view_def = self.read_combined(cr, uid, view.id, ['arch'], context=context)
view_arch_utf8 = view_def['arch']
if view.type != 'qweb':
view_doc = etree.fromstring(view_arch_utf8)
@@ -527,7 +527,7 @@ def read_combined(self, cr, uid, view_id, fields=None, context=None):
# arch and model fields are always returned
if fields:
- fields = list(set(fields) | set(['arch', 'model']))
+ fields = list({'arch', 'model'}.union(fields))
# read the view arch
[view] = self.read(cr, uid, [root_id], fields=fields, context=context)
diff --git a/openerp/addons/base/res/res_country_data.xml b/openerp/addons/base/res/res_country_data.xml
index affa93f5329fc..c9ef761d28222 100644
--- a/openerp/addons/base/res/res_country_data.xml
+++ b/openerp/addons/base/res/res_country_data.xml
@@ -428,6 +428,7 @@
Finland
fi
+
diff --git a/openerp/tools/image.py b/openerp/tools/image.py
index 6a7a46c7d84f3..e53ee879f58bb 100644
--- a/openerp/tools/image.py
+++ b/openerp/tools/image.py
@@ -129,9 +129,14 @@ def image_save_for_web(image, fp=None, format=None):
opt = dict(format=image.format or format)
if image.format == 'PNG':
opt.update(optimize=True)
+ alpha = False
+ if image.mode in ('RGBA', 'LA') or (image.mode == 'P' and 'transparency' in image.info):
+ alpha = image.convert('RGBA').split()[-1]
if image.mode != 'P':
# Floyd Steinberg dithering by default
image = image.convert('RGBA').convert('P', palette=Image.WEB, colors=256)
+ if alpha:
+ image.putalpha(alpha)
elif image.format == 'JPEG':
opt.update(optimize=True, quality=80)
if fp: