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: