merge trunk

bzr revid: nicolas.vanhoren@openerp.com-20130207131737-emnz924vodbl0qno
This commit is contained in:
niv-openerp
2013-02-07 14:17:37 +01:00
119 changed files with 9563 additions and 2407 deletions
+1 -1
View File
@@ -3521,7 +3521,7 @@ class account_bank_accounts_wizard(osv.osv_memory):
_columns = {
'acc_name': fields.char('Account Name.', size=64, required=True),
'bank_account_id': fields.many2one('wizard.multi.charts.accounts', 'Bank Account', required=True),
'bank_account_id': fields.many2one('wizard.multi.charts.accounts', 'Bank Account', required=True, ondelete='cascade'),
'currency_id': fields.many2one('res.currency', 'Secondary Currency', help="Forces all moves for this account to have this secondary currency."),
'account_type': fields.selection([('cash','Cash'), ('check','Check'), ('bank','Bank')], 'Account Type', size=32),
}
+1 -1
View File
@@ -41,7 +41,7 @@ class bank(osv.osv):
def _prepare_name(self, bank):
"Return the name to use when creating a bank journal"
return (bank.bank_name or '') + ' ' + bank.acc_number
return (bank.bank_name or '') + ' ' + (bank.acc_number or '')
def _prepare_name_get(self, cr, uid, bank_dicts, context=None):
"""Add ability to have %(currency_name)s in the format_layout of res.partner.bank.type"""
+2 -2
View File
@@ -256,7 +256,7 @@
</group>
<group>
<field name="move_id" groups="account.group_account_user"/>
<field name="period_id" domain="[('state', '=', 'draft')]" groups="account.group_account_user" widget="selection"/>
<field name="period_id" domain="[('state', '=', 'draft'), ('company_id', '=', company_id)]" groups="account.group_account_user"/>
<field name="company_id" on_change="onchange_company_id(company_id,partner_id,type,invoice_line,currency_id)" widget="selection" groups="base.group_multi_company"/>
</group>
</group>
@@ -393,7 +393,7 @@
<field name="company_id" on_change="onchange_company_id(company_id,partner_id,type,invoice_line,currency_id)" widget="selection" groups="base.group_multi_company"/>
<field name="user_id" groups="base.group_user"/>
<field domain="[('partner_id.ref_companies', 'in', [company_id])]" name="partner_bank_id"/>
<field name="period_id" domain="[('state', '=', 'draft')]"
<field name="period_id" domain="[('state', '=', 'draft'), ('company_id', '=', company_id)]"
groups="account.group_account_manager"
string="Accounting Period"
placeholder="force period"/>
+19
View File
@@ -347,6 +347,15 @@
res_model="account.move.line"
src_model="account.account"/>
<!-- Enable drill-down from Chart Of Accounts tree view -->
<act_window
id="action_account_items"
name="Journal Items"
context="{'search_default_account_id': [active_id]}"
res_model="account.move.line"
src_model="account.account"
key2="tree_but_open"/>
<!-- Account Journal -->
<record id="view_account_journal_tree" model="ir.ui.view">
<field name="name">account.journal.tree</field>
@@ -841,6 +850,16 @@
res_model="account.move.line"
src_model="account.tax.code"/>
<!-- Enable drill-down from Chart Of Taxes tree view -->
<act_window
id="action_tax_code_items"
name="Journal Items"
domain="[('tax_code_id','child_of',active_id),('state','!=','draft')]"
res_model="account.move.line"
src_model="account.tax.code"
key2="tree_but_open"/>
<!-- Tax -->
<record id="view_tax_tree" model="ir.ui.view">
<field name="name">account.tax.tree</field>
+2
View File
@@ -155,11 +155,13 @@
<record id="mt_invoice_validated" model="mail.message.subtype">
<field name="name">Validated</field>
<field name="res_model">account.invoice</field>
<field name="default" eval="False"/>
<field name="description">Invoice validated</field>
</record>
<record id="mt_invoice_paid" model="mail.message.subtype">
<field name="name">Paid</field>
<field name="res_model">account.invoice</field>
<field name="default" eval="False"/>
<field name="description">Invoice paid</field>
</record>
</data>
+10 -7
View File
@@ -12,9 +12,9 @@
<field name="partner_id"/>
<field name="code"/>
<field name="date"/>
<field name="date_start" invisible="1"/>
<field name="date_start"/>
<field name="user_id" invisible="1"/>
<field name="manager_id" invisible="1"/>
<field name="manager_id"/>
<field name="parent_id" invisible="1"/>
<field name="state" invisible="1"/>
<field name="type" invisible="1"/>
@@ -30,15 +30,18 @@
<search string="Analytic Account">
<field name="name" filter_domain="['|', ('name','ilike',self), ('code','ilike',self)]" string="Analytic Account"/>
<field name="date"/>
<filter icon="terp-gtk-media-pause" string="Pending" domain="[('state','=','pending')]" help="Pending Accounts"/>
<filter icon="terp-camera_test" string="Current" domain="[('state','=','open')]" help="Current Accounts"/>
<field name="partner_id"/>
<field name="manager_id"/>
<field name="parent_id"/>
<field name="user_id"/>
<filter string="Open" domain="[('state','=','open')]" help="Current Accounts"/>
<filter string="Pending" domain="[('state','=','pending')]" help="Pending Accounts"/>
<group expand="0" string="Group By...">
<filter string="Associated Partner" icon="terp-partner" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Parent Account" icon="terp-folder-green" domain="[]" context="{'group_by':'parent_id'}"/>
<filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}" groups="base.group_no_one"/>
<filter string="Associated Partner" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Type" domain="[]" context="{'group_by':'type'}"/>
<filter string="Template" domain="[]" context="{'group_by':'template_id'}"/>
<filter string="Parent Account" domain="[]" context="{'group_by':'parent_id'}"/>
<filter string="Status" domain="[]" context="{'group_by':'state'}" groups="base.group_no_one"/>
</group>
</search>
</field>
@@ -58,6 +58,7 @@
<separator/>
<filter icon="terp-personal" string="Customer" name="customer" domain="['|', ('type','=','out_invoice'),('type','=','out_refund')]" help="Customer Invoices And Refunds"/>
<filter icon="terp-personal" string="Supplier" domain="['|', ('type','=','in_invoice'),('type','=','in_refund')]" help="Supplier Invoices And Refunds"/>
<separator/>
<filter icon="terp-dolar" string="Invoice" domain="['|', ('type','=','out_invoice'),('type','=','in_invoice')]" help="Customer And Supplier Invoices"/>
<filter icon="terp-dolar_ok!" string="Refund" domain="['|', ('type','=','out_refund'),('type','=','in_refund')]" help="Customer And Supplier Refunds"/>
<field name="partner_id"/>
+9 -132
View File
@@ -35,10 +35,7 @@ class third_party_ledger(report_sxw.rml_parse, common_report_header):
'lines': self.lines,
'sum_debit_partner': self._sum_debit_partner,
'sum_credit_partner': self._sum_credit_partner,
# 'sum_debit': self._sum_debit,
# 'sum_credit': self._sum_credit,
'get_currency': self._get_currency,
'comma_me': self.comma_me,
'get_start_period': self.get_start_period,
'get_end_period': self.get_end_period,
'get_account': self._get_account,
@@ -78,11 +75,6 @@ class third_party_ledger(report_sxw.rml_parse, common_report_header):
move_state = ['draft','posted']
if self.target_move == 'posted':
move_state = ['posted']
if (data['model'] == 'res.partner'):
## Si on imprime depuis les partenaires
if ids:
PARTNER_REQUEST = "AND line.partner_id IN %s",(tuple(ids),)
if self.result_selection == 'supplier':
self.ACCOUNT_TYPE = ['payable']
elif self.result_selection == 'customer':
@@ -98,7 +90,11 @@ class third_party_ledger(report_sxw.rml_parse, common_report_header):
'WHERE a.type IN %s' \
"AND a.active", (tuple(self.ACCOUNT_TYPE), ))
self.account_ids = [a for (a,) in self.cr.fetchall()]
partner_to_use = []
params = [tuple(move_state), tuple(self.account_ids)]
#if we print from the partners, add a clause on active_ids
if (data['model'] == 'res.partner') and ids:
PARTNER_REQUEST = "AND l.partner_id IN %s"
params += [tuple(ids)]
self.cr.execute(
"SELECT DISTINCT l.partner_id " \
"FROM account_move_line AS l, account_account AS account, " \
@@ -110,30 +106,10 @@ class third_party_ledger(report_sxw.rml_parse, common_report_header):
# "AND " + self.query +" " \
"AND l.account_id IN %s " \
" " + PARTNER_REQUEST + " " \
"AND account.active ",
(tuple(move_state), tuple(self.account_ids),))
res = self.cr.dictfetchall()
for res_line in res:
partner_to_use.append(res_line['partner_id'])
new_ids = partner_to_use
self.partner_ids = new_ids
objects = obj_partner.browse(self.cr, self.uid, new_ids)
return super(third_party_ledger, self).set_context(objects, data, new_ids, report_type)
def comma_me(self, amount):
if type(amount) is float:
amount = str('%.2f'%amount)
else:
amount = str(amount)
if (amount == '0'):
return ' '
orig = amount
new = re.sub("^(-?\d+)(\d{3})", "\g<1>'\g<2>", amount)
if orig == new:
return new
else:
return self.comma_me(new)
"AND account.active ", params)
self.partner_ids = [res['partner_id'] for res in self.cr.dictfetchall()]
objects = obj_partner.browse(self.cr, self.uid, self.partner_ids)
return super(third_party_ledger, self).set_context(objects, data, self.partner_ids, report_type)
def lines(self, partner):
move_state = ['draft','posted']
@@ -290,105 +266,6 @@ class third_party_ledger(report_sxw.rml_parse, common_report_header):
result_tmp = result_tmp + 0.0
return result_tmp + result_init
# code is deprecated
# def _sum_debit(self):
# move_state = ['draft','posted']
# if self.target_move == 'posted':
# move_state = ['posted']
#
# if not self.ids:
# return 0.0
# result_tmp = 0.0
# result_init = 0.0
# if self.reconcil:
# RECONCILE_TAG = " "
# else:
# RECONCILE_TAG = "AND reconcile_id IS NULL"
# if self.initial_balance:
# self.cr.execute(
# "SELECT sum(debit) " \
# "FROM account_move_line AS l, " \
# "account_move AS m "
# "WHERE partner_id IN %s" \
# "AND m.id = l.move_id " \
# "AND m.state IN %s "
# "AND account_id IN %s" \
# "AND reconcile_id IS NULL " \
# "AND " + self.init_query + " ",
# (tuple(self.partner_ids), tuple(move_state), tuple(self.account_ids)))
# contemp = self.cr.fetchone()
# if contemp != None:
# result_init = contemp[0] or 0.0
# else:
# result_init = result_tmp + 0.0
#
# self.cr.execute(
# "SELECT sum(debit) " \
# "FROM account_move_line AS l, " \
# "account_move AS m "
# "WHERE partner_id IN %s" \
# "AND m.id = l.move_id " \
# "AND m.state IN %s "
# "AND account_id IN %s" \
# " " + RECONCILE_TAG + " " \
# "AND " + self.query + " ",
# (tuple(self.partner_ids), tuple(move_state) ,tuple(self.account_ids),))
# contemp = self.cr.fetchone()
# if contemp != None:
# result_tmp = contemp[0] or 0.0
# else:
# result_tmp = result_tmp + 0.0
# return result_tmp + result_init
#
# def _sum_credit(self):
# move_state = ['draft','posted']
# if self.target_move == 'posted':
# move_state = ['posted']
#
# if not self.ids:
# return 0.0
# result_tmp = 0.0
# result_init = 0.0
# if self.reconcil:
# RECONCILE_TAG = " "
# else:
# RECONCILE_TAG = "AND reconcile_id IS NULL"
# if self.initial_balance:
# self.cr.execute(
# "SELECT sum(credit) " \
# "FROM account_move_line AS l, " \
# "account_move AS m "
# "WHERE partner_id IN %s" \
# "AND m.id = l.move_id " \
# "AND m.state IN %s "
# "AND account_id IN %s" \
# "AND reconcile_id IS NULL " \
# "AND " + self.init_query + " ",
# (tuple(self.partner_ids), tuple(move_state), tuple(self.account_ids)))
# contemp = self.cr.fetchone()
# if contemp != None:
# result_init = contemp[0] or 0.0
# else:
# result_init = result_tmp + 0.0
#
# self.cr.execute(
# "SELECT sum(credit) " \
# "FROM account_move_line AS l, " \
# "account_move AS m "
# "WHERE partner_id IN %s" \
# "AND m.id = l.move_id " \
# "AND m.state IN %s "
# "AND account_id IN %s" \
# " " + RECONCILE_TAG + " " \
# "AND " + self.query + " ",
# (tuple(self.partner_ids), tuple(move_state), tuple(self.account_ids),))
# contemp = self.cr.fetchone()
# if contemp != None:
# result_tmp = contemp[0] or 0.0
# else:
# result_tmp = result_tmp + 0.0
# return result_tmp + result_init
def _get_partners(self):
if self.result_selection == 'customer':
return 'Receivable Accounts'
@@ -23,7 +23,7 @@
</record>
<record id="action_account_partner_ledger" model="ir.actions.act_window">
<field name="name">Select Period</field>
<field name="name">Partner Ledger</field>
<field name="res_model">account.partner.ledger</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
@@ -33,6 +33,13 @@
<field name="target">new</field>
</record>
<record model="ir.values" id="ir_values_account_partner_ledger">
<field name="key2" eval="'client_print_multi'"/>
<field name="model" eval="'res.partner'"/>
<field name="name">Print Partner Ledger</field>
<field name="value" eval="'ir.actions.act_window,%d'%action_account_partner_ledger"/>
</record>
<menuitem icon="STOCK_PRINT"
name="Partner Ledger"
action="action_account_partner_ledger"
@@ -25,19 +25,20 @@
<field name="name">account.analytic.account.search</field>
<field name="model">account.analytic.account</field>
<field name="arch" type="xml">
<search string="Analytic Account">
<search string="Contracts">
<field name="name" filter_domain="['|', ('name','ilike',self),('code','ilike',self)]" string="Contract"/>
<field name="date"/>
<filter icon="terp-camera_test" name="open" string="Open" domain="[('state','in',('open','draft'))]" help="Contracts in progress"/>
<filter icon="terp-gtk-media-pause" name="pending" string="Pending" domain="[('state','=','pending')]" help="Pending contracts to renew with your customer"/>
<filter icon="terp-go-today" string="To Renew" domain="['|', '&amp;', ('date', '!=', False), ('date', '&lt;=', time.strftime('%%Y-%%m-%%d')), ('is_overdue_quantity', '=', True)]" name="renew"
help="The contracts to be renewed because the deadline is passed or the working hours are higher than the allocated hours" />
<separator/>
<filter string="Customer Contracts" help="A contract in OpenERP is an analytic account having a partner set on it." name="has_partner" domain="[('partner_id', '!=', False)]" icon="terp-partner" />
<separator/>
<filter string="Contracts not assigned" help="Contracts that are not assigned to an account manager." domain="[('manager_id', '=', False)]" icon="terp-personal-" />
<field name="partner_id"/>
<field name="manager_id"/>
<field name="parent_id"/>
<filter name="open" string="Open" domain="[('state','in',('open','draft'))]" help="Contracts in progress"/>
<filter name="pending" string="Pending" domain="[('state','=','pending')]" help="Pending contracts to renew with your customer"/>
<filter string="To Renew" domain="['|', '&amp;', ('date', '!=', False), ('date', '&lt;=', time.strftime('%%Y-%%m-%%d')), ('is_overdue_quantity', '=', True)]" name="renew"
help="The contracts to be renewed because the deadline is passed or the working hours are higher than the allocated hours" />
<separator/>
<filter string="Customer Contracts" help="Contracts assigned to a customer." name="has_partner" domain="[('partner_id', '!=', False)]"/>
<filter string="Contracts not assigned" help="Contracts that are not assigned to an account manager." domain="[('manager_id', '=', False)]"/>
<separator/>
<group expand="0" string="Group By...">
<filter string="Status" domain="[]" context="{'group_by':'state'}"/>
<filter string="Account Manager" domain="[]" context="{'group_by':'manager_id'}"/>
@@ -0,0 +1,174 @@
# English (United Kingdom) translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-02-06 14:36+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: English (United Kingdom) <en_GB@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: 2013-02-07 04:53+0000\n"
"X-Generator: Launchpad (build 16477)\n"
#. module: account_analytic_default
#: model:ir.actions.act_window,name:account_analytic_default.analytic_rule_action_partner
#: model:ir.actions.act_window,name:account_analytic_default.analytic_rule_action_product
#: model:ir.actions.act_window,name:account_analytic_default.analytic_rule_action_user
msgid "Analytic Rules"
msgstr "Analytic Rules"
#. module: account_analytic_default
#: view:account.analytic.default:0
msgid "Group By..."
msgstr "Group By..."
#. module: account_analytic_default
#: help:account.analytic.default,date_stop:0
msgid "Default end date for this Analytic Account."
msgstr "Default end date for this Analytic Account."
#. module: account_analytic_default
#: help:account.analytic.default,product_id:0
msgid ""
"Select a product which will use analytic account specified in analytic "
"default (e.g. create new customer invoice or Sales order if we select this "
"product, it will automatically take this as an analytic account)"
msgstr ""
"Select a product which will use analytic account specified in analytic "
"default (e.g. create new customer invoice or Sales order if we select this "
"product, it will automatically take this as an analytic account)"
#. module: account_analytic_default
#: model:ir.model,name:account_analytic_default.model_stock_picking
msgid "Picking List"
msgstr "Picking List"
#. module: account_analytic_default
#: view:account.analytic.default:0
msgid "Conditions"
msgstr "Conditions"
#. module: account_analytic_default
#: view:account.analytic.default:0
#: field:account.analytic.default,product_id:0
msgid "Product"
msgstr "Product"
#. module: account_analytic_default
#: help:account.analytic.default,partner_id:0
msgid ""
"Select a partner which will use analytic account specified in analytic "
"default (e.g. create new customer invoice or Sales order if we select this "
"partner, it will automatically take this as an analytic account)"
msgstr ""
"Select a partner which will use analytic account specified in analytic "
"default (e.g. create new customer invoice or Sales order if we select this "
"partner, it will automatically take this as an analytic account)"
#. module: account_analytic_default
#: view:account.analytic.default:0
#: field:account.analytic.default,company_id:0
msgid "Company"
msgstr "Company"
#. module: account_analytic_default
#: view:account.analytic.default:0
#: field:account.analytic.default,user_id:0
msgid "User"
msgstr "User"
#. module: account_analytic_default
#: model:ir.actions.act_window,name:account_analytic_default.act_account_acount_move_line_open
msgid "Entries"
msgstr "Entries"
#. module: account_analytic_default
#: field:account.analytic.default,date_stop:0
msgid "End Date"
msgstr "End Date"
#. module: account_analytic_default
#: view:account.analytic.default:0
#: model:ir.actions.act_window,name:account_analytic_default.action_analytic_default_list
#: model:ir.ui.menu,name:account_analytic_default.menu_analytic_default_list
msgid "Analytic Defaults"
msgstr "Analytic Defaults"
#. module: account_analytic_default
#: field:account.analytic.default,sequence:0
msgid "Sequence"
msgstr "Sequence"
#. module: account_analytic_default
#: help:account.analytic.default,user_id:0
msgid ""
"Select a user which will use analytic account specified in analytic default."
msgstr ""
"Select a user which will use analytic account specified in analytic default."
#. module: account_analytic_default
#: model:ir.model,name:account_analytic_default.model_account_invoice_line
msgid "Invoice Line"
msgstr "Invoice Line"
#. module: account_analytic_default
#: help:account.analytic.default,company_id:0
msgid ""
"Select a company which will use analytic account specified in analytic "
"default (e.g. create new customer invoice or Sales order if we select this "
"company, it will automatically take this as an analytic account)"
msgstr ""
"Select a company which will use analytic account specified in analytic "
"default (e.g. create new customer invoice or Sales order if we select this "
"company, it will automatically take this as an analytic account)"
#. module: account_analytic_default
#: view:account.analytic.default:0
#: field:account.analytic.default,analytic_id:0
msgid "Analytic Account"
msgstr "Analytic Account"
#. module: account_analytic_default
#: model:ir.model,name:account_analytic_default.model_account_analytic_default
msgid "Analytic Distribution"
msgstr "Analytic Distribution"
#. module: account_analytic_default
#: help:account.analytic.default,date_start:0
msgid "Default start date for this Analytic Account."
msgstr "Default start date for this Analytic Account."
#. module: account_analytic_default
#: view:account.analytic.default:0
msgid "Accounts"
msgstr "Accounts"
#. module: account_analytic_default
#: view:account.analytic.default:0
#: field:account.analytic.default,partner_id:0
msgid "Partner"
msgstr "Partner"
#. module: account_analytic_default
#: field:account.analytic.default,date_start:0
msgid "Start Date"
msgstr "Start Date"
#. module: account_analytic_default
#: help:account.analytic.default,sequence:0
msgid ""
"Gives the sequence order when displaying a list of analytic distribution"
msgstr ""
"Gives the sequence order when displaying a list of analytic distribution"
#. module: account_analytic_default
#: model:ir.model,name:account_analytic_default.model_sale_order_line
msgid "Sales Order Line"
msgstr "Sales Order Line"
+241
View File
@@ -0,0 +1,241 @@
# Mongolian translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-02-06 08:04+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Mongolian <mn@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: 2013-02-07 04:53+0000\n"
"X-Generator: Launchpad (build 16477)\n"
#. module: account_test
#: view:accounting.assert.test:0
msgid ""
"Code should always set a variable named `result` with the result of your "
"test, that can be a list or\n"
"a dictionary. If `result` is an empty list, it means that the test was "
"succesful. Otherwise it will\n"
"try to translate and print what is inside `result`.\n"
"\n"
"If the result of your test is a dictionary, you can set a variable named "
"`column_order` to choose in\n"
"what order you want to print `result`'s content.\n"
"\n"
"Should you need them, you can also use the following variables into your "
"code:\n"
" * cr: cursor to the database\n"
" * uid: ID of the current user\n"
"\n"
"In any ways, the code must be legal python statements with correct "
"indentation (if needed).\n"
"\n"
"Example: \n"
" sql = '''SELECT id, name, ref, date\n"
" FROM account_move_line \n"
" WHERE account_id IN (SELECT id FROM account_account WHERE type "
"= 'view')\n"
" '''\n"
" cr.execute(sql)\n"
" result = cr.dictfetchall()"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,name:account_test.account_test_02
msgid "Test 2: Opening a fiscal year"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,desc:account_test.account_test_05
msgid ""
"Check that reconciled invoice for Sales/Purchases has reconciled entries for "
"Payable and Receivable Accounts"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,desc:account_test.account_test_03
msgid ""
"Check if movement lines are balanced and have the same date and period"
msgstr ""
#. module: account_test
#: field:accounting.assert.test,name:0
msgid "Test Name"
msgstr ""
#. module: account_test
#: report:account.test.assert.print:0
msgid "Accouting tests on"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,name:account_test.account_test_01
msgid "Test 1: General balance"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,desc:account_test.account_test_06
msgid "Check that paid/reconciled invoices are not in 'Open' state"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,desc:account_test.account_test_05_2
msgid ""
"Check that reconciled account moves, that define Payable and Receivable "
"accounts, are belonging to reconciled invoices"
msgstr ""
#. module: account_test
#: view:accounting.assert.test:0
msgid "Tests"
msgstr "Тестүүд"
#. module: account_test
#: field:accounting.assert.test,desc:0
msgid "Test Description"
msgstr ""
#. module: account_test
#: view:accounting.assert.test:0
msgid "Description"
msgstr "Тайлбар"
#. module: account_test
#: model:accounting.assert.test,desc:account_test.account_test_06_1
msgid "Check that there's no move for any account with « View » account type"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,name:account_test.account_test_08
msgid "Test 9 : Accounts and partners on account moves"
msgstr ""
#. module: account_test
#: model:ir.actions.act_window,name:account_test.action_accounting_assert
#: model:ir.actions.report.xml,name:account_test.account_assert_test_report
#: model:ir.ui.menu,name:account_test.menu_action_license
msgid "Accounting Tests"
msgstr ""
#. module: account_test
#: code:addons/account_test/report/account_test_report.py:74
#, python-format
msgid "The test was passed successfully"
msgstr ""
#. module: account_test
#: field:accounting.assert.test,active:0
msgid "Active"
msgstr "Идэвхитэй"
#. module: account_test
#: model:accounting.assert.test,name:account_test.account_test_06
msgid "Test 6 : Invoices status"
msgstr ""
#. module: account_test
#: model:ir.model,name:account_test.model_accounting_assert_test
msgid "accounting.assert.test"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,name:account_test.account_test_05
msgid ""
"Test 5.1 : Payable and Receivable accountant lines of reconciled invoices"
msgstr ""
#. module: account_test
#: field:accounting.assert.test,code_exec:0
msgid "Python code"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,desc:account_test.account_test_07
msgid ""
"Check on bank statement that the Closing Balance = Starting Balance + sum of "
"statement lines"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,name:account_test.account_test_07
msgid "Test 8 : Closing balance on bank statements"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,name:account_test.account_test_03
msgid "Test 3: Movement lines"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,name:account_test.account_test_05_2
msgid "Test 5.2 : Reconcilied invoices and Payable/Receivable accounts"
msgstr ""
#. module: account_test
#: view:accounting.assert.test:0
msgid "Expression"
msgstr "Илэрхийлэл"
#. module: account_test
#: model:accounting.assert.test,name:account_test.account_test_04
msgid "Test 4: Totally reconciled mouvements"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,desc:account_test.account_test_04
msgid "Check if the totally reconciled movements are balanced"
msgstr ""
#. module: account_test
#: field:accounting.assert.test,sequence:0
msgid "Sequence"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,desc:account_test.account_test_02
msgid ""
"Check if the balance of the new opened fiscal year matches with last year's "
"balance"
msgstr ""
#. module: account_test
#: view:accounting.assert.test:0
msgid "Python Code"
msgstr ""
#. module: account_test
#: model:ir.actions.act_window,help:account_test.action_accounting_assert
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to create Accounting Test.\n"
" </p>\n"
" "
msgstr ""
#. module: account_test
#: model:accounting.assert.test,desc:account_test.account_test_01
msgid "Check the balance: Debit sum = Credit sum"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,desc:account_test.account_test_08
msgid "Check that general accounts and partners on account moves are active"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,name:account_test.account_test_06_1
msgid "Test 7: « View  » account type"
msgstr ""
#. module: account_test
#: view:accounting.assert.test:0
msgid "Code Help"
msgstr ""
+1 -1
View File
@@ -42,7 +42,7 @@ This module manages:
'category': 'Accounting & Finance',
'sequence': 4,
'website' : 'http://openerp.com',
'images' : ['images/customer_payment.jpeg','images/journal_voucher.jpeg','images/sales_receipt.jpeg','images/supplier_voucher.jpeg'],
'images' : ['images/customer_payment.jpeg','images/journal_voucher.jpeg','images/sales_receipt.jpeg','images/supplier_voucher.jpeg','images/customer_invoice.jpeg','images/customer_refunds.jpeg'],
'depends' : ['account'],
'demo' : [],
'data' : [
+4 -2
View File
@@ -962,7 +962,9 @@ class account_voucher(osv.osv):
if not voucher_brw.journal_id.sequence_id.active:
raise osv.except_osv(_('Configuration Error !'),
_('Please activate the sequence of selected journal !'))
name = seq_obj.next_by_id(cr, uid, voucher_brw.journal_id.sequence_id.id, context=context)
c = dict(context)
c.update({'fiscalyear_id': voucher_brw.period_id.fiscalyear_id.id})
name = seq_obj.next_by_id(cr, uid, voucher_brw.journal_id.sequence_id.id, context=c)
else:
raise osv.except_osv(_('Error!'),
_('Please define a sequence on the journal.'))
@@ -977,7 +979,7 @@ class account_voucher(osv.osv):
'narration': voucher_brw.narration,
'date': voucher_brw.date,
'ref': ref,
'period_id': voucher_brw.period_id and voucher_brw.period_id.id or False
'period_id': voucher_brw.period_id.id,
}
return move
@@ -17,6 +17,7 @@
<record id="mt_voucher_state_change" model="mail.message.subtype">
<field name="name">Status Change</field>
<field name="res_model">account.voucher</field>
<field name="default" eval="False"/>
<field name="description">Status changed</field>
</record>
+1 -1
View File
@@ -172,7 +172,7 @@ class account_analytic_account(osv.osv):
_columns = {
'name': fields.char('Account/Contract Name', size=128, required=True),
'complete_name': fields.function(_get_full_name, type='char', string='Full Account Name'),
'complete_name': fields.function(_get_full_name, type='char', string='Full Name'),
'code': fields.char('Reference', select=True),
'type': fields.selection([('view','Analytic View'), ('normal','Analytic Account'),('contract','Contract or Project'),('template','Template of Contract')], 'Type of Account', required=True,
help="If you select the View Type, it means you won\'t allow to create journal entries using that account.\n"\
+3
View File
@@ -6,16 +6,19 @@
<record id="mt_account_pending" model="mail.message.subtype">
<field name="name">Contract to Renew</field>
<field name="res_model">account.analytic.account</field>
<field name="default" eval="False"/>
<field name="description">Contract pending</field>
</record>
<record id="mt_account_closed" model="mail.message.subtype">
<field name="name">Contract Finished</field>
<field name="res_model">account.analytic.account</field>
<field name="default" eval="False"/>
<field name="description">Contract closed</field>
</record>
<record id="mt_account_opened" model="mail.message.subtype">
<field name="name">Contract Opened</field>
<field name="res_model">account.analytic.account</field>
<field name="default" eval="False"/>
<field name="description">Contract opened</field>
</record>
@@ -0,0 +1,72 @@
# Mongolian translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-02-06 07:46+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Mongolian <mn@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: 2013-02-07 04:53+0000\n"
"X-Generator: Launchpad (build 16477)\n"
#. module: analytic_contract_hr_expense
#: view:account.analytic.account:0
msgid "or view"
msgstr ""
#. module: analytic_contract_hr_expense
#: view:account.analytic.account:0
msgid "Nothing to invoice, create"
msgstr ""
#. module: analytic_contract_hr_expense
#: view:account.analytic.account:0
msgid "expenses"
msgstr ""
#. module: analytic_contract_hr_expense
#: model:ir.model,name:analytic_contract_hr_expense.model_account_analytic_account
msgid "Analytic Account"
msgstr "Шинжилгээний Данс"
#. module: analytic_contract_hr_expense
#: code:addons/analytic_contract_hr_expense/analytic_contract_hr_expense.py:129
#, python-format
msgid "Expenses to Invoice of %s"
msgstr ""
#. module: analytic_contract_hr_expense
#: code:addons/analytic_contract_hr_expense/analytic_contract_hr_expense.py:121
#, python-format
msgid "Expenses of %s"
msgstr ""
#. module: analytic_contract_hr_expense
#: field:account.analytic.account,expense_invoiced:0
#: field:account.analytic.account,expense_to_invoice:0
#: field:account.analytic.account,remaining_expense:0
msgid "unknown"
msgstr "тодорхой бус"
#. module: analytic_contract_hr_expense
#: field:account.analytic.account,est_expenses:0
msgid "Estimation of Expenses to Invoice"
msgstr ""
#. module: analytic_contract_hr_expense
#: field:account.analytic.account,charge_expenses:0
msgid "Charge Expenses"
msgstr ""
#. module: analytic_contract_hr_expense
#: view:account.analytic.account:0
msgid "⇒ Invoice"
msgstr ""
+1 -1
View File
@@ -549,7 +549,7 @@ class ir_model_fields_anonymize_wizard(osv.osv_memory):
key = (line['model_id'], line['field_id'])
custom_updates = fixes.get(key)
if custom_updates:
custom_updates.sort(itemgetter('sequence'))
custom_updates.sort(key=itemgetter('sequence'))
queries = [(record['query'], record['query_type']) for record in custom_updates if record['query_type']]
elif table_name:
queries = [("update %(table)s set %(field)s = %%(value)s where id = %%(id)s" % {
+14 -63
View File
@@ -1,77 +1,28 @@
# English (United Kingdom) translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-03 16:03+0000\n"
"PO-Revision-Date: 2011-08-25 11:52+0000\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-02-06 14:35+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: English (United Kingdom) <en_GB@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-12-04 05:53+0000\n"
"X-Generator: Launchpad (build 16335)\n"
"X-Launchpad-Export-Date: 2013-02-07 04:53+0000\n"
"X-Generator: Launchpad (build 16477)\n"
#. module: base_crypt
#: model:ir.model,name:base_crypt.model_res_users
#. module: auth_crypt
#: field:res.users,password_crypt:0
msgid "Encrypted Password"
msgstr "Encrypted Password"
#. module: auth_crypt
#: model:ir.model,name:auth_crypt.model_res_users
msgid "Users"
msgstr ""
#~ msgid ""
#~ "This module replaces the cleartext password in the database with a password "
#~ "hash,\n"
#~ "preventing anyone from reading the original password.\n"
#~ "For your existing user base, the removal of the cleartext passwords occurs "
#~ "the first time\n"
#~ "a user logs into the database, after installing base_crypt.\n"
#~ "After installing this module it won't be possible to recover a forgotten "
#~ "password for your\n"
#~ "users, the only solution is for an admin to set a new password.\n"
#~ "\n"
#~ "Note: installing this module does not mean you can ignore basic security "
#~ "measures,\n"
#~ "as the password is still transmitted unencrypted on the network (by the "
#~ "client),\n"
#~ "unless you are using a secure protocol such as XML-RPCS.\n"
#~ " "
#~ msgstr ""
#~ "This module replaces the cleartext password in the database with a password "
#~ "hash,\n"
#~ "preventing anyone from reading the original password.\n"
#~ "For your existing user base, the removal of the cleartext passwords occurs "
#~ "the first time\n"
#~ "a user logs into the database, after installing base_crypt.\n"
#~ "After installing this module it is impossible to recover a forgotten user\n"
#~ "password, the only solution is for an admin to set a new password.\n"
#~ "\n"
#~ "Note: installing this module does not mean you can ignore basic security "
#~ "measures,\n"
#~ "as the password is still transmitted unencrypted on the network (by the "
#~ "client),\n"
#~ "unless you are using a secure protocol such as XML-RPCS.\n"
#~ " "
#, python-format
#~ msgid "Error"
#~ msgstr "Error"
#~ msgid "Base - Password Encryption"
#~ msgstr "Base - Password Encryption"
#, python-format
#~ msgid "Please specify the password !"
#~ msgstr "Please specify the password !"
#~ msgid "The chosen company is not in the allowed companies for this user"
#~ msgstr "The chosen company is not in the allowed companies for this user"
#~ msgid "res.users"
#~ msgstr "res.users"
#~ msgid "You can not have two users with the same login !"
#~ msgstr "You can not have two users with the same login !"
msgstr "Users"
+23
View File
@@ -0,0 +1,23 @@
# English (United Kingdom) translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-02-06 14:33+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: English (United Kingdom) <en_GB@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: 2013-02-07 04:53+0000\n"
"X-Generator: Launchpad (build 16477)\n"
#. module: auth_oauth_signup
#: model:ir.model,name:auth_oauth_signup.model_res_users
msgid "Users"
msgstr "Users"
+23
View File
@@ -0,0 +1,23 @@
# Mongolian translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-02-06 07:44+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Mongolian <mn@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: 2013-02-07 04:53+0000\n"
"X-Generator: Launchpad (build 16477)\n"
#. module: auth_oauth_signup
#: model:ir.model,name:auth_oauth_signup.model_res_users
msgid "Users"
msgstr "Хэрэглэгчид"
+97
View File
@@ -0,0 +1,97 @@
# Mongolian translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-02-06 08:17+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Mongolian <mn@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: 2013-02-07 04:53+0000\n"
"X-Generator: Launchpad (build 16477)\n"
#. module: auth_openid
#. openerp-web
#: code:addons/auth_openid/static/src/xml/auth_openid.xml:24
#, python-format
msgid "Username"
msgstr "Хэрэглэгчийн нэр"
#. module: auth_openid
#. openerp-web
#: code:addons/auth_openid/static/src/xml/auth_openid.xml:12
#: view:res.users:0
#, python-format
msgid "OpenID"
msgstr ""
#. module: auth_openid
#. openerp-web
#: code:addons/auth_openid/static/src/xml/auth_openid.xml:30
#: field:res.users,openid_url:0
#, python-format
msgid "OpenID URL"
msgstr ""
#. module: auth_openid
#. openerp-web
#: code:addons/auth_openid/static/src/xml/auth_openid.xml:9
#: code:addons/auth_openid/static/src/xml/auth_openid.xml:10
#, python-format
msgid "Google"
msgstr ""
#. module: auth_openid
#. openerp-web
#: code:addons/auth_openid/static/src/xml/auth_openid.xml:11
#, python-format
msgid "Launchpad"
msgstr "Launchpad"
#. module: auth_openid
#: help:res.users,openid_email:0
msgid "Used for disambiguation in case of a shared OpenID URL"
msgstr ""
#. module: auth_openid
#. openerp-web
#: code:addons/auth_openid/static/src/xml/auth_openid.xml:18
#, python-format
msgid "Google Apps Domain"
msgstr ""
#. module: auth_openid
#: field:res.users,openid_email:0
msgid "OpenID Email"
msgstr ""
#. module: auth_openid
#: field:res.users,openid_key:0
msgid "OpenID Key"
msgstr ""
#. module: auth_openid
#. openerp-web
#: code:addons/auth_openid/static/src/xml/auth_openid.xml:8
#, python-format
msgid "Password"
msgstr "Нууц үг"
#. module: auth_openid
#. openerp-web
#: code:addons/auth_openid/static/src/xml/auth_openid.xml:10
#, python-format
msgid "Google Apps"
msgstr ""
#. module: auth_openid
#: model:ir.model,name:auth_openid.model_res_users
msgid "Users"
msgstr "Хэрэглэгчид"
+34
View File
@@ -33,5 +33,39 @@
<p>Note: If you do not expect this, you can safely ignore this email.</p>]]></field>
</record>
<!-- Email template for new users -->
<record id="set_password_email" model="email.template">
<field name="name">OpenERP Enterprise Connection</field>
<field name="model_id" ref="base.model_res_users"/>
<field name="email_from"><![CDATA[${object.company_id.name} <${object.company_id.email}>]]></field>
<field name="email_to">${object.email}</field>
<field name="subject"><![CDATA[${object.company_id.name} invitation to connect on OpenERP]]></field>
<field name="body_html">
<![CDATA[
<p>
${object.name},
</p>
<p>
You have been invited to connect to "${object.company_id.name}" in order to get access to your documents in OpenERP.
</p>
<p>
To accept the invitation, click on the following link:
</p>
<ul>
<li><a href="${object.signup_url}">Accept invitation to "${object.company_id.name}"</a></li>
</ul>
<p>
Thanks,
</p>
<pre>
--
${object.company_id.name or ''}
${object.company_id.email or ''}
${object.company_id.phone or ''}
</pre>
]]>
</field>
</record>
</data>
</openerp>
+13 -2
View File
@@ -246,8 +246,18 @@ class res_users(osv.Model):
partner_ids = [user.partner_id.id for user in self.browse(cr, uid, ids, context)]
res_partner.signup_prepare(cr, uid, partner_ids, signup_type="reset", expiration=now(days=+1), context=context)
if not context:
context = {}
# send email to users with their signup url
template = self.pool.get('ir.model.data').get_object(cr, uid, 'auth_signup', 'reset_password_email')
template = False
if context.get('create_user'):
try:
template = self.pool.get('ir.model.data').get_object(cr, uid, 'auth_signup', 'set_password_email')
except ValueError:
pass
if not bool(template):
template = self.pool.get('ir.model.data').get_object(cr, uid, 'auth_signup', 'reset_password_email')
mail_obj = self.pool.get('mail.mail')
assert template._name == 'email.template'
for user in self.browse(cr, uid, ids, context):
@@ -274,5 +284,6 @@ class res_users(osv.Model):
user_id = super(res_users, self).create(cr, uid, values, context=context)
user = self.browse(cr, uid, user_id, context=context)
if context and context.get('reset_password') and user.email:
user.action_reset_password()
ctx = dict(context, create_user=True)
self.action_reset_password(cr, uid, [user.id], context=ctx)
return user_id
+81 -80
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-12-21 17:05+0000\n"
"PO-Revision-Date: 2012-05-10 17:34+0000\n"
"Last-Translator: Raphael Collet (OpenERP) <Unknown>\n"
"PO-Revision-Date: 2013-02-06 17:09+0000\n"
"Last-Translator: Ediz Duman <neps1192@gmail.com>\n"
"Language-Team: Turkish <tr@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-12-22 06:01+0000\n"
"X-Generator: Launchpad (build 16378)\n"
"X-Launchpad-Export-Date: 2013-02-07 04:53+0000\n"
"X-Generator: Launchpad (build 16477)\n"
#. module: base_calendar
#: selection:calendar.alarm,trigger_related:0
@@ -44,7 +44,7 @@ msgstr ""
#: selection:calendar.todo,rrule_type:0
#: selection:crm.meeting,rrule_type:0
msgid "Week(s)"
msgstr ""
msgstr "Hafta(lar)"
#. module: base_calendar
#: field:calendar.event,we:0
@@ -145,7 +145,7 @@ msgstr "Davet türünü belirle"
#: view:crm.meeting:0
#: field:crm.meeting,message_unread:0
msgid "Unread Messages"
msgstr ""
msgstr "Okunmamış Mesajlar"
#. module: base_calendar
#: selection:calendar.event,week_list:0
@@ -166,7 +166,7 @@ msgstr "Tüm Gün"
#: field:calendar.todo,vtimezone:0
#: field:crm.meeting,vtimezone:0
msgid "Timezone"
msgstr "Saat dilimi"
msgstr "ZamanDilimi"
#. module: base_calendar
#: selection:calendar.attendee,availability:0
@@ -180,7 +180,7 @@ msgstr "Serbest"
#. module: base_calendar
#: help:crm.meeting,message_unread:0
msgid "If checked new messages require your attention."
msgstr ""
msgstr "Eğer işaretlenirse yeni mesajlar dikkatinizi gerektirecek"
#. module: base_calendar
#: help:calendar.attendee,rsvp:0
@@ -207,7 +207,7 @@ msgstr "Etkinlik Ref"
#: field:calendar.todo,tu:0
#: field:crm.meeting,tu:0
msgid "Tue"
msgstr "Sa"
msgstr "Sal"
#. module: base_calendar
#: selection:calendar.event,byday:0
@@ -232,12 +232,12 @@ msgstr "Sonuncu"
#. module: base_calendar
#: help:crm.meeting,message_ids:0
msgid "Messages and communication history"
msgstr ""
msgstr "Mesajlar ve İletişim Geçmişi"
#. module: base_calendar
#: field:crm.meeting,message_ids:0
msgid "Messages"
msgstr ""
msgstr "Mesajlar"
#. module: base_calendar
#: selection:calendar.alarm,trigger_interval:0
@@ -264,7 +264,7 @@ msgstr "Başkan"
#. module: base_calendar
#: view:crm.meeting:0
msgid "My Meetings"
msgstr ""
msgstr "Toplantılarım"
#. module: base_calendar
#: selection:calendar.alarm,action:0
@@ -303,22 +303,22 @@ msgstr "Katılımcının iştirak durumu"
#. module: base_calendar
#: view:crm.meeting:0
msgid "Mail To"
msgstr ""
msgstr "Kime"
#. module: base_calendar
#: field:crm.meeting,name:0
msgid "Meeting Subject"
msgstr ""
msgstr "Toplantı Konusu"
#. module: base_calendar
#: view:calendar.event:0
msgid "End of Recurrence"
msgstr ""
msgstr "Tekrar sonu"
#. module: base_calendar
#: view:calendar.event:0
msgid "Group By..."
msgstr "Gruplandır..."
msgstr "Gruplan İle..."
#. module: base_calendar
#: view:calendar.event:0
@@ -334,7 +334,7 @@ msgstr "Görüşmenin tekrarlanacağı günü seç"
#: view:crm.meeting:0
#: model:ir.actions.act_window,name:base_calendar.action_crm_meeting
msgid "Meetings"
msgstr ""
msgstr "Toplantılar"
#. module: base_calendar
#: field:calendar.event,recurrent_id_date:0
@@ -444,7 +444,7 @@ msgstr "Katılımcılar"
#. module: base_calendar
#: view:calendar.event:0
msgid "Confirm"
msgstr "Onayla"
msgstr "Onaylama"
#. module: base_calendar
#: model:ir.model,name:base_calendar.model_calendar_todo
@@ -483,14 +483,14 @@ msgstr "Ayın günü"
#. module: base_calendar
#: field:crm.meeting,message_follower_ids:0
msgid "Followers"
msgstr ""
msgstr "Takipçiler"
#. module: base_calendar
#: field:calendar.event,location:0
#: field:calendar.todo,location:0
#: field:crm.meeting,location:0
msgid "Location"
msgstr "Konum"
msgstr "Lokasyon"
#. module: base_calendar
#: selection:calendar.attendee,role:0
@@ -503,7 +503,7 @@ msgstr "Katılım gerekli"
#: field:calendar.todo,show_as:0
#: field:crm.meeting,show_as:0
msgid "Show Time as"
msgstr "Saati şöyle göster"
msgstr "Zamanı şöyle göster"
#. module: base_calendar
#: selection:calendar.alarm,action:0
@@ -530,26 +530,26 @@ msgstr "Etkinlik alarm bilgisi"
#: code:addons/base_calendar/base_calendar.py:1010
#, python-format
msgid "Count cannot be negative or 0."
msgstr ""
msgstr "Sayım negatif ya da 0 olamaz."
#. module: base_calendar
#: field:crm.meeting,create_date:0
msgid "Creation Date"
msgstr ""
msgstr "Oluşturma Tarihi"
#. module: base_calendar
#: view:crm.meeting:0
#: model:ir.model,name:base_calendar.model_crm_meeting
#: model:res.request.link,name:base_calendar.request_link_meeting
msgid "Meeting"
msgstr ""
msgstr "Toplantı"
#. module: base_calendar
#: selection:calendar.event,rrule_type:0
#: selection:calendar.todo,rrule_type:0
#: selection:crm.meeting,rrule_type:0
msgid "Month(s)"
msgstr ""
msgstr "Ay"
#. module: base_calendar
#: view:calendar.event:0
@@ -571,7 +571,7 @@ msgstr "Caldav URL si"
#. module: base_calendar
#: model:ir.model,name:base_calendar.model_mail_wizard_invite
msgid "Invite wizard"
msgstr ""
msgstr "Davet sihirbazı"
#. module: base_calendar
#: selection:calendar.event,month_list:0
@@ -595,7 +595,7 @@ msgstr "Per"
#. module: base_calendar
#: view:crm.meeting:0
msgid "Meeting Details"
msgstr ""
msgstr "Toplantı Ayrıntıları"
#. module: base_calendar
#: field:calendar.attendee,child_ids:0
@@ -606,21 +606,21 @@ msgstr "Şuna Yetkilendirildi"
#: code:addons/base_calendar/crm_meeting.py:102
#, python-format
msgid "The following contacts have no email address :"
msgstr ""
msgstr "Aşağıdaki kişilerin e-posta adresini Yok :"
#. module: base_calendar
#: selection:calendar.event,rrule_type:0
#: selection:calendar.todo,rrule_type:0
#: selection:crm.meeting,rrule_type:0
msgid "Year(s)"
msgstr ""
msgstr "Yıl"
#. module: base_calendar
#: view:crm.meeting.type:0
#: model:ir.actions.act_window,name:base_calendar.action_crm_meeting_type
#: model:ir.ui.menu,name:base_calendar.menu_crm_meeting_type
msgid "Meeting Types"
msgstr ""
msgstr "Toplantı Türü"
#. module: base_calendar
#: field:calendar.event,create_date:0
@@ -638,12 +638,12 @@ msgstr "Çalışanlara açık"
#. module: base_calendar
#: view:crm.meeting:0
msgid "hours"
msgstr ""
msgstr "saat"
#. module: base_calendar
#: field:calendar.attendee,partner_id:0
msgid "Contact"
msgstr "İlgili"
msgstr "Kontak"
#. module: base_calendar
#: field:calendar.attendee,language:0
@@ -655,12 +655,12 @@ msgstr "Dil"
#: field:calendar.todo,end_date:0
#: field:crm.meeting,end_date:0
msgid "Repeat Until"
msgstr "kadar tekrarla"
msgstr "Kadar Tekrarla"
#. module: base_calendar
#: view:crm.meeting:0
msgid "Options"
msgstr ""
msgstr "Şeçenekler"
#. module: base_calendar
#: selection:calendar.event,byday:0
@@ -699,7 +699,7 @@ msgstr "Salı"
#. module: base_calendar
#: field:crm.meeting,categ_ids:0
msgid "Tags"
msgstr ""
msgstr "Etiketler"
#. module: base_calendar
#: view:calendar.event:0
@@ -733,12 +733,12 @@ msgstr "Belirli aralıklarla olayın otomatik olarak tekrarlamasına izin ver"
#. module: base_calendar
#: model:ir.ui.menu,name:base_calendar.mail_menu_calendar
msgid "Calendar"
msgstr ""
msgstr "Takvim"
#. module: base_calendar
#: field:calendar.attendee,cn:0
msgid "Common name"
msgstr "Genel ad"
msgstr "Genel adı"
#. module: base_calendar
#: selection:calendar.attendee,state:0
@@ -750,6 +750,7 @@ msgstr "Reddedildi"
#, python-format
msgid "Group by date is not supported, use the calendar view instead."
msgstr ""
"Tarihe göre Grup desteklenmiyor, bunun yerine takvim görünümünü kullanın"
#. module: base_calendar
#: view:calendar.event:0
@@ -826,7 +827,7 @@ msgstr "Ek"
#. module: base_calendar
#: field:crm.meeting,date_closed:0
msgid "Closed"
msgstr ""
msgstr "Kapatıldı"
#. module: base_calendar
#: view:calendar.event:0
@@ -851,7 +852,7 @@ msgstr "Tekrar Sayısı"
#. module: base_calendar
#: model:crm.meeting.type,name:base_calendar.categ_meet2
msgid "Internal Meeting"
msgstr ""
msgstr "İç Toplantı"
#. module: base_calendar
#: view:calendar.event:0
@@ -868,7 +869,7 @@ msgstr "Olaylar"
#: field:calendar.todo,state:0
#: field:crm.meeting,state:0
msgid "Status"
msgstr ""
msgstr "Durum"
#. module: base_calendar
#: help:calendar.attendee,email:0
@@ -878,7 +879,7 @@ msgstr "Davetli Kişinin Epostası"
#. module: base_calendar
#: model:crm.meeting.type,name:base_calendar.categ_meet1
msgid "Customer Meeting"
msgstr ""
msgstr "Müşteri Toplantısı"
#. module: base_calendar
#: help:calendar.attendee,dir:0
@@ -904,7 +905,7 @@ msgstr "Pazartesi"
#. module: base_calendar
#: model:crm.meeting.type,name:base_calendar.categ_meet4
msgid "Open Discussion"
msgstr ""
msgstr "Açık Tartışmaları"
#. module: base_calendar
#: model:ir.model,name:base_calendar.model_ir_model
@@ -928,7 +929,7 @@ msgstr "Etkinlik Tarihi"
#. module: base_calendar
#: view:crm.meeting:0
msgid "Invitations"
msgstr ""
msgstr "Davetler"
#. module: base_calendar
#: view:calendar.event:0
@@ -939,7 +940,7 @@ msgstr "Bu"
#. module: base_calendar
#: field:crm.meeting,write_date:0
msgid "Write Date"
msgstr ""
msgstr "Yazım Tarihi"
#. module: base_calendar
#: field:calendar.attendee,delegated_from:0
@@ -949,7 +950,7 @@ msgstr "Temsil Edilen"
#. module: base_calendar
#: field:crm.meeting,message_is_follower:0
msgid "Is a Follower"
msgstr ""
msgstr "Takip ediyor"
#. module: base_calendar
#: field:calendar.attendee,user_id:0
@@ -1008,7 +1009,7 @@ msgstr "Belirsiz"
#: constraint:calendar.todo:0
#: constraint:crm.meeting:0
msgid "Error ! End date cannot be set before start date."
msgstr ""
msgstr "Hata! Bitiş tarihi başlangıç ​​tarihinden önce ayarlanamaz."
#. module: base_calendar
#: field:calendar.alarm,trigger_occurs:0
@@ -1027,7 +1028,7 @@ msgstr "Ocak"
#: field:calendar.alarm,trigger_related:0
#: field:res.alarm,trigger_related:0
msgid "Related to"
msgstr "Bağlı olduğu"
msgstr "İlişkili"
#. module: base_calendar
#: field:calendar.alarm,trigger_interval:0
@@ -1040,7 +1041,7 @@ msgstr "Aralık"
#: selection:calendar.todo,week_list:0
#: selection:crm.meeting,week_list:0
msgid "Wednesday"
msgstr "Çarşamba"
msgstr "Çarşamba"
#. module: base_calendar
#: field:calendar.alarm,name:0
@@ -1072,7 +1073,7 @@ msgstr "Ay içinde görüşmenin tekrarlanacağı günü seç"
#. module: base_calendar
#: field:calendar.alarm,action:0
msgid "Action"
msgstr "Eylem"
msgstr "İşlem"
#. module: base_calendar
#: help:calendar.alarm,duration:0
@@ -1102,14 +1103,14 @@ msgstr "Alarm tetiklendiğinde başlatılacak eylemi tanımlar"
#. module: base_calendar
#: view:crm.meeting:0
msgid "Starting at"
msgstr ""
msgstr "Başlama"
#. module: base_calendar
#: selection:calendar.event,end_type:0
#: selection:calendar.todo,end_type:0
#: selection:crm.meeting,end_type:0
msgid "End date"
msgstr "Bitiş tarihi"
msgstr "Tarihi'de"
#. module: base_calendar
#: view:calendar.event:0
@@ -1131,12 +1132,12 @@ msgstr ""
#: field:calendar.todo,end_type:0
#: field:crm.meeting,end_type:0
msgid "Recurrence Termination"
msgstr ""
msgstr "Tekrar Sonlandırma"
#. module: base_calendar
#: view:crm.meeting:0
msgid "Until"
msgstr ""
msgstr "Kadar"
#. module: base_calendar
#: view:res.alarm:0
@@ -1146,17 +1147,17 @@ msgstr "Anımsatma Ayrıntıları"
#. module: base_calendar
#: model:crm.meeting.type,name:base_calendar.categ_meet3
msgid "Off-site Meeting"
msgstr ""
msgstr "Dışarı Toplantısı"
#. module: base_calendar
#: view:crm.meeting:0
msgid "Day of Month"
msgstr ""
msgstr "Ayın Günü"
#. module: base_calendar
#: selection:calendar.alarm,state:0
msgid "Done"
msgstr "Bitti"
msgstr "Biten"
#. module: base_calendar
#: help:calendar.event,interval:0
@@ -1168,12 +1169,12 @@ msgstr "Her (Gün/Hafta/Ay/Yıl) Tekrarla"
#. module: base_calendar
#: view:crm.meeting:0
msgid "All Day?"
msgstr ""
msgstr "Tüm Gün?"
#. module: base_calendar
#: view:calendar.event:0
msgid "Cancel"
msgstr "Vazgeç"
msgstr "İptal"
#. module: base_calendar
#: model:ir.actions.act_window,help:base_calendar.action_crm_meeting
@@ -1208,7 +1209,7 @@ msgstr "Sorumlu Kullanıcı"
#. module: base_calendar
#: view:crm.meeting:0
msgid "Select Weekdays"
msgstr ""
msgstr "Haftanıngünleri seçin"
#. module: base_calendar
#: code:addons/base_calendar/base_calendar.py:1514
@@ -1245,14 +1246,14 @@ msgstr "Yineleme"
#: selection:calendar.todo,week_list:0
#: selection:crm.meeting,week_list:0
msgid "Thursday"
msgstr "Perşembe"
msgstr "Perşembe"
#. module: base_calendar
#: field:calendar.event,exrule:0
#: field:calendar.todo,exrule:0
#: field:crm.meeting,exrule:0
msgid "Exception Rule"
msgstr "Muafşyet Kuralı"
msgstr "İstisna Kural"
#. module: base_calendar
#: help:calendar.attendee,language:0
@@ -1289,7 +1290,7 @@ msgstr "Ay"
#: selection:calendar.todo,rrule_type:0
#: selection:crm.meeting,rrule_type:0
msgid "Day(s)"
msgstr ""
msgstr "Gün"
#. module: base_calendar
#: view:calendar.event:0
@@ -1338,7 +1339,7 @@ msgstr "ir.values"
#. module: base_calendar
#: view:crm.meeting:0
msgid "Search Meetings"
msgstr ""
msgstr "Toplantı Aramam"
#. module: base_calendar
#: model:ir.model,name:base_calendar.model_ir_attachment
@@ -1348,7 +1349,7 @@ msgstr "ir.ek"
#. module: base_calendar
#: model:ir.model,name:base_calendar.model_crm_meeting_type
msgid "Meeting Type"
msgstr ""
msgstr "Toplantı Türü"
#. module: base_calendar
#: selection:calendar.attendee,state:0
@@ -1378,7 +1379,7 @@ msgstr ""
#. module: base_calendar
#: selection:crm.meeting,state:0
msgid "Unconfirmed"
msgstr ""
msgstr "Onaysız"
#. module: base_calendar
#: help:calendar.attendee,sent_by:0
@@ -1398,7 +1399,7 @@ msgstr "Bitiş Tarihi"
#: selection:calendar.todo,month_list:0
#: selection:crm.meeting,month_list:0
msgid "February"
msgstr "Şubat"
msgstr "Şubat"
#. module: base_calendar
#: selection:calendar.attendee,cutype:0
@@ -1409,7 +1410,7 @@ msgstr "Kaynak"
#: field:crm.meeting.type,name:0
#: field:res.alarm,name:0
msgid "Name"
msgstr "Ad"
msgstr "Adı"
#. module: base_calendar
#: field:calendar.event,exdate:0
@@ -1430,7 +1431,7 @@ msgstr ""
#. module: base_calendar
#: model:ir.model,name:base_calendar.model_mail_message
msgid "Message"
msgstr ""
msgstr "Mesaj"
#. module: base_calendar
#: field:calendar.event,base_calendar_alarm_id:0
@@ -1442,7 +1443,7 @@ msgstr "Alarm"
#. module: base_calendar
#: field:calendar.attendee,sent_by_uid:0
msgid "Sent By User"
msgstr "Şu Kullanıcı tarafından gönderildi"
msgstr "Gönderen Kullanıcı"
#. module: base_calendar
#: selection:calendar.event,month_list:0
@@ -1455,7 +1456,7 @@ msgstr "Nisan"
#: code:addons/base_calendar/crm_meeting.py:106
#, python-format
msgid "Email addresses not found"
msgstr ""
msgstr "E-posta adresleri bulunamadı"
#. module: base_calendar
#: view:calendar.event:0
@@ -1467,13 +1468,13 @@ msgstr "Yineleme Dönemi"
#: field:calendar.todo,week_list:0
#: field:crm.meeting,week_list:0
msgid "Weekday"
msgstr "Hafta İçi"
msgstr "HaftanınGünü"
#. module: base_calendar
#: code:addons/base_calendar/base_calendar.py:1008
#, python-format
msgid "Interval cannot be negative."
msgstr ""
msgstr "Aralıklı negatif olamaz"
#. module: base_calendar
#: field:calendar.event,byday:0
@@ -1486,7 +1487,7 @@ msgstr "Gündüz"
#: code:addons/base_calendar/base_calendar.py:444
#, python-format
msgid "First you have to specify the date of the invitation."
msgstr ""
msgstr "İlk davet tarihinden belirtmeniz gerekir."
#. module: base_calendar
#: field:calendar.alarm,model_id:0
@@ -1503,7 +1504,7 @@ msgstr "Ses"
#: field:calendar.todo,id:0
#: field:crm.meeting,id:0
msgid "ID"
msgstr "Kimlik"
msgstr "ID"
#. module: base_calendar
#: selection:calendar.attendee,role:0
@@ -1515,7 +1516,7 @@ msgstr "Bilgi Amaçlı"
#: field:calendar.todo,select1:0
#: field:crm.meeting,select1:0
msgid "Option"
msgstr "Seçenek"
msgstr "Opsiyon"
#. module: base_calendar
#: model:ir.model,name:base_calendar.model_calendar_attendee
@@ -1525,12 +1526,12 @@ msgstr "Katılımcı Bilgisi"
#. module: base_calendar
#: field:calendar.alarm,res_id:0
msgid "Resource ID"
msgstr "Kaynak Kimliği"
msgstr "Kaynak ID"
#. module: base_calendar
#: selection:calendar.attendee,state:0
msgid "Needs Action"
msgstr "Eylem Gerekir"
msgstr "Gereki İşlemler"
#. module: base_calendar
#: field:calendar.attendee,sent_by:0
@@ -1542,7 +1543,7 @@ msgstr "Gönderen"
#: field:calendar.todo,sequence:0
#: field:crm.meeting,sequence:0
msgid "Sequence"
msgstr "Diziliş"
msgstr "Sıralama"
#. module: base_calendar
#: help:calendar.event,alarm_id:0
@@ -1555,7 +1556,7 @@ msgstr "Bu sefer etkinlik başlamadan önce alarm ayarla"
#: view:calendar.event:0
#: view:crm.meeting:0
msgid "Accept"
msgstr "Kabul et"
msgstr "Kabulet"
#. module: base_calendar
#: selection:calendar.event,week_list:0
@@ -1569,7 +1570,7 @@ msgstr "Cumartesi"
#: field:calendar.todo,interval:0
#: field:crm.meeting,interval:0
msgid "Repeat Every"
msgstr ""
msgstr "Herzaman Tekrarla"
#. module: base_calendar
#: selection:calendar.event,byday:0
+249
View File
@@ -0,0 +1,249 @@
# Turkish translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-02-06 08:47+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Turkish <tr@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: 2013-02-07 04:53+0000\n"
"X-Generator: Launchpad (build 16477)\n"
#. module: base_gengo
#: view:res.company:0
msgid "Comments for Translator"
msgstr "Çevirmen için notlar"
#. module: base_gengo
#: field:ir.translation,job_id:0
msgid "Gengo Job ID"
msgstr "Gengo İş NO"
#. module: base_gengo
#: code:addons/base_gengo/wizard/base_gengo_translations.py:114
#, python-format
msgid "This language is not supported by the Gengo translation services."
msgstr "Bu dil Gengo tercüme servisi tarafından desteklenmiyor."
#. module: base_gengo
#: field:res.company,gengo_comment:0
msgid "Comments"
msgstr "Yorumlar"
#. module: base_gengo
#: field:res.company,gengo_private_key:0
msgid "Gengo Private Key"
msgstr "Gengo Özel Anahtarı"
#. module: base_gengo
#: model:ir.model,name:base_gengo.model_base_gengo_translations
msgid "base.gengo.translations"
msgstr "base.gengo.translations"
#. module: base_gengo
#: help:res.company,gengo_auto_approve:0
msgid "Jobs are Automatically Approved by Gengo."
msgstr "İşler Gengo tarafından otomatik olarak onaylanıyor"
#. module: base_gengo
#: field:base.gengo.translations,lang_id:0
msgid "Language"
msgstr "Dil"
#. module: base_gengo
#: field:ir.translation,gengo_comment:0
msgid "Comments & Activity Linked to Gengo"
msgstr "Gengo'ya bağlı yorumlar ve aktiviteler"
#. module: base_gengo
#: code:addons/base_gengo/wizard/base_gengo_translations.py:124
#, python-format
msgid "Gengo Sync Translation (Response)"
msgstr "Gengo Sync Çeviri (Cevap)"
#. module: base_gengo
#: code:addons/base_gengo/wizard/base_gengo_translations.py:72
#, python-format
msgid ""
"Gengo `Public Key` or `Private Key` are missing. Enter your Gengo "
"authentication parameters under `Settings > Companies > Gengo Parameters`."
msgstr ""
#. module: base_gengo
#: selection:ir.translation,gengo_translation:0
msgid "Translation By Machine"
msgstr ""
#. module: base_gengo
#: code:addons/base_gengo/wizard/base_gengo_translations.py:155
#, python-format
msgid ""
"%s\n"
"\n"
"--\n"
" Commented on %s by %s."
msgstr ""
#. module: base_gengo
#: field:ir.translation,gengo_translation:0
msgid "Gengo Translation Service Level"
msgstr ""
#. module: base_gengo
#: constraint:ir.translation:0
msgid ""
"The Gengo translation service selected is not supported for this language."
msgstr ""
#. module: base_gengo
#: selection:ir.translation,gengo_translation:0
msgid "Standard"
msgstr "Standart"
#. module: base_gengo
#: help:ir.translation,gengo_translation:0
msgid ""
"You can select here the service level you want for an automatic translation "
"using Gengo."
msgstr ""
#. module: base_gengo
#: field:base.gengo.translations,restart_send_job:0
msgid "Restart Sending Job"
msgstr ""
#. module: base_gengo
#: view:ir.translation:0
msgid "To Approve In Gengo"
msgstr ""
#. module: base_gengo
#: view:res.company:0
msgid "Private Key"
msgstr "Özel Anahtar"
#. module: base_gengo
#: view:res.company:0
msgid "Public Key"
msgstr "Genel Anahtar"
#. module: base_gengo
#: field:res.company,gengo_public_key:0
msgid "Gengo Public Key"
msgstr ""
#. module: base_gengo
#: code:addons/base_gengo/wizard/base_gengo_translations.py:123
#, python-format
msgid "Gengo Sync Translation (Request)"
msgstr ""
#. module: base_gengo
#: view:ir.translation:0
msgid "Translations"
msgstr "Tercümeler"
#. module: base_gengo
#: field:res.company,gengo_auto_approve:0
msgid "Auto Approve Translation ?"
msgstr ""
#. module: base_gengo
#: model:ir.actions.act_window,name:base_gengo.action_wizard_base_gengo_translations
#: model:ir.ui.menu,name:base_gengo.menu_action_wizard_base_gengo_translations
msgid "Gengo: Manual Request of Translation"
msgstr ""
#. module: base_gengo
#: code:addons/base_gengo/ir_translation.py:62
#: code:addons/base_gengo/wizard/base_gengo_translations.py:109
#, python-format
msgid "Gengo Authentication Error"
msgstr ""
#. module: base_gengo
#: model:ir.model,name:base_gengo.model_res_company
msgid "Companies"
msgstr "Şirketler"
#. module: base_gengo
#: view:ir.translation:0
msgid ""
"Note: If the translation state is 'In Progress', it means that the "
"translation has to be approved to be uploaded in this system. You are "
"supposed to do that directly by using your Gengo Account"
msgstr ""
#. module: base_gengo
#: code:addons/base_gengo/wizard/base_gengo_translations.py:82
#, python-format
msgid ""
"Gengo connection failed with this message:\n"
"``%s``"
msgstr ""
#. module: base_gengo
#: view:res.company:0
msgid "Gengo Parameters"
msgstr ""
#. module: base_gengo
#: view:base.gengo.translations:0
msgid "Send"
msgstr "Gönder"
#. module: base_gengo
#: selection:ir.translation,gengo_translation:0
msgid "Ultra"
msgstr ""
#. module: base_gengo
#: model:ir.model,name:base_gengo.model_ir_translation
msgid "ir.translation"
msgstr "ir.translation"
#. module: base_gengo
#: view:ir.translation:0
msgid "Gengo Translation Service"
msgstr ""
#. module: base_gengo
#: selection:ir.translation,gengo_translation:0
msgid "Pro"
msgstr ""
#. module: base_gengo
#: view:base.gengo.translations:0
msgid "Gengo Request Form"
msgstr ""
#. module: base_gengo
#: code:addons/base_gengo/wizard/base_gengo_translations.py:114
#, python-format
msgid "Warning"
msgstr "Uyarı"
#. module: base_gengo
#: help:res.company,gengo_comment:0
msgid ""
"This comment will be automatically be enclosed in each an every request sent "
"to Gengo"
msgstr ""
#. module: base_gengo
#: view:base.gengo.translations:0
msgid "Cancel"
msgstr "İptal Et"
#. module: base_gengo
#: view:base.gengo.translations:0
msgid "or"
msgstr ""
+5 -2
View File
@@ -164,7 +164,10 @@
background: #efc9cb;
}
.oe_import .select2-results {
font-size: 12px;
/* Field dropdown */
.oe_import_selector {
font-size: 10px;
/* copied from base.sass:~148 */
font-family: "Lucida Grande", Helvetica, Verdana, Arial, sans-serif;
}
+33 -2
View File
@@ -134,6 +134,7 @@ openerp.base_import = function (instance) {
start: function () {
var self = this;
this.setup_encoding_picker();
this.setup_separator_picker();
return $.when(
this._super(),
@@ -164,6 +165,26 @@ openerp.base_import = function (instance) {
}
}).select2('val', 'utf-8');
},
setup_separator_picker: function () {
this.$('input.oe_import_separator').select2({
width: '160px',
query: function (q) {
var suggestions = [
{id: ',', text: _t("Comma")},
{id: ';', text: _t("Semicolon")},
{id: '\t', text: _t("Tab")},
{id: ' ', text: _t("Space")}
];
if (q.term) {
suggestions.unshift({id: q.term, text: q.term});
}
q.callback({results: suggestions});
},
initSelection: function (e, c) {
return c({id: ',', text: _t("Comma")});
},
});
},
import_options: function () {
var self = this;
@@ -336,8 +357,18 @@ openerp.base_import = function (instance) {
var fields = this.$('.oe_import_fields input.oe_import_match_field').map(function (index, el) {
return $(el).select2('val') || false;
}).get();
return this.Import.call(
'do', [this.id, fields, this.import_options()], options);
return this.Import.call('do', [this.id, fields, this.import_options()], options)
.then(undefined, function (error, event) {
// In case of unexpected exception, convert
// "JSON-RPC error" to an import failure, and
// prevent default handling (warning dialog)
if (event) { event.preventDefault(); }
return $.when([{
type: 'error',
record: false,
message: error.data.fault_code,
}]);
}) ;
},
onvalidate: function () {
return this.call_import({ dryrun: true })
+80
View File
@@ -0,0 +1,80 @@
# English (United Kingdom) translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-02-06 15:07+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: English (United Kingdom) <en_GB@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: 2013-02-07 04:53+0000\n"
"X-Generator: Launchpad (build 16477)\n"
#. module: base_status
#: code:addons/base_status/base_state.py:107
#, python-format
msgid "Error !"
msgstr "Error !"
#. module: base_status
#: code:addons/base_status/base_state.py:166
#, python-format
msgid "%s has been <b>opened</b>."
msgstr "%s has been <b>opened</b>."
#. module: base_status
#: code:addons/base_status/base_state.py:199
#, python-format
msgid "%s has been <b>renewed</b>."
msgstr "%s has been <b>renewed</b>."
#. module: base_status
#: code:addons/base_status/base_stage.py:210
#, python-format
msgid "Error!"
msgstr "Error!"
#. module: base_status
#: code:addons/base_status/base_state.py:107
#, python-format
msgid ""
"You can not escalate, you are already at the top level regarding your sales-"
"team category."
msgstr ""
"You can not escalate, you are already at the top level regarding your sales-"
"team category."
#. module: base_status
#: code:addons/base_status/base_state.py:193
#, python-format
msgid "%s is now <b>pending</b>."
msgstr "%s is now <b>pending</b>."
#. module: base_status
#: code:addons/base_status/base_state.py:187
#, python-format
msgid "%s has been <b>canceled</b>."
msgstr "%s has been <b>canceled</b>."
#. module: base_status
#: code:addons/base_status/base_stage.py:210
#, python-format
msgid ""
"You are already at the top level of your sales-team category.\n"
"Therefore you cannot escalate furthermore."
msgstr ""
"You are already at the top level of your sales-team category.\n"
"Therefore you cannot escalate furthermore."
#. module: base_status
#: code:addons/base_status/base_state.py:181
#, python-format
msgid "%s has been <b>closed</b>."
msgstr "%s has been <b>closed</b>."
+1
View File
@@ -36,6 +36,7 @@ You can track your suppliers, customers and other contacts.
'data': [
'contacts_view.xml',
],
'images': ['images/contacts.jpeg'],
'installable': True,
'application': True,
'auto_install': False,
+37
View File
@@ -0,0 +1,37 @@
# Mongolian translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-02-06 07:24+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Mongolian <mn@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: 2013-02-07 04:53+0000\n"
"X-Generator: Launchpad (build 16477)\n"
#. module: contacts
#: model:ir.actions.act_window,help:contacts.action_contacts
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to add a contact in your address book.\n"
" </p><p>\n"
" OpenERP helps you easily track all activities related to\n"
" a customer; discussions, history of business opportunities,\n"
" documents, etc.\n"
" </p>\n"
" "
msgstr ""
#. module: contacts
#: model:ir.actions.act_window,name:contacts.action_contacts
#: model:ir.ui.menu,name:contacts.menu_contacts
msgid "Contacts"
msgstr ""
+2 -1
View File
@@ -54,6 +54,7 @@ Dashboard for CRM will include:
'base_status',
'process',
'mail',
'email_template',
'base_calendar',
'resource',
'board',
@@ -116,6 +117,6 @@ Dashboard for CRM will include:
'installable': True,
'application': True,
'auto_install': False,
'images': ['images/sale_crm_crm_dashboard.png', 'images/crm_dashboard.jpeg','images/leads.jpeg','images/meetings.jpeg','images/opportunities.jpeg','images/outbound_calls.jpeg','images/stages.jpeg'],
'images': ['images/crm_dashboard.png', 'images/customers.png','images/leads.png','images/opportunities_kanban.png','images/opportunities_form.png','images/opportunities_calendar.png','images/opportunities_graph.png','images/logged_calls.png','images/scheduled_calls.png','images/stages.png'],
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+47 -53
View File
@@ -36,8 +36,8 @@ CRM_LEAD_FIELDS_TO_MERGE = ['name',
'company_id',
'country_id',
'section_id',
'stage_id',
'state_id',
'stage_id',
'type_id',
'user_id',
'title',
@@ -488,10 +488,8 @@ class crm_lead(base_stage, format_address, osv.osv):
opportunities = self.browse(cr, uid, ids, context=context)
def _get_first_not_null(attr):
if hasattr(oldest, attr):
return getattr(oldest, attr)
for opp in opportunities:
if hasattr(opp, attr):
if hasattr(opp, attr) and bool(getattr(opp, attr)):
return getattr(opp, attr)
return False
@@ -500,7 +498,7 @@ class crm_lead(base_stage, format_address, osv.osv):
return res and res.id or False
def _concat_all(attr):
return ', '.join(filter(lambda x: x, [getattr(opp, attr) or '' for opp in opportunities if hasattr(opp, attr)]))
return '\n\n'.join(filter(lambda x: x, [getattr(opp, attr) or '' for opp in opportunities if hasattr(opp, attr)]))
# Process the fields' values
data = {}
@@ -520,27 +518,8 @@ class crm_lead(base_stage, format_address, osv.osv):
# Define the resulting type ('lead' or 'opportunity')
data['type'] = self._merge_get_result_type(cr, uid, opportunities, context)
return data
def _merge_find_oldest(self, cr, uid, ids, context=None):
"""
Return the oldest lead found among ids.
:param list ids: list of ids of the leads to inspect
:return object: browse record of the oldest of the leads
"""
if context is None:
context = {}
if context.get('convert'):
ids = list(set(ids) - set(context.get('lead_ids', [])))
# Search opportunities order by create date
opportunity_ids = self.search(cr, uid, [('id', 'in', ids)], order='create_date', context=context)
oldest_opp_id = opportunity_ids[0]
return self.browse(cr, uid, oldest_opp_id, context=context)
def _mail_body(self, cr, uid, lead, fields, title=False, context=None):
body = []
if title:
@@ -587,7 +566,7 @@ class crm_lead(base_stage, format_address, osv.osv):
subject = [merge_message]
for opportunity in opportunities:
subject.append(opportunity.name)
title = "%s : %s" % (merge_message, opportunity.name)
title = "%s : %s" % (opportunity.type == 'opportunity' and _('Merged opportunity') or _('Merged lead'), opportunity.name)
details.append(self._mail_body(cr, uid, opportunity, CRM_LEAD_FIELDS_TO_MERGE, title=title, context=context))
# Chatter message's subject
@@ -639,40 +618,46 @@ class crm_lead(base_stage, format_address, osv.osv):
:param list ids: leads/opportunities ids to merge
:return int id: id of the resulting lead/opp
"""
if context is None: context = {}
if context is None:
context = {}
if len(ids) <= 1:
raise osv.except_osv(_('Warning!'),_('Please select more than one element (lead or opportunity) from the list view.'))
raise osv.except_osv(_('Warning!'), _('Please select more than one element (lead or opportunity) from the list view.'))
lead_ids = context.get('lead_ids', [])
ctx_opportunities = self.browse(cr, uid, lead_ids, context=context)
opportunities = self.browse(cr, uid, ids, context=context)
opportunities_list = list(set(opportunities) - set(ctx_opportunities))
oldest = self._merge_find_oldest(cr, uid, ids, context=context)
if ctx_opportunities:
first_opportunity = ctx_opportunities[0]
tail_opportunities = opportunities_list + ctx_opportunities[1:]
else:
first_opportunity = opportunities_list[0]
tail_opportunities = opportunities_list[1:]
sequenced_opps = []
for opportunity in opportunities:
sequenced_opps.append((opportunity.stage_id and opportunity.stage_id.state != 'cancel' and opportunity.stage_id.sequence or 0, opportunity))
sequenced_opps.sort(key=lambda tup: tup[0], reverse=True)
opportunities = [opportunity for sequence, opportunity in sequenced_opps]
ids = [opportunity.id for opportunity in opportunities]
highest = opportunities[0]
opportunities_rest = opportunities[1:]
merged_data = self._merge_data(cr, uid, ids, oldest, CRM_LEAD_FIELDS_TO_MERGE, context=context)
tail_opportunities = opportunities_rest
merged_data = self._merge_data(cr, uid, ids, highest, CRM_LEAD_FIELDS_TO_MERGE, context=context)
# Merge messages and attachements into the first opportunity
self._merge_opportunity_history(cr, uid, first_opportunity.id, tail_opportunities, context=context)
self._merge_opportunity_attachments(cr, uid, first_opportunity.id, tail_opportunities, context=context)
self._merge_opportunity_history(cr, uid, highest.id, tail_opportunities, context=context)
self._merge_opportunity_attachments(cr, uid, highest.id, tail_opportunities, context=context)
# Merge notifications about loss of information
self._merge_notify(cr, uid, first_opportunity, opportunities, context=context)
opportunities = [highest]
opportunities.extend(opportunities_rest)
self._merge_notify(cr, uid, highest, opportunities, context=context)
# Check if the stage is in the stages of the sales team. If not, assign the stage with the lowest sequence
if merged_data.get('type') == 'opportunity' and merged_data.get('section_id'):
section_stages = self.pool.get('crm.case.section').read(cr, uid, merged_data['section_id'], ['stage_ids'], context=context)
if merged_data.get('stage_id') not in section_stages['stage_ids']:
stages_sequences = self.pool.get('crm.case.stage').search(cr, uid, [('id','in',section_stages['stage_ids'])], order='sequence', limit=1, context=context)
merged_data['stage_id'] = stages_sequences[0]
# Write merged data into first opportunity
self.write(cr, uid, [first_opportunity.id], merged_data, context=context)
self.write(cr, uid, [highest.id], merged_data, context=context)
# Delete tail opportunities
self.unlink(cr, uid, [x.id for x in tail_opportunities], context=context)
# Open first opportunity
self.case_open(cr, uid, [first_opportunity.id])
return first_opportunity.id
return highest.id
def _convert_opportunity_data(self, cr, uid, lead, customer, section_id=False, context=None):
crm_stage = self.pool.get('crm.case.stage')
@@ -716,7 +701,7 @@ class crm_lead(base_stage, format_address, osv.osv):
def _lead_create_contact(self, cr, uid, lead, name, is_company, parent_id=False, context=None):
partner = self.pool.get('res.partner')
vals = { 'name': name,
vals = {'name': name,
'user_id': lead.user_id.id,
'comment': lead.description,
'section_id': lead.section_id.id or False,
@@ -736,11 +721,11 @@ class crm_lead(base_stage, format_address, osv.osv):
'is_company': is_company,
'type': 'contact'
}
partner = partner.create(cr, uid,vals, context)
partner = partner.create(cr, uid, vals, context=context)
return partner
def _create_lead_partner(self, cr, uid, lead, context=None):
partner_id = False
partner_id = False
if lead.partner_name and lead.contact_name:
partner_id = self._lead_create_contact(cr, uid, lead, lead.partner_name, True, context=context)
partner_id = self._lead_create_contact(cr, uid, lead, lead.contact_name, False, partner_id, context=context)
@@ -748,8 +733,14 @@ class crm_lead(base_stage, format_address, osv.osv):
partner_id = self._lead_create_contact(cr, uid, lead, lead.partner_name, True, context=context)
elif not lead.partner_name and lead.contact_name:
partner_id = self._lead_create_contact(cr, uid, lead, lead.contact_name, False, context=context)
elif lead.email_from and self.pool.get('res.partner')._parse_partner_name(lead.email_from, context=context)[0]:
contact_name = self.pool.get('res.partner')._parse_partner_name(lead.email_from, context=context)[0]
partner_id = self._lead_create_contact(cr, uid, lead, contact_name, False, context=context)
else:
partner_id = self._lead_create_contact(cr, uid, lead, lead.name, False, context=context)
raise osv.except_osv(
_('Warning!'),
_('No customer name defined. Please fill one of the following fields: Company Name, Contact Name or Email ("Name <email@address>")')
)
return partner_id
def _lead_set_partner(self, cr, uid, lead, partner_id, context=None):
@@ -763,7 +754,7 @@ class crm_lead(base_stage, format_address, osv.osv):
res = False
res_partner = self.pool.get('res.partner')
if partner_id:
res_partner.write(cr, uid, partner_id, {'section_id': lead.section_id.id or False})
res_partner.write(cr, uid, partner_id, {'section_id': lead.section_id and 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)
message = _("<b>Partner</b> set to <em>%s</em>." % (lead.partner_id.name))
@@ -872,8 +863,8 @@ class crm_lead(base_stage, format_address, osv.osv):
'res_id': int(opportunity_id),
'view_id': False,
'views': [(form_view or False, 'form'),
(tree_view or False, 'tree'),
(False, 'calendar'), (False, 'graph')],
(tree_view or False, 'tree'),
(False, 'calendar'), (False, 'graph')],
'type': 'ir.actions.act_window',
}
@@ -980,8 +971,11 @@ class crm_lead(base_stage, format_address, osv.osv):
'description': desc,
'email_from': msg.get('from'),
'email_cc': msg.get('cc'),
'partner_id': msg.get('author_id', False),
'user_id': False,
}
if msg.get('author_id'):
defaults.update(self.on_change_partner(cr, uid, None, msg.get('author_id'), context=context)['value'])
if msg.get('priority') in dict(crm.AVAILABLE_PRIORITIES):
defaults['priority'] = msg.get('priority')
defaults.update(custom_values)
+2
View File
@@ -171,11 +171,13 @@
<record id="mt_lead_stage" model="mail.message.subtype">
<field name="name">Stage Changed</field>
<field name="res_model">crm.lead</field>
<field name="default" eval="False"/>
<field name="description">Stage changed</field>
</record>
<record id="mt_lead_won" model="mail.message.subtype">
<field name="name">Opportunity Won</field>
<field name="res_model">crm.lead</field>
<field name="default" eval="False"/>
<field name="description">Opportunity won</field>
</record>
<record id="mt_lead_lost" model="mail.message.subtype">
+60 -46
View File
@@ -168,7 +168,7 @@
</group>
</group>
<notebook colspan="4">
<page string="Notes">
<page string="Internal Notes">
<field name="description"/>
</page>
<page string="Extra Info">
@@ -219,12 +219,14 @@
<field name="date_deadline" invisible="1"/>
<field name="create_date" groups="base.group_no_one"/>
<field name="name"/>
<field name="type"/>
<field name="contact_name"/>
<field name="country_id" invisible="context.get('invisible_country', True)"/>
<field name="email_from"/>
<field name="phone"/>
<field name="stage_id"/>
<field name="user_id" invisible="1"/>
<field name="partner_id" invisible="1"/>
<field name="section_id" invisible="context.get('invisible_section', True)"/>
<field name="state" invisible="1"/>
<field name="type_id" invisible="1"/>
@@ -235,6 +237,7 @@
</field>
</record>
<!-- CRM Lead Calendar View -->
<record model="ir.ui.view" id="crm_case_calendar_view_leads">
<field name="name">CRM - Leads Calendar</field>
@@ -322,35 +325,39 @@
<search string="Search Leads">
<field name="name" string="Lead / Customer" filter_domain="['|','|',('partner_name','ilike',self),('email_from','ilike',self),('name','ilike',self)]"/>
<field name="categ_ids" string="Category" filter_domain="[('categ_ids','ilike',self)]"/>
<field name="create_date"/>
<filter icon="terp-mail-message-new" string="Unread Messages" help="Unread messages" name="message_unread" domain="[('message_unread','=',True)]"/>
<separator/>
<filter icon="terp-check" string="New" name="new" help="New Leads" domain="[('state','=','draft')]"/>
<filter icon="terp-camera_test" string="In Progress" name="open" domain="[('state','=','open')]"/>
<separator/>
<filter string="Unassigned Leads" icon="terp-personal-" domain="[('user_id','=', False)]" help="Unassigned Leads"/>
<separator/>
<filter string="Leads Assigned to Me or My Team(s)" icon="terp-personal+" context="{'invisible_section': False}"
domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]"
help="Leads that are assigned to one of the sale teams I manage, or to me"/>
<field name="section_id" context="{'invisible_section': False, 'default_section_id': self}"/>
<field name="user_id"/>
<field name="section_id" context="{'invisible_section': False}"/>
<field name="create_date"/>
<field name="country_id" context="{'invisible_country': False}"/>
<separator/>
<filter string="Open" name="open" domain="[('state','!=','cancel')]" help="Open Leads"/>
<filter string="Dead" name="dead" domain="[('state','=','cancel')]"/>
<filter string="Unassigned" domain="[('user_id','=', False)]" help="No salesperson"/>
<filter string="Unread Messages" name="message_unread" domain="[('message_unread','=',True)]" help="Unread messages"/>
<filter string="Assigned to Me"
domain="[('user_id','=',uid)]" context="{'invisible_section': False}"
help="Leads that are assigned to me"/>
<filter string="Assigned to My Team(s)"
domain="[('section_id.member_ids', 'in', [uid])]" context="{'invisible_section': False}"
help="Leads that are assigned to any sales teams I am member of"/>
<separator/>
<group expand="0" string="Group By...">
<filter string="Salesperson" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Team" icon="terp-personal+" domain="[]" context="{'group_by':'section_id'}"/>
<filter string="Referrer" icon="terp-personal" domain="[]" context="{'group_by':'referred'}"/>
<filter string="Campaign" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'type_id'}"/>
<filter string="Channel" icon="terp-call-start" domain="[]" context="{'group_by':'channel_id'}"/>
<separator orientation="vertical"/>
<filter string="Stage" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}"/>
<filter string="Creation" help="Create date" icon="terp-go-month" domain="[]" context="{'group_by':'create_date'}" groups="base.group_no_one"/>
<filter string="Salesperson" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Team" domain="[]" context="{'group_by':'section_id'}"/>
<filter string="Stage" domain="[]" context="{'group_by':'stage_id'}"/>
<filter string="Customer" help="Partner" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Country" domain="[]" context="{'group_by':'country_id'}"/>
<filter string="Stage" domain="[]" context="{'group_by':'stage_id'}"/>
<filter string="Referrer" domain="[]" context="{'group_by':'referred'}"/>
<filter string="Campaign" domain="[]" context="{'group_by':'type_id'}"/>
<filter string="Channel" domain="[]" context="{'group_by':'channel_id'}"/>
<filter string="Creation" domain="[]" context="{'group_by':'create_date'}" groups="base.group_no_one"/>
</group>
<group string="Display">
<filter string="Show Countries" icon="terp-personal+" context="{'invisible_country': False}" help="Show Countries"/>
<filter string="Show Sales Team" icon="terp-personal+" context="{'invisible_section': False}" domain="[]" help="Show Sales Team"/>
<filter string="Show Countries" context="{'invisible_country': False}" help="Show Countries"/>
<filter string="Show Sales Team" context="{'invisible_section': False}" domain="[]" help="Show Sales Team"/>
</group>
</search>
</search>
</field>
</record>
@@ -517,6 +524,7 @@
<field name="probability" avg="Avg. of Probability"/>
<field name="section_id" invisible="context.get('invisible_section', True)"/>
<field name="user_id"/>
<field name="referred" invisible="1"/>
<field name="priority" invisible="1"/>
<field name="state" groups="base.group_no_one"/>
<field name="message_unread" invisible="1"/>
@@ -531,35 +539,41 @@
<field name="model">crm.lead</field>
<field name="arch" type="xml">
<search string="Search Opportunities">
<field name="name" string="Opportunity"
filter_domain="['|','|','|',('partner_id','ilike',self),('partner_name','ilike',self),('email_from','ilike',self),('name', 'ilike', self)]"/>
<field name="name" string="Opportunity" filter_domain="['|','|','|',('partner_id','ilike',self),('partner_name','ilike',self),('email_from','ilike',self),('name', 'ilike', self)]"/>
<field name="categ_ids" string="Category" filter_domain="[('categ_ids','ilike', self)]"/>
<filter icon="terp-mail-message-new" string="Unread Messages" help="Unread messages" name="message_unread" domain="[('message_unread','=',True)]"/>
<separator/>
<filter icon="terp-check" string="New" help="New Opportunities" name="new" domain="[('state','=','draft')]"/>
<filter icon="terp-camera_test" string="In Progress" help="Open Opportunities" name="open" domain="[('state','=','open')]"/>
<separator/>
<filter string="Unassigned Opportunities" icon="terp-personal-" domain="[('user_id','=', False)]" help="Unassigned Opportunities"/>
<separator/>
<filter string="Opportunities Assigned to Me or My Team(s)" icon="terp-personal+"
domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]" context="{'invisible_section': False}"
help="Opportunities that are assigned to either me or one of the sale teams I manage"/>
<field name="user_id"/>
<field name="section_id" context="{'invisible_section': False, 'default_section_id': self}"/>
<field name="user_id"/>
<field name="partner_id"/>
<separator/>
<filter string="New" name="new" domain="[('state','=','draft')]" help="New Opportunities"/>
<filter string="In Progress" name="open" domain="[('state','=','open')]" help="Open Opportunities"/>
<filter string="Won" name="won" domain="[('state','=','done')]"/>
<filter string="Lost" name="lost" domain="[('state','=','cancel')]"/>
<filter string="Unassigned" domain="[('user_id','=', False)]" help="No salesperson"/>
<filter string="Unread Messages" name="message_unread" domain="[('message_unread','=',True)]" help="Unread messages"/>
<filter string="Assigned to Me"
domain="[('user_id','=',uid)]" context="{'invisible_section': False}"
help="Opportunities that are assigned to me"/>
<filter string="Assigned to My Team(s)"
domain="[('section_id.member_ids', 'in', [uid])]" context="{'invisible_section': False}"
help="Opportunities that are assigned to any sales teams I am member of"/>
<separator/>
<group expand="0" string="Group By..." colspan="16">
<filter string="Salesperson" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Team" help="Sales Team" icon="terp-personal+" domain="[]" context="{'group_by':'section_id'}"/>
<filter string="Customer" help="Partner" icon="terp-personal+" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Stage" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}"/>
<filter string="Priority" icon="terp-rating-rated" domain="[]" context="{'group_by':'priority'}"/>
<filter string="Campaign" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'type_id'}"/>
<filter string="Channel" icon="terp-call-start" domain="[]" context="{'group_by':'channel_id'}"/>
<filter string="Creation" icon="terp-go-month" domain="[]" context="{'group_by':'create_date'}" groups="base.group_no_one"/>
<filter string="Exp.Closing" icon="terp-go-month" help="Expected Closing" domain="[]" context="{'group_by':'date_deadline'}"/>
<filter string="Salesperson" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Team" domain="[]" context="{'group_by':'section_id'}"/>
<filter string="Stage" domain="[]" context="{'group_by':'stage_id'}"/>
<filter string="Customer" help="Partner" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Country" domain="[]" context="{'group_by':'country_id'}"/>
<filter string="Priority" domain="[]" context="{'group_by':'priority'}"/>
<filter string="Expected Closing" domain="[]" context="{'group_by':'date_deadline'}"/>
<filter string="Referrer" domain="[]" context="{'group_by':'referred'}"/>
<filter string="Campaign" domain="[]" context="{'group_by':'type_id'}"/>
<filter string="Channel" domain="[]" context="{'group_by':'channel_id'}"/>
<filter string="Creation" domain="[]" context="{'group_by':'create_date'}" groups="base.group_no_one"/>
</group>
<group string="Display">
<filter string="Show Sales Team" context="{'invisible_section': False}" domain="[]" help="Show Sales Team"/>
<filter string="Show Countries" context="{'invisible_country': False}" help="Show Countries"/>
</group>
</search>
</field>
-20
View File
@@ -68,24 +68,4 @@ class calendar_attendee(osv.osv):
relation="crm.case.categ", multi='categ_id'),
}
class res_users(osv.osv):
_name = 'res.users'
_inherit = 'res.users'
def create(self, cr, uid, data, context=None):
user_id = super(res_users, self).create(cr, uid, data, context=context)
# add shortcut unless 'noshortcut' is True in context
if not(context and context.get('noshortcut', False)):
data_obj = self.pool.get('ir.model.data')
try:
data_id = data_obj._get_id(cr, uid, 'crm', 'ir_ui_view_sc_calendar0')
view_id = data_obj.browse(cr, uid, data_id, context=context).res_id
self.pool.get('ir.ui.view_sc').copy(cr, uid, view_id, default = {
'user_id': user_id}, context=context)
except:
# Tolerate a missing shortcut. See product/product.py for similar code.
_logger.debug('Skipped meetings shortcut for user "%s".', data.get('name','<new'))
return user_id
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -4,31 +4,37 @@
!record {model: crm.lead, id: test_crm_lead_01}:
type: 'lead'
name: 'Test lead 1'
email_from: 'Raoul Grosbedon <raoul@grosbedon.fr>'
stage_id: stage_lead1
-
!record {model: crm.lead, id: test_crm_lead_02}:
type: 'lead'
name: 'Test lead 2'
email_from: 'Raoul Grosbedon <raoul@grosbedon.fr>'
stage_id: stage_lead1
-
!record {model: crm.lead, id: test_crm_lead_03}:
type: 'lead'
name: 'Test lead 3'
email_from: 'Raoul Grosbedon <raoul@grosbedon.fr>'
stage_id: stage_lead1
-
!record {model: crm.lead, id: test_crm_lead_04}:
type: 'lead'
name: 'Test lead 4'
contact_name: 'Fabrice Lepoilu'
stage_id: stage_lead1
-
!record {model: crm.lead, id: test_crm_lead_05}:
type: 'lead'
name: 'Test lead 5'
contact_name: 'Fabrice Lepoilu'
stage_id: stage_lead1
-
!record {model: crm.lead, id: test_crm_lead_06}:
type: 'lead'
name: 'Test lead 6'
partner_name: 'Agrolait SuperSeed SA'
stage_id: stage_lead1
-
!record {model: res.users, id: test_res_user_01}:
@@ -41,7 +41,7 @@
assert merge_id, 'Fail to create merge opportunity wizard'
merge_result = self.browse(cr, uid, merge_id)[0]
assert merge_result.partner_id.id == ref("base.res_partner_1"), 'Partner mismatch: when merging leads/opps with different m2o values, the first not null value prevails (the other are dropped)'
assert merge_result.description == 'This is the description of the test lead 1., This is the description of the test lead 2., This is the description of the test opp 1.', 'Description mismatch: when merging leads/opps with different text values, these values should get concatenated and separeted with ", "'
assert merge_result.description == 'This is the description of the test lead 1.\n\nThis is the description of the test lead 2.\n\nThis is the description of the test opp 1.', 'Description mismatch: when merging leads/opps with different text values, these values should get concatenated and separated with line returns'
assert merge_result.type == 'opportunity', 'Type mismatch: when at least one opp in involved in the merge, the result should be a new opp (instead of %s)' % merge_result.type
-
The other (tailing) leads/opps shouldn't exist anymore.
+51 -53
View File
@@ -34,7 +34,7 @@ class crm_lead2opportunity_partner(osv.osv_memory):
('convert', 'Convert to opportunity'),
('merge', 'Merge with existing opportunities')
], 'Conversion Action', required=True),
'opportunity_ids': fields.many2many('crm.lead', string='Opportunities', domain=[('type', '=', 'opportunity')]),
'opportunity_ids': fields.many2many('crm.lead', string='Opportunities'),
}
def default_get(self, cr, uid, fields, context=None):
@@ -46,42 +46,34 @@ class crm_lead2opportunity_partner(osv.osv_memory):
lead_obj = self.pool.get('crm.lead')
res = super(crm_lead2opportunity_partner, self).default_get(cr, uid, fields, context=context)
opportunities = res.get('opportunity_ids') or []
partner_id = False
email = False
for lead in lead_obj.browse(cr, uid, opportunities, context=context):
partner_id = lead.partner_id and lead.partner_id.id or False
if context.get('active_id'):
tomerge = set([int(context['active_id'])])
email = False
partner_id = res.get('partner_id')
lead = lead_obj.browse(cr, uid, int(context['active_id']), context=context)
#TOFIX: use mail.mail_message.to_mail
email = re.findall(r'([^ ,<@]+@[^> ,]+)', lead.email_from or '')
email = map(lambda x: "'" + x + "'", email)
if not partner_id and res.get('partner_id'):
partner_id = res.get('partner_id')
ids = []
if partner_id:
# Search for opportunities that have the same partner and that arent done or cancelled
ids = lead_obj.search(cr, uid, [('partner_id', '=', partner_id), ('type', '=', 'opportunity'), '!', ('state', 'in', ['done', 'cancel'])])
if ids:
opportunities.append(ids[0])
if not partner_id:
if partner_id:
# Search for opportunities that have the same partner and that arent done or cancelled
ids = lead_obj.search(cr, uid, [('partner_id', '=', partner_id)])
for id in ids:
tomerge.add(id)
if email:
# Find email of existing opportunity matching the email_from of the lead
cr.execute("""select id from crm_lead where type='opportunity' and
substring(email_from from '([^ ,<@]+@[^> ,]+)') in (%s)""" % (','.join(email)))
ids = map(lambda x:x[0], cr.fetchall())
if ids:
opportunities.append(ids[0])
ids = lead_obj.search(cr, uid, [('email_from', 'ilike', email[0])])
for id in ids:
tomerge.add(id)
if 'action' in fields:
res.update({'action' : partner_id and 'exist' or 'create'})
if 'partner_id' in fields:
res.update({'partner_id' : partner_id})
if 'name' in fields:
res.update({'name' : ids and 'merge' or 'convert'})
if 'opportunity_ids' in fields:
res.update({'opportunity_ids': opportunities})
if 'action' in fields:
res.update({'action' : partner_id and 'exist' or 'create'})
if 'partner_id' in fields:
res.update({'partner_id' : partner_id})
if 'name' in fields:
res.update({'name' : len(tomerge) >= 2 and 'merge' or 'convert'})
if 'opportunity_ids' in fields and len(tomerge) >= 2:
res.update({'opportunity_ids': list(tomerge)})
return res
@@ -115,38 +107,44 @@ class crm_lead2opportunity_partner(osv.osv_memory):
lead.allocate_salesman(cr, uid, lead_ids, user_ids, team_id=team_id, context=context)
return res
def _merge_opportunity(self, cr, uid, ids, opportunity_ids, action='merge', context=None):
if context is None:
context = {}
res = False
# Expected: all newly-converted leads (active_ids) will be merged with the opportunity(ies)
# that have been selected in the 'opportunity_ids' m2m, with all these records
# merged into the first opportunity (and the rest deleted)
opportunity_ids = [o.id for o in opportunity_ids]
lead_ids = context.get('active_ids', [])
if action == 'merge' and lead_ids and opportunity_ids:
# Add the leads in the to-merge list, next to other opps
# (the fact that they're passed in context['lead_ids'] means that
# they cannot be selected to contain the result of the merge.
opportunity_ids.extend(lead_ids)
context.update({'lead_ids': lead_ids, "convert" : True})
res = self.pool.get('crm.lead').merge_opportunity(cr, uid, opportunity_ids, context=context)
return res
def action_apply(self, cr, uid, ids, context=None):
"""
Convert lead to opportunity or merge lead and opportunity and open
the freshly created opportunity view.
"""
if context is None:
context = {}
w = self.browse(cr, uid, ids, context=context)[0]
opp_ids = [o.id for o in w.opportunity_ids]
if w.name == 'merge':
lead_id = self.pool.get('crm.lead').merge_opportunity(cr, uid, opp_ids, context=context)
lead_ids = [lead_id]
lead = self.pool.get('crm.lead').read(cr, uid, lead_id, ['type'], context=context)
if lead['type'] == "lead":
context.update({'active_ids': lead_ids})
self._convert_opportunity(cr, uid, ids, {'lead_ids': lead_ids}, context=context)
else:
lead_ids = context.get('active_ids', [])
self._convert_opportunity(cr, uid, ids, {'lead_ids': lead_ids}, context=context)
return self.pool.get('crm.lead').redirect_opportunity_view(cr, uid, lead_ids[0], context=context)
def _create_partner(self, cr, uid, ids, context=None):
"""
Create partner based on action.
:return dict: dictionary organized as followed: {lead_id: partner_assigned_id}
"""
#TODO this method in only called by crm_lead2opportunity_partner
#wizard and would probably diserve to be refactored or at least
#moved to a better place
if context is None:
context = {}
lead = self.pool.get('crm.lead')
lead_ids = context.get('active_ids', [])
data = self.browse(cr, uid, ids, context=context)[0]
self._convert_opportunity(cr, uid, ids, {'lead_ids': lead_ids}, context=context)
self._merge_opportunity(cr, uid, ids, data.opportunity_ids, data.name, context=context)
return lead.redirect_opportunity_view(cr, uid, lead_ids[0], context=context)
partner_id = data.partner_id and data.partner_id.id or False
return lead.handle_partner_assignation(cr, uid, lead_ids, data.action, partner_id, context=context)
class crm_lead2opportunity_mass_convert(osv.osv_memory):
_name = 'crm.lead2opportunity.partner.mass'
@@ -9,11 +9,19 @@
<form string="Convert to Opportunity" version="7.0">
<group name="name">
<field name="name" class="oe_inline"/>
<field name="opportunity_ids" attrs="{'invisible': [('name', '!=', 'merge')]}">
</group>
<group string="Opportunities">
<field name="opportunity_ids" attrs="{'invisible': [('name', '!=', 'merge')]}" nolabel="1">
<tree>
<field name="create_date"/>
<field name="name"/>
<field name="partner_id"/>
<field name="user_id"/>
<field name="type"/>
<field name="contact_name"/>
<field name="country_id" invisible="context.get('invisible_country', True)"/>
<field name="email_from"/>
<field name="phone"/>
<field name="stage_id"/>
<field name="user_id" invisible="1"/>
<field name="section_id"/>
</tree>
</field>
@@ -51,9 +59,15 @@
<group string="Select Opportunities" attrs="{'invisible': [('name', '!=', 'merge')]}">
<field name="opportunity_ids" colspan="4" nolabel="1" attrs="{'invisible': [('name', '=', 'convert')]}">
<tree>
<field name="create_date"/>
<field name="name"/>
<field name="partner_id"/>
<field name="user_id"/>
<field name="type"/>
<field name="contact_name"/>
<field name="country_id" invisible="context.get('invisible_country', True)"/>
<field name="email_from"/>
<field name="phone"/>
<field name="stage_id"/>
<field name="user_id" invisible="1"/>
<field name="section_id"/>
</tree>
</field>
@@ -11,9 +11,14 @@
<separator string="Select Leads/Opportunities"/>
<field name="opportunity_ids">
<tree>
<field name="create_date"/>
<field name="name"/>
<field name="partner_id"/>
<field name="user_id"/>
<field name="type"/>
<field name="contact_name"/>
<field name="email_from"/>
<field name="phone"/>
<field name="stage_id"/>
<field name="user_id" invisible="1"/>
<field name="section_id"/>
</tree>
</field>
-16
View File
@@ -96,20 +96,4 @@ class crm_partner_binding(osv.osv_memory):
return res
def _create_partner(self, cr, uid, ids, context=None):
"""
Create partner based on action.
:return dict: dictionary organized as followed: {lead_id: partner_assigned_id}
"""
#TODO this method in only called by crm_lead2opportunity_partner
#wizard and would probably diserve to be refactored or at least
#moved to a better place
if context is None:
context = {}
lead = self.pool.get('crm.lead')
lead_ids = context.get('active_ids', [])
data = self.browse(cr, uid, ids, context=context)[0]
partner_id = data.partner_id and data.partner_id.id or False
return lead.handle_partner_assignation(cr, uid, lead_ids, data.action, partner_id, context=context)
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+1
View File
@@ -195,6 +195,7 @@ class crm_claim(base_stage, osv.osv):
'description': desc,
'email_from': msg.get('from'),
'email_cc': msg.get('cc'),
'partner_id': msg.get('author_id', False),
}
if msg.get('priority'):
defaults['priority'] = msg.get('priority')
+1
View File
@@ -106,6 +106,7 @@ class crm_helpdesk(base_state, base_stage, osv.osv):
'email_from': msg.get('from'),
'email_cc': msg.get('cc'),
'user_id': False,
'partner_id': msg.get('author_id', False),
}
defaults.update(custom_values)
return super(crm_helpdesk,self).message_new(cr, uid, msg, custom_values=defaults, context=context)
+1 -1
View File
@@ -57,6 +57,6 @@ Key Features
'installable': True,
'application': True,
'auto_install': False,
'images': ['images/1_event_type_list.jpeg','images/2_events.jpeg','images/3_registrations.jpeg'],
'images': ['images/1_event_type_list.jpeg','images/2_events.jpeg','images/3_registrations.jpeg','images/events_kanban.jpeg'],
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+185
View File
@@ -0,0 +1,185 @@
# Mongolian translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-02-06 09:39+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Mongolian <mn@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: 2013-02-07 04:53+0000\n"
"X-Generator: Launchpad (build 16477)\n"
#. module: event_moodle
#: view:event.moodle.config.wiz:0
msgid "Connection with username and password"
msgstr ""
#. module: event_moodle
#: model:ir.model,name:event_moodle.model_event_moodle_config_wiz
msgid "event.moodle.config.wiz"
msgstr ""
#. module: event_moodle
#: help:event.moodle.config.wiz,server_moodle:0
msgid ""
"URL where you have your moodle server. For exemple: 'http://127.0.0.1' or "
"'http://localhost'"
msgstr ""
#. module: event_moodle
#: field:event.registration,moodle_user_password:0
msgid "Password for Moodle User"
msgstr ""
#. module: event_moodle
#: field:event.moodle.config.wiz,moodle_password:0
msgid "Moodle Password"
msgstr ""
#. module: event_moodle
#: code:addons/event_moodle/event_moodle.py:137
#, python-format
msgid "Your email '%s' is wrong."
msgstr ""
#. module: event_moodle
#: view:event.moodle.config.wiz:0
msgid "Connection with a Token"
msgstr ""
#. module: event_moodle
#: view:event.moodle.config.wiz:0
msgid ""
"The easiest way to connect OpenERP with a moodle server is to create a "
"'token' in Moodle. It will be used to authenticate OpenERP as a trustable "
"application."
msgstr ""
#. module: event_moodle
#: field:event.moodle.config.wiz,url:0
msgid "URL to Moodle Server"
msgstr ""
#. module: event_moodle
#: help:event.moodle.config.wiz,url:0
msgid "The url that will be used for the connection with moodle in xml-rpc"
msgstr ""
#. module: event_moodle
#: model:ir.model,name:event_moodle.model_event_registration
msgid "Event Registration"
msgstr ""
#. module: event_moodle
#: view:event.moodle.config.wiz:0
msgid ""
"Another approach is to create a user for OpenERP in Moodle. If you do so, "
"make sure that this user has appropriate access rights."
msgstr ""
#. module: event_moodle
#: field:event.registration,moodle_uid:0
msgid "Moodle User ID"
msgstr ""
#. module: event_moodle
#: field:event.moodle.config.wiz,server_moodle:0
msgid "Moodle Server"
msgstr ""
#. module: event_moodle
#: field:event.event,moodle_id:0
msgid "Moodle ID"
msgstr ""
#. module: event_moodle
#: view:event.moodle.config.wiz:0
msgid "Server"
msgstr "Сервер"
#. module: event_moodle
#: code:addons/event_moodle/event_moodle.py:57
#: code:addons/event_moodle/event_moodle.py:105
#: code:addons/event_moodle/event_moodle.py:137
#, python-format
msgid "Error!"
msgstr "Алдаа гарлаа!"
#. module: event_moodle
#: code:addons/event_moodle/event_moodle.py:105
#, python-format
msgid "You must configure your moodle connection."
msgstr ""
#. module: event_moodle
#: field:event.moodle.config.wiz,moodle_username:0
#: field:event.registration,moodle_username:0
msgid "Moodle Username"
msgstr ""
#. module: event_moodle
#: view:event.moodle.config.wiz:0
#: model:ir.actions.act_window,name:event_moodle.configure_moodle
msgid "Configure Moodle"
msgstr ""
#. module: event_moodle
#: field:event.moodle.config.wiz,moodle_token:0
msgid "Moodle Token"
msgstr ""
#. module: event_moodle
#: help:event.moodle.config.wiz,moodle_username:0
msgid ""
"You can also connect with your username that you define when you create a "
"token"
msgstr ""
#. module: event_moodle
#: help:event.event,moodle_id:0
msgid "The identifier of this event in Moodle"
msgstr ""
#. module: event_moodle
#: help:event.moodle.config.wiz,moodle_token:0
msgid "Put your token that you created in your moodle server"
msgstr ""
#. module: event_moodle
#: model:ir.ui.menu,name:event_moodle.wizard_moodle
msgid "Moodle Configuration"
msgstr ""
#. module: event_moodle
#: view:event.moodle.config.wiz:0
msgid "or"
msgstr "эсвэл"
#. module: event_moodle
#: code:addons/event_moodle/event_moodle.py:57
#, python-format
msgid "First configure your moodle connection."
msgstr ""
#. module: event_moodle
#: view:event.moodle.config.wiz:0
msgid "Apply"
msgstr "Ашиглах"
#. module: event_moodle
#: view:event.moodle.config.wiz:0
msgid "Cancel"
msgstr "Цуцлах"
#. module: event_moodle
#: model:ir.model,name:event_moodle.model_event_event
msgid "Event"
msgstr ""
+90
View File
@@ -0,0 +1,90 @@
# Mongolian translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-02-06 07:34+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Mongolian <mn@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: 2013-02-07 04:53+0000\n"
"X-Generator: Launchpad (build 16477)\n"
#. module: event_sale
#: model:ir.model,name:event_sale.model_product_product
msgid "Product"
msgstr ""
#. module: event_sale
#: help:product.product,event_ok:0
msgid ""
"Determine if a product needs to create automatically an event registration "
"at the confirmation of a sales order line."
msgstr ""
#. module: event_sale
#: help:sale.order.line,event_id:0
msgid ""
"Choose an event and it will automatically create a registration for this "
"event."
msgstr ""
#. module: event_sale
#: model:event.event,name:event_sale.event_technical_training
msgid "Technical training in Grand-Rosiere"
msgstr ""
#. module: event_sale
#: help:product.product,event_type_id:0
msgid ""
"Select event types so when we use this product in sales order lines, it will "
"filter events of this type only."
msgstr ""
#. module: event_sale
#: field:product.product,event_type_id:0
msgid "Type of Event"
msgstr ""
#. module: event_sale
#: field:sale.order.line,event_ok:0
msgid "event_ok"
msgstr ""
#. module: event_sale
#: field:product.product,event_ok:0
msgid "Event Subscription"
msgstr ""
#. module: event_sale
#: field:sale.order.line,event_type_id:0
msgid "Event Type"
msgstr ""
#. module: event_sale
#: model:product.template,name:event_sale.event_product_product_template
msgid "Technical Training"
msgstr ""
#. module: event_sale
#: code:addons/event_sale/event_sale.py:88
#, python-format
msgid "The registration %s has been created from the Sales Order %s."
msgstr ""
#. module: event_sale
#: field:sale.order.line,event_id:0
msgid "Event"
msgstr ""
#. module: event_sale
#: model:ir.model,name:event_sale.model_sale_order_line
msgid "Sales Order Line"
msgstr ""
+1
View File
@@ -54,6 +54,7 @@ Main Features
'fleet_data.xml',
'fleet_board_view.xml',
],
'images': ['images/costs_analysis.jpeg','images/indicative_costs_analysis.jpeg','images/vehicles.jpeg','images/vehicles_contracts.jpeg','images/vehicles_fuel.jpeg','images/vehicles_odometer.jpeg','images/vehicles_services.jpeg'],
'update_xml' : ['security/fleet_security.xml','security/ir.model.access.csv'],
'demo': ['fleet_demo.xml'],
File diff suppressed because it is too large Load Diff
+37 -9
View File
@@ -29,13 +29,40 @@ _logger = logging.getLogger(__name__)
try:
import gdata.docs.data
import gdata.docs.client
from gdata.client import RequestError
from gdata.docs.service import DOCUMENT_LABEL
import gdata.auth
from gdata.docs.data import Resource
# API breakage madness in the gdata API - those guys are insane.
try:
# gdata 2.0.15+
gdata.docs.client.DocsClient.copy_resource
except AttributeError:
# gdata 2.0.14- : copy_resource() was copy()
gdata.docs.client.DocsClient.copy_resource = gdata.docs.client.DocsClient.copy
try:
# gdata 2.0.16+
gdata.docs.client.DocsClient.get_resource_by_id
except AttributeError:
try:
# gdata 2.0.15+
gdata.docs.client.DocsClient.get_resource_by_self_link
def get_resource_by_id_2_0_16(self, resource_id, **kwargs):
return self.GetResourceBySelfLink(
gdata.docs.client.RESOURCE_FEED_URI + ('/%s' % resource_id), **kwargs)
gdata.docs.client.DocsClient.get_resource_by_id = get_resource_by_id_2_0_16
except AttributeError:
# gdata 2.0.14- : alias get_resource_by_id()
gdata.docs.client.DocsClient.get_resource_by_id = gdata.docs.client.DocsClient.get_doc
try:
import atom.http_interface
_logger.info('GData lib version `%s` detected' % atom.http_interface.USER_AGENT)
except (ImportError, AttributeError):
_logger.debug('GData lib version could not be detected', exc_info=True)
except ImportError:
_logger.warning("Please install latest gdata-python-client from http://code.google.com/p/gdata-python-client/downloads/list")
class google_docs_ir_attachment(osv.osv):
_inherit = 'ir.attachment'
@@ -49,11 +76,12 @@ class google_docs_ir_attachment(osv.osv):
#get gmail password and login. We use default_get() instead of a create() followed by a read() on the
# google.login object, because it is easier. The keys 'user' and 'password' ahve to be passed in the dict
# but the values will be replaced by the user gmail password and login.
user_config = google_pool.default_get( cr, uid, {'user' : '' , 'password' : ''}, context=context)
user_config = google_pool.default_get(cr, uid, {'user' : '' , 'password' : ''}, context=context)
#login gmail account
client = google_pool.google_login( user_config['user'], user_config['password'], type='docs_client', context=context)
client = google_pool.google_login(user_config['user'], user_config['password'], type='docs_client', context=context)
if not client:
raise osv.except_osv( _('Google Docs Error!'), _("Check your google configuration in Users/Users/Synchronization tab."))
raise osv.except_osv(_('Google Docs Error!'), _("Check your google configuration in Users/Users/Synchronization tab."))
_logger.info('Logged into google docs as %s', user_config['user'])
return client
def create_empty_google_doc(self, cr, uid, res_model, res_id, context=None):
@@ -94,9 +122,9 @@ class google_docs_ir_attachment(osv.osv):
client = self._auth(cr, uid)
# fetch and copy the original document
try:
doc = client.GetDoc(gdoc_template_id)
doc = client.get_resource_by_id(gdoc_template_id)
#copy the document you choose in the configuration
copy_resource = client.copy(doc, name_gdocs)
copy_resource = client.copy_resource(doc, name_gdocs)
except:
raise osv.except_osv(_('Google Docs Error!'), _("Your resource id is not correct. You can find the id in the google docs URL."))
# create an ir.attachment
+133 -98
View File
@@ -4,17 +4,17 @@
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
"PO-Revision-Date: 2012-05-10 18:31+0000\n"
"Last-Translator: Raphael Collet (OpenERP) <Unknown>\n"
"Language-Team: \n"
"PO-Revision-Date: 2013-02-06 17:13+0000\n"
"Last-Translator: Ediz Duman <neps1192@gmail.com>\n"
"Language-Team: Turkish <tr@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-12-22 05:48+0000\n"
"X-Generator: Launchpad (build 16378)\n"
"X-Launchpad-Export-Date: 2013-02-07 04:53+0000\n"
"X-Generator: Launchpad (build 16477)\n"
#. module: hr
#: model:process.node,name:hr.process_node_openerpuser0
@@ -24,7 +24,7 @@ msgstr "Openerp kullanıcısı"
#. module: hr
#: field:hr.config.settings,module_hr_timesheet_sheet:0
msgid "Allow timesheets validation by managers"
msgstr ""
msgstr "Yöneticiler tarafından zamanÇizelgelerini onaylama İzin"
#. module: hr
#: field:hr.job,requirements:0
@@ -34,7 +34,7 @@ msgstr "Gereksinimler"
#. module: hr
#: model:process.transition,name:hr.process_transition_contactofemployee0
msgid "Link the employee to information"
msgstr "Çalışanı danışmaya bağla"
msgstr "Bilgi için personel bağlantısı"
#. module: hr
#: field:hr.employee,sinid:0
@@ -49,7 +49,7 @@ msgstr "SIN No"
#: model:ir.ui.menu,name:hr.menu_hr_root
#: model:ir.ui.menu,name:hr.menu_human_resources_configuration
msgid "Human Resources"
msgstr "İnsan Kaynakları"
msgstr "İnsanKaynakları"
#. module: hr
#: help:hr.employee,image_medium:0
@@ -62,28 +62,28 @@ msgstr ""
#. module: hr
#: view:hr.config.settings:0
msgid "Time Tracking"
msgstr ""
msgstr "Zaman Takip"
#. module: hr
#: view:hr.employee:0
#: view:hr.job:0
msgid "Group By..."
msgstr "Gruplandır..."
msgstr "Grupla İle..."
#. module: hr
#: model:ir.actions.act_window,name:hr.view_department_form_installer
msgid "Create Your Departments"
msgstr "Bölümlerinizi Oluşturun"
msgstr "Departmenlerini Oluştur"
#. module: hr
#: help:hr.job,no_of_employee:0
msgid "Number of employees currently occupying this job position."
msgstr ""
msgstr "Çalışan sayısı şu anda bu iş pozisyonu işgal."
#. module: hr
#: field:hr.config.settings,module_hr_evaluation:0
msgid "Organize employees periodic evaluation"
msgstr ""
msgstr "Çalışanları periyodik olarak değerlendirilmesi"
#. module: hr
#: view:hr.department:0
@@ -93,7 +93,7 @@ msgstr ""
#: field:hr.job,department_id:0
#: model:ir.model,name:hr.model_hr_department
msgid "Department"
msgstr "Bölüm"
msgstr "Departmen"
#. module: hr
#: field:hr.employee,work_email:0
@@ -106,11 +106,13 @@ msgid ""
"This field holds the image used as photo for the employee, limited to "
"1024x1024px."
msgstr ""
"Bu alan ile sınırlı çalışan için fotoğraf olarak kullanılan görüntü, "
"tutar1024x1024px."
#. module: hr
#: help:hr.config.settings,module_hr_holidays:0
msgid "This installs the module hr_holidays."
msgstr ""
msgstr "Bu modül hr_holidays yükler."
#. module: hr
#: view:hr.job:0
@@ -125,7 +127,7 @@ msgstr "Seçme İşleminde"
#. module: hr
#: field:hr.job,message_unread:0
msgid "Unread Messages"
msgstr ""
msgstr "Okunmamış mesajlar"
#. module: hr
#: field:hr.department,company_id:0
@@ -143,43 +145,43 @@ msgstr "Seçim için Bekleniyor"
#. module: hr
#: field:res.users,employee_ids:0
msgid "Related employees"
msgstr ""
msgstr "İlgili personeller"
#. module: hr
#: constraint:hr.employee.category:0
msgid "Error! You cannot create recursive Categories."
msgstr ""
msgstr "Hata! Sen özyinelemeli Kategoriler oluşturamazsınız."
#. module: hr
#: help:hr.config.settings,module_hr_recruitment:0
msgid "This installs the module hr_recruitment."
msgstr ""
msgstr "Bu modül hr_recruitment yükler."
#. module: hr
#: view:hr.employee:0
msgid "Birth"
msgstr ""
msgstr "Doğum"
#. module: hr
#: model:ir.actions.act_window,name:hr.open_view_categ_form
#: model:ir.ui.menu,name:hr.menu_view_employee_category_form
msgid "Employee Tags"
msgstr ""
msgstr "Personel Etiketi"
#. module: hr
#: view:hr.job:0
msgid "Launch Recruitement"
msgstr ""
msgstr "İşe Başlatma"
#. module: hr
#: model:process.transition,name:hr.process_transition_employeeuser0
msgid "Link a user to an employee"
msgstr "Kullanıcıyı bir çalışana bağla"
msgstr "Kullanıcıyı bir personele bağla"
#. module: hr
#: field:hr.department,parent_id:0
msgid "Parent Department"
msgstr "Ana Bölüm"
msgstr "Üst Departmen"
#. module: hr
#: model:ir.ui.menu,name:hr.menu_open_view_attendance_reason_config
@@ -194,32 +196,32 @@ msgstr "Evli"
#. module: hr
#: field:hr.job,message_ids:0
msgid "Messages"
msgstr ""
msgstr "Mesajlar"
#. module: hr
#: view:hr.config.settings:0
msgid "Talent Management"
msgstr ""
msgstr "Yetenek Yönetimi"
#. module: hr
#: help:hr.config.settings,module_hr_timesheet_sheet:0
msgid "This installs the module hr_timesheet_sheet."
msgstr ""
msgstr "Bu modül hr_timesheet_sheet yükler"
#. module: hr
#: view:hr.employee:0
msgid "Mobile:"
msgstr ""
msgstr "Mobile:"
#. module: hr
#: view:hr.employee:0
msgid "Position"
msgstr "Durum"
msgstr "Pozisyonu"
#. module: hr
#: help:hr.job,message_unread:0
msgid "If checked new messages require your attention."
msgstr ""
msgstr "Eğer seçilirse yeni mesajlar dikkat gerektirir."
#. module: hr
#: field:hr.employee,color:0
@@ -238,7 +240,7 @@ msgstr ""
#. module: hr
#: field:hr.employee,image_medium:0
msgid "Medium-sized photo"
msgstr ""
msgstr "Orta ölçekli fotoğraf"
#. module: hr
#: field:hr.employee,identification_id:0
@@ -274,24 +276,24 @@ msgstr "İş Tanımı"
#. module: hr
#: field:hr.employee,work_location:0
msgid "Office Location"
msgstr "Ofis Konumu"
msgstr "Ofis Lokasyon"
#. module: hr
#: field:hr.job,message_follower_ids:0
msgid "Followers"
msgstr ""
msgstr "Takipçileri"
#. module: hr
#: view:hr.employee:0
#: model:ir.model,name:hr.model_hr_employee
#: model:process.node,name:hr.process_node_employee0
msgid "Employee"
msgstr "Çalışan"
msgstr "Personel"
#. module: hr
#: model:process.node,note:hr.process_node_employeecontact0
msgid "Other information"
msgstr "Diğer Bilgiler"
msgstr "Diğer Bilgisi"
#. module: hr
#: help:hr.employee,image_small:0
@@ -309,12 +311,12 @@ msgstr "Doğum Tarihi"
#. module: hr
#: help:hr.job,no_of_recruitment:0
msgid "Number of new employees you expect to recruit."
msgstr ""
msgstr "İşe almak için beklediğiniz yeni personel sayısı."
#. module: hr
#: model:ir.actions.client,name:hr.action_client_hr_menu
msgid "Open HR Menu"
msgstr ""
msgstr "İK Menü Aç"
#. module: hr
#: help:hr.job,message_summary:0
@@ -322,6 +324,8 @@ msgid ""
"Holds the Chatter summary (number of messages, ...). This summary is "
"directly in html format in order to be inserted in kanban views."
msgstr ""
"Sohbetçi özeti (mesaj sayısı, ...) barındırır. Bu özetdoğrudan html "
"formatında sipariş kanban görünümlerinde eklenecek."
#. module: hr
#: help:hr.config.settings,module_account_analytic_analysis:0
@@ -329,6 +333,7 @@ msgid ""
"This installs the module account_analytic_analysis, which will install sales "
"management too."
msgstr ""
"Bu, modül hesabı analitik analizi yükler,satışa yükleyecekyönetimi çok."
#. module: hr
#: view:board.board:0
@@ -345,7 +350,7 @@ msgstr "İş"
#. module: hr
#: field:hr.job,no_of_employee:0
msgid "Current Number of Employees"
msgstr ""
msgstr "Personel Mevcut Sayısı"
#. module: hr
#: field:hr.department,member_ids:0
@@ -365,12 +370,12 @@ msgstr "Çalışan formu ve yapısı"
#. module: hr
#: field:hr.config.settings,module_hr_expense:0
msgid "Manage employees expenses"
msgstr ""
msgstr "Personel giderlerini yönet"
#. module: hr
#: view:hr.employee:0
msgid "Tel:"
msgstr ""
msgstr "Tel:"
#. module: hr
#: selection:hr.employee,marital:0
@@ -380,19 +385,19 @@ msgstr "Boşanmış"
#. module: hr
#: field:hr.employee.category,parent_id:0
msgid "Parent Category"
msgstr "Ana Kategori"
msgstr "Üst Kategori"
#. module: hr
#: view:hr.department:0
#: model:ir.actions.act_window,name:hr.open_module_tree_department
#: model:ir.ui.menu,name:hr.menu_hr_department_tree
msgid "Departments"
msgstr "Bölümler"
msgstr "Departmenler"
#. module: hr
#: model:process.node,name:hr.process_node_employeecontact0
msgid "Employee Contact"
msgstr "Çalışan İletişimi"
msgstr "Personel İletişimi"
#. module: hr
#: model:ir.actions.act_window,help:hr.action_hr_job
@@ -432,48 +437,48 @@ msgstr ""
#. module: hr
#: help:hr.config.settings,module_hr_evaluation:0
msgid "This installs the module hr_evaluation."
msgstr ""
msgstr "Bu modül hr_evaluation yükler."
#. module: hr
#: constraint:hr.employee:0
msgid "Error! You cannot create recursive hierarchy of Employee(s)."
msgstr ""
msgstr "Hata! Eğer Çalışan (ler) in yinelemeli hiyerarşi oluşturamaz."
#. module: hr
#: help:hr.config.settings,module_hr_attendance:0
msgid "This installs the module hr_attendance."
msgstr ""
msgstr "Bu modül hr_attendance yükler"
#. module: hr
#: field:hr.employee,image_small:0
msgid "Smal-sized photo"
msgstr ""
msgstr "Küçük boyutlu fotoğraf"
#. module: hr
#: view:hr.employee.category:0
#: model:ir.model,name:hr.model_hr_employee_category
msgid "Employee Category"
msgstr "Çalışan Kategorisi"
msgstr "Personel Kategorisi"
#. module: hr
#: field:hr.employee,category_ids:0
msgid "Tags"
msgstr ""
msgstr "Etiketler"
#. module: hr
#: help:hr.config.settings,module_hr_contract:0
msgid "This installs the module hr_contract."
msgstr ""
msgstr "Bu modül hr_contract yükler."
#. module: hr
#: view:hr.employee:0
msgid "Related User"
msgstr "Bağlı Kullanıcı"
msgstr "İlişkili Kullanıcı"
#. module: hr
#: view:hr.config.settings:0
msgid "or"
msgstr ""
msgstr "veya"
#. module: hr
#: field:hr.employee.category,name:0
@@ -483,17 +488,17 @@ msgstr "Kategori"
#. module: hr
#: view:hr.job:0
msgid "Stop Recruitment"
msgstr ""
msgstr "İşe-Alımı Durdur"
#. module: hr
#: field:hr.config.settings,module_hr_attendance:0
msgid "Install attendances feature"
msgstr ""
msgstr "Katılımcı özelliği yükleme"
#. module: hr
#: help:hr.employee,bank_account_id:0
msgid "Employee bank salary account"
msgstr "Çalışan maaş banka hesabı"
msgstr "Personel maaş banka hesabı"
#. module: hr
#: field:hr.department,note:0
@@ -503,7 +508,7 @@ msgstr "Not"
#. module: hr
#: model:ir.actions.act_window,name:hr.open_view_employee_tree
msgid "Employees Structure"
msgstr "Çalışanların Yapısı"
msgstr "Personel Yapısı"
#. module: hr
#: view:hr.employee:0
@@ -513,19 +518,19 @@ msgstr "İletişim Bilgisi"
#. module: hr
#: field:hr.config.settings,module_hr_holidays:0
msgid "Manage holidays, leaves and allocation requests"
msgstr ""
msgstr "Tatil, izin ve tahsis isteklerini yönet"
#. module: hr
#: field:hr.department,child_ids:0
msgid "Child Departments"
msgstr "Alt Bölümler"
msgstr "Alt Departmenler"
#. module: hr
#: view:hr.employee:0
#: view:hr.job:0
#: field:hr.job,state:0
msgid "Status"
msgstr "Durum"
msgstr "Durumu"
#. module: hr
#: field:hr.employee,otherid:0
@@ -535,17 +540,17 @@ msgstr "Diğer ID"
#. module: hr
#: model:process.process,name:hr.process_process_employeecontractprocess0
msgid "Employee Contract"
msgstr "Çalışan Sözleşmesi"
msgstr "Personel Sözleşmesi"
#. module: hr
#: view:hr.config.settings:0
msgid "Contracts"
msgstr ""
msgstr "Sözleşmeler"
#. module: hr
#: help:hr.job,message_ids:0
msgid "Messages and communication history"
msgstr ""
msgstr "Mesajlar ve iletişim geçmişi"
#. module: hr
#: field:hr.employee,ssnid:0
@@ -555,12 +560,12 @@ msgstr "SGK No"
#. module: hr
#: field:hr.job,message_is_follower:0
msgid "Is a Follower"
msgstr ""
msgstr "Bir Takipçisi mi"
#. module: hr
#: field:hr.config.settings,module_hr_recruitment:0
msgid "Manage the recruitment process"
msgstr ""
msgstr "İşe alım süreci yönetimi"
#. module: hr
#: view:hr.employee:0
@@ -570,12 +575,12 @@ msgstr "Etkin"
#. module: hr
#: view:hr.config.settings:0
msgid "Human Resources Management"
msgstr ""
msgstr "İnsan Kaynakları Yönetimi"
#. module: hr
#: view:hr.config.settings:0
msgid "Install your country's payroll"
msgstr ""
msgstr "Ülkenizin bordrosunu yükleyin"
#. module: hr
#: field:hr.employee,bank_account_id:0
@@ -590,7 +595,7 @@ msgstr "Firmalar"
#. module: hr
#: field:hr.job,message_summary:0
msgid "Summary"
msgstr ""
msgstr "Özet"
#. module: hr
#: model:process.transition,note:hr.process_transition_contactofemployee0
@@ -613,21 +618,30 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" Yeni bir personel eklemek için tıklayınız.\n"
" </p><p>\n"
" OpenERP personel ekranda sadece hızlı bir bakış ile, sen\n"
" Kolayca her biri için gereken tüm bilgileri bulabilirsiniz "
"person;\n"
" kişisel verileri, iş pozisyonu, durumu, vb\n"
" </p>\n"
" "
#. module: hr
#: view:hr.employee:0
msgid "HR Settings"
msgstr ""
msgstr "İK Ayarları"
#. module: hr
#: view:hr.employee:0
msgid "Citizenship & Other Info"
msgstr ""
msgstr "Vatandaşlık & Diğer Bilgisi"
#. module: hr
#: constraint:hr.department:0
msgid "Error! You cannot create recursive departments."
msgstr ""
msgstr "Hata! Sen özyinelemeli bölüm oluşturamazsınız."
#. module: hr
#: field:hr.employee,address_id:0
@@ -637,7 +651,7 @@ msgstr "İş Adresi"
#. module: hr
#: view:hr.employee:0
msgid "Public Information"
msgstr ""
msgstr "Genel Bilgisi"
#. module: hr
#: field:hr.employee,marital:0
@@ -652,7 +666,7 @@ msgstr "ir.actions.act_window"
#. module: hr
#: field:hr.employee,last_login:0
msgid "Latest Connection"
msgstr ""
msgstr "Son Bağlantı"
#. module: hr
#: field:hr.employee,image:0
@@ -662,7 +676,7 @@ msgstr "Fotoğraf"
#. module: hr
#: view:hr.config.settings:0
msgid "Cancel"
msgstr ""
msgstr "İptal"
#. module: hr
#: model:ir.actions.act_window,help:hr.open_module_tree_department
@@ -677,17 +691,27 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" Bir departman oluşturmak için tıklayın.\n"
" </p><p>\n"
" OpenERP departmanı yapısı tümünü yönetmek için kullanılır "
"belgeler\n"
" departmanlar tarafından personel ile ilgili:giderleri, "
"zamanÇizelgeleri,\n"
" izinler ve tatiller, eleman alımları, vb\n"
" </p>\n"
" "
#. module: hr
#: help:hr.config.settings,module_hr_timesheet:0
msgid "This installs the module hr_timesheet."
msgstr ""
msgstr "Bu modül hr_timesheet yükler."
#. module: hr
#: help:hr.job,expected_employees:0
msgid ""
"Expected number of employees for this job position after new recruitment."
msgstr ""
msgstr "Yeni işe alım sonra bu iş pozisyonu için beklenen pesonel sayısı."
#. module: hr
#: model:ir.actions.act_window,help:hr.view_department_form_installer
@@ -702,11 +726,21 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" Yeni bir departman tanımlamak için tıklayın.\n"
" </p><p>\n"
" Sizin departmanlar yapısı tüm belgeleri yönetmek için "
"kullanılır\n"
" departmanlar tarafından personel ile ilgili: giderleri ve "
"zamanÇizelgeleri,\n"
" izinler ve tatiller, eleman alımları, vb\n"
" </p>\n"
" "
#. module: hr
#: view:hr.employee:0
msgid "Personal Information"
msgstr "Kişisel Bilgiler"
msgstr "Kişisel Bilgisi"
#. module: hr
#: field:hr.employee,city:0
@@ -721,23 +755,24 @@ msgstr "Pasaport No"
#. module: hr
#: field:hr.employee,mobile_phone:0
msgid "Work Mobile"
msgstr "İş Cep"
msgstr "İş Mobil"
#. module: hr
#: selection:hr.job,state:0
msgid "Recruitement in Progress"
msgstr ""
msgstr "DevamEden İşeAlım"
#. module: hr
#: field:hr.config.settings,module_account_analytic_analysis:0
msgid ""
"Allow invoicing based on timesheets (the sale application will be installed)"
msgstr ""
"ZamanÇizelgeleri dayalı faturalama İzni (satış uygulaması yüklenecektir)"
#. module: hr
#: view:hr.employee.category:0
msgid "Employees Categories"
msgstr "Çalışanların Kategorileri"
msgstr "Personel Kategorileri"
#. module: hr
#: field:hr.employee,address_home_id:0
@@ -747,7 +782,7 @@ msgstr "Ev Adresi"
#. module: hr
#: field:hr.config.settings,module_hr_timesheet:0
msgid "Manage timesheets"
msgstr ""
msgstr "ZamanÇizelgelerini Yönet"
#. module: hr
#: model:ir.actions.act_window,name:hr.open_payroll_modules
@@ -772,17 +807,17 @@ msgstr "Durumunda"
#. module: hr
#: help:hr.config.settings,module_hr_payroll:0
msgid "This installs the module hr_payroll."
msgstr ""
msgstr "Bu modül hr_payroll yükler."
#. module: hr
#: field:hr.config.settings,module_hr_contract:0
msgid "Record contracts per employee"
msgstr ""
msgstr "Personel başına kaydı sözleşmeleri"
#. module: hr
#: view:hr.department:0
msgid "department"
msgstr "bölüm"
msgstr "departmen"
#. module: hr
#: field:hr.employee,country_id:0
@@ -792,7 +827,7 @@ msgstr "Uyruğu"
#. module: hr
#: view:hr.config.settings:0
msgid "Additional Features"
msgstr ""
msgstr "Ek Özellikler"
#. module: hr
#: field:hr.employee,notes:0
@@ -802,7 +837,7 @@ msgstr "Notlar"
#. module: hr
#: model:ir.actions.act_window,name:hr.action2
msgid "Subordinate Hierarchy"
msgstr ""
msgstr "Alt Hiyerarşisi"
#. module: hr
#: field:hr.employee,resource_id:0
@@ -830,7 +865,7 @@ msgstr "Cinsiyeti"
#: model:ir.actions.act_window,name:hr.open_view_employee_list_my
#: model:ir.ui.menu,name:hr.menu_open_view_employee_list_my
msgid "Employees"
msgstr "Çalışanlar"
msgstr "Personeller"
#. module: hr
#: help:hr.employee,sinid:0
@@ -840,28 +875,28 @@ msgstr "Sosyal Sigorta Numarası"
#. module: hr
#: field:hr.department,name:0
msgid "Department Name"
msgstr "Bölüm Adı"
msgstr "Departmen Adı"
#. module: hr
#: model:ir.ui.menu,name:hr.menu_hr_reporting_timesheet
msgid "Reports"
msgstr ""
msgstr "Raporlar"
#. module: hr
#: field:hr.config.settings,module_hr_payroll:0
msgid "Manage payroll"
msgstr ""
msgstr "Bordro yönet"
#. module: hr
#: view:hr.config.settings:0
#: model:ir.actions.act_window,name:hr.action_human_resources_configuration
msgid "Configure Human Resources"
msgstr ""
msgstr "İnsan Kaynakları Yapılandırma"
#. module: hr
#: selection:hr.job,state:0
msgid "No Recruitment"
msgstr ""
msgstr "İşe Alım Yok"
#. module: hr
#: help:hr.employee,ssnid:0
@@ -881,7 +916,7 @@ msgstr "Oturum aç"
#. module: hr
#: field:hr.job,expected_employees:0
msgid "Total Forecasted Employees"
msgstr ""
msgstr "Toplam Tahmini Personel"
#. module: hr
#: help:hr.job,state:0
@@ -893,13 +928,13 @@ msgstr ""
#. module: hr
#: model:ir.model,name:hr.model_res_users
msgid "Users"
msgstr ""
msgstr "Kullanıcılar"
#. module: hr
#: model:ir.actions.act_window,name:hr.action_hr_job
#: model:ir.ui.menu,name:hr.menu_hr_job
msgid "Job Positions"
msgstr "İş Durumları"
msgstr "İş Pozisyonları"
#. module: hr
#: model:ir.actions.act_window,help:hr.open_board_hr
@@ -934,7 +969,7 @@ msgstr "Her firma için iş durumu adı benzersiz olmalı!"
#. module: hr
#: help:hr.config.settings,module_hr_expense:0
msgid "This installs the module hr_expense."
msgstr ""
msgstr "Bu modül hr_expense yükler."
#. module: hr
#: model:ir.model,name:hr.model_hr_config_settings
@@ -961,7 +996,7 @@ msgstr "Emrindekiler"
#. module: hr
#: view:hr.config.settings:0
msgid "Apply"
msgstr ""
msgstr "Uygula"
#~ msgid "Invalid XML for View Architecture!"
#~ msgstr "Görüntüleme mimarisi için Geçersiz XML"
+1 -1
View File
@@ -27,7 +27,7 @@
'sequence': 31,
'website': 'http://www.openerp.com',
'summary': 'Periodical Evaluations, Appraisals, Surveys',
'images': ['images/hr_evaluation_analysis.jpeg','images/hr_evaluation.jpeg'],
'images': ['images/hr_evaluation_analysis.jpeg','images/hr_evaluation.jpeg','images/hr_interview_requests.jpeg'],
'depends': ['hr','base_calendar','survey'],
'description': """
Periodical Employees evaluation and appraisals
+1
View File
@@ -353,6 +353,7 @@ class hr_applicant(base_stage, osv.Model):
'email_from': msg.get('from'),
'email_cc': msg.get('cc'),
'user_id': False,
'partner_id': msg.get('author_id', False),
}
if msg.get('priority'):
defaults['priority'] = msg.get('priority')
@@ -470,11 +470,13 @@
<record id="mt_stage_changed" model="mail.message.subtype">
<field name="name">Stage Changed</field>
<field name="res_model">hr.applicant</field>
<field name="default" eval="False"/>
<field name="description">Stage changed</field>
</record>
<record id="mt_applicant_hired" model="mail.message.subtype">
<field name="name">Applicant Hired</field>
<field name="res_model">hr.applicant</field>
<field name="default" eval="False"/>
<field name="description">Applicant hired</field>
</record>
<record id="mt_applicant_refused" model="mail.message.subtype">
+714
View File
@@ -0,0 +1,714 @@
# English (United Kingdom) translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
"PO-Revision-Date: 2013-02-06 15:10+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: English (United Kingdom) <en_GB@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: 2013-02-07 04:53+0000\n"
"X-Generator: Launchpad (build 16477)\n"
#. module: hr_timesheet
#: model:ir.actions.act_window,help:hr_timesheet.act_analytic_cost_revenue
msgid ""
"<p>\n"
" No activity yet on this contract.\n"
" </p><p>\n"
" In OpenERP, contracts and projects are implemented using\n"
" analytic account. So, you can track costs and revenues to "
"analyse\n"
" your margins easily.\n"
" </p><p>\n"
" Costs will be created automatically when you register "
"supplier\n"
" invoices, expenses or timesheets.\n"
" </p><p>\n"
" Revenues will be created automatically when you create "
"customer\n"
" invoices. Customer invoices can be created based on sale "
"orders\n"
" (fixed price invoices), on timesheets (based on the work "
"done) or\n"
" on expenses (e.g. reinvoicing of travel costs).\n"
" </p>\n"
" "
msgstr ""
"<p>\n"
" No activity yet on this contract.\n"
" </p><p>\n"
" In OpenERP, contracts and projects are implemented using\n"
" analytic account. So, you can track costs and revenues to "
"analyse\n"
" your margins easily.\n"
" </p><p>\n"
" Costs will be created automatically when you register "
"supplier\n"
" invoices, expenses or timesheets.\n"
" </p><p>\n"
" Revenues will be created automatically when you create "
"customer\n"
" invoices. Customer invoices can be created based on sale "
"orders\n"
" (fixed price invoices), on timesheets (based on the work "
"done) or\n"
" on expenses (e.g. reinvoicing of travel costs).\n"
" </p>\n"
" "
#. module: hr_timesheet
#: code:addons/hr_timesheet/report/user_timesheet.py:44
#: code:addons/hr_timesheet/report/users_timesheet.py:77
#, python-format
msgid "Wed"
msgstr "Wed"
#. module: hr_timesheet
#: view:hr.sign.out.project:0
msgid "(Keep empty for current_time)"
msgstr "(Keep empty for current_time)"
#. module: hr_timesheet
#: view:hr.analytic.timesheet:0
msgid "Group By..."
msgstr "Group By..."
#. module: hr_timesheet
#: model:ir.actions.act_window,help:hr_timesheet.action_hr_timesheet_sign_in
msgid ""
"Employees can encode their time spent on the different projects. A project "
"is an analytic account and the time spent on a project generate costs on the "
"analytic account. This feature allows to record at the same time the "
"attendance and the timesheet."
msgstr ""
"Employees can encode their time spent on the different projects. A project "
"is an analytic account and the time spent on a project generate costs on the "
"analytic account. This feature allows to record at the same time the "
"attendance and the timesheet."
#. module: hr_timesheet
#: field:hr.employee,uom_id:0
msgid "Unit of Measure"
msgstr "Unit of Measure"
#. module: hr_timesheet
#: field:hr.employee,journal_id:0
msgid "Analytic Journal"
msgstr "Analytic Journal"
#. module: hr_timesheet
#: view:hr.sign.out.project:0
msgid "Stop Working"
msgstr "Stop Working"
#. module: hr_timesheet
#: model:ir.actions.act_window,name:hr_timesheet.action_hr_timesheet_employee
#: model:ir.ui.menu,name:hr_timesheet.menu_hr_timesheet_employee
msgid "Employee Timesheet"
msgstr "Employee Timesheet"
#. module: hr_timesheet
#: view:hr.analytic.timesheet:0
#: model:ir.ui.menu,name:hr_timesheet.menu_hr_timesheet_reports
msgid "Timesheet"
msgstr "Timesheet"
#. module: hr_timesheet
#: code:addons/hr_timesheet/wizard/hr_timesheet_print_employee.py:43
#, python-format
msgid "Please define employee for this user!"
msgstr "Please define employee for this user!"
#. module: hr_timesheet
#: code:addons/hr_timesheet/report/user_timesheet.py:44
#: code:addons/hr_timesheet/report/users_timesheet.py:77
#, python-format
msgid "Mon"
msgstr "Mon"
#. module: hr_timesheet
#: view:hr.sign.in.project:0
msgid "Sign in"
msgstr "Sign in"
#. module: hr_timesheet
#: code:addons/hr_timesheet/report/user_timesheet.py:44
#: code:addons/hr_timesheet/report/users_timesheet.py:77
#, python-format
msgid "Fri"
msgstr "Fri"
#. module: hr_timesheet
#: view:hr.analytic.timesheet:0
#: model:ir.actions.act_window,name:hr_timesheet.act_hr_timesheet_line_evry1_all_form
#: model:ir.ui.menu,name:hr_timesheet.menu_hr_working_hours
msgid "Timesheet Activities"
msgstr "Timesheet Activities"
#. module: hr_timesheet
#: field:hr.sign.out.project,analytic_amount:0
msgid "Minimum Analytic Amount"
msgstr "Minimum Analytic Amount"
#. module: hr_timesheet
#: view:hr.analytical.timesheet.employee:0
msgid "Monthly Employee Timesheet"
msgstr "Monthly Employee Timesheet"
#. module: hr_timesheet
#: view:hr.sign.out.project:0
msgid "Work done in the last period"
msgstr "Work done in the last period"
#. module: hr_timesheet
#: field:hr.sign.in.project,name:0
#: field:hr.sign.out.project,name:0
msgid "Employees name"
msgstr "Employees name"
#. module: hr_timesheet
#: field:hr.sign.out.project,account_id:0
msgid "Project / Analytic Account"
msgstr "Project / Analytic Account"
#. module: hr_timesheet
#: model:ir.model,name:hr_timesheet.model_hr_analytical_timesheet_users
msgid "Print Employees Timesheet"
msgstr "Print Employees Timesheet"
#. module: hr_timesheet
#: code:addons/hr_timesheet/wizard/hr_timesheet_sign_in_out.py:132
#, python-format
msgid "Please define employee for your user."
msgstr "Please define employee for your user."
#. module: hr_timesheet
#: model:ir.actions.act_window,name:hr_timesheet.act_analytic_cost_revenue
msgid "Costs & Revenues"
msgstr "Costs & Revenues"
#. module: hr_timesheet
#: code:addons/hr_timesheet/report/user_timesheet.py:44
#: code:addons/hr_timesheet/report/users_timesheet.py:77
#, python-format
msgid "Tue"
msgstr "Tue"
#. module: hr_timesheet
#: model:ir.model,name:hr_timesheet.model_account_analytic_account
msgid "Analytic Account"
msgstr "Analytic Account"
#. module: hr_timesheet
#: view:account.analytic.account:0
msgid "Costs and Revenues"
msgstr "Costs and Revenues"
#. module: hr_timesheet
#: code:addons/hr_timesheet/hr_timesheet.py:144
#: code:addons/hr_timesheet/hr_timesheet.py:149
#: code:addons/hr_timesheet/hr_timesheet.py:180
#: code:addons/hr_timesheet/hr_timesheet.py:182
#: code:addons/hr_timesheet/wizard/hr_timesheet_print_employee.py:43
#, python-format
msgid "Warning!"
msgstr "Warning!"
#. module: hr_timesheet
#: field:hr.analytic.timesheet,partner_id:0
msgid "Partner"
msgstr "Partner"
#. module: hr_timesheet
#: code:addons/hr_timesheet/report/user_timesheet.py:44
#: code:addons/hr_timesheet/report/users_timesheet.py:77
#, python-format
msgid "Sat"
msgstr "Sat"
#. module: hr_timesheet
#: code:addons/hr_timesheet/report/user_timesheet.py:44
#: code:addons/hr_timesheet/report/users_timesheet.py:77
#, python-format
msgid "Sun"
msgstr "Sun"
#. module: hr_timesheet
#: xsl:hr.analytical.timesheet:0
msgid "Sum"
msgstr "Sum"
#. module: hr_timesheet
#: view:hr.analytic.timesheet:0
msgid "Analytic account"
msgstr "Analytic account"
#. module: hr_timesheet
#: model:ir.actions.act_window,help:hr_timesheet.act_hr_timesheet_line_evry1_all_form
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to record activities.\n"
" </p><p>\n"
" You can register and track your workings hours by project "
"every\n"
" day. Every time spent on a project will become a cost in "
"the\n"
" analytic accounting/contract and can be re-invoiced to\n"
" customers if required.\n"
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to record activities.\n"
" </p><p>\n"
" You can register and track your workings hours by project "
"every\n"
" day. Every time spent on a project will become a cost in "
"the\n"
" analytic accounting/contract and can be re-invoiced to\n"
" customers if required.\n"
" </p>\n"
" "
#. module: hr_timesheet
#: view:hr.analytical.timesheet.employee:0
#: view:hr.analytical.timesheet.users:0
msgid "Print"
msgstr "Print"
#. module: hr_timesheet
#: help:account.analytic.account,use_timesheets:0
msgid "Check this field if this project manages timesheets"
msgstr "Check this field if this project manages timesheets"
#. module: hr_timesheet
#: view:hr.analytical.timesheet.users:0
msgid "Monthly Employees Timesheet"
msgstr "Monthly Employees Timesheet"
#. module: hr_timesheet
#: code:addons/hr_timesheet/report/user_timesheet.py:41
#: code:addons/hr_timesheet/report/users_timesheet.py:73
#: selection:hr.analytical.timesheet.employee,month:0
#: selection:hr.analytical.timesheet.users,month:0
#, python-format
msgid "July"
msgstr "July"
#. module: hr_timesheet
#: field:hr.sign.in.project,date:0
#: field:hr.sign.out.project,date_start:0
msgid "Starting Date"
msgstr "Starting Date"
#. module: hr_timesheet
#: code:addons/hr_timesheet/wizard/hr_timesheet_sign_in_out.py:77
#, python-format
msgid "Please define cost unit for this employee."
msgstr "Please define cost unit for this employee."
#. module: hr_timesheet
#: help:hr.employee,product_id:0
msgid "Specifies employee's designation as a product with type 'service'."
msgstr "Specifies employee's designation as a product with type 'service'."
#. module: hr_timesheet
#: code:addons/hr_timesheet/hr_timesheet.py:182
#, python-format
msgid ""
"No analytic account is defined on the project.\n"
"Please set one or we cannot automatically fill the timesheet."
msgstr ""
"No analytic account is defined on the project.\n"
"Please set one or we cannot automatically fill the timesheet."
#. module: hr_timesheet
#: view:hr.analytic.timesheet:0
msgid "Total cost"
msgstr "Total cost"
#. module: hr_timesheet
#: code:addons/hr_timesheet/hr_timesheet.py:180
#, python-format
msgid ""
"No 'Analytic Journal' is defined for employee %s \n"
"Define an employee for the selected user and assign an 'Analytic Journal'!"
msgstr ""
"No 'Analytic Journal' is defined for employee %s \n"
"Define an employee for the selected user and assign an 'Analytic Journal'!"
#. module: hr_timesheet
#: code:addons/hr_timesheet/report/user_timesheet.py:41
#: code:addons/hr_timesheet/report/users_timesheet.py:73
#: selection:hr.analytical.timesheet.employee,month:0
#: selection:hr.analytical.timesheet.users,month:0
#, python-format
msgid "September"
msgstr "September"
#. module: hr_timesheet
#: code:addons/hr_timesheet/report/user_timesheet.py:41
#: code:addons/hr_timesheet/report/users_timesheet.py:73
#: selection:hr.analytical.timesheet.employee,month:0
#: selection:hr.analytical.timesheet.users,month:0
#, python-format
msgid "December"
msgstr "December"
#. module: hr_timesheet
#: field:hr.analytical.timesheet.users,employee_ids:0
msgid "employees"
msgstr "employees"
#. module: hr_timesheet
#: field:hr.analytical.timesheet.employee,month:0
#: field:hr.analytical.timesheet.users,month:0
msgid "Month"
msgstr "Month"
#. module: hr_timesheet
#: field:hr.sign.out.project,info:0
msgid "Work Description"
msgstr "Work Description"
#. module: hr_timesheet
#: view:hr.analytical.timesheet.employee:0
#: view:hr.analytical.timesheet.users:0
#: view:hr.sign.in.project:0
#: view:hr.sign.out.project:0
msgid "or"
msgstr "or"
#. module: hr_timesheet
#: xsl:hr.analytical.timesheet:0
msgid "Timesheet by Employee"
msgstr "Timesheet by Employee"
#. module: hr_timesheet
#: model:ir.actions.report.xml,name:hr_timesheet.report_user_timesheet
msgid "Employee timesheet"
msgstr "Employee timesheet"
#. module: hr_timesheet
#: model:ir.actions.act_window,name:hr_timesheet.action_hr_timesheet_sign_in
#: model:ir.actions.act_window,name:hr_timesheet.action_hr_timesheet_sign_out
msgid "Sign in / Sign out by project"
msgstr "Sign in / Sign out by project"
#. module: hr_timesheet
#: model:ir.actions.act_window,name:hr_timesheet.action_define_analytic_structure
msgid "Define your Analytic Structure"
msgstr "Define your Analytic Structure"
#. module: hr_timesheet
#: code:addons/hr_timesheet/wizard/hr_timesheet_sign_in_out.py:146
#: view:hr.sign.in.project:0
#, python-format
msgid "Sign in / Sign out"
msgstr "Sign in / Sign out"
#. module: hr_timesheet
#: view:hr.sign.in.project:0
msgid "(Keep empty for current time)"
msgstr "(Keep empty for current time)"
#. module: hr_timesheet
#: field:account.analytic.account,use_timesheets:0
#: view:hr.employee:0
msgid "Timesheets"
msgstr "Timesheets"
#. module: hr_timesheet
#: model:ir.actions.act_window,help:hr_timesheet.action_define_analytic_structure
msgid ""
"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."
msgstr ""
"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."
#. module: hr_timesheet
#: field:hr.analytic.timesheet,line_id:0
msgid "Analytic Line"
msgstr "Analytic Line"
#. module: hr_timesheet
#: code:addons/hr_timesheet/report/user_timesheet.py:41
#: code:addons/hr_timesheet/report/users_timesheet.py:73
#: selection:hr.analytical.timesheet.employee,month:0
#: selection:hr.analytical.timesheet.users,month:0
#, python-format
msgid "August"
msgstr "August"
#. module: hr_timesheet
#: code:addons/hr_timesheet/hr_timesheet.py:149
#, python-format
msgid ""
"No analytic journal defined for '%s'.\n"
"You should assign an analytic journal on the employee form."
msgstr ""
"No analytic journal defined for '%s'.\n"
"You should assign an analytic journal on the employee form."
#. module: hr_timesheet
#: code:addons/hr_timesheet/report/user_timesheet.py:41
#: code:addons/hr_timesheet/report/users_timesheet.py:73
#: selection:hr.analytical.timesheet.employee,month:0
#: selection:hr.analytical.timesheet.users,month:0
#, python-format
msgid "June"
msgstr "June"
#. module: hr_timesheet
#: field:hr.sign.in.project,state:0
#: field:hr.sign.out.project,state:0
msgid "Current Status"
msgstr "Current Status"
#. module: hr_timesheet
#: view:hr.analytic.timesheet:0
msgid "Date"
msgstr "Date"
#. module: hr_timesheet
#: code:addons/hr_timesheet/report/user_timesheet.py:41
#: code:addons/hr_timesheet/report/users_timesheet.py:73
#: selection:hr.analytical.timesheet.employee,month:0
#: selection:hr.analytical.timesheet.users,month:0
#, python-format
msgid "November"
msgstr "November"
#. module: hr_timesheet
#: field:hr.sign.out.project,date:0
msgid "Closing Date"
msgstr "Closing Date"
#. module: hr_timesheet
#: code:addons/hr_timesheet/report/user_timesheet.py:41
#: code:addons/hr_timesheet/report/users_timesheet.py:73
#: selection:hr.analytical.timesheet.employee,month:0
#: selection:hr.analytical.timesheet.users,month:0
#, python-format
msgid "October"
msgstr "October"
#. module: hr_timesheet
#: code:addons/hr_timesheet/report/user_timesheet.py:41
#: code:addons/hr_timesheet/report/users_timesheet.py:73
#: selection:hr.analytical.timesheet.employee,month:0
#: selection:hr.analytical.timesheet.users,month:0
#, python-format
msgid "January"
msgstr "January"
#. module: hr_timesheet
#: code:addons/hr_timesheet/report/user_timesheet.py:44
#: code:addons/hr_timesheet/report/users_timesheet.py:77
#, python-format
msgid "Thu"
msgstr "Thu"
#. module: hr_timesheet
#: view:hr.sign.in.project:0
#: view:hr.sign.out.project:0
msgid "Sign In/Out by Project"
msgstr "Sign In/Out by Project"
#. module: hr_timesheet
#: model:ir.model,name:hr_timesheet.model_hr_analytical_timesheet_employee
msgid "Print Employee Timesheet & Print My Timesheet"
msgstr "Print Employee Timesheet & Print My Timesheet"
#. module: hr_timesheet
#: field:hr.sign.in.project,emp_id:0
#: field:hr.sign.out.project,emp_id:0
msgid "Employee ID"
msgstr ""
#. module: hr_timesheet
#: view:hr.analytical.timesheet.users:0
msgid "Period"
msgstr ""
#. module: hr_timesheet
#: view:hr.sign.out.project:0
msgid "General Information"
msgstr ""
#. module: hr_timesheet
#: view:hr.analytical.timesheet.employee:0
#: view:hr.analytical.timesheet.users:0
#: view:hr.sign.in.project:0
#: view:hr.sign.out.project:0
msgid "Cancel"
msgstr ""
#. module: hr_timesheet
#: xsl:hr.analytical.timesheet_users:0
#: model:ir.actions.act_window,name:hr_timesheet.action_hr_timesheet_users
#: model:ir.actions.report.xml,name:hr_timesheet.report_users_timesheet
#: model:ir.ui.menu,name:hr_timesheet.menu_hr_timesheet_users
msgid "Employees Timesheet"
msgstr ""
#. module: hr_timesheet
#: view:hr.analytic.timesheet:0
msgid "Information"
msgstr ""
#. module: hr_timesheet
#: field:hr.analytical.timesheet.employee,employee_id:0
#: model:ir.model,name:hr_timesheet.model_hr_employee
msgid "Employee"
msgstr ""
#. module: hr_timesheet
#: view:hr.sign.in.project:0
msgid ""
"Employees can encode their time spent on the different projects they are "
"assigned on. A project is an analytic account and the time spent on a "
"project generates costs on the analytic account. This feature allows to "
"record at the same time the attendance and the timesheet."
msgstr ""
#. module: hr_timesheet
#: field:hr.sign.in.project,server_date:0
#: field:hr.sign.out.project,server_date:0
msgid "Current Date"
msgstr ""
#. module: hr_timesheet
#: model:ir.model,name:hr_timesheet.model_hr_analytic_timesheet
msgid "Timesheet Line"
msgstr ""
#. module: hr_timesheet
#: view:hr.analytic.timesheet:0
#: field:hr.employee,product_id:0
msgid "Product"
msgstr ""
#. module: hr_timesheet
#: view:hr.analytic.timesheet:0
msgid "Users"
msgstr ""
#. module: hr_timesheet
#: code:addons/hr_timesheet/report/user_timesheet.py:41
#: code:addons/hr_timesheet/report/users_timesheet.py:73
#: selection:hr.analytical.timesheet.employee,month:0
#: selection:hr.analytical.timesheet.users,month:0
#, python-format
msgid "May"
msgstr ""
#. module: hr_timesheet
#: view:hr.analytic.timesheet:0
msgid "Total time"
msgstr ""
#. module: hr_timesheet
#: view:hr.sign.in.project:0
msgid "(local time on the server side)"
msgstr ""
#. module: hr_timesheet
#: model:ir.model,name:hr_timesheet.model_hr_sign_in_project
msgid "Sign In By Project"
msgstr ""
#. module: hr_timesheet
#: code:addons/hr_timesheet/report/user_timesheet.py:41
#: code:addons/hr_timesheet/report/users_timesheet.py:73
#: selection:hr.analytical.timesheet.employee,month:0
#: selection:hr.analytical.timesheet.users,month:0
#, python-format
msgid "February"
msgstr ""
#. module: hr_timesheet
#: model:ir.model,name:hr_timesheet.model_hr_sign_out_project
msgid "Sign Out By Project"
msgstr ""
#. module: hr_timesheet
#: code:addons/hr_timesheet/hr_timesheet.py:144
#, python-format
msgid ""
"Please create an employee for this user, using the menu: Human Resources > "
"Employees."
msgstr ""
#. module: hr_timesheet
#: view:hr.analytical.timesheet.users:0
msgid "Employees"
msgstr ""
#. module: hr_timesheet
#: code:addons/hr_timesheet/report/user_timesheet.py:41
#: code:addons/hr_timesheet/report/users_timesheet.py:73
#: selection:hr.analytical.timesheet.employee,month:0
#: selection:hr.analytical.timesheet.users,month:0
#, python-format
msgid "March"
msgstr ""
#. module: hr_timesheet
#: code:addons/hr_timesheet/report/user_timesheet.py:41
#: code:addons/hr_timesheet/report/users_timesheet.py:73
#: selection:hr.analytical.timesheet.employee,month:0
#: selection:hr.analytical.timesheet.users,month:0
#, python-format
msgid "April"
msgstr ""
#. module: hr_timesheet
#: code:addons/hr_timesheet/wizard/hr_timesheet_sign_in_out.py:77
#: code:addons/hr_timesheet/wizard/hr_timesheet_sign_in_out.py:132
#, python-format
msgid "User Error!"
msgstr ""
#. module: hr_timesheet
#: view:hr.sign.in.project:0
msgid "Start Working"
msgstr ""
#. module: hr_timesheet
#: field:hr.analytical.timesheet.employee,year:0
#: field:hr.analytical.timesheet.users,year:0
msgid "Year"
msgstr ""
#. module: hr_timesheet
#: view:hr.analytic.timesheet:0
msgid "Duration"
msgstr ""
#. module: hr_timesheet
#: view:hr.analytic.timesheet:0
msgid "Accounting"
msgstr ""
#. module: hr_timesheet
#: xsl:hr.analytical.timesheet:0
#: xsl:hr.analytical.timesheet_users:0
msgid "Total"
msgstr ""
#. module: hr_timesheet
#: view:hr.sign.out.project:0
msgid "Change Work"
msgstr ""
+1 -1
View File
@@ -45,7 +45,7 @@ The validation can be configured in the company:
""",
'author': 'OpenERP SA',
'website': 'http://www.openerp.com',
'images': ['images/hr_my_timesheet.jpeg','images/hr_timesheet_analysis.jpeg','images/hr_timesheet_sheet_analysis.jpeg','images/hr_timesheets.jpeg'],
'images': ['images/hr_my_current_timesheet.jpeg','images/hr_timesheet_analysis.jpeg','images/hr_timesheet_sheet_analysis.jpeg','images/hr_timesheet_activity.jpeg'],
'depends': ['hr_timesheet', 'hr_timesheet_invoice', 'process'],
'data': [
'security/ir.model.access.csv',
+148
View File
@@ -0,0 +1,148 @@
# Turkish translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:53+0000\n"
"PO-Revision-Date: 2013-02-06 20:52+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Turkish <tr@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: 2013-02-07 04:53+0000\n"
"X-Generator: Launchpad (build 16477)\n"
#. module: l10n_be_hr_payroll
#: help:hr.employee,disabled_spouse_bool:0
msgid "if recipient spouse is declared disabled by law"
msgstr "if recipient spouse is declared disabled by law"
#. module: l10n_be_hr_payroll
#: help:hr.employee,disabled_children_bool:0
msgid "if recipient children is/are declared disabled by law"
msgstr "if recipient children is/are declared disabled by law"
#. module: l10n_be_hr_payroll
#: field:hr.contract,misc_onss_deduction:0
msgid "Miscellaneous exempt ONSS "
msgstr "Miscellaneous exempt ONSS "
#. module: l10n_be_hr_payroll
#: model:ir.model,name:l10n_be_hr_payroll.model_hr_employee
msgid "Employee"
msgstr "Employee"
#. module: l10n_be_hr_payroll
#: field:hr.employee,disabled_spouse_bool:0
msgid "Disabled Spouse"
msgstr "Disabled Spouse"
#. module: l10n_be_hr_payroll
#: field:hr.contract,retained_net_amount:0
msgid "Net retained "
msgstr "Net retained "
#. module: l10n_be_hr_payroll
#: field:hr.employee,resident_bool:0
msgid "Nonresident"
msgstr "Nonresident"
#. module: l10n_be_hr_payroll
#: help:hr.employee,resident_bool:0
msgid "if recipient lives in a foreign country"
msgstr "if recipient lives in a foreign country"
#. module: l10n_be_hr_payroll
#: view:hr.employee:0
msgid "if spouse has professionnel income or not"
msgstr "if spouse has professionnel income or not"
#. module: l10n_be_hr_payroll
#: field:hr.contract,insurance_employee_deduction:0
msgid "Insurance Group - by worker "
msgstr "Insurance Group - by worker "
#. module: l10n_be_hr_payroll
#: selection:hr.employee,spouse_fiscal_status:0
msgid "With Income"
msgstr "With Income"
#. module: l10n_be_hr_payroll
#: selection:hr.employee,spouse_fiscal_status:0
msgid "Without Income"
msgstr "Without Income"
#. module: l10n_be_hr_payroll
#: field:hr.employee,disabled_children_number:0
msgid "Number of disabled children"
msgstr "Number of disabled children"
#. module: l10n_be_hr_payroll
#: field:hr.contract,additional_net_amount:0
msgid "Net supplements"
msgstr "Net supplements"
#. module: l10n_be_hr_payroll
#: field:hr.contract,car_company_amount:0
msgid "Company car employer"
msgstr "Company car employer"
#. module: l10n_be_hr_payroll
#: field:hr.contract,misc_advantage_amount:0
msgid "Benefits of various nature "
msgstr "Benefits of various nature "
#. module: l10n_be_hr_payroll
#: field:hr.contract,car_employee_deduction:0
msgid "Company Car Deduction for Worker"
msgstr "Company Car Deduction for Worker"
#. module: l10n_be_hr_payroll
#: field:hr.employee,disabled_children_bool:0
msgid "Disabled Children"
msgstr "Disabled Children"
#. module: l10n_be_hr_payroll
#: model:ir.model,name:l10n_be_hr_payroll.model_hr_contract
msgid "Contract"
msgstr "Contract"
#. module: l10n_be_hr_payroll
#: field:hr.contract,meal_voucher_amount:0
msgid "Check Value Meal "
msgstr "Check Value Meal "
#. module: l10n_be_hr_payroll
#: field:hr.contract,travel_reimbursement_amount:0
msgid "Reimbursement of travel expenses"
msgstr "Reimbursement of travel expenses"
#. module: l10n_be_hr_payroll
#: constraint:hr.contract:0
msgid "Error! Contract start-date must be less than contract end-date."
msgstr "Error! Contract start-date must be less than contract end-date."
#. module: l10n_be_hr_payroll
#: field:hr.employee,spouse_fiscal_status:0
msgid "Tax status for spouse"
msgstr "Tax status for spouse"
#. module: l10n_be_hr_payroll
#: view:hr.employee:0
msgid "number of dependent children declared as disabled"
msgstr "number of dependent children declared as disabled"
#. module: l10n_be_hr_payroll
#: constraint:hr.employee:0
msgid "Error! You cannot create recursive hierarchy of Employee(s)."
msgstr "Error! You cannot create recursive hierarchy of Employee(s)."
#. module: l10n_be_hr_payroll
#: field:hr.contract,meal_voucher_employee_deduction:0
msgid "Check Value Meal - by worker "
msgstr "Check Value Meal - by worker "
+160
View File
@@ -0,0 +1,160 @@
# Turkish translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:53+0000\n"
"PO-Revision-Date: 2013-02-06 20:52+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Turkish <tr@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: 2013-02-07 04:53+0000\n"
"X-Generator: Launchpad (build 16477)\n"
#. module: l10n_be_invoice_bba
#: sql_constraint:account.invoice:0
msgid "Invoice Number must be unique per Company!"
msgstr "Invoice Number must be unique per Company!"
#. module: l10n_be_invoice_bba
#: model:ir.model,name:l10n_be_invoice_bba.model_account_invoice
msgid "Invoice"
msgstr "Invoice"
#. module: l10n_be_invoice_bba
#: constraint:res.partner:0
msgid "Error ! You cannot create recursive associated members."
msgstr "Error ! You cannot create recursive associated members."
#. module: l10n_be_invoice_bba
#: constraint:account.invoice:0
msgid "Invalid BBA Structured Communication !"
msgstr "Invalid BBA Structured Communication !"
#. module: l10n_be_invoice_bba
#: selection:res.partner,out_inv_comm_algorithm:0
msgid "Random"
msgstr "Random"
#. module: l10n_be_invoice_bba
#: help:res.partner,out_inv_comm_type:0
msgid "Select Default Communication Type for Outgoing Invoices."
msgstr "Select Default Communication Type for Outgoing Invoices."
#. 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 ""
"Select Algorithm to generate the Structured Communication on Outgoing "
"Invoices."
#. module: l10n_be_invoice_bba
#: code:addons/l10n_be_invoice_bba/invoice.py:109
#: code:addons/l10n_be_invoice_bba/invoice.py:135
#, 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 ""
"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."
#. module: l10n_be_invoice_bba
#: code:addons/l10n_be_invoice_bba/invoice.py:150
#, python-format
msgid "Error!"
msgstr "Error!"
#. module: l10n_be_invoice_bba
#: code:addons/l10n_be_invoice_bba/invoice.py:121
#, 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 ""
"The Partner should have a 3-7 digit Reference Number for the generation of "
"BBA Structured Communications!\n"
"Please correct the Partner record."
#. module: l10n_be_invoice_bba
#: constraint:res.partner:0
msgid "Error: Invalid ean code"
msgstr "Error: Invalid ean code"
#. module: l10n_be_invoice_bba
#: code:addons/l10n_be_invoice_bba/invoice.py:108
#: code:addons/l10n_be_invoice_bba/invoice.py:120
#: code:addons/l10n_be_invoice_bba/invoice.py:134
#: code:addons/l10n_be_invoice_bba/invoice.py:162
#: code:addons/l10n_be_invoice_bba/invoice.py:172
#: code:addons/l10n_be_invoice_bba/invoice.py:197
#, python-format
msgid "Warning!"
msgstr "Warning!"
#. module: l10n_be_invoice_bba
#: selection:res.partner,out_inv_comm_algorithm:0
msgid "Customer Reference"
msgstr "Customer Reference"
#. module: l10n_be_invoice_bba
#: field:res.partner,out_inv_comm_type:0
msgid "Communication Type"
msgstr "Communication Type"
#. module: l10n_be_invoice_bba
#: code:addons/l10n_be_invoice_bba/invoice.py:173
#: code:addons/l10n_be_invoice_bba/invoice.py:198
#, python-format
msgid ""
"The BBA Structured Communication has already been used!\n"
"Please create manually a unique BBA Structured Communication."
msgstr ""
"The BBA Structured Communication has already been used!\n"
"Please create manually a unique BBA Structured Communication."
#. module: l10n_be_invoice_bba
#: selection:res.partner,out_inv_comm_algorithm:0
msgid "Date"
msgstr "Date"
#. module: l10n_be_invoice_bba
#: model:ir.model,name:l10n_be_invoice_bba.model_res_partner
msgid "Partner"
msgstr "Partner"
#. module: l10n_be_invoice_bba
#: code:addons/l10n_be_invoice_bba/invoice.py:151
#, python-format
msgid ""
"Unsupported Structured Communication Type Algorithm '%s' !\n"
"Please contact your OpenERP support channel."
msgstr ""
"Unsupported Structured Communication Type Algorithm '%s' !\n"
"Please contact your OpenERP support channel."
#. module: l10n_be_invoice_bba
#: field:res.partner,out_inv_comm_algorithm:0
msgid "Communication Algorithm"
msgstr "Communication Algorithm"
#. module: l10n_be_invoice_bba
#: code:addons/l10n_be_invoice_bba/invoice.py:163
#, python-format
msgid ""
"Empty BBA Structured Communication!\n"
"Please fill in a unique BBA Structured Communication."
msgstr ""
"Empty BBA Structured Communication!\n"
"Please fill in a unique BBA Structured Communication."
+53
View File
@@ -0,0 +1,53 @@
# Turkish translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2013-02-06 11:19+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Turkish <tr@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: 2013-02-07 04:53+0000\n"
"X-Generator: Launchpad (build 16477)\n"
#. module: l10n_ar
#: model:ir.module.module,description:l10n_ar.module_meta_information
msgid ""
"\n"
" Argentinian Accounting : chart of Account\n"
" "
msgstr ""
"\n"
" Arjantin Muhasebe : Hesap planı\n"
" "
#. module: l10n_ar
#: model:ir.module.module,shortdesc:l10n_ar.module_meta_information
msgid "Argentinian Chart of Account"
msgstr "Arjantin Hesap Planı"
#. module: l10n_ar
#: model:ir.actions.todo,note:l10n_ar.config_call_account_template_in_minimal
msgid ""
"Generate Chart of Accounts from a Chart Template. You will be asked to pass "
"the name of the company, the chart template to follow, the no. of digits to "
"generate the code for your accounts and Bank account, currency to create "
"Journals. Thus,the pure copy of chart Template is generated.\n"
"\tThis is the same wizard that runs from Financial "
"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
"Chart of Accounts from a Chart Template."
msgstr ""
"Bir Tablo Şablonundan bir Hesap Tablosu oluşturun. Firma adını girmeniz, "
"hesaplarınızın ve banka hesaplarınızın kodlarının oluşturulması için rakam "
"sayısını, yevmiyeleri oluşturmak için para birimini girmeniz istenecektir. "
"Böylece sade bir hesap planı oluşturumuş olur.\n"
"\t Bu sihirbaz, Mali Yönetim/Yapılandırma/Mali Muhasebe/Mali Hesaplar/Tablo "
"Şablonundan Hesap planı Oluşturma menüsünden çalıştırılan sihirbaz ile "
"aynıdır."
+135
View File
@@ -0,0 +1,135 @@
# Turkish translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:53+0000\n"
"PO-Revision-Date: 2013-02-06 20:54+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Turkish <tr@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: 2013-02-07 04:53+0000\n"
"X-Generator: Launchpad (build 16477)\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 ""
"\n"
"Please define BIC/Swift code on bank for bank type IBAN Account to make "
"valid payments"
#. module: l10n_fr_rib
#: model:res.partner.bank.type,name:l10n_fr_rib.bank_rib
msgid "RIB and optional IBAN"
msgstr "RIB and optional IBAN"
#. module: l10n_fr_rib
#: field:res.partner.bank,rib_acc_number:0
msgid "RIB account number"
msgstr "RIB account number"
#. module: l10n_fr_rib
#: field:res.partner.bank,bank_code:0
msgid "Bank Code"
msgstr "Bank Code"
#. 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 "The RIB key %s does not correspond to the other codes: %s %s %s."
#. module: l10n_fr_rib
#: model:res.partner.bank.type.field,name:l10n_fr_rib.rib_office_field
msgid "office"
msgstr "office"
#. module: l10n_fr_rib
#: field:res.bank,rib_code:0
msgid "RIB Bank Code"
msgstr "RIB Bank Code"
#. module: l10n_fr_rib
#: code:addons/l10n_fr_rib/bank.py:58
#, python-format
msgid "The IBAN %s is not valid."
msgstr "The IBAN %s is not valid."
#. module: l10n_fr_rib
#: model:ir.model,name:l10n_fr_rib.model_res_partner_bank
msgid "Bank Accounts"
msgstr "Bank Accounts"
#. module: l10n_fr_rib
#: field:res.partner.bank,office:0
msgid "Office Code"
msgstr "Office Code"
#. module: l10n_fr_rib
#: model:res.partner.bank.type.field,name:l10n_fr_rib.rib_bic_field
msgid "bank_bic"
msgstr "bank_bic"
#. module: l10n_fr_rib
#: model:res.partner.bank.type.field,name:l10n_fr_rib.rib_bank_code_field
msgid "bank_code"
msgstr "bank_code"
#. module: l10n_fr_rib
#: model:res.partner.bank.type.field,name:l10n_fr_rib.rib_key_field
msgid "key"
msgstr "key"
#. 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 "Error!"
#. 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 ""
"The key is a number allowing to check the correctness of the other codes."
#. module: l10n_fr_rib
#: field:res.partner.bank,key:0
msgid "Key"
msgstr "Key"
#. module: l10n_fr_rib
#: model:res.partner.bank.type.field,name:l10n_fr_rib.rib_rib_acc_number_field
msgid "rib_acc_number"
msgstr "rib_acc_number"
#. 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 "%(bank_name)s: %(bank_code)s %(office)s %(rib_acc_number)s %(key)s"
#. module: l10n_fr_rib
#: constraint:res.partner.bank:0
msgid "The RIB and/or IBAN is not valid"
msgstr "The RIB and/or IBAN is not valid"
#. module: l10n_fr_rib
#: model:ir.model,name:l10n_fr_rib.model_res_bank
msgid "Bank"
msgstr "Bank"
#. module: l10n_fr_rib
#: model:res.partner.bank.type.field,name:l10n_fr_rib.rib_acc_number_field
msgid "acc_number"
msgstr "acc_number"
File diff suppressed because it is too large Load Diff
+1
View File
@@ -44,6 +44,7 @@ If you want to save your employees' time and avoid them to always have coins in
'report/report_lunch_order_view.xml',
'security/ir.model.access.csv',],
'css':['static/src/css/lunch.css'],
'images': ['images/new_order.jpeg','images/lunch_account.jpeg','images/order_by_supplier_analysis.jpeg','images/alert.jpeg'],
'demo': ['lunch_demo.xml',],
'installable': True,
'application' : True,
+896
View File
@@ -0,0 +1,896 @@
# Mongolian translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-02-06 10:30+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Mongolian <mn@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: 2013-02-07 04:53+0000\n"
"X-Generator: Launchpad (build 16477)\n"
#. module: lunch
#: field:lunch.product,category_id:0
#: field:lunch.product.category,name:0
msgid "Category"
msgstr "Категори"
#. module: lunch
#: model:ir.ui.menu,name:lunch.menu_lunch_order_by_supplier_form
msgid "Today's Orders by Supplier"
msgstr "Нийлүүлэгчийн Өнөөдөрийн Захиалгууд"
#. module: lunch
#: view:lunch.order:0
msgid "My Orders"
msgstr ""
#. module: lunch
#: selection:lunch.order,state:0
msgid "Partially Confirmed"
msgstr "Хэсэгчилэн Зөвшөөрөгдсөн"
#. module: lunch
#: view:lunch.cashmove:0
#: view:lunch.order.line:0
msgid "Group By..."
msgstr "Бүлэглэвэл..."
#. module: lunch
#: field:lunch.alert,sunday:0
msgid "Sunday"
msgstr "Ням"
#. module: lunch
#: field:lunch.order.line,supplier:0
#: field:lunch.product,supplier:0
msgid "Supplier"
msgstr "Нийлүүлэгч"
#. module: lunch
#: view:lunch.order.line:0
msgid "Today"
msgstr "Өнөөдөр"
#. module: lunch
#: selection:report.lunch.order.line,month:0
msgid "March"
msgstr "3-р сар"
#. module: lunch
#: view:lunch.cashmove:0
msgid "By Employee"
msgstr "Ажилтнаар"
#. module: lunch
#: field:lunch.alert,friday:0
msgid "Friday"
msgstr "Баасан"
#. module: lunch
#: view:lunch.validation:0
msgid "validate order lines"
msgstr ""
#. module: lunch
#: view:lunch.order.line:0
msgid "Order lines Tree"
msgstr ""
#. module: lunch
#: field:lunch.alert,specific_day:0
#: field:report.lunch.order.line,day:0
msgid "Day"
msgstr "Өдөр"
#. module: lunch
#: view:lunch.order.line:0
#: selection:lunch.order.line,state:0
msgid "Received"
msgstr "Хүлээн авсан"
#. module: lunch
#: view:lunch.order.line:0
msgid "By Supplier"
msgstr ""
#. module: lunch
#: model:ir.actions.act_window,help:lunch.action_lunch_order_tree
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to create a lunch order. \n"
" </p>\n"
" <p>\n"
" A lunch order is defined by its user, date and order lines.\n"
" Each order line corresponds to a product, an additional note "
"and a price.\n"
" Before selecting your order lines, don't forget to read the "
"warnings displayed in the reddish area.\n"
" </p>\n"
" "
msgstr ""
#. module: lunch
#: view:lunch.order.line:0
msgid "Not Received"
msgstr ""
#. module: lunch
#: model:ir.actions.act_window,name:lunch.action_lunch_order_by_supplier_form
#: model:ir.ui.menu,name:lunch.menu_lunch_control_suppliers
msgid "Orders by Supplier"
msgstr ""
#. module: lunch
#: view:lunch.validation:0
msgid "Receive Meals"
msgstr ""
#. module: lunch
#: view:lunch.cashmove:0
msgid "cashmove form"
msgstr ""
#. module: lunch
#: model:ir.actions.act_window,help:lunch.action_lunch_cashmove_form
msgid ""
"<p>\n"
" Here you can see your cash moves.<br/>A cash moves can be "
"either an expense or a payment.\n"
" An expense is automatically created when an order is "
"received while a payment is a reimbursement to the company encoded by the "
"manager.\n"
" </p>\n"
" "
msgstr ""
#. module: lunch
#: field:lunch.cashmove,amount:0
msgid "Amount"
msgstr "Дүн"
#. module: lunch
#: model:ir.actions.act_window,name:lunch.action_lunch_products
#: model:ir.ui.menu,name:lunch.menu_lunch_products
#: field:lunch.order,order_line_ids:0
msgid "Products"
msgstr "Бүтээгдэхүүнүүд"
#. module: lunch
#: view:lunch.order.line:0
msgid "By Date"
msgstr "Огноогоор"
#. module: lunch
#: selection:lunch.order,state:0
#: view:lunch.order.line:0
#: selection:lunch.order.line,state:0
msgid "Cancelled"
msgstr "Цуцлагдсан"
#. module: lunch
#: view:lunch.cashmove:0
msgid "lunch employee payment"
msgstr ""
#. module: lunch
#: view:lunch.alert:0
msgid "alert tree"
msgstr ""
#. module: lunch
#: model:ir.model,name:lunch.model_report_lunch_order_line
msgid "Lunch Orders Statistics"
msgstr ""
#. module: lunch
#: model:ir.model,name:lunch.model_lunch_alert
msgid "Lunch Alert"
msgstr ""
#. module: lunch
#: code:addons/lunch/lunch.py:183
#, python-format
msgid "Select a product and put your order comments on the note."
msgstr ""
#. module: lunch
#: selection:lunch.alert,alter_type:0
msgid "Every Week"
msgstr ""
#. module: lunch
#: model:ir.actions.act_window,name:lunch.action_lunch_cashmove
msgid "Register Cash Moves"
msgstr ""
#. module: lunch
#: selection:lunch.order,state:0
msgid "Confirmed"
msgstr ""
#. module: lunch
#: view:lunch.order:0
msgid "lunch orders"
msgstr ""
#. module: lunch
#: view:lunch.order.line:0
msgid "Confirm"
msgstr "Батлах"
#. module: lunch
#: model:ir.actions.act_window,name:lunch.action_lunch_cashmove_form
msgid "Your Account"
msgstr ""
#. module: lunch
#: model:ir.ui.menu,name:lunch.menu_lunch_cashmove_form
msgid "Your Lunch Account"
msgstr ""
#. module: lunch
#: field:lunch.alert,active_from:0
msgid "Between"
msgstr ""
#. module: lunch
#: model:ir.model,name:lunch.model_lunch_order_order
msgid "Wizard to order a meal"
msgstr ""
#. module: lunch
#: selection:lunch.order,state:0
#: selection:lunch.order.line,state:0
msgid "New"
msgstr ""
#. module: lunch
#: code:addons/lunch/lunch.py:180
#, python-format
msgid "This is the first time you order a meal"
msgstr "Энэ таны анхны хоол захиалга"
#. module: lunch
#: field:report.lunch.order.line,price_total:0
msgid "Total Price"
msgstr "Нийт Үнэ"
#. module: lunch
#: model:ir.model,name:lunch.model_lunch_validation
msgid "lunch validation for order"
msgstr ""
#. module: lunch
#: report:lunch.order.line:0
msgid "Name/Date"
msgstr "Нэр/Огноо"
#. module: lunch
#: report:lunch.order.line:0
msgid "Total :"
msgstr ""
#. module: lunch
#: selection:report.lunch.order.line,month:0
msgid "July"
msgstr "7-р сар"
#. module: lunch
#: model:ir.ui.menu,name:lunch.menu_lunch_config
msgid "Configuration"
msgstr "Тохируулга"
#. module: lunch
#: field:lunch.order,state:0
#: field:lunch.order.line,state:0
msgid "Status"
msgstr ""
#. module: lunch
#: view:lunch.order.order:0
msgid ""
"Order a meal doesn't mean that we have to pay it.\n"
" A meal should be paid when it is received."
msgstr ""
#. module: lunch
#: model:ir.actions.act_window,name:lunch.action_lunch_control_accounts
#: model:ir.ui.menu,name:lunch.menu_lunch_control_accounts
msgid "Control Accounts"
msgstr ""
#. module: lunch
#: selection:lunch.alert,alter_type:0
msgid "Every Day"
msgstr ""
#. module: lunch
#: field:lunch.order.line,cashmove:0
msgid "Cash Move"
msgstr ""
#. module: lunch
#: model:ir.actions.act_window,name:lunch.order_order_lines
msgid "Order meals"
msgstr ""
#. module: lunch
#: view:lunch.alert:0
msgid "Schedule Hour"
msgstr ""
#. module: lunch
#: selection:report.lunch.order.line,month:0
msgid "September"
msgstr "9-р сар"
#. module: lunch
#: model:ir.actions.act_window,help:lunch.action_lunch_control_suppliers
msgid ""
"<p>\n"
" Here you can see every orders grouped by suppliers and by "
"date.\n"
" </p>\n"
" <p>\n"
" - Click on the <img "
"src=\"../../../web/static/src/img/icons/terp-call-start.png\"/> to announce "
"that the order is ordered <br/>\n"
" - Click on the <img "
"src=\"../../../web/static/src/img/icons/gtk-apply.png\"/> to announce that "
"the order is received <br/>\n"
" - Click on the <img "
"src=\"../../../web/static/src/img/icons/gtk-cancel.png\"/> red X to announce "
"that the order isn't available\n"
" </p>\n"
" "
msgstr ""
#. module: lunch
#: field:lunch.alert,tuesday:0
msgid "Tuesday"
msgstr ""
#. module: lunch
#: model:ir.actions.act_window,name:lunch.action_lunch_order_tree
msgid "Your Orders"
msgstr "Таны захиалгууд"
#. module: lunch
#: field:report.lunch.order.line,month:0
msgid "Month"
msgstr "Сар"
#. module: lunch
#: model:ir.actions.act_window,help:lunch.action_lunch_products
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to create a product for lunch. \n"
" </p>\n"
" <p>\n"
" A product is defined by its name, category, price and "
"supplier.\n"
" </p>\n"
" "
msgstr ""
#. module: lunch
#: view:lunch.alert:0
#: field:lunch.alert,message:0
msgid "Message"
msgstr "Зурвас"
#. module: lunch
#: view:lunch.order.order:0
msgid "Order Meals"
msgstr ""
#. module: lunch
#: view:lunch.cancel:0
#: view:lunch.order.order:0
#: view:lunch.validation:0
msgid "or"
msgstr "эсвэл"
#. module: lunch
#: model:ir.actions.act_window,help:lunch.action_lunch_product_categories
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to create a lunch category. \n"
" </p>\n"
" <p>\n"
" Here you can find every lunch categories for products.\n"
" </p>\n"
" "
msgstr ""
#. module: lunch
#: view:lunch.order.order:0
msgid "Order meal"
msgstr ""
#. module: lunch
#: model:ir.actions.act_window,name:lunch.action_lunch_product_categories
#: model:ir.ui.menu,name:lunch.menu_lunch_product_categories
msgid "Product Categories"
msgstr "Барааны ангилал"
#. module: lunch
#: model:ir.actions.act_window,name:lunch.action_lunch_control_suppliers
msgid "Control Suppliers"
msgstr ""
#. module: lunch
#: view:lunch.alert:0
msgid "Schedule Date"
msgstr ""
#. module: lunch
#: model:ir.actions.act_window,name:lunch.action_lunch_alert
#: model:ir.ui.menu,name:lunch.menu_lunch_alert
#: field:lunch.order,alerts:0
msgid "Alerts"
msgstr ""
#. module: lunch
#: field:lunch.order.line,note:0
#: field:report.lunch.order.line,note:0
msgid "Note"
msgstr ""
#. module: lunch
#: code:addons/lunch/lunch.py:250
#, python-format
msgid "Add"
msgstr ""
#. module: lunch
#: view:lunch.product:0
#: view:lunch.product.category:0
msgid "Products Form"
msgstr ""
#. module: lunch
#: model:ir.actions.act_window,name:lunch.cancel_order_lines
msgid "Cancel meals"
msgstr ""
#. module: lunch
#: model:ir.model,name:lunch.model_lunch_cashmove
#: view:lunch.cashmove:0
msgid "lunch cashmove"
msgstr ""
#. module: lunch
#: view:lunch.cancel:0
msgid "Are you sure you want to cancel these meals?"
msgstr ""
#. module: lunch
#: view:lunch.cashmove:0
msgid "My Account"
msgstr ""
#. module: lunch
#: selection:report.lunch.order.line,month:0
msgid "August"
msgstr ""
#. module: lunch
#: field:lunch.alert,monday:0
msgid "Monday"
msgstr ""
#. module: lunch
#: field:lunch.order.line,name:0
msgid "unknown"
msgstr ""
#. module: lunch
#: model:ir.actions.act_window,name:lunch.validate_order_lines
msgid "Receive meals"
msgstr ""
#. module: lunch
#: selection:report.lunch.order.line,month:0
msgid "June"
msgstr ""
#. module: lunch
#: field:lunch.cashmove,user_id:0
#: field:lunch.order,user_id:0
#: field:report.lunch.order.line,user_id:0
msgid "User Name"
msgstr ""
#. module: lunch
#: model:ir.module.category,name:lunch.module_lunch_category
#: model:ir.ui.menu,name:lunch.menu_lunch
#: model:ir.ui.menu,name:lunch.menu_lunch_title
msgid "Lunch"
msgstr ""
#. module: lunch
#: model:ir.model,name:lunch.model_lunch_order_line
msgid "lunch order line"
msgstr ""
#. module: lunch
#: model:ir.model,name:lunch.model_lunch_product
msgid "lunch product"
msgstr ""
#. module: lunch
#: field:lunch.order.line,user_id:0
#: model:res.groups,name:lunch.group_lunch_user
msgid "User"
msgstr ""
#. module: lunch
#: field:lunch.cashmove,date:0
#: field:lunch.order,date:0
#: field:lunch.order.line,date:0
msgid "Date"
msgstr ""
#. module: lunch
#: selection:report.lunch.order.line,month:0
msgid "November"
msgstr ""
#. module: lunch
#: view:lunch.order:0
msgid "Orders Tree"
msgstr "Захиалгийн мод"
#. module: lunch
#: view:lunch.order:0
msgid "Orders Form"
msgstr "Захиалгуудын Форм"
#. module: lunch
#: view:lunch.alert:0
#: view:lunch.order.line:0
msgid "Search"
msgstr ""
#. module: lunch
#: selection:report.lunch.order.line,month:0
msgid "October"
msgstr ""
#. module: lunch
#: model:ir.actions.act_window,help:lunch.action_lunch_order_by_supplier_form
msgid ""
"<p>\n"
" Here you can see today's orders grouped by suppliers.\n"
" </p>\n"
" <p>\n"
" - Click on the <img "
"src=\"../../../web/static/src/img/icons/terp-call-start.png\"/> to announce "
"that the order is ordered <br/>\n"
" - Click on the <img "
"src=\"../../../web/static/src/img/icons/gtk-apply.png\"/> to announce that "
"the order is received <br/>\n"
" - Click on the <img "
"src=\"../../../web/static/src/img/icons/gtk-cancel.png\"/> to announce that "
"the order isn't available\n"
" </p>\n"
" "
msgstr ""
#. module: lunch
#: selection:report.lunch.order.line,month:0
msgid "January"
msgstr ""
#. module: lunch
#: selection:lunch.alert,alter_type:0
msgid "Specific Day"
msgstr ""
#. module: lunch
#: field:lunch.alert,wednesday:0
msgid "Wednesday"
msgstr "Лхагва"
#. module: lunch
#: view:lunch.product.category:0
msgid "Product Category: "
msgstr ""
#. module: lunch
#: field:lunch.alert,active_to:0
msgid "And"
msgstr "Ба"
#. module: lunch
#: selection:lunch.order.line,state:0
msgid "Ordered"
msgstr ""
#. module: lunch
#: field:report.lunch.order.line,date:0
msgid "Date Order"
msgstr "Захиалсан огноо"
#. module: lunch
#: view:lunch.cancel:0
msgid "Cancel Orders"
msgstr ""
#. module: lunch
#: model:ir.actions.act_window,help:lunch.action_lunch_alert
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to create a lunch alert. \n"
" </p>\n"
" <p>\n"
" Alerts are used to warn employee from possible issues "
"concerning the lunch orders.\n"
" To create a lunch alert you have to define its recurrency, "
"the time interval during which the alert should be executed and the message "
"to display.\n"
" </p>\n"
" <p>\n"
" Example: <br/>\n"
" - Recurency: Everyday<br/>\n"
" - Time interval: from 00h00 am to 11h59 pm<br/>\n"
" - Message: \"You must order before 10h30 am\"\n"
" </p>\n"
" "
msgstr ""
#. module: lunch
#: view:lunch.cancel:0
msgid "A cancelled meal should not be paid by employees."
msgstr ""
#. module: lunch
#: model:ir.ui.menu,name:lunch.menu_lunch_cash
msgid "Administrate Cash Moves"
msgstr ""
#. module: lunch
#: model:ir.model,name:lunch.model_lunch_cancel
msgid "cancel lunch order"
msgstr ""
#. module: lunch
#: selection:report.lunch.order.line,month:0
msgid "December"
msgstr ""
#. module: lunch
#: view:lunch.cancel:0
#: view:lunch.order.line:0
#: view:lunch.order.order:0
#: view:lunch.validation:0
msgid "Cancel"
msgstr ""
#. module: lunch
#: model:ir.actions.act_window,help:lunch.action_lunch_cashmove
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to create a payment. \n"
" </p>\n"
" <p>\n"
" Here you can see the employees' payment. A payment is a cash "
"move from the employee to the company.\n"
" </p>\n"
" "
msgstr ""
#. module: lunch
#: code:addons/lunch/lunch.py:186
#, python-format
msgid "Your favorite meals will be created based on your last orders."
msgstr ""
#. module: lunch
#: model:ir.module.category,description:lunch.module_lunch_category
msgid ""
"Helps you handle your lunch needs, if you are a manager you will be able to "
"create new products, cashmoves and to confirm or cancel orders."
msgstr ""
#. module: lunch
#: model:ir.actions.act_window,help:lunch.action_lunch_control_accounts
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to create a new payment. \n"
" </p>\n"
" <p>\n"
" A cashmove can either be an expense or a payment.<br/>\n"
" An expense is automatically created at the order "
"receipt.<br/>\n"
" A payment represents the employee reimbursement to the "
"company.\n"
" </p>\n"
" "
msgstr ""
#. module: lunch
#: field:lunch.alert,alter_type:0
msgid "Recurrency"
msgstr ""
#. module: lunch
#: code:addons/lunch/lunch.py:189
#, python-format
msgid "Don't forget the alerts displayed in the reddish area"
msgstr ""
#. module: lunch
#: field:lunch.alert,thursday:0
msgid "Thursday"
msgstr ""
#. module: lunch
#: report:lunch.order.line:0
msgid "Unit Price"
msgstr ""
#. module: lunch
#: field:lunch.order.line,product_id:0
#: field:lunch.product,name:0
msgid "Product"
msgstr ""
#. module: lunch
#: field:lunch.cashmove,description:0
#: report:lunch.order.line:0
#: field:lunch.product,description:0
msgid "Description"
msgstr ""
#. module: lunch
#: selection:report.lunch.order.line,month:0
msgid "May"
msgstr ""
#. module: lunch
#: field:lunch.order.line,price:0
#: field:lunch.product,price:0
msgid "Price"
msgstr ""
#. module: lunch
#: field:lunch.cashmove,state:0
msgid "Is an order or a Payment"
msgstr ""
#. module: lunch
#: model:ir.actions.act_window,name:lunch.action_lunch_order_form
#: model:ir.ui.menu,name:lunch.menu_lunch_order_form
msgid "New Order"
msgstr ""
#. module: lunch
#: view:lunch.cashmove:0
msgid "cashmove tree"
msgstr ""
#. module: lunch
#: view:lunch.cancel:0
msgid "Cancel a meal means that we didn't receive it from the supplier."
msgstr ""
#. module: lunch
#: model:ir.ui.menu,name:lunch.menu_lunch_cashmove
msgid "Employee Payments"
msgstr ""
#. module: lunch
#: view:lunch.cashmove:0
#: selection:lunch.cashmove,state:0
msgid "Payment"
msgstr ""
#. module: lunch
#: selection:report.lunch.order.line,month:0
msgid "February"
msgstr ""
#. module: lunch
#: field:report.lunch.order.line,year:0
msgid "Year"
msgstr ""
#. module: lunch
#: view:lunch.order:0
msgid "List"
msgstr ""
#. module: lunch
#: model:ir.ui.menu,name:lunch.menu_lunch_admin
msgid "Administrate Orders"
msgstr ""
#. module: lunch
#: selection:report.lunch.order.line,month:0
msgid "April"
msgstr ""
#. module: lunch
#: view:lunch.order:0
msgid "Select your order"
msgstr ""
#. module: lunch
#: field:lunch.cashmove,order_id:0
#: selection:lunch.cashmove,state:0
#: report:lunch.order.line:0
#: view:lunch.order.line:0
#: field:lunch.order.line,order_id:0
msgid "Order"
msgstr ""
#. module: lunch
#: model:ir.actions.report.xml,name:lunch.report_lunch_order
#: model:ir.model,name:lunch.model_lunch_order
#: report:lunch.order.line:0
msgid "Lunch Order"
msgstr ""
#. module: lunch
#: view:lunch.order.order:0
msgid "Are you sure you want to order these meals?"
msgstr ""
#. module: lunch
#: view:lunch.cancel:0
msgid "cancel order lines"
msgstr ""
#. module: lunch
#: model:ir.model,name:lunch.model_lunch_product_category
msgid "lunch product category"
msgstr ""
#. module: lunch
#: field:lunch.alert,saturday:0
msgid "Saturday"
msgstr ""
#. module: lunch
#: model:res.groups,name:lunch.group_lunch_manager
msgid "Manager"
msgstr ""
#. module: lunch
#: view:lunch.validation:0
msgid "Did your received these meals?"
msgstr ""
#. module: lunch
#: view:lunch.validation:0
msgid "Once a meal is received a new cash move is created for the employee."
msgstr ""
#. module: lunch
#: view:lunch.product:0
msgid "Products Tree"
msgstr ""
#. module: lunch
#: view:lunch.cashmove:0
#: view:lunch.order:0
#: field:lunch.order,total:0
#: view:lunch.order.line:0
msgid "Total"
msgstr ""
#. module: lunch
#: model:ir.ui.menu,name:lunch.menu_lunch_order_tree
msgid "Previous Orders"
msgstr ""
+3 -2
View File
@@ -39,7 +39,8 @@
<field name="user_id"/>
<filter name='is_payment' string="Payment" domain="[('state','=','payment')]"/>
<separator/>
<filter name='is_mine' string="My Account" domain="[('user_id','=',uid)]"/>
<filter name='is_mine_group' string="My Account grouped" domain="[('user_id','=',uid)]" context="{'group_by':'user_id'}"/>
<filter name="group_by_user" string="By User" context="{'group_by':'user_id'}"/>
</search>
</field>
</record>
@@ -116,7 +117,7 @@
<field name="res_model">lunch.cashmove</field>
<field name="view_mode">tree</field>
<field name="search_view_id" ref="view_lunch_employee_payment_filter"/>
<field name="context">{"search_default_is_mine":1}</field>
<field name="context">{"search_default_is_mine_group":1}</field>
<field name="help" type="html">
<p>
Here you can see your cash moves.<br/>A cash moves can be either an expense or a payment.
+4 -8
View File
@@ -71,16 +71,12 @@ Main Features
'installable': True,
'application': True,
'images': [
'images/customer_history.jpeg',
'images/inbox.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/groupdefault.png',
'static/src/img/attachment.png',
'static/src/img/checklist.png',
'static/src/img/formatting.png',
'images/email.jpeg',
'images/join_a_group.jpeg',
'images/share_a_message.jpeg',
],
'css': [
'static/src/css/mail.css',
+3
View File
@@ -21,6 +21,8 @@ should inherit from this class.
ClientAction (ir.actions.client)
++++++++++++++++++++++++++++++++
.. code-block:: xml
<record id="action_mail_inbox_feeds" model="ir.actions.client">
<field name="name">Inbox</field>
<field name="tag">mail.wall</field>
@@ -36,6 +38,7 @@ ClientAction (ir.actions.client)
'mail_thread' widget for field on standard view. (default value like a thread for
record, view on flat mode, no reply, no read/unread)
'mail.widget' it's the root thread, used by 'mail.wall' and 'mail_thread'
- ``help`` : Text HTML to display if there are no message
- ``context`` : insert 'default_model' and 'default_res_id'
- ``params`` : options for the widget
+169 -156
View File
File diff suppressed because it is too large Load Diff
+9 -3
View File
@@ -85,9 +85,6 @@ class mail_notification(osv.Model):
if notification.read:
continue
partner = notification.partner_id
# Do not send an email to the writer
if partner.user_ids and partner.user_ids[0].id == uid:
continue
# Do not send to partners without email address defined
if not partner.email:
continue
@@ -129,11 +126,20 @@ class mail_notification(osv.Model):
if signature:
body_html = tools.append_content_to_html(body_html, signature, plaintext=True, container_tag='div')
# email_from: partner-user alias or partner email or mail.message email_from
if msg.author_id and msg.author_id.user_ids and msg.author_id.user_ids[0].alias_domain and msg.author_id.user_ids[0].alias_name:
email_from = '%s <%s@%s>' % (msg.author_id.name, msg.author_id.user_ids[0].alias_name, msg.author_id.user_ids[0].alias_domain)
elif msg.author_id:
email_from = '%s <%s>' % (msg.author_id.name, msg.author_id.email)
else:
email_from = msg.email_from
mail_values = {
'mail_message_id': msg.id,
'email_to': [],
'auto_delete': True,
'body_html': body_html,
'email_from': email_from,
'state': 'outgoing',
}
mail_values['email_to'] = ', '.join(mail_values['email_to'])
+7
View File
@@ -78,6 +78,13 @@ class mail_mail(osv.Model):
'email_from': lambda self, cr, uid, ctx=None: self._get_default_from(cr, uid, ctx),
}
def default_get(self, cr, uid, fields, context=None):
# protection for `default_type` values leaking from menu action context (e.g. for invoices)
# To remove when automatic context propagation is removed in web client
if context and context.get('default_type') and context.get('default_type') not in self._all_columns['type'].column.selection:
context = dict(context, default_type = None)
return super(mail_mail, self).default_get(cr, uid, fields, context=context)
def create(self, cr, uid, values, context=None):
if 'notification' not in values and values.get('mail_message_id'):
values['notification'] = True
+39 -15
View File
@@ -243,7 +243,7 @@ class mail_thread(osv.AbstractModel):
# subscribe uid unless asked not to
if not context.get('mail_create_nosubscribe'):
self.message_subscribe_users(cr, uid, [thread_id], [uid], context=context)
self.message_subscribe_from_parent(cr, uid, [thread_id], values.keys(), context=context)
self.message_auto_subscribe(cr, uid, [thread_id], values.keys(), context=context)
# automatic logging unless asked not to (mainly for various testing purpose)
if not context.get('mail_create_nolog'):
@@ -261,7 +261,7 @@ class mail_thread(osv.AbstractModel):
# Perform write, update followers
result = super(mail_thread, self).write(cr, uid, ids, values, context=context)
self.message_subscribe_from_parent(cr, uid, ids, values.keys(), context=context)
self.message_auto_subscribe(cr, uid, ids, values.keys(), context=context)
# Perform the tracking
if tracked_fields:
@@ -1069,7 +1069,24 @@ class mail_thread(osv.AbstractModel):
self.check_access_rights(cr, uid, 'write')
return self.write(cr, SUPERUSER_ID, ids, {'message_follower_ids': [(3, pid) for pid in partner_ids]}, context=context)
def message_subscribe_from_parent(self, cr, uid, ids, updated_fields, context=None):
def _message_get_auto_subscribe_fields(self, cr, uid, updated_fields, auto_follow_fields=['user_id'], context=None):
""" Returns the list of relational fields linking to res.users that should
trigger an auto subscribe. The default list checks for the fields
- called 'user_id'
- linking to res.users
- with track_visibility set
In OpenERP V7, this is sufficent for all major addon such as opportunity,
project, issue, recruitment, sale.
Override this method if a custom behavior is needed about fields
that automatically subscribe users.
"""
user_field_lst = []
for name, column_info in self._all_columns.items():
if name in auto_follow_fields and name in updated_fields and getattr(column_info.column, 'track_visibility', False) and column_info.column._obj == 'res.users':
user_field_lst.append(name)
return user_field_lst
def message_auto_subscribe(self, cr, uid, ids, updated_fields, context=None):
"""
1. fetch project subtype related to task (parent_id.res_model = 'project.task')
2. for each project subtype: subscribe the follower to the task
@@ -1077,13 +1094,16 @@ class mail_thread(osv.AbstractModel):
subtype_obj = self.pool.get('mail.message.subtype')
follower_obj = self.pool.get('mail.followers')
# fetch auto_follow_fields
user_field_lst = self._message_get_auto_subscribe_fields(cr, uid, updated_fields, context=context)
# fetch related record subtypes
related_subtype_ids = subtype_obj.search(cr, uid, ['|', ('res_model', '=', False), ('parent_id.res_model', '=', self._name)], context=context)
subtypes = subtype_obj.browse(cr, uid, related_subtype_ids, context=context)
default_subtypes = [subtype for subtype in subtypes if subtype.res_model == False]
related_subtypes = [subtype for subtype in subtypes if subtype.res_model != False]
relation_fields = set([subtype.relation_field for subtype in subtypes if subtype.relation_field != False])
if not related_subtypes or not any(relation in updated_fields for relation in relation_fields):
if (not related_subtypes or not any(relation in updated_fields for relation in relation_fields)) and not user_field_lst:
return True
for record in self.browse(cr, uid, ids, context=context):
@@ -1105,20 +1125,24 @@ class mail_thread(osv.AbstractModel):
for follower in follower_obj.browse(cr, SUPERUSER_ID, follower_ids, context=context):
new_followers.setdefault(follower.partner_id.id, set()).add(subtype.parent_id.id)
if not parent_res_id or not parent_model:
continue
if parent_res_id and parent_model:
for subtype in default_subtypes:
follower_ids = follower_obj.search(cr, SUPERUSER_ID, [
('res_model', '=', parent_model),
('res_id', '=', parent_res_id),
('subtype_ids', 'in', [subtype.id])
], context=context)
for follower in follower_obj.browse(cr, SUPERUSER_ID, follower_ids, context=context):
new_followers.setdefault(follower.partner_id.id, set()).add(subtype.id)
for subtype in default_subtypes:
follower_ids = follower_obj.search(cr, SUPERUSER_ID, [
('res_model', '=', parent_model),
('res_id', '=', parent_res_id),
('subtype_ids', 'in', [subtype.id])
], context=context)
for follower in follower_obj.browse(cr, SUPERUSER_ID, follower_ids, context=context):
new_followers.setdefault(follower.partner_id.id, set()).add(subtype.id)
# add followers coming from res.users relational fields that are tracked
user_ids = [getattr(record, name).id for name in user_field_lst if getattr(record, name)]
for partner_id in [user.partner_id.id for user in self.pool.get('res.users').browse(cr, SUPERUSER_ID, user_ids, context=context)]:
new_followers.setdefault(partner_id, None)
for pid, subtypes in new_followers.items():
self.message_subscribe(cr, uid, [record.id], [pid], list(subtypes), context=context)
subtypes = list(subtypes) if subtypes is not None else None
self.message_subscribe(cr, uid, [record.id], [pid], subtypes, context=context)
return True
#------------------------------------------------------
+12 -10
View File
@@ -105,7 +105,7 @@ openerp.mail = function (session) {
// As it only looks at the extension it is quite approximative.
filetype: function(url){
url = url.filename || url;
var tokens = url.split('.');
var tokens = (url+'').split('.');
if(tokens.length <= 1){
return 'unknown';
}
@@ -218,7 +218,7 @@ openerp.mail = function (session) {
this.author_id = datasets.author_id || false,
this.attachment_ids = datasets.attachment_ids || [],
this.partner_ids = datasets.partner_ids || [];
this._date = datasets.date;
this.date = datasets.date;
this.format_data();
@@ -232,19 +232,20 @@ openerp.mail = function (session) {
else {
this.options.show_read = this.to_read;
this.options.show_unread = !this.to_read;
this.options.rerender = true;
this.options.toggle_read = true;
}
this.options.rerender = true;
this.options.toggle_read = true;
}
this.parent_thread = parent.messages != undefined ? parent : this.options.root_thread;
this.parent_thread = typeof parent.on_message_detroy == 'function' ? parent : this.options.root_thread;
this.thread = false;
},
/* Convert date, timerelative and avatar in displayable data. */
format_data: function () {
//formating and add some fields for render
if (this._date) {
this.timerelative = $.timeago(this._date+"Z");
this.date = this.date ? session.web.str_to_datetime(this.date) : false;
if (this.date && new Date().getTime()-this.date.getTime() < 7*24*60*60*1000) {
this.timerelative = $.timeago(this.date);
}
if (this.type == 'email' && (!this.author_id || !this.author_id[0])) {
this.avatar = ('/mail/static/src/img/email_icon.png');
@@ -253,7 +254,7 @@ openerp.mail = function (session) {
} else {
this.avatar = mail.ChatterUtils.get_image(this.session, 'res.users', 'image_small', this.session.uid);
}
if (this.author_id) {
if (this.author_id && this.author_id[1]) {
var email = this.author_id[1].match(/(.*)<(.*@.*)>/);
if (!email) {
this.author_id.push(_.str.escapeHTML(this.author_id[1]), '', this.author_id[1]);
@@ -271,7 +272,7 @@ openerp.mail = function (session) {
var attach = this.attachment_ids[l];
if (!attach.formating) {
attach.url = mail.ChatterUtils.get_attachment_url(this.session, this.id, attach.id);
attach.filetype = mail.ChatterUtils.filetype(attach.filename);
attach.filetype = mail.ChatterUtils.filetype(attach.filename || attach.name);
attach.name = mail.ChatterUtils.breakword(attach.name || attach.filename);
attach.formating = true;
}
@@ -1605,7 +1606,8 @@ openerp.mail = function (session) {
this.node.params = _.extend({
'display_indented_thread': -1,
'show_reply_button': false,
'show_read_unread_button': false,
'show_read_unread_button': true,
'read_action': 'unread',
'show_record_name': false,
'show_compact_message': 1,
}, this.node.params);
+5 -2
View File
@@ -216,9 +216,12 @@ openerp_mail_followers = function(session, mail) {
display_subtypes:function (data) {
var self = this;
var subtype_list_ul = this.$('.oe_subtype_list');
subtype_list_ul.empty();
var records = data[this.view.datarecord.id || this.view.dataset.ids[0]].message_subtype_data;
var records = [];
var nb_subtype = 0;
subtype_list_ul.empty();
if (this.view.datarecord.id) {
records = data[this.view.datarecord.id].message_subtype_data;
}
_(records).each(function (record) {nb_subtype++;});
if (nb_subtype > 1) {
this.$('hr').show();
+1 -1
View File
@@ -246,7 +246,7 @@
<a t-if="widget.author_id and widget.options.show_link and widget.author_id[0]" t-attf-href="#model=res.partner&amp;id=#{widget.author_id[0]}"><t t-raw="widget.author_id[2]"/></a>
<span t-if="widget.author_id and (!widget.options.show_link or !widget.author_id[0])"><t t-raw="widget.author_id[2]"/></span>
<span class='oe_subtle'>•</span>
<span t-att-title="widget.date"><t t-raw="widget.timerelative"/></span>
<span t-att-title="widget.date"><t t-if="widget.timerelative" t-raw="widget.timerelative"/><t t-if="!widget.timerelative" t-raw="widget.date"/></span>
<span t-if="!widget.options.readonly" class='oe_subtle'>•</span>
<t t-if="!widget.options.readonly" t-call="mail.thread.message.vote"/>
</div>
+2 -2
View File
@@ -34,12 +34,12 @@ def get_sys_logs(self, cr, uid):
limit_date = limit_date - datetime.timedelta(15)
limit_date_str = limit_date.strftime(misc.DEFAULT_SERVER_DATETIME_FORMAT)
nbr_users = pool.get("res.users").search(cr, uid, [], count=True)
nbr_active_users = pool.get("res.users").search(cr, uid, [("date", ">=", limit_date_str)], count=True)
nbr_active_users = pool.get("res.users").search(cr, uid, [("login_date", ">=", limit_date_str)], count=True)
nbr_share_users = False
nbr_active_share_users = False
if "share" in pool.get("res.users")._all_columns:
nbr_share_users = pool.get("res.users").search(cr, uid, [("share", "=", True)], count=True)
nbr_active_share_users = pool.get("res.users").search(cr, uid, [("share", "=", True), ("date", ">=", limit_date_str)], count=True)
nbr_active_share_users = pool.get("res.users").search(cr, uid, [("share", "=", True), ("login_date", ">=", limit_date_str)], count=True)
user = pool.get("res.users").browse(cr, uid, uid)
web_base_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url', 'False')
+12 -4
View File
@@ -52,9 +52,16 @@ class membership_invoice(osv.osv_memory):
'amount': data.member_price
}
invoice_list = partner_obj.create_membership_invoice(cr, uid, context.get('active_ids', []), datas=datas, context=context)
res = mod_obj.get_object_reference(cr, uid, 'account', 'view_account_invoice_filter')
try:
search_view_id = mod_obj.get_object_reference(cr, uid, 'account', 'view_account_invoice_filter')[1]
except ValueError:
search_view_id = False
try:
form_view_id = mod_obj.get_object_reference(cr, uid, 'account', 'invoice_form')[1]
except ValueError:
form_view_id = False
return {
'domain': [('id', 'in', invoice_list)],
'name': 'Membership Invoices',
@@ -62,7 +69,8 @@ class membership_invoice(osv.osv_memory):
'view_mode': 'tree,form',
'res_model': 'account.invoice',
'type': 'ir.actions.act_window',
'search_view_id': res and res[1] or False
'views': [(False, 'tree'), (form_view_id, 'form')],
'search_view_id': search_view_id,
}
membership_invoice()
+1 -1
View File
@@ -28,7 +28,7 @@
'category': 'Manufacturing',
'sequence': 18,
'summary': 'Manufacturing Orders, Bill of Materials, Routing',
'images': ['images/bill_of_materials.jpeg', 'images/manufacturing_order.jpeg', 'images/planning_manufacturing_order.jpeg', 'images/production_analysis.jpeg', 'images/production_dashboard.jpeg','images/routings.jpeg','images/work_centers.jpeg'],
'images': ['images/bill_of_materials.jpeg', 'images/manufacturing_order.jpeg', 'images/planning_manufacturing_order.jpeg', 'images/manufacturing_analysis.jpeg', 'images/production_dashboard.jpeg','images/routings.jpeg','images/work_centers.jpeg'],
'depends': ['product','procurement', 'stock', 'resource', 'purchase','process'],
'description': """
Manage the Manufacturing process in OpenERP
+5
View File
@@ -57,6 +57,11 @@ Notes can be found in the 'Home' menu.
'css': [
'static/src/css/note.css',
],
'images': [
'images/note_kanban.jpeg',
'images/note.jpeg',
'images/categories_tree.jpeg'
],
'installable': True,
'application': True,
'auto_install': False,
+282
View File
@@ -0,0 +1,282 @@
# Mongolian translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
"PO-Revision-Date: 2013-02-06 06:14+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Mongolian <mn@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: 2013-02-07 04:53+0000\n"
"X-Generator: Launchpad (build 16477)\n"
#. module: note
#: field:note.note,memo:0
msgid "Note Content"
msgstr ""
#. module: note
#: view:note.stage:0
msgid "Stages of Notes"
msgstr ""
#. module: note
#: model:note.stage,name:note.demo_note_stage_04
#: model:note.stage,name:note.note_stage_02
msgid "This Week"
msgstr ""
#. module: note
#: model:ir.model,name:note.model_base_config_settings
msgid "base.config.settings"
msgstr ""
#. module: note
#: model:ir.model,name:note.model_note_tag
msgid "Note Tag"
msgstr ""
#. module: note
#: model:res.groups,name:note.group_note_fancy
msgid "Notes / Fancy mode"
msgstr ""
#. module: note
#: model:ir.model,name:note.model_note_note
#: view:note.note:0
msgid "Note"
msgstr ""
#. module: note
#: view:note.note:0
msgid "Group By..."
msgstr ""
#. module: note
#: field:note.note,message_follower_ids:0
msgid "Followers"
msgstr "дагалдагсад"
#. module: note
#: model:ir.actions.act_window,help:note.action_note_note
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to add a personal note.\n"
" </p><p>\n"
" Use notes to organize personal tasks or notes. All\n"
" notes are private; no one else will be able to see them. "
"However\n"
" you can share some notes with other people by inviting "
"followers\n"
" on the note. (Useful for meeting minutes, especially if\n"
" you activate the pad feature for collaborative writings).\n"
" </p><p>\n"
" You can customize how you process your notes/tasks by adding,\n"
" removing or modifying columns.\n"
" </p>\n"
" "
msgstr ""
#. module: note
#: model:note.stage,name:note.demo_note_stage_01
#: model:note.stage,name:note.note_stage_01
msgid "Today"
msgstr ""
#. module: note
#: model:ir.model,name:note.model_res_users
msgid "Users"
msgstr ""
#. module: note
#: view:note.note:0
msgid "í"
msgstr ""
#. module: note
#: view:note.stage:0
msgid "Stage of Notes"
msgstr ""
#. module: note
#: field:note.note,message_unread:0
msgid "Unread Messages"
msgstr ""
#. module: note
#: field:note.note,current_partner_id:0
msgid "unknown"
msgstr ""
#. module: note
#: view:note.note:0
msgid "By sticky note Category"
msgstr ""
#. module: note
#: help:note.note,message_unread:0
msgid "If checked new messages require your attention."
msgstr ""
#. module: note
#: field:note.stage,name:0
msgid "Stage Name"
msgstr ""
#. module: note
#: field:note.note,message_is_follower:0
msgid "Is a Follower"
msgstr ""
#. module: note
#: model:note.stage,name:note.demo_note_stage_02
msgid "Tomorrow"
msgstr ""
#. module: note
#: view:note.note:0
#: field:note.note,open:0
msgid "Active"
msgstr ""
#. module: note
#: help:note.stage,user_id:0
msgid "Owner of the note stage."
msgstr ""
#. module: note
#: model:ir.ui.menu,name:note.menu_notes_stage
msgid "Categories"
msgstr ""
#. module: note
#: view:note.note:0
#: field:note.note,stage_id:0
msgid "Stage"
msgstr ""
#. module: note
#: field:note.tag,name:0
msgid "Tag Name"
msgstr ""
#. module: note
#: field:note.note,message_ids:0
msgid "Messages"
msgstr ""
#. module: note
#: view:base.config.settings:0
#: model:ir.actions.act_window,name:note.action_note_note
#: model:ir.ui.menu,name:note.menu_note_notes
#: view:note.note:0
#: model:note.stage,name:note.note_stage_04
msgid "Notes"
msgstr ""
#. module: note
#: model:note.stage,name:note.demo_note_stage_03
#: model:note.stage,name:note.note_stage_03
msgid "Later"
msgstr ""
#. module: note
#: model:ir.model,name:note.model_note_stage
msgid "Note Stage"
msgstr ""
#. module: note
#: field:note.note,message_summary:0
msgid "Summary"
msgstr "Дүгнэлт"
#. module: note
#: field:note.note,stage_ids:0
msgid "Stages of Users"
msgstr ""
#. module: note
#: field:note.note,name:0
msgid "Note Summary"
msgstr ""
#. module: note
#: model:ir.actions.act_window,name:note.action_note_stage
#: view:note.note:0
msgid "Stages"
msgstr ""
#. module: note
#: help:note.note,message_ids:0
msgid "Messages and communication history"
msgstr ""
#. module: note
#: view:note.note:0
msgid "Delete"
msgstr ""
#. module: note
#: field:note.note,color:0
msgid "Color Index"
msgstr "Өнгөний Индекс"
#. module: note
#: field:note.note,sequence:0
#: field:note.stage,sequence:0
msgid "Sequence"
msgstr ""
#. module: note
#: field:note.note,tag_ids:0
msgid "Tags"
msgstr "Шошгууд"
#. module: note
#: view:note.note:0
msgid "Archive"
msgstr ""
#. module: note
#: field:base.config.settings,module_note_pad:0
msgid "Use collaborative pads (etherpad)"
msgstr ""
#. module: note
#: help:note.note,message_summary:0
msgid ""
"Holds the Chatter summary (number of messages, ...). This summary is "
"directly in html format in order to be inserted in kanban views."
msgstr ""
#. module: note
#: field:base.config.settings,group_note_fancy:0
msgid "Use fancy layouts for notes"
msgstr ""
#. module: note
#: field:note.stage,user_id:0
msgid "Owner"
msgstr ""
#. module: note
#: help:note.stage,sequence:0
msgid "Used to order the note stages"
msgstr ""
#. module: note
#: field:note.note,date_done:0
msgid "Date done"
msgstr ""
#. module: note
#: field:note.stage,fold:0
msgid "Folded by Default"
msgstr ""
+2 -2
View File
@@ -29,7 +29,7 @@ class note_stage(osv.osv):
_columns = {
'name': fields.char('Stage Name', translate=True, required=True),
'sequence': fields.integer('Sequence', help="Used to order the note stages"),
'user_id': fields.many2one('res.users', 'Owner', help="Owner of the note stage.", required=True),
'user_id': fields.many2one('res.users', 'Owner', help="Owner of the note stage.", required=True, ondelete='cascade'),
'fold': fields.boolean('Folded by Default'),
}
_order = 'sequence asc'
@@ -112,7 +112,7 @@ class note_note(osv.osv):
'date_done': fields.date('Date done'),
'color': fields.integer('Color Index'),
'tag_ids' : fields.many2many('note.tag','note_tags_rel','note_id','tag_id','Tags'),
'current_partner_id' : fields.function(_get_my_current_partner),
'current_partner_id' : fields.function(_get_my_current_partner, type="many2one", relation='res.partner', string="Owner"),
}
_defaults = {
'open' : 1,
+2 -2
View File
@@ -24,7 +24,7 @@ class pad_common(osv.osv_memory):
# make sure pad server in the form of http://hostname
if not pad["server"]:
return ''
return pad
if not pad["server"].startswith('http'):
pad["server"] = 'http://' + pad["server"]
pad["server"] = pad["server"].rstrip('/')
@@ -96,7 +96,7 @@ class pad_common(osv.osv_memory):
field = v.column
if hasattr(field,'pad_content_field'):
pad = self.pad_generate_url(cr, uid, context)
default[k] = pad['url']
default[k] = pad.get('url')
return super(pad_common, self).copy(cr, uid, id, default, context)
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+1 -1
View File
@@ -48,7 +48,7 @@ Main Features
* Refund previous sales
""",
'author': 'OpenERP SA',
'images': ['images/cash_registers.jpeg', 'images/pos_analysis.jpeg','images/register_analysis.jpeg','images/sale_order_pos.jpeg','images/product_pos.jpeg'],
'images': ['images/pos_touch_screen.jpeg', 'images/pos_session.jpeg', 'images/pos_analysis.jpeg','images/sale_order_pos.jpeg','images/product_pos.jpeg'],
'depends': ['sale_stock'],
'data': [
'security/point_of_sale_security.xml',
+1 -3
View File
@@ -853,8 +853,7 @@ class pos_order(osv.osv):
inv_line['price_unit'] = line.price_unit
inv_line['discount'] = line.discount
inv_line['name'] = inv_name
inv_line['invoice_line_tax_id'] = ('invoice_line_tax_id' in inv_line)\
and [(6, 0, inv_line['invoice_line_tax_id'])] or []
inv_line['invoice_line_tax_id'] = [(6, 0, [x.id for x in line.product_id.taxes_id] )]
inv_line_ref.create(cr, uid, inv_line, context=context)
inv_ref.button_reset_taxes(cr, uid, [inv_id], context=context)
wf_service.trg_validate(uid, 'pos.order', order.id, 'invoice', cr)
@@ -1156,7 +1155,6 @@ class pos_order_line(osv.osv):
prod = self.pool.get('product.product').browse(cr, uid, product, context=context)
taxes = prod.taxes_id
price = price_unit * (1 - (discount or 0.0) / 100.0)
taxes = account_tax_obj.compute_all(cr, uid, prod.taxes_id, price, qty, product=prod, partner=False)
+16 -2
View File
@@ -233,7 +233,9 @@
font-style: italic;
cursor:pointer;
}
.point-of-sale .oe_pos_synch-notification.oe_inactive{
cursor: default;
}
.point-of-sale .oe_pos_synch-notification .oe_status_red{
display:inline-block;
cursor:pointer;
@@ -542,7 +544,9 @@
background: -webkit-linear-gradient(-90deg,rgba(255,255,255,0),rgba(255,255,255,1), rgba(255,255,255,1));
background: -moz-linear-gradient(-90deg,rgba(255,255,255,0),rgba(255,255,255,1), rgba(255,255,255,1));
background: -ms-linear-gradient(-90deg,rgba(255,255,255,0),rgba(255,255,255,1), rgba(255,255,255,1));
background: linear-gradient(-90deg,rgba(255,255,255,0),rgba(255,255,255,1), rgba(255,255,255,1));
/* for some reason the -90deg orientation doesn't match the -webkit-linear-gradient. It should be 180deg here.
* webkit also insists on rendering *both* gradients instead of only the native one. So it doesn't looks right. ugh.
background: linear-gradient(-90deg,rgba(255,255,255,0),rgba(255,255,255,1), rgba(255,255,255,1)); */
/*background:#FFF;*/
padding: 3px;
padding-top: 15px;
@@ -607,7 +611,9 @@
background: -webkit-linear-gradient(-90deg,rgba(255,255,255,0),rgba(255,255,255,1), rgba(255,255,255,1));
background: -moz-linear-gradient(-90deg,rgba(255,255,255,0),rgba(255,255,255,1), rgba(255,255,255,1));
background: -ms-linear-gradient(-90deg,rgba(255,255,255,0),rgba(255,255,255,1), rgba(255,255,255,1));
/* troublesome in latest webkit
background: linear-gradient(-90deg,rgba(255,255,255,0),rgba(255,255,255,1), rgba(255,255,255,1));
*/
/*background:#FFF;*/
padding: 3px;
padding-top:15px;
@@ -991,12 +997,20 @@
margin-bottom:10px;
}
.point-of-sale .order .summary .line{
float: right;
margin-right:15px;
margin-left: 15px;
padding-top:5px;
border-top: solid 2px;
border-color:#777;
}
.point-of-sale .order .summary .line .subentry{
font-size: 10px;
font-weight: normal;
text-align: center;
}
.point-of-sale .order .summary .line.empty{
text-align: right;
border-color:#BBB;
color:#999;
}
+21 -24
View File
@@ -40,6 +40,10 @@ function openerp_pos_db(instance, module){
//cache the data in memory to avoid roundtrips to the localstorage
this.cache = {};
this.product_by_id = {};
this.product_by_ean13 = {};
this.product_by_category_id = {};
this.category_by_id = {};
this.root_category_id = 0;
this.category_products = {};
@@ -49,6 +53,7 @@ function openerp_pos_db(instance, module){
this.category_search_string = {};
this.packagings_by_id = {};
this.packagings_by_product_id = {};
this.packagings_by_ean13 = {};
},
/* returns the category object from its id. If you pass a list of id as parameters, you get
* a list of category objects.
@@ -137,7 +142,6 @@ function openerp_pos_db(instance, module){
/* saves a record store to the database */
save: function(store,data){
var str_data = JSON.stringify(data);
console.log('Storing '+ Math.round(str_data.length/1024.0)+' KB of data to store: '+store);
localStorage[this.name + '_' + store] = JSON.stringify(data);
this.cache[store] = data;
},
@@ -153,8 +157,7 @@ function openerp_pos_db(instance, module){
return str + '\n';
},
add_products: function(products){
var stored_products = this.load('products',{});
var stored_categories = this.load('categories',{});
var stored_categories = this.product_by_category_id;
if(!products instanceof Array){
products = [products];
@@ -187,10 +190,11 @@ function openerp_pos_db(instance, module){
}
this.category_search_string[ancestor] += search_string;
}
stored_products[product.id] = product;
this.product_by_id[product.id] = product;
if(product.ean13){
this.product_by_ean13[product.ean13] = product;
}
}
this.save('products',stored_products);
this.save('categories',stored_categories);
},
add_packagings: function(packagings){
for(var i = 0, len = packagings.length; i < len; i++){
@@ -200,6 +204,9 @@ function openerp_pos_db(instance, module){
this.packagings_by_product_id[pack.product_id[0]] = [];
}
this.packagings_by_product_id[pack.product_id[0]].push(pack);
if(pack.ean13){
this.packagings_by_ean13[pack.ean13] = pack;
}
}
},
/* removes all the data from the database. TODO : being able to selectively remove data */
@@ -219,31 +226,24 @@ function openerp_pos_db(instance, module){
return count;
},
get_product_by_id: function(id){
return this.load('products',{})[id];
return this.product_by_id[id];
},
get_product_by_ean13: function(ean13){
var products = this.load('products',{});
for(var i in products){
if( products[i] && products[i].ean13 === ean13){
return products[i];
}
if(this.product_by_ean13[ean13]){
return this.product_by_ean13[ean13];
}
for(var p in this.packagings_by_id){
var pack = this.packagings_by_id[p];
if( pack.ean === ean13){
return products[pack.product_id[0]];
}
var pack = this.packagings_by_ean13[ean13];
if(pack){
return this.product_by_id[pack.product_id[0]];
}
return undefined;
},
get_product_by_category: function(category_id){
var stored_categories = this.load('categories',{});
var stored_products = this.load('products',{});
var product_ids = stored_categories[category_id];
var product_ids = this.product_by_category_id[category_id];
var list = [];
if (product_ids) {
for (var i = 0, len = Math.min(product_ids.length, this.limit); i < len; i++) {
list.push(stored_products[product_ids[i]]);
list.push(this.product_by_id[product_ids[i]]);
}
}
return list;
@@ -275,12 +275,9 @@ function openerp_pos_db(instance, module){
},
remove_order: function(order_id){
var orders = this.load('orders',[]);
console.log('Remove order:',order_id);
console.log('Order count:',orders.length);
orders = _.filter(orders, function(order){
return order.id !== order_id;
});
console.log('Order count:',orders.length);
this.save('orders',orders);
},
get_orders: function(){
+102 -55
View File
@@ -1,6 +1,24 @@
function openerp_pos_models(instance, module){ //module is instance.point_of_sale
var QWeb = instance.web.qweb;
// rounds a value with a fixed number of decimals.
// round(3.141492,2) -> 3.14
function round(value,decimals){
var mult = Math.pow(10,decimals || 0);
return Math.round(value*mult)/mult;
}
window.round = round;
// rounds a value with decimal form precision
// round(3.141592,0.025) ->3.125
function round_pr(value,precision){
if(!precision || precision < 0){
throw new Error('round_pr(): needs a precision greater than zero, got '+precision+' instead');
}
return Math.round(value / precision) * precision;
}
window.round_pr = round_pr;
// The PosModel contains the Point Of Sale's representation of the backend.
// Since the PoS must work in standalone ( Without connection to the server )
@@ -24,8 +42,7 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
this.proxy = new module.ProxyDevice(); // used to communicate to the hardware devices via a local proxy
this.db = new module.PosLS(); // a database used to store the products and categories
this.db.clear('products','categories');
this.debug = jQuery.deparam(jQuery.param.querystring()).debug !== undefined; //debug mode
this.debug = jQuery.deparam(jQuery.param.querystring()).debug !== undefined; //debug mode
// default attributes values. If null, it will be loaded below.
this.set({
@@ -101,8 +118,9 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
}).then(function(company_partners){
self.get('company').contact_address = company_partners[0].contact_address;
return self.fetch('res.currency',['symbol','position'],[['id','=',self.get('company').currency_id[0]]]);
return self.fetch('res.currency',['symbol','position','rounding','accuracy'],[['id','=',self.get('company').currency_id[0]]]);
}).then(function(currencies){
console.log('Currency:',currencies[0]);
self.set('currency',currencies[0]);
return self.fetch('product.uom', null, null);
@@ -117,7 +135,7 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
return self.fetch('product.packaging', null, null);
}).then(function(packagings){
self.set('product.packaging',packagings);
return self.fetch('res.users', ['name','ean13'], [['ean13', '!=', false]]);
}).then(function(users){
self.set('user_list',users);
@@ -211,7 +229,6 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
// logs the usefull posmodel data to the console for debug purposes
log_loaded_data: function(){
console.log('PosModel data has been loaded:');
console.log('PosModel: categories:',this.get('categories'));
console.log('PosModel: units:',this.get('units'));
console.log('PosModel: bank_statements:',this.get('bank_statements'));
console.log('PosModel: journals:',this.get('journals'));
@@ -339,19 +356,26 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
this.product = options.product;
this.price = options.product.get('price');
this.quantity = 1;
this.quantityStr = '1';
this.discount = 0;
this.discountStr = '0';
this.type = 'unit';
this.selected = false;
},
// sets a discount [0,100]%
set_discount: function(discount){
this.discount = Math.max(0,Math.min(100,discount));
var disc = Math.min(Math.max(parseFloat(discount) || 0, 0),100);
this.discount = disc;
this.discountStr = '' + disc;
this.trigger('change');
},
// returns the discount [0,100]%
get_discount: function(){
return this.discount;
},
get_discount_str: function(){
return this.discountStr;
},
get_product_type: function(){
return this.type;
},
@@ -359,13 +383,18 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
// product's unity of measure properties. Quantities greater than zero will not get
// rounded to zero
set_quantity: function(quantity){
if(_.isNaN(quantity)){
if(quantity === 'remove'){
this.order.removeOrderline(this);
}else if(quantity !== undefined){
this.quantity = Math.max(0,quantity);
return;
}else{
var quant = Math.max(parseFloat(quantity) || 0, 0);
var unit = this.get_unit();
if(unit && this.quantity > 0 ){
this.quantity = Math.max(unit.rounding, Math.round(quantity / unit.rounding) * unit.rounding);
if(unit){
this.quantity = Math.max(unit.rounding, Math.round(quant / unit.rounding) * unit.rounding);
this.quantityStr = this.quantity.toFixed(Math.max(0,Math.ceil(Math.log(1.0 / unit.rounding) / Math.log(10))));
}else{
this.quantity = quant;
this.quantityStr = '' + this.quantity;
}
}
this.trigger('change');
@@ -374,6 +403,17 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
get_quantity: function(){
return this.quantity;
},
get_quantity_str: function(){
return this.quantityStr;
},
get_quantity_str_with_unit: function(){
var unit = this.get_unit();
if(unit && unit.name !== 'Unit(s)'){
return this.quantityStr + ' ' + unit.name;
}else{
return this.quantityStr;
}
},
// return the unit of measure of the product
get_unit: function(){
var unit_id = (this.product.get('uos_id') || this.product.get('uom_id'));
@@ -390,15 +430,6 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
get_product: function(){
return this.product;
},
// return the base price of this product (for this orderline)
get_price: function(){
return this.price;
},
// changes the base price of the product for this orderline
set_price: function(price){
this.price = price;
this.trigger('change');
},
// selects or deselects this orderline
set_selected: function(selected){
this.selected = selected;
@@ -429,7 +460,7 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
export_as_JSON: function() {
return {
qty: this.get_quantity(),
price_unit: this.get_price(),
price_unit: this.get_unit_price(),
discount: this.get_discount(),
product_id: this.get_product().get('id'),
};
@@ -439,9 +470,10 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
return {
quantity: this.get_quantity(),
unit_name: this.get_unit().name,
price: this.get_price(),
price: this.get_unit_price(),
discount: this.get_discount(),
product_name: this.get_product().get('name'),
price_display : this.get_display_price(),
price_with_tax : this.get_price_with_tax(),
price_without_tax: this.get_price_without_tax(),
tax: this.get_tax(),
@@ -449,6 +481,19 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
product_description_sale: this.get_product().get('description_sale'),
};
},
// changes the base price of the product for this orderline
set_unit_price: function(price){
this.price = round(parseFloat(price) || 0, 2);
this.trigger('change');
},
get_unit_price: function(){
var rounding = this.pos.get('currency').rounding;
return round_pr(this.price,rounding);
},
get_display_price: function(){
var rounding = this.pos.get('currency').rounding;
return round_pr(round_pr(this.get_unit_price() * this.get_quantity(),rounding) * (1- this.get_discount()/100.0),rounding);
},
get_price_without_tax: function(){
return this.get_all_prices().priceWithoutTax;
},
@@ -458,9 +503,10 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
get_tax: function(){
return this.get_all_prices().tax;
},
get_all_prices: function() {
get_all_prices: function(){
var self = this;
var base = this.get_quantity() * this.price * (1 - (this.get_discount() / 100));
var currency_rounding = this.pos.get('currency').rounding;
var base = round_pr(this.get_quantity() * this.get_unit_price() * (1.0 - (this.get_discount() / 100.0)), currency_rounding);
var totalTax = base;
var totalNoTax = base;
@@ -474,12 +520,13 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
if (tax.price_include) {
var tmp;
if (tax.type === "percent") {
tmp = base - (base / (1 + tax.amount));
tmp = base - round_pr(base / (1 + tax.amount),currency_rounding);
} else if (tax.type === "fixed") {
tmp = tax.amount * self.get_quantity();
tmp = round_pr(tax.amount * self.get_quantity(),currency_rounding);
} else {
throw "This type of tax is not supported by the point of sale: " + tax.type;
}
tmp = round_pr(tmp,currency_rounding);
taxtotal += tmp;
totalNoTax -= tmp;
} else {
@@ -491,6 +538,7 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
} else {
throw "This type of tax is not supported by the point of sale: " + tax.type;
}
tmp = round_pr(tmp,currency_rounding);
taxtotal += tmp;
totalTax += tmp;
}
@@ -515,7 +563,7 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
},
//sets the amount of money on this payment line
set_amount: function(value){
this.amount = value;
this.amount = parseFloat(value) || 0;
this.trigger('change');
},
// returns the amount of money on this paymentline
@@ -584,7 +632,7 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
line.set_quantity(options.quantity);
}
if(options.price !== undefined){
line.set_price(options.price);
line.set_unit_price(options.price);
}
var last_orderline = this.getLastOrderline();
@@ -613,14 +661,19 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
getName: function() {
return this.get('name');
},
getTotal: function() {
getSubtotal : function(){
return (this.get('orderLines')).reduce((function(sum, orderLine){
return sum + orderLine.get_display_price();
}), 0);
},
getTotalTaxIncluded: function() {
return (this.get('orderLines')).reduce((function(sum, orderLine) {
return sum + orderLine.get_price_with_tax();
}), 0);
},
getDiscountTotal: function() {
return (this.get('orderLines')).reduce((function(sum, orderLine) {
return sum + (orderLine.get_price() * (orderLine.get_discount()/100) * orderLine.get_quantity());
return sum + (orderLine.get_unit_price() * (orderLine.get_discount()/100) * orderLine.get_quantity());
}), 0);
},
getTotalTaxExcluded: function() {
@@ -639,10 +692,10 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
}), 0);
},
getChange: function() {
return this.getPaidTotal() - this.getTotal();
return this.getPaidTotal() - this.getTotalTaxIncluded();
},
getDueLeft: function() {
return this.getTotal() - this.getPaidTotal();
return this.getTotalTaxIncluded() - this.getPaidTotal();
},
// sets the type of receipt 'receipt'(default) or 'invoice'
set_receipt_type: function(type){
@@ -698,10 +751,12 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
return {
orderlines: orderlines,
paymentlines: paymentlines,
total_with_tax: this.getTotal(),
subtotal: this.getSubtotal(),
total_with_tax: this.getTotalTaxIncluded(),
total_without_tax: this.getTotalTaxExcluded(),
total_tax: this.getTax(),
total_paid: this.getPaidTotal(),
total_discount: this.getDiscountTotal(),
change: this.getChange(),
name : this.getName(),
client: client ? client.name : null ,
@@ -743,7 +798,7 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
return {
name: this.getName(),
amount_paid: this.getPaidTotal(),
amount_total: this.getTotal(),
amount_total: this.getTotalTaxIncluded(),
amount_tax: this.getTax(),
amount_return: this.getChange(),
lines: orderLines,
@@ -800,20 +855,19 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
buffer: (this.get('buffer')) + newChar
});
}
this.updateTarget();
this.trigger('set_value',this.get('buffer'));
},
deleteLastChar: function() {
var tempNewBuffer = this.get('buffer').slice(0, -1);
if(!tempNewBuffer){
this.set({ buffer: "0" });
this.killTarget();
}else{
if (isNaN(tempNewBuffer)) {
tempNewBuffer = "0";
if(this.get('buffer') === ""){
if(this.get('mode') === 'quantity'){
this.trigger('set_value','remove');
}else{
this.trigger('set_value',this.get('buffer'));
}
this.set({ buffer: tempNewBuffer });
this.updateTarget();
}else{
var newBuffer = this.get('buffer').slice(0,-1) || "";
this.set({ buffer: newBuffer });
this.trigger('set_value',this.get('buffer'));
}
},
switchSign: function() {
@@ -822,7 +876,7 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
this.set({
buffer: oldBuffer[0] === '-' ? oldBuffer.substr(1) : "-" + oldBuffer
});
this.updateTarget();
this.trigger('set_value',this.get('buffer'));
},
changeMode: function(newMode) {
this.set({
@@ -836,15 +890,8 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
mode: "quantity"
});
},
updateTarget: function() {
var bufferContent, params;
bufferContent = this.get('buffer');
if (bufferContent && !isNaN(bufferContent)) {
this.trigger('set_value', parseFloat(bufferContent));
}
},
killTarget: function(){
this.trigger('set_value',Number.NaN);
resetValue: function(){
this.set({buffer:'0'});
},
});
}
+27 -20
View File
@@ -368,7 +368,6 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
module.ChooseReceiptPopupWidget = module.PopUpWidget.extend({
template:'ChooseReceiptPopupWidget',
show: function(){
console.log('show');
this._super();
this.renderElement();
var self = this;
@@ -603,7 +602,6 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
// initiates the connection to the payment terminal and starts the update requests
this.start = function(){
var def = new $.Deferred();
console.log("START");
self.pos.proxy.payment_request(self.pos.get('selectedOrder').getDueLeft())
.done(function(ack){
if(ack === 'ok'){
@@ -613,7 +611,6 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
}else{
console.error('unknown payment request return value:',ack);
}
console.log("START_END");
def.resolve();
});
return def;
@@ -621,10 +618,8 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
// gets updated status from the payment terminal and performs the appropriate consequences
this.update = function(){
console.log("UPDATE");
var def = new $.Deferred();
if(self.canceled){
console.log("UPDATE_END");
return def.resolve();
}
self.pos.proxy.payment_status()
@@ -656,7 +651,6 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
}else{
console.error('unknown status value:',status.status);
}
console.log("UPDATE_END");
def.resolve();
});
return def;
@@ -664,14 +658,12 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
// cancels a payment.
this.cancel = function(){
console.log("CANCEL");
if(!self.paid && !self.canceled){
self.canceled = true;
self.pos.proxy.payment_cancel();
self.pos_widget.screen_selector.set_current_screen(self.previous_screen);
self.queue.clear();
}
console.log("CANCEL_END");
return (new $.Deferred()).resolve();
}
@@ -865,6 +857,7 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
this.bindPaymentLineEvents();
this.bind_orderline_events();
this.paymentlinewidgets = [];
this.focusedLine = null;
},
show: function(){
this._super();
@@ -894,6 +887,7 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
});
this.updatePaymentSummary();
this.line_refocus();
},
close: function(){
this._super();
@@ -931,17 +925,30 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
this.bind_orderline_events();
this.renderElement();
},
line_refocus: function(lineWidget){
if(lineWidget){
if(this.focusedLine !== lineWidget){
this.focusedLine = lineWidget;
}
}
if(this.focusedLine){
this.focusedLine.focus();
}
},
addPaymentLine: function(newPaymentLine) {
var self = this;
var l = new module.PaymentlineWidget(null, {
payment_line: newPaymentLine
var l = new module.PaymentlineWidget(this, {
payment_line: newPaymentLine,
});
l.on('delete_payment_line', self, function(r) {
self.deleteLine(r);
});
l.appendTo(this.$('#paymentlines'));
this.paymentlinewidgets.push(l);
this.$('.paymentline-amount input:last').focus();
if(this.numpadState){
this.numpadState.resetValue();
}
this.line_refocus(l);
},
renderElement: function() {
this._super();
@@ -958,25 +965,26 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
},
deleteLine: function(lineWidget) {
this.currentPaymentLines.remove([lineWidget.payment_line]);
lineWidget.destroy();
},
updatePaymentSummary: function() {
var currentOrder = this.pos.get('selectedOrder');
var paidTotal = currentOrder.getPaidTotal();
var dueTotal = currentOrder.getTotal();
var dueTotal = currentOrder.getTotalTaxIncluded();
var remaining = dueTotal > paidTotal ? dueTotal - paidTotal : 0;
var change = paidTotal > dueTotal ? paidTotal - dueTotal : 0;
this.$('#payment-due-total').html(dueTotal.toFixed(2));
this.$('#payment-paid-total').html(paidTotal.toFixed(2));
this.$('#payment-remaining').html(remaining.toFixed(2));
this.$('#payment-change').html(change.toFixed(2));
if((currentOrder.selected_orderline == undefined))
remaining = 1
this.$('#payment-due-total').html(this.format_currency(dueTotal));
this.$('#payment-paid-total').html(this.format_currency(paidTotal));
this.$('#payment-remaining').html(this.format_currency(remaining));
this.$('#payment-change').html(this.format_currency(change));
if(currentOrder.selected_orderline === undefined){
remaining = 1; // What is this ?
}
if(this.pos_widget.action_bar){
this.pos_widget.action_bar.set_button_disabled('validation', remaining > 0);
}
this.$('.paymentline-amount input:last').focus();
},
set_numpad_state: function(numpadState) {
if (this.numpadState) {
@@ -998,5 +1006,4 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
this.currentPaymentLines.last().set_amount(val);
},
});
}
@@ -22,14 +22,20 @@ function openerp_pos_basewidget(instance, module){ //module is instance.point_of
if(this.pos && this.pos.get('currency')){
this.currency = this.pos.get('currency');
}else{
this.currency = {symbol: '$', position: 'after'};
this.currency = {symbol: '$', position: 'after', rounding: 0.01};
}
var decimals = Math.max(0,Math.ceil(Math.log(1.0 / this.currency.rounding) / Math.log(10)));
this.format_currency = function(amount){
if(typeof amount === 'number'){
amount = Math.round(amount*100)/100;
amount = amount.toFixed(decimals);
}
if(this.currency.position === 'after'){
return Math.round(amount*100)/100 + ' ' + this.currency.symbol;
return amount + ' ' + this.currency.symbol;
}else{
return this.currency.symbol + ' ' + Math.round(amount*100)/100;
return this.currency.symbol + ' ' + amount;
}
}
+29 -22
View File
@@ -186,7 +186,7 @@ function openerp_pos_widgets(instance, module){ //module is instance.point_of_sa
}else if( mode === 'discount'){
order.getSelectedLine().set_discount(val);
}else if( mode === 'price'){
order.getSelectedLine().set_price(val);
order.getSelectedLine().set_unit_price(val);
}
} else {
this.pos.get('selectedOrder').destroy();
@@ -269,8 +269,10 @@ function openerp_pos_widgets(instance, module){ //module is instance.point_of_sa
},
update_summary: function(){
var order = this.pos.get('selectedOrder');
var total = order ? order.getTotal() : 0;
this.$('.summary .value.total').html(this.format_currency(total));
var total = order ? order.getTotalTaxIncluded() : 0;
var taxes = order ? total - order.getTotalTaxExcluded() : 0;
this.$('.summary .total > .value').html(this.format_currency(total));
this.$('.summary .total .subentry .value').html(this.format_currency(taxes));
},
set_display_mode: function(mode){
if(this.display_mode !== mode){
@@ -311,24 +313,34 @@ function openerp_pos_widgets(instance, module){ //module is instance.point_of_sa
},
changeAmount: function(event) {
var newAmount = event.currentTarget.value;
if (newAmount && !isNaN(newAmount)) {
this.amount = parseFloat(newAmount);
this.payment_line.set_amount(this.amount);
var amount = parseFloat(newAmount);
if(!isNaN(amount)){
this.amount = amount;
this.payment_line.set_amount(amount);
}
},
changedAmount: function() {
if (this.amount !== this.payment_line.get_amount())
if (this.amount !== this.payment_line.get_amount()){
this.renderElement();
}
},
renderElement: function() {
var self = this;
this.name = this.payment_line.get_cashregister().get('journal_id')[1];
this._super();
this.$('input').keyup(_.bind(this.changeAmount, this));
this.$('input').keyup(function(event){
self.changeAmount(event);
});
this.$('.delete-payment-line').click(function() {
self.trigger('delete_payment_line', self);
});
},
focus: function(){
var val = this.$('input')[0].value;
this.$('input')[0].focus();
this.$('input')[0].value = val;
this.$('input')[0].select();
},
});
module.OrderButtonWidget = module.PosBaseWidget.extend({
@@ -606,20 +618,15 @@ function openerp_pos_widgets(instance, module){ //module is instance.point_of_sa
if(this.scrollbar){
this.scrollbar.destroy();
}
this.pos.get('products')
.chain()
.map(function(product) {
var product = new module.ProductWidget(self, {
model: product,
weight: self.weight,
click_product_action: self.click_product_action,
})
self.productwidgets.push(product);
return product;
})
.invoke('appendTo', this.$('.product-list'));
var products = this.pos.get('products').models || [];
for(var i = 0, len = products.length; i < len; i++){
var product = new module.ProductWidget(self, {
model: products[i],
click_product_action: this.click_product_action,
});
this.productwidgets.push(product);
product.appendTo(this.$('.product-list'));
}
this.scrollbar = new module.ScrollbarWidget(this,{
target_widget: this,
target_selector: '.product-list-scroller',
+42 -45
View File
@@ -48,11 +48,17 @@
</t>
<t t-name="SynchNotificationWidget">
<div class="oe_pos_synch-notification">
<t t-if="widget.get_nbr_pending() > 0" t-esc="widget.get_nbr_pending()"/>
<div t-if="widget.get_nbr_pending() > 0" class="oe_status_red"></div>
<div t-if="widget.get_nbr_pending() === 0" class="oe_status_green"></div>
</div>
<t t-if="widget.get_nbr_pending() > 0">
<div class="oe_pos_synch-notification">
<t t-esc="widget.get_nbr_pending()"/>
<div class="oe_status_red"></div>
</div>
</t>
<t t-if="widget.get_nbr_pending() === 0">
<div class="oe_pos_synch-notification oe_inactive">
<div class="oe_status_green"></div>
</div>
</t>
</t>
<t t-name="HeaderButtonWidget">
@@ -214,11 +220,7 @@
<span class="left-block">
Total:
</span>
<span class="right-block">
<t t-if="widget.currency.position == 'before'" t-esc="widget.currency.symbol"/>
<span id="payment-due-total"></span>
<t t-if="widget.currency.position == 'after'" t-esc="widget.currency.symbol"/>
</span>
<span class='right-block' id="payment-due-total"></span>
</div>
<table id="paymentlines">
</table>
@@ -227,31 +229,19 @@
<span class='left-block'>
Paid:
</span>
<span class='right-block'>
<t t-if="widget.currency.position == 'before'" t-esc="widget.currency.symbol"/>
<span id="payment-paid-total"></span>
<t t-if="widget.currency.position == 'after'" t-esc="widget.currency.symbol"/>
</span>
<span class='right-block' id="payment-paid-total"></span>
</div>
<div class="infoline">
<span class='left-block'>
Remaining:
</span>
<span class='right-block'>
<t t-if="widget.currency.position == 'before'" t-esc="widget.currency.symbol"/>
<span id="payment-remaining"></span>
<t t-if="widget.currency.position == 'after'" t-esc="widget.currency.symbol"/>
</span>
<span class='right-block' id="payment-remaining"></span>
</div>
<div class="infoline" >
<span class='left-block'>
Change:
</span>
<span class='right-block'>
<t t-if="widget.currency.position == 'before'" t-esc="widget.currency.symbol"/>
<span id="payment-change"></span>
<t t-if="widget.currency.position == 'after'" t-esc="widget.currency.symbol"/>
</span>
<span class='right-block' id="payment-change"></span>
</div>
</div>
</div>
@@ -431,9 +421,13 @@
</ul>
<div class="summary">
<span t-attf-class="line #{widget.pos.get('selectedOrder').get('orderLines').length === 0 ? 'empty' : ''}">
<span class="label total">Total:</span> <span class="value total">0.00 €</span>
</span>
<div t-attf-class="line #{widget.pos.get('selectedOrder').get('orderLines').length === 0 ? 'empty' : ''}">
<div class='entry total'>
<span class="label">Total: </span> <span class="value">0.00 €</span>
<div class='subentry'>Taxes: <span class="value">0.00€</span></div>
</div>
</div>
<div class='clear'></div>
</div>
</div>
</div>
@@ -500,26 +494,26 @@
<t t-esc="widget.model.get_product().get('name')"/>
</span>
<span class="price">
<t t-esc="widget.format_currency(widget.model.get_price_with_tax())"/>
<t t-esc="widget.format_currency(widget.model.get_display_price())"/>
</span>
<ul class="info-list">
<t t-if="widget.model.get_quantity() !== 1.0">
<t t-if="widget.model.get_quantity_str() !== '1'">
<li class="info">
<em>
<t t-esc="widget.model.get_quantity()" />
<t t-esc="widget.model.get_quantity_str()" />
</em>
<t t-esc="widget.model.get_unit().name" />
at
<t t-esc="widget.format_currency(widget.model.get_price())" />
<t t-esc="widget.format_currency(widget.model.get_unit_price())" />
/
<t t-esc="widget.model.get_unit().name" />
</li>
</t>
<t t-if="widget.model.get_discount() > 0">
<t t-if="widget.model.get_discount_str() !== '0'">
<li class="info">
With a
<em>
<t t-esc="widget.model.get_discount()" />%
<t t-esc="widget.model.get_discount_str()" />%
</em>
discount
</li>
@@ -571,33 +565,36 @@
Shop: <t t-esc="widget.shop_obj.name"/><br />
<br />
<table>
<tr t-foreach="widget.currentOrderLines.toArray()" t-as="order">
<tr t-foreach="widget.currentOrderLines.toArray()" t-as="orderline">
<td>
<t t-esc="order.get_product().get('name')"/>
<t t-if="order.get_discount() > 0">
<t t-esc="orderline.get_product().get('name')"/>
<t t-if="orderline.get_discount() > 0">
<div class="pos-disc-font">
With a <t t-esc="order.get_discount()"/>% discount
With a <t t-esc="orderline.get_discount()"/>% discount
</div>
</t>
</td>
<td class="pos-right-align">
<t t-esc="order.get_quantity().toFixed(0)"/>
<t t-esc="orderline.get_quantity_str_with_unit()"/>
</td>
<td class="pos-right-align">
<t t-esc="widget.format_currency(order.get_price() * (1 - order.get_discount()/100) * order.get_quantity().toFixed(2))"/>
<t t-esc="widget.format_currency(orderline.get_display_price())"/>
</td>
</tr>
</table>
<br />
<table>
<tr><td>Subtotal:</td><td class="pos-right-align">
<t t-esc="widget.format_currency(widget.currentOrder.getSubtotal())"/>
</td></tr>
<tr><td>Tax:</td><td class="pos-right-align">
<t t-esc="widget.format_currency(widget.currentOrder.getTax().toFixed(2))"/>
<t t-esc="widget.format_currency(widget.currentOrder.getTax())"/>
</td></tr>
<tr><td>Discount:</td><td class="pos-right-align">
<t t-esc="widget.format_currency(widget.currentOrder.getDiscountTotal().toFixed(2))"/>
<t t-esc="widget.format_currency(widget.currentOrder.getDiscountTotal())"/>
</td></tr>
<tr class="emph"><td>Total:</td><td class="pos-right-align">
<t t-esc="widget.format_currency(widget.currentOrder.getTotal().toFixed(2))"/>
<t t-esc="widget.format_currency(widget.currentOrder.getTotalTaxIncluded())"/>
</td></tr>
</table>
<br />
@@ -607,14 +604,14 @@
<t t-esc="pline.get_cashregister().get('journal_id')[1]"/>
</td>
<td class="pos-right-align">
<t t-esc="widget.format_currency((pline.get_amount()).toFixed(2))"/>
<t t-esc="widget.format_currency(pline.get_amount())"/>
</td>
</tr>
</table>
<br />
<table>
<tr><td>Change:</td><td class="pos-right-align">
<t t-esc="widget.format_currency((widget.currentOrder.getPaidTotal() - widget.currentOrder.getTotal()).toFixed(2))"/>
<t t-esc="widget.format_currency(widget.currentOrder.getPaidTotal() - widget.currentOrder.getTotalTaxIncluded())"/>
</td></tr>
</table>
</div>
+30 -23
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-12-21 17:05+0000\n"
"PO-Revision-Date: 2011-07-11 09:51+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"PO-Revision-Date: 2013-02-05 19:25+0000\n"
"Last-Translator: krnkris <Unknown>\n"
"Language-Team: Hungarian <hu@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-12-22 06:05+0000\n"
"X-Generator: Launchpad (build 16378)\n"
"X-Launchpad-Export-Date: 2013-02-06 05:15+0000\n"
"X-Generator: Launchpad (build 16468)\n"
#. module: portal
#: view:portal.payment.acquirer:0
@@ -41,59 +41,59 @@ msgstr ""
#. module: portal
#: model:mail.group,name:portal.company_jobs
msgid "Company Jobs"
msgstr ""
msgstr "Vállalati feladatok"
#. module: portal
#: view:portal.payment.acquirer:0
msgid "amount: the total amount to pay, as a float"
msgstr ""
msgstr "összeg: a teljes fizetendő mennyiség, mind összegezve"
#. module: portal
#: view:portal.wizard.user:0
msgid "Contacts"
msgstr ""
msgstr "Kapcsolatok"
#. module: portal
#: view:share.wizard:0
#: field:share.wizard,group_ids:0
msgid "Existing groups"
msgstr ""
msgstr "Már létező csoportok"
#. module: portal
#: view:res.groups:0
msgid "Portal Groups"
msgstr ""
msgstr "Portál csoportok"
#. module: portal
#: field:portal.wizard,welcome_message:0
msgid "Invitation Message"
msgstr ""
msgstr "Meghívó szövege"
#. module: portal
#: view:res.groups:0
msgid "Non-Portal Groups"
msgstr ""
msgstr "Nem portál csoportok"
#. module: portal
#: code:addons/portal/wizard/share_wizard.py:54
#, python-format
msgid "Please select at least one group to share with"
msgstr ""
msgstr "Kérem legalább egy csoport kiválasztását akivel megosztja"
#. module: portal
#: view:share.wizard:0
msgid "Details"
msgstr ""
msgstr "Részletek"
#. module: portal
#: model:ir.ui.menu,name:portal.portal_orders
msgid "Quotations and Sales Orders"
msgstr ""
msgstr "Árajánlatok és vevői megrendelések"
#. module: portal
#: view:portal.payment.acquirer:0
msgid "reference: the reference number of the document to pay"
msgstr ""
msgstr "referencia: a fizetni kívánt dokumentum referencia száma"
#. module: portal
#: help:portal.payment.acquirer,visible:0
@@ -101,16 +101,18 @@ msgid ""
"Make this payment acquirer available in portal forms (Customer invoices, "
"etc.)"
msgstr ""
"Ez a fizetési igénylő legyen elérhető a portál űrlapokon (Vevők számlái, "
"stb.)"
#. module: portal
#: model:ir.model,name:portal.model_share_wizard
msgid "Share Wizard"
msgstr ""
msgstr "Megosztás varázsló"
#. module: portal
#: field:portal.wizard.user,email:0
msgid "Email"
msgstr ""
msgstr "E-mail"
#. module: portal
#: model:ir.actions.client,help:portal.action_news
@@ -120,6 +122,10 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p>\n"
" Önnek nincsenek olvasatlan hírek a vállalattól.\n"
" </p>\n"
" "
#. module: portal
#: code:addons/portal/wizard/portal_wizard.py:194
@@ -127,17 +133,18 @@ msgstr ""
msgid ""
"You must have an email address in your User Preferences to send emails."
msgstr ""
"Kell lennie egy e-mail címének a felhasználói űrlapján az e-mail küldéséhez."
#. module: portal
#: model:ir.actions.client,name:portal.action_jobs
#: model:ir.ui.menu,name:portal.portal_jobs
msgid "Jobs"
msgstr ""
msgstr "Feladatok"
#. module: portal
#: field:portal.wizard,user_ids:0
msgid "Users"
msgstr ""
msgstr "Felhasználók"
#. module: portal
#: code:addons/portal/acquirer.py:82
@@ -149,7 +156,7 @@ msgstr ""
#: code:addons/portal/acquirer.py:77
#, python-format
msgid "No online payment acquirers configured"
msgstr ""
msgstr "Nincs online fizetési igénylő beállítva"
#. module: portal
#: view:portal.payment.acquirer:0
@@ -191,7 +198,7 @@ msgstr ""
#: field:res.groups,is_portal:0
#: model:res.groups,name:portal.group_portal
msgid "Portal"
msgstr ""
msgstr "Portál"
#. module: portal
#: code:addons/portal/wizard/portal_wizard.py:34
@@ -202,12 +209,12 @@ msgstr ""
#. module: portal
#: model:res.groups,name:portal.group_anonymous
msgid "Anonymous"
msgstr ""
msgstr "Névtelenül"
#. module: portal
#: field:portal.wizard.user,in_portal:0
msgid "In Portal"
msgstr ""
msgstr "Portálon"
#. module: portal
#: model:ir.actions.client,name:portal.action_news
+25
View File
@@ -0,0 +1,25 @@
# Mongolian translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-02-06 09:18+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Mongolian <mn@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: 2013-02-07 04:53+0000\n"
"X-Generator: Launchpad (build 16477)\n"
#. module: portal_anonymous
#. openerp-web
#: code:addons/portal_anonymous/static/src/xml/portal_anonymous.xml:8
#, python-format
msgid "Login"
msgstr ""
+25
View File
@@ -0,0 +1,25 @@
# Turkish translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-02-06 22:17+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Turkish <tr@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: 2013-02-07 04:53+0000\n"
"X-Generator: Launchpad (build 16477)\n"
#. module: portal_anonymous
#. openerp-web
#: code:addons/portal_anonymous/static/src/xml/portal_anonymous.xml:8
#, python-format
msgid "Login"
msgstr "Kullanıcı Adı:"
+59
View File
@@ -0,0 +1,59 @@
# Hungarian translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-02-05 19:15+0000\n"
"Last-Translator: krnkris <Unknown>\n"
"Language-Team: Hungarian <hu@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: 2013-02-06 05:15+0000\n"
"X-Generator: Launchpad (build 16468)\n"
#. module: portal_event
#: view:event.event:0
msgid "Portal Settings"
msgstr "Portál beállítások"
#. module: portal_event
#: model:ir.actions.act_window,help:portal_event.action_event_view
msgid "There are no public events."
msgstr "Nincsenek nyilvános, közösségi rendezvények."
#. module: portal_event
#: selection:event.event,visibility:0
msgid "Private"
msgstr "Privát"
#. module: portal_event
#: model:ir.model,name:portal_event.model_event_event
msgid "Event"
msgstr "Rendezvény"
#. module: portal_event
#: model:ir.actions.act_window,name:portal_event.action_event_view
#: model:ir.ui.menu,name:portal_event.portal_company_events
msgid "Events"
msgstr "Rendezvények"
#. module: portal_event
#: field:event.event,visibility:0
msgid "Visibility"
msgstr "Láthatóság"
#. module: portal_event
#: help:event.event,visibility:0
msgid "Event's visibility in the portal's contact page"
msgstr "Rendezvények láthatósága a portál kapcsolati oldalon"
#. module: portal_event
#: selection:event.event,visibility:0
msgid "Public"
msgstr "Nyilvános"
+146 -58
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-12-21 17:06+0000\n"
"PO-Revision-Date: 2013-02-03 18:26+0000\n"
"PO-Revision-Date: 2013-02-05 19:13+0000\n"
"Last-Translator: krnkris <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-02-04 05:12+0000\n"
"X-Generator: Launchpad (build 16462)\n"
"X-Launchpad-Export-Date: 2013-02-06 05:14+0000\n"
"X-Generator: Launchpad (build 16468)\n"
#. module: procurement
#: model:ir.ui.menu,name:procurement.menu_stock_sched
@@ -242,6 +242,20 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p>\n"
" Beszerzési megrendelés képviseli a termékek bizonyos "
"mennyiségi igényét, egy megadott időben, a megadott helyen. Vevői "
"megrendelések tipikus forrásai a beszerzési megrendeléseknek (de ezek "
"különálló dokumentumok). A beszerzési paraméterektől és a termék "
"beállításától függően, a beszerzési motor kísérletet tesz a kérésnek eleget "
"tenni a termék készletről való visszahívásával, a termék beszállítótól való "
"rendelésével, vagy egy gyártási megrendelés kiállításával, stb. Egy "
"beszerzési kifogás történhet ha a rendszer nem talál módot az igény "
"kielégítésére. Egyes kifogások saját maguktól megoldódnak automatikusan, de "
"mások kézi beavatkozást igényelnek (ezeket egy sajátos hiba üzenet "
"azonosítja).\n"
" </p>\n"
" "
#. module: procurement
#: selection:procurement.order,state:0
@@ -292,7 +306,7 @@ msgstr "Minimum készlet szabály"
#: code:addons/procurement/procurement.py:369
#, python-format
msgid "Procurement '%s' is in exception: "
msgstr ""
msgstr "Beszerzés '%s' kifogásolva van: "
#. module: procurement
#: field:procurement.order,priority:0
@@ -302,7 +316,7 @@ msgstr "Prioritás"
#. module: procurement
#: view:stock.warehouse.orderpoint:0
msgid "Reordering Rules Search"
msgstr ""
msgstr "Újrerendelési szabályok keresése"
#. module: procurement
#: selection:procurement.order,state:0
@@ -312,7 +326,7 @@ msgstr "Várakozó"
#. module: procurement
#: field:procurement.order,message_follower_ids:0
msgid "Followers"
msgstr ""
msgstr "Követők"
#. module: procurement
#: field:procurement.order,location_id:0
@@ -342,17 +356,17 @@ msgstr "Legjobb ár (még nem aktív!)"
#: code:addons/procurement/schedulers.py:110
#, python-format
msgid "PROC %d: from stock - %3.2f %-5s - %s"
msgstr ""
msgstr "PROC %d: raktárról - %3.2f %-5s - %s"
#. module: procurement
#: model:ir.model,name:procurement.model_procurement_order_compute
msgid "Compute Procurement"
msgstr ""
msgstr "Beszerzés számítás"
#. module: procurement
#: field:res.company,schedule_range:0
msgid "Scheduler Range Days"
msgstr ""
msgstr "Ütemterv tartomány nanjai"
#. module: procurement
#: view:make.procurement:0
@@ -380,6 +394,7 @@ msgstr "Mennyiség"
#, python-format
msgid "Not enough stock and no minimum orderpoint rule defined."
msgstr ""
"Nincs definiálva elegendő készlet és mimimum megrendelés pontja szabály."
#. module: procurement
#: field:make.procurement,uom_id:0
@@ -391,7 +406,7 @@ msgstr "Mértékegység"
#: selection:procurement.order,procure_method:0
#: selection:product.template,procure_method:0
msgid "Make to Stock"
msgstr ""
msgstr "Beszerzés készletből"
#. module: procurement
#: model:ir.actions.act_window,help:procurement.procurement_action
@@ -413,6 +428,23 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" Kattintson beszerzési megrendelés létrehozásához. \n"
" </p><p>\n"
" A beszerzési megrendelést a konkrét helyen és konkrét "
"termék\n"
" igényének rögzítésére használják. A beszerzési "
"megrendelések\n"
" általában automatikusan létrehozottak megrendelésekből, "
"kihúzási \n"
" logisztikából vagy minimum készlet szabályokból.\n"
" </p><p>\n"
" Beszerzési megrendelés visszaigazolása után, automatikusan\n"
" létrehozza a szükséges műveleteket az igény kielégítéséhez: "
"beszerzési\n"
" megrendelés javaslat, gyártási megrendelés, stb.\n"
" </p>\n"
" "
#. module: procurement
#: help:procurement.order,procure_method:0
@@ -420,6 +452,8 @@ msgid ""
"If you encode manually a Procurement, you probably want to use a make to "
"order method."
msgstr ""
"Ha kézzel viszi be a beszerzési megrendelést, akkor biztosan a készlet a "
"gyártásból módszert használja."
#. module: procurement
#: model:ir.ui.menu,name:procurement.menu_stock_procurement
@@ -432,6 +466,8 @@ msgid ""
"use the available\n"
" inventory"
msgstr ""
"használja az elérhető\n"
" készletet"
#. module: procurement
#: model:ir.model,name:procurement.model_procurement_order
@@ -448,7 +484,7 @@ msgstr "Beszerzési megrendelések"
#. module: procurement
#: view:procurement.order:0
msgid "To Fix"
msgstr ""
msgstr "Rögzít"
#. module: procurement
#: view:procurement.order:0
@@ -458,33 +494,33 @@ msgstr "Kivételek"
#. module: procurement
#: model:process.node,note:procurement.process_node_serviceonorder0
msgid "Assignment from Production or Purchase Order."
msgstr ""
msgstr "Ellátás gyártási vagy beszerzési megrendelésből."
#. module: procurement
#: model:ir.model,name:procurement.model_mrp_property
msgid "Property"
msgstr ""
msgstr "Tulajdonság"
#. module: procurement
#: model:ir.actions.act_window,name:procurement.act_make_procurement
#: view:make.procurement:0
msgid "Procurement Request"
msgstr ""
msgstr "Beszerzési igény"
#. module: procurement
#: view:procurement.orderpoint.compute:0
msgid "Compute Stock"
msgstr ""
msgstr "Készlet számítás"
#. module: procurement
#: field:stock.warehouse.orderpoint,procurement_draft_ids:0
msgid "Related Procurement Orders"
msgstr ""
msgstr "Kapcsolódó beszerzési megrendelések"
#. module: procurement
#: field:procurement.order,message_unread:0
msgid "Unread Messages"
msgstr ""
msgstr "Olvasatlan üzenetek"
#. module: procurement
#: selection:mrp.property,composition:0
@@ -504,6 +540,15 @@ msgid ""
" It is in 'Waiting'. status when the procurement is waiting for another one "
"to finish."
msgstr ""
"Ha egy beszerzést rögzít akkor annak állapota a 'Terv' lesz.\n"
" Ha a beszerzés visszaigazolt, az állapot be lesz állítva mint "
"'Visszaigazolt'. \n"
"A visszaigazolás után az állapot be lesz állítva mint 'Folyamatban'.\n"
" Ha valamilyen kifogás van a megrendelésben az állapot be lesz állítva mint "
"'Kifogásolva'.\n"
" Miután a kifogás meg lett oldva és eltávolítva az állapot be lesz állítva "
"mint 'Kész'.\n"
" 'Várakozik' állapotban van, ha a beszerzés egy másik befejezésére vár."
#. module: procurement
#: help:stock.warehouse.orderpoint,active:0
@@ -511,6 +556,8 @@ msgid ""
"If the active field is set to False, it will allow you to hide the "
"orderpoint without removing it."
msgstr ""
"Ha az aktív mező hamisra állított, akkor lehetősége van a megrendelési "
"pontot eltüntetni, annak törlése nélkül."
#. module: procurement
#: view:product.product:0
@@ -520,17 +567,23 @@ msgid ""
"procurement method as\n"
" 'Make to Stock'."
msgstr ""
"Ha értékesíti ezt a szolgáltatást, nem lesz különösebb kapcsolás "
"végrehajtva\n"
" szállítva lesz a vevőnek, a beszerzési módban "
"beállítottak szerint mint\n"
" 'Beszerzés készletből'."
#. module: procurement
#: help:procurement.orderpoint.compute,automatic:0
msgid "If the stock of a product is under 0, it will act like an orderpoint"
msgstr ""
"Ha a termék készlete 0 alatti, akkor az úgy működik mint megrendelési pont"
#. module: procurement
#: field:procurement.order,product_uom:0
#: field:stock.warehouse.orderpoint,product_uom:0
msgid "Product Unit of Measure"
msgstr ""
msgstr "Termék mértékegysége"
#. module: procurement
#: constraint:stock.warehouse.orderpoint:0
@@ -538,6 +591,8 @@ msgid ""
"You have to select a product unit of measure in the same category than the "
"default unit of measure of the product"
msgstr ""
"Ki kell választania a termék mértékegységét ugyanabból a kategóriából mint a "
"termék alapértelmezett mértékegysége"
#. module: procurement
#: view:procurement.order:0
@@ -550,6 +605,8 @@ msgid ""
"as it's a consumable (as a result of this, the quantity\n"
" on hand may become negative)."
msgstr ""
"mivel ez fogyasztási cikk (ennek eredményeképpen, a készlet\n"
" mennyiség negatív lehet ezután)."
#. module: procurement
#: field:procurement.order,note:0
@@ -563,6 +620,9 @@ msgid ""
"OpenERP generates a procurement to bring the forecasted quantity to the Max "
"Quantity."
msgstr ""
"Ha a virtuális készlet kevesebb lesz mint az ehhez a mezőhöz tartozó Min "
"mennyiség, OpenERP generálni fog egy beszerzést ahhoz, hogy az előzetes "
"mennyiséget Max mennyiségbe emelje."
#. module: procurement
#: selection:procurement.order,state:0
@@ -574,12 +634,12 @@ msgstr "Tervezet"
#: model:ir.ui.menu,name:procurement.menu_stock_proc_schedulers
#: view:procurement.order.compute.all:0
msgid "Run Schedulers"
msgstr ""
msgstr "Ütemezők futtatása"
#. module: procurement
#: view:procurement.order.compute:0
msgid "This wizard will schedule procurements."
msgstr ""
msgstr "Ez a varázsló ütemezni fogja a beszerzéseket"
#. module: procurement
#: view:procurement.order:0
@@ -590,12 +650,12 @@ msgstr "Állapot"
#. module: procurement
#: selection:product.template,supply_method:0
msgid "Buy"
msgstr ""
msgstr "Vásárlás"
#. module: procurement
#: view:product.product:0
msgid "for the delivery order."
msgstr ""
msgstr "a megrendeléshez."
#. module: procurement
#: selection:procurement.order,priority:0
@@ -609,22 +669,25 @@ msgid ""
"will be generated, depending on the product type. \n"
"Buy: When procuring the product, a purchase order will be generated."
msgstr ""
"Gyártás: Ha a terméket gyártja, egy gyártási megrendelés vagy munka "
"megrendelés lesz generálva, a termék típusától függően. \n"
"Vásárlás: Ha beszerezi a terméket, egy megrendelés lesz generálva."
#. module: procurement
#: field:stock.warehouse.orderpoint,product_max_qty:0
msgid "Maximum Quantity"
msgstr ""
msgstr "Maximális mennyiség"
#. module: procurement
#: field:procurement.order,message_is_follower:0
msgid "Is a Follower"
msgstr ""
msgstr "Ez egy követő"
#. module: procurement
#: code:addons/procurement/procurement.py:366
#, python-format
msgid "Not enough stock."
msgstr ""
msgstr "Nincs elég készlet."
#. module: procurement
#: field:stock.warehouse.orderpoint,active:0
@@ -643,6 +706,8 @@ msgid ""
"Please check the quantity in procurement order(s) for the product \"%s\", it "
"should not be 0 or less!"
msgstr ""
"Kérem ellenőrizze a beszerzési megrendelése(ke)n a mennyiséget erre a "
"termékre \"%s\", nem lehet 0 vagy kisebb!"
#. module: procurement
#: field:procurement.order,date_planned:0
@@ -660,17 +725,20 @@ msgid ""
"When you sell this product, a delivery order will be created.\n"
" OpenERP will consider that the"
msgstr ""
"Ha értékesíti ezt a terméket, egy kézbesítési kiszállítási jegy lesz "
"létrehozva.\n"
" OpenERP úgy fogja tekinteni mint"
#. module: procurement
#: code:addons/procurement/schedulers.py:133
#, python-format
msgid "Automatic OP: %s"
msgstr ""
msgstr "Automatikus megrendelési pont: %s"
#. module: procurement
#: model:ir.model,name:procurement.model_procurement_orderpoint_compute
msgid "Automatic Order Point"
msgstr ""
msgstr "Automatikus megrendelési pont"
#. module: procurement
#: field:stock.warehouse.orderpoint,qty_multiple:0
@@ -680,7 +748,7 @@ msgstr "Rendelési egység"
#. module: procurement
#: help:stock.warehouse.orderpoint,qty_multiple:0
msgid "The procurement quantity will be rounded up to this multiple."
msgstr ""
msgstr "A beszerzési mennyiség kerekítve lesz eddig a sokszorosig."
#. module: procurement
#: model:ir.model,name:procurement.model_res_company
@@ -695,17 +763,17 @@ msgstr "Extra információ"
#. module: procurement
#: field:procurement.order,message_summary:0
msgid "Summary"
msgstr ""
msgstr "Összegzés"
#. module: procurement
#: sql_constraint:stock.warehouse.orderpoint:0
msgid "Qty Multiple must be greater than zero."
msgstr ""
msgstr "Mennyiség sokszorosnak nagyobbnak kell lenninie mint nulla."
#. module: procurement
#: selection:stock.warehouse.orderpoint,logic:0
msgid "Order to Max"
msgstr ""
msgstr "Maximumig rendelés"
#. module: procurement
#: field:procurement.order,date_close:0
@@ -715,7 +783,7 @@ msgstr "Lezárás dátuma"
#. module: procurement
#: view:res.company:0
msgid "Logistics"
msgstr ""
msgstr "Logisztika"
#. module: procurement
#: help:product.template,procure_method:0
@@ -724,11 +792,15 @@ msgid ""
"for replenishment. \n"
"Make to Order: When needed, the product is purchased or produced."
msgstr ""
"Beszerzés készletből: Ha szükség van rá, a termék a raktár készletről vagy "
"megvárja a feltöltést. \n"
"Beszerzés megrendelésből/vásárlásból: Ha szükség van rá, a termék meg lesz "
"vásárolva vagy termelve lesz."
#. module: procurement
#: field:mrp.property,composition:0
msgid "Properties composition"
msgstr ""
msgstr "Összetételek tulajdonságai"
#. module: procurement
#: code:addons/procurement/procurement.py:310
@@ -741,7 +813,7 @@ msgstr "Elégtelen adat !"
#: field:mrp.property,group_id:0
#: field:mrp.property.group,name:0
msgid "Property Group"
msgstr ""
msgstr "Tulajdonságcsoport"
#. module: procurement
#: view:stock.warehouse.orderpoint:0
@@ -756,7 +828,7 @@ msgstr "Beszerzések"
#. module: procurement
#: view:procurement.order:0
msgid "Run Procurement"
msgstr ""
msgstr "Beszerzés fut"
#. module: procurement
#: selection:procurement.order,state:0
@@ -770,12 +842,12 @@ msgstr "Kész"
#: view:procurement.order.compute.all:0
#: view:procurement.orderpoint.compute:0
msgid "Cancel"
msgstr ""
msgstr "Mégsem"
#. module: procurement
#: field:stock.warehouse.orderpoint,logic:0
msgid "Reordering Mode"
msgstr ""
msgstr "Újrarendelési mód"
#. module: procurement
#: field:procurement.order,origin:0
@@ -791,7 +863,7 @@ msgstr "Nem sürgős"
#: model:ir.actions.act_window,name:procurement.product_open_orderpoint
#: view:product.product:0
msgid "Orderpoints"
msgstr ""
msgstr "Megrendelési pont"
#. module: procurement
#: help:stock.warehouse.orderpoint,product_max_qty:0
@@ -800,11 +872,14 @@ msgid ""
"procurement to bring the forecasted quantity to the Quantity specified as "
"Max Quantity."
msgstr ""
"Ha a virtuális készlet a Min mennyiség alá csökken, OpenERP beszerzést "
"generál, hogy visszaállítsa az előrejelzett mennyiséget a Max mennyiségben "
"beállított értékre."
#. module: procurement
#: model:ir.model,name:procurement.model_procurement_order_compute_all
msgid "Compute all schedulers"
msgstr ""
msgstr "Összes ütemező futtatása"
#. module: procurement
#: view:procurement.order:0
@@ -814,7 +889,7 @@ msgstr "Később"
#. module: procurement
#: view:board.board:0
msgid "Procurements in Exception"
msgstr ""
msgstr "Beszerzések kifogásolásban"
#. module: procurement
#: model:ir.actions.act_window,name:procurement.procurement_action5
@@ -823,7 +898,7 @@ msgstr ""
#: model:ir.ui.menu,name:procurement.menu_stock_procurement_action
#: view:procurement.order:0
msgid "Procurement Exceptions"
msgstr ""
msgstr "Beszerzési kifogások"
#. module: procurement
#: field:product.product,orderpoint_ids:0
@@ -840,11 +915,17 @@ msgid ""
"order or\n"
" a new task."
msgstr ""
"Ennek kitöltésével erre a termékre beszerzési igényt indít.\n"
" A termék beállítása szerint, kapcsolhat egy "
"beszerzési\n"
" megrendelés tervet, egy gyártási megrendelést vagy "
"egy\n"
" új munkát."
#. module: procurement
#: field:procurement.order,close_move:0
msgid "Close Move at end"
msgstr ""
msgstr "A beszerzés végén bezárja"
#. module: procurement
#: view:procurement.order:0
@@ -880,19 +961,19 @@ msgstr "Sürgős"
#. module: procurement
#: selection:procurement.order,state:0
msgid "Running"
msgstr ""
msgstr "Folyamatban"
#. module: procurement
#: model:process.node,name:procurement.process_node_serviceonorder0
#: selection:procurement.order,procure_method:0
#: selection:product.template,procure_method:0
msgid "Make to Order"
msgstr "Rendelésre gyártás/vásárlás"
msgstr "Beszerzés megrendelésből/vásárlásból"
#. module: procurement
#: field:product.template,supply_method:0
msgid "Supply Method"
msgstr ""
msgstr "Ellátás módja"
#. module: procurement
#: field:procurement.order,move_id:0
@@ -907,12 +988,12 @@ msgstr "A beszerzési út függ a termék típusától."
#. module: procurement
#: view:product.product:0
msgid "When you sell this product, OpenERP will"
msgstr ""
msgstr "Ha értékesíti ezt a terméket, akkor az OpenERP fogja"
#. module: procurement
#: view:procurement.order:0
msgid "Temporary Procurement Exceptions"
msgstr ""
msgstr "Ideiglenes beszerzési kifogások"
#. module: procurement
#: field:mrp.property,name:0
@@ -932,13 +1013,15 @@ msgstr "max."
#: model:ir.ui.menu,name:procurement.menu_stock_order_points
#: view:stock.warehouse.orderpoint:0
msgid "Reordering Rules"
msgstr ""
msgstr "Újrarendelési szabályok"
#. module: procurement
#: code:addons/procurement/procurement.py:138
#, python-format
msgid "Cannot delete Procurement Order(s) which are in %s state."
msgstr ""
"Nem tudja törölni a beszerzési megrendelés(eke)t melyek a %s állapotban "
"vannak."
#. module: procurement
#: field:procurement.order,product_uos:0
@@ -948,13 +1031,15 @@ msgstr "Termék eladási egysége"
#. module: procurement
#: model:ir.model,name:procurement.model_product_template
msgid "Product Template"
msgstr ""
msgstr "Terméksablon"
#. module: procurement
#: view:procurement.orderpoint.compute:0
msgid ""
"Wizard checks all the stock minimum rules and generate procurement order."
msgstr ""
"A varázsló ellenőrzi az összes raktár készlet minimum szabályt és beszerzési "
"megrendelést generál."
#. module: procurement
#: view:procurement.order:0
@@ -968,6 +1053,9 @@ msgid ""
"procurements. All procurements that are not between today and today+range "
"are skipped for future computation."
msgstr ""
"Ez az az időkeret amit az időzítő elemez a beszerezés számításánál. Azok a "
"beszerzések melyek nincsenek a mai nap és a mai nap + tartomány között, azok "
"át lesznek lépve és ki lesznek számolva a jövőben."
#. module: procurement
#: selection:procurement.order,priority:0
@@ -977,22 +1065,22 @@ msgstr "Nagyon sürgős"
#. module: procurement
#: field:procurement.orderpoint.compute,automatic:0
msgid "Automatic Orderpoint"
msgstr ""
msgstr "Automatikus megrendelési pont"
#. module: procurement
#: help:procurement.order,message_ids:0
msgid "Messages and communication history"
msgstr ""
msgstr "Üzenetek és kommunikáció történet"
#. module: procurement
#: view:procurement.order:0
msgid "Procurement started late"
msgstr ""
msgstr "A beszerzés később indult"
#. module: procurement
#: selection:mrp.property,composition:0
msgid "min"
msgstr ""
msgstr "perc"
#. module: procurement
#: view:make.procurement:0
@@ -1000,30 +1088,30 @@ msgstr ""
#: view:procurement.order.compute.all:0
#: view:procurement.orderpoint.compute:0
msgid "or"
msgstr ""
msgstr "vagy"
#. module: procurement
#: code:addons/procurement/schedulers.py:134
#, python-format
msgid "SCHEDULER"
msgstr ""
msgstr "ÜTEMEZŐ"
#. module: procurement
#: view:product.product:0
msgid "Request Procurement"
msgstr ""
msgstr "Beszerzési igény"
#. module: procurement
#: code:addons/procurement/schedulers.py:87
#, python-format
msgid "PROC %d: on order - %3.2f %-5s - %s"
msgstr ""
msgstr "PROC %d: megrendelésen - %3.2f %-5s - %s"
#. module: procurement
#: code:addons/procurement/procurement.py:338
#, python-format
msgid "Products reserved from stock."
msgstr ""
msgstr "Termék a raktárkészletről foglalva."
#~ msgid "Configuration"
#~ msgstr "Beállítások"
+73 -73
View File
@@ -1,21 +1,21 @@
# Turkish translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# 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>, 2011.
# 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-12-21 17:06+0000\n"
"PO-Revision-Date: 2011-04-25 11:45+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"PO-Revision-Date: 2013-02-06 17:12+0000\n"
"Last-Translator: Ediz Duman <neps1192@gmail.com>\n"
"Language-Team: Turkish <tr@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-12-22 05:59+0000\n"
"X-Generator: Launchpad (build 16378)\n"
"X-Launchpad-Export-Date: 2013-02-07 04:53+0000\n"
"X-Generator: Launchpad (build 16477)\n"
#. module: procurement
#: model:ir.ui.menu,name:procurement.menu_stock_sched
@@ -41,7 +41,7 @@ msgstr ""
#. module: procurement
#: view:stock.warehouse.orderpoint:0
msgid "Group By..."
msgstr "Gruplandır..."
msgstr "Grupla İle..."
#. module: procurement
#: help:stock.warehouse.orderpoint,procurement_draft_ids:0
@@ -73,7 +73,7 @@ msgstr "Tedarik Yöntemi"
#. module: procurement
#: selection:product.template,supply_method:0
msgid "Manufacture"
msgstr ""
msgstr "Üretici"
#. module: procurement
#: model:process.process,name:procurement.process_process_serviceproductprocess0
@@ -88,7 +88,7 @@ msgstr "Sadece Minimum Stok Kuralını Hesapla"
#. module: procurement
#: view:stock.warehouse.orderpoint:0
msgid "Rules"
msgstr ""
msgstr "Kurallar"
#. module: procurement
#: field:procurement.order,company_id:0
@@ -99,7 +99,7 @@ msgstr "Firma"
#. module: procurement
#: field:procurement.order,product_uos_qty:0
msgid "UoS Quantity"
msgstr "2.Br. Miktarı"
msgstr "UoS Miktarı"
#. module: procurement
#: view:procurement.order:0
@@ -114,12 +114,12 @@ msgstr "Tedarikleri Hesapla"
#. module: procurement
#: field:procurement.order,message:0
msgid "Latest error"
msgstr "Son Hata"
msgstr "Son hata"
#. module: procurement
#: field:stock.warehouse.orderpoint,product_min_qty:0
msgid "Minimum Quantity"
msgstr ""
msgstr "Minimum Miktar"
#. module: procurement
#: help:mrp.property,composition:0
@@ -151,7 +151,7 @@ msgstr ""
#. module: procurement
#: field:procurement.order,message_ids:0
msgid "Messages"
msgstr ""
msgstr "Mesajlar"
#. module: procurement
#: help:procurement.order,message:0
@@ -161,17 +161,17 @@ msgstr "Tedarik emirlerini işlerken bir kuraldışılık oluştu."
#. module: procurement
#: view:product.product:0
msgid "Products"
msgstr ""
msgstr "Ürünler"
#. module: procurement
#: selection:procurement.order,state:0
msgid "Cancelled"
msgstr ""
msgstr "İptalEdillen"
#. module: procurement
#: view:procurement.order:0
msgid "Permanent Procurement Exceptions"
msgstr "Kalıcı Satınalma İstisnaları"
msgstr "Kalıcı Tedarik İstisnaları"
#. module: procurement
#: help:procurement.order,message_unread:0
@@ -191,13 +191,13 @@ msgstr "Stok Hareketi"
#. module: procurement
#: view:product.product:0
msgid "Stockable products"
msgstr ""
msgstr "Stoklanabilir Ürünler"
#. module: procurement
#: code:addons/procurement/procurement.py:137
#, python-format
msgid "Invalid Action!"
msgstr ""
msgstr "Geçersiz İşlem!"
#. module: procurement
#: help:procurement.order,message_summary:0
@@ -242,13 +242,13 @@ msgstr "Onaylandı"
#. module: procurement
#: view:procurement.order:0
msgid "Retry"
msgstr "Yeniden Dene"
msgstr "Yeniden"
#. module: procurement
#: view:procurement.order.compute:0
#: view:procurement.orderpoint.compute:0
msgid "Parameters"
msgstr "Katsayılar"
msgstr "Paremetreler"
#. module: procurement
#: view:procurement.order:0
@@ -258,7 +258,7 @@ msgstr "Onayla"
#. module: procurement
#: view:stock.warehouse.orderpoint:0
msgid "Quantity Multiple"
msgstr ""
msgstr "Çoklu Miktar"
#. module: procurement
#: help:procurement.order,origin:0
@@ -270,7 +270,7 @@ msgstr "Open ERP, bu tedariği başlatan belgeyi otomatik olarak kapamıştır."
#. module: procurement
#: view:stock.warehouse.orderpoint:0
msgid "Procurement Orders to Process"
msgstr "İşlenecek Tedarik Emirleri"
msgstr "İşlenecek Tedarik siparişleri"
#. module: procurement
#: model:ir.model,name:procurement.model_stock_warehouse_orderpoint
@@ -281,7 +281,7 @@ msgstr "Minimum Envanter Kuralı"
#: code:addons/procurement/procurement.py:369
#, python-format
msgid "Procurement '%s' is in exception: "
msgstr "Tedarik '%s' de kuraldışılık var: "
msgstr "Tedarik '%s' de istisnalar var: "
#. module: procurement
#: field:procurement.order,priority:0
@@ -296,12 +296,12 @@ msgstr ""
#. module: procurement
#: selection:procurement.order,state:0
msgid "Waiting"
msgstr "Beklemede"
msgstr "Bekleyen"
#. module: procurement
#: field:procurement.order,message_follower_ids:0
msgid "Followers"
msgstr ""
msgstr "Takipçiler"
#. module: procurement
#: field:procurement.order,location_id:0
@@ -313,7 +313,7 @@ msgstr "Lokasyon"
#. module: procurement
#: model:ir.model,name:procurement.model_stock_picking
msgid "Picking List"
msgstr "Paket Listesi"
msgstr "Seçim Listesi"
#. module: procurement
#: field:make.procurement,warehouse_id:0
@@ -336,7 +336,7 @@ msgstr "SATIN %d: stoktan - %3.2f %-5s - %s"
#. module: procurement
#: model:ir.model,name:procurement.model_procurement_order_compute
msgid "Compute Procurement"
msgstr "Satınalmayı Hesapla"
msgstr "Tedarik Hesaplama"
#. module: procurement
#: field:res.company,schedule_range:0
@@ -346,7 +346,7 @@ msgstr "Zamanlayıcı Gün Aralığı"
#. module: procurement
#: view:make.procurement:0
msgid "Ask New Products"
msgstr "Yeni Ürün İste"
msgstr "Yeni Ürün Sor"
#. module: procurement
#: field:make.procurement,date_planned:0
@@ -356,7 +356,7 @@ msgstr "Planlanan Tarih"
#. module: procurement
#: view:procurement.order:0
msgid "Group By"
msgstr "Grupla"
msgstr "Grupla İle"
#. module: procurement
#: field:make.procurement,qty:0
@@ -380,7 +380,7 @@ msgstr "Ölçü Birimi"
#: selection:procurement.order,procure_method:0
#: selection:product.template,procure_method:0
msgid "Make to Stock"
msgstr ""
msgstr "Stok Yap"
#. module: procurement
#: model:ir.actions.act_window,help:procurement.procurement_action
@@ -415,7 +415,7 @@ msgstr ""
#. module: procurement
#: model:ir.ui.menu,name:procurement.menu_stock_procurement
msgid "Automatic Procurements"
msgstr "Otomatik Satınalmalar"
msgstr "Otomatik Tedarikler"
#. module: procurement
#: view:product.product:0
@@ -429,17 +429,17 @@ msgstr ""
#: model:process.process,name:procurement.process_process_procurementprocess0
#: view:procurement.order:0
msgid "Procurement"
msgstr "Satınalma"
msgstr "Tedarik"
#. module: procurement
#: model:ir.actions.act_window,name:procurement.procurement_action
msgid "Procurement Orders"
msgstr "Satınalma Siparişleri"
msgstr "Tedarik Siparişleri"
#. module: procurement
#: view:procurement.order:0
msgid "To Fix"
msgstr "Sabitlemek"
msgstr "Sabitleme"
#. module: procurement
#: view:procurement.order:0
@@ -460,7 +460,7 @@ msgstr "Özellik"
#: model:ir.actions.act_window,name:procurement.act_make_procurement
#: view:make.procurement:0
msgid "Procurement Request"
msgstr "Satınalma İsteği"
msgstr "Tedarik İsteği"
#. module: procurement
#: view:procurement.orderpoint.compute:0
@@ -470,12 +470,12 @@ msgstr "Stok Hesapla"
#. module: procurement
#: field:stock.warehouse.orderpoint,procurement_draft_ids:0
msgid "Related Procurement Orders"
msgstr "İlgili Satınalma Emirleri"
msgstr "İlgili Tedarik Siparişleri"
#. module: procurement
#: field:procurement.order,message_unread:0
msgid "Unread Messages"
msgstr ""
msgstr "Okunmamış mesajlar"
#. module: procurement
#: selection:mrp.property,composition:0
@@ -524,7 +524,7 @@ msgstr ""
#: field:procurement.order,product_uom:0
#: field:stock.warehouse.orderpoint,product_uom:0
msgid "Product Unit of Measure"
msgstr ""
msgstr "Ürün Ölçü Birimi"
#. module: procurement
#: constraint:stock.warehouse.orderpoint:0
@@ -536,7 +536,7 @@ msgstr ""
#. module: procurement
#: view:procurement.order:0
msgid "Procurement Lines"
msgstr "Satınalma Kalemleri"
msgstr "Tedarik Satırları"
#. module: procurement
#: view:product.product:0
@@ -568,7 +568,7 @@ msgstr "Taslak"
#: model:ir.ui.menu,name:procurement.menu_stock_proc_schedulers
#: view:procurement.order.compute.all:0
msgid "Run Schedulers"
msgstr ""
msgstr "Zamanlayıcıları Çalıştır"
#. module: procurement
#: view:procurement.order.compute:0
@@ -579,17 +579,17 @@ msgstr "Bu sihirbaz satınalmaları zamanlayacaktır."
#: view:procurement.order:0
#: field:procurement.order,state:0
msgid "Status"
msgstr "Durum"
msgstr "Durumu"
#. module: procurement
#: selection:product.template,supply_method:0
msgid "Buy"
msgstr ""
msgstr "Alma"
#. module: procurement
#: view:product.product:0
msgid "for the delivery order."
msgstr ""
msgstr "teslimat sipariş için."
#. module: procurement
#: selection:procurement.order,priority:0
@@ -607,12 +607,12 @@ msgstr ""
#. module: procurement
#: field:stock.warehouse.orderpoint,product_max_qty:0
msgid "Maximum Quantity"
msgstr ""
msgstr "Maksimum Miktar"
#. module: procurement
#: field:procurement.order,message_is_follower:0
msgid "Is a Follower"
msgstr ""
msgstr "Bir Takipçisi mi"
#. module: procurement
#: code:addons/procurement/procurement.py:366
@@ -623,12 +623,12 @@ msgstr "Yeterli stok yok."
#. module: procurement
#: field:stock.warehouse.orderpoint,active:0
msgid "Active"
msgstr "Aktif"
msgstr "Etkin"
#. module: procurement
#: model:process.node,name:procurement.process_node_procureproducts0
msgid "Procure Products"
msgstr "Ürünleri Satınal"
msgstr "Tedarik Ürünleri"
#. module: procurement
#: code:addons/procurement/procurement.py:311
@@ -679,17 +679,17 @@ msgstr "Satınalma miktarı bu katsayıya yuvarlanır."
#. module: procurement
#: model:ir.model,name:procurement.model_res_company
msgid "Companies"
msgstr "Şirketler"
msgstr "Firmalar"
#. module: procurement
#: view:procurement.order:0
msgid "Extra Information"
msgstr "Ekstra Bilgi"
msgstr "Ekstra Bilgisi"
#. module: procurement
#: field:procurement.order,message_summary:0
msgid "Summary"
msgstr ""
msgstr "Özet"
#. module: procurement
#: sql_constraint:stock.warehouse.orderpoint:0
@@ -709,7 +709,7 @@ msgstr "Kapanış Tarihi"
#. module: procurement
#: view:res.company:0
msgid "Logistics"
msgstr ""
msgstr "Lojistik"
#. module: procurement
#: help:product.template,procure_method:0
@@ -745,17 +745,17 @@ msgstr "Çeşitli"
#. module: procurement
#: field:stock.move,procurements:0
msgid "Procurements"
msgstr "Satınalmalar"
msgstr "Tedarikler"
#. module: procurement
#: view:procurement.order:0
msgid "Run Procurement"
msgstr "Satınalmayı Çalıştır"
msgstr "Tedarik Çalıştır"
#. module: procurement
#: selection:procurement.order,state:0
msgid "Done"
msgstr "Tamamlandı"
msgstr "Biten"
#. module: procurement
#: view:make.procurement:0
@@ -764,12 +764,12 @@ msgstr "Tamamlandı"
#: view:procurement.order.compute.all:0
#: view:procurement.orderpoint.compute:0
msgid "Cancel"
msgstr "Vazgeç"
msgstr "İptal"
#. module: procurement
#: field:stock.warehouse.orderpoint,logic:0
msgid "Reordering Mode"
msgstr "Tekrar Sipariş Verme Modu"
msgstr "Tekrar Sipariş Modu"
#. module: procurement
#: field:procurement.order,origin:0
@@ -779,13 +779,13 @@ msgstr "Kaynak Belge"
#. module: procurement
#: selection:procurement.order,priority:0
msgid "Not urgent"
msgstr "Acil Değil"
msgstr "Acil değil"
#. module: procurement
#: model:ir.actions.act_window,name:procurement.product_open_orderpoint
#: view:product.product:0
msgid "Orderpoints"
msgstr ""
msgstr "SiparişNoktası"
#. module: procurement
#: help:stock.warehouse.orderpoint,product_max_qty:0
@@ -808,7 +808,7 @@ msgstr "Geç"
#. module: procurement
#: view:board.board:0
msgid "Procurements in Exception"
msgstr "İstisnai Satınalmalar"
msgstr "İstisnai Tedarikler"
#. module: procurement
#: model:ir.actions.act_window,name:procurement.procurement_action5
@@ -817,7 +817,7 @@ msgstr "İstisnai Satınalmalar"
#: model:ir.ui.menu,name:procurement.menu_stock_procurement_action
#: view:procurement.order:0
msgid "Procurement Exceptions"
msgstr "Satınalma İstisnaları"
msgstr "Tedarik İstisnaları"
#. module: procurement
#: field:product.product,orderpoint_ids:0
@@ -874,7 +874,7 @@ msgstr "Acil"
#. module: procurement
#: selection:procurement.order,state:0
msgid "Running"
msgstr "Çalışma"
msgstr "Çalışan"
#. module: procurement
#: model:process.node,name:procurement.process_node_serviceonorder0
@@ -886,7 +886,7 @@ msgstr "Sipariş Ver"
#. module: procurement
#: field:product.template,supply_method:0
msgid "Supply Method"
msgstr ""
msgstr "Tedarik Metodu"
#. module: procurement
#: field:procurement.order,move_id:0
@@ -912,7 +912,7 @@ msgstr "Geçici Satınalma İstisnaları"
#: field:mrp.property,name:0
#: field:stock.warehouse.orderpoint,name:0
msgid "Name"
msgstr "Ad"
msgstr "Adı"
#. module: procurement
#: selection:mrp.property,composition:0
@@ -926,7 +926,7 @@ msgstr "maks"
#: model:ir.ui.menu,name:procurement.menu_stock_order_points
#: view:stock.warehouse.orderpoint:0
msgid "Reordering Rules"
msgstr ""
msgstr "Yeniden Siparişleme Kuralı"
#. module: procurement
#: code:addons/procurement/procurement.py:138
@@ -937,12 +937,12 @@ msgstr ""
#. module: procurement
#: field:procurement.order,product_uos:0
msgid "Product UoS"
msgstr "Stok 2.Birim"
msgstr "Ürün UoS"
#. module: procurement
#: model:ir.model,name:procurement.model_product_template
msgid "Product Template"
msgstr ""
msgstr "Ürün Temaları"
#. module: procurement
#: view:procurement.orderpoint.compute:0
@@ -955,7 +955,7 @@ msgstr ""
#. module: procurement
#: view:procurement.order:0
msgid "Search Procurement"
msgstr "Satınalma Arama"
msgstr "Tedarik Arama"
#. module: procurement
#: help:res.company,schedule_range:0
@@ -981,17 +981,17 @@ msgstr "Otomatik Sipariş Noktası"
#. module: procurement
#: help:procurement.order,message_ids:0
msgid "Messages and communication history"
msgstr ""
msgstr "Mesajlar ve iletişim geçmişi"
#. module: procurement
#: view:procurement.order:0
msgid "Procurement started late"
msgstr "Satınalma geç başladı"
msgstr "Tedarik geç başladı"
#. module: procurement
#: selection:mrp.property,composition:0
msgid "min"
msgstr "dk"
msgstr "dak"
#. module: procurement
#: view:make.procurement:0
@@ -999,7 +999,7 @@ msgstr "dk"
#: view:procurement.order.compute.all:0
#: view:procurement.orderpoint.compute:0
msgid "or"
msgstr ""
msgstr "veya"
#. module: procurement
#: code:addons/procurement/schedulers.py:134
@@ -1010,7 +1010,7 @@ msgstr "ZAMANLAYICI"
#. module: procurement
#: view:product.product:0
msgid "Request Procurement"
msgstr ""
msgstr "Tedarik Talepleri"
#. module: procurement
#: code:addons/procurement/schedulers.py:87
@@ -1022,7 +1022,7 @@ msgstr "SATIN %d: siparişte - %3.2f %-5s - %s"
#: code:addons/procurement/procurement.py:338
#, python-format
msgid "Products reserved from stock."
msgstr ""
msgstr "Ürünler stoktan ayrılmış"
#~ msgid "Notes"
#~ msgstr "Notlar"
+14 -2
View File
@@ -103,7 +103,7 @@ class procurement_order(osv.osv):
readonly=True, required=True, help="If you encode manually a Procurement, you probably want to use" \
" a make to order method."),
'note': fields.text('Note'),
'message': fields.char('Latest error', size=124, help="Exception occurred while computing procurement orders."),
'message': fields.char('Latest error', help="Exception occurred while computing procurement orders."),
'state': fields.selection([
('draft','Draft'),
('cancel','Cancelled'),
@@ -367,10 +367,22 @@ class procurement_order(osv.osv):
if message:
message = _("Procurement '%s' is in exception: ") % (procurement.name) + message
cr.execute('update procurement_order set message=%s where id=%s', (message, procurement.id))
#temporary context passed in write to prevent an infinite loop
ctx_wkf = dict(context or {})
ctx_wkf['workflow.trg_write.%s' % self._name] = False
self.write(cr, uid, [procurement.id], {'message': message},context=ctx_wkf)
self.message_post(cr, uid, [procurement.id], body=message, context=context)
return ok
def _workflow_trigger(self, cr, uid, ids, trigger, context=None):
""" Don't trigger workflow for the element specified in trigger
"""
wkf_op_key = 'workflow.%s.%s' % (trigger, self._name)
if context and not context.get(wkf_op_key, True):
# make sure we don't have a trigger loop while processing triggers
return
return super(procurement_order,self)._workflow_trigger(cr, uid, ids, trigger, context=context)
def action_produce_assign_service(self, cr, uid, ids, context=None):
""" Changes procurement state to Running.
@return: True
+144 -144
View File
File diff suppressed because it is too large Load Diff
+4 -1
View File
@@ -33,7 +33,10 @@
'images/project_task_tree.jpeg',
'images/project_task.jpeg',
'images/project.jpeg',
'images/task_analysis.jpeg'
'images/task_analysis.jpeg',
'images/project_kanban.jpeg',
'images/task_kanban.jpeg',
'images/task_stages.jpeg'
],
'depends': [
'base_setup',
+216 -214
View File
File diff suppressed because it is too large Load Diff

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