diff --git a/addons/account_analytic_plans/account_analytic_plans.py b/addons/account_analytic_plans/account_analytic_plans.py
index af197076c23..7f1e3854f6a 100644
--- a/addons/account_analytic_plans/account_analytic_plans.py
+++ b/addons/account_analytic_plans/account_analytic_plans.py
@@ -404,7 +404,6 @@ class sale_order_line(osv.osv):
if rec:
pool_inv_line.write(cr, uid, [line.id], {'analytics_id':rec.analytics_id.id}, context=context)
- cr.commit()
return create_ids
sale_order_line()
diff --git a/addons/account_chart/i18n/ru.po b/addons/account_chart/i18n/ru.po
index a7f14094a82..519eb416a3b 100644
--- a/addons/account_chart/i18n/ru.po
+++ b/addons/account_chart/i18n/ru.po
@@ -13,7 +13,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-03-31 03:55+0000\n"
+"X-Launchpad-Export-Date: 2010-04-01 03:41+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_chart
diff --git a/addons/base_calendar/base_calendar.py b/addons/base_calendar/base_calendar.py
index 17202c3ba83..3c99b7b5410 100644
--- a/addons/base_calendar/base_calendar.py
+++ b/addons/base_calendar/base_calendar.py
@@ -562,7 +562,6 @@ are both optional, but if one occurs, so MUST the other"""),
cr.execute('Update %s set base_calendar_alarm_id=%s, alarm_id=%s \
where id=%s' % (model_obj._table, \
alarm_id, basic_alarm.id, data.id))
- cr.commit()
return True
def do_alarm_unlink(self, cr, uid, ids, model, context={}):
diff --git a/addons/base_contact/i18n/bg.po b/addons/base_contact/i18n/bg.po
index dfdcd14a63b..134f79092f6 100644
--- a/addons/base_contact/i18n/bg.po
+++ b/addons/base_contact/i18n/bg.po
@@ -13,7 +13,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-03-31 03:55+0000\n"
+"X-Launchpad-Export-Date: 2010-04-01 03:41+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: base_contact
diff --git a/addons/base_report_designer/base_report_designer.py b/addons/base_report_designer/base_report_designer.py
index bddc9da9e17..311449fd46c 100644
--- a/addons/base_report_designer/base_report_designer.py
+++ b/addons/base_report_designer/base_report_designer.py
@@ -60,7 +60,6 @@ class report_xml(osv.osv):
'report_sxw_content': base64.decodestring(file_sxw),
'report_rml_content': str(sxw2rml(sxwval, xsl=fp.read())),
})
- cr.commit()
db = pooler.get_db_only(cr.dbname)
interface.register_all(db)
return True
diff --git a/addons/board/board.py b/addons/board/board.py
index 29e8a3310b4..5154a7cb993 100644
--- a/addons/board/board.py
+++ b/addons/board/board.py
@@ -57,15 +57,12 @@ class board_board(osv.osv):
def write(self, cr, uid, ids, vals, context={}):
result = super(board_board, self).write(cr, uid, ids, vals, context)
- cr.commit()
board = self.pool.get('board.board').browse(cr, uid, ids[0])
view = self.create_view(cr, uid, ids[0], context)
id = board.view_id.id
cr.execute("update ir_ui_view set arch=%s where id=%s" , (view, id))
- cr.commit()
-
return result
def create(self, cr, user, vals, context=None):
diff --git a/addons/board_account/i18n/ru.po b/addons/board_account/i18n/ru.po
index fd7e9d8b9fe..3b86324170b 100644
--- a/addons/board_account/i18n/ru.po
+++ b/addons/board_account/i18n/ru.po
@@ -13,7 +13,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-03-31 03:55+0000\n"
+"X-Launchpad-Export-Date: 2010-04-01 03:41+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: board_account
diff --git a/addons/board_project/i18n/ru.po b/addons/board_project/i18n/ru.po
index 60115d0e65b..da870866b24 100644
--- a/addons/board_project/i18n/ru.po
+++ b/addons/board_project/i18n/ru.po
@@ -13,7 +13,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-03-31 03:55+0000\n"
+"X-Launchpad-Export-Date: 2010-04-01 03:41+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: board_project
diff --git a/addons/crm/crm.py b/addons/crm/crm.py
index f19cd4bfb19..a6baed45b4e 100644
--- a/addons/crm/crm.py
+++ b/addons/crm/crm.py
@@ -344,11 +344,13 @@ class crm_case(osv.osv):
obj = self.pool.get('crm.case.history')
data['description'] = details or case.description
data['email_to'] = email or \
+ (case.section_id and case.section_id.reply_to) or \
(case.user_id and case.user_id.address_id and \
- case.user_id.address_id.email) or False
+ case.user_id.address_id.email) or tools.config.get('email_from',False)
data['email_from'] = email_from or \
+ (case.section_id and case.section_id.reply_to) or \
(case.user_id and case.user_id.address_id and \
- case.user_id.address_id.email) or False
+ case.user_id.address_id.email) or tools.config.get('email_from',False)
res = obj.create(cr, uid, data, context)
return True
_history = __history
diff --git a/addons/crm/crm_action_rule.py b/addons/crm/crm_action_rule.py
index 1e7c50588db..cd9c8f39ede 100644
--- a/addons/crm/crm_action_rule.py
+++ b/addons/crm/crm_action_rule.py
@@ -55,11 +55,14 @@ class case(osv.osv):
if case.section_id.reply_to and case.email_from:
src = case.email_from
dest = case.section_id.reply_to
- body = case.email_last or case.description
+ body = ""
+ body = case.email_last or case.description
if not destination:
src, dest = dest, src
- if case.user_id.signature:
- body += '\n\n%s' % (case.user_id.signature or '')
+ if body and case.user_id.signature:
+ body += '\n\n%s' % (case.user_id.signature)
+
+ body = self.format_body(body)
dest = [dest]
attach_to_send = None
@@ -74,15 +77,16 @@ class case(osv.osv):
src,
dest,
"Reminder: [%s] %s" % (str(case.id), case.name, ),
- self.format_body(body),
+ body,
reply_to=case.section_id.reply_to,
openobject_id=str(case.id),
attach=attach_to_send
)
- if flag:
- raise osv.except_osv(_('Email!'),("Email Successfully Sent"))
- else:
- raise osv.except_osv(_('Email Fail!'),("Email is not sent successfully"))
+ self._history(cr, uid, [case], _('Send'), history=True, email=dest, details=body, email_from=src)
+ #if flag:
+ # raise osv.except_osv(_('Email!'),("Email Successfully Sent"))
+ #else:
+ # raise osv.except_osv(_('Email Fail!'),("Email is not sent successfully"))
return True
def _check(self, cr, uid, ids=False, context={}):
@@ -120,6 +124,23 @@ case()
class base_action_rule(osv.osv):
_inherit = 'base.action.rule'
_description = 'Action Rules'
+
+ def email_send(self, cr, uid, obj, emails, body, emailfrom=tools.config.get('email_from',False), context={}):
+ body = self.format_mail(obj, body)
+ if not emailfrom:
+ if hasattr(obj, 'user_id') and obj.user_id and obj.user_id.address_id and obj.user_id.address_id.email:
+ emailfrom = obj.user_id.address_id.email
+
+ name = '[%d] %s' % (obj.id, tools.ustr(obj.name))
+ emailfrom = tools.ustr(emailfrom)
+ if hasattr(obj, 'section_id') and obj.section_id and obj.section_id.reply_to:
+ reply_to = obj.section_id.reply_to
+ else:
+ reply_to = emailfrom
+ if not emailfrom:
+ raise osv.except_osv(_('Error!'),
+ _("No E-Mail ID Found for your Company address!"))
+ return tools.email_send(emailfrom, emails, name, body, reply_to=reply_to, openobject_id=str(obj.id))
def do_check(self, cr, uid, action, obj, context={}):
ok = super(base_action_rule, self).do_check(cr, uid, action, obj, context=context)
@@ -146,7 +167,7 @@ class base_action_rule(osv.osv):
res = super(base_action_rule, self).do_action(cr, uid, action, model_obj, obj, context=context)
write = {}
- if action.act_section_id:
+ if hasattr(action, act_section_id) and action.act_section_id:
obj.section_id = action.act_section_id
write['section_id'] = action.act_section_id.id
diff --git a/addons/crm/crm_mailgate.py b/addons/crm/crm_mailgate.py
index 8b2f3bdef88..60bd4f430f2 100644
--- a/addons/crm/crm_mailgate.py
+++ b/addons/crm/crm_mailgate.py
@@ -34,24 +34,28 @@ from osv.orm import except_orm
class crm_cases(osv.osv):
_name = "crm.case"
- _inherit = "crm.case"
+ _inherit = "crm.case"
def msg_new(self, cr, uid, msg):
mailgate_obj = self.pool.get('mail.gateway')
msg_body = mailgate_obj.msg_body_get(msg)
+ msg_subject = mailgate_obj._decode_header(msg['Subject'])
+ msg_from = mailgate_obj._decode_header(msg['From'])
+ msg_cc = mailgate_obj._decode_header(msg['Cc'])
+ body = self.format_body(msg_body['body'])
data = {
- 'name': msg['Subject'],
- 'email_from': msg['From'],
- 'email_cc': msg['Cc'],
+ 'name': msg_subject,
+ 'email_from': msg_from,
+ 'email_cc': msg_cc,
'user_id': False,
- 'description': msg_body['body'],
+ 'description': body,
}
- res = mailgate_obj.partner_get(cr, uid, msg['From'])
+ res = mailgate_obj.partner_get(cr, uid, msg_from)
if res:
data.update(res)
res = self.create(cr, uid, data)
cases = self.browse(cr, uid, [res])
- self._history(cr, uid, cases, _('Receive'), history=True, email=msg['From'])
+ self._history(cr, uid, cases, _('Receive'), history=True, details=body, email_from=msg_from)
return res
def msg_update(self, cr, uid, ids, msg, data={}, default_act='pending'):
@@ -79,10 +83,10 @@ class crm_cases(osv.osv):
if 'partner' in msg_actions:
data['email_from'] = msg_actions['partner'][:128]
-
+ msg_from = self._decode_header(msg['From'])
res = self.write(cr, uid, select, data)
cases = self.browse(cr, uid, select)
- self._history(cr, uid, cases, _('Receive'), history=True, email=msg['From'])
+ self._history(cr, uid, cases, _('Receive'), history=True, details=body_data, email_from=msg['From'])
getattr(self,act)(cr, uid, select)
return res
diff --git a/addons/crm/crm_segmentation.py b/addons/crm/crm_segmentation.py
index 2f0e2a1c650..2844cd02881 100644
--- a/addons/crm/crm_segmentation.py
+++ b/addons/crm/crm_segmentation.py
@@ -78,10 +78,8 @@ class crm_segmentation(osv.osv):
for partner_id in partners:
cr.execute('insert into res_partner_category_rel (category_id,partner_id) values (%s,%s)', (categ['categ_id'][0],partner_id))
- cr.commit()
self.write(cr, uid, [id], {'state':'not running', 'partner_id':0})
- cr.commit()
return True
def process_stop(self, cr, uid, ids, *args):
diff --git a/addons/crm/crm_view.xml b/addons/crm/crm_view.xml
index a7feed54d3c..3348083eb0b 100644
--- a/addons/crm/crm_view.xml
+++ b/addons/crm/crm_view.xml
@@ -216,10 +216,12 @@
-
+
@@ -233,9 +235,11 @@
-
+
diff --git a/addons/crm/i18n/es.po b/addons/crm/i18n/es.po
index e1fbc85e8c0..16a23891c8a 100644
--- a/addons/crm/i18n/es.po
+++ b/addons/crm/i18n/es.po
@@ -13,7 +13,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-03-31 03:55+0000\n"
+"X-Launchpad-Export-Date: 2010-04-01 03:41+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: crm
diff --git a/addons/crm/i18n/fi.po b/addons/crm/i18n/fi.po
index 5a16207d10c..d3e4f18e025 100644
--- a/addons/crm/i18n/fi.po
+++ b/addons/crm/i18n/fi.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2010-01-05 05:59+0000\n"
-"PO-Revision-Date: 2010-03-30 20:39+0000\n"
+"PO-Revision-Date: 2010-03-31 14:33+0000\n"
"Last-Translator: smii \n"
"Language-Team: Finnish \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-03-31 03:55+0000\n"
+"X-Launchpad-Export-Date: 2010-04-01 03:41+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: crm
@@ -2799,12 +2799,12 @@ msgstr "Aseta kokous"
#. module: crm
#: field:crm.menu.config_wizard,meeting:0
msgid "Calendar of Meetings"
-msgstr ""
+msgstr "Kokouskalenteri"
#. module: crm
#: view:crm.case:0
msgid "Cases By Stage and Estimates"
-msgstr ""
+msgstr "Tapahtumat vaiheen ja arvioiden mukaan"
#. module: crm
#: code:addons/crm/crm.py:0
@@ -2834,18 +2834,18 @@ msgstr "Suurin kommunikointihistoria"
#. module: crm
#: view:crm.lead:0
msgid "Meeting For Leads Generation"
-msgstr ""
+msgstr "Kokous ohjausten luomiseksi"
#. module: crm
#: wizard_view:crm.lead.opportunity_set,create_partner:0
#: wizard_view:crm.lead.partner_create,init:0
msgid "Are you sure you want to create a partner based on this lead ?"
-msgstr ""
+msgstr "Oletko varma, että haluat luoda kumppanin perustuen tähän johtoon ?"
#. module: crm
#: model:crm.case.stage,name:crm.stage_job6
msgid "Refused by Employee"
-msgstr ""
+msgstr "Hylätty työntekijän toimesta"
#. module: crm
#: field:crm.case,partner_name:0
@@ -2855,7 +2855,7 @@ msgstr ""
#. module: crm
#: model:crm.case.stage,name:crm.stage_job2
msgid "First Interview"
-msgstr ""
+msgstr "Ensimmäinen haastattelu"
#. module: crm
#: view:report.crm.case.section.categ.categ2:0
@@ -2863,7 +2863,7 @@ msgstr ""
#: view:report.crm.case.section.categ2:0
#: view:report.crm.case.section.stage:0
msgid "This Month"
-msgstr ""
+msgstr "Tässä kuussa"
#. module: crm
#: view:crm.job:0
diff --git a/addons/crm/scripts/openerp_mailgate/openerp_mailgate.py b/addons/crm/scripts/openerp_mailgate/openerp_mailgate.py
index a5cfa7c58f1..76a9f9bfeaf 100755
--- a/addons/crm/scripts/openerp_mailgate/openerp_mailgate.py
+++ b/addons/crm/scripts/openerp_mailgate/openerp_mailgate.py
@@ -34,7 +34,7 @@ import time, socket
email_re = re.compile(r"([A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6})")
case_re = re.compile(r"\[([0-9]+)\]", re.UNICODE)
command_re = re.compile("^Set-([a-z]+) *: *(.+)$", re.I + re.UNICODE)
-reference_re = re.compile("<.*-tinycrm-(\\d+)@(.*)>", re.UNICODE)
+reference_re = re.compile("<.*-openobject-(\\d+)@(.*)>", re.UNICODE)
priorities = {
'1': '1 (Highest)',
@@ -157,21 +157,37 @@ class email_parser(object):
'partner_id': adr[0].get('partner_id', False) and adr[0]['partner_id'][0] or False
}
+ def _to_decode(self, s, charsets):
+ for charset in charsets:
+ if charset:
+ try:
+ return s.decode(charset)
+ except UnicodeError:
+ pass
+ try:
+ return s.decode('ascii')
+ except UnicodeError:
+ return s
+
def _decode_header(self, s):
from email.Header import decode_header
- s = decode_header(s)
- return ''.join(map(lambda x:x[0].decode(x[1] or 'ascii', 'replace'), s))
+ s = decode_header(s)
+ return ''.join(map(lambda x:self._to_decode(x[0], [x[1]]), s))
def msg_new(self, msg):
message = self.msg_body_get(msg)
+ msg_subject = self._decode_header(msg['Subject'])
+ msg_from = self._decode_header(msg['From'])
+ msg_cc = self._decode_header(msg['Cc'] or '')
+
data = {
- 'name': self._decode_header(msg['Subject']),
- 'email_from': self._decode_header(msg['From']),
- 'email_cc': self._decode_header(msg['Cc'] or ''),
+ 'name': msg_subject,
+ 'email_from': msg_from,
+ 'email_cc': msg_cc,
'user_id': False,
'description': message['body'],
}
- data.update(self.partner_get(self._decode_header(msg['From'])))
+ data.update(self.partner_get(msg_from))
try:
id = self.rpc(self.model, 'create', data)
@@ -222,7 +238,7 @@ class email_parser(object):
if part.get_content_maintype()=='text':
buf = part.get_payload(decode=True)
if buf:
- txt = buf.decode(part.get_charsets()[0] or 'ascii', 'replace')
+ txt = self._to_decode(buf, part.get_charsets())
txt = re.sub("<(\w)>", replace, txt)
txt = re.sub("<\/(\w)>", replace, txt)
if txt and part.get_content_subtype() == 'plain':
diff --git a/addons/crm/wizard/crm_send_email.py b/addons/crm/wizard/crm_send_email.py
index da141186240..1f1e12d2b85 100644
--- a/addons/crm/wizard/crm_send_email.py
+++ b/addons/crm/wizard/crm_send_email.py
@@ -44,23 +44,12 @@ class crm_send_new_email(osv.osv_memory):
}
def action_cancel(self, cr, uid, ids, context=None):
- """
- Closes Phonecall to Opportunity form
- @param self: The object pointer
- @param cr: the current row, from the database cursor,
- @param uid: the current user’s ID for security checks,
- @param ids: List of Phonecall to Opportunity's IDs
- @param context: A standard dictionary for contextual values
+ """ Closes Phonecall to Opportunity form
"""
return {'type':'ir.actions.act_window_close'}
def action_send(self, cr, uid, ids, context=None):
""" This sends an email to ALL the addresses of the selected partners.
- @param self: The object pointer
- @param cr: the current row, from the database cursor,
- @param uid: the current user’s ID for security checks,
- @param ids: List of Phonecall to Opportunity's IDs
- @param context: A standard dictionary for contextual values
"""
if not context:
context = {}
@@ -90,18 +79,19 @@ class crm_send_new_email(osv.osv_memory):
if case.user_id.signature:
body += '\n\n%s' % (case.user_id.signature)
-
- case_pool._history(cr, uid, [case], _('Send'), history=True, email=data['email_to'], details=body)
+ body = case_pool.format_body(body)
email_from = data.get('email_from', False)
+ case_pool._history(cr, uid, [case], _('Send'), history=True, email=data['email_to'], details=body, email_from=email_from)
+
flag = tools.email_send(
email_from,
emails,
data['subject'],
- case_pool.format_body(body),
+ body,
attach=attach,
reply_to=case.section_id.reply_to,
- openobject_id=str(case.id),
- )
+ openobject_id=str(case.id),
+ )
if flag:
if data['state'] == 'unchanged':
pass
@@ -118,18 +108,12 @@ class crm_send_new_email(osv.osv_memory):
# raise osv.except_osv(_('Email!'), ("Email Successfully Sent"))
# else:
# raise osv.except_osv(_('Warning!'), _("Email not sent !"))
+
return {}
def default_get(self, cr, uid, fields, context=None):
"""
This function gets default values
- @param self: The object pointer
- @param cr: the current row, from the database cursor,
- @param uid: the current user’s ID for security checks,
- @param fields: List of fields for default value
- @param context: A standard dictionary for contextual values
-
- @return : default values of fields.
"""
if not context:
context = {}
@@ -151,7 +135,8 @@ class crm_send_new_email(osv.osv_memory):
if 'email_to' in fields:
res.update({'email_to': case.email_from})
if 'email_from' in fields:
- res.update({'email_from': (case.user_id and case.user_id.address_id and \
+ res.update({'email_from': (case.section_id and case.section_id.reply_to) or \
+ (case.user_id and case.user_id.address_id and \
case.user_id.address_id.email) or tools.config.get('email_from',False)})
if 'subject' in fields:
res.update({'subject': '[%s] %s' %(str(case.id), case.name or '')})
@@ -166,13 +151,6 @@ class crm_send_new_email(osv.osv_memory):
def get_reply_defaults(self, cr, uid, fields, context=None):
"""
This function gets default values for reply mail
- @param self: The object pointer
- @param cr: the current row, from the database cursor,
- @param uid: the current user’s ID for security checks,
- @param fields: List of fields for default value
- @param context: A standard dictionary for contextual values
-
- @return : default values of fields.
"""
hist_obj = self.pool.get('crm.case.history')
res_ids = context and context.get('active_ids', []) or []
@@ -182,24 +160,24 @@ class crm_send_new_email(osv.osv_memory):
model_pool = self.pool.get(model)
case = model_pool.browse(cr, uid, hist.log_id.res_id)
if 'email_to' in fields:
- res.update({'email_to': hist.email_from or (case.user_id and case.user_id.address_id and \
- case.user_id.address_id.email) or tools.config.get('email_from',False)})
+ res.update({'email_to': case.email_from or hist.email_from or False})
if 'email_from' in fields:
- res.update({'email_from': (case.user_id and case.user_id.address_id and \
- case.user_id.address_id.email) or tools.config.get('email_from',False)})
+ res.update({'email_from': (case.section_id and case.section_id.reply_to) or \
+ (case.user_id and case.user_id.address_id and \
+ case.user_id.address_id.email) or hist.email_to or tools.config.get('email_from',False)})
if 'text' in fields:
header = '-------- Original Message --------'
- sender = 'From: %s' %(hist.email_from or tools.config.get('email_from',False))
- to = 'To: %s' % (hist.email_to)
- sentdate = 'Sent: %s' % (hist.date)
+ sender = 'From: %s' %(hist.email_from or '')
+ to = 'To: %s' % (hist.email_to or '')
+ sentdate = 'Date: %s' % (hist.date)
desc = '\n%s'%(hist.description)
original = [header, sender, to, sentdate, desc]
original = '\n'.join(original)
- res.update({'text': '\n\n%s'%(original)})
+ res['text']=original
if 'subject' in fields:
res.update({'subject': '[%s] %s' %(str(case.id), case.name or '')})
if 'state' in fields:
- res.update({'state': 'pending'})
+ res['state']='pending'
return res
def view_init(self, cr, uid, fields_list, context=None):
diff --git a/addons/crm_profiling/crm_profiling.py b/addons/crm_profiling/crm_profiling.py
index 7e70df3dc4a..dc019f9a4be 100644
--- a/addons/crm_profiling/crm_profiling.py
+++ b/addons/crm_profiling/crm_profiling.py
@@ -243,10 +243,8 @@ class crm_segmentation(osv.osv):
for partner_id in partners:
cr.execute('insert into res_partner_category_rel (category_id,partner_id) values (%s,%s)', (categ['categ_id'][0],partner_id))
- cr.commit()
self.write(cr, uid, [id], {'state':'not running', 'partner_id':0})
- cr.commit()
return True
crm_segmentation()
diff --git a/addons/idea/i18n/ru.po b/addons/idea/i18n/ru.po
index 052052be880..9f8622ada30 100644
--- a/addons/idea/i18n/ru.po
+++ b/addons/idea/i18n/ru.po
@@ -13,7 +13,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-03-31 03:55+0000\n"
+"X-Launchpad-Export-Date: 2010-04-01 03:41+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: idea
diff --git a/addons/mail_gateway/mail_gateway.py b/addons/mail_gateway/mail_gateway.py
index ee7676d4423..6a7df28b2d1 100644
--- a/addons/mail_gateway/mail_gateway.py
+++ b/addons/mail_gateway/mail_gateway.py
@@ -210,10 +210,22 @@ class mail_gateway(osv.osv):
}
return res
- def _decode_header(self, s):
+ def _to_decode(self, s, charsets):
+ for charset in charsets:
+ if charset:
+ try:
+ return s.decode(charset)
+ except UnicodeError:
+ pass
+ try:
+ return s.decode('ascii')
+ except UnicodeError:
+ return s
+
+ def _decode_header(self, s):
from email.Header import decode_header
s = decode_header(s)
- return ''.join(map(lambda x:x[0].decode(x[1] or 'ascii', 'replace'), s))
+ return ''.join(map(lambda x:self._to_decode(x[0], x[1]), s))
def msg_new(self, cr, uid, msg, model):
message = self.msg_body_get(msg)
@@ -250,7 +262,7 @@ class mail_gateway(osv.osv):
if part.get_content_maintype()=='text':
buf = part.get_payload(decode=True)
if buf:
- txt = buf.decode(part.get_charsets()[0] or 'ascii', 'replace')
+ txt = self._to_decode(buf, part.get_charsets())
txt = re.sub("<(\w)>", replace, txt)
txt = re.sub("<\/(\w)>", replace, txt)
if txt and part.get_content_subtype() == 'plain':
@@ -362,13 +374,11 @@ class mail_gateway(osv.osv):
del msg['Subject']
msg['Subject'] = '[%s] %s' %(str(res_id), subject)
- em = [user_email, from_email] + (cc_email or '').split(',')
+ em = [user_email or '', from_email] + (cc_email or '').split(',')
emails = map(self.emails_get, filter(None, em))
-
mm = [self._decode_header(msg['From']), self._decode_header(msg['To'])]+self._decode_header(msg.get('Cc','')).split(',')
msg_mails = map(self.emails_get, filter(None, mm))
-
- emails = filter(lambda m: m and m not in msg_mails, emails)
+ emails = filter(lambda m: m and m not in msg_mails, emails)
try:
self.msg_send(msg, mailgateway.reply_to, emails, priority, res_id)
if hasattr(self.pool.get(res_model), 'msg_send'):
diff --git a/addons/mrp/i18n/bg.po b/addons/mrp/i18n/bg.po
index e1660a8aea4..c0bfc16aa98 100644
--- a/addons/mrp/i18n/bg.po
+++ b/addons/mrp/i18n/bg.po
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2010-01-15 20:33+0000\n"
-"Last-Translator: lem0na \n"
+"PO-Revision-Date: 2010-03-31 09:02+0000\n"
+"Last-Translator: Boris \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-03-30 03:54+0000\n"
+"X-Launchpad-Export-Date: 2010-04-01 03:40+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: mrp
@@ -1889,7 +1889,7 @@ msgstr ""
#. module: mrp
#: model:ir.ui.menu,name:mrp.menu_mrp_root
msgid "Manufacturing"
-msgstr ""
+msgstr "Производство"
#. module: mrp
#: model:ir.actions.act_window,name:mrp.mrp_procurement_action3
diff --git a/addons/mrp/i18n/fr.po b/addons/mrp/i18n/fr.po
index 34f1b5c332f..e55720e2c9e 100644
--- a/addons/mrp/i18n/fr.po
+++ b/addons/mrp/i18n/fr.po
@@ -13,7 +13,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-03-31 03:54+0000\n"
+"X-Launchpad-Export-Date: 2010-04-01 03:41+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: mrp
diff --git a/addons/mrp/i18n/ru.po b/addons/mrp/i18n/ru.po
index dad225a5f3c..cf3fc9234cf 100644
--- a/addons/mrp/i18n/ru.po
+++ b/addons/mrp/i18n/ru.po
@@ -13,7 +13,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-03-31 03:54+0000\n"
+"X-Launchpad-Export-Date: 2010-04-01 03:41+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: mrp
diff --git a/addons/mrp/mrp.py b/addons/mrp/mrp.py
index 6864b542396..fe7d45cdb6c 100644
--- a/addons/mrp/mrp.py
+++ b/addons/mrp/mrp.py
@@ -144,8 +144,7 @@ class mrp_bom(osv.osv):
@return: True
- """
-
+ """
result = {}
for bom in self.browse(cr, uid, ids, context=context):
result[bom.id] = map(lambda x: x.id, bom.bom_lines)
@@ -156,10 +155,7 @@ class mrp_bom(osv.osv):
sids = self.pool.get('mrp.bom').search(cr, uid, [('bom_id','=',False),('product_id','=',bom.product_id.id)])
if sids:
bom2 = self.pool.get('mrp.bom').browse(cr, uid, sids[0], context=context)
- result[bom.id] += map(lambda x: x.id, bom2.bom_lines)
- print "name",name
- print "arg",arg
- print "result",result
+ result[bom.id] += map(lambda x: x.id, bom2.bom_lines)
return result
def _compute_type(self, cr, uid, ids, field_name, arg, context):
res = dict(map(lambda x: (x,''), ids))
diff --git a/addons/point_of_sale/__terp__.py b/addons/point_of_sale/__terp__.py
index b1838a28fc1..f1d847cf76d 100644
--- a/addons/point_of_sale/__terp__.py
+++ b/addons/point_of_sale/__terp__.py
@@ -62,6 +62,7 @@ Main features :
'wizard/pos_payment_report_user.xml',
'wizard/pos_payment_report.xml',
'wizard/pos_payment.xml',
+ 'wizard/pos_scan_product_view.xml',
'pos_report.xml',
'pos_wizard.xml',
'pos_view.xml',
diff --git a/addons/point_of_sale/pos.py b/addons/point_of_sale/pos.py
index 4b3f73f34d8..cda897104fc 100644
--- a/addons/point_of_sale/pos.py
+++ b/addons/point_of_sale/pos.py
@@ -158,28 +158,8 @@ class pos_order(osv.osv):
if val
-
+
"""
@@ -143,7 +143,11 @@ class pos_make_payment(osv.osv_memory):
if order.partner_id and order.invoice_wanted:
return self.create_invoice(cr, uid, ids, context)
else:
- return self.print_report(cr, uid, ids, context)
+ order_obj.write(cr, uid, [record_id],{'state':'paid'})
+ return self.print_report(cr, uid, ids, context)
+ if order.amount_paid > 0.0:
+ self.pool.get('pos.order').write(cr, uid, [record_id],{'state':'advance'})
+ return self.print_report(cr, uid, ids, context)
return {}
def create_invoice(self, cr, uid, ids, context):
diff --git a/addons/point_of_sale/wizard/pos_payment_report.xml b/addons/point_of_sale/wizard/pos_payment_report.xml
index 593068a9ebf..0d925eb2ba9 100644
--- a/addons/point_of_sale/wizard/pos_payment_report.xml
+++ b/addons/point_of_sale/wizard/pos_payment_report.xml
@@ -8,10 +8,8 @@
pos.payment.report
form
-
diff --git a/addons/stock/__terp__.py b/addons/stock/__terp__.py
index 5fa272238d5..459a2faaf84 100644
--- a/addons/stock/__terp__.py
+++ b/addons/stock/__terp__.py
@@ -48,10 +48,11 @@ Thanks to the double entry management, the inventory controlling is powerful and
"wizard/stock_inventory_set_stock_zero_view.xml",
"wizard/stock_fill_inventory_view.xml",
"wizard/stock_invoice_onshipping_view.xml",
+ "wizard/stock_inventory_merge_view.xml",
"wizard/stock_location_product_view.xml",
"wizard/stock_inventory_line_split_view.xml",
"wizard/stock_change_standard_price_view.xml",
-
+ "wizard/stock_picking_make_view.xml",
"wizard/stock_traceability_view.xml",
"stock_workflow.xml",
"stock_incoterms.xml",
diff --git a/addons/stock/stock.py b/addons/stock/stock.py
index b28895024f3..289e77f7810 100644
--- a/addons/stock/stock.py
+++ b/addons/stock/stock.py
@@ -2096,7 +2096,6 @@ class stock_picking_move_wizard(osv.osv_memory):
if line.picking_id:
picking_obj.write(cr, uid, [line.picking_id.id], {'move_lines': [(1, line.id, {'picking_id': act['picking_id']})]})
picking_obj.write(cr, uid, [act['picking_id']], {'move_lines': [(1, line.id, {'picking_id': act['picking_id']})]})
- cr.commit()
old_picking = picking_obj.read(cr, uid, [line.picking_id.id])[0]
if not len(old_picking['move_lines']):
picking_obj.write(cr, uid, [old_picking['id']], {'state': 'done'})
diff --git a/addons/stock/stock_view.xml b/addons/stock/stock_view.xml
index 877ea313d1b..2335b66cbad 100644
--- a/addons/stock/stock_view.xml
+++ b/addons/stock/stock_view.xml
@@ -585,7 +585,7 @@
-
-
-
-
-
+ string="Split move line"/>
-
+
-
-
-
-
+
diff --git a/addons/stock/wizard/__init__.py b/addons/stock/wizard/__init__.py
index d8702212646..7c87212571c 100644
--- a/addons/stock/wizard/__init__.py
+++ b/addons/stock/wizard/__init__.py
@@ -35,6 +35,5 @@ import stock_inventory_line_split
import stock_invoice_onshipping
import stock_location_product
import stock_change_standard_price
-
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/stock/wizard/stock_inventory_merge.py b/addons/stock/wizard/stock_inventory_merge.py
index 64620054ff8..1c11ad8e2ad 100644
--- a/addons/stock/wizard/stock_inventory_merge.py
+++ b/addons/stock/wizard/stock_inventory_merge.py
@@ -36,7 +36,18 @@ class stock_inventory_merge(osv.osv_memory):
}
def do_merge(self, cr, uid, ids, context):
-
+ """
+ To merge selected Inventories.
+
+ @param self: The object pointer.
+ @param cr: A database cursor
+ @param uid: ID of the user currently logged in
+ @param ids: List of IDs selected
+ @param context: A standard dictionary
+
+ @return:
+
+ """
invent_obj = self.pool.get('stock.inventory')
invent_line_obj = self.pool.get('stock.inventory.line')
@@ -46,10 +57,7 @@ class stock_inventory_merge(osv.osv_memory):
raise osv.except_osv(_('Warning'),
_('Please select at least two inventories.'))
-
-
for inventory in invent_obj.browse(cr, uid, context['active_ids'], context=context):
- print"-------active-ids----",context['active_ids']
if inventory.state == "done":
raise osv.except_osv(_('Warning'),
_('Merging is only allowed on draft inventories.'))
diff --git a/addons/stock/wizard/stock_inventory_merge_view.xml b/addons/stock/wizard/stock_inventory_merge_view.xml
new file mode 100644
index 00000000000..e8af34c0c71
--- /dev/null
+++ b/addons/stock/wizard/stock_inventory_merge_view.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+ stock.inventory.merge.form
+ stock.inventory.merge
+ form
+
+
+
+
+
+
+
+
diff --git a/addons/stock/wizard/stock_picking_make_view.xml b/addons/stock/wizard/stock_picking_make_view.xml
new file mode 100644
index 00000000000..fa77042c5d8
--- /dev/null
+++ b/addons/stock/wizard/stock_picking_make_view.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+ Make Picking
+ stock.picking.make
+ form
+
+
+
+
+
+
+ Make Picking
+ ir.actions.act_window
+ stock.picking.make
+ form
+ form
+ new
+
+
+
diff --git a/addons/survey/i18n/de.po b/addons/survey/i18n/de.po
new file mode 100644
index 00000000000..558afcd8aea
--- /dev/null
+++ b/addons/survey/i18n/de.po
@@ -0,0 +1,697 @@
+# German translation for openobject-addons
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2009-11-26 06:01+0000\n"
+"PO-Revision-Date: 2010-03-31 21:32+0000\n"
+"Last-Translator: Ferdinand @ ChriCar \n"
+"Language-Team: German \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2010-04-01 03:41+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. module: survey
+#: model:ir.ui.menu,name:survey.menu_survey_form
+msgid "Surveys"
+msgstr "Umfragen"
+
+#. module: survey
+#: model:ir.actions.report.xml,name:survey.survey
+msgid "Survey Analysis Report"
+msgstr "Umfrage Analyse Report"
+
+#. module: survey
+#: model:ir.actions.act_window,name:survey.act_survey_page_question
+#: model:ir.ui.menu,name:survey.menu_survey_question_form1
+msgid "Survey Questions"
+msgstr "Umfrage Fragen"
+
+#. module: survey
+#: view:survey:0
+#: view:survey.response:0
+msgid "Set to draft"
+msgstr "Setze auf Entwurf"
+
+#. module: survey
+#: constraint:ir.actions.act_window:0
+msgid "Invalid model name in the action definition."
+msgstr "Ungültiger Modellname in der Aktionsdefinition."
+
+#. module: survey
+#: field:survey.history,date:0
+msgid "Date started"
+msgstr "Startdatum"
+
+#. module: survey
+#: field:survey,history:0
+msgid "History Lines"
+msgstr "Historie"
+
+#. module: survey
+#: wizard_field:wizard.send.invitation,init,mail:0
+msgid "Body"
+msgstr "Hauptteil"
+
+#. module: survey
+#: model:ir.actions.act_window,name:survey.action_view_survey_name
+#: model:ir.ui.menu,name:survey.menu_run_survey_form
+msgid "Give Survey Response"
+msgstr "Gib Umfrage Antworten"
+
+#. module: survey
+#: model:ir.actions.act_window,name:survey.act_survey_question
+msgid "All Questions"
+msgstr "Alle Fragen"
+
+#. module: survey
+#: field:survey,date_open:0
+msgid "Survey Open Date"
+msgstr "Umfrage Start Datum"
+
+#. module: survey
+#: model:ir.model,name:survey.model_survey_name_wiz
+msgid "survey.name.wiz"
+msgstr "survey.name.wiz"
+
+#. module: survey
+#: view:survey:0
+msgid "Users Details"
+msgstr "Benutzer Details"
+
+#. module: survey
+#: model:ir.actions.act_window,name:survey.action_view_survey_question_message
+#: model:ir.model,name:survey.model_survey_question
+#: view:survey:0
+#: view:survey.page:0
+#: view:survey.question:0
+msgid "Survey Question"
+msgstr "Umfrage Frage"
+
+#. module: survey
+#: help:survey,response_user:0
+msgid "Set to one if you require only one response per user"
+msgstr "Setze auf eins, wenn nur eine Antwort je Benutzer benötigt wird"
+
+#. module: survey
+#: field:survey.page,title:0
+msgid "Page Title"
+msgstr "Seitentitel"
+
+#. module: survey
+#: model:ir.model,name:survey.model_survey_history
+msgid "Survey History"
+msgstr "Umfrage Geschichte"
+
+#. module: survey
+#: field:survey.response,comment:0
+#: field:survey.response.answer,comment:0
+msgid "Notes"
+msgstr "Bemerkung"
+
+#. module: survey
+#: field:survey.question,tot_resp:0
+msgid "Total Response"
+msgstr "Gesamt Antworten"
+
+#. module: survey
+#: view:survey.question.wiz:0
+msgid "Your Messages"
+msgstr "Ihre Mitteilung"
+
+#. module: survey
+#: selection:survey,state:0
+msgid "Cancelled"
+msgstr "Abgebrochen"
+
+#. module: survey
+#: field:survey.question,allow_comment:0
+msgid "Allow Comment Field"
+msgstr "Kommentarfeld erlauben"
+
+#. module: survey
+#: code:addons/survey/survey.py:0
+#, python-format
+msgid "Warning !"
+msgstr "Warnung!"
+
+#. module: survey
+#: wizard_view:wizard.send.invitation,init:0
+#: wizard_field:wizard.send.invitation,init,send_mail_existing:0
+msgid "Send reminder for existing user"
+msgstr "Setze Erinnerung für bestehend Benutzer"
+
+#. module: survey
+#: model:ir.actions.act_window,name:survey.action_new_survey_question_form
+#: model:ir.ui.menu,name:survey.menu_new_survey_question_form1
+msgid "New Survey Question"
+msgstr "Neue Umfrage Frage"
+
+#. module: survey
+#: view:survey.response:0
+msgid "Skip"
+msgstr "Überspringe"
+
+#. module: survey
+#: wizard_field:wizard.send.invitation,init,partner_ids:0
+msgid "Partner"
+msgstr "Partner"
+
+#. module: survey
+#: wizard_field:wizard.send.invitation,init,mail_subject:0
+#: wizard_field:wizard.send.invitation,init,mail_subject_existing:0
+msgid "Subject"
+msgstr "Betrifft"
+
+#. module: survey
+#: field:survey,max_response_limit:0
+msgid "Maximum Response Limit"
+msgstr "Maximale Anworten Grenze"
+
+#. module: survey
+#: wizard_field:wizard.send.invitation,init,mail_from:0
+msgid "From"
+msgstr "Von"
+
+#. module: survey
+#: field:survey.response,response_type:0
+msgid "Response Type"
+msgstr "Antwort Typ"
+
+#. module: survey
+#: field:survey.name.wiz,transfer:0
+msgid "Page Transfer"
+msgstr "Seite Übertragung"
+
+#. module: survey
+#: field:survey.answer,question_id:0
+#: field:survey.page,question_ids:0
+#: field:survey.question,question:0
+#: field:survey.response,question_id:0
+msgid "Question"
+msgstr "Frage"
+
+#. module: survey
+#: wizard_button:wizard.send.invitation,init,send:0
+msgid "Send"
+msgstr "Absenden"
+
+#. module: survey
+#: field:survey.answer,response:0
+msgid "#Response"
+msgstr "# Antwort"
+
+#. module: survey
+#: field:survey.response,response_answer_ids:0
+msgid "Response Answer"
+msgstr "Antwort"
+
+#. module: survey
+#: rml:survey_analysis_report:0
+msgid "Response Summary"
+msgstr "Antwort Zusammenfassung"
+
+#. module: survey
+#: wizard_view:wizard.send.invitation,init:0
+#: wizard_field:wizard.send.invitation,init,send_mail:0
+msgid "Send mail for new user"
+msgstr "Mail an neuen Benutzer senden"
+
+#. module: survey
+#: code:addons/survey/survey.py:0
+#, python-format
+msgid "Error !"
+msgstr "Fehler !"
+
+#. module: survey
+#: rml:survey_analysis_report:0
+msgid "Skipped Question"
+msgstr "Übersprungene Frage"
+
+#. module: survey
+#: wizard_button:wizard.send.invitation,send,end:0
+msgid "_Ok"
+msgstr "_OK"
+
+#. module: survey
+#: selection:survey.response,response_type:0
+msgid "Link"
+msgstr "Link"
+
+#. module: survey
+#: model:ir.ui.menu,name:survey.menu_survey_config
+msgid "Configuration"
+msgstr "Konfiguration"
+
+#. module: survey
+#: model:ir.model,name:survey.model_survey_question_wiz
+msgid "survey.question.wiz"
+msgstr "survey.question.wiz"
+
+#. module: survey
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr "Fehlerhafter XML Code für diese Ansicht!"
+
+#. module: survey
+#: model:ir.model,name:survey.model_survey_response_answer
+#: view:survey.response.answer:0
+msgid "Survey Response Answer"
+msgstr ""
+
+#. module: survey
+#: rml:survey_analysis_report:0
+msgid "Page :-"
+msgstr "Seite :-"
+
+#. module: survey
+#: field:survey,response_user:0
+msgid "Maximum Response per User"
+msgstr "Maximale Antworten je Benutzer"
+
+#. module: survey
+#: rml:survey_analysis_report:0
+msgid "Total Started Survey :-"
+msgstr "Gesamt gestartete Umfrage :-"
+
+#. module: survey
+#: view:survey.response:0
+msgid "Comment"
+msgstr "Kommentar"
+
+#. module: survey
+#: field:survey.response,date_modify:0
+msgid "Modify Date"
+msgstr "Datum ändern"
+
+#. module: survey
+#: rml:survey_analysis_report:0
+msgid "Answered Question"
+msgstr "Beantwortete Frage"
+
+#. module: survey
+#: code:addons/survey/survey.py:0
+#, python-format
+msgid "You can not give response for this survey more than %s times"
+msgstr "Sie können diese Umfrage nicht öfter als %s Mal beantworten"
+
+#. module: survey
+#: selection:survey.response,response_type:0
+msgid "Manually"
+msgstr "Manuell"
+
+#. module: survey
+#: model:ir.actions.act_window,name:survey.action_survey_form1
+msgid "All Surveys"
+msgstr "Alle Umfragen"
+
+#. module: survey
+#: view:survey:0
+#: field:survey,users:0
+msgid "Users"
+msgstr "Benutzer"
+
+#. module: survey
+#: wizard_view:wizard.send.invitation,init:0
+msgid "Message"
+msgstr "Nachricht"
+
+#. module: survey
+#: field:survey.name.wiz,page_no:0
+msgid "Page Number"
+msgstr "Seitennummer"
+
+#. module: survey
+#: wizard_field:wizard.send.invitation,send,note:0
+msgid "Log"
+msgstr "Protokoll"
+
+#. module: survey
+#: model:ir.actions.act_window,name:survey.action_survey_question_form
+msgid "All Survey Questions"
+msgstr "Alle Umfrage Fragen"
+
+#. module: survey
+#: field:survey,date_close:0
+msgid "Survey Close Date"
+msgstr "Umfrage Enddatum"
+
+#. module: survey
+#: view:survey.name.wiz:0
+msgid "Start"
+msgstr "Start"
+
+#. module: survey
+#: selection:survey,state:0
+#: selection:survey.response,state:0
+msgid "Draft"
+msgstr "Entwurf"
+
+#. module: survey
+#: selection:survey,state:0
+msgid "Closed"
+msgstr "Abgeschlossen"
+
+#. module: survey
+#: view:survey:0
+#: field:survey.answer,answer:0
+#: view:survey.page:0
+#: view:survey.question:0
+#: field:survey.question,answer_choice_ids:0
+#: field:survey.response.answer,answer_id:0
+msgid "Answer"
+msgstr "Antwort"
+
+#. module: survey
+#: model:ir.actions.act_window,name:survey.action_survey_page_form
+msgid "All Survey Pages"
+msgstr "Alle Umfrage Seiten"
+
+#. module: survey
+#: field:survey.name.wiz,store_ans:0
+msgid "Store Answer"
+msgstr "Speichere Antwort"
+
+#. module: survey
+#: field:survey,state:0
+#: field:survey.response,state:0
+msgid "Status"
+msgstr "Status"
+
+#. module: survey
+#: model:ir.module.module,shortdesc:survey.module_meta_information
+msgid "Survey Module"
+msgstr "Umfrage Modul"
+
+#. module: survey
+#: model:ir.module.module,description:survey.module_meta_information
+msgid ""
+"\n"
+" This module is used for surveing. It depends on the answers or reviews "
+"of some questions by different users.\n"
+" A survey may have multiple pages. Each page may contain multiple "
+"questions and each question may have multiple answers.\n"
+" Different users may give different answers of question and according to "
+"that survey is done. \n"
+" Partners are also sent mails with user name and password for the "
+"invitation of the survey\n"
+" "
+msgstr ""
+
+#. module: survey
+#: view:survey:0
+#: view:survey.name.wiz:0
+msgid "Survey Details"
+msgstr "Umfrage Details"
+
+#. module: survey
+#: field:survey.question,is_require_answer:0
+msgid "Required Answer"
+msgstr "zwingend notwendige Anwort"
+
+#. module: survey
+#: field:survey.history,user_id:0
+#: field:survey.response,response_id:0
+msgid "User"
+msgstr "Benutzer"
+
+#. module: survey
+#: field:res.users,survey_id:0
+msgid "Groups"
+msgstr "Gruppen"
+
+#. module: survey
+#: view:survey:0
+#: view:survey.page:0
+#: view:survey.question:0
+#: field:survey.question,response_ids:0
+#: view:survey.response:0
+#: field:survey.response.answer,response_id:0
+msgid "Response"
+msgstr "Antwort"
+
+#. module: survey
+#: model:ir.actions.act_window,name:survey.action_new_survey_form1
+#: model:ir.ui.menu,name:survey.menu_new_survey_form
+msgid "New Survey"
+msgstr "Neue Umfrage"
+
+#. module: survey
+#: model:ir.ui.menu,name:survey.main_menu_survey
+msgid "Survey Management"
+msgstr "Umfrage Management"
+
+#. module: survey
+#: selection:survey.response,state:0
+msgid "Skiped"
+msgstr "Übersprungen"
+
+#. module: survey
+#: model:ir.model,name:survey.model_survey_answer
+#: view:survey.answer:0
+msgid "Survey Answer"
+msgstr "Umfrage Antwort"
+
+#. module: survey
+#: code:addons/survey/wizard/wizard_survey.py:0
+#, python-format
+msgid "Attention!"
+msgstr "Achtung!"
+
+#. module: survey
+#: model:ir.model,name:survey.model_survey
+#: view:res.users:0
+#: view:survey:0
+#: field:survey.history,survey_id:0
+#: view:survey.name.wiz:0
+#: field:survey.name.wiz,survey_id:0
+#: field:survey.page,survey_id:0
+#: field:survey.question,survey:0
+msgid "Survey"
+msgstr "Umfrage"
+
+#. module: survey
+#: rml:survey_analysis_report:0
+msgid "Total Completed Survey :-"
+msgstr "Gesamt abgeschlossene Umfrage :-"
+
+#. module: survey
+#: view:survey:0
+msgid "History"
+msgstr "Verlauf"
+
+#. module: survey
+#: view:survey:0
+#: view:survey.answer:0
+#: view:survey.page:0
+#: view:survey.question:0
+msgid "Seq"
+msgstr "Seq"
+
+#. module: survey
+#: field:survey,tot_comp_survey:0
+msgid "Total Completed Survey"
+msgstr "Gesamt abgeschlossene Umfrage"
+
+#. module: survey
+#: rml:survey_analysis_report:0
+msgid "Response Percentage"
+msgstr "Antwort Prozente"
+
+#. module: survey
+#: field:survey.question.wiz,name:0
+msgid "Number"
+msgstr "Anzahl"
+
+#. module: survey
+#: rml:survey_analysis_report:0
+msgid "Survey Title :-"
+msgstr "Umfrage Titel"
+
+#. module: survey
+#: view:survey.response:0
+msgid "Done"
+msgstr "Fertig"
+
+#. module: survey
+#: code:addons/survey/survey.py:0
+#, python-format
+msgid "'\" + que_rec[0]['question'] + \"' This question requires an answer."
+msgstr ""
+
+#. module: survey
+#: view:survey:0
+#: view:survey.name.wiz:0
+#: wizard_button:wizard.send.invitation,init,end:0
+msgid "Cancel"
+msgstr "Abbrechen"
+
+#. module: survey
+#: view:survey:0
+msgid "Close"
+msgstr "Schließen"
+
+#. module: survey
+#: view:survey:0
+#: selection:survey,state:0
+msgid "Open"
+msgstr "Öffnen"
+
+#. module: survey
+#: field:survey,tot_start_survey:0
+msgid "Total Started Survey"
+msgstr "Gesamt gestartete Umfrage"
+
+#. module: survey
+#: constraint:ir.model:0
+msgid ""
+"The Object name must start with x_ and not contain any special character !"
+msgstr ""
+"Der Objekt Name muss mit einem x_ starten und darf keine Sonderzeichen "
+"beinhalten"
+
+#. module: survey
+#: model:ir.model,name:survey.model_survey_response
+#: view:survey.response:0
+msgid "Survey Response"
+msgstr "Umfrage Antwort"
+
+#. module: survey
+#: field:survey.answer,average:0
+msgid "#Avg"
+msgstr "# Mittel"
+
+#. module: survey
+#: field:survey,responsible_id:0
+msgid "Responsible"
+msgstr "Verantwortlich"
+
+#. module: survey
+#: selection:survey.response,state:0
+msgid "Answered"
+msgstr "Beantwortet"
+
+#. module: survey
+#: view:survey:0
+msgid "Other"
+msgstr "Andere"
+
+#. module: survey
+#: model:ir.actions.wizard,name:survey.wizard_send_invitation
+#: wizard_view:wizard.send.invitation,init:0
+msgid "Send Invitation"
+msgstr "Einladung verschicken"
+
+#. module: survey
+#: field:survey,title:0
+msgid "Survey Title"
+msgstr "Umfragetitel"
+
+#. module: survey
+#: rml:survey_analysis_report:0
+msgid "%"
+msgstr "%"
+
+#. module: survey
+#: view:survey:0
+#: field:survey,note:0
+#: field:survey.name.wiz,note:0
+#: view:survey.page:0
+#: field:survey.page,note:0
+#: view:survey.response:0
+msgid "Description"
+msgstr "Beschreibung"
+
+#. module: survey
+#: view:survey.name.wiz:0
+msgid "Select Survey"
+msgstr "Auswahl Umfrage"
+
+#. module: survey
+#: model:ir.actions.act_window,name:survey.action_new_survey_page_form
+#: model:ir.ui.menu,name:survey.menu_new_survey_page_form1
+msgid "New Survey Page"
+msgstr "Neue Umfrage Seite"
+
+#. module: survey
+#: view:survey:0
+#: view:survey.page:0
+#: field:survey.question,page_id:0
+msgid "Survey Page"
+msgstr "Umfrage Seite"
+
+#. module: survey
+#: model:ir.actions.act_window,name:survey.act_survey_answer
+msgid "Survey Answers"
+msgstr "Umfrage Antworten"
+
+#. module: survey
+#: view:survey.page:0
+msgid "#Questions"
+msgstr "# Fragen"
+
+#. module: survey
+#: rml:survey_analysis_report:0
+msgid "Que:"
+msgstr ""
+
+#. module: survey
+#: field:survey,page_ids:0
+msgid "Page"
+msgstr "Seite"
+
+#. module: survey
+#: wizard_view:wizard.send.invitation,send:0
+msgid "User creation"
+msgstr "Benutzer anlegen"
+
+#. module: survey
+#: field:survey.answer,sequence:0
+#: field:survey.page,sequence:0
+#: field:survey.question,sequence:0
+msgid "Sequence"
+msgstr "Sequenz"
+
+#. module: survey
+#: wizard_view:wizard.send.invitation,send:0
+msgid "Results :"
+msgstr "Ergebnisse:"
+
+#. module: survey
+#: code:addons/survey/wizard/wizard_survey.py:0
+#, python-format
+msgid "%sSurvey is not in open state"
+msgstr "%s Umfrage ist nicht im Status Offen"
+
+#. module: survey
+#: wizard_view:wizard.send.invitation,init:0
+msgid "Select Partner"
+msgstr "Wähle Partner"
+
+#. module: survey
+#: field:survey.response,date_create:0
+msgid "Create Date"
+msgstr "Erstellungsdatum"
+
+#. module: survey
+#: model:ir.actions.act_window,name:survey.act_survey_pages
+#: model:ir.model,name:survey.model_survey_page
+#: model:ir.ui.menu,name:survey.menu_survey_page_form1
+msgid "Survey Pages"
+msgstr "Umfrage Seiten"
+
+#. module: survey
+#: rml:survey_analysis_report:0
+msgid "Response Count"
+msgstr "Umfrage Anzahl"
+
+#. module: survey
+#: field:survey.name.wiz,page:0
+msgid "Page Position"
+msgstr "Seitenposition"