diff --git a/addons/account_payment/account_payment_view.xml b/addons/account_payment/account_payment_view.xml
index 032ef38411a..892c8636caf 100644
--- a/addons/account_payment/account_payment_view.xml
+++ b/addons/account_payment/account_payment_view.xml
@@ -101,16 +101,13 @@
form
-
+
-
-
-
-
-
+
+
@@ -193,9 +190,6 @@
-
-
-
diff --git a/addons/account_sequence/i18n/sv.po b/addons/account_sequence/i18n/sv.po
new file mode 100644
index 00000000000..cc0491fca54
--- /dev/null
+++ b/addons/account_sequence/i18n/sv.po
@@ -0,0 +1,220 @@
+# Swedish translation for openobject-addons
+# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2012-02-08 00:35+0000\n"
+"PO-Revision-Date: 2012-06-04 17:24+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Swedish \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-06-05 04:54+0000\n"
+"X-Generator: Launchpad (build 15353)\n"
+
+#. module: account_sequence
+#: view:account.sequence.installer:0
+#: model:ir.actions.act_window,name:account_sequence.action_account_seq_installer
+msgid "Account Sequence Application Configuration"
+msgstr ""
+
+#. module: account_sequence
+#: constraint:account.move:0
+msgid ""
+"You can not create more than one move per period on centralized journal"
+msgstr ""
+
+#. module: account_sequence
+#: constraint:account.move.line:0
+msgid "Company must be the same for its related account and period."
+msgstr "Bolaget måste överenstämma för alla konton och perioder."
+
+#. module: account_sequence
+#: help:account.move,internal_sequence_number:0
+#: help:account.move.line,internal_sequence_number:0
+msgid "Internal Sequence Number"
+msgstr ""
+
+#. module: account_sequence
+#: help:account.sequence.installer,number_next:0
+msgid "Next number of this sequence"
+msgstr "Nästa nummer i sekvensen"
+
+#. module: account_sequence
+#: field:account.sequence.installer,number_next:0
+msgid "Next Number"
+msgstr "Nästa nummer"
+
+#. module: account_sequence
+#: field:account.sequence.installer,number_increment:0
+msgid "Increment Number"
+msgstr "Räkna upp nummer"
+
+#. module: account_sequence
+#: help:account.sequence.installer,number_increment:0
+msgid "The next number of the sequence will be incremented by this number"
+msgstr "Nästa nummer i sekvensen kommer att beräknas utgående från detta"
+
+#. module: account_sequence
+#: view:account.sequence.installer:0
+msgid "Configure Your Account Sequence Application"
+msgstr ""
+
+#. module: account_sequence
+#: view:account.sequence.installer:0
+msgid "Configure"
+msgstr "Inställningar"
+
+#. module: account_sequence
+#: help:account.sequence.installer,suffix:0
+msgid "Suffix value of the record for the sequence"
+msgstr "Suffixvärde för löpnumret"
+
+#. module: account_sequence
+#: field:account.sequence.installer,company_id:0
+msgid "Company"
+msgstr "Bolag"
+
+#. module: account_sequence
+#: help:account.journal,internal_sequence_id:0
+msgid ""
+"This sequence will be used to maintain the internal number for the journal "
+"entries related to this journal."
+msgstr ""
+
+#. module: account_sequence
+#: field:account.sequence.installer,padding:0
+msgid "Number padding"
+msgstr "Numerisk utfyllnad"
+
+#. module: account_sequence
+#: model:ir.model,name:account_sequence.model_account_move_line
+msgid "Journal Items"
+msgstr "Transaktioner"
+
+#. module: account_sequence
+#: field:account.move,internal_sequence_number:0
+#: field:account.move.line,internal_sequence_number:0
+msgid "Internal Number"
+msgstr ""
+
+#. module: account_sequence
+#: constraint:account.move.line:0
+msgid "You can not create journal items on an account of type view."
+msgstr "Du kan inte skapa transaktioner på rubrikkonton."
+
+#. module: account_sequence
+#: help:account.sequence.installer,padding:0
+msgid ""
+"OpenERP will automatically adds some '0' on the left of the 'Next Number' to "
+"get the required padding size."
+msgstr ""
+"OpenERP lägger automatiskt till några '0' till vänster på 'Nästa nummer' för "
+"att få rätt storlek."
+
+#. module: account_sequence
+#: field:account.sequence.installer,name:0
+msgid "Name"
+msgstr "Namn"
+
+#. module: account_sequence
+#: constraint:account.move.line:0
+msgid "You can not create journal items on closed account."
+msgstr "Du kan inte skapa transaktioner på ett stängt konto."
+
+#. module: account_sequence
+#: constraint:account.journal:0
+msgid ""
+"Configuration error! The currency chosen should be shared by the default "
+"accounts too."
+msgstr ""
+"Konfigurationsfel! Vald valuta bör delas mellan standard-konton också."
+
+#. module: account_sequence
+#: sql_constraint:account.move.line:0
+msgid "Wrong credit or debit value in accounting entry !"
+msgstr "Fel kredit- eller debetvärde i bokföringstransaktionerna."
+
+#. module: account_sequence
+#: field:account.journal,internal_sequence_id:0
+msgid "Internal Sequence"
+msgstr ""
+
+#. module: account_sequence
+#: help:account.sequence.installer,prefix:0
+msgid "Prefix value of the record for the sequence"
+msgstr "Prefix för löpnumret"
+
+#. module: account_sequence
+#: model:ir.model,name:account_sequence.model_account_move
+msgid "Account Entry"
+msgstr "Kontotransaktion"
+
+#. module: account_sequence
+#: field:account.sequence.installer,suffix:0
+msgid "Suffix"
+msgstr "Suffix"
+
+#. module: account_sequence
+#: field:account.sequence.installer,config_logo:0
+msgid "Image"
+msgstr "Bild"
+
+#. module: account_sequence
+#: view:account.sequence.installer:0
+msgid "title"
+msgstr "titel"
+
+#. module: account_sequence
+#: sql_constraint:account.journal:0
+msgid "The name of the journal must be unique per company !"
+msgstr "Journalnamnet måste vara unikt per företag!"
+
+#. module: account_sequence
+#: constraint:account.move.line:0
+msgid ""
+"The selected account of your Journal Entry forces to provide a secondary "
+"currency. You should remove the secondary currency on the account or select "
+"a multi-currency view on the journal."
+msgstr ""
+"Valt konto på verifikatet tvingar fram en sekundär valuta. Du kan ta bort "
+"den sekundära valutan på kontot eller välja en flervalutavy för journalen."
+
+#. module: account_sequence
+#: constraint:account.move.line:0
+msgid ""
+"The date of your Journal Entry is not in the defined period! You should "
+"change the date or remove this constraint from the journal."
+msgstr ""
+"Verifikatsdatumet är inte inom den definierade perioden! Du bör ändra datum "
+"eller ta bort denna begränsning från journalen."
+
+#. module: account_sequence
+#: field:account.sequence.installer,prefix:0
+msgid "Prefix"
+msgstr "Prefix"
+
+#. module: account_sequence
+#: sql_constraint:account.journal:0
+msgid "The code of the journal must be unique per company !"
+msgstr "Journalkoden måste vara unik per företag!"
+
+#. module: account_sequence
+#: model:ir.model,name:account_sequence.model_account_sequence_installer
+msgid "account.sequence.installer"
+msgstr ""
+
+#. module: account_sequence
+#: model:ir.model,name:account_sequence.model_account_journal
+msgid "Journal"
+msgstr "Journal"
+
+#. module: account_sequence
+#: view:account.sequence.installer:0
+msgid "You can enhance the Account Sequence Application by installing ."
+msgstr ""
diff --git a/addons/account_voucher/account_voucher_view.xml b/addons/account_voucher/account_voucher_view.xml
index 3b33143648b..fe282138a72 100644
--- a/addons/account_voucher/account_voucher_view.xml
+++ b/addons/account_voucher/account_voucher_view.xml
@@ -17,7 +17,6 @@
-
@@ -41,16 +40,13 @@
form
-
+
-
-
-
-
-
+
+
diff --git a/addons/account_voucher/voucher_payment_receipt_view.xml b/addons/account_voucher/voucher_payment_receipt_view.xml
index 5ceee46b2cd..6b2af93bc62 100644
--- a/addons/account_voucher/voucher_payment_receipt_view.xml
+++ b/addons/account_voucher/voucher_payment_receipt_view.xml
@@ -144,16 +144,13 @@
form
@@ -340,7 +327,7 @@
tree
-
+
diff --git a/addons/mail/doc/index.rst.inc b/addons/mail/doc/index.rst.inc
index 4679cd56fdf..822d855d5b4 100644
--- a/addons/mail/doc/index.rst.inc
+++ b/addons/mail/doc/index.rst.inc
@@ -9,3 +9,4 @@ Mail Module documentation topics
mail_thread
mail_openchatter_howto
mail_needaction_howto
+ mail_partner
diff --git a/addons/mail/doc/mail_openchatter_howto.rst b/addons/mail/doc/mail_openchatter_howto.rst
index fe28017be83..7ca52348d99 100644
--- a/addons/mail/doc/mail_openchatter_howto.rst
+++ b/addons/mail/doc/mail_openchatter_howto.rst
@@ -38,7 +38,7 @@ Make your module inheriting from the ``mail.thread`` class.
# inherit from mail.thread allows the use of OpenChatter
_inherit = ['mail.thread']
-Use the thread viewer widget inside your form view by using the ThreadView widget on the message_ids_social field inherited from mail.thread.
+Use the thread viewer widget inside your form view by using the ThreadView widget on the message_ids field inherited from mail.thread.
::
@@ -50,7 +50,7 @@ Use the thread viewer widget inside your form view by using the ThreadView widge
[...]
-
+
diff --git a/addons/mail/doc/mail_partner.rst b/addons/mail/doc/mail_partner.rst
new file mode 100644
index 00000000000..a99246395d7
--- /dev/null
+++ b/addons/mail/doc/mail_partner.rst
@@ -0,0 +1,10 @@
+What is shown
+==============
+ - for every module which are related to partner show apporopriate message in the partner view like opportunities, sale orders and invoices.
+
+
+How it is done
+===============
+ - _inherit = 'mail.thread'
+
+ - Override def message_load_ids(self, cr, uid, ids, limit=100, offset=0, domain=[], ascent=False, root_ids=[], context=None) search by the partner
diff --git a/addons/mail/mail_group_view.xml b/addons/mail/mail_group_view.xml
index 7258db2d9dc..67b2efc84a0 100644
--- a/addons/mail/mail_group_view.xml
+++ b/addons/mail/mail_group_view.xml
@@ -69,7 +69,8 @@
-
+
diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py
index 8cd8ef415c3..b1b6c68e4cc 100644
--- a/addons/mail/mail_thread.py
+++ b/addons/mail/mail_thread.py
@@ -61,29 +61,29 @@ class mail_thread(osv.osv):
'''
_name = 'mail.thread'
_description = 'Email Thread'
-
+
def _get_message_ids(self, cr, uid, ids, name, arg, context=None):
res = {}
for id in ids:
res[id] = self.message_load_ids(cr, uid, [id], context=context)
return res
-
- # OpenChatter: message_ids_social is a dummy field that should not be used
+
+ # OpenChatter: message_ids is a dummy field that should not be used
_columns = {
- 'message_ids_social': fields.function(_get_message_ids, method=True,
+ 'message_ids': fields.function(_get_message_ids, method=True,
type='one2many', obj='mail.message', string='Temp messages', _fields_id = 'res_id'),
}
#------------------------------------------------------
# Automatic subscription when creating/reading
#------------------------------------------------------
-
+
def create(self, cr, uid, vals, context=None):
"""Automatically subscribe the creator"""
thread_id = super(mail_thread, self).create(cr, uid, vals, context=context);
self.message_subscribe(cr, uid, [thread_id], [uid], context=context)
return thread_id;
-
+
def write(self, cr, uid, ids, vals, context=None):
"""Automatically subscribe the writer"""
if isinstance(ids, (int, long)):
@@ -92,7 +92,7 @@ class mail_thread(osv.osv):
if write_res:
self.message_subscribe(cr, uid, ids, [uid], context=context)
return write_res;
-
+
def unlink(self, cr, uid, ids, context=None):
"""Override unlink, to automatically delete
- subscriptions
@@ -111,13 +111,13 @@ class mail_thread(osv.osv):
# delete notifications
msg_to_del_ids = msg_obj.search(cr, uid, [('model', '=', self._name), ('res_id', 'in', ids)], context=context)
msg_obj.unlink(cr, uid, msg_to_del_ids, context=context)
-
+
return super(mail_thread, self).unlink(cr, uid, ids, context=context)
-
+
#------------------------------------------------------
# Generic message api
#------------------------------------------------------
-
+
def message_create(self, cr, uid, thread_id, vals, context=None):
"""OpenSocial: wrapper of mail.message create method
- creates the mail.message
@@ -131,15 +131,15 @@ class mail_thread(osv.osv):
notification_obj = self.pool.get('mail.notification')
res_users_obj = self.pool.get('res.users')
body = vals.get('body_html', '') if vals.get('subtype', 'plain') == 'html' else vals.get('body_text', '')
-
+
# automatically subscribe the writer of the message
if vals['user_id']:
self.message_subscribe(cr, uid, [thread_id], [vals['user_id']], context=context)
-
+
# get users that will get a notification pushed
user_to_push_ids = self.message_create_get_notification_user_ids(cr, uid, [thread_id], vals, context=context)
user_to_push_from_parse_ids = self.message_parse_users(cr, uid, [thread_id], body, context=context)
-
+
# set email_from and email_to for comments and notifications
if vals.get('type', False) and vals['type'] == 'comment' or vals['type'] == 'notification':
current_user = res_users_obj.browse(cr, uid, [uid], context=context)[0]
@@ -159,24 +159,24 @@ class mail_thread(osv.osv):
if email_to:
vals['email_to'] = email_to
vals['state'] = 'outgoing'
-
+
# create message
msg_id = message_obj.create(cr, uid, vals, context=context)
-
+
# special: if install mode, do not push demo data
if context.get('install_mode', False):
return True
-
+
# push to users
for id in user_to_push_ids:
notification_obj.create(cr, uid, {'user_id': id, 'message_id': msg_id}, context=context)
-
+
return msg_id
-
+
def message_create_get_notification_user_ids(self, cr, uid, thread_ids, new_msg_vals, context=None):
if context is None:
context = {}
-
+
notif_user_ids = []
body = new_msg_vals.get('body_html', '') if new_msg_vals.get('subtype', 'plain') == 'html' else new_msg_vals.get('body_text', '')
for thread_id in thread_ids:
@@ -193,7 +193,7 @@ class mail_thread(osv.osv):
parent_notif_ids = notif_obj.search(cr, uid, [('message_id', '=', new_msg_vals.get('parent_id'))], context=context)
parent_notifs = notif_obj.read(cr, uid, parent_notif_ids, context=context)
notif_user_ids += [parent_notif['user_id'][0] for parent_notif in parent_notifs]
-
+
# remove duplicate entries
notif_user_ids = list(set(notif_user_ids))
return notif_user_ids
@@ -214,7 +214,7 @@ class mail_thread(osv.osv):
for model_name in self.pool.obj_list():
model = self.pool.get(model_name)
if 'mail.thread' in getattr(model, '_inherit', []):
- ret_dict[model_name] = model._description
+ ret_dict[model_name] = model._description
return ret_dict
def message_append(self, cr, uid, threads, subject, body_text=None, body_html=None,
@@ -259,7 +259,7 @@ class mail_thread(osv.osv):
to determine the model of the thread to
update (instead of the current model).
"""
- if context is None:
+ if context is None:
context = {}
if attachments is None:
attachments = {}
@@ -329,7 +329,7 @@ class mail_thread(osv.osv):
'headers': headers,
'reply_to': reply_to,
'original': original, })
-
+
new_msg_ids.append(self.message_create(cr, uid, thread.id, data, context=context))
return new_msg_ids
@@ -390,7 +390,7 @@ class mail_thread(osv.osv):
if (cur_iter > max_iter):
_logger.warning("Possible infinite loop in _message_add_ancestor_ids. Note that this algorithm is intended to check for cycle in message graph.")
return child_ids
-
+
def message_load_ids(self, cr, uid, ids, limit=100, offset=0, domain=[], ascent=False, root_ids=[], context=None):
""" OpenChatter feature: return thread messages ids. It searches in
mail.messages where res_id = ids, (res_)model = current model.
@@ -408,13 +408,15 @@ class mail_thread(osv.osv):
limit=limit, offset=offset, context=context)
if (ascent): msg_ids = self._message_add_ancestor_ids(cr, uid, ids, msg_ids, root_ids, context=context)
return msg_ids
-
+
def message_load(self, cr, uid, ids, limit=100, offset=0, domain=[], ascent=False, root_ids=[], context=None):
""" OpenChatter feature: return thread messages
"""
msg_ids = self.message_load_ids(cr, uid, ids, limit, offset, domain, ascent, root_ids, context=context)
- return self.pool.get('mail.message').read(cr, uid, msg_ids, context=context)
-
+ msgs = self.pool.get('mail.message').read(cr, uid, msg_ids, context=context)
+ msgs = sorted(msgs, key=lambda d: (-d['id']))
+ return msgs
+
def get_pushed_messages(self, cr, uid, ids, limit=100, offset=0, msg_search_domain=[], ascent=False, root_ids=[], context=None):
""" OpenChatter: wall: get messages to display (=pushed notifications)
:param domain: domain to add to the search; especially child_of
@@ -442,7 +444,7 @@ class mail_thread(osv.osv):
if (ascent): msg_ids = self._message_add_ancestor_ids(cr, uid, ids, msg_ids, root_ids, context=context)
msgs = msg_obj.read(cr, uid, msg_ids, context=context)
return msgs
-
+
#------------------------------------------------------
# Email specific
#------------------------------------------------------
@@ -534,7 +536,7 @@ class mail_thread(osv.osv):
def message_new(self, cr, uid, msg_dict, custom_values=None, context=None):
"""Called by ``message_process`` when a new message is received
- for a given thread model, if the message did not belong to
+ for a given thread model, if the message did not belong to
an existing thread.
The default behavior is to create a new record of the corresponding
model (based on some very basic info extracted from the message),
@@ -660,7 +662,7 @@ class mail_thread(osv.osv):
The keys used in the returned dict are meant to map
to usual names for relationships towards a partner
and one of its addresses.
-
+
:param email: email address for which a partner
should be searched for.
:rtype: dict
@@ -685,7 +687,7 @@ class mail_thread(osv.osv):
#------------------------------------------------------
# Note specific
#------------------------------------------------------
-
+
def message_broadcast(self, cr, uid, ids, subject=None, body=None, parent_id=False, type='notification', subtype='html', context=None):
if context is None:
context = {}
@@ -710,11 +712,11 @@ class mail_thread(osv.osv):
for msg_id in msg_ids:
notification_obj.create(cr, uid, {'user_id': user.id, 'message_id': msg_id}, context=context)
return True
-
+
def log(self, cr, uid, id, message, secondary=False, context=None):
_logger.warning("log() is deprecated. Please use OpenChatter notification system instead of the res.log mechanism.")
self.message_append_note(cr, uid, [id], 'res.log', message, context=context)
-
+
def message_append_note(self, cr, uid, ids, subject=None, body=None, parent_id=False, type='notification', subtype='html', context=None):
if subject is None:
if type == 'notification':
@@ -730,29 +732,29 @@ class mail_thread(osv.osv):
body_html = body
body_text = body
return self.message_append(cr, uid, ids, subject, body_html=body_html, body_text=body_text, parent_id=parent_id, type=type, subtype=subtype, context=context)
-
+
#------------------------------------------------------
# Subscription mechanism
#------------------------------------------------------
-
+
def message_get_subscribers_ids(self, cr, uid, ids, context=None):
subscr_obj = self.pool.get('mail.subscription')
subscr_ids = subscr_obj.search(cr, uid, ['&', ('res_model', '=', self._name), ('res_id', 'in', ids)], context=context)
subs = subscr_obj.read(cr, uid, subscr_ids, context=context)
return [sub['user_id'][0] for sub in subs]
-
+
def message_get_subscribers(self, cr, uid, ids, context=None):
user_ids = self.message_get_subscribers_ids(cr, uid, ids, context=context)
users = self.pool.get('res.users').read(cr, uid, user_ids, fields=['id', 'name', 'avatar'], context=context)
return users
-
+
def message_is_subscriber(self, cr, uid, ids, user_id = None, context=None):
users = self.message_get_subscribers(cr, uid, ids, context=context)
sub_user_id = uid if user_id is None else user_id
if sub_user_id in [user['id'] for user in users]:
return True
return False
-
+
def message_subscribe(self, cr, uid, ids, user_ids = None, context=None):
subscription_obj = self.pool.get('mail.subscription')
to_subscribe_uids = [uid] if user_ids is None else user_ids
@@ -776,7 +778,7 @@ class mail_thread(osv.osv):
#------------------------------------------------------
# Notification API
#------------------------------------------------------
-
+
def message_remove_pushed_notifications(self, cr, uid, ids, msg_ids, remove_childs=True, context=None):
if context is None:
context = {}
diff --git a/addons/mail/res_partner.py b/addons/mail/res_partner.py
index 637922ff75c..922f3e4b6ed 100644
--- a/addons/mail/res_partner.py
+++ b/addons/mail/res_partner.py
@@ -24,11 +24,32 @@ from osv import fields
class res_partner(osv.osv):
""" Inherits partner and adds CRM information in the partner form """
- _inherit = 'res.partner'
+ _name = "res.partner"
+ _inherit = ['res.partner', 'mail.thread']
_columns = {
'emails': fields.one2many('mail.message', 'partner_id', 'Emails', readonly=True, domain=[('email_from','!=',False)]),
}
+ def message_load_ids(self, cr, uid, ids, limit=100, offset=0, domain=[], ascent=False, root_ids=[False], context=None):
+ """ Override of message_load_ids
+ partner discussion page :
+ - messages posted on res.partner, partner_id = partner.id
+ - messages directly sent to partner
+ """
+ msg_obj = self.pool.get('mail.message')
+ msg_ids = []
+ partner_ids=[]
+ for partner in self.browse(cr, uid, ids, context=context):
+ msg_ids += msg_obj.search(cr, uid, [ ('res_id', '=', partner.id), ('model', '=' ,self._name)] + domain,
+ limit=limit, offset=offset, context=context)
+ if self._name=='res.partner':
+ partner_ids=msg_obj.search(cr, uid, [ ('partner_id', 'in', ids)] + domain,
+ limit=limit, offset=offset, context=context)
+ if partner_ids :
+ msg_ids+= partner_ids
+ if (ascent): msg_ids = self._message_add_ancestor_ids(cr, uid, ids, msg_ids, root_ids, context=context)
+ return msg_ids
+
res_partner()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/mail/res_partner_view.xml b/addons/mail/res_partner_view.xml
index 7fc001e4fd4..eb97b725fff 100644
--- a/addons/mail/res_partner_view.xml
+++ b/addons/mail/res_partner_view.xml
@@ -23,6 +23,10 @@
+
+
+
diff --git a/addons/mail/res_users_view.xml b/addons/mail/res_users_view.xml
index 0411bd418dc..7df155b13c0 100644
--- a/addons/mail/res_users_view.xml
+++ b/addons/mail/res_users_view.xml
@@ -28,7 +28,7 @@
-
+
diff --git a/addons/mail/static/src/js/mail.js b/addons/mail/static/src/js/mail.js
index bed8faea5e0..1ec6fe32eb5 100644
--- a/addons/mail/static/src/js/mail.js
+++ b/addons/mail/static/src/js/mail.js
@@ -476,10 +476,12 @@ openerp.mail = function(session) {
// QWeb template to use when rendering the object
template: 'RecordThread',
- init: function() {
+ init: function() {
this._super.apply(this, arguments);
this.see_subscribers = true;
this.thread = null;
+ this.params = this.get_definition_options();
+ this.params.thread_level = this.params.thread_level || 0;
// datasets
this.ds = new session.web.DataSet(this, this.view.model);
this.ds_users = new session.web.DataSet(this, 'res.users');
@@ -520,12 +522,8 @@ openerp.mail = function(session) {
// create and render Thread widget
this.$element.find('div.oe_mail_recthread_left').empty();
if (this.thread) this.thread.destroy();
- // hack: for groups and users
- if (this.view.model == 'mail.group') thread_level = 1;
- if (this.view.model == 'res.users') thread_level = 1;
- else thread_level = 0;
this.thread = new mail.Thread(this, {'res_model': this.view.model, 'res_id': this.view.datarecord.id, 'uid': this.session.uid,
- 'thread_level': thread_level, 'show_post_comment': true, 'limit': 15});
+ 'thread_level': this.params.thread_level, 'show_post_comment': true, 'limit': 15});
var thread_done = this.thread.appendTo(this.$element.find('div.oe_mail_recthread_left'));
return fetch_sub_done && thread_done;
},
diff --git a/addons/marketing/res_config_view.xml b/addons/marketing/res_config_view.xml
index b7230aa65a7..7a36956a9dc 100644
--- a/addons/marketing/res_config_view.xml
+++ b/addons/marketing/res_config_view.xml
@@ -7,10 +7,10 @@
form
-
+
-
+
diff --git a/addons/marketing_campaign/marketing_campaign_view.xml b/addons/marketing_campaign/marketing_campaign_view.xml
index 4f401b386ef..9be08469cf4 100644
--- a/addons/marketing_campaign/marketing_campaign_view.xml
+++ b/addons/marketing_campaign/marketing_campaign_view.xml
@@ -16,16 +16,13 @@
form
-
+
-
-
-
-
-
+
+
@@ -140,16 +137,13 @@
form
-
+
-
-
-
-
-
+
+
@@ -189,7 +183,6 @@
-
@@ -365,15 +358,12 @@
form
-
+
-
-
-
-
-
+
+
diff --git a/addons/mrp/i18n/ja.po b/addons/mrp/i18n/ja.po
index 2943ce294da..b4316fe0196 100644
--- a/addons/mrp/i18n/ja.po
+++ b/addons/mrp/i18n/ja.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2012-02-08 00:49+0000\n"
-"PO-Revision-Date: 2012-05-31 06:17+0000\n"
+"PO-Revision-Date: 2012-06-02 04:49+0000\n"
"Last-Translator: Akira Hiyama \n"
"Language-Team: Japanese \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-06-01 05:32+0000\n"
+"X-Launchpad-Export-Date: 2012-06-03 04:47+0000\n"
"X-Generator: Launchpad (build 15342)\n"
#. module: mrp
@@ -387,9 +387,9 @@ msgid ""
"sales person creates a sales order, he can relate it to several properties "
"and OpenERP will automatically select the BoM to use according the needs."
msgstr ""
-"同じ製品で異なった構築方法を持つ場合、OpenERPのプロパティは製品製造のための正しい部品表を選択するのに使用されます。それぞれの部品表には幾つかのプロ"
-"パティを割り当てることができます。販売員が販売オーダーを作成した時、彼はそれを幾つかのプロパティに関連付けることができ、そして、OpenERPは要求によっ"
-"て使用する部品表を自動的に選択します。"
+"同じ製品で異なった構築方法を持つ場合、OpenERPの属性は製品製造のための正しい部品表を選択するのに使用されます。それぞれの部品表には幾つかの属性を割り"
+"当てることができます。販売員が販売オーダーを作成した時、彼はそれを幾つかの属性に関連付けることができ、そして、OpenERPは要求によって使用する部品表を"
+"自動的に選択します。"
#. module: mrp
#: help:mrp.production,picking_id:0
@@ -460,7 +460,7 @@ msgstr "会社名は固有でなければいけません。"
msgid ""
"Define specific property groups that can be assigned to the properties of "
"your bill of materials."
-msgstr "部品表のプロパティに割り当てることができる特定のプロパティグループを定義して下さい。"
+msgstr "部品表の属性に割り当てることができる特定の属性グループを定義して下さい。"
#. module: mrp
#: help:mrp.workcenter,costs_cycle:0
@@ -932,7 +932,7 @@ msgstr "時間数"
#: view:mrp.property:0
#: view:mrp.property.group:0
msgid "Property Group"
-msgstr "プロパティグループ"
+msgstr "属性グループ"
#. module: mrp
#: view:mrp.production:0
@@ -1601,7 +1601,7 @@ msgstr "承認"
#. module: mrp
#: view:mrp.property.group:0
msgid "Properties categories"
-msgstr "プロパティの分類"
+msgstr "属性の分類"
#. module: mrp
#: help:mrp.production.workcenter.line,sequence:0
@@ -2072,7 +2072,7 @@ msgstr "部品表"
#: view:procurement.order:0
#: field:procurement.order,property_ids:0
msgid "Properties"
-msgstr "プロパティ"
+msgstr "属性"
#. module: mrp
#: view:mrp.routing.workcenter:0
@@ -2120,12 +2120,12 @@ msgstr "作業オーダー"
#. module: mrp
#: view:board.board:0
msgid "Procurements in Exception"
-msgstr "例外の調達"
+msgstr "調達の例外"
#. module: mrp
#: model:process.transition,name:mrp.process_transition_minimumstockprocure0
msgid "'Minimum stock rule' material"
-msgstr "材料の最上在庫ルール"
+msgstr "材料の最小在庫ルール"
#. module: mrp
#: model:ir.model,name:mrp.model_mrp_product_price
@@ -2190,7 +2190,7 @@ msgstr "次の生産オーダー"
#: model:ir.actions.act_window,name:mrp.mrp_property_group_action
#: model:ir.ui.menu,name:mrp.menu_mrp_property_group_action
msgid "Property Groups"
-msgstr "プロパティグループ"
+msgstr "属性グループ"
#. module: mrp
#: model:process.transition,note:mrp.process_transition_procurestockableproduct0
diff --git a/addons/mrp/mrp_view.xml b/addons/mrp/mrp_view.xml
index fb5d07c1754..7c8410cad7f 100644
--- a/addons/mrp/mrp_view.xml
+++ b/addons/mrp/mrp_view.xml
@@ -632,7 +632,7 @@
form
+
+
diff --git a/addons/stock_location/procurement_pull.py b/addons/stock_location/procurement_pull.py
index 33168a53e20..ca397f7fa2d 100644
--- a/addons/stock_location/procurement_pull.py
+++ b/addons/stock_location/procurement_pull.py
@@ -115,7 +115,8 @@ class procurement_order(osv.osv):
if proc.move_id:
move_obj.write(cr, uid, [proc.move_id.id],
{'location_id':proc.location_id.id})
- self.write(cr, uid, [proc.id], {'state':'running', 'message':_('Pulled from another location via procurement %d')%proc_id})
+ self.write(cr, uid, [proc.id], {'state':'running', 'message':_('Pulled from another location via procurement %d') % proc_id})
+ self.running_send_note(cr, uid, [proc.id], context=context)
# trigger direct processing (the new procurement shares the same planned date as the original one, which is already being processed)
wf_service.trg_validate(uid, 'procurement.order', proc_id, 'button_check', cr)
diff --git a/addons/stock_location/stock_location_view.xml b/addons/stock_location/stock_location_view.xml
index 94a9feb9d57..5f2bacd565f 100644
--- a/addons/stock_location/stock_location_view.xml
+++ b/addons/stock_location/stock_location_view.xml
@@ -51,7 +51,7 @@
-
+
@@ -81,7 +81,7 @@
-
+
diff --git a/addons/stock_planning/stock_planning_view.xml b/addons/stock_planning/stock_planning_view.xml
index 7a4cef952bf..1b5cd953027 100644
--- a/addons/stock_planning/stock_planning_view.xml
+++ b/addons/stock_planning/stock_planning_view.xml
@@ -13,14 +13,11 @@
form
-
+
-
-
-
-
-
+
+
@@ -85,13 +82,10 @@
form
-
+
-
-
-
-
-
+
+
diff --git a/addons/subscription/subscription_view.xml b/addons/subscription/subscription_view.xml
index 13ebe096843..b4c992dcbc4 100644
--- a/addons/subscription/subscription_view.xml
+++ b/addons/subscription/subscription_view.xml
@@ -14,15 +14,12 @@
form
-
+
-
-
-
-
-
+
+
@@ -67,9 +64,6 @@
-
-
-
diff --git a/addons/survey/survey_view.xml b/addons/survey/survey_view.xml
index 0b581b4d1a1..087d062ca5f 100644
--- a/addons/survey/survey_view.xml
+++ b/addons/survey/survey_view.xml
@@ -19,15 +19,12 @@
form
-
+
-
-
-
-
-
+
+
@@ -1100,16 +1097,13 @@
form
-
+
-
-
-
-
-
+
+
diff --git a/addons/web_livechat/i18n/sv.po b/addons/web_livechat/i18n/sv.po
new file mode 100644
index 00000000000..dd3ae799443
--- /dev/null
+++ b/addons/web_livechat/i18n/sv.po
@@ -0,0 +1,28 @@
+# Swedish translation for openobject-addons
+# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2012-02-08 01:37+0100\n"
+"PO-Revision-Date: 2012-06-04 15:38+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Swedish \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-06-05 04:54+0000\n"
+"X-Generator: Launchpad (build 15353)\n"
+
+#. module: web_livechat
+#: sql_constraint:publisher_warranty.contract:0
+msgid "That contract is already registered in the system."
+msgstr "Det kontraktet har redan registrerats i systemet."
+
+#. module: web_livechat
+#: model:ir.model,name:web_livechat.model_publisher_warranty_contract
+msgid "publisher_warranty.contract"
+msgstr "publisher_warranty.contract"
diff --git a/addons/web_uservoice/i18n/sv.po b/addons/web_uservoice/i18n/sv.po
new file mode 100644
index 00000000000..cf2af514acf
--- /dev/null
+++ b/addons/web_uservoice/i18n/sv.po
@@ -0,0 +1,23 @@
+# Swedish translation for openobject-addons
+# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2012-02-08 01:37+0100\n"
+"PO-Revision-Date: 2012-06-04 15:37+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Swedish \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-06-05 04:54+0000\n"
+"X-Generator: Launchpad (build 15353)\n"
+
+#. openerp-web
+#: /home/odo/repositories/addons/trunk/web_uservoice/static/src/xml/web_uservoice.xml:6
+msgid "feedback"
+msgstr "återkoppling"