[MERGE] merge with trunk addons

bzr revid: mva@openerp.com-20120410143450-5nb8w9t49y3x0tqg
This commit is contained in:
MVA
2012-04-10 16:34:50 +02:00
178 changed files with 6904 additions and 1696 deletions
+40 -10
View File
@@ -178,6 +178,7 @@ class account_invoice(osv.osv):
return invoice_ids
_name = "account.invoice"
_inherit = ['mail.thread']
_description = 'Invoice'
_order = "id desc"
@@ -355,12 +356,8 @@ class account_invoice(osv.osv):
context = {}
try:
res = super(account_invoice, self).create(cr, uid, vals, context)
for inv_id, name in self.name_get(cr, uid, [res], context=context):
ctx = context.copy()
if vals.get('type', 'in_invoice') in ('out_invoice', 'out_refund'):
ctx = self.get_log_context(cr, uid, context=ctx)
message = _("Invoice '%s' is waiting for validation.") % name
self.log(cr, uid, inv_id, message, context=ctx)
if res:
self.create_send_note(cr, uid, [res], context=context)
return res
except Exception, e:
if '"journal_id" viol' in e.args[0]:
@@ -373,9 +370,7 @@ class account_invoice(osv.osv):
if context is None:
context = {}
self.write(cr, uid, ids, {'state':'paid'}, context=context)
for inv_id, name in self.name_get(cr, uid, ids, context=context):
message = _("Invoice '%s' is paid.") % name
self.log(cr, uid, inv_id, message)
self.confirm_paid_send_note(cr, uid, ids, context=context)
return True
def unlink(self, cr, uid, ids, context=None):
@@ -943,6 +938,11 @@ class account_invoice(osv.osv):
move_obj.post(cr, uid, [move_id], context=ctx)
self._log_event(cr, uid, ids)
return True
def invoice_validate(self, cr, uid, ids, context=None):
self.write(cr, uid, ids, {'state':'open'}, context=context)
self.invoice_validate_send_note(cr, uid, ids, context=context)
return True
def line_get_convert(self, cr, uid, x, part, date, context=None):
return {
@@ -1033,6 +1033,7 @@ class account_invoice(osv.osv):
# will be automatically deleted too
account_move_obj.unlink(cr, uid, move_ids, context=context)
self._log_event(cr, uid, ids, -1.0, 'Cancel Invoice')
self.invoice_cancel_send_note(cr, uid, ids, context=context)
return True
###################
@@ -1240,7 +1241,36 @@ class account_invoice(osv.osv):
# Update the stored value (fields.function), so we write to trigger recompute
self.pool.get('account.invoice').write(cr, uid, ids, {}, context=context)
return True
# -----------------------------------------
# OpenChatter notifications and need_action
# -----------------------------------------
def _get_document_type(self, type):
type_dict = {
'out_invoice': 'Customer invoice',
'in_invoice': 'Supplier invoice',
'out_refund': 'Customer Refund',
'in_refund': 'Supplier Refund',
}
return type_dict.get(type, 'Invoice')
def create_send_note(self, cr, uid, ids, context=None):
for obj in self.browse(cr, uid, ids, context=context):
self.message_append_note(cr, uid, [obj.id],body=_("%s <b>created</b>.") % (self._get_document_type(obj.type)), context=context)
def invoice_validate_send_note(self, cr, uid, ids, context=None):
for obj in self.browse(cr, uid, ids, context=context):
self.message_append_note(cr, uid, [obj.id], body=_("%s <b>validated</b>.") % (self._get_document_type(obj.type)), context=context)
def confirm_paid_send_note(self, cr, uid, ids, context=None):
for obj in self.browse(cr, uid, ids, context=context):
self.message_append_note(cr, uid, [obj.id], body=_("%s <b>paid</b>.") % (self._get_document_type(obj.type)), context=context)
def invoice_cancel_send_note(self, cr, uid, ids, context=None):
for obj in self.browse(cr, uid, ids, context=context):
self.message_append_note(cr, uid, [obj.id], body=_("%s <b>cancelled</b>.") % (self._get_document_type(obj.type)), context=context)
account_invoice()
class account_invoice_line(osv.osv):
+2
View File
@@ -243,6 +243,7 @@
</field>
</page>
</notebook>
<field name="message_ids_social" colspan="4" widget="ThreadView" nolabel="1"/>
</form>
</field>
</record>
@@ -338,6 +339,7 @@
</field>
</page>
</notebook>
<field name="message_ids_social" colspan="4" widget="ThreadView" nolabel="1"/>
</form>
</field>
</record>
+1 -1
View File
@@ -27,7 +27,7 @@
<field name="action">action_date_assign()
action_move_create()
action_number()
write({'state':'open'})</field>
invoice_validate()</field>
<field name="kind">function</field>
</record>
<record model="workflow.activity" id="act_open_test">
+10 -6
View File
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
"PO-Revision-Date: 2012-01-11 09:11+0000\n"
"PO-Revision-Date: 2012-04-06 04:57+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\n"
"Language-Team: Czech <openerp-i18n-czech@lists.launchpad.net>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-02-09 07:10+0000\n"
"X-Generator: Launchpad (build 14763)\n"
"X-Launchpad-Export-Date: 2012-04-07 04:56+0000\n"
"X-Generator: Launchpad (build 15060)\n"
"X-Poedit-Language: Czech\n"
#. module: account_asset
@@ -401,6 +401,8 @@ msgid ""
"currency. You should remove the secondary currency on the account or select "
"a multi-currency view on the journal."
msgstr ""
"Vybraný účet vašeho záznamu deníku vynucuje použití druhotné měny. Měli "
"byste odstranit druhotnou měnu z účtu nebo vybrat více-měny."
#. module: account_asset
#: view:asset.asset.report:0
@@ -445,6 +447,8 @@ msgid ""
"The date of your Journal Entry is not in the defined period! You should "
"change the date or remove this constraint from the journal."
msgstr ""
"Datum vašeho záznamu deníku není v určeném období! Měli byste změnit datum "
"nebo odstranit omezení z deníku."
#. module: account_asset
#: field:account.asset.asset,note:0 field:account.asset.category,note:0
@@ -507,7 +511,7 @@ msgstr "Zaúčtované řádky odpisů"
#. module: account_asset
#: constraint:account.move.line:0
msgid "Company must be the same for its related account and period."
msgstr ""
msgstr "Společnost musí být stejná pro své vztažené účty a období."
#. module: account_asset
#: field:account.asset.asset,child_ids:0
@@ -537,7 +541,7 @@ msgstr "Majetek zakoupený v tomto měsíci"
#. module: account_asset
#: constraint:account.move.line:0
msgid "You can not create journal items on an account of type view."
msgstr ""
msgstr "Nemůžete vytvořit položky deníku v účtu typu pohled."
#. module: account_asset
#: view:asset.asset.report:0
@@ -769,7 +773,7 @@ msgstr "Vytvořit pohyby majetku"
#. module: account_asset
#: constraint:account.move.line:0
msgid "You can not create journal items on closed account."
msgstr ""
msgstr "Nemůžete vytvořit položky deníku v uzavřeném účtu."
#. module: account_asset
#: model:ir.actions.act_window,help:account_asset.action_asset_asset_report
+23
View File
@@ -0,0 +1,23 @@
# 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 <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:35+0000\n"
"PO-Revision-Date: 2012-04-06 04:54+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\n"
"Language-Team: Czech <cs@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: account_cancel
#: view:account.invoice:0
msgid "Cancel"
msgstr "Zrušit"
+1 -1
View File
@@ -14,7 +14,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-06 04:37+0000\n"
"X-Launchpad-Export-Date: 2012-04-07 04:56+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: account_check_writing
@@ -356,7 +356,7 @@
</group>
<group col="2" colspan="1">
<group col="4" colspan="1" attrs="{'invisible':[('currency_id','=',False),('is_multi_currency','=',False)]}">
<separator string="Currency Options" colspan="4"/>
<separator string="Currency Options" colspan="4" groups='base.group_extended'/>
<field name="is_multi_currency" invisible="1"/>
<field name="payment_rate" required="1" on_change="onchange_rate(payment_rate, amount, currency_id, payment_rate_currency_id, company_id, context)" groups='base.group_extended' colspan="3"/>
<field name="payment_rate_currency_id" groups='base.group_extended' colspan="1" nolabel="1" on_change="onchange_payment_rate_currency(currency_id, payment_rate, payment_rate_currency_id, date, amount, company_id, context)"/>
+79
View File
@@ -0,0 +1,79 @@
# 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 <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:35+0000\n"
"PO-Revision-Date: 2012-04-08 05:16+0000\n"
"Last-Translator: Masaki Yamaya <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-09 04:56+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: analytic_user_function
#: field:analytic.user.funct.grid,product_id:0
msgid "Product"
msgstr "商品"
#. module: analytic_user_function
#: model:ir.model,name:analytic_user_function.model_analytic_user_funct_grid
msgid "Relation table between users and products on a analytic account"
msgstr "分析アカウントのユーザと商品の関係テーブル"
#. module: analytic_user_function
#: constraint:hr.analytic.timesheet:0
msgid "You cannot modify an entry in a Confirmed/Done timesheet !."
msgstr "確認済みのタイムシートの項目を変更することはできません。"
#. module: analytic_user_function
#: field:analytic.user.funct.grid,account_id:0
#: model:ir.model,name:analytic_user_function.model_account_analytic_account
msgid "Analytic Account"
msgstr "分析アカウント"
#. module: analytic_user_function
#: view:account.analytic.account:0
#: field:account.analytic.account,user_product_ids:0
msgid "Users/Products Rel."
msgstr "ユーザ・商品の関係"
#. module: analytic_user_function
#: field:analytic.user.funct.grid,user_id:0
msgid "User"
msgstr "ユーザ"
#. module: analytic_user_function
#: code:addons/analytic_user_function/analytic_user_function.py:96
#: code:addons/analytic_user_function/analytic_user_function.py:131
#, python-format
msgid "There is no expense account define for this product: \"%s\" (id:%d)"
msgstr "商品 \"%s\" (id:%d) のアカウントが定義されていません。"
#. module: analytic_user_function
#: code:addons/analytic_user_function/analytic_user_function.py:95
#: code:addons/analytic_user_function/analytic_user_function.py:130
#, python-format
msgid "Error !"
msgstr "エラー"
#. module: analytic_user_function
#: constraint:account.analytic.account:0
msgid "Error! You can not create recursive analytic accounts."
msgstr "エラー。反復した分析アカウントを作ることはできません"
#. module: analytic_user_function
#: model:ir.model,name:analytic_user_function.model_hr_analytic_timesheet
msgid "Timesheet Line"
msgstr "タイムシートの行"
#. module: analytic_user_function
#: view:analytic.user.funct.grid:0
msgid "User's Product for this Analytic Account"
msgstr "この分析アカウントのユーザの商品"
+135
View File
@@ -0,0 +1,135 @@
# 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 <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2012-04-08 06:15+0000\n"
"Last-Translator: Masaki Yamaya <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-09 04:56+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: association
#: field:profile.association.config.install_modules_wizard,wiki:0
msgid "Wiki"
msgstr ""
#. module: association
#: view:profile.association.config.install_modules_wizard:0
msgid "Event Management"
msgstr "イベント管理"
#. module: association
#: field:profile.association.config.install_modules_wizard,project_gtd:0
msgid "Getting Things Done"
msgstr "物事を完了"
#. module: association
#: model:ir.module.module,description:association.module_meta_information
msgid "This module is to create Profile for Associates"
msgstr ""
#. module: association
#: field:profile.association.config.install_modules_wizard,progress:0
msgid "Configuration Progress"
msgstr "設定を進行中"
#. module: association
#: view:profile.association.config.install_modules_wizard:0
msgid ""
"Here are specific applications related to the Association Profile you "
"selected."
msgstr ""
#. module: association
#: view:profile.association.config.install_modules_wizard:0
msgid "title"
msgstr "タイトル"
#. module: association
#: help:profile.association.config.install_modules_wizard,event_project:0
msgid "Helps you to manage and organize your events."
msgstr ""
#. module: association
#: field:profile.association.config.install_modules_wizard,config_logo:0
msgid "Image"
msgstr "画像"
#. module: association
#: help:profile.association.config.install_modules_wizard,hr_expense:0
msgid ""
"Tracks and manages employee expenses, and can automatically re-invoice "
"clients if the expenses are project-related."
msgstr ""
#. module: association
#: help:profile.association.config.install_modules_wizard,project_gtd:0
msgid ""
"GTD is a methodology to efficiently organise yourself and your tasks. This "
"module fully integrates GTD principle with OpenERP's project management."
msgstr ""
#. module: association
#: view:profile.association.config.install_modules_wizard:0
msgid "Resources Management"
msgstr ""
#. module: association
#: model:ir.module.module,shortdesc:association.module_meta_information
msgid "Association profile"
msgstr ""
#. module: association
#: field:profile.association.config.install_modules_wizard,hr_expense:0
msgid "Expenses Tracking"
msgstr ""
#. module: association
#: model:ir.actions.act_window,name:association.action_config_install_module
#: view:profile.association.config.install_modules_wizard:0
msgid "Association Application Configuration"
msgstr ""
#. module: association
#: help:profile.association.config.install_modules_wizard,wiki:0
msgid ""
"Lets you create wiki pages and page groups in order to keep track of "
"business knowledge and share it with and between your employees."
msgstr ""
#. module: association
#: help:profile.association.config.install_modules_wizard,project:0
msgid ""
"Helps you manage your projects and tasks by tracking them, generating "
"plannings, etc..."
msgstr ""
#. module: association
#: model:ir.model,name:association.model_profile_association_config_install_modules_wizard
msgid "profile.association.config.install_modules_wizard"
msgstr ""
#. module: association
#: field:profile.association.config.install_modules_wizard,event_project:0
msgid "Events"
msgstr ""
#. module: association
#: view:profile.association.config.install_modules_wizard:0
#: field:profile.association.config.install_modules_wizard,project:0
msgid "Project Management"
msgstr ""
#. module: association
#: view:profile.association.config.install_modules_wizard:0
msgid "Configure"
msgstr ""
+1 -1
View File
@@ -14,7 +14,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-06 04:37+0000\n"
"X-Launchpad-Export-Date: 2012-04-07 04:56+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. #-#-#-#-# auth_openid.pot (OpenERP Server 6.1rc1) #-#-#-#-#
+46
View File
@@ -0,0 +1,46 @@
# 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 <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-04-06 05:20+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\n"
"Language-Team: Czech <cs@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: base_crypt
#: model:ir.model,name:base_crypt.model_res_users
msgid "res.users"
msgstr "res.users"
#. module: base_crypt
#: sql_constraint:res.users:0
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 !"
#. module: base_crypt
#: constraint:res.users:0
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"
#. module: base_crypt
#: code:addons/base_crypt/crypt.py:140
#, python-format
msgid "Please specify the password !"
msgstr "Prosíme zadejte heslo!"
#. module: base_crypt
#: code:addons/base_crypt/crypt.py:140
#, python-format
msgid "Error"
msgstr "Chyba"
+16 -13
View File
@@ -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-02-08 00:36+0000\n"
"PO-Revision-Date: 2010-08-03 01:50+0000\n"
"Last-Translator: Mantavya Gajjar (Open ERP) <Unknown>\n"
"PO-Revision-Date: 2012-04-06 06:16+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\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: 2012-02-09 06:01+0000\n"
"X-Generator: Launchpad (build 14763)\n"
"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: base_iban
#: constraint:res.partner.bank:0
@@ -23,27 +23,30 @@ msgid ""
"Please define BIC/Swift code on bank for bank type IBAN Account to make "
"valid payments"
msgstr ""
"\n"
"Prosíme určete kód BIC/Swift u banky pro IBAN účet bankovního typu k ověření "
"plateb"
#. module: base_iban
#: code:addons/base_iban/base_iban.py:139
#, python-format
msgid "This IBAN does not pass the validation check, please verify it"
msgstr ""
msgstr "Tento IBAN neprošel testem ověření, prosíme zkontrolujte jej"
#. module: base_iban
#: model:res.partner.bank.type,format_layout:base_iban.bank_iban
msgid "%(bank_name)s: IBAN %(acc_number)s - BIC %(bank_bic)s"
msgstr ""
msgstr "%(bank_name)s: IBAN %(acc_number)s - BIC %(bank_bic)s"
#. module: base_iban
#: model:res.partner.bank.type.field,name:base_iban.bank_swift_field
msgid "bank_bic"
msgstr ""
msgstr "bank_bic"
#. module: base_iban
#: model:res.partner.bank.type.field,name:base_iban.bank_zip_field
msgid "zip"
msgstr "zip"
msgstr "psč"
#. module: base_iban
#: help:res.partner.bank,iban:0
@@ -53,12 +56,12 @@ msgstr "Mezinárodní Bankovní Číslo Účtu"
#. module: base_iban
#: model:ir.model,name:base_iban.model_res_partner_bank
msgid "Bank Accounts"
msgstr ""
msgstr "Bankovní účty"
#. module: base_iban
#: model:res.partner.bank.type.field,name:base_iban.bank_country_field
msgid "country_id"
msgstr "id_státu"
msgstr "country_id"
#. module: base_iban
#: code:addons/base_iban/base_iban.py:136
@@ -66,7 +69,7 @@ msgstr "id_státu"
msgid ""
"The IBAN does not seem to be correct. You should have entered something like "
"this %s"
msgstr ""
msgstr "IBAN nevypadá jako správný. Měli byste zadat něco jako toto %s"
#. module: base_iban
#: field:res.partner.bank,iban:0
@@ -77,7 +80,7 @@ msgstr "IBAN"
#: code:addons/base_iban/base_iban.py:140
#, python-format
msgid "The IBAN is invalid, it should begin with the country code"
msgstr ""
msgstr "IBAN je neplatný, měl by začínat kódem země"
#. module: base_iban
#: model:res.partner.bank.type,name:base_iban.bank_iban
@@ -87,7 +90,7 @@ msgstr "Účet IBAN"
#. module: base_iban
#: constraint:res.partner.bank:0
msgid "The RIB and/or IBAN is not valid"
msgstr ""
msgstr "RIB a/nebo IBAN není platný"
#~ msgid "Invalid XML for View Architecture!"
#~ msgstr "Invalidní XML pro zobrazení architektury!"
+91
View File
@@ -0,0 +1,91 @@
# 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 <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-04-08 06:11+0000\n"
"Last-Translator: Masaki Yamaya <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-09 04:56+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: base_iban
#: 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: base_iban
#: code:addons/base_iban/base_iban.py:139
#, python-format
msgid "This IBAN does not pass the validation check, please verify it"
msgstr ""
#. module: base_iban
#: model:res.partner.bank.type,format_layout:base_iban.bank_iban
msgid "%(bank_name)s: IBAN %(acc_number)s - BIC %(bank_bic)s"
msgstr ""
#. module: base_iban
#: model:res.partner.bank.type.field,name:base_iban.bank_swift_field
msgid "bank_bic"
msgstr ""
#. module: base_iban
#: model:res.partner.bank.type.field,name:base_iban.bank_zip_field
msgid "zip"
msgstr ""
#. module: base_iban
#: help:res.partner.bank,iban:0
msgid "International Bank Account Number"
msgstr "国際銀行口座番号"
#. module: base_iban
#: model:ir.model,name:base_iban.model_res_partner_bank
msgid "Bank Accounts"
msgstr "銀行口座"
#. module: base_iban
#: model:res.partner.bank.type.field,name:base_iban.bank_country_field
msgid "country_id"
msgstr ""
#. module: base_iban
#: code:addons/base_iban/base_iban.py:136
#, python-format
msgid ""
"The IBAN does not seem to be correct. You should have entered something like "
"this %s"
msgstr ""
#. module: base_iban
#: field:res.partner.bank,iban:0
msgid "IBAN"
msgstr "国際銀行口座番号"
#. module: base_iban
#: code:addons/base_iban/base_iban.py:140
#, python-format
msgid "The IBAN is invalid, it should begin with the country code"
msgstr ""
#. module: base_iban
#: model:res.partner.bank.type,name:base_iban.bank_iban
msgid "IBAN Account"
msgstr ""
#. module: base_iban
#: constraint:res.partner.bank:0
msgid "The RIB and/or IBAN is not valid"
msgstr "銀行情報のRIBまたはIBANが正しくありません。"
+6 -3
View File
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2011-09-09 10:24+0000\n"
"PO-Revision-Date: 2012-04-06 05:26+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\n"
"Language-Team: Czech <cs@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-02-09 06:14+0000\n"
"X-Generator: Launchpad (build 14763)\n"
"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n"
"X-Generator: Launchpad (build 15060)\n"
"X-Poedit-Language: Czech\n"
#. module: base_module_record
@@ -90,6 +90,9 @@ msgid ""
"publish it on http://www.openerp.com, in the 'Modules' section. You can do "
"it through the website or using features of the 'base_module_publish' module."
msgstr ""
"Pokud myslíte, že váš modul může zajímat jiné lidi, byli bychom rádi, abyste "
"jej zveřejnili v sekci 'Moduly' na http://www.openerp.com. Můžete to provést "
"přes webové stránky nebo použitím schopnosti modulu 'base_module_publish'."
#. module: base_module_record
#: wizard_field:base_module_record.module_record_data,init,check_date:0
+32
View File
@@ -0,0 +1,32 @@
# 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 <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2012-04-06 06:17+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\n"
"Language-Team: Czech <cs@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: base_tools
#: model:ir.module.module,shortdesc:base_tools.module_meta_information
msgid "Common base for tools modules"
msgstr "Obecný základ pro nástrojové moduly"
#. module: base_tools
#: model:ir.module.module,description:base_tools.module_meta_information
msgid ""
"\n"
" "
msgstr ""
"\n"
" "
+16 -10
View File
@@ -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-02-08 00:36+0000\n"
"PO-Revision-Date: 2011-08-07 19:04+0000\n"
"Last-Translator: Jan B. Krejčí <Unknown>\n"
"PO-Revision-Date: 2012-04-06 06:22+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\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: 2012-02-09 06:15+0000\n"
"X-Generator: Launchpad (build 14763)\n"
"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: base_vat
#: code:addons/base_vat/base_vat.py:141
@@ -23,31 +23,33 @@ msgid ""
"This VAT number does not seem to be valid.\n"
"Note: the expected format is %s"
msgstr ""
"Toto DIČ nevypadá jako platné.\n"
"Poznámka: očekávaný formát je %s"
#. module: base_vat
#: sql_constraint:res.company:0
msgid "The company name must be unique !"
msgstr ""
msgstr "Jméno společnosti musí být jedinečné !"
#. module: base_vat
#: constraint:res.partner:0
msgid "Error ! You cannot create recursive associated members."
msgstr ""
msgstr "Chyba ! Nemůžete vytvořit rekurzivní přidružené členy."
#. module: base_vat
#: field:res.company,vat_check_vies:0
msgid "VIES VAT Check"
msgstr ""
msgstr "Kontrola DIČ přes VIES"
#. module: base_vat
#: model:ir.model,name:base_vat.model_res_company
msgid "Companies"
msgstr ""
msgstr "Společnosti"
#. module: base_vat
#: constraint:res.company:0
msgid "Error! You can not create recursive companies."
msgstr ""
msgstr "Chyba! Nemůžete vytvořit rekurzivní společnosti."
#. module: base_vat
#: help:res.partner,vat_subjected:0
@@ -55,11 +57,13 @@ msgid ""
"Check this box if the partner is subjected to the VAT. It will be used for "
"the VAT legal statement."
msgstr ""
"Zaškrtněte toto políčko, pokud partner podléhá DPH. Toto bude použito pro "
"přiznání k DPH."
#. module: base_vat
#: model:ir.model,name:base_vat.model_res_partner
msgid "Partner"
msgstr ""
msgstr "Partner"
#. module: base_vat
#: help:res.company,vat_check_vies:0
@@ -67,6 +71,8 @@ msgid ""
"If checked, Partners VAT numbers will be fully validated against EU's VIES "
"service rather than via a simple format validation (checksum)."
msgstr ""
"Pokud je zaškrtnuto, DIČ partnera bude plně ověřeno proti službě VIES EU "
"raději než přes jednoduché ověření formátu (kontrolní součet)."
#. module: base_vat
#: field:res.partner,vat_subjected:0
-41
View File
@@ -186,45 +186,4 @@ class board_line(osv.osv):
'position': lambda *args: 'left'
}
class res_log_report(osv.osv):
""" Log Report """
_name = "res.log.report"
_auto = False
_description = "Log Report"
_columns = {
'name': fields.char('Year', size=64, required=False, readonly=True),
'month':fields.selection([('01', 'January'), ('02', 'February'), \
('03', 'March'), ('04', 'April'),\
('05', 'May'), ('06', 'June'), \
('07', 'July'), ('08', 'August'),\
('09', 'September'), ('10', 'October'),\
('11', 'November'), ('12', 'December')], 'Month', readonly=True),
'day': fields.char('Day', size=128, readonly=True),
'creation_date': fields.date('Creation Date', readonly=True),
'res_model': fields.char('Object', size=128),
'nbr': fields.integer('# of Entries', readonly=True)
}
def init(self, cr):
"""
Log Report
@param cr: the current row, from the database cursor
"""
tools.drop_view_if_exists(cr,'res_log_report')
cr.execute("""
CREATE OR REPLACE VIEW res_log_report AS (
SELECT
l.id as id,
1 as nbr,
to_char(l.create_date, 'YYYY') as name,
to_char(l.create_date, 'MM') as month,
to_char(l.create_date, 'YYYY-MM-DD') as day,
to_char(l.create_date, 'YYYY-MM-DD') as creation_date,
l.res_model as res_model,
date_trunc('day',l.create_date) as create_date
FROM
res_log l
)""")
res_log_report()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+3 -106
View File
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<data>
<!-- User Connection -->
<record model="ir.ui.view" id="view_user_connection_tree">
<field name="name">user.connection.tree</field>
@@ -21,115 +22,11 @@
<field name="view_id" ref="view_user_connection_tree"></field>
</record>
<!-- Latest Activities -->
<record model="ir.actions.act_window" id="action_latest_activities_tree">
<field name="name">Latest Activities</field>
<field name="res_model">res.log</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
</record>
<!-- Log report search view -->
<record id="view_res_log_report_filter" model="ir.ui.view">
<field name="name">res.log.report.select</field>
<field name="model">res.log.report</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Log Analysis">
<group>
<filter icon="terp-go-year" string=" Year "
domain="[('create_date','&lt;=', time.strftime('%%Y-%%m-%%d')),('create_date','&gt;=',time.strftime('%%Y-01-01'))]"
help="Log created in current year"/>
<filter icon="terp-go-month" string=" Month "
name="month"
domain="[('create_date','&lt;=',(datetime.date.today()+relativedelta(day=31)).strftime('%%Y-%%m-%%d')),('create_date','&gt;=',(datetime.date.today()-relativedelta(day=1)).strftime('%%Y-%%m-%%d'))]"
help="Log created in current month"/>
<filter icon="terp-go-month"
string=" Month-1 "
domain="[('create_date','&lt;=', (datetime.date.today() - relativedelta(day=31, months=1)).strftime('%%Y-%%m-%%d')),('create_date','&gt;=',(datetime.date.today() - relativedelta(day=1,months=1)).strftime('%%Y-%%m-%%d'))]"
help="Log created in last month"/>
</group>
<newline/>
<group expand="1" string="Group By...">
<filter string="Model" icon="terp-go-home" context="{'group_by':'res_model'}" />
<separator orientation="vertical"/>
<filter string="Day" icon="terp-go-today"
domain="[]" context="{'group_by':'day'}"/>
<filter string="Month" icon="terp-go-month"
domain="[]" context="{'group_by':'month'}" />
<filter string="Year" icon="terp-go-year"
domain="[]" context="{'group_by':'name'}" />
</group>
</search>
</field>
</record>
<!-- Log report Tree view -->
<record id="view_res_log_report_tree" model="ir.ui.view">
<field name="name">res.log.report.tree</field>
<field name="model">res.log.report</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Log Analysis">
<field name="name" invisible="1"/>
<field name="month" invisible="1"/>
<field name="day" invisible="1"/>
<field name="res_model" invisible="1"/>
<field name="nbr" />
<field name="creation_date" invisible="1"/>
</tree>
</field>
</record>
<record id="board_config_overview" model="ir.actions.client">
<field name="name">Configuration Overview</field>
<field name="tag">board.config.overview</field>
</record>
<!-- Monthly Activity per Document -->
<record id="board_res_log_report_graph" model="ir.ui.view">
<field name="name">board.res.log.report.graph</field>
<field name="model">res.log.report</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph string="Monthly Activity per Document" type="bar">
<field name="res_model"/>
<field name="nbr" operator="+"/>
</graph>
</field>
</record>
<record id="board_monthly_res_log_report_action" model="ir.actions.act_window">
<field name="name">Monthly Activity per Document</field>
<field name="res_model">res.log.report</field>
<field name="view_type">form</field>
<field name="view_mode">graph,tree</field>
<field name="domain">[('create_date','&gt;',(datetime.date.today()-datetime.timedelta(days=30)).strftime('%Y-%m-%d'))]</field>
<field name="context">{'group_by':['res_model'],'group_by_no_leaf':1}</field>
<field name="view_id" ref="board_res_log_report_graph"></field>
</record>
<!-- Weekly Global Activity -->
<record id="board_weekly_res_log_report_graph" model="ir.ui.view">
<field name="name">board.weekly.res.log.report.graph</field>
<field name="model">res.log.report</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph string="Weekly Global Activity" type="bar">
<field name="day"/>
<field name="nbr" operator="+"/>
</graph>
</field>
</record>
<record id="board_weekly_res_log_report_action" model="ir.actions.act_window">
<field name="name">Weekly Global Activity</field>
<field name="res_model">res.log.report</field>
<field name="view_type">form</field>
<field name="view_mode">graph,tree</field>
<field name="domain">[('create_date','&gt;',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%Y-%m-%d'))]</field>
<field name="context">{'group_by':['day'],'group_by_no_leaf':1}</field>
<field name="view_id" ref="board_weekly_res_log_report_graph"></field>
</record>
<record id="board_administration_form" model="ir.ui.view">
<field name="name">board.administration.form</field>
<field name="model">board.board</field>
@@ -164,5 +61,5 @@
<menuitem id="base.menu_dashboard" name="Dashboards" parent="base.menu_reporting_board" sequence="0"/>
<menuitem id="base.menu_dashboard_admin" action="open_board_administration_form" parent="base.menu_dashboard" icon="terp-graph"/>
</data>
</data>
</openerp>
+11 -11
View File
@@ -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-02-08 00:36+0000\n"
"PO-Revision-Date: 2009-12-23 20:43+0000\n"
"Last-Translator: Kuvaly [LCT] <kuvaly@seznam.cz>\n"
"PO-Revision-Date: 2012-04-06 06:15+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\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: 2012-02-09 06:40+0000\n"
"X-Generator: Launchpad (build 14763)\n"
"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n"
"X-Generator: Launchpad (build 15060)\n"
"X-Poedit-Language: Czech\n"
#. module: board
@@ -40,13 +40,13 @@ msgstr "Poslední spojení"
#. module: board
#: view:res.log.report:0
msgid "Log created in last month"
msgstr ""
msgstr "Záznam vytvořený minulý měsíc"
#. module: board
#: view:board.board:0
#: model:ir.actions.act_window,name:board.open_board_administration_form
msgid "Administration Dashboard"
msgstr "Správa nástěnky"
msgstr "Nástěnka správy"
#. module: board
#: view:res.log.report:0
@@ -56,7 +56,7 @@ msgstr "Seskupit podle..."
#. module: board
#: view:res.log.report:0
msgid "Log created in current year"
msgstr ""
msgstr "Záznam vytvořený v tomto roce"
#. module: board
#: model:ir.model,name:board.model_board_board
@@ -93,7 +93,7 @@ msgstr "Měsíc"
#. module: board
#: view:res.log.report:0
msgid "Log created in current month"
msgstr ""
msgstr "Záznam vytvořený v tomto měsíci"
#. module: board
#: model:ir.actions.act_window,name:board.board_monthly_res_log_report_action
@@ -104,7 +104,7 @@ msgstr "Měsíční činnosti dle dokumentu"
#. module: board
#: view:board.board:0
msgid "Configuration Overview"
msgstr ""
msgstr "Přehled nastavení"
#. module: board
#: model:ir.actions.act_window,name:board.action_view_board_list_form
@@ -212,7 +212,7 @@ msgstr "Leden"
#. module: board
#: view:board.board:0
msgid "Users"
msgstr ""
msgstr "Uživatelé"
#. module: board
#: selection:res.log.report,month:0
@@ -265,7 +265,7 @@ msgstr "Model"
#. module: board
#: model:ir.actions.act_window,name:board.board_homepage_action
msgid "Home Page"
msgstr ""
msgstr "Domovská stránka"
#. module: board
#: model:ir.actions.act_window,name:board.action_latest_activities_tree
@@ -3,4 +3,3 @@ access_board_board all,board.board,model_board_board,,1,0,0,0
access_board_board_line all,board.board.line,model_board_board_line,,1,0,0,0
access_board_board system,board.board system,model_board_board,base.group_system,1,1,1,1
access_board_board_line system,board.board.line system,model_board_board_line,base.group_system,1,1,1,1
access_res_log_report all,res.log.report,model_res_log_report,,1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
3 access_board_board_line all board.board.line model_board_board_line 1 0 0 0
4 access_board_board system board.board system model_board_board base.group_system 1 1 1 1
5 access_board_board_line system board.board.line system model_board_board_line base.group_system 1 1 1 1
access_res_log_report all res.log.report model_res_log_report 1 0 0 0
+23
View File
@@ -0,0 +1,23 @@
# 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 <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-04-06 04:57+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\n"
"Language-Team: Czech <cs@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: claim_from_delivery
#: model:ir.actions.act_window,name:claim_from_delivery.action_claim_from_delivery
msgid "Claim"
msgstr "Pohledávka"
+73 -29
View File
@@ -127,7 +127,7 @@ class crm_case_section(osv.osv):
def name_get(self, cr, uid, ids, context=None):
"""Overrides orm name_get method"""
if not isinstance(ids, list) :
if not isinstance(ids, list) :
ids = [ids]
res = []
if not ids:
@@ -256,7 +256,40 @@ class crm_base(object):
data.update(self.onchange_partner_address_id(cr, uid, ids, addr['contact'])['value'])
return {'value': data}
def case_open(self, cr, uid, ids, *args):
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
return ''
def case_open_send_note(self, cr, uid, ids, context=None):
for id in ids:
msg = '%s has been <b>opened</b>.' % (self.case_get_note_msg_prefix(cr, uid, id, context=context))
self.message_append_note(cr, uid, [id], body=msg, context=context)
return True
def case_close_send_note(self, cr, uid, ids, context=None):
for id in ids:
msg = '%s has been <b>closed</b>.'% (self.case_get_note_msg_prefix(cr, uid, id, context=context))
self.message_append_note(cr, uid, [id], body=msg, context=context)
return True
def case_cancel_send_note(self, cr, uid, ids, context=None):
for id in ids:
msg = '%s has been <b>canceled</b>.' % (self.case_get_note_msg_prefix(cr, uid, id, context=context))
self.message_append_note(cr, uid, [id], body=msg, context=context)
return True
def case_pending_send_note(self, cr, uid, ids, context=None):
for id in ids:
msg = '%s is now <b>pending</b>.' % (self.case_get_note_msg_prefix(cr, uid, id, context=context))
self.message_append_note(cr, uid, [id], body=msg, context=context)
return True
def case_reset_send_note(self, cr, uid, ids, context=None):
for id in ids:
msg = '%s has been <b>renewed</b>.' % (self.case_get_note_msg_prefix(cr, uid, id, context=context))
self.message_append_note(cr, uid, [id], body=msg, context=context)
return True
def case_open(self, cr, uid, ids, context=None):
"""Opens Case
:param ids: List of case Ids
"""
@@ -265,12 +298,13 @@ class crm_base(object):
data = {'state': 'open', 'active': True}
if not case.user_id:
data['user_id'] = uid
self.write(cr, uid, case.id, data)
self.write(cr, uid, [case.id], data)
self.case_open_send_note(cr, uid, ids, context=context)
self._action(cr, uid, cases, 'open')
return True
def case_close(self, cr, uid, ids, *args):
def case_close(self, cr, uid, ids, context=None):
"""Closes Case
:param ids: List of case Ids
"""
@@ -278,10 +312,11 @@ class crm_base(object):
cases[0].state # to fill the browse record cache
self.write(cr, uid, ids, {'state': 'done', 'date_closed': time.strftime('%Y-%m-%d %H:%M:%S'), })
# We use the cache of cases to keep the old case state
self.case_close_send_note(cr, uid, ids, context=context)
self._action(cr, uid, cases, 'done')
return True
def case_cancel(self, cr, uid, ids, *args):
def case_cancel(self, cr, uid, ids, context=None):
"""Cancels Case
:param ids: List of case Ids
"""
@@ -289,26 +324,29 @@ class crm_base(object):
cases[0].state # to fill the browse record cache
self.write(cr, uid, ids, {'state': 'cancel', 'active': True})
# We use the cache of cases to keep the old case state
self.case_cancel_send_note(cr, uid, ids, context=context)
self._action(cr, uid, cases, 'cancel')
return True
def case_pending(self, cr, uid, ids, *args):
def case_pending(self, cr, uid, ids, context=None):
"""Marks case as pending
:param ids: List of case Ids
"""
cases = self.browse(cr, uid, ids)
cases[0].state # to fill the browse record cache
self.write(cr, uid, ids, {'state': 'pending', 'active': True})
self.case_pending_send_note(cr, uid, ids, context=context)
self._action(cr, uid, cases, 'pending')
return True
def case_reset(self, cr, uid, ids, *args):
def case_reset(self, cr, uid, ids, context=None):
"""Resets case as draft
:param ids: List of case Ids
"""
cases = self.browse(cr, uid, ids)
cases[0].state # to fill the browse record cache
self.write(cr, uid, ids, {'state': 'draft', 'active': True})
self.case_reset_send_note(cr, uid, ids, context=context)
self._action(cr, uid, cases, 'draft')
return True
@@ -323,12 +361,12 @@ class crm_base(object):
return rule_obj._action(cr, uid, rule_ids, cases, scrit=scrit, context=context)
class crm_case(crm_base):
""" A simple python class to be used for common functions
""" A simple python class to be used for common functions
Object that inherit from this class should inherit from mailgate.thread
And need a stage_id field
And object that inherit (orm inheritance) from a class the overwrite copy
And object that inherit (orm inheritance) from a class the overwrite copy
"""
def stage_find(self, cr, uid, section_id, domain=[], order='sequence'):
domain = list(domain)
if section_id:
@@ -387,34 +425,45 @@ class crm_case(crm_base):
default.update({ 'date_open': False })
return super(crm_case, self).copy(cr, uid, id, default, context=context)
def case_escalate_send_note(self, cr, uid, ids, new_section=None, context=None):
for id in ids:
if new_section:
msg = '%s has been <b>escalated</b> to <b>%s</b>.' % (self.case_get_note_msg_prefix(cr, uid, id, context=context), new_section.name)
else:
msg = '%s has been <b>escalated</b>.' % (self.case_get_note_msg_prefix(cr, uid, id, context=context))
self.message_append_note(cr, uid, [id], 'System Notification', msg, context=context)
return True
def case_open(self, cr, uid, ids, *args):
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
return ''
def case_open(self, cr, uid, ids, context=None):
"""Opens Case"""
cases = self.browse(cr, uid, ids)
self.message_append(cr, uid, cases, _('Open'))
for case in cases:
data = {'state': 'open', 'active': True }
if not case.user_id:
data['user_id'] = uid
self.write(cr, uid, case.id, data)
self.write(cr, uid, [case.id], data)
self.case_open_send_note(cr, uid, ids, context=context)
self._action(cr, uid, cases, 'open')
return True
def case_close(self, cr, uid, ids, *args):
def case_close(self, cr, uid, ids, context=None):
"""Closes Case"""
cases = self.browse(cr, uid, ids)
cases[0].state # to fill the browse record cache
self.message_append(cr, uid, cases, _('Close'))
self.write(cr, uid, ids, {'state': 'done',
'date_closed': time.strftime('%Y-%m-%d %H:%M:%S'),
})
#
# We use the cache of cases to keep the old case state
#
self.case_close_send_note(cr, uid, ids, context=context)
self._action(cr, uid, cases, 'done')
return True
def case_escalate(self, cr, uid, ids, *args):
def case_escalate(self, cr, uid, ids, context=None):
"""Escalates case to parent level"""
cases = self.browse(cr, uid, ids)
for case in cases:
@@ -427,42 +476,37 @@ class crm_case(crm_base):
else:
raise osv.except_osv(_('Error !'), _('You can not escalate, you are already at the top level regarding your sales-team category.'))
self.write(cr, uid, [case.id], data)
case.case_escalate_send_note(case.section_id.parent_id)
cases = self.browse(cr, uid, ids)
self.message_append(cr, uid, cases, _('Escalate'))
self._action(cr, uid, cases, 'escalate')
return True
def case_cancel(self, cr, uid, ids, *args):
def case_cancel(self, cr, uid, ids, context=None):
"""Cancels Case"""
cases = self.browse(cr, uid, ids)
cases[0].state # to fill the browse record cache
self.message_append(cr, uid, cases, _('Cancel'))
self.write(cr, uid, ids, {'state': 'cancel',
'active': True})
self.case_cancel_send_note(cr, uid, ids, context=context)
self._action(cr, uid, cases, 'cancel')
for case in cases:
message = _("The case '%s' has been cancelled.") % (case.name,)
self.log(cr, uid, case.id, message)
return True
def case_pending(self, cr, uid, ids, *args):
def case_pending(self, cr, uid, ids, context=None):
"""Marks case as pending"""
cases = self.browse(cr, uid, ids)
cases[0].state # to fill the browse record cache
self.message_append(cr, uid, cases, _('Pending'))
self.write(cr, uid, ids, {'state': 'pending', 'active': True})
self.case_pending_send_note(cr, uid, ids, context=context)
self._action(cr, uid, cases, 'pending')
return True
def case_reset(self, cr, uid, ids, *args):
def case_reset(self, cr, uid, ids, context=None):
"""Resets case as draft"""
state = 'draft'
if 'crm.phonecall' in args:
state = 'open'
cases = self.browse(cr, uid, ids)
cases[0].state # to fill the browse record cache
self.message_append(cr, uid, cases, _('Draft'))
self.write(cr, uid, ids, {'state': state, 'active': True})
self.case_reset_send_note(cr, uid, ids, context=context)
self._action(cr, uid, cases, state)
return True
+99 -68
View File
@@ -40,7 +40,7 @@ class crm_lead(crm_case, osv.osv):
_name = "crm.lead"
_description = "Lead/Opportunity"
_order = "priority,date_action,id desc"
_inherit = ['mail.thread','res.partner']
_inherit = ['ir.needaction_mixin', 'mail.thread','res.partner']
def _read_group_stage_ids(self, cr, uid, ids, domain, read_group_order=None, access_rights_uid=None, context=None):
access_rights_uid = access_rights_uid or uid
@@ -183,7 +183,6 @@ class crm_lead(crm_case, osv.osv):
'message_ids': fields.one2many('mail.message', 'res_id', 'Messages', domain=[('model','=',_name)]),
'subjects': fields.function(_get_email_subject, fnct_search=_history_search, string='Subject of Email', type='char', size=64),
# Only used for type opportunity
'probability': fields.float('Probability (%)',group_operator="avg"),
'planned_revenue': fields.float('Expected Revenue'),
@@ -215,6 +214,19 @@ class crm_lead(crm_case, osv.osv):
'color': 0,
}
def get_needaction_user_ids(self, cr, uid, ids, context=None):
result = dict.fromkeys(ids, [])
for obj in self.browse(cr, uid, ids, context=context):
# salesman must perform an action when in draft mode
if obj.state == 'draft' and obj.user_id:
result[obj.id] = [obj.user_id.id]
return result
def create(self, cr, uid, vals, context=None):
obj_id = super(crm_lead, self).create(cr, uid, vals, context)
self.create_send_note(cr, uid, [obj_id], context=context)
return obj_id
def on_change_optin(self, cr, uid, ids, optin):
return {'value':{'optin':optin,'optout':False}}
@@ -248,75 +260,58 @@ class crm_lead(crm_case, osv.osv):
def stage_find_won(self, cr, uid, section_id):
return self.stage_find_percent(cr, uid, 100.0, section_id)
def case_open(self, cr, uid, ids, *args):
for l in self.browse(cr, uid, ids):
# When coming from draft override date and stage otherwise just set state
if l.state == 'draft':
if l.type == 'lead':
message = _("The lead '%s' has been opened.") % l.name
elif l.type == 'opportunity':
message = _("The opportunity '%s' has been opened.") % l.name
else:
message = _("The case '%s' has been opened.") % l.name
self.log(cr, uid, l.id, message)
def case_open(self, cr, uid, ids, context=None):
for lead in self.browse(cr, uid, ids, context=context):
if lead.state == 'draft':
value = {'date_open': time.strftime('%Y-%m-%d %H:%M:%S')}
self.write(cr, uid, [l.id], value)
if l.type == 'opportunity' and not l.stage_id:
stage_id = self.stage_find(cr, uid, l.section_id.id or False, [('sequence','>',0)])
self.write(cr, uid, [lead.id], value)
if lead.type == 'opportunity' and not lead.stage_id:
stage_id = self.stage_find(cr, uid, lead.section_id.id or False, [('sequence','>',0)])
if stage_id:
self.stage_set(cr, uid, [l.id], stage_id)
res = super(crm_lead, self).case_open(cr, uid, ids, *args)
self.stage_set(cr, uid, [lead.id], stage_id)
res = super(crm_lead, self).case_open(cr, uid, ids, context)
return res
def case_close(self, cr, uid, ids, *args):
res = super(crm_lead, self).case_close(cr, uid, ids, *args)
def case_close(self, cr, uid, ids, context=None):
res = super(crm_lead, self).case_close(cr, uid, ids, context)
self.write(cr, uid, ids, {'date_closed': time.strftime('%Y-%m-%d %H:%M:%S')})
for case in self.browse(cr, uid, ids):
if case.type == 'lead':
message = _("The lead '%s' has been closed.") % case.name
else:
message = _("The case '%s' has been closed.") % case.name
self.log(cr, uid, case.id, message)
return res
def case_cancel(self, cr, uid, ids, *args):
def case_cancel(self, cr, uid, ids, context=None):
"""Overrides cancel for crm_case for setting probability
"""
res = super(crm_lead, self).case_cancel(cr, uid, ids, args)
res = super(crm_lead, self).case_cancel(cr, uid, ids, context)
self.write(cr, uid, ids, {'probability' : 0.0})
return res
def case_reset(self, cr, uid, ids, *args):
def case_reset(self, cr, uid, ids, context=None):
"""Overrides reset as draft in order to set the stage field as empty
"""
res = super(crm_lead, self).case_reset(cr, uid, ids, *args)
res = super(crm_lead, self).case_reset(cr, uid, ids, context)
self.write(cr, uid, ids, {'stage_id': False, 'probability': 0.0})
return res
def case_mark_lost(self, cr, uid, ids, *args):
def case_mark_lost(self, cr, uid, ids, context=None):
"""Mark the case as lost: state = done and probability = 0%
"""
res = super(crm_lead, self).case_close(cr, uid, ids, *args)
res = super(crm_lead, self).case_close(cr, uid, ids, context)
self.write(cr, uid, ids, {'probability' : 0.0})
for l in self.browse(cr, uid, ids):
stage_id = self.stage_find_lost(cr, uid, l.section_id.id or False)
for lead in self.browse(cr, uid, ids):
stage_id = self.stage_find_lost(cr, uid, lead.section_id.id or False)
if stage_id:
self.stage_set(cr, uid, [l.id], stage_id)
message = _("The opportunity '%s' has been marked as lost.") % l.name
self.log(cr, uid, l.id, message)
self.stage_set(cr, uid, [lead.id], stage_id)
return res
def case_mark_won(self, cr, uid, ids, *args):
def case_mark_won(self, cr, uid, ids, context=None):
"""Mark the case as lost: state = done and probability = 0%
"""
res = super(crm_lead, self).case_close(cr, uid, ids, *args)
res = super(crm_lead, self).case_close(cr, uid, ids, context=None)
self.write(cr, uid, ids, {'probability' : 100.0})
for l in self.browse(cr, uid, ids):
stage_id = self.stage_find_won(cr, uid, l.section_id.id or False)
for lead in self.browse(cr, uid, ids):
stage_id = self.stage_find_won(cr, uid, lead.section_id.id or False)
if stage_id:
self.stage_set(cr, uid, [l.id], stage_id)
message = _("The opportunity '%s' has been been won.") % l.name
self.log(cr, uid, l.id, message)
self.stage_set(cr, uid, [lead.id], stage_id)
self.case_mark_won_send_note(cr, uid, [lead.id], context=context)
return res
def set_priority(self, cr, uid, ids, priority):
@@ -324,12 +319,12 @@ class crm_lead(crm_case, osv.osv):
"""
return self.write(cr, uid, ids, {'priority' : priority})
def set_high_priority(self, cr, uid, ids, *args):
def set_high_priority(self, cr, uid, ids, context=None):
"""Set lead priority to high
"""
return self.set_priority(cr, uid, ids, '1')
def set_normal_priority(self, cr, uid, ids, *args):
def set_normal_priority(self, cr, uid, ids, context=None):
"""Set lead priority to normal
"""
return self.set_priority(cr, uid, ids, '3')
@@ -422,7 +417,7 @@ class crm_lead(crm_case, osv.osv):
subject = subject[0] + ", ".join(subject[1:])
details = "\n\n".join(details)
return self.message_append(cr, uid, [opportunity_id], subject, body_text=details, context=context)
return self.message_append_note(cr, uid, [opportunity_id], subject=subject, body=details)
def _merge_opportunity_history(self, cr, uid, opportunity_id, opportunities, context=None):
message = self.pool.get('mail.message')
@@ -529,13 +524,6 @@ class crm_lead(crm_case, osv.osv):
'date_open': time.strftime('%Y-%m-%d %H:%M:%S'),
}
def _convert_opportunity_notification(self, cr, uid, lead, context=None):
success_message = _("Lead '%s' has been converted to an opportunity.") % lead.name
self.message_append(cr, uid, [lead.id], success_message, body_text=success_message, context=context)
self.log(cr, uid, lead.id, success_message)
self._send_mail_to_salesman(cr, uid, lead, context=context)
return True
def convert_opportunity(self, cr, uid, ids, partner_id, user_ids=False, section_id=False, context=None):
partner = self.pool.get('res.partner')
mail_message = self.pool.get('mail.message')
@@ -551,7 +539,7 @@ class crm_lead(crm_case, osv.osv):
vals = self._convert_opportunity_data(cr, uid, lead, customer, section_id, context=context)
self.write(cr, uid, [lead.id], vals, context=context)
self._convert_opportunity_notification(cr, uid, lead, context=context)
self.convert_opportunity_send_note(cr, uid, lead, context=context)
#TOCHECK: why need to change partner details in all messages of lead ?
if lead.partner_id:
msg_ids = [ x.id for x in lead.message_ids]
@@ -605,6 +593,7 @@ class crm_lead(crm_case, osv.osv):
res_partner.write(cr, uid, partner_id, {'section_id': lead.section_id.id or False})
contact_id = res_partner.address_get(cr, uid, [partner_id])['default']
res = lead.write({'partner_id' : partner_id, }, context=context)
self._lead_set_partner_send_note(cr, uid, [lead.id], context)
return res
def convert_partner(self, cr, uid, ids, action='create', partner_id=False, context=None):
@@ -684,12 +673,12 @@ class crm_lead(crm_case, osv.osv):
'partner_mobile' : lead.partner_id and lead.partner_id.mobile or False,
'priority': lead.priority,
}
new_id = phonecall.create(cr, uid, vals, context=context)
phonecall.case_open(cr, uid, [new_id])
phonecall.case_open(cr, uid, [new_id], context=context)
if action == 'log':
phonecall.case_close(cr, uid, [new_id])
phonecall.case_close(cr, uid, [new_id], context=context)
phonecall_dict[lead.id] = new_id
self.schedule_phonecall_send_note(cr, uid, [lead.id], new_id, action, context=context)
return phonecall_dict
@@ -767,7 +756,7 @@ class crm_lead(crm_case, osv.osv):
#re-open
values.update(state=crm.AVAILABLE_STATES[1][0])
if not case.date_open:
values['date_open'] = time.strftime(tools.DEFAULT_SERVER_DATETIME_FORMAT)
values['date_open'] = time.strftime(tools.DEFAULT_SERVER_DATETIME_FORMAT)
res = self.write(cr, uid, [case.id], values, context=context)
return res
@@ -831,17 +820,59 @@ class crm_lead(crm_case, osv.osv):
# change probability of lead(s) if required by stage
if not vals.get('probability') and stage.on_change:
vals['probability'] = stage.probability
text = _("Changed Stage to: %s") % stage.name
self.message_append(cr, uid, ids, text, body_text=text, context=context)
for case in self.browse(cr, uid, ids, context=context):
if case.type == 'lead' or context.get('stage_type') == 'lead':
message = _("The stage of lead '%s' has been changed to '%s'.") % (case.name, stage.name)
self.log(cr, uid, case.id, message)
elif case.type == 'opportunity':
message = _("The stage of opportunity '%s' has been changed to '%s'.") % (case.name, stage.name)
self.log(cr, uid, case.id, message)
message = _("Stage changed to <b>%s</b>.") % (stage.name)
case.message_append_note(body=message)
return super(crm_lead,self).write(cr, uid, ids, vals, context)
# ----------------------------------------
# OpenChatter methods and notifications
# ----------------------------------------
def message_get_subscribers(self, cr, uid, ids, context=None):
sub_ids = self.message_get_subscribers_ids(cr, uid, ids, context=context)
# add salesman to the subscribers
for obj in self.browse(cr, uid, ids, context=context):
if obj.user_id:
sub_ids.append(obj.user_id.id)
return self.pool.get('res.users').read(cr, uid, sub_ids, context=context)
def case_get_note_msg_prefix(self, cr, uid, lead, context=None):
if isinstance(lead, (int, long)):
lead = self.browse(cr, uid, [lead], context=context)[0]
return ('Opportunity' if lead.type == 'opportunity' else 'Lead')
def create_send_note(self, cr, uid, ids, context=None):
for id in ids:
message = _("%s has been <b>created</b>.")% (self.case_get_note_msg_prefix(cr, uid, id, context=context))
self.message_append_note(cr, uid, [id], body=message, context=context)
return True
def case_mark_lost_send_note(self, cr, uid, ids, context=None):
message = _("Opportunity has been <b>lost</b>.")
return self.message_append_note(cr, uid, ids, body=message, context=context)
def case_mark_won_send_note(self, cr, uid, ids, context=None):
message = _("Opportunity has been <b>won</b>.")
return self.message_append_note(cr, uid, ids, body=message, context=context)
def schedule_phonecall_send_note(self, cr, uid, ids, phonecall_id, action, context=None):
phonecall = self.pool.get('crm.phonecall').browse(cr, uid, [phonecall_id], context=context)[0]
if action == 'log': prefix = 'Logged'
else: prefix = 'Scheduled'
message = _("<b>%s a call</b> for the <em>%s</em>.") % (prefix, phonecall.date)
return self. message_append_note(cr, uid, ids, body=message, context=context)
def _lead_set_partner_send_note(self, cr, uid, ids, context=None):
for lead in self.browse(cr, uid, ids, context=context):
message = _("%s <b>partner</b> is now set to <em>%s</em>." % (self.case_get_note_msg_prefix(cr, uid, lead, context=context), lead.partner_id.name))
lead.message_append_note(body=message)
return True
def convert_opportunity_send_note(self, cr, uid, lead, context=None):
message = _("Lead has been <b>converted to an opportunity</b>.")
lead.message_append_note(body=message)
return True
crm_lead()
+12 -12
View File
@@ -220,21 +220,21 @@
</record>
<!-- Call Function to Open the leads-->
<function model="crm.lead" name="case_open">
<value eval="[ref('crm_case_electonicgoodsdealer0'), ref('crm_case_company_partnership0'), ref('crm_case_webvisitor0'), ref('crm_case_business_card0'), ref('crm.crm_case_employee0')]"/>
</function>
<function model="crm.lead" name="case_open"
eval="[ref('crm_case_electonicgoodsdealer0'), ref('crm_case_company_partnership0'), ref('crm_case_webvisitor0'), ref('crm_case_business_card0'), ref('crm.crm_case_employee0')], {'install_mode': True}"
/>
<!-- Call Function to mark the lead as Pending-->
<function model="crm.lead" name="case_pending">
<value eval="[ref('crm_case_itdeveloper0')]"/>
</function>
<function model="crm.lead" name="case_pending"
eval="[ref('crm_case_itdeveloper0')], {'install_mode': True}"
/>
<!-- Call Function to Close the leads-->
<function model="crm.lead" name="case_close">
<value eval="[ref('crm_case_vpoperations0'), ref('crm_case_developingwebapplications0'), ref('crm_case_webvisitor0')]"/>
</function>
<function model="crm.lead" name="case_close"
eval="[ref('crm_case_vpoperations0'), ref('crm_case_developingwebapplications0'), ref('crm_case_webvisitor0')], {'install_mode': True}"
/>
<!-- Call Function to Cancel the leads-->
<function model="crm.lead" name="case_cancel">
<value eval="[ref('crm_case_mgroperations0'), ref('crm_case_imported_contact0')]"/>
</function>
<function model="crm.lead" name="case_cancel"
eval="[ref('crm_case_mgroperations0'), ref('crm_case_imported_contact0')], {'install_mode': True}"
/>
<!-- Demo Opportunities -->
<record id="crm_case_construstazunits0" model="crm.lead">
+2 -60
View File
@@ -143,29 +143,6 @@
type="object" icon="gtk-convert" />
</group>
</page>
<page string="Communication &amp; History" groups="base.group_extended">
<group colspan="4">
<field colspan="4" name="email_cc" widget="char" size="512"/>
</group>
<field name="message_ids" colspan="4" nolabel="1" mode="tree" readonly="1">
<tree string="History">
<field name="display_text" string="History Information"/>
<field name="email_from" invisible="1"/>
<button
string="Reply" attrs="{'invisible': [('email_from', '=', False)]}"
name="%(mail.action_email_compose_message_wizard)d"
context="{'mail.compose.message.mode':'reply', 'message_id':active_id}"
icon="terp-mail-replied" type="action" />
</tree>
</field>
<button string="Add Internal Note"
name="%(crm.action_crm_add_note)d"
context="{'model': 'crm.lead' }"
icon="terp-document-new" type="action" />
<button string="Send New Email"
name="%(mail.action_email_compose_message_wizard)d"
icon="terp-mail-message-new" type="action"/>
</page>
<page string="Extra Info" groups="base.group_extended">
<group colspan="2" col="2">
<separator string="Categorization" colspan="2" col="2"/>
@@ -176,13 +153,6 @@
<field name="channel_id" select="1" widget="selection"/>
<field name="referred"/>
</group>
<group colspan="2" col="2" groups="base.group_no_one">
<separator string="Dates" colspan="2" col="2"/>
<field name="create_date"/>
<field name="write_date"/>
<field name="date_open"/>
<field name="date_closed"/>
</group>
<group colspan="2" col="2">
<separator string="Mailings" colspan="2" col="2"/>
<field name="optin" on_change="on_change_optin(optin)"/>
@@ -195,6 +165,7 @@
</group>
</page>
</notebook>
<field name="message_ids_social" colspan="4" widget="ThreadView" nolabel="1"/>
</form>
</field>
</record>
@@ -545,37 +516,7 @@
<field name="optout" on_change="on_change_optout(optout)"/>
</group>
</page>
<page string="Communication &amp; History" groups="base.group_extended">
<group colspan="4">
<field colspan="4" name="email_cc" widget="char" size="512"/>
</group>
<field name="message_ids" colspan="4" nolabel="1" mode="tree" readonly="1">
<tree string="History">
<field name="display_text" string="History Information"/>
<field name="email_from" invisible="1"/>
<button
string="Reply" attrs="{'invisible': [('email_from', '=', False)]}"
name="%(mail.action_email_compose_message_wizard)d"
context="{'mail.compose.message.mode':'reply', 'message_id':active_id}"
icon="terp-mail-replied" type="action" />
</tree>
</field>
<button string="Add Internal Note"
name="%(crm.action_crm_add_note)d"
context="{'model': 'crm.lead' }"
icon="terp-document-new" type="action" />
<button string="Send New Email"
name="%(mail.action_email_compose_message_wizard)d"
icon="terp-mail-message-new" type="action"/>
</page>
<page string="Extra Info" groups="base.group_extended">
<group col="2" colspan="2" groups="base.group_no_one">
<separator string="Dates" colspan="2"/>
<field name="create_date"/>
<field name="write_date"/>
<field name="date_closed"/>
<field name="date_open"/>
</group>
<group col="2" colspan="2">
<separator string="Misc" colspan="2"/>
<field name="active"/>
@@ -588,6 +529,7 @@
<field name="ref2"/>
</page>
</notebook>
<field name="message_ids_social" colspan="4" widget="ThreadView" nolabel="1"/>
</form>
</field>
</record>
+51 -5
View File
@@ -42,7 +42,7 @@ class crm_meeting(crm_base, osv.osv):
_name = 'crm.meeting'
_description = "Meeting"
_order = "id desc"
_inherit = "calendar.event"
_inherit = ["calendar.event", 'ir.needaction_mixin', "mail.thread"]
_columns = {
# From crm.case
'name': fields.char('Summary', size=124, required=True, states={'done': [('readonly', True)]}),
@@ -78,7 +78,55 @@ class crm_meeting(crm_base, osv.osv):
'user_id': lambda self, cr, uid, ctx: uid,
}
def case_open(self, cr, uid, ids, *args):
def create(self, cr, uid, vals, context=None):
obj_id = super(crm_meeting, self).create(cr, uid, vals, context=context)
self.create_send_note(cr, uid, [obj_id], context=context)
return obj_id
def get_needaction_user_ids(self, cr, uid, ids, context=None):
result = dict.fromkeys(ids, [])
for obj in self.browse(cr, uid, ids, context=context):
if (obj.state == 'draft' and obj.user_id):
result[obj.id] = [obj.user_id.id]
return result
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
return 'Meeting'
def create_send_note(self, cr, uid, ids, context=None):
if context is None:
context = {}
# update context: if come from phonecall, default state values can make the message_append_note crash
context.pop('default_state', False)
for meeting in self.browse(cr, uid, ids, context=context):
message = _("A meeting has been <b>scheduled</b> on <em>%s</em>.") % (meeting.date)
if meeting.opportunity_id: # meeting can be create from phonecalls or opportunities, therefore checking for the parent
lead = meeting.opportunity_id
parent_message = _("Meeting linked to the opportunity <em>%s</em> has been <b>created</b> and <b>cscheduled</b> on <em>%s</em>.") % (lead.name, meeting.date)
lead.message_append_note(_('System Notification'), message)
elif meeting.phonecall_id:
phonecall = meeting.phonecall_id
parent_message = _("Meeting linked to the phonecall <em>%s</em> has been <b>created</b> and <b>cscheduled</b> on <em>%s</em>.") % (phonecall.name, meeting.date)
phonecall.message_append_note(body=message)
else:
parent_message = message
if parent_message:
meeting.message_append_note(body=parent_message)
return True
def case_close_send_note(self, cr, uid, ids, context=None):
message = _("Meeting has been <b>done</b>.")
return self.message_append_note(cr, uid, ids, body=message, context=context)
def case_open_send_note(self, cr, uid, ids, context=None):
for meeting in self.browse(cr, uid, ids, context=context):
if meeting.state != 'draft':
return False
message = _("Meeting has been <b>confirmed</b>.")
meeting.message_append_note(body=message)
return True
def case_open(self, cr, uid, ids, context=None):
"""Confirms meeting
@param self: The object pointer
@param cr: the current row, from the database cursor,
@@ -86,11 +134,9 @@ class crm_meeting(crm_base, osv.osv):
@param ids: List of Meeting Ids
@param *args: Tuple Value for additional Params
"""
res = super(crm_meeting, self).case_open(cr, uid, ids, args)
res = super(crm_meeting, self).case_open(cr, uid, ids, context)
for (id, name) in self.name_get(cr, uid, ids):
message = _("The meeting '%s' has been confirmed.") % name
id=base_calendar.base_calendar_id2real_id(id)
self.log(cr, uid, id, message)
return res
crm_meeting()
+1
View File
@@ -212,6 +212,7 @@
</page>
</notebook>
<field name="message_ids_social" colspan="4" widget="ThreadView" nolabel="1"/>
</form>
</field>
</record>
+64 -21
View File
@@ -32,6 +32,7 @@ class crm_phonecall(crm_base, osv.osv):
_name = "crm.phonecall"
_description = "Phonecall"
_order = "id desc"
_inherit = ['ir.needaction_mixin', 'mail.thread']
_columns = {
# From crm.case
'id': fields.integer('ID', readonly=True),
@@ -47,12 +48,12 @@ class crm_phonecall(crm_base, osv.osv):
'company_id': fields.many2one('res.company', 'Company'),
'description': fields.text('Description'),
'state': fields.selection([
('draft', 'Draft'),
('open', 'Todo'),
('cancel', 'Cancelled'),
('done', 'Held'),
('draft', 'Draft'),
('open', 'Todo'),
('cancel', 'Cancelled'),
('done', 'Held'),
('pending', 'Not Held'),
], 'State', size=16, readonly=True,
], 'State', size=16, readonly=True,
help='The state is set to \'Todo\', when a case is created.\
\nIf the case is in progress the state is set to \'Open\'.\
\nWhen the call is over, the state is set to \'Held\'.\
@@ -67,9 +68,9 @@ class crm_phonecall(crm_base, osv.osv):
'partner_phone': fields.char('Phone', size=32),
'partner_mobile': fields.char('Mobile', size=32),
'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority'),
'date_closed': fields.datetime('Closed', readonly=True),
'date': fields.datetime('Date'),
'opportunity_id': fields.many2one ('crm.lead', 'Lead/Opportunity'),
'date_closed': fields.datetime('Closed', readonly=True),
'date': fields.datetime('Date'),
'opportunity_id': fields.many2one ('crm.lead', 'Lead/Opportunity'),
'message_ids': fields.one2many('mail.message', 'res_id', 'Messages', domain=[('model','=',_name)]),
}
@@ -80,13 +81,20 @@ class crm_phonecall(crm_base, osv.osv):
_defaults = {
'date': lambda *a: time.strftime('%Y-%m-%d %H:%M:%S'),
'priority': crm.AVAILABLE_PRIORITIES[2][0],
'state': _get_default_state,
'priority': crm.AVAILABLE_PRIORITIES[2][0],
'state': _get_default_state,
'user_id': lambda self,cr,uid,ctx: uid,
'active': 1,
}
def case_close(self, cr, uid, ids, *args):
def create(self, cr, uid, vals, context=None):
obj_id = super(crm_phonecall, self).create(cr, uid, vals, context)
for phonecall in self.browse(cr, uid, [obj_id], context=context):
if not phonecall.opportunity_id:
self.case_open_send_note(cr, uid, [obj_id], context=context)
return obj_id
def case_close(self, cr, uid, ids, context=None):
"""Overrides close for crm_case for setting close date
"""
res = True
@@ -96,22 +104,22 @@ class crm_phonecall(crm_base, osv.osv):
if phone.duration <=0:
duration = datetime.now() - datetime.strptime(phone.date, '%Y-%m-%d %H:%M:%S')
data.update({'duration': duration.seconds/float(60)})
res = super(crm_phonecall, self).case_close(cr, uid, [phone_id], args)
res = super(crm_phonecall, self).case_close(cr, uid, [phone_id], context)
self.write(cr, uid, [phone_id], data)
return res
def case_reset(self, cr, uid, ids, *args):
def case_reset(self, cr, uid, ids, context=None):
"""Resets case as Todo
"""
res = super(crm_phonecall, self).case_reset(cr, uid, ids, args, 'crm.phonecall')
res = super(crm_phonecall, self).case_reset(cr, uid, ids, context)
self.write(cr, uid, ids, {'duration': 0.0, 'state':'open'})
return res
def case_open(self, cr, uid, ids, *args):
def case_open(self, cr, uid, ids, context=None):
"""Overrides cancel for crm_case for setting Open Date
"""
res = super(crm_phonecall, self).case_open(cr, uid, ids, *args)
res = super(crm_phonecall, self).case_open(cr, uid, ids, context)
self.write(cr, uid, ids, {'date_open': time.strftime('%Y-%m-%d %H:%M:%S')})
return res
@@ -143,9 +151,7 @@ class crm_phonecall(crm_base, osv.osv):
'partner_mobile' : call.partner_mobile,
'priority': call.priority,
}
new_id = self.create(cr, uid, vals, context=context)
self.case_open(cr, uid, [new_id])
if action == 'log':
self.case_close(cr, uid, [new_id])
phonecall_dict[call.id] = new_id
@@ -162,7 +168,9 @@ class crm_phonecall(crm_base, osv.osv):
return partner_id
def _call_set_partner(self, cr, uid, ids, partner_id, context=None):
return self.write(cr, uid, ids, {'partner_id' : partner_id}, context=context)
write_res = self.write(cr, uid, ids, {'partner_id' : partner_id}, context=context)
self._call_set_partner_send_note(cr, uid, ids, context)
return write_res
def _call_create_partner_address(self, cr, uid, phonecall, partner_id, context=None):
address = self.pool.get('res.partner')
@@ -231,7 +239,7 @@ class crm_phonecall(crm_base, osv.osv):
'section_id': call.section_id and call.section_id.id or False,
'description': call.description or False,
'priority': call.priority,
'type': 'opportunity',
'type': 'opportunity',
'phone': call.partner_phone or False,
'email_from': default_contact and default_contact.email,
})
@@ -243,7 +251,7 @@ class crm_phonecall(crm_base, osv.osv):
self.case_close(cr, uid, [call.id])
opportunity.case_open(cr, uid, [opportunity_id])
opportunity_dict[call.id] = opportunity_id
return opportunity_dict
return opportunity_dict
def action_make_meeting(self, cr, uid, ids, context=None):
"""
@@ -289,6 +297,41 @@ class crm_phonecall(crm_base, osv.osv):
}
return value
# ----------------------------------------
# OpenChatter methods and notifications
# ----------------------------------------
def get_needaction_user_ids(self, cr, uid, ids, context=None):
result = dict.fromkeys(ids)
for obj in self.browse(cr, uid, ids, context=context):
result[obj.id] = []
if (obj.state == 'draft' and obj.user_id):
result[obj.id] = [obj.user_id.id]
return result
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
return 'Phonecall'
def case_reset_send_note(self, cr, uid, ids, context=None):
message = _('Phonecall has been <b>reset and set as open</b>.')
return self.message_append_note(cr, uid, ids, body=message, context=context)
def case_open_send_note(self, cr, uid, ids, context=None):
lead_obj = self.pool.get('crm.lead')
for phonecall in self.browse(cr, uid, ids, context=context):
phonecall.message_subscribe([phonecall.user_id.id], context=context)
if phonecall.opportunity_id:
lead = phonecall.opportunity_id
message = _("Phonecall linked to the opportunity <em>%s</em> has been <b>created</b> and <b>scheduled</b> on <em>%s</em>.") % (lead.name, phonecall.date)
else:
message = _("Phonecall has been <b>created and opened</b>.")
phonecall.message_append_note(body=message)
return True
def _call_set_partner_send_note(self, cr, uid, ids, context=None):
return self.message_append_note(cr, uid, ids, body=_("Partner has been <b>created</b>"), context=context)
crm_phonecall()
+1
View File
@@ -120,6 +120,7 @@
states="cancel" type="object"
icon="gtk-convert" />
</group>
<field name="message_ids_social" colspan="4" widget="ThreadView" nolabel="1"/>
</form>
</field>
</record>
+1 -1
View File
@@ -2,7 +2,7 @@
<openerp>
<data>
<menuitem icon="terp-partner" id="base.menu_base_partner" name="Sales" sequence="0"
<menuitem icon="terp-partner" id="base.menu_base_partner" name="Sales" sequence="1"
groups="base.group_sale_manager,base.group_sale_salesman"/>
<menuitem id="base.menu_crm_config_lead" name="Leads &amp; Opportunities"
+33
View File
@@ -0,0 +1,33 @@
# 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 <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-04-06 07:00+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\n"
"Language-Team: Czech <cs@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: crm_caldav
#: model:ir.actions.act_window,name:crm_caldav.action_caldav_browse
msgid "Caldav Browse"
msgstr "Procházet Caldav"
#. module: crm_caldav
#: model:ir.ui.menu,name:crm_caldav.menu_caldav_browse
msgid "Synchronize This Calendar"
msgstr "Synchronizovat tento kalendář"
#. module: crm_caldav
#: model:ir.model,name:crm_caldav.model_crm_meeting
msgid "Meeting"
msgstr "Setkání"
+3
View File
@@ -95,6 +95,9 @@ class crm_claim(crm.crm_case, osv.osv):
'active': lambda *a: 1
}
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
return 'Claim'
def onchange_partner_id(self, cr, uid, ids, part, email=False):
"""This function returns value of partner address based on partner
:param part: Partner's id
@@ -125,7 +125,7 @@ class crm_lead_forward_to_partner(osv.osv_memory):
if email_to not in new_cc:
new_cc.append(to)
update_vals = {'email_cc' : ', '.join(new_cc) }
lead.write(cr, uid, case.id, update_vals, context=context)
lead.write(cr, uid, [case.id], update_vals, context=context)
return res
def _get_info_body_text(self, cr, uid, lead, context=None):
+1 -1
View File
@@ -14,7 +14,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-06 04:37+0000\n"
"X-Launchpad-Export-Date: 2012-04-07 04:56+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: crm_todo
+49
View File
@@ -0,0 +1,49 @@
# 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 <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-04-06 05:28+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\n"
"Language-Team: Czech <cs@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: decimal_precision
#: field:decimal.precision,digits:0
msgid "Digits"
msgstr "Číslice"
#. module: decimal_precision
#: model:ir.actions.act_window,name:decimal_precision.action_decimal_precision_form
#: model:ir.ui.menu,name:decimal_precision.menu_decimal_precision_form
msgid "Decimal Accuracy"
msgstr "Desetinná přesnost"
#. module: decimal_precision
#: field:decimal.precision,name:0
msgid "Usage"
msgstr "Použití"
#. module: decimal_precision
#: sql_constraint:decimal.precision:0
msgid "Only one value can be defined for each given usage!"
msgstr "Pro každé dané použití může být zadána jen jedna hodnota."
#. module: decimal_precision
#: view:decimal.precision:0
msgid "Decimal Precision"
msgstr "Desetinná přesnost"
#. module: decimal_precision
#: model:ir.model,name:decimal_precision.model_decimal_precision
msgid "decimal.precision"
msgstr "decimal.precision"
+17 -11
View File
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2011-09-05 17:16+0000\n"
"PO-Revision-Date: 2012-04-06 06:26+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\n"
"Language-Team: Czech <cs@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-02-09 06:48+0000\n"
"X-Generator: Launchpad (build 14763)\n"
"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n"
"X-Generator: Launchpad (build 15060)\n"
"X-Poedit-Language: Czech\n"
#. module: document
@@ -152,7 +152,7 @@ msgstr "Název adresáře musí být unikátní!"
#. module: document
#: view:ir.attachment:0
msgid "Filter on my documents"
msgstr ""
msgstr "Filtr nad mými dokumenty"
#. module: document
#: field:ir.attachment,index_content:0
@@ -171,7 +171,7 @@ msgstr ""
#. module: document
#: model:ir.actions.todo.category,name:document.category_knowledge_mgmt_config
msgid "Knowledge Management"
msgstr ""
msgstr "Správa znalostí"
#. module: document
#: view:document.directory:0
@@ -385,6 +385,8 @@ msgid ""
"When executing this wizard, it will configure your directories automatically "
"according to modules installed."
msgstr ""
"Když je tento průvodce vykonán, nastaví automaticky vaše adresáře podle "
"instalovaných modulů."
#. module: document
#: field:document.directory.content,directory_id:0
@@ -520,7 +522,7 @@ msgstr ""
#: view:document.configuration:0
#: model:ir.actions.act_window,name:document.action_config_auto_directory
msgid "Configure Directories"
msgstr ""
msgstr "Nastavit adresáře"
#. module: document
#: field:document.directory.content,include_name:0
@@ -674,7 +676,7 @@ msgstr "Pouze ke čtení"
#. module: document
#: model:ir.actions.act_window,name:document.action_document_directory_form
msgid "Document Directory"
msgstr ""
msgstr "Adresář dokumentů"
#. module: document
#: sql_constraint:document.directory:0
@@ -700,6 +702,10 @@ msgid ""
"attached to the document, or to print and download any report. This tool "
"will create directories automatically according to modules installed."
msgstr ""
"Systém správy dokumentů OpenERP podporuje mapování virtuálních složek s "
"dokumenty. Virtuální složka dokumentů může být použita pro správu souborů "
"přiložených k dokumentům nebo k vytištění a stažení jakéhokoliv výkazu. "
"Tento nástroj vytvoří automaticky adresář podle instalovaných modulů."
#. module: document
#: view:board.board:0
@@ -793,7 +799,7 @@ msgstr "Měsíc"
#. module: document
#: view:report.document.user:0
msgid "This Months Files"
msgstr ""
msgstr "Soubory za tyto měsíce"
#. module: document
#: model:ir.ui.menu,name:document.menu_reporting
@@ -859,7 +865,7 @@ msgstr "Soubory podle partnerů"
#. module: document
#: view:ir.attachment:0
msgid "Indexed Content - experimental"
msgstr ""
msgstr "Indexovaný obsah - pokusné"
#. module: document
#: view:report.document.user:0
@@ -874,7 +880,7 @@ msgstr "Poznámky"
#. module: document
#: model:ir.model,name:document.model_document_configuration
msgid "Directory Configuration"
msgstr ""
msgstr "Nastavení adresáře"
#. module: document
#: help:document.directory,type:0
@@ -977,7 +983,7 @@ msgstr "MIME typ"
#. module: document
#: view:report.document.user:0
msgid "All Months Files"
msgstr ""
msgstr "Soubory za všechny měsíce"
#. module: document
#: field:document.directory.content,name:0
+15 -9
View File
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2011-05-09 08:15+0000\n"
"Last-Translator: Jan B. Krejčí <Unknown>\n"
"PO-Revision-Date: 2012-04-06 06:13+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\n"
"Language-Team: Czech <cs@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-02-09 07:06+0000\n"
"X-Generator: Launchpad (build 14763)\n"
"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: document_ftp
#: model:ir.model,name:document_ftp.model_document_ftp_configuration
@@ -31,6 +31,10 @@ msgid ""
"format is HOST:PORT and the default host (localhost) is only suitable for "
"access from the server machine itself.."
msgstr ""
"Značí adresu sítě, na které by měl být pro koncové uživatel dostupný váš "
"OpenERP server. To závisí na vaší síťové topologii a nastavení a ovlivní to "
"pouze odkazy zobrazené uživatelům. Formát je POĆÍTAČ:PORT a výchozí počítač "
"(localhost) je vhodný pouze pro přístup ze samotného serveru."
#. module: document_ftp
#: model:ir.actions.url,name:document_ftp.action_document_browse
@@ -67,6 +71,8 @@ msgstr "_Procházet"
msgid ""
"Server address or IP and port to which users should connect to for DMS access"
msgstr ""
"Adresa serveru nebo IP a port, ke kterému by se měli uživatelé připojit pro "
"přístup DMS"
#. module: document_ftp
#: model:ir.ui.menu,name:document_ftp.menu_document_browse
@@ -91,27 +97,27 @@ msgstr "název"
#. module: document_ftp
#: model:ir.model,name:document_ftp.model_document_ftp_browse
msgid "Document FTP Browse"
msgstr ""
msgstr "Procházení FTP dokumentů"
#. module: document_ftp
#: view:document.ftp.configuration:0
msgid "Knowledge Application Configuration"
msgstr ""
msgstr "Nastavení aplikace znalostí"
#. module: document_ftp
#: model:ir.actions.act_window,name:document_ftp.action_ftp_browse
msgid "Document Browse"
msgstr ""
msgstr "Procházení dokumentů"
#. module: document_ftp
#: view:document.ftp.browse:0
msgid "Browse Document"
msgstr ""
msgstr "Procházet dokument"
#. module: document_ftp
#: view:document.ftp.configuration:0
msgid "res_config_contents"
msgstr ""
msgstr "res_config_contents"
#~ msgid "Integrated FTP Server with Document Management System"
#~ msgstr "FTP server integrovaný s Document Management Systémem"
+1 -1
View File
@@ -14,7 +14,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-06 04:37+0000\n"
"X-Launchpad-Export-Date: 2012-04-07 04:56+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: edi
+2
View File
@@ -387,6 +387,7 @@
</group>
</page>
<page string="Emails" groups="base.group_extended">
<!--
<field name="message_ids" colspan="4" nolabel="1" mode="tree">
<tree string="History">
<field name="display_text" string="History Information"/>
@@ -398,6 +399,7 @@
icon="terp-mail-replied" type="action" />
</tree>
</field>
-->
<button string="Send New Email"
name="%(mail.action_email_compose_message_wizard)d"
icon="terp-mail-message-new" context= '{"default_email_to":email}' type="action"/>
+1
View File
@@ -105,6 +105,7 @@
action="action_email_server_tree"
name="Incoming Mail Servers"
sequence="14"
groups="base.group_no_one"
/>
<record model="ir.ui.view" id="email_message_tree_view">
+34
View File
@@ -0,0 +1,34 @@
# 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 <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-04-08 05:43+0000\n"
"Last-Translator: Masaki Yamaya <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-09 04:56+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: fetchmail_crm_claim
#: model:ir.actions.act_window,help:fetchmail_crm_claim.action_create_crm_claims_from_email_account
msgid ""
"You can connect your email account with claims in OpenERP. A new email sent "
"to this account (example: support@mycompany.com) will automatically create a "
"claim for the followup in OpenERP. The whole communication by email will be "
"attached to the claim automatically to keep track of the history."
msgstr ""
"あなたのEメールアカウントをOpenERPのクレームに関連づけることはできません。このアカウントに送られた新しいEメールはOpenERPのフォローアップの"
"ためのクレームを自動的に作成します。Eメールによる全てのコミュニケーションは、履歴を記録するために、自動的にクレームに関連づけられます。"
#. module: fetchmail_crm_claim
#: model:ir.actions.act_window,name:fetchmail_crm_claim.action_create_crm_claims_from_email_account
msgid "Create Claims from Email Account"
msgstr "Eメールアカウントからクレームを作成"
@@ -1,41 +0,0 @@
#-*- coding:utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2011 OpenERP S.A. (<http://www.openerp.com>). All Rights Reserved
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
{
"name" : "eMail Gateway for Applicants",
"version" : "1.0",
"depends" : ["fetchmail", "hr_recruitment"],
"author" : "OpenERP SA",
"category": "Hidden",
"description": """
""",
'website': 'http://www.openerp.com',
'init_xml': [],
'update_xml': [
"installer.xml",
],
'demo_xml': [
],
'installable': True,
'auto_install': True,
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -1,35 +0,0 @@
# German 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 <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-02-09 15:13+0000\n"
"Last-Translator: Ferdinand @ Camptocamp <Unknown>\n"
"Language-Team: German <de@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-02-10 04:50+0000\n"
"X-Generator: Launchpad (build 14771)\n"
#. module: fetchmail_hr_recruitment
#: model:ir.actions.act_window,help:fetchmail_hr_recruitment.action_link_applicant_to_email_account
msgid ""
"You can synchronize the job email account (e.g. job@yourcompany.com) with "
"OpenERP so that new applicants are created automatically in OpenERP for the "
"followup of the recruitment process. Attachments are automatically stored in "
"the DMS of OpenERP so that you get an indexation of all the CVs received."
msgstr ""
"Sie können Bewerbungen die auf diesem Konto (job@your.company.com) eingehen "
"automatisch mit Bewerbungen in OpenERP verbinden. Die Anhänge (zB CV) werden "
"automatisch im Dokumentenmanagement von OpenERP gespeichert und indiziert."
#. module: fetchmail_hr_recruitment
#: model:ir.actions.act_window,name:fetchmail_hr_recruitment.action_link_applicant_to_email_account
msgid "Create Applicants from Email Account"
msgstr "Erzeuge Bewerbungen von diesem EMail Konto"
@@ -1,37 +0,0 @@
# Spanish (Costa Rica) 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 <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-02-15 22:01+0000\n"
"Last-Translator: Freddy Gonzalez <freddy.gonzalez@clearcorp.co.cr>\n"
"Language-Team: Spanish (Costa Rica) <es_CR@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-02-16 05:07+0000\n"
"X-Generator: Launchpad (build 14781)\n"
#. module: fetchmail_hr_recruitment
#: model:ir.actions.act_window,help:fetchmail_hr_recruitment.action_link_applicant_to_email_account
msgid ""
"You can synchronize the job email account (e.g. job@yourcompany.com) with "
"OpenERP so that new applicants are created automatically in OpenERP for the "
"followup of the recruitment process. Attachments are automatically stored in "
"the DMS of OpenERP so that you get an indexation of all the CVs received."
msgstr ""
"Puede sincronizar la cuenta de correo electrónico de trabajo (por ejemplo, "
"job@yourcompany.com) con OpenERP para que los nuevos solicitantes se crean "
"automáticamente en OpenERP para el seguimiento del proceso de contratación. "
"Los archivos adjuntos se almacenan automáticamente en el DMS de OpenERP para "
"que usted obtenga una indexación de todos los CV recibidos."
#. module: fetchmail_hr_recruitment
#: model:ir.actions.act_window,name:fetchmail_hr_recruitment.action_link_applicant_to_email_account
msgid "Create Applicants from Email Account"
msgstr "Crear solicitantes de la cuenta de correo electrónico"
@@ -1,27 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * fetchmail_hr_recruitment
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 6.1rc1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-02-08 00:36+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: fetchmail_hr_recruitment
#: model:ir.actions.act_window,help:fetchmail_hr_recruitment.action_link_applicant_to_email_account
msgid "You can synchronize the job email account (e.g. job@yourcompany.com) with OpenERP so that new applicants are created automatically in OpenERP for the followup of the recruitment process. Attachments are automatically stored in the DMS of OpenERP so that you get an indexation of all the CVs received."
msgstr ""
#. module: fetchmail_hr_recruitment
#: model:ir.actions.act_window,name:fetchmail_hr_recruitment.action_link_applicant_to_email_account
msgid "Create Applicants from Email Account"
msgstr ""
@@ -1,32 +0,0 @@
# French 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 <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-03-05 21:49+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: French <fr@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-03-06 04:48+0000\n"
"X-Generator: Launchpad (build 14900)\n"
#. module: fetchmail_hr_recruitment
#: model:ir.actions.act_window,help:fetchmail_hr_recruitment.action_link_applicant_to_email_account
msgid ""
"You can synchronize the job email account (e.g. job@yourcompany.com) with "
"OpenERP so that new applicants are created automatically in OpenERP for the "
"followup of the recruitment process. Attachments are automatically stored in "
"the DMS of OpenERP so that you get an indexation of all the CVs received."
msgstr ""
#. module: fetchmail_hr_recruitment
#: model:ir.actions.act_window,name:fetchmail_hr_recruitment.action_link_applicant_to_email_account
msgid "Create Applicants from Email Account"
msgstr ""
@@ -1,32 +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 <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-04-01 05:45+0000\n"
"Last-Translator: Masaki Yamaya <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-02 04:37+0000\n"
"X-Generator: Launchpad (build 15032)\n"
#. module: fetchmail_hr_recruitment
#: model:ir.actions.act_window,help:fetchmail_hr_recruitment.action_link_applicant_to_email_account
msgid ""
"You can synchronize the job email account (e.g. job@yourcompany.com) with "
"OpenERP so that new applicants are created automatically in OpenERP for the "
"followup of the recruitment process. Attachments are automatically stored in "
"the DMS of OpenERP so that you get an indexation of all the CVs received."
msgstr ""
#. module: fetchmail_hr_recruitment
#: model:ir.actions.act_window,name:fetchmail_hr_recruitment.action_link_applicant_to_email_account
msgid "Create Applicants from Email Account"
msgstr "Eメールアカウントから応募者を作成"
@@ -1,37 +0,0 @@
# Dutch 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 <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-02-13 14:18+0000\n"
"Last-Translator: Erwin <Unknown>\n"
"Language-Team: Dutch <nl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-02-14 05:46+0000\n"
"X-Generator: Launchpad (build 14781)\n"
#. module: fetchmail_hr_recruitment
#: model:ir.actions.act_window,help:fetchmail_hr_recruitment.action_link_applicant_to_email_account
msgid ""
"You can synchronize the job email account (e.g. job@yourcompany.com) with "
"OpenERP so that new applicants are created automatically in OpenERP for the "
"followup of the recruitment process. Attachments are automatically stored in "
"the DMS of OpenERP so that you get an indexation of all the CVs received."
msgstr ""
"Het is mogelijk het vacature e-mail account (bijvoorbeeld: "
"vacature@mijnbedrijf.nl) te synchroniseren met OpenERP zo dat nieuwe "
"kandidaten automatisch worden aangemaakt in OpenERP voor het vervolgproces "
"van de wervingsproces. Bijlagen worden automatisch opgeslagen in de DMS van "
"OpenERP zo dat alle ontvangen CV's automatisch worden geïndexeerd."
#. module: fetchmail_hr_recruitment
#: model:ir.actions.act_window,name:fetchmail_hr_recruitment.action_link_applicant_to_email_account
msgid "Create Applicants from Email Account"
msgstr "Maak kandidaten van een E-mail"
@@ -1,32 +0,0 @@
# Portuguese 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 <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-02-29 22:48+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Portuguese <pt@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-03-02 04:36+0000\n"
"X-Generator: Launchpad (build 14886)\n"
#. module: fetchmail_hr_recruitment
#: model:ir.actions.act_window,help:fetchmail_hr_recruitment.action_link_applicant_to_email_account
msgid ""
"You can synchronize the job email account (e.g. job@yourcompany.com) with "
"OpenERP so that new applicants are created automatically in OpenERP for the "
"followup of the recruitment process. Attachments are automatically stored in "
"the DMS of OpenERP so that you get an indexation of all the CVs received."
msgstr ""
#. module: fetchmail_hr_recruitment
#: model:ir.actions.act_window,name:fetchmail_hr_recruitment.action_link_applicant_to_email_account
msgid "Create Applicants from Email Account"
msgstr ""
@@ -1,36 +0,0 @@
# Serbian Latin 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 <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-03-19 11:54+0000\n"
"Last-Translator: Milan Milosevic <Unknown>\n"
"Language-Team: Serbian Latin <sr@latin@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-03-20 04:56+0000\n"
"X-Generator: Launchpad (build 14969)\n"
#. module: fetchmail_hr_recruitment
#: model:ir.actions.act_window,help:fetchmail_hr_recruitment.action_link_applicant_to_email_account
msgid ""
"You can synchronize the job email account (e.g. job@yourcompany.com) with "
"OpenERP so that new applicants are created automatically in OpenERP for the "
"followup of the recruitment process. Attachments are automatically stored in "
"the DMS of OpenERP so that you get an indexation of all the CVs received."
msgstr ""
"Možete sinhronizovati svoj radni email nalog (npr:job@yourcompany.com) sa "
"OpenERP-om, tako da se novi kandidati prave automatski u OpenERP-u za "
"nstavak procesa zapošljavanja. Vezane stavke su automatski sačuvane u DMS-u "
"OpenERP-a, tako da imate indeksaciju svih primljenih CV-a."
#. module: fetchmail_hr_recruitment
#: model:ir.actions.act_window,name:fetchmail_hr_recruitment.action_link_applicant_to_email_account
msgid "Create Applicants from Email Account"
msgstr "Napravi kandidate preko email naloga"
@@ -1,35 +0,0 @@
# Chinese (Simplified) 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 <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-02-16 12:51+0000\n"
"Last-Translator: Jeff Wang <wjfonhand@hotmail.com>\n"
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-02-17 05:01+0000\n"
"X-Generator: Launchpad (build 14814)\n"
#. module: fetchmail_hr_recruitment
#: model:ir.actions.act_window,help:fetchmail_hr_recruitment.action_link_applicant_to_email_account
msgid ""
"You can synchronize the job email account (e.g. job@yourcompany.com) with "
"OpenERP so that new applicants are created automatically in OpenERP for the "
"followup of the recruitment process. Attachments are automatically stored in "
"the DMS of OpenERP so that you get an indexation of all the CVs received."
msgstr ""
"你可以让这个招聘邮件帐号(例如 "
"job@yourcompany.com)与OpenERP同步。这样用于追踪后续流程的新应聘者就会在OpenERP中自动创建。附件会自动存在文档管理系统中,"
"这样你就有了所有收到过的简历的一个索引。"
#. module: fetchmail_hr_recruitment
#: model:ir.actions.act_window,name:fetchmail_hr_recruitment.action_link_applicant_to_email_account
msgid "Create Applicants from Email Account"
msgstr "从邮件帐号创建应聘者"
@@ -1,19 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data>
<record model="ir.actions.act_window" id="action_link_applicant_to_email_account">
<field name="name">Create Applicants from Email Account</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">fetchmail.server</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="context" eval="{'default_name': 'Recruitment Applicants', 'default_object_id': ref('hr_recruitment.model_hr_applicant')}"/>
<field name="help">You can synchronize the job email account (e.g. job@yourcompany.com) with OpenERP so that new applicants are created automatically in OpenERP for the followup of the recruitment process. Attachments are automatically stored in the DMS of OpenERP so that you get an indexation of all the CVs received.</field>
</record>
<record model="ir.actions.todo" id="config_wizard_action_link_applicant_to_email_account">
<field name="action_id" ref="action_link_applicant_to_email_account" />
<field name="category_id" ref="hr.category_hr_management_config" />
</record>
</data>
</openerp>
+1 -1
View File
@@ -14,7 +14,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-06 04:37+0000\n"
"X-Launchpad-Export-Date: 2012-04-07 04:56+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: google_base_account
+1
View File
@@ -24,5 +24,6 @@ import hr
import report
import wizard
import res_config
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+1
View File
@@ -50,6 +50,7 @@ You can manage:
'hr_installer.xml',
'hr_data.xml',
'hr_board.xml',
'res_config_view.xml',
],
'demo_xml': [
'hr_demo.xml',
+10
View File
@@ -189,6 +189,7 @@
<field name="name">Minh Tran</field>
<field name="user_id" ref="base.user_mit"/>
<field name="department_id" ref="dep_rd"/>
<field name="parent_id" ref="employee_al"/>
<field name="job_id" ref="hr.job_developer"/>
<field name="category_ids" eval="[(6, 0, [ref('category_employee')])]"/>
<field name="work_location">Grand-Rosière</field>
@@ -202,6 +203,7 @@
<field name="name">Nicolas Vanhoren</field>
<field name="user_id" ref="base.user_niv"/>
<field name="department_id" ref="dep_rd"/>
<field name="parent_id" ref="employee_al"/>
<field name="job_id" ref="hr.job_developer"/>
<field name="category_ids" eval="[(6, 0, [ref('category_employee')])]"/>
<field name="work_location">Grand-Rosière</field>
@@ -214,6 +216,7 @@
<field name="name">Stéphane Wirtel</field>
<field name="user_id" ref="base.user_stw"/>
<field name="department_id" ref="dep_rd"/>
<field name="parent_id" ref="employee_al"/>
<field name="job_id" ref="hr.job_developer"/>
<field name="category_ids" eval="[(6, 0, [ref('category_employee')])]"/>
<field name="work_location">Grand-Rosière</field>
@@ -226,6 +229,7 @@
<field name="name">Christophe Simonis</field>
<field name="user_id" ref="base.user_chs"/>
<field name="department_id" ref="dep_rd"/>
<field name="parent_id" ref="employee_al"/>
<field name="job_id" ref="hr.job_developer"/>
<field name="category_ids" eval="[(6, 0, [ref('category_employee')])]"/>
<field name="work_location">Grand-Rosière</field>
@@ -238,6 +242,7 @@
<field name="name">Quentin De Paoli</field>
<field name="user_id" ref="base.user_qdp"/>
<field name="department_id" ref="dep_rd"/>
<field name="parent_id" ref="employee_al"/>
<field name="job_id" ref="hr.job_developer"/>
<field name="category_ids" eval="[(6, 0, [ref('category_employee')])]"/>
<field name="work_location">Grand-Rosière</field>
@@ -249,6 +254,7 @@
<field name="name">Fabien Meghazi</field>
<field name="user_id" ref="base.user_fme"/>
<field name="department_id" ref="dep_rd"/>
<field name="parent_id" ref="employee_al"/>
<field name="job_id" ref="hr.job_developer"/>
<field name="category_ids" eval="[(6, 0, [ref('category_employee')])]"/>
<field name="work_location">Grand-Rosière</field>
@@ -260,6 +266,7 @@
<field name="name">Francois Pietquin</field>
<field name="user_id" ref="base.user_fpi"/>
<field name="department_id" ref="dep_ps"/>
<field name="parent_id" ref="employee_fp"/>
<field name="job_id" ref="hr.job_consultant"/>
<field name="category_ids" eval="[(6, 0, [ref('category_employee')])]"/>
<field name="work_location">Grand-Rosière</field>
@@ -272,6 +279,7 @@
<field name="name">Julien Thewys</field>
<field name="user_id" ref="base.user_jth"/>
<field name="department_id" ref="dep_ps"/>
<field name="parent_id" ref="employee_fp"/>
<field name="job_id" ref="hr.job_consultant"/>
<field name="category_ids" eval="[(6, 0, [ref('category_employee')])]"/>
<field name="work_location">Grand-Rosière</field>
@@ -284,6 +292,7 @@
<field name="name">Nicoleta Gherlea</field>
<field name="user_id" ref="base.user_ngh"/>
<field name="department_id" ref="dep_sales"/>
<field name="parent_id" ref="employee_fp"/>
<field name="job_id" ref="hr.job_marketing"/>
<field name="category_ids" eval="[(6, 0, [ref('category_employee')])]"/>
<field name="work_location">Auderghem</field>
@@ -296,6 +305,7 @@
<field name="name">Valérie Descamps</field>
<field name="user_id" ref="base.user_vad"/>
<field name="department_id" ref="dep_administration"/>
<field name="parent_id" ref="employee_fp"/>
<field name="job_id" ref="hr.job_hrm"/>
<field name="category_ids" eval="[(6, 0, [ref('category_employee')])]"/>
<field name="work_location">Grand-Rosière</field>
-23
View File
@@ -1,28 +1,11 @@
<openerp>
<data>
<record id="category_hr_management_config" model="ir.actions.todo.category">
<field name="name">HR Management</field>
<field name="sequence">5</field>
</record>
<!-- employee configure action -->
<record id="action_create_hr_employee_installer" model="ir.actions.act_window">
<field name="name">Create your Employees</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">hr.employee</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" eval="False"/>
<field name="help">Create employees form and link them to an OpenERP user if you want them to access this instance. Categories can be set on employees to perform massive operations on all the employees of the same category, i.e. allocating holidays.</field>
</record>
<record id="config_wizard_action_create_hr_employee_installer" model="ir.actions.todo">
<field name="action_id" ref="action_create_hr_employee_installer"/>
<field name="category_id" ref="category_hr_management_config"/>
</record>
<record model="ir.actions.act_window" id="view_department_form_installer">
<field name="name">Create Your Departments</field>
<field name="type">ir.actions.act_window</field>
@@ -33,11 +16,5 @@
<field name="help">Your departments structure is used to manage all documents related to employees by departments: expenses and timesheet validation, leaves management, recruitments, etc.</field>
</record>
<record id="view_department_form_todo" model="ir.actions.todo">
<field name="action_id" ref="view_department_form_installer"/>
<field name="category_id" ref="hr.category_hr_management_config"/>
<field name="sequence">3</field>
<field name="groups_id" eval="[(6, 0, [ref('base.group_extended')])]" />
</record>
</data>
</openerp>
+10 -10
View File
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
"PO-Revision-Date: 2011-09-16 16:27+0000\n"
"PO-Revision-Date: 2012-04-06 06:28+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\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: 2012-02-09 06:42+0000\n"
"X-Generator: Launchpad (build 14763)\n"
"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n"
"X-Generator: Launchpad (build 15060)\n"
"X-Poedit-Language: Czech\n"
#. module: hr
@@ -57,7 +57,7 @@ msgstr "Seskupit podle..."
#. module: hr
#: model:ir.actions.act_window,name:hr.view_department_form_installer
msgid "Create Your Departments"
msgstr ""
msgstr "Vytvořit vaše oddělení"
#. module: hr
#: model:ir.actions.act_window,help:hr.action_hr_job
@@ -109,7 +109,7 @@ msgstr "Očekáván v náboru"
#. module: hr
#: model:ir.actions.todo.category,name:hr.category_hr_management_config
msgid "HR Management"
msgstr ""
msgstr "Správa lidských zdrojů"
#. module: hr
#: help:hr.employee,partner_id:0
@@ -162,7 +162,7 @@ msgstr ""
#. module: hr
#: field:hr.employee,color:0
msgid "Color Index"
msgstr ""
msgstr "Index barvy"
#. module: hr
#: model:process.transition,note:hr.process_transition_employeeuser0
@@ -191,12 +191,12 @@ msgstr "Žena"
#. module: hr
#: help:hr.job,expected_employees:0
msgid "Required number of employees in total for that job."
msgstr ""
msgstr "Celkový požadovaný počet zaměstnanců pro úlohu."
#. module: hr
#: model:ir.ui.menu,name:hr.menu_open_view_attendance_reason_new_config
msgid "Attendance"
msgstr ""
msgstr "Docházka"
#. module: hr
#: view:hr.employee:0
@@ -349,7 +349,7 @@ msgstr "hr.department"
#. module: hr
#: model:ir.actions.act_window,name:hr.action_create_hr_employee_installer
msgid "Create your Employees"
msgstr ""
msgstr "Vytvořit vaše zaměstnance"
#. module: hr
#: field:hr.employee.category,name:0
@@ -431,7 +431,7 @@ msgstr "neznámé"
#. module: hr
#: help:hr.job,no_of_employee:0
msgid "Number of employees with that job."
msgstr ""
msgstr "Počet zaměstnanců v této úlože"
#. module: hr
#: field:hr.employee,ssnid:0
+43
View File
@@ -0,0 +1,43 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Business Applications
# Copyright (C) 2004-2012 OpenERP S.A. (<http://openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from osv import fields, osv
class hr_config_settings(osv.osv_memory):
_name = 'hr.config.settings'
_inherit = 'res.config.settings'
_columns = {
'module_hr_timesheet_sheet': fields.boolean('Manage Timesheets and Attendances',
help ="""This installs the module hr_timesheet_sheet."""),
'module_hr_holidays': fields.boolean('Manage Holidays',
help ="""This installs the module hr_holidays."""),
'module_hr_expense': fields.boolean('Manage Employees Expenses',
help ="""This installs the module hr_expense."""),
'module_hr_recruitment': fields.boolean('Manage Recruitment Process',
help ="""This installs the module hr_recruitment."""),
'module_hr_contract': fields.boolean('Manage Employees Contracts',
help ="""This installs the module hr_contract."""),
'module_hr_evaluation': fields.boolean('Manage Appraisals Process',
help ="""This installs the module hr_evaluation."""),
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+74
View File
@@ -0,0 +1,74 @@
<openerp>
<data>
<record id="open_payroll1_modules" model="ir.actions.act_window">
<field name="name">Payroll</field>
<field name="res_model">ir.module.module</field>
<field name="view_mode">kanban,tree,form</field>
<field name="domain">[('state','=','uninstalled'), ('name','ilike','payroll'), ('name','!=','hr_payroll_account')]</field>
</record>
<record id="view_human_resources_configuration" model="ir.ui.view">
<field name="name">hr settings</field>
<field name="model">hr.config.settings</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string ="HR Application">
<separator string="Human Resources" colspan="4"/>
<label string="Departments :"/>
<label colspan="1"/>
<group colspan="2">
<button name="%(view_department_form_installer)d" string="Create Your Departments"
type="action" icon="terp-personal+"/>
</group>
<newline/>
<label string="Employees :" />
<label colspan="1"/>
<group colspan="2">
<button name="%(open_view_employee_list_my)d" string="Create Your Employees"
type="action" icon="terp-personal"/>
</group>
<newline/>
<field name="module_hr_timesheet_sheet"/>
<newline/>
<field name="module_hr_holidays"/>
<newline/>
<label string="Salary Rules :"/>
<label colspan="1"/>
<group colspan="2">
<button string="Configure Your Salary Rules" icon="gtk-go-forward"
name="%(open_payroll1_modules)d" type="action" />
</group>
<separator string="Additional Features" colspan="4"/>
<field name="module_hr_expense"/>
<newline/>
<field name="module_hr_recruitment"/>
<newline/>
<field name="module_hr_evaluation"/>
<newline/>
<field name="module_hr_contract"/>
<group name="config_timesheets" colspan="4"/>
<group name="config_payroll" colspan="4"/>
<group name="config_recruitment" colspan="4"/>
<label colspan="2"/>
<button string="Cancel" icon="gtk-cancel" special="cancel"/>
<button string="Apply" icon="gtk-apply" type="object" name="execute"/>
</form>
</field>
</record>
<record id="action_human_resources_configuration" model="ir.actions.act_window">
<field name="name">Configure Human Resources Application</field>
<field name="res_model">hr.config.settings</field>
<field name="view_id" ref="view_human_resources_configuration"/>
<field name="view_mode">form</field>
<field name="target">inline</field>
</record>
<menuitem id="menu_human_resources_configuration" name="Human Resources" parent="base.menu_config" sequence="8" action="action_human_resources_configuration"/>
</data>
</openerp>
+7 -7
View File
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2011-09-16 09:10+0000\n"
"PO-Revision-Date: 2012-04-06 04:58+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\n"
"Language-Team: Czech <openerp-i18n-czech@lists.launchpad.net >\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-02-09 06:45+0000\n"
"X-Generator: Launchpad (build 14763)\n"
"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n"
"X-Generator: Launchpad (build 15060)\n"
"X-Poedit-Language: czech\n"
#. module: hr_attendance
@@ -197,7 +197,7 @@ msgstr "Vyhledávání v docházce"
#. module: hr_attendance
#: model:ir.actions.act_window,name:hr_attendance.action_hr_attendance_week
msgid "Attendances By Week"
msgstr ""
msgstr "Docházka podle týdne"
#. module: hr_attendance
#: constraint:hr.attendance:0
@@ -263,7 +263,7 @@ msgstr "Měsíc"
#. module: hr_attendance
#: field:hr.action.reason,action_type:0
msgid "Action Type"
msgstr ""
msgstr "Typ akce"
#. module: hr_attendance
#: report:report.hr.timesheet.attendance.error:0
@@ -275,7 +275,7 @@ msgstr ""
#. module: hr_attendance
#: view:hr.attendance:0
msgid "My Attendance"
msgstr ""
msgstr "Moje docházka"
#. module: hr_attendance
#: help:hr.attendance,action_desc:0
@@ -312,7 +312,7 @@ msgstr "hr.sign.out.ask"
#. module: hr_attendance
#: view:hr.attendance.week:0
msgid "Print Attendance Report Weekly"
msgstr ""
msgstr "Tisknout týdenní výkaz docházky"
#. module: hr_attendance
#: selection:hr.attendance.month,month:0
+10 -10
View File
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: openeobject-addons\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2011-09-20 07:48+0000\n"
"PO-Revision-Date: 2012-04-06 05:09+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\n"
"Language-Team: Czech <openerp-i18n-czech@lists.launchpad.net >\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-02-09 06:38+0000\n"
"X-Generator: Launchpad (build 14763)\n"
"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n"
"X-Generator: Launchpad (build 15060)\n"
"X-Poedit-Language: Czech\n"
#. module: hr_contract
@@ -25,7 +25,7 @@ msgstr "Mzda"
#. module: hr_contract
#: view:hr.contract:0
msgid "Information"
msgstr ""
msgstr "Informace"
#. module: hr_contract
#: view:hr.contract:0
@@ -87,7 +87,7 @@ msgstr "Hledat smlouvu"
#. module: hr_contract
#: view:hr.contract:0
msgid "Contracts in progress"
msgstr ""
msgstr "Smlouvy v běhu"
#. module: hr_contract
#: field:hr.employee,vehicle_distance:0
@@ -111,7 +111,7 @@ msgstr "Osobní informace"
#. module: hr_contract
#: view:hr.contract:0
msgid "Contracts whose end date already passed"
msgstr ""
msgstr "Smlouvy jejichž datum ukončení již uplynul"
#. module: hr_contract
#: help:hr.employee,contract_id:0
@@ -163,7 +163,7 @@ msgstr "Datum ukončení"
#. module: hr_contract
#: help:hr.contract,wage:0
msgid "Basic Salary of the employee"
msgstr ""
msgstr "Základní plat zaměstnance"
#. module: hr_contract
#: field:hr.contract,name:0
@@ -184,7 +184,7 @@ msgstr "Poznámky"
#. module: hr_contract
#: field:hr.contract,permit_no:0
msgid "Work Permit No"
msgstr ""
msgstr "Č. pracovního povolení"
#. module: hr_contract
#: view:hr.contract:0
@@ -217,7 +217,7 @@ msgstr "Pracovní informace"
#. module: hr_contract
#: field:hr.contract,visa_expire:0
msgid "Visa Expire Date"
msgstr ""
msgstr "Datum vypršení víza"
#. module: hr_contract
#: field:hr.contract,job_id:0
@@ -242,7 +242,7 @@ msgstr "Chyba! Počáteční datum smlouvy musí být nižší než konečné da
#. module: hr_contract
#: field:hr.contract,visa_no:0
msgid "Visa No"
msgstr ""
msgstr "Č. víza"
#. module: hr_contract
#: field:hr.employee,place_of_birth:0
@@ -10,9 +10,21 @@
<field name="help">You can define appraisal plans (ex: first interview after 6 months, then every year). Then, each employee can be linked to an appraisal plan so that OpenERP can automatically generate interview requests to managers and/or subordinates.</field>
</record>
<record id="todo_evaluation_plans_installer" model="ir.actions.todo">
<field name="action_id" ref="action_evaluation_plans_installer" />
<field name="category_id" ref="hr.category_hr_management_config" />
<!-- Hr Configuration wizard -->
<record id="view_evaluation_config_wizard_inherit" model="ir.ui.view">
<field name="name">hr settings for evaluations</field>
<field name="model">hr.config.settings</field>
<field name="type">form</field>
<field name="inherit_id" ref="hr.view_human_resources_configuration"/>
<field name="arch" type="xml">
<field name="module_hr_evaluation" position="after">
<group colspan="2">
<button name="%(action_evaluation_plans_installer)d" string="Review Appraisal Plans"
type="action" icon="terp-stock_align_left_24"/>
</group>
</field>
</field>
</record>
</data>
</openerp>
@@ -27,10 +27,21 @@
<field name="help">Define one product for each expense type allowed for an employee (travel by car, hostel, restaurant, etc). If you reimburse the employees at a fixed rate, set a cost and a unit of measure on the product. If you reimburse based on real costs, set the cost at 0.00. The user will set the real price when recording his expense sheet.</field>
</record>
<record id="product_normal_form_view_todo" model="ir.actions.todo">
<field name="action_id" ref="product_normal_form_view_installer"/>
<field name="category_id" ref="hr.category_hr_management_config"/>
<field name="sequence">3</field>
</record>
<!-- Hr Configuration wizard -->
<record id="view_expenseconfig_wizard_inherit" model="ir.ui.view">
<field name="name">hr settings for expenses</field>
<field name="model">hr.config.settings</field>
<field name="type">form</field>
<field name="inherit_id" ref="hr.view_human_resources_configuration"/>
<field name="arch" type="xml">
<field name="module_hr_expense" position="after">
<group colspan="2">
<button name="%(product_normal_form_view_installer)d" string="Review Expenses Products"
type="action" icon="terp-accessories-archiver"/>
</group>
</field>
</field>
</record>
</data>
</openerp>
+74 -1
View File
@@ -93,6 +93,7 @@ class hr_holidays(osv.osv):
_name = "hr.holidays"
_description = "Leave"
_order = "type desc, date_from asc"
_inherit = ['ir.needaction_mixin', 'mail.thread']
def _employee_get(self, cr, uid, context=None):
ids = self.pool.get('hr.employee').search(cr, uid, [('user_id', '=', uid)], context=context)
@@ -150,7 +151,12 @@ class hr_holidays(osv.osv):
('date_check2', "CHECK ( (type='add') OR (date_from <= date_to))", "The start date must be before the end date !"),
('date_check', "CHECK ( number_of_days_temp >= 0 )", "The number of days must be greater than 0 !"),
]
def create(self, cr, uid, vals, context=None):
obj_id = super(hr_holidays, self).create(cr, uid, vals, context=context)
self.create_notificate(cr, uid, [obj_id], context=context)
return obj_id
def _create_resource_leave(self, cr, uid, leaves, context=None):
'''This method will create entry in resource calendar leave object at the time of holidays validated '''
obj_res_leave = self.pool.get('resource.calendar.leaves')
@@ -250,6 +256,7 @@ class hr_holidays(osv.osv):
obj_emp = self.pool.get('hr.employee')
ids2 = obj_emp.search(cr, uid, [('user_id', '=', uid)])
manager = ids2 and ids2[0] or False
self.holidays_validate_notificate(cr, uid, ids, context=context)
return self.write(cr, uid, ids, {'state':'validate1', 'manager_id': manager})
def holidays_validate2(self, cr, uid, ids, context=None):
@@ -301,11 +308,13 @@ class hr_holidays(osv.osv):
wf_service.trg_validate(uid, 'hr.holidays', leave_id, 'validate', cr)
wf_service.trg_validate(uid, 'hr.holidays', leave_id, 'second_validate', cr)
if holiday_ids:
self.holidays_valid2_notificate(self, cr, uid, [holiday_ids], context=context)
self.write(cr, uid, holiday_ids, {'manager_id2': manager})
return True
def holidays_confirm(self, cr, uid, ids, context=None):
self.check_holidays(cr, uid, ids, context=context)
self.holidays_confirm_notificate(cr, uid, ids, context=context)
return self.write(cr, uid, ids, {'state':'confirm'})
def holidays_refuse(self, cr, uid, ids, approval, context=None):
@@ -316,6 +325,7 @@ class hr_holidays(osv.osv):
self.write(cr, uid, ids, {'state': 'refuse', 'manager_id': manager})
else:
self.write(cr, uid, ids, {'state': 'refuse', 'manager_id2': manager})
self.holidays_refuse_notificate(cr, uid, ids, approval, context=context)
self.holidays_cancel(cr, uid, ids, context=context)
return True
@@ -343,6 +353,69 @@ class hr_holidays(osv.osv):
if leaves_rest < record.number_of_days_temp:
raise osv.except_osv(_('Warning!'),_('You cannot validate leaves for employee %s: too few remaining days (%s).') % (record.employee_id.name, leaves_rest))
return True
# -----------------------------
# OpenChatter and notifications
# -----------------------------
def get_needaction_user_ids(self, cr, uid, ids, context=None):
result = dict.fromkeys(ids, [])
for obj in self.browse(cr, uid, ids, context=context):
if obj.state == 'confirm' and obj.employee_id.parent_id:
result[obj.id] = [obj.employee_id.parent_id.user_id.id]
elif obj.state == 'validate1':
# get group_hr_manager: everyone will be warned of second validation
res = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'base', 'group_hr_manager') or False
obj_id = res and res[1] or False
if obj_id:
hr_manager_group = self.pool.get('res.groups').read(cr, uid, [obj_id], ['users'], context=context)[0]
result[obj.id] = hr_manager_group['users']
return result
def message_get_subscribers(self, cr, uid, ids, context=None):
sub_ids = self.message_get_subscribers_ids(cr, uid, ids, context=context);
# add the employee and its manager if specified to the subscribed users
for obj in self.browse(cr, uid, ids, context=context):
if obj.employee_id.parent_id:
sub_ids.append(obj.employee_id.parent_id.user_id.id)
return self.pool.get('res.users').read(cr, uid, sub_ids, context=context)
def create_notificate(self, cr, uid, ids, context=None):
for obj in self.browse(cr, uid, ids, context=context):
self.message_append_note(cr, uid, ids, _('System notification'),
_("The %s request has been <b>created</b> and is waiting confirmation")
% ('leave' if obj.type == 'remove' else 'allocation',), type='notification', context=context)
return True
def holidays_confirm_notificate(self, cr, uid, ids, context=None):
for obj in self.browse(cr, uid, ids):
self.message_append_note(cr, uid, [obj.id], _('System notification'),
_("The %s request has been <b>confirmed</b> and is waiting for validation by the manager.")
% ('leave' if obj.type == 'remove' else 'allocation',), type='notification')
def holidays_validate_notificate(self, cr, uid, ids, context=None):
for obj in self.browse(cr, uid, ids):
if obj.holiday_status_id.double_validation:
self.message_append_note(cr, uid, [obj.id], _('System notification'),
_("The %s request has been <b>validated</b>. A second validation is necessary and is now pending.")
% ('leave' if obj.type == 'remove' else 'allocation',), type='notification', context=context)
else:
self.message_append_note(cr, uid, [obj.id], _('System notification'),
_("The %s request has been <b>validated</b>. The validation process is now over.")
% ('leave' if obj.type == 'remove' else 'allocation',), type='notification', context=context)
def holidays_valid2_notificate(self, cr, uid, ids, context=None):
for obj in self.browse(cr, uid, ids):
self.message_append_note(cr, uid, [obj.id], _('System notification'),
_("The %s request has been <b>double validated</b>. The validation process is now over.")
% ('leave' if obj.type == 'remove' else 'allocation',), type='notification', context=context)
def holidays_refuse_notificate(self, cr, uid, ids, approval, context=None):
for obj in self.browse(cr, uid, ids):
self.message_append_note(cr, uid, [obj.id], _('System notification'),
_("The %s request has been <b>refused</b>. The validation process is now over.")
% ('leave' if obj.type == 'remove' else 'allocation',), type='notification', context=context)
hr_holidays()
class resource_calendar_leaves(osv.osv):
+17 -4
View File
@@ -95,6 +95,7 @@
<button string="Approved" name="second_validate" states="validate1" type="workflow" icon="gtk-apply" groups="base.group_hr_user"/>
<button string="Set to Draft" name="set_to_draft" states="refuse,validate" type="object" icon="gtk-convert" groups="base.group_hr_user"/>
</group>
<field name="message_ids_social" colspan="4" widget="ThreadView" nolabel="1"/>
</page>
</notebook>
</form>
@@ -137,6 +138,7 @@
<button string="Approved" name="second_validate" states="validate1" type="workflow" icon="gtk-apply" groups="base.group_hr_user"/>
<button string="Set to Draft" name="set_to_draft" states="cancel,validate,refuse" type="object" icon="gtk-convert" groups="base.group_hr_user"/>
</group>
<field name="message_ids_social" colspan="4" widget="ThreadView" nolabel="1"/>
</page>
</notebook>
</form>
@@ -483,10 +485,21 @@
<field name="help">You can assign remaining Legal Leaves for each employee, OpenERP will automatically create and validate allocation requests.</field>
</record>
<record id="hr_holidays_leaves_assign_form_view_todo" model="ir.actions.todo">
<field name="action_id" ref="hr_holidays_leaves_assign_legal"/>
<field name="category_id" ref="hr.category_hr_management_config"/>
</record>
<!-- Hr Configuration wizard -->
<record id="view_config_wizard_inherit" model="ir.ui.view">
<field name="name">hr settings for holidays</field>
<field name="model">hr.config.settings</field>
<field name="type">form</field>
<field name="inherit_id" ref="hr.view_human_resources_configuration"/>
<field name="arch" type="xml">
<field name="module_hr_holidays" position="after">
<group colspan="2">
<button name="%(hr_holidays.hr_holidays_leaves_assign_legal)d" string="Allocate Leaves"
type="action" icon="gtk-apply"/>
</group>
</field>
</field>
</record>
<!-- Hr employee inherit Legal Leaves -->
+2
View File
@@ -24,4 +24,6 @@ import hr_payroll
import report
import wizard
import res_config
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+1
View File
@@ -59,6 +59,7 @@ Generic Payroll system.
'hr_payroll_data.xml',
'security/ir.model.access.csv',
'wizard/hr_payroll_contribution_register_report.xml',
'res_config_view.xml',
],
'test': [
'test/payslip.yml',
+29
View File
@@ -0,0 +1,29 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Business Applications
# Copyright (C) 2004-2012 OpenERP S.A. (<http://openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from osv import osv, fields
class human_resources_configuration(osv.osv_memory):
_inherit = 'hr.config.settings'
_columns = {
'module_hr_payroll_account': fields.boolean('Manage Account Payroll',
help ="""This installs the module hr_payroll_account."""),
}
+17
View File
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_hr_config_inherit" model="ir.ui.view">
<field name="name">hr settings for payroll</field>
<field name="model">hr.config.settings</field>
<field name="type">form</field>
<field name="inherit_id" ref="hr.view_human_resources_configuration"/>
<field name="arch" type="xml">
<group name="config_payroll" position="after">
<separator string="Account Payroll" colspan="4"/>
<field name="module_hr_payroll_account"/>
</group>
</field>
</record>
</data>
</openerp>
+140
View File
@@ -0,0 +1,140 @@
# 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 <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-04-08 06:04+0000\n"
"Last-Translator: Masaki Yamaya <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-09 04:56+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: hr_payroll_account
#: field:hr.payslip,move_id:0
msgid "Accounting Entry"
msgstr ""
#. module: hr_payroll_account
#: field:hr.salary.rule,account_tax_id:0
msgid "Tax Code"
msgstr "税金コード"
#. module: hr_payroll_account
#: field:hr.payslip,journal_id:0
#: field:hr.payslip.run,journal_id:0
msgid "Expense Journal"
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 "Adjustment Entry"
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
#: model:ir.model,name:hr_payroll_account.model_hr_salary_rule
msgid "hr.salary.rule"
msgstr "hr.salary.rule"
#. module: hr_payroll_account
#: model:ir.model,name:hr_payroll_account.model_hr_payslip_run
msgid "Payslip Batches"
msgstr "給与明細書の束"
#. module: hr_payroll_account
#: field:hr.contract,journal_id:0
msgid "Salary Journal"
msgstr "給与仕訳"
#. module: hr_payroll_account
#: model:ir.model,name:hr_payroll_account.model_hr_payslip
msgid "Pay Slip"
msgstr "給与明細書"
#. module: hr_payroll_account
#: constraint:hr.payslip:0
msgid "Payslip 'Date From' must be before 'Date To'."
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
#: code:addons/hr_payroll_account/hr_payroll_account.py:171
#, python-format
msgid ""
"The Expense Journal \"%s\" has not properly configured the Debit Account!"
msgstr "経費仕訳 %s は、借方勘定科目を正しく設定していません。"
#. module: hr_payroll_account
#: code:addons/hr_payroll_account/hr_payroll_account.py:155
#, python-format
msgid ""
"The Expense Journal \"%s\" has not properly configured the Credit Account!"
msgstr "経費仕訳 %s は与信アカウントを正しく設定してありません。"
#. module: hr_payroll_account
#: field:hr.salary.rule,account_debit:0
msgid "Debit Account"
msgstr "借方勘定科目"
#. module: hr_payroll_account
#: code:addons/hr_payroll_account/hr_payroll_account.py:102
#, python-format
msgid "Payslip of %s"
msgstr "%s の給与明細書"
#. module: hr_payroll_account
#: model:ir.model,name:hr_payroll_account.model_hr_contract
msgid "Contract"
msgstr "契約"
#. module: hr_payroll_account
#: constraint:hr.contract:0
msgid "Error! contract start-date must be lower then contract end-date."
msgstr "エラー。契約開始日は契約終了日の前でなければいけません。"
#. module: hr_payroll_account
#: field:hr.payslip,period_id:0
msgid "Force Period"
msgstr "強制期間"
#. module: hr_payroll_account
#: field:hr.salary.rule,account_credit:0
msgid "Credit Account"
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:155
#: code:addons/hr_payroll_account/hr_payroll_account.py:171
#, python-format
msgid "Configuration Error!"
msgstr "設定エラー"
#. module: hr_payroll_account
#: view:hr.contract:0
#: view:hr.salary.rule:0
msgid "Accounting"
msgstr "会計"
+1
View File
@@ -22,5 +22,6 @@
import hr_recruitment
import report
import wizard
import res_config
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+2 -1
View File
@@ -49,7 +49,8 @@ system to store and search in your CV base.
'security/ir.model.access.csv',
'report/hr_recruitment_report_view.xml',
'board_hr_recruitment_statistical_view.xml',
'hr_recruitment_installer_view.xml'
'hr_recruitment_installer_view.xml',
'res_config_view.xml',
],
'init_xml': [
'hr_recruitment_data.xml'
+83 -29
View File
@@ -96,7 +96,7 @@ class hr_applicant(crm.crm_case, osv.osv):
_name = "hr.applicant"
_description = "Applicant"
_order = "id desc"
_inherit = ['mail.thread']
_inherit = ['ir.needaction_mixin', 'mail.thread']
def _compute_day(self, cr, uid, ids, fields, args, context=None):
"""
@@ -179,6 +179,7 @@ class hr_applicant(crm.crm_case, osv.osv):
'day_close': fields.function(_compute_day, string='Days to Close', \
multi='day_close', type="float", store=True),
'color': fields.integer('Color Index'),
'emp_id': fields.many2one('hr.employee', 'employee'),
'user_email': fields.related('user_id', 'user_email', type='char', string='User Email', readonly=True),
}
@@ -389,36 +390,33 @@ class hr_applicant(crm.crm_case, osv.osv):
self.message_append_dict(cr, uid, ids, msg, context=context)
return res
def case_open(self, cr, uid, ids, *args):
def create(self, cr, uid, vals, context=None):
obj_id = super(hr_applicant, self).create(cr, uid, vals, context=context)
self.create_send_note(cr, uid, [obj_id], context=context)
return obj_id
def case_open(self, cr, uid, ids, context=None):
"""
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of case's Ids
@param *args: Give Tuple Value
open Request of the applicant for the hr_recruitment
"""
res = super(hr_applicant, self).case_open(cr, uid, ids, *args)
res = super(hr_applicant, self).case_open(cr, uid, ids, context)
date = self.read(cr, uid, ids, ['date_open'])[0]
if not date['date_open']:
self.write(cr, uid, ids, {'date_open': time.strftime('%Y-%m-%d %H:%M:%S'),})
for (id, name) in self.name_get(cr, uid, ids):
message = _("The job request '%s' has been set 'in progress'.") % name
self.log(cr, uid, id, message)
return res
def case_close(self, cr, uid, ids, *args):
res = super(hr_applicant, self).case_close(cr, uid, ids, *args)
for (id, name) in self.name_get(cr, uid, ids):
message = _("Applicant '%s' is being hired.") % name
self.log(cr, uid, id, message)
def case_close(self, cr, uid, ids, context=None):
res = super(hr_applicant, self).case_close(cr, uid, ids, context)
return res
def case_close_with_emp(self, cr, uid, ids, *args):
def case_close_with_emp(self, cr, uid, ids, context=None):
if context is None:
context = {}
hr_employee = self.pool.get('hr.employee')
model_data = self.pool.get('ir.model.data')
act_window = self.pool.get('ir.actions.act_window')
emp_id = False
for applicant in self.browse(cr, uid, ids):
for applicant in self.browse(cr, uid, ids, context=context):
address_id = False
if applicant.partner_id:
address_id = applicant.partner_id.address_get(['contact'])['contact']
@@ -429,7 +427,8 @@ class hr_applicant(crm.crm_case, osv.osv):
'address_home_id': address_id,
'department_id': applicant.department_id.id
})
self.case_close(cr, uid, [applicant.id], *args)
self.write(cr, uid, [applicant.id], {'emp_id': emp_id}, context=context)
self.case_close(cr, uid, [applicant.id], context)
else:
raise osv.except_osv(_('Warning!'),_('You must define Applied Job for this applicant.'))
@@ -440,16 +439,23 @@ class hr_applicant(crm.crm_case, osv.osv):
dict_act_window['view_mode'] = 'form,tree'
return dict_act_window
def case_reset(self, cr, uid, ids, *args):
"""Resets case as draft
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of case Ids
@param *args: Tuple Value for additional Params
def case_cancel(self, cr, uid, ids, context=None):
"""Overrides cancel for crm_case for setting probability
"""
res = super(hr_applicant, self).case_cancel(cr, uid, ids, context)
self.write(cr, uid, ids, {'probability' : 0.0})
return res
res = super(hr_applicant, self).case_reset(cr, uid, ids, *args)
def case_pending(self, cr, uid, ids, context=None):
"""Marks case as pending"""
res = super(hr_applicant, self).case_pending(cr, uid, ids, context)
self.write(cr, uid, ids, {'probability' : 0.0})
return res
def case_reset(self, cr, uid, ids, context=None):
"""Resets case as draft
"""
res = super(hr_applicant, self).case_reset(cr, uid, ids, context)
self.write(cr, uid, ids, {'date_open': False, 'date_closed': False})
return res
@@ -471,10 +477,58 @@ class hr_applicant(crm.crm_case, osv.osv):
def write(self, cr, uid, ids, vals, context=None):
if 'stage_id' in vals and vals['stage_id']:
stage = self.pool.get('hr.recruitment.stage').browse(cr, uid, vals['stage_id'], context=context)
text = _("Changed Stage to: %s") % stage.name
self.message_append(cr, uid, ids, text, body_text=text, context=context)
self.message_append_note(cr, uid, ids, body=_("Stage changed to <b>%s</b>.") % stage.name, context=context)
return super(hr_applicant,self).write(cr, uid, ids, vals, context=context)
# -------------------------------------------------------
# OpenChatter methods and notifications
# -------------------------------------------------------
def message_get_subscribers(self, cr, uid, ids, context=None):
sub_ids = self.message_get_subscribers_ids(cr, uid, ids, context=context);
for obj in self.browse(cr, uid, ids, context=context):
if obj.user_id:
sub_ids.append(obj.user_id.id)
return self.pool.get('res.users').read(cr, uid, sub_ids, context=context)
def get_needaction_user_ids(self, cr, uid, ids, context=None):
result = dict.fromkeys(ids, [])
for obj in self.browse(cr, uid, ids, context=context):
if obj.state == 'draft' and obj.user_id:
result[obj.id] = [obj.user_id.id]
return result
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
return 'Applicant'
def case_open_send_note(self, cr, uid, ids, context=None):
message = _("Applicant has been set <b>in progress</b>.")
return self.message_append_note(cr, uid, ids, body=message, context=context)
def case_close_send_note(self, cr, uid, ids, context=None):
if context is None:
context = {}
for applicant in self.browse(cr, uid, ids, context=context):
if applicant.emp_id:
message = _("Applicant has been <b>hired</b> and created as an employee.")
self.message_append_note(cr, uid, [applicant.id], body=message, context=context)
else:
message = _("Applicant has been <b>hired</b>.")
self.message_append_note(cr, uid, [applicant.id], body=message, context=context)
return True
def case_cancel_send_note(self, cr, uid, ids, context=None):
msg = 'Applicant <b>refused</b>.'
return self.message_append_note(cr, uid, ids, body=msg, context=context)
def case_reset_send_note(self, cr, uid, ids, context=None):
message =_("Applicant has been set as <b>new</b>.")
return self.message_append_note(cr, uid, ids, body=message, context=context)
def create_send_note(self, cr, uid, ids, context=None):
message = _("Applicant has been <b>created</b>.")
return self.message_append_note(cr, uid, ids, body=message, context=context)
hr_applicant()
class hr_job(osv.osv):
@@ -9,11 +9,5 @@
<field name="help">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.</field>
<field name="view_id" ref="hr_recruitment.hr_recruitment_stage_tree"/>
</record>
<record id="hr_recruitment_stage_form_todo" model="ir.actions.todo">
<field name="action_id" ref="hr_recruitment_stage_form_installer"/>
<field name="category_id" ref="hr.category_hr_management_config"/>
<field name="sequence">3</field>
</record>
</data>
</openerp>
+4 -30
View File
@@ -79,6 +79,9 @@
<field name="partner_name"/>
<field name="job_id" on_change="onchange_job(job_id)"/>
<button name="action_makeMeeting" type="object" string="Meeting" icon="gtk-index"/>
<button string="Send New Email"
name="%(mail.action_email_compose_message_wizard)d"
icon="terp-mail-message-new" type="action"/>
<newline/>
<field name="department_id" widget="selection" on_change="onchange_department_id(department_id)"/>
<group colspan="2" col="4">
@@ -123,13 +126,6 @@
<field name="source_id"/>
<field name="reference"/>
</group>
<group col="2" colspan="2" groups="base.group_no_one">
<separator colspan="2" string="Dates"/>
<field name="create_date"/>
<field name="write_date"/>
<field name="date_closed"/>
<field name="date_open"/>
</group>
<separator colspan="4" string="Status"/>
<group col="8" colspan="4">
<field name="state" widget="statusbar" statusbar_visible="draft,open,done" statusbar_colors='{"pending":"blue"}'/>
@@ -140,33 +136,11 @@
<button name="case_reset" string="Reset to New" states="done,cancel" type="object" icon="gtk-convert"/>
</group>
</page>
<page string="Communication &amp; History" groups="base.group_extended">
<group colspan="4">
<field colspan="4" name="email_cc" string="Global CC" widget="char"/>
</group>
<field name="message_ids" colspan="4" nolabel="1" mode="tree" readonly="1">
<tree string="History">
<field name="display_text" string="History Information"/>
<field name="email_from" invisible="1"/>
<button
string="Reply" attrs="{'invisible': [('email_from', '=', False)]}"
name="%(mail.action_email_compose_message_wizard)d"
context="{'mail.compose.message.mode':'reply', 'message_id':active_id}"
icon="terp-mail-replied" type="action" />
</tree>
</field>
<button string="Add Internal Note"
name="%(crm.action_crm_add_note)d"
context="{'model': 'crm.lead' }"
icon="terp-document-new" type="action" />
<button string="Send New Email"
name="%(mail.action_email_compose_message_wizard)d"
icon="terp-mail-message-new" type="action"/>
</page>
<page string="Notes">
<field name="description" nolabel="1" colspan="4"/>
</page>
</notebook>
<field name="message_ids_social" colspan="4" widget="ThreadView" nolabel="1"/>
</form>
</field>
</record>
+52
View File
@@ -0,0 +1,52 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Business Applications
# Copyright (C) 2004-2012 OpenERP S.A. (<http://openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from osv import osv, fields
class hr_applicant_settings(osv.osv_memory):
_name = 'hr.config.settings'
_inherit = ['hr.config.settings', 'fetchmail.config.settings']
_columns = {
'module_document_ftp': fields.boolean('Index & Track Documents',
help="""Manage your CV's and motivation letter related to all applicants.
This installs the module document_ftp."""),
'fetchmail_applicants': fields.boolean('Create Applicants from an Email Account',
fetchmail_model='hr.applicant', fetchmail_name='Incoming HR Applications',
help ="""Allow applicants to send their job application to an email address (jobs@mycompany.com),
and create automatically application documents in the system."""),
'applicants_server': fields.char('Server', size=256),
'applicants_port': fields.integer('Port'),
'applicants_type': fields.selection([
('pop', 'POP Server'),
('imap', 'IMAP Server'),
('local', 'Local Server'),
], 'Type'),
'applicants_is_ssl': fields.boolean('SSL/TLS',
help="Connections are encrypted with SSL/TLS through a dedicated port (default: IMAPS=993, POP=995)"),
'applicants_user': fields.char('Username', size=256),
'applicants_password': fields.char('Password', size=1024),
}
_defaults = {
'applicants_type': 'pop',
}
+35
View File
@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_hr_apll_config_settings" model="ir.ui.view">
<field name="name">hr settings for recruitment</field>
<field name="model">hr.config.settings</field>
<field name="type">form</field>
<field name="inherit_id" ref="hr.view_human_resources_configuration"/>
<field name="arch" type="xml">
<field name="module_hr_recruitment" position="after">
<group colspan="2">
<button name="%(hr_recruitment_stage_form_installer)d" string="Review Recruitment Stages"
type="action" icon="terp-stage"/>
</group>
</field>
<group name="config_recruitment" position="after">
<separator string="Recruitment" colspan="4"/>
<field name="module_document_ftp"/>
<newline/>
<field name="fetchmail_applicants"/>
<group colspan="2" attrs="{'invisible': [('fetchmail_applicants','=',False)]}">
<field name="applicants_server" attrs="{'required': [('fetchmail_applicants','=',True)]}"/>
<field name="applicants_type" attrs="{'required': [('fetchmail_applicants','=',True)]}"
on_change="onchange_fetchmail('applicants', applicants_type, applicants_is_ssl)"/>
<field name="applicants_port" attrs="{'required': [('fetchmail_applicants','=',True)]}"/>
<field name="applicants_is_ssl" attrs="{'required': [('fetchmail_applicants','=',True)]}"
on_change="onchange_fetchmail('applicants', applicants_type, applicants_is_ssl)"/>
<field name="applicants_user" attrs="{'required': [('fetchmail_applicants','=',True)]}"/>
<field name="applicants_password" password="True" attrs="{'required': [('fetchmail_applicants','=',True)]}"/>
</group>
</group>
</field>
</record>
</data>
</openerp>
@@ -63,7 +63,7 @@ class hr_recruitment_partner_create(osv.osv_memory):
'email': case.email_from
}, context=context)
case_obj.write(cr, uid, case.id, {
case_obj.write(cr, uid, [case.id], {
'partner_id': partner_id,
}, context=context)
if data['close']:
@@ -82,4 +82,4 @@ class hr_recruitment_partner_create(osv.osv_memory):
hr_recruitment_partner_create()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -9,10 +9,5 @@
<field name="view_mode">tree,form</field>
<field name="help">You should create an analytic account structure depending on your needs to analyse costs and revenues. In OpenERP, analytic accounts are also used to track customer contracts.</field>
</record>
<record id="todo_define_analytic_structure" model="ir.actions.todo">
<field name="action_id" ref="action_define_analytic_structure" />
<field name="category_id" ref="hr.category_hr_management_config" />
</record>
</data>
</openerp>
+16 -11
View File
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2011-09-20 08:48+0000\n"
"PO-Revision-Date: 2012-04-06 05:13+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\n"
"Language-Team: Czech <openerp-i18n-czech@lists.launchpad.net >\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-02-09 06:31+0000\n"
"X-Generator: Launchpad (build 14763)\n"
"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n"
"X-Generator: Launchpad (build 15060)\n"
"X-Poedit-Language: Czech\n"
#. module: hr_timesheet
@@ -107,7 +107,7 @@ msgstr "Pá"
#. module: hr_timesheet
#: field:hr.employee,uom_id:0
msgid "UoM"
msgstr ""
msgstr "MJ"
#. module: hr_timesheet
#: view:hr.sign.in.project:0
@@ -152,7 +152,7 @@ msgstr "Jméno zaměstnance"
#. module: hr_timesheet
#: field:hr.sign.out.project,account_id:0
msgid "Project / Analytic Account"
msgstr ""
msgstr "Projekt / Analytický účet"
#. module: hr_timesheet
#: model:ir.model,name:hr_timesheet.model_hr_analytical_timesheet_users
@@ -195,7 +195,7 @@ msgstr "Varování"
#. module: hr_timesheet
#: field:hr.analytic.timesheet,partner_id:0
msgid "Partner"
msgstr ""
msgstr "Partner"
#. module: hr_timesheet
#: view:hr.sign.in.project:0
@@ -220,7 +220,7 @@ msgstr "Ne"
#. module: hr_timesheet
#: view:hr.analytic.timesheet:0
msgid "Analytic account"
msgstr ""
msgstr "Analytický účet"
#. module: hr_timesheet
#: view:hr.analytical.timesheet.employee:0
@@ -263,7 +263,7 @@ msgstr "Kategorie"
#. module: hr_timesheet
#: constraint:hr.analytic.timesheet:0
msgid "You cannot modify an entry in a Confirmed/Done timesheet !."
msgstr ""
msgstr "Nemůžete změnit údaj v Potvrzeném/Dokončeném časovém záznamu !."
#. module: hr_timesheet
#: help:hr.employee,product_id:0
@@ -314,7 +314,7 @@ msgstr "Popis práce"
#. module: hr_timesheet
#: view:account.analytic.account:0
msgid "Invoice Analysis"
msgstr ""
msgstr "Analýza faktury"
#. module: hr_timesheet
#: model:ir.actions.report.xml,name:hr_timesheet.report_user_timesheet
@@ -330,7 +330,7 @@ msgstr "Přihlášení / Odhlášení podle projektu"
#. module: hr_timesheet
#: model:ir.actions.act_window,name:hr_timesheet.action_define_analytic_structure
msgid "Define your Analytic Structure"
msgstr ""
msgstr "Určit vaši analytickou strukturu"
#. module: hr_timesheet
#: view:hr.sign.in.project:0
@@ -364,11 +364,14 @@ msgid ""
"analyse costs and revenues. In OpenERP, analytic accounts are also used to "
"track customer contracts."
msgstr ""
"Měli byste vytvořit strukturu analytických účtů závisejících na vašich "
"potřebách k analýze cen a výnosů. Analytické účty jsou v OpenERP také "
"použity pro sledování smluv zákazníků."
#. module: hr_timesheet
#: field:hr.analytic.timesheet,line_id:0
msgid "Analytic Line"
msgstr ""
msgstr "Analytický řádek"
#. module: hr_timesheet
#: code:addons/hr_timesheet/report/user_timesheet.py:40
@@ -515,6 +518,8 @@ msgid ""
"Through this menu you can register and follow your workings hours by project "
"every day."
msgstr ""
"Pomocí této nabídky můžete každý den registrovat a následovat vaše pracovní "
"hodiny podle projektu."
#. module: hr_timesheet
#: field:hr.sign.in.project,server_date:0
+1
View File
@@ -22,5 +22,6 @@
import hr_timesheet_sheet
import wizard
import report
import res_config
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+2 -1
View File
@@ -61,7 +61,8 @@ The validation can be configured in the company:
'report/hr_timesheet_report_view.xml',
'report/timesheet_report_view.xml',
'wizard/hr_timesheet_current_view.xml',
'hr_timesheet_sheet_data.xml'
'hr_timesheet_sheet_data.xml',
'res_config_view.xml',
],
'demo_xml': ['hr_timesheet_sheet_demo.xml',
+48
View File
@@ -0,0 +1,48 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Business Applications
# Copyright (C) 2004-2012 OpenERP S.A. (<http://openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from osv import osv, fields
class hr_timesheet_settings(osv.osv_memory):
_inherit = 'hr.config.settings'
_columns = {
'timesheet_range': fields.selection([('day','Day'),('week','Week'),('month','Month')],
'Timesheet Range', help="Periodicity on which you validate your timesheets."),
'timesheet_max_difference': fields.float('Timesheet Allowed Difference (Hours)',
help="""Allowed difference in hours between the sign in/out and the timesheet
computation for one sheet. Set this to 0 if you do not want any control."""),
}
def get_default_timesheet(self, cr, uid, fields, context=None):
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
return {
'timesheet_range': user.company_id.timesheet_range,
'timesheet_max_difference': user.company_id.timesheet_max_difference,
}
def set_default_timesheet(self, cr, uid, ids, context=None):
config = self.browse(cr, uid, ids[0], context)
user = self.pool.get('res.users').browse(cr, uid, uid, context)
user.company_id.write({
'timesheet_range': config.timesheet_range,
'timesheet_max_difference': config.timesheet_max_difference,
})
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_hr_timehseet_config_settings" model="ir.ui.view">
<field name="name">hr settings for timesheets</field>
<field name="model">hr.config.settings</field>
<field name="type">form</field>
<field name="inherit_id" ref="hr.view_human_resources_configuration"/>
<field name="arch" type="xml">
<field name="module_hr_timesheet_sheet" position="after">
<group colspan="2">
<button name="%(hr_timesheet.action_define_analytic_structure)d" string="Create Your Timesheet Accounts"
type="action" icon="terp-folder-green"/>
</group>
</field>
<group name="config_timesheets" position="after">
<separator string="Timesheets" colspan="4"/>
<field name="timesheet_range"/>
<field name="timesheet_max_difference"/>
</group>
</field>
</record>
</data>
</openerp>
+19 -19
View File
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2011-10-17 08:27+0000\n"
"PO-Revision-Date: 2012-04-06 06:33+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\n"
"Language-Team: openerp-i18n-czech <openerp-i18n-czech@lists.launchpad.net >\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-02-09 06:29+0000\n"
"X-Generator: Launchpad (build 14763)\n"
"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n"
"X-Generator: Launchpad (build 15060)\n"
"X-Poedit-Language: Czech\n"
#. module: idea
@@ -26,7 +26,7 @@ msgstr ""
#. module: idea
#: view:idea.idea:0
msgid "By States"
msgstr ""
msgstr "Podle stavů"
#. module: idea
#: model:ir.actions.act_window,name:idea.action_idea_select
@@ -73,7 +73,7 @@ msgstr "Březen"
#. module: idea
#: view:idea.idea:0
msgid "Accepted Ideas"
msgstr ""
msgstr "Schválené nápady"
#. module: idea
#: code:addons/idea/wizard/idea_post_vote.py:94
@@ -84,7 +84,7 @@ msgstr "Nápad musí být ve stavu 'Otevřený' přes hlasováním pro tento ná
#. module: idea
#: view:report.vote:0
msgid "Open Date"
msgstr ""
msgstr "Datum otevření"
#. module: idea
#: view:report.vote:0
@@ -239,7 +239,7 @@ msgstr "Stav"
#: view:idea.idea:0
#: selection:idea.idea,state:0
msgid "New"
msgstr ""
msgstr "Nový"
#. module: idea
#: selection:idea.idea,my_vote:0
@@ -273,12 +273,12 @@ msgstr ""
#. module: idea
#: view:idea.idea:0
msgid "New Ideas"
msgstr ""
msgstr "Nové nápady"
#. module: idea
#: view:report.vote:0
msgid "Idea Vote created last month"
msgstr ""
msgstr "Hlas nápadu vytvořený v posledním měsíci"
#. module: idea
#: field:idea.category,visibility:0
@@ -289,7 +289,7 @@ msgstr "Otevřít nápad?"
#. module: idea
#: view:report.vote:0
msgid "Idea Vote created in current month"
msgstr ""
msgstr "Hlas nápadu vytvořený v tomto měsíci"
#. module: idea
#: selection:report.vote,month:0
@@ -406,7 +406,7 @@ msgstr "Hlasy nápadů"
#. module: idea
#: view:idea.idea:0
msgid "By Idea Category"
msgstr ""
msgstr "Podle kategorie nápadů"
#. module: idea
#: view:idea.idea:0
@@ -543,7 +543,7 @@ msgstr "Nastavte na jedničku, pokud požadujete pouze jeden hlas na uživatele"
#. module: idea
#: view:idea.idea:0
msgid "By Creators"
msgstr ""
msgstr "Podle tvůrce"
#. module: idea
#: view:idea.post.vote:0
@@ -564,7 +564,7 @@ msgstr "Otevřít"
#: view:idea.idea:0
#: view:report.vote:0
msgid "In Progress"
msgstr ""
msgstr "V běhu"
#. module: idea
#: view:report.vote:0
@@ -594,7 +594,7 @@ msgstr "Skóre"
#. module: idea
#: view:idea.idea:0
msgid "Votes Statistics"
msgstr ""
msgstr "Statistika hlasů"
#. module: idea
#: view:idea.vote:0
@@ -632,7 +632,7 @@ msgstr "Únor"
#. module: idea
#: field:idea.category,complete_name:0
msgid "Name"
msgstr ""
msgstr "Jméno"
#. module: idea
#: field:idea.vote.stat,nbr:0
@@ -642,7 +642,7 @@ msgstr "Počet hlasů"
#. module: idea
#: view:report.vote:0
msgid "Month-1"
msgstr ""
msgstr "Měsíc -1"
#. module: idea
#: selection:report.vote,month:0
@@ -662,7 +662,7 @@ msgstr "Stav hlasu"
#. module: idea
#: view:report.vote:0
msgid "Idea Vote created in current year"
msgstr ""
msgstr "Hlasy nápadu vytvořené v tomto roce"
#. module: idea
#: field:idea.idea,vote_avg:0
@@ -672,7 +672,7 @@ msgstr "Průměrné skóre"
#. module: idea
#: constraint:idea.category:0
msgid "Error ! You cannot create recursive categories."
msgstr ""
msgstr "Chyba ! Nemůžete vytvořit rekurzivní Kategorie."
#. module: idea
#: field:idea.comment,idea_id:0
@@ -706,7 +706,7 @@ msgstr "Rok"
#: code:addons/idea/idea.py:274
#, python-format
msgid "You can not vote on a Draft/Accepted/Cancelled ideas."
msgstr ""
msgstr "Nemůžete hlasovat pro rozpracované/schválené/zrušené nápady."
#. module: idea
#: view:idea.select:0
+100
View File
@@ -0,0 +1,100 @@
# Arabic 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 <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-04-06 07:49+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Arabic <ar@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-07 04:56+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: import_base
#: code:addons/import_base/import_framework.py:434
#, python-format
msgid "Import failed due to an unexpected error"
msgstr ""
#. module: import_base
#: code:addons/import_base/import_framework.py:461
#, python-format
msgid "started at %s and finished at %s \n"
msgstr ""
#. module: import_base
#: code:addons/import_base/import_framework.py:448
#, python-format
msgid "Import of your data finished at %s"
msgstr ""
#. module: import_base
#: code:addons/import_base/import_framework.py:463
#, python-format
msgid ""
"but failed, in consequence no data were imported to keep database "
"consistency \n"
" error : \n"
msgstr ""
#. module: import_base
#: code:addons/import_base/import_framework.py:477
#, python-format
msgid ""
"The import of data \n"
" instance name : %s \n"
msgstr ""
#. module: import_base
#: code:addons/import_base/import_framework.py:470
#, python-format
msgid "%s has been successfully imported from %s %s, %s \n"
msgstr ""
#. module: import_base
#: code:addons/import_base/import_framework.py:447
#, python-format
msgid "Data Import failed at %s due to an unexpected error"
msgstr ""
#. module: import_base
#: code:addons/import_base/import_framework.py:436
#, python-format
msgid "Import finished, notification email sended"
msgstr ""
#. module: import_base
#: code:addons/import_base/import_framework.py:190
#, python-format
msgid "%s is not a valid model name"
msgstr ""
#. module: import_base
#: model:ir.ui.menu,name:import_base.menu_import_crm
msgid "Import"
msgstr "إستيراد"
#. module: import_base
#: code:addons/import_base/import_framework.py:467
#, python-format
msgid "with no warning"
msgstr ""
#. module: import_base
#: code:addons/import_base/import_framework.py:469
#, python-format
msgid "with warning : %s"
msgstr ""
#. module: import_base
#: code:addons/import_base/import_framework.py:191
#, python-format
msgid " fields imported : "
msgstr ""
+105
View File
@@ -0,0 +1,105 @@
# Portuguese 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 <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-04-09 13:46+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Portuguese <pt@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-10 04:56+0000\n"
"X-Generator: Launchpad (build 15070)\n"
#. module: import_base
#: code:addons/import_base/import_framework.py:434
#, python-format
msgid "Import failed due to an unexpected error"
msgstr "A importação falhou devido a um erro inesperado"
#. module: import_base
#: code:addons/import_base/import_framework.py:461
#, python-format
msgid "started at %s and finished at %s \n"
msgstr "começado em %s e finalizado em %s \n"
#. module: import_base
#: code:addons/import_base/import_framework.py:448
#, python-format
msgid "Import of your data finished at %s"
msgstr "Importação de dados terminou em %s"
#. module: import_base
#: code:addons/import_base/import_framework.py:463
#, python-format
msgid ""
"but failed, in consequence no data were imported to keep database "
"consistency \n"
" error : \n"
msgstr ""
"mas não conseguiu, em consequência da não existência de dados, foram "
"importados para manter a consistência do banco de dados \n"
" erro: \n"
#. module: import_base
#: code:addons/import_base/import_framework.py:477
#, python-format
msgid ""
"The import of data \n"
" instance name : %s \n"
msgstr ""
"Importação de dados \n"
" nome da instância: %s \n"
#. module: import_base
#: code:addons/import_base/import_framework.py:470
#, python-format
msgid "%s has been successfully imported from %s %s, %s \n"
msgstr "%s foi importado com sucesso para %s %s,%s \n"
#. module: import_base
#: code:addons/import_base/import_framework.py:447
#, python-format
msgid "Data Import failed at %s due to an unexpected error"
msgstr "Importação de dados falhada em %s devido a um erro inesperado"
#. module: import_base
#: code:addons/import_base/import_framework.py:436
#, python-format
msgid "Import finished, notification email sended"
msgstr "Importação concluída, notificação enviada para o email"
#. module: import_base
#: code:addons/import_base/import_framework.py:190
#, python-format
msgid "%s is not a valid model name"
msgstr "%s não é um nome de modelo válido"
#. module: import_base
#: model:ir.ui.menu,name:import_base.menu_import_crm
msgid "Import"
msgstr "Importação"
#. module: import_base
#: code:addons/import_base/import_framework.py:467
#, python-format
msgid "with no warning"
msgstr "Sem avisos"
#. module: import_base
#: code:addons/import_base/import_framework.py:469
#, python-format
msgid "with warning : %s"
msgstr "com aviso: %s"
#. module: import_base
#: code:addons/import_base/import_framework.py:191
#, python-format
msgid " fields imported : "
msgstr " campos importados: "
+223
View File
@@ -0,0 +1,223 @@
# Serbian Latin 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 <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-04-06 13:42+0000\n"
"Last-Translator: Milan Milosevic <Unknown>\n"
"Language-Team: Serbian Latin <sr@latin@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-07 04:56+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: import_google
#: help:synchronize.google.import,group_name:0
msgid "Choose which group to import, By default it takes all."
msgstr "Izaberite grupu za uvoz, po defaultu, uzima ih sve"
#. module: import_google
#: view:synchronize.google.import:0
msgid "Import Google Calendar Events"
msgstr "Uvezi događaje iz Google-ovog kalendara"
#. module: import_google
#: view:synchronize.google.import:0
msgid "_Import Events"
msgstr "_Uvezi događaje"
#. module: import_google
#: code:addons/import_google/wizard/import_google_data.py:71
#, python-format
msgid ""
"No Google Username or password Defined for user.\n"
"Please define in user view"
msgstr ""
"Nema određenog korisničkog imena ili lozinke za korisnika.\n"
"Molimo odredite ih u korisničkom pregledu"
#. module: import_google
#: code:addons/import_google/wizard/import_google_data.py:127
#, python-format
msgid ""
"Invalid login detail !\n"
" Specify Username/Password."
msgstr ""
"Nevažeći detalji prijave !\n"
" Odredite korisničko ime/ lozinku."
#. module: import_google
#: field:synchronize.google.import,supplier:0
msgid "Supplier"
msgstr "Dobavljač"
#. module: import_google
#: view:synchronize.google.import:0
msgid "Import Options"
msgstr "Opcije uvoza"
#. module: import_google
#: field:synchronize.google.import,group_name:0
msgid "Group Name"
msgstr "Ime grupe"
#. module: import_google
#: model:ir.model,name:import_google.model_crm_case_categ
msgid "Category of Case"
msgstr "Kategorija slučaja"
#. module: import_google
#: model:ir.actions.act_window,name:import_google.act_google_login_contact_form
#: model:ir.ui.menu,name:import_google.menu_sync_contact
msgid "Import Google Contacts"
msgstr "Uvezi Google kontakte"
#. module: import_google
#: view:google.import.message:0
msgid "Import Google Data"
msgstr "Uvezi Google podatke"
#. module: import_google
#: view:crm.meeting:0
msgid "Meeting Type"
msgstr "Tip sastanka"
#. module: import_google
#: code:addons/import_google/wizard/import_google.py:38
#: code:addons/import_google/wizard/import_google_data.py:28
#, python-format
msgid ""
"Please install gdata-python-client from http://code.google.com/p/gdata-"
"python-client/downloads/list"
msgstr ""
"Molimo instalirajte gdata-python-client from http://code.google.com/p/gdata-"
"python-client/downloads/list"
#. module: import_google
#: model:ir.model,name:import_google.model_google_login
msgid "Google Contact"
msgstr "Google kontakt"
#. module: import_google
#: view:synchronize.google.import:0
msgid "Import contacts from a google account"
msgstr "Uvezi kontakte s Google naloga"
#. module: import_google
#: code:addons/import_google/wizard/import_google_data.py:133
#, python-format
msgid "Please specify correct user and password !"
msgstr "Molimo odredite tačnog korisnika i lozinku !"
#. module: import_google
#: field:synchronize.google.import,customer:0
msgid "Customer"
msgstr "Mušterija"
#. module: import_google
#: view:synchronize.google.import:0
msgid "_Cancel"
msgstr "_Otkaži"
#. module: import_google
#: model:ir.model,name:import_google.model_synchronize_google_import
msgid "synchronize.google.import"
msgstr "synchronize.google.import"
#. module: import_google
#: view:synchronize.google.import:0
msgid "_Import Contacts"
msgstr "_Uvezi kontakte"
#. module: import_google
#: model:ir.actions.act_window,name:import_google.act_google_login_form
#: model:ir.ui.menu,name:import_google.menu_sync_calendar
msgid "Import Google Calendar"
msgstr "Uvezi Google-ov kalendar"
#. module: import_google
#: code:addons/import_google/wizard/import_google_data.py:50
#, python-format
msgid "Import google"
msgstr "Uvezi Google"
#. module: import_google
#: code:addons/import_google/wizard/import_google_data.py:127
#: code:addons/import_google/wizard/import_google_data.py:133
#, python-format
msgid "Error"
msgstr "Greška"
#. module: import_google
#: code:addons/import_google/wizard/import_google_data.py:71
#, python-format
msgid "Warning !"
msgstr "Upozorenje !"
#. module: import_google
#: field:synchronize.google.import,create_partner:0
msgid "Options"
msgstr "Opcije"
#. module: import_google
#: view:google.import.message:0
msgid "_Ok"
msgstr "_Ok"
#. module: import_google
#: code:addons/import_google/wizard/import_google.py:38
#: code:addons/import_google/wizard/import_google_data.py:28
#, python-format
msgid "Google Contacts Import Error!"
msgstr "Greška u uvozu kontakata s Google-a"
#. module: import_google
#: model:ir.model,name:import_google.model_google_import_message
msgid "Import Message"
msgstr "Uvezi poruku"
#. module: import_google
#: field:synchronize.google.import,calendar_name:0
msgid "Calendar Name"
msgstr "Ime kalendara"
#. module: import_google
#: help:synchronize.google.import,supplier:0
msgid "Check this box to set newly created partner as Supplier."
msgstr "Označite ovu kućicu da biste novog partnera odredili kao Dobavljača."
#. module: import_google
#: selection:synchronize.google.import,create_partner:0
msgid "Import only address"
msgstr "Uvezi samo adrese"
#. module: import_google
#: field:crm.case.categ,user_id:0
msgid "User"
msgstr "Korisnik"
#. module: import_google
#: view:synchronize.google.import:0
msgid "Partner status for this group:"
msgstr "Stanje partnera za ovu grupu:"
#. module: import_google
#: field:google.import.message,name:0
msgid "Message"
msgstr "Poruka"
#. module: import_google
#: selection:synchronize.google.import,create_partner:0
msgid "Create partner for each contact"
msgstr "Napravi partnera za svaki kontakt"
#. module: import_google
#: help:synchronize.google.import,customer:0
msgid "Check this box to set newly created partner as Customer."
msgstr "Označite ovu kućicu da biste novog partnera odredili kao Mušteriju."
+158
View File
@@ -0,0 +1,158 @@
# Serbian Latin 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 <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-04-06 13:53+0000\n"
"Last-Translator: Milan Milosevic <Unknown>\n"
"Language-Team: Serbian Latin <sr@latin@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-07 04:56+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: l10n_be_hr_payroll
#: help:hr.employee,disabled_spouse_bool:0
msgid "if recipient spouse is declared disabled by law"
msgstr "Ako je primalac supružnik određen nevažeći po zakonu"
#. module: l10n_be_hr_payroll
#: help:hr.employee,disabled_children_bool:0
msgid "if recipient children is/are declared disabled by law"
msgstr "Ako je/su primalac/oci dete/deca određen/i nevažeći po zakonu"
#. module: l10n_be_hr_payroll
#: field:hr.contract,misc_onss_deduction:0
msgid "Miscellaneous exempt ONSS "
msgstr "Razni ONSS izuzeci "
#. module: l10n_be_hr_payroll
#: model:ir.model,name:l10n_be_hr_payroll.model_hr_employee
msgid "Employee"
msgstr "Zaposleni"
#. module: l10n_be_hr_payroll
#: field:hr.employee,disabled_spouse_bool:0
msgid "Disabled Spouse"
msgstr "Nevažeći supružnik"
#. module: l10n_be_hr_payroll
#: field:hr.contract,retained_net_amount:0
msgid "Net retained "
msgstr "Neto zadržano "
#. module: l10n_be_hr_payroll
#: field:hr.employee,resident_bool:0
msgid "Nonresident"
msgstr "Neboraveći"
#. module: l10n_be_hr_payroll
#: help:hr.employee,resident_bool:0
msgid "if recipient lives in a foreign country"
msgstr "Ako primalac živi u stranoj zemlji"
#. module: l10n_be_hr_payroll
#: view:hr.employee:0
msgid "if spouse has professionnel income or not"
msgstr "Ako supružnik ima prihod ili ne"
#. module: l10n_be_hr_payroll
#: view:hr.contract:0
msgid "Miscellaneous"
msgstr "Razno"
#. module: l10n_be_hr_payroll
#: field:hr.contract,insurance_employee_deduction:0
msgid "Insurance Group - by worker "
msgstr "Osiguranička grupa - po radniku "
#. module: l10n_be_hr_payroll
#: selection:hr.employee,spouse_fiscal_status:0
msgid "With Income"
msgstr "Sa primanjima"
#. module: l10n_be_hr_payroll
#: selection:hr.employee,spouse_fiscal_status:0
msgid "Without Income"
msgstr "Bez primanja"
#. module: l10n_be_hr_payroll
#: field:hr.employee,disabled_children_number:0
msgid "Number of disabled children"
msgstr "Broj nevažeće dece"
#. module: l10n_be_hr_payroll
#: field:hr.contract,additional_net_amount:0
msgid "Net supplements"
msgstr "Neto dodaci"
#. module: l10n_be_hr_payroll
#: constraint:hr.employee:0
msgid "Error ! You cannot create recursive Hierarchy of Employees."
msgstr "Greška ! Ne možete praviti rekurzivnu hijerarhiju zaposlenih."
#. module: l10n_be_hr_payroll
#: field:hr.contract,car_company_amount:0
msgid "Company car employer"
msgstr "Nadređeni za vozila preduzeća"
#. module: l10n_be_hr_payroll
#: field:hr.contract,misc_advantage_amount:0
msgid "Benefits of various nature "
msgstr "Prihodi razne prirode "
#. module: l10n_be_hr_payroll
#: field:hr.contract,car_employee_deduction:0
msgid "Company Car Deduction for Worker"
msgstr "Odšteta preduzeća za vozila za radnika"
#. module: l10n_be_hr_payroll
#: field:hr.employee,disabled_children_bool:0
msgid "Disabled Children"
msgstr "Nevažeća deca"
#. module: l10n_be_hr_payroll
#: model:ir.model,name:l10n_be_hr_payroll.model_hr_contract
msgid "Contract"
msgstr "Ugovor"
#. module: l10n_be_hr_payroll
#: field:hr.contract,meal_voucher_amount:0
msgid "Check Value Meal "
msgstr "Vrednost toplog obroka "
#. module: l10n_be_hr_payroll
#: field:hr.contract,travel_reimbursement_amount:0
msgid "Reimbursement of travel expenses"
msgstr "Refundacija putnih troškova"
#. module: l10n_be_hr_payroll
#: constraint:hr.contract:0
msgid "Error! contract start-date must be lower then contract end-date."
msgstr "Greška! datum početka ugovora mora da bude pre datuma završetka."
#. module: l10n_be_hr_payroll
#: field:hr.employee,spouse_fiscal_status:0
msgid "Tax status for spouse"
msgstr "stanje poreza za supružnika"
#. module: l10n_be_hr_payroll
#: view:hr.contract:0
msgid "by Worker"
msgstr "po radniku"
#. module: l10n_be_hr_payroll
#: view:hr.employee:0
msgid "number of dependent children declared as disabled"
msgstr "broj zavisne dece proglašene nevažećim"
#. module: l10n_be_hr_payroll
#: field:hr.contract,meal_voucher_employee_deduction:0
msgid "Check Value Meal - by worker "
msgstr "Vrednost toplog obroka - po radniku "
+141
View File
@@ -0,0 +1,141 @@
# Arabic 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 <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-04-06 07:45+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Arabic <ar@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-07 04:56+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: l10n_be_invoice_bba
#: sql_constraint:account.invoice:0
msgid "Invoice Number must be unique per Company!"
msgstr ""
#. module: l10n_be_invoice_bba
#: model:ir.model,name:l10n_be_invoice_bba.model_account_invoice
msgid "Invoice"
msgstr "فاتورة"
#. module: l10n_be_invoice_bba
#: constraint:res.partner:0
msgid "Error ! You cannot create recursive associated members."
msgstr "خطأ ! لا يمكنك إنشاء أعضاء مرتبطين و متداخلين."
#. module: l10n_be_invoice_bba
#: constraint:account.invoice:0
msgid "Invalid BBA Structured Communication !"
msgstr ""
#. module: l10n_be_invoice_bba
#: selection:res.partner,out_inv_comm_algorithm:0
msgid "Random"
msgstr "عشوائي"
#. module: l10n_be_invoice_bba
#: help:res.partner,out_inv_comm_type:0
msgid "Select Default Communication Type for Outgoing Invoices."
msgstr ""
#. module: l10n_be_invoice_bba
#: help:res.partner,out_inv_comm_algorithm:0
msgid ""
"Select Algorithm to generate the Structured Communication on Outgoing "
"Invoices."
msgstr ""
#. module: l10n_be_invoice_bba
#: code:addons/l10n_be_invoice_bba/invoice.py:114
#: code:addons/l10n_be_invoice_bba/invoice.py:140
#, python-format
msgid ""
"The daily maximum of outgoing invoices with an automatically generated BBA "
"Structured Communications has been exceeded!\n"
"Please create manually a unique BBA Structured Communication."
msgstr ""
#. module: l10n_be_invoice_bba
#: code:addons/l10n_be_invoice_bba/invoice.py:155
#, python-format
msgid "Error!"
msgstr "خطأ!"
#. module: l10n_be_invoice_bba
#: code:addons/l10n_be_invoice_bba/invoice.py:126
#, python-format
msgid ""
"The Partner should have a 3-7 digit Reference Number for the generation of "
"BBA Structured Communications!\n"
"Please correct the Partner record."
msgstr ""
#. module: l10n_be_invoice_bba
#: code:addons/l10n_be_invoice_bba/invoice.py:113
#: code:addons/l10n_be_invoice_bba/invoice.py:125
#: code:addons/l10n_be_invoice_bba/invoice.py:139
#: code:addons/l10n_be_invoice_bba/invoice.py:167
#: code:addons/l10n_be_invoice_bba/invoice.py:177
#: code:addons/l10n_be_invoice_bba/invoice.py:202
#, python-format
msgid "Warning!"
msgstr "تحذير!"
#. module: l10n_be_invoice_bba
#: selection:res.partner,out_inv_comm_algorithm:0
msgid "Customer Reference"
msgstr "مرجع العميل"
#. module: l10n_be_invoice_bba
#: field:res.partner,out_inv_comm_type:0
msgid "Communication Type"
msgstr "نوع الاتصال"
#. module: l10n_be_invoice_bba
#: code:addons/l10n_be_invoice_bba/invoice.py:178
#: code:addons/l10n_be_invoice_bba/invoice.py:203
#, python-format
msgid ""
"The BBA Structured Communication has already been used!\n"
"Please create manually a unique BBA Structured Communication."
msgstr ""
#. module: l10n_be_invoice_bba
#: selection:res.partner,out_inv_comm_algorithm:0
msgid "Date"
msgstr "التاريخ"
#. module: l10n_be_invoice_bba
#: model:ir.model,name:l10n_be_invoice_bba.model_res_partner
msgid "Partner"
msgstr "الشريك"
#. module: l10n_be_invoice_bba
#: code:addons/l10n_be_invoice_bba/invoice.py:156
#, python-format
msgid ""
"Unsupported Structured Communication Type Algorithm '%s' !\n"
"Please contact your OpenERP support channel."
msgstr ""
#. module: l10n_be_invoice_bba
#: field:res.partner,out_inv_comm_algorithm:0
msgid "Communication Algorithm"
msgstr ""
#. module: l10n_be_invoice_bba
#: code:addons/l10n_be_invoice_bba/invoice.py:168
#, python-format
msgid ""
"Empty BBA Structured Communication!\n"
"Please fill in a unique BBA Structured Communication."
msgstr ""
+27 -20
View File
@@ -8,45 +8,45 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2010-08-02 21:08+0000\n"
"PO-Revision-Date: 2010-12-10 17:50+0000\n"
"PO-Revision-Date: 2012-04-06 13:59+0000\n"
"Last-Translator: Milan Milosevic <Unknown>\n"
"Language-Team: Serbian latin <sr@latin@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2011-11-05 05:56+0000\n"
"X-Generator: Launchpad (build 14231)\n"
"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: l10n_ca
#: model:account.account.type,name:l10n_ca.account_type_receivable
msgid "Receivable"
msgstr ""
msgstr "Potraživanja"
#. module: l10n_ca
#: model:account.account.type,name:l10n_ca.acct_type_asset_view
msgid "Asset View"
msgstr ""
msgstr "Pregled sredstava"
#. module: l10n_ca
#: model:ir.module.module,description:l10n_ca.module_meta_information
msgid ""
"This is the module to manage the canadian accounting chart in OpenERP."
msgstr ""
msgstr "Ovo je modul za podešavanja kanadske obračunske tabele u OpenERP-u."
#. module: l10n_ca
#: model:account.account.type,name:l10n_ca.acct_type_expense_view
msgid "Expense View"
msgstr ""
msgstr "Pregled troškova"
#. module: l10n_ca
#: constraint:account.account.template:0
msgid "Error ! You can not create recursive account templates."
msgstr ""
msgstr "Greška ! Ne možete praviti rekurzivne obrasce naloga."
#. module: l10n_ca
#: model:account.account.type,name:l10n_ca.acct_type_income_view
msgid "Income View"
msgstr ""
msgstr "Pregled prihoda"
#. module: l10n_ca
#: model:ir.module.module,shortdesc:l10n_ca.module_meta_information
@@ -56,17 +56,17 @@ msgstr "Kanada - Tabela Nalogâ"
#. module: l10n_ca
#: constraint:account.account.type:0
msgid "Error ! You can not create recursive types."
msgstr ""
msgstr "Greška ! Ne možete praviti rekurzivne tipove."
#. module: l10n_ca
#: model:account.account.type,name:l10n_ca.account_type_tax
msgid "Tax"
msgstr ""
msgstr "Porez"
#. module: l10n_ca
#: model:account.account.type,name:l10n_ca.account_type_cash
msgid "Cash"
msgstr ""
msgstr "Gotovina"
#. module: l10n_ca
#: model:ir.actions.todo,note:l10n_ca.config_call_account_template_ca
@@ -79,43 +79,50 @@ msgid ""
"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
"Chart of Accounts from a Chart Template."
msgstr ""
"Generiše tabelu računâ iz šablona tabelâ. Bićete upitani za ime kompanije, "
"šablon tabelâ koji ćete pratiti, broj cifara za generisanje koda za Vaše "
"naloge i bankovni račun, valuta za pravljenje dnevnika. Na taj način se "
"generiše čista kopija šablona tabelâ.\n"
"\tTo je isti setup wizard koji se pokreće iz Financial "
"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
"Chart of Accounts from a Chart Template."
#. module: l10n_ca
#: model:account.account.type,name:l10n_ca.account_type_payable
msgid "Payable"
msgstr ""
msgstr "Plativo"
#. module: l10n_ca
#: model:account.account.type,name:l10n_ca.account_type_asset
msgid "Asset"
msgstr ""
msgstr "Sredstvo"
#. module: l10n_ca
#: model:account.account.type,name:l10n_ca.account_type_equity
msgid "Equity"
msgstr ""
msgstr "Kapital"
#. module: l10n_ca
#: constraint:account.tax.code.template:0
msgid "Error ! You can not create recursive Tax Codes."
msgstr ""
msgstr "Greška ! Ne možete praviti rekurzivne porezne kodove."
#. module: l10n_ca
#: model:account.account.type,name:l10n_ca.acct_type_liability_view
msgid "Liability View"
msgstr ""
msgstr "Pregled odgovornosti"
#. module: l10n_ca
#: model:account.account.type,name:l10n_ca.account_type_expense
msgid "Expense"
msgstr ""
msgstr "Trošak"
#. module: l10n_ca
#: model:account.account.type,name:l10n_ca.account_type_income
msgid "Income"
msgstr ""
msgstr "Prihod"
#. module: l10n_ca
#: model:account.account.type,name:l10n_ca.account_type_view
msgid "View"
msgstr ""
msgstr "Pregled"
+131
View File
@@ -0,0 +1,131 @@
# Arabic 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 <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-04-06 07:35+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Arabic <ar@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-07 04:56+0000\n"
"X-Generator: Launchpad (build 15060)\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
#: model:res.partner.bank.type.field,name:l10n_fr_rib.rib_rib_acc_number_field
msgid "rib_acc_number"
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
#: 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
#: 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 "acc_number"
+115
View File
@@ -0,0 +1,115 @@
# Arabic 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 <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-12-23 09:56+0000\n"
"PO-Revision-Date: 2012-04-06 07:46+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Arabic <ar@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_receivable
msgid "Receivable"
msgstr "الدائنون"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_stocks
msgid "Actif circulant"
msgstr ""
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_commitment
msgid "Engagements"
msgstr ""
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_expense
msgid "Expense"
msgstr "مصروف"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_stock
msgid "Stocks"
msgstr "الأسهم"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_provision
msgid "Provisions"
msgstr ""
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_income
msgid "Income"
msgstr "الدخل"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_tax
msgid "Tax"
msgstr "ضريبة"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_cash
msgid "Cash"
msgstr "نقدي"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_immobilisations
msgid "Immobilisations"
msgstr ""
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_special
msgid "Comptes spéciaux"
msgstr ""
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_payable
msgid "Payable"
msgstr "مدفوعات"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_asset
msgid "Asset"
msgstr "أصل"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_view
msgid "View"
msgstr "عرض"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_equity
msgid "Equity"
msgstr ""
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_cloture
msgid "Cloture"
msgstr ""
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_dettes
msgid "Dettes long terme"
msgstr ""
#. module: l10n_syscohada
#: model:ir.actions.todo,note:l10n_syscohada.config_call_account_template_syscohada
msgid ""
"Generate Chart of Accounts from a SYSCOHADA 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 ""
+19 -13
View File
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
"PO-Revision-Date: 2011-09-05 06:39+0000\n"
"PO-Revision-Date: 2012-04-06 06:39+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\n"
"Language-Team: Czech <cs@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-02-09 07:07+0000\n"
"X-Generator: Launchpad (build 14763)\n"
"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n"
"X-Generator: Launchpad (build 15060)\n"
"X-Poedit-Language: Czech\n"
#. module: lunch
@@ -25,7 +25,7 @@ msgstr "Nulovat pokladnu"
#. module: lunch
#: view:report.lunch.amount:0
msgid "Box amount in current year"
msgstr ""
msgstr "Částka pokladny v aktuálním roce"
#. module: lunch
#: model:ir.actions.act_window,name:lunch.action_lunch_order_form
@@ -96,6 +96,8 @@ msgid ""
"You can create on cashbox by employee if you want to keep track of the "
"amount due by employee according to what have been ordered."
msgstr ""
"Můžete vytvořit pokladu podle zaměstnance, pokud chcete udržet přehled o "
"dlužených částkách podle zaměstnance podle toho co si objednal."
#. module: lunch
#: field:lunch.cashmove,amount:0 field:report.lunch.amount,amount:0
@@ -151,7 +153,7 @@ msgstr "Stav"
#. module: lunch
#: selection:lunch.order,state:0
msgid "New"
msgstr ""
msgstr "Nový"
#. module: lunch
#: field:report.lunch.order,price_total:0
@@ -181,7 +183,7 @@ msgstr "Popis objednávky"
#. module: lunch
#: view:report.lunch.amount:0
msgid "Box amount in last month"
msgstr ""
msgstr "Částka pokladny v minulém měsíci"
#. module: lunch
#: model:ir.actions.act_window,name:lunch.action_lunch_order_confirm
@@ -233,7 +235,7 @@ msgstr "Pohyb hotovosti"
#. module: lunch
#: view:report.lunch.order:0
msgid "Tasks performed in last 365 days"
msgstr ""
msgstr "Úkoly vykonané v posledních 365 dnech"
#. module: lunch
#: selection:report.lunch.amount,month:0 selection:report.lunch.order,month:0
@@ -306,6 +308,10 @@ msgid ""
"by supplier. It will be easier for the lunch manager to filter lunch orders "
"by categories."
msgstr ""
"Určuje všechny výrobky, které zaměstnanci mohou objednat pro obědový čas. "
"Pokud si objednáte oběd na více místech, můžete použít kategorie výrobků pro "
"rozdělení dodavatelů. Bude pak jednodušší pro správce obědů filtrovat "
"objednávky obědů podle kategorie."
#. module: lunch
#: selection:report.lunch.amount,month:0 selection:report.lunch.order,month:0
@@ -398,7 +404,7 @@ msgstr "Nastavit pokladnu na nulu"
#. module: lunch
#: view:lunch.product:0
msgid "General Information"
msgstr ""
msgstr "Obecné informace"
#. module: lunch
#: view:lunch.order.confirm:0
@@ -480,7 +486,7 @@ msgstr "Celková částka"
#. module: lunch
#: view:report.lunch.order:0
msgid "Tasks performed in last 30 days"
msgstr ""
msgstr "Úkoly vykonané v posledních 30 dnech"
#. module: lunch
#: view:lunch.category:0
@@ -507,17 +513,17 @@ msgstr "Obědnávka obědu"
#. module: lunch
#: view:report.lunch.amount:0
msgid "Box amount in current month"
msgstr ""
msgstr "Obsah pokladny v aktuálním měsíci"
#. module: lunch
#: model:ir.actions.act_window,name:lunch.view_lunch_product_form_installer
msgid "Define Your Lunch Products"
msgstr ""
msgstr "Určete vaše obědové výrobky"
#. module: lunch
#: view:report.lunch.order:0
msgid "Tasks during last 7 days"
msgstr ""
msgstr "Úkoly během posledních 7 dní"
#. module: lunch
#: model:ir.actions.act_window,name:lunch.action_report_lunch_amount_tree
@@ -549,7 +555,7 @@ msgstr "Rok"
#. module: lunch
#: model:ir.actions.act_window,name:lunch.action_create_cashbox
msgid "Create Lunch Cash Boxes"
msgstr ""
msgstr "Vytvořit obědové pokladny"
#~ msgid ""
#~ "\n"
+4
View File
@@ -21,7 +21,11 @@
import mail_message
import mail_thread
import mail_group
import mail_subscription
import res_users
import res_partner
import report
import wizard
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+30 -5
View File
@@ -56,16 +56,41 @@ The main features are:
'website': 'http://www.openerp.com',
'depends': ['base', 'base_tools'],
'data': [
"wizard/mail_compose_message_view.xml",
"mail_message_view.xml",
"mail_thread_view.xml",
"res_partner_view.xml",
'wizard/mail_compose_message_view.xml',
'mail_message_view.xml',
'mail_subscription_view.xml',
'mail_thread_view.xml',
'mail_group_view.xml',
'res_partner_view.xml',
'report/mail_message_report_view.xml',
'security/mail_security.xml',
'security/ir.model.access.csv',
'mail_data.xml',
'res_users_view.xml',
],
'installable': True,
'auto_install': False,
'certificate': '001056784984222247309',
'images': ['images/customer_history.jpeg','images/messages_form.jpeg','images/messages_list.jpeg'],
'images': [
'images/customer_history.jpeg',
'images/messages_form.jpeg',
'images/messages_list.jpeg',
'static/src/img/email_icong.png',
'static/src/img/_al.png',
'static/src/img/_pincky.png',
'static/src/img/feeds.png',
'static/src/img/feeds-hover.png',
'static/src/img/groupdefault.png',
],
'css': [
'static/src/css/mail.css',
'static/src/css/mail_group.css',
],
'js': [
'static/src/js/mail.js',
],
'qweb': [
'static/src/xml/mail.xml',
],
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+6
View File
@@ -0,0 +1,6 @@
:orphan:
Mail module documentation
=========================
.. include:: index.rst.inc
+8
View File
@@ -0,0 +1,8 @@
Mail Module
'''''''''''
.. toctree::
:maxdepth: 1
mail_thread
+23
View File
@@ -0,0 +1,23 @@
.. _mail_thread:
OpenChatter
===========
TODO
mail.group
++++++++++
A mail_group is a collection of users sharing messages in a discussion group. Group users are users that follow the mail group, using the subscription/follow mechanism of OpenSocial. A mail group has nothing in common wih res.users.group.
Additional information on fields:
- ``member_ids``: user member of the groups are calculated with ``message_get_subscribers`` method from mail.thread
- ``member_count``: calculated with member_ids
- ``is_subscriber``: calculated with member_ids
res.users
+++++++++
OpenChatter updates the res.users class:
- it adds a preference about sending emails when receiving a notification
- make a new user follow itself automatically
- create a welcome message when creating a new user, to make his arrival in OpenERP more friendly

Some files were not shown because too many files have changed in this diff Show More