diff --git a/addons/account/account.py b/addons/account/account.py index 75936320e58..3c7c14737c1 100644 --- a/addons/account/account.py +++ b/addons/account/account.py @@ -1447,6 +1447,8 @@ class account_move(osv.osv): def unlink(self, cr, uid, ids, context=None, check=True): if context is None: context = {} + if isinstance(ids, (int, long)): + ids = [ids] toremove = [] obj_move_line = self.pool.get('account.move.line') for move in self.browse(cr, uid, ids, context=context): @@ -1928,7 +1930,7 @@ class account_tax(osv.osv): 'child_depend':fields.boolean('Tax on Children', help="Set if the tax computation is based on the computation of child taxes rather than on the total amount."), 'python_compute':fields.text('Python Code'), 'python_compute_inv':fields.text('Python Code (reverse)'), - 'python_applicable':fields.text('Python Code'), + 'python_applicable':fields.text('Applicable Code'), # # Fields used for the Tax declaration @@ -1942,8 +1944,8 @@ class account_tax(osv.osv): 'ref_base_code_id': fields.many2one('account.tax.code', 'Refund Base Code', help="Use this code for the tax declaration."), 'ref_tax_code_id': fields.many2one('account.tax.code', 'Refund Tax Code', help="Use this code for the tax declaration."), - 'ref_base_sign': fields.float('Base Code Sign', help="Usually 1 or -1."), - 'ref_tax_sign': fields.float('Tax Code Sign', help="Usually 1 or -1."), + 'ref_base_sign': fields.float('Refund Base Code Sign', help="Usually 1 or -1."), + 'ref_tax_sign': fields.float('Refund Tax Code Sign', help="Usually 1 or -1."), 'include_base_amount': fields.boolean('Included in base amount', help="Indicates if the amount of tax must be included in the base amount for the computation of the next taxes"), 'company_id': fields.many2one('res.company', 'Company', required=True), 'description': fields.char('Tax Code'), @@ -2833,7 +2835,7 @@ class account_tax_template(osv.osv): 'child_depend':fields.boolean('Tax on Children', help="Set if the tax computation is based on the computation of child taxes rather than on the total amount."), 'python_compute':fields.text('Python Code'), 'python_compute_inv':fields.text('Python Code (reverse)'), - 'python_applicable':fields.text('Python Code'), + 'python_applicable':fields.text('Applicable Code'), # # Fields used for the Tax declaration @@ -2847,8 +2849,8 @@ class account_tax_template(osv.osv): 'ref_base_code_id': fields.many2one('account.tax.code.template', 'Refund Base Code', help="Use this code for the tax declaration."), 'ref_tax_code_id': fields.many2one('account.tax.code.template', 'Refund Tax Code', help="Use this code for the tax declaration."), - 'ref_base_sign': fields.float('Base Code Sign', help="Usually 1 or -1."), - 'ref_tax_sign': fields.float('Tax Code Sign', help="Usually 1 or -1."), + 'ref_base_sign': fields.float('Refund Base Code Sign', help="Usually 1 or -1."), + 'ref_tax_sign': fields.float('Refund Tax Code Sign', help="Usually 1 or -1."), 'include_base_amount': fields.boolean('Include in Base Amount', help="Set if the amount of tax must be included in the base amount before computing the next taxes."), 'description': fields.char('Internal Name'), 'type_tax_use': fields.selection([('sale','Sale'),('purchase','Purchase'),('all','All')], 'Tax Use In', required=True,), diff --git a/addons/account/account_move_line.py b/addons/account/account_move_line.py index 0fc9d9e2227..ed8fb8185e7 100644 --- a/addons/account/account_move_line.py +++ b/addons/account/account_move_line.py @@ -311,13 +311,13 @@ class account_move_line(osv.osv): context = {} c = context.copy() c['initital_bal'] = True - sql = """SELECT l2.id, SUM(l1.debit-l1.credit) - FROM account_move_line l1, account_move_line l2 - WHERE l2.account_id = l1.account_id - AND l1.id <= l2.id - AND l2.id IN %s AND """ + \ - self._query_get(cr, uid, obj='l1', context=c) + \ - " GROUP BY l2.id" + sql = """SELECT l1.id, COALESCE(SUM(l2.debit-l2.credit), 0) + FROM account_move_line l1 LEFT JOIN account_move_line l2 + ON (l1.account_id = l2.account_id + AND l2.id <= l1.id + AND """ + \ + self._query_get(cr, uid, obj='l2', context=c) + \ + ") WHERE l1.id IN %s GROUP BY l1.id" cr.execute(sql, [tuple(ids)]) return dict(cr.fetchall()) diff --git a/addons/account/data/account_data.xml b/addons/account/data/account_data.xml index 9d2e65a3a4c..8119e9f1002 100644 --- a/addons/account/data/account_data.xml +++ b/addons/account/data/account_data.xml @@ -16,7 +16,6 @@ - Immediate Payment balance diff --git a/addons/account/edi/invoice_action_data.xml b/addons/account/edi/invoice_action_data.xml index b3fe8362b8b..417169fa8cb 100644 --- a/addons/account/edi/invoice_action_data.xml +++ b/addons/account/edi/invoice_action_data.xml @@ -22,7 +22,7 @@ Invoice - Send by Email - ${object.user_id.email or object.company_id.email or 'noreply@localhost'} + ${(object.user_id.email or object.company_id.email or 'noreply@localhost')|safe} ${object.company_id.name} Invoice (Ref ${object.number or 'n/a'}) ${object.partner_id.id} diff --git a/addons/account/partner.py b/addons/account/partner.py index d0db2ed4f6c..f24ffcf55b4 100644 --- a/addons/account/partner.py +++ b/addons/account/partner.py @@ -107,14 +107,15 @@ class res_partner(osv.osv): _description = 'Partner' def _credit_debit_get(self, cr, uid, ids, field_names, arg, context=None): - query = self.pool.get('account.move.line')._query_get(cr, uid, context=context) + ctx = context.copy() + ctx['all_fiscalyear'] = True + query = self.pool.get('account.move.line')._query_get(cr, uid, context=ctx) cr.execute("""SELECT l.partner_id, a.type, SUM(l.debit-l.credit) FROM account_move_line l LEFT JOIN account_account a ON (l.account_id=a.id) WHERE a.type IN ('receivable','payable') AND l.partner_id IN %s - AND (l.reconcile_id IS NULL OR - reconcile_id in (SELECT id FROM account_move_reconcile WHERE opening_reconciliation is TRUE)) + AND l.reconcile_id IS NULL AND """ + query + """ GROUP BY l.partner_id, a.type """, diff --git a/addons/account/report/account_balance.rml b/addons/account/report/account_balance.rml index 6ddfc238bff..08c05c65fa8 100644 --- a/addons/account/report/account_balance.rml +++ b/addons/account/report/account_balance.rml @@ -170,6 +170,7 @@ + diff --git a/addons/account/wizard/account_invoice_refund.py b/addons/account/wizard/account_invoice_refund.py index 4b7a7fd5314..8a583b79383 100644 --- a/addons/account/wizard/account_invoice_refund.py +++ b/addons/account/wizard/account_invoice_refund.py @@ -52,10 +52,19 @@ class account_invoice_refund(osv.osv_memory): journal = obj_journal.search(cr, uid, [('type', '=', type), ('company_id','=',company_id)], limit=1, context=context) return journal and journal[0] or False + def _get_reason(self, cr, uid, context=None): + active_id = context and context.get('active_id', False) + if active_id: + inv = self.pool.get('account.invoice').browse(cr, uid, active_id, context=context) + return inv.name + else: + return '' + _defaults = { 'date': lambda *a: time.strftime('%Y-%m-%d'), 'journal_id': _get_journal, 'filter_refund': 'refund', + 'description': _get_reason, } def fields_view_get(self, cr, uid, view_id=None, view_type=False, context=None, toolbar=False, submenu=False): diff --git a/addons/account_analytic_analysis/account_analytic_analysis_cron.xml b/addons/account_analytic_analysis/account_analytic_analysis_cron.xml index 970ab275ef9..492278a87b5 100644 --- a/addons/account_analytic_analysis/account_analytic_analysis_cron.xml +++ b/addons/account_analytic_analysis/account_analytic_analysis_cron.xml @@ -4,9 +4,9 @@ Contract expiration reminder - ${object.email or ''} + ${(object.email or '')|safe} Contract expiration reminder ${user.company_id.name} - ${object.email} + ${object.email|safe} ${object.lang} diff --git a/addons/account_analytic_analysis/i18n/zh_CN.po b/addons/account_analytic_analysis/i18n/zh_CN.po index 3bcf3f4406b..f00b5cf991b 100644 --- a/addons/account_analytic_analysis/i18n/zh_CN.po +++ b/addons/account_analytic_analysis/i18n/zh_CN.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-21 17:04+0000\n" -"PO-Revision-Date: 2013-10-18 02:59+0000\n" -"Last-Translator: padola \n" +"PO-Revision-Date: 2013-11-19 06:15+0000\n" +"Last-Translator: Guipo Hao \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: 2013-10-19 04:59+0000\n" -"X-Generator: Launchpad (build 16807)\n" +"X-Launchpad-Export-Date: 2013-11-20 05:25+0000\n" +"X-Generator: Launchpad (build 16831)\n" #. module: account_analytic_analysis #: view:account.analytic.account:0 @@ -128,7 +128,7 @@ msgstr "业务伙伴" #. module: account_analytic_analysis #: view:account.analytic.account:0 msgid "Contracts that are not assigned to an account manager." -msgstr "没有制定客户经理的合同" +msgstr "没有指派客户经理的合同" #. module: account_analytic_analysis #: model:ir.actions.act_window,help:account_analytic_analysis.action_account_analytic_overdue @@ -235,7 +235,7 @@ msgstr "尚未开票,创建" #. module: account_analytic_analysis #: model:res.groups,name:account_analytic_analysis.group_template_required msgid "Mandatory use of templates in contracts" -msgstr "" +msgstr "强制采用模板制订合同" #. module: account_analytic_analysis #: field:account.analytic.account,hours_quantity:0 @@ -394,6 +394,12 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" 点击创建合同模板。\n" +"

\n" +" 模板用于预先规范合同/项目内容,从而销售人员可以快速配置合同条款及条件。\n" +"

\n" +" " #. module: account_analytic_analysis #: model:ir.model,name:account_analytic_analysis.model_account_analytic_analysis_summary_user @@ -410,7 +416,7 @@ msgstr "合同" msgid "" "Allows you to set the template field as required when creating an analytic " "account or a contract." -msgstr "" +msgstr "创建成本管理分析或合同时,允许按照需要设置模板域。" #. module: account_analytic_analysis #: help:account.analytic.account,hours_qtt_invoiced:0 @@ -439,6 +445,13 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" 点击创建新合同。\n" +"

\n" +" 用合同跟踪任务,事务,时间计划或发票的完结,费用及/或销售订单。OpenERP " +"将按销售人员自动提醒管理合同续签。\n" +"

\n" +" " #. module: account_analytic_analysis #: field:account.analytic.account,toinvoice_total:0 @@ -473,7 +486,7 @@ msgstr "最近开票日期" #. module: account_analytic_analysis #: view:account.analytic.account:0 msgid "Units Remaining" -msgstr "" +msgstr "单位保留" #. module: account_analytic_analysis #: model:ir.actions.act_window,help:account_analytic_analysis.action_hr_tree_invoiced_all @@ -488,6 +501,10 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" 此处显示可以根据合同向顾客发单的时间计划及采购项目。若想记录创建新的发单活动,你应该使用时间计划菜单。\n" +"

\n" +" " #. module: account_analytic_analysis #: field:account.analytic.account,hours_qtt_non_invoiced:0 @@ -510,7 +527,7 @@ msgid "" "Expectation of remaining income for this contract. Computed as the sum of " "remaining subtotals which, in turn, are computed as the maximum between " "'(Estimation - Invoiced)' and 'To Invoice' amounts" -msgstr "" +msgstr "合同预期剩余收入。按照剩余总值,即“预记账”和“应记账”两项的较大者。" #. module: account_analytic_analysis #: model:ir.actions.act_window,name:account_analytic_analysis.action_account_analytic_overdue @@ -521,7 +538,7 @@ msgstr "要续签的合同" #. module: account_analytic_analysis #: help:account.analytic.account,toinvoice_total:0 msgid " Sum of everything that could be invoiced for this contract." -msgstr "" +msgstr " 该合同可以记账项目的汇总。" #. module: account_analytic_analysis #: field:account.analytic.account,theorical_margin:0 @@ -541,7 +558,7 @@ msgstr "计算公式为:发票金额 - 总成本" #. module: account_analytic_analysis #: field:account.analytic.account,hours_qtt_est:0 msgid "Estimation of Hours to Invoice" -msgstr "" +msgstr "预期记账时数" #. module: account_analytic_analysis #: field:account.analytic.account,fix_price_invoices:0 @@ -556,12 +573,12 @@ msgstr "这项目的最近的工作完成日期" #. module: account_analytic_analysis #: model:ir.model,name:account_analytic_analysis.model_sale_config_settings msgid "sale.config.settings" -msgstr "" +msgstr "销售.配置.设置" #. module: account_analytic_analysis #: field:sale.config.settings,group_template_required:0 msgid "Mandatory use of templates." -msgstr "" +msgstr "强制采用模板。" #. module: account_analytic_analysis #: model:ir.actions.act_window,name:account_analytic_analysis.template_of_contract_action @@ -572,7 +589,7 @@ msgstr "合同模版" #. module: account_analytic_analysis #: view:account.analytic.account:0 msgid "Units Done" -msgstr "" +msgstr "已完成单元。" #. module: account_analytic_analysis #: help:account.analytic.account,total_cost:0 diff --git a/addons/account_analytic_default/i18n/zh_CN.po b/addons/account_analytic_default/i18n/zh_CN.po index 92db8f545a9..825a6fbba61 100644 --- a/addons/account_analytic_default/i18n/zh_CN.po +++ b/addons/account_analytic_default/i18n/zh_CN.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-21 17:05+0000\n" -"PO-Revision-Date: 2012-11-27 16:42+0000\n" -"Last-Translator: 盈通 ccdos \n" +"PO-Revision-Date: 2013-11-19 05:58+0000\n" +"Last-Translator: Guipo Hao \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: 2013-09-12 05:51+0000\n" -"X-Generator: Launchpad (build 16761)\n" +"X-Launchpad-Export-Date: 2013-11-20 05:25+0000\n" +"X-Generator: Launchpad (build 16831)\n" #. module: account_analytic_default #: model:ir.actions.act_window,name:account_analytic_default.analytic_rule_action_partner @@ -39,7 +39,7 @@ msgid "" "Select a product which will use analytic account specified in analytic " "default (e.g. create new customer invoice or Sales order if we select this " "product, it will automatically take this as an analytic account)" -msgstr "" +msgstr "选择一个产品用于默认分析指定的成本管理分析(例如:根据所选产品创建新客户单据或销售订单,系统将自动照此进行成本管理分析)" #. module: account_analytic_default #: model:ir.model,name:account_analytic_default.model_stock_picking @@ -63,7 +63,7 @@ msgid "" "Select a partner which will use analytic account specified in analytic " "default (e.g. create new customer invoice or Sales order if we select this " "partner, it will automatically take this as an analytic account)" -msgstr "" +msgstr "选择一个伙伴用于默认分析指定的成本管理分析(例如:根据所选伙伴创建新客户单据或销售订单,系统将自动照此进行成本管理分析)" #. module: account_analytic_default #: view:account.analytic.default:0 @@ -116,7 +116,7 @@ msgid "" "Select a company which will use analytic account specified in analytic " "default (e.g. create new customer invoice or Sales order if we select this " "company, it will automatically take this as an analytic account)" -msgstr "" +msgstr "选择一个公司用于默认分析指定的成本管理分析(例如:根据所选公司创建新客户单据或销售订单,系统将自动照此进行成本管理分析)" #. module: account_analytic_default #: view:account.analytic.default:0 diff --git a/addons/account_asset/i18n/hu.po b/addons/account_asset/i18n/hu.po index d46afe92868..a8a13bc1258 100644 --- a/addons/account_asset/i18n/hu.po +++ b/addons/account_asset/i18n/hu.po @@ -8,36 +8,36 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-21 17:04+0000\n" -"PO-Revision-Date: 2013-08-22 11:04+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2013-11-18 19:52+0000\n" +"Last-Translator: krnkris \n" "Language-Team: Hungarian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:33+0000\n" -"X-Generator: Launchpad (build 16761)\n" +"X-Launchpad-Export-Date: 2013-11-19 05:27+0000\n" +"X-Generator: Launchpad (build 16831)\n" #. module: account_asset #: view:account.asset.asset:0 msgid "Assets in draft and open states" -msgstr "" +msgstr "Tervezet vagy nyitott állapotú eszközök" #. module: account_asset #: field:account.asset.category,method_end:0 #: field:account.asset.history,method_end:0 #: field:asset.modify,method_end:0 msgid "Ending date" -msgstr "" +msgstr "Lejárati dátum" #. module: account_asset #: field:account.asset.asset,value_residual:0 msgid "Residual Value" -msgstr "" +msgstr "Maradvány érték" #. module: account_asset #: field:account.asset.category,account_expense_depreciation_id:0 msgid "Depr. Expense Account" -msgstr "" +msgstr "Értékcsökk. költség számla" #. module: account_asset #: view:asset.asset.report:0 @@ -67,6 +67,8 @@ msgid "" "Indicates that the first depreciation entry for this asset have to be done " "from the purchase date instead of the first January" msgstr "" +"Azt mutatja, hogy az eszköz értékcsökkenés első bevitelét a vásárlás " +"dátumától számítja az első Január helyett" #. module: account_asset #: selection:account.asset.asset,method:0 @@ -116,7 +118,7 @@ msgstr "Indoklás" #: field:account.asset.asset,method_progress_factor:0 #: field:account.asset.category,method_progress_factor:0 msgid "Degressive Factor" -msgstr "" +msgstr "Fokozási együttható" #. module: account_asset #: model:ir.actions.act_window,name:account_asset.action_account_asset_asset_list_normal @@ -141,12 +143,12 @@ msgstr "Értékcsökkénés sorai" #. module: account_asset #: help:account.asset.asset,salvage_value:0 msgid "It is the amount you plan to have that you cannot depreciate." -msgstr "" +msgstr "Az az érték, melynek értékét terv szerint már nem tudja csökkenteni." #. module: account_asset #: help:account.asset.asset,method_period:0 msgid "The amount of time between two depreciations, in months" -msgstr "" +msgstr "Két értékcsökkenés közt eltelt idő, hónapokban" #. module: account_asset #: field:account.asset.depreciation.line,depreciation_date:0 @@ -158,12 +160,12 @@ msgstr "Értékcsökkenés dátuma" #. module: account_asset #: constraint:account.asset.asset:0 msgid "Error ! You cannot create recursive assets." -msgstr "" +msgstr "Hiba! Nem hozhat létre visszatérő eszközöket." #. module: account_asset #: field:asset.asset.report,posted_value:0 msgid "Posted Amount" -msgstr "" +msgstr "Lekönyvelt összeg" #. module: account_asset #: view:account.asset.asset:0 @@ -178,7 +180,7 @@ msgstr "Eszközök" #. module: account_asset #: field:account.asset.category,account_depreciation_id:0 msgid "Depreciation Account" -msgstr "" +msgstr "Értékcsökkenés összege" #. module: account_asset #: view:account.asset.asset:0 @@ -192,7 +194,7 @@ msgstr "Megjegyzések" #. module: account_asset #: field:account.asset.depreciation.line,move_id:0 msgid "Depreciation Entry" -msgstr "" +msgstr "Értékcsökkentés bevitel" #. module: account_asset #: view:asset.asset.report:0 @@ -208,7 +210,7 @@ msgstr "Hónapok száma az időszakban" #. module: account_asset #: view:asset.asset.report:0 msgid "Assets in draft state" -msgstr "" +msgstr "Tervezet állapotú eszközök" #. module: account_asset #: field:account.asset.asset,method_end:0 @@ -216,7 +218,7 @@ msgstr "" #: selection:account.asset.category,method_time:0 #: selection:account.asset.history,method_time:0 msgid "Ending Date" -msgstr "" +msgstr "Befejező dátum" #. module: account_asset #: field:account.asset.asset,code:0 @@ -226,13 +228,13 @@ msgstr "Hivatkozás" #. module: account_asset #: view:account.asset.asset:0 msgid "Account Asset" -msgstr "" +msgstr "Eszköz számla" #. module: account_asset #: model:ir.actions.act_window,name:account_asset.action_asset_depreciation_confirmation_wizard #: model:ir.ui.menu,name:account_asset.menu_asset_depreciation_confirmation_wizard msgid "Compute Assets" -msgstr "" +msgstr "Eszközök számítása" #. module: account_asset #: field:account.asset.category,method_period:0 @@ -251,24 +253,24 @@ msgstr "Tervezet" #. module: account_asset #: view:asset.asset.report:0 msgid "Date of asset purchase" -msgstr "" +msgstr "Eszköz vásárlás dátuma" #. module: account_asset #: view:account.asset.asset:0 msgid "Change Duration" -msgstr "" +msgstr "Időtartam változtatás" #. module: account_asset #: help:account.asset.asset,method_number:0 #: help:account.asset.category,method_number:0 #: help:account.asset.history,method_number:0 msgid "The number of depreciations needed to depreciate your asset" -msgstr "" +msgstr "Értékcsökkentések száma az eszköz teljes értékcsökkentéséhez" #. module: account_asset #: view:account.asset.category:0 msgid "Analytic Information" -msgstr "" +msgstr "Elemző információk" #. module: account_asset #: field:account.asset.category,account_analytic_id:0 @@ -291,24 +293,24 @@ msgstr "" #. module: account_asset #: field:account.asset.depreciation.line,remaining_value:0 msgid "Next Period Depreciation" -msgstr "" +msgstr "Következő időszak értékcsökkenése" #. module: account_asset #: help:account.asset.history,method_period:0 msgid "Time in month between two depreciations" -msgstr "" +msgstr "Két értékcsökkentés közt eltelt idő hónapokban" #. module: account_asset #: view:asset.modify:0 #: model:ir.actions.act_window,name:account_asset.action_asset_modify #: model:ir.model,name:account_asset.model_asset_modify msgid "Modify Asset" -msgstr "" +msgstr "Eszköz módosítás" #. module: account_asset #: field:account.asset.asset,salvage_value:0 msgid "Salvage Value" -msgstr "" +msgstr "Maradvány érték" #. module: account_asset #: field:account.asset.asset,category_id:0 @@ -321,12 +323,12 @@ msgstr "Eszköz kategória" #. module: account_asset #: view:account.asset.asset:0 msgid "Assets in closed state" -msgstr "" +msgstr "Lezárt állapotú eszközök" #. module: account_asset #: field:account.asset.asset,parent_id:0 msgid "Parent Asset" -msgstr "" +msgstr "Szülő eszköz" #. module: account_asset #: view:account.asset.history:0 @@ -337,7 +339,7 @@ msgstr "Esuközök előzménye" #. module: account_asset #: view:account.asset.category:0 msgid "Search Asset Category" -msgstr "" +msgstr "Eszköz ketegória keresés" #. module: account_asset #: view:asset.modify:0 @@ -352,19 +354,19 @@ msgstr "Számlasor" #. module: account_asset #: view:account.asset.asset:0 msgid "Depreciation Board" -msgstr "" +msgstr "Értékcsökkenési tábla" #. module: account_asset #: field:asset.asset.report,unposted_value:0 msgid "Unposted Amount" -msgstr "" +msgstr "Nem könyvelt összeg" #. module: account_asset #: field:account.asset.asset,method_time:0 #: field:account.asset.category,method_time:0 #: field:account.asset.history,method_time:0 msgid "Time Method" -msgstr "" +msgstr "Idő módszer" #. module: account_asset #: view:asset.depreciation.confirmation.wizard:0 @@ -388,6 +390,11 @@ msgid "" "Ending Date: Choose the time between 2 depreciations and the date the " "depreciations won't go beyond." msgstr "" +"Az értékcsökkentés sorai dátumának és számainak számítási módszere.\n" +"Értékcsökkentések száma: Rögzíti az értékcsökkentés sorai számát és kér " +"értékcsökkentés közt eltelt időt.\n" +"Befejezés dátuma: Válasszon 2 értékcsökkentés közti időt és azt a dátumot " +"amit az értékcsökkentés már nem fog meghaladni." #. module: account_asset #: help:account.asset.asset,method_time:0 @@ -400,11 +407,17 @@ msgid "" " * Ending Date: Choose the time between 2 depreciations and the date the " "depreciations won't go beyond." msgstr "" +"Válassza az értékcsökkentés sorai dátumának és számainak számítási " +"módszerét.\n" +" * Értékcsökkentések száma: Rögzíti az értékcsökkentés sorai számát és kér " +"értékcsökkentés közt eltelt időt.\n" +" * Befejezés dátuma: Válasszon 2 értékcsökkentés közti időt és azt a " +"dátumot amit az értékcsökkentés már nem fog meghaladni." #. module: account_asset #: view:asset.asset.report:0 msgid "Assets in running state" -msgstr "" +msgstr "Futó állapotú eszköz" #. module: account_asset #: view:account.asset.asset:0 @@ -420,12 +433,18 @@ msgid "" "You can manually close an asset when the depreciation is over. If the last " "line of depreciation is posted, the asset automatically goes in that status." msgstr "" +"Ha egy eszközt létrehozott, annak állapota 'Tervezet'.\n" +"Miután az eszköz megerősített, annak állapota 'Futó' és a költségcsökkentés " +"sorait el lehet küldeni a könyvelésre.\n" +"Ha a költségcsökkentés végre lett hajtva akkor kézzel bezárhatja azt. Ha az " +"értékcsökkentés utolsó sora is fel lett adva, akkor automatikusan ebbe az " +"állapotba vált." #. module: account_asset #: field:account.asset.asset,state:0 #: field:asset.asset.report,state:0 msgid "Status" -msgstr "Státusz" +msgstr "Állapot" #. module: account_asset #: field:account.asset.asset,partner_id:0 @@ -436,17 +455,17 @@ msgstr "Partner" #. module: account_asset #: view:asset.asset.report:0 msgid "Posted depreciation lines" -msgstr "" +msgstr "Lekönyvelt értékcsökkentési sorok" #. module: account_asset #: field:account.asset.asset,child_ids:0 msgid "Children Assets" -msgstr "" +msgstr "Alsóbbrendő eszközök" #. module: account_asset #: view:asset.asset.report:0 msgid "Date of depreciation" -msgstr "" +msgstr "Értékcsökkentés dátuma" #. module: account_asset #: field:account.asset.history,user_id:0 @@ -456,7 +475,7 @@ msgstr "Felhasználó" #. module: account_asset #: field:account.asset.category,account_asset_id:0 msgid "Asset Account" -msgstr "" +msgstr "Eszköz számla" #. module: account_asset #: view:asset.asset.report:0 @@ -472,12 +491,12 @@ msgstr "Kiszámítás" #. module: account_asset #: view:account.asset.history:0 msgid "Asset History" -msgstr "Esuközök előzménye" +msgstr "Eszközök előzménye" #. module: account_asset #: model:ir.model,name:account_asset.model_asset_depreciation_confirmation_wizard msgid "asset.depreciation.confirmation.wizard" -msgstr "" +msgstr "Eszköz.költségcsökkentés.nyugtázás.varázsló" #. module: account_asset #: field:account.asset.asset,active:0 @@ -487,12 +506,12 @@ msgstr "Aktív" #. module: account_asset #: field:account.asset.depreciation.line,parent_state:0 msgid "State of Asset" -msgstr "Eszköz státusza" +msgstr "Eszköz állapota" #. module: account_asset #: field:account.asset.depreciation.line,name:0 msgid "Depreciation Name" -msgstr "" +msgstr "Költségcsökkentés neve" #. module: account_asset #: view:account.asset.asset:0 @@ -503,7 +522,7 @@ msgstr "Előzmény" #. module: account_asset #: view:asset.depreciation.confirmation.wizard:0 msgid "Compute Asset" -msgstr "" +msgstr "Eszköz számítása" #. module: account_asset #: field:asset.depreciation.confirmation.wizard,period_id:0 @@ -519,7 +538,7 @@ msgstr "Általános" #: field:account.asset.asset,prorata:0 #: field:account.asset.category,prorata:0 msgid "Prorata Temporis" -msgstr "" +msgstr "Arányos rész késleltetés" #. module: account_asset #: model:ir.model,name:account_asset.model_account_invoice @@ -529,7 +548,7 @@ msgstr "Számla" #. module: account_asset #: view:account.asset.asset:0 msgid "Set to Close" -msgstr "" +msgstr "Lezártá nyilvánítás" #. module: account_asset #: view:asset.depreciation.confirmation.wizard:0 @@ -551,7 +570,7 @@ msgstr "Könyvelési tételsorok" #. module: account_asset #: view:asset.modify:0 msgid "Asset Durations to Modify" -msgstr "" +msgstr "Eszköz időtartamainak módosítása" #. module: account_asset #: field:account.asset.asset,purchase_date:0 @@ -564,7 +583,7 @@ msgstr "Vásárlás dátuma" #: selection:account.asset.asset,method:0 #: selection:account.asset.category,method:0 msgid "Degressive" -msgstr "Degresszív" +msgstr "Fokozatosság" #. module: account_asset #: help:asset.depreciation.confirmation.wizard,period_id:0 @@ -572,6 +591,8 @@ msgid "" "Choose the period for which you want to automatically post the depreciation " "lines of running assets" msgstr "" +"Válassza ki azt az időszakot amelyben a futó eszközre vonatkozóan " +"automatikusan feladja a költségcsökkentés sorait" #. module: account_asset #: view:account.asset.asset:0 @@ -581,27 +602,27 @@ msgstr "Jelenlegi" #. module: account_asset #: view:account.asset.category:0 msgid "Depreciation Method" -msgstr "" +msgstr "Költségcsökkentés módszere" #. module: account_asset #: field:account.asset.depreciation.line,amount:0 msgid "Current Depreciation" -msgstr "" +msgstr "Jelenlegi költségcsökkentés" #. module: account_asset #: field:account.asset.asset,name:0 msgid "Asset Name" -msgstr "" +msgstr "Eszköz neve" #. module: account_asset #: field:account.asset.category,open_asset:0 msgid "Skip Draft State" -msgstr "" +msgstr "Tervezet állapot átugrása" #. module: account_asset #: view:account.asset.category:0 msgid "Depreciation Dates" -msgstr "" +msgstr "Költségcsökkentési dátumok" #. module: account_asset #: field:account.asset.asset,currency_id:0 @@ -621,7 +642,7 @@ msgstr "Előzmény neve" #. module: account_asset #: field:account.asset.depreciation.line,depreciated_value:0 msgid "Amount Already Depreciated" -msgstr "" +msgstr "A már költségcsökkentett összeg" #. module: account_asset #: help:account.asset.asset,method:0 @@ -631,6 +652,11 @@ msgid "" " * Linear: Calculated on basis of: Gross Value / Number of Depreciations\n" " * Degressive: Calculated on basis of: Residual Value * Degressive Factor" msgstr "" +"Válassza ki a módszert a költségcsökkentési sorok számításához.\n" +" * Lineáris: Ennek alapján számolt: Teljes érték / Költségcsökkentések " +"száma\n" +" * Fokozatos: Ennek alapján számolt: Maradvány érték * Költségcsökkentési " +"tényező" #. module: account_asset #: field:account.asset.depreciation.line,move_check:0 @@ -651,6 +677,13 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Ebből a jelentésből, ráláthat az összes költségcsökkentésre. A\n" +" keresés eszközt használhatja az eszköz jelentések egyénre " +"szabásához és\n" +" így a jelentést igénye szerint alakíthatja ki;\n" +"

\n" +" " #. module: account_asset #: field:account.asset.asset,purchase_value:0 @@ -668,6 +701,8 @@ msgid "" "Check this if you want to automatically confirm the assets of this category " "when created by invoices." msgstr "" +"Jelölje be, ha ennek a kategóriának az eszközeit automatikusan szeretné " +"nyugtázni, ha azokat a számla hozta létre." #. module: account_asset #: field:asset.asset.report,name:0 @@ -677,7 +712,7 @@ msgstr "Év" #. module: account_asset #: model:ir.model,name:account_asset.model_account_asset_depreciation_line msgid "Asset depreciation line" -msgstr "" +msgstr "Eszköz költségcsökkentési sor" #. module: account_asset #: view:account.asset.category:0 @@ -690,13 +725,13 @@ msgstr "Eszköz kategória" #: view:asset.asset.report:0 #: field:asset.asset.report,depreciation_value:0 msgid "Amount of Depreciation Lines" -msgstr "" +msgstr "Költségcsökkentési sorok száma" #. module: account_asset #: code:addons/account_asset/wizard/wizard_asset_compute.py:50 #, python-format msgid "Created Asset Moves" -msgstr "" +msgstr "Létrehozott eszköz mozgások" #. module: account_asset #: field:account.asset.depreciation.line,sequence:0 @@ -706,7 +741,7 @@ msgstr "Sorszám" #. module: account_asset #: help:account.asset.category,method_period:0 msgid "State here the time between 2 depreciations, in months" -msgstr "" +msgstr "Határozza meg itt a 2 költségcsökkentés közt eltelt időt, hónapokban" #. module: account_asset #: field:account.asset.history,date:0 @@ -722,20 +757,20 @@ msgstr "Dátum" #: selection:account.asset.history,method_time:0 #: field:asset.modify,method_number:0 msgid "Number of Depreciations" -msgstr "" +msgstr "Költségcsökkentések száma" #. module: account_asset #: view:account.asset.asset:0 msgid "Create Move" -msgstr "" +msgstr "Mozgás létrehozása" #. module: account_asset #: view:account.asset.asset:0 msgid "Confirm Asset" -msgstr "" +msgstr "Eszköz megerősítése" #. module: account_asset #: model:ir.actions.act_window,name:account_asset.action_account_asset_asset_tree #: model:ir.ui.menu,name:account_asset.menu_action_account_asset_asset_tree msgid "Asset Hierarchy" -msgstr "" +msgstr "Eszköz rangsor" diff --git a/addons/account_asset/i18n/zh_CN.po b/addons/account_asset/i18n/zh_CN.po index db73c0d1c96..bd40216efa5 100644 --- a/addons/account_asset/i18n/zh_CN.po +++ b/addons/account_asset/i18n/zh_CN.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-21 17:04+0000\n" -"PO-Revision-Date: 2013-01-30 03:54+0000\n" -"Last-Translator: Wei \"oldrev\" Li \n" +"PO-Revision-Date: 2013-11-19 05:49+0000\n" +"Last-Translator: Guipo Hao \n" "Language-Team: Chinese (Simplified) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:34+0000\n" -"X-Generator: Launchpad (build 16761)\n" +"X-Launchpad-Export-Date: 2013-11-20 05:25+0000\n" +"X-Generator: Launchpad (build 16831)\n" #. module: account_asset #: view:account.asset.asset:0 @@ -146,7 +146,7 @@ msgstr "折旧后资产的剩余价值金额" #. module: account_asset #: help:account.asset.asset,method_period:0 msgid "The amount of time between two depreciations, in months" -msgstr "" +msgstr "折旧期间,以月计算" #. module: account_asset #: field:account.asset.depreciation.line,depreciation_date:0 @@ -426,6 +426,9 @@ msgid "" "You can manually close an asset when the depreciation is over. If the last " "line of depreciation is posted, the asset automatically goes in that status." msgstr "" +"资产创建后,其状态为“草稿”。\n" +"若资产被确认,其状态变为“运行”,并且其折旧账目可以计入会计科目。\n" +"当资产折旧期结束后,可以手工关闭。若最后折旧账目已经发生,该资产自动转至关闭状态。" #. module: account_asset #: field:account.asset.asset,state:0 @@ -637,6 +640,9 @@ msgid "" " * Linear: Calculated on basis of: Gross Value / Number of Depreciations\n" " * Degressive: Calculated on basis of: Residual Value * Degressive Factor" msgstr "" +"选择计算折旧账目数量的方法。\n" +" * 线形:按照资产总值/折旧账目数量计算\n" +" * 递减:按照资产残值 X 递减率计算" #. module: account_asset #: field:account.asset.depreciation.line,move_check:0 @@ -657,6 +663,10 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" 该报告可以显示所有折旧总揽。也可以根据需要用搜索工具个性化资产报告。\n" +"

\n" +" " #. module: account_asset #: field:account.asset.asset,purchase_value:0 diff --git a/addons/account_budget/i18n/zh_CN.po b/addons/account_budget/i18n/zh_CN.po index 8329072ae41..252009b202d 100644 --- a/addons/account_budget/i18n/zh_CN.po +++ b/addons/account_budget/i18n/zh_CN.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-21 17:05+0000\n" -"PO-Revision-Date: 2012-11-28 06:47+0000\n" -"Last-Translator: 盈通 ccdos \n" +"PO-Revision-Date: 2013-11-19 06:22+0000\n" +"Last-Translator: Guipo Hao \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: 2013-09-12 06:01+0000\n" -"X-Generator: Launchpad (build 16761)\n" +"X-Launchpad-Export-Date: 2013-11-20 05:25+0000\n" +"X-Generator: Launchpad (build 16831)\n" #. module: account_budget #: view:account.budget.analytic:0 @@ -367,6 +367,16 @@ msgid "" "

\n" " " msgstr "" +"

预算是对公司在未来一段时间里的收入或支出的预测。\n" +"                预算常用在 财务账目和/或分析帐目(可能用于\n" +"                项目,部门,产品类别等)              \n" +"

\n" +"                通过跟踪你的钱流向,你可能会大大减少\n" +"                超支,从而容易实现您的财务管理\n" +"                的目标。通过为每个分析帐户制订详细的预算来制订预算\n" +"                ,并在预算期间根据实际情况监测其演变。\n" +"

\n" +" " #. module: account_budget #: report:account.budget:0 diff --git a/addons/account_budget/report/analytic_account_budget_report.rml b/addons/account_budget/report/analytic_account_budget_report.rml index 837825aa4e3..15fddebd02d 100644 --- a/addons/account_budget/report/analytic_account_budget_report.rml +++ b/addons/account_budget/report/analytic_account_budget_report.rml @@ -182,19 +182,19 @@ - [['.....' *(a['status']-1) ]] [[ (a['status']==1 and (setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ a['name'] ]] + [['.....' *(a['status']-1) ]] [[ (a['status']==1 and (setTag('para','para',{'fontName':'Helvetica-Bold'}))) or removeParentNode('font') ]] [[ a['name'] ]] - [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ formatLang(a['theo'], currency_obj=company.currency_id) ]] + [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-Bold'}))) or removeParentNode('font') ]] [[ formatLang(a['theo'], currency_obj=company.currency_id) ]] - [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ formatLang(a['pln'], currency_obj=company.currency_id) ]] + [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-Bold'}))) or removeParentNode('font') ]] [[ formatLang(a['pln'], currency_obj=company.currency_id) ]] - [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ formatLang(a['prac'], currency_obj=company.currency_id) ]] + [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-Bold'}))) or removeParentNode('font') ]] [[ formatLang(a['prac'], currency_obj=company.currency_id) ]] - [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ formatLang(a['perc']) ]]% + [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-Bold'}))) or removeParentNode('font') ]] [[ formatLang(a['perc']) ]]% diff --git a/addons/account_budget/report/budget_report.rml b/addons/account_budget/report/budget_report.rml index 8b9835b6615..789c3ed1ffb 100644 --- a/addons/account_budget/report/budget_report.rml +++ b/addons/account_budget/report/budget_report.rml @@ -145,19 +145,19 @@ - [['.....' *(a['status']-1) ]][[ (a['status']==1 and (setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ a['name'] ]] + [['.....' *(a['status']-1) ]][[ (a['status']==1 and (setTag('para','para',{'fontName':'Helvetica-Bold'}))) or removeParentNode('font') ]] [[ a['name'] ]] - [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ formatLang(a['theo'], digits=get_digits(dp='Account'), currency_obj=company.currency_id) ]] + [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-Bold'}))) or removeParentNode('font') ]] [[ formatLang(a['theo'], digits=get_digits(dp='Account'), currency_obj=company.currency_id) ]] - [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ formatLang(a['pln'], digits=get_digits(dp='Account'), currency_obj=company.currency_id) ]] + [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-Bold'}))) or removeParentNode('font') ]] [[ formatLang(a['pln'], digits=get_digits(dp='Account'), currency_obj=company.currency_id) ]] - [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ formatLang(a['prac'], digits=get_digits(dp='Account'), currency_obj=company.currency_id) ]] + [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-Bold'}))) or removeParentNode('font') ]] [[ formatLang(a['prac'], digits=get_digits(dp='Account'), currency_obj=company.currency_id) ]] - [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ formatLang(a['perc'], digits=2) ]]% + [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-Bold'}))) or removeParentNode('font') ]] [[ formatLang(a['perc'], digits=2) ]]% diff --git a/addons/account_budget/report/crossovered_budget_report.rml b/addons/account_budget/report/crossovered_budget_report.rml index 50b7d267125..a63920a4c9f 100644 --- a/addons/account_budget/report/crossovered_budget_report.rml +++ b/addons/account_budget/report/crossovered_budget_report.rml @@ -160,19 +160,19 @@ - [['.....' *(a['status']-1) ]][[ (a['status']==1 and (setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ a['name'] ]] + [['.....' *(a['status']-1) ]][[ (a['status']==1 and (setTag('para','para',{'fontName':'Helvetica-Bold'}))) or removeParentNode('font') ]] [[ a['name'] ]] - [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ formatLang(a['theo'], dp='Account', currency_obj=company.currency_id) ]] + [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-Bold'}))) or removeParentNode('font') ]] [[ formatLang(a['theo'], dp='Account', currency_obj=company.currency_id) ]] - [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ formatLang(a['pln'], dp='Account', currency_obj=company.currency_id) ]] + [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-Bold'}))) or removeParentNode('font') ]] [[ formatLang(a['pln'], dp='Account', currency_obj=company.currency_id) ]] - [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ formatLang(a['prac'], dp='Account', currency_obj=company.currency_id) ]] + [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-Bold'}))) or removeParentNode('font') ]] [[ formatLang(a['prac'], dp='Account', currency_obj=company.currency_id) ]] - [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ formatLang(a['perc'],digits=2) ]]% + [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-Bold'}))) or removeParentNode('font') ]] [[ formatLang(a['perc'],digits=2) ]]% diff --git a/addons/account_followup/account_followup_data.xml b/addons/account_followup/account_followup_data.xml index ec18e0d2b0c..21c638fa513 100644 --- a/addons/account_followup/account_followup_data.xml +++ b/addons/account_followup/account_followup_data.xml @@ -6,9 +6,9 @@ First polite payment follow-up reminder email - ${user.email or ''} + ${(user.email or '')|safe} ${user.company_id.name} Payment Reminder - ${object.email} + ${object.email|safe} ${object.lang} @@ -45,9 +45,9 @@ ${object.get_followup_table_html() | safe} A bit urging second payment follow-up reminder email - ${user.email or ''} + ${(user.email or '')|safe} ${user.company_id.name} Payment Reminder - ${object.email} + ${object.email|safe} ${object.lang} @@ -85,9 +85,9 @@ ${object.get_followup_table_html() | safe} Urging payment follow-up reminder email - ${user.email or ''} + ${(user.email or '')|safe} ${user.company_id.name} Payment Reminder - ${object.email} + ${object.email|safe} ${object.lang} @@ -122,9 +122,9 @@ ${object.get_followup_table_html() | safe} Default payment follow-up reminder e-mail - ${user.email or ''} + ${(user.email or '')|safe} ${user.company_id.name} Payment Reminder - ${object.email} + ${object.email|safe} ${object.lang} @@ -162,7 +162,7 @@ ${object.get_followup_table_html() | safe} 0 15 - True + True Dear %(partner_name)s, diff --git a/addons/account_payment/i18n/zh_CN.po b/addons/account_payment/i18n/zh_CN.po index 69078614182..3deedfad5fa 100644 --- a/addons/account_payment/i18n/zh_CN.po +++ b/addons/account_payment/i18n/zh_CN.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-21 17:05+0000\n" -"PO-Revision-Date: 2012-11-27 10:37+0000\n" -"Last-Translator: 盈通 ccdos \n" +"PO-Revision-Date: 2013-11-19 06:25+0000\n" +"Last-Translator: Guipo Hao \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: 2013-09-12 05:48+0000\n" -"X-Generator: Launchpad (build 16761)\n" +"X-Launchpad-Export-Date: 2013-11-20 05:25+0000\n" +"X-Generator: Launchpad (build 16831)\n" #. module: account_payment #: model:ir.actions.act_window,help:account_payment.action_payment_order_tree @@ -128,7 +128,7 @@ msgstr "填充付款声明" msgid "" "You cannot cancel an invoice which has already been imported in a payment " "order. Remove it from the following payment order : %s." -msgstr "" +msgstr "不可取消已被引入付款单据的发票。请先移除下述付款单: %s." #. module: account_payment #: code:addons/account_payment/account_invoice.py:43 diff --git a/addons/account_payment/wizard/account_payment_order.py b/addons/account_payment/wizard/account_payment_order.py index de9c47ec005..8d5df048fe0 100644 --- a/addons/account_payment/wizard/account_payment_order.py +++ b/addons/account_payment/wizard/account_payment_order.py @@ -104,7 +104,7 @@ class payment_order_create(osv.osv_memory): # payment = self.pool.get('payment.order').browse(cr, uid, context['active_id'], context=context) # Search for move line to pay: - domain = [('reconcile_id', '=', False), ('account_id.type', '=', 'payable'), ('amount_residual', '>', 0)] + domain = [('reconcile_id', '=', False), ('account_id.type', '=', 'payable'), ('credit', '>', 0), ('account_id.reconcile', '=', True)] domain = domain + ['|', ('date_maturity', '<=', search_due_date), ('date_maturity', '=', False)] line_ids = line_obj.search(cr, uid, domain, context=context) context.update({'line_ids': line_ids}) diff --git a/addons/account_test/i18n/pl.po b/addons/account_test/i18n/pl.po new file mode 100644 index 00000000000..a281e3dae00 --- /dev/null +++ b/addons/account_test/i18n/pl.po @@ -0,0 +1,283 @@ +# Polish translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-11-15 13:14+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Polish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-11-16 05:45+0000\n" +"X-Generator: Launchpad (build 16831)\n" + +#. module: account_test +#: view:accounting.assert.test:0 +msgid "" +"Code should always set a variable named `result` with the result of your " +"test, that can be a list or\n" +"a dictionary. If `result` is an empty list, it means that the test was " +"succesful. Otherwise it will\n" +"try to translate and print what is inside `result`.\n" +"\n" +"If the result of your test is a dictionary, you can set a variable named " +"`column_order` to choose in\n" +"what order you want to print `result`'s content.\n" +"\n" +"Should you need them, you can also use the following variables into your " +"code:\n" +" * cr: cursor to the database\n" +" * uid: ID of the current user\n" +"\n" +"In any ways, the code must be legal python statements with correct " +"indentation (if needed).\n" +"\n" +"Example: \n" +" sql = '''SELECT id, name, ref, date\n" +" FROM account_move_line \n" +" WHERE account_id IN (SELECT id FROM account_account WHERE type " +"= 'view')\n" +" '''\n" +" cr.execute(sql)\n" +" result = cr.dictfetchall()" +msgstr "" +"Kod powinien zawsze zwracać zmienną zwaną `result` z rezultatem " +"przeprowadzonego testu, który\n" +"może być typu list lub a dictionary. Jeśli `result` jest pustą listą, to " +"oznacza że test był zakończony\n" +"sukcesem. W przeciwnym wypadku nastąpi próba tłumaczenia i wydruku " +"zawartości 'result'.\n" +"\n" +"Jeśli rezultatem jest zmienna typu a dictionary, możesz ustawić zmienną " +"nazywaną `column_order`\n" +"żeby wybrać w jakiej kolejności wydrukować zawartość `result`.\n" +"\n" +"Jeśli będziesz potrzebować, możesz również użyć w kodzie zmienne:\n" +" * cr: cursor to the database\n" +" * uid: ID of the current user\n" +"\n" +"W jakikolwiek sposób kod musi być prawdziwymi wyrażeniami języka python z " +"odpowiednimi wcięciami (tam gdzie wymagane).\n" +"\n" +"Przykład: \n" +" sql = '''SELECT id, name, ref, date\n" +" FROM account_move_line \n" +" WHERE account_id IN (SELECT id FROM account_account WHERE type " +"= 'view')\n" +" '''\n" +" cr.execute(sql)\n" +" result = cr.dictfetchall()" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_02 +msgid "Test 2: Opening a fiscal year" +msgstr "Test 2: Otwarcie roku podatkowego" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_05 +msgid "" +"Check that reconciled invoice for Sales/Purchases has reconciled entries for " +"Payable and Receivable Accounts" +msgstr "" +"Sprawdź czy uzgodnione sprawozdania faktur dla Sprzedaży/Zakupów są " +"uzgodnionymi wpisami dla kont rachunkowych Płatności i Należności" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_03 +msgid "" +"Check if movement lines are balanced and have the same date and period" +msgstr "Sprawdź czy przesunięcia są zbalansowane i mają tą samą datę i okres" + +#. module: account_test +#: field:accounting.assert.test,name:0 +msgid "Test Name" +msgstr "Testowa nazwa" + +#. module: account_test +#: report:account.test.assert.print:0 +msgid "Accouting tests on" +msgstr "Testy rachunkowe włączone" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_01 +msgid "Test 1: General balance" +msgstr "Test 1: Saldo" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_06 +msgid "Check that paid/reconciled invoices are not in 'Open' state" +msgstr "" +"Sprawdź czy zapłacone/uzgodnione faktury nie są w 'Otwarte' -ym stanie" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_05_2 +msgid "" +"Check that reconciled account moves, that define Payable and Receivable " +"accounts, are belonging to reconciled invoices" +msgstr "" +"Sprawdź czy uzgodnione sprawozdania przesunięć rachunkowych, które określają " +"konta Płatności i Należności, są przynależne do uzgodnianych sprawozdań" + +#. module: account_test +#: view:accounting.assert.test:0 +msgid "Tests" +msgstr "Testy" + +#. module: account_test +#: field:accounting.assert.test,desc:0 +msgid "Test Description" +msgstr "Testowy opis" + +#. module: account_test +#: view:accounting.assert.test:0 +msgid "Description" +msgstr "Opis" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_06_1 +msgid "Check that there's no move for any account with « View » account type" +msgstr "Sprawdź czy nie ma przesunięć dla konta typu « View »" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_08 +msgid "Test 9 : Accounts and partners on account moves" +msgstr "Test 9: Rachunki i kontrahenci w przesunięciach rachunkowych" + +#. module: account_test +#: model:ir.actions.act_window,name:account_test.action_accounting_assert +#: model:ir.actions.report.xml,name:account_test.account_assert_test_report +#: model:ir.ui.menu,name:account_test.menu_action_license +msgid "Accounting Tests" +msgstr "Testy rachunkowe" + +#. module: account_test +#: code:addons/account_test/report/account_test_report.py:74 +#, python-format +msgid "The test was passed successfully" +msgstr "Test został zdany" + +#. module: account_test +#: field:accounting.assert.test,active:0 +msgid "Active" +msgstr "Aktywny" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_06 +msgid "Test 6 : Invoices status" +msgstr "Test 6: Status faktur" + +#. module: account_test +#: model:ir.model,name:account_test.model_accounting_assert_test +msgid "accounting.assert.test" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_05 +msgid "" +"Test 5.1 : Payable and Receivable accountant lines of reconciled invoices" +msgstr "Test 5.1: Linijki kont Płatności i Należności uzgadnianych faktur" + +#. module: account_test +#: field:accounting.assert.test,code_exec:0 +msgid "Python code" +msgstr "Kod języka Python" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_07 +msgid "" +"Check on bank statement that the Closing Balance = Starting Balance + sum of " +"statement lines" +msgstr "" +"Sprawdź na wyciągu bankowym Bilans zamknięcia = Saldo początkowe + suma " +"wyciągu bankowego" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_07 +msgid "Test 8 : Closing balance on bank statements" +msgstr "Test 8: Saldo końcowe na wyciągu bankowym" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_03 +msgid "Test 3: Movement lines" +msgstr "Test 3: Przesunięcia" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_05_2 +msgid "Test 5.2 : Reconcilied invoices and Payable/Receivable accounts" +msgstr "" +"Test 5.2: Uzgadniane sprawozdania finansowe faktur i kont " +"Płatności/Należności" + +#. module: account_test +#: view:accounting.assert.test:0 +msgid "Expression" +msgstr "Wyrażenie" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_04 +msgid "Test 4: Totally reconciled mouvements" +msgstr "Test 4: Uzgadnianie sprawozdań finansowych przesunięć" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_04 +msgid "Check if the totally reconciled movements are balanced" +msgstr "" +"Sprawdź czy uzgodniane sprawozdania finansowe przesunięć są zbilansowane" + +#. module: account_test +#: field:accounting.assert.test,sequence:0 +msgid "Sequence" +msgstr "Sekwencja" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_02 +msgid "" +"Check if the balance of the new opened fiscal year matches with last year's " +"balance" +msgstr "" +"Sprawdź czy bilans nowo otwartego roku fiskalnego zgadza się z bilansem " +"poprzedniego roku" + +#. module: account_test +#: view:accounting.assert.test:0 +msgid "Python Code" +msgstr "Kod języka Python" + +#. module: account_test +#: model:ir.actions.act_window,help:account_test.action_accounting_assert +msgid "" +"

\n" +" Click to create Accounting Test.\n" +"

\n" +" " +msgstr "" +"

\n" +" Kliknij aby utworzyć test rachunkowy\n" +"

\n" +" " + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_01 +msgid "Check the balance: Debit sum = Credit sum" +msgstr "Sprawdź bilans: Suma wydatków = suma kredytowa" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_08 +msgid "Check that general accounts and partners on account moves are active" +msgstr "Sprawdź czy główne konta i firmy na kontach są aktywne" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_06_1 +msgid "Test 7: « View  » account type" +msgstr "Test 7: Podgląd typu konta" + +#. module: account_test +#: view:accounting.assert.test:0 +msgid "Code Help" +msgstr "Kod pomocy" diff --git a/addons/analytic_user_function/i18n/zh_CN.po b/addons/analytic_user_function/i18n/zh_CN.po index 710a1a8c414..a051a71ab89 100644 --- a/addons/analytic_user_function/i18n/zh_CN.po +++ b/addons/analytic_user_function/i18n/zh_CN.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-21 17:05+0000\n" -"PO-Revision-Date: 2012-11-29 14:18+0000\n" -"Last-Translator: 盈通 ccdos \n" +"PO-Revision-Date: 2013-11-19 09:19+0000\n" +"Last-Translator: Guipo Hao \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: 2013-09-12 06:00+0000\n" -"X-Generator: Launchpad (build 16761)\n" +"X-Launchpad-Export-Date: 2013-11-20 05:25+0000\n" +"X-Generator: Launchpad (build 16831)\n" #. module: analytic_user_function #: model:ir.model,name:analytic_user_function.model_account_analytic_line @@ -78,6 +78,8 @@ msgid "" " of the default values when invoicing the " "customer." msgstr "" +"定义为特定用户指定的服务(例如:高级咨询师)\n" +" 以及价格,在为顾客开票时用来取代默认值。" #. module: analytic_user_function #: field:analytic.user.funct.grid,uom_id:0 @@ -105,6 +107,9 @@ msgid "" " specific user. This allows to set invoicing\n" " conditions for a group of contracts." msgstr "" +"OpenERP 将循环搜索父帐 \n" +" 来检查是否为特定用户定义特定条件。\n" +" 这样做允许为一组合同设置账单条件。" #. module: analytic_user_function #: field:analytic.user.funct.grid,user_id:0 diff --git a/addons/auth_oauth/controllers/main.py b/addons/auth_oauth/controllers/main.py index bedf32ae776..af8b36d2556 100644 --- a/addons/auth_oauth/controllers/main.py +++ b/addons/auth_oauth/controllers/main.py @@ -19,7 +19,7 @@ _logger = logging.getLogger(__name__) #---------------------------------------------------------- def fragment_to_query_string(func): @functools.wraps(func) - def wrapper(self, **kw): + def wrapper(self, *a, **kw): if not kw: return """""" - return func(self, **kw) + return func(self, *a, **kw) return wrapper diff --git a/addons/auth_oauth/i18n/ru.po b/addons/auth_oauth/i18n/ru.po new file mode 100644 index 00000000000..d5c1c90b95e --- /dev/null +++ b/addons/auth_oauth/i18n/ru.po @@ -0,0 +1,135 @@ +# Russian translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-11-13 06:38+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Russian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-11-14 05:23+0000\n" +"X-Generator: Launchpad (build 16820)\n" + +#. module: auth_oauth +#: field:auth.oauth.provider,validation_endpoint:0 +msgid "Validation URL" +msgstr "" + +#. module: auth_oauth +#: field:auth.oauth.provider,auth_endpoint:0 +msgid "Authentication URL" +msgstr "" + +#. module: auth_oauth +#: model:ir.model,name:auth_oauth.model_base_config_settings +msgid "base.config.settings" +msgstr "" + +#. module: auth_oauth +#: field:auth.oauth.provider,name:0 +msgid "Provider name" +msgstr "" + +#. module: auth_oauth +#: field:auth.oauth.provider,scope:0 +msgid "Scope" +msgstr "" + +#. module: auth_oauth +#: field:res.users,oauth_provider_id:0 +msgid "OAuth Provider" +msgstr "" + +#. module: auth_oauth +#: field:auth.oauth.provider,css_class:0 +msgid "CSS class" +msgstr "" + +#. module: auth_oauth +#: field:auth.oauth.provider,body:0 +msgid "Body" +msgstr "" + +#. module: auth_oauth +#: model:ir.model,name:auth_oauth.model_res_users +msgid "Users" +msgstr "" + +#. module: auth_oauth +#: field:auth.oauth.provider,sequence:0 +msgid "unknown" +msgstr "" + +#. module: auth_oauth +#: field:res.users,oauth_access_token:0 +msgid "OAuth Access Token" +msgstr "" + +#. module: auth_oauth +#: field:auth.oauth.provider,client_id:0 +#: field:base.config.settings,auth_oauth_facebook_client_id:0 +#: field:base.config.settings,auth_oauth_google_client_id:0 +msgid "Client ID" +msgstr "" + +#. module: auth_oauth +#: model:ir.ui.menu,name:auth_oauth.menu_oauth_providers +msgid "OAuth Providers" +msgstr "" + +#. module: auth_oauth +#: model:ir.model,name:auth_oauth.model_auth_oauth_provider +msgid "OAuth2 provider" +msgstr "" + +#. module: auth_oauth +#: field:res.users,oauth_uid:0 +msgid "OAuth User ID" +msgstr "" + +#. module: auth_oauth +#: field:base.config.settings,auth_oauth_facebook_enabled:0 +msgid "Allow users to sign in with Facebook" +msgstr "" + +#. module: auth_oauth +#: sql_constraint:res.users:0 +msgid "OAuth UID must be unique per provider" +msgstr "" + +#. module: auth_oauth +#: help:res.users,oauth_uid:0 +msgid "Oauth Provider user_id" +msgstr "" + +#. module: auth_oauth +#: field:auth.oauth.provider,data_endpoint:0 +msgid "Data URL" +msgstr "" + +#. module: auth_oauth +#: view:auth.oauth.provider:0 +msgid "arch" +msgstr "" + +#. module: auth_oauth +#: model:ir.actions.act_window,name:auth_oauth.action_oauth_provider +msgid "Providers" +msgstr "" + +#. module: auth_oauth +#: field:base.config.settings,auth_oauth_google_enabled:0 +msgid "Allow users to sign in with Google" +msgstr "" + +#. module: auth_oauth +#: field:auth.oauth.provider,enabled:0 +msgid "Allowed" +msgstr "" diff --git a/addons/base_crypt/i18n/hu.po b/addons/auth_oauth_signup/i18n/pl.po similarity index 50% rename from addons/base_crypt/i18n/hu.po rename to addons/auth_oauth_signup/i18n/pl.po index efcaca7670c..1aa134cea39 100644 --- a/addons/base_crypt/i18n/hu.po +++ b/addons/auth_oauth_signup/i18n/pl.po @@ -1,4 +1,4 @@ -# Hungarian translation for openobject-addons +# Polish translation for openobject-addons # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the openobject-addons package. # FIRST AUTHOR , 2013. @@ -7,17 +7,17 @@ msgid "" msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2013-03-16 00:07+0000\n" -"Last-Translator: krnkris \n" -"Language-Team: Hungarian \n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-11-14 12:00+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Polish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" +"X-Launchpad-Export-Date: 2013-11-15 05:47+0000\n" +"X-Generator: Launchpad (build 16831)\n" -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users +#. module: auth_oauth_signup +#: model:ir.model,name:auth_oauth_signup.model_res_users msgid "Users" -msgstr "Felhasználók" +msgstr "Użytkownicy" diff --git a/addons/auth_signup/auth_signup_data.xml b/addons/auth_signup/auth_signup_data.xml index 1b4e3e05502..65ada8f39db 100644 --- a/addons/auth_signup/auth_signup_data.xml +++ b/addons/auth_signup/auth_signup_data.xml @@ -22,8 +22,8 @@ Reset Password - ]]> - ${object.email} + ]]> + ${object.email|safe} Password reset A password reset was requested for the OpenERP account linked to this email.

@@ -37,8 +37,8 @@ OpenERP Enterprise Connection - ]]> - ${object.email} + ]]> + ${object.email|safe} - diff --git a/addons/base_calendar/i18n/sl.po b/addons/base_calendar/i18n/sl.po index c7a74bf8bee..2687efb766e 100644 --- a/addons/base_calendar/i18n/sl.po +++ b/addons/base_calendar/i18n/sl.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-21 17:05+0000\n" -"PO-Revision-Date: 2012-05-10 17:33+0000\n" -"Last-Translator: Raphael Collet (OpenERP) \n" +"PO-Revision-Date: 2013-11-11 13:22+0000\n" +"Last-Translator: Darja Zorman \n" "Language-Team: Slovenian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:24+0000\n" -"X-Generator: Launchpad (build 16761)\n" +"X-Launchpad-Export-Date: 2013-11-12 05:41+0000\n" +"X-Generator: Launchpad (build 16820)\n" #. module: base_calendar #: selection:calendar.alarm,trigger_related:0 @@ -36,6 +36,8 @@ msgid "" "This property defines the list of date/time exceptions for a recurring " "calendar component." msgstr "" +"Ta lastnost določa seznam datumskih/časovnih izjem za ponavljajoč koledarski " +"dogodek." #. module: base_calendar #: selection:calendar.event,rrule_type:0 @@ -61,18 +63,18 @@ msgstr "Neopredeljeno" #: help:calendar.todo,recurrency:0 #: help:crm.meeting,recurrency:0 msgid "Recurrent Meeting" -msgstr "" +msgstr "Ponavljajoč sestanek" #. module: base_calendar #: model:crm.meeting.type,name:base_calendar.categ_meet5 msgid "Feedback Meeting" -msgstr "" +msgstr "Sestanek za analizo odzivov" #. module: base_calendar #: model:ir.actions.act_window,name:base_calendar.action_res_alarm_view #: model:ir.ui.menu,name:base_calendar.menu_crm_meeting_avail_alarm msgid "Alarms" -msgstr "Alarmi" +msgstr "Opozorila" #. module: base_calendar #: selection:calendar.event,week_list:0 @@ -90,7 +92,7 @@ msgstr "Vloga" #: view:calendar.event:0 #: view:crm.meeting:0 msgid "Invitation details" -msgstr "" +msgstr "Podrobnosti povabila" #. module: base_calendar #: selection:calendar.event,byday:0 @@ -137,7 +139,7 @@ msgstr "Marec" #. module: base_calendar #: help:calendar.attendee,cutype:0 msgid "Specify the type of Invitation" -msgstr "" +msgstr "Vrsta povabila" #. module: base_calendar #: view:crm.meeting:0 @@ -182,7 +184,7 @@ msgstr "Če je izbrano, zahtevajo nova sporočila vašo pozornost." #. module: base_calendar #: help:calendar.attendee,rsvp:0 msgid "Indicats whether the favor of a reply is requested" -msgstr "" +msgstr "Označuje, če je potrebna privolitev na odgovor" #. module: base_calendar #: field:calendar.alarm,alarm_id:0 @@ -192,12 +194,12 @@ msgstr "Osnovno Opozorilo" #. module: base_calendar #: help:calendar.attendee,delegated_to:0 msgid "The users that the original request was delegated to" -msgstr "" +msgstr "Uporabnik, ki mu je bil v osnovi dodeljen zahtevek" #. module: base_calendar #: field:calendar.attendee,ref:0 msgid "Event Ref" -msgstr "" +msgstr "Referenca dogodka" #. module: base_calendar #: field:calendar.event,tu:0 @@ -256,7 +258,7 @@ msgstr "Napaka!" #. module: base_calendar #: selection:calendar.attendee,role:0 msgid "Chair Person" -msgstr "" +msgstr "Vodja" #. module: base_calendar #: view:crm.meeting:0 @@ -266,14 +268,14 @@ msgstr "Moji sestanki" #. module: base_calendar #: selection:calendar.alarm,action:0 msgid "Procedure" -msgstr "" +msgstr "Postopek" #. module: base_calendar #: field:calendar.event,recurrent_id:0 #: field:calendar.todo,recurrent_id:0 #: field:crm.meeting,recurrent_id:0 msgid "Recurrent ID" -msgstr "" +msgstr "Ponavljajoč ID" #. module: base_calendar #: selection:calendar.event,state:0 @@ -295,22 +297,22 @@ msgstr "Prikaži" #. module: base_calendar #: help:calendar.attendee,state:0 msgid "Status of the attendee's participation" -msgstr "" +msgstr "Status sodelovanja udeležencev" #. module: base_calendar #: view:crm.meeting:0 msgid "Mail To" -msgstr "" +msgstr "E-pošta za:" #. module: base_calendar #: field:crm.meeting,name:0 msgid "Meeting Subject" -msgstr "" +msgstr "Zadeva sestanka" #. module: base_calendar #: view:calendar.event:0 msgid "End of Recurrence" -msgstr "" +msgstr "Konec ponavljanja" #. module: base_calendar #: view:calendar.event:0 @@ -320,12 +322,12 @@ msgstr "Združi po ..." #. module: base_calendar #: view:calendar.event:0 msgid "Recurrency Option" -msgstr "" +msgstr "Opcija ponavljanja" #. module: base_calendar #: view:calendar.event:0 msgid "Choose day where repeat the meeting" -msgstr "" +msgstr "Izberite datum ponovitve sestanka" #. module: base_calendar #: view:crm.meeting:0 @@ -338,18 +340,18 @@ msgstr "Sestanki" #: field:calendar.todo,recurrent_id_date:0 #: field:crm.meeting,recurrent_id_date:0 msgid "Recurrent ID date" -msgstr "" +msgstr "Datum ID-ponavljanja" #. module: base_calendar #: field:calendar.alarm,event_end_date:0 #: field:calendar.attendee,event_end_date:0 msgid "Event End Date" -msgstr "" +msgstr "Končni datum dogodka" #. module: base_calendar #: selection:calendar.attendee,role:0 msgid "Optional Participation" -msgstr "" +msgstr "Opcijsko sodelovanje" #. module: base_calendar #: help:crm.meeting,message_summary:0 @@ -376,6 +378,8 @@ msgid "" "If the active field is set to true, it will allow you to hide the " "event alarm information without removing it." msgstr "" +"Če je polje označeno, bo dovolilo skriti alarm dogodka, ne da bi ga " +"izbrisali." #. module: base_calendar #: field:calendar.alarm,repeat:0 @@ -456,17 +460,17 @@ msgstr "Ned" #. module: base_calendar #: field:calendar.attendee,cutype:0 msgid "Invite Type" -msgstr "" +msgstr "Tip povabila" #. module: base_calendar #: view:res.alarm:0 msgid "Reminder details" -msgstr "" +msgstr "Podrobnosti opomina" #. module: base_calendar #: field:calendar.attendee,parent_ids:0 msgid "Delegrated From" -msgstr "" +msgstr "Zadolžen od" #. module: base_calendar #: selection:calendar.event,select1:0 @@ -490,7 +494,7 @@ msgstr "Lokacija" #. module: base_calendar #: selection:calendar.attendee,role:0 msgid "Participation required" -msgstr "" +msgstr "Sodelovanje zahtevano" #. module: base_calendar #: view:calendar.event:0 @@ -519,13 +523,13 @@ msgstr "Zaženi" #. module: base_calendar #: model:ir.model,name:base_calendar.model_calendar_alarm msgid "Event alarm information" -msgstr "" +msgstr "Informacija o alarmu dogodka" #. module: base_calendar #: code:addons/base_calendar/base_calendar.py:1017 #, python-format msgid "Count cannot be negative or 0." -msgstr "" +msgstr "Število ne more biti negativno ali nič" #. module: base_calendar #: field:crm.meeting,create_date:0 @@ -566,7 +570,7 @@ msgstr "" #. module: base_calendar #: model:ir.model,name:base_calendar.model_mail_wizard_invite msgid "Invite wizard" -msgstr "" +msgstr "Pomočnik za povabila" #. module: base_calendar #: selection:calendar.event,month_list:0 @@ -590,32 +594,32 @@ msgstr "Čet" #. module: base_calendar #: view:crm.meeting:0 msgid "Meeting Details" -msgstr "" +msgstr "Podrobnosti sestanka" #. module: base_calendar #: field:calendar.attendee,child_ids:0 msgid "Delegrated To" -msgstr "" +msgstr "Zadolžen" #. module: base_calendar #: code:addons/base_calendar/crm_meeting.py:102 #, python-format msgid "The following contacts have no email address :" -msgstr "" +msgstr "Naslednji kontakti nimajo elektronskega naslova:" #. module: base_calendar #: selection:calendar.event,rrule_type:0 #: selection:calendar.todo,rrule_type:0 #: selection:crm.meeting,rrule_type:0 msgid "Year(s)" -msgstr "" +msgstr "Let" #. module: base_calendar #: view:crm.meeting.type:0 #: model:ir.actions.act_window,name:base_calendar.action_crm_meeting_type #: model:ir.ui.menu,name:base_calendar.menu_crm_meeting_type msgid "Meeting Types" -msgstr "" +msgstr "Tipi sestankov" #. module: base_calendar #: field:calendar.event,create_date:0 @@ -628,7 +632,7 @@ msgstr "Ustvarjeno" #: selection:calendar.todo,class:0 #: selection:crm.meeting,class:0 msgid "Public for Employees" -msgstr "" +msgstr "Javno za zaposlene" #. module: base_calendar #: view:crm.meeting:0 @@ -723,7 +727,7 @@ msgstr "lastnik" #: help:calendar.todo,rrule_type:0 #: help:crm.meeting,rrule_type:0 msgid "Let the event automatically repeat at that interval" -msgstr "" +msgstr "Naj se dogodek avtomatično ponovi v tem intervalu" #. module: base_calendar #: model:ir.ui.menu,name:base_calendar.mail_menu_calendar @@ -745,6 +749,7 @@ msgstr "Zavrnjeno" #, python-format msgid "Group by date is not supported, use the calendar view instead." msgstr "" +"Grupiranje po datumu ni možno, uporabite namesto tega pogled koledarja." #. module: base_calendar #: view:calendar.event:0 @@ -775,7 +780,7 @@ msgstr "Zasebno" #. module: base_calendar #: model:ir.model,name:base_calendar.model_res_alarm msgid "Basic Alarm Information" -msgstr "" +msgstr "Osnovna informacija alarma" #. module: base_calendar #: field:calendar.event,fr:0 @@ -787,7 +792,7 @@ msgstr "Pet" #. module: base_calendar #: view:calendar.event:0 msgid "Invitation Detail" -msgstr "" +msgstr "Podrobnosti vabila" #. module: base_calendar #: field:calendar.attendee,member:0 @@ -806,7 +811,7 @@ msgstr "Lokacija Dogodka" #: field:calendar.todo,rrule:0 #: field:crm.meeting,rrule:0 msgid "Recurrent Rule" -msgstr "" +msgstr "Ponavljajoče pravilo" #. module: base_calendar #: selection:calendar.alarm,state:0 @@ -846,7 +851,7 @@ msgstr "Število ponovitev" #. module: base_calendar #: model:crm.meeting.type,name:base_calendar.categ_meet2 msgid "Internal Meeting" -msgstr "" +msgstr "Interni sestanek" #. module: base_calendar #: view:calendar.event:0 @@ -868,12 +873,12 @@ msgstr "Status" #. module: base_calendar #: help:calendar.attendee,email:0 msgid "Email of Invited Person" -msgstr "" +msgstr "Elektronski naslov povabljene osebe" #. module: base_calendar #: model:crm.meeting.type,name:base_calendar.categ_meet1 msgid "Customer Meeting" -msgstr "" +msgstr "Sestanek s kupcem" #. module: base_calendar #: help:calendar.attendee,dir:0 @@ -899,7 +904,7 @@ msgstr "Ponedeljek" #. module: base_calendar #: model:crm.meeting.type,name:base_calendar.categ_meet4 msgid "Open Discussion" -msgstr "" +msgstr "Odprte diskusije" #. module: base_calendar #: model:ir.model,name:base_calendar.model_ir_model @@ -929,12 +934,12 @@ msgstr "Povabila" #: view:calendar.event:0 #: view:crm.meeting:0 msgid "The" -msgstr "" +msgstr "Ta" #. module: base_calendar #: field:crm.meeting,write_date:0 msgid "Write Date" -msgstr "" +msgstr "Datum zapisa" #. module: base_calendar #: field:calendar.attendee,delegated_from:0 @@ -973,7 +978,7 @@ msgstr "November" #. module: base_calendar #: help:calendar.attendee,member:0 msgid "Indicate the groups that the attendee belongs to" -msgstr "" +msgstr "Določitev skupin, katerim pripada ta udeleženec" #. module: base_calendar #: field:calendar.event,mo:0 @@ -1003,7 +1008,7 @@ msgstr "Negotov" #: constraint:calendar.todo:0 #: constraint:crm.meeting:0 msgid "Error ! End date cannot be set before start date." -msgstr "" +msgstr "Napaka! Končni datum ne more biti pred začetnim." #. module: base_calendar #: field:calendar.alarm,trigger_occurs:0 @@ -1022,7 +1027,7 @@ msgstr "Januar" #: field:calendar.alarm,trigger_related:0 #: field:res.alarm,trigger_related:0 msgid "Related to" -msgstr "" +msgstr "Povezan z" #. module: base_calendar #: field:calendar.alarm,trigger_interval:0 @@ -1057,12 +1062,12 @@ msgstr "Aktiven" #: code:addons/base_calendar/base_calendar.py:399 #, python-format msgid "You cannot duplicate a calendar attendee." -msgstr "" +msgstr "Ne morete podvojiti prisotnega v koledarju" #. module: base_calendar #: view:calendar.event:0 msgid "Choose day in the month where repeat the meeting" -msgstr "" +msgstr "Izberite dan , ko se sestanek ponovi" #. module: base_calendar #: field:calendar.alarm,action:0 @@ -1076,26 +1081,28 @@ msgid "" "Duration' and 'Repeat' are both optional, but if one occurs, so MUST the " "other" msgstr "" +"'Trajanje' in 'Ponovitev' sta opcijska, ampak če je določen eden, je OBVEZEN " +"tudi drugi" #. module: base_calendar #: help:calendar.attendee,role:0 msgid "Participation role for the calendar user" -msgstr "" +msgstr "Vloga sodelovanja za uporabnika koledarja" #. module: base_calendar #: field:calendar.attendee,delegated_to:0 msgid "Delegated To" -msgstr "" +msgstr "Zadolžen" #. module: base_calendar #: help:calendar.alarm,action:0 msgid "Defines the action to be invoked when an alarm is triggered" -msgstr "" +msgstr "Definira aktivnost, ki bo klicana ob sprožitvi alarma" #. module: base_calendar #: view:crm.meeting:0 msgid "Starting at" -msgstr "" +msgstr "Pričetek ob" #. module: base_calendar #: selection:calendar.event,end_type:0 @@ -1116,13 +1123,15 @@ msgid "" "If the active field is set to true, it will allow you to hide the event " "alarm information without removing it." msgstr "" +"Če je aktivno polje označeno, bo dovoljeno skriti alarm dogodka ne da bi ga " +"bilo treba brisati." #. module: base_calendar #: field:calendar.event,end_type:0 #: field:calendar.todo,end_type:0 #: field:crm.meeting,end_type:0 msgid "Recurrence Termination" -msgstr "" +msgstr "Preklic ponavljanja" #. module: base_calendar #: view:crm.meeting:0 @@ -1132,12 +1141,12 @@ msgstr "Do" #. module: base_calendar #: view:res.alarm:0 msgid "Reminder Details" -msgstr "" +msgstr "Podrobnosti opomina" #. module: base_calendar #: model:crm.meeting.type,name:base_calendar.categ_meet3 msgid "Off-site Meeting" -msgstr "" +msgstr "Sestanek na zunanji lokaciji" #. module: base_calendar #: view:crm.meeting:0 @@ -1159,7 +1168,7 @@ msgstr "Ponovi vsak (Dan/Teden/Mesec/Leto)" #. module: base_calendar #: view:crm.meeting:0 msgid "All Day?" -msgstr "" +msgstr "Ves dan?" #. module: base_calendar #: view:calendar.event:0 @@ -1180,6 +1189,15 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Kliknite za načrtovanje novega sestanka.\n" +"

\n" +" Koledar imajo zaposleni v skupni rabi in je popolnoma integriran " +"z\n" +" ostalimi aplikacijami kot so dopusti zaposlenih ali poslovne\n" +" priložnosti.\n" +"

\n" +" " #. module: base_calendar #: help:calendar.alarm,description:0 @@ -1187,7 +1205,7 @@ msgid "" "Provides a more complete description of the " "calendar component, than that provided by the " "\"SUMMARY\" property" -msgstr "" +msgstr "Podrobnejši opis dogodka v koledarju, kakor je tisti v povzetku." #. module: base_calendar #: view:calendar.event:0 @@ -1197,7 +1215,7 @@ msgstr "Odgovorni uporabnik" #. module: base_calendar #: view:crm.meeting:0 msgid "Select Weekdays" -msgstr "" +msgstr "Izberite dneve v tednu" #. module: base_calendar #: code:addons/base_calendar/base_calendar.py:1521 @@ -1212,21 +1230,21 @@ msgstr "Zaseden" #. module: base_calendar #: model:ir.model,name:base_calendar.model_calendar_event msgid "Calendar Event" -msgstr "" +msgstr "Dogodek v koledarju" #. module: base_calendar #: field:calendar.event,recurrency:0 #: field:calendar.todo,recurrency:0 #: field:crm.meeting,recurrency:0 msgid "Recurrent" -msgstr "" +msgstr "ponavljajoč" #. module: base_calendar #: field:calendar.event,rrule_type:0 #: field:calendar.todo,rrule_type:0 #: field:crm.meeting,rrule_type:0 msgid "Recurrency" -msgstr "" +msgstr "ponavljanje" #. module: base_calendar #: selection:calendar.event,week_list:0 @@ -1240,13 +1258,13 @@ msgstr "Četrtek" #: field:calendar.todo,exrule:0 #: field:crm.meeting,exrule:0 msgid "Exception Rule" -msgstr "" +msgstr "Pravilo izjeme" #. module: base_calendar #: help:calendar.attendee,language:0 msgid "" "To specify the language for text values in aproperty or property parameter." -msgstr "" +msgstr "Določitev jezika za besedila v lastnostih ali parametrih." #. module: base_calendar #: view:calendar.event:0 @@ -1261,6 +1279,8 @@ msgid "" "Defines a rule or repeating pattern of time to exclude from the recurring " "rule." msgstr "" +"Določitev pravila ali ponavljajočega vzorca časa za izključitev iz " +"ponavljajočega pravila." #. module: base_calendar #: field:calendar.event,month_list:0 @@ -1279,12 +1299,12 @@ msgstr "Dan(Dni)" #. module: base_calendar #: view:calendar.event:0 msgid "Confirmed Events" -msgstr "" +msgstr "Potrjeni dogodki" #. module: base_calendar #: field:calendar.attendee,dir:0 msgid "URI Reference" -msgstr "" +msgstr "URI referenca" #. module: base_calendar #: field:calendar.alarm,description:0 @@ -1323,7 +1343,7 @@ msgstr "ir.values" #. module: base_calendar #: view:crm.meeting:0 msgid "Search Meetings" -msgstr "" +msgstr "Iskanje sestankov" #. module: base_calendar #: model:ir.model,name:base_calendar.model_ir_attachment @@ -1333,12 +1353,12 @@ msgstr "ir.attachment" #. module: base_calendar #: model:ir.model,name:base_calendar.model_crm_meeting_type msgid "Meeting Type" -msgstr "" +msgstr "Tip sestanka" #. module: base_calendar #: selection:calendar.attendee,state:0 msgid "Delegated" -msgstr "" +msgstr "Delegirano" #. module: base_calendar #: field:calendar.event,sa:0 @@ -1359,6 +1379,13 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Kliknite za določitev novega tipa alarma.\n" +"

\n" +" Določite lahko poljuben tip alarma koledarja, ki se lahko \n" +" priredi koledarskih dogodkom ali sestankom.\n" +"

\n" +" " #. module: base_calendar #: selection:crm.meeting,state:0 @@ -1368,7 +1395,7 @@ msgstr "Nepotrjeno" #. module: base_calendar #: help:calendar.attendee,sent_by:0 msgid "Specify the user that is acting on behalf of the calendar user" -msgstr "" +msgstr "Določite uporabnika, ki ukrepa namesto koledarskega uporabnika" #. module: base_calendar #: view:calendar.event:0 @@ -1401,7 +1428,7 @@ msgstr "Ime" #: field:calendar.todo,exdate:0 #: field:crm.meeting,exdate:0 msgid "Exception Date/Times" -msgstr "" +msgstr "Datum/čas izjeme" #. module: base_calendar #: help:calendar.alarm,name:0 @@ -1409,11 +1436,13 @@ msgid "" "Contains the text to be used as the message subject for " "email or contains the text to be used for display" msgstr "" +"Vsebuje tekst za uporabo v naslovu elektronskega sporočila ali tekst, ki se " +"uporabi za izpis" #. module: base_calendar #: model:ir.model,name:base_calendar.model_mail_message msgid "Message" -msgstr "" +msgstr "Sporočilo" #. module: base_calendar #: field:calendar.event,base_calendar_alarm_id:0 @@ -1425,7 +1454,7 @@ msgstr "Opozorilo" #. module: base_calendar #: field:calendar.attendee,sent_by_uid:0 msgid "Sent By User" -msgstr "" +msgstr "Poslal uporabnik" #. module: base_calendar #: selection:calendar.event,month_list:0 @@ -1438,12 +1467,12 @@ msgstr "April" #: code:addons/base_calendar/crm_meeting.py:106 #, python-format msgid "Email addresses not found" -msgstr "" +msgstr "Ne najdem elektronskega naslova" #. module: base_calendar #: view:calendar.event:0 msgid "Recurrency period" -msgstr "" +msgstr "Obdobje ponavljanja" #. module: base_calendar #: field:calendar.event,week_list:0 @@ -1456,7 +1485,7 @@ msgstr "Delovni dan" #: code:addons/base_calendar/base_calendar.py:1015 #, python-format msgid "Interval cannot be negative." -msgstr "" +msgstr "Interval ne more biti negativen." #. module: base_calendar #: field:calendar.event,byday:0 @@ -1469,12 +1498,12 @@ msgstr "Po dnevih" #: code:addons/base_calendar/base_calendar.py:441 #, python-format msgid "First you have to specify the date of the invitation." -msgstr "" +msgstr "Najprej določite datum povabila." #. module: base_calendar #: field:calendar.alarm,model_id:0 msgid "Model" -msgstr "" +msgstr "Model" #. module: base_calendar #: selection:calendar.alarm,action:0 @@ -1491,7 +1520,7 @@ msgstr "ID" #. module: base_calendar #: selection:calendar.attendee,role:0 msgid "For information Purpose" -msgstr "" +msgstr "Za informativni namen" #. module: base_calendar #: field:calendar.event,select1:0 @@ -1503,7 +1532,7 @@ msgstr "Možnost" #. module: base_calendar #: model:ir.model,name:base_calendar.model_calendar_attendee msgid "Attendee information" -msgstr "" +msgstr "Prisotnost" #. module: base_calendar #: field:calendar.alarm,res_id:0 @@ -1532,7 +1561,7 @@ msgstr "Zaporedje" #: help:calendar.todo,alarm_id:0 #: help:crm.meeting,alarm_id:0 msgid "Set an alarm at this time, before the event occurs" -msgstr "" +msgstr "Nastavi alarm za ta čas, preden nastopi dogodek" #. module: base_calendar #: view:calendar.event:0 @@ -1552,7 +1581,7 @@ msgstr "Sobota" #: field:calendar.todo,interval:0 #: field:crm.meeting,interval:0 msgid "Repeat Every" -msgstr "" +msgstr "Ponavljaj vsakih" #. module: base_calendar #: selection:calendar.event,byday:0 @@ -1593,6 +1622,11 @@ msgid "" " * Points to a procedure resource, which is invoked when " " the alarm is triggered for procedure." msgstr "" +"* Določite zvok, ki bo klican ko se sproži akcija za zvok,\n" +" * datoteka, predvidena za pošiljanje kot priponka " +"elektronskemu sporočilu,\n" +" * določitev vira postopka, ki bo klican, ko se sproži " +"alarm za postopek." #. module: base_calendar #: selection:calendar.event,byday:0 diff --git a/addons/base_crypt/i18n/ar.po b/addons/base_crypt/i18n/ar.po deleted file mode 100644 index 315509fb91c..00000000000 --- a/addons/base_crypt/i18n/ar.po +++ /dev/null @@ -1,74 +0,0 @@ -# Arabic translation for openobject-addons -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-12-01 18:05+0000\n" -"Last-Translator: gehad shaat \n" -"Language-Team: Arabic \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "المستخدمون" - -#~ msgid "Base - Password Encryption" -#~ msgstr "قاعدة - تشفير كلمة المرور" - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "يرجى تحديد كلمة السر!" - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "لا يمكن ان يكون هناك اثنين مستخدمين بنفس اسم الدخول!" - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "الشركة المختارة غير مدرجة ضمن قائمة الشركات المسموحة لهذا المستخدم" - -#, python-format -#~ msgid "Error" -#~ msgstr "خطأ" - -#~ msgid "res.users" -#~ msgstr "مستخدمي المراجع" - -#~ msgid "" -#~ "This module replaces the cleartext password in the database with a password " -#~ "hash,\n" -#~ "preventing anyone from reading the original password.\n" -#~ "For your existing user base, the removal of the cleartext passwords occurs " -#~ "the first time\n" -#~ "a user logs into the database, after installing base_crypt.\n" -#~ "After installing this module it won't be possible to recover a forgotten " -#~ "password for your\n" -#~ "users, the only solution is for an admin to set a new password.\n" -#~ "\n" -#~ "Note: installing this module does not mean you can ignore basic security " -#~ "measures,\n" -#~ "as the password is still transmitted unencrypted on the network (by the " -#~ "client),\n" -#~ "unless you are using a secure protocol such as XML-RPCS.\n" -#~ " " -#~ msgstr "" -#~ "يستبدل هذه الوحدة كلمة السر بنص واضح في قاعدة البيانات مع شرطة كلمة السر،\n" -#~ "منع أي شخص من قراءة كلمة السر الأصلية.\n" -#~ "لقاعدة المستخدم القائم الخاص بك ، وإزالة كلمات المرور نص واضح يحدث للمرة " -#~ "الأولى\n" -#~ "تسجيل دخول المستخدم في قاعدة البيانات، بعد تثبيت base_crypt.\n" -#~ "بعد تركيب هذه الوحدة لن يكون من الممكن استرجاع كلمة المرور المنسية\n" -#~ "للمستخدمين، والحل الوحيد هو المسير لتعيين كلمة مرور جديدة.\n" -#~ "\n" -#~ "ملاحظة: تركيب هذه الوحدة لا يعني يمكنك تجاهل التدابير الأمنية الأساسية،\n" -#~ "كما لا تزال تبث كلمة المرور غير مشفرة على شبكة الاتصال (من قبل العميل)،\n" -#~ "إلا إذا كنت تستخدم بروتوكول آمن مثل XML-محاولات RPCs.\n" -#~ " " diff --git a/addons/base_crypt/i18n/bg.po b/addons/base_crypt/i18n/bg.po deleted file mode 100644 index 97fdf3043cc..00000000000 --- a/addons/base_crypt/i18n/bg.po +++ /dev/null @@ -1,76 +0,0 @@ -# Bulgarian translation for openobject-addons -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2011-02-18 09:47+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Bulgarian \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "" - -#~ msgid "" -#~ "This module replaces the cleartext password in the database with a password " -#~ "hash,\n" -#~ "preventing anyone from reading the original password.\n" -#~ "For your existing user base, the removal of the cleartext passwords occurs " -#~ "the first time\n" -#~ "a user logs into the database, after installing base_crypt.\n" -#~ "After installing this module it won't be possible to recover a forgotten " -#~ "password for your\n" -#~ "users, the only solution is for an admin to set a new password.\n" -#~ "\n" -#~ "Note: installing this module does not mean you can ignore basic security " -#~ "measures,\n" -#~ "as the password is still transmitted unencrypted on the network (by the " -#~ "client),\n" -#~ "unless you are using a secure protocol such as XML-RPCS.\n" -#~ " " -#~ msgstr "" -#~ "Този модул заменя паролите в чист текст в базата данни с хеширани такива,\n" -#~ " за предотвратяване прочита на оригиналната парола.\n" -#~ " За съществуващата потребителска база, когато премахването на паролите в " -#~ "чист текст се случва за първи път,\n" -#~ " влизане на потребител става, след инсталиране на base_crypt.\n" -#~ " След като инсталирате този модул няма да бъде възможно да се възстанови " -#~ "забравена парола за\n" -#~ " потребители, единственото решение е администратор, да зададе нова парола.\n" -#~ "\n" -#~ " Забележка: инсталиране на този модул не значи, че може да пренебрегне " -#~ "основните мерки за сигурност,\n" -#~ " като парола все още е изпратена в прав текст в мрежата (от клиента),\n" -#~ " освен ако не използвате защитен протокол, като XML-RPCS.\n" -#~ " " - -#, python-format -#~ msgid "Error" -#~ msgstr "Грешка" - -#~ msgid "Base - Password Encryption" -#~ msgstr "База - Криптиране на пароли" - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "Моля изберете парола!" - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "Избраната фирма не е измежду разрешените фирми за този потребител" - -#~ msgid "res.users" -#~ msgstr "res.users" - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "Не може да има двама потребители с един и същ \"логин\"!" diff --git a/addons/base_crypt/i18n/ca.po b/addons/base_crypt/i18n/ca.po deleted file mode 100644 index 3be174a13d1..00000000000 --- a/addons/base_crypt/i18n/ca.po +++ /dev/null @@ -1,78 +0,0 @@ -# Catalan translation for openobject-addons -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2011-03-26 18:08+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Catalan \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "" - -#~ msgid "" -#~ "This module replaces the cleartext password in the database with a password " -#~ "hash,\n" -#~ "preventing anyone from reading the original password.\n" -#~ "For your existing user base, the removal of the cleartext passwords occurs " -#~ "the first time\n" -#~ "a user logs into the database, after installing base_crypt.\n" -#~ "After installing this module it won't be possible to recover a forgotten " -#~ "password for your\n" -#~ "users, the only solution is for an admin to set a new password.\n" -#~ "\n" -#~ "Note: installing this module does not mean you can ignore basic security " -#~ "measures,\n" -#~ "as the password is still transmitted unencrypted on the network (by the " -#~ "client),\n" -#~ "unless you are using a secure protocol such as XML-RPCS.\n" -#~ " " -#~ msgstr "" -#~ "Aquest mòdul substitueix la contrasenya en text pla per un hash codificat,\n" -#~ "prevenint que algú pugui llegir la contrasenya original.\n" -#~ "Per a un usuari existent, l'esborrat de la contrasenya en text pla es " -#~ "realitza la primera\n" -#~ "vegada que l'usuari es connecta després d'instal·lar base_crypt.\n" -#~ "Després d'instal·lar aquest mòdul, els usuaris no podran recuperar la seva " -#~ "contrasenya,\n" -#~ "un administrador haurà d'introduir una nova contrasenya.\n" -#~ "\n" -#~ "Nota: Instal·lar aquest mòdul no significa que podeu ignorar les mesures " -#~ "bàsiques de seguretat,\n" -#~ "perquè la contrasenya és enviada sense codificar pel client,\n" -#~ "a menys que utilitzeu un protocol segur com XML-RPCS.\n" -#~ " " - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "Si us plau, escriviu una contrasenya!" - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "" -#~ "La companyia seleccionada no està en les companyies permeses per aquest " -#~ "usuari" - -#~ msgid "res.users" -#~ msgstr "res.usuaris" - -#, python-format -#~ msgid "Error" -#~ msgstr "Error" - -#~ msgid "Base - Password Encryption" -#~ msgstr "Base - Encriptació de la Contrasenya" - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "No podeu tenir dos usuaris amb el mateix identificador d'usuari!" diff --git a/addons/base_crypt/i18n/cs.po b/addons/base_crypt/i18n/cs.po deleted file mode 100644 index 7e87a027cac..00000000000 --- a/addons/base_crypt/i18n/cs.po +++ /dev/null @@ -1,41 +0,0 @@ -# Czech translation for openobject-addons -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-04-06 05:20+0000\n" -"Last-Translator: Jiří Hajda \n" -"Language-Team: Czech \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "" - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "Nemůžete mít dva uživatele se stejným přihlašovacím jménem !" - -#, python-format -#~ msgid "Error" -#~ msgstr "Chyba" - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "Prosíme zadejte heslo!" - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "" -#~ "Vybraná společnost není v povolených společnostech pro tohoto uživatele" - -#~ msgid "res.users" -#~ msgstr "res.users" diff --git a/addons/base_crypt/i18n/da.po b/addons/base_crypt/i18n/da.po deleted file mode 100644 index 2c0afd28a5e..00000000000 --- a/addons/base_crypt/i18n/da.po +++ /dev/null @@ -1,23 +0,0 @@ -# Danish translation for openobject-addons -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2013-09-03 16:43+0000\n" -"Last-Translator: Niels L \n" -"Language-Team: Danish \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "Brugere" diff --git a/addons/base_crypt/i18n/de.po b/addons/base_crypt/i18n/de.po deleted file mode 100644 index 88cf2d20ae4..00000000000 --- a/addons/base_crypt/i18n/de.po +++ /dev/null @@ -1,77 +0,0 @@ -# German translation for openobject-addons -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-12-16 11:38+0000\n" -"Last-Translator: Felix Schubert \n" -"Language-Team: German \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "Benutzer" - -#~ msgid "" -#~ "This module replaces the cleartext password in the database with a password " -#~ "hash,\n" -#~ "preventing anyone from reading the original password.\n" -#~ "For your existing user base, the removal of the cleartext passwords occurs " -#~ "the first time\n" -#~ "a user logs into the database, after installing base_crypt.\n" -#~ "After installing this module it won't be possible to recover a forgotten " -#~ "password for your\n" -#~ "users, the only solution is for an admin to set a new password.\n" -#~ "\n" -#~ "Note: installing this module does not mean you can ignore basic security " -#~ "measures,\n" -#~ "as the password is still transmitted unencrypted on the network (by the " -#~ "client),\n" -#~ "unless you are using a secure protocol such as XML-RPCS.\n" -#~ " " -#~ msgstr "" -#~ "Dieses Modul ersetzt das Klartext Passwort.\n" -#~ "Für bestehende Benutzer erfolgt die Umstellung beim nächsten Einloggen nach " -#~ "der Installation des Moduls.\n" -#~ "Nach Installation kann ein verlorenes Passwort nicht mehr rekonstruiert " -#~ "werden.\n" -#~ "Der Administrator muss eine neues Passwort setzen.\n" -#~ "\n" -#~ "Beachte: Dieses Module beduete nicht, dass Sie grundlegende " -#~ "Sicherheitsüberlegungen\n" -#~ "außer Acht lassen können. Das verschüsselte Passwort wird im Klartext im " -#~ "Netzwerk übertragen, \n" -#~ "wenn nicht ein sicheres Protokoll wie zB XML-RPCS verwendet wird.\n" -#~ " " - -#, python-format -#~ msgid "Error" -#~ msgstr "Fehler" - -#~ msgid "Base - Password Encryption" -#~ msgstr "Basis - Passwort Verschlüsselung" - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "Bitte ein Passwort eingeben" - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "" -#~ "Das ausgewählte Unternehmen gehört nicht zu den zulässigen Unternehmen für " -#~ "diesen Benutzer" - -#~ msgid "res.users" -#~ msgstr "res.users" - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "Sie können nicht zwei identische Benutzeranmeldungen definieren!" diff --git a/addons/base_crypt/i18n/el.po b/addons/base_crypt/i18n/el.po deleted file mode 100644 index 61319a01797..00000000000 --- a/addons/base_crypt/i18n/el.po +++ /dev/null @@ -1,24 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * base_crypt -# -# Copyright (C) 2008,2009 P. Christeas -# <> <>, 2009. -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 5.0.0\n" -"Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2011-02-15 15:37+0000\n" -"Last-Translator: <> <>\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: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "" diff --git a/addons/base_crypt/i18n/en_GB.po b/addons/base_crypt/i18n/en_GB.po deleted file mode 100644 index fc227f1a9a1..00000000000 --- a/addons/base_crypt/i18n/en_GB.po +++ /dev/null @@ -1,77 +0,0 @@ -# English (United Kingdom) translation for openobject-addons -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2011-08-25 11:52+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: English (United Kingdom) \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "" - -#~ msgid "" -#~ "This module replaces the cleartext password in the database with a password " -#~ "hash,\n" -#~ "preventing anyone from reading the original password.\n" -#~ "For your existing user base, the removal of the cleartext passwords occurs " -#~ "the first time\n" -#~ "a user logs into the database, after installing base_crypt.\n" -#~ "After installing this module it won't be possible to recover a forgotten " -#~ "password for your\n" -#~ "users, the only solution is for an admin to set a new password.\n" -#~ "\n" -#~ "Note: installing this module does not mean you can ignore basic security " -#~ "measures,\n" -#~ "as the password is still transmitted unencrypted on the network (by the " -#~ "client),\n" -#~ "unless you are using a secure protocol such as XML-RPCS.\n" -#~ " " -#~ msgstr "" -#~ "This module replaces the cleartext password in the database with a password " -#~ "hash,\n" -#~ "preventing anyone from reading the original password.\n" -#~ "For your existing user base, the removal of the cleartext passwords occurs " -#~ "the first time\n" -#~ "a user logs into the database, after installing base_crypt.\n" -#~ "After installing this module it is impossible to recover a forgotten user\n" -#~ "password, the only solution is for an admin to set a new password.\n" -#~ "\n" -#~ "Note: installing this module does not mean you can ignore basic security " -#~ "measures,\n" -#~ "as the password is still transmitted unencrypted on the network (by the " -#~ "client),\n" -#~ "unless you are using a secure protocol such as XML-RPCS.\n" -#~ " " - -#, python-format -#~ msgid "Error" -#~ msgstr "Error" - -#~ msgid "Base - Password Encryption" -#~ msgstr "Base - Password Encryption" - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "Please specify the password !" - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "The chosen company is not in the allowed companies for this user" - -#~ msgid "res.users" -#~ msgstr "res.users" - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "You can not have two users with the same login !" diff --git a/addons/base_crypt/i18n/es.po b/addons/base_crypt/i18n/es.po deleted file mode 100644 index 1e86c7301ba..00000000000 --- a/addons/base_crypt/i18n/es.po +++ /dev/null @@ -1,77 +0,0 @@ -# Spanish translation for openobject-addons -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-12-10 22:15+0000\n" -"Last-Translator: Ana Juaristi Olalde \n" -"Language-Team: Spanish \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "Usuarios" - -#~ msgid "" -#~ "This module replaces the cleartext password in the database with a password " -#~ "hash,\n" -#~ "preventing anyone from reading the original password.\n" -#~ "For your existing user base, the removal of the cleartext passwords occurs " -#~ "the first time\n" -#~ "a user logs into the database, after installing base_crypt.\n" -#~ "After installing this module it won't be possible to recover a forgotten " -#~ "password for your\n" -#~ "users, the only solution is for an admin to set a new password.\n" -#~ "\n" -#~ "Note: installing this module does not mean you can ignore basic security " -#~ "measures,\n" -#~ "as the password is still transmitted unencrypted on the network (by the " -#~ "client),\n" -#~ "unless you are using a secure protocol such as XML-RPCS.\n" -#~ " " -#~ msgstr "" -#~ "Este módulo sustituye la contraseña en texto plano por un hash codificado,\n" -#~ "previniendo que alguien pueda leer la contraseña original.\n" -#~ "Para un usuario existente, el borrado de la contraseña en texto plano se " -#~ "realiza la primera vez\n" -#~ "que el usuario se conecte después de instalar base_crypt.\n" -#~ "Después de instalar este módulo los usuarios no podrán recuperar su " -#~ "contraseña,\n" -#~ "un administrador tendrá que introducir una nueva contraseña.\n" -#~ "\n" -#~ "Nota: instalar este módulo no significa que pueda ignorar las medidas " -#~ "básicas de seguridad,\n" -#~ "porque la contraseña es enviada sin codificar por el cliente,\n" -#~ "a menos que utilice un protocolo seguro como XML-RPCS.\n" -#~ " " - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "¡Por favor, escriba una contraseña!" - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "" -#~ "La compañía seleccionada no está autorizada como compañía para este usuario" - -#~ msgid "res.users" -#~ msgstr "res.usuarios" - -#, python-format -#~ msgid "Error" -#~ msgstr "Error" - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "¡No puede tener dos usuarios con el mismo identificador de usuario!" - -#~ msgid "Base - Password Encryption" -#~ msgstr "Base - Encriptación de la Contraseña" diff --git a/addons/base_crypt/i18n/es_CL.po b/addons/base_crypt/i18n/es_CL.po deleted file mode 100644 index 1d530f91082..00000000000 --- a/addons/base_crypt/i18n/es_CL.po +++ /dev/null @@ -1,80 +0,0 @@ -# Spanish (Chile) translation for openobject-addons -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2011-10-03 17:17+0000\n" -"Last-Translator: David Acevedo Toledo \n" -"Language-Team: Spanish (Chile) \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "" - -#, python-format -#~ msgid "Error" -#~ msgstr "Error!" - -#~ msgid "res.users" -#~ msgstr "res.users" - -#~ msgid "Base - Password Encryption" -#~ msgstr "Base - Encriptación de la Contraseña" - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "¡Por favor, escriba una contraseña!" - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "" -#~ "La compañía seleccionada no está dentro de las compañías autorizadas para " -#~ "este usuario" - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "¡No puede tener dos usuarios con el mismo nombre!" - -#~ msgid "" -#~ "This module replaces the cleartext password in the database with a password " -#~ "hash,\n" -#~ "preventing anyone from reading the original password.\n" -#~ "For your existing user base, the removal of the cleartext passwords occurs " -#~ "the first time\n" -#~ "a user logs into the database, after installing base_crypt.\n" -#~ "After installing this module it won't be possible to recover a forgotten " -#~ "password for your\n" -#~ "users, the only solution is for an admin to set a new password.\n" -#~ "\n" -#~ "Note: installing this module does not mean you can ignore basic security " -#~ "measures,\n" -#~ "as the password is still transmitted unencrypted on the network (by the " -#~ "client),\n" -#~ "unless you are using a secure protocol such as XML-RPCS.\n" -#~ " " -#~ msgstr "" -#~ "Este módulo sustituye la contraseña escrita en texto plano por una " -#~ "codificada,\n" -#~ "previniendo que alguien pueda leer la contraseña original.\n" -#~ "Para un usuario existente, el sustitución de la contraseña en texto plano se " -#~ "realiza la primera vez\n" -#~ "que el usuario se conecte después de instalar base_crypt.\n" -#~ "Después de instalar este módulo los usuarios no podrán recuperar su " -#~ "contraseña olvidada,\n" -#~ "un administrador tendrá que cambiarla por una nueva.\n" -#~ "\n" -#~ "Nota: instalar este módulo no significa que pueda ignorar las medidas " -#~ "básicas de seguridad,\n" -#~ "como la contraseña que es enviada por el cliente que sigue sin ser " -#~ "codificada en la red,\n" -#~ "a menos que utilice un protocolo seguro como XML-RPCS.\n" -#~ " " diff --git a/addons/base_crypt/i18n/es_CR.po b/addons/base_crypt/i18n/es_CR.po deleted file mode 100644 index 1e4864fe000..00000000000 --- a/addons/base_crypt/i18n/es_CR.po +++ /dev/null @@ -1,79 +0,0 @@ -# Spanish translation for openobject-addons -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-02-13 19:04+0000\n" -"Last-Translator: Carlos Vásquez (CLEARCORP) " -"\n" -"Language-Team: Spanish \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" -"Language: es\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "" - -#~ msgid "res.users" -#~ msgstr "res.usuarios" - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "¡No puede tener dos usuarios con el mismo identificador de usuario!" - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "" -#~ "La compañía seleccionada no está autorizada como compañía para este usuario" - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "¡Por favor, escriba una contraseña!" - -#, python-format -#~ msgid "Error" -#~ msgstr "Error" - -#~ msgid "" -#~ "This module replaces the cleartext password in the database with a password " -#~ "hash,\n" -#~ "preventing anyone from reading the original password.\n" -#~ "For your existing user base, the removal of the cleartext passwords occurs " -#~ "the first time\n" -#~ "a user logs into the database, after installing base_crypt.\n" -#~ "After installing this module it won't be possible to recover a forgotten " -#~ "password for your\n" -#~ "users, the only solution is for an admin to set a new password.\n" -#~ "\n" -#~ "Note: installing this module does not mean you can ignore basic security " -#~ "measures,\n" -#~ "as the password is still transmitted unencrypted on the network (by the " -#~ "client),\n" -#~ "unless you are using a secure protocol such as XML-RPCS.\n" -#~ " " -#~ msgstr "" -#~ "Este módulo sustituye la contraseña en texto plano por un hash codificado,\n" -#~ "previniendo que alguien pueda leer la contraseña original.\n" -#~ "Para un usuario existente, el borrado de la contraseña en texto plano se " -#~ "realiza la primera vez\n" -#~ "que el usuario se conecte después de instalar base_crypt.\n" -#~ "Después de instalar este módulo los usuarios no podrán recuperar su " -#~ "contraseña,\n" -#~ "un administrador tendrá que introducir una nueva contraseña.\n" -#~ "\n" -#~ "Nota: instalar este módulo no significa que pueda ignorar las medidas " -#~ "básicas de seguridad,\n" -#~ "porque la contraseña es enviada sin codificar por el cliente,\n" -#~ "a menos que utilice un protocolo seguro como XML-RPCS.\n" -#~ " " - -#~ msgid "Base - Password Encryption" -#~ msgstr "Base - Encriptación de la Contraseña" diff --git a/addons/base_crypt/i18n/es_PY.po b/addons/base_crypt/i18n/es_PY.po deleted file mode 100644 index 5e41452b642..00000000000 --- a/addons/base_crypt/i18n/es_PY.po +++ /dev/null @@ -1,78 +0,0 @@ -# Spanish (Paraguay) translation for openobject-addons -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2011-03-08 17:36+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Spanish (Paraguay) \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "" - -#~ msgid "" -#~ "This module replaces the cleartext password in the database with a password " -#~ "hash,\n" -#~ "preventing anyone from reading the original password.\n" -#~ "For your existing user base, the removal of the cleartext passwords occurs " -#~ "the first time\n" -#~ "a user logs into the database, after installing base_crypt.\n" -#~ "After installing this module it won't be possible to recover a forgotten " -#~ "password for your\n" -#~ "users, the only solution is for an admin to set a new password.\n" -#~ "\n" -#~ "Note: installing this module does not mean you can ignore basic security " -#~ "measures,\n" -#~ "as the password is still transmitted unencrypted on the network (by the " -#~ "client),\n" -#~ "unless you are using a secure protocol such as XML-RPCS.\n" -#~ " " -#~ msgstr "" -#~ "Este módulo sustituye la contraseña en texto plano por un hash codificado,\n" -#~ "previniendo que alguien pueda leer la contraseña original.\n" -#~ "Para un usuario existente, el borrado de la contraseña en texto plano se " -#~ "realiza la primera vez\n" -#~ "que el usuario se conecte después de instalar base_crypt.\n" -#~ "Después de instalar este módulo los usuarios no podrán recuperar su " -#~ "contraseña,\n" -#~ "un administrador tendrá que introducir una nueva contraseña.\n" -#~ "\n" -#~ "Nota: instalar este módulo no significa que pueda ignorar las medidas " -#~ "básicas de seguridad,\n" -#~ "porque la contraseña es enviada sin codificar por el cliente,\n" -#~ "a menos que utilice un protocolo seguro como XML-RPCS.\n" -#~ " " - -#, python-format -#~ msgid "Error" -#~ msgstr "Error!" - -#~ msgid "Base - Password Encryption" -#~ msgstr "Base - Encriptación de la Contraseña" - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "¡Por favor, escriba una contraseña!" - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "" -#~ "La compañía seleccionada no está en las compañías permitidas para este " -#~ "usuario" - -#~ msgid "res.users" -#~ msgstr "res.users" - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "¡No puede tener dos usuarios con el mismo identificador de usuario!" diff --git a/addons/base_crypt/i18n/et.po b/addons/base_crypt/i18n/et.po deleted file mode 100644 index 4bf9fcba159..00000000000 --- a/addons/base_crypt/i18n/et.po +++ /dev/null @@ -1,30 +0,0 @@ -# Estonian translation for openobject-addons -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2011-10-10 19:33+0000\n" -"Last-Translator: Aare Vesi \n" -"Language-Team: Estonian \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "" - -#, python-format -#~ msgid "Error" -#~ msgstr "Viga" - -#~ msgid "res.users" -#~ msgstr "res.users" diff --git a/addons/base_crypt/i18n/fa.po b/addons/base_crypt/i18n/fa.po deleted file mode 100644 index 7653da44cd6..00000000000 --- a/addons/base_crypt/i18n/fa.po +++ /dev/null @@ -1,23 +0,0 @@ -# Persian translation for openobject-addons -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2011-12-18 20:12+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Persian \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "" diff --git a/addons/base_crypt/i18n/fi.po b/addons/base_crypt/i18n/fi.po deleted file mode 100644 index 1a5f4c7cae2..00000000000 --- a/addons/base_crypt/i18n/fi.po +++ /dev/null @@ -1,40 +0,0 @@ -# Finnish translation for openobject-addons -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2011-06-08 10:57+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Finnish \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "" - -#, python-format -#~ msgid "Error" -#~ msgstr "Virhe" - -#~ msgid "Base - Password Encryption" -#~ msgstr "Base - Salasanan kryptaus" - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "Määrittele salasana !" - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "Valittu yritys ei ole sallittu tälle käyttäjälle" - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "Kahdella eri käyttäjällä ei voi olla samaa käyttäjätunnusta!" diff --git a/addons/base_crypt/i18n/fr.po b/addons/base_crypt/i18n/fr.po deleted file mode 100644 index b3a32cd0b33..00000000000 --- a/addons/base_crypt/i18n/fr.po +++ /dev/null @@ -1,81 +0,0 @@ -# French translation for openobject-addons -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-12-07 10:31+0000\n" -"Last-Translator: WANTELLET Sylvain \n" -"Language-Team: French \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "Utilisateurs" - -#, python-format -#~ msgid "Error" -#~ msgstr "Erreur" - -#~ msgid "Base - Password Encryption" -#~ msgstr "Base - Chiffrage du mot de passe" - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "" -#~ "La société choisie ne fait pas partie des sociétés autorisées pour cet " -#~ "utilisateur" - -#~ msgid "res.users" -#~ msgstr "res.users" - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "" -#~ "Vous ne pouvez pas avoir deux utilisateurs avec le même identifiant !" - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "Veuillez entrer un mot de passe" - -#~ msgid "" -#~ "This module replaces the cleartext password in the database with a password " -#~ "hash,\n" -#~ "preventing anyone from reading the original password.\n" -#~ "For your existing user base, the removal of the cleartext passwords occurs " -#~ "the first time\n" -#~ "a user logs into the database, after installing base_crypt.\n" -#~ "After installing this module it won't be possible to recover a forgotten " -#~ "password for your\n" -#~ "users, the only solution is for an admin to set a new password.\n" -#~ "\n" -#~ "Note: installing this module does not mean you can ignore basic security " -#~ "measures,\n" -#~ "as the password is still transmitted unencrypted on the network (by the " -#~ "client),\n" -#~ "unless you are using a secure protocol such as XML-RPCS.\n" -#~ " " -#~ msgstr "" -#~ "Ce module remplace les mots de passe stockés dans la base par des mots de " -#~ "passe chiffrés,\n" -#~ "empêchant quiconque d'accéder aux mots de passe.\n" -#~ "Pour les utilisateurs existants dans la base, le retrait du mot de passe en " -#~ "clair survient à la première connexion\n" -#~ "de l'utilisateur suivant l'installation de \"base_crypt\".\n" -#~ "Ce module rend impossible la recherche d'un mot de passe oublié par un " -#~ "utilisateur,\n" -#~ "la seule solution est alors l'attribution d'un nouveau mot de passe par " -#~ "l'administrateur.\n" -#~ "\n" -#~ "Note: installer ce module ne dispense pas de respecter les règles de base de " -#~ "la sécurité,\n" -#~ "comme ne pas laisser circuler de mots de passe en clair sur le réseau,\n" -#~ "sauf à utiliser un protocole sécurisé tel que XML-RPCS.\n" -#~ " " diff --git a/addons/base_crypt/i18n/gl.po b/addons/base_crypt/i18n/gl.po deleted file mode 100644 index 8bdaf68def0..00000000000 --- a/addons/base_crypt/i18n/gl.po +++ /dev/null @@ -1,78 +0,0 @@ -# Galician translation for openobject-addons -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2011-02-15 15:37+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Galician \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "" - -#~ msgid "" -#~ "This module replaces the cleartext password in the database with a password " -#~ "hash,\n" -#~ "preventing anyone from reading the original password.\n" -#~ "For your existing user base, the removal of the cleartext passwords occurs " -#~ "the first time\n" -#~ "a user logs into the database, after installing base_crypt.\n" -#~ "After installing this module it won't be possible to recover a forgotten " -#~ "password for your\n" -#~ "users, the only solution is for an admin to set a new password.\n" -#~ "\n" -#~ "Note: installing this module does not mean you can ignore basic security " -#~ "measures,\n" -#~ "as the password is still transmitted unencrypted on the network (by the " -#~ "client),\n" -#~ "unless you are using a secure protocol such as XML-RPCS.\n" -#~ " " -#~ msgstr "" -#~ "Este módulo substitúe os contrasinais en texto normal na base de datos a un " -#~ "hash de contrasinal,\n" -#~ "impedindo que calquera persoa lea o contrasinal orixinal.\n" -#~ "Para a súa base de usuarios existentes, a eliminación das contrasinais en " -#~ "texto plano ocorre a primeira vez que\n" -#~ "un usuario se conecta á base de datos, trala instalación de base_crypt.\n" -#~ "Despois de instalar este módulo non será posible recuperar un contrasinal " -#~ "esquecido para o seu\n" -#~ "usuario, a única solución é que un administrador estableza un novo " -#~ "contrasinal.\n" -#~ "\n" -#~ "Nota: A instalación deste módulo non significa que pode ignorar as medidas " -#~ "básicas de seguridade,\n" -#~ "como o contrasinal aínda se transmite sen cifrado na rede (polo cliente),\n" -#~ "a menos que vostede esté a usar un protocolo seguro, como XML-RPCs.\n" -#~ " " - -#, python-format -#~ msgid "Error" -#~ msgstr "Erro" - -#~ msgid "Base - Password Encryption" -#~ msgstr "Base - Encriptación da contrasinal" - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "A compañía escollida non é unha compañía permitida para este usuario" - -#~ msgid "res.users" -#~ msgstr "res.users" - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "¡Por favor especifica a contrasinal!" - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "¡Non pode ter dous usuarios co mesmo login!" diff --git a/addons/base_crypt/i18n/gu.po b/addons/base_crypt/i18n/gu.po deleted file mode 100644 index 2c2322fae2e..00000000000 --- a/addons/base_crypt/i18n/gu.po +++ /dev/null @@ -1,37 +0,0 @@ -# Gujarati translation for openobject-addons -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-04-19 08:51+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Gujarati \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "" - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "તમે બે વપરાશકર્તાઓને એક જ લોગીન ન કરી શકો!" - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "પાસવર્ડ સ્પષ્ટ કરો!" - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "પસંદ કરેલ કંપની માન્ય કંપનીઓમાં આ વપરાશકર્તા માટે નથી" - -#, python-format -#~ msgid "Error" -#~ msgstr "ભૂલ" diff --git a/addons/base_crypt/i18n/hr.po b/addons/base_crypt/i18n/hr.po deleted file mode 100644 index 92c904d69c9..00000000000 --- a/addons/base_crypt/i18n/hr.po +++ /dev/null @@ -1,74 +0,0 @@ -# Croatian translation for openobject-addons -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-12-09 19:40+0000\n" -"Last-Translator: Goran Kliska \n" -"Language-Team: Croatian \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "Korisnici" - -#~ msgid "" -#~ "This module replaces the cleartext password in the database with a password " -#~ "hash,\n" -#~ "preventing anyone from reading the original password.\n" -#~ "For your existing user base, the removal of the cleartext passwords occurs " -#~ "the first time\n" -#~ "a user logs into the database, after installing base_crypt.\n" -#~ "After installing this module it won't be possible to recover a forgotten " -#~ "password for your\n" -#~ "users, the only solution is for an admin to set a new password.\n" -#~ "\n" -#~ "Note: installing this module does not mean you can ignore basic security " -#~ "measures,\n" -#~ "as the password is still transmitted unencrypted on the network (by the " -#~ "client),\n" -#~ "unless you are using a secure protocol such as XML-RPCS.\n" -#~ " " -#~ msgstr "" -#~ "Ovaj modul mijenja zaporku u čitljivom tekstu za šifriranom zaporkom,\n" -#~ "onemogućujući čitanje originalne zaporke.\n" -#~ "Za postojećeg korisnika, ukljanjanje čitljive zaporke dešava se priv put kad " -#~ "se korisnik prijavljuje \n" -#~ "u bazu podataka, nakon instalacije base crypt modula.\n" -#~ "Nakon instalacije ovog modula neće biti moguće doznati zaboravljenu zaporku " -#~ "vašeg korisnika.\n" -#~ "Jedino riješenje je da admin postavi novu zaporku.\n" -#~ "\n" -#~ "Napomena: instalacija ovog modula ne znači da možete ignorirati osnovne " -#~ "mjere sigurnosti,\n" -#~ "jer se zaporka i dlaje prenosi nešifrirana preko mreže (klijent),\n" -#~ "osim ako ne koristite sigurnosne protokole poput XML-RPSC.\n" -#~ " " - -#, python-format -#~ msgid "Error" -#~ msgstr "Greška" - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "Molim navedite zaporku!" - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "" -#~ "Odabrana organizacija nije među dozvoljenim organizacijama za ovog korisnika" - -#~ msgid "res.users" -#~ msgstr "res.users" - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "Ne možete imati dva korisnika sa istim korisničkim imenom !" diff --git a/addons/base_crypt/i18n/id.po b/addons/base_crypt/i18n/id.po deleted file mode 100644 index 02b7d2e2114..00000000000 --- a/addons/base_crypt/i18n/id.po +++ /dev/null @@ -1,23 +0,0 @@ -# Indonesian translation for openobject-addons -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-12-09 08:46+0000\n" -"Last-Translator: Budhi Hartono \n" -"Language-Team: Indonesian \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "Pengguna" diff --git a/addons/base_crypt/i18n/it.po b/addons/base_crypt/i18n/it.po deleted file mode 100644 index fed22cb41cc..00000000000 --- a/addons/base_crypt/i18n/it.po +++ /dev/null @@ -1,80 +0,0 @@ -# Italian translation for openobject-addons -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-11-28 19:47+0000\n" -"Last-Translator: Davide Corio \n" -"Language-Team: Italian \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "Utenti" - -#~ msgid "" -#~ "This module replaces the cleartext password in the database with a password " -#~ "hash,\n" -#~ "preventing anyone from reading the original password.\n" -#~ "For your existing user base, the removal of the cleartext passwords occurs " -#~ "the first time\n" -#~ "a user logs into the database, after installing base_crypt.\n" -#~ "After installing this module it won't be possible to recover a forgotten " -#~ "password for your\n" -#~ "users, the only solution is for an admin to set a new password.\n" -#~ "\n" -#~ "Note: installing this module does not mean you can ignore basic security " -#~ "measures,\n" -#~ "as the password is still transmitted unencrypted on the network (by the " -#~ "client),\n" -#~ "unless you are using a secure protocol such as XML-RPCS.\n" -#~ " " -#~ msgstr "" -#~ "Questo modulo rimpiazza il testo in chiaro della password nel database con " -#~ "una password hash,\n" -#~ "prevenendo tutti quelli che volessero leggere la password originale.\n" -#~ "Per un utente base esistente, la rimozione della password in chiaro avviene " -#~ "la prima volta,\n" -#~ "durante l'autenticazione utente al database, dopo l'installazione di " -#~ "base_crypt.\n" -#~ "Dopo aver installato questo moduli, non vi sarà possibile recuperare una " -#~ "password dimenticata\n" -#~ "dal vostro utente, la sola soluzione per l'amministratore è impostarne una " -#~ "nuova.\n" -#~ "\n" -#~ "Nota: installare questo modulo non vuol dire che si possono ignorare le " -#~ "misure minime di sicurezza,\n" -#~ "siccome una password è ancora trasmessa non criptata sulla rete (dal " -#~ "client),\n" -#~ "a meno di non utilizzare un protocollo sicuro come XML-RPCS.\n" -#~ " " - -#, python-format -#~ msgid "Error" -#~ msgstr "Errore" - -#~ msgid "Base - Password Encryption" -#~ msgstr "Base - Criptazione password" - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "Prego specificare la password!" - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "L'azienda scelta non è fra le aziende abilitate per questo utente" - -#~ msgid "res.users" -#~ msgstr "res.users" - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "Non è possibile avere due utenti con lo stesso login!" diff --git a/addons/base_crypt/i18n/ja.po b/addons/base_crypt/i18n/ja.po deleted file mode 100644 index 05123a7651d..00000000000 --- a/addons/base_crypt/i18n/ja.po +++ /dev/null @@ -1,40 +0,0 @@ -# Japanese translation for openobject-addons -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-04-01 06:05+0000\n" -"Last-Translator: Masaki Yamaya \n" -"Language-Team: Japanese \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "" - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "同一のログインに2つのユーザを持つことはできません!" - -#, python-format -#~ msgid "Error" -#~ msgstr "エラー" - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "選択した会社は、このユーザに許された会社ではありません。" - -#~ msgid "res.users" -#~ msgstr "res.users" - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "パスワードを指定してください!" diff --git a/addons/base_crypt/i18n/lv.po b/addons/base_crypt/i18n/lv.po deleted file mode 100644 index 8f7ca26a462..00000000000 --- a/addons/base_crypt/i18n/lv.po +++ /dev/null @@ -1,40 +0,0 @@ -# Latvian translation for openobject-addons -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-10-16 16:11+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Latvian \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "" - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "Nevar būt divi lietotāji ar vienādu pieteikuma vārdu!" - -#, python-format -#~ msgid "Error" -#~ msgstr "Kļūda" - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "Izvēlētais uzņēmums nav šim lietotājam atļauto uzņēmumu sarakstā" - -#~ msgid "res.users" -#~ msgstr "res.users" - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "Lūdzu norādiet paroli!" diff --git a/addons/base_crypt/i18n/mn.po b/addons/base_crypt/i18n/mn.po deleted file mode 100644 index 1bbb605f1fc..00000000000 --- a/addons/base_crypt/i18n/mn.po +++ /dev/null @@ -1,37 +0,0 @@ -# Mongolian translation for openobject-addons -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-06-19 09:29+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Mongolian \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "" - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "Ижил нэвтрэх кодтой хоёр хэрэглэгч байж болохгүй!" - -#, python-format -#~ msgid "Error" -#~ msgstr "Алдаа" - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "" -#~ "Энэ хэрэглэгчийн сонгосон компани зөвшөөрөгдсөн компаниуд дунд алга байна." - -#~ msgid "res.users" -#~ msgstr "Хэрэглэгч" diff --git a/addons/base_crypt/i18n/nb.po b/addons/base_crypt/i18n/nb.po deleted file mode 100644 index 3c7d785f6d3..00000000000 --- a/addons/base_crypt/i18n/nb.po +++ /dev/null @@ -1,44 +0,0 @@ -# Norwegian Bokmal translation for openobject-addons -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-12-04 20:38+0000\n" -"Last-Translator: Kaare Pettersen \n" -"Language-Team: Norwegian Bokmal \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "Brukere." - -#, python-format -#~ msgid "Error" -#~ msgstr "Feil" - -#~ msgid "Base - Password Encryption" -#~ msgstr "Basis - Passord kryptering" - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "Vennligst angi passordet !" - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "" -#~ "Det valgte firmaet er ikke i listen over tillatte firmaer for denne brukeren" - -#~ msgid "res.users" -#~ msgstr "res.users" - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "Du kan ikke ha to brukere med samme login !" diff --git a/addons/base_crypt/i18n/nl.po b/addons/base_crypt/i18n/nl.po deleted file mode 100644 index 67ba274ae03..00000000000 --- a/addons/base_crypt/i18n/nl.po +++ /dev/null @@ -1,79 +0,0 @@ -# Dutch translation for openobject-addons -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-11-24 22:06+0000\n" -"Last-Translator: Erwin van der Ploeg (BAS Solutions) \n" -"Language-Team: Dutch \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "Gebruikers" - -#~ msgid "" -#~ "This module replaces the cleartext password in the database with a password " -#~ "hash,\n" -#~ "preventing anyone from reading the original password.\n" -#~ "For your existing user base, the removal of the cleartext passwords occurs " -#~ "the first time\n" -#~ "a user logs into the database, after installing base_crypt.\n" -#~ "After installing this module it won't be possible to recover a forgotten " -#~ "password for your\n" -#~ "users, the only solution is for an admin to set a new password.\n" -#~ "\n" -#~ "Note: installing this module does not mean you can ignore basic security " -#~ "measures,\n" -#~ "as the password is still transmitted unencrypted on the network (by the " -#~ "client),\n" -#~ "unless you are using a secure protocol such as XML-RPCS.\n" -#~ " " -#~ msgstr "" -#~ "Deze module vervangt het (leesbare) tekst wachtwoord in de database met een " -#~ "versleuteld wachtwoord,\n" -#~ "waardoor niemand het originele wachtwoord nog kan lezen.\n" -#~ "Voor bestaande gebruikers worden de (leesbare) tekst wachtwoorden verwijderd " -#~ "bij de eerste keer\n" -#~ "aanmelden van de gebruiker, na installatie van deze module.\n" -#~ "Na installatie van deze module is het niet meer mogelijk om vergeten " -#~ "wachtwoorden op te zoeken voor uw\n" -#~ "gebruikers; de enige oplossing voor de beheerder is om een nieuw wachtwoord " -#~ "in te stellen.\n" -#~ "\n" -#~ "Letop: Installatie van deze module betekent niet dat u basis " -#~ "beveiligingsmaatregelen kunt negeren,\n" -#~ "omdat het wachtwoord nog steeds onversleuteld over het netwerk wordt " -#~ "gestuurd (door de gebruiker),\n" -#~ "tenzij u een veilig protocol gebruikt zoals XML-RPCS.\n" -#~ " " - -#, python-format -#~ msgid "Error" -#~ msgstr "Fout" - -#~ msgid "Base - Password Encryption" -#~ msgstr "Basis - Wachtwoord versleuteling" - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "Geef aub een wachtwoord in !" - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "Het gekozen bedrijf is geen toegestaan bedrijf voor deze gebruiker" - -#~ msgid "res.users" -#~ msgstr "res.users" - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "U kunt niet twee gebruikers hebben met dezelfde gebruikersnaam !" diff --git a/addons/base_crypt/i18n/nl_BE.po b/addons/base_crypt/i18n/nl_BE.po deleted file mode 100644 index d90ac3eda8c..00000000000 --- a/addons/base_crypt/i18n/nl_BE.po +++ /dev/null @@ -1,42 +0,0 @@ -# Dutch (Belgium) translation for openobject-addons -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2013-04-15 16:02+0000\n" -"Last-Translator: Els Van Vossel (Agaplan) \n" -"Language-Team: Dutch (Belgium) \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "Gebruikers" - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "U kunt geen twee gebruikers met dezelfde login maken." - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "Gelieve een wachtwoord op te geven" - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "" -#~ "De gekozen firma behoort niet tot de toegelaten bedrijven voor deze " -#~ "gebruiker." - -#~ msgid "res.users" -#~ msgstr "res.users" - -#, python-format -#~ msgid "Error" -#~ msgstr "Fout" diff --git a/addons/base_crypt/i18n/oc.po b/addons/base_crypt/i18n/oc.po deleted file mode 100644 index 2ff67545b99..00000000000 --- a/addons/base_crypt/i18n/oc.po +++ /dev/null @@ -1,45 +0,0 @@ -# Occitan (post 1500) translation for openobject-addons -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2011-11-20 09:17+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Occitan (post 1500) \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "" - -#, python-format -#~ msgid "Error" -#~ msgstr "Error" - -#~ msgid "Base - Password Encryption" -#~ msgstr "Basa - Chifratge del senhal" - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "Entratz un senhal" - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "" -#~ "La societat causida fa pas partida de las societats autorizadas per aqueste " -#~ "utilizaire" - -#~ msgid "res.users" -#~ msgstr "res.users" - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "Podètz pas aver dos utilizaires amb lo meteis identificant !" diff --git a/addons/base_crypt/i18n/pl.po b/addons/base_crypt/i18n/pl.po deleted file mode 100644 index fa80431cff5..00000000000 --- a/addons/base_crypt/i18n/pl.po +++ /dev/null @@ -1,37 +0,0 @@ -# Polish translation for openobject-addons -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-03-28 14:21+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Polish \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "" - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "Nie może być dwóch użytkowników o tym samym loginie !" - -#, python-format -#~ msgid "Error" -#~ msgstr "Błąd" - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "Wybrana firma jest niedozwolona dla tego użytkownika" - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "Proszę podać hasło!" diff --git a/addons/base_crypt/i18n/pt.po b/addons/base_crypt/i18n/pt.po deleted file mode 100644 index 43bd417eb1f..00000000000 --- a/addons/base_crypt/i18n/pt.po +++ /dev/null @@ -1,78 +0,0 @@ -# Portuguese translation for openobject-addons -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-12-11 15:50+0000\n" -"Last-Translator: Rui Franco (multibase.pt) \n" -"Language-Team: Portuguese \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "Utilizadores" - -#, python-format -#~ msgid "Error" -#~ msgstr "Erro" - -#~ msgid "res.users" -#~ msgstr "res.users" - -#~ msgid "Base - Password Encryption" -#~ msgstr "Base - Encriptação de senhas" - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "Por favor escolha uma senha !" - -#~ msgid "" -#~ "This module replaces the cleartext password in the database with a password " -#~ "hash,\n" -#~ "preventing anyone from reading the original password.\n" -#~ "For your existing user base, the removal of the cleartext passwords occurs " -#~ "the first time\n" -#~ "a user logs into the database, after installing base_crypt.\n" -#~ "After installing this module it won't be possible to recover a forgotten " -#~ "password for your\n" -#~ "users, the only solution is for an admin to set a new password.\n" -#~ "\n" -#~ "Note: installing this module does not mean you can ignore basic security " -#~ "measures,\n" -#~ "as the password is still transmitted unencrypted on the network (by the " -#~ "client),\n" -#~ "unless you are using a secure protocol such as XML-RPCS.\n" -#~ " " -#~ msgstr "" -#~ "Este módulo substitui as senhas em texto puro na base de dados com um erro " -#~ "grave na senha,\n" -#~ "impedindo que qualquer pessoa leia a senha original.\n" -#~ "Para a sua base de utilizadores existentes, a remoção de senhas em texto " -#~ "plano ocorre pela primeira vez\n" -#~ "um utilizador conecta-se à base de dados, após a instalação do base_crypt.\n" -#~ "Depois de instalar este módulo não será possível recuperar uma senha " -#~ "esquecida para o\n" -#~ "utilizador, a única solução é um administrador definir uma nova senha.\n" -#~ "\n" -#~ "Nota: A instalação deste módulo não significa que pode ignorar as medidas " -#~ "básicas de segurança,\n" -#~ "como a senha ainda é transmitida não é encriptada na rede (pelo cliente),\n" -#~ "a menos que esteja a usar um protocolo seguro, como o XML-RPCS.\n" -#~ " " - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "Não pode ter dois utilizadores com o mesmo registo!" - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "" -#~ "A empresa escolhida não está entre as permitidas para este utilizador" diff --git a/addons/base_crypt/i18n/pt_BR.po b/addons/base_crypt/i18n/pt_BR.po deleted file mode 100644 index cd2b533a74f..00000000000 --- a/addons/base_crypt/i18n/pt_BR.po +++ /dev/null @@ -1,78 +0,0 @@ -# Brazilian Portuguese translation for openobject-addons -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-12-10 14:16+0000\n" -"Last-Translator: Projetaty Soluções OpenSource \n" -"Language-Team: Brazilian Portuguese \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "Usuários" - -#, python-format -#~ msgid "Error" -#~ msgstr "Erro" - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "" -#~ "A empresa escolhida não está entre as empresas habilitadas para este usuário" - -#~ msgid "res.users" -#~ msgstr "res.users" - -#~ msgid "" -#~ "This module replaces the cleartext password in the database with a password " -#~ "hash,\n" -#~ "preventing anyone from reading the original password.\n" -#~ "For your existing user base, the removal of the cleartext passwords occurs " -#~ "the first time\n" -#~ "a user logs into the database, after installing base_crypt.\n" -#~ "After installing this module it won't be possible to recover a forgotten " -#~ "password for your\n" -#~ "users, the only solution is for an admin to set a new password.\n" -#~ "\n" -#~ "Note: installing this module does not mean you can ignore basic security " -#~ "measures,\n" -#~ "as the password is still transmitted unencrypted on the network (by the " -#~ "client),\n" -#~ "unless you are using a secure protocol such as XML-RPCS.\n" -#~ " " -#~ msgstr "" -#~ "Este módulo substitui as senhas em texto puro na base de dados por senhas " -#~ "embaralhadas,\n" -#~ "impedindo que qualquer pessoa leia a senha original.\n" -#~ "Para os dados de usuários existentes, a remoção da senha em texto puro " -#~ "ocorre na primeira vez\n" -#~ "que o usuário se conecta ao banco de dados após a instalação base_crypt.\n" -#~ "Depois de instalar este módulo não será possível recuperar uma senha " -#~ "esquecida para os seus\n" -#~ "usuários, a única solução é que um administrador defina uma nova senha.\n" -#~ "\n" -#~ "Nota: A instalação deste módulo não significa que você pode ignorar as " -#~ "medidas básicas de segurança,\n" -#~ "como a senha ainda é transmitida sem criptografia na rede (pelo cliente),\n" -#~ "a menos que você estiver usando um protocolo seguro, como XML-RPCS.\n" -#~ " " - -#~ msgid "Base - Password Encryption" -#~ msgstr "Base - Criptografia de Senha" - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "Por favor informe a senha!" - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "Você não pode ter dois usuários com o mesmo login!" diff --git a/addons/base_crypt/i18n/ro.po b/addons/base_crypt/i18n/ro.po deleted file mode 100644 index 2ff1bfb79db..00000000000 --- a/addons/base_crypt/i18n/ro.po +++ /dev/null @@ -1,81 +0,0 @@ -# Romanian translation for openobject-addons -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2011-12-30 21:01+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Romanian \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "" - -#~ msgid "" -#~ "This module replaces the cleartext password in the database with a password " -#~ "hash,\n" -#~ "preventing anyone from reading the original password.\n" -#~ "For your existing user base, the removal of the cleartext passwords occurs " -#~ "the first time\n" -#~ "a user logs into the database, after installing base_crypt.\n" -#~ "After installing this module it won't be possible to recover a forgotten " -#~ "password for your\n" -#~ "users, the only solution is for an admin to set a new password.\n" -#~ "\n" -#~ "Note: installing this module does not mean you can ignore basic security " -#~ "measures,\n" -#~ "as the password is still transmitted unencrypted on the network (by the " -#~ "client),\n" -#~ "unless you are using a secure protocol such as XML-RPCS.\n" -#~ " " -#~ msgstr "" -#~ "Acest modul inlocuieste parola formata din litere din baza de date cu o " -#~ "parola hash \n" -#~ "(formata din simboluri), impiedicand pe oricine sa citeasca parola " -#~ "originala. \n" -#~ "Pentru baza existenta de utilizatori, inlocuirea parolelor din litere are " -#~ "loc prima data \n" -#~ "cand un utilizator se conecteaza la baza de date, dupa instalarea modulului " -#~ "bas-crypt. \n" -#~ "Dupa instalarea acestui modul, nu va mai fi posibila recuperarea unei parole " -#~ "uitate de \n" -#~ "catre utilizatorii dumneavoastra, iar singura solutie ramasa este ca un " -#~ "admin sa seteze o parola noua. \n" -#~ "\n" -#~ "Nota: instalarea acestui modul nu inseamna ca puteti ignora masurile de baza " -#~ "de securitate, \n" -#~ "deoarece parola este inca transmisa necriptata in retea (de catre client), \n" -#~ "daca nu cumva folositi un protocol sigur precum XML-RPCS.\n" -#~ " " - -#, python-format -#~ msgid "Error" -#~ msgstr "Eroare" - -#~ msgid "Base - Password Encryption" -#~ msgstr "Baza - Criptare Parola" - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "Va rugam sa specificati parola !" - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "" -#~ "Compania aleasa nu este printre companiile permise acestui utilizator" - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "Nu pot exista doi utilizatori cu acelasi nume de autentificare !" - -#~ msgid "res.users" -#~ msgstr "res.utilizatori" diff --git a/addons/base_crypt/i18n/ru.po b/addons/base_crypt/i18n/ru.po deleted file mode 100644 index fb48b066c6f..00000000000 --- a/addons/base_crypt/i18n/ru.po +++ /dev/null @@ -1,75 +0,0 @@ -# Russian translation for openobject-addons -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-12-07 08:15+0000\n" -"Last-Translator: Denis Karataev \n" -"Language-Team: Russian \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "Пользователи" - -#~ msgid "res.users" -#~ msgstr "res.users" - -#, python-format -#~ msgid "Error" -#~ msgstr "Error" - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "Необходимо указать пароль!" - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "" -#~ "Выбранная организация отсутствует в списке разрешённых для этого пользователя" - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "Не может быть двух пользователей с одинаковым именем пользователя!" - -#~ msgid "Base - Password Encryption" -#~ msgstr "Основной - Шифрование паролей" - -#~ msgid "" -#~ "This module replaces the cleartext password in the database with a password " -#~ "hash,\n" -#~ "preventing anyone from reading the original password.\n" -#~ "For your existing user base, the removal of the cleartext passwords occurs " -#~ "the first time\n" -#~ "a user logs into the database, after installing base_crypt.\n" -#~ "After installing this module it won't be possible to recover a forgotten " -#~ "password for your\n" -#~ "users, the only solution is for an admin to set a new password.\n" -#~ "\n" -#~ "Note: installing this module does not mean you can ignore basic security " -#~ "measures,\n" -#~ "as the password is still transmitted unencrypted on the network (by the " -#~ "client),\n" -#~ "unless you are using a secure protocol such as XML-RPCS.\n" -#~ " " -#~ msgstr "" -#~ "Этот модуль заменяет текстовые пароли в базе данных на их хэши,\n" -#~ "предотвращая хищение оригинальных паролей.\n" -#~ "Для существующей базы пользователей, удаление текстового пароля происходит " -#~ "при\n" -#~ "первом входе пользователя после установки base_crypt.\n" -#~ "После установки этого модуля станет невозможно восстановление пароля \n" -#~ "пользователя. Возможна будет только замена пароля.\n" -#~ "\n" -#~ "Прим.: установка этого модуля не избавляет от необходимости соблюдать\n" -#~ "базовые меры безопасности, поскольку пароли всё ещё передаются открытым\n" -#~ "текстом по сети, если не используется безопасный протокол вроде XML-RPCS.\n" -#~ " " diff --git a/addons/base_crypt/i18n/sk.po b/addons/base_crypt/i18n/sk.po deleted file mode 100644 index 70e634e498d..00000000000 --- a/addons/base_crypt/i18n/sk.po +++ /dev/null @@ -1,41 +0,0 @@ -# Slovak translation for openobject-addons -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2011-02-21 08:14+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Slovak \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "" - -#, python-format -#~ msgid "Error" -#~ msgstr "Chyba" - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "Prosím, zadajte heslo!" - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "" -#~ "Vybraná spoločnosť nie je medzi schválenými spoločnosťami tohto používateľa" - -#~ msgid "res.users" -#~ msgstr "res.users" - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "Nemôžte mať dvoch používateľov s rovnakým pristúpovým menom!" diff --git a/addons/base_crypt/i18n/sl.po b/addons/base_crypt/i18n/sl.po deleted file mode 100644 index 73bdfdf7080..00000000000 --- a/addons/base_crypt/i18n/sl.po +++ /dev/null @@ -1,75 +0,0 @@ -# Slovenian translation for openobject-addons -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2011-09-14 11:36+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Slovenian \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "" - -#, python-format -#~ msgid "Error" -#~ msgstr "Napaka" - -#~ msgid "Base - Password Encryption" -#~ msgstr "Osnovno - enkripcija gesla" - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "Prosim, navedite geslo !" - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "Izbrano podjetje ni v dovoljenih podjetjih za tega uporabnika" - -#~ msgid "res.users" -#~ msgstr "res.users" - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "Ne morete imeti dva uporabnika z istim prijavnim imenom!" - -#~ msgid "" -#~ "This module replaces the cleartext password in the database with a password " -#~ "hash,\n" -#~ "preventing anyone from reading the original password.\n" -#~ "For your existing user base, the removal of the cleartext passwords occurs " -#~ "the first time\n" -#~ "a user logs into the database, after installing base_crypt.\n" -#~ "After installing this module it won't be possible to recover a forgotten " -#~ "password for your\n" -#~ "users, the only solution is for an admin to set a new password.\n" -#~ "\n" -#~ "Note: installing this module does not mean you can ignore basic security " -#~ "measures,\n" -#~ "as the password is still transmitted unencrypted on the network (by the " -#~ "client),\n" -#~ "unless you are using a secure protocol such as XML-RPCS.\n" -#~ " " -#~ msgstr "" -#~ "Ta modul nadomešča obliko besedilnega geslo v bazi podatkov z hash geslom,\n" -#~ "ki preprečuje komurkoli branje izvirnega gesla.\n" -#~ "Za vašo obstoječo bazo uporabnikov, odstranitev gesla v obliki besedila se " -#~ "pojavi pri\n" -#~ "prvi prijavi uporabnika v bazo podatkov, po namestitvi base_crypt.\n" -#~ "Po namestitvi tega modula ne bo mogoče obnoviti pozabiljenega gesla za vaše\n" -#~ "uporabnike, edina rešitev je, da admin nastavi novo geslo.\n" -#~ "\n" -#~ "Opomba: namestitev tega modula ne pomeni ignoriranja osnovnih varnostnih " -#~ "ukrepov,\n" -#~ "ker se geslo še vedno prenaša nešifrirano v omrežju (preko klienta),\n" -#~ "razen če ne uporabljate varni protokol kot je XML-RPCS.\n" -#~ " " diff --git a/addons/base_crypt/i18n/sq.po b/addons/base_crypt/i18n/sq.po deleted file mode 100644 index ac1d367b815..00000000000 --- a/addons/base_crypt/i18n/sq.po +++ /dev/null @@ -1,23 +0,0 @@ -# Albanian translation for openobject-addons -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2011-03-28 15:26+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Albanian \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "" diff --git a/addons/base_crypt/i18n/sr@latin.po b/addons/base_crypt/i18n/sr@latin.po deleted file mode 100644 index a866dfeaf4e..00000000000 --- a/addons/base_crypt/i18n/sr@latin.po +++ /dev/null @@ -1,76 +0,0 @@ -# Serbian Latin translation for openobject-addons -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2011-10-05 13:25+0000\n" -"Last-Translator: Milan Milosevic \n" -"Language-Team: Serbian Latin \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "" - -#, python-format -#~ msgid "Error" -#~ msgstr "Greška" - -#~ msgid "Base - Password Encryption" -#~ msgstr "Baza - Šifrovanje lozinke" - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "Molimo odredite lozinku" - -#~ msgid "res.users" -#~ msgstr "res.users" - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "Ne možete imati dva korisnika sa istom prijavom!" - -#~ msgid "" -#~ "This module replaces the cleartext password in the database with a password " -#~ "hash,\n" -#~ "preventing anyone from reading the original password.\n" -#~ "For your existing user base, the removal of the cleartext passwords occurs " -#~ "the first time\n" -#~ "a user logs into the database, after installing base_crypt.\n" -#~ "After installing this module it won't be possible to recover a forgotten " -#~ "password for your\n" -#~ "users, the only solution is for an admin to set a new password.\n" -#~ "\n" -#~ "Note: installing this module does not mean you can ignore basic security " -#~ "measures,\n" -#~ "as the password is still transmitted unencrypted on the network (by the " -#~ "client),\n" -#~ "unless you are using a secure protocol such as XML-RPCS.\n" -#~ " " -#~ msgstr "" -#~ "Ovaj modul zamenjuje vidljivu lozinku u bazi podataka znacima,\n" -#~ "što onemogućava bilo koga da pročita originalnu lozinku.\n" -#~ "Što se tiče Vaše baze podataka, ukidanje vidljive lozinke dešava se prvi put " -#~ "pošto se korisnik prijavi u bazu podataka, po instalaciji base_crypt.\n" -#~ "Po instalaciji ovog modula neće biti moguće izmeniti zaboravljenu lozinku za " -#~ "Vaše korisnike, jedino rešenje će biti da im administrator postavi novu " -#~ "lozinku.\n" -#~ "\n" -#~ "Beleška: Instaliranje ovog modula ne znači da možete ignorisati osnovne " -#~ "sigurnosne mere,\n" -#~ "budući da se lozinka i dalje prenosi nešifrovana u mreži (od strane " -#~ "klijenta),\n" -#~ "ukoliko ne koristite siguran protokol kao XML-RPCS.\n" -#~ " " - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "Odabrano preduzeće nije u dozvoljenim preduzećima za ovog korisnioka" diff --git a/addons/base_crypt/i18n/sv.po b/addons/base_crypt/i18n/sv.po deleted file mode 100644 index 0df60f0e0e3..00000000000 --- a/addons/base_crypt/i18n/sv.po +++ /dev/null @@ -1,39 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * base_crypt -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 5.0.14\n" -"Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2011-02-15 15:37+0000\n" -"Last-Translator: Olivier Dony (OpenERP) \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: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "" - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "Du kan inte ha två användare med samma användarid !" - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "Detta bolag är inte tillåtet för den här användaren" - -#, python-format -#~ msgid "Error" -#~ msgstr "Fel" - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "Vänligen ange lösenordet !" - -#~ msgid "res.users" -#~ msgstr "res.users" diff --git a/addons/base_crypt/i18n/tr.po b/addons/base_crypt/i18n/tr.po deleted file mode 100644 index ceadad7a738..00000000000 --- a/addons/base_crypt/i18n/tr.po +++ /dev/null @@ -1,75 +0,0 @@ -# Turkish translation for openobject-addons -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-11-27 21:53+0000\n" -"Last-Translator: Ahmet Altınışık \n" -"Language-Team: Turkish \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "Kullanıcılar" - -#, python-format -#~ msgid "Error" -#~ msgstr "Hata" - -#~ msgid "Base - Password Encryption" -#~ msgstr "Temel - Şifreleme" - -#~ msgid "res.users" -#~ msgstr "res.users" - -#~ msgid "" -#~ "This module replaces the cleartext password in the database with a password " -#~ "hash,\n" -#~ "preventing anyone from reading the original password.\n" -#~ "For your existing user base, the removal of the cleartext passwords occurs " -#~ "the first time\n" -#~ "a user logs into the database, after installing base_crypt.\n" -#~ "After installing this module it won't be possible to recover a forgotten " -#~ "password for your\n" -#~ "users, the only solution is for an admin to set a new password.\n" -#~ "\n" -#~ "Note: installing this module does not mean you can ignore basic security " -#~ "measures,\n" -#~ "as the password is still transmitted unencrypted on the network (by the " -#~ "client),\n" -#~ "unless you are using a secure protocol such as XML-RPCS.\n" -#~ " " -#~ msgstr "" -#~ "Bu modül veritabanındaki açıkça yazılmış şifreleri şifre hashi ile\n" -#~ "değiştirerek hiçkimsenin orjinal şifreleri öğrenememesini sağlar.\n" -#~ "Halihazırda bulunan kullanıcılarınızın şifreleri veritabanına ilk girişte\n" -#~ "şifrelenir.\n" -#~ "Bu modül kurulduktan sonra unutulan şifreleri öğrenmek mümkün olmayacak\n" -#~ "yöneticiler sadece şifreleri değiştirebilirler.\n" -#~ "\n" -#~ "Not:Bu modülü kurmanız temel güvenlik önlemlerini almamanız için bir sebep " -#~ "değildir.\n" -#~ "Sonuçta şifreler ağ üzerinden halen şifrelenmemiş olarak dolaşıyorlar. (eğer " -#~ "XML-RPCS gibi\n" -#~ "güvenli bir protokol kullanmıyorsanız.)\n" -#~ " " - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "Aynı kullanıcı adı ile iki kullanıcı oluşturamazsınız !" - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "Lütfen parolayı belirleyin!" - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "Seçilen firma bu kullanıcı için izin verilen firmalar arasında yok" diff --git a/addons/base_crypt/i18n/vi.po b/addons/base_crypt/i18n/vi.po deleted file mode 100644 index 27f1ba05f36..00000000000 --- a/addons/base_crypt/i18n/vi.po +++ /dev/null @@ -1,80 +0,0 @@ -# Vietnamese translation for openobject-addons -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2013-06-30 16:09+0000\n" -"Last-Translator: Hung Tran \n" -"Language-Team: Vietnamese \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "Người dùng" - -#, python-format -#~ msgid "Error" -#~ msgstr "Lỗi" - -#~ msgid "Base - Password Encryption" -#~ msgstr "Cơ sở - Mã hóa Mật khẩu" - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "Vui lòng xác định mật khẩu !" - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "" -#~ "Công ty được lựa chọn không nằm trong các công ty mà người sử dụng này được " -#~ "phép" - -#~ msgid "res.users" -#~ msgstr "res.users" - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "Bạn không thể có hai người sử dụng với cùng tên đăng nhập !" - -#~ msgid "" -#~ "This module replaces the cleartext password in the database with a password " -#~ "hash,\n" -#~ "preventing anyone from reading the original password.\n" -#~ "For your existing user base, the removal of the cleartext passwords occurs " -#~ "the first time\n" -#~ "a user logs into the database, after installing base_crypt.\n" -#~ "After installing this module it won't be possible to recover a forgotten " -#~ "password for your\n" -#~ "users, the only solution is for an admin to set a new password.\n" -#~ "\n" -#~ "Note: installing this module does not mean you can ignore basic security " -#~ "measures,\n" -#~ "as the password is still transmitted unencrypted on the network (by the " -#~ "client),\n" -#~ "unless you are using a secure protocol such as XML-RPCS.\n" -#~ " " -#~ msgstr "" -#~ "Mô-đun này thay thế mật khẩu dạng tường minh (cleartext) trong cơ sở dữ liệu " -#~ "với một mật khẩu băm (hash),\n" -#~ "ngăn chặn bất cứ ai đọc các mật khẩu ban đầu.\n" -#~ "Đối với người dùng hiện tại của bạn, việc loại bỏ các mật khẩu tường minh " -#~ "xảy ra lần đầu tiên\n" -#~ "người dùng đăng nhập vào cơ sở dữ liệu, sau khi cài đặt base_crypt.\n" -#~ "Sau khi cài đặt mô-đun này, sẽ không thể khôi phục lại một mật khẩu bị lãng " -#~ "quên cho\n" -#~ "người sử dụng của bạn, giải pháp duy nhất là để một quản trị viên thiết lập " -#~ "một mật khẩu mới.\n" -#~ "\n" -#~ "Lưu ý: cài đặt mô-đun này không có nghĩa là bạn có thể bỏ qua các biện pháp " -#~ "bảo mật cơ bản,\n" -#~ "như mật khẩu vẫn được truyền không mã hóa trên mạng (từ máy khách),\n" -#~ "trừ khi bạn sử dụng một giao thức an toàn chẳng hạn như XML-RPCS.\n" -#~ " " diff --git a/addons/base_crypt/i18n/zh_CN.po b/addons/base_crypt/i18n/zh_CN.po deleted file mode 100644 index 214f0b1ea09..00000000000 --- a/addons/base_crypt/i18n/zh_CN.po +++ /dev/null @@ -1,68 +0,0 @@ -# Chinese (Simplified) translation for openobject-addons -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-11-28 06:30+0000\n" -"Last-Translator: mrshelly \n" -"Language-Team: Chinese (Simplified) \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "用户" - -#, python-format -#~ msgid "Error" -#~ msgstr "错误" - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "请指定密码!" - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "用户无权操作所选择公司数据" - -#~ msgid "res.users" -#~ msgstr "res.users" - -#~ msgid "" -#~ "This module replaces the cleartext password in the database with a password " -#~ "hash,\n" -#~ "preventing anyone from reading the original password.\n" -#~ "For your existing user base, the removal of the cleartext passwords occurs " -#~ "the first time\n" -#~ "a user logs into the database, after installing base_crypt.\n" -#~ "After installing this module it won't be possible to recover a forgotten " -#~ "password for your\n" -#~ "users, the only solution is for an admin to set a new password.\n" -#~ "\n" -#~ "Note: installing this module does not mean you can ignore basic security " -#~ "measures,\n" -#~ "as the password is still transmitted unencrypted on the network (by the " -#~ "client),\n" -#~ "unless you are using a secure protocol such as XML-RPCS.\n" -#~ " " -#~ msgstr "" -#~ "这个模块在数据库里用密码散列代替原来的明文密码,防止任何人读取到原密码。\n" -#~ "对于已存在在数据,当安装了base_crypt后,明文密码会在用户第一次登陆数据库的时候清除。\n" -#~ "在安装了这个模块后将不能恢复已遗忘的用户密码,唯一的解决办法是通过管理员输入一个新密码。\n" -#~ "注意:安装这个模块并不意味着你可以忽略基本安全措施,\n" -#~ "除非你用了一个安全协议例如XML-RPCS,否则密码在网络仍然以非加密的形式传输(通过客户端)\n" -#~ " " - -#~ msgid "Base - Password Encryption" -#~ msgstr "Base - Password Encryption" - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "两个用户不能使用相同的用户名!" diff --git a/addons/base_crypt/i18n/zh_TW.po b/addons/base_crypt/i18n/zh_TW.po deleted file mode 100644 index 9e0bfcecd54..00000000000 --- a/addons/base_crypt/i18n/zh_TW.po +++ /dev/null @@ -1,43 +0,0 @@ -# Chinese (Traditional) translation for openobject-addons -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-08-19 10:28+0000\n" -"Last-Translator: Eric Huang \n" -"Language-Team: Chinese (Traditional) \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:32+0000\n" -"X-Generator: Launchpad (build 16761)\n" - -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" -msgstr "" - -#~ msgid "Base - Password Encryption" -#~ msgstr "基礎 - 密碼加密" - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "請指定密碼 !" - -#~ msgid "You can not have two users with the same login !" -#~ msgstr "您不能同時登入二個使用者!" - -#, python-format -#~ msgid "Error" -#~ msgstr "錯誤" - -#~ msgid "The chosen company is not in the allowed companies for this user" -#~ msgstr "所選的公司不是使用者被允許的公司。" - -#~ msgid "res.users" -#~ msgstr "res.users" diff --git a/addons/base_gengo/i18n/pl.po b/addons/base_gengo/i18n/pl.po new file mode 100644 index 00000000000..0cd30c0a4a6 --- /dev/null +++ b/addons/base_gengo/i18n/pl.po @@ -0,0 +1,264 @@ +# Polish translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-11-16 19:53+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Polish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-11-17 05:21+0000\n" +"X-Generator: Launchpad (build 16831)\n" + +#. module: base_gengo +#: view:res.company:0 +msgid "Comments for Translator" +msgstr "Komentarze dla tłumacza" + +#. module: base_gengo +#: field:ir.translation,job_id:0 +msgid "Gengo Job ID" +msgstr "Identyfikator Gengo Job" + +#. module: base_gengo +#: code:addons/base_gengo/wizard/base_gengo_translations.py:114 +#, python-format +msgid "This language is not supported by the Gengo translation services." +msgstr "Ten język nie jest wspierany przez usługi tłumaczeń Gengo." + +#. module: base_gengo +#: field:res.company,gengo_comment:0 +msgid "Comments" +msgstr "Komentarze" + +#. module: base_gengo +#: field:res.company,gengo_private_key:0 +msgid "Gengo Private Key" +msgstr "Prywatny klucz Gengo" + +#. module: base_gengo +#: model:ir.model,name:base_gengo.model_base_gengo_translations +msgid "base.gengo.translations" +msgstr "" + +#. module: base_gengo +#: help:res.company,gengo_auto_approve:0 +msgid "Jobs are Automatically Approved by Gengo." +msgstr "Prace są automatycznie zatwierdzane przez Gengo." + +#. module: base_gengo +#: field:base.gengo.translations,lang_id:0 +msgid "Language" +msgstr "Język" + +#. module: base_gengo +#: field:ir.translation,gengo_comment:0 +msgid "Comments & Activity Linked to Gengo" +msgstr "Komentarze i Aktywność powiązana z Gengo" + +#. module: base_gengo +#: code:addons/base_gengo/wizard/base_gengo_translations.py:124 +#, python-format +msgid "Gengo Sync Translation (Response)" +msgstr "Gengo Sync Tłumaczenie (Odpowiedź)" + +#. module: base_gengo +#: code:addons/base_gengo/wizard/base_gengo_translations.py:72 +#, python-format +msgid "" +"Gengo `Public Key` or `Private Key` are missing. Enter your Gengo " +"authentication parameters under `Settings > Companies > Gengo Parameters`." +msgstr "" +"Brakuje Gengo 'Klucz publiczny' i 'Klucz prywatny'. Wprowadź twoje parametry " +"uwierzytelnienia Gengo pod 'Ustawienia > Firmy > Parametry Gengo'." + +#. module: base_gengo +#: selection:ir.translation,gengo_translation:0 +msgid "Translation By Machine" +msgstr "Tłumaczenie przez maszynę" + +#. module: base_gengo +#: code:addons/base_gengo/wizard/base_gengo_translations.py:155 +#, python-format +msgid "" +"%s\n" +"\n" +"--\n" +" Commented on %s by %s." +msgstr "" +"%s\n" +"\n" +"--\n" +" Komentowane %s przez %s." + +#. module: base_gengo +#: field:ir.translation,gengo_translation:0 +msgid "Gengo Translation Service Level" +msgstr "Poziom usług tłumaczeń Gengo" + +#. module: base_gengo +#: constraint:ir.translation:0 +msgid "" +"The Gengo translation service selected is not supported for this language." +msgstr "Usługi tłumaczenia Gengo nie są obsługiwane dla tego języka." + +#. module: base_gengo +#: selection:ir.translation,gengo_translation:0 +msgid "Standard" +msgstr "Standardowe" + +#. module: base_gengo +#: help:ir.translation,gengo_translation:0 +msgid "" +"You can select here the service level you want for an automatic translation " +"using Gengo." +msgstr "" +"Możesz tu wybrać poziom usług, który chcesz dla automatycznych tłumaczeń " +"Gengo." + +#. module: base_gengo +#: field:base.gengo.translations,restart_send_job:0 +msgid "Restart Sending Job" +msgstr "Restartuj wysyłanie zadań" + +#. module: base_gengo +#: view:ir.translation:0 +msgid "To Approve In Gengo" +msgstr "Do zatwierdzenia w Gengo" + +#. module: base_gengo +#: view:res.company:0 +msgid "Private Key" +msgstr "Prywatny klucz" + +#. module: base_gengo +#: view:res.company:0 +msgid "Public Key" +msgstr "Publiczny Klucz" + +#. module: base_gengo +#: field:res.company,gengo_public_key:0 +msgid "Gengo Public Key" +msgstr "Publiczny klucz Gengo" + +#. module: base_gengo +#: code:addons/base_gengo/wizard/base_gengo_translations.py:123 +#, python-format +msgid "Gengo Sync Translation (Request)" +msgstr "Gengo Sync Tlumaczenie (zapotrzebowanie)" + +#. module: base_gengo +#: view:ir.translation:0 +msgid "Translations" +msgstr "Tłumaczenia" + +#. module: base_gengo +#: field:res.company,gengo_auto_approve:0 +msgid "Auto Approve Translation ?" +msgstr "Automatycznie zatwierdźić tłumaczenie?" + +#. module: base_gengo +#: model:ir.actions.act_window,name:base_gengo.action_wizard_base_gengo_translations +#: model:ir.ui.menu,name:base_gengo.menu_action_wizard_base_gengo_translations +msgid "Gengo: Manual Request of Translation" +msgstr "Gengo: Manualne zapotrzebowanie tłumaczenia" + +#. module: base_gengo +#: code:addons/base_gengo/ir_translation.py:62 +#: code:addons/base_gengo/wizard/base_gengo_translations.py:109 +#, python-format +msgid "Gengo Authentication Error" +msgstr "Błąd uwierzytelnienia Gengo" + +#. module: base_gengo +#: model:ir.model,name:base_gengo.model_res_company +msgid "Companies" +msgstr "Firmy" + +#. module: base_gengo +#: view:ir.translation:0 +msgid "" +"Note: If the translation state is 'In Progress', it means that the " +"translation has to be approved to be uploaded in this system. You are " +"supposed to do that directly by using your Gengo Account" +msgstr "" +"Informacja: Jeśli status tłumaczenia jest 'W toku', to oznacza, że " +"tlumaczenie musi zostać zatwierdzone do załadowania w tym systemie. " +"Przewidywane jest, że to zrobisz bezpośrednio poprzez twoje konto Gento." + +#. module: base_gengo +#: code:addons/base_gengo/wizard/base_gengo_translations.py:82 +#, python-format +msgid "" +"Gengo connection failed with this message:\n" +"``%s``" +msgstr "" +"Połączenie Gengo zawiodło z następującą wiadomością:\n" +"``%s``" + +#. module: base_gengo +#: view:res.company:0 +msgid "Gengo Parameters" +msgstr "Parametry Gengo" + +#. module: base_gengo +#: view:base.gengo.translations:0 +msgid "Send" +msgstr "Wyślij" + +#. module: base_gengo +#: selection:ir.translation,gengo_translation:0 +msgid "Ultra" +msgstr "Ultra" + +#. module: base_gengo +#: model:ir.model,name:base_gengo.model_ir_translation +msgid "ir.translation" +msgstr "" + +#. module: base_gengo +#: view:ir.translation:0 +msgid "Gengo Translation Service" +msgstr "Usługi tłumaczeń Gengo" + +#. module: base_gengo +#: selection:ir.translation,gengo_translation:0 +msgid "Pro" +msgstr "Pro" + +#. module: base_gengo +#: view:base.gengo.translations:0 +msgid "Gengo Request Form" +msgstr "Formularz zapotrzebowania Gengo" + +#. module: base_gengo +#: code:addons/base_gengo/wizard/base_gengo_translations.py:114 +#, python-format +msgid "Warning" +msgstr "Ostrzeżenie" + +#. module: base_gengo +#: help:res.company,gengo_comment:0 +msgid "" +"This comment will be automatically be enclosed in each an every request sent " +"to Gengo" +msgstr "" +"Ten komentarz zostanie automatycznie zawarty w każdym zapotrzebowaniu " +"wysłanym do Gengo" + +#. module: base_gengo +#: view:base.gengo.translations:0 +msgid "Cancel" +msgstr "Anuluj" + +#. module: base_gengo +#: view:base.gengo.translations:0 +msgid "or" +msgstr "lub" diff --git a/addons/base_import/static/src/js/import.js b/addons/base_import/static/src/js/import.js index 3c029335fb1..0c3acd98265 100644 --- a/addons/base_import/static/src/js/import.js +++ b/addons/base_import/static/src/js/import.js @@ -51,7 +51,12 @@ openerp.base_import = function (instance) { type: 'ir.actions.client', tag: 'import', params: { - model: self.dataset.model + model: self.dataset.model, + // self.dataset.get_context() could be a compound? + // not sure. action's context should be evaluated + // so safer bet. Odd that timezone & al in it + // though + context: self.getParent().action.context, } }, { on_reverse_breadcrumb: function () { @@ -127,6 +132,7 @@ openerp.base_import = function (instance) { var self = this; this._super.apply(this, arguments); this.res_model = action.params.model; + this.parent_context = action.params.context || {}; // import object id this.id = null; this.Import = new instance.web.Model('base_import.import'); @@ -353,11 +359,12 @@ openerp.base_import = function (instance) { }, //- import itself - call_import: function (options) { + call_import: function (kwargs) { var fields = this.$('.oe_import_fields input.oe_import_match_field').map(function (index, el) { return $(el).select2('val') || false; }).get(); - return this.Import.call('do', [this.id, fields, this.import_options()], options) + kwargs.context = this.parent_context; + return this.Import.call('do', [this.id, fields, this.import_options()], kwargs) .then(undefined, function (error, event) { // In case of unexpected exception, convert // "JSON-RPC error" to an import failure, and diff --git a/addons/board/board.py b/addons/board/board.py index ba5da0db6e1..fafb0eae290 100644 --- a/addons/board/board.py +++ b/addons/board/board.py @@ -3,7 +3,7 @@ # # OpenERP, Open Source Management Solution # Copyright (C) 2004-2010 Tiny SPRL (). -# Copyright (C) 2010-2012 OpenERP s.a. (). +# Copyright (C) 2010-2013 OpenERP s.a. (). # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as @@ -49,6 +49,7 @@ class board_board(osv.osv): ('value', 'in', refs), ], context=context) menu_ids = map(itemgetter('res_id'), IrValues.read(cr, uid, irv_ids, ['res_id'], context=context)) + menu_ids = Menus._filter_visible_menus(cr, uid, menu_ids, context=context) menu_names = Menus.name_get(cr, uid, menu_ids, context=context) return [dict(id=m[0], name=m[1]) for m in menu_names] diff --git a/addons/board/controllers.py b/addons/board/controllers.py index 50148977216..93634627352 100644 --- a/addons/board/controllers.py +++ b/addons/board/controllers.py @@ -1,22 +1,22 @@ # -*- coding: utf-8 -*- from xml.etree import ElementTree -import openerp from openerp.addons.web.controllers.main import load_actions_from_ir_values +from openerp.addons.web.http import Controller, route, request -class Board(openerp.http.Controller): - @openerp.http.route('/board/add_to_dashboard', type='json', auth='user') +class Board(Controller): + @route('/board/add_to_dashboard', type='json', auth='user') def add_to_dashboard(self, menu_id, action_id, context_to_save, domain, view_mode, name=''): - req = openerp.http.request # FIXME move this method to board.board model - dashboard_action = load_actions_from_ir_values('action', 'tree_but_open', [('ir.ui.menu', menu_id)], False) + dashboard_action = load_actions_from_ir_values('action', 'tree_but_open', + [('ir.ui.menu', menu_id)], False) if dashboard_action: action = dashboard_action[0][2] if action['res_model'] == 'board.board' and action['views'][0][1] == 'form': # Maybe should check the content instead of model board.board ? view_id = action['views'][0][0] - board = req.session.model(action['res_model']).fields_view_get(view_id, 'form') + board = request.session.model(action['res_model']).fields_view_get(view_id, 'form') if board and 'arch' in board: xml = ElementTree.fromstring(board['arch']) column = xml.find('./board/column') @@ -30,10 +30,10 @@ class Board(openerp.http.Controller): }) column.insert(0, new_action) arch = ElementTree.tostring(xml, 'utf-8') - return req.session.model('ir.ui.view.custom').create({ - 'user_id': req.session._uid, + return request.session.model('ir.ui.view.custom').create({ + 'user_id': request.session.uid, 'ref_id': view_id, 'arch': arch - }, req.context) + }, request.context) return False diff --git a/addons/crm/board_crm_view.xml b/addons/crm/board_crm_view.xml index 6bbd450ca38..8bbbece18cb 100644 --- a/addons/crm/board_crm_view.xml +++ b/addons/crm/board_crm_view.xml @@ -20,10 +20,7 @@ graph,tree,form - ['|', - '!', '&', ('probability', '=', 100), ('stage_id.on_change', '=', 1), - '!', '&', ('probability', '=', 0), ('stage_id.sequence', '!=', 1), - ('type', '=', 'opportunity')] + ['&', ('stage_id.fold', '=', False), ('type', '=', 'opportunity')] {'search_default_Stage':1}
@@ -48,7 +45,7 @@ graph,tree,form - ['!', '&', ('probability', '=', 0), ('stage_id.sequence', '!=', 1)] + ['|', ('stage_id.fold', '=', False), ('stage_id.probability', '=', 100)] {'search_default_user': 1, 'search_default_Stage': 1}
diff --git a/addons/crm/crm.py b/addons/crm/crm.py index 98581b91666..a98fcadb959 100644 --- a/addons/crm/crm.py +++ b/addons/crm/crm.py @@ -68,8 +68,9 @@ class crm_case_stage(osv.osv): help="Link between stages and sales teams. When set, this limitate the current stage to the selected sales teams."), 'case_default': fields.boolean('Default to New Sales Team', help="If you check this field, this stage will be proposed by default on each sales team. It will not assign this stage to existing teams."), - 'fold': fields.boolean('Fold by Default', - help="This stage is not visible, for example in status bar or kanban view, when there are no records in that stage to display."), + 'fold': fields.boolean('Folded in Kanban View', + help='This stage is folded in the kanban view when' + 'there are no records in that stage to display.'), 'type': fields.selection([('lead', 'Lead'), ('opportunity', 'Opportunity'), ('both', 'Both')], @@ -78,8 +79,8 @@ class crm_case_stage(osv.osv): } _defaults = { - 'sequence': lambda *args: 1, - 'probability': lambda *args: 0.0, + 'sequence': 1, + 'probability': 0.0, 'on_change': True, 'fold': False, 'type': 'both', diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py index c580fd728e2..eaf51293355 100644 --- a/addons/crm/crm_lead.py +++ b/addons/crm/crm_lead.py @@ -72,10 +72,11 @@ class crm_lead(format_address, osv.osv): _track = { 'stage_id': { - 'crm.mt_lead_create': lambda self, cr, uid, obj, ctx=None: obj.probability == 0 and obj.stage_id and obj.stage_id.sequence == 1, - 'crm.mt_lead_stage': lambda self, cr, uid, obj, ctx=None: (obj.stage_id and obj.stage_id.sequence != 1) and obj.probability < 100, - 'crm.mt_lead_won': lambda self, cr, uid, obj, ctx=None: obj.probability == 100 and obj.stage_id and obj.stage_id.on_change, - 'crm.mt_lead_lost': lambda self, cr, uid, obj, ctx=None: obj.probability == 0 and obj.stage_id and obj.stage_id.sequence != 1, + # this is only an heuristics; depending on your particular stage configuration it may not match all 'new' stages + 'crm.mt_lead_create': lambda self, cr, uid, obj, ctx=None: obj.probability == 0 and obj.stage_id and obj.stage_id.sequence <= 1, + 'crm.mt_lead_stage': lambda self, cr, uid, obj, ctx=None: (obj.stage_id and obj.stage_id.sequence > 1) and obj.probability < 100, + 'crm.mt_lead_won': lambda self, cr, uid, obj, ctx=None: obj.probability == 100 and obj.stage_id and obj.stage_id.fold, + 'crm.mt_lead_lost': lambda self, cr, uid, obj, ctx=None: obj.probability == 0 and obj.stage_id and obj.stage_id.fold and obj.stage_id.sequence > 1, }, } @@ -93,7 +94,7 @@ class crm_lead(format_address, osv.osv): def _get_default_stage_id(self, cr, uid, context=None): """ Gives default stage_id """ section_id = self._get_default_section_id(cr, uid, context=context) - return self.stage_find(cr, uid, [], section_id, [('sequence', '=', '1')], context=context) + return self.stage_find(cr, uid, [], section_id, [('fold', '=', False)], context=context) def _resolve_section_id_from_context(self, cr, uid, context=None): """ Returns ID of section based on the value of 'section_id' @@ -382,34 +383,52 @@ class crm_lead(format_address, osv.osv): # AND with the domain in parameter search_domain += list(domain) # perform search, return the first found - stage_ids = self.pool.get('crm.case.stage').search(cr, uid, search_domain, order=order, context=context) + stage_ids = self.pool.get('crm.case.stage').search(cr, uid, search_domain, order=order, limit=1, context=context) if stage_ids: return stage_ids[0] return False def case_mark_lost(self, cr, uid, ids, context=None): - """ Mark the case as lost: state=cancel and probability=0 """ - for lead in self.browse(cr, uid, ids): - stage_id = self.stage_find(cr, uid, [lead], lead.section_id.id or False, [('probability', '=', 0.0), ('on_change', '=', True), ('sequence', '>', 1)], context=context) + """ Mark the case as lost: state=cancel and probability=0 + :deprecated: this method will be removed in OpenERP v8. + """ + stages_leads = {} + for lead in self.browse(cr, uid, ids, context=context): + stage_id = self.stage_find(cr, uid, [lead], lead.section_id.id or False, [('probability', '=', 0.0), ('fold', '=', True), ('sequence', '>', 1)], context=context) if stage_id: - return self.write(cr, uid, [lead.id], {'stage_id': stage_id}, context=context) + if stages_leads.get(stage_id): + stages_leads[stage_id].append(lead.id) + else: + stages_leads[stage_id] = [lead.id] else: raise osv.except_osv(_('Warning!'), _('To relieve your sales pipe and group all Lost opportunities, configure one of your sales stage as follow:\n' 'probability = 0 %, select "Change Probability Automatically".\n' 'Create a specific stage or edit an existing one by editing columns of your opportunity pipe.')) + for stage_id, lead_ids in stages_leads.items(): + self.write(cr, uid, lead_ids, {'stage_id': stage_id}, context=context) + return True def case_mark_won(self, cr, uid, ids, context=None): - """ Mark the case as won: state=done and probability=100 """ - for lead in self.browse(cr, uid, ids): - stage_id = self.stage_find(cr, uid, [lead], lead.section_id.id or False, [('probability', '=', 100.0), ('on_change', '=', True), ('sequence', '>', 1)], context=context) + """ Mark the case as won: state=done and probability=100 + :deprecated: this method will be removed in OpenERP v8. + """ + stages_leads = {} + for lead in self.browse(cr, uid, ids, context=context): + stage_id = self.stage_find(cr, uid, [lead], lead.section_id.id or False, [('probability', '=', 100.0), ('fold', '=', True)], context=context) if stage_id: - return self.write(cr, uid, [lead.id], {'stage_id': stage_id}, context=context) + if stages_leads.get(stage_id): + stages_leads[stage_id].append(lead.id) + else: + stages_leads[stage_id] = [lead.id] else: raise osv.except_osv(_('Warning!'), _('To relieve your sales pipe and group all Won opportunities, configure one of your sales stage as follow:\n' 'probability = 100 % and select "Change Probability Automatically".\n' 'Create a specific stage or edit an existing one by editing columns of your opportunity pipe.')) + for stage_id, lead_ids in stages_leads.items(): + self.write(cr, uid, lead_ids, {'stage_id': stage_id}, context=context) + return True def case_escalate(self, cr, uid, ids, context=None): """ Escalates case to parent level """ @@ -617,7 +636,7 @@ class crm_lead(format_address, osv.osv): # An Opportunity always has higher confidence level than a lead, unless its stage probability is 0.0 for opportunity in opportunities: sequence = -1 - if opportunity.stage_id and (opportunity.stage_id.probability != 0 or opportunity.stage_id.sequence == 1): + if opportunity.stage_id and not opportunity.stage_id.fold: sequence = opportunity.stage_id.sequence sequenced_opps.append(((int(sequence != -1 and opportunity.type == 'opportunity'), sequence, -opportunity.id), opportunity)) @@ -678,7 +697,7 @@ class crm_lead(format_address, osv.osv): 'phone': customer and customer.phone or lead.phone, } if not lead.stage_id or lead.stage_id.type=='lead': - val['stage_id'] = self.stage_find(cr, uid, [lead], section_id, [('sequence', '=', '1'), ('type', 'in', ('opportunity','both'))], context=context) + val['stage_id'] = self.stage_find(cr, uid, [lead], section_id, [('type', 'in', ('opportunity', 'both'))], context=context) return val def convert_opportunity(self, cr, uid, ids, partner_id, user_ids=False, section_id=False, context=None): @@ -688,7 +707,7 @@ class crm_lead(format_address, osv.osv): customer = partner.browse(cr, uid, partner_id, context=context) for lead in self.browse(cr, uid, ids, context=context): # TDE: was if lead.state in ('done', 'cancel'): - if (lead.probability == '100') or (lead.probability == '0' and lead.stage_id.sequence != '1'): + if lead.probability == 100 or (lead.probability == 0 and lead.stage_id.fold): continue vals = self._convert_opportunity_data(cr, uid, lead, customer, section_id, context=context) self.write(cr, uid, [lead.id], vals, context=context) @@ -818,9 +837,11 @@ class crm_lead(format_address, osv.osv): model_data = self.pool.get('ir.model.data') phonecall_dict = {} if not categ_id: - res_id = model_data._get_id(cr, uid, 'crm', 'categ_phone2') - if res_id: + try: + res_id = model_data._get_id(cr, uid, 'crm', 'categ_phone2') categ_id = model_data.browse(cr, uid, res_id, context=context).res_id + except ValueError: + pass for lead in self.browse(cr, uid, ids, context=context): if not section_id: section_id = lead.section_id and lead.section_id.id or False @@ -927,6 +948,23 @@ class crm_lead(format_address, osv.osv): vals.update(onchange_stage_values) return super(crm_lead, self).write(cr, uid, ids, vals, context=context) + def copy(self, cr, uid, id, default=None, context=None): + if not default: + default = {} + if not context: + context = {} + lead = self.browse(cr, uid, id, context=context) + local_context = dict(context) + local_context.setdefault('default_type', lead.type) + local_context.setdefault('default_section_id', lead.section_id) + if lead.type == 'opportunity': + default['date_open'] = fields.datetime.now() + else: + default['date_open'] = False + default['date_closed'] = False + default['stage_id'] = self._get_default_stage_id(cr, uid, local_context) + return super(crm_lead, self).copy(cr, uid, id, default, context=context) + # ---------------------------------------- # Mail Gateway # ---------------------------------------- diff --git a/addons/crm/crm_lead_data.xml b/addons/crm/crm_lead_data.xml index 3c299fef704..6bb8e2700d4 100644 --- a/addons/crm/crm_lead_data.xml +++ b/addons/crm/crm_lead_data.xml @@ -44,6 +44,7 @@ Won 1 + 1 100 1 70 @@ -203,7 +204,7 @@ ${object.partner_id != False and object.partner_id.id} - ${not object.partner_id and object.email_from} + ${(not object.partner_id and object.email_from)|safe} @@ -211,7 +212,7 @@ admin@example.com - ${object.user_id != False and object.user_id.email} + ${(object.user_id != False and object.user_id.email)|safe} Reminder on Lead: ${object.id} from ${object.partner_id != False and object.partner_id.name or object.contact_name} This opportunity did not have any activity since at least 5 days. Here are some details:

    diff --git a/addons/crm/crm_lead_view.xml b/addons/crm/crm_lead_view.xml index c0eefcc8d4c..f3e424e3e37 100644 --- a/addons/crm/crm_lead_view.xml +++ b/addons/crm/crm_lead_view.xml @@ -323,7 +323,7 @@ crm.lead - + @@ -334,14 +334,14 @@ - - + domain="[('probability', '=', '0'), ('stage_id.fold', '=', True)]"/>
    +
    @@ -550,18 +552,16 @@ - + domain="[('probability', '=', 100), ('stage_id.fold', '=', True)]"/> + domain="[('probability', '=', 0), ('stage_id.fold', '=', True)]"/> - @@ -600,7 +600,7 @@ id="crm.action_lead_mass_mail" context="{ 'default_composition_mode': 'mass_mail', - 'default_email_to':'{$object.email or \'\'}', + 'default_email_to':'{($object.email or \'\')|safe}', 'default_use_template': True, 'default_template_id': ref('crm.email_template_opportunity_mail'), }" diff --git a/addons/crm/crm_phonecall.py b/addons/crm/crm_phonecall.py index 1e67c50a2c3..e74fecc9bdf 100644 --- a/addons/crm/crm_phonecall.py +++ b/addons/crm/crm_phonecall.py @@ -117,9 +117,11 @@ class crm_phonecall(osv.osv): model_data = self.pool.get('ir.model.data') phonecall_dict = {} if not categ_id: - res_id = model_data._get_id(cr, uid, 'crm', 'categ_phone2') - if res_id: + try: + res_id = model_data._get_id(cr, uid, 'crm', 'categ_phone2') categ_id = model_data.browse(cr, uid, res_id, context=context).res_id + except ValueError: + pass for call in self.browse(cr, uid, ids, context=context): if not section_id: section_id = call.section_id and call.section_id.id or False diff --git a/addons/crm/crm_phonecall_view.xml b/addons/crm/crm_phonecall_view.xml index 585286f5456..a027a910520 100644 --- a/addons/crm/crm_phonecall_view.xml +++ b/addons/crm/crm_phonecall_view.xml @@ -120,7 +120,7 @@ + on_change="on_change_partner_id(partner_id)"/> diff --git a/addons/crm/crm_view.xml b/addons/crm/crm_view.xml index d0dcc07fcb0..8cc4b03cb41 100644 --- a/addons/crm/crm_view.xml +++ b/addons/crm/crm_view.xml @@ -93,14 +93,19 @@ - - - - - - - - + + + + + + + + + + + + + diff --git a/addons/crm/wizard/crm_lead_to_opportunity.py b/addons/crm/wizard/crm_lead_to_opportunity.py index 48097944ec4..f239ad739c1 100644 --- a/addons/crm/wizard/crm_lead_to_opportunity.py +++ b/addons/crm/wizard/crm_lead_to_opportunity.py @@ -59,11 +59,11 @@ class crm_lead2opportunity_partner(osv.osv_memory): if partner_id: # Search for opportunities that have the same partner and that arent done or cancelled - ids = lead_obj.search(cr, uid, [('partner_id', '=', partner_id), ('probability', '<', '100')]) + ids = lead_obj.search(cr, uid, [('partner_id', '=', partner_id), '|', ('probability', '=', False), ('probability', '<', '100')]) for id in ids: tomerge.add(id) if email: - ids = lead_obj.search(cr, uid, [('email_from', '=ilike', email[0]), ('probability', '<', '100')]) + ids = lead_obj.search(cr, uid, [('email_from', '=ilike', email[0]), '|', ('probability', '=', False), ('probability', '<', '100')]) for id in ids: tomerge.add(id) diff --git a/addons/crm/wizard/crm_opportunity_to_phonecall.py b/addons/crm/wizard/crm_opportunity_to_phonecall.py index bb1ac2fdce6..5183773b618 100644 --- a/addons/crm/wizard/crm_opportunity_to_phonecall.py +++ b/addons/crm/wizard/crm_opportunity_to_phonecall.py @@ -34,9 +34,11 @@ class crm_opportunity2phonecall(osv.osv_memory): opp_obj = self.pool.get('crm.lead') categ_id = False data_obj = self.pool.get('ir.model.data') - res_id = data_obj._get_id(cr, uid, 'crm', 'categ_phone2') - if res_id: + try: + res_id = data_obj._get_id(cr, uid, 'crm', 'categ_phone2') categ_id = data_obj.browse(cr, uid, res_id, context=context).res_id + except ValueError: + pass record_ids = context and context.get('active_ids', []) or [] res = {} diff --git a/addons/crm/wizard/crm_phonecall_to_phonecall.py b/addons/crm/wizard/crm_phonecall_to_phonecall.py index 7e1da41a29f..804b3c7cb0f 100644 --- a/addons/crm/wizard/crm_phonecall_to_phonecall.py +++ b/addons/crm/wizard/crm_phonecall_to_phonecall.py @@ -78,9 +78,11 @@ class crm_phonecall2phonecall(osv.osv_memory): categ_id = False data_obj = self.pool.get('ir.model.data') - res_id = data_obj._get_id(cr, uid, 'crm', 'categ_phone2') - if res_id: + try: + res_id = data_obj._get_id(cr, uid, 'crm', 'categ_phone2') categ_id = data_obj.browse(cr, uid, res_id, context=context).res_id + except ValueError: + pass if 'name' in fields: res.update({'name': phonecall.name}) diff --git a/addons/crm_claim/crm_claim.py b/addons/crm_claim/crm_claim.py index 1b9cb0b0c50..50cbe4a6c44 100644 --- a/addons/crm_claim/crm_claim.py +++ b/addons/crm_claim/crm_claim.py @@ -173,7 +173,8 @@ class crm_claim(osv.osv): through message_process. This override updates the document according to the email. """ - if custom_values is None: custom_values = {} + if custom_values is None: + custom_values = {} desc = html2plaintext(msg.get('body')) if msg.get('body') else '' defaults = { 'name': msg.get('subject') or _("No Subject"), @@ -185,33 +186,7 @@ class crm_claim(osv.osv): if msg.get('priority'): defaults['priority'] = msg.get('priority') defaults.update(custom_values) - return super(crm_claim,self).message_new(cr, uid, msg, custom_values=defaults, context=context) - - def message_update(self, cr, uid, ids, msg, update_vals=None, context=None): - """ Overrides mail_thread message_update that is called by the mailgateway - through message_process. - This method updates the document according to the email. - """ - if isinstance(ids, (str, int, long)): - ids = [ids] - if update_vals is None: update_vals = {} - - if msg.get('priority') in dict(crm.AVAILABLE_PRIORITIES): - update_vals['priority'] = msg.get('priority') - - maps = { - 'cost':'planned_cost', - 'revenue': 'planned_revenue', - 'probability':'probability' - } - for line in msg['body'].split('\n'): - line = line.strip() - res = tools.command_re.match(line) - if res and maps.get(res.group(1).lower()): - key = maps.get(res.group(1).lower()) - update_vals[key] = res.group(2).lower() - - return super(crm_claim,self).message_update(cr, uid, ids, msg, update_vals=update_vals, context=context) + return super(crm_claim, self).message_new(cr, uid, msg, custom_values=defaults, context=context) class res_partner(osv.osv): _inherit = 'res.partner' diff --git a/addons/crm_claim/i18n/zh_CN.po b/addons/crm_claim/i18n/zh_CN.po index c9ec45833a7..d2d64263c5f 100644 --- a/addons/crm_claim/i18n/zh_CN.po +++ b/addons/crm_claim/i18n/zh_CN.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-21 17:05+0000\n" -"PO-Revision-Date: 2012-12-14 13:47+0000\n" -"Last-Translator: 盈通 ccdos \n" +"PO-Revision-Date: 2013-11-19 09:33+0000\n" +"Last-Translator: Guipo Hao \n" "Language-Team: Chinese (Simplified) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:21+0000\n" -"X-Generator: Launchpad (build 16761)\n" +"X-Launchpad-Export-Date: 2013-11-20 05:25+0000\n" +"X-Generator: Launchpad (build 16831)\n" #. module: crm_claim #: help:crm.claim.stage,fold:0 @@ -91,6 +91,13 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +" 点击创建投诉类别。\n" +"

    \n" +" 创建投诉类别来更好地对投诉进行管理和分类。\n" +" 例如:预防措施,纠正措施等。\n" +"

    \n" +" " #. module: crm_claim #: view:crm.claim.report:0 @@ -352,6 +359,7 @@ msgid "" "is related to the status 'Close', when your document reaches this stage, it " "will be automatically have the 'closed' status." msgstr "" +"与此阶段对应的相关状态。文档的状态将根据所选阶段自动变更。例如:某阶段与状态“关闭”相关,当文档处于该阶段时,该文档自动设为“关闭”状态。" #. module: crm_claim #: view:crm.claim:0 @@ -567,6 +575,13 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +" 点击创建处理投诉的新阶段。 \n" +"

    \n" +" 能够创建投诉阶段来分类管理每个进入系统的投诉。\n" +" 阶段可以定义解决投诉的所有必要的步骤。\n" +"

    \n" +" " #. module: crm_claim #: help:crm.claim,state:0 diff --git a/addons/crm_helpdesk/crm_helpdesk.py b/addons/crm_helpdesk/crm_helpdesk.py index 5f84d45f974..c1cd6d2ff91 100644 --- a/addons/crm_helpdesk/crm_helpdesk.py +++ b/addons/crm_helpdesk/crm_helpdesk.py @@ -127,7 +127,8 @@ class crm_helpdesk(osv.osv): through message_process. This override updates the document according to the email. """ - if custom_values is None: custom_values = {} + if custom_values is None: + custom_values = {} desc = html2plaintext(msg.get('body')) if msg.get('body') else '' defaults = { 'name': msg.get('subject') or _("No Subject"), @@ -138,32 +139,6 @@ class crm_helpdesk(osv.osv): 'partner_id': msg.get('author_id', False), } defaults.update(custom_values) - return super(crm_helpdesk,self).message_new(cr, uid, msg, custom_values=defaults, context=context) - - def message_update(self, cr, uid, ids, msg, update_vals=None, context=None): - """ Overrides mail_thread message_update that is called by the mailgateway - through message_process. - This method updates the document according to the email. - """ - if isinstance(ids, (str, int, long)): - ids = [ids] - if update_vals is None: update_vals = {} - - if msg.get('priority') in dict(crm.AVAILABLE_PRIORITIES): - update_vals['priority'] = msg.get('priority') - - maps = { - 'cost':'planned_cost', - 'revenue': 'planned_revenue', - 'probability':'probability' - } - for line in msg['body'].split('\n'): - line = line.strip() - res = tools.command_re.match(line) - if res and maps.get(res.group(1).lower()): - key = maps.get(res.group(1).lower()) - update_vals[key] = res.group(2).lower() - - return super(crm_helpdesk,self).message_update(cr, uid, ids, msg, update_vals=update_vals, context=context) + return super(crm_helpdesk, self).message_new(cr, uid, msg, custom_values=defaults, context=context) # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/crm_partner_assign/__openerp__.py b/addons/crm_partner_assign/__openerp__.py index e0f1d78558a..3c75ed35911 100644 --- a/addons/crm_partner_assign/__openerp__.py +++ b/addons/crm_partner_assign/__openerp__.py @@ -21,20 +21,17 @@ { - 'name': 'Partners Geo-Localization', + 'name': 'CRM Geolocation', 'version': '1.0', 'category': 'Customer Relationship Management', 'description': """ -This is the module used by OpenERP SA to redirect customers to its partners, based on geolocalization. +This is the module used by OpenERP SA to redirect customers to its partners, based on geolocation. ====================================================================================================== -You can geolocalize your opportunities by using this module. +This modules lets you geolocate Leads, Opportunities and Partners based on their address. -Use geolocalization when assigning opportunities to partners. -Determine the GPS coordinates according to the address of the partner. - -The most appropriate partner can be assigned. -You can also use the geolocalization without using the GPS coordinates. +Once the coordinates of the Lead/Opportunity is known, they can be automatically assigned +to an appropriate local partner, based on the distance and the weight that was assigned to the partner. """, 'author': 'OpenERP SA', 'depends': ['crm', 'account', 'portal'], diff --git a/addons/crm_partner_assign/crm_lead.py b/addons/crm_partner_assign/crm_lead.py index 37f4b9aedff..d7463355271 100644 --- a/addons/crm_partner_assign/crm_lead.py +++ b/addons/crm_partner_assign/crm_lead.py @@ -42,3 +42,17 @@ class crm_lead(osv.osv): def case_disinterested(self, cr, uid, ids, context=None): return self.get_interested_action(cr, uid, False, context=context) + + def assign_salesman_of_assigned_partner(self, cr, uid, ids, context=None): + salesmans_leads = {} + for lead in self.browse(cr, uid, ids, context=context): + if (lead.stage_id.probability > 0 and lead.stage_id.probability < 100) or lead.stage_id.sequence == 1: + if lead.partner_assigned_id and lead.partner_assigned_id.user_id and lead.partner_assigned_id.user_id != lead.user_id: + salesman_id = lead.partner_assigned_id.user_id.id + if salesmans_leads.get(salesman_id): + salesmans_leads[salesman_id].append(lead.id) + else: + salesmans_leads[salesman_id] = [lead.id] + for salesman_id, lead_ids in salesmans_leads.items(): + salesteam_id = self.on_change_user(cr, uid, lead_ids, salesman_id, context=None)['value'].get('section_id') + self.write(cr, uid, lead_ids, {'user_id': salesman_id, 'section_id': salesteam_id}, context=context) diff --git a/addons/crm_partner_assign/crm_lead_view.xml b/addons/crm_partner_assign/crm_lead_view.xml index 7550396e886..80d82c6c2bf 100644 --- a/addons/crm_partner_assign/crm_lead_view.xml +++ b/addons/crm_partner_assign/crm_lead_view.xml @@ -65,6 +65,9 @@ domain="[]" context="{'group_by':'date_assign'}"/>
    + + + @@ -131,11 +134,40 @@ + + + + + Assign salesman of assigned partner + + code + + if context.get('active_model') == 'crm.lead': + ids = [] + if context.get('active_domain'): + ids = self.search(cr, uid, context['active_domain'], context=context) + elif context.get('active_ids'): + ids = context['active_ids'] + if ids: + self.assign_salesman_of_assigned_partner(cr, uid, ids, context=context) + + + + + + + Assign salesman of assigned partner + client_action_multi + + action + crm.lead + + diff --git a/addons/crm_partner_assign/crm_partner_assign.py b/addons/crm_partner_assign/crm_partner_assign.py index daf3d844fe6..c5329696b32 100644 --- a/addons/crm_partner_assign/crm_partner_assign.py +++ b/addons/crm_partner_assign/crm_partner_assign.py @@ -179,23 +179,27 @@ class crm_lead(osv.osv): return res def assign_geo_localize(self, cr, uid, ids, latitude=False, longitude=False, context=None): - # Don't pass context to browse()! We need country name in english below - for lead in self.browse(cr, uid, ids): - if not lead.country_id: - continue - result = geo_find(geo_query_address(street=lead.street, - zip=lead.zip, - city=lead.city, - state=lead.state_id.name, - country=lead.country_id.name)) - if not latitude and result: - latitude = result[0] - if not longitude and result: - longitude = result[1] - self.write(cr, uid, [lead.id], { + if latitude and longitude: + self.write(cr, uid, ids, { 'partner_latitude': latitude, 'partner_longitude': longitude }, context=context) + return True + # Don't pass context to browse()! We need country name in english below + for lead in self.browse(cr, uid, ids): + if lead.partner_latitude and lead.partner_longitude: + continue + if lead.country_id: + result = geo_find(geo_query_address(street=lead.street, + zip=lead.zip, + city=lead.city, + state=lead.state_id.name, + country=lead.country_id.name)) + if result: + self.write(cr, uid, [lead.id], { + 'partner_latitude': result[0], + 'partner_longitude': result[1] + }, context=context) return True def search_geo_partner(self, cr, uid, ids, context=None): diff --git a/addons/crm_partner_assign/crm_partner_assign_data.xml b/addons/crm_partner_assign/crm_partner_assign_data.xml index b4347b1621b..284476cb6ee 100644 --- a/addons/crm_partner_assign/crm_partner_assign_data.xml +++ b/addons/crm_partner_assign/crm_partner_assign_data.xml @@ -4,14 +4,14 @@ Assigned - + lead To Recycle - + lead @@ -19,8 +19,8 @@ Lead Mass Mail - ${ctx['partner_id'].email} - ${user.email or ''} + ${ctx['partner_id'].email|safe} + ${(user.email or '')|safe} Fwd: Lead: ${ctx['partner_id'].name} % for lead in ctx['partner_leads']: -
  • ${lead.lead_id.name or 'Subject Undefined'}, ${lead.lead_id.contact_name or 'Contact Name Undefined'}, ${lead.lead_id.country_id and lead.lead_id.country_id.name or 'Country Undefined' }, ${lead.lead_id.email_from or 'Email Undefined'}, ${lead.lead_id.phone or ''}

  • +
  • ${lead.lead_id.name or 'Subject Undefined'}, ${lead.lead_id.partner_name or lead.lead_id.contact_name or 'Contact Name Undefined'}, ${lead.lead_id.country_id and lead.lead_id.country_id.name or 'Country Undefined' }, ${lead.lead_id.email_from or 'Email Undefined'}, ${lead.lead_id.phone or ''}

  • % endfor @@ -56,4 +56,4 @@ PS: It looks like you do not have an account manager assigned to you, please con ]]>
    - \ No newline at end of file + diff --git a/addons/crm_partner_assign/i18n/zh_CN.po b/addons/crm_partner_assign/i18n/zh_CN.po index 7b137b9c9af..df5d0049248 100644 --- a/addons/crm_partner_assign/i18n/zh_CN.po +++ b/addons/crm_partner_assign/i18n/zh_CN.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-21 17:05+0000\n" -"PO-Revision-Date: 2013-07-23 06:22+0000\n" -"Last-Translator: fanvil \n" +"PO-Revision-Date: 2013-11-19 09:36+0000\n" +"Last-Translator: Tom \n" "Language-Team: Chinese (Simplified) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:28+0000\n" -"X-Generator: Launchpad (build 16761)\n" +"X-Launchpad-Export-Date: 2013-11-20 05:25+0000\n" +"X-Generator: Launchpad (build 16831)\n" #. module: crm_partner_assign #: field:crm.lead.report.assign,delay_close:0 @@ -85,7 +85,7 @@ msgstr "发送者的Email地址。当收取的email没有对应的合作伙伴 #. module: crm_partner_assign #: view:crm.partner.report.assign:0 msgid "Date Partnership" -msgstr "" +msgstr "合作伙伴日期" #. module: crm_partner_assign #: selection:crm.lead.report.assign,type:0 @@ -144,7 +144,7 @@ msgstr "消息唯一编号" #. module: crm_partner_assign #: field:res.partner,date_review_next:0 msgid "Next Partner Review" -msgstr "" +msgstr "下一个合作伙伴评价" #. module: crm_partner_assign #: selection:crm.lead.forward.to.partner,history_mode:0 @@ -559,7 +559,7 @@ msgstr "8月" #. module: crm_partner_assign #: help:crm.lead.forward.to.partner,record_name:0 msgid "Name get of the related document." -msgstr "" +msgstr "获得相关文档的名称" #. module: crm_partner_assign #: selection:crm.lead.report.assign,priority:0 @@ -656,7 +656,7 @@ msgstr "计划收入" #. module: crm_partner_assign #: view:res.partner:0 msgid "Partner Review" -msgstr "" +msgstr "合作伙伴评价" #. module: crm_partner_assign #: field:crm.partner.report.assign,period_id:0 @@ -857,7 +857,7 @@ msgstr "业务伙伴分析" msgid "" "Technical field holding the message notifications. Use notified_partner_ids " "to access notified partners." -msgstr "" +msgstr "技术字段支持消息提醒,使用notified_partner_ids 来访问被提醒的合作伙伴。" #. module: crm_partner_assign #: view:crm.partner.report.assign:0 @@ -877,7 +877,7 @@ msgstr "写作模式" #. module: crm_partner_assign #: field:crm.lead.forward.to.partner,model:0 msgid "Related Document Model" -msgstr "" +msgstr "相关单据模型" #. module: crm_partner_assign #: selection:crm.lead.forward.to.partner,history_mode:0 @@ -889,7 +889,7 @@ msgstr "业务信息" msgid "" "Author of the message. If not set, email_from may hold an email address that " "did not match any partner." -msgstr "" +msgstr "消息的作者。如未设置,email_from 可能保存一个不匹配任何合作伙伴的 email地址。" #. module: crm_partner_assign #: model:ir.model,name:crm_partner_assign.model_crm_partner_report_assign @@ -904,12 +904,12 @@ msgstr "高" #. module: crm_partner_assign #: field:crm.lead.forward.to.partner,partner_ids:0 msgid "Additional contacts" -msgstr "" +msgstr "附加的联系人" #. module: crm_partner_assign #: help:crm.lead.forward.to.partner,parent_id:0 msgid "Initial thread message." -msgstr "" +msgstr "初始化线索消息" #. module: crm_partner_assign #: field:crm.lead.report.assign,create_date:0 diff --git a/addons/delivery/stock.py b/addons/delivery/stock.py index 95e87eb45ab..42c24b4a27d 100644 --- a/addons/delivery/stock.py +++ b/addons/delivery/stock.py @@ -187,6 +187,9 @@ class stock_move(osv.osv): # Redefinition of the new fields in order to update the model stock.picking.out in the orm # FIXME: this is a temporary workaround because of a framework bug (ref: lp996816). It should be removed as soon as # the bug is fixed + +# TODO in trunk: Remove the duplication below using a mixin class! + class stock_picking_out(osv.osv): _inherit = 'stock.picking.out' @@ -212,6 +215,7 @@ class stock_picking_out(osv.osv): }), 'carrier_tracking_ref': fields.char('Carrier Tracking Ref', size=32), 'number_of_packages': fields.integer('Number of Packages'), + 'weight_uom_id': fields.many2one('product.uom', 'Unit of Measure', required=True,readonly="1",help="Unit of measurement for Weight",), } class stock_picking_in(osv.osv): @@ -224,6 +228,8 @@ class stock_picking_in(osv.osv): return self.pool.get('stock.picking')._get_picking_line(cr, uid, ids, context=context) _columns = { + 'carrier_id':fields.many2one("delivery.carrier","Carrier"), + 'volume': fields.float('Volume'), 'weight': fields.function(_cal_weight, type='float', string='Weight', digits_compute= dp.get_precision('Stock Weight'), multi='_cal_weight', store={ 'stock.picking': (lambda self, cr, uid, ids, c={}: ids, ['move_lines'], 20), @@ -234,6 +240,9 @@ class stock_picking_in(osv.osv): 'stock.picking': (lambda self, cr, uid, ids, c={}: ids, ['move_lines'], 20), 'stock.move': (_get_picking_line, ['product_id','product_qty','product_uom','product_uos_qty'], 20), }), + 'carrier_tracking_ref': fields.char('Carrier Tracking Ref', size=32), + 'number_of_packages': fields.integer('Number of Packages'), + 'weight_uom_id': fields.many2one('product.uom', 'Unit of Measure', required=True,readonly="1",help="Unit of measurement for Weight",), } # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/document/security/ir.model.access.csv b/addons/document/security/ir.model.access.csv index e0513a0640c..8c5e4323831 100644 --- a/addons/document/security/ir.model.access.csv +++ b/addons/document/security/ir.model.access.csv @@ -15,3 +15,4 @@ access_report_document_user_group_document_manager,report.document.user document access_report_document_file_group_document_manager,report.document.file document manager,model_report_document_file,base.group_system,1,0,0,0 access_report_document_file_group_document,report.document.file document manager,model_report_document_file,base.group_document_user,1,0,0,0 access_report_document_user_knowledgeuser,report.document.user knowledgeuser,document.model_report_document_user,base.group_document_user,1,0,0,0 +access_document_storage,access_document_storage,model_document_storage,base.group_system,1,1,1,1 diff --git a/addons/document/static/src/js/document.js b/addons/document/static/src/js/document.js index 23f1375e8c8..e4bce2da76e 100644 --- a/addons/document/static/src/js/document.js +++ b/addons/document/static/src/js/document.js @@ -9,7 +9,7 @@ openerp.document = function (instance) { on_attachments_loaded: function(attachments) { //to display number in name if more then one attachment which has same name. var self = this; - _.chain(attachments.reverse()) + _.chain(attachments) .groupBy(function(attachment) { return attachment.name}) .each(function(attachment){ if(attachment.length > 1) diff --git a/addons/document_ftp/ftpserver/__init__.py b/addons/document_ftp/ftpserver/__init__.py index 3749a02a387..6474def3e99 100644 --- a/addons/document_ftp/ftpserver/__init__.py +++ b/addons/document_ftp/ftpserver/__init__.py @@ -34,6 +34,9 @@ def start_server(): if openerp.multi_process: _logger.info("FTP disabled in multiprocess mode") return + if openerp.evented: + _logger.info("FTP disabled in evented mode") + return HOST = config.get('ftp_server_host', '127.0.0.1') PORT = int(config.get('ftp_server_port', '8021')) PASSIVE_PORTS = None diff --git a/addons/email_template/email_template.py b/addons/email_template/email_template.py index ed35349f420..efa1387435a 100644 --- a/addons/email_template/email_template.py +++ b/addons/email_template/email_template.py @@ -378,7 +378,7 @@ class email_template(osv.osv): # Ensure report is rendered using template's language ctx = context.copy() if template.lang: - ctx['lang'] = self.render_template_batch(cr, uid, template.lang, template.model, res_id, context) # take 0 ? + ctx['lang'] = self.render_template_batch(cr, uid, template.lang, template.model, [res_id], context)[res_id] # take 0 ? result, format = openerp.report.render_report(cr, uid, [res_id], report_service, {'model': template.model}, ctx) result = base64.b64encode(result) if not report_name: diff --git a/addons/email_template/i18n/zh_CN.po b/addons/email_template/i18n/zh_CN.po index 005ba59c1f8..794dcf6177a 100644 --- a/addons/email_template/i18n/zh_CN.po +++ b/addons/email_template/i18n/zh_CN.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-21 17:05+0000\n" -"PO-Revision-Date: 2013-11-07 09:37+0000\n" -"Last-Translator: dengwei <250100785@qq.com>\n" +"PO-Revision-Date: 2013-11-19 10:18+0000\n" +"Last-Translator: Guipo Hao \n" "Language-Team: Chinese (Simplified) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-11-08 05:41+0000\n" -"X-Generator: Launchpad (build 16820)\n" +"X-Launchpad-Export-Date: 2013-11-20 05:25+0000\n" +"X-Generator: Launchpad (build 16831)\n" #. module: email_template #: field:email.template,email_from:0 @@ -275,7 +275,7 @@ msgstr "邮件预览" #: view:email.template:0 msgid "" "Remove the contextual action to use this template on related documents" -msgstr "" +msgstr "移除上下文内容,以将模板用于相关的文档。" #. module: email_template #: field:email.template,copyvalue:0 diff --git a/addons/event/email_template.xml b/addons/event/email_template.xml index 95ffbf46d8d..d99774acd3c 100644 --- a/addons/event/email_template.xml +++ b/addons/event/email_template.xml @@ -4,8 +4,8 @@ Confirmation of the Event - ${object.user_id.email or object.company_id.email or 'noreply@' + object.company_id.name + '.com'} - ${object.email} + ${(object.user_id.email or object.company_id.email or 'noreply@' + object.company_id.name + '.com')|safe} + ${object.email|safe} Your registration at ${object.event_id.name} Hello ${object.name},

    @@ -21,8 +21,8 @@ Confirmation of the Registration - ${object.user_id.email or object.company_id.email or 'noreply@' + object.company_id.name + '.com'} - ${object.email} + ${(object.user_id.email or object.company_id.email or 'noreply@' + object.company_id.name + '.com')|safe} + ${object.email|safe} Your registration at ${object.event_id.name} Hello ${object.name},

    diff --git a/addons/event_moodle/i18n/ru.po b/addons/event_moodle/i18n/ru.po new file mode 100644 index 00000000000..b42a84a023b --- /dev/null +++ b/addons/event_moodle/i18n/ru.po @@ -0,0 +1,185 @@ +# Russian translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-11-13 05:19+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Russian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-11-14 05:23+0000\n" +"X-Generator: Launchpad (build 16820)\n" + +#. module: event_moodle +#: view:event.moodle.config.wiz:0 +msgid "Connection with username and password" +msgstr "" + +#. module: event_moodle +#: model:ir.model,name:event_moodle.model_event_moodle_config_wiz +msgid "event.moodle.config.wiz" +msgstr "" + +#. module: event_moodle +#: help:event.moodle.config.wiz,server_moodle:0 +msgid "" +"URL where you have your moodle server. For exemple: 'http://127.0.0.1' or " +"'http://localhost'" +msgstr "" + +#. module: event_moodle +#: field:event.registration,moodle_user_password:0 +msgid "Password for Moodle User" +msgstr "" + +#. module: event_moodle +#: field:event.moodle.config.wiz,moodle_password:0 +msgid "Moodle Password" +msgstr "" + +#. module: event_moodle +#: code:addons/event_moodle/event_moodle.py:137 +#, python-format +msgid "Your email '%s' is wrong." +msgstr "" + +#. module: event_moodle +#: view:event.moodle.config.wiz:0 +msgid "Connection with a Token" +msgstr "" + +#. module: event_moodle +#: view:event.moodle.config.wiz:0 +msgid "" +"The easiest way to connect OpenERP with a moodle server is to create a " +"'token' in Moodle. It will be used to authenticate OpenERP as a trustable " +"application." +msgstr "" + +#. module: event_moodle +#: field:event.moodle.config.wiz,url:0 +msgid "URL to Moodle Server" +msgstr "" + +#. module: event_moodle +#: help:event.moodle.config.wiz,url:0 +msgid "The url that will be used for the connection with moodle in xml-rpc" +msgstr "" + +#. module: event_moodle +#: model:ir.model,name:event_moodle.model_event_registration +msgid "Event Registration" +msgstr "" + +#. module: event_moodle +#: view:event.moodle.config.wiz:0 +msgid "" +"Another approach is to create a user for OpenERP in Moodle. If you do so, " +"make sure that this user has appropriate access rights." +msgstr "" + +#. module: event_moodle +#: field:event.registration,moodle_uid:0 +msgid "Moodle User ID" +msgstr "" + +#. module: event_moodle +#: field:event.moodle.config.wiz,server_moodle:0 +msgid "Moodle Server" +msgstr "" + +#. module: event_moodle +#: field:event.event,moodle_id:0 +msgid "Moodle ID" +msgstr "" + +#. module: event_moodle +#: view:event.moodle.config.wiz:0 +msgid "Server" +msgstr "" + +#. module: event_moodle +#: code:addons/event_moodle/event_moodle.py:57 +#: code:addons/event_moodle/event_moodle.py:105 +#: code:addons/event_moodle/event_moodle.py:137 +#, python-format +msgid "Error!" +msgstr "" + +#. module: event_moodle +#: code:addons/event_moodle/event_moodle.py:105 +#, python-format +msgid "You must configure your moodle connection." +msgstr "" + +#. module: event_moodle +#: field:event.moodle.config.wiz,moodle_username:0 +#: field:event.registration,moodle_username:0 +msgid "Moodle Username" +msgstr "" + +#. module: event_moodle +#: view:event.moodle.config.wiz:0 +#: model:ir.actions.act_window,name:event_moodle.configure_moodle +msgid "Configure Moodle" +msgstr "" + +#. module: event_moodle +#: field:event.moodle.config.wiz,moodle_token:0 +msgid "Moodle Token" +msgstr "" + +#. module: event_moodle +#: help:event.moodle.config.wiz,moodle_username:0 +msgid "" +"You can also connect with your username that you define when you create a " +"token" +msgstr "" + +#. module: event_moodle +#: help:event.event,moodle_id:0 +msgid "The identifier of this event in Moodle" +msgstr "" + +#. module: event_moodle +#: help:event.moodle.config.wiz,moodle_token:0 +msgid "Put your token that you created in your moodle server" +msgstr "" + +#. module: event_moodle +#: model:ir.ui.menu,name:event_moodle.wizard_moodle +msgid "Moodle Configuration" +msgstr "" + +#. module: event_moodle +#: view:event.moodle.config.wiz:0 +msgid "or" +msgstr "" + +#. module: event_moodle +#: code:addons/event_moodle/event_moodle.py:57 +#, python-format +msgid "First configure your moodle connection." +msgstr "" + +#. module: event_moodle +#: view:event.moodle.config.wiz:0 +msgid "Apply" +msgstr "" + +#. module: event_moodle +#: view:event.moodle.config.wiz:0 +msgid "Cancel" +msgstr "" + +#. module: event_moodle +#: model:ir.model,name:event_moodle.model_event_event +msgid "Event" +msgstr "" diff --git a/addons/fleet/fleet.py b/addons/fleet/fleet.py index 483f989fcde..854bd043869 100644 --- a/addons/fleet/fleet.py +++ b/addons/fleet/fleet.py @@ -160,8 +160,8 @@ class fleet_vehicle_model(osv.Model): 'brand_id': fields.many2one('fleet.vehicle.model.brand', 'Model Brand', required=True, help='Brand of the vehicle'), 'vendors': fields.many2many('res.partner', 'fleet_vehicle_model_vendors', 'model_id', 'partner_id', string='Vendors'), 'image': fields.related('brand_id', 'image', type="binary", string="Logo"), - 'image_medium': fields.related('brand_id', 'image_medium', type="binary", string="Logo"), - 'image_small': fields.related('brand_id', 'image_small', type="binary", string="Logo"), + 'image_medium': fields.related('brand_id', 'image_medium', type="binary", string="Logo (medium)"), + 'image_small': fields.related('brand_id', 'image_small', type="binary", string="Logo (small)"), } @@ -354,8 +354,8 @@ class fleet_vehicle(osv.Model): 'power': fields.integer('Power', help='Power in kW of the vehicle'), 'co2': fields.float('CO2 Emissions', help='CO2 emissions of the vehicle'), 'image': fields.related('model_id', 'image', type="binary", string="Logo"), - 'image_medium': fields.related('model_id', 'image_medium', type="binary", string="Logo"), - 'image_small': fields.related('model_id', 'image_small', type="binary", string="Logo"), + 'image_medium': fields.related('model_id', 'image_medium', type="binary", string="Logo (medium)"), + 'image_small': fields.related('model_id', 'image_small', type="binary", string="Logo (small)"), 'contract_renewal_due_soon': fields.function(_get_contract_reminder_fnc, fnct_search=_search_contract_renewal_due_soon, type="boolean", string='Has Contracts to renew', multi='contract_info'), 'contract_renewal_overdue': fields.function(_get_contract_reminder_fnc, fnct_search=_search_get_overdue_contract_reminder, type="boolean", string='Has Contracts Overdued', multi='contract_info'), 'contract_renewal_name': fields.function(_get_contract_reminder_fnc, type="text", string='Name of contract to renew soon', multi='contract_info'), diff --git a/addons/fleet/fleet_demo.xml b/addons/fleet/fleet_demo.xml index a550ae78da5..2f9b71b3bb5 100644 --- a/addons/fleet/fleet_demo.xml +++ b/addons/fleet/fleet_demo.xml @@ -1,8 +1,9 @@ + - + diff --git a/addons/fleet/fleet_view.xml b/addons/fleet/fleet_view.xml index 1258e49aa2d..a0ced74a509 100644 --- a/addons/fleet/fleet_view.xml +++ b/addons/fleet/fleet_view.xml @@ -43,6 +43,7 @@
    + fleet.vehicle.model.tree fleet.vehicle.model @@ -565,7 +566,7 @@
    - fleet.vehicle.odometer.graph @@ -671,6 +673,23 @@
    + + + fleet.vehicle.log.fuel.search + fleet.vehicle.log.fuel + + + + + + + + + + + + + fleet.vehicle.log.fuel.graph @@ -690,6 +709,7 @@ fleet.vehicle.log.fuel form tree,form,graph + {"search_default_groupby_vehicle" : True}

    Click to create a new fuel log. diff --git a/addons/hr/hr.py b/addons/hr/hr.py index bf58fdd76f8..37d1bae7fea 100644 --- a/addons/hr/hr.py +++ b/addons/hr/hr.py @@ -236,11 +236,13 @@ class hr_employee(osv.osv): employee_id = super(hr_employee, self).create(cr, uid, data, context=create_ctx) employee = self.browse(cr, uid, employee_id, context=context) if employee.user_id: + res_users = self.pool['res.users'] # send a copy to every user of the company - company_id = employee.user_id.partner_id.company_id.id - partner_ids = self.pool.get('res.partner').search(cr, uid, [ - ('company_id', '=', company_id), - ('user_ids', '!=', False)], context=context) + # TODO: post to the `Whole Company` mail.group when we'll be able to link to the employee record + _model, group_id = self.pool['ir.model.data'].get_object_reference(cr, uid, 'base', 'group_user') + user_ids = res_users.search(cr, uid, [('company_id', '=', employee.user_id.company_id.id), + ('groups_id', 'in', group_id)]) + partner_ids = list(set(u.partner_id.id for u in res_users.browse(cr, uid, user_ids, context=context))) else: partner_ids = [] self.message_post(cr, uid, [employee_id], diff --git a/addons/hr/hr_view.xml b/addons/hr/hr_view.xml index 4922a53bcbf..e9a859bf44d 100644 --- a/addons/hr/hr_view.xml +++ b/addons/hr/hr_view.xml @@ -117,7 +117,7 @@ hr.employee - + diff --git a/addons/hr_evaluation/i18n/pl.po b/addons/hr_evaluation/i18n/pl.po new file mode 100644 index 00000000000..f154b1b71a3 --- /dev/null +++ b/addons/hr_evaluation/i18n/pl.po @@ -0,0 +1,913 @@ +# Polish translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-21 17:04+0000\n" +"PO-Revision-Date: 2013-11-17 15:26+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Polish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-11-18 05:22+0000\n" +"X-Generator: Launchpad (build 16831)\n" + +#. module: hr_evaluation +#: help:hr_evaluation.plan.phase,send_anonymous_manager:0 +msgid "Send an anonymous summary to the manager" +msgstr "Wyślij anonimowe podsumowanie do menadżera" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "Start Appraisal" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +#: view:hr.evaluation.report:0 +#: view:hr_evaluation.plan:0 +msgid "Group By..." +msgstr "Grupuj wg..." + +#. module: hr_evaluation +#: field:hr.evaluation.interview,request_id:0 +#: field:hr.evaluation.report,request_id:0 +msgid "Request_id" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "March" +msgstr "Marzec" + +#. module: hr_evaluation +#: field:hr.evaluation.report,delay_date:0 +msgid "Delay to Start" +msgstr "Opuźnienie do rozpoczęcia" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "Appraisal that are in waiting appreciation state" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan:0 +#: field:hr_evaluation.plan,company_id:0 +#: field:hr_evaluation.plan.phase,company_id:0 +msgid "Company" +msgstr "Firma" + +#. module: hr_evaluation +#: field:hr.evaluation.interview,evaluation_id:0 +#: field:hr_evaluation.plan.phase,survey_id:0 +msgid "Appraisal Form" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +#: field:hr.evaluation.report,day:0 +msgid "Day" +msgstr "Dzień" + +#. module: hr_evaluation +#: view:hr_evaluation.plan:0 +#: field:hr_evaluation.plan,phase_ids:0 +msgid "Appraisal Phases" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +msgid "Send Request" +msgstr "Wyślij żądanie" + +#. module: hr_evaluation +#: help:hr_evaluation.plan,month_first:0 +msgid "" +"This number of months will be used to schedule the first evaluation date of " +"the employee when selecting an evaluation plan. " +msgstr "" + +#. module: hr_evaluation +#: view:hr.employee:0 +#: model:ir.ui.menu,name:hr_evaluation.menu_open_view_hr_evaluation_tree +msgid "Appraisals" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid "(eval_name)s:Appraisal Name" +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.interview,message_ids:0 +#: field:hr_evaluation.evaluation,message_ids:0 +msgid "Messages" +msgstr "Wiadomości" + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid "Mail Body" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.plan.phase,wait:0 +msgid "Wait Previous Phases" +msgstr "" + +#. module: hr_evaluation +#: model:ir.model,name:hr_evaluation.model_hr_evaluation_evaluation +msgid "Employee Appraisal" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,state:0 +#: selection:hr_evaluation.evaluation,state:0 +msgid "Cancelled" +msgstr "Anulowano" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,rating:0 +#: selection:hr_evaluation.evaluation,rating:0 +msgid "Did not meet expectations" +msgstr "Nie spełnił oczekiwań" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +#: model:ir.actions.act_window,name:hr_evaluation.open_view_hr_evaluation_tree +#: model:ir.ui.menu,name:hr_evaluation.menu_eval_hr +msgid "Appraisal" +msgstr "" + +#. module: hr_evaluation +#: help:hr.evaluation.interview,message_unread:0 +#: help:hr_evaluation.evaluation,message_unread:0 +msgid "If checked new messages require your attention." +msgstr "Jeśli zaznaczone, to wiadomość wymaga twojej uwagi" + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid "Send to Managers" +msgstr "Wyślij do menadżera" + +#. module: hr_evaluation +#: field:hr_evaluation.evaluation,date_close:0 +msgid "Ending Date" +msgstr "Data końcowa" + +#. module: hr_evaluation +#: help:hr_evaluation.evaluation,note_action:0 +msgid "" +"If the evaluation does not meet the expectations, you can proposean action " +"plan" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid "Send to Employees" +msgstr "Wyślij do pracownika" + +#. module: hr_evaluation +#: code:addons/hr_evaluation/hr_evaluation.py:84 +#, python-format +msgid "" +"\n" +"Date: %(date)s\n" +"\n" +"Dear %(employee_name)s,\n" +"\n" +"I am doing an evaluation regarding %(eval_name)s.\n" +"\n" +"Kindly submit your response.\n" +"\n" +"\n" +"Thanks,\n" +"--\n" +"%(user_signature)s\n" +"\n" +" " +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "Appraisal that are in Plan In Progress state" +msgstr "" + +#. module: hr_evaluation +#: help:hr.evaluation.interview,message_summary:0 +#: help:hr_evaluation.evaluation,message_summary:0 +msgid "" +"Holds the Chatter summary (number of messages, ...). This summary is " +"directly in html format in order to be inserted in kanban views." +msgstr "" +"Zawiera podsumowanie wypowiedzi (liczbę wiadomości, ...). To podsumowanie " +"jest bezpośrednio w formacie html, aby można je było stosować w widokach " +"kanban." + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "Reset to Draft" +msgstr "Reset do wersji roboczej" + +#. module: hr_evaluation +#: field:hr.evaluation.report,deadline:0 +msgid "Deadline" +msgstr "Ostateczny czas ukończenia" + +#. module: hr_evaluation +#: code:addons/hr_evaluation/hr_evaluation.py:235 +#: code:addons/hr_evaluation/hr_evaluation.py:320 +#, python-format +msgid "Warning!" +msgstr "Ostrzeżenie !" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +msgid "In progress Evaluations" +msgstr "" + +#. module: hr_evaluation +#: model:ir.model,name:hr_evaluation.model_survey_request +msgid "survey.request" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid "(date)s: Current Date" +msgstr "" + +#. module: hr_evaluation +#: model:ir.actions.act_window,name:hr_evaluation.act_hr_employee_2_hr__evaluation_interview +msgid "Interviews" +msgstr "Rozmowy kwalifikacyjne" + +#. module: hr_evaluation +#: code:addons/hr_evaluation/hr_evaluation.py:83 +#, python-format +msgid "Regarding " +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.interview,message_follower_ids:0 +#: field:hr_evaluation.evaluation,message_follower_ids:0 +msgid "Followers" +msgstr "Obserwatorzy" + +#. module: hr_evaluation +#: field:hr.evaluation.interview,message_unread:0 +#: field:hr_evaluation.evaluation,message_unread:0 +msgid "Unread Messages" +msgstr "Nieprzeczytane wiadomości" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +#: field:hr.evaluation.report,employee_id:0 +#: view:hr_evaluation.evaluation:0 +#: field:hr_evaluation.evaluation,employee_id:0 +#: model:ir.model,name:hr_evaluation.model_hr_employee +msgid "Employee" +msgstr "Pracownik" + +#. module: hr_evaluation +#: selection:hr_evaluation.evaluation,state:0 +msgid "New" +msgstr "Nowe" + +#. module: hr_evaluation +#: field:hr_evaluation.plan.phase,mail_body:0 +msgid "Email" +msgstr "Email" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,rating:0 +#: selection:hr_evaluation.evaluation,rating:0 +msgid "Exceeds expectations" +msgstr "Przekracza oczekiwania" + +#. module: hr_evaluation +#: help:hr_evaluation.plan.phase,mail_feature:0 +msgid "" +"Check this box if you want to send mail to employees coming under this phase" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +msgid "Creation Date" +msgstr "Data utworzenia" + +#. module: hr_evaluation +#: help:hr_evaluation.plan.phase,send_answer_manager:0 +msgid "Send all answers to the manager" +msgstr "Wyślij wszystkie odpowiedzi do menadżera" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,state:0 +#: selection:hr_evaluation.evaluation,state:0 +msgid "Plan In Progress" +msgstr "Plan w trakcie realizacji" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "Public Notes" +msgstr "Notatki publiczne" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +msgid "Send Reminder Email" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +#: field:hr_evaluation.evaluation,rating:0 +msgid "Appreciation" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "Print Interview" +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.report,closed:0 +msgid "closed" +msgstr "zamknięte" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,rating:0 +#: selection:hr_evaluation.evaluation,rating:0 +msgid "Meet expectations" +msgstr "Spełnia oczekiwania" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +#: field:hr.evaluation.report,nbr:0 +msgid "# of Requests" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "July" +msgstr "Lipiec" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +#: view:hr.evaluation.report:0 +#: field:hr.evaluation.report,state:0 +#: view:hr_evaluation.evaluation:0 +#: field:hr_evaluation.evaluation,state:0 +msgid "Status" +msgstr "Status" + +#. module: hr_evaluation +#: model:ir.actions.act_window,name:hr_evaluation.action_evaluation_plans_installer +msgid "Review Appraisal Plans" +msgstr "" + +#. module: hr_evaluation +#: model:ir.actions.act_window,help:hr_evaluation.action_evaluation_plans_installer +msgid "" +"

    \n" +" Click to define a new appraisal plan.\n" +"

    \n" +" You can define appraisal plans (ex: first interview after 6\n" +" months, then every year). Then, each employee can be linked " +"to\n" +" an appraisal plan so that OpenERP can automatically " +"generate\n" +" interview requests to managers and/or subordinates.\n" +"

    \n" +" " +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid "Action to Perform" +msgstr "Działanie do wykonania" + +#. module: hr_evaluation +#: field:hr_evaluation.evaluation,note_action:0 +msgid "Action Plan" +msgstr "Plan działania" + +#. module: hr_evaluation +#: model:ir.ui.menu,name:hr_evaluation.menu_eval_hr_config +msgid "Periodic Appraisal" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.plan,month_next:0 +msgid "Periodicity of Appraisal (months)" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,rating:0 +#: selection:hr_evaluation.evaluation,rating:0 +msgid "Significantly exceeds expectations" +msgstr "Znacznie przekracza oczekiwania" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "In progress" +msgstr "W toku" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +msgid "Interview Request" +msgstr "Zaproszenie na rozmowę kwalifikacyjną" + +#. module: hr_evaluation +#: field:hr_evaluation.plan.phase,send_answer_employee:0 +#: field:hr_evaluation.plan.phase,send_answer_manager:0 +msgid "All Answers" +msgstr "Wszystkie odpowiedzi" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +#: view:hr_evaluation.evaluation:0 +msgid "Answer Survey" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "September" +msgstr "Wrzesień" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "December" +msgstr "Grudzień" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +#: field:hr.evaluation.report,month:0 +msgid "Month" +msgstr "Miesiąc" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "Group by..." +msgstr "Grupuj wg..." + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid "Mail Settings" +msgstr "Ustawienia skrzynki pocztowej" + +#. module: hr_evaluation +#: model:ir.actions.act_window,name:hr_evaluation.evaluation_reminders +msgid "Appraisal Reminders" +msgstr "" + +#. module: hr_evaluation +#: help:hr_evaluation.plan.phase,wait:0 +msgid "" +"Check this box if you want to wait that all preceding phases are finished " +"before launching this phase." +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid "Legend" +msgstr "Legenda" + +#. module: hr_evaluation +#: field:hr_evaluation.plan,month_first:0 +msgid "First Appraisal in (months)" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,state:0 +msgid "Draft" +msgstr "Wersja robocza" + +#. module: hr_evaluation +#: field:hr_evaluation.plan.phase,send_anonymous_employee:0 +#: field:hr_evaluation.plan.phase,send_anonymous_manager:0 +msgid "Anonymous Summary" +msgstr "Anonimowe podsumowanie" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "Pending" +msgstr "W oczekiwaniu" + +#. module: hr_evaluation +#: field:hr.employee,evaluation_plan_id:0 +#: view:hr.evaluation.interview:0 +#: view:hr_evaluation.plan:0 +#: field:hr_evaluation.plan,name:0 +#: field:hr_evaluation.plan.phase,plan_id:0 +#: model:ir.model,name:hr_evaluation.model_hr_evaluation_plan +msgid "Appraisal Plan" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +msgid "Print Survey" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "August" +msgstr "Sierpień" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "June" +msgstr "Czerwiec" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,rating:0 +#: selection:hr_evaluation.evaluation,rating:0 +msgid "Significantly bellow expectations" +msgstr "Znacznie poniżej oczekiwań" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "Validate Appraisal" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid " (employee_name)s: Partner name" +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.interview,message_is_follower:0 +#: field:hr_evaluation.evaluation,message_is_follower:0 +msgid "Is a Follower" +msgstr "Jest obserwatorem" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +#: field:hr.evaluation.report,plan_id:0 +#: view:hr_evaluation.evaluation:0 +#: field:hr_evaluation.evaluation,plan_id:0 +msgid "Plan" +msgstr "Plan" + +#. module: hr_evaluation +#: field:hr_evaluation.plan,active:0 +msgid "Active" +msgstr "Aktywny" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "November" +msgstr "Listopad" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +msgid "Extended Filters..." +msgstr "Rozszerzone filtry..." + +#. module: hr_evaluation +#: help:hr_evaluation.plan.phase,send_anonymous_employee:0 +msgid "Send an anonymous summary to the employee" +msgstr "Wyślij anonimowe podsumowanie do pracownika" + +#. module: hr_evaluation +#: model:ir.model,name:hr_evaluation.model_hr_evaluation_plan_phase +msgid "Appraisal Plan Phase" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "January" +msgstr "Styczeń" + +#. module: hr_evaluation +#: view:hr.employee:0 +msgid "Appraisal Interviews" +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.interview,message_summary:0 +#: field:hr_evaluation.evaluation,message_summary:0 +msgid "Summary" +msgstr "Podsumowanie" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "Date" +msgstr "Data" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +msgid "Survey" +msgstr "Ankieta" + +#. module: hr_evaluation +#: field:hr_evaluation.plan.phase,action:0 +msgid "Action" +msgstr "Działanie" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +#: selection:hr.evaluation.report,state:0 +msgid "Final Validation" +msgstr "Ostateczne zatwierdzenie" + +#. module: hr_evaluation +#: selection:hr_evaluation.evaluation,state:0 +msgid "Waiting Appreciation" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +#: model:ir.actions.act_window,name:hr_evaluation.action_evaluation_report_all +#: model:ir.ui.menu,name:hr_evaluation.menu_evaluation_report_all +msgid "Appraisal Analysis" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.evaluation,date:0 +msgid "Appraisal Deadline" +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.report,rating:0 +msgid "Overall Rating" +msgstr "Ogólna ocena" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +#: view:hr_evaluation.evaluation:0 +msgid "Interviewer" +msgstr "Przeprowadzający rozmowę kwalifikacyjną" + +#. module: hr_evaluation +#: model:ir.model,name:hr_evaluation.model_hr_evaluation_report +msgid "Evaluations Statistics" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +msgid "Deadline Date" +msgstr "Data ostatecznego terminu" + +#. module: hr_evaluation +#: help:hr_evaluation.evaluation,rating:0 +msgid "This is the appreciation on which the evaluation is summarized." +msgstr "" + +#. module: hr_evaluation +#: selection:hr_evaluation.plan.phase,action:0 +msgid "Top-Down Appraisal Requests" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid "General" +msgstr "Ogólne" + +#. module: hr_evaluation +#: help:hr_evaluation.plan.phase,send_answer_employee:0 +msgid "Send all answers to the employee" +msgstr "Wyślij wszystkie odpowiedzi do pracownika" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +#: view:hr.evaluation.report:0 +#: selection:hr.evaluation.report,state:0 +#: view:hr_evaluation.evaluation:0 +#: selection:hr_evaluation.evaluation,state:0 +msgid "Done" +msgstr "Wykonano" + +#. module: hr_evaluation +#: view:hr_evaluation.plan:0 +#: model:ir.actions.act_window,name:hr_evaluation.open_view_hr_evaluation_plan_tree +#: model:ir.ui.menu,name:hr_evaluation.menu_open_view_hr_evaluation_plan_tree +msgid "Appraisal Plans" +msgstr "" + +#. module: hr_evaluation +#: model:ir.model,name:hr_evaluation.model_hr_evaluation_interview +msgid "Appraisal Interview" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +#: view:hr_evaluation.evaluation:0 +msgid "Cancel" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +msgid "In Progress" +msgstr "W toku" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +msgid "To Do" +msgstr "Do zrobienia" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +msgid "Final Validation Evaluations" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.plan.phase,mail_feature:0 +msgid "Send mail for this phase" +msgstr "Wyślij mail dla tej fazy" + +#. module: hr_evaluation +#: field:hr_evaluation.plan.phase,email_subject:0 +msgid "char" +msgstr "znak" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "October" +msgstr "Październik" + +#. module: hr_evaluation +#: help:hr.employee,evaluation_date:0 +msgid "" +"The date of the next appraisal is computed by the appraisal plan's dates " +"(first appraisal + periodicity)." +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.report,overpass_delay:0 +msgid "Overpassed Deadline" +msgstr "Przekroczony termin końcowy" + +#. module: hr_evaluation +#: help:hr_evaluation.plan,month_next:0 +msgid "" +"The number of month that depicts the delay between each evaluation of this " +"plan (after the first one)." +msgstr "" + +#. module: hr_evaluation +#: selection:hr_evaluation.plan.phase,action:0 +msgid "Self Appraisal Requests" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +#: field:hr_evaluation.evaluation,survey_request_ids:0 +msgid "Appraisal Forms" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "May" +msgstr "Maj" + +#. module: hr_evaluation +#: model:ir.actions.act_window,help:hr_evaluation.open_view_hr_evaluation_tree +msgid "" +"

    \n" +" Click to create a new appraisal.\n" +"

    \n" +" Each employee may be assigned an Appraisal Plan. Such a " +"plan\n" +" defines the frequency and the way you manage your periodic\n" +" personnel evaluation. You will be able to define steps and\n" +" attach interviews to each step. OpenERP manages all kinds " +"of\n" +" evaluations: bottom-up, top-down, self-evaluation and final\n" +" evaluation by the manager.\n" +"

    \n" +" " +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "Internal Notes" +msgstr "Notatki wewnetrzne" + +#. module: hr_evaluation +#: selection:hr_evaluation.plan.phase,action:0 +msgid "Final Interview" +msgstr "Ostateczna rozmowa kwalifikacyjna" + +#. module: hr_evaluation +#: field:hr_evaluation.plan.phase,name:0 +msgid "Phase" +msgstr "Faza" + +#. module: hr_evaluation +#: selection:hr_evaluation.plan.phase,action:0 +msgid "Bottom-Up Appraisal Requests" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "February" +msgstr "Luty" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +#: view:hr_evaluation.evaluation:0 +msgid "Interview Appraisal" +msgstr "" + +#. module: hr_evaluation +#: field:survey.request,is_evaluation:0 +msgid "Is Appraisal?" +msgstr "" + +#. module: hr_evaluation +#: code:addons/hr_evaluation/hr_evaluation.py:320 +#, python-format +msgid "You cannot start evaluation without Appraisal." +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.interview,user_to_review_id:0 +msgid "Employee to Interview" +msgstr "Pracownik do rozmowy kwalifikacyjnej" + +#. module: hr_evaluation +#: code:addons/hr_evaluation/hr_evaluation.py:235 +#, python-format +msgid "" +"You cannot change state, because some appraisal(s) are in waiting answer or " +"draft state." +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "April" +msgstr "Kwiecień" + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid "Appraisal Plan Phases" +msgstr "" + +#. module: hr_evaluation +#: model:ir.actions.act_window,help:hr_evaluation.action_hr_evaluation_interview_tree +msgid "" +"

    \n" +" Click to create a new interview request related to a " +"personal evaluation. \n" +"

    \n" +" Interview requests are usually generated automatically by\n" +" OpenERP according to an employee's appraisal plan. Each " +"user\n" +" receives automatic emails and requests to evaluate their\n" +" colleagues periodically.\n" +"

    \n" +" " +msgstr "" + +#. module: hr_evaluation +#: help:hr.evaluation.interview,message_ids:0 +#: help:hr_evaluation.evaluation,message_ids:0 +msgid "Messages and communication history" +msgstr "Wiadomości i historia komunikacji" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +#: view:hr_evaluation.evaluation:0 +msgid "Search Appraisal" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.plan.phase,sequence:0 +msgid "Sequence" +msgstr "Sekwencja" + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid "(user_signature)s: User name" +msgstr "" + +#. module: hr_evaluation +#: view:board.board:0 +#: model:ir.actions.act_window,name:hr_evaluation.action_hr_evaluation_interview_board +#: model:ir.actions.act_window,name:hr_evaluation.action_hr_evaluation_interview_tree +#: model:ir.ui.menu,name:hr_evaluation.menu_open_hr_evaluation_interview_requests +msgid "Interview Requests" +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.report,create_date:0 +msgid "Create Date" +msgstr "Data utworzenia" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +#: field:hr.evaluation.report,year:0 +msgid "Year" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.evaluation,note_summary:0 +msgid "Appraisal Summary" +msgstr "" + +#. module: hr_evaluation +#: field:hr.employee,evaluation_date:0 +msgid "Next Appraisal Date" +msgstr "" diff --git a/addons/hr_evaluation/i18n/zh_CN.po b/addons/hr_evaluation/i18n/zh_CN.po index d03ac984bf4..0b5cafc0340 100644 --- a/addons/hr_evaluation/i18n/zh_CN.po +++ b/addons/hr_evaluation/i18n/zh_CN.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-21 17:04+0000\n" -"PO-Revision-Date: 2012-11-30 14:35+0000\n" -"Last-Translator: 盈通 ccdos \n" +"PO-Revision-Date: 2013-11-19 09:42+0000\n" +"Last-Translator: Guipo Hao \n" "Language-Team: Chinese (Simplified) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:06+0000\n" -"X-Generator: Launchpad (build 16761)\n" +"X-Launchpad-Export-Date: 2013-11-20 05:25+0000\n" +"X-Generator: Launchpad (build 16831)\n" #. module: hr_evaluation #: help:hr_evaluation.plan.phase,send_anonymous_manager:0 @@ -886,6 +886,13 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +" 点击根据人员评估来创建一个新的面试要求。 \n" +"

    \n" +" 面试要求通常由OpenERP根据员工评估计划自动生成。每个用户\n" +" 会定期自动接到要求评估同事的电子邮件。\n" +"

    \n" +" " #. module: hr_evaluation #: help:hr.evaluation.interview,message_ids:0 diff --git a/addons/hr_evaluation/i18n/zh_TW.po b/addons/hr_evaluation/i18n/zh_TW.po new file mode 100644 index 00000000000..62fce50c577 --- /dev/null +++ b/addons/hr_evaluation/i18n/zh_TW.po @@ -0,0 +1,910 @@ +# Chinese (Traditional) translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-21 17:04+0000\n" +"PO-Revision-Date: 2013-11-18 02:50+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Chinese (Traditional) \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-11-19 05:27+0000\n" +"X-Generator: Launchpad (build 16831)\n" + +#. module: hr_evaluation +#: help:hr_evaluation.plan.phase,send_anonymous_manager:0 +msgid "Send an anonymous summary to the manager" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "Start Appraisal" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +#: view:hr.evaluation.report:0 +#: view:hr_evaluation.plan:0 +msgid "Group By..." +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.interview,request_id:0 +#: field:hr.evaluation.report,request_id:0 +msgid "Request_id" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "March" +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.report,delay_date:0 +msgid "Delay to Start" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "Appraisal that are in waiting appreciation state" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan:0 +#: field:hr_evaluation.plan,company_id:0 +#: field:hr_evaluation.plan.phase,company_id:0 +msgid "Company" +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.interview,evaluation_id:0 +#: field:hr_evaluation.plan.phase,survey_id:0 +msgid "Appraisal Form" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +#: field:hr.evaluation.report,day:0 +msgid "Day" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan:0 +#: field:hr_evaluation.plan,phase_ids:0 +msgid "Appraisal Phases" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +msgid "Send Request" +msgstr "" + +#. module: hr_evaluation +#: help:hr_evaluation.plan,month_first:0 +msgid "" +"This number of months will be used to schedule the first evaluation date of " +"the employee when selecting an evaluation plan. " +msgstr "" + +#. module: hr_evaluation +#: view:hr.employee:0 +#: model:ir.ui.menu,name:hr_evaluation.menu_open_view_hr_evaluation_tree +msgid "Appraisals" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid "(eval_name)s:Appraisal Name" +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.interview,message_ids:0 +#: field:hr_evaluation.evaluation,message_ids:0 +msgid "Messages" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid "Mail Body" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.plan.phase,wait:0 +msgid "Wait Previous Phases" +msgstr "" + +#. module: hr_evaluation +#: model:ir.model,name:hr_evaluation.model_hr_evaluation_evaluation +msgid "Employee Appraisal" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,state:0 +#: selection:hr_evaluation.evaluation,state:0 +msgid "Cancelled" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,rating:0 +#: selection:hr_evaluation.evaluation,rating:0 +msgid "Did not meet expectations" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +#: model:ir.actions.act_window,name:hr_evaluation.open_view_hr_evaluation_tree +#: model:ir.ui.menu,name:hr_evaluation.menu_eval_hr +msgid "Appraisal" +msgstr "" + +#. module: hr_evaluation +#: help:hr.evaluation.interview,message_unread:0 +#: help:hr_evaluation.evaluation,message_unread:0 +msgid "If checked new messages require your attention." +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid "Send to Managers" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.evaluation,date_close:0 +msgid "Ending Date" +msgstr "" + +#. module: hr_evaluation +#: help:hr_evaluation.evaluation,note_action:0 +msgid "" +"If the evaluation does not meet the expectations, you can proposean action " +"plan" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid "Send to Employees" +msgstr "" + +#. module: hr_evaluation +#: code:addons/hr_evaluation/hr_evaluation.py:84 +#, python-format +msgid "" +"\n" +"Date: %(date)s\n" +"\n" +"Dear %(employee_name)s,\n" +"\n" +"I am doing an evaluation regarding %(eval_name)s.\n" +"\n" +"Kindly submit your response.\n" +"\n" +"\n" +"Thanks,\n" +"--\n" +"%(user_signature)s\n" +"\n" +" " +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "Appraisal that are in Plan In Progress state" +msgstr "" + +#. module: hr_evaluation +#: help:hr.evaluation.interview,message_summary:0 +#: help:hr_evaluation.evaluation,message_summary:0 +msgid "" +"Holds the Chatter summary (number of messages, ...). This summary is " +"directly in html format in order to be inserted in kanban views." +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "Reset to Draft" +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.report,deadline:0 +msgid "Deadline" +msgstr "" + +#. module: hr_evaluation +#: code:addons/hr_evaluation/hr_evaluation.py:235 +#: code:addons/hr_evaluation/hr_evaluation.py:320 +#, python-format +msgid "Warning!" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +msgid "In progress Evaluations" +msgstr "" + +#. module: hr_evaluation +#: model:ir.model,name:hr_evaluation.model_survey_request +msgid "survey.request" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid "(date)s: Current Date" +msgstr "" + +#. module: hr_evaluation +#: model:ir.actions.act_window,name:hr_evaluation.act_hr_employee_2_hr__evaluation_interview +msgid "Interviews" +msgstr "" + +#. module: hr_evaluation +#: code:addons/hr_evaluation/hr_evaluation.py:83 +#, python-format +msgid "Regarding " +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.interview,message_follower_ids:0 +#: field:hr_evaluation.evaluation,message_follower_ids:0 +msgid "Followers" +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.interview,message_unread:0 +#: field:hr_evaluation.evaluation,message_unread:0 +msgid "Unread Messages" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +#: field:hr.evaluation.report,employee_id:0 +#: view:hr_evaluation.evaluation:0 +#: field:hr_evaluation.evaluation,employee_id:0 +#: model:ir.model,name:hr_evaluation.model_hr_employee +msgid "Employee" +msgstr "" + +#. module: hr_evaluation +#: selection:hr_evaluation.evaluation,state:0 +msgid "New" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.plan.phase,mail_body:0 +msgid "Email" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,rating:0 +#: selection:hr_evaluation.evaluation,rating:0 +msgid "Exceeds expectations" +msgstr "" + +#. module: hr_evaluation +#: help:hr_evaluation.plan.phase,mail_feature:0 +msgid "" +"Check this box if you want to send mail to employees coming under this phase" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +msgid "Creation Date" +msgstr "" + +#. module: hr_evaluation +#: help:hr_evaluation.plan.phase,send_answer_manager:0 +msgid "Send all answers to the manager" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,state:0 +#: selection:hr_evaluation.evaluation,state:0 +msgid "Plan In Progress" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "Public Notes" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +msgid "Send Reminder Email" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +#: field:hr_evaluation.evaluation,rating:0 +msgid "Appreciation" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "Print Interview" +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.report,closed:0 +msgid "closed" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,rating:0 +#: selection:hr_evaluation.evaluation,rating:0 +msgid "Meet expectations" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +#: field:hr.evaluation.report,nbr:0 +msgid "# of Requests" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "July" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +#: view:hr.evaluation.report:0 +#: field:hr.evaluation.report,state:0 +#: view:hr_evaluation.evaluation:0 +#: field:hr_evaluation.evaluation,state:0 +msgid "Status" +msgstr "" + +#. module: hr_evaluation +#: model:ir.actions.act_window,name:hr_evaluation.action_evaluation_plans_installer +msgid "Review Appraisal Plans" +msgstr "" + +#. module: hr_evaluation +#: model:ir.actions.act_window,help:hr_evaluation.action_evaluation_plans_installer +msgid "" +"

    \n" +" Click to define a new appraisal plan.\n" +"

    \n" +" You can define appraisal plans (ex: first interview after 6\n" +" months, then every year). Then, each employee can be linked " +"to\n" +" an appraisal plan so that OpenERP can automatically " +"generate\n" +" interview requests to managers and/or subordinates.\n" +"

    \n" +" " +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid "Action to Perform" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.evaluation,note_action:0 +msgid "Action Plan" +msgstr "" + +#. module: hr_evaluation +#: model:ir.ui.menu,name:hr_evaluation.menu_eval_hr_config +msgid "Periodic Appraisal" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.plan,month_next:0 +msgid "Periodicity of Appraisal (months)" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,rating:0 +#: selection:hr_evaluation.evaluation,rating:0 +msgid "Significantly exceeds expectations" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "In progress" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +msgid "Interview Request" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.plan.phase,send_answer_employee:0 +#: field:hr_evaluation.plan.phase,send_answer_manager:0 +msgid "All Answers" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +#: view:hr_evaluation.evaluation:0 +msgid "Answer Survey" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "September" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "December" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +#: field:hr.evaluation.report,month:0 +msgid "Month" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "Group by..." +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid "Mail Settings" +msgstr "" + +#. module: hr_evaluation +#: model:ir.actions.act_window,name:hr_evaluation.evaluation_reminders +msgid "Appraisal Reminders" +msgstr "" + +#. module: hr_evaluation +#: help:hr_evaluation.plan.phase,wait:0 +msgid "" +"Check this box if you want to wait that all preceding phases are finished " +"before launching this phase." +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid "Legend" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.plan,month_first:0 +msgid "First Appraisal in (months)" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,state:0 +msgid "Draft" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.plan.phase,send_anonymous_employee:0 +#: field:hr_evaluation.plan.phase,send_anonymous_manager:0 +msgid "Anonymous Summary" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "Pending" +msgstr "" + +#. module: hr_evaluation +#: field:hr.employee,evaluation_plan_id:0 +#: view:hr.evaluation.interview:0 +#: view:hr_evaluation.plan:0 +#: field:hr_evaluation.plan,name:0 +#: field:hr_evaluation.plan.phase,plan_id:0 +#: model:ir.model,name:hr_evaluation.model_hr_evaluation_plan +msgid "Appraisal Plan" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +msgid "Print Survey" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "August" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "June" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,rating:0 +#: selection:hr_evaluation.evaluation,rating:0 +msgid "Significantly bellow expectations" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "Validate Appraisal" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid " (employee_name)s: Partner name" +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.interview,message_is_follower:0 +#: field:hr_evaluation.evaluation,message_is_follower:0 +msgid "Is a Follower" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +#: field:hr.evaluation.report,plan_id:0 +#: view:hr_evaluation.evaluation:0 +#: field:hr_evaluation.evaluation,plan_id:0 +msgid "Plan" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.plan,active:0 +msgid "Active" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "November" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +msgid "Extended Filters..." +msgstr "" + +#. module: hr_evaluation +#: help:hr_evaluation.plan.phase,send_anonymous_employee:0 +msgid "Send an anonymous summary to the employee" +msgstr "" + +#. module: hr_evaluation +#: model:ir.model,name:hr_evaluation.model_hr_evaluation_plan_phase +msgid "Appraisal Plan Phase" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "January" +msgstr "" + +#. module: hr_evaluation +#: view:hr.employee:0 +msgid "Appraisal Interviews" +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.interview,message_summary:0 +#: field:hr_evaluation.evaluation,message_summary:0 +msgid "Summary" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "Date" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +msgid "Survey" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.plan.phase,action:0 +msgid "Action" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +#: selection:hr.evaluation.report,state:0 +msgid "Final Validation" +msgstr "" + +#. module: hr_evaluation +#: selection:hr_evaluation.evaluation,state:0 +msgid "Waiting Appreciation" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +#: model:ir.actions.act_window,name:hr_evaluation.action_evaluation_report_all +#: model:ir.ui.menu,name:hr_evaluation.menu_evaluation_report_all +msgid "Appraisal Analysis" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.evaluation,date:0 +msgid "Appraisal Deadline" +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.report,rating:0 +msgid "Overall Rating" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +#: view:hr_evaluation.evaluation:0 +msgid "Interviewer" +msgstr "" + +#. module: hr_evaluation +#: model:ir.model,name:hr_evaluation.model_hr_evaluation_report +msgid "Evaluations Statistics" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +msgid "Deadline Date" +msgstr "" + +#. module: hr_evaluation +#: help:hr_evaluation.evaluation,rating:0 +msgid "This is the appreciation on which the evaluation is summarized." +msgstr "" + +#. module: hr_evaluation +#: selection:hr_evaluation.plan.phase,action:0 +msgid "Top-Down Appraisal Requests" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid "General" +msgstr "" + +#. module: hr_evaluation +#: help:hr_evaluation.plan.phase,send_answer_employee:0 +msgid "Send all answers to the employee" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +#: view:hr.evaluation.report:0 +#: selection:hr.evaluation.report,state:0 +#: view:hr_evaluation.evaluation:0 +#: selection:hr_evaluation.evaluation,state:0 +msgid "Done" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan:0 +#: model:ir.actions.act_window,name:hr_evaluation.open_view_hr_evaluation_plan_tree +#: model:ir.ui.menu,name:hr_evaluation.menu_open_view_hr_evaluation_plan_tree +msgid "Appraisal Plans" +msgstr "" + +#. module: hr_evaluation +#: model:ir.model,name:hr_evaluation.model_hr_evaluation_interview +msgid "Appraisal Interview" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +#: view:hr_evaluation.evaluation:0 +msgid "Cancel" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +msgid "In Progress" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +msgid "To Do" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +msgid "Final Validation Evaluations" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.plan.phase,mail_feature:0 +msgid "Send mail for this phase" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.plan.phase,email_subject:0 +msgid "char" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "October" +msgstr "" + +#. module: hr_evaluation +#: help:hr.employee,evaluation_date:0 +msgid "" +"The date of the next appraisal is computed by the appraisal plan's dates " +"(first appraisal + periodicity)." +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.report,overpass_delay:0 +msgid "Overpassed Deadline" +msgstr "" + +#. module: hr_evaluation +#: help:hr_evaluation.plan,month_next:0 +msgid "" +"The number of month that depicts the delay between each evaluation of this " +"plan (after the first one)." +msgstr "" + +#. module: hr_evaluation +#: selection:hr_evaluation.plan.phase,action:0 +msgid "Self Appraisal Requests" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +#: field:hr_evaluation.evaluation,survey_request_ids:0 +msgid "Appraisal Forms" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "May" +msgstr "" + +#. module: hr_evaluation +#: model:ir.actions.act_window,help:hr_evaluation.open_view_hr_evaluation_tree +msgid "" +"

    \n" +" Click to create a new appraisal.\n" +"

    \n" +" Each employee may be assigned an Appraisal Plan. Such a " +"plan\n" +" defines the frequency and the way you manage your periodic\n" +" personnel evaluation. You will be able to define steps and\n" +" attach interviews to each step. OpenERP manages all kinds " +"of\n" +" evaluations: bottom-up, top-down, self-evaluation and final\n" +" evaluation by the manager.\n" +"

    \n" +" " +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "Internal Notes" +msgstr "" + +#. module: hr_evaluation +#: selection:hr_evaluation.plan.phase,action:0 +msgid "Final Interview" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.plan.phase,name:0 +msgid "Phase" +msgstr "" + +#. module: hr_evaluation +#: selection:hr_evaluation.plan.phase,action:0 +msgid "Bottom-Up Appraisal Requests" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "February" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +#: view:hr_evaluation.evaluation:0 +msgid "Interview Appraisal" +msgstr "" + +#. module: hr_evaluation +#: field:survey.request,is_evaluation:0 +msgid "Is Appraisal?" +msgstr "" + +#. module: hr_evaluation +#: code:addons/hr_evaluation/hr_evaluation.py:320 +#, python-format +msgid "You cannot start evaluation without Appraisal." +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.interview,user_to_review_id:0 +msgid "Employee to Interview" +msgstr "" + +#. module: hr_evaluation +#: code:addons/hr_evaluation/hr_evaluation.py:235 +#, python-format +msgid "" +"You cannot change state, because some appraisal(s) are in waiting answer or " +"draft state." +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "April" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid "Appraisal Plan Phases" +msgstr "" + +#. module: hr_evaluation +#: model:ir.actions.act_window,help:hr_evaluation.action_hr_evaluation_interview_tree +msgid "" +"

    \n" +" Click to create a new interview request related to a " +"personal evaluation. \n" +"

    \n" +" Interview requests are usually generated automatically by\n" +" OpenERP according to an employee's appraisal plan. Each " +"user\n" +" receives automatic emails and requests to evaluate their\n" +" colleagues periodically.\n" +"

    \n" +" " +msgstr "" + +#. module: hr_evaluation +#: help:hr.evaluation.interview,message_ids:0 +#: help:hr_evaluation.evaluation,message_ids:0 +msgid "Messages and communication history" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +#: view:hr_evaluation.evaluation:0 +msgid "Search Appraisal" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.plan.phase,sequence:0 +msgid "Sequence" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid "(user_signature)s: User name" +msgstr "" + +#. module: hr_evaluation +#: view:board.board:0 +#: model:ir.actions.act_window,name:hr_evaluation.action_hr_evaluation_interview_board +#: model:ir.actions.act_window,name:hr_evaluation.action_hr_evaluation_interview_tree +#: model:ir.ui.menu,name:hr_evaluation.menu_open_hr_evaluation_interview_requests +msgid "Interview Requests" +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.report,create_date:0 +msgid "Create Date" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +#: field:hr.evaluation.report,year:0 +msgid "Year" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.evaluation,note_summary:0 +msgid "Appraisal Summary" +msgstr "" + +#. module: hr_evaluation +#: field:hr.employee,evaluation_date:0 +msgid "Next Appraisal Date" +msgstr "" diff --git a/addons/hr_expense/hr_expense_view.xml b/addons/hr_expense/hr_expense_view.xml index 7505717c672..33f737aa66e 100644 --- a/addons/hr_expense/hr_expense_view.xml +++ b/addons/hr_expense/hr_expense_view.xml @@ -157,7 +157,7 @@ - + diff --git a/addons/hr_holidays/hr_holidays.py b/addons/hr_holidays/hr_holidays.py index 1af2fc00193..682508e0ca0 100644 --- a/addons/hr_holidays/hr_holidays.py +++ b/addons/hr_holidays/hr_holidays.py @@ -145,7 +145,9 @@ class hr_holidays(osv.osv): def _check_date(self, cr, uid, ids): for holiday in self.browse(cr, uid, ids): - holiday_ids = self.search(cr, uid, [('date_from', '<=', holiday.date_to), ('date_to', '>=', holiday.date_from), ('employee_id', '=', holiday.employee_id.id), ('id', '<>', holiday.id)]) + holiday_ids = self.search(cr, uid, [('date_from', '<=', holiday.date_to), ('date_to', '>=', holiday.date_from), + ('employee_id', '=', holiday.employee_id.id), ('id', '<>', holiday.id), + ('state', 'not in', ['cancel', 'refuse'])]) if holiday_ids: return False return True diff --git a/addons/hr_holidays/hr_holidays_workflow.xml b/addons/hr_holidays/hr_holidays_workflow.xml index b563dbf68d4..c539ff6de41 100644 --- a/addons/hr_holidays/hr_holidays_workflow.xml +++ b/addons/hr_holidays/hr_holidays_workflow.xml @@ -55,6 +55,7 @@ refuse + function holidays_refuse() diff --git a/addons/hr_payroll/hr_payroll.py b/addons/hr_payroll/hr_payroll.py index e7d4cef594a..3c0f5cc6e4a 100644 --- a/addons/hr_payroll/hr_payroll.py +++ b/addons/hr_payroll/hr_payroll.py @@ -260,7 +260,7 @@ class hr_payslip(osv.osv): _columns = { 'struct_id': fields.many2one('hr.payroll.structure', 'Structure', readonly=True, states={'draft': [('readonly', False)]}, help='Defines the rules that have to be applied to this payslip, accordingly to the contract chosen. If you let empty the field contract, this field isn\'t mandatory anymore and thus the rules applied will be all the rules set on the structure of all contracts of the employee valid for the chosen period'), - 'name': fields.char('Description', size=64, required=False, readonly=True, states={'draft': [('readonly', False)]}), + 'name': fields.char('Payslip Name', size=64, required=False, readonly=True, states={'draft': [('readonly', False)]}), 'number': fields.char('Reference', size=64, required=False, readonly=True, states={'draft': [('readonly', False)]}), 'employee_id': fields.many2one('hr.employee', 'Employee', required=True, readonly=True, states={'draft': [('readonly', False)]}), 'date_from': fields.date('Date From', readonly=True, states={'draft': [('readonly', False)]}, required=True), @@ -281,7 +281,7 @@ class hr_payslip(osv.osv): 'worked_days_line_ids': fields.one2many('hr.payslip.worked_days', 'payslip_id', 'Payslip Worked Days', required=False, readonly=True, states={'draft': [('readonly', False)]}), 'input_line_ids': fields.one2many('hr.payslip.input', 'payslip_id', 'Payslip Inputs', required=False, readonly=True, states={'draft': [('readonly', False)]}), 'paid': fields.boolean('Made Payment Order ? ', required=False, readonly=True, states={'draft': [('readonly', False)]}), - 'note': fields.text('Description', readonly=True, states={'draft':[('readonly',False)]}), + 'note': fields.text('Internal Note', readonly=True, states={'draft':[('readonly',False)]}), 'contract_id': fields.many2one('hr.contract', 'Contract', required=False, readonly=True, states={'draft': [('readonly', False)]}), 'details_by_salary_rule_category': fields.function(_get_lines_salary_rule_category, method=True, type='one2many', relation='hr.payslip.line', string='Details by Salary Rule Category'), 'credit_note': fields.boolean('Credit Note', help="Indicates this payslip has a refund of another", readonly=True, states={'draft': [('readonly', False)]}), diff --git a/addons/hr_payroll/i18n/zh_TW.po b/addons/hr_payroll/i18n/zh_TW.po new file mode 100644 index 00000000000..f09efc9eeb3 --- /dev/null +++ b/addons/hr_payroll/i18n/zh_TW.po @@ -0,0 +1,1251 @@ +# Chinese (Traditional) translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-21 17:04+0000\n" +"PO-Revision-Date: 2013-11-18 02:50+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Chinese (Traditional) \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-11-19 05:27+0000\n" +"X-Generator: Launchpad (build 16831)\n" + +#. module: hr_payroll +#: field:hr.payslip.line,condition_select:0 +#: field:hr.salary.rule,condition_select:0 +msgid "Condition Based on" +msgstr "" + +#. module: hr_payroll +#: selection:hr.contract,schedule_pay:0 +msgid "Monthly" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip.line,rate:0 +msgid "Rate (%)" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip.line:0 +#: model:ir.model,name:hr_payroll.model_hr_salary_rule_category +#: report:paylip.details:0 +msgid "Salary Rule Category" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip.worked_days,number_of_days:0 +msgid "Number of Days" +msgstr "" + +#. module: hr_payroll +#: help:hr.salary.rule.category,parent_id:0 +msgid "" +"Linking a salary category to its parent is used only for the reporting " +"purpose." +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +#: view:hr.payslip.line:0 +#: view:hr.salary.rule:0 +msgid "Group By..." +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +msgid "States" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip.line,input_ids:0 +#: view:hr.salary.rule:0 +#: field:hr.salary.rule,input_ids:0 +msgid "Inputs" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip.line,parent_rule_id:0 +#: field:hr.salary.rule,parent_rule_id:0 +msgid "Parent Salary Rule" +msgstr "" + +#. module: hr_payroll +#: view:hr.employee:0 +#: field:hr.employee,slip_ids:0 +#: view:hr.payslip:0 +#: view:hr.payslip.run:0 +#: field:hr.payslip.run,slip_ids:0 +#: model:ir.actions.act_window,name:hr_payroll.act_hr_employee_payslip_list +msgid "Payslips" +msgstr "" + +#. module: hr_payroll +#: field:hr.payroll.structure,parent_id:0 +#: field:hr.salary.rule.category,parent_id:0 +msgid "Parent" +msgstr "" + +#. module: hr_payroll +#: field:hr.contribution.register,company_id:0 +#: field:hr.payroll.structure,company_id:0 +#: field:hr.payslip,company_id:0 +#: field:hr.payslip.line,company_id:0 +#: field:hr.salary.rule,company_id:0 +#: field:hr.salary.rule.category,company_id:0 +msgid "Company" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +msgid "Done Slip" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +#: view:hr.payslip.run:0 +msgid "Set to Draft" +msgstr "" + +#. module: hr_payroll +#: model:ir.model,name:hr_payroll.model_hr_salary_rule +msgid "hr.salary.rule" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +#: view:hr.payslip.run:0 +msgid "to" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip,payslip_run_id:0 +#: view:hr.payslip.run:0 +#: model:ir.model,name:hr_payroll.model_hr_payslip_run +msgid "Payslip Batches" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip.employees:0 +msgid "" +"This wizard will generate payslips for all selected employee(s) based on the " +"dates and credit note specified on Payslips Run." +msgstr "" + +#. module: hr_payroll +#: report:contribution.register.lines:0 +#: report:paylip.details:0 +#: report:payslip:0 +msgid "Quantity/Rate" +msgstr "" + +#. module: hr_payroll +#: view:hr.salary.rule:0 +msgid "Children Definition" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip.input,payslip_id:0 +#: field:hr.payslip.line,slip_id:0 +#: field:hr.payslip.worked_days,payslip_id:0 +#: model:ir.model,name:hr_payroll.model_hr_payslip +#: report:payslip:0 +msgid "Pay Slip" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip.employees:0 +msgid "Generate" +msgstr "" + +#. module: hr_payroll +#: help:hr.payslip.line,amount_percentage_base:0 +#: help:hr.salary.rule,amount_percentage_base:0 +msgid "result will be affected to a variable" +msgstr "" + +#. module: hr_payroll +#: report:contribution.register.lines:0 +msgid "Total:" +msgstr "" + +#. module: hr_payroll +#: model:ir.actions.act_window,name:hr_payroll.act_children_salary_rules +msgid "All Children Rules" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +#: view:hr.salary.rule:0 +msgid "Input Data" +msgstr "" + +#. module: hr_payroll +#: constraint:hr.payslip:0 +msgid "Payslip 'Date From' must be before 'Date To'." +msgstr "" + +#. module: hr_payroll +#: view:hr.salary.rule.category:0 +msgid "Notes" +msgstr "" + +#. module: hr_payroll +#: code:addons/hr_payroll/hr_payroll.py:871 +#: code:addons/hr_payroll/hr_payroll.py:876 +#: code:addons/hr_payroll/hr_payroll.py:882 +#: code:addons/hr_payroll/hr_payroll.py:899 +#: code:addons/hr_payroll/hr_payroll.py:905 +#, python-format +msgid "Error!" +msgstr "" + +#. module: hr_payroll +#: report:contribution.register.lines:0 +#: field:hr.payslip.input,amount:0 +#: field:hr.payslip.line,amount:0 +#: report:paylip.details:0 +#: report:payslip:0 +msgid "Amount" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +#: view:hr.payslip.line:0 +#: model:ir.model,name:hr_payroll.model_hr_payslip_line +msgid "Payslip Line" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +msgid "Other Information" +msgstr "" + +#. module: hr_payroll +#: field:hr.config.settings,module_hr_payroll_account:0 +msgid "Link your payroll to accounting system" +msgstr "" + +#. module: hr_payroll +#: help:hr.payslip.line,amount_select:0 +#: help:hr.salary.rule,amount_select:0 +msgid "The computation method for the rule amount." +msgstr "" + +#. module: hr_payroll +#: view:payslip.lines.contribution.register:0 +msgid "Contribution Register's Payslip Lines" +msgstr "" + +#. module: hr_payroll +#: code:addons/hr_payroll/wizard/hr_payroll_payslips_by_employees.py:52 +#, python-format +msgid "Warning !" +msgstr "" + +#. module: hr_payroll +#: report:paylip.details:0 +msgid "Details by Salary Rule Category:" +msgstr "" + +#. module: hr_payroll +#: report:paylip.details:0 +#: report:payslip:0 +msgid "Note" +msgstr "" + +#. module: hr_payroll +#: field:hr.payroll.structure,code:0 +#: field:hr.payslip,number:0 +#: report:paylip.details:0 +#: report:payslip:0 +msgid "Reference" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +msgid "Draft Slip" +msgstr "" + +#. module: hr_payroll +#: code:addons/hr_payroll/hr_payroll.py:432 +#, python-format +msgid "Normal Working Days paid at 100%" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip.line,condition_range_max:0 +#: field:hr.salary.rule,condition_range_max:0 +msgid "Maximum Range" +msgstr "" + +#. module: hr_payroll +#: report:paylip.details:0 +#: report:payslip:0 +msgid "Identification No" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip,struct_id:0 +msgid "Structure" +msgstr "" + +#. module: hr_payroll +#: field:hr.contribution.register,partner_id:0 +msgid "Partner" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +msgid "Total Working Days" +msgstr "" + +#. module: hr_payroll +#: help:hr.payslip.line,code:0 +#: help:hr.salary.rule,code:0 +msgid "" +"The code of salary rules can be used as reference in computation of other " +"rules. In that case, it is case sensitive." +msgstr "" + +#. module: hr_payroll +#: selection:hr.contract,schedule_pay:0 +msgid "Weekly" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +msgid "From" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +msgid "Confirm" +msgstr "" + +#. module: hr_payroll +#: model:ir.actions.act_window,help:hr_payroll.action_contribution_register_form +msgid "" +"

    \n" +" Click to add a new contribution register.\n" +"

    \n" +" A contribution register is a third party involved in the " +"salary\n" +" payment of the employees. It can be the social security, " +"the\n" +" estate or anyone that collect or inject money on payslips.\n" +"

    \n" +" " +msgstr "" + +#. module: hr_payroll +#: help:hr.payslip.line,condition_range_max:0 +#: help:hr.salary.rule,condition_range_max:0 +msgid "The maximum amount, applied for this rule." +msgstr "" + +#. module: hr_payroll +#: help:hr.payslip.line,condition_python:0 +#: help:hr.salary.rule,condition_python:0 +msgid "" +"Applied this rule for calculation if condition is true. You can specify " +"condition like basic > 1000." +msgstr "" + +#. module: hr_payroll +#: report:contribution.register.lines:0 +#: report:paylip.details:0 +msgid "Register Name" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip.employees:0 +msgid "Payslips by Employees" +msgstr "" + +#. module: hr_payroll +#: selection:hr.contract,schedule_pay:0 +msgid "Quarterly" +msgstr "" + +#. module: hr_payroll +#: selection:hr.payslip,state:0 +msgid "Waiting" +msgstr "" + +#. module: hr_payroll +#: help:hr.salary.rule,quantity:0 +msgid "" +"It is used in computation for percentage and fixed amount.For e.g. A rule " +"for Meal Voucher having fixed amount of 1€ per worked day can have its " +"quantity defined in expression like worked_days.WORK100.number_of_days." +msgstr "" + +#. module: hr_payroll +#: view:hr.salary.rule:0 +msgid "Search Salary Rule" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip,employee_id:0 +#: field:hr.payslip.line,employee_id:0 +#: model:ir.model,name:hr_payroll.model_hr_employee +msgid "Employee" +msgstr "" + +#. module: hr_payroll +#: selection:hr.contract,schedule_pay:0 +msgid "Semi-annually" +msgstr "" + +#. module: hr_payroll +#: report:paylip.details:0 +#: report:payslip:0 +msgid "Email" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip.run:0 +msgid "Search Payslip Batches" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip.line,amount_percentage_base:0 +#: field:hr.salary.rule,amount_percentage_base:0 +msgid "Percentage based on" +msgstr "" + +#. module: hr_payroll +#: code:addons/hr_payroll/hr_payroll.py:90 +#, python-format +msgid "%s (copy)" +msgstr "" + +#. module: hr_payroll +#: help:hr.config.settings,module_hr_payroll_account:0 +msgid "Create journal entries from payslips" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip,paid:0 +msgid "Made Payment Order ? " +msgstr "" + +#. module: hr_payroll +#: report:contribution.register.lines:0 +msgid "PaySlip Lines by Contribution Register" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +#: field:hr.payslip,line_ids:0 +#: view:hr.payslip.line:0 +#: model:ir.actions.act_window,name:hr_payroll.act_contribution_reg_payslip_lines +msgid "Payslip Lines" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +msgid "Miscellaneous" +msgstr "" + +#. module: hr_payroll +#: selection:hr.payslip,state:0 +msgid "Rejected" +msgstr "" + +#. module: hr_payroll +#: view:hr.payroll.structure:0 +#: field:hr.payroll.structure,rule_ids:0 +#: view:hr.salary.rule:0 +#: model:ir.actions.act_window,name:hr_payroll.action_salary_rule_form +#: model:ir.ui.menu,name:hr_payroll.menu_action_hr_salary_rule_form +msgid "Salary Rules" +msgstr "" + +#. module: hr_payroll +#: code:addons/hr_payroll/hr_payroll.py:341 +#, python-format +msgid "Refund: " +msgstr "" + +#. module: hr_payroll +#: model:ir.model,name:hr_payroll.model_payslip_lines_contribution_register +msgid "PaySlip Lines by Contribution Registers" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +#: selection:hr.payslip,state:0 +#: view:hr.payslip.run:0 +msgid "Done" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip.line,appears_on_payslip:0 +#: field:hr.salary.rule,appears_on_payslip:0 +msgid "Appears on Payslip" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip.line,amount_fix:0 +#: selection:hr.payslip.line,amount_select:0 +#: field:hr.salary.rule,amount_fix:0 +#: selection:hr.salary.rule,amount_select:0 +msgid "Fixed Amount" +msgstr "" + +#. module: hr_payroll +#: code:addons/hr_payroll/hr_payroll.py:370 +#, python-format +msgid "Warning!" +msgstr "" + +#. module: hr_payroll +#: help:hr.payslip.line,active:0 +#: help:hr.salary.rule,active:0 +msgid "" +"If the active field is set to false, it will allow you to hide the salary " +"rule without removing it." +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip,state:0 +#: field:hr.payslip.run,state:0 +msgid "Status" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +msgid "Worked Days & Inputs" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip,details_by_salary_rule_category:0 +msgid "Details by Salary Rule Category" +msgstr "" + +#. module: hr_payroll +#: model:ir.actions.act_window,name:hr_payroll.action_payslip_lines_contribution_register +msgid "PaySlip Lines" +msgstr "" + +#. module: hr_payroll +#: help:hr.payslip.line,register_id:0 +#: help:hr.salary.rule,register_id:0 +msgid "Eventual third party involved in the salary payment of the employees." +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip.worked_days,number_of_hours:0 +msgid "Number of Hours" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +msgid "PaySlip Batch" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip.line,condition_range_min:0 +#: field:hr.salary.rule,condition_range_min:0 +msgid "Minimum Range" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip.line,child_ids:0 +#: field:hr.salary.rule,child_ids:0 +msgid "Child Salary Rule" +msgstr "" + +#. module: hr_payroll +#: report:contribution.register.lines:0 +#: field:hr.payslip,date_to:0 +#: field:hr.payslip.run,date_end:0 +#: report:paylip.details:0 +#: report:payslip:0 +#: field:payslip.lines.contribution.register,date_to:0 +msgid "Date To" +msgstr "" + +#. module: hr_payroll +#: selection:hr.payslip.line,condition_select:0 +#: selection:hr.salary.rule,condition_select:0 +msgid "Range" +msgstr "" + +#. module: hr_payroll +#: model:ir.actions.act_window,name:hr_payroll.action_view_hr_payroll_structure_tree +#: model:ir.ui.menu,name:hr_payroll.menu_hr_payroll_structure_tree +msgid "Salary Structures Hierarchy" +msgstr "" + +#. module: hr_payroll +#: help:hr.employee,total_wage:0 +msgid "Sum of all current contract's wage of employee." +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +msgid "Payslip" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip,credit_note:0 +#: field:hr.payslip.run,credit_note:0 +msgid "Credit Note" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +#: model:ir.actions.act_window,name:hr_payroll.act_payslip_lines +msgid "Payslip Computation Details" +msgstr "" + +#. module: hr_payroll +#: help:hr.payslip.line,appears_on_payslip:0 +#: help:hr.salary.rule,appears_on_payslip:0 +msgid "Used to display the salary rule on payslip." +msgstr "" + +#. module: hr_payroll +#: model:ir.model,name:hr_payroll.model_hr_payslip_input +msgid "Payslip Input" +msgstr "" + +#. module: hr_payroll +#: view:hr.salary.rule.category:0 +#: model:ir.actions.act_window,name:hr_payroll.action_hr_salary_rule_category +#: model:ir.ui.menu,name:hr_payroll.menu_hr_salary_rule_category +msgid "Salary Rule Categories" +msgstr "" + +#. module: hr_payroll +#: help:hr.payslip.input,contract_id:0 +#: help:hr.payslip.worked_days,contract_id:0 +msgid "The contract for which applied this input" +msgstr "" + +#. module: hr_payroll +#: view:hr.salary.rule:0 +msgid "Computation" +msgstr "" + +#. module: hr_payroll +#: code:addons/hr_payroll/hr_payroll.py:899 +#, python-format +msgid "Wrong range condition defined for salary rule %s (%s)." +msgstr "" + +#. module: hr_payroll +#: help:hr.payslip.input,amount:0 +msgid "" +"It is used in computation. For e.g. A rule for sales having 1% commission of " +"basic salary for per product can defined in expression like result = " +"inputs.SALEURO.amount * contract.wage*0.01." +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip.line:0 +#: field:hr.payslip.line,amount_select:0 +#: field:hr.salary.rule,amount_select:0 +msgid "Amount Type" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip.line,category_id:0 +#: view:hr.salary.rule:0 +#: field:hr.salary.rule,category_id:0 +msgid "Category" +msgstr "" + +#. module: hr_payroll +#: view:hr.salary.rule:0 +msgid "Company Contribution" +msgstr "" + +#. module: hr_payroll +#: help:hr.payslip.run,credit_note:0 +msgid "" +"If its checked, indicates that all payslips generated from here are refund " +"payslips." +msgstr "" + +#. module: hr_payroll +#: code:addons/hr_payroll/hr_payroll.py:876 +#, python-format +msgid "Wrong percentage base or quantity defined for salary rule %s (%s)." +msgstr "" + +#. module: hr_payroll +#: model:ir.actions.act_window,name:hr_payroll.action_view_hr_payroll_structure_list_form +#: model:ir.ui.menu,name:hr_payroll.menu_hr_payroll_structure_view +msgid "Salary Structures" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip.run:0 +msgid "Draft Payslip Batches" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +#: selection:hr.payslip,state:0 +#: view:hr.payslip.run:0 +#: selection:hr.payslip.run,state:0 +msgid "Draft" +msgstr "" + +#. module: hr_payroll +#: report:contribution.register.lines:0 +#: field:hr.payslip,date_from:0 +#: field:hr.payslip.run,date_start:0 +#: report:paylip.details:0 +#: report:payslip:0 +#: field:payslip.lines.contribution.register,date_from:0 +msgid "Date From" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip.run:0 +msgid "Done Payslip Batches" +msgstr "" + +#. module: hr_payroll +#: report:paylip.details:0 +msgid "Payslip Lines by Contribution Register:" +msgstr "" + +#. module: hr_payroll +#: view:hr.salary.rule:0 +msgid "Conditions" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip.line,amount_percentage:0 +#: selection:hr.payslip.line,amount_select:0 +#: field:hr.salary.rule,amount_percentage:0 +#: selection:hr.salary.rule,amount_select:0 +msgid "Percentage (%)" +msgstr "" + +#. module: hr_payroll +#: code:addons/hr_payroll/hr_payroll.py:871 +#, python-format +msgid "Wrong quantity defined for salary rule %s (%s)." +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +msgid "Worked Day" +msgstr "" + +#. module: hr_payroll +#: view:hr.payroll.structure:0 +msgid "Employee Function" +msgstr "" + +#. module: hr_payroll +#: model:ir.actions.report.xml,name:hr_payroll.payslip_report +msgid "Employee PaySlip" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip.line,salary_rule_id:0 +msgid "Rule" +msgstr "" + +#. module: hr_payroll +#: model:ir.actions.report.xml,name:hr_payroll.payslip_details_report +msgid "PaySlip Details" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +msgid "Compute Sheet" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip.line,active:0 +#: field:hr.salary.rule,active:0 +msgid "Active" +msgstr "" + +#. module: hr_payroll +#: view:hr.salary.rule:0 +msgid "Child Rules" +msgstr "" + +#. module: hr_payroll +#: help:hr.payslip.line,condition_range_min:0 +#: help:hr.salary.rule,condition_range_min:0 +msgid "The minimum amount, applied for this rule." +msgstr "" + +#. module: hr_payroll +#: selection:hr.payslip.line,condition_select:0 +#: selection:hr.salary.rule,condition_select:0 +msgid "Python Expression" +msgstr "" + +#. module: hr_payroll +#: report:paylip.details:0 +#: report:payslip:0 +msgid "Designation" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +msgid "Companies" +msgstr "" + +#. module: hr_payroll +#: report:paylip.details:0 +#: report:payslip:0 +msgid "Authorized Signature" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip,contract_id:0 +#: field:hr.payslip.input,contract_id:0 +#: field:hr.payslip.line,contract_id:0 +#: field:hr.payslip.worked_days,contract_id:0 +#: model:ir.model,name:hr_payroll.model_hr_contract +msgid "Contract" +msgstr "" + +#. module: hr_payroll +#: code:addons/hr_payroll/wizard/hr_payroll_payslips_by_employees.py:52 +#, python-format +msgid "You must select employee(s) to generate payslip(s)." +msgstr "" + +#. module: hr_payroll +#: report:paylip.details:0 +#: report:payslip:0 +msgid "Credit" +msgstr "" + +#. module: hr_payroll +#: field:hr.contract,schedule_pay:0 +msgid "Scheduled Pay" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip.line,condition_python:0 +#: field:hr.salary.rule,condition_python:0 +msgid "Python Condition" +msgstr "" + +#. module: hr_payroll +#: view:hr.contribution.register:0 +msgid "Contribution" +msgstr "" + +#. module: hr_payroll +#: code:addons/hr_payroll/hr_payroll.py:351 +#, python-format +msgid "Refund Payslip" +msgstr "" + +#. module: hr_payroll +#: field:hr.rule.input,input_id:0 +#: model:ir.model,name:hr_payroll.model_hr_rule_input +msgid "Salary Rule Input" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip.line,quantity:0 +#: field:hr.salary.rule,quantity:0 +msgid "Quantity" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +msgid "Refund" +msgstr "" + +#. module: hr_payroll +#: report:contribution.register.lines:0 +#: field:hr.payslip.input,code:0 +#: field:hr.payslip.line,code:0 +#: field:hr.payslip.worked_days,code:0 +#: field:hr.rule.input,code:0 +#: field:hr.salary.rule,code:0 +#: field:hr.salary.rule.category,code:0 +#: report:paylip.details:0 +#: report:payslip:0 +msgid "Code" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip.line,amount_python_compute:0 +#: selection:hr.payslip.line,amount_select:0 +#: field:hr.salary.rule,amount_python_compute:0 +#: selection:hr.salary.rule,amount_select:0 +msgid "Python Code" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip.input,sequence:0 +#: field:hr.payslip.line,sequence:0 +#: field:hr.payslip.worked_days,sequence:0 +#: field:hr.salary.rule,sequence:0 +msgid "Sequence" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +msgid "Period" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip.run:0 +msgid "Period from" +msgstr "" + +#. module: hr_payroll +#: view:hr.salary.rule:0 +msgid "General" +msgstr "" + +#. module: hr_payroll +#: code:addons/hr_payroll/hr_payroll.py:674 +#, python-format +msgid "Salary Slip of %s for %s" +msgstr "" + +#. module: hr_payroll +#: model:ir.model,name:hr_payroll.model_hr_payslip_employees +msgid "Generate payslips for all selected employees" +msgstr "" + +#. module: hr_payroll +#: field:hr.contract,struct_id:0 +#: view:hr.payroll.structure:0 +#: view:hr.payslip:0 +#: view:hr.payslip.line:0 +#: model:ir.model,name:hr_payroll.model_hr_payroll_structure +msgid "Salary Structure" +msgstr "" + +#. module: hr_payroll +#: field:hr.contribution.register,register_line_ids:0 +msgid "Register Line" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +msgid "Cancel" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip.run:0 +#: selection:hr.payslip.run,state:0 +msgid "Close" +msgstr "" + +#. module: hr_payroll +#: help:hr.payslip,struct_id:0 +msgid "" +"Defines the rules that have to be applied to this payslip, accordingly to " +"the contract chosen. If you let empty the field contract, this field isn't " +"mandatory anymore and thus the rules applied will be all the rules set on " +"the structure of all contracts of the employee valid for the chosen period" +msgstr "" + +#. module: hr_payroll +#: field:hr.payroll.structure,children_ids:0 +#: field:hr.salary.rule.category,children_ids:0 +msgid "Children" +msgstr "" + +#. module: hr_payroll +#: help:hr.payslip,credit_note:0 +msgid "Indicates this payslip has a refund of another" +msgstr "" + +#. module: hr_payroll +#: selection:hr.contract,schedule_pay:0 +msgid "Bi-monthly" +msgstr "" + +#. module: hr_payroll +#: report:paylip.details:0 +msgid "Pay Slip Details" +msgstr "" + +#. module: hr_payroll +#: model:ir.actions.act_window,name:hr_payroll.action_view_hr_payslip_form +#: model:ir.ui.menu,name:hr_payroll.menu_department_tree +msgid "Employee Payslips" +msgstr "" + +#. module: hr_payroll +#: model:ir.model,name:hr_payroll.model_hr_config_settings +msgid "hr.config.settings" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip.line:0 +#: field:hr.payslip.line,register_id:0 +#: field:hr.salary.rule,register_id:0 +#: model:ir.model,name:hr_payroll.model_hr_contribution_register +msgid "Contribution Register" +msgstr "" + +#. module: hr_payroll +#: view:payslip.lines.contribution.register:0 +msgid "Print" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip.line:0 +msgid "Calculations" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +msgid "Worked Days" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +msgid "Search Payslips" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip.run:0 +#: model:ir.actions.act_window,name:hr_payroll.action_hr_payslip_run_tree +#: model:ir.ui.menu,name:hr_payroll.menu_hr_payslip_run +msgid "Payslips Batches" +msgstr "" + +#. module: hr_payroll +#: view:hr.contribution.register:0 +#: field:hr.contribution.register,note:0 +#: field:hr.payroll.structure,note:0 +#: field:hr.payslip,name:0 +#: field:hr.payslip,note:0 +#: field:hr.payslip.input,name:0 +#: field:hr.payslip.line,note:0 +#: field:hr.payslip.worked_days,name:0 +#: field:hr.rule.input,name:0 +#: view:hr.salary.rule:0 +#: field:hr.salary.rule,note:0 +#: field:hr.salary.rule.category,note:0 +msgid "Description" +msgstr "" + +#. module: hr_payroll +#: field:hr.employee,total_wage:0 +msgid "Total Basic Salary" +msgstr "" + +#. module: hr_payroll +#: view:hr.contribution.register:0 +#: model:ir.actions.act_window,name:hr_payroll.action_contribution_register_form +#: model:ir.ui.menu,name:hr_payroll.menu_action_hr_contribution_register_form +msgid "Contribution Registers" +msgstr "" + +#. module: hr_payroll +#: model:ir.ui.menu,name:hr_payroll.menu_hr_payroll_reporting +#: model:ir.ui.menu,name:hr_payroll.menu_hr_root_payroll +#: model:ir.ui.menu,name:hr_payroll.payroll_configure +msgid "Payroll" +msgstr "" + +#. module: hr_payroll +#: model:ir.actions.report.xml,name:hr_payroll.contribution_register +msgid "PaySlip Lines By Conribution Register" +msgstr "" + +#. module: hr_payroll +#: code:addons/hr_payroll/hr_payroll.py:370 +#, python-format +msgid "You cannot delete a payslip which is not draft or cancelled!" +msgstr "" + +#. module: hr_payroll +#: report:paylip.details:0 +#: report:payslip:0 +msgid "Address" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip,worked_days_line_ids:0 +#: model:ir.model,name:hr_payroll.model_hr_payslip_worked_days +msgid "Payslip Worked Days" +msgstr "" + +#. module: hr_payroll +#: view:hr.salary.rule.category:0 +msgid "Salary Categories" +msgstr "" + +#. module: hr_payroll +#: report:contribution.register.lines:0 +#: field:hr.contribution.register,name:0 +#: field:hr.payroll.structure,name:0 +#: field:hr.payslip.line,name:0 +#: field:hr.payslip.run,name:0 +#: field:hr.salary.rule,name:0 +#: field:hr.salary.rule.category,name:0 +#: report:paylip.details:0 +#: report:payslip:0 +msgid "Name" +msgstr "" + +#. module: hr_payroll +#: help:hr.payslip.line,amount_percentage:0 +#: help:hr.salary.rule,amount_percentage:0 +msgid "For example, enter 50.0 to apply a percentage of 50%" +msgstr "" + +#. module: hr_payroll +#: view:hr.payroll.structure:0 +msgid "Payroll Structures" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +#: view:hr.payslip.employees:0 +#: field:hr.payslip.employees,employee_ids:0 +#: view:hr.payslip.line:0 +msgid "Employees" +msgstr "" + +#. module: hr_payroll +#: report:paylip.details:0 +#: report:payslip:0 +msgid "Bank Account" +msgstr "" + +#. module: hr_payroll +#: help:hr.payslip.line,sequence:0 +#: help:hr.salary.rule,sequence:0 +msgid "Use to arrange calculation sequence" +msgstr "" + +#. module: hr_payroll +#: help:hr.payslip,state:0 +msgid "" +"* When the payslip is created the status is 'Draft'. \n" +"* If the payslip is under verification, the status is 'Waiting'. " +"\n" +"* If the payslip is confirmed then status is set to 'Done'. \n" +"* When user cancel payslip the status is 'Rejected'." +msgstr "" + +#. module: hr_payroll +#: help:hr.payslip.line,condition_range:0 +#: help:hr.salary.rule,condition_range:0 +msgid "" +"This will be used to compute the % fields values; in general it is on basic, " +"but you can also use categories code fields in lowercase as a variable names " +"(hra, ma, lta, etc.) and the variable basic." +msgstr "" + +#. module: hr_payroll +#: selection:hr.contract,schedule_pay:0 +msgid "Annually" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip,input_line_ids:0 +msgid "Payslip Inputs" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +msgid "Other Inputs" +msgstr "" + +#. module: hr_payroll +#: model:ir.actions.act_window,name:hr_payroll.action_hr_salary_rule_category_tree_view +#: model:ir.ui.menu,name:hr_payroll.menu_hr_salary_rule_category_tree_view +msgid "Salary Rule Categories Hierarchy" +msgstr "" + +#. module: hr_payroll +#: code:addons/hr_payroll/hr_payroll.py:882 +#, python-format +msgid "Wrong python code defined for salary rule %s (%s)." +msgstr "" + +#. module: hr_payroll +#: report:contribution.register.lines:0 +#: field:hr.payslip.line,total:0 +#: report:paylip.details:0 +#: report:payslip:0 +msgid "Total" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +msgid "Salary Computation" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +msgid "Details By Salary Rule Category" +msgstr "" + +#. module: hr_payroll +#: help:hr.payslip.input,code:0 +#: help:hr.payslip.worked_days,code:0 +#: help:hr.rule.input,code:0 +msgid "The code that can be used in the salary rules" +msgstr "" + +#. module: hr_payroll +#: code:addons/hr_payroll/hr_payroll.py:905 +#, python-format +msgid "Wrong python condition defined for salary rule %s (%s)." +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip.run:0 +#: model:ir.actions.act_window,name:hr_payroll.action_hr_payslip_by_employees +msgid "Generate Payslips" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip.line:0 +msgid "Search Payslip Lines" +msgstr "" + +#. module: hr_payroll +#: selection:hr.contract,schedule_pay:0 +msgid "Bi-weekly" +msgstr "" + +#. module: hr_payroll +#: selection:hr.payslip.line,condition_select:0 +#: selection:hr.salary.rule,condition_select:0 +msgid "Always True" +msgstr "" + +#. module: hr_payroll +#: report:contribution.register.lines:0 +msgid "PaySlip Name" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +msgid "Accounting" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip.line,condition_range:0 +#: field:hr.salary.rule,condition_range:0 +msgid "Range Based on" +msgstr "" diff --git a/addons/hr_payroll_account/i18n/zh_TW.po b/addons/hr_payroll_account/i18n/zh_TW.po new file mode 100644 index 00000000000..0aaa10dc759 --- /dev/null +++ b/addons/hr_payroll_account/i18n/zh_TW.po @@ -0,0 +1,126 @@ +# Chinese (Traditional) translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-11-18 02:50+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Chinese (Traditional) \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-11-19 05:27+0000\n" +"X-Generator: Launchpad (build 16831)\n" + +#. module: hr_payroll_account +#: field:hr.salary.rule,account_credit:0 +msgid "Credit Account" +msgstr "" + +#. module: hr_payroll_account +#: code:addons/hr_payroll_account/hr_payroll_account.py:104 +#, python-format +msgid "Payslip of %s" +msgstr "" + +#. module: hr_payroll_account +#: code:addons/hr_payroll_account/hr_payroll_account.py:157 +#, python-format +msgid "" +"The Expense Journal \"%s\" has not properly configured the Credit Account!" +msgstr "" + +#. module: hr_payroll_account +#: field:hr.payslip,move_id:0 +msgid "Accounting Entry" +msgstr "" + +#. module: hr_payroll_account +#: code:addons/hr_payroll_account/hr_payroll_account.py:173 +#, python-format +msgid "" +"The Expense Journal \"%s\" has not properly configured the Debit Account!" +msgstr "" + +#. module: hr_payroll_account +#: field:hr.salary.rule,account_tax_id:0 +msgid "Tax Code" +msgstr "" + +#. module: hr_payroll_account +#: field:hr.payslip,period_id:0 +msgid "Force Period" +msgstr "" + +#. module: hr_payroll_account +#: help:hr.payslip,period_id:0 +msgid "Keep empty to use the period of the validation(Payslip) date." +msgstr "" + +#. module: hr_payroll_account +#: model:ir.model,name:hr_payroll_account.model_hr_contract +msgid "Contract" +msgstr "" + +#. module: hr_payroll_account +#: field:hr.contract,analytic_account_id:0 +#: field:hr.salary.rule,analytic_account_id:0 +msgid "Analytic Account" +msgstr "" + +#. module: hr_payroll_account +#: field:hr.salary.rule,account_debit:0 +msgid "Debit Account" +msgstr "" + +#. module: hr_payroll_account +#: model:ir.model,name:hr_payroll_account.model_hr_payslip_run +msgid "Payslip Batches" +msgstr "" + +#. module: hr_payroll_account +#: model:ir.model,name:hr_payroll_account.model_hr_payslip_employees +msgid "Generate payslips for all selected employees" +msgstr "" + +#. module: hr_payroll_account +#: code:addons/hr_payroll_account/hr_payroll_account.py:157 +#: code:addons/hr_payroll_account/hr_payroll_account.py:173 +#, python-format +msgid "Configuration Error!" +msgstr "" + +#. module: hr_payroll_account +#: model:ir.model,name:hr_payroll_account.model_hr_salary_rule +msgid "hr.salary.rule" +msgstr "" + +#. module: hr_payroll_account +#: view:hr.contract:0 +#: view:hr.salary.rule:0 +msgid "Accounting" +msgstr "" + +#. module: hr_payroll_account +#: model:ir.model,name:hr_payroll_account.model_hr_payslip +msgid "Pay Slip" +msgstr "" + +#. module: hr_payroll_account +#: code:addons/hr_payroll_account/hr_payroll_account.py:159 +#: code:addons/hr_payroll_account/hr_payroll_account.py:175 +#, python-format +msgid "Adjustment Entry" +msgstr "" + +#. module: hr_payroll_account +#: field:hr.contract,journal_id:0 +#: field:hr.payslip,journal_id:0 +#: field:hr.payslip.run,journal_id:0 +msgid "Salary Journal" +msgstr "" diff --git a/addons/hr_recruitment/hr_recruitment.py b/addons/hr_recruitment/hr_recruitment.py index 04feba2e769..499cad55bde 100644 --- a/addons/hr_recruitment/hr_recruitment.py +++ b/addons/hr_recruitment/hr_recruitment.py @@ -52,13 +52,14 @@ class hr_recruitment_stage(osv.osv): 'name': fields.char('Name', size=64, required=True, translate=True), 'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of stages."), 'department_id':fields.many2one('hr.department', 'Specific to a Department', help="Stages of the recruitment process may be different per department. If this stage is common to all departments, keep this field empty."), - 'fold': fields.boolean('Hide in views if empty', help="This stage is not visible, for example in status bar or kanban view, when there are no records in that stage to display."), 'requirements': fields.text('Requirements'), - 'template_id': fields.many2one('email.template', 'Use template', help="Use this email template, so that an email will be sent to applicant if application stage is changed to this stage.") + 'template_id': fields.many2one('email.template', 'Use template', help="Use this email template, so that an email will be sent to applicant if application stage is changed to this stage."), + 'fold': fields.boolean('Folded in Kanban View', + help='This stage is folded in the kanban view when' + 'there are no records in that stage to display.'), } _defaults = { 'sequence': 1, - 'fold': False, } class hr_recruitment_degree(osv.osv): @@ -83,8 +84,9 @@ class hr_applicant(osv.Model): _inherit = ['mail.thread', 'ir.needaction_mixin'] _track = { 'stage_id': { - 'hr_recruitment.mt_applicant_new': lambda self, cr, uid, obj, ctx=None: obj.stage_id and obj.stage_id.sequence == 1, - 'hr_recruitment.mt_applicant_stage_changed': lambda self, cr, uid, obj, ctx=None: obj.stage_id and obj.stage_id.sequence != 1, + # this is only an heuristics; depending on your particular stage configuration it may not match all 'new' stages + 'hr_recruitment.mt_applicant_new': lambda self, cr, uid, obj, ctx=None: obj.stage_id and obj.stage_id.sequence <= 1, + 'hr_recruitment.mt_applicant_stage_changed': lambda self, cr, uid, obj, ctx=None: obj.stage_id and obj.stage_id.sequence > 1, }, } @@ -95,7 +97,7 @@ class hr_applicant(osv.Model): def _get_default_stage_id(self, cr, uid, context=None): """ Gives default stage_id """ department_id = self._get_default_department_id(cr, uid, context=context) - return self.stage_find(cr, uid, [], department_id, [('sequence', '=', '1')], context=context) + return self.stage_find(cr, uid, [], department_id, [('fold', '=', False)], context=context) def _resolve_department_id_from_context(self, cr, uid, context=None): """ Returns ID of department based on the value of 'default_department_id' @@ -278,7 +280,7 @@ class hr_applicant(osv.Model): def onchange_department_id(self, cr, uid, ids, department_id=False, stage_id=False, context=None): if not stage_id: - stage_id = self.stage_find(cr, uid, [], department_id, [('sequence', '=', '1')], context=context) + stage_id = self.stage_find(cr, uid, [], department_id, [('fold', '=', False)], context=context) return {'value': {'stage_id': stage_id}} def onchange_partner_id(self, cr, uid, ids, partner_id, context=None): @@ -373,7 +375,8 @@ class hr_applicant(osv.Model): through message_process. This override updates the document according to the email. """ - if custom_values is None: custom_values = {} + if custom_values is None: + custom_values = {} val = msg.get('from').split('<')[0] defaults = { 'name': msg.get('subject') or _("No Subject"), @@ -386,38 +389,7 @@ class hr_applicant(osv.Model): if msg.get('priority'): defaults['priority'] = msg.get('priority') defaults.update(custom_values) - return super(hr_applicant,self).message_new(cr, uid, msg, custom_values=defaults, context=context) - - def message_update(self, cr, uid, ids, msg, update_vals=None, context=None): - """ Override mail_thread message_update that is called by the mailgateway - through message_process. - This method updates the document according to the email. - """ - if isinstance(ids, (str, int, long)): - ids = [ids] - if update_vals is None: - update_vals = {} - - update_vals.update({ - 'email_from': msg.get('from'), - 'email_cc': msg.get('cc'), - }) - if msg.get('priority'): - update_vals['priority'] = msg.get('priority') - - maps = { - 'cost': 'planned_cost', - 'revenue': 'planned_revenue', - 'probability': 'probability', - } - for line in msg.get('body', '').split('\n'): - line = line.strip() - res = tools.command_re.match(line) - if res and maps.get(res.group(1).lower(), False): - key = maps.get(res.group(1).lower()) - update_vals[key] = res.group(2).lower() - - return super(hr_applicant, self).message_update(cr, uid, ids, msg, update_vals=update_vals, context=context) + return super(hr_applicant, self).message_new(cr, uid, msg, custom_values=defaults, context=context) def create(self, cr, uid, vals, context=None): if context is None: diff --git a/addons/hr_recruitment/hr_recruitment_data.xml b/addons/hr_recruitment/hr_recruitment_data.xml index 1ac494d10cf..1675b092b3f 100644 --- a/addons/hr_recruitment/hr_recruitment_data.xml +++ b/addons/hr_recruitment/hr_recruitment_data.xml @@ -110,6 +110,7 @@ Contract Signed 5 + Refused @@ -117,6 +118,7 @@ + Job Survey 20 diff --git a/addons/hr_recruitment/hr_recruitment_view.xml b/addons/hr_recruitment/hr_recruitment_view.xml index ea3b6166d25..bd4db6932d5 100644 --- a/addons/hr_recruitment/hr_recruitment_view.xml +++ b/addons/hr_recruitment/hr_recruitment_view.xml @@ -352,6 +352,7 @@ + diff --git a/addons/hr_recruitment/i18n/zh_TW.po b/addons/hr_recruitment/i18n/zh_TW.po new file mode 100644 index 00000000000..d956b954e5b --- /dev/null +++ b/addons/hr_recruitment/i18n/zh_TW.po @@ -0,0 +1,1261 @@ +# Chinese (Traditional) translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-21 17:04+0000\n" +"PO-Revision-Date: 2013-11-18 02:51+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Chinese (Traditional) \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-11-19 05:27+0000\n" +"X-Generator: Launchpad (build 16831)\n" + +#. module: hr_recruitment +#: help:hr.applicant,active:0 +msgid "" +"If the active field is set to false, it will allow you to hide the case " +"without removing it." +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.stage:0 +#: field:hr.recruitment.stage,requirements:0 +msgid "Requirements" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Application Summary" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Start Interview" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Mobile:" +msgstr "" + +#. module: hr_recruitment +#: help:hr.recruitment.stage,fold:0 +msgid "" +"This stage is not visible, for example in status bar or kanban view, when " +"there are no records in that stage to display." +msgstr "" + +#. module: hr_recruitment +#: model:hr.recruitment.degree,name:hr_recruitment.degree_graduate +msgid "Graduate" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Group By..." +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Filter and view on next actions and date" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +#: field:hr.applicant,department_id:0 +#: view:hr.recruitment.report:0 +#: field:hr.recruitment.report,department_id:0 +msgid "Department" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,date_action:0 +msgid "Next Action Date" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,salary_expected_extra:0 +msgid "Expected Salary Extra" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +msgid "Jobs" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Pending Jobs" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +#: field:hr.applicant,message_unread:0 +msgid "Unread Messages" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,company_id:0 +#: view:hr.recruitment.report:0 +#: field:hr.recruitment.report,company_id:0 +msgid "Company" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.source:0 +#: model:ir.actions.act_window,name:hr_recruitment.hr_recruitment_source_action +#: model:ir.ui.menu,name:hr_recruitment.menu_hr_recruitment_source +msgid "Sources of Applicants" +msgstr "" + +#. module: hr_recruitment +#: code:addons/hr_recruitment/hr_recruitment.py:445 +#, python-format +msgid "You must define Applied Job for this applicant." +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Job" +msgstr "" + +#. module: hr_recruitment +#: field:hr.recruitment.partner.create,close:0 +msgid "Close job request" +msgstr "" + +#. module: hr_recruitment +#: model:ir.actions.act_window,help:hr_recruitment.crm_case_categ0_act_job +msgid "" +"

    \n" +" Click to add a new job applicant.\n" +"

    \n" +" OpenERP helps you track applicants in the recruitment\n" +" process and follow up all operations: meetings, interviews, " +"etc.\n" +"

    \n" +" If you setup the email gateway, applicants and their " +"attached\n" +" CV are created automatically when an email is sent to\n" +" jobs@yourcompany.com. If you install the document " +"management\n" +" modules, all resumes are indexed automatically, so that you " +"can\n" +" easily search through their content.\n" +"

    \n" +" " +msgstr "" + +#. module: hr_recruitment +#: model:ir.actions.act_window,name:hr_recruitment.crm_case_categ0_act_job +#: model:ir.ui.menu,name:hr_recruitment.menu_crm_case_categ0_act_job +msgid "Applications" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,day_open:0 +msgid "Days to Open" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,emp_id:0 +msgid "employee" +msgstr "" + +#. module: hr_recruitment +#: field:hr.config.settings,fetchmail_applicants:0 +msgid "Create applicants from an incoming email account" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +#: field:hr.recruitment.report,day:0 +msgid "Day" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.partner.create:0 +#: model:ir.actions.act_window,name:hr_recruitment.action_hr_recruitment_partner_create +msgid "Create Contact" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Refuse" +msgstr "" + +#. module: hr_recruitment +#: model:hr.recruitment.degree,name:hr_recruitment.degree_licenced +msgid "Master Degree" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,partner_mobile:0 +msgid "Mobile" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,message_ids:0 +msgid "Messages" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Next Actions" +msgstr "" + +#. module: hr_recruitment +#: code:addons/hr_recruitment/wizard/hr_recruitment_create_partner_job.py:38 +#: code:addons/hr_recruitment/wizard/hr_recruitment_create_partner_job.py:56 +#, python-format +msgid "Error!" +msgstr "" + +#. module: hr_recruitment +#: model:hr.recruitment.degree,name:hr_recruitment.degree_bac5 +msgid "Doctoral Degree" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,job_id:0 +#: field:hr.recruitment.report,job_id:0 +msgid "Applied Job" +msgstr "" + +#. module: hr_recruitment +#: help:hr.recruitment.stage,department_id:0 +msgid "" +"Stages of the recruitment process may be different per department. If this " +"stage is common to all departments, keep this field empty." +msgstr "" + +#. module: hr_recruitment +#: help:hr.applicant,message_unread:0 +msgid "If checked new messages require your attention." +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,color:0 +msgid "Color Index" +msgstr "" + +#. module: hr_recruitment +#: model:ir.actions.act_window,name:hr_recruitment.act_hr_applicant_to_meeting +msgid "Meetings" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +#: model:ir.actions.act_window,name:hr_recruitment.action_applicants_status +msgid "Applicants Status" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +msgid "My Recruitment" +msgstr "" + +#. module: hr_recruitment +#: field:hr.job,survey_id:0 +msgid "Interview Form" +msgstr "" + +#. module: hr_recruitment +#: help:hr.job,survey_id:0 +msgid "" +"Choose an interview form for this job position and you will be able to " +"print/answer this interview from all applicants who apply for this job" +msgstr "" + +#. module: hr_recruitment +#: model:ir.ui.menu,name:hr_recruitment.menu_hr_recruitment_recruitment +msgid "Recruitment" +msgstr "" + +#. module: hr_recruitment +#: help:hr.applicant,message_summary:0 +msgid "" +"Holds the Chatter summary (number of messages, ...). This summary is " +"directly in html format in order to be inserted in kanban views." +msgstr "" + +#. module: hr_recruitment +#: code:addons/hr_recruitment/hr_recruitment.py:445 +#, python-format +msgid "Warning!" +msgstr "" + +#. module: hr_recruitment +#: field:hr.recruitment.report,salary_prop:0 +msgid "Salary Proposed" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +#: field:hr.recruitment.report,partner_id:0 +msgid "Partner" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +msgid "Avg Proposed Salary" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +#: field:hr.applicant,availability:0 +#: field:hr.recruitment.report,available:0 +msgid "Availability" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,salary_proposed:0 +#: view:hr.recruitment.report:0 +msgid "Proposed Salary" +msgstr "" + +#. module: hr_recruitment +#: model:ir.model,name:hr_recruitment.model_hr_recruitment_source +msgid "Source of Applicants" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.partner.create:0 +msgid "Convert To Partner" +msgstr "" + +#. module: hr_recruitment +#: model:ir.model,name:hr_recruitment.model_hr_recruitment_report +msgid "Recruitments Statistics" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Print interview report" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +msgid "Hired employees" +msgstr "" + +#. module: hr_recruitment +#: model:ir.model,name:hr_recruitment.model_hr_job +msgid "Job Description" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +#: field:hr.applicant,source_id:0 +msgid "Source" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,message_follower_ids:0 +msgid "Followers" +msgstr "" + +#. module: hr_recruitment +#: model:hr.recruitment.source,name:hr_recruitment.source_monster +msgid "Monster" +msgstr "" + +#. module: hr_recruitment +#: model:mail.message.subtype,name:hr_recruitment.mt_applicant_hired +msgid "Applicant Hired" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,email_from:0 +msgid "Email" +msgstr "" + +#. module: hr_recruitment +#: model:ir.actions.act_window,help:hr_recruitment.hr_job_stage_act +msgid "" +"

    \n" +" Click to add a new stage in the recruitment process.\n" +"

    \n" +" Define here your stages of the recruitment process, for " +"example:\n" +" qualification call, first interview, second interview, refused,\n" +" hired.\n" +"

    \n" +" " +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +msgid "Available" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,title_action:0 +msgid "Next Action" +msgstr "" + +#. module: hr_recruitment +#: help:hr.job,alias_id:0 +msgid "" +"Email alias for this job position. New emails will automatically create new " +"applicants for this job position." +msgstr "" + +#. module: hr_recruitment +#: selection:hr.applicant,priority:0 +#: selection:hr.recruitment.report,priority:0 +msgid "Good" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.recruitment.report,month:0 +msgid "August" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +#: field:hr.applicant,create_date:0 +#: view:hr.recruitment.report:0 +msgid "Creation Date" +msgstr "" + +#. module: hr_recruitment +#: model:ir.actions.act_window,name:hr_recruitment.action_hr_recruitment_hired_employee +#: model:ir.model,name:hr_recruitment.model_hired_employee +msgid "Create Employee" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +#: field:hr.applicant,priority:0 +#: field:hr.recruitment.report,priority:0 +msgid "Appreciation" +msgstr "" + +#. module: hr_recruitment +#: model:hr.recruitment.stage,name:hr_recruitment.stage_job1 +msgid "Initial Qualification" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Print Interview" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +#: field:hr.applicant,stage_id:0 +#: view:hr.recruitment.report:0 +#: field:hr.recruitment.report,stage_id:0 +#: view:hr.recruitment.stage:0 +msgid "Stage" +msgstr "" + +#. module: hr_recruitment +#: model:hr.recruitment.stage,name:hr_recruitment.stage_job3 +msgid "Second Interview" +msgstr "" + +#. module: hr_recruitment +#: model:ir.actions.act_window,name:hr_recruitment.hr_job_stage_act +msgid "Recruitment / Applicants Stages" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,salary_expected:0 +#: view:hr.recruitment.report:0 +msgid "Expected Salary" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.recruitment.report,month:0 +msgid "July" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,email_cc:0 +msgid "Watchers Emails" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Applicants" +msgstr "" + +#. module: hr_recruitment +#: code:addons/hr_recruitment/hr_recruitment.py:360 +#, python-format +msgid "No Subject" +msgstr "" + +#. module: hr_recruitment +#: field:hr.recruitment.report,salary_exp:0 +msgid "Salary Expected" +msgstr "" + +#. module: hr_recruitment +#: model:ir.model,name:hr_recruitment.model_hr_applicant +msgid "Applicant" +msgstr "" + +#. module: hr_recruitment +#: help:hr.recruitment.stage,sequence:0 +msgid "Gives the sequence order when displaying a list of stages." +msgstr "" + +#. module: hr_recruitment +#: code:addons/hr_recruitment/hr_recruitment.py:347 +#: field:hr.applicant,partner_id:0 +#, python-format +msgid "Contact" +msgstr "" + +#. module: hr_recruitment +#: help:hr.applicant,salary_expected_extra:0 +msgid "Salary Expected by Applicant, extra advantages" +msgstr "" + +#. module: hr_recruitment +#: help:hr.applicant,state:0 +msgid "" +"The status is set to 'Draft', when a case is created. " +"If the case is in progress the status is set to 'Open'. " +"When the case is over, the status is set to 'Done'. If " +"the case needs to be reviewed then the status is set " +"to 'Pending'." +msgstr "" + +#. module: hr_recruitment +#: selection:hr.recruitment.report,month:0 +msgid "March" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.stage:0 +#: model:ir.actions.act_window,name:hr_recruitment.hr_recruitment_stage_act +#: model:ir.ui.menu,name:hr_recruitment.menu_hr_recruitment_stage +msgid "Stages" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +msgid "Draft recruitment" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Delete" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +msgid "In progress" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Hire & Create Employee" +msgstr "" + +#. module: hr_recruitment +#: model:mail.message.subtype,description:hr_recruitment.mt_applicant_hired +msgid "Applicant hired" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Jobs - Recruitment Form" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,probability:0 +msgid "Probability" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.recruitment.report,month:0 +msgid "April" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.recruitment.report,month:0 +msgid "September" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.recruitment.report,month:0 +msgid "December" +msgstr "" + +#. module: hr_recruitment +#: code:addons/hr_recruitment/wizard/hr_recruitment_create_partner_job.py:39 +#, python-format +msgid "A contact is already defined on this job request." +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,categ_ids:0 +msgid "Tags" +msgstr "" + +#. module: hr_recruitment +#: model:ir.model,name:hr_recruitment.model_hr_applicant_category +msgid "Category of applicant" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +#: field:hr.recruitment.report,month:0 +msgid "Month" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Answer related job question" +msgstr "" + +#. module: hr_recruitment +#: model:hr.recruitment.stage,name:hr_recruitment.stage_job2 +msgid "First Interview" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,write_date:0 +msgid "Update Date" +msgstr "" + +#. module: hr_recruitment +#: view:hired.employee:0 +msgid "Yes" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +#: field:hr.applicant,name:0 +msgid "Subject" +msgstr "" + +#. module: hr_recruitment +#: view:hired.employee:0 +#: view:hr.recruitment.partner.create:0 +msgid "or" +msgstr "" + +#. module: hr_recruitment +#: model:mail.message.subtype,name:hr_recruitment.mt_applicant_refused +msgid "Applicant Refused" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Schedule Meeting" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,partner_name:0 +msgid "Applicant's Name" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.applicant,priority:0 +#: selection:hr.recruitment.report,priority:0 +msgid "Very Good" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,user_email:0 +msgid "User Email" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,date_open:0 +msgid "Opened" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +msgid "Group By ..." +msgstr "" + +#. module: hr_recruitment +#: view:hired.employee:0 +msgid "No" +msgstr "" + +#. module: hr_recruitment +#: help:hr.applicant,salary_expected:0 +msgid "Salary Expected by Applicant" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "All Initial Jobs" +msgstr "" + +#. module: hr_recruitment +#: help:hr.applicant,email_cc:0 +msgid "" +"These email addresses will be added to the CC field of all inbound and " +"outbound emails for this record before being sent. Separate multiple email " +"addresses with a comma" +msgstr "" + +#. module: hr_recruitment +#: model:ir.ui.menu,name:hr_recruitment.menu_hr_recruitment_degree +msgid "Degrees" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,date_closed:0 +#: field:hr.recruitment.report,date_closed:0 +msgid "Closed" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.stage:0 +msgid "Stage Definition" +msgstr "" + +#. module: hr_recruitment +#: field:hr.recruitment.report,delay_close:0 +msgid "Avg. Delay to Close" +msgstr "" + +#. module: hr_recruitment +#: help:hr.applicant,salary_proposed:0 +msgid "Salary Proposed by the Organisation" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +#: selection:hr.applicant,state:0 +#: view:hr.recruitment.report:0 +#: selection:hr.recruitment.report,state:0 +#: selection:hr.recruitment.stage,state:0 +msgid "Pending" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,state:0 +#: field:hr.recruitment.report,state:0 +#: field:hr.recruitment.stage,state:0 +msgid "Status" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Schedule interview with this applicant" +msgstr "" + +#. module: hr_recruitment +#: code:addons/hr_recruitment/hr_recruitment.py:407 +#, python-format +msgid "Applicant created" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +#: field:hr.applicant,type_id:0 +#: view:hr.recruitment.degree:0 +#: view:hr.recruitment.report:0 +#: field:hr.recruitment.report,type_id:0 +#: model:ir.actions.act_window,name:hr_recruitment.hr_recruitment_degree_action +msgid "Degree" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,partner_phone:0 +msgid "Phone" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.recruitment.report,month:0 +msgid "June" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,day_close:0 +msgid "Days to Close" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,message_is_follower:0 +msgid "Is a Follower" +msgstr "" + +#. module: hr_recruitment +#: field:hr.recruitment.report,user_id:0 +msgid "User" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.applicant,priority:0 +#: selection:hr.recruitment.report,priority:0 +msgid "Excellent" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,active:0 +msgid "Active" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +#: field:hr.recruitment.report,nbr:0 +msgid "# of Applications" +msgstr "" + +#. module: hr_recruitment +#: model:ir.actions.act_window,help:hr_recruitment.hr_recruitment_stage_act +msgid "" +"

    \n" +" Click to add a new stage in the recruitment process.\n" +"

    \n" +" Don't forget to specify the department if your recruitment " +"process\n" +" is different according to the job position.\n" +"

    \n" +" " +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,response:0 +msgid "Response" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.recruitment.report,month:0 +msgid "October" +msgstr "" + +#. module: hr_recruitment +#: field:hr.config.settings,module_document_ftp:0 +msgid "Allow the automatic indexation of resumes" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,salary_proposed_extra:0 +msgid "Proposed Salary Extra" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.recruitment.report,month:0 +msgid "January" +msgstr "" + +#. module: hr_recruitment +#: code:addons/hr_recruitment/wizard/hr_recruitment_create_partner_job.py:56 +#, python-format +msgid "A contact is already existing with the same name." +msgstr "" + +#. module: hr_recruitment +#: model:ir.actions.act_window,name:hr_recruitment.hr_recruitment_stage_form_installer +msgid "Review Recruitment Stages" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Contact:" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Search Jobs" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,date:0 +#: field:hr.recruitment.report,date:0 +msgid "Date" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,survey:0 +msgid "Survey" +msgstr "" + +#. module: hr_recruitment +#: view:hired.employee:0 +msgid "Would you like to create an employee ?" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Degree:" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +msgid "Extended Filters..." +msgstr "" + +#. module: hr_recruitment +#: model:ir.actions.act_window,help:hr_recruitment.hr_recruitment_stage_form_installer +msgid "" +"Check if the following stages are matching your recruitment process. Don't " +"forget to specify the department if your recruitment process is different " +"according to the job position." +msgstr "" + +#. module: hr_recruitment +#: view:hr.config.settings:0 +msgid "Configure" +msgstr "" + +#. module: hr_recruitment +#: model:hr.recruitment.stage,name:hr_recruitment.stage_job4 +msgid "Contract Proposed" +msgstr "" + +#. module: hr_recruitment +#: model:hr.recruitment.source,name:hr_recruitment.source_website_company +msgid "Company Website" +msgstr "" + +#. module: hr_recruitment +#: sql_constraint:hr.recruitment.degree:0 +msgid "The name of the Degree of Recruitment must be unique!" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +#: field:hr.recruitment.report,year:0 +msgid "Year" +msgstr "" + +#. module: hr_recruitment +#: view:hired.employee:0 +#: view:hr.recruitment.partner.create:0 +msgid "Cancel" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.partner.create:0 +msgid "Are you sure you want to create a contact based on this job request ?" +msgstr "" + +#. module: hr_recruitment +#: help:hr.config.settings,fetchmail_applicants:0 +msgid "" +"Allow applicants to send their job application to an email address " +"(jobs@mycompany.com),\n" +" and create automatically application documents in the system." +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +#: selection:hr.applicant,state:0 +#: selection:hr.recruitment.stage,state:0 +msgid "In Progress" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Subject / Applicant" +msgstr "" + +#. module: hr_recruitment +#: help:hr.recruitment.degree,sequence:0 +msgid "Gives the sequence order when displaying a list of degrees." +msgstr "" + +#. module: hr_recruitment +#: model:mail.message.subtype,description:hr_recruitment.mt_stage_changed +msgid "Stage changed" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +#: field:hr.applicant,user_id:0 +#: view:hr.recruitment.report:0 +msgid "Responsible" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +#: model:ir.actions.act_window,name:hr_recruitment.action_hr_recruitment_report_all +#: model:ir.ui.menu,name:hr_recruitment.menu_hr_recruitment_report_all +msgid "Recruitment Analysis" +msgstr "" + +#. module: hr_recruitment +#: view:hired.employee:0 +msgid "Create New Employee" +msgstr "" + +#. module: hr_recruitment +#: model:hr.recruitment.source,name:hr_recruitment.source_linkedin +msgid "LinkedIn" +msgstr "" + +#. module: hr_recruitment +#: model:mail.message.subtype,name:hr_recruitment.mt_job_new_applicant +msgid "New Applicant" +msgstr "" + +#. module: hr_recruitment +#: model:ir.model,name:hr_recruitment.model_hr_recruitment_stage +msgid "Stage of Recruitment" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Cases By Stage and Estimates" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +#: selection:hr.applicant,state:0 +#: view:hr.recruitment.report:0 +#: selection:hr.recruitment.report,state:0 +#: selection:hr.recruitment.stage,state:0 +msgid "New" +msgstr "" + +#. module: hr_recruitment +#: model:crm.meeting.type,name:hr_recruitment.categ_meet_interview +#: view:hr.job:0 +msgid "Interview" +msgstr "" + +#. module: hr_recruitment +#: field:hr.recruitment.source,name:0 +msgid "Source Name" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Day(s)" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,description:0 +msgid "Description" +msgstr "" + +#. module: hr_recruitment +#: model:mail.message.subtype,name:hr_recruitment.mt_stage_changed +msgid "Stage Changed" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.recruitment.report,month:0 +msgid "May" +msgstr "" + +#. module: hr_recruitment +#: model:hr.recruitment.stage,name:hr_recruitment.stage_job5 +msgid "Contract Signed" +msgstr "" + +#. module: hr_recruitment +#: model:hr.recruitment.source,name:hr_recruitment.source_word +msgid "Word of Mouth" +msgstr "" + +#. module: hr_recruitment +#: field:hr.recruitment.stage,fold:0 +msgid "Hide in views if empty" +msgstr "" + +#. module: hr_recruitment +#: help:hr.config.settings,module_document_ftp:0 +msgid "" +"Manage your CV's and motivation letter related to all applicants.\n" +" This installs the module document_ftp. This will install the " +"knowledge management module in order to allow you to search using specific " +"keywords through the content of all documents (PDF, .DOCx...)" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.applicant,state:0 +#: selection:hr.recruitment.report,state:0 +#: model:hr.recruitment.stage,name:hr_recruitment.stage_job6 +#: selection:hr.recruitment.stage,state:0 +msgid "Refused" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.applicant,state:0 +#: view:hr.recruitment.report:0 +#: selection:hr.recruitment.report,state:0 +#: selection:hr.recruitment.stage,state:0 +msgid "Hired" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,reference:0 +msgid "Referred By" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Departement:" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.applicant,priority:0 +#: selection:hr.recruitment.report,priority:0 +msgid "On Average" +msgstr "" + +#. module: hr_recruitment +#: model:ir.model,name:hr_recruitment.model_hr_recruitment_degree +msgid "Degree of Recruitment" +msgstr "" + +#. module: hr_recruitment +#: field:hr.recruitment.report,salary_prop_avg:0 +msgid "Avg. Proposed Salary" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Open Jobs" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.recruitment.report,month:0 +msgid "February" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.applicant,priority:0 +#: selection:hr.recruitment.report,priority:0 +msgid "Not Good" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant_category,name:0 +#: field:hr.recruitment.degree,name:0 +#: field:hr.recruitment.stage,name:0 +msgid "Name" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.recruitment.report,month:0 +msgid "November" +msgstr "" + +#. module: hr_recruitment +#: field:hr.recruitment.report,salary_exp_avg:0 +msgid "Avg. Expected Salary" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +msgid "Avg Expected Salary" +msgstr "" + +#. module: hr_recruitment +#: model:ir.model,name:hr_recruitment.model_hr_recruitment_partner_create +msgid "Create Partner from job application" +msgstr "" + +#. module: hr_recruitment +#: help:hr.applicant,email_from:0 +msgid "These people will receive email." +msgstr "" + +#. module: hr_recruitment +#: field:hr.job,alias_id:0 +msgid "Alias" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +msgid "Pending recruitment" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Contract" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,message_summary:0 +msgid "Summary" +msgstr "" + +#. module: hr_recruitment +#: help:hr.applicant,message_ids:0 +msgid "Messages and communication history" +msgstr "" + +#. module: hr_recruitment +#: model:mail.message.subtype,description:hr_recruitment.mt_applicant_refused +msgid "Applicant refused" +msgstr "" + +#. module: hr_recruitment +#: field:hr.recruitment.stage,department_id:0 +msgid "Specific to a Department" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +msgid "In progress recruitment" +msgstr "" + +#. module: hr_recruitment +#: field:hr.recruitment.degree,sequence:0 +#: field:hr.recruitment.stage,sequence:0 +msgid "Sequence" +msgstr "" + +#. module: hr_recruitment +#: model:hr.recruitment.degree,name:hr_recruitment.degree_bachelor +msgid "Bachelor Degree" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Unassigned Recruitments" +msgstr "" + +#. module: hr_recruitment +#: model:ir.model,name:hr_recruitment.model_hr_config_settings +msgid "hr.config.settings" +msgstr "" + +#. module: hr_recruitment +#: help:hr.recruitment.stage,state:0 +msgid "" +"The related status for the stage. The status of your document will " +"automatically change according to the selected stage. Example, a stage is " +"related to the status 'Close', when your document reach this stage, it will " +"be automatically closed." +msgstr "" + +#. module: hr_recruitment +#: help:hr.applicant,salary_proposed_extra:0 +msgid "Salary Proposed by the Organisation, extra advantages" +msgstr "" + +#. module: hr_recruitment +#: help:hr.recruitment.report,delay_close:0 +msgid "Number of Days to close the project issue" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.recruitment.report,state:0 +msgid "Open" +msgstr "" + +#. module: hr_recruitment +#: view:board.board:0 +msgid "Applications to be Processed" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Schedule Interview" +msgstr "" diff --git a/addons/hr_recruitment/report/hr_recruitment_report.py b/addons/hr_recruitment/report/hr_recruitment_report.py index 0292875a2c7..908b701d928 100644 --- a/addons/hr_recruitment/report/hr_recruitment_report.py +++ b/addons/hr_recruitment/report/hr_recruitment_report.py @@ -90,7 +90,7 @@ class hr_recruitment_report(osv.Model): (sum(salary_proposed)/count(*)) as salary_prop_avg, sum(salary_expected) as salary_exp, (sum(salary_expected)/count(*)) as salary_exp_avg, - extract('epoch' from (s.date_closed-s.create_date))/(3600*24) as delay_close, + extract('epoch' from (s.write_date-s.create_date))/(3600*24) as delay_close, count(*) as nbr from hr_applicant s group by @@ -101,6 +101,7 @@ class hr_recruitment_report(osv.Model): date_trunc('day',s.date_closed), s.date_open, s.create_date, + s.write_date, s.date_closed, s.date_last_stage_update, s.partner_id, diff --git a/addons/hr_timesheet/hr_timesheet_view.xml b/addons/hr_timesheet/hr_timesheet_view.xml index 3d9e39e986f..0cd8a880a68 100644 --- a/addons/hr_timesheet/hr_timesheet_view.xml +++ b/addons/hr_timesheet/hr_timesheet_view.xml @@ -81,7 +81,8 @@
    - {'search_default_account_id': [active_id], 'default_account_id': active_id, 'search_default_group_date': 1, 'search_default_group_journal': 1} + {'search_default_group_date': 1, 'search_default_group_journal': 1} + [('account_id','child_of', active_id)] Costs & Revenues account.analytic.line account.analytic.account diff --git a/addons/hr_timesheet_sheet/report/timesheet_report.py b/addons/hr_timesheet_sheet/report/timesheet_report.py index 16889253a68..6d284ac08c8 100644 --- a/addons/hr_timesheet_sheet/report/timesheet_report.py +++ b/addons/hr_timesheet_sheet/report/timesheet_report.py @@ -95,7 +95,7 @@ class timesheet_report(osv.osv): htss.state from account_analytic_line as aal left join hr_analytic_timesheet as hat ON (hat.line_id=aal.id) - left join hr_timesheet_sheet_sheet as htss ON (hat.line_id=htss.id) + left join hr_timesheet_sheet_sheet as htss ON (hat.sheet_id=htss.id) group by aal.account_id, aal.date, diff --git a/addons/im/static/src/js/im.js b/addons/im/static/src/js/im.js index 6fbf452f974..f4b74adebf6 100644 --- a/addons/im/static/src/js/im.js +++ b/addons/im/static/src/js/im.js @@ -62,16 +62,12 @@ this.user_search_dm = new instance.web.DropMisordered(); }, start: function() { + var self = this; this.$el.css("right", -this.$el.outerWidth()); $(window).scroll(_.bind(this.calc_box, this)); $(window).resize(_.bind(this.calc_box, this)); this.calc_box(); - this.on("change:current_search", this, this.search_changed); - this.search_changed(); - - var self = this; - return this.c_manager.start_polling().then(function() { self.c_manager.on("new_conversation", self, function(conv) { conv.$el.droppable({ @@ -80,6 +76,7 @@ } }); }); + self.search_changed(); }); }, calc_box: function() { @@ -174,4 +171,4 @@ openerp.webclient.to_kitten(); }; -})(); \ No newline at end of file +})(); diff --git a/addons/l10n_be/__openerp__.py b/addons/l10n_be/__openerp__.py index cd822045e64..8e607ba3120 100644 --- a/addons/l10n_be/__openerp__.py +++ b/addons/l10n_be/__openerp__.py @@ -65,6 +65,7 @@ Wizards provided by this module: 'account_pcmn_belgium.xml', 'account_tax_code_template.xml', 'account_chart_template.xml', + 'account_chart_template.yml', 'account_tax_template.xml', 'wizard/l10n_be_account_vat_declaration_view.xml', 'wizard/l10n_be_vat_intra_view.xml', diff --git a/addons/l10n_be/account_chart_template.xml b/addons/l10n_be/account_chart_template.xml index 48e506ded79..1de39382624 100644 --- a/addons/l10n_be/account_chart_template.xml +++ b/addons/l10n_be/account_chart_template.xml @@ -12,7 +12,6 @@ - diff --git a/addons/l10n_be/account_chart_template.yml b/addons/l10n_be/account_chart_template.yml new file mode 100644 index 00000000000..0028576f964 --- /dev/null +++ b/addons/l10n_be/account_chart_template.yml @@ -0,0 +1,4 @@ +- + !python {model: account.chart.template}: | + if 'spoken_languages' in self._all_columns: + self.write(cr, uid, [ref('l10nbe_chart_template')], {'spoken_languages': 'nl_BE'}) diff --git a/addons/l10n_be/wizard/l10n_be_account_vat_declaration.py b/addons/l10n_be/wizard/l10n_be_account_vat_declaration.py index 0576e1d5f8f..2ef1a81fef2 100644 --- a/addons/l10n_be/wizard/l10n_be_account_vat_declaration.py +++ b/addons/l10n_be/wizard/l10n_be_account_vat_declaration.py @@ -185,7 +185,7 @@ class l10n_be_vat_declaration(osv.osv_memory): for item in cases_list: grid_amount_data = { 'code': str(int(item['code'])), - 'amount': str(abs(item['sum_period'])), + 'amount': '%.2f' % abs(item['sum_period']), } data_of_file += '\n\t\t\t%(amount)s' % (grid_amount_data) diff --git a/addons/l10n_be_hr_payroll/i18n/nl.po b/addons/l10n_be_hr_payroll/i18n/nl.po new file mode 100644 index 00000000000..c98c9cce30d --- /dev/null +++ b/addons/l10n_be_hr_payroll/i18n/nl.po @@ -0,0 +1,148 @@ +# Dutch translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-11-24 02:53+0000\n" +"PO-Revision-Date: 2013-11-11 21:16+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Dutch \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-11-12 05:41+0000\n" +"X-Generator: Launchpad (build 16820)\n" + +#. module: l10n_be_hr_payroll +#: help:hr.employee,disabled_spouse_bool:0 +msgid "if recipient spouse is declared disabled by law" +msgstr "" + +#. module: l10n_be_hr_payroll +#: help:hr.employee,disabled_children_bool:0 +msgid "if recipient children is/are declared disabled by law" +msgstr "" + +#. module: l10n_be_hr_payroll +#: field:hr.contract,misc_onss_deduction:0 +msgid "Miscellaneous exempt ONSS " +msgstr "" + +#. module: l10n_be_hr_payroll +#: model:ir.model,name:l10n_be_hr_payroll.model_hr_employee +msgid "Employee" +msgstr "" + +#. module: l10n_be_hr_payroll +#: field:hr.employee,disabled_spouse_bool:0 +msgid "Disabled Spouse" +msgstr "" + +#. module: l10n_be_hr_payroll +#: field:hr.contract,retained_net_amount:0 +msgid "Net retained " +msgstr "" + +#. module: l10n_be_hr_payroll +#: field:hr.employee,resident_bool:0 +msgid "Nonresident" +msgstr "" + +#. module: l10n_be_hr_payroll +#: help:hr.employee,resident_bool:0 +msgid "if recipient lives in a foreign country" +msgstr "" + +#. module: l10n_be_hr_payroll +#: view:hr.employee:0 +msgid "if spouse has professionnel income or not" +msgstr "" + +#. module: l10n_be_hr_payroll +#: field:hr.contract,insurance_employee_deduction:0 +msgid "Insurance Group - by worker " +msgstr "" + +#. module: l10n_be_hr_payroll +#: selection:hr.employee,spouse_fiscal_status:0 +msgid "With Income" +msgstr "" + +#. module: l10n_be_hr_payroll +#: selection:hr.employee,spouse_fiscal_status:0 +msgid "Without Income" +msgstr "" + +#. module: l10n_be_hr_payroll +#: field:hr.employee,disabled_children_number:0 +msgid "Number of disabled children" +msgstr "" + +#. module: l10n_be_hr_payroll +#: field:hr.contract,additional_net_amount:0 +msgid "Net supplements" +msgstr "" + +#. module: l10n_be_hr_payroll +#: field:hr.contract,car_company_amount:0 +msgid "Company car employer" +msgstr "" + +#. module: l10n_be_hr_payroll +#: field:hr.contract,misc_advantage_amount:0 +msgid "Benefits of various nature " +msgstr "" + +#. module: l10n_be_hr_payroll +#: field:hr.contract,car_employee_deduction:0 +msgid "Company Car Deduction for Worker" +msgstr "" + +#. module: l10n_be_hr_payroll +#: field:hr.employee,disabled_children_bool:0 +msgid "Disabled Children" +msgstr "" + +#. module: l10n_be_hr_payroll +#: model:ir.model,name:l10n_be_hr_payroll.model_hr_contract +msgid "Contract" +msgstr "" + +#. module: l10n_be_hr_payroll +#: field:hr.contract,meal_voucher_amount:0 +msgid "Check Value Meal " +msgstr "" + +#. module: l10n_be_hr_payroll +#: field:hr.contract,travel_reimbursement_amount:0 +msgid "Reimbursement of travel expenses" +msgstr "" + +#. module: l10n_be_hr_payroll +#: constraint:hr.contract:0 +msgid "Error! Contract start-date must be less than contract end-date." +msgstr "" + +#. module: l10n_be_hr_payroll +#: field:hr.employee,spouse_fiscal_status:0 +msgid "Tax status for spouse" +msgstr "" + +#. module: l10n_be_hr_payroll +#: view:hr.employee:0 +msgid "number of dependent children declared as disabled" +msgstr "" + +#. module: l10n_be_hr_payroll +#: constraint:hr.employee:0 +msgid "Error! You cannot create recursive hierarchy of Employee(s)." +msgstr "" + +#. module: l10n_be_hr_payroll +#: field:hr.contract,meal_voucher_employee_deduction:0 +msgid "Check Value Meal - by worker " +msgstr "" diff --git a/addons/l10n_bo/i18n/nl.po b/addons/l10n_bo/i18n/nl.po new file mode 100644 index 00000000000..1e3e77b6b95 --- /dev/null +++ b/addons/l10n_bo/i18n/nl.po @@ -0,0 +1,52 @@ +# Dutch translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2011-01-11 11:15+0000\n" +"PO-Revision-Date: 2013-11-11 08:33+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Dutch \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-11-12 05:41+0000\n" +"X-Generator: Launchpad (build 16820)\n" + +#. module: l10n_ar +#: model:ir.module.module,description:l10n_ar.module_meta_information +msgid "" +"\n" +" Argentinian Accounting : chart of Account\n" +" " +msgstr "" + +#. module: l10n_ar +#: model:ir.module.module,shortdesc:l10n_ar.module_meta_information +msgid "Argentinian Chart of Account" +msgstr "" + +#. module: l10n_ar +#: model:ir.actions.todo,note:l10n_ar.config_call_account_template_in_minimal +msgid "" +"Generate Chart of Accounts from a Chart Template. You will be asked to pass " +"the name of the company, the chart template to follow, the no. of digits to " +"generate the code for your accounts and Bank account, currency to create " +"Journals. Thus,the pure copy of chart Template is generated.\n" +"\tThis is the same wizard that runs from Financial " +"Management/Configuration/Financial Accounting/Financial Accounts/Generate " +"Chart of Accounts from a Chart Template." +msgstr "" +"Genereer een Rekeningschema van een Grootboekrekeningensjabloon. Er zal U " +"gevraagd worden wat de naam is van het bedrijf, welk rekeningschema sjabloon " +"u wenst te gebruiken, uit hoeveel cijfers de rekeningen mogen bestaan, uw " +"bankrekeningnummer en welke munteenheid gebruikt dient te worden bij het " +"maken van dagboeken. Zo wordt een zuiver Grootboekrekeningschema " +"gegenereerd.\n" +"\tDit is dezelfde wizard die gebruikt wordt als die onder Financieel " +"Beheer/Instellingen/Boekhouden/Rekeningschema/Genereer Rekeningschema van " +"Sjabloon." diff --git a/addons/l10n_ch/sterchi_chart/account.xml b/addons/l10n_ch/sterchi_chart/account.xml index acee99cad4a..11198c43b9c 100644 --- a/addons/l10n_ch/sterchi_chart/account.xml +++ b/addons/l10n_ch/sterchi_chart/account.xml @@ -177,14 +177,12 @@ Bilan : Debiteurs receivable - unreconciled none Bilan : Fournisseurs payable - unreconciled none @@ -11809,7 +11807,6 @@ - diff --git a/addons/l10n_es/taxes_data_assoc.xml b/addons/l10n_es/taxes_data_assoc.xml index e2ebb47fb59..152b27363af 100644 --- a/addons/l10n_es/taxes_data_assoc.xml +++ b/addons/l10n_es/taxes_data_assoc.xml @@ -44,7 +44,6 @@ Base adquisiciones exentas - -- 1.0 @@ -53,7 +52,6 @@ Base ventas exentas -- - 1.0 diff --git a/addons/l10n_fr/fr_tax.xml b/addons/l10n_fr/fr_tax.xml index 7c75136bdd3..8633cca7141 100644 --- a/addons/l10n_fr/fr_tax.xml +++ b/addons/l10n_fr/fr_tax.xml @@ -219,8 +219,8 @@ - - + + diff --git a/addons/l10n_fr_rib/i18n/nl.po b/addons/l10n_fr_rib/i18n/nl.po new file mode 100644 index 00000000000..9a54a7902c7 --- /dev/null +++ b/addons/l10n_fr_rib/i18n/nl.po @@ -0,0 +1,131 @@ +# Dutch translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-11-24 02:53+0000\n" +"PO-Revision-Date: 2013-11-11 20:58+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Dutch \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-11-12 05:41+0000\n" +"X-Generator: Launchpad (build 16820)\n" + +#. module: l10n_fr_rib +#: constraint:res.partner.bank:0 +msgid "" +"\n" +"Please define BIC/Swift code on bank for bank type IBAN Account to make " +"valid payments" +msgstr "" + +#. module: l10n_fr_rib +#: model:res.partner.bank.type,name:l10n_fr_rib.bank_rib +msgid "RIB and optional IBAN" +msgstr "" + +#. module: l10n_fr_rib +#: field:res.partner.bank,rib_acc_number:0 +msgid "RIB account number" +msgstr "" + +#. module: l10n_fr_rib +#: field:res.partner.bank,bank_code:0 +msgid "Bank Code" +msgstr "" + +#. module: l10n_fr_rib +#: code:addons/l10n_fr_rib/bank.py:54 +#, python-format +msgid "The RIB key %s does not correspond to the other codes: %s %s %s." +msgstr "" + +#. module: l10n_fr_rib +#: model:res.partner.bank.type.field,name:l10n_fr_rib.rib_office_field +msgid "office" +msgstr "" + +#. module: l10n_fr_rib +#: field:res.bank,rib_code:0 +msgid "RIB Bank Code" +msgstr "" + +#. module: l10n_fr_rib +#: code:addons/l10n_fr_rib/bank.py:58 +#, python-format +msgid "The IBAN %s is not valid." +msgstr "" + +#. module: l10n_fr_rib +#: model:ir.model,name:l10n_fr_rib.model_res_partner_bank +msgid "Bank Accounts" +msgstr "" + +#. module: l10n_fr_rib +#: field:res.partner.bank,office:0 +msgid "Office Code" +msgstr "" + +#. module: l10n_fr_rib +#: model:res.partner.bank.type.field,name:l10n_fr_rib.rib_bic_field +msgid "bank_bic" +msgstr "" + +#. module: l10n_fr_rib +#: model:res.partner.bank.type.field,name:l10n_fr_rib.rib_bank_code_field +msgid "bank_code" +msgstr "" + +#. module: l10n_fr_rib +#: model:res.partner.bank.type.field,name:l10n_fr_rib.rib_key_field +msgid "key" +msgstr "" + +#. module: l10n_fr_rib +#: code:addons/l10n_fr_rib/bank.py:53 +#: code:addons/l10n_fr_rib/bank.py:58 +#, python-format +msgid "Error!" +msgstr "" + +#. module: l10n_fr_rib +#: help:res.partner.bank,key:0 +msgid "" +"The key is a number allowing to check the correctness of the other codes." +msgstr "" + +#. module: l10n_fr_rib +#: field:res.partner.bank,key:0 +msgid "Key" +msgstr "" + +#. module: l10n_fr_rib +#: model:res.partner.bank.type.field,name:l10n_fr_rib.rib_rib_acc_number_field +msgid "rib_acc_number" +msgstr "" + +#. module: l10n_fr_rib +#: model:res.partner.bank.type,format_layout:l10n_fr_rib.bank_rib +msgid "%(bank_name)s: %(bank_code)s %(office)s %(rib_acc_number)s %(key)s" +msgstr "" + +#. module: l10n_fr_rib +#: constraint:res.partner.bank:0 +msgid "The RIB and/or IBAN is not valid" +msgstr "" + +#. module: l10n_fr_rib +#: model:ir.model,name:l10n_fr_rib.model_res_bank +msgid "Bank" +msgstr "" + +#. module: l10n_fr_rib +#: model:res.partner.bank.type.field,name:l10n_fr_rib.rib_acc_number_field +msgid "acc_number" +msgstr "" diff --git a/addons/l10n_in_hr_payroll/data/hr.salary.rule.csv b/addons/l10n_in_hr_payroll/data/hr.salary.rule.csv index 2fe1ba739f4..043ba8f0522 100644 --- a/addons/l10n_in_hr_payroll/data/hr.salary.rule.csv +++ b/addons/l10n_in_hr_payroll/data/hr.salary.rule.csv @@ -1,5 +1,5 @@ -"id","amount_select","condition_range_min","condition_range_max","amount_percentage","amount_fix","name","category_id","sequence","code","parent_rule_id/id","condition_select","condition_range","amount_percentage_base" -1,"fix",1,1,,100,"Education Allowance For One Child","Allowance",23,"CHEAONE","hr_payroll_rule_child1","range","employee.children", -2,"fix",2,10,,200,"Education Allowance For Two Child","Allowance",24,"CHEATWO","hr_payroll_rule_child1","range","employee.children", -3,"fix",1,1,,300,"Child Hostel Allowance For One Child","Allowance",26,"CHOONE","hr_payroll_rule_child2","range","employee.children", -4,"fix",2,10,,600,"Child Hostel Allowance For Two Child","Allowance",27,"CHOTWO","hr_payroll_rule_child2","range","employee.children", +"id","amount_select","condition_range_min","condition_range_max","amount_percentage","amount_fix","name","category_id/id","sequence","code","parent_rule_id/id","condition_select","condition_range","amount_percentage_base" +1,"fix",1,1,,100,"Education Allowance For One Child",hr_payroll.ALW,23,"CHEAONE","hr_payroll_rule_child1","range","employee.children", +2,"fix",2,10,,200,"Education Allowance For Two Child",hr_payroll.ALW,24,"CHEATWO","hr_payroll_rule_child1","range","employee.children", +3,"fix",1,1,,300,"Child Hostel Allowance For One Child",hr_payroll.ALW,26,"CHOONE","hr_payroll_rule_child2","range","employee.children", +4,"fix",2,10,,600,"Child Hostel Allowance For Two Child",hr_payroll.ALW,27,"CHOTWO","hr_payroll_rule_child2","range","employee.children", diff --git a/addons/l10n_in_hr_payroll/i18n/nl.po b/addons/l10n_in_hr_payroll/i18n/nl.po new file mode 100644 index 00000000000..1bd872003ba --- /dev/null +++ b/addons/l10n_in_hr_payroll/i18n/nl.po @@ -0,0 +1,1013 @@ +# Dutch translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-11-24 02:53+0000\n" +"PO-Revision-Date: 2013-11-11 08:40+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Dutch \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-11-12 05:41+0000\n" +"X-Generator: Launchpad (build 16820)\n" + +#. module: l10n_in_hr_payroll +#: report:salary.detail.byyear:0 +msgid "E-mail Address" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:payment.advice.report,employee_bank_no:0 +msgid "Employee Bank Account" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payment.advice.report:0 +msgid "Payment Advices which are in draft state" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:salary.detail.byyear:0 +msgid "Title" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:payroll.advice:0 +msgid "Payment Advice from" +msgstr "" + +#. module: l10n_in_hr_payroll +#: model:ir.model,name:l10n_in_hr_payroll.model_yearly_salary_detail +msgid "Hr Salary Employee By Category Report" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payslip.report:0 +msgid "Payslips which are paid" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +#: view:payment.advice.report:0 +#: view:payslip.report:0 +msgid "Group By..." +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:salary.detail.byyear:0 +msgid "Allowances with Basic:" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payslip.report:0 +msgid "Payslips which are in done state" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:salary.detail.byyear:0 +msgid "Department" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:salary.detail.byyear:0 +msgid "Deductions:" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:payroll.advice:0 +msgid "A/C no." +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.contract,driver_salay:0 +msgid "Driver Salary" +msgstr "" + +#. module: l10n_in_hr_payroll +#: model:ir.actions.act_window,name:l10n_in_hr_payroll.action_yearly_salary_detail +#: model:ir.actions.report.xml,name:l10n_in_hr_payroll.yearly_salary +#: model:ir.ui.menu,name:l10n_in_hr_payroll.menu_yearly_salary_detail +msgid "Yearly Salary by Employee" +msgstr "" + +#. module: l10n_in_hr_payroll +#: model:ir.actions.act_window,name:l10n_in_hr_payroll.act_hr_emp_payslip_list +msgid "Payslips" +msgstr "" + +#. module: l10n_in_hr_payroll +#: selection:payment.advice.report,month:0 +#: selection:payslip.report,month:0 +msgid "March" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +#: field:hr.payroll.advice,company_id:0 +#: field:hr.payroll.advice.line,company_id:0 +#: view:payment.advice.report:0 +#: field:payment.advice.report,company_id:0 +#: view:payslip.report:0 +#: field:payslip.report,company_id:0 +msgid "Company" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:payroll.advice:0 +msgid "The Manager" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +msgid "Letter Details" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +msgid "Set to Draft" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:payroll.advice:0 +msgid "to" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:payroll.advice:0 +msgid "Total :" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.payslip.run,available_advice:0 +msgid "Made Payment Advice?" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payment.advice.report:0 +msgid "Advices which are paid using NEFT transfer" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:payslip.report,nbr:0 +msgid "# Payslip lines" +msgstr "" + +#. module: l10n_in_hr_payroll +#: help:hr.contract,tds:0 +msgid "Amount for Tax Deduction at Source" +msgstr "" + +#. module: l10n_in_hr_payroll +#: model:ir.model,name:l10n_in_hr_payroll.model_hr_payslip +msgid "Pay Slip" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payment.advice.report:0 +#: field:payment.advice.report,day:0 +#: view:payslip.report:0 +#: field:payslip.report,day:0 +msgid "Day" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payment.advice.report:0 +msgid "Month of Payment Advices" +msgstr "" + +#. module: l10n_in_hr_payroll +#: constraint:hr.payslip:0 +msgid "Payslip 'Date From' must be before 'Date To'." +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.payroll.advice,batch_id:0 +msgid "Batch" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:paylip.details.in:0 +msgid "Code" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +msgid "Other Information" +msgstr "" + +#. module: l10n_in_hr_payroll +#: selection:hr.payroll.advice,state:0 +#: selection:payment.advice.report,state:0 +msgid "Cancelled" +msgstr "" + +#. module: l10n_in_hr_payroll +#: model:ir.actions.act_window,help:l10n_in_hr_payroll.action_payslip_report_all +msgid "This report performs analysis on Payslip" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:payroll.advice:0 +msgid "For" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:paylip.details.in:0 +msgid "Details by Salary Rule Category:" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.payroll.advice,number:0 +#: report:paylip.details.in:0 +msgid "Reference" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.contract,medical_insurance:0 +msgid "Medical Insurance" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:paylip.details.in:0 +msgid "Identification No" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payslip.report:0 +#: field:payslip.report,struct_id:0 +msgid "Structure" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:payroll.advice:0 +msgid "form period" +msgstr "" + +#. module: l10n_in_hr_payroll +#: selection:hr.payroll.advice,state:0 +#: selection:payment.advice.report,state:0 +msgid "Confirmed" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:salary.detail.byyear:0 +#: report:salary.employee.bymonth:0 +msgid "From" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.payroll.advice.line,bysal:0 +#: field:payment.advice.report,bysal:0 +#: report:payroll.advice:0 +msgid "By Salary" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +#: view:payment.advice.report:0 +msgid "Confirm" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.payroll.advice,chaque_nos:0 +#: field:payment.advice.report,cheque_nos:0 +msgid "Cheque Numbers" +msgstr "" + +#. module: l10n_in_hr_payroll +#: constraint:res.company:0 +msgid "Error! You can not create recursive companies." +msgstr "" + +#. module: l10n_in_hr_payroll +#: model:ir.actions.act_window,name:l10n_in_hr_payroll.action_salary_employee_month +#: model:ir.actions.report.xml,name:l10n_in_hr_payroll.hr_salary_employee_bymonth +#: model:ir.ui.menu,name:l10n_in_hr_payroll.menu_salary_employee_month +msgid "Yearly Salary by Head" +msgstr "" + +#. module: l10n_in_hr_payroll +#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:134 +#, python-format +msgid "You can not confirm Payment advice without advice lines." +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:payroll.advice:0 +msgid "Yours Sincerely" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payslip.report:0 +msgid "# Payslip Lines" +msgstr "" + +#. module: l10n_in_hr_payroll +#: help:hr.contract,medical_insurance:0 +msgid "Deduction towards company provided medical insurance" +msgstr "" + +#. module: l10n_in_hr_payroll +#: model:ir.model,name:l10n_in_hr_payroll.model_hr_payroll_advice_line +msgid "Bank Advice Lines" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payslip.report:0 +msgid "Day of Payslip" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:paylip.details.in:0 +msgid "Email" +msgstr "" + +#. module: l10n_in_hr_payroll +#: help:hr.payslip.run,available_advice:0 +msgid "" +"If this box is checked which means that Payment Advice exists for current " +"batch" +msgstr "" + +#. module: l10n_in_hr_payroll +#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:108 +#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:134 +#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:190 +#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:207 +#, python-format +msgid "Error !" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:payslip.report,paid:0 +msgid "Made Payment Order ? " +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.salary.employee.month:0 +#: view:yearly.salary.detail:0 +msgid "Print" +msgstr "" + +#. module: l10n_in_hr_payroll +#: selection:payslip.report,state:0 +msgid "Rejected" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payslip.report:0 +msgid "Year of Payslip" +msgstr "" + +#. module: l10n_in_hr_payroll +#: model:ir.model,name:l10n_in_hr_payroll.model_hr_payslip_run +msgid "Payslip Batches" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.payroll.advice.line,debit_credit:0 +#: report:payroll.advice:0 +msgid "C/D" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:salary.employee.bymonth:0 +msgid "Yearly Salary Details" +msgstr "" + +#. module: l10n_in_hr_payroll +#: model:ir.actions.report.xml,name:l10n_in_hr_payroll.payroll_advice +msgid "Print Advice" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.payroll.advice,line_ids:0 +msgid "Employee Salary" +msgstr "" + +#. module: l10n_in_hr_payroll +#: selection:payment.advice.report,month:0 +#: selection:payslip.report,month:0 +msgid "July" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:res.company:0 +msgid "Configuration" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payslip.report:0 +msgid "Payslip Line" +msgstr "" + +#. module: l10n_in_hr_payroll +#: model:ir.actions.act_window,name:l10n_in_hr_payroll.action_view_hr_bank_advice_tree +#: model:ir.ui.menu,name:l10n_in_hr_payroll.hr_menu_payment_advice +msgid "Payment Advices" +msgstr "" + +#. module: l10n_in_hr_payroll +#: model:ir.actions.act_window,name:l10n_in_hr_payroll.action_payment_advice_report_all +#: model:ir.ui.menu,name:l10n_in_hr_payroll.menu_reporting_payment_advice +#: view:payment.advice.report:0 +msgid "Advices Analysis" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.salary.employee.month:0 +msgid "" +"This wizard will print report which displays employees break-up of Net Head " +"for a specified dates." +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.payroll.advice.line,ifsc:0 +msgid "IFSC" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:paylip.details.in:0 +#: field:payslip.report,date_to:0 +msgid "Date To" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.contract,tds:0 +msgid "TDS" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +msgid "Confirm Advices" +msgstr "" + +#. module: l10n_in_hr_payroll +#: constraint:hr.contract:0 +msgid "Error! Contract start-date must be less than contract end-date." +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:res.company,dearness_allowance:0 +msgid "Dearness Allowance" +msgstr "" + +#. module: l10n_in_hr_payroll +#: selection:payment.advice.report,month:0 +#: selection:payslip.report,month:0 +msgid "August" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.contract:0 +msgid "Deduction" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:payroll.advice:0 +msgid "SI. No." +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payment.advice.report:0 +msgid "Payment Advices which are in confirm state" +msgstr "" + +#. module: l10n_in_hr_payroll +#: selection:payment.advice.report,month:0 +#: selection:payslip.report,month:0 +msgid "December" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +msgid "Confirm Sheet" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payment.advice.report:0 +#: field:payment.advice.report,month:0 +#: view:payslip.report:0 +#: field:payslip.report,month:0 +msgid "Month" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:salary.detail.byyear:0 +msgid "Employee Code" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.salary.employee.month:0 +#: view:yearly.salary.detail:0 +msgid "or" +msgstr "" + +#. module: l10n_in_hr_payroll +#: model:ir.model,name:l10n_in_hr_payroll.model_hr_salary_employee_month +msgid "Hr Salary Employee By Month Report" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.salary.employee.month,category_id:0 +#: view:payslip.report:0 +#: field:payslip.report,category_id:0 +msgid "Category" +msgstr "" + +#. module: l10n_in_hr_payroll +#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:190 +#, python-format +msgid "" +"Payment advice already exists for %s, 'Set to Draft' to create a new advice." +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payslip.run:0 +msgid "To Advice" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:paylip.details.in:0 +msgid "Note" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:paylip.details.in:0 +msgid "Salary Rule Category" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +#: selection:hr.payroll.advice,state:0 +#: view:payment.advice.report:0 +#: selection:payment.advice.report,state:0 +#: view:payslip.report:0 +#: selection:payslip.report,state:0 +msgid "Draft" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:paylip.details.in:0 +#: field:payslip.report,date_from:0 +msgid "Date From" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:salary.detail.byyear:0 +msgid "Employee Name" +msgstr "" + +#. module: l10n_in_hr_payroll +#: model:ir.model,name:l10n_in_hr_payroll.model_payment_advice_report +msgid "Payment Advice Analysis" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +#: field:hr.payroll.advice,state:0 +#: view:payment.advice.report:0 +#: field:payment.advice.report,state:0 +#: view:payslip.report:0 +#: field:payslip.report,state:0 +msgid "Status" +msgstr "" + +#. module: l10n_in_hr_payroll +#: help:res.company,dearness_allowance:0 +msgid "Check this box if your company provide Dearness Allowance to employee" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.payroll.advice.line,ifsc_code:0 +#: field:payment.advice.report,ifsc_code:0 +#: report:payroll.advice:0 +msgid "IFSC Code" +msgstr "" + +#. module: l10n_in_hr_payroll +#: selection:payment.advice.report,month:0 +#: selection:payslip.report,month:0 +msgid "June" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payslip.report:0 +msgid "Paid" +msgstr "" + +#. module: l10n_in_hr_payroll +#: help:hr.contract,voluntary_provident_fund:0 +msgid "" +"VPF is a safe option wherein you can contribute more than the PF ceiling of " +"12% that has been mandated by the government and VPF computed as " +"percentage(%)" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payment.advice.report:0 +#: field:payment.advice.report,nbr:0 +msgid "# Payment Lines" +msgstr "" + +#. module: l10n_in_hr_payroll +#: model:ir.actions.report.xml,name:l10n_in_hr_payroll.payslip_details_report +msgid "PaySlip Details" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +msgid "Payment Lines" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.payroll.advice,date:0 +#: field:payment.advice.report,date:0 +msgid "Date" +msgstr "" + +#. module: l10n_in_hr_payroll +#: selection:payment.advice.report,month:0 +#: selection:payslip.report,month:0 +msgid "November" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payment.advice.report:0 +#: view:payslip.report:0 +msgid "Extended Filters..." +msgstr "" + +#. module: l10n_in_hr_payroll +#: model:ir.actions.act_window,help:l10n_in_hr_payroll.action_payment_advice_report_all +msgid "This report performs analysis on Payment Advices" +msgstr "" + +#. module: l10n_in_hr_payroll +#: selection:payment.advice.report,month:0 +#: selection:payslip.report,month:0 +msgid "October" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:paylip.details.in:0 +#: report:salary.detail.byyear:0 +msgid "Designation" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payslip.report:0 +msgid "Month of Payslip" +msgstr "" + +#. module: l10n_in_hr_payroll +#: selection:payment.advice.report,month:0 +#: selection:payslip.report,month:0 +msgid "January" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:yearly.salary.detail:0 +msgid "Pay Head Employee Breakup" +msgstr "" + +#. module: l10n_in_hr_payroll +#: model:ir.model,name:l10n_in_hr_payroll.model_res_company +msgid "Companies" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:paylip.details.in:0 +#: report:payroll.advice:0 +msgid "Authorized Signature" +msgstr "" + +#. module: l10n_in_hr_payroll +#: model:ir.model,name:l10n_in_hr_payroll.model_hr_contract +msgid "Contract" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.contract,supplementary_allowance:0 +msgid "Supplementary Allowance" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice.line:0 +msgid "Advice Lines" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:payroll.advice:0 +msgid "To," +msgstr "" + +#. module: l10n_in_hr_payroll +#: help:hr.contract,driver_salay:0 +msgid "Check this box if you provide allowance for driver" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payslip.report:0 +msgid "Payslips which are in draft state" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +#: field:hr.payroll.advice.line,advice_id:0 +#: field:hr.payslip,advice_id:0 +#: model:ir.model,name:l10n_in_hr_payroll.model_hr_payroll_advice +msgid "Bank Advice" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:salary.detail.byyear:0 +msgid "Other No." +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +msgid "Draft Advices" +msgstr "" + +#. module: l10n_in_hr_payroll +#: help:hr.payroll.advice,neft:0 +msgid "Check this box if your company use online transfer for salary" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:payment.advice.report,number:0 +#: field:payslip.report,number:0 +msgid "Number" +msgstr "" + +#. module: l10n_in_hr_payroll +#: selection:payment.advice.report,month:0 +#: selection:payslip.report,month:0 +msgid "September" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payslip.report:0 +#: selection:payslip.report,state:0 +msgid "Done" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +#: view:hr.salary.employee.month:0 +#: view:yearly.salary.detail:0 +msgid "Cancel" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payment.advice.report:0 +msgid "Day of Payment Advices" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +msgid "Search Payment advice" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:yearly.salary.detail:0 +msgid "" +"This wizard will print report which display a pay head employee breakup for " +"a specified dates." +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:paylip.details.in:0 +msgid "Pay Slip Details" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payment.advice.report:0 +msgid "Total Salary" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.payroll.advice.line,employee_id:0 +#: view:payment.advice.report:0 +#: field:payment.advice.report,employee_id:0 +#: view:payslip.report:0 +#: field:payslip.report,employee_id:0 +msgid "Employee" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +msgid "Compute Advice" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:payroll.advice:0 +msgid "Dear Sir/Madam," +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.payroll.advice,note:0 +msgid "Description" +msgstr "" + +#. module: l10n_in_hr_payroll +#: selection:payment.advice.report,month:0 +#: selection:payslip.report,month:0 +msgid "May" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:res.company:0 +msgid "Payroll" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payment.advice.report:0 +msgid "NEFT" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:paylip.details.in:0 +#: report:salary.detail.byyear:0 +msgid "Address" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +#: field:hr.payroll.advice,bank_id:0 +#: view:payment.advice.report:0 +#: field:payment.advice.report,bank_id:0 +#: report:payroll.advice:0 +#: report:salary.detail.byyear:0 +msgid "Bank" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.salary.employee.month,end_date:0 +#: field:yearly.salary.detail,date_to:0 +msgid "End Date" +msgstr "" + +#. module: l10n_in_hr_payroll +#: selection:payment.advice.report,month:0 +#: selection:payslip.report,month:0 +msgid "February" +msgstr "" + +#. module: l10n_in_hr_payroll +#: sql_constraint:res.company:0 +msgid "The company name must be unique !" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +#: field:hr.payroll.advice,name:0 +#: report:paylip.details.in:0 +#: field:payment.advice.report,name:0 +#: field:payslip.report,name:0 +#: report:salary.employee.bymonth:0 +msgid "Name" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.salary.employee.month:0 +#: field:hr.salary.employee.month,employee_ids:0 +#: view:yearly.salary.detail:0 +#: field:yearly.salary.detail,employee_ids:0 +msgid "Employees" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:paylip.details.in:0 +msgid "Bank Account" +msgstr "" + +#. module: l10n_in_hr_payroll +#: model:ir.actions.act_window,name:l10n_in_hr_payroll.action_payslip_report_all +#: model:ir.model,name:l10n_in_hr_payroll.model_payslip_report +#: model:ir.ui.menu,name:l10n_in_hr_payroll.menu_reporting_payslip +#: view:payslip.report:0 +msgid "Payslip Analysis" +msgstr "" + +#. module: l10n_in_hr_payroll +#: selection:payment.advice.report,month:0 +#: selection:payslip.report,month:0 +msgid "April" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:payroll.advice:0 +msgid "Name of the Employe" +msgstr "" + +#. module: l10n_in_hr_payroll +#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:108 +#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:207 +#, python-format +msgid "Please define bank account for the %s employee" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.salary.employee.month,start_date:0 +#: field:yearly.salary.detail,date_from:0 +msgid "Start Date" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.contract:0 +msgid "Allowance" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.contract,voluntary_provident_fund:0 +msgid "Voluntary Provident Fund (%)" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.contract,house_rent_allowance_metro_nonmetro:0 +msgid "House Rent Allowance (%)" +msgstr "" + +#. module: l10n_in_hr_payroll +#: help:hr.payroll.advice,bank_id:0 +msgid "Select the Bank from which the salary is going to be paid" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.salary.employee.month:0 +msgid "Employee Pay Head Breakup" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:salary.detail.byyear:0 +msgid "Phone No." +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:paylip.details.in:0 +msgid "Credit" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.payroll.advice.line,name:0 +#: report:payroll.advice:0 +msgid "Bank Account No." +msgstr "" + +#. module: l10n_in_hr_payroll +#: help:hr.payroll.advice,date:0 +msgid "Advice Date is used to search Payslips" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payslip.run:0 +msgid "Payslip Batches ready to be Adviced" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payslip.run:0 +msgid "Create Advice" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payment.advice.report:0 +#: field:payment.advice.report,year:0 +#: view:payslip.report:0 +#: field:payslip.report,year:0 +msgid "Year" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.payroll.advice,neft:0 +#: field:payment.advice.report,neft:0 +msgid "NEFT Transaction" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:paylip.details.in:0 +#: field:payslip.report,total:0 +#: report:salary.detail.byyear:0 +#: report:salary.employee.bymonth:0 +msgid "Total" +msgstr "" + +#. module: l10n_in_hr_payroll +#: help:hr.contract,house_rent_allowance_metro_nonmetro:0 +msgid "" +"HRA is an allowance given by the employer to the employee for taking care of " +"his rental or accommodation expenses for metro city it is 50 % and for non " +"metro 40%.HRA computed as percentage(%)" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payment.advice.report:0 +msgid "Year of Payment Advices" +msgstr "" diff --git a/addons/l10n_multilang/i18n/zh_CN.po b/addons/l10n_multilang/i18n/zh_CN.po index 40b9b024813..8dd8ef276d8 100644 --- a/addons/l10n_multilang/i18n/zh_CN.po +++ b/addons/l10n_multilang/i18n/zh_CN.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-02-08 01:06+0000\n" -"PO-Revision-Date: 2013-07-24 12:29+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2013-11-19 05:36+0000\n" +"Last-Translator: Guipo Hao \n" "Language-Team: Chinese (Simplified) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:34+0000\n" -"X-Generator: Launchpad (build 16761)\n" +"X-Launchpad-Export-Date: 2013-11-20 05:25+0000\n" +"X-Generator: Launchpad (build 16831)\n" #. module: l10n_multilang #: model:ir.model,name:l10n_multilang.model_account_fiscal_position_template @@ -107,6 +107,7 @@ msgid "" "the final object when generating them from templates. You must provide the " "language codes separated by ';'" msgstr "" +"此处表明模板翻译所用语言可以在该本地化模块安装时加载,并且由此模板生成最终目标时该语言也会被拷贝到最终目标。提交语言代码时必须用分号 ';' 分隔。'" #. module: l10n_multilang #: constraint:account.account:0 diff --git a/addons/l10n_multilang/l10n_multilang.py b/addons/l10n_multilang/l10n_multilang.py index b7564a9960a..937ba332694 100644 --- a/addons/l10n_multilang/l10n_multilang.py +++ b/addons/l10n_multilang/l10n_multilang.py @@ -33,6 +33,7 @@ class wizard_multi_charts_accounts(osv.osv_memory): """ _inherit = 'wizard.multi.charts.accounts' + # FIXME: in trunk, drop the force_write param entirely def process_translations(self, cr, uid, langs, in_obj, in_field, in_ids, out_obj, out_ids, force_write=False, context=None): """ This method copies translations values of templates into new Accounts/Taxes/Journals for languages selected @@ -45,8 +46,7 @@ class wizard_multi_charts_accounts(osv.osv_memory): :param in_ids: List of ids of source object :param out_obj: Destination object for which translation is to be copied :param out_ids: List of ids of destination object - :param force_write: boolean that depicts if we need to create a translation OR simply replace the actual value - with the translation in the uid's language by doing a write (in case it's TRUE) + :param force_write: Deprecated as of 7.0, do not use :param context: usual context information. May contain the key 'lang', which is the language of the user running the wizard, that will be used if force_write is True @@ -65,26 +65,25 @@ class wizard_multi_charts_accounts(osv.osv_memory): for j in range(len(in_ids)): in_id = in_ids[j] if value[in_id]: - if not force_write: - #copy Translation from Source to Destination object - xlat_obj.create(cr, uid, { - 'name': out_obj._name + ',' + in_field, - 'type': 'model', - 'res_id': out_ids[j], - 'lang': lang, - 'src': src[in_id], - 'value': value[in_id], + #copy Translation from Source to Destination object + xlat_obj.create(cr, uid, { + 'name': out_obj._name + ',' + in_field, + 'type': 'model', + 'res_id': out_ids[j], + 'lang': lang, + 'src': src[in_id], + 'value': value[in_id], }) - else: - #replace the value in the destination object only if it's the user lang - if context.get('lang') == lang: - self.pool[out_obj._name].write(cr, uid, out_ids[j], {in_field: value[in_id]}) else: _logger.info('Language: %s. Translation from template: there is no translation available for %s!' %(lang, src[in_id]))#out_obj._name)) return True def execute(self, cr, uid, ids, context=None): - res = super(wizard_multi_charts_accounts, self).execute(cr, uid, ids, context=context) + if not context: + context = {} + # remove the lang to get the untranslated value + ctx = dict(context, lang=None) + res = super(wizard_multi_charts_accounts, self).execute(cr, uid, ids, context=ctx) obj_multi = self.browse(cr, uid, ids[0], context=context) company_id = obj_multi.company_id.id @@ -125,7 +124,7 @@ class wizard_multi_charts_accounts(osv.osv_memory): acc_root_id = obj_acc.search(cr, uid, [('company_id', '=', company_id), ('parent_id', '=', None)])[0] in_ids = obj_acc_template.search(cr, uid, [('id', 'child_of', [acc_template_root_id])], order='id')[1:] out_ids = obj_acc.search(cr, uid, [('id', 'child_of', [acc_root_id])], order='id')[1:] - return self.process_translations(cr, uid, langs, obj_acc_template, field, in_ids, obj_acc, out_ids, force_write=True, context=context) + return self.process_translations(cr, uid, langs, obj_acc_template, field, in_ids, obj_acc, out_ids, context=context) def _process_tax_codes_translations(self, cr, uid, obj_multi, company_id, langs, field, context=None): obj_tax_code_template = self.pool.get('account.tax.code.template') @@ -134,21 +133,21 @@ class wizard_multi_charts_accounts(osv.osv_memory): tax_code_root_id = obj_tax_code.search(cr, uid, [('company_id', '=', company_id), ('parent_id', '=', None)])[0] in_ids = obj_tax_code_template.search(cr, uid, [('id', 'child_of', [tax_code_template_root_id])], order='id')[1:] out_ids = obj_tax_code.search(cr, uid, [('id', 'child_of', [tax_code_root_id])], order='id')[1:] - return self.process_translations(cr, uid, langs, obj_tax_code_template, field, in_ids, obj_tax_code, out_ids, force_write=False, context=context) + return self.process_translations(cr, uid, langs, obj_tax_code_template, field, in_ids, obj_tax_code, out_ids, context=context) def _process_taxes_translations(self, cr, uid, obj_multi, company_id, langs, field, context=None): obj_tax_template = self.pool.get('account.tax.template') obj_tax = self.pool.get('account.tax') in_ids = sorted([x.id for x in obj_multi.chart_template_id.tax_template_ids]) out_ids = obj_tax.search(cr, uid, [('company_id', '=', company_id)], order='id') - return self.process_translations(cr, uid, langs, obj_tax_template, field, in_ids, obj_tax, out_ids, force_write=False, context=context) + return self.process_translations(cr, uid, langs, obj_tax_template, field, in_ids, obj_tax, out_ids, context=context) def _process_fiscal_pos_translations(self, cr, uid, obj_multi, company_id, langs, field, context=None): obj_fiscal_position_template = self.pool.get('account.fiscal.position.template') obj_fiscal_position = self.pool.get('account.fiscal.position') in_ids = obj_fiscal_position_template.search(cr, uid, [('chart_template_id', '=', obj_multi.chart_template_id.id)], order='id') out_ids = obj_fiscal_position.search(cr, uid, [('company_id', '=', company_id)], order='id') - return self.process_translations(cr, uid, langs, obj_fiscal_position_template, field, in_ids, obj_fiscal_position, out_ids, force_write=False, context=context) + return self.process_translations(cr, uid, langs, obj_fiscal_position_template, field, in_ids, obj_fiscal_position, out_ids, context=context) # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_mx/data/account_chart.xml b/addons/l10n_mx/data/account_chart.xml index daa564fd10e..c28d8da8a44 100644 --- a/addons/l10n_mx/data/account_chart.xml +++ b/addons/l10n_mx/data/account_chart.xml @@ -3693,8 +3693,6 @@ Cuentas del plan - - diff --git a/addons/l10n_pt/account_chart_template.xml b/addons/l10n_pt/account_chart_template.xml index 49adfa393ef..08984b8d2af 100644 --- a/addons/l10n_pt/account_chart_template.xml +++ b/addons/l10n_pt/account_chart_template.xml @@ -15,7 +15,6 @@ - diff --git a/addons/l10n_us/account_chart_template.xml b/addons/l10n_us/account_chart_template.xml index 704afbad152..0adeddc5856 100644 --- a/addons/l10n_us/account_chart_template.xml +++ b/addons/l10n_us/account_chart_template.xml @@ -6,7 +6,6 @@ Basic Chart of Account - diff --git a/addons/l10n_ve/data/account_tax.xml b/addons/l10n_ve/data/account_tax.xml index 7acbda3e2af..8fb1aa4b819 100644 --- a/addons/l10n_ve/data/account_tax.xml +++ b/addons/l10n_ve/data/account_tax.xml @@ -7,8 +7,8 @@ 0.00000 percent all - - + + @@ -21,8 +21,8 @@ 0.120000 percent sale - - + + @@ -34,8 +34,8 @@ 0.080000 percent sale - - + + @@ -47,8 +47,8 @@ 0.220000 percent sale - - + + @@ -60,8 +60,8 @@ 0.120000 percent purchase - - + + @@ -73,8 +73,8 @@ 0.080000 percent purchase - - + + @@ -86,8 +86,8 @@ 0.220000 percent purchase - - + + diff --git a/addons/lunch/i18n/zh_CN.po b/addons/lunch/i18n/zh_CN.po index 3a62cca4273..b039f65c5ab 100644 --- a/addons/lunch/i18n/zh_CN.po +++ b/addons/lunch/i18n/zh_CN.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-21 17:05+0000\n" -"PO-Revision-Date: 2012-11-28 11:04+0000\n" -"Last-Translator: 盈通 ccdos \n" +"PO-Revision-Date: 2013-11-19 10:02+0000\n" +"Last-Translator: Guipo Hao \n" "Language-Team: Chinese (Simplified) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:29+0000\n" -"X-Generator: Launchpad (build 16761)\n" +"X-Launchpad-Export-Date: 2013-11-20 05:25+0000\n" +"X-Generator: Launchpad (build 16831)\n" #. module: lunch #: field:lunch.product,category_id:0 @@ -117,6 +117,15 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +" 点击创建午餐单。 \n" +"

    \n" +"

    \n" +" 午餐单由使用者定义日期和内容。\n" +" 每个午餐单内容对应一个产品,一个附加信息和一个价格。\n" +" 决定内容前,记得阅读浅红色区域显示的警告。\n" +"

    \n" +" " #. module: lunch #: view:lunch.order.line:0 @@ -151,6 +160,11 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +" 此处可以显示现金的转移。
    A 现金转移可以为费用或付款。\n" +" 当收到一个午餐单时,会自动创建费用。而付款则为经理定义的向公司的缴款。\n" +"

    \n" +" " #. module: lunch #: field:lunch.cashmove,amount:0 @@ -355,6 +369,18 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +" 此处显示按照供应商或日期分组的每个午餐单。\n" +"

    \n" +"

    \n" +" - 点击 来通知午餐单已下
    \n" +" - 点击 来通知午餐单已收
    \n" +" - 点击 red X 来通知午餐单无效\n" +"

    \n" +" " #. module: lunch #: field:lunch.alert,tuesday:0 @@ -420,6 +446,13 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +" 点击创建午餐分类。 \n" +"

    \n" +"

    \n" +" 此处可以找到每个午餐的菜品分类。\n" +"

    \n" +" " #. module: lunch #: view:lunch.order.order:0 @@ -595,6 +628,18 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +" 此处显示今天按照供应商分组的午餐单。\n" +"

    \n" +"

    \n" +" - 点击 来通知午餐单已下
    \n" +" - 点击 来通知午餐单已收
    \n" +" - 点击 来通知午餐单无效\n" +"

    \n" +" " #. module: lunch #: selection:report.lunch.order.line,month:0 @@ -657,6 +702,20 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +" 点击创建午餐提醒。 \n" +"

    \n" +"

    \n" +" 提醒用于与午餐单相关的可能事项。\n" +" 必须定义午餐提醒的频度,时间间隔以及要显示的信息。\n" +"

    \n" +"

    \n" +" 例如:
    \n" +" - 频度:每天
    \n" +" - 时间间隔:从 00h00 am 到 11h59 pm
    \n" +" -信息:\"你必须在 10h30 am 前下单。\"\n" +"

    \n" +" " #. module: lunch #: view:lunch.cancel:0 @@ -698,6 +757,13 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +" 创建一个付款。 \n" +"

    \n" +"

    \n" +" 此处显示员工的付款。付款为从员工到公司的现金转移。\n" +"

    \n" +" " #. module: lunch #: code:addons/lunch/lunch.py:186 @@ -727,6 +793,15 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +" 创建一个付款。\n" +"

    \n" +"

    \n" +" 每次现金转移都可以是费用或者付款。
    \n" +" 开具午餐单收据时自动创建费用。
    \n" +" 付款意味着员工向公司缴款。\n" +"

    \n" +" " #. module: lunch #: field:lunch.alert,alter_type:0 diff --git a/addons/mail/i18n/zh_CN.po b/addons/mail/i18n/zh_CN.po index ab95c7225bc..3aa7c826e21 100644 --- a/addons/mail/i18n/zh_CN.po +++ b/addons/mail/i18n/zh_CN.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-21 17:04+0000\n" -"PO-Revision-Date: 2012-12-23 11:23+0000\n" -"Last-Translator: 盈通 ccdos \n" +"PO-Revision-Date: 2013-11-19 10:40+0000\n" +"Last-Translator: Guipo Hao \n" "Language-Team: Chinese (Simplified) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:30+0000\n" -"X-Generator: Launchpad (build 16761)\n" +"X-Launchpad-Export-Date: 2013-11-20 05:25+0000\n" +"X-Generator: Launchpad (build 16831)\n" #. module: mail #: view:mail.followers:0 @@ -298,6 +298,7 @@ msgid "" "automatic subscription on a related document. The field is used to compute " "getattr(related_document.relation_field)." msgstr "" +"使用自动注册相关文档时用来关联模型和子模型的域。该域用来计算 getattr(related_document.relation_field)." #. module: mail #: selection:mail.mail,state:0 @@ -908,7 +909,7 @@ msgstr "别名" msgid "" "Description that will be added in the message posted for this subtype. If " "void, the name will be added instead." -msgstr "" +msgstr "将为该子模型的消息添加注解。如为空,则添加名称。" #. module: mail #: field:mail.compose.message,vote_user_ids:0 diff --git a/addons/mail/mail_alias.py b/addons/mail/mail_alias.py index 97d2842d15c..1eacb902e0f 100644 --- a/addons/mail/mail_alias.py +++ b/addons/mail/mail_alias.py @@ -64,7 +64,7 @@ class mail_alias(osv.Model): return dict.fromkeys(ids, domain or "") _columns = { - 'alias_name': fields.char('Alias', + 'alias_name': fields.char('Alias Name', help="The name of the email alias, e.g. 'jobs' if you want to catch emails for ",), 'alias_model_id': fields.many2one('ir.model', 'Aliased Model', required=True, ondelete="cascade", help="The model (OpenERP Document Kind) to which this alias " diff --git a/addons/mail/mail_message.py b/addons/mail/mail_message.py index 72ccdc83bb6..de8e4c68fda 100644 --- a/addons/mail/mail_message.py +++ b/addons/mail/mail_message.py @@ -698,8 +698,9 @@ class mail_message(osv.Model): """ model_record_ids = {} for id in msg_ids: - if msg_val[id]['model'] and msg_val[id]['res_id']: - model_record_ids.setdefault(msg_val[id]['model'], dict()).setdefault(msg_val[id]['res_id'], set()).add(msg_val[id]['res_id']) + vals = msg_val.get(id, {}) + if vals.get('model') and vals.get('res_id'): + model_record_ids.setdefault(vals['model'], set()).add(vals['res_id']) return model_record_ids if uid == SUPERUSER_ID: @@ -711,7 +712,7 @@ class mail_message(osv.Model): partner_id = self.pool['res.users'].browse(cr, SUPERUSER_ID, uid, context=None).partner_id.id # Read mail_message.ids to have their values - message_values = dict.fromkeys(ids) + message_values = dict.fromkeys(ids, {}) cr.execute('SELECT DISTINCT id, model, res_id, author_id, parent_id FROM "%s" WHERE id = ANY (%%s)' % self._table, (ids,)) for id, rmod, rid, author_id, parent_id in cr.fetchall(): message_values[id] = {'model': rmod, 'res_id': rid, 'author_id': author_id, 'parent_id': parent_id} @@ -745,10 +746,10 @@ class mail_message(osv.Model): ], context=context) notified_ids = [notification.message_id.id for notification in not_obj.browse(cr, SUPERUSER_ID, not_ids, context=context)] elif operation == 'create': - for doc_model, doc_dict in model_record_ids.items(): + for doc_model, doc_ids in model_record_ids.items(): fol_ids = fol_obj.search(cr, SUPERUSER_ID, [ ('res_model', '=', doc_model), - ('res_id', 'in', list(doc_dict.keys())), + ('res_id', 'in', list(doc_ids)), ('partner_id', '=', partner_id), ], context=context) fol_mids = [follower.res_id for follower in fol_obj.browse(cr, SUPERUSER_ID, fol_ids, context=context)] @@ -759,9 +760,9 @@ class mail_message(osv.Model): other_ids = other_ids.difference(set(notified_ids)) model_record_ids = _generate_model_record_ids(message_values, other_ids) document_related_ids = [] - for model, doc_dict in model_record_ids.items(): + for model, doc_ids in model_record_ids.items(): model_obj = self.pool[model] - mids = model_obj.exists(cr, uid, doc_dict.keys()) + mids = model_obj.exists(cr, uid, list(doc_ids)) if hasattr(model_obj, 'check_mail_message_access'): model_obj.check_mail_message_access(cr, uid, mids, operation, context=context) else: diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index 9692b94f159..dfee2a04d4d 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -23,6 +23,11 @@ import base64 import datetime import dateutil import email +try: + import simplejson as json +except ImportError: + import json +from lxml import etree import logging import pytz import time @@ -33,6 +38,7 @@ from openerp import tools from openerp import SUPERUSER_ID from openerp.addons.mail.mail_message import decode from openerp.osv import fields, osv, orm +from openerp.osv.orm import browse_record, browse_null from openerp.tools.safe_eval import safe_eval as eval from openerp.tools.translate import _ @@ -306,6 +312,28 @@ class mail_thread(osv.AbstractModel): "be inserted in kanban views."), } + def _get_user_chatter_options(self, cr, uid, context=None): + options = { + 'display_log_button': False + } + group_ids = self.pool.get('res.users').browse(cr, uid, uid, context=context).groups_id + group_user_id = self.pool.get("ir.model.data").get_object_reference(cr, uid, 'base', 'group_user')[1] + is_employee = group_user_id in [group.id for group in group_ids] + if is_employee: + options['display_log_button'] = True + return options + + def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False): + res = super(mail_thread, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar, submenu=submenu) + if view_type == 'form': + doc = etree.XML(res['arch']) + for node in doc.xpath("//field[@name='message_ids']"): + options = json.loads(node.get('options', '{}')) + options.update(self._get_user_chatter_options(cr, uid, context=context)) + node.set('options', json.dumps(options)) + res['arch'] = etree.tostring(doc) + return res + #------------------------------------------------------ # CRUD overrides for automatic subscription and logging #------------------------------------------------------ @@ -328,11 +356,11 @@ class mail_thread(osv.AbstractModel): if not context.get('mail_create_nosubscribe'): self.message_subscribe_users(cr, uid, [thread_id], [uid], context=context) # auto_subscribe: take values and defaults into account - create_values = set(values.keys()) + create_values = dict(values) for key, val in context.iteritems(): if key.startswith('default_'): - create_values.add(key[8:]) - self.message_auto_subscribe(cr, uid, [thread_id], list(create_values), context=context) + create_values[key[8:]] = val + self.message_auto_subscribe(cr, uid, [thread_id], create_values.keys(), context=context, values=create_values) # track values tracked_fields = self._get_tracked_fields(cr, uid, values.keys(), context=context) @@ -353,7 +381,7 @@ class mail_thread(osv.AbstractModel): # Perform write, update followers result = super(mail_thread, self).write(cr, uid, ids, values, context=context) - self.message_auto_subscribe(cr, uid, ids, values.keys(), context=context) + self.message_auto_subscribe(cr, uid, ids, values.keys(), context=context, values=values) # Perform the tracking if tracked_fields: @@ -577,7 +605,8 @@ class mail_thread(osv.AbstractModel): return action if msg_id and not (model and res_id): msg = self.pool.get('mail.message').browse(cr, uid, msg_id, context=context) - model, res_id = msg.model, msg.res_id + if msg.exists(): + model, res_id = msg.model, msg.res_id # if model + res_id found: try to redirect to the document or fallback on the Inbox if model and res_id: @@ -1538,75 +1567,100 @@ class mail_thread(osv.AbstractModel): user_field_lst.append(name) return user_field_lst - def message_auto_subscribe(self, cr, uid, ids, updated_fields, context=None): - """ - 1. fetch project subtype related to task (parent_id.res_model = 'project.task') - 2. for each project subtype: subscribe the follower to the task + def message_auto_subscribe(self, cr, uid, ids, updated_fields, context=None, values=None): + """ Handle auto subscription. Two methods for auto subscription exist: + + - tracked res.users relational fields, such as user_id fields. Those fields + must be relation fields toward a res.users record, and must have the + track_visilibity attribute set. + - using subtypes parent relationship: check if the current model being + modified has an header record (such as a project for tasks) whose followers + can be added as followers of the current records. Example of structure + with project and task: + + - st_project_1.parent_id = st_task_1 + - st_project_1.res_model = 'project.project' + - st_project_1.relation_field = 'project_id' + - st_task_1.model = 'project.task' + + :param list updated_fields: list of updated fields to track + :param dict values: updated values; if None, the first record will be browsed + to get the values. Added after releasing 7.0, therefore + not merged with updated_fields argumment. """ subtype_obj = self.pool.get('mail.message.subtype') follower_obj = self.pool.get('mail.followers') + new_followers = dict() - # fetch auto_follow_fields + # fetch auto_follow_fields: res.users relation fields whose changes are tracked for subscription user_field_lst = self._message_get_auto_subscribe_fields(cr, uid, updated_fields, context=context) - # fetch related record subtypes - related_subtype_ids = subtype_obj.search(cr, uid, ['|', ('res_model', '=', False), ('parent_id.res_model', '=', self._name)], context=context) - subtypes = subtype_obj.browse(cr, uid, related_subtype_ids, context=context) - default_subtypes = [subtype for subtype in subtypes if subtype.res_model == False] - related_subtypes = [subtype for subtype in subtypes if subtype.res_model != False] - relation_fields = set([subtype.relation_field for subtype in subtypes if subtype.relation_field != False]) - if (not related_subtypes or not any(relation in updated_fields for relation in relation_fields)) and not user_field_lst: + # fetch header subtypes + header_subtype_ids = subtype_obj.search(cr, uid, ['|', ('res_model', '=', False), ('parent_id.res_model', '=', self._name)], context=context) + subtypes = subtype_obj.browse(cr, uid, header_subtype_ids, context=context) + + # if no change in tracked field or no change in tracked relational field: quit + relation_fields = set([subtype.relation_field for subtype in subtypes if subtype.relation_field is not False]) + if not any(relation in updated_fields for relation in relation_fields) and not user_field_lst: return True - for record in self.browse(cr, uid, ids, context=context): - new_followers = dict() - parent_res_id = False - parent_model = False - for subtype in related_subtypes: - if not subtype.relation_field or not subtype.parent_id: - continue - if not subtype.relation_field in self._columns or not getattr(record, subtype.relation_field, False): - continue - parent_res_id = getattr(record, subtype.relation_field).id - parent_model = subtype.res_model - follower_ids = follower_obj.search(cr, SUPERUSER_ID, [ - ('res_model', '=', parent_model), - ('res_id', '=', parent_res_id), - ('subtype_ids', 'in', [subtype.id]) - ], context=context) - for follower in follower_obj.browse(cr, SUPERUSER_ID, follower_ids, context=context): - new_followers.setdefault(follower.partner_id.id, set()).add(subtype.parent_id.id) + # legacy behavior: if values is not given, compute the values by browsing + # @TDENOTE: remove me in 8.0 + if values is None: + record = self.browse(cr, uid, ids[0], context=context) + for updated_field in updated_fields: + field_value = getattr(record, updated_field) + if isinstance(field_value, browse_record): + field_value = field_value.id + elif isinstance(field_value, browse_null): + field_value = False + values[updated_field] = field_value - if parent_res_id and parent_model: - for subtype in default_subtypes: - follower_ids = follower_obj.search(cr, SUPERUSER_ID, [ - ('res_model', '=', parent_model), - ('res_id', '=', parent_res_id), - ('subtype_ids', 'in', [subtype.id]) - ], context=context) - for follower in follower_obj.browse(cr, SUPERUSER_ID, follower_ids, context=context): - new_followers.setdefault(follower.partner_id.id, set()).add(subtype.id) + # find followers of headers, update structure for new followers + headers = set() + for subtype in subtypes: + if subtype.relation_field and values.get(subtype.relation_field): + headers.add((subtype.res_model, values.get(subtype.relation_field))) + if headers: + header_domain = ['|'] * (len(headers) - 1) + for header in headers: + header_domain += ['&', ('res_model', '=', header[0]), ('res_id', '=', header[1])] + header_follower_ids = follower_obj.search( + cr, SUPERUSER_ID, + header_domain, + context=context + ) + for header_follower in follower_obj.browse(cr, SUPERUSER_ID, header_follower_ids, context=context): + for subtype in header_follower.subtype_ids: + if subtype.parent_id and subtype.parent_id.res_model == self._name: + new_followers.setdefault(header_follower.partner_id.id, set()).add(subtype.parent_id.id) + elif subtype.res_model is False: + new_followers.setdefault(header_follower.partner_id.id, set()).add(subtype.id) - # add followers coming from res.users relational fields that are tracked - user_ids = [getattr(record, name).id for name in user_field_lst if getattr(record, name)] - user_id_partner_ids = [user.partner_id.id for user in self.pool.get('res.users').browse(cr, SUPERUSER_ID, user_ids, context=context)] - for partner_id in user_id_partner_ids: - new_followers.setdefault(partner_id, None) + # add followers coming from res.users relational fields that are tracked + user_ids = [values[name] for name in user_field_lst if values.get(name)] + user_pids = [user.partner_id.id for user in self.pool.get('res.users').browse(cr, SUPERUSER_ID, user_ids, context=context)] + for partner_id in user_pids: + new_followers.setdefault(partner_id, None) - for pid, subtypes in new_followers.items(): - subtypes = list(subtypes) if subtypes is not None else None - self.message_subscribe(cr, uid, [record.id], [pid], subtypes, context=context) + for pid, subtypes in new_followers.items(): + subtypes = list(subtypes) if subtypes is not None else None + self.message_subscribe(cr, uid, ids, [pid], subtypes, context=context) - # find first email message, set it as unread for auto_subscribe fields for them to have a notification - if user_id_partner_ids: - msg_ids = self.pool.get('mail.message').search(cr, uid, [ - ('model', '=', self._name), - ('res_id', '=', record.id), - ('type', '=', 'email')], limit=1, context=context) - if not msg_ids and record.message_ids: - msg_ids = [record.message_ids[-1].id] + # find first email message, set it as unread for auto_subscribe fields for them to have a notification + if user_pids: + for record_id in ids: + message_obj = self.pool.get('mail.message') + msg_ids = message_obj.search(cr, SUPERUSER_ID, [ + ('model', '=', self._name), + ('res_id', '=', record_id), + ('type', '=', 'email')], limit=1, context=context) + if not msg_ids: + msg_ids = message_obj.search(cr, SUPERUSER_ID, [ + ('model', '=', self._name), + ('res_id', '=', record_id)], limit=1, context=context) if msg_ids: - self.pool.get('mail.notification')._notify(cr, uid, msg_ids[0], partners_to_notify=user_id_partner_ids, context=context) + self.pool.get('mail.notification')._notify(cr, uid, msg_ids[0], partners_to_notify=user_pids, context=context) return True diff --git a/addons/mail/static/src/css/mail.css b/addons/mail/static/src/css/mail.css index e4b7f9247e3..53afbed7997 100644 --- a/addons/mail/static/src/css/mail.css +++ b/addons/mail/static/src/css/mail.css @@ -68,7 +68,7 @@ border: solid 1px rgba(0,0,0,0.03); } .openerp .oe_mail .oe_msg.oe_msg_nobody{ - background: #F8F8F8; + background: #E4E4E4; } .openerp .oe_mail .oe_msg.oe_msg_notification{ background: #F8F8F8; diff --git a/addons/mail/static/src/js/mail.js b/addons/mail/static/src/js/mail.js index 226c5700248..2ee5bb88f82 100644 --- a/addons/mail/static/src/js/mail.js +++ b/addons/mail/static/src/js/mail.js @@ -1800,15 +1800,17 @@ openerp.mail = function (session) { 'read_action': 'unread', 'show_record_name': false, 'show_compact_message': 1, + 'display_log_button' : true, }, this.node.params); - if (this.node.attrs.placeholder) { this.node.params.compose_placeholder = this.node.attrs.placeholder; } if (this.node.attrs.readonly) { this.node.params.readonly = this.node.attrs.readonly; } - + if ('display_log_button' in this.options) { + this.node.params.display_log_button = this.options.display_log_button; + } this.domain = this.node.params && this.node.params.domain || []; if (!this.ParentViewManager.is_action_enabled('edit')) { diff --git a/addons/mail/static/src/xml/mail.xml b/addons/mail/static/src/xml/mail.xml index e6c84eaa5df..31539e24ab3 100644 --- a/addons/mail/static/src/xml/mail.xml +++ b/addons/mail/static/src/xml/mail.xml @@ -34,7 +34,7 @@
    @@ -51,8 +51,10 @@ @@ -155,7 +157,7 @@
    - Attach a note that will not be sent to the followers + Add an internal note that will not be sent to the followers
    @@ -293,9 +295,9 @@ logged a note - to - - nobody + + + to welcome new partner
    info@openerp.com Welcome to the OpenERP Partner Channel! - ${object.email or ''} + ${(object.email or '')|safe} Hello, you will receive your welcome pack via email shortly.
    @@ -13,7 +13,7 @@ congrats silver partner info@openerp.com Congratulations! You are now a Silver Partner! - ${object.email or ''} + ${(object.email or '')|safe} Hi, we are delighted to welcome you among our Silver Partners as of today! @@ -22,7 +22,7 @@ congrats gold partner info@openerp.com Congratulations! You are now one of our Gold Partners! - ${object.email or ''} + ${(object.email or '')|safe} Hi, we are delighted to let you know that you have entered the select circle of our Gold Partners diff --git a/addons/marketing_campaign_crm_demo/i18n/zh_CN.po b/addons/marketing_campaign_crm_demo/i18n/zh_CN.po index 79cb70b271f..bd55988976a 100644 --- a/addons/marketing_campaign_crm_demo/i18n/zh_CN.po +++ b/addons/marketing_campaign_crm_demo/i18n/zh_CN.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-21 17:05+0000\n" -"PO-Revision-Date: 2011-06-29 16:49+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2013-11-19 10:16+0000\n" +"Last-Translator: Guipo Hao \n" "Language-Team: Chinese (Simplified) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:20+0000\n" -"X-Generator: Launchpad (build 16761)\n" +"X-Launchpad-Export-Date: 2013-11-20 05:25+0000\n" +"X-Generator: Launchpad (build 16831)\n" #. module: marketing_campaign_crm_demo #: model:email.template,body_html:marketing_campaign_crm_demo.email_template_8 @@ -29,6 +29,11 @@ msgid "" "reply to this message.

    \n" "

    Regards,OpenERP Team,

    " msgstr "" +"

    Hello,

    \n" +"

    感谢您对注册参加技术培训的兴趣。

    \n" +" 如果您需要更多的信息,请重新提交。衷心感谢您的合作。

    \n" +"

    如果您需要更多的信息,请尽管回复此信息。

    \n" +"

    安好,OpenERP 团队

    " #. module: marketing_campaign_crm_demo #: model:ir.actions.report.xml,name:marketing_campaign_crm_demo.mc_crm_lead_demo_report @@ -50,6 +55,10 @@ msgid "" "reply to this message.

    \n" "

    Regards,OpenERP Team,

    " msgstr "" +"

    Hello,

    \n" +"

    感谢您对注册参加OpenERP开放日的兴趣。

    \n" +"

    如果您需要更多的信息,请尽管回复此信息。

    \n" +"

    安好,OpenERP 团队

    " #. module: marketing_campaign_crm_demo #: report:crm.lead.demo:0 @@ -72,6 +81,11 @@ msgid "" "reply to this message.

    \n" "

    Regards,OpenERP Team,

    " msgstr "" +"

    Hello,

    \n" +"

    我们可以提供非常合适您的产品。\n" +" 针对我们的银牌合作伙伴,我们在2010年6月提供技术培训。

    \n" +"

    如果您需要更多的信息,请尽管回复此信息。

    \n" +"

    安好,OpenERP 团队

    " #. module: marketing_campaign_crm_demo #: model:email.template,subject:marketing_campaign_crm_demo.email_template_1 @@ -99,6 +113,11 @@ msgid "" "reply to this message.

    \n" "

    Regards,OpenERP Team,

    " msgstr "" +"

    Hello,

    \n" +"

    我们可以提供非常合适您的产品。\n" +" 我们建议您注册参加 2010五月举行的OpenERP 开放日

    \n" +"

    如果您需要更多的信息,请尽管回复此信息。

    \n" +"

    安好,OpenERP 团队

    " #. module: marketing_campaign_crm_demo #: model:email.template,body_html:marketing_campaign_crm_demo.email_template_5 @@ -111,6 +130,11 @@ msgid "" "reply to this message.

    \n" "

    Regards,OpenERP Team,

    " msgstr "" +"

    Hello,

    \n" +"

    我们可以提供非常合适您的产品。\n" +" 针对我们的金牌合作伙伴,我们在2010年6月提供技术培训。

    \n" +"

    如果您需要更多的信息,请尽管回复此信息。

    \n" +"

    安好,OpenERP 团队

    " #. module: marketing_campaign_crm_demo #: model:email.template,subject:marketing_campaign_crm_demo.email_template_2 @@ -140,6 +164,10 @@ msgid "" " If any further information required kindly revert back.\n" "

    Regards,OpenERP Team,

    " msgstr "" +"

    Hello,

    \n" +"

    感谢您对购买OpenERP手册的兴趣。

    \n" +" 如果您需要更多的信息,请重新提交。\n" +"

    安好,OpenERP 团队

    " #. module: marketing_campaign_crm_demo #: model:email.template,body_html:marketing_campaign_crm_demo.email_template_7 @@ -151,6 +179,11 @@ msgid "" "reply to this message.

    \n" "

    Regards,OpenERP Team,

    " msgstr "" +"

    Hello,

    \n" +"

    我们可以提供非常合适您的产品。\n" +" 针对我们的银牌合作伙伴,我们将您升级为金牌合作伙伴。

    \n" +"

    如果您需要更多的信息,请尽管回复此信息。

    \n" +"

    安好,OpenERP 团队

    " #. module: marketing_campaign_crm_demo #: model:email.template,subject:marketing_campaign_crm_demo.email_template_5 @@ -167,6 +200,10 @@ msgid "" "reply to this message.

    \n" "

    Regards,OpenERP Team,

    " msgstr "" +"

    Hello,

    \n" +"

    感谢您对OpenERP的浓厚兴趣。\n" +"

    如果您需要更多的信息,请尽管回复此信息。

    \n" +"

    安好,OpenERP 团队

    " #~ msgid "" #~ "Hello, We have very good offer that might suit you.\n" diff --git a/addons/membership/i18n/zh_CN.po b/addons/membership/i18n/zh_CN.po index cb135b8471f..7a544db105d 100644 --- a/addons/membership/i18n/zh_CN.po +++ b/addons/membership/i18n/zh_CN.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-21 17:05+0000\n" -"PO-Revision-Date: 2012-02-13 08:39+0000\n" -"Last-Translator: 开阖软件 Jeff Wang \n" +"PO-Revision-Date: 2013-11-19 05:29+0000\n" +"Last-Translator: Guipo Hao \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: 2013-09-12 05:10+0000\n" -"X-Generator: Launchpad (build 16761)\n" +"X-Launchpad-Export-Date: 2013-11-20 05:24+0000\n" +"X-Generator: Launchpad (build 16831)\n" #. module: membership #: model:process.transition,name:membership.process_transition_invoicetoassociate0 @@ -103,14 +103,14 @@ msgstr "会员资格结束日期" #: field:product.product,membership_date_to:0 #: field:res.partner,membership_stop:0 msgid "Membership End Date" -msgstr "" +msgstr "会员结束日期" #. module: membership #: view:report.membership:0 #: field:report.membership,user_id:0 #: view:res.partner:0 msgid "Salesperson" -msgstr "" +msgstr "销售员" #. module: membership #: model:process.transition,name:membership.process_transition_waitingtoinvoice0 @@ -137,7 +137,7 @@ msgstr "非会员" #. module: membership #: view:product.product:0 msgid "Taxes" -msgstr "" +msgstr "税金" #. module: membership #: view:res.partner:0 @@ -149,7 +149,7 @@ msgstr "全部会员" #: code:addons/membership/membership.py:413 #, python-format msgid "Error!" -msgstr "" +msgstr "错误!" #. module: membership #: model:process.transition,name:membership.process_transition_producttomember0 @@ -247,7 +247,7 @@ msgstr "入会日期" #. module: membership #: field:res.partner,membership_cancel:0 msgid "Cancel Membership Date" -msgstr "" +msgstr "取消会员日期" #. module: membership #: model:process.node,name:membership.process_node_paidmember0 @@ -325,7 +325,7 @@ msgstr "会员产品" #. module: membership #: field:res.partner,membership_state:0 msgid "Current Membership Status" -msgstr "" +msgstr "当前会员状态" #. module: membership #: field:membership.membership_line,date:0 @@ -387,7 +387,7 @@ msgstr "业务伙伴为免费会员。" #. module: membership #: view:res.partner:0 msgid "Buy Membership" -msgstr "" +msgstr "购买会员" #. module: membership #: field:report.membership,associate_member_id:0 @@ -426,7 +426,7 @@ msgstr "分类" #. module: membership #: view:res.partner:0 msgid "Contacts" -msgstr "" +msgstr "联系人" #. module: membership #: view:report.membership:0 @@ -456,7 +456,7 @@ msgstr "客户加入会员资格的日期" #. module: membership #: field:membership.membership_line,state:0 msgid "Membership Status" -msgstr "" +msgstr "会员状态" #. module: membership #: view:res.partner:0 @@ -466,7 +466,7 @@ msgstr "客户" #. module: membership #: view:membership.invoice:0 msgid "or" -msgstr "" +msgstr "或者" #. module: membership #: selection:report.membership,month:0 @@ -483,7 +483,7 @@ msgstr "会员产品" #. module: membership #: sql_constraint:product.product:0 msgid "Error ! Ending Date cannot be set before Beginning Date." -msgstr "" +msgstr "错误!失效日期不能早于开始日期" #. module: membership #: selection:report.membership,month:0 @@ -493,7 +493,7 @@ msgstr "6月" #. module: membership #: help:product.product,membership:0 msgid "Check if the product is eligible for membership." -msgstr "" +msgstr "检查产品是否适于成员。" #. module: membership #: selection:membership.membership_line,state:0 @@ -557,6 +557,13 @@ msgid "" "created.\n" " -Paying member: A member who has paid the membership fee." msgstr "" +"该指示显示成员状态:\n" +" -非成员:伙伴未申请任何成员。\n" +" -失效成员:已经取消资格的成员。\n" +" -过期成员:成员身份过期的成员。\n" +" -待批准成员:已经申请成员资格并且将生成发票的成员。\n" +" -待付费成员:已经生成付费申请的成员。\n" +" -付费成员:已经付成员费的成员。" #. module: membership #: selection:report.membership,month:0 @@ -624,6 +631,13 @@ msgid "" " -Paid Member: A member who has paid the membership " "amount." msgstr "" +"该指示显示成员状态:\n" +" -非成员:伙伴未申请任何成员。\n" +" -失效成员:已经取消资格的成员。\n" +" -过期成员:成员身份过期的成员。\n" +" -待批准成员:已经申请成员资格并且将生成发票的成员。\n" +" -待付费成员:已经生成付费申请的成员。\n" +" -付费成员:已经付成员费的成员。" #. module: membership #: model:process.transition,note:membership.process_transition_waitingtoinvoice0 @@ -669,7 +683,7 @@ msgstr "会员价格" #. module: membership #: view:product.product:0 msgid "Membership Duration" -msgstr "" +msgstr "成员期间" #. module: membership #: model:ir.model,name:membership.model_product_product @@ -685,17 +699,17 @@ msgstr "5月" #: field:product.product,membership_date_from:0 #: field:res.partner,membership_start:0 msgid "Membership Start Date" -msgstr "" +msgstr "成员开始日期" #. module: membership #: help:res.partner,free_member:0 msgid "Select if you want to give free membership." -msgstr "" +msgstr "提供免费成员资格" #. module: membership #: field:res.partner,membership_amount:0 msgid "Membership Amount" -msgstr "" +msgstr "成员费用" #. module: membership #: field:report.membership,date_to:0 @@ -775,7 +789,7 @@ msgstr "年" #. module: membership #: view:product.product:0 msgid "Accounting" -msgstr "" +msgstr "记账" #. module: membership #: view:report.membership:0 diff --git a/addons/mrp/mrp.py b/addons/mrp/mrp.py index 1d0a0c98d48..4ef2a6a4f4c 100644 --- a/addons/mrp/mrp.py +++ b/addons/mrp/mrp.py @@ -965,7 +965,10 @@ class mrp_production(osv.osv): partner_id = routing_loc.partner_id and routing_loc.partner_id.id or False # Take next Sequence number of shipment base on type - pick_name = ir_sequence.get(cr, uid, 'stock.picking.' + pick_type) + if pick_type!='internal': + pick_name = ir_sequence.get(cr, uid, 'stock.picking.' + pick_type) + else: + pick_name = ir_sequence.get(cr, uid, 'stock.picking') picking_id = stock_picking.create(cr, uid, { 'name': pick_name, diff --git a/addons/mrp_byproduct/mrp_byproduct.py b/addons/mrp_byproduct/mrp_byproduct.py index 2425c2d8fea..38058abf071 100644 --- a/addons/mrp_byproduct/mrp_byproduct.py +++ b/addons/mrp_byproduct/mrp_byproduct.py @@ -80,11 +80,11 @@ class mrp_production(osv.osv): _inherit= 'mrp.production' - def action_confirm(self, cr, uid, ids): + def action_confirm(self, cr, uid, ids, context=None): """ Confirms production order and calculates quantity based on subproduct_type. @return: Newly generated picking Id. """ - picking_id = super(mrp_production,self).action_confirm(cr, uid, ids) + picking_id = super(mrp_production,self).action_confirm(cr, uid, ids, context=context) product_uom_obj = self.pool.get('product.uom') for production in self.browse(cr, uid, ids): source = production.product_id.property_stock_production.id diff --git a/addons/mrp_operations/i18n/hu.po b/addons/mrp_operations/i18n/hu.po index 2f4740806f3..10be9fe79b5 100644 --- a/addons/mrp_operations/i18n/hu.po +++ b/addons/mrp_operations/i18n/hu.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-21 17:05+0000\n" -"PO-Revision-Date: 2013-01-25 15:52+0000\n" +"PO-Revision-Date: 2013-11-24 14:42+0000\n" "Last-Translator: krnkris \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: 2013-09-12 05:57+0000\n" -"X-Generator: Launchpad (build 16761)\n" +"X-Launchpad-Export-Date: 2013-11-25 05:32+0000\n" +"X-Generator: Launchpad (build 16831)\n" #. module: mrp_operations #: model:ir.actions.act_window,name:mrp_operations.mrp_production_wc_action_form @@ -386,7 +386,7 @@ msgstr "Kezdő dátum" #. module: mrp_operations #: selection:mrp.production.workcenter.line,production_state:0 msgid "Waiting Goods" -msgstr "Várakozás az árura" +msgstr "Várakozás árura" #. module: mrp_operations #: field:mrp.production.workcenter.line,production_state:0 diff --git a/addons/mrp_repair/i18n/zh_CN.po b/addons/mrp_repair/i18n/zh_CN.po index 87620c835eb..a9696bd6e54 100644 --- a/addons/mrp_repair/i18n/zh_CN.po +++ b/addons/mrp_repair/i18n/zh_CN.po @@ -7,19 +7,19 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-21 17:05+0000\n" -"PO-Revision-Date: 2012-10-25 16:34+0000\n" -"Last-Translator: 盈通 ccdos \n" +"PO-Revision-Date: 2013-11-19 04:59+0000\n" +"Last-Translator: Guipo Hao \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: 2013-09-12 06:05+0000\n" -"X-Generator: Launchpad (build 16761)\n" +"X-Launchpad-Export-Date: 2013-11-20 05:25+0000\n" +"X-Generator: Launchpad (build 16831)\n" #. module: mrp_repair #: field:mrp.repair.line,move_id:0 msgid "Inventory Move" -msgstr "库存调拨" +msgstr "存货调拨" #. module: mrp_repair #: view:mrp.repair:0 @@ -29,7 +29,7 @@ msgstr "分组..." #. module: mrp_repair #: view:mrp.repair:0 msgid "Recreate Invoice" -msgstr "再创建发票" +msgstr "重新生成发票" #. module: mrp_repair #: code:addons/mrp_repair/mrp_repair.py:371 @@ -41,18 +41,18 @@ msgstr "必须在维修单上输入业务伙伴的发票地址" #: model:ir.actions.act_window,name:mrp_repair.action_cancel_repair #: view:mrp.repair.cancel:0 msgid "Cancel Repair Order" -msgstr "作废维修单" +msgstr "取消维修单" #. module: mrp_repair #: field:mrp.repair.fee,to_invoice:0 #: field:mrp.repair.line,to_invoice:0 msgid "To Invoice" -msgstr "开票" +msgstr "开发票" #. module: mrp_repair #: view:mrp.repair:0 msgid "Unit of Measure" -msgstr "" +msgstr "计量单位" #. module: mrp_repair #: report:repair.order:0 @@ -67,7 +67,7 @@ msgstr "业务伙伴发票地址组" #. module: mrp_repair #: field:mrp.repair,message_unread:0 msgid "Unread Messages" -msgstr "" +msgstr "未读消息" #. module: mrp_repair #: code:addons/mrp_repair/mrp_repair.py:435 @@ -94,7 +94,7 @@ msgstr "发票异常" #. module: mrp_repair #: view:mrp.repair:0 msgid "Serial Number" -msgstr "" +msgstr "序列号:" #. module: mrp_repair #: field:mrp.repair,address_id:0 @@ -120,7 +120,7 @@ msgstr "发票地址:" #. module: mrp_repair #: help:mrp.repair,partner_id:0 msgid "Choose partner for whom the order will be invoiced and delivered." -msgstr "" +msgstr "为将要开票或者发运的订单选择业务伙伴" #. module: mrp_repair #: view:mrp.repair:0 @@ -135,7 +135,7 @@ msgstr "备注" #. module: mrp_repair #: field:mrp.repair,message_ids:0 msgid "Messages" -msgstr "" +msgstr "信息" #. module: mrp_repair #: field:mrp.repair,amount_tax:0 @@ -150,7 +150,7 @@ msgstr "税" #: code:addons/mrp_repair/mrp_repair.py:442 #, python-format msgid "Error!" -msgstr "" +msgstr "错误!" #. module: mrp_repair #: report:repair.order:0 @@ -161,12 +161,12 @@ msgstr "净合计:" #: selection:mrp.repair,state:0 #: selection:mrp.repair.line,state:0 msgid "Cancelled" -msgstr "" +msgstr "取消" #. module: mrp_repair #: help:mrp.repair,message_unread:0 msgid "If checked new messages require your attention." -msgstr "" +msgstr "如果要求你关注新消息,勾选此项" #. module: mrp_repair #: view:mrp.repair:0 @@ -193,6 +193,12 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +" 创建维修单 \n" +"

    \n" +" 在维修单中,你能详细描述零部件的移除, 替换并且记录在不同操作上面花费的时间。\n" +"

    \n" +" " #. module: mrp_repair #: help:mrp.repair.line,state:0 @@ -205,6 +211,10 @@ msgid "" " \n" "* The 'Cancelled' status is set automatically when user cancel repair order." msgstr "" +" * 草拟维修单时,维修单自动设为“草稿”状态。 \n" +"* 确认维修单时,维修单自动设为“确认”状态。 \n" +"* 维修单完成时,维修单自动设为“完成”状态。 \n" +"* 维修单取消时,维修单自动设为“取消”状态。" #. module: mrp_repair #: field:mrp.repair,move_id:0 @@ -232,7 +242,7 @@ msgstr "报价单/订单" msgid "" "Holds the Chatter summary (number of messages, ...). This summary is " "directly in html format in order to be inserted in kanban views." -msgstr "" +msgstr "保持沟通者汇总(信息数量等...)。为了能在Kanban中浏览,该汇总直接保存为Html格式。" #. module: mrp_repair #: view:mrp.repair:0 @@ -251,7 +261,7 @@ msgstr "警告!" #. module: mrp_repair #: view:mrp.repair:0 msgid "(update)" -msgstr "" +msgstr "(更新)" #. module: mrp_repair #: view:mrp.repair:0 @@ -286,6 +296,12 @@ msgid "" "* The 'Done' status is set when repairing is completed. \n" "* The 'Cancelled' status is used when user cancel repair order." msgstr "" +" * 用户创建或未确认维修单时,设为“草稿”状态。 \n" +"* 用户确认维修单时,设为“确认”状态。 \n" +"* 用户开始维修单时,设为“准备维修”状态。用户只能在确认维修单后开始维修。 \n" +"* 维修完成前或完成后,“待发票”状态由来生成发票。 \n" +"* 维修单完成时,设为“完成”状态。 \n" +"* 维修单取消时,设为“取消”状态。" #. module: mrp_repair #: view:mrp.repair:0 @@ -296,7 +312,7 @@ msgstr "修理单" #: code:addons/mrp_repair/mrp_repair.py:336 #, python-format msgid "Serial number is required for operation line with product '%s'" -msgstr "" +msgstr "带产品'%s'的操作行需要序列号" #. module: mrp_repair #: report:repair.order:0 @@ -313,7 +329,7 @@ msgstr "批号" #. module: mrp_repair #: field:mrp.repair,message_follower_ids:0 msgid "Followers" -msgstr "" +msgstr "关注者" #. module: mrp_repair #: field:mrp.repair,fees_lines:0 @@ -426,7 +442,7 @@ msgstr "是" #: view:mrp.repair.cancel:0 #: view:mrp.repair.make_invoice:0 msgid "or" -msgstr "" +msgstr "或者" #. module: mrp_repair #: view:mrp.repair:0 @@ -440,7 +456,7 @@ msgstr "已开票" #: field:mrp.repair.fee,product_uom:0 #: field:mrp.repair.line,product_uom:0 msgid "Product Unit of Measure" -msgstr "" +msgstr "产品计量单位" #. module: mrp_repair #: view:mrp.repair.make_invoice:0 @@ -450,7 +466,7 @@ msgstr "创建发票" #. module: mrp_repair #: report:repair.order:0 msgid "(Remove)" -msgstr "(拆除)" +msgstr "(移除)" #. module: mrp_repair #: selection:mrp.repair.line,type:0 @@ -465,7 +481,7 @@ msgstr "草稿" #. module: mrp_repair #: field:mrp.repair,name:0 msgid "Repair Reference" -msgstr "维修单编号" +msgstr "维修索引" #. module: mrp_repair #: model:ir.model,name:mrp_repair.model_mrp_repair @@ -494,17 +510,17 @@ msgid "" "Selecting 'Before Repair' or 'After Repair' will allow you to generate " "invoice before or after the repair is done respectively. 'No invoice' means " "you don't want to generate invoice for this repair order." -msgstr "" +msgstr "选择“维修前”或“维修后”选项来确定在维修前后生产发票。“无发票”则代表此维修单无需生成发票。" #. module: mrp_repair #: field:mrp.repair,guarantee_limit:0 msgid "Warranty Expiration" -msgstr "" +msgstr "保修期已过" #. module: mrp_repair #: help:mrp.repair,pricelist_id:0 msgid "Pricelist of the selected partner." -msgstr "" +msgstr "所选伙伴的价格列表" #. module: mrp_repair #: report:repair.order:0 @@ -531,12 +547,12 @@ msgstr "修理后" #: code:addons/mrp_repair/wizard/cancel_repair.py:41 #, python-format msgid "Active ID not Found" -msgstr "" +msgstr "未发现有效 ID" #. module: mrp_repair #: field:mrp.repair,message_is_follower:0 msgid "Is a Follower" -msgstr "" +msgstr "是一个关注者" #. module: mrp_repair #: view:mrp.repair:0 @@ -566,7 +582,7 @@ msgstr "修理报价单" #. module: mrp_repair #: field:mrp.repair,message_summary:0 msgid "Summary" -msgstr "" +msgstr "汇总" #. module: mrp_repair #: view:mrp.repair:0 @@ -596,7 +612,7 @@ msgstr "数量" #. module: mrp_repair #: view:mrp.repair:0 msgid "Product Information" -msgstr "" +msgstr "产品信息" #. module: mrp_repair #: model:ir.actions.act_window,name:mrp_repair.act_mrp_repair_invoice @@ -659,7 +675,7 @@ msgid "" "Check this box if you want to manage the delivery once the product is " "repaired and create a picking with selected product. Note that you can " "select the locations in the Info tab, if you have the extended view." -msgstr "" +msgstr "此选项意味着在产品维修完成后生成发货单。请在扩展视图下的信息栏选择库位。" #. module: mrp_repair #: help:mrp.repair,guarantee_limit:0 @@ -669,6 +685,7 @@ msgid "" "expiration limit, each operation and fee you will add will be set as 'not to " "invoiced' by default. Note that you can change manually afterwards." msgstr "" +"保修期限计算方法:上次移库时间 + 该产品保修期。若当前日期早于保修期限,所有维修操作及费用将被默认设定为“不开票”。注意该条款日后可以手工调整。" #. module: mrp_repair #: view:mrp.repair.make_invoice:0 @@ -678,7 +695,7 @@ msgstr "创建发票" #. module: mrp_repair #: view:mrp.repair:0 msgid "Reair Orders" -msgstr "" +msgstr "维修单" #. module: mrp_repair #: field:mrp.repair.fee,name:0 @@ -712,7 +729,7 @@ msgstr "价格" #. module: mrp_repair #: field:mrp.repair,deliver_bool:0 msgid "Deliver" -msgstr "送货" +msgstr "发货" #. module: mrp_repair #: field:mrp.repair,internal_notes:0 @@ -733,7 +750,7 @@ msgstr "你真的要生成发票吗 ?" #: code:addons/mrp_repair/mrp_repair.py:349 #, python-format msgid "Repair order is already invoiced." -msgstr "" +msgstr "维修单已开票。" #. module: mrp_repair #: field:mrp.repair,picking_id:0 @@ -775,12 +792,12 @@ msgstr "发票地址" #. module: mrp_repair #: help:mrp.repair,message_ids:0 msgid "Messages and communication history" -msgstr "" +msgstr "消息和通信历史记录" #. module: mrp_repair #: view:mrp.repair:0 msgid "Invoicing" -msgstr "发票" +msgstr "开发票" #. module: mrp_repair #: field:mrp.repair.line,location_id:0 @@ -796,7 +813,7 @@ msgstr "取消修理" #. module: mrp_repair #: selection:mrp.repair,invoice_method:0 msgid "No Invoice" -msgstr "没发票" +msgstr "不开票" #. module: mrp_repair #: field:mrp.repair,amount_total:0 diff --git a/addons/pad/pad.py b/addons/pad/pad.py index 4cd9e91b76e..474321edb1d 100644 --- a/addons/pad/pad.py +++ b/addons/pad/pad.py @@ -39,7 +39,11 @@ class pad_common(osv.osv_memory): #if create with content if "field_name" in context and "model" in context and "object_id" in context: myPad = EtherpadLiteClient( pad["key"], pad["server"]+'/api') - myPad.createPad(path) + try: + myPad.createPad(path) + except urllib2.URLError: + raise osv.except_osv(_("Error"), _("Pad creation failed, \ + either there is a problem with your pad server URL or with your connection.")) #get attr on the field model model = self.pool[context["model"]] diff --git a/addons/pad/pad_demo.xml b/addons/pad/pad_demo.xml index 99c4b38481c..5fd76f65e21 100644 --- a/addons/pad/pad_demo.xml +++ b/addons/pad/pad_demo.xml @@ -2,7 +2,7 @@ - pad.openerp.com + https://pad.openerp.com diff --git a/addons/point_of_sale/point_of_sale.py b/addons/point_of_sale/point_of_sale.py index d32b8e91d3a..a7bc2f5f59e 100644 --- a/addons/point_of_sale/point_of_sale.py +++ b/addons/point_of_sale/point_of_sale.py @@ -694,7 +694,7 @@ class pos_order(osv.osv): def create_picking(self, cr, uid, ids, context=None): """Create a picking for each order and validate it.""" - picking_obj = self.pool.get('stock.picking') + picking_obj = self.pool.get('stock.picking.out') partner_obj = self.pool.get('res.partner') move_obj = self.pool.get('stock.move') diff --git a/addons/point_of_sale/point_of_sale_view.xml b/addons/point_of_sale/point_of_sale_view.xml index 7202b57a1eb..0f26a7c85b9 100644 --- a/addons/point_of_sale/point_of_sale_view.xml +++ b/addons/point_of_sale/point_of_sale_view.xml @@ -56,7 +56,7 @@ diff --git a/addons/point_of_sale/static/src/css/pos.css b/addons/point_of_sale/static/src/css/pos.css index da8325cd046..738d3fd9f4f 100644 --- a/addons/point_of_sale/static/src/css/pos.css +++ b/addons/point_of_sale/static/src/css/pos.css @@ -97,6 +97,9 @@ .point-of-sale .pos-right-align { text-align: right; } +.point-of-sale .pos-center-align { + text-align: center; +} .point-of-sale .pos-right-align input { text-align: right; border: 1px solid #cecbcb; @@ -303,12 +306,12 @@ text-align: center; vertical-align: top; width: 205px; - max-height: 232px; + max-height: 350px; overflow-y: auto; overflow-x: hidden; } .point-of-sale #paypad button { - height: 50px; + height: 39px; display: block; width: 100%; margin: 0px -6px 4px -2px; @@ -815,6 +818,9 @@ } @media print { + .point-of-sale{ + background: white !important; + } .point-of-sale #topheader, .point-of-sale #leftpane { display: none !important; } @@ -834,9 +840,6 @@ .pos-actionbar { display: none !important; } - .pos-sale-ticket { - margin: 0; - } .debug-widget{ display: none !important; } @@ -846,9 +849,12 @@ background: transparent !important; } .point-of-sale .pos-sale-ticket{ + margin: 0; margin-left: auto !important; margin-right: auto !important; - border: solid 1px black !important; + border: none !important; + font-size: 13px !important; + width: 266px !important; } } diff --git a/addons/point_of_sale/static/src/img/open-cashbox.png b/addons/point_of_sale/static/src/img/open-cashbox.png new file mode 100644 index 00000000000..1e07b0a9282 Binary files /dev/null and b/addons/point_of_sale/static/src/img/open-cashbox.png differ diff --git a/addons/point_of_sale/static/src/img/open-cashbox.png.moved b/addons/point_of_sale/static/src/img/open-cashbox.png.moved new file mode 100644 index 00000000000..1e07b0a9282 Binary files /dev/null and b/addons/point_of_sale/static/src/img/open-cashbox.png.moved differ diff --git a/addons/point_of_sale/static/src/js/screens.js b/addons/point_of_sale/static/src/js/screens.js index 77a542ff93c..01ccd538d8c 100644 --- a/addons/point_of_sale/static/src/js/screens.js +++ b/addons/point_of_sale/static/src/js/screens.js @@ -873,8 +873,8 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa this._super(); var self = this; - if(this.pos.iface_cashdrawer){ - this.pos.proxy.open_cashbox(); + if( this.pos.iface_cashdrawer && this.pos.get('selectedOrder').get('paymentLines').find( function(pl){ return pl.cashregister.get('journal').type === 'cash'; })){ + this.pos.proxy.open_cashbox(); } this.set_numpad_state(this.pos_widget.numpad.state); @@ -912,6 +912,17 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa }); } + if( this.pos.iface_cashdrawer ){ + this.add_action_button({ + label: _t('Cash'), + name: 'cashbox', + icon: '/point_of_sale/static/src/img/open-cashbox.png', + click: function(){ + self.pos.proxy.open_cashbox(); + }, + }); + } + this.updatePaymentSummary(); this.line_refocus(); }, diff --git a/addons/point_of_sale/static/src/js/widgets.js b/addons/point_of_sale/static/src/js/widgets.js index 447094e0c4e..866e3c7ba72 100644 --- a/addons/point_of_sale/static/src/js/widgets.js +++ b/addons/point_of_sale/static/src/js/widgets.js @@ -560,26 +560,32 @@ function openerp_pos_widgets(instance, module){ //module is instance.point_of_sa var products = this.pos.db.get_product_by_category(this.category.id); self.pos.get('products').reset(products); + + var searchtimeout = null; // filter the products according to the search string this.$('.searchbox input').keyup(function(event){ - console.log('event',event); - query = $(this).val().toLowerCase(); - if(query){ - if(event.which === 13){ - if( self.pos.get('products').size() === 1 ){ - self.pos.get('selectedOrder').addProduct(self.pos.get('products').at(0)); - self.clear_search(); + clearTimeout(searchtimeout); + + var query = $(this).val().toLowerCase(); + + searchtimeout = setTimeout(function(){ + if(query){ + if(event.which === 13){ + if( self.pos.get('products').size() === 1 ){ + self.pos.get('selectedOrder').addProduct(self.pos.get('products').at(0)); + self.clear_search(); + } + }else{ + var products = self.pos.db.search_product_in_category(self.category.id, query); + self.pos.get('products').reset(products); + self.$('.search-clear').fadeIn(); } }else{ - var products = self.pos.db.search_product_in_category(self.category.id, query); + var products = self.pos.db.get_product_by_category(self.category.id); self.pos.get('products').reset(products); - self.$('.search-clear').fadeIn(); + self.$('.search-clear').fadeOut(); } - }else{ - var products = self.pos.db.get_product_by_category(self.category.id); - self.pos.get('products').reset(products); - self.$('.search-clear').fadeOut(); - } + },200); }); //reset the search when clicking on reset diff --git a/addons/point_of_sale/static/src/xml/pos.xml b/addons/point_of_sale/static/src/xml/pos.xml index d5f57e099f7..742c823702e 100644 --- a/addons/point_of_sale/static/src/xml/pos.xml +++ b/addons/point_of_sale/static/src/xml/pos.xml @@ -585,7 +585,7 @@
    -


    diff --git a/addons/portal/mail_message.py b/addons/portal/mail_message.py index 9699b3a9ef6..4429df3be8b 100644 --- a/addons/portal/mail_message.py +++ b/addons/portal/mail_message.py @@ -19,6 +19,7 @@ # ############################################################################## +from openerp import SUPERUSER_ID from openerp.osv import osv, orm from openerp.tools.translate import _ @@ -32,6 +33,9 @@ class mail_message(osv.Model): """ Override that adds specific access rights of mail.message, to remove all internal notes if uid is a non-employee """ + if uid == SUPERUSER_ID: + return super(mail_message, self)._search(cr, uid, args, offset=offset, limit=limit, order=order, + context=context, count=False, access_rights_uid=access_rights_uid) group_ids = self.pool.get('res.users').browse(cr, uid, uid, context=context).groups_id group_user_id = self.pool.get("ir.model.data").get_object_reference(cr, uid, 'base', 'group_user')[1] if group_user_id not in [group.id for group in group_ids]: @@ -45,6 +49,8 @@ class mail_message(osv.Model): - read: - raise if the type is comment and subtype NULL (internal note) """ + if uid == SUPERUSER_ID: + return super(mail_message, self).check_access_rule(cr, uid, ids=ids, operation=operation, context=context) group_ids = self.pool.get('res.users').browse(cr, uid, uid, context=context).groups_id group_user_id = self.pool.get("ir.model.data").get_object_reference(cr, uid, 'base', 'group_user')[1] if group_user_id not in [group.id for group in group_ids]: diff --git a/addons/portal/tests/test_portal.py b/addons/portal/tests/test_portal.py index f5eeba0aa62..12c64d7588c 100644 --- a/addons/portal/tests/test_portal.py +++ b/addons/portal/tests/test_portal.py @@ -73,6 +73,9 @@ class test_portal(TestMail): for message in chell_pigs.message_ids: trigger_read = message.subject for partner in chell_pigs.message_follower_ids: + if partner.id == self.partner_chell_id: + # Chell can read her own partner record + continue with self.assertRaises(except_orm): trigger_read = partner.name diff --git a/addons/web_shortcuts/i18n/bs.po b/addons/portal_anonymous/i18n/pl.po similarity index 53% rename from addons/web_shortcuts/i18n/bs.po rename to addons/portal_anonymous/i18n/pl.po index 2e01e0929ac..f89fcde6498 100644 --- a/addons/web_shortcuts/i18n/bs.po +++ b/addons/portal_anonymous/i18n/pl.po @@ -1,4 +1,4 @@ -# Bosnian translation for openobject-addons +# Polish translation for openobject-addons # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the openobject-addons package. # FIRST AUTHOR , 2013. @@ -7,19 +7,19 @@ msgid "" msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-21 17:06+0000\n" -"PO-Revision-Date: 2013-10-26 01:19+0000\n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-11-17 17:40+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Bosnian \n" +"Language-Team: Polish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-10-27 05:50+0000\n" -"X-Generator: Launchpad (build 16810)\n" +"X-Launchpad-Export-Date: 2013-11-18 05:22+0000\n" +"X-Generator: Launchpad (build 16831)\n" -#. module: web_shortcuts +#. module: portal_anonymous #. openerp-web -#: code:addons/web_shortcuts/static/src/xml/web_shortcuts.xml:21 +#: code:addons/portal_anonymous/static/src/xml/portal_anonymous.xml:8 #, python-format -msgid "Add / Remove Shortcut..." -msgstr "Dodaj / Ukloni pračicu..." +msgid "Login" +msgstr "Logowanie" diff --git a/addons/portal_claim/security/portal_security.xml b/addons/portal_claim/security/portal_security.xml index af5261c408b..1f96da4ef9e 100644 --- a/addons/portal_claim/security/portal_security.xml +++ b/addons/portal_claim/security/portal_security.xml @@ -1,17 +1,15 @@ - - + Portal Personal Claims - [('message_follower_ids','in', [user.partner_id.id])] + ['|', ('message_follower_ids','in', [user.partner_id.id]), ('partner_id','=', user.partner_id.id)] - - + + - + - diff --git a/addons/portal_hr_employees/hr_employee.py b/addons/portal_hr_employees/hr_employee.py index 52d01170a2a..b6d3ed1a7b5 100644 --- a/addons/portal_hr_employees/hr_employee.py +++ b/addons/portal_hr_employees/hr_employee.py @@ -24,7 +24,6 @@ from openerp.osv import fields, osv class crm_contact_us(osv.TransientModel): """ Add employees list to the portal's contact page """ _inherit = 'portal_crm.crm_contact_us' - _description = 'Contact form for the portal' _columns = { 'employee_ids' : fields.many2many('hr.employee', string='Employees', readonly=True), } @@ -40,7 +39,6 @@ class crm_contact_us(osv.TransientModel): } class hr_employee(osv.osv): - _description = 'Portal employee' _inherit = 'hr.employee' """ diff --git a/addons/portal_project/i18n/zh_CN.po b/addons/portal_project/i18n/zh_CN.po index c4ed02d9668..1f8c469ec0e 100644 --- a/addons/portal_project/i18n/zh_CN.po +++ b/addons/portal_project/i18n/zh_CN.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-21 17:05+0000\n" -"PO-Revision-Date: 2012-12-14 13:32+0000\n" -"Last-Translator: sum1201 \n" +"PO-Revision-Date: 2013-11-19 10:17+0000\n" +"Last-Translator: Guipo Hao \n" "Language-Team: Chinese (Simplified) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:39+0000\n" -"X-Generator: Launchpad (build 16761)\n" +"X-Launchpad-Export-Date: 2013-11-20 05:25+0000\n" +"X-Generator: Launchpad (build 16831)\n" #. module: portal_project #: model:ir.actions.act_window,help:portal_project.open_view_project @@ -25,6 +25,10 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +" 点击开始一个新项目。\n" +"

    \n" +" " #. module: portal_project #: model:ir.actions.act_window,name:portal_project.open_view_project diff --git a/addons/portal_project_issue/i18n/zh_CN.po b/addons/portal_project_issue/i18n/zh_CN.po index 98cada73b92..a0518fdb3f7 100644 --- a/addons/portal_project_issue/i18n/zh_CN.po +++ b/addons/portal_project_issue/i18n/zh_CN.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-21 17:06+0000\n" -"PO-Revision-Date: 2012-11-28 14:20+0000\n" -"Last-Translator: 盈通 ccdos \n" +"PO-Revision-Date: 2013-11-19 10:20+0000\n" +"Last-Translator: Guipo Hao \n" "Language-Team: Chinese (Simplified) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:39+0000\n" -"X-Generator: Launchpad (build 16761)\n" +"X-Launchpad-Export-Date: 2013-11-20 05:25+0000\n" +"X-Generator: Launchpad (build 16831)\n" #. module: portal_project_issue #: view:project.issue:0 @@ -33,6 +33,12 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +" 点击创建一个事件。\n" +"

    \n" +" 您可以在此菜单追踪您的事件以及需要采取的行动。\n" +"

    \n" +" " #. module: portal_project_issue #: model:ir.actions.act_window,name:portal_project_issue.project_issue_categ_act0 diff --git a/addons/portal_sale/portal_sale_data.xml b/addons/portal_sale/portal_sale_data.xml index 2cd7ca8b501..750ae12995f 100644 --- a/addons/portal_sale/portal_sale_data.xml +++ b/addons/portal_sale/portal_sale_data.xml @@ -6,7 +6,7 @@ Sales Order - Send by Email (Portal) - ${object.user_id.email or ''} + ${(object.user_id.email or '')|safe} ${object.company_id.name} ${object.state in ('draft', 'sent') and 'Quotation' or 'Order'} (Ref ${object.name or 'n/a' }) ${object.partner_invoice_id.id} @@ -95,7 +95,7 @@ Invoice - Send by Email (Portal) - ${object.user_id.email or object.company_id.email or 'noreply@localhost'} + ${(object.user_id.email or object.company_id.email or 'noreply@localhost')|safe} ${object.company_id.name} Invoice (Ref ${object.number or 'n/a' }) ${object.partner_id.id} diff --git a/addons/procurement/procurement.py b/addons/procurement/procurement.py index 032952aa511..c2878df69cb 100644 --- a/addons/procurement/procurement.py +++ b/addons/procurement/procurement.py @@ -181,10 +181,6 @@ class procurement_order(osv.osv): """ return all(procurement.move_id.state == 'cancel' for procurement in self.browse(cr, uid, ids, context=context)) - #This Function is create to avoid a server side Error Like 'ERROR:tests.mrp:name 'check_move' is not defined' - def check_move(self, cr, uid, ids, context=None): - pass - def check_move_done(self, cr, uid, ids, context=None): """ Checks if move is done or not. @return: True or False. @@ -297,6 +293,12 @@ class procurement_order(osv.osv): """ return False + def check_move(self, cr, uid, ids, context=None): + """ Check whether the given procurement can be satisfied by an internal move, + typically a pulled flow. By default, it's False. Overwritten by the `stock_location` module. + """ + return False + def check_conditions_confirm2wait(self, cr, uid, ids): """ condition on the transition to go from 'confirm' activity to 'confirm_wait' activity """ return not self.test_cancel(cr, uid, ids) diff --git a/addons/procurement/procurement_data.xml b/addons/procurement/procurement_data.xml index 52503e76c44..d8bd6c37dc3 100644 --- a/addons/procurement/procurement_data.xml +++ b/addons/procurement/procurement_data.xml @@ -14,6 +14,18 @@ + + Run fast mrp scheduler (without exception) + + + 4 + hours + -1 + + + + + Stock orderpoint diff --git a/addons/procurement/procurement_workflow.xml b/addons/procurement/procurement_workflow.xml index 76b54370ef2..d4068a6eada 100644 --- a/addons/procurement/procurement_workflow.xml +++ b/addons/procurement/procurement_workflow.xml @@ -147,13 +147,15 @@ - not check_produce() and not check_buy() + not check_produce() and not check_buy() and not check_move() diff --git a/addons/procurement/schedulers.py b/addons/procurement/schedulers.py index 6f326ccf1c5..0828b4f10df 100644 --- a/addons/procurement/schedulers.py +++ b/addons/procurement/schedulers.py @@ -32,17 +32,17 @@ from openerp import tools class procurement_order(osv.osv): _inherit = 'procurement.order' - def run_scheduler(self, cr, uid, automatic=False, use_new_cursor=False, context=None): + def run_scheduler(self, cr, uid, automatic=False, use_new_cursor=False, skip_exception=False, context=None): ''' Runs through scheduler. @param use_new_cursor: False or the dbname ''' if use_new_cursor: use_new_cursor = cr.dbname - self._procure_confirm(cr, uid, use_new_cursor=use_new_cursor, context=context) + self._procure_confirm(cr, uid, use_new_cursor=use_new_cursor, skip_exception=skip_exception, context=context) self._procure_orderpoint_confirm(cr, uid, automatic=automatic,\ use_new_cursor=use_new_cursor, context=context) - def _procure_confirm(self, cr, uid, ids=None, use_new_cursor=False, context=None): + def _procure_confirm(self, cr, uid, ids=None, use_new_cursor=False, skip_exception=False, context=None): ''' Call the scheduler to check the procurement order @@ -51,6 +51,7 @@ class procurement_order(osv.osv): @param uid: The current user ID for security checks @param ids: List of selected IDs @param use_new_cursor: False or the dbname + @param skip_exception: boolean @param context: A standard dictionary for contextual values @return: Dictionary of values ''' @@ -61,19 +62,15 @@ class procurement_order(osv.osv): cr = openerp.registry(use_new_cursor).db.cursor() procurement_obj = self.pool.get('procurement.order') - if not ids: - ids = procurement_obj.search(cr, uid, [('state', '=', 'exception')], order="date_planned") - self.signal_button_restart(cr, uid, ids) - if use_new_cursor: - cr.commit() + if not skip_exception: + if not ids: + ids = procurement_obj.search(cr, uid, [('state', '=', 'exception')], order="date_planned") + self.signal_button_restart(cr, uid, ids) + if use_new_cursor: + cr.commit() company = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id maxdate = (datetime.today() + relativedelta(days=company.schedule_range)).strftime(tools.DEFAULT_SERVER_DATE_FORMAT) - start_date = fields.datetime.now() offset = 0 - report = [] - report_total = 0 - report_except = 0 - report_later = 0 while True: ids = procurement_obj.search(cr, uid, [('state', '=', 'confirmed'), ('procure_method', '=', 'make_to_order')], offset=offset, limit=500, order='priority, date_planned', context=context) for proc in procurement_obj.browse(cr, uid, ids, context=context): @@ -81,14 +78,7 @@ class procurement_order(osv.osv): self.signal_button_check(cr, uid, [proc.id]) else: offset += 1 - report_later += 1 - if proc.state == 'exception': - report.append(_('PROC %d: on order - %3.2f %-5s - %s') % \ - (proc.id, proc.product_qty, proc.product_uom.name, - proc.product_id.name)) - report_except += 1 - report_total += 1 if use_new_cursor: cr.commit() if not ids: @@ -102,22 +92,11 @@ class procurement_order(osv.osv): if maxdate >= proc.date_planned: self.signal_button_check(cr, uid, [proc.id]) report_ids.append(proc.id) - else: - report_later += 1 - report_total += 1 - - if proc.state == 'exception': - report.append(_('PROC %d: from stock - %3.2f %-5s - %s') % \ - (proc.id, proc.product_qty, proc.product_uom.name, - proc.product_id.name,)) - report_except += 1 - if use_new_cursor: cr.commit() offset += len(ids) if not ids: break - end_date = fields.datetime.now() if use_new_cursor: cr.commit() @@ -194,6 +173,7 @@ class procurement_order(osv.osv): 'company_id': orderpoint.company_id.id, 'product_uom': orderpoint.product_uom.id, 'location_id': orderpoint.location_id.id, + 'warehouse_id': orderpoint.warehouse_id.id, 'procure_method': 'make_to_order', 'origin': orderpoint.name} diff --git a/addons/product/i18n/zh_CN.po b/addons/product/i18n/zh_CN.po index 0cdfc9fbd42..1857ed5081f 100644 --- a/addons/product/i18n/zh_CN.po +++ b/addons/product/i18n/zh_CN.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-21 17:06+0000\n" -"PO-Revision-Date: 2013-07-28 11:18+0000\n" -"Last-Translator: Wei \"oldrev\" Li \n" +"PO-Revision-Date: 2013-11-19 10:25+0000\n" +"Last-Translator: Guipo Hao \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: 2013-09-12 05:45+0000\n" -"X-Generator: Launchpad (build 16761)\n" +"X-Launchpad-Export-Date: 2013-11-20 05:25+0000\n" +"X-Generator: Launchpad (build 16831)\n" #. module: product #: field:product.packaging,rows:0 @@ -2484,6 +2484,15 @@ msgid "" "

    \n" " " msgstr "" +"

    \n" +" 点击创建一个价格列表。\n" +"

    \n" +" 价格列表包括待评审的规则来计算产品价格。\n" +"

    \n" +" 价格列表可能有不同版本(2010, 2011, 2010年2月促销等等) ,每个版本可能有几个不同的规则。\n" +" (例如:给顾客的产品价格按照供应商价格的1.8倍提交。\n" +"

    \n" +" " #. module: product #: model:ir.model,name:product.model_product_template diff --git a/addons/product/product.py b/addons/product/product.py index 71f1eeffaf3..b1657590d05 100644 --- a/addons/product/product.py +++ b/addons/product/product.py @@ -135,7 +135,7 @@ class product_uom(osv.osv): '1 * (reference unit) = ratio * (this unit)'), 'factor_inv': fields.function(_factor_inv, digits=(12,12), fnct_inv=_factor_inv_write, - string='Ratio', + string='Bigger Ratio', help='How many times this Unit of Measure is bigger than the reference Unit of Measure in this category:\n'\ '1 * (this unit) = ratio * (reference unit)', required=True), 'rounding': fields.float('Rounding Precision', digits_compute=dp.get_precision('Product Unit of Measure'), required=True, diff --git a/addons/product_expiry/i18n/zh_CN.po b/addons/product_expiry/i18n/zh_CN.po index db374e6b7b2..345665e27aa 100644 --- a/addons/product_expiry/i18n/zh_CN.po +++ b/addons/product_expiry/i18n/zh_CN.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-21 17:06+0000\n" -"PO-Revision-Date: 2012-11-30 02:54+0000\n" -"Last-Translator: 盈通 ccdos \n" +"PO-Revision-Date: 2013-11-19 10:35+0000\n" +"Last-Translator: Guipo Hao \n" "Language-Team: Chinese (Simplified) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-12 06:11+0000\n" -"X-Generator: Launchpad (build 16761)\n" +"X-Launchpad-Export-Date: 2013-11-20 05:25+0000\n" +"X-Generator: Launchpad (build 16831)\n" #. module: product_expiry #: model:product.template,name:product_expiry.product_product_from_product_template @@ -37,14 +37,14 @@ msgstr "产品生命周期" msgid "" "This is the date on which the goods with this Serial Number should be " "removed from the stock." -msgstr "" +msgstr "此序列号所含商品将在该日从库存移除。" #. module: product_expiry #: help:product.product,removal_time:0 msgid "" "When a new a Serial Number is issued, this is the number of days before the " "goods should be removed from the stock." -msgstr "" +msgstr "此处表明当新序列号生成时,商品需要提前多少天从库存移除。" #. module: product_expiry #: field:product.product,use_time:0 @@ -61,7 +61,7 @@ msgstr "产品" msgid "" "When a new a Serial Number is issued, this is the number of days before the " "goods starts deteriorating, without being dangerous yet." -msgstr "" +msgstr "此处表明当新序列号生成时,商品变质前(未变危险)的天数。" #. module: product_expiry #: field:product.product,removal_time:0 @@ -73,7 +73,7 @@ msgstr "产品移除时间" msgid "" "This is the date on which an alert should be notified about the goods with " "this Serial Number." -msgstr "" +msgstr "此处表明该序列号所指商品需要提醒管理员的日期。" #. module: product_expiry #: model:ir.model,name:product_expiry.model_stock_production_lot @@ -85,7 +85,7 @@ msgstr "序列号" msgid "" "When a new a Serial Number is issued, this is the number of days before an " "alert should be notified." -msgstr "" +msgstr "此处表明当新序列号生成时,商品生成提醒前的天数。" #. module: product_expiry #: field:stock.production.lot,removal_date:0 @@ -123,6 +123,9 @@ msgid "" "When a new a Serial Number is issued, this is the number of days before the " "goods may become dangerous and must not be consumed." msgstr "" +"此处表明当新序列号生成时,商品变危险以至于不能使用前的天数。When a new a Serial Number is issued, this is " +"the number of days before the goods may become dangerous and must not be " +"consumed." #. module: product_expiry #: field:stock.production.lot,alert_date:0 @@ -134,14 +137,14 @@ msgstr "警告日期" msgid "" "This is the date on which the goods with this Serial Number start " "deteriorating, without being dangerous yet." -msgstr "" +msgstr "此处表明该序列号的商品开始变质的日期(未变危险)。" #. module: product_expiry #: help:stock.production.lot,life_date:0 msgid "" "This is the date on which the goods with this Serial Number may become " "dangerous and must not be consumed." -msgstr "" +msgstr "此处表明该序列号的商品变得危险的日期,此时该商品不能使用。" #. module: product_expiry #: field:product.product,alert_time:0 diff --git a/addons/product_margin/i18n/zh_CN.po b/addons/product_margin/i18n/zh_CN.po index cc047bd10d2..a19a1b72010 100644 --- a/addons/product_margin/i18n/zh_CN.po +++ b/addons/product_margin/i18n/zh_CN.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-21 17:06+0000\n" -"PO-Revision-Date: 2012-11-27 11:58+0000\n" -"Last-Translator: 盈通 ccdos \n" +"PO-Revision-Date: 2013-11-19 10:43+0000\n" +"Last-Translator: Guipo Hao \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: 2013-09-12 06:01+0000\n" -"X-Generator: Launchpad (build 16761)\n" +"X-Launchpad-Export-Date: 2013-11-20 05:25+0000\n" +"X-Generator: Launchpad (build 16831)\n" #. module: product_margin #: view:product.product:0 @@ -51,7 +51,7 @@ msgstr "营业额-标准价格" #. module: product_margin #: field:product.product,total_margin_rate:0 msgid "Total Margin Rate(%)" -msgstr "" +msgstr "总盈利率(%)" #. module: product_margin #: selection:product.margin,invoice_state:0 @@ -77,7 +77,7 @@ msgstr "平均单价" #. module: product_margin #: field:product.product,sale_num_invoiced:0 msgid "# Invoiced in Sale" -msgstr "" +msgstr "# 销售开票" #. module: product_margin #: view:product.product:0 @@ -119,7 +119,7 @@ msgstr "供应商发票数量合计" #. module: product_margin #: field:product.product,date_to:0 msgid "Margin Date To" -msgstr "" +msgstr "盈利结束日" #. module: product_margin #: view:product.product:0 @@ -187,7 +187,7 @@ msgstr "总利润" #. module: product_margin #: field:product.product,date_from:0 msgid "Margin Date From" -msgstr "" +msgstr "盈利开始日" #. module: product_margin #: help:product.product,turnover:0 @@ -208,7 +208,7 @@ msgstr "采购" #. module: product_margin #: field:product.product,purchase_num_invoiced:0 msgid "# Invoiced in Purchase" -msgstr "" +msgstr "# 采购开票" #. module: product_margin #: help:product.product,expected_margin:0 diff --git a/addons/product_visible_discount/product_visible_discount.py b/addons/product_visible_discount/product_visible_discount.py index a2f0a41847f..bd43028b36a 100644 --- a/addons/product_visible_discount/product_visible_discount.py +++ b/addons/product_visible_discount/product_visible_discount.py @@ -86,78 +86,13 @@ class sale_order_line(osv.osv): pricelists = pricelist_obj.read(cr,uid,[pricelist],['visible_discount']) new_list_price = get_real_price(list_price, product.id, qty, uom, pricelist) - if(len(pricelists)>0 and pricelists[0]['visible_discount'] and list_price[pricelist] != 0): + if len(pricelists)>0 and pricelists[0]['visible_discount'] and list_price[pricelist] != 0 and new_list_price != 0: discount = (new_list_price - price) / new_list_price * 100 - result['price_unit'] = new_list_price - result['discount'] = discount + if discount > 0: + result['price_unit'] = new_list_price + result['discount'] = discount + else: + result['discount'] = 0.0 else: result['discount'] = 0.0 return res - - -class account_invoice_line(osv.osv): - _inherit = "account.invoice.line" - - def product_id_change(self, cr, uid, ids, product, uom_id, qty=0, name='', type='out_invoice', partner_id=False, fposition_id=False, price_unit=False, currency_id=False, context=None, company_id=None): - res = super(account_invoice_line, self).product_id_change(cr, uid, ids, product, uom_id, qty, name, type, partner_id, fposition_id, price_unit,currency_id, context=context, company_id=company_id) - - def get_real_price(res_dict, product_id, qty, uom_id, pricelist): - item_obj = self.pool.get('product.pricelist.item') - price_type_obj = self.pool.get('product.price.type') - product_obj = self.pool.get('product.product') - field_name = 'list_price' - - if res_dict.get('item_id',False) and res_dict['item_id'].get(pricelist,False): - item = res_dict['item_id'].get(pricelist,False) - item_read = item_obj.read(cr, uid, [item], ['base']) - if item_read: - item_base = item_read[0]['base'] - if item_base > 0: - field_name = price_type_obj.browse(cr, uid, item_base).field - - product = product_obj.browse(cr, uid, product_id, context) - product_read = product_obj.read(cr, uid, product_id, [field_name], context=context) - - factor = 1.0 - if uom_id and uom_id != product.uom_id.id: - product_uom_obj = self.pool.get('product.uom') - uom_data = product_uom_obj.browse(cr, uid, product.uom_id.id) - factor = uom_data.factor - return product_read[field_name] * factor - - if product: - pricelist_obj = self.pool.get('product.pricelist') - partner_obj = self.pool.get('res.partner') - product = self.pool.get('product.product').browse(cr, uid, product, context=context) - result = res['value'] - pricelist = False - real_price = 0.00 - if type in ('in_invoice', 'in_refund'): - if not price_unit and partner_id: - pricelist =partner_obj.browse(cr, uid, partner_id).property_product_pricelist_purchase.id - if not pricelist: - raise osv.except_osv(_('No Purchase Pricelist Found!'),_("You must first define a pricelist on the supplier form!")) - price_unit_res = pricelist_obj.price_get(cr, uid, [pricelist], product.id, qty or 1.0, partner_id, {'uom': uom_id}) - price_unit = price_unit_res[pricelist] - real_price = get_real_price(price_unit_res, product.id, qty, uom_id, pricelist) - else: - if partner_id: - pricelist = partner_obj.browse(cr, uid, partner_id).property_product_pricelist.id - if not pricelist: - raise osv.except_osv(_('No Sale Pricelist Found!'),_("You must first define a pricelist on the customer form!")) - price_unit_res = pricelist_obj.price_get(cr, uid, [pricelist], product.id, qty or 1.0, partner_id, {'uom': uom_id}) - price_unit = price_unit_res[pricelist] - - real_price = get_real_price(price_unit_res, product.id, qty, uom_id, pricelist) - if pricelist: - pricelists=pricelist_obj.read(cr,uid,[pricelist],['visible_discount']) - if(len(pricelists)>0 and pricelists[0]['visible_discount'] and real_price != 0): - discount=(real_price-price_unit) / real_price * 100 - result['price_unit'] = real_price - result['discount'] = discount - else: - result['discount']=0.0 - return res - - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/project/project.py b/addons/project/project.py index a8f198cac3d..ea9c4492fa4 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -41,14 +41,13 @@ class project_task_type(osv.osv): 'case_default': fields.boolean('Default for New Projects', help="If you check this field, this stage will be proposed by default on each new project. It will not assign this stage to existing projects."), 'project_ids': fields.many2many('project.project', 'project_task_type_rel', 'type_id', 'project_id', 'Projects'), - 'fold': fields.boolean('Folded by Default', - help="This stage is not visible, for example in status bar or kanban view, when there are no records in that stage to display."), + 'fold': fields.boolean('Folded in Kanban View', + help='This stage is folded in the kanban view when' + 'there are no records in that stage to display.'), } _defaults = { 'sequence': 1, - 'fold': False, - 'case_default': False, 'project_ids': lambda self, cr, uid, ctx=None: self.pool['project.task']._get_default_project_id(cr, uid, context=ctx), } _order = 'sequence' @@ -189,6 +188,8 @@ class project(osv.osv): return res def _task_count(self, cr, uid, ids, field_name, arg, context=None): + """ :deprecated: this method will be removed with OpenERP v8. Use task_ids + fields instead. """ if context is None: context = {} res = dict.fromkeys(ids, 0) @@ -237,7 +238,9 @@ class project(osv.osv): 'active': fields.boolean('Active', help="If the active field is set to False, it will allow you to hide the project without removing it."), 'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of Projects."), 'analytic_account_id': fields.many2one('account.analytic.account', 'Contract/Analytic', help="Link this project to an analytic account if you need financial management on projects. It enables you to connect projects with budgets, planning, cost and revenue analysis, timesheets on projects, etc.", ondelete="cascade", required=True), - 'priority': fields.integer('Sequence', help="Gives the sequence order when displaying the list of projects"), + 'priority': fields.integer('Sequence (deprecated)', + deprecated='Will be removed with OpenERP v8; use sequence field instead', + help="Gives the sequence order when displaying the list of projects"), 'members': fields.many2many('res.users', 'project_user_rel', 'project_id', 'uid', 'Project Members', help="Project's members are users who can have an access to the tasks related to this project.", states={'close':[('readonly',True)], 'cancelled':[('readonly',True)]}), 'tasks': fields.one2many('project.task', 'project_id', "Task Activities"), @@ -263,7 +266,10 @@ class project(osv.osv): }), 'resource_calendar_id': fields.many2one('resource.calendar', 'Working Time', help="Timetable working hours to adjust the gantt diagram report", states={'close':[('readonly',True)]} ), 'type_ids': fields.many2many('project.task.type', 'project_task_type_rel', 'project_id', 'type_id', 'Tasks Stages', states={'close':[('readonly',True)], 'cancelled':[('readonly',True)]}), - 'task_count': fields.function(_task_count, type='integer', string="Open Tasks"), + 'task_count': fields.function(_task_count, type='integer', string="Open Tasks", + deprecated="This field will be removed in OpenERP v8. Use task_ids one2many field instead."), + 'task_ids': fields.one2many('project.task', 'project_id', + domain=[('stage_id.fold', '=', False)]), 'color': fields.integer('Color Index'), 'alias_id': fields.many2one('mail.alias', 'Alias', ondelete="restrict", required=True, help="Internal email associated with this project. Incoming emails are automatically synchronized" @@ -294,7 +300,6 @@ class project(osv.osv): 'active': True, 'type': 'contract', 'state': 'open', - 'priority': 1, 'sequence': 10, 'type_ids': _get_type_common, 'alias_model': 'project.task', @@ -555,8 +560,9 @@ class task(osv.osv): _mail_post_access = 'read' _track = { 'stage_id': { - 'project.mt_task_new': lambda self, cr, uid, obj, ctx=None: obj.stage_id and obj.stage_id.sequence == 1, - 'project.mt_task_stage': lambda self, cr, uid, obj, ctx=None: obj.stage_id.sequence != 1, + # this is only an heuristics; depending on your particular stage configuration it may not match all 'new' stages + 'project.mt_task_new': lambda self, cr, uid, obj, ctx=None: obj.stage_id and obj.stage_id.sequence <= 1, + 'project.mt_task_stage': lambda self, cr, uid, obj, ctx=None: obj.stage_id.sequence > 1, }, 'user_id': { 'project.mt_task_assigned': lambda self, cr, uid, obj, ctx=None: obj.user_id and obj.user_id.id, @@ -581,7 +587,7 @@ class task(osv.osv): def _get_default_stage_id(self, cr, uid, context=None): """ Gives default stage_id """ project_id = self._get_default_project_id(cr, uid, context=context) - return self.stage_find(cr, uid, [], project_id, [('sequence', '=', '1')], context=context) + return self.stage_find(cr, uid, [], project_id, [('fold', '=', False)], context=context) def _resolve_project_id_from_context(self, cr, uid, context=None): """ Returns ID of project based on the value of 'default_project_id' @@ -993,7 +999,7 @@ class task(osv.osv): def set_remaining_time(self, cr, uid, ids, remaining_time=1.0, context=None): for task in self.browse(cr, uid, ids, context=context): - if (task.stage_id and task.stage_id.sequence == 1) or (task.planned_hours == 0.0): + if (task.stage_id and task.stage_id.sequence <= 1) or (task.planned_hours == 0.0): self.write(cr, uid, [task.id], {'planned_hours': remaining_time}, context=context) self.write(cr, uid, ids, {'remaining_hours': remaining_time}, context=context) return True @@ -1126,7 +1132,8 @@ class task(osv.osv): def message_new(self, cr, uid, msg, custom_values=None, context=None): """ Override to updates the document according to the email. """ - if custom_values is None: custom_values = {} + if custom_values is None: + custom_values = {} defaults = { 'name': msg.get('subject'), 'planned_hours': 0.0, @@ -1136,10 +1143,10 @@ class task(osv.osv): def message_update(self, cr, uid, ids, msg, update_vals=None, context=None): """ Override to update the task according to the email. """ - if update_vals is None: update_vals = {} - act = False + if update_vals is None: + update_vals = {} maps = { - 'cost':'planned_hours', + 'cost': 'planned_hours', } for line in msg['body'].split('\n'): line = line.strip() @@ -1152,9 +1159,7 @@ class task(osv.osv): update_vals[field] = float(res.group(2).lower()) except (ValueError, TypeError): pass - if act: - getattr(self,act)(cr, uid, ids, context=context) - return super(task,self).message_update(cr, uid, ids, msg, update_vals=update_vals, context=context) + return super(task, self).message_update(cr, uid, ids, msg, update_vals=update_vals, context=context) class project_work(osv.osv): _name = "project.task.work" @@ -1242,6 +1247,8 @@ class account_analytic_account(osv.osv): return analytic_account_id def write(self, cr, uid, ids, vals, context=None): + if isinstance(ids, (int, long)): + ids = [ids] vals_for_project = vals.copy() for account in self.browse(cr, uid, ids, context=context): if not vals.get('name'): diff --git a/addons/project/project_data.xml b/addons/project/project_data.xml index 0f48dfe9a2b..bc53c4a436f 100644 --- a/addons/project/project_data.xml +++ b/addons/project/project_data.xml @@ -1,6 +1,6 @@ - + @@ -63,14 +63,18 @@ Done + 30 Cancelled + + + Task Created diff --git a/addons/project/project_demo.xml b/addons/project/project_demo.xml index 12e373642fd..ff225c46e10 100644 --- a/addons/project/project_demo.xml +++ b/addons/project/project_demo.xml @@ -4,7 +4,7 @@ - + @@ -60,7 +60,7 @@ - 10 + 10 E-Learning Integration @@ -74,7 +74,7 @@ - 20 + 20 Website Design Templates @@ -89,7 +89,7 @@ - 2 + 2 Data Import/Export Plugin diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml index d86f635d749..0f507c604f2 100644 --- a/addons/project/project_view.xml +++ b/addons/project/project_view.xml @@ -19,7 +19,7 @@ - + @@ -158,7 +158,7 @@ - + @@ -239,6 +239,7 @@ + @@ -258,9 +259,10 @@ %%
    @@ -683,10 +685,10 @@ - + - + diff --git a/addons/project/report/project_report.py b/addons/project/report/project_report.py index 15b26507ff3..ed086b4318d 100644 --- a/addons/project/report/project_report.py +++ b/addons/project/report/project_report.py @@ -75,7 +75,7 @@ class report_project_task_user(osv.osv): date_trunc('day',t.date_last_stage_update) as date_last_stage_update, to_date(to_char(t.date_deadline, 'dd-MM-YYYY'),'dd-MM-YYYY') as date_deadline, -- sum(cast(to_char(date_trunc('day',t.date_end) - date_trunc('day',t.date_start),'DD') as int)) as no_of_days, - abs((extract('epoch' from (t.date_end-t.date_start)))/(3600*24)) as no_of_days, + abs((extract('epoch' from (t.write_date-t.date_start)))/(3600*24)) as no_of_days, t.user_id, progress as progress, t.project_id, @@ -89,9 +89,9 @@ class report_project_task_user(osv.osv): total_hours as total_hours, t.delay_hours as hours_delay, planned_hours as hours_planned, - (extract('epoch' from (t.date_end-t.create_date)))/(3600*24) as closing_days, + (extract('epoch' from (t.write_date-t.create_date)))/(3600*24) as closing_days, (extract('epoch' from (t.date_start-t.create_date)))/(3600*24) as opening_days, - abs((extract('epoch' from (t.date_deadline-t.date_end)))/(3600*24)) as delay_endings_days + abs((extract('epoch' from (t.date_deadline-t.write_date)))/(3600*24)) as delay_endings_days FROM project_task t WHERE t.active = 'true' GROUP BY @@ -106,6 +106,7 @@ class report_project_task_user(osv.osv): month, day, create_date, + write_date, date_start, date_end, date_deadline, diff --git a/addons/project/report/project_report.xml b/addons/project/report/project_report.xml index 59d0fd28220..4ff7e852620 100644 --- a/addons/project/report/project_report.xml +++ b/addons/project/report/project_report.xml @@ -17,7 +17,6 @@ - diff --git a/addons/project_issue/project_issue.py b/addons/project_issue/project_issue.py index 351b55fdcfc..8e789e03658 100644 --- a/addons/project_issue/project_issue.py +++ b/addons/project_issue/project_issue.py @@ -320,56 +320,6 @@ class project_issue(osv.Model): """ return self.set_priority(cr, uid, ids, '3') - def convert_issue_task(self, cr, uid, ids, context=None): - if context is None: - context = {} - - case_obj = self.pool.get('project.issue') - data_obj = self.pool.get('ir.model.data') - task_obj = self.pool.get('project.task') - - result = data_obj._get_id(cr, uid, 'project', 'view_task_search_form') - res = data_obj.read(cr, uid, result, ['res_id']) - id2 = data_obj._get_id(cr, uid, 'project', 'view_task_form2') - id3 = data_obj._get_id(cr, uid, 'project', 'view_task_tree2') - if id2: - id2 = data_obj.browse(cr, uid, id2, context=context).res_id - if id3: - id3 = data_obj.browse(cr, uid, id3, context=context).res_id - - for bug in case_obj.browse(cr, uid, ids, context=context): - new_task_id = task_obj.create(cr, uid, { - 'name': bug.name, - 'partner_id': bug.partner_id.id, - 'description':bug.description, - 'date_deadline': bug.date, - 'project_id': bug.project_id.id, - # priority must be in ['0','1','2','3','4'], while bug.priority is in ['1','2','3','4','5'] - 'priority': str(int(bug.priority) - 1), - 'user_id': bug.user_id.id, - 'planned_hours': 0.0, - }) - vals = { - 'task_id': new_task_id, - 'stage_id': self.stage_find(cr, uid, [bug], bug.project_id.id, [('sequence', '=', 1)], context=context), - } - message = _("Project issue converted to task.") - self.message_post(cr, uid, [bug.id], body=message, context=context) - case_obj.write(cr, uid, [bug.id], vals, context=context) - - return { - 'name': _('Tasks'), - 'view_type': 'form', - 'view_mode': 'form,tree', - 'res_model': 'project.task', - 'res_id': int(new_task_id), - 'view_id': False, - 'views': [(id2,'form'),(id3,'tree'),(False,'calendar'),(False,'graph')], - 'type': 'ir.actions.act_window', - 'search_view_id': res['res_id'], - 'nodestroy': True - } - def copy(self, cr, uid, id, default=None, context=None): issue = self.read(cr, uid, id, ['name'], context=context) if not default: @@ -465,18 +415,20 @@ class project_issue(osv.Model): return stage_ids[0] return False - def case_escalate(self, cr, uid, ids, context=None): - cases = self.browse(cr, uid, ids) - for case in cases: + def case_escalate(self, cr, uid, ids, context=None): # FIXME rename this method to issue_escalate + for issue in self.browse(cr, uid, ids, context=context): data = {} - if case.project_id.project_escalation_id: - data['project_id'] = case.project_id.project_escalation_id.id - if case.project_id.project_escalation_id.user_id: - data['user_id'] = case.project_id.project_escalation_id.user_id.id - if case.task_id: - self.pool.get('project.task').write(cr, uid, [case.task_id.id], {'project_id': data['project_id'], 'user_id': False}) - else: + esc_proj = issue.project_id.project_escalation_id + if not esc_proj: raise osv.except_osv(_('Warning!'), _('You cannot escalate this issue.\nThe relevant Project has not configured the Escalation Project!')) + + data['project_id'] = esc_proj.id + if esc_proj.user_id: + data['user_id'] = esc_proj.user_id.id + issue.write(data) + + if issue.task_id: + issue.task_id.write({'project_id': esc_proj.id, 'user_id': False}) return True # ------------------------------------------------------- @@ -517,40 +469,10 @@ class project_issue(osv.Model): 'partner_id': msg.get('author_id', False), 'user_id': False, } - if msg.get('priority'): - defaults['priority'] = msg.get('priority') - defaults.update(custom_values) res_id = super(project_issue, self).message_new(cr, uid, msg, custom_values=defaults, context=context) return res_id - def message_update(self, cr, uid, ids, msg, update_vals=None, context=None): - """ Overrides mail_thread message_update that is called by the mailgateway - through message_process. - This method updates the document according to the email. - """ - if isinstance(ids, (str, int, long)): - ids = [ids] - if update_vals is None: update_vals = {} - - # Update doc values according to the message - if msg.get('priority'): - update_vals['priority'] = msg.get('priority') - # Parse 'body' to find values to update - maps = { - 'cost': 'planned_cost', - 'revenue': 'planned_revenue', - 'probability': 'probability', - } - for line in msg.get('body', '').split('\n'): - line = line.strip() - res = tools.command_re.match(line) - if res and maps.get(res.group(1).lower(), False): - key = maps.get(res.group(1).lower()) - update_vals[key] = res.group(2).lower() - - return super(project_issue, self).message_update(cr, uid, ids, msg, update_vals=update_vals, context=context) - def message_post(self, cr, uid, thread_id, body='', subject=None, type='notification', subtype=None, parent_id=False, attachments=None, context=None, content_subtype='html', **kwargs): """ Overrides mail_thread message_post so that we can set the date of last action field when a new message is posted on the issue. @@ -570,6 +492,8 @@ class project(osv.Model): return [('project.task', "Tasks"), ("project.issue", "Issues")] def _issue_count(self, cr, uid, ids, field_name, arg, context=None): + """ :deprecated: this method will be removed with OpenERP v8. Use issue_ids + fields instead. """ res = dict.fromkeys(ids, 0) issue_ids = self.pool.get('project.issue').search(cr, uid, [('project_id', 'in', ids)]) for issue in self.pool.get('project.issue').browse(cr, uid, issue_ids, context): @@ -581,7 +505,10 @@ class project(osv.Model): 'project_escalation_id': fields.many2one('project.project', 'Project Escalation', help='If any issue is escalated from the current Project, it will be listed under the project selected here.', states={'close': [('readonly', True)], 'cancelled': [('readonly', True)]}), - 'issue_count': fields.function(_issue_count, type='integer', string="Unclosed Issues"), + 'issue_count': fields.function(_issue_count, type='integer', string="Unclosed Issues", + deprecated="This field will be removed in OpenERP v8. Use issue_ids one2many field instead."), + 'issue_ids': fields.one2many('project.issue', 'project_id', + domain=[('stage_id.fold', '=', False)]) } def _check_escalation(self, cr, uid, ids, context=None): diff --git a/addons/project_issue/project_issue_view.xml b/addons/project_issue/project_issue_view.xml index 3e90a2a43d6..2e99b75046c 100644 --- a/addons/project_issue/project_issue_view.xml +++ b/addons/project_issue/project_issue_view.xml @@ -312,7 +312,7 @@ {'on_change': 'on_change_use_tasks_or_issues(use_tasks, use_issues)'} - + @@ -325,13 +325,14 @@ - + - Issues - Issue + + Issue + Issues diff --git a/addons/project_issue/test/issue_process.yml b/addons/project_issue/test/issue_process.yml index 61ebe2e646c..1bc1633688c 100644 --- a/addons/project_issue/test/issue_process.yml +++ b/addons/project_issue/test/issue_process.yml @@ -10,13 +10,3 @@ self.send_mail(cr, uid, [new_id], context=ctx) except Exception, e: pass -- - Only project manager can create Task for Issue, so let's check data with giving the access rights of manager. -- - !context - uid: 'res_users_project_issue_manager' -- - I create Task for Issue. -- - !python {model: project.issue}: | - self.convert_issue_task(cr, uid, [ref("crm_case_buginaccountsmodule0")]) diff --git a/addons/project_mrp/process/project_mrp_process.xml b/addons/project_mrp/process/project_mrp_process.xml index b147740758a..de2b2c1b4c8 100644 --- a/addons/project_mrp/process/project_mrp_process.xml +++ b/addons/project_mrp/process/project_mrp_process.xml @@ -50,10 +50,8 @@ `project_mrp` implements a basic procurement system for services without actually using the full-fledged procurement process from sale_stock, and without the dependency. So it stil represents a "procurement system". - TODO: To cleanup this invalid foreign external ID, the node should probably be moved to the - `sale` module directly, and removed from both `sale_stock` and `project_mrp`. --> - + subflow @@ -68,7 +66,7 @@ - + diff --git a/addons/purchase/edi/purchase_order_action_data.xml b/addons/purchase/edi/purchase_order_action_data.xml index b9c3c3ab95d..5bb56e8ab15 100644 --- a/addons/purchase/edi/purchase_order_action_data.xml +++ b/addons/purchase/edi/purchase_order_action_data.xml @@ -19,7 +19,7 @@ Purchase Order - Send by mail - ${object.validator.email or ''} + ${(object.validator.email or '')|safe} ${object.company_id.name} Order (Ref ${object.name or 'n/a' }) ${object.partner_id.id} diff --git a/addons/purchase/i18n/hu.po b/addons/purchase/i18n/hu.po index 5c01086b33d..9a887b3d101 100644 --- a/addons/purchase/i18n/hu.po +++ b/addons/purchase/i18n/hu.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-21 17:04+0000\n" -"PO-Revision-Date: 2013-01-24 15:32+0000\n" +"PO-Revision-Date: 2013-11-24 14:14+0000\n" "Last-Translator: krnkris \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: 2013-09-12 05:07+0000\n" -"X-Generator: Launchpad (build 16761)\n" +"X-Launchpad-Export-Date: 2013-11-25 05:32+0000\n" +"X-Generator: Launchpad (build 16831)\n" #. module: purchase #: model:res.groups,name:purchase.group_analytic_accounting @@ -172,7 +172,7 @@ msgstr "Átlagár" #. module: purchase #: view:purchase.order:0 msgid "Purchase order which are in the exception state" -msgstr "Megrendelés mej várható állapotban van" +msgstr "Megrendelés mely várható állapotban van" #. module: purchase #: model:ir.actions.act_window,name:purchase.action_view_purchase_order_group @@ -743,7 +743,7 @@ msgstr "Jelzi, hogy a kiszedést végrehajtották." #: code:addons/purchase/purchase.py:588 #, python-format msgid "Unable to cancel this purchase order." -msgstr "Nem tlehet visszavonni ezt a beszerzési megrendelést." +msgstr "Nem lehet visszavonni ezt a beszerzési megrendelést." #. module: purchase #: model:ir.ui.menu,name:purchase.menu_procurement_management_invoice @@ -1115,6 +1115,82 @@ msgid "" "
    \n" " " msgstr "" +"\n" +"
    \n" +"\n" +"

    Tisztelt$ ${object.partner_id.name},

    \n" +" \n" +"

    Ez egy ${object.state in ('draft', 'sent') and 'árajánlatkérés' or " +"'beszerzés visszaigazolás'} ${object.company_id.name} vállalattól:

    \n" +" \n" +"

    \n" +"   REFERENCES
    \n" +"   Megrendelés száma: ${object.name}
    \n" +"   Megrendelés összesen: ${object.amount_total} " +"${object.pricelist_id.currency_id.name}
    \n" +"   Megrendelés dátuma: ${object.date_order}
    \n" +" % if object.origin:\n" +"   Megrendelés hivatkozási száma: ${object.origin}
    \n" +" % endif\n" +" % if object.partner_ref:\n" +"   Ön hivatkozási száma: ${object.partner_ref}
    \n" +" % endif\n" +" % if object.validator:\n" +"   Kapcsolattartó az Ön részéről: ${object.validator.name}\n" +" % endif\n" +"

    \n" +"\n" +"
    \n" +"

    További felmerülő kérdésekben állunk szíves rendelkezésükre.

    \n" +"

    Köszönjük!

    \n" +"
    \n" +"
    \n" +"
    \n" +"

    \n" +" ${object.company_id.name}

    \n" +"
    \n" +"
    \n" +" \n" +" % if object.company_id.street:\n" +" ${object.company_id.street}
    \n" +" % endif\n" +" % if object.company_id.street2:\n" +" ${object.company_id.street2}
    \n" +" % endif\n" +" % if object.company_id.city or object.company_id.zip:\n" +" ${object.company_id.zip} ${object.company_id.city}
    \n" +" % endif\n" +" % if object.company_id.country_id:\n" +" ${object.company_id.state_id and ('%s, ' % " +"object.company_id.state_id.name) or ''} ${object.company_id.country_id.name " +"or ''}
    \n" +" % endif\n" +"
    \n" +" % if object.company_id.phone:\n" +"
    \n" +" Phone:  ${object.company_id.phone}\n" +"
    \n" +" % endif\n" +" % if object.company_id.website:\n" +"
    \n" +" Web : ${object.company_id.website}\n" +"
    \n" +" %endif\n" +"

    \n" +"
    \n" +"
    \n" +" " #. module: purchase #: view:purchase.report:0 @@ -1165,7 +1241,7 @@ msgstr "Kimenő levelek" msgid "You cannot confirm a purchase order without any purchase order line." msgstr "" "Nem tud visszaigazolni olyan beszerzési megrendelést, melynek nincsenek " -"sorai." +"tételei." #. module: purchase #: help:purchase.order,message_ids:0 @@ -1241,7 +1317,7 @@ msgstr "Jóváhagyott beszerzési megrendelések" #. module: purchase #: view:purchase.report:0 msgid "Purchase Orders Statistics" -msgstr "Szállítói megrendelés statisztika" +msgstr "Beszerzési megrendelés statisztikák" #. module: purchase #: view:purchase.order:0 @@ -1345,7 +1421,7 @@ msgstr "Fax:" #. module: purchase #: help:purchase.order,invoice_ids:0 msgid "Invoices generated for a purchase order" -msgstr "A szállítói megrendelés alapján készített számlák" +msgstr "A beszerzési megrendelés alapján készített számlák" #. module: purchase #: selection:purchase.config.settings,default_invoice_method:0 @@ -1365,7 +1441,7 @@ msgid "" "order is 'On picking'. The invoice can also be generated manually by the " "accountant (Invoice control = Manual)." msgstr "" -"A rendszer automatikusan készíti a számlát, ha a szállítói megrendelés " +"A rendszer automatikusan készíti a számlát, ha a beszerzési megrendelés " "számlaellenőrzése \"Kiszedés alapján\"-ra van állítva. A könyvelő manuálisan " "is készíthet számlát (számlaellenőrzés = manuális)." @@ -1462,7 +1538,7 @@ msgstr "purchase.config.settings" #: model:process.node,note:purchase.process_node_approvepurchaseorder0 #: model:process.node,note:purchase.process_node_confirmpurchaseorder0 msgid "State of the Purchase Order." -msgstr "Szállítói megrendelés állapota." +msgstr "Beszerzési megrendelés állapota." #. module: purchase #: field:purchase.order.line,product_uom:0 @@ -1501,7 +1577,7 @@ msgstr "Számlák készítése" #. module: purchase #: model:ir.model,name:purchase.model_purchase_order_line_invoice msgid "Purchase Order Line Make Invoice" -msgstr "Szállítói megrendelési sorokból számla készítése" +msgstr "Beszerzési megrendelési tételekből számla készítése" #. module: purchase #: code:addons/purchase/purchase.py:1167 @@ -1550,7 +1626,7 @@ msgstr "Kiválasztott elemek listája létrehozva" #: model:ir.actions.act_window,name:purchase.purchase_line_form_action2 #: model:ir.ui.menu,name:purchase.menu_purchase_line_order_draft msgid "On Purchase Order Lines" -msgstr "a beszerzési megrendelések sorain" +msgstr "a beszerzési megrendelések tételei" #. module: purchase #: report:purchase.quotation:0 @@ -1578,7 +1654,7 @@ msgstr "Ártípusok" #. module: purchase #: help:purchase.order,date_approve:0 msgid "Date on which purchase order has been approved" -msgstr "A szállítói megrendelés jóváhagyásának dátuma" +msgstr "A beszerzési megrendelés jóváhagyásának dátuma" #. module: purchase #: model:process.node,name:purchase.process_node_approvepurchaseorder0 @@ -1603,7 +1679,7 @@ msgstr "Számla" #. module: purchase #: model:process.node,note:purchase.process_node_purchaseorder0 msgid "Confirmed purchase order to invoice" -msgstr "Számlázandó jóváhagyott szállítói megrendelés" +msgstr "Számlázandó jóváhagyott beszerzési megrendelés" #. module: purchase #: model:process.node,note:purchase.process_node_productrecept0 @@ -1644,7 +1720,7 @@ msgstr "" #. module: purchase #: model:process.transition,note:purchase.process_transition_approvingpurchaseorder0 msgid "The supplier approves the Purchase Order." -msgstr "A szállító jóváhagyja a szállítói megrendelést." +msgstr "A szállító jóváhagyja a beszerzési megrendelést." #. module: purchase #: code:addons/purchase/wizard/purchase_order_group.py:80 @@ -1655,7 +1731,7 @@ msgstr "A szállító jóváhagyja a szállítói megrendelést." #: view:res.partner:0 #, python-format msgid "Purchase Orders" -msgstr "Szállítói megrendelések" +msgstr "Beszerzési megrendelések" #. module: purchase #: field:purchase.order,origin:0 @@ -1800,7 +1876,7 @@ msgid "" " This installs the module purchase_analytic_plans." msgstr "" "Lehetővé teszi a felhasználó számára különböző elemzési terv karbantartását. " -"Ez lehetővé teszi a beszerzési megrendelés sorainak több számlán és " +"Ez lehetővé teszi a beszerzési megrendelés tételeinek több számlán és " "gyüjtő/elemző számlán való szétválasztását.\n" " Ez a purchase_analytic_plans modult telepíti." @@ -1923,12 +1999,12 @@ msgid "" msgstr "" "A beszerzési megrendelés vagy az árajánlat kérés állapota. A beszerzési " "megrendelés 'Tervezet' állapota egy árajánlat. Ezután egy felhasználónak " -"jóvá kell hagynia, az állapot kapcsolóval 'Jóváhagyott'. Ezután egy " -"felhasználónak vissza kell igazolnia a megrendelést ahhoz, hogy az állapot " -"kapcsoló a következő állapotba kerüljön 'Jóváhagyott'. Ha a beszerzési " +"jóvá kell hagynia, az állapot kapcsolóval 'Jóváhagyott'-ra. Ezután a " +"beszállítónak vissza kell igazolnia a megrendelést ahhoz, hogy az állapot " +"kapcsoló a következő 'Elfogadott' állapotba kerüljön . Ha a beszerzési " "megrendelés beérkezett és fizetett akkor az állapot 'Elvégezve' lesz. Ha a " "visszavonás gombot megnyomták a számlázásnál vagy a termékek beérkezésénél, " -"akkor az állapot 'várható' állába kerül." +"akkor az kifogásolt állapotba kerül." #. module: purchase #: selection:purchase.order,state:0 @@ -1967,7 +2043,7 @@ msgstr "Nettó ár" #: view:purchase.order.line:0 #: field:stock.move,purchase_line_id:0 msgid "Purchase Order Line" -msgstr "Szállítói megrendelési sor" +msgstr "Beszerzési megrendelési tételsor" #. module: purchase #: model:process.transition.action,name:purchase.process_transition_action_confirmpurchaseorder0 @@ -1992,7 +2068,7 @@ msgid "" "of the purchase order, the invoice is based on received or on ordered " "quantities." msgstr "" -"A kiszedési lista előállít egy bejövő számlát. A szállítói megrendelés " +"A kiszedési lista előállít egy bejövő számlát. A beszerzési megrendelés " "számlaellenőrzésétől függően a számla az érkeztetett vagy a megrendelt " "mennyiségen alapul." @@ -2167,7 +2243,7 @@ msgstr "Tervezet" #. module: purchase #: model:ir.model,name:purchase.model_purchase_order_group msgid "Purchase Order Merge" -msgstr "Szállítói megrendelések összevonása" +msgstr "Beszerzési megrendelések összevonása" #. module: purchase #: model:ir.actions.act_window,name:purchase.action_email_templates @@ -2208,9 +2284,9 @@ msgid "" "Bases on incoming shipments: let you create an invoice when receptions are " "validated." msgstr "" -"Beszerzési megrendelés sorain alapszik: különálló sorokat hozzon létre a " -"'Számla vezérlés > Beszerzési megrendelés sorain alapszik' ahol elkülönítve " -"hozhat létre számlákat.\n" +"Beszerzési megrendelés tételsorain alapszik: különálló tétel sorokat hozzon " +"létre a 'Számla vezérlés > Beszerzési megrendelés tételsorain alapszik' ahol " +"elkülönítve hozhat létre számlákat.\n" "Tervezet számla alapján: tervezet számlát hoz létre amit később " "jóváhagyhat.\n" "A bejövő szállítások alapján: Számlát hozhat létre, ha a beérkezés jóvá lett " @@ -2305,7 +2381,7 @@ msgstr "Szállítói megrendelés hivatkozása" #. module: purchase #: report:purchase.order:0 msgid "Purchase Order Confirmation N°" -msgstr "Szállítói megrendelés jóváhagyásának száma" +msgstr "Beszerzési megrendelés jóváhagyásának száma" #. module: purchase #: view:purchase.order:0 @@ -2339,8 +2415,8 @@ msgstr "" " * ugyanahhoz a szállítóhoz tartoznak \n" " * ugyanaz a raktári helyük és az árlistájuk \n" " \n" -" A rendszer a megrendelési sorokat csak akkor vonja össze, ha: \n" -" * a sorok a termék, a mennyiség és az egységár kivételével teljesen " +" A rendszer a megrendelési tételsorokat csak akkor vonja össze, ha: \n" +" * a tételsorok a termék, a mennyiség és az egységár kivételével teljesen " "megegyeznek \n" " " @@ -2374,7 +2450,7 @@ msgstr "Év" #. module: purchase #: selection:purchase.config.settings,default_invoice_method:0 msgid "Based on purchase order lines" -msgstr "A beszerzési megrendelés sorai alapján" +msgstr "A beszerzési megrendelés tételsorai alapján" #. module: purchase #: model:ir.actions.act_window,help:purchase.act_res_partner_2_purchase_order @@ -2392,7 +2468,7 @@ msgid "" " " msgstr "" "

    \n" -" Ennek a beszállítónak nincs beszerzési megrendelése. " +" Ehhez a Beszállítóhoz nincs beszerzési megrendelés. " "Kattintson ide árajánlat kérés készítéséhez.\n" "

    \n" " Az árajánlat kérés a beszerzési folyamat első lépése. " diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index e551eb40396..fb838e8b3cd 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -1234,17 +1234,27 @@ class account_invoice(osv.Model): def invoice_validate(self, cr, uid, ids, context=None): res = super(account_invoice, self).invoice_validate(cr, uid, ids, context=context) purchase_order_obj = self.pool.get('purchase.order') - po_ids = purchase_order_obj.search(cr, uid, [('invoice_ids', 'in', ids)], context=context) + # read access on purchase.order object is not required + if not purchase_order_obj.check_access_rights(cr, uid, 'read', raise_exception=False): + user_id = SUPERUSER_ID + else: + user_id = uid + po_ids = purchase_order_obj.search(cr, user_id, [('invoice_ids', 'in', ids)], context=context) for po_id in po_ids: - purchase_order_obj.message_post(cr, uid, po_id, body=_("Invoice received"), context=context) + purchase_order_obj.message_post(cr, user_id, po_id, body=_("Invoice received"), context=context) return res def confirm_paid(self, cr, uid, ids, context=None): res = super(account_invoice, self).confirm_paid(cr, uid, ids, context=context) purchase_order_obj = self.pool.get('purchase.order') - po_ids = purchase_order_obj.search(cr, uid, [('invoice_ids', 'in', ids)], context=context) + # read access on purchase.order object is not required + if not purchase_order_obj.check_access_rights(cr, uid, 'read', raise_exception=False): + user_id = SUPERUSER_ID + else: + user_id = uid + po_ids = purchase_order_obj.search(cr, user_id, [('invoice_ids', 'in', ids)], context=context) if po_ids: - purchase_order_obj.message_post(cr, uid, po_ids, body=_("Invoice paid"), context=context) + purchase_order_obj.message_post(cr, user_id, po_ids, body=_("Invoice paid"), context=context) return res class account_invoice_line(osv.Model): diff --git a/addons/purchase/purchase_view.xml b/addons/purchase/purchase_view.xml index 6bed8bcbf9c..4a301d3fa7b 100644 --- a/addons/purchase/purchase_view.xml +++ b/addons/purchase/purchase_view.xml @@ -36,6 +36,9 @@ + Sales Order - Send by Email - ${object.user_id.email or ''} + ${(object.user_id.email or '')|safe} ${object.company_id.name} ${object.state in ('draft', 'sent') and 'Quotation' or 'Order'} (Ref ${object.name or 'n/a' }) ${object.partner_invoice_id.id} diff --git a/addons/sale/i18n/hu.po b/addons/sale/i18n/hu.po index 57a20d71ce8..e443eda74d3 100644 --- a/addons/sale/i18n/hu.po +++ b/addons/sale/i18n/hu.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-21 17:04+0000\n" -"PO-Revision-Date: 2013-07-09 07:56+0000\n" +"PO-Revision-Date: 2013-11-19 12:50+0000\n" "Last-Translator: krnkris \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: 2013-09-12 05:40+0000\n" -"X-Generator: Launchpad (build 16761)\n" +"X-Launchpad-Export-Date: 2013-11-20 05:24+0000\n" +"X-Generator: Launchpad (build 16831)\n" #. module: sale #: model:res.groups,name:sale.group_analytic_accounting @@ -482,7 +482,7 @@ msgstr "" #: help:sale.order.line,sequence:0 msgid "Gives the sequence order when displaying a list of sales order lines." msgstr "" -"A megrendelés sorrendet adja a megrendelési sorok listájának kijelzésekor." +"A megrendelés sorrendet adja ha a megrendelési sorok listáját jelzi ki." #. module: sale #: view:sale.report:0 @@ -543,7 +543,7 @@ msgstr "Megrendelés sorai számlázásának engedélyezése" #. module: sale #: model:ir.model,name:sale.model_sale_order_line msgid "Sales Order Line" -msgstr "Vevői megrendelés sor" +msgstr "Megrendelési tétel" #. module: sale #: field:sale.advance.payment.inv,amount:0 @@ -588,14 +588,15 @@ msgstr "Jóváhagyás" #. module: sale #: field:sale.config.settings,timesheet:0 msgid "Prepare invoices based on timesheets" -msgstr "Az időkimutatások alapján készítsen elő, számlát" +msgstr "Az időkimutatások alapján készítsen elő számlát" #. module: sale #: code:addons/sale/sale.py:820 #, python-format msgid "You cannot cancel a sales order line that has already been invoiced." msgstr "" -"Nem tud olyan vevői megrendelési sort visszavonni amelyik már számlázva volt." +"Nem tud olyan vevői megrendelési tételt visszavonni amelyik már számlázva " +"volt." #. module: sale #: view:account.invoice.report:0 @@ -644,7 +645,7 @@ msgstr "Megrendelés száma" #: view:sale.order:0 #: field:sale.order,order_line:0 msgid "Order Lines" -msgstr "Megrendelés sorok" +msgstr "Megrendelési tételek" #. module: sale #: report:sale.order:0 @@ -661,7 +662,7 @@ msgstr "" #. module: sale #: field:sale.order.line,invoice_lines:0 msgid "Invoice Lines" -msgstr "Számlasorok" +msgstr "Számla tételek" #. module: sale #: view:sale.report:0 @@ -774,7 +775,7 @@ msgstr "Összesen :" #. module: sale #: view:sale.order.line:0 msgid "Sales Order Lines ready to be invoiced" -msgstr "Megrendelési sorok készen állnak számlázásra" +msgstr "Megrendelési tételek készen állnak számlázásra" #. module: sale #: view:sale.report:0 @@ -854,8 +855,8 @@ msgid "" "After clicking 'Show Lines to Invoice', select lines to invoice and create " "the invoice from the 'More' dropdown menu." msgstr "" -"A 'Mutasd a számlázandó sorokat' kattintás után, válasszon ki számlázandó " -"sorokat és hozza létre a számlát a 'Tovább' legördülő menüből." +"A 'Mutasd a számlázandó tételeket' kattintás után, válasszon ki számlázandó " +"tételeket és hozza létre a számlát a 'Tovább' legördülő menüből." #. module: sale #: view:sale.order:0 @@ -927,7 +928,7 @@ msgstr "Számla létrehozása és megtekintése" #. module: sale #: view:sale.order.line:0 msgid "Sales order lines done" -msgstr "Megrendelési sorok elvégezve" +msgstr "Megrendelési tételek elvégezve" #. module: sale #: field:sale.make.invoice,grouped:0 @@ -964,10 +965,11 @@ msgid "" "1.The state of this sales order line is either \"draft\" or \"cancel\"!\n" "2.The Sales Order Line is Invoiced!" msgstr "" -"Nem készíthet számlát ehhez a megrendelés sorhoz, az alábbi okok egyikének " -"következtében:\n" -"1. A megrendelés sorának állapota: \"Tervezet\" vagy \"Visszavont\".\n" -"2. A megrendelési sor már kiszámlázásra került." +"Nem készíthet számlát ehhez az értékesítési megbízási tételhez, az alábbi " +"okok egyike miatt:\n" +"1. Az értékesítési megbízás tételének állapota: \"Tervezet\" vagy " +"\"Mégsem\".\n" +"2. Az értékesítési megbízás tétel már kiszámlázásra került." #. module: sale #: view:sale.order.line.make.invoice:0 @@ -1071,8 +1073,8 @@ msgid "" "To allow your salesman to make invoices for sales order lines using the menu " "'Lines to Invoice'." msgstr "" -"Lehetővé teszi az értékesítők részére a megrendelések soraira történő " -"számlázást a 'Számlázandó sorok' menü használatával" +"Lehetővé teszi az értékesítők részére a megrendelések tételire történő " +"számlázást a 'Számlázandó tételek' menü használatával." #. module: sale #: model:ir.actions.client,name:sale.action_client_sale_menu @@ -1083,7 +1085,7 @@ msgstr "Értékesítési menü megnyitása" #: code:addons/sale/sale.py:598 #, python-format msgid "You cannot confirm a sales order which has no line." -msgstr "Nem tud megerősíteni sor nélküli megrendelést" +msgstr "Nem tud megerősíteni tétel nélküli értékesítési megbízást" #. module: sale #: selection:sale.report,state:0 @@ -1122,7 +1124,7 @@ msgstr "Ennyi előleg %s %%" #. module: sale #: model:ir.model,name:sale.model_sale_order_line_make_invoice msgid "Sale OrderLine Make_invoice" -msgstr "Számla létrehozása az értékesítési megbízási sorból" +msgstr "Számla létrehozása a vásárlói megrendelésből" #. module: sale #: selection:sale.order.line,state:0 @@ -1213,11 +1215,12 @@ msgstr "" "

    \n" " Kattintson új értékesítési hely meghatározáshoz.\n" "

    \n" -" Mindegyik árajánlatot vagy megrendelést össze kell kötni egy " -"értékesítési helyhez. Az\n" -" értékesítési hely meghatároz egy raktárépületet ahonnan a " +" Mindegyik árajánlatot vagy értékesítési megbízást össze kell " +"kötni egy értékesítési helyhez. Az\n" +" értékesítési hely meghatároz egy raktárhelyet ahonnan a " "termék\n" -" szállítva lesz minden egyes ide vonatkozó értékesítéshez.\n" +" kiszállításra kerül minden egyes ide vonatkozó " +"értékesítéshez.\n" "

    \n" " " @@ -1244,8 +1247,8 @@ msgid "" "Sales Order Lines that are confirmed, done or in exception state and haven't " "yet been invoiced" msgstr "" -"Megrendelési sorok, melyek megerősítettek, elvégzettek vagy kifogásolt " -"állapotú és még nincs számlázva" +"Értékesítési megbízási tételek, melyek megerősítettek, elvégzettek vagy " +"kifogásolt állapotúak és még nincs számlázva" #. module: sale #: model:ir.model,name:sale.model_sale_report @@ -1348,7 +1351,7 @@ msgstr "Január" #. module: sale #: field:sale.config.settings,group_discount_per_so_line:0 msgid "Allow setting a discount on the sales order lines" -msgstr "Engedélyezi a megrendelés soraira az árengedmény beállítását" +msgstr "Engedélyezi a megrendelés tételeire az árengedmény beállítását" #. module: sale #: model:ir.actions.act_window,name:sale.action_orders_in_progress @@ -1363,10 +1366,10 @@ msgid "" " or a fixed price (for advances) directly from the sales " "order form if you prefer." msgstr "" -"Ezen a megrendelésen minden sor tétel számlázva lesz. Lehetősége van a " +"Ezen a megrendelésen minden tétel sor számlázva lesz. Lehetősége van a " "megrendelés egy bizonyos százalékának számlázására\n" -" vagy fix ár (az előlegekre) direkt a megrendelés " -"űrlapról ha kívánja." +" vagy fix ár (az előlegekre), ah kívánja direkt a " +"megrendelés űrlapról." #. module: sale #: help:sale.config.settings,module_warning:0 @@ -1377,7 +1380,8 @@ msgid "" " Supplier: don't forget to ask for an express delivery." msgstr "" "Lehetővé teszi a termék értesítéseket, melyeket kapcsolhatjuk, ha egy " -"felhasználó egy megadott terméket értékesíteni akar vagy egy vevőre.\n" +"felhasználó egy megadott terméket vagy egy megadott vevőre értékesíteni " +"szeretne.\n" "Például: Termék: Ezt a terméket érvénytelenítsd, nem lehet 5-nél többet " "vásárolni.\n" " Beszállító: Ne felejts el expressz szállításról érdeklődni." @@ -1438,7 +1442,7 @@ msgstr "" #: code:addons/sale/sale.py:955 #, python-format msgid "No valid pricelist line found ! :" -msgstr "Nem alálható érvényes árlista sor ! :" +msgstr "Nem található érvényes árlista sor ! :" #. module: sale #: code:addons/sale/wizard/sale_make_invoice_advance.py:113 @@ -1490,7 +1494,7 @@ msgid "" msgstr "" "Ez egy olyan számlalista, amely ehhez az értékesítési megbízáshoz jött " "létre. Ugyanaz az értékesítési megbízás több alkalommal is számlázásra " -"kerülhetett (például sorok alapján)." +"kerülhetett (például tételek alapján)." #. module: sale #: report:sale.order:0 @@ -1500,7 +1504,7 @@ msgstr "Az Ön hivatkozása" #. module: sale #: view:sale.advance.payment.inv:0 msgid "Show Lines to Invoice" -msgstr "Mutassa a számlázandó sorokat" +msgstr "Mutassa a számlázandó tételeket" #. module: sale #: field:sale.report,date:0 @@ -1553,7 +1557,7 @@ msgid "" "prices of existing order lines will not be updated." msgstr "" "Ha ennek a megrendelésnek az árlistáját megváltoztatja (esetleg a " -"pénznemet), a meglévő megrendelés sorai nem lesznek frissítve." +"pénznemet), a meglévő megrendelés tételei nem lesznek frissítve." #. module: sale #: view:sale.order.line:0 @@ -1602,7 +1606,7 @@ msgstr "Számla" #. module: sale #: view:sale.order.line:0 msgid "My Sales Order Lines" -msgstr "Az én megrendeléseim sorai" +msgstr "Az én értékesítési megbízásam tételei" #. module: sale #: model:process.transition.action,name:sale.process_transition_action_cancel0 @@ -1637,7 +1641,7 @@ msgstr "Árajánlat küldés" #. module: sale #: view:sale.order.line:0 msgid "Search Uninvoiced Lines" -msgstr "Számlázatlan sorok keresése" +msgstr "Számlázatlan tételek keresése" #. module: sale #: model:ir.model,name:sale.model_account_config_settings @@ -1664,12 +1668,15 @@ msgid "" " " msgstr "" "

    \n" -" Itt van a lista a már kiszámlázott megrendelési sorokról. " +" Ez itt a lista a már kiszámlázott megrendelési tételekről. " "Tud\n" -" számlázni megrendelési részt, a megrendelés soraival. Nincs\n" +" számlázni megrendelési részt, a megrendelés tételeivel. " +"Nincs\n" " szüksége erre a listára, ha kiszállítási Kiszolgáltatási " -"jegyből\n" -" számláz vagy a teljes értékesítést egyszerre számlázza.\n" +"jegyből/\n" +" Szállító levélből számláz vagy a teljes értékesítést " +"egyszerre\n" +" számlázza.\n" "

    \n" " " @@ -1683,9 +1690,7 @@ msgstr "Szállítási cím:" #, python-format msgid "" "You cannot group sales having different currencies for the same partner." -msgstr "" -"Nem csoportosíthat értékesítést, ha ugyan ahhoz a partnerhez különböző " -"devizák vannak." +msgstr "Nem csoportosíthat különböző devizákon értékesítést egy partnerhez." #. module: sale #: view:sale.advance.payment.inv:0 @@ -1715,7 +1720,7 @@ msgid "" "Cannot find a pricelist line matching this product and quantity.\n" "You have to change either the product, the quantity or the pricelist." msgstr "" -"Nem található ehhez a termékhez és mennyiséghez hasonló árlista sor.\n" +"Nem található ehhez a termékhez és mennyiséghez hasonló árlista tétel.\n" "Változtassa meg vagy a terméket, a mennyiséget vagy az árlistát." #. module: sale @@ -1858,30 +1863,31 @@ msgstr "" "\n" "

    Tisztlet${object.partner_id.name},

    \n" " \n" -"

    Ez itt ${object.state in ('draft', 'sent') and 'quotation' or 'order " -"confirmation'} ${object.company_id.name} vállalattól:

    \n" +"

    Itt látható az Ön ${object.state in ('draft', 'sent') and " +"'árajánlata' or 'megrendelés visszaigazolása'} ${object.company_id.name} " +"vállalattól:

    \n" "\n" "

    \n" -"   REFERENCES
    \n" -"   Order number: ${object.name}
    \n" -"   Order total: ${object.amount_total} " +"   HIVATKOZÁSOK
    \n" +"   Szám: ${object.name}
    \n" +"   Összeg: ${object.amount_total} " "${object.pricelist_id.currency_id.name}
    \n" -"   Order date: ${object.date_order}
    \n" +"   Dátum: ${object.date_order}
    \n" " % if object.origin:\n" -"   Order reference: ${object.origin}
    \n" +"   Referencia rendelés: ${object.origin}
    \n" " % endif\n" " % if object.client_order_ref:\n" -"   Your reference: ${object.client_order_ref}
    \n" +"   Ön hivatkozási adatai: ${object.client_order_ref}
    \n" " % endif\n" " % if object.user_id:\n" -"   Your contact: ${object.user_id.name}\n" +"   Kapcsolattartója: ${object.user_id.name}\n" " % endif\n" "

    \n" "\n" " % if object.paypal_url:\n" "
    \n" -"

    It is also possible to directly pay with Paypal:

    \n" +"

    Lehetséges közvetlenül Paypal fizetés:

    \n" " \n" " \n" @@ -1889,8 +1895,9 @@ msgstr "" " % endif\n" "\n" "
    \n" -"

    If you have any question, do not hesitate to contact us.

    \n" -"

    Thank you for choosing ${object.company_id.name or 'us'}!

    \n" +"

    További felmerülő kérdésekben állunk szíves rendelkezésükre.

    \n" +"

    Köszönjük a vásárlását és további szép napot kíván a " +"${object.company_id.name or 'us'}!

    \n" "
    \n" "
    \n" "

    \n" -" OpenERP segít a hatékony értékesítési folyamat hatékony " +" OpenERP segít az értékesítési folyamat hatékony " "kezelésében:\n" " a megrendelés visszaigazolásában, a szállításban,\n" " a számlázásban és az áru ellenértékének beszedésében.\n" @@ -2087,7 +2094,7 @@ msgstr "Ellenőrizendő a könyvelő által." #. module: sale #: model:res.groups,name:sale.group_mrp_properties msgid "Properties on lines" -msgstr "A sorok tulajdonságai" +msgstr "Tételsorok tulajdonságai" #. module: sale #: selection:sale.order,state:0 @@ -2231,9 +2238,9 @@ msgid "" msgstr "" "

    \n" " Kattintson ehhez a vevőhöz tartozó árajánlat vagy " -"megrendelés létrehozásához.\n" +"értékesítési megbízás létrehozásához.\n" "

    \n" -" OpenERP segít a hatékony értékesítési folyamat hatékony " +" OpenERP segít az értékesítési folyamat hatékony " "kezelésében:\n" " árajánlat, megrendelés, szállítás,számlázás és " "kiegyenlítés.\n" @@ -2242,9 +2249,6 @@ msgstr "" "megbeszélésének szervezésében,\n" " és lehetővé teszik a megrendeléseken a vásárlói fejlődésének " "követését.\n" -" order, and allow your customer to keep track of the " -"evolution\n" -" of the sales order.\n" "

    \n" " " @@ -2295,7 +2299,7 @@ msgstr "Értékesítési megbízásból" #. module: sale #: view:sale.order.line:0 msgid "Confirmed sales order lines, not yet delivered" -msgstr "Megerősített megrendelési sorok, amik még nem kiszálítottak" +msgstr "Megerősített megrendelési tételek, amiket még nem szállítottak ki" #. module: sale #: model:process.transition,note:sale.process_transition_saleinvoice0 @@ -2318,14 +2322,15 @@ msgstr "EE" #. module: sale #: selection:sale.advance.payment.inv,advance_payment_method:0 msgid "Some order lines" -msgstr "Néhány megrendelés sor" +msgstr "Néhány megrendelési tétel" #. module: sale #: code:addons/sale/sale.py:983 #, python-format msgid "Cannot delete a sales order line which is in state '%s'." msgstr "" -"Nem törölhető az a megrendelési sor amelyik ebben az állapotban van '%s'." +"Nem törölhető az a megrendelési téetelsor amelyik ebben az állapotban van " +"'%s'." #. module: sale #: report:sale.order:0 @@ -2341,7 +2346,7 @@ msgstr "Számlázásra kész megrendelés" #. module: sale #: field:sale.config.settings,group_invoice_so_lines:0 msgid "Generate invoices based on the sales order lines" -msgstr "Számla létrehozása a megrendelési sorokra" +msgstr "Számla létrehozása a megrendelési téetelsorokra" #. module: sale #: view:sale.advance.payment.inv:0 @@ -2370,7 +2375,7 @@ msgstr "Árajánlat száma" #. module: sale #: model:res.groups,name:sale.group_discount_per_so_line msgid "Discount on lines" -msgstr "Árengedmény a sorokon" +msgstr "Árengedmény a téetelsorokon" #. module: sale #: field:sale.order,client_order_ref:0 diff --git a/addons/sale/i18n/zh_CN.po b/addons/sale/i18n/zh_CN.po index 1b8baee2912..36a9402f4d4 100644 --- a/addons/sale/i18n/zh_CN.po +++ b/addons/sale/i18n/zh_CN.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-21 17:04+0000\n" -"PO-Revision-Date: 2012-12-23 01:34+0000\n" -"Last-Translator: 盈通 ccdos \n" +"PO-Revision-Date: 2013-11-19 10:53+0000\n" +"Last-Translator: Guipo Hao \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: 2013-09-12 05:42+0000\n" -"X-Generator: Launchpad (build 16761)\n" +"X-Launchpad-Export-Date: 2013-11-20 05:24+0000\n" +"X-Generator: Launchpad (build 16831)\n" #. module: sale #: help:sale.order,message_summary:0 @@ -333,6 +333,10 @@ msgid "" "available.\n" " This installs the module analytic_user_function." msgstr "" +"允许定义特定用户针对给定帐户的默认功能。\n" +" 该功能主要用于用户编辑时间计划。值被重赋并且域被自动填充。\n" +" 但是仍有可能改变这些值。\n" +" 这将安装模块 analytic_user_function。" #. module: sale #: selection:sale.order,state:0 @@ -690,6 +694,9 @@ msgid "" "user-wise as well as month wise.\n" " This installs the module account_analytic_analysis." msgstr "" +"用来改变帐号分析视图来给服务公司的经理显示重要数据。\n" +" 您也可以按照用户或月度浏览帐号分析汇总报告。\n" +" 这将安装模块 account_analytic_analysis。" #. module: sale #: field:sale.order,create_date:0 @@ -1765,6 +1772,90 @@ msgid "" "
    \n" " " msgstr "" +"\n" +"
    \n" +"\n" +"

    Hello ${object.partner_id.name},

    \n" +" \n" +"

    此为您的 ${object.state in ('draft', 'sent') 和 'quotation' or 'order " +"confirmation'} from ${object.company_id.name}:

    \n" +"\n" +"

    \n" +"   REFERENCES
    \n" +"   Order number: ${object.name}
    \n" +"   Order total: ${object.amount_total} " +"${object.pricelist_id.currency_id.name}
    \n" +"   Order date: ${object.date_order}
    \n" +" % if object.origin:\n" +"   Order reference: ${object.origin}
    \n" +" % endif\n" +" % if object.client_order_ref:\n" +"   Your reference: ${object.client_order_ref}
    \n" +" % endif\n" +" % if object.user_id:\n" +"   Your contact:
    ${object.user_id.name}\n" +" % endif\n" +"

    \n" +"\n" +" % if object.paypal_url:\n" +"
    \n" +"

    还能直接由Paypal直接支付:

    \n" +" \n" +" \n" +" \n" +" % endif\n" +"\n" +"
    \n" +"

    如有任何疑问,请直接接洽我们。

    \n" +"

    感谢选择 ${object.company_id.name or 'us'}!

    \n" +"
    \n" +"
    \n" +"
    \n" +"

    \n" +" ${object.company_id.name}

    \n" +"
    \n" +"
    \n" +" \n" +" % if object.company_id.street:\n" +" ${object.company_id.street}
    \n" +" % endif\n" +" % if object.company_id.street2:\n" +" ${object.company_id.street2}
    \n" +" % endif\n" +" % if object.company_id.city or object.company_id.zip:\n" +" ${object.company_id.zip} ${object.company_id.city}
    \n" +" % endif\n" +" % if object.company_id.country_id:\n" +" ${object.company_id.state_id and ('%s, ' % " +"object.company_id.state_id.name) or ''} ${object.company_id.country_id.name " +"or ''}
    \n" +" % endif\n" +"
    \n" +" % if object.company_id.phone:\n" +"
    \n" +" Phone:  ${object.company_id.phone}\n" +"
    \n" +" % endif\n" +" % if object.company_id.website:\n" +"
    \n" +" Web : ${object.company_id.website}\n" +"
    \n" +" %endif\n" +"

    \n" +"
    \n" +"
    \n" +" " #. module: sale #: view:sale.order.line:0 diff --git a/addons/sale/report/sale_report.py b/addons/sale/report/sale_report.py index d5f07f863b9..2368a9849de 100644 --- a/addons/sale/report/sale_report.py +++ b/addons/sale/report/sale_report.py @@ -70,7 +70,7 @@ class sale_report(osv.osv): t.uom_id as product_uom, sum(l.product_uom_qty / u.factor * u2.factor) as product_uom_qty, sum(l.product_uom_qty * l.price_unit * (100.0-l.discount) / 100.0) as price_total, - 1 as nbr, + count(*) as nbr, s.date_order as date, s.date_confirm as date_confirm, to_char(s.date_order, 'YYYY') as year, @@ -85,15 +85,14 @@ class sale_report(osv.osv): s.pricelist_id as pricelist_id, s.project_id as analytic_account_id from - sale_order s - join sale_order_line l on (s.id=l.order_id) + sale_order_line l + join sale_order s on (l.order_id=s.id) left join product_product p on (l.product_id=p.id) left join product_template t on (p.product_tmpl_id=t.id) left join product_uom u on (u.id=l.product_uom) left join product_uom u2 on (u2.id=t.uom_id) group by l.product_id, - l.product_uom_qty, l.order_id, t.uom_id, t.categ_id, diff --git a/addons/sale/sale.py b/addons/sale/sale.py index ad048e505e5..7a32b919eae 100644 --- a/addons/sale/sale.py +++ b/addons/sale/sale.py @@ -977,9 +977,9 @@ class mail_compose_message(osv.Model): def send_mail(self, cr, uid, ids, context=None): context = context or {} - if context.get('default_model') == 'sale.order' and context.get('default_res_id') and context.get('mark_so_as_sent'): + if context.get('active_model') == 'sale.order' and context.get('active_ids') and context.get('mark_so_as_sent'): context = dict(context, mail_post_autofollow=True) - self.pool.get('sale.order').signal_quotation_sent(cr, uid, [context['default_res_id']]) + self.pool.get('sale.order').signal_quotation_sent(cr, uid, context['active_ids']) return super(mail_compose_message, self).send_mail(cr, uid, ids, context=context) diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml index 53c4a166977..60e5c83ecf0 100644 --- a/addons/sale/sale_view.xml +++ b/addons/sale/sale_view.xml @@ -122,7 +122,6 @@ - - +