[Merge] from trunk

bzr revid: nel@tinyerp.com-20100401110826-cqsxgmql0g534ws4
This commit is contained in:
nel@tinyerp.com
2010-04-01 13:08:26 +02:00
48 changed files with 1051 additions and 421 deletions
@@ -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()
+1 -1
View File
@@ -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
-1
View File
@@ -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={}):
+1 -1
View File
@@ -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
@@ -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
-3
View File
@@ -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):
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+4 -2
View File
@@ -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
+30 -9
View File
@@ -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
+13 -9
View File
@@ -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
-2
View File
@@ -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):
+6 -2
View File
@@ -216,10 +216,12 @@
<tree string="Case logs">
<field name="date"/>
<field name="name"/>
<field name="som"/>
<field name="user_id"/>
<field name="section_id"/>
<!--
<field name="som"/>
<field name="canal_id"/>
-->
</tree>
</field>
</record>
@@ -233,9 +235,11 @@
<tree string="Case History">
<field name="date"/>
<field name="name"/>
<field name="som"/>
<field name="user_id"/>
<!--
<field name="som"/>
<field name="canal_id"/>
-->
</tree>
</field>
</record>
+1 -1
View File
@@ -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
+9 -9
View File
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\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 <Unknown>\n"
"Language-Team: Finnish <fi@li.org>\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
@@ -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':
+19 -41
View File
@@ -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):
-2
View File
@@ -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()
+1 -1
View File
@@ -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
+17 -7
View File
@@ -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'):
+4 -4
View File
@@ -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 <nickyk@gmx.net>\n"
"PO-Revision-Date: 2010-03-31 09:02+0000\n"
"Last-Translator: Boris <boris.t.ivanov@gmail.com>\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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+2 -6
View File
@@ -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))
+1
View File
@@ -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',
+2 -23
View File
@@ -158,28 +158,8 @@ class pos_order(osv.osv):
if val<o.date_created:
val=o.date_created
if val:
# cr.execute("Update pos_order set date_payment='%s' where id = %d"%(val, order.id))
# cr.commit()
res[order.id]=val
return res
# tax_obj = self.pool.get('account.tax')
# pay_obj = self.pool.get('pos.payment')
# for order in self.browse(cr, uid, ids):
# val = 0.0
# tot =0.0
# for pay in order.payments:
# tot+= pay.amount
# if order.amount_total==tot:
# res[order.id]=time.strftime('%Y-%m-%d')
# for line in order.lines:
# val = reduce(lambda x, y: x+round(y['amount'], 2),
# tax_obj.compute_inv(cr, uid, line.product_id.taxes_id,
# line.price_unit * \
# (1-(line.discount or 0.0)/100.0), line.qty),
# val)
# res[order.id] = val
def _amount_tax(self, cr, uid, ids, field_name, arg, context):
res = {}
@@ -565,7 +545,6 @@ class pos_order(osv.osv):
val=val and val[0] or None
if val:
cr.execute("Update pos_order set date_payment='%s' where id = %d"%(val, order.id))
cr.commit()
return True
@@ -1381,7 +1360,7 @@ class report_sales_by_margin_pos(osv.osv):
# 'pos_name': fields.char('POS Order', size=64, readonly=True),
'product_name':fields.char('Product Name', size=64, readonly=True),
'date_order': fields.date('Order Date',required=True, select=True),
'amount': fields.float('Total', readonly=True, select=True),
# 'amount': fields.float('Total', readonly=True, select=True),
'user_id': fields.many2one('res.users', 'User', readonly=True, select=True),
'qty': fields.float('Qty', readonly=True, select=True),
'net_margin_per_qty':fields.float('Net margin per Qty', readonly=True, select=True),
@@ -1430,7 +1409,7 @@ class report_sales_by_margin_pos_month(osv.osv):
# 'pos_name': fields.char('POS Order', size=64, readonly=True),
'product_name':fields.char('Product Name', size=64, readonly=True),
'date_order': fields.date('Order Date',required=True, select=True),
'amount': fields.float('Total', readonly=True, select=True),
#'amount': fields.float('Total', readonly=True, select=True),
'user_id': fields.many2one('res.users', 'User', readonly=True, select=True),
'qty': fields.float('Qty', readonly=True, select=True),
'net_margin_per_qty':fields.float('Net margin per Qty', readonly=True, select=True),
@@ -27,4 +27,14 @@
"access_pos_open_statement","pos.close.statement","model_pos_close_statement","point_of_sale.group_pos_user",1,0,0,0
"acess_pos_box_entries ","pos.box.entries ","model_pos_box_entries","point_of_sale.group_pos_user",1,0,0,0
"access_pos_box_out","pos.box.out","model_pos_box_out","point_of_sale.group_pos_user",1,0,0,0
"acess_pos_details ","pos.details ","model_pos_details","point_of_sale.group_pos_user",1,0,0,0
"access_pos_details ","pos.details ","model_pos_details","point_of_sale.group_pos_user",1,0,0,0
"access_pos_details ","pos.details ","model_pos_details","point_of_sale.group_pos_user",1,0,0,0
"access_pos_sale_user","pos.sale.user","model_pos_sale_user","point_of_sale.group_pos_user",1,0,0,0
"access_pos_sale_user","pos.sales.user.today","model_pos_sales_user_today","point_of_sale.group_pos_user",1,0,0,0
"access_pos_sales_user_today_current_user","pos.sales.user.today.current_user","model_pos_sales_user_today_current_user","point_of_sale.group_pos_user",1,0,0,0
"access_all_closed_cashbox_of_the_day","all.closed.cashbox.of.the.day","model_all_closed_cashbox_of_the_day","point_of_sale.group_pos_user",1,0,0,0
"access_pos_receipt","pos.receipt ","model_pos_receipt","point_of_sale.group_pos_user",1,0,0,0
"access_pos_payment_report_user","pos.payment.report.user","model_pos_payment_report_user","point_of_sale.group_pos_user",1,0,0,0
"access_pos_payment_report_date ","pos.payment.report.date ","model_pos_payment_report_date","point_of_sale.group_pos_user",1,0,0,0
"access_pos_make_payment","pos.make.payment","model_pos_make_payment","point_of_sale.group_pos_user",1,0,0,0
"access_pos_scan_product","pos.scan.product","model_pos_scan_product","point_of_sale.group_pos_user",1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
27 access_pos_open_statement pos.close.statement model_pos_close_statement point_of_sale.group_pos_user 1 0 0 0
28 acess_pos_box_entries pos.box.entries model_pos_box_entries point_of_sale.group_pos_user 1 0 0 0
29 access_pos_box_out pos.box.out model_pos_box_out point_of_sale.group_pos_user 1 0 0 0
30 acess_pos_details access_pos_details pos.details model_pos_details point_of_sale.group_pos_user 1 0 0 0
31 access_pos_details pos.details model_pos_details point_of_sale.group_pos_user 1 0 0 0
32 access_pos_sale_user pos.sale.user model_pos_sale_user point_of_sale.group_pos_user 1 0 0 0
33 access_pos_sale_user pos.sales.user.today model_pos_sales_user_today point_of_sale.group_pos_user 1 0 0 0
34 access_pos_sales_user_today_current_user pos.sales.user.today.current_user model_pos_sales_user_today_current_user point_of_sale.group_pos_user 1 0 0 0
35 access_all_closed_cashbox_of_the_day all.closed.cashbox.of.the.day model_all_closed_cashbox_of_the_day point_of_sale.group_pos_user 1 0 0 0
36 access_pos_receipt pos.receipt model_pos_receipt point_of_sale.group_pos_user 1 0 0 0
37 access_pos_payment_report_user pos.payment.report.user model_pos_payment_report_user point_of_sale.group_pos_user 1 0 0 0
38 access_pos_payment_report_date pos.payment.report.date model_pos_payment_report_date point_of_sale.group_pos_user 1 0 0 0
39 access_pos_make_payment pos.make.payment model_pos_make_payment point_of_sale.group_pos_user 1 0 0 0
40 access_pos_scan_product pos.scan.product model_pos_scan_product point_of_sale.group_pos_user 1 0 0 0
+2 -4
View File
@@ -20,11 +20,8 @@
#
##############################################################################
#import wizard_pos_payment
import wizard_default_journal
import wizard_scan_product
import wizard_return
#import wizard_open_statement
import pos_add_product
import pos_confirm
import pos_discount
@@ -43,6 +40,7 @@ import pos_payment_report_user
import pos_payment_report_date
import pos_payment_report
import pos_payment
import pos_scan_product
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+6 -2
View File
@@ -111,7 +111,7 @@ class pos_make_payment(osv.osv_memory):
<label string="Do you want to print the Receipt?" colspan="4"/>
<separator colspan="4"/>
<button icon="gtk-cancel" special="cancel" string="No" readonly="0"/>
<button name="print_report" string="Print Receipt" type="object" icon="gtk-ok"/>
<button name="print_report" string="Print Receipt" type="object" icon="gtk-print"/>
</group>
</form>
"""
@@ -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):
@@ -8,10 +8,8 @@
<field name="model">pos.payment.report</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="POS Details :">
<form string="Payment Report">
<group col="2" colspan="4">
<field name="date_start"/>
<field name="date_end"/>
<button icon='gtk-cancel' special="cancel"
string="Close" />
<button name="print_report" string="Print Report"
@@ -24,7 +22,7 @@
<record id="action_pos_payment_report" model="ir.actions.act_window">
<field name="name">Payment Report</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">pos.details</field>
<field name="res_model">pos.payment.report</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="target">new</field>
@@ -2,37 +2,30 @@
<openerp>
<data>
<!-- pos.details -->
<!-- Pos Receipt -->
<record id="view_pos_receipt" model="ir.ui.view">
<field name="name">Receipt</field>
<field name="model">pos.receipt</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Receipt :">
<button icon='gtk-cancel' special="cancel"
string="Close" />
<button name="print_report" string="Print Report"
colspan="1" type="object" icon="gtk-ok" />
</form>
</field>
</record>
<record id="view_pos_receipt" model="ir.ui.view">
<field name="name">Receipt</field>
<field name="model">pos.receipt</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Receipt :">
<button icon='gtk-cancel' special="cancel"
string="Close" />
<button name="print_report" string="Print Report"
colspan="1" type="object" icon="gtk-print" />
</form>
</field>
</record>
<act_window name="Print Receipt"
res_model="pos.receipt"
src_model="pos.order"
view_mode="form"
target="new"
key2="client_action_multi"
id="action_report_pos_receipt"/>
<!--record id="action_report_pos_receipt" model="ir.actions.act_window">
<record id="action_report_pos_receipt" model="ir.actions.act_window">
<field name="name">Receipt</field>
<field name="res_model">pos.receipt</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record-->
</record>
</data>
</openerp>
@@ -0,0 +1,47 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from osv import osv,fields
from tools.translate import _
class pos_scan_product(osv.osv_memory):
_name = 'pos.scan.product'
_description = 'Scan product'
_columns = {
'gencod': fields.char('Barcode',size=13,required= True)
}
def scan(self, cr, uid, ids, context):
"""
To get the gencod and scan product
@param self: The object pointer.
@param cr: A database cursor
@param uid: ID of the user currently logged in
@param context: A standard dictionary
@return : retrun gencod
"""
data=self.read(cr, uid, ids)[0]
record_id = context and context.get('active_id',False)
result =self. pool.get('pos.order.line')._scan_product(cr, uid, data['gencod'], 1, record_id)
return {'gencod': False}
pos_scan_product()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_pos_scan_product" model="ir.ui.view">
<field name="name">Scan product</field>
<field name="model">pos.scan.product</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Scan product">
<group col="2" colspan="4">
<label string="Scan Barcode" colspan="4"/>
<field name="gencod" colspan="4" nolabel="1"/>
<button icon='gtk-cancel' special="cancel"
string="Close" />
<button name="scan" string="Add"
colspan="1" type="object" icon="gtk-ok" />
</group>
</form>
</field>
</record>
<record id="action_pos_scan_product" model="ir.actions.act_window">
<field name="name">Scan product</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">pos.scan.product</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
</data>
</openerp>
@@ -1,128 +0,0 @@
# -*- encoding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
# $Id$
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import wizard
import pooler
def _get_default_journal_selection(self, cr, uid, context):
pool = pooler.get_pool(cr.dbname)
obj = pool.get('account.journal')
ids = obj.search(cr, uid, [('type', '=', 'cash')])
res = obj.read(cr, uid, ids, ['id', 'name'], context)
res = [(r['id'], r['name']) for r in res]
res.insert(0, ('', ''))
return res
default_journal_form = '''<?xml version="1.0"?>
<form string="Select default journals">
<field name="default_journal" />
<newline />
<field name="default_journal_rebate" />
<newline />
<field name="default_journal_gift" />
<newline />
</form>'''
default_journal_fields = {
'default_journal': {'string': 'Default journal', 'type': 'selection',
'selection': _get_default_journal_selection,
},
'default_journal_rebate': {'string': 'Default rebate journal', 'type': 'selection',
'selection': _get_default_journal_selection,
},
'default_journal_gift': {'string': 'Default gift journal', 'type': 'selection',
'selection': _get_default_journal_selection,
},
}
class wizard_default_journal(wizard.interface):
def _set_default_journal(self, cr, uid, data, context):
def _update_default_journal_config(journal_type, journal_code, journal_descr, journal_codes, data):
default_journal_id = data.get('form', {}).get(journal_type) or None
dico = dict(name=journal_descr, code=journal_code, journal_id=default_journal_id)
if default_journal_id:
if journal_code in journal_codes:
ids = [obj.id for obj in objs if obj.code == journal_code]
pos_config_journal.write(cr, uid, ids, dico, context)
else:
pos_config_journal.create(cr, uid, dico, context)
else:
ids = [obj.id for obj in objs if obj.code == journal_code]
pos_config_journal.write(cr, uid, ids, dico, context)
pool = pooler.get_pool(cr.dbname)
pos_config_journal = pool.get('pos.config.journal')
ids = pos_config_journal.search(cr, uid, [])
objs = pos_config_journal.browse(cr, uid, ids)
journal_codes = [str(obj.code) for obj in objs]
_update_default_journal_config('default_journal', 'DEFAULT', 'Default journal', journal_codes, data)
_update_default_journal_config('default_journal_rebate', 'REBATE', 'Default rebate journal', journal_codes, data)
_update_default_journal_config('default_journal_gift', 'GIFT', 'Default gift journal', journal_codes, data)
return {}
def _get_defaults(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
pos_config_journal = pool.get('pos.config.journal')
ids = pos_config_journal.search(cr, uid, [])
objs = pos_config_journal.browse(cr, uid, ids)
journal_codes = {}
for obj in objs:
journal_codes[obj.code] = int(obj.journal_id.id)
form = data['form']
form['default_journal'] = journal_codes.get('DEFAULT') or False
form['default_journal_rebate'] = journal_codes.get('REBATE') or False
form['default_journal_gift'] = journal_codes.get('GIFT') or False
return form
states = {
'init': {
'actions': [_get_defaults],
'result': {
'type': 'form',
'arch': default_journal_form,
'fields': default_journal_fields,
'state': [
('end', 'Cancel'),
('set_default_journal', 'Define default journals')
]
}
},
'set_default_journal': {
'actions': [_set_default_journal],
'result': {
'type': 'state',
'state': "end",
}
},
}
wizard_default_journal('pos.config.journal')
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -1,72 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
# Copyright (c) 2008 Sylëam Info Services. (http://www.syleam.fr) All Rights Reserved.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import pooler
import wizard
form_gencod = """<?xml version="1.0"?>
<form string="Scan product">
<label string="Scan Barcode" colspan="4"/>
<field name="gencod" colspan="4" nolabel="1"/>
</form>
"""
fields_gencod = {
'gencod': {'string': 'Barcode',
'type': 'char',
'size': 13,
'required': True}
}
def _scan(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
result = pool.get('pos.order.line')._scan_product(cr, uid, data['form']['gencod'], 1, data['id'])
return {'gencod': False}
def _pre_init(self, cr, uid, data, context):
return {'gencod': False}
class pos_scan_product(wizard.interface):
states = {
'init': {'actions' : [_pre_init],
'result': {
'type': 'form',
'arch': form_gencod,
'fields': fields_gencod,
'state': [('end', 'Cancel','gtk-cancel'),
('add', 'Add', 'gtk-ok', True)],
}
},
'add': {'actions' : [_scan],
'result': {
'type': 'state',
'state': 'init',
}
}
}
pos_scan_product('pos.scan_product')
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+4 -4
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2008-10-01 22:00+0000\n"
"Last-Translator: Tsvetin Vasilev <cecipv@yahoo.com>\n"
"PO-Revision-Date: 2010-03-31 08:41+0000\n"
"Last-Translator: Boris <boris.t.ivanov@gmail.com>\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:51+0000\n"
"X-Launchpad-Export-Date: 2010-04-01 03:40+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: project
@@ -559,7 +559,7 @@ msgstr "Невалиден XML за преглед на архитектурат
#: model:ir.ui.menu,name:project.menu_main
#: view:res.company:0
msgid "Project Management"
msgstr "Управление на проекти"
msgstr "Проекти"
#. module: project
#: field:project.project,effective_hours:0
+4 -4
View File
@@ -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-02-22 21:23+0000\n"
"Last-Translator: lem0na <nickyk@gmx.net>\n"
"PO-Revision-Date: 2010-03-31 08:57+0000\n"
"Last-Translator: Boris <boris.t.ivanov@gmail.com>\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:55+0000\n"
"X-Launchpad-Export-Date: 2010-04-01 03:41+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: purchase
@@ -482,7 +482,7 @@ msgstr ""
#: model:ir.module.module,shortdesc:purchase.module_meta_information
#: model:ir.ui.menu,name:purchase.menu_purchase_root
msgid "Purchase Management"
msgstr ""
msgstr "Поръчки"
#. module: purchase
#: field:purchase.order,partner_ref:0
+5 -5
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0_rc3\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-12-26 09:01+0000\n"
"Last-Translator: lem0na <nickyk@gmx.net>\n"
"PO-Revision-Date: 2010-03-31 08:48+0000\n"
"Last-Translator: Boris <boris.t.ivanov@gmail.com>\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 04:05+0000\n"
"X-Launchpad-Export-Date: 2010-04-01 03:41+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: sale
@@ -599,7 +599,7 @@ msgstr "Опаковане"
#: model:ir.module.module,shortdesc:sale.module_meta_information
#: model:ir.ui.menu,name:sale.menu_sale_root
msgid "Sales Management"
msgstr "Управление на продажби"
msgstr "Продажби"
#. module: sale
#: field:sale.order.line,order_id:0
@@ -1174,7 +1174,7 @@ msgstr "Фактура за"
#: model:ir.actions.act_window,name:sale.action_order_tree_new
#: model:ir.ui.menu,name:sale.menu_action_order_tree_new
msgid "New Quotation"
msgstr "Ново запитване"
msgstr "Нова оферта"
#. module: sale
#: view:sale.order:0
-1
View File
@@ -85,7 +85,6 @@
<field name="invoiced_rate" widget="progressbar"/>
<field name="amount_untaxed" sum="Total Untaxed amount"/>
<field name="amount_total" sum="Total amount"/>
<field name="user_id"/>
<field name="state"/>
</tree>
</field>
+2 -1
View File
@@ -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",
-1
View File
@@ -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'})
+4 -4
View File
@@ -585,7 +585,7 @@
<field name="min_date" select="1"/>
<field name="type"/>
<field name="company_id" select="1" groups="base.group_multi_company" widget="selection"/>
<button name="%(make_picking)d"
<button name="%(act_stock_make_picking_wizard)d"
states="confirmed,assigned"
string="Make Picking"
type="action"
@@ -752,7 +752,7 @@
<field name="min_date" select="1"/>
<field name="type"/>
<field name="company_id" select="1" groups="base.group_multi_company" widget="selection"/>
<button name="%(make_picking)d"
<button name="%(act_stock_make_picking_wizard)d"
states="assigned"
string="Make Picking"
type="action"
@@ -946,7 +946,7 @@
<field name="backorder_id" select="2" readonly="1"/>
<field name="origin" select="2" readonly="1"/>
<field name="company_id" select="1" groups="base.group_multi_company" widget="selection"/>
<button name="%(make_picking)d"
<button name="%(act_stock_make_picking_wizard)d"
states="assigned"
string="Make Picking"
type="action"
@@ -1141,7 +1141,7 @@
<field name="invoice_state" select="2" string="Invoice Control"/>
<field name="type"/>
<field name="company_id" select="1" groups="base.group_multi_company" widget="selection"/>
<button name="%(make_picking)d"
<button name="%(act_stock_make_picking_wizard)d"
states="confirmed,assigned"
string="Make Picking"
type="action"
+8 -24
View File
@@ -12,16 +12,9 @@
model="stock.picking"
multi="True"
name="stock.move.split"
string="Split move line"/>
string="Split move line"/>
<wizard
id="make_picking"
model="stock.picking"
menu="False"
keyword="client_action_multi"
name="stock.picking.make"
string="Make Picking"/>
<wizard
id="return_picking"
@@ -31,20 +24,11 @@
name="stock.return.picking"
string="Return picking"/>
<wizard
id="split_inventory_lots"
model="stock.inventory.line"
multi="True"
name="stock.inventory.line.split"
string="Split inventory lines"/>
<!--wizard
string="Merge inventories"
model="stock.inventory"
name="inventory.merge"
keyword="client_action_multi"
multi="True"
id="wizard_merge_inventory"/-->
<wizard
id="split_inventory_lots"
model="stock.inventory.line"
multi="True"
name="stock.inventory.line.split"
string="Split inventory lines"/>
</data>
</openerp>
-1
View File
@@ -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:
+12 -4
View File
@@ -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.'))
@@ -0,0 +1,27 @@
<?xml version="1.0"?>
<openerp>
<data>
<record id="name_form" model="ir.ui.view">
<field name="name">stock.inventory.merge.form</field>
<field name="model">stock.inventory.merge</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Merge inventories">
<separator colspan="4" string="Merge inventories" />
<label string="Do you want to merge theses inventories ?"/>
<button special="cancel" string="Cancel" icon='gtk-cancel'/>
<button name="do_merge" string="Yes" type="object" icon="gtk-apply"/>
</form>
</field>
</record>
<act_window name="Merge inventories"
res_model="stock.inventory.merge"
src_model="stock.inventory"
view_mode="form"
target="new"
key2="client_action_multi"
id="action_view_stock_merge_inventories"/>
</data>
</openerp>
@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_stock_make_picking_wizard" model="ir.ui.view">
<field name="name">Make Picking</field>
<field name="model">stock.picking.make</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Make Picking">
<field name="picking_ids" nolabel="1" colspan="4"
width="600" height="300"/>
<separator string="" colspan="4" />
<button icon='gtk-cancel' special="cancel"
string="Cancel" />
<button name="make_packing" string="Ok"
type="object" icon="gtk-apply" />
</form>
</field>
</record>
<record id="act_stock_make_picking_wizard" model="ir.actions.act_window">
<field name="name">Make Picking</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">stock.picking.make</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
</data>
</openerp>
+697
View File
@@ -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 <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\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 <Unknown>\n"
"Language-Team: German <de@li.org>\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"