diff options
| author | nel@tinyerp.com <> | 2010-04-01 13:08:26 +0200 |
|---|---|---|
| committer | nel@tinyerp.com <> | 2010-04-01 13:08:26 +0200 |
| commit | ede60a92a8ca8cf0de4ff1796d2f9aa26c3ec347 (patch) | |
| tree | 171c2b9ee1085e46017b00aa35dc1c8a799a3c7d | |
| parent | f9a5008bea270a39d863b04f6a023cb05f764962 (diff) | |
| parent | ef2ade0632ef16866aaca0a5cf07a224a009af31 (diff) | |
[Merge] from trunk
bzr revid: nel@tinyerp.com-20100401110826-cqsxgmql0g534ws4
48 files changed, 1051 insertions, 421 deletions
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 @@ <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> 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 <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 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 <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 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<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), diff --git a/addons/point_of_sale/security/ir.model.access.csv b/addons/point_of_sale/security/ir.model.access.csv index a761e78c362..a36d631968a 100644 --- a/addons/point_of_sale/security/ir.model.access.csv +++ b/addons/point_of_sale/security/ir.model.access.csv @@ -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 diff --git a/addons/point_of_sale/wizard/__init__.py b/addons/point_of_sale/wizard/__init__.py index 1384fb8329a..ba62c1f78f9 100644 --- a/addons/point_of_sale/wizard/__init__.py +++ b/addons/point_of_sale/wizard/__init__.py @@ -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: diff --git a/addons/point_of_sale/wizard/pos_payment.py b/addons/point_of_sale/wizard/pos_payment.py index 1d9214c3645..29299257750 100644 --- a/addons/point_of_sale/wizard/pos_payment.py +++ b/addons/point_of_sale/wizard/pos_payment.py @@ -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): 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 @@ <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> diff --git a/addons/point_of_sale/wizard/pos_receipt_view.xml b/addons/point_of_sale/wizard/pos_receipt_view.xml index c046259bef6..44b07502f3e 100644 --- a/addons/point_of_sale/wizard/pos_receipt_view.xml +++ b/addons/point_of_sale/wizard/pos_receipt_view.xml @@ -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> diff --git a/addons/point_of_sale/wizard/pos_scan_product.py b/addons/point_of_sale/wizard/pos_scan_product.py new file mode 100644 index 00000000000..e9e01b66675 --- /dev/null +++ b/addons/point_of_sale/wizard/pos_scan_product.py @@ -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: diff --git a/addons/point_of_sale/wizard/pos_scan_product_view.xml b/addons/point_of_sale/wizard/pos_scan_product_view.xml new file mode 100644 index 00000000000..3957c6c0415 --- /dev/null +++ b/addons/point_of_sale/wizard/pos_scan_product_view.xml @@ -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>
\ No newline at end of file diff --git a/addons/point_of_sale/wizard/wizard_default_journal.py b/addons/point_of_sale/wizard/wizard_default_journal.py deleted file mode 100644 index a33042bd4b9..00000000000 --- a/addons/point_of_sale/wizard/wizard_default_journal.py +++ /dev/null @@ -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: diff --git a/addons/point_of_sale/wizard/wizard_scan_product.py b/addons/point_of_sale/wizard/wizard_scan_product.py deleted file mode 100644 index 04b1e64c01b..00000000000 --- a/addons/point_of_sale/wizard/wizard_scan_product.py +++ /dev/null @@ -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: diff --git a/addons/project/i18n/bg.po b/addons/project/i18n/bg.po index 8dbeca2e0be..4bae563a832 100644 --- a/addons/project/i18n/bg.po +++ b/addons/project/i18n/bg.po @@ -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 diff --git a/addons/purchase/i18n/bg.po b/addons/purchase/i18n/bg.po index c02a979c780..9f831b6f0cf 100644 --- a/addons/purchase/i18n/bg.po +++ b/addons/purchase/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-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 diff --git a/addons/sale/i18n/bg.po b/addons/sale/i18n/bg.po index 05bbfa477e0..2b5cd16c4a9 100644 --- a/addons/sale/i18n/bg.po +++ b/addons/sale/i18n/bg.po @@ -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 diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml index c62487cfe1e..073d95dac27 100644 --- a/addons/sale/sale_view.xml +++ b/addons/sale/sale_view.xml @@ -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> 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 @@ <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" diff --git a/addons/stock/stock_wizard.xml b/addons/stock/stock_wizard.xml index f9a2dfc93b0..4ead149d2b0 100644 --- a/addons/stock/stock_wizard.xml +++ b/addons/stock/stock_wizard.xml @@ -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> 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 @@ +<?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> 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 @@ +<?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> 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 <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" |
