diff --git a/addons/account/account_move_line.py b/addons/account/account_move_line.py index af6ad48a747..9b2f4829786 100644 --- a/addons/account/account_move_line.py +++ b/addons/account/account_move_line.py @@ -574,7 +574,8 @@ class account_move_line(osv.osv): res = super(account_move_line, self)._auto_init(cr, context=context) cr.execute('SELECT indexname FROM pg_indexes WHERE indexname = \'account_move_line_journal_id_period_id_index\'') if not cr.fetchone(): - cr.execute('CREATE INDEX account_move_line_journal_id_period_id_index ON account_move_line (journal_id, period_id)') + cr.execute('CREATE INDEX account_move_line_journal_id_period_id_index ' + 'ON account_move_line (journal_id, period_id, state, create_uid, id DESC)') cr.execute('SELECT indexname FROM pg_indexes WHERE indexname = %s', ('account_move_line_date_id_index',)) if not cr.fetchone(): cr.execute('CREATE INDEX account_move_line_date_id_index ON account_move_line (date DESC, id desc)') diff --git a/addons/account_asset/account_asset_invoice.py b/addons/account_asset/account_asset_invoice.py index d5b1c298c0b..0d1903cfbc9 100644 --- a/addons/account_asset/account_asset_invoice.py +++ b/addons/account_asset/account_asset_invoice.py @@ -24,8 +24,8 @@ from openerp.osv import fields, osv class account_invoice(osv.osv): _inherit = 'account.invoice' - def action_number(self, cr, uid, ids, *args): - result = super(account_invoice, self).action_number(cr, uid, ids, *args) + def action_number(self, cr, uid, ids, *args, **kargs): + result = super(account_invoice, self).action_number(cr, uid, ids, *args, **kargs) for inv in self.browse(cr, uid, ids): self.pool.get('account.invoice.line').asset_create(cr, uid, inv.invoice_line) return result diff --git a/addons/auth_oauth_signup/res_users.py b/addons/auth_oauth_signup/res_users.py index a06968fa46f..3f011aa14db 100644 --- a/addons/auth_oauth_signup/res_users.py +++ b/addons/auth_oauth_signup/res_users.py @@ -31,6 +31,20 @@ _logger = logging.getLogger(__name__) class res_users(osv.Model): _inherit = 'res.users' + def _generate_signup_values(self, cr, uid, provider, validation, params, context=None): + oauth_uid = validation['user_id'] + email = validation.get('email', 'provider_%s_user_%s' % (provider, oauth_uid)) + name = validation.get('name', email) + return { + 'name': name, + 'login': email, + 'email': email, + 'oauth_provider_id': provider, + 'oauth_uid': oauth_uid, + 'oauth_access_token': params['access_token'], + 'active': True, + } + def _auth_oauth_signin(self, cr, uid, provider, validation, params, context=None): # overridden to use signup method if regular oauth signin fails try: @@ -41,18 +55,7 @@ class res_users(osv.Model): return None state = simplejson.loads(params['state']) token = state.get('t') - oauth_uid = validation['user_id'] - email = validation.get('email', 'provider_%s_user_%s' % (provider, oauth_uid)) - name = validation.get('name', email) - values = { - 'name': name, - 'login': email, - 'email': email, - 'oauth_provider_id': provider, - 'oauth_uid': oauth_uid, - 'oauth_access_token': params['access_token'], - 'active': True, - } + values = self._generate_signup_values(cr, uid, provider, validation, params, context=context) try: _, login, _ = self.signup(cr, uid, values, token, context=context) except SignupError: diff --git a/addons/l10n_ch/sterchi_chart/vat2011.xml b/addons/l10n_ch/sterchi_chart/vat2011.xml index c6732a00ed4..29e84aa1c1f 100644 --- a/addons/l10n_ch/sterchi_chart/vat2011.xml +++ b/addons/l10n_ch/sterchi_chart/vat2011.xml @@ -148,8 +148,8 @@ - - + + sale @@ -169,8 +169,8 @@ purchase - - + + TVA 2.5% sur invest. et autres ch. (TR) @@ -210,8 +210,8 @@ sale - - + + TVA 3.8% sur achat B&S (TS) @@ -230,8 +230,8 @@ purchase - - + + TVA 3.8% sur invest. et autres ch. (TS) @@ -271,8 +271,8 @@ sale - - + + TVA 8.0% sur achat B&S (TN) @@ -292,8 +292,8 @@ purchase - - + + TVA 8.0% sur invest. et autres ch. (TN) @@ -330,8 +330,8 @@ sale - - + + TVA 0% exclue diff --git a/addons/mrp/mrp.py b/addons/mrp/mrp.py index 47b5925df18..687a6f751d0 100644 --- a/addons/mrp/mrp.py +++ b/addons/mrp/mrp.py @@ -377,6 +377,40 @@ class mrp_bom(osv.osv): res = self._bom_explode(cr, uid, bom2, factor, properties, addthis=True, level=level+10) result = result + res[0] result2 = result2 + res[1] + + # We merge the results for the same product. The reason is that action_produce does not + # support the case where the same product appears on multiple lines. To avoid major changes + # in a stable version, we do this simple hack at this point. + # Only for v7.0, do not use in v8.0 + result_dict = {} + result_dup = False + for product_detail in result: + key = ( + product_detail['name'], + product_detail['product_id'], + product_detail['product_uom'], + product_detail['product_uos_qty'], + product_detail['product_uos'] + ) + if key in result_dict: + result_dict[key] += product_detail['product_qty'] + result_dup = True + else: + result_dict[key] = product_detail['product_qty'] + + if result_dup: + result = [] + for key in result_dict.keys(): + result.append( + { + 'name': key[0], + 'product_id': key[1], + 'product_qty': result_dict[key], + 'product_uom': key[2], + 'product_uos_qty': key[3], + 'product_uos': key[4], + }) + return result, result2 def copy_data(self, cr, uid, id, default=None, context=None): diff --git a/openerp/tools/misc.py b/openerp/tools/misc.py index c465fb9a37f..9569403f2e3 100644 --- a/openerp/tools/misc.py +++ b/openerp/tools/misc.py @@ -465,6 +465,7 @@ ALL_LANGUAGES = { 'id_ID': u'Indonesian / Bahasa Indonesia', 'it_IT': u'Italian / Italiano', 'ja_JP': u'Japanese / 日本語', + 'ka_GE': u'Georgian / ქართული ენა', 'ko_KP': u'Korean (KP) / 한국어 (KP)', 'ko_KR': u'Korean (KR) / 한국어 (KR)', 'lo_LA': u'Lao / ພາສາລາວ',