[MERGE] from trunk

bzr revid: rco@openerp.com-20130213083519-3nbg40h5em0gfeu3
This commit is contained in:
Raphael Collet
2013-02-13 09:35:19 +01:00
358 changed files with 34663 additions and 17372 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>
+272 -197
View File
File diff suppressed because it is too large Load Diff
+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'
+21 -19
View File
@@ -13,7 +13,8 @@
In order to test the PDF reports defined on an invoice, we will print an Invoice Report
-
!python {model: account.invoice}: |
import netsvc, tools, os
import os
from openerp import netsvc, tools
(data, format) = netsvc.LocalService('report.account.invoice').create(cr, uid, [ref('account.account_invoice_customer0')], {}, {})
if tools.config['test_report_directory']:
file(os.path.join(tools.config['test_report_directory'], 'account-invoice.'+format), 'wb+').write(data)
@@ -22,7 +23,8 @@
In order to test the PDF reports defined on a partner, we will print the Overdue Report
-
!python {model: res.partner}: |
import netsvc, tools, os
import os
from openerp import netsvc, tools
(data, format) = netsvc.LocalService('report.account.overdue').create(cr, uid, [ref('base.res_partner_1'),ref('base.res_partner_2'),ref('base.res_partner_12')], {}, {})
if tools.config['test_report_directory']:
file(os.path.join(tools.config['test_report_directory'], 'account-report_overdue.'+format), 'wb+').write(data)
@@ -32,7 +34,7 @@
!python {model: account.account}: |
ctx={}
data_dict = {'chart_account_id':ref('account.chart0')}
from tools import test_reports
from openerp.tools import test_reports
test_reports.try_report_action(cr, uid, 'action_account_aged_balance_view',wiz_data=data_dict, context=ctx, our_module='account')
-
Print the Account Balance Sheet in Normal mode
@@ -40,7 +42,7 @@
!python {model: account.account}: |
ctx={}
data_dict = {'chart_account_id':ref('account.chart0'), 'account_report_id': ref('account_financial_report_balancesheet0')}
from tools import test_reports
from openerp.tools import test_reports
test_reports.try_report_action(cr, uid, 'action_account_report',wiz_data=data_dict, context=ctx, our_module='account')
-
Print the Account Balance Report in Normal mode through the wizard - From Account Chart
@@ -48,7 +50,7 @@
!python {model: account.account}: |
ctx={}
data_dict = {'chart_account_id':ref('account.chart0')}
from tools import test_reports
from openerp.tools import test_reports
test_reports.try_report_action(cr, uid, 'action_account_balance_menu',wiz_data=data_dict, context=ctx, our_module='account')
-
Print the Central Journal Report - From Account
@@ -58,7 +60,7 @@
ref('account.bank_journal'),ref('account.check_journal'),ref('account.cash_journal')]
ctx={}
data_dict = {'chart_account_id':ref('account.chart0')}
from tools import test_reports
from openerp.tools import test_reports
test_reports.try_report_action(cr, uid, 'action_account_central_journal',wiz_data=data_dict, context=ctx, our_module='account')
-
Print the General Journal Report - From Journal
@@ -68,7 +70,7 @@
ref('account.bank_journal'),ref('account.check_journal'),ref('account.cash_journal')]
ctx={}
data_dict = {'chart_account_id':ref('account.chart0')}
from tools import test_reports
from openerp.tools import test_reports
test_reports.try_report_action(cr, uid, 'action_account_general_journal',wiz_data=data_dict, context=ctx, our_module='account')
-
Print the General Ledger Report in Normal Mode
@@ -76,7 +78,7 @@
!python {model: account.account}: |
ctx={}
data_dict = {'chart_account_id':ref('account.chart0'),'landscape':False}
from tools import test_reports
from openerp.tools import test_reports
test_reports.try_report_action(cr, uid, 'action_account_general_ledger_menu',wiz_data=data_dict, context=ctx, our_module='account')
-
Print the General Ledger Report in Landscape Mode
@@ -84,7 +86,7 @@
!python {model: account.account}: |
ctx={}
data_dict = {'chart_account_id':ref('account.chart0'),'landscape':True}
from tools import test_reports
from openerp.tools import test_reports
test_reports.try_report_action(cr, uid, 'action_account_general_ledger_menu',wiz_data=data_dict, context=ctx, our_module='account')
-
Print Journal Report - From Model
@@ -93,7 +95,7 @@
journal_ids = [ref('account.sales_journal'),ref('account.refund_sales_journal'),ref('account.expenses_journal'),ref('account.refund_expenses_journal'),ref('account.bank_journal'),ref('account.check_journal'),ref('account.cash_journal')]
ctx={}
data_dict = {'chart_account_id':ref('account.chart0'), 'period_from':ref('period_1'), 'period_to':ref('period_12')}
from tools import test_reports
from openerp.tools import test_reports
test_reports.try_report_action(cr, uid, 'action_account_print_journal',wiz_data=data_dict, context=ctx, our_module='account')
-
Print the Partner Balance Report
@@ -101,7 +103,7 @@
!python {model: account.account}: |
ctx={}
data_dict = {'chart_account_id':ref('account.chart0')}
from tools import test_reports
from openerp.tools import test_reports
test_reports.try_report_action(cr, uid, 'action_account_partner_balance',wiz_data=data_dict, context=ctx, our_module='account')
-
Print the Partner Ledger Report
@@ -109,7 +111,7 @@
!python {model: account.account}: |
ctx={}
data_dict = {'chart_account_id':ref('account.chart0'),'page_split': True}
from tools import test_reports
from openerp.tools import test_reports
test_reports.try_report_action(cr, uid, 'action_account_partner_ledger',wiz_data=data_dict, context=ctx, our_module='account')
-
Print the Partner Ledger-Other Report
@@ -117,7 +119,7 @@
!python {model: res.partner}: |
ctx={}
data_dict = {'chart_account_id':ref('account.chart0'),'page_split': False}
from tools import test_reports
from openerp.tools import test_reports
test_reports.try_report_action(cr, uid, 'action_account_partner_ledger',wiz_data=data_dict, context=ctx, our_module='account')
-
Print the Profit-Loss Report in Normal Mode
@@ -125,7 +127,7 @@
!python {model: account.account}: |
ctx={}
data_dict = {'chart_account_id':ref('account.chart0'), 'target_move': 'all', 'account_report_id': ref('account_financial_report_balancesheet0')}
from tools import test_reports
from openerp.tools import test_reports
test_reports.try_report_action(cr, uid, 'action_account_report',wiz_data=data_dict, context=ctx, our_module='account')
-
Print the Analytic Balance Report through the wizard
@@ -134,7 +136,7 @@
ctx={}
ctx.update({'model': 'account.analytic.account','active_ids': [ref('account.analytic_root')]})
data_dict = {}
from tools import test_reports
from openerp.tools import test_reports
test_reports.try_report_action(cr, uid, 'action_account_analytic_balance',wiz_data=data_dict, context=ctx, our_module='account')
-
@@ -144,7 +146,7 @@
ctx={}
ctx.update({'model': 'account.analytic.account','active_ids': [ref('account.analytic_root'),ref('account.analytic_absences'),ref('account.analytic_internal'),ref('account.analytic_our_super_product')]})
data_dict = {}
from tools import test_reports
from openerp.tools import test_reports
test_reports.try_report_action(cr, uid, 'action_account_analytic_cost',wiz_data=data_dict, context=ctx, our_module='account')
-
@@ -154,7 +156,7 @@
ctx={}
ctx.update({'model': 'account.analytic.account','active_ids': [ref('account.analytic_root'),ref('account.analytic_absences'),ref('account.analytic_internal'),ref('account.analytic_our_super_product')]})
data_dict = {}
from tools import test_reports
from openerp.tools import test_reports
test_reports.try_report_action(cr, uid, 'action_account_analytic_cost_ledger_journal',wiz_data=data_dict, context=ctx, our_module='account')
-
@@ -164,7 +166,7 @@
ctx={}
ctx.update({'model': 'account.analytic.journal','active_ids': [ref('account.cose_journal_sale'), ref('account.exp'), ref('account.sit')]})
data_dict = {}
from tools import test_reports
from openerp.tools import test_reports
test_reports.try_report_action(cr, uid, 'action_account_analytic_journal',wiz_data=data_dict, context=ctx, our_module='account')
-
@@ -174,5 +176,5 @@
ctx={}
ctx.update({'model': 'account.analytic.account','active_ids': [ref('account.analytic_root')]})
data_dict = {}
from tools import test_reports
from openerp.tools import test_reports
test_reports.try_report_action(cr, uid, 'action_account_analytic_invert_balance',wiz_data=data_dict, context=ctx, our_module='account')
@@ -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"
+453
View File
@@ -0,0 +1,453 @@
# 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-07 18:41+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-08 04:36+0000\n"
"X-Generator: Launchpad (build 16482)\n"
#. module: account_analytic_plans
#: field:account.analytic.plan.instance,account4_ids:0
msgid "Account4 Id"
msgstr "Account4 Id"
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
#: view:account.crossovered.analytic:0
#: model:ir.actions.act_window,name:account_analytic_plans.action_account_crossovered_analytic
#: model:ir.actions.report.xml,name:account_analytic_plans.account_analytic_account_crossovered_analytic
msgid "Crossovered Analytic"
msgstr "Crossovered Analytic"
#. module: account_analytic_plans
#: field:account.analytic.plan.instance,account5_ids:0
msgid "Account5 Id"
msgstr "Account5 Id"
#. module: account_analytic_plans
#: field:account.crossovered.analytic,date2:0
msgid "End Date"
msgstr "End Date"
#. module: account_analytic_plans
#: field:account.analytic.plan.instance.line,rate:0
msgid "Rate (%)"
msgstr "Rate (%)"
#. module: account_analytic_plans
#: code:addons/account_analytic_plans/account_analytic_plans.py:234
#, python-format
msgid "The total should be between %s and %s."
msgstr "The total should be between %s and %s."
#. module: account_analytic_plans
#: view:account.analytic.plan:0
#: field:account.analytic.plan,name:0
#: field:account.analytic.plan.line,plan_id:0
#: model:ir.actions.act_window,name:account_analytic_plans.account_analytic_plan_form_action
#: model:ir.model,name:account_analytic_plans.model_account_analytic_plan
#: model:ir.ui.menu,name:account_analytic_plans.menu_account_analytic_plan_action
msgid "Analytic Plan"
msgstr "Analytic Plan"
#. module: account_analytic_plans
#: view:analytic.plan.create.model:0
msgid ""
"This distribution model has been saved.You will be able to reuse it later."
msgstr ""
"This distribution model has been saved.You will be able to reuse it later."
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_account_analytic_plan_instance_line
msgid "Analytic Instance Line"
msgstr "Analytic Instance Line"
#. module: account_analytic_plans
#: view:account.analytic.plan.instance.line:0
msgid "Analytic Distribution Lines"
msgstr "Analytic Distribution Lines"
#. module: account_analytic_plans
#: view:account.crossovered.analytic:0
msgid "Print"
msgstr "Print"
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
msgid "To Date"
msgstr "To Date"
#. module: account_analytic_plans
#: field:account.analytic.plan.instance.line,plan_id:0
msgid "Plan Id"
msgstr "Plan Id"
#. module: account_analytic_plans
#: model:ir.actions.act_window,name:account_analytic_plans.account_analytic_plan_instance_action
msgid "Analytic Distribution's Models"
msgstr "Analytic Distribution's Models"
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
msgid "Account Name"
msgstr "Account Name"
#. module: account_analytic_plans
#: view:account.analytic.plan.instance.line:0
msgid "Analytic Distribution Line"
msgstr "Analytic Distribution Line"
#. module: account_analytic_plans
#: field:account.analytic.plan.instance,code:0
msgid "Distribution Code"
msgstr "Distribution Code"
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
#: field:account.analytic.line,percentage:0
msgid "Percentage"
msgstr "Percentage"
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
msgid "Printing date"
msgstr "Printing date"
#. module: account_analytic_plans
#: field:account.crossovered.analytic,empty_line:0
msgid "Dont show empty lines"
msgstr "Dont show empty lines"
#. module: account_analytic_plans
#: code:addons/account_analytic_plans/wizard/account_crossovered_analytic.py:61
#, python-format
msgid "There are no analytic lines related to account %s."
msgstr "There are no analytic lines related to account %s."
#. module: account_analytic_plans
#: field:account.analytic.plan.instance,account3_ids:0
msgid "Account3 Id"
msgstr "Account3 Id"
#. module: account_analytic_plans
#: view:account.crossovered.analytic:0
#: view:analytic.plan.create.model:0
msgid "or"
msgstr "or"
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_account_analytic_line
msgid "Analytic Line"
msgstr "Analytic Line"
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
msgid "100.00%"
msgstr "100.00%"
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
msgid "Currency"
msgstr "Currency"
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
msgid "Analytic Account :"
msgstr "Analytic Account :"
#. module: account_analytic_plans
#: view:analytic.plan.create.model:0
msgid "Save This Distribution as a Model"
msgstr "Save This Distribution as a Model"
#. module: account_analytic_plans
#: view:account.analytic.plan.line:0
#: model:ir.model,name:account_analytic_plans.model_account_analytic_plan_line
msgid "Analytic Plan Line"
msgstr "Analytic Plan Line"
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
msgid "Analytic Account Reference:"
msgstr "Analytic Account Reference:"
#. module: account_analytic_plans
#: field:account.analytic.plan.line,name:0
msgid "Plan Name"
msgstr "Plan Name"
#. module: account_analytic_plans
#: field:account.analytic.plan,default_instance_id:0
msgid "Default Entries"
msgstr "Default Entries"
#. module: account_analytic_plans
#: view:account.analytic.plan:0
#: field:account.analytic.plan,plan_ids:0
#: field:account.journal,plan_id:0
msgid "Analytic Plans"
msgstr "Analytic Plans"
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
msgid "Perc(%)"
msgstr "Perc(%)"
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_account_move_line
msgid "Journal Items"
msgstr "Journal Items"
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_analytic_plan_create_model
msgid "analytic.plan.create.model"
msgstr "analytic.plan.create.model"
#. module: account_analytic_plans
#: field:account.analytic.plan.instance,account1_ids:0
msgid "Account1 Id"
msgstr "Account1 Id"
#. module: account_analytic_plans
#: field:account.analytic.plan.line,max_required:0
msgid "Maximum Allowed (%)"
msgstr "Maximum Allowed (%)"
#. module: account_analytic_plans
#: field:account.analytic.plan.line,root_analytic_id:0
msgid "Root Account"
msgstr "Root Account"
#. module: account_analytic_plans
#: code:addons/account_analytic_plans/wizard/analytic_plan_create_model.py:47
#: view:analytic.plan.create.model:0
#, python-format
msgid "Distribution Model Saved"
msgstr "Distribution Model Saved"
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_account_analytic_plan_instance
msgid "Analytic Plan Instance"
msgstr "Analytic Plan Instance"
#. module: account_analytic_plans
#: model:ir.actions.act_window,name:account_analytic_plans.account_analytic_instance_model_open
msgid "Distribution Models"
msgstr "Distribution Models"
#. module: account_analytic_plans
#: view:analytic.plan.create.model:0
msgid "Ok"
msgstr "Ok"
#. module: account_analytic_plans
#: view:account.analytic.plan.line:0
msgid "Analytic Plan Lines"
msgstr "Analytic Plan Lines"
#. module: account_analytic_plans
#: field:account.analytic.plan.line,min_required:0
msgid "Minimum Allowed (%)"
msgstr "Minimum Allowed (%)"
#. module: account_analytic_plans
#: field:account.analytic.plan.instance,plan_id:0
msgid "Model's Plan"
msgstr "Model's Plan"
#. module: account_analytic_plans
#: field:account.analytic.plan.instance,account2_ids:0
msgid "Account2 Id"
msgstr "Account2 Id"
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_account_bank_statement_line
msgid "Bank Statement Line"
msgstr "Bank Statement Line"
#. module: account_analytic_plans
#: code:addons/account_analytic_plans/account_analytic_plans.py:221
#: code:addons/account_analytic_plans/account_analytic_plans.py:234
#: code:addons/account_analytic_plans/wizard/analytic_plan_create_model.py:38
#: code:addons/account_analytic_plans/wizard/analytic_plan_create_model.py:41
#, python-format
msgid "Error!"
msgstr "Error!"
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
msgid "Amount"
msgstr "Amount"
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_account_crossovered_analytic
msgid "Print Crossovered Analytic"
msgstr "Print Crossovered Analytic"
#. module: account_analytic_plans
#: code:addons/account_analytic_plans/wizard/account_crossovered_analytic.py:61
#, python-format
msgid "User Error!"
msgstr "User Error!"
#. module: account_analytic_plans
#: field:account.analytic.plan.instance,account6_ids:0
msgid "Account6 Id"
msgstr "Account6 Id"
#. module: account_analytic_plans
#: field:account.analytic.plan.instance,journal_id:0
#: view:account.crossovered.analytic:0
#: field:account.crossovered.analytic,journal_ids:0
msgid "Analytic Journal"
msgstr "Analytic Journal"
#. module: account_analytic_plans
#: code:addons/account_analytic_plans/wizard/analytic_plan_create_model.py:38
#, python-format
msgid "Please put a name and a code before saving the model."
msgstr "Please put a name and a code before saving the model."
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
msgid "Quantity"
msgstr "Quantity"
#. module: account_analytic_plans
#: model:ir.ui.menu,name:account_analytic_plans.menu_account_analytic_multi_plan_action
msgid "Multi Plans"
msgstr "Multi Plans"
#. module: account_analytic_plans
#: field:account.analytic.plan.instance,account_ids:0
msgid "Account Id"
msgstr "Account Id"
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
msgid "Code"
msgstr "Code"
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_account_journal
msgid "Journal"
msgstr "Journal"
#. module: account_analytic_plans
#: code:addons/account_analytic_plans/account_analytic_plans.py:342
#: code:addons/account_analytic_plans/account_analytic_plans.py:486
#, python-format
msgid "You have to define an analytic journal on the '%s' journal."
msgstr "You have to define an analytic journal on the '%s' journal."
#. module: account_analytic_plans
#: code:addons/account_analytic_plans/account_analytic_plans.py:342
#: code:addons/account_analytic_plans/account_analytic_plans.py:486
#, python-format
msgid "No Analytic Journal !"
msgstr "No Analytic Journal !"
#. module: account_analytic_plans
#: model:ir.actions.act_window,name:account_analytic_plans.action_analytic_plan_create_model
msgid "analytic.plan.create.model.action"
msgstr "analytic.plan.create.model.action"
#. module: account_analytic_plans
#: field:account.analytic.plan.line,sequence:0
msgid "Sequence"
msgstr "Sequence"
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_account_invoice_line
msgid "Invoice Line"
msgstr "Invoice Line"
#. module: account_analytic_plans
#: code:addons/account_analytic_plans/wizard/analytic_plan_create_model.py:41
#, python-format
msgid "There is no analytic plan defined."
msgstr "There is no analytic plan defined."
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_account_bank_statement
msgid "Bank Statement"
msgstr "Bank Statement"
#. module: account_analytic_plans
#: field:account.analytic.plan.instance.line,analytic_account_id:0
msgid "Analytic Account"
msgstr "Analytic Account"
#. module: account_analytic_plans
#: field:account.analytic.default,analytics_id:0
#: view:account.analytic.plan.instance:0
#: field:account.analytic.plan.instance,name:0
#: field:account.bank.statement.line,analytics_id:0
#: field:account.invoice.line,analytics_id:0
#: field:account.move.line,analytics_id:0
#: model:ir.model,name:account_analytic_plans.model_account_analytic_default
msgid "Analytic Distribution"
msgstr "Analytic Distribution"
#. module: account_analytic_plans
#: code:addons/account_analytic_plans/account_analytic_plans.py:221
#, python-format
msgid "A model with this name and code already exists."
msgstr "A model with this name and code already exists."
#. module: account_analytic_plans
#: help:account.analytic.plan.line,root_analytic_id:0
msgid "Root account of this plan."
msgstr "Root account of this plan."
#. module: account_analytic_plans
#: field:account.crossovered.analytic,ref:0
msgid "Analytic Account Reference"
msgstr "Analytic Account Reference"
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_account_invoice
msgid "Invoice"
msgstr "Invoice"
#. module: account_analytic_plans
#: view:account.crossovered.analytic:0
#: view:analytic.plan.create.model:0
msgid "Cancel"
msgstr "Cancel"
#. module: account_analytic_plans
#: field:account.crossovered.analytic,date1:0
msgid "Start Date"
msgstr "Start Date"
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
msgid "at"
msgstr "at"
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
msgid "Company"
msgstr "Company"
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_sale_order_line
msgid "Sales Order Line"
msgstr "Sales Order Line"
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
msgid "From Date"
msgstr "From Date"
@@ -2,7 +2,8 @@
Print the Crossovered Analytic Report in Normal mode
-
!python {model: account.analytic.account}: |
import netsvc, tools, os, time
import os, time
from openerp import netsvc, tools
data_dict = {'model': 'account.analytic.account', 'form': {'date1':time.strftime("%Y-01-01"),'date2':time.strftime('%Y-%m-%d'),'journal_ids':[6,0,(ref('account.cose_journal_sale'))],'ref':ref('account.analytic_root'),'empty_line':True,'id':ref('account.analytic_root'),'context':{}}}
(data, format) = netsvc.LocalService('report.account.analytic.account.crossovered.analytic').create(cr, uid, [ref('account.analytic_root')], data_dict, {})
if tools.config['test_report_directory']:
+776
View File
@@ -0,0 +1,776 @@
# 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-07 19:27+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-08 04:36+0000\n"
"X-Generator: Launchpad (build 16482)\n"
#. module: account_asset
#: view:account.asset.asset:0
msgid "Assets in draft and open states"
msgstr "Assets in draft and open states"
#. module: account_asset
#: field:account.asset.category,method_end:0
#: field:account.asset.history,method_end:0
#: field:asset.modify,method_end:0
msgid "Ending date"
msgstr "Ending date"
#. module: account_asset
#: field:account.asset.asset,value_residual:0
msgid "Residual Value"
msgstr "Residual Value"
#. module: account_asset
#: field:account.asset.category,account_expense_depreciation_id:0
msgid "Depr. Expense Account"
msgstr "Depr. Expense Account"
#. module: account_asset
#: view:asset.asset.report:0
msgid "Group By..."
msgstr "Group By..."
#. module: account_asset
#: field:asset.asset.report,gross_value:0
msgid "Gross Amount"
msgstr "Gross Amount"
#. module: account_asset
#: view:account.asset.asset:0
#: field:account.asset.depreciation.line,asset_id:0
#: field:account.asset.history,asset_id:0
#: field:account.move.line,asset_id:0
#: view:asset.asset.report:0
#: field:asset.asset.report,asset_id:0
#: model:ir.model,name:account_asset.model_account_asset_asset
msgid "Asset"
msgstr "Asset"
#. module: account_asset
#: help:account.asset.asset,prorata:0
#: help:account.asset.category,prorata:0
msgid ""
"Indicates that the first depreciation entry for this asset have to be done "
"from the purchase date instead of the first January"
msgstr ""
"Indicates that the first depreciation entry for this asset have to be done "
"from the purchase date instead of the first January"
#. module: account_asset
#: selection:account.asset.asset,method:0
#: selection:account.asset.category,method:0
msgid "Linear"
msgstr "Linear"
#. module: account_asset
#: field:account.asset.asset,company_id:0
#: field:account.asset.category,company_id:0
#: view:asset.asset.report:0
#: field:asset.asset.report,company_id:0
msgid "Company"
msgstr "Company"
#. module: account_asset
#: view:asset.modify:0
msgid "Modify"
msgstr "Modify"
#. module: account_asset
#: selection:account.asset.asset,state:0
#: view:asset.asset.report:0
#: selection:asset.asset.report,state:0
msgid "Running"
msgstr "Running"
#. module: account_asset
#: view:account.asset.asset:0
msgid "Set to Draft"
msgstr "Set to Draft"
#. module: account_asset
#: view:asset.asset.report:0
#: model:ir.actions.act_window,name:account_asset.action_asset_asset_report
#: model:ir.model,name:account_asset.model_asset_asset_report
#: model:ir.ui.menu,name:account_asset.menu_action_asset_asset_report
msgid "Assets Analysis"
msgstr "Assets Analysis"
#. module: account_asset
#: field:asset.modify,name:0
msgid "Reason"
msgstr "Reason"
#. module: account_asset
#: field:account.asset.asset,method_progress_factor:0
#: field:account.asset.category,method_progress_factor:0
msgid "Degressive Factor"
msgstr "Degressive Factor"
#. module: account_asset
#: model:ir.actions.act_window,name:account_asset.action_account_asset_asset_list_normal
#: model:ir.ui.menu,name:account_asset.menu_action_account_asset_asset_list_normal
msgid "Asset Categories"
msgstr "Asset Categories"
#. module: account_asset
#: view:account.asset.asset:0
#: field:account.asset.asset,account_move_line_ids:0
#: field:account.move.line,entry_ids:0
#: model:ir.actions.act_window,name:account_asset.act_entries_open
msgid "Entries"
msgstr "Entries"
#. module: account_asset
#: view:account.asset.asset:0
#: field:account.asset.asset,depreciation_line_ids:0
msgid "Depreciation Lines"
msgstr "Depreciation Lines"
#. module: account_asset
#: help:account.asset.asset,salvage_value:0
msgid "It is the amount you plan to have that you cannot depreciate."
msgstr "It is the amount you plan to have that you cannot depreciate."
#. module: account_asset
#: help:account.asset.asset,method_period:0
msgid "The amount of time between two depreciations, in months"
msgstr "The amount of time between two depreciations, in months"
#. module: account_asset
#: field:account.asset.depreciation.line,depreciation_date:0
#: view:asset.asset.report:0
#: field:asset.asset.report,depreciation_date:0
msgid "Depreciation Date"
msgstr "Depreciation Date"
#. module: account_asset
#: constraint:account.asset.asset:0
msgid "Error ! You cannot create recursive assets."
msgstr "Error ! You cannot create recursive assets."
#. module: account_asset
#: field:asset.asset.report,posted_value:0
msgid "Posted Amount"
msgstr "Posted Amount"
#. module: account_asset
#: view:account.asset.asset:0
#: view:asset.asset.report:0
#: model:ir.actions.act_window,name:account_asset.action_account_asset_asset_form
#: model:ir.ui.menu,name:account_asset.menu_action_account_asset_asset_form
#: model:ir.ui.menu,name:account_asset.menu_finance_assets
#: model:ir.ui.menu,name:account_asset.menu_finance_config_assets
msgid "Assets"
msgstr "Assets"
#. module: account_asset
#: field:account.asset.category,account_depreciation_id:0
msgid "Depreciation Account"
msgstr "Depreciation Account"
#. module: account_asset
#: view:account.asset.asset:0
#: view:account.asset.category:0
#: view:account.asset.history:0
#: view:asset.modify:0
#: field:asset.modify,note:0
msgid "Notes"
msgstr "Notes"
#. module: account_asset
#: field:account.asset.depreciation.line,move_id:0
msgid "Depreciation Entry"
msgstr "Depreciation Entry"
#. module: account_asset
#: view:asset.asset.report:0
#: field:asset.asset.report,nbr:0
msgid "# of Depreciation Lines"
msgstr "# of Depreciation Lines"
#. module: account_asset
#: field:account.asset.asset,method_period:0
msgid "Number of Months in a Period"
msgstr "Number of Months in a Period"
#. module: account_asset
#: view:asset.asset.report:0
msgid "Assets in draft state"
msgstr "Assets in draft state"
#. module: account_asset
#: field:account.asset.asset,method_end:0
#: selection:account.asset.asset,method_time:0
#: selection:account.asset.category,method_time:0
#: selection:account.asset.history,method_time:0
msgid "Ending Date"
msgstr "Ending Date"
#. module: account_asset
#: field:account.asset.asset,code:0
msgid "Reference"
msgstr "Reference"
#. module: account_asset
#: view:account.asset.asset:0
msgid "Account Asset"
msgstr "Account Asset"
#. module: account_asset
#: model:ir.actions.act_window,name:account_asset.action_asset_depreciation_confirmation_wizard
#: model:ir.ui.menu,name:account_asset.menu_asset_depreciation_confirmation_wizard
msgid "Compute Assets"
msgstr "Compute Assets"
#. module: account_asset
#: field:account.asset.category,method_period:0
#: field:account.asset.history,method_period:0
#: field:asset.modify,method_period:0
msgid "Period Length"
msgstr "Period Length"
#. module: account_asset
#: selection:account.asset.asset,state:0
#: view:asset.asset.report:0
#: selection:asset.asset.report,state:0
msgid "Draft"
msgstr "Draft"
#. module: account_asset
#: view:asset.asset.report:0
msgid "Date of asset purchase"
msgstr "Date of asset purchase"
#. module: account_asset
#: view:account.asset.asset:0
msgid "Change Duration"
msgstr "Change Duration"
#. module: account_asset
#: help:account.asset.asset,method_number:0
#: help:account.asset.category,method_number:0
#: help:account.asset.history,method_number:0
msgid "The number of depreciations needed to depreciate your asset"
msgstr "The number of depreciations needed to depreciate your asset"
#. module: account_asset
#: view:account.asset.category:0
msgid "Analytic Information"
msgstr "Analytic Information"
#. module: account_asset
#: field:account.asset.category,account_analytic_id:0
msgid "Analytic account"
msgstr "Analytic account"
#. module: account_asset
#: field:account.asset.asset,method:0
#: field:account.asset.category,method:0
msgid "Computation Method"
msgstr "Computation Method"
#. module: account_asset
#: constraint:account.asset.asset:0
msgid ""
"Prorata temporis can be applied only for time method \"number of "
"depreciations\"."
msgstr ""
"Prorata temporis can be applied only for time method \"number of "
"depreciations\"."
#. module: account_asset
#: field:account.asset.depreciation.line,remaining_value:0
msgid "Next Period Depreciation"
msgstr "Next Period Depreciation"
#. module: account_asset
#: help:account.asset.history,method_period:0
msgid "Time in month between two depreciations"
msgstr "Time in month between two depreciations"
#. module: account_asset
#: view:asset.modify:0
#: model:ir.actions.act_window,name:account_asset.action_asset_modify
#: model:ir.model,name:account_asset.model_asset_modify
msgid "Modify Asset"
msgstr "Modify Asset"
#. module: account_asset
#: field:account.asset.asset,salvage_value:0
msgid "Salvage Value"
msgstr "Salvage Value"
#. module: account_asset
#: field:account.asset.asset,category_id:0
#: view:account.asset.category:0
#: field:account.invoice.line,asset_category_id:0
#: view:asset.asset.report:0
msgid "Asset Category"
msgstr "Asset Category"
#. module: account_asset
#: view:account.asset.asset:0
msgid "Assets in closed state"
msgstr "Assets in closed state"
#. module: account_asset
#: field:account.asset.asset,parent_id:0
msgid "Parent Asset"
msgstr "Parent Asset"
#. module: account_asset
#: view:account.asset.history:0
#: model:ir.model,name:account_asset.model_account_asset_history
msgid "Asset history"
msgstr "Asset history"
#. module: account_asset
#: view:account.asset.category:0
msgid "Search Asset Category"
msgstr "Search Asset Category"
#. module: account_asset
#: view:asset.modify:0
msgid "months"
msgstr "months"
#. module: account_asset
#: model:ir.model,name:account_asset.model_account_invoice_line
msgid "Invoice Line"
msgstr "Invoice Line"
#. module: account_asset
#: view:account.asset.asset:0
msgid "Depreciation Board"
msgstr "Depreciation Board"
#. module: account_asset
#: field:asset.asset.report,unposted_value:0
msgid "Unposted Amount"
msgstr "Unposted Amount"
#. module: account_asset
#: field:account.asset.asset,method_time:0
#: field:account.asset.category,method_time:0
#: field:account.asset.history,method_time:0
msgid "Time Method"
msgstr "Time Method"
#. module: account_asset
#: view:asset.depreciation.confirmation.wizard:0
#: view:asset.modify:0
msgid "or"
msgstr "or"
#. module: account_asset
#: field:account.asset.asset,note:0
#: field:account.asset.category,note:0
#: field:account.asset.history,note:0
msgid "Note"
msgstr "Note"
#. module: account_asset
#: help:account.asset.history,method_time:0
msgid ""
"The method to use to compute the dates and number of depreciation lines.\n"
"Number of Depreciations: Fix the number of depreciation lines and the time "
"between 2 depreciations.\n"
"Ending Date: Choose the time between 2 depreciations and the date the "
"depreciations won't go beyond."
msgstr ""
"The method to use to compute the dates and number of depreciation lines.\n"
"Number of Depreciations: Fix the number of depreciation lines and the time "
"between 2 depreciations.\n"
"Ending Date: Choose the time between 2 depreciations and the date the "
"depreciations won't go beyond."
#. module: account_asset
#: help:account.asset.asset,method_time:0
#: help:account.asset.category,method_time:0
msgid ""
"Choose the method to use to compute the dates and number of depreciation "
"lines.\n"
" * Number of Depreciations: Fix the number of depreciation lines and the "
"time between 2 depreciations.\n"
" * Ending Date: Choose the time between 2 depreciations and the date the "
"depreciations won't go beyond."
msgstr ""
"Choose the method to use to compute the dates and number of depreciation "
"lines.\n"
" * Number of Depreciations: Fix the number of depreciation lines and the "
"time between 2 depreciations.\n"
" * Ending Date: Choose the time between 2 depreciations and the date the "
"depreciations won't go beyond."
#. module: account_asset
#: view:asset.asset.report:0
msgid "Assets in running state"
msgstr "Assets in running state"
#. module: account_asset
#: view:account.asset.asset:0
msgid "Closed"
msgstr "Closed"
#. module: account_asset
#: help:account.asset.asset,state:0
msgid ""
"When an asset is created, the status is 'Draft'.\n"
"If the asset is confirmed, the status goes in 'Running' and the depreciation "
"lines can be posted in the accounting.\n"
"You can manually close an asset when the depreciation is over. If the last "
"line of depreciation is posted, the asset automatically goes in that status."
msgstr ""
"When an asset is created, the status is 'Draft'.\n"
"If the asset is confirmed, the status goes in 'Running' and the depreciation "
"lines can be posted in the accounting.\n"
"You can manually close an asset when the depreciation is over. If the last "
"line of depreciation is posted, the asset automatically goes in that status."
#. module: account_asset
#: field:account.asset.asset,state:0
#: field:asset.asset.report,state:0
msgid "Status"
msgstr "Status"
#. module: account_asset
#: field:account.asset.asset,partner_id:0
#: field:asset.asset.report,partner_id:0
msgid "Partner"
msgstr "Partner"
#. module: account_asset
#: view:asset.asset.report:0
msgid "Posted depreciation lines"
msgstr "Posted depreciation lines"
#. module: account_asset
#: field:account.asset.asset,child_ids:0
msgid "Children Assets"
msgstr "Children Assets"
#. module: account_asset
#: view:asset.asset.report:0
msgid "Date of depreciation"
msgstr "Date of depreciation"
#. module: account_asset
#: field:account.asset.history,user_id:0
msgid "User"
msgstr "User"
#. module: account_asset
#: field:account.asset.category,account_asset_id:0
msgid "Asset Account"
msgstr "Asset Account"
#. module: account_asset
#: view:asset.asset.report:0
msgid "Extended Filters..."
msgstr "Extended Filters..."
#. module: account_asset
#: view:account.asset.asset:0
#: view:asset.depreciation.confirmation.wizard:0
msgid "Compute"
msgstr "Compute"
#. module: account_asset
#: view:account.asset.history:0
msgid "Asset History"
msgstr "Asset History"
#. module: account_asset
#: model:ir.model,name:account_asset.model_asset_depreciation_confirmation_wizard
msgid "asset.depreciation.confirmation.wizard"
msgstr "asset.depreciation.confirmation.wizard"
#. module: account_asset
#: field:account.asset.asset,active:0
msgid "Active"
msgstr "Active"
#. module: account_asset
#: field:account.asset.depreciation.line,parent_state:0
msgid "State of Asset"
msgstr "State of Asset"
#. module: account_asset
#: field:account.asset.depreciation.line,name:0
msgid "Depreciation Name"
msgstr "Depreciation Name"
#. module: account_asset
#: view:account.asset.asset:0
#: field:account.asset.asset,history_ids:0
msgid "History"
msgstr "History"
#. module: account_asset
#: view:asset.depreciation.confirmation.wizard:0
msgid "Compute Asset"
msgstr "Compute Asset"
#. module: account_asset
#: field:asset.depreciation.confirmation.wizard,period_id:0
msgid "Period"
msgstr "Period"
#. module: account_asset
#: view:account.asset.asset:0
msgid "General"
msgstr "General"
#. module: account_asset
#: field:account.asset.asset,prorata:0
#: field:account.asset.category,prorata:0
msgid "Prorata Temporis"
msgstr "Prorata Temporis"
#. module: account_asset
#: model:ir.model,name:account_asset.model_account_invoice
msgid "Invoice"
msgstr "Invoice"
#. module: account_asset
#: view:account.asset.asset:0
msgid "Set to Close"
msgstr "Set to Close"
#. module: account_asset
#: view:asset.depreciation.confirmation.wizard:0
#: view:asset.modify:0
msgid "Cancel"
msgstr "Cancel"
#. module: account_asset
#: selection:account.asset.asset,state:0
#: selection:asset.asset.report,state:0
msgid "Close"
msgstr "Close"
#. module: account_asset
#: model:ir.model,name:account_asset.model_account_move_line
msgid "Journal Items"
msgstr "Journal Items"
#. module: account_asset
#: view:asset.modify:0
msgid "Asset Durations to Modify"
msgstr "Asset Durations to Modify"
#. module: account_asset
#: field:account.asset.asset,purchase_date:0
#: view:asset.asset.report:0
#: field:asset.asset.report,purchase_date:0
msgid "Purchase Date"
msgstr "Purchase Date"
#. module: account_asset
#: selection:account.asset.asset,method:0
#: selection:account.asset.category,method:0
msgid "Degressive"
msgstr "Degressive"
#. module: account_asset
#: help:asset.depreciation.confirmation.wizard,period_id:0
msgid ""
"Choose the period for which you want to automatically post the depreciation "
"lines of running assets"
msgstr ""
"Choose the period for which you want to automatically post the depreciation "
"lines of running assets"
#. module: account_asset
#: view:account.asset.asset:0
msgid "Current"
msgstr "Current"
#. module: account_asset
#: view:account.asset.category:0
msgid "Depreciation Method"
msgstr "Depreciation Method"
#. module: account_asset
#: field:account.asset.depreciation.line,amount:0
msgid "Current Depreciation"
msgstr "Current Depreciation"
#. module: account_asset
#: field:account.asset.asset,name:0
msgid "Asset Name"
msgstr "Asset Name"
#. module: account_asset
#: field:account.asset.category,open_asset:0
msgid "Skip Draft State"
msgstr "Skip Draft State"
#. module: account_asset
#: view:account.asset.category:0
msgid "Depreciation Dates"
msgstr "Depreciation Dates"
#. module: account_asset
#: field:account.asset.asset,currency_id:0
msgid "Currency"
msgstr "Currency"
#. module: account_asset
#: field:account.asset.category,journal_id:0
msgid "Journal"
msgstr "Journal"
#. module: account_asset
#: field:account.asset.history,name:0
msgid "History name"
msgstr "History name"
#. module: account_asset
#: field:account.asset.depreciation.line,depreciated_value:0
msgid "Amount Already Depreciated"
msgstr "Amount Already Depreciated"
#. module: account_asset
#: help:account.asset.asset,method:0
#: help:account.asset.category,method:0
msgid ""
"Choose the method to use to compute the amount of depreciation lines.\n"
" * Linear: Calculated on basis of: Gross Value / Number of Depreciations\n"
" * Degressive: Calculated on basis of: Residual Value * Degressive Factor"
msgstr ""
"Choose the method to use to compute the amount of depreciation lines.\n"
" * Linear: Calculated on basis of: Gross Value / Number of Depreciations\n"
" * Degressive: Calculated on basis of: Residual Value * Degressive Factor"
#. module: account_asset
#: field:account.asset.depreciation.line,move_check:0
#: view:asset.asset.report:0
#: field:asset.asset.report,move_check:0
msgid "Posted"
msgstr "Posted"
#. module: account_asset
#: model:ir.actions.act_window,help:account_asset.action_asset_asset_report
msgid ""
"<p>\n"
" From this report, you can have an overview on all depreciation. "
"The\n"
" tool search can also be used to personalise your Assets reports "
"and\n"
" so, match this analysis to your needs;\n"
" </p>\n"
" "
msgstr ""
"<p>\n"
" From this report, you can have an overview on all depreciation. "
"The\n"
" tool search can also be used to personalise your Assets reports "
"and\n"
" so, match this analysis to your needs;\n"
" </p>\n"
" "
#. module: account_asset
#: field:account.asset.asset,purchase_value:0
msgid "Gross Value"
msgstr "Gross Value"
#. module: account_asset
#: field:account.asset.category,name:0
msgid "Name"
msgstr "Name"
#. module: account_asset
#: help:account.asset.category,open_asset:0
msgid ""
"Check this if you want to automatically confirm the assets of this category "
"when created by invoices."
msgstr ""
"Check this if you want to automatically confirm the assets of this category "
"when created by invoices."
#. module: account_asset
#: field:asset.asset.report,name:0
msgid "Year"
msgstr "Year"
#. module: account_asset
#: model:ir.model,name:account_asset.model_account_asset_depreciation_line
msgid "Asset depreciation line"
msgstr "Asset depreciation line"
#. module: account_asset
#: view:account.asset.category:0
#: field:asset.asset.report,asset_category_id:0
#: model:ir.model,name:account_asset.model_account_asset_category
msgid "Asset category"
msgstr "Asset category"
#. module: account_asset
#: view:asset.asset.report:0
#: field:asset.asset.report,depreciation_value:0
msgid "Amount of Depreciation Lines"
msgstr "Amount of Depreciation Lines"
#. module: account_asset
#: code:addons/account_asset/wizard/wizard_asset_compute.py:49
#, python-format
msgid "Created Asset Moves"
msgstr "Created Asset Moves"
#. module: account_asset
#: field:account.asset.depreciation.line,sequence:0
msgid "Sequence"
msgstr "Sequence"
#. module: account_asset
#: help:account.asset.category,method_period:0
msgid "State here the time between 2 depreciations, in months"
msgstr "State here the time between 2 depreciations, in months"
#. module: account_asset
#: field:account.asset.history,date:0
msgid "Date"
msgstr "Date"
#. module: account_asset
#: field:account.asset.asset,method_number:0
#: selection:account.asset.asset,method_time:0
#: field:account.asset.category,method_number:0
#: selection:account.asset.category,method_time:0
#: field:account.asset.history,method_number:0
#: selection:account.asset.history,method_time:0
#: field:asset.modify,method_number:0
msgid "Number of Depreciations"
msgstr "Number of Depreciations"
#. module: account_asset
#: view:account.asset.asset:0
msgid "Create Move"
msgstr "Create Move"
#. module: account_asset
#: view:account.asset.asset:0
msgid "Confirm Asset"
msgstr "Confirm Asset"
#. module: account_asset
#: model:ir.actions.act_window,name:account_asset.action_account_asset_asset_tree
#: model:ir.ui.menu,name:account_asset.menu_action_account_asset_asset_tree
msgid "Asset Hierarchy"
msgstr "Asset Hierarchy"
@@ -0,0 +1,361 @@
# 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-07 19:19+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-08 04:36+0000\n"
"X-Generator: Launchpad (build 16482)\n"
#. module: account_bank_statement_extensions
#: help:account.bank.statement.line.global,name:0
msgid "Originator to Beneficiary Information"
msgstr "Originator to Beneficiary Information"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
#: selection:account.bank.statement.line,state:0
msgid "Confirmed"
msgstr "Confirmed"
#. module: account_bank_statement_extensions
#: view:account.bank.statement:0
#: view:account.bank.statement.line:0
msgid "Glob. Id"
msgstr "Glob. Id"
#. module: account_bank_statement_extensions
#: selection:account.bank.statement.line.global,type:0
msgid "CODA"
msgstr "CODA"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,parent_id:0
msgid "Parent Code"
msgstr "Parent Code"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Debit"
msgstr "Debit"
#. module: account_bank_statement_extensions
#: view:cancel.statement.line:0
#: model:ir.actions.act_window,name:account_bank_statement_extensions.action_cancel_statement_line
#: model:ir.model,name:account_bank_statement_extensions.model_cancel_statement_line
msgid "Cancel selected statement lines"
msgstr "Cancel selected statement lines"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,val_date:0
msgid "Value Date"
msgstr "Value Date"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Group By..."
msgstr "Group By..."
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
#: selection:account.bank.statement.line,state:0
msgid "Draft"
msgstr "Draft"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Statement"
msgstr "Statement"
#. module: account_bank_statement_extensions
#: view:confirm.statement.line:0
#: model:ir.actions.act_window,name:account_bank_statement_extensions.action_confirm_statement_line
#: model:ir.model,name:account_bank_statement_extensions.model_confirm_statement_line
msgid "Confirm selected statement lines"
msgstr "Confirm selected statement lines"
#. module: account_bank_statement_extensions
#: report:bank.statement.balance.report:0
#: model:ir.actions.report.xml,name:account_bank_statement_extensions.bank_statement_balance_report
msgid "Bank Statement Balances Report"
msgstr "Bank Statement Balances Report"
#. module: account_bank_statement_extensions
#: view:cancel.statement.line:0
msgid "Cancel Lines"
msgstr "Cancel Lines"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line.global:0
#: model:ir.model,name:account_bank_statement_extensions.model_account_bank_statement_line_global
msgid "Batch Payment Info"
msgstr "Batch Payment Info"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,state:0
msgid "Status"
msgstr "Status"
#. module: account_bank_statement_extensions
#: code:addons/account_bank_statement_extensions/account_bank_statement.py:129
#, python-format
msgid ""
"Delete operation not allowed. Please go to the associated bank "
"statement in order to delete and/or modify bank statement line."
msgstr ""
"Delete operation not allowed. Please go to the associated bank "
"statement in order to delete and/or modify bank statement line."
#. module: account_bank_statement_extensions
#: view:confirm.statement.line:0
msgid "or"
msgstr "or"
#. module: account_bank_statement_extensions
#: view:confirm.statement.line:0
msgid "Confirm Lines"
msgstr "Confirm Lines"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line.global:0
msgid "Transactions"
msgstr "Transactions"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,type:0
msgid "Type"
msgstr "Type"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
#: report:bank.statement.balance.report:0
msgid "Journal"
msgstr "Journal"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Confirmed Statement Lines."
msgstr "Confirmed Statement Lines."
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Credit Transactions."
msgstr "Credit Transactions."
#. module: account_bank_statement_extensions
#: model:ir.actions.act_window,help:account_bank_statement_extensions.action_cancel_statement_line
msgid "cancel selected statement lines."
msgstr "cancel selected statement lines."
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,counterparty_number:0
msgid "Counterparty Number"
msgstr "Counterparty Number"
#. module: account_bank_statement_extensions
#: report:bank.statement.balance.report:0
msgid "Closing Balance"
msgstr "Closing Balance"
#. module: account_bank_statement_extensions
#: report:bank.statement.balance.report:0
msgid "Date"
msgstr "Date"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
#: field:account.bank.statement.line,globalisation_amount:0
msgid "Glob. Amount"
msgstr "Glob. Amount"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Debit Transactions."
msgstr "Debit Transactions."
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Extended Filters..."
msgstr "Extended Filters..."
#. module: account_bank_statement_extensions
#: view:confirm.statement.line:0
msgid "Confirmed lines cannot be changed anymore."
msgstr "Confirmed lines cannot be changed anymore."
#. module: account_bank_statement_extensions
#: view:cancel.statement.line:0
msgid "Are you sure you want to cancel the selected Bank Statement lines ?"
msgstr "Are you sure you want to cancel the selected Bank Statement lines ?"
#. module: account_bank_statement_extensions
#: report:bank.statement.balance.report:0
msgid "Name"
msgstr "Name"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,name:0
msgid "OBI"
msgstr "OBI"
#. module: account_bank_statement_extensions
#: selection:account.bank.statement.line.global,type:0
msgid "ISO 20022"
msgstr "ISO 20022"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Notes"
msgstr "Notes"
#. module: account_bank_statement_extensions
#: selection:account.bank.statement.line.global,type:0
msgid "Manual"
msgstr "Manual"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Bank Transaction"
msgstr "Bank Transaction"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Credit"
msgstr "Credit"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,amount:0
msgid "Amount"
msgstr "Amount"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Fin.Account"
msgstr "Fin.Account"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,counterparty_currency:0
msgid "Counterparty Currency"
msgstr "Counterparty Currency"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,counterparty_bic:0
msgid "Counterparty BIC"
msgstr "Counterparty BIC"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,child_ids:0
msgid "Child Codes"
msgstr "Child Codes"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Search Bank Transactions"
msgstr "Search Bank Transactions"
#. module: account_bank_statement_extensions
#: view:confirm.statement.line:0
msgid "Are you sure you want to confirm the selected Bank Statement lines ?"
msgstr "Are you sure you want to confirm the selected Bank Statement lines ?"
#. module: account_bank_statement_extensions
#: help:account.bank.statement.line,globalisation_id:0
msgid ""
"Code to identify transactions belonging to the same globalisation level "
"within a batch payment"
msgstr ""
"Code to identify transactions belonging to the same globalisation level "
"within a batch payment"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Draft Statement Lines."
msgstr "Draft Statement Lines."
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Glob. Am."
msgstr "Glob. Am."
#. module: account_bank_statement_extensions
#: model:ir.model,name:account_bank_statement_extensions.model_account_bank_statement_line
msgid "Bank Statement Line"
msgstr "Bank Statement Line"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,code:0
msgid "Code"
msgstr "Code"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,counterparty_name:0
msgid "Counterparty Name"
msgstr "Counterparty Name"
#. module: account_bank_statement_extensions
#: model:ir.model,name:account_bank_statement_extensions.model_res_partner_bank
msgid "Bank Accounts"
msgstr "Bank Accounts"
#. module: account_bank_statement_extensions
#: model:ir.model,name:account_bank_statement_extensions.model_account_bank_statement
msgid "Bank Statement"
msgstr "Bank Statement"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Statement Line"
msgstr "Statement Line"
#. module: account_bank_statement_extensions
#: sql_constraint:account.bank.statement.line.global:0
msgid "The code must be unique !"
msgstr "The code must be unique !"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,bank_statement_line_ids:0
#: model:ir.actions.act_window,name:account_bank_statement_extensions.action_bank_statement_line
#: model:ir.ui.menu,name:account_bank_statement_extensions.bank_statement_line
msgid "Bank Statement Lines"
msgstr "Bank Statement Lines"
#. module: account_bank_statement_extensions
#: code:addons/account_bank_statement_extensions/account_bank_statement.py:129
#, python-format
msgid "Warning!"
msgstr "Warning!"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line.global:0
msgid "Child Batch Payments"
msgstr "Child Batch Payments"
#. module: account_bank_statement_extensions
#: view:confirm.statement.line:0
msgid "Cancel"
msgstr "Cancel"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Statement Lines"
msgstr "Statement Lines"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Total Amount"
msgstr "Total Amount"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,globalisation_id:0
msgid "Globalisation ID"
msgstr "Globalisation ID"
@@ -2,32 +2,35 @@
Print the Analytic Budget Report through wizard
-
!python {model: account.analytic.account}: |
import netsvc, tools, os, time
import os, time
from openerp import netsvc, tools
ctx={}
ctx.update({'model': 'account.analytic.account','active_ids': [ref('account.analytic_root')]})
data_dict = {}
from tools import test_reports
from openerp.tools import test_reports
test_reports.try_report_action(cr, uid, 'action_account_budget_analytic',wiz_data=data_dict, context=ctx, our_module='account_budget')
-
Print the Budget Report through wizard
-
!python {model: account.budget.post}: |
import netsvc, tools, os, time
import os, time
from openerp import netsvc, tools
ctx={}
ctx.update({'model': 'account.budget.post','active_ids': [ref('account_budget.account_budget_post_sales0')]})
data_dict = {}
from tools import test_reports
from openerp.tools import test_reports
test_reports.try_report_action(cr, uid, 'action_account_budget_report',wiz_data=data_dict, context=ctx, our_module='account_budget')
-
Print the CrossOvered Budget Report mode through wizard
-
!python {model: crossovered.budget}: |
import netsvc, tools, os, time
import os, time
from openerp import netsvc, tools
ctx={}
ctx.update({'model': 'account.budget.post','active_ids': [ref('account_budget.crossovered_budget_budgetoptimistic0')]})
data_dict = {}
from tools import test_reports
from openerp.tools import test_reports
test_reports.try_report_action(cr, uid, 'action_account_budget_crossvered_report',wiz_data=data_dict, context=ctx, our_module='account_budget')
+245
View File
@@ -0,0 +1,245 @@
# 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-07 17:11+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-08 04:36+0000\n"
"X-Generator: Launchpad (build 16482)\n"
#. module: account_check_writing
#: selection:res.company,check_layout:0
msgid "Check on Top"
msgstr "Check on Top"
#. module: account_check_writing
#: report:account.print.check.top:0
msgid "Open Balance"
msgstr "Open Balance"
#. module: account_check_writing
#: view:account.check.write:0
#: view:account.voucher:0
msgid "Print Check"
msgstr "Print Check"
#. module: account_check_writing
#: selection:res.company,check_layout:0
msgid "Check in middle"
msgstr "Check in middle"
#. module: account_check_writing
#: help:res.company,check_layout:0
msgid ""
"Check on top is compatible with Quicken, QuickBooks and Microsoft Money. "
"Check in middle is compatible with Peachtree, ACCPAC and DacEasy. Check on "
"bottom is compatible with Peachtree, ACCPAC and DacEasy only"
msgstr ""
"Check on top is compatible with Quicken, QuickBooks and Microsoft Money. "
"Check in middle is compatible with Peachtree, ACCPAC and DacEasy. Check on "
"bottom is compatible with Peachtree, ACCPAC and DacEasy only"
#. module: account_check_writing
#: selection:res.company,check_layout:0
msgid "Check on bottom"
msgstr "Check on bottom"
#. module: account_check_writing
#: model:ir.actions.act_window,name:account_check_writing.action_account_check_write
msgid "Print Check in Batch"
msgstr "Print Check in Batch"
#. module: account_check_writing
#: code:addons/account_check_writing/wizard/account_check_batch_printing.py:59
#, python-format
msgid "One of the printed check already got a number."
msgstr "One of the printed check already got a number."
#. module: account_check_writing
#: help:account.journal,allow_check_writing:0
msgid "Check this if the journal is to be used for writing checks."
msgstr "Check this if the journal is to be used for writing checks."
#. module: account_check_writing
#: field:account.journal,allow_check_writing:0
msgid "Allow Check writing"
msgstr "Allow Check writing"
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
#: report:account.print.check.top:0
msgid "Description"
msgstr "Description"
#. module: account_check_writing
#: model:ir.model,name:account_check_writing.model_account_journal
msgid "Journal"
msgstr "Journal"
#. module: account_check_writing
#: model:ir.actions.act_window,name:account_check_writing.action_write_check
#: model:ir.ui.menu,name:account_check_writing.menu_action_write_check
msgid "Write Checks"
msgstr "Write Checks"
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
#: report:account.print.check.top:0
msgid "Discount"
msgstr "Discount"
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
#: report:account.print.check.top:0
msgid "Original Amount"
msgstr "Original Amount"
#. module: account_check_writing
#: field:res.company,check_layout:0
msgid "Check Layout"
msgstr "Check Layout"
#. module: account_check_writing
#: field:account.voucher,allow_check:0
msgid "Allow Check Writing"
msgstr "Allow Check Writing"
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
#: report:account.print.check.top:0
msgid "Payment"
msgstr "Payment"
#. module: account_check_writing
#: field:account.journal,use_preprint_check:0
msgid "Use Preprinted Check"
msgstr "Use Preprinted Check"
#. module: account_check_writing
#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_bottom
msgid "Print Check (Bottom)"
msgstr "Print Check (Bottom)"
#. module: account_check_writing
#: model:ir.actions.act_window,help:account_check_writing.action_write_check
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to create a new check. \n"
" </p><p>\n"
" The check payment form allows you to track the payment you "
"do\n"
" to your suppliers using checks. When you select a supplier, "
"the\n"
" payment method and an amount for the payment, OpenERP will\n"
" propose to reconcile your payment with the open supplier\n"
" invoices or bills.\n"
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to create a new check. \n"
" </p><p>\n"
" The check payment form allows you to track the payment you "
"do\n"
" to your suppliers using checks. When you select a supplier, "
"the\n"
" payment method and an amount for the payment, OpenERP will\n"
" propose to reconcile your payment with the open supplier\n"
" invoices or bills.\n"
" </p>\n"
" "
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
#: report:account.print.check.top:0
msgid "Due Date"
msgstr "Due Date"
#. module: account_check_writing
#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_middle
msgid "Print Check (Middle)"
msgstr "Print Check (Middle)"
#. module: account_check_writing
#: model:ir.model,name:account_check_writing.model_res_company
msgid "Companies"
msgstr "Companies"
#. module: account_check_writing
#: code:addons/account_check_writing/wizard/account_check_batch_printing.py:59
#, python-format
msgid "Error!"
msgstr "Error!"
#. module: account_check_writing
#: help:account.check.write,check_number:0
msgid "The number of the next check number to be printed."
msgstr "The number of the next check number to be printed."
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
msgid "Balance Due"
msgstr "Balance Due"
#. module: account_check_writing
#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_top
msgid "Print Check (Top)"
msgstr "Print Check (Top)"
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
#: report:account.print.check.top:0
msgid "Check Amount"
msgstr "Check Amount"
#. module: account_check_writing
#: model:ir.model,name:account_check_writing.model_account_voucher
msgid "Accounting Voucher"
msgstr "Accounting Voucher"
#. module: account_check_writing
#: view:account.check.write:0
msgid "or"
msgstr "or"
#. module: account_check_writing
#: field:account.voucher,amount_in_word:0
msgid "Amount in Word"
msgstr "Amount in Word"
#. module: account_check_writing
#: model:ir.model,name:account_check_writing.model_account_check_write
msgid "Prin Check in Batch"
msgstr "Prin Check in Batch"
#. module: account_check_writing
#: view:account.check.write:0
msgid "Cancel"
msgstr "Cancel"
#. module: account_check_writing
#: field:account.check.write,check_number:0
msgid "Next Check Number"
msgstr "Next Check Number"
#. module: account_check_writing
#: view:account.check.write:0
msgid "Check"
msgstr "Check"
File diff suppressed because it is too large Load Diff
+47 -37
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: 2010-08-11 05:36+0000\n"
"Last-Translator: ub121 <ubs121@gmail.com>\n"
"PO-Revision-Date: 2013-02-07 10:41+0000\n"
"Last-Translator: gobi <Unknown>\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: 2012-12-22 05:27+0000\n"
"X-Generator: Launchpad (build 16378)\n"
"X-Launchpad-Export-Date: 2013-02-08 04:36+0000\n"
"X-Generator: Launchpad (build 16482)\n"
#. module: account_followup
#: model:email.template,subject:account_followup.email_template_account_followup_default
@@ -34,12 +34,12 @@ msgstr ""
#: view:account_followup.stat:0
#: view:res.partner:0
msgid "Group By..."
msgstr ""
msgstr "Бүлэглэвэл..."
#. module: account_followup
#: field:account_followup.print,followup_id:0
msgid "Follow-Up"
msgstr ""
msgstr "Мөрөөр хийх ажил"
#. module: account_followup
#: view:account_followup.followup.line:0
@@ -49,7 +49,7 @@ msgstr ""
#. module: account_followup
#: field:res.partner,payment_next_action_date:0
msgid "Next Action Date"
msgstr ""
msgstr "Дараа үйлдэл хийх огноо"
#. module: account_followup
#: view:account_followup.followup.line:0
@@ -60,7 +60,7 @@ msgstr ""
#. module: account_followup
#: field:account_followup.sending.results,needprinting:0
msgid "Needs Printing"
msgstr ""
msgstr "Хэвлэх шаардлагатай"
#. module: account_followup
#: view:res.partner:0
@@ -88,7 +88,7 @@ msgstr "Нэхэмжилсэн Огноо"
#. module: account_followup
#: field:account_followup.print,email_subject:0
msgid "Email Subject"
msgstr ""
msgstr "Имэйлийн гарчиг"
#. module: account_followup
#: view:account_followup.followup.line:0
@@ -108,7 +108,7 @@ msgstr ""
#. module: account_followup
#: field:account_followup.print,email_body:0
msgid "Email Body"
msgstr ""
msgstr "Имэйлийн агуулга"
#. module: account_followup
#: model:ir.actions.act_window,name:account_followup.action_account_followup_print
@@ -118,7 +118,7 @@ msgstr ""
#. module: account_followup
#: report:account_followup.followup.print:0
msgid "Amount"
msgstr ""
msgstr "Дүн"
#. module: account_followup
#: help:res.partner,payment_next_action:0
@@ -206,12 +206,12 @@ msgstr "Нийт дебит"
#. module: account_followup
#: field:res.partner,payment_next_action:0
msgid "Next Action"
msgstr ""
msgstr "Дараагийн үйлдэл"
#. module: account_followup
#: view:account_followup.followup.line:0
msgid ": Partner Name"
msgstr ""
msgstr ": Харилцагчийн нэр"
#. module: account_followup
#: field:account_followup.followup.line,manual_action_responsible_id:0
@@ -287,7 +287,7 @@ msgstr ""
#. module: account_followup
#: view:account_followup.stat:0
msgid "Not Litigation"
msgstr ""
msgstr "Зарга биш"
#. module: account_followup
#: view:account_followup.print:0
@@ -302,7 +302,7 @@ msgstr ""
#. module: account_followup
#: view:account_followup.followup.line:0
msgid "%(partner_name)s"
msgstr ""
msgstr "%(partner_name)s"
#. module: account_followup
#: model:email.template,body_html:account_followup.email_template_account_followup_level1
@@ -379,13 +379,13 @@ msgstr ""
#. module: account_followup
#: view:account_followup.followup.line:0
msgid ": User's Company Name"
msgstr ""
msgstr ": Хэрэглэгчийн Компанийн нэр"
#. module: account_followup
#: view:account_followup.followup.line:0
#: field:account_followup.followup.line,send_letter:0
msgid "Send a Letter"
msgstr ""
msgstr "Захидал илгээх"
#. module: account_followup
#: model:ir.actions.act_window,name:account_followup.action_account_followup_definition_form
@@ -427,7 +427,7 @@ msgstr ""
#. module: account_followup
#: field:account_followup.print,email_conf:0
msgid "Send Email Confirmation"
msgstr ""
msgstr "Батламжлах имэйл илгээх"
#. module: account_followup
#: view:account_followup.stat:0
@@ -442,7 +442,7 @@ msgstr ""
#. module: account_followup
#: field:account_followup.print,partner_lang:0
msgid "Send Email in Partner Language"
msgstr ""
msgstr "Имэйлийг Харилцагчийн хэлээр илгээх"
#. module: account_followup
#: code:addons/account_followup/wizard/account_followup_print.py:169
@@ -464,7 +464,7 @@ msgstr ""
#: code:addons/account_followup/wizard/account_followup_print.py:155
#, python-format
msgid "Anybody"
msgstr ""
msgstr "Хэн нэгэн"
#. module: account_followup
#: help:account_followup.followup.line,send_email:0
@@ -474,7 +474,7 @@ msgstr ""
#. module: account_followup
#: view:account_followup.stat.by.partner:0
msgid "Partner to Remind"
msgstr ""
msgstr "Сануулах Харилцагч"
#. module: account_followup
#: view:res.partner:0
@@ -526,7 +526,7 @@ msgstr ""
#. module: account_followup
#: view:res.partner:0
msgid "Search Partner"
msgstr ""
msgstr "Харилцагч хайх"
#. module: account_followup
#: model:ir.ui.menu,name:account_followup.account_followup_print_menu
@@ -552,7 +552,7 @@ msgstr ""
#. module: account_followup
#: view:account_followup.print:0
msgid "or"
msgstr ""
msgstr "эсвэл"
#. module: account_followup
#: view:res.partner:0
@@ -693,7 +693,7 @@ msgstr ""
#: field:account_followup.print,company_id:0
#: field:res.partner,unreconciled_aml_ids:0
msgid "unknown"
msgstr ""
msgstr "тодорхой бус"
#. module: account_followup
#: code:addons/account_followup/account_followup.py:283
@@ -732,17 +732,17 @@ msgstr ""
#. module: account_followup
#: model:ir.model,name:account_followup.model_account_move_line
msgid "Journal Items"
msgstr ""
msgstr "Журналын бичилтүүд"
#. module: account_followup
#: report:account_followup.followup.print:0
msgid "Total:"
msgstr ""
msgstr "Нийт:"
#. module: account_followup
#: field:account_followup.followup.line,email_template_id:0
msgid "Email Template"
msgstr ""
msgstr "Э-мэйл загвар"
#. module: account_followup
#: field:account_followup.print,summary:0
@@ -859,7 +859,7 @@ msgstr ""
#. module: account_followup
#: field:account_followup.stat,period_id:0
msgid "Period"
msgstr ""
msgstr "Мөчлөг"
#. module: account_followup
#: code:addons/account_followup/wizard/account_followup_print.py:228
@@ -887,12 +887,12 @@ msgstr "Цуцлах"
#. module: account_followup
#: view:account_followup.sending.results:0
msgid "Close"
msgstr ""
msgstr "Хаах"
#. module: account_followup
#: view:account_followup.stat:0
msgid "Litigation"
msgstr ""
msgstr "Маргаантай"
#. module: account_followup
#: field:account_followup.stat.by.partner,max_followup_id:0
@@ -953,17 +953,17 @@ msgstr ""
#. module: account_followup
#: report:account_followup.followup.print:0
msgid "Ref"
msgstr ""
msgstr "Сурвалж"
#. module: account_followup
#: view:account_followup.followup.line:0
msgid "After"
msgstr ""
msgstr "Дараа"
#. module: account_followup
#: view:account_followup.stat:0
msgid "This Fiscal year"
msgstr ""
msgstr "Энэ санхүүгийн жил"
#. module: account_followup
#: field:res.partner,latest_followup_level_id_without_lit:0
@@ -978,11 +978,15 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p>\n"
" Журналын бичилт олдсонгүй.\n"
" </p>\n"
" "
#. module: account_followup
#: view:account.move.line:0
msgid "Partner entries"
msgstr ""
msgstr "Харилцагчийн бичилт"
#. module: account_followup
#: view:account_followup.stat:0
@@ -1143,7 +1147,7 @@ msgstr ""
#. module: account_followup
#: field:account_followup.print,test_print:0
msgid "Test Print"
msgstr ""
msgstr "Тест хэвлэх"
#. module: account_followup
#: view:account_followup.followup.line:0
@@ -1153,12 +1157,12 @@ msgstr ""
#. module: account_followup
#: view:res.partner:0
msgid "Accounting"
msgstr ""
msgstr "Санхүү"
#. module: account_followup
#: field:account_followup.stat,blocked:0
msgid "Blocked"
msgstr ""
msgstr "Хоригдсон"
#. module: account_followup
#: field:res.partner,payment_note:0
@@ -1225,3 +1229,9 @@ msgstr ""
#~ msgid "Type of Term"
#~ msgstr "Төрөлийн хугацаа"
#~ msgid "Send email confirmation"
#~ msgstr "Баталгаажуулалтын имэйлийг илгээх"
#~ msgid "Select Partners to Remind"
#~ msgstr "Сануулга өгөх харилцагчдыг сонгох"
+707
View File
@@ -0,0 +1,707 @@
# 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-07 18:49+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-08 04:36+0000\n"
"X-Generator: Launchpad (build 16482)\n"
#. module: account_payment
#: model:ir.actions.act_window,help:account_payment.action_payment_order_tree
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to create a payment order.\n"
" </p><p>\n"
" A payment order is a payment request from your company to "
"pay a\n"
" supplier invoice or a customer refund.\n"
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to create a payment order.\n"
" </p><p>\n"
" A payment order is a payment request from your company to "
"pay a\n"
" supplier invoice or a customer refund.\n"
" </p>\n"
" "
#. module: account_payment
#: field:payment.line,currency:0
msgid "Partner Currency"
msgstr "Partner Currency"
#. module: account_payment
#: view:payment.order:0
msgid "Set to draft"
msgstr "Set to draft"
#. module: account_payment
#: help:payment.order,mode:0
msgid "Select the Payment Mode to be applied."
msgstr "Select the Payment Mode to be applied."
#. module: account_payment
#: view:payment.mode:0
#: view:payment.order:0
msgid "Group By..."
msgstr "Group By..."
#. module: account_payment
#: field:payment.order,line_ids:0
msgid "Payment lines"
msgstr "Payment lines"
#. module: account_payment
#: view:payment.line:0
#: field:payment.line,info_owner:0
#: view:payment.order:0
msgid "Owner Account"
msgstr "Owner Account"
#. module: account_payment
#: help:account.invoice,amount_to_pay:0
msgid ""
"The amount which should be paid at the current date\n"
"minus the amount which is already in payment order"
msgstr ""
"The amount which should be paid at the current date\n"
"minus the amount which is already in payment order"
#. module: account_payment
#: field:payment.line,company_id:0
#: field:payment.mode,company_id:0
#: field:payment.order,company_id:0
msgid "Company"
msgstr "Company"
#. module: account_payment
#: model:res.groups,name:account_payment.group_account_payment
msgid "Accounting / Payments"
msgstr "Accounting / Payments"
#. module: account_payment
#: selection:payment.line,state:0
msgid "Free"
msgstr "Free"
#. module: account_payment
#: view:payment.order.create:0
#: field:payment.order.create,entries:0
msgid "Entries"
msgstr "Entries"
#. module: account_payment
#: report:payment.order:0
msgid "Used Account"
msgstr "Used Account"
#. module: account_payment
#: field:payment.line,ml_maturity_date:0
#: field:payment.order.create,duedate:0
msgid "Due Date"
msgstr "Due Date"
#. module: account_payment
#: view:payment.order.create:0
msgid "_Add to payment order"
msgstr "_Add to payment order"
#. module: account_payment
#: model:ir.actions.act_window,name:account_payment.action_account_payment_populate_statement
#: model:ir.actions.act_window,name:account_payment.action_account_populate_statement_confirm
msgid "Payment Populate statement"
msgstr "Payment Populate statement"
#. module: account_payment
#: code:addons/account_payment/account_invoice.py:43
#, python-format
msgid ""
"You cannot cancel an invoice which has already been imported in a payment "
"order. Remove it from the following payment order : %s."
msgstr ""
"You cannot cancel an invoice which has already been imported in a payment "
"order. Remove it from the following payment order : %s."
#. module: account_payment
#: code:addons/account_payment/account_invoice.py:43
#: code:addons/account_payment/account_move_line.py:110
#, python-format
msgid "Error!"
msgstr "Error!"
#. module: account_payment
#: report:payment.order:0
#: view:payment.order:0
msgid "Amount"
msgstr "Amount"
#. module: account_payment
#: view:payment.order:0
msgid "Total in Company Currency"
msgstr "Total in Company Currency"
#. module: account_payment
#: selection:payment.order,state:0
msgid "Cancelled"
msgstr "Cancelled"
#. module: account_payment
#: model:ir.actions.act_window,name:account_payment.action_payment_order_tree_new
msgid "New Payment Order"
msgstr "New Payment Order"
#. module: account_payment
#: report:payment.order:0
#: field:payment.order,reference:0
msgid "Reference"
msgstr "Reference"
#. module: account_payment
#: sql_constraint:payment.line:0
msgid "The payment line name must be unique!"
msgstr "The payment line name must be unique!"
#. module: account_payment
#: model:ir.actions.act_window,name:account_payment.action_payment_order_tree
#: model:ir.ui.menu,name:account_payment.menu_action_payment_order_form
msgid "Payment Orders"
msgstr "Payment Orders"
#. module: account_payment
#: selection:payment.order,date_prefered:0
msgid "Directly"
msgstr "Directly"
#. module: account_payment
#: model:ir.actions.act_window,name:account_payment.action_payment_line_form
#: model:ir.model,name:account_payment.model_payment_line
#: view:payment.line:0
#: view:payment.order:0
msgid "Payment Line"
msgstr "Payment Line"
#. module: account_payment
#: view:payment.line:0
msgid "Amount Total"
msgstr "Amount Total"
#. module: account_payment
#: help:payment.order,state:0
msgid ""
"When an order is placed the status is 'Draft'.\n"
" Once the bank is confirmed the status is set to 'Confirmed'.\n"
" Then the order is paid the status is 'Done'."
msgstr ""
"When an order is placed the status is 'Draft'.\n"
" Once the bank is confirmed the status is set to 'Confirmed'.\n"
" Then the order is paid the status is 'Done'."
#. module: account_payment
#: view:payment.order:0
#: selection:payment.order,state:0
msgid "Confirmed"
msgstr "Confirmed"
#. module: account_payment
#: help:payment.line,ml_date_created:0
msgid "Invoice Effective Date"
msgstr "Invoice Effective Date"
#. module: account_payment
#: report:payment.order:0
msgid "Execution Type"
msgstr "Execution Type"
#. module: account_payment
#: selection:payment.line,state:0
msgid "Structured"
msgstr "Structured"
#. module: account_payment
#: view:account.bank.statement:0
msgid "Import Payment Lines"
msgstr "Import Payment Lines"
#. module: account_payment
#: view:payment.line:0
#: view:payment.order:0
msgid "Transaction Information"
msgstr "Transaction Information"
#. module: account_payment
#: model:ir.actions.act_window,name:account_payment.action_payment_mode_form
#: model:ir.model,name:account_payment.model_payment_mode
#: model:ir.ui.menu,name:account_payment.menu_action_payment_mode_form
#: view:payment.mode:0
#: view:payment.order:0
#: field:payment.order,mode:0
msgid "Payment Mode"
msgstr "Payment Mode"
#. module: account_payment
#: field:payment.line,ml_date_created:0
msgid "Effective Date"
msgstr "Effective Date"
#. module: account_payment
#: field:payment.line,ml_inv_ref:0
msgid "Invoice Ref."
msgstr "Invoice Ref."
#. module: account_payment
#: help:payment.order,date_prefered:0
msgid ""
"Choose an option for the Payment Order:'Fixed' stands for a date specified "
"by you.'Directly' stands for the direct execution.'Due date' stands for the "
"scheduled date of execution."
msgstr ""
"Choose an option for the Payment Order:'Fixed' stands for a date specified "
"by you.'Directly' stands for the direct execution.'Due date' stands for the "
"scheduled date of execution."
#. module: account_payment
#: field:payment.order,date_created:0
msgid "Creation Date"
msgstr "Creation Date"
#. module: account_payment
#: help:payment.mode,journal:0
msgid "Bank or Cash Journal for the Payment Mode"
msgstr "Bank or Cash Journal for the Payment Mode"
#. module: account_payment
#: selection:payment.order,date_prefered:0
msgid "Fixed date"
msgstr "Fixed date"
#. module: account_payment
#: field:payment.line,info_partner:0
#: view:payment.order:0
msgid "Destination Account"
msgstr "Destination Account"
#. module: account_payment
#: view:payment.line:0
msgid "Desitination Account"
msgstr "Destination Account"
#. module: account_payment
#: view:payment.order:0
msgid "Search Payment Orders"
msgstr "Search Payment Orders"
#. module: account_payment
#: field:payment.line,create_date:0
msgid "Created"
msgstr "Created"
#. module: account_payment
#: view:payment.order:0
msgid "Select Invoices to Pay"
msgstr "Select Invoices to Pay"
#. module: account_payment
#: view:payment.line:0
msgid "Currency Amount Total"
msgstr "Currency Amount Total"
#. module: account_payment
#: view:payment.order:0
msgid "Make Payments"
msgstr "Make Payments"
#. module: account_payment
#: field:payment.line,state:0
msgid "Communication Type"
msgstr "Communication Type"
#. module: account_payment
#: field:payment.line,partner_id:0
#: field:payment.mode,partner_id:0
#: report:payment.order:0
msgid "Partner"
msgstr "Partner"
#. module: account_payment
#: field:payment.line,bank_statement_line_id:0
msgid "Bank statement line"
msgstr "Bank statement line"
#. module: account_payment
#: selection:payment.order,date_prefered:0
msgid "Due date"
msgstr "Due date"
#. module: account_payment
#: field:account.invoice,amount_to_pay:0
msgid "Amount to be paid"
msgstr "Amount to be paid"
#. module: account_payment
#: report:payment.order:0
msgid "Currency"
msgstr "Currency"
#. module: account_payment
#: view:account.payment.make.payment:0
msgid "Yes"
msgstr "Yes"
#. module: account_payment
#: help:payment.line,info_owner:0
msgid "Address of the Main Partner"
msgstr "Address of the Main Partner"
#. module: account_payment
#: help:payment.line,date:0
msgid ""
"If no payment date is specified, the bank will treat this payment line "
"directly"
msgstr ""
"If no payment date is specified, the bank will treat this payment line "
"directly"
#. module: account_payment
#: model:ir.model,name:account_payment.model_account_payment_populate_statement
msgid "Account Payment Populate Statement"
msgstr "Account Payment Populate Statement"
#. module: account_payment
#: code:addons/account_payment/account_move_line.py:110
#, python-format
msgid "There is no partner defined on the entry line."
msgstr "There is no partner defined on the entry line."
#. module: account_payment
#: help:payment.mode,name:0
msgid "Mode of Payment"
msgstr "Mode of Payment"
#. module: account_payment
#: report:payment.order:0
msgid "Value Date"
msgstr "Value Date"
#. module: account_payment
#: report:payment.order:0
msgid "Payment Type"
msgstr "Payment Type"
#. module: account_payment
#: help:payment.line,amount_currency:0
msgid "Payment amount in the partner currency"
msgstr "Payment amount in the partner currency"
#. module: account_payment
#: view:payment.order:0
#: selection:payment.order,state:0
msgid "Draft"
msgstr "Draft"
#. module: account_payment
#: view:payment.order:0
#: field:payment.order,state:0
msgid "Status"
msgstr "Status"
#. module: account_payment
#: help:payment.line,communication2:0
msgid "The successor message of Communication."
msgstr "The successor message of Communication."
#. module: account_payment
#: help:payment.line,info_partner:0
msgid "Address of the Ordering Customer."
msgstr "Address of the Ordering Customer."
#. module: account_payment
#: view:account.payment.populate.statement:0
msgid "Populate Statement:"
msgstr "Populate Statement:"
#. module: account_payment
#: help:payment.order,date_scheduled:0
msgid "Select a date if you have chosen Preferred Date to be fixed."
msgstr "Select a date if you have chosen Preferred Date to be fixed."
#. module: account_payment
#: field:account.payment.populate.statement,lines:0
msgid "Payment Lines"
msgstr "Payment Lines"
#. module: account_payment
#: model:ir.model,name:account_payment.model_account_move_line
msgid "Journal Items"
msgstr "Journal Items"
#. module: account_payment
#: help:payment.line,move_line_id:0
msgid ""
"This Entry Line will be referred for the information of the ordering "
"customer."
msgstr ""
"This Entry Line will be referred for the information of the ordering "
"customer."
#. module: account_payment
#: view:payment.order.create:0
msgid "Search"
msgstr "Search"
#. module: account_payment
#: field:payment.order,user_id:0
msgid "Responsible"
msgstr "Responsible"
#. module: account_payment
#: field:payment.line,date:0
msgid "Payment Date"
msgstr "Payment Date"
#. module: account_payment
#: report:payment.order:0
msgid "Total:"
msgstr "Total:"
#. module: account_payment
#: field:payment.order,date_done:0
msgid "Execution Date"
msgstr "Execution Date"
#. module: account_payment
#: view:account.payment.populate.statement:0
msgid "ADD"
msgstr "ADD"
#. module: account_payment
#: model:ir.actions.act_window,name:account_payment.action_create_payment_order
msgid "Populate Payment"
msgstr "Populate Payment"
#. module: account_payment
#: field:account.move.line,amount_to_pay:0
msgid "Amount to pay"
msgstr "Amount to pay"
#. module: account_payment
#: field:payment.line,amount:0
msgid "Amount in Company Currency"
msgstr "Amount in Company Currency"
#. module: account_payment
#: help:payment.line,partner_id:0
msgid "The Ordering Customer"
msgstr "The Ordering Customer"
#. module: account_payment
#: model:ir.model,name:account_payment.model_account_payment_make_payment
msgid "Account make payment"
msgstr "Account make payment"
#. module: account_payment
#: report:payment.order:0
msgid "Invoice Ref"
msgstr "Invoice Ref"
#. module: account_payment
#: field:payment.line,name:0
msgid "Your Reference"
msgstr "Your Reference"
#. module: account_payment
#: view:payment.order:0
msgid "Payment order"
msgstr "Payment order"
#. module: account_payment
#: view:payment.line:0
#: view:payment.order:0
msgid "General Information"
msgstr "General Information"
#. module: account_payment
#: view:payment.order:0
#: selection:payment.order,state:0
msgid "Done"
msgstr "Done"
#. module: account_payment
#: model:ir.model,name:account_payment.model_account_invoice
msgid "Invoice"
msgstr "Invoice"
#. module: account_payment
#: field:payment.line,communication:0
msgid "Communication"
msgstr "Communication"
#. module: account_payment
#: view:account.payment.make.payment:0
#: view:account.payment.populate.statement:0
#: view:payment.order:0
#: view:payment.order.create:0
msgid "Cancel"
msgstr "Cancel"
#. module: account_payment
#: field:payment.line,bank_id:0
msgid "Destination Bank Account"
msgstr "Destination Bank Account"
#. module: account_payment
#: view:payment.line:0
#: view:payment.order:0
msgid "Information"
msgstr "Information"
#. module: account_payment
#: model:ir.actions.report.xml,name:account_payment.payment_order1
#: model:ir.model,name:account_payment.model_payment_order
#: view:payment.order:0
msgid "Payment Order"
msgstr "Payment Order"
#. module: account_payment
#: help:payment.line,amount:0
msgid "Payment amount in the company currency"
msgstr "Payment amount in the company currency"
#. module: account_payment
#: view:payment.order.create:0
msgid "Search Payment lines"
msgstr "Search Payment lines"
#. module: account_payment
#: field:payment.line,amount_currency:0
msgid "Amount in Partner Currency"
msgstr "Amount in Partner Currency"
#. module: account_payment
#: field:payment.line,communication2:0
msgid "Communication 2"
msgstr "Communication 2"
#. module: account_payment
#: field:payment.order,date_scheduled:0
msgid "Scheduled Date"
msgstr "Scheduled Date"
#. module: account_payment
#: view:account.payment.make.payment:0
msgid "Are you sure you want to make payment?"
msgstr "Are you sure you want to make payment?"
#. module: account_payment
#: view:payment.mode:0
#: field:payment.mode,journal:0
msgid "Journal"
msgstr "Journal"
#. module: account_payment
#: field:payment.mode,bank_id:0
msgid "Bank account"
msgstr "Bank account"
#. module: account_payment
#: view:payment.order:0
msgid "Confirm Payments"
msgstr "Confirm Payments"
#. module: account_payment
#: field:payment.line,company_currency:0
#: report:payment.order:0
msgid "Company Currency"
msgstr "Company Currency"
#. module: account_payment
#: model:ir.ui.menu,name:account_payment.menu_main_payment
#: view:payment.line:0
#: view:payment.order:0
msgid "Payment"
msgstr "Payment"
#. module: account_payment
#: report:payment.order:0
msgid "Payment Order / Payment"
msgstr "Payment Order / Payment"
#. module: account_payment
#: field:payment.line,move_line_id:0
msgid "Entry line"
msgstr "Entry line"
#. module: account_payment
#: help:payment.line,communication:0
msgid ""
"Used as the message between ordering customer and current company. Depicts "
"'What do you want to say to the recipient about this order ?'"
msgstr ""
"Used as the message between ordering customer and current company. Depicts "
"'What do you want to say to the recipient about this order ?'"
#. module: account_payment
#: field:payment.mode,name:0
msgid "Name"
msgstr "Name"
#. module: account_payment
#: report:payment.order:0
msgid "Bank Account"
msgstr "Bank Account"
#. module: account_payment
#: view:payment.line:0
#: view:payment.order:0
msgid "Entry Information"
msgstr "Entry Information"
#. module: account_payment
#: model:ir.model,name:account_payment.model_payment_order_create
msgid "payment.order.create"
msgstr "payment.order.create"
#. module: account_payment
#: field:payment.line,order_id:0
msgid "Order"
msgstr "Order"
#. module: account_payment
#: field:payment.order,total:0
msgid "Total"
msgstr "Total"
#. module: account_payment
#: view:account.payment.make.payment:0
#: model:ir.actions.act_window,name:account_payment.action_account_payment_make_payment
msgid "Make Payment"
msgstr "Make Payment"
#. module: account_payment
#: field:payment.order,date_prefered:0
msgid "Preferred Date"
msgstr "Preferred Date"
#. module: account_payment
#: view:account.payment.make.payment:0
#: view:account.payment.populate.statement:0
#: view:payment.order.create:0
msgid "or"
msgstr "or"
#. module: account_payment
#: help:payment.mode,bank_id:0
msgid "Bank Account for the Payment Mode"
msgstr "Bank Account for the Payment Mode"
@@ -2,7 +2,8 @@
In order to test the PDF reports defined on Account Payment, I print a Payment Order report.
-
!python {model: payment.order}: |
import netsvc, tools, os
import os
from openerp import netsvc, tools
(data, format) = netsvc.LocalService('report.payment.order').create(cr, uid, [ref('payment_order_1')], {}, {})
if tools.config['test_report_directory']:
file(os.path.join(tools.config['test_report_directory'], 'account_payment-payment_order_report.'+format), 'wb+').write(data)
+154
View File
@@ -0,0 +1,154 @@
# 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-07 18: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-08 04:36+0000\n"
"X-Generator: Launchpad (build 16482)\n"
#. module: account_sequence
#: view:account.sequence.installer:0
#: model:ir.actions.act_window,name:account_sequence.action_account_seq_installer
msgid "Account Sequence Application Configuration"
msgstr "Account Sequence Application Configuration"
#. module: account_sequence
#: help:account.move,internal_sequence_number:0
#: help:account.move.line,internal_sequence_number:0
msgid "Internal Sequence Number"
msgstr "Internal Sequence Number"
#. module: account_sequence
#: help:account.sequence.installer,number_next:0
msgid "Next number of this sequence"
msgstr "Next number of this sequence"
#. module: account_sequence
#: field:account.sequence.installer,number_next:0
msgid "Next Number"
msgstr "Next Number"
#. module: account_sequence
#: field:account.sequence.installer,number_increment:0
msgid "Increment Number"
msgstr "Increment Number"
#. module: account_sequence
#: help:account.sequence.installer,number_increment:0
msgid "The next number of the sequence will be incremented by this number"
msgstr "The next number of the sequence will be incremented by this number"
#. module: account_sequence
#: view:account.sequence.installer:0
msgid "Configure Your Account Sequence Application"
msgstr "Configure Your Account Sequence Application"
#. module: account_sequence
#: view:account.sequence.installer:0
msgid "Configure"
msgstr "Configure"
#. module: account_sequence
#: help:account.sequence.installer,suffix:0
msgid "Suffix value of the record for the sequence"
msgstr "Suffix value of the record for the sequence"
#. module: account_sequence
#: field:account.sequence.installer,company_id:0
msgid "Company"
msgstr "Company"
#. module: account_sequence
#: field:account.sequence.installer,padding:0
msgid "Number padding"
msgstr "Number padding"
#. module: account_sequence
#: model:ir.model,name:account_sequence.model_account_move_line
msgid "Journal Items"
msgstr "Journal Items"
#. module: account_sequence
#: field:account.move,internal_sequence_number:0
#: field:account.move.line,internal_sequence_number:0
msgid "Internal Number"
msgstr "Internal Number"
#. module: account_sequence
#: help:account.sequence.installer,padding:0
msgid ""
"OpenERP will automatically adds some '0' on the left of the 'Next Number' to "
"get the required padding size."
msgstr ""
"OpenERP will automatically adds some '0' on the left of the 'Next Number' to "
"get the required padding size."
#. module: account_sequence
#: field:account.sequence.installer,name:0
msgid "Name"
msgstr "Name"
#. module: account_sequence
#: field:account.journal,internal_sequence_id:0
msgid "Internal Sequence"
msgstr "Internal Sequence"
#. module: account_sequence
#: help:account.sequence.installer,prefix:0
msgid "Prefix value of the record for the sequence"
msgstr "Prefix value of the record for the sequence"
#. module: account_sequence
#: model:ir.model,name:account_sequence.model_account_move
msgid "Account Entry"
msgstr "Account Entry"
#. module: account_sequence
#: field:account.sequence.installer,suffix:0
msgid "Suffix"
msgstr "Suffix"
#. module: account_sequence
#: view:account.sequence.installer:0
msgid "title"
msgstr "title"
#. module: account_sequence
#: field:account.sequence.installer,prefix:0
msgid "Prefix"
msgstr "Prefix"
#. module: account_sequence
#: help:account.journal,internal_sequence_id:0
msgid ""
"This sequence will be used to maintain the internal number for the journal "
"entries related to this journal."
msgstr ""
"This sequence will be used to maintain the internal number for the journal "
"entries related to this journal."
#. module: account_sequence
#: model:ir.model,name:account_sequence.model_account_sequence_installer
msgid "account.sequence.installer"
msgstr "account.sequence.installer"
#. module: account_sequence
#: model:ir.model,name:account_sequence.model_account_journal
msgid "Journal"
msgstr "Journal"
#. module: account_sequence
#: view:account.sequence.installer:0
msgid "You can enhance the Account Sequence Application by installing ."
msgstr "You can enhance the Account Sequence Application by installing ."
+150
View File
@@ -0,0 +1,150 @@
# 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-07 10: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-08 04:36+0000\n"
"X-Generator: Launchpad (build 16482)\n"
#. module: account_sequence
#: view:account.sequence.installer:0
#: model:ir.actions.act_window,name:account_sequence.action_account_seq_installer
msgid "Account Sequence Application Configuration"
msgstr ""
#. module: account_sequence
#: help:account.move,internal_sequence_number:0
#: help:account.move.line,internal_sequence_number:0
msgid "Internal Sequence Number"
msgstr ""
#. module: account_sequence
#: help:account.sequence.installer,number_next:0
msgid "Next number of this sequence"
msgstr ""
#. module: account_sequence
#: field:account.sequence.installer,number_next:0
msgid "Next Number"
msgstr "Дараагийн дугаар"
#. module: account_sequence
#: field:account.sequence.installer,number_increment:0
msgid "Increment Number"
msgstr "Өсөх тоон утга"
#. module: account_sequence
#: help:account.sequence.installer,number_increment:0
msgid "The next number of the sequence will be incremented by this number"
msgstr ""
#. module: account_sequence
#: view:account.sequence.installer:0
msgid "Configure Your Account Sequence Application"
msgstr ""
#. module: account_sequence
#: view:account.sequence.installer:0
msgid "Configure"
msgstr ""
#. module: account_sequence
#: help:account.sequence.installer,suffix:0
msgid "Suffix value of the record for the sequence"
msgstr ""
#. module: account_sequence
#: field:account.sequence.installer,company_id:0
msgid "Company"
msgstr ""
#. module: account_sequence
#: field:account.sequence.installer,padding:0
msgid "Number padding"
msgstr ""
#. module: account_sequence
#: model:ir.model,name:account_sequence.model_account_move_line
msgid "Journal Items"
msgstr ""
#. module: account_sequence
#: field:account.move,internal_sequence_number:0
#: field:account.move.line,internal_sequence_number:0
msgid "Internal Number"
msgstr ""
#. module: account_sequence
#: help:account.sequence.installer,padding:0
msgid ""
"OpenERP will automatically adds some '0' on the left of the 'Next Number' to "
"get the required padding size."
msgstr ""
#. module: account_sequence
#: field:account.sequence.installer,name:0
msgid "Name"
msgstr ""
#. module: account_sequence
#: field:account.journal,internal_sequence_id:0
msgid "Internal Sequence"
msgstr ""
#. module: account_sequence
#: help:account.sequence.installer,prefix:0
msgid "Prefix value of the record for the sequence"
msgstr ""
#. module: account_sequence
#: model:ir.model,name:account_sequence.model_account_move
msgid "Account Entry"
msgstr ""
#. module: account_sequence
#: field:account.sequence.installer,suffix:0
msgid "Suffix"
msgstr ""
#. module: account_sequence
#: view:account.sequence.installer:0
msgid "title"
msgstr ""
#. module: account_sequence
#: field:account.sequence.installer,prefix:0
msgid "Prefix"
msgstr ""
#. module: account_sequence
#: help:account.journal,internal_sequence_id:0
msgid ""
"This sequence will be used to maintain the internal number for the journal "
"entries related to this journal."
msgstr ""
#. module: account_sequence
#: model:ir.model,name:account_sequence.model_account_sequence_installer
msgid "account.sequence.installer"
msgstr ""
#. module: account_sequence
#: model:ir.model,name:account_sequence.model_account_journal
msgid "Journal"
msgstr ""
#. module: account_sequence
#: view:account.sequence.installer:0
msgid "You can enhance the Account Sequence Application by installing ."
msgstr ""
+1 -6
View File
@@ -28,12 +28,7 @@
#
##############################################################################
from openerp.osv import fields,osv
import pooler
import netsvc
import time
from xml import dom
from openerp.osv import fields, osv
CODE_EXEC_DEFAULT = '''\
res = []
+282
View File
@@ -0,0 +1,282 @@
# 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-07 19:56+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-08 04:36+0000\n"
"X-Generator: Launchpad (build 16482)\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 ""
"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()"
#. module: account_test
#: model:accounting.assert.test,name:account_test.account_test_02
msgid "Test 2: Opening a fiscal year"
msgstr "Test 2: Opening a fiscal year"
#. 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 ""
"Check that reconciled invoice for Sales/Purchases has reconciled entries for "
"Payable and Receivable Accounts"
#. 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 ""
"Check if movement lines are balanced and have the same date and period"
#. module: account_test
#: field:accounting.assert.test,name:0
msgid "Test Name"
msgstr "Test Name"
#. module: account_test
#: report:account.test.assert.print:0
msgid "Accouting tests on"
msgstr "Accouting tests on"
#. module: account_test
#: model:accounting.assert.test,name:account_test.account_test_01
msgid "Test 1: General balance"
msgstr "Test 1: General balance"
#. 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 "Check that paid/reconciled invoices are not in 'Open' state"
#. 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 ""
"Check that reconciled account moves, that define Payable and Receivable "
"accounts, are belonging to reconciled invoices"
#. module: account_test
#: view:accounting.assert.test:0
msgid "Tests"
msgstr "Tests"
#. module: account_test
#: field:accounting.assert.test,desc:0
msgid "Test Description"
msgstr "Test Description"
#. module: account_test
#: view:accounting.assert.test:0
msgid "Description"
msgstr "Description"
#. 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 ""
"Check that there's no move for any account with « View » account type"
#. module: account_test
#: model:accounting.assert.test,name:account_test.account_test_08
msgid "Test 9 : Accounts and partners on account moves"
msgstr "Test 9 : Accounts and partners on account moves"
#. 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 "Accounting Tests"
#. module: account_test
#: code:addons/account_test/report/account_test_report.py:74
#, python-format
msgid "The test was passed successfully"
msgstr "The test was passed successfully"
#. module: account_test
#: field:accounting.assert.test,active:0
msgid "Active"
msgstr "Active"
#. module: account_test
#: model:accounting.assert.test,name:account_test.account_test_06
msgid "Test 6 : Invoices status"
msgstr "Test 6 : Invoices status"
#. module: account_test
#: model:ir.model,name:account_test.model_accounting_assert_test
msgid "accounting.assert.test"
msgstr "accounting.assert.test"
#. module: account_test
#: model:accounting.assert.test,name:account_test.account_test_05
msgid ""
"Test 5.1 : Payable and Receivable accountant lines of reconciled invoices"
msgstr ""
"Test 5.1 : Payable and Receivable accountant lines of reconciled invoices"
#. module: account_test
#: field:accounting.assert.test,code_exec:0
msgid "Python code"
msgstr "Python code"
#. 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 ""
"Check on bank statement that the Closing Balance = Starting Balance + sum of "
"statement lines"
#. module: account_test
#: model:accounting.assert.test,name:account_test.account_test_07
msgid "Test 8 : Closing balance on bank statements"
msgstr "Test 8 : Closing balance on bank statements"
#. module: account_test
#: model:accounting.assert.test,name:account_test.account_test_03
msgid "Test 3: Movement lines"
msgstr "Test 3: Movement lines"
#. module: account_test
#: model:accounting.assert.test,name:account_test.account_test_05_2
msgid "Test 5.2 : Reconcilied invoices and Payable/Receivable accounts"
msgstr "Test 5.2 : Reconciled invoices and Payable/Receivable accounts"
#. module: account_test
#: view:accounting.assert.test:0
msgid "Expression"
msgstr "Expression"
#. module: account_test
#: model:accounting.assert.test,name:account_test.account_test_04
msgid "Test 4: Totally reconciled mouvements"
msgstr "Test 4: Totally reconciled movements"
#. module: account_test
#: model:accounting.assert.test,desc:account_test.account_test_04
msgid "Check if the totally reconciled movements are balanced"
msgstr "Check if the totally reconciled movements are balanced"
#. module: account_test
#: field:accounting.assert.test,sequence:0
msgid "Sequence"
msgstr "Sequence"
#. 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 ""
"Check if the balance of the new opened fiscal year matches with last year's "
"balance"
#. module: account_test
#: view:accounting.assert.test:0
msgid "Python Code"
msgstr "Python Code"
#. 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 ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to create Accounting Test.\n"
" </p>\n"
" "
#. module: account_test
#: model:accounting.assert.test,desc:account_test.account_test_01
msgid "Check the balance: Debit sum = Credit sum"
msgstr "Check the balance: Debit sum = Credit sum"
#. 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 "Check that general accounts and partners on account moves are active"
#. module: account_test
#: model:accounting.assert.test,name:account_test.account_test_06_1
msgid "Test 7: « View  » account type"
msgstr "Test 7: « View  » account type"
#. module: account_test
#: view:accounting.assert.test:0
msgid "Code Help"
msgstr "Code Help"
+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 ""
+241
View File
@@ -0,0 +1,241 @@
# 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-11 08:26+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-12 04:43+0000\n"
"X-Generator: Launchpad (build 16491)\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 "Test Adı"
#. 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 "Testler"
#. 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 ""
@@ -22,8 +22,10 @@
import datetime
import time
from report import report_sxw
from openerp.report import report_sxw
from openerp.tools.translate import _
#
# Use period and Journal for selection or resources
#
+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
@@ -956,7 +956,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.'))
@@ -971,7 +973,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>
File diff suppressed because it is too large Load Diff
@@ -19,7 +19,8 @@
In order to test the PDF reports defined on a account_voucher, we will print account voucher Report
-
!python {model: account.voucher}: |
import netsvc, tools, os
import os
from openerp import netsvc, tools
(data, format) = netsvc.LocalService('report.voucher.cash_receipt.drcr').create(cr, uid, [ref("account_voucher_voucheraxelor0again")], {}, {})
if tools.config['test_report_directory']:
file(os.path.join(tools.config['test_report_directory'], 'account_voucher-report.'+format), 'wb+').write(data)
@@ -163,7 +163,8 @@
I fill amounts 130 for the invoice of 200$ and 70 for the invoice of 100$
-
!python {model: account.voucher}: |
import netsvc, time
import time
from openerp import netsvc
vals = {}
voucher_id = self.browse(cr, uid, ref('account_voucher_1_case2a'))
data = []
@@ -179,7 +180,7 @@
I confirm the voucher
-
!python {model: account.voucher}: |
import netsvc
from openerp import netsvc
voucher = self.search(cr, uid, [('name', '=', 'First payment: Case 2 USD/EUR DR EUR'), ('partner_id', '=', ref('base.res_partner_19'))])
self.signal_proforma_voucher(cr, uid, voucher)
-
@@ -230,7 +231,8 @@
and I fully reconcile the 2 previous invoices
-
!python {model: account.voucher}: |
import netsvc, time
import time
from openerp import netsvc
vals = {}
voucher_id = self.browse(cr, uid, ref('account_voucher_2_case2a'))
data = []
@@ -253,7 +255,7 @@
I confirm the voucher
-
!python {model: account.voucher}: |
import netsvc
from openerp import netsvc
voucher = self.search(cr, uid, [('name', '=', 'Second payment: Case 2 SUPPL USD/EUR DR EUR'), ('partner_id', '=', ref('base.res_partner_19'))])
self.signal_proforma_voucher(cr, uid, voucher)
-
@@ -118,7 +118,8 @@
I completly pay the invoice of 200 CAD
-
!python {model: account.voucher}: |
import netsvc, time
import time
from openerp import netsvc
vals = {}
voucher_id = self.browse(cr, uid, ref('account_voucher_1_case4'))
data = []
@@ -141,7 +142,7 @@
I confirm the voucher
-
!python {model: account.voucher}: |
import netsvc
from openerp import netsvc
voucher = self.search(cr, uid, [('name', '=', 'First payment: Case 4'), ('partner_id', '=', ref('base.res_partner_19'))])
self.signal_proforma_voucher(cr, uid, voucher)
-
@@ -124,7 +124,8 @@
I fill $1000 for the previously encoded invoice
-
!python {model: account.voucher}: |
import netsvc, time
import time
from openerp import netsvc
vals = {}
voucher_id = self.browse(cr, uid, ref('account_voucher_case_5_supplier_flow'))
for item in voucher_id.line_dr_ids:
@@ -37,7 +37,7 @@
I will create and post an account voucher of amount 450.0 for the partner Seagate.
-
!python {model: account.voucher}: |
import netsvc
from openerp import netsvc
vals = {}
journal_id = self.default_get(cr, uid, ['journal_id']).get('journal_id',None)
res = self.onchange_partner_id(cr, uid, [], ref("base.res_partner_19"), journal_id, 0.0, 1, ttype='receipt', date=False)
@@ -45,7 +45,7 @@
I create and post a voucher payment of amount 30000.0 for the partner Seagate
-
!python {model: account.voucher}: |
import netsvc
from openerp import netsvc
vals = {}
journal_id = self.default_get(cr, uid, ['journal_id']).get('journal_id',None)
res = self.onchange_partner_id(cr, uid, [], ref("base.res_partner_19"), journal_id, 0.0, 1, ttype='receipt', date=False)
+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>
+405
View File
@@ -0,0 +1,405 @@
# 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-08 19:37+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-09 04:55+0000\n"
"X-Generator: Launchpad (build 16482)\n"
#. module: analytic
#: field:account.analytic.account,child_ids:0
msgid "Child Accounts"
msgstr "Child Accounts"
#. module: analytic
#: selection:account.analytic.account,state:0
msgid "In Progress"
msgstr "In Progress"
#. module: analytic
#: code:addons/analytic/analytic.py:229
#, python-format
msgid "Contract: "
msgstr "Contract: "
#. module: analytic
#: selection:account.analytic.account,state:0
msgid "Template"
msgstr "Template"
#. module: analytic
#: view:account.analytic.account:0
msgid "End Date"
msgstr "End Date"
#. module: analytic
#: help:account.analytic.line,unit_amount:0
msgid "Specifies the amount of quantity to count."
msgstr "Specifies the amount of quantity to count."
#. module: analytic
#: field:account.analytic.account,debit:0
msgid "Debit"
msgstr "Debit"
#. module: analytic
#: help:account.analytic.account,type:0
msgid ""
"If you select the View Type, it means you won't allow to create journal "
"entries using that account.\n"
"The type 'Analytic account' stands for usual accounts that you only want to "
"use in accounting.\n"
"If you select Contract or Project, it offers you the possibility to manage "
"the validity and the invoicing options for this account.\n"
"The special type 'Template of Contract' allows you to define a template with "
"default data that you can reuse easily."
msgstr "I"
#. module: analytic
#: view:account.analytic.account:0
msgid ""
"Once the end date of the contract is\n"
" passed or the maximum number of "
"service\n"
" units (e.g. support contract) is\n"
" reached, the account manager is "
"notified \n"
" by email to renew the contract with "
"the\n"
" customer."
msgstr ""
"Once the end date of the contract is\n"
" passed or the maximum number of "
"service\n"
" units (e.g. support contract) is\n"
" reached, the account manager is "
"notified \n"
" by email to renew the contract with "
"the\n"
" customer."
#. module: analytic
#: selection:account.analytic.account,type:0
msgid "Contract or Project"
msgstr "Contract or Project"
#. module: analytic
#: field:account.analytic.account,name:0
msgid "Account/Contract Name"
msgstr "Account/Contract Name"
#. module: analytic
#: field:account.analytic.account,manager_id:0
msgid "Account Manager"
msgstr "Account Manager"
#. module: analytic
#: field:account.analytic.account,message_follower_ids:0
msgid "Followers"
msgstr "Followers"
#. module: analytic
#: selection:account.analytic.account,state:0
msgid "Closed"
msgstr "Closed"
#. module: analytic
#: model:mail.message.subtype,name:analytic.mt_account_pending
msgid "Contract to Renew"
msgstr "Contract to Renew"
#. module: analytic
#: selection:account.analytic.account,state:0
msgid "New"
msgstr "New"
#. module: analytic
#: field:account.analytic.account,user_id:0
msgid "Project Manager"
msgstr "Project Manager"
#. module: analytic
#: field:account.analytic.account,state:0
msgid "Status"
msgstr "Status"
#. module: analytic
#: code:addons/analytic/analytic.py:268
#, python-format
msgid "%s (copy)"
msgstr "%s (copy)"
#. module: analytic
#: model:ir.model,name:analytic.model_account_analytic_line
msgid "Analytic Line"
msgstr "Analytic Line"
#. module: analytic
#: field:account.analytic.account,description:0
#: field:account.analytic.line,name:0
msgid "Description"
msgstr "Description"
#. module: analytic
#: field:account.analytic.account,message_unread:0
msgid "Unread Messages"
msgstr "Unread Messages"
#. module: analytic
#: constraint:account.analytic.account:0
msgid "Error! You cannot create recursive analytic accounts."
msgstr "Error! You cannot create recursive analytic accounts."
#. module: analytic
#: field:account.analytic.account,company_id:0
#: field:account.analytic.line,company_id:0
msgid "Company"
msgstr "Company"
#. module: analytic
#: view:account.analytic.account:0
msgid "Renewal"
msgstr "Renewal"
#. module: analytic
#: help:account.analytic.account,message_ids:0
msgid "Messages and communication history"
msgstr "Messages and communication history"
#. module: analytic
#: model:mail.message.subtype,description:analytic.mt_account_opened
msgid "Stage <b>opened</b>"
msgstr "Stage <b>opened</b>"
#. module: analytic
#: help:account.analytic.account,quantity_max:0
msgid ""
"Sets the higher limit of time to work on the contract, based on the "
"timesheet. (for instance, number of hours in a limited support contract.)"
msgstr ""
"Sets the higher limit of time to work on the contract, based on the "
"timesheet. (for instance, number of hours in a limited support contract.)"
#. module: analytic
#: code:addons/analytic/analytic.py:160
#, python-format
msgid ""
"If you set a company, the currency selected has to be the same as it's "
"currency. \n"
"You can remove the company belonging, and thus change the currency, only on "
"analytic account of type 'view'. This can be really usefull for "
"consolidation purposes of several companies charts with different "
"currencies, for example."
msgstr ""
"If you set a company, the currency selected has to be the same as it's "
"currency. \n"
"You can remove the company belonging, and thus change the currency, only on "
"analytic account of type 'view'. This can be really usefull for "
"consolidation purposes of several companies charts with different "
"currencies, for example."
#. module: analytic
#: field:account.analytic.account,message_is_follower:0
msgid "Is a Follower"
msgstr ""
#. module: analytic
#: field:account.analytic.line,user_id:0
msgid "User"
msgstr ""
#. module: analytic
#: model:mail.message.subtype,description:analytic.mt_account_pending
msgid "Contract <b>pending</b>"
msgstr ""
#. module: analytic
#: field:account.analytic.line,date:0
msgid "Date"
msgstr ""
#. module: analytic
#: model:mail.message.subtype,name:analytic.mt_account_closed
msgid "Contract Finished"
msgstr ""
#. module: analytic
#: view:account.analytic.account:0
msgid "Terms and Conditions"
msgstr ""
#. module: analytic
#: help:account.analytic.line,amount:0
msgid ""
"Calculated by multiplying the quantity and the price given in the Product's "
"cost price. Always expressed in the company main currency."
msgstr ""
#. module: analytic
#: field:account.analytic.account,partner_id:0
msgid "Customer"
msgstr ""
#. module: analytic
#: field:account.analytic.account,child_complete_ids:0
msgid "Account Hierarchy"
msgstr ""
#. module: analytic
#: field:account.analytic.account,message_ids:0
msgid "Messages"
msgstr ""
#. module: analytic
#: field:account.analytic.account,parent_id:0
msgid "Parent Analytic Account"
msgstr ""
#. module: analytic
#: view:account.analytic.account:0
msgid "Contract Information"
msgstr ""
#. module: analytic
#: field:account.analytic.account,template_id:0
#: selection:account.analytic.account,type:0
msgid "Template of Contract"
msgstr ""
#. module: analytic
#: field:account.analytic.account,message_summary:0
msgid "Summary"
msgstr ""
#. module: analytic
#: field:account.analytic.account,quantity_max:0
msgid "Prepaid Service Units"
msgstr ""
#. module: analytic
#: field:account.analytic.account,credit:0
msgid "Credit"
msgstr ""
#. module: analytic
#: model:mail.message.subtype,name:analytic.mt_account_opened
msgid "Contract Opened"
msgstr ""
#. module: analytic
#: model:mail.message.subtype,description:analytic.mt_account_closed
msgid "Contract <b>closed</b>"
msgstr ""
#. module: analytic
#: selection:account.analytic.account,state:0
msgid "Cancelled"
msgstr ""
#. module: analytic
#: selection:account.analytic.account,type:0
msgid "Analytic View"
msgstr ""
#. module: analytic
#: field:account.analytic.account,balance:0
msgid "Balance"
msgstr ""
#. module: analytic
#: help:account.analytic.account,message_unread:0
msgid "If checked new messages require your attention."
msgstr ""
#. module: analytic
#: selection:account.analytic.account,state:0
msgid "To Renew"
msgstr ""
#. module: analytic
#: field:account.analytic.account,quantity:0
#: field:account.analytic.line,unit_amount:0
msgid "Quantity"
msgstr ""
#. module: analytic
#: field:account.analytic.account,date:0
msgid "Date End"
msgstr ""
#. module: analytic
#: field:account.analytic.account,code:0
msgid "Reference"
msgstr ""
#. module: analytic
#: code:addons/analytic/analytic.py:160
#, python-format
msgid "Error!"
msgstr ""
#. module: analytic
#: model:res.groups,name:analytic.group_analytic_accounting
msgid "Analytic Accounting"
msgstr ""
#. module: analytic
#: field:account.analytic.line,amount:0
msgid "Amount"
msgstr ""
#. module: analytic
#: field:account.analytic.account,complete_name:0
msgid "Full Account Name"
msgstr ""
#. module: analytic
#: view:account.analytic.account:0
#: selection:account.analytic.account,type:0
#: field:account.analytic.line,account_id:0
#: model:ir.model,name:analytic.model_account_analytic_account
msgid "Analytic Account"
msgstr ""
#. module: analytic
#: field:account.analytic.account,currency_id:0
msgid "Currency"
msgstr ""
#. module: analytic
#: help:account.analytic.account,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: analytic
#: field:account.analytic.account,type:0
msgid "Type of Account"
msgstr ""
#. module: analytic
#: field:account.analytic.account,date_start:0
msgid "Start Date"
msgstr ""
#. module: analytic
#: constraint:account.analytic.line:0
msgid "You cannot create analytic line on view account."
msgstr ""
#. module: analytic
#: field:account.analytic.account,line_ids:0
msgid "Analytic Entries"
msgstr ""
@@ -0,0 +1,72 @@
# 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-07 18:38+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-08 04:36+0000\n"
"X-Generator: Launchpad (build 16482)\n"
#. module: analytic_contract_hr_expense
#: view:account.analytic.account:0
msgid "or view"
msgstr "or view"
#. module: analytic_contract_hr_expense
#: view:account.analytic.account:0
msgid "Nothing to invoice, create"
msgstr "Nothing to invoice, create"
#. module: analytic_contract_hr_expense
#: view:account.analytic.account:0
msgid "expenses"
msgstr "expenses"
#. module: analytic_contract_hr_expense
#: model:ir.model,name:analytic_contract_hr_expense.model_account_analytic_account
msgid "Analytic Account"
msgstr "Analytic Account"
#. 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 "Expenses to Invoice of %s"
#. module: analytic_contract_hr_expense
#: code:addons/analytic_contract_hr_expense/analytic_contract_hr_expense.py:121
#, python-format
msgid "Expenses of %s"
msgstr "Expenses of %s"
#. 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 "unknown"
#. module: analytic_contract_hr_expense
#: field:account.analytic.account,est_expenses:0
msgid "Estimation of Expenses to Invoice"
msgstr "Estimation of Expenses to Invoice"
#. module: analytic_contract_hr_expense
#: field:account.analytic.account,charge_expenses:0
msgid "Charge Expenses"
msgstr "Charge Expenses"
#. module: analytic_contract_hr_expense
#: view:account.analytic.account:0
msgid "⇒ Invoice"
msgstr "⇒ Invoice"
@@ -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 ""
@@ -0,0 +1,72 @@
# 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-04 13:51+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-05 04:44+0000\n"
"X-Generator: Launchpad (build 16468)\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" % {
+336
View File
@@ -0,0 +1,336 @@
# 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-08 19:44+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-09 04:55+0000\n"
"X-Generator: Launchpad (build 16482)\n"
#. module: anonymization
#: model:ir.model,name:anonymization.model_ir_model_fields_anonymize_wizard
msgid "ir.model.fields.anonymize.wizard"
msgstr "ir.model.fields.anonymize.wizard"
#. module: anonymization
#: field:ir.model.fields.anonymization,model_id:0
msgid "Object"
msgstr "Object"
#. module: anonymization
#: model:ir.model,name:anonymization.model_ir_model_fields_anonymization_migration_fix
msgid "ir.model.fields.anonymization.migration.fix"
msgstr "ir.model.fields.anonymization.migration.fix"
#. module: anonymization
#: field:ir.model.fields.anonymization.migration.fix,target_version:0
msgid "Target Version"
msgstr "Target Version"
#. module: anonymization
#: selection:ir.model.fields.anonymization.migration.fix,query_type:0
msgid "sql"
msgstr "sql"
#. module: anonymization
#: code:addons/anonymization/anonymization.py:91
#, python-format
msgid ""
"The database anonymization is currently in an unstable state. Some fields "
"are anonymized, while some fields are not anonymized. You should try to "
"solve this problem before trying to create, write or delete fields."
msgstr ""
"The database anonymization is currently in an unstable state. Some fields "
"are anonymized, while some fields are not anonymized. You should try to "
"solve this problem before trying to create, write or delete fields."
#. module: anonymization
#: field:ir.model.fields.anonymization,field_name:0
msgid "Field Name"
msgstr "Field Name"
#. module: anonymization
#: field:ir.model.fields.anonymization,field_id:0
#: field:ir.model.fields.anonymization.migration.fix,field_name:0
msgid "Field"
msgstr "Field"
#. module: anonymization
#: selection:ir.model.fields.anonymization,state:0
msgid "New"
msgstr "New"
#. module: anonymization
#: field:ir.model.fields.anonymize.wizard,file_import:0
msgid "Import"
msgstr "Import"
#. module: anonymization
#: model:ir.model,name:anonymization.model_ir_model_fields_anonymization
msgid "ir.model.fields.anonymization"
msgstr "ir.model.fields.anonymization"
#. module: anonymization
#: code:addons/anonymization/anonymization.py:300
#, python-format
msgid ""
"Before executing the anonymization process, you should make a backup of your "
"database."
msgstr ""
"Before executing the anonymization process, you should make a backup of your "
"database."
#. module: anonymization
#: field:ir.model.fields.anonymization.history,state:0
#: field:ir.model.fields.anonymize.wizard,state:0
msgid "Status"
msgstr "Status"
#. module: anonymization
#: field:ir.model.fields.anonymization.history,direction:0
msgid "Direction"
msgstr "Direction"
#. module: anonymization
#: model:ir.actions.act_window,name:anonymization.action_ir_model_fields_anonymization_tree
#: view:ir.model.fields.anonymization:0
#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization_fields
msgid "Anonymized Fields"
msgstr "Anonymized Fields"
#. module: anonymization
#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization
msgid "Database anonymization"
msgstr "Database anonymization"
#. module: anonymization
#: selection:ir.model.fields.anonymization.history,direction:0
msgid "clear -> anonymized"
msgstr "clear -> anonymized"
#. module: anonymization
#: selection:ir.model.fields.anonymization,state:0
#: selection:ir.model.fields.anonymize.wizard,state:0
msgid "Anonymized"
msgstr "Anonymized"
#. module: anonymization
#: field:ir.model.fields.anonymization,state:0
msgid "unknown"
msgstr "unknown"
#. module: anonymization
#: code:addons/anonymization/anonymization.py:448
#, python-format
msgid "Anonymized value is None. This cannot happens."
msgstr "Anonymized value is None. This cannot happens."
#. module: anonymization
#: field:ir.model.fields.anonymization.history,filepath:0
msgid "File path"
msgstr ""
#. module: anonymization
#: help:ir.model.fields.anonymize.wizard,file_import:0
msgid ""
"This is the file created by the anonymization process. It should have the "
"'.pickle' extention."
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization.history,date:0
msgid "Date"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymize.wizard,file_export:0
msgid "Export"
msgstr ""
#. module: anonymization
#: view:ir.model.fields.anonymize.wizard:0
msgid "Reverse the Database Anonymization"
msgstr ""
#. module: anonymization
#: code:addons/anonymization/anonymization.py:444
#, python-format
msgid ""
"Cannot anonymize fields of these types: binary, many2many, many2one, "
"one2many, reference."
msgstr ""
#. module: anonymization
#: view:ir.model.fields.anonymize.wizard:0
msgid "Database Anonymization"
msgstr ""
#. module: anonymization
#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization_wizard
msgid "Anonymize database"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization.migration.fix,query_type:0
msgid "python"
msgstr ""
#. module: anonymization
#: view:ir.model.fields.anonymization.history:0
#: field:ir.model.fields.anonymization.history,field_ids:0
msgid "Fields"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization,state:0
#: selection:ir.model.fields.anonymize.wizard,state:0
msgid "Clear"
msgstr ""
#. module: anonymization
#: code:addons/anonymization/anonymization.py:533
#, python-format
msgid ""
"It is not possible to reverse the anonymization process without supplying "
"the anonymization export file."
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymize.wizard,summary:0
msgid "Summary"
msgstr ""
#. module: anonymization
#: view:ir.model.fields.anonymization:0
msgid "Anonymized Field"
msgstr ""
#. module: anonymization
#: code:addons/anonymization/anonymization.py:391
#: code:addons/anonymization/anonymization.py:526
#, python-format
msgid ""
"The database anonymization is currently in an unstable state. Some fields "
"are anonymized, while some fields are not anonymized. You should try to "
"solve this problem before trying to do anything."
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymize.wizard,state:0
msgid "Unstable"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization.history,state:0
msgid "Exception occured"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization,state:0
msgid "Not Existing"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization,model_name:0
msgid "Object Name"
msgstr ""
#. module: anonymization
#: model:ir.actions.act_window,name:anonymization.action_ir_model_fields_anonymization_history_tree
#: view:ir.model.fields.anonymization.history:0
#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization_history
msgid "Anonymization History"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization.migration.fix,model_name:0
msgid "Model"
msgstr ""
#. module: anonymization
#: model:ir.model,name:anonymization.model_ir_model_fields_anonymization_history
msgid "ir.model.fields.anonymization.history"
msgstr ""
#. module: anonymization
#: code:addons/anonymization/anonymization.py:358
#, python-format
msgid ""
"The database anonymization is currently in an unstable state. Some fields "
"are anonymized, while some fields are not anonymized. You should try to "
"solve this problem before trying to do anything else."
msgstr ""
#. module: anonymization
#: code:addons/anonymization/anonymization.py:389
#: code:addons/anonymization/anonymization.py:448
#, python-format
msgid "Error !"
msgstr ""
#. module: anonymization
#: model:ir.actions.act_window,name:anonymization.action_ir_model_fields_anonymize_wizard
#: view:ir.model.fields.anonymize.wizard:0
msgid "Anonymize Database"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymize.wizard,name:0
msgid "File Name"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization.migration.fix,sequence:0
msgid "Sequence"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization.history,direction:0
msgid "anonymized -> clear"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization.history,state:0
msgid "Started"
msgstr ""
#. module: anonymization
#: code:addons/anonymization/anonymization.py:389
#, python-format
msgid "The database is currently anonymized, you cannot anonymize it again."
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization.history,state:0
msgid "Done"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization.migration.fix,query:0
#: field:ir.model.fields.anonymization.migration.fix,query_type:0
msgid "Query"
msgstr ""
#. module: anonymization
#: view:ir.model.fields.anonymization.history:0
#: field:ir.model.fields.anonymization.history,msg:0
#: field:ir.model.fields.anonymize.wizard,msg:0
msgid "Message"
msgstr ""
#. module: anonymization
#: code:addons/anonymization/anonymization.py:65
#: sql_constraint:ir.model.fields.anonymization:0
#, python-format
msgid "You cannot have two fields with the same name on the same object!"
msgstr ""
+326 -321
View File
@@ -20,7 +20,7 @@
##############################################################################
from openerp.osv import fields, osv
from openerp.osv.osv import object_proxy
import openerp.service.model
from openerp.tools.translate import _
from openerp import pooler
import time
@@ -171,355 +171,360 @@ class audittrail_log_line(osv.osv):
'field_description': fields.char('Field Description', size=64),
}
class audittrail_objects_proxy(object_proxy):
""" Uses Object proxy for auditing changes on object of subscribed Rules"""
# Monkeypatch the model RPC endpoint for auditing changes.
def get_value_text(self, cr, uid, pool, resource_pool, method, field, value):
"""
Gets textual values for the fields.
If the field is a many2one, it returns the name.
If it's a one2many or a many2many, it returns a list of name.
In other cases, it just returns the value.
:param cr: the current row, from the database cursor,
:param uid: the current user’s ID for security checks,
:param pool: current db's pooler object.
:param resource_pool: pooler object of the model which values are being changed.
:param field: for which the text value is to be returned.
:param value: value of the field.
:param recursive: True or False, True will repeat the process recursively
:return: string value or a list of values(for O2M/M2M)
"""
def get_value_text(cr, uid, pool, resource_pool, method, field, value):
"""
Gets textual values for the fields.
If the field is a many2one, it returns the name.
If it's a one2many or a many2many, it returns a list of name.
In other cases, it just returns the value.
:param cr: the current row, from the database cursor,
:param uid: the current user’s ID for security checks,
:param pool: current db's pooler object.
:param resource_pool: pooler object of the model which values are being changed.
:param field: for which the text value is to be returned.
:param value: value of the field.
:param recursive: True or False, True will repeat the process recursively
:return: string value or a list of values(for O2M/M2M)
"""
field_obj = (resource_pool._all_columns.get(field)).column
if field_obj._type in ('one2many','many2many'):
data = pool.get(field_obj._obj).name_get(cr, uid, value)
#return the modifications on x2many fields as a list of names
res = map(lambda x:x[1], data)
elif field_obj._type == 'many2one':
#return the modifications on a many2one field as its value returned by name_get()
res = value and value[1] or value
else:
res = value
return res
field_obj = (resource_pool._all_columns.get(field)).column
if field_obj._type in ('one2many','many2many'):
data = pool.get(field_obj._obj).name_get(cr, uid, value)
#return the modifications on x2many fields as a list of names
res = map(lambda x:x[1], data)
elif field_obj._type == 'many2one':
#return the modifications on a many2one field as its value returned by name_get()
res = value and value[1] or value
else:
res = value
return res
def create_log_line(self, cr, uid, log_id, model, lines=None):
"""
Creates lines for changed fields with its old and new values
def create_log_line(cr, uid, log_id, model, lines=None):
"""
Creates lines for changed fields with its old and new values
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param model: Object which values are being changed
@param lines: List of values for line is to be created
"""
if lines is None:
lines = []
pool = pooler.get_pool(cr.dbname)
obj_pool = pool.get(model.model)
model_pool = pool.get('ir.model')
field_pool = pool.get('ir.model.fields')
log_line_pool = pool.get('audittrail.log.line')
for line in lines:
field_obj = obj_pool._all_columns.get(line['name'])
assert field_obj, _("'%s' field does not exist in '%s' model" %(line['name'], model.model))
field_obj = field_obj.column
old_value = line.get('old_value', '')
new_value = line.get('new_value', '')
search_models = [model.id]
if obj_pool._inherits:
search_models += model_pool.search(cr, uid, [('model', 'in', obj_pool._inherits.keys())])
field_id = field_pool.search(cr, uid, [('name', '=', line['name']), ('model_id', 'in', search_models)])
if field_obj._type == 'many2one':
old_value = old_value and old_value[0] or old_value
new_value = new_value and new_value[0] or new_value
vals = {
"log_id": log_id,
"field_id": field_id and field_id[0] or False,
"old_value": old_value,
"new_value": new_value,
"old_value_text": line.get('old_value_text', ''),
"new_value_text": line.get('new_value_text', ''),
"field_description": field_obj.string
}
line_id = log_line_pool.create(cr, uid, vals)
return True
def log_fct(self, cr, uid_orig, model, method, fct_src, *args, **kw):
"""
Logging function: This function is performing the logging operation
@param model: Object whose values are being changed
@param method: method to log: create, read, write, unlink, action or workflow action
@param fct_src: execute method of Object proxy
@return: Returns result as per method of Object proxy
"""
pool = pooler.get_pool(cr.dbname)
resource_pool = pool.get(model)
model_pool = pool.get('ir.model')
model_ids = model_pool.search(cr, SUPERUSER_ID, [('model', '=', model)])
model_id = model_ids and model_ids[0] or False
assert model_id, _("'%s' Model does not exist..." %(model))
model = model_pool.browse(cr, SUPERUSER_ID, model_id)
# fields to log. currently only used by log on read()
field_list = []
old_values = new_values = {}
if method == 'create':
res = fct_src(cr, uid_orig, model.model, method, *args, **kw)
if res:
res_ids = [res]
new_values = self.get_data(cr, uid_orig, pool, res_ids, model, method)
elif method == 'read':
res = fct_src(cr, uid_orig, model.model, method, *args, **kw)
# build the res_ids and the old_values dict. Here we don't use get_data() to
# avoid performing an additional read()
res_ids = []
for record in res:
res_ids.append(record['id'])
old_values[(model.id, record['id'])] = {'value': record, 'text': record}
# log only the fields read
field_list = args[1]
elif method == 'unlink':
res_ids = args[0]
old_values = self.get_data(cr, uid_orig, pool, res_ids, model, method)
res = fct_src(cr, uid_orig, model.model, method, *args, **kw)
else: # method is write, action or workflow action
res_ids = []
if args:
res_ids = args[0]
if isinstance(res_ids, (long, int)):
res_ids = [res_ids]
if res_ids:
# store the old values into a dictionary
old_values = self.get_data(cr, uid_orig, pool, res_ids, model, method)
# process the original function, workflow trigger...
res = fct_src(cr, uid_orig, model.model, method, *args, **kw)
if method == 'copy':
res_ids = [res]
if res_ids:
# check the new values and store them into a dictionary
new_values = self.get_data(cr, uid_orig, pool, res_ids, model, method)
# compare the old and new values and create audittrail log if needed
self.process_data(cr, uid_orig, pool, res_ids, model, method, old_values, new_values, field_list)
return res
def get_data(self, cr, uid, pool, res_ids, model, method):
"""
This function simply read all the fields of the given res_ids, and also recurisvely on
all records of a x2m fields read that need to be logged. Then it returns the result in
convenient structure that will be used as comparison basis.
:param cr: the current row, from the database cursor,
:param uid: the current user’s ID. This parameter is currently not used as every
operation to get data is made as super admin. Though, it could be usefull later.
:param pool: current db's pooler object.
:param res_ids: Id's of resource to be logged/compared.
:param model: Object whose values are being changed
:param method: method to log: create, read, unlink, write, actions, workflow actions
:return: dict mapping a tuple (model_id, resource_id) with its value and textual value
{ (model_id, resource_id): { 'value': ...
'textual_value': ...
},
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param model: Object which values are being changed
@param lines: List of values for line is to be created
"""
if lines is None:
lines = []
pool = pooler.get_pool(cr.dbname)
obj_pool = pool.get(model.model)
model_pool = pool.get('ir.model')
field_pool = pool.get('ir.model.fields')
log_line_pool = pool.get('audittrail.log.line')
for line in lines:
field_obj = obj_pool._all_columns.get(line['name'])
assert field_obj, _("'%s' field does not exist in '%s' model" %(line['name'], model.model))
field_obj = field_obj.column
old_value = line.get('old_value', '')
new_value = line.get('new_value', '')
search_models = [model.id]
if obj_pool._inherits:
search_models += model_pool.search(cr, uid, [('model', 'in', obj_pool._inherits.keys())])
field_id = field_pool.search(cr, uid, [('name', '=', line['name']), ('model_id', 'in', search_models)])
if field_obj._type == 'many2one':
old_value = old_value and old_value[0] or old_value
new_value = new_value and new_value[0] or new_value
vals = {
"log_id": log_id,
"field_id": field_id and field_id[0] or False,
"old_value": old_value,
"new_value": new_value,
"old_value_text": line.get('old_value_text', ''),
"new_value_text": line.get('new_value_text', ''),
"field_description": field_obj.string
}
"""
data = {}
resource_pool = pool.get(model.model)
# read all the fields of the given resources in super admin mode
for resource in resource_pool.read(cr, SUPERUSER_ID, res_ids):
values = {}
values_text = {}
resource_id = resource['id']
# loop on each field on the res_ids we just have read
for field in resource:
if field in ('__last_update', 'id'):
continue
values[field] = resource[field]
# get the textual value of that field for this record
values_text[field] = self.get_value_text(cr, SUPERUSER_ID, pool, resource_pool, method, field, resource[field])
line_id = log_line_pool.create(cr, uid, vals)
return True
field_obj = resource_pool._all_columns.get(field).column
if field_obj._type in ('one2many','many2many'):
# check if an audittrail rule apply in super admin mode
if self.check_rules(cr, SUPERUSER_ID, field_obj._obj, method):
# check if the model associated to a *2m field exists, in super admin mode
x2m_model_ids = pool.get('ir.model').search(cr, SUPERUSER_ID, [('model', '=', field_obj._obj)])
x2m_model_id = x2m_model_ids and x2m_model_ids[0] or False
assert x2m_model_id, _("'%s' Model does not exist..." %(field_obj._obj))
x2m_model = pool.get('ir.model').browse(cr, SUPERUSER_ID, x2m_model_id)
field_resource_ids = list(set(resource[field]))
if model.model == x2m_model.model:
# we need to remove current resource_id from the many2many to prevent an infinit loop
if resource_id in field_resource_ids:
field_resource_ids.remove(resource_id)
data.update(self.get_data(cr, SUPERUSER_ID, pool, field_resource_ids, x2m_model, method))
data[(model.id, resource_id)] = {'text':values_text, 'value': values}
return data
def log_fct(cr, uid_orig, model, method, fct_src, *args, **kw):
"""
Logging function: This function is performing the logging operation
@param model: Object whose values are being changed
@param method: method to log: create, read, write, unlink, action or workflow action
@param fct_src: execute method of Object proxy
def prepare_audittrail_log_line(self, cr, uid, pool, model, resource_id, method, old_values, new_values, field_list=None):
"""
This function compares the old data (i.e before the method was executed) and the new data
(after the method was executed) and returns a structure with all the needed information to
log those differences.
@return: Returns result as per method of Object proxy
"""
pool = pooler.get_pool(cr.dbname)
resource_pool = pool.get(model)
model_pool = pool.get('ir.model')
model_ids = model_pool.search(cr, SUPERUSER_ID, [('model', '=', model)])
model_id = model_ids and model_ids[0] or False
assert model_id, _("'%s' Model does not exist..." %(model))
model = model_pool.browse(cr, SUPERUSER_ID, model_id)
# fields to log. currently only used by log on read()
field_list = []
old_values = new_values = {}
if method == 'create':
res = fct_src(cr, uid_orig, model.model, method, *args, **kw)
if res:
res_ids = [res]
new_values = get_data(cr, uid_orig, pool, res_ids, model, method)
elif method == 'read':
res = fct_src(cr, uid_orig, model.model, method, *args, **kw)
# build the res_ids and the old_values dict. Here we don't use get_data() to
# avoid performing an additional read()
res_ids = []
for record in res:
res_ids.append(record['id'])
old_values[(model.id, record['id'])] = {'value': record, 'text': record}
# log only the fields read
field_list = args[1]
elif method == 'unlink':
res_ids = args[0]
old_values = get_data(cr, uid_orig, pool, res_ids, model, method)
res = fct_src(cr, uid_orig, model.model, method, *args, **kw)
else: # method is write, action or workflow action
res_ids = []
if args:
res_ids = args[0]
if isinstance(res_ids, (long, int)):
res_ids = [res_ids]
if res_ids:
# store the old values into a dictionary
old_values = get_data(cr, uid_orig, pool, res_ids, model, method)
# process the original function, workflow trigger...
res = fct_src(cr, uid_orig, model.model, method, *args, **kw)
if method == 'copy':
res_ids = [res]
if res_ids:
# check the new values and store them into a dictionary
new_values = get_data(cr, uid_orig, pool, res_ids, model, method)
# compare the old and new values and create audittrail log if needed
process_data(cr, uid_orig, pool, res_ids, model, method, old_values, new_values, field_list)
return res
def get_data(cr, uid, pool, res_ids, model, method):
"""
This function simply read all the fields of the given res_ids, and also recurisvely on
all records of a x2m fields read that need to be logged. Then it returns the result in
convenient structure that will be used as comparison basis.
:param cr: the current row, from the database cursor,
:param uid: the current user’s ID. This parameter is currently not used as every
operation to get data is made as super admin. Though, it could be usefull later.
:param pool: current db's pooler object.
:param model: model object which values are being changed
:param resource_id: ID of record to which values are being changed
:param res_ids: Id's of resource to be logged/compared.
:param model: Object whose values are being changed
:param method: method to log: create, read, unlink, write, actions, workflow actions
:param old_values: dict of values read before execution of the method
:param new_values: dict of values read after execution of the method
:param field_list: optional argument containing the list of fields to log. Currently only
used when performing a read, it could be usefull later on if we want to log the write
on specific fields only.
:return: dictionary with
* keys: tuples build as ID of model object to log and ID of resource to log
* values: list of all the changes in field values for this couple (model, resource)
return {
(model.id, resource_id): []
}
The reason why the structure returned is build as above is because when modifying an existing
record, we may have to log a change done in a x2many field of that object
"""
if field_list is None:
field_list = []
key = (model.id, resource_id)
lines = {
key: []
}
# loop on all the fields
for field_name, field_definition in pool.get(model.model)._all_columns.items():
if field_name in ('__last_update', 'id'):
:return: dict mapping a tuple (model_id, resource_id) with its value and textual value
{ (model_id, resource_id): { 'value': ...
'textual_value': ...
},
}
"""
data = {}
resource_pool = pool.get(model.model)
# read all the fields of the given resources in super admin mode
for resource in resource_pool.read(cr, SUPERUSER_ID, res_ids):
values = {}
values_text = {}
resource_id = resource['id']
# loop on each field on the res_ids we just have read
for field in resource:
if field in ('__last_update', 'id'):
continue
#if the field_list param is given, skip all the fields not in that list
if field_list and field_name not in field_list:
continue
field_obj = field_definition.column
values[field] = resource[field]
# get the textual value of that field for this record
values_text[field] = get_value_text(cr, SUPERUSER_ID, pool, resource_pool, method, field, resource[field])
field_obj = resource_pool._all_columns.get(field).column
if field_obj._type in ('one2many','many2many'):
# checking if an audittrail rule apply in super admin mode
if self.check_rules(cr, SUPERUSER_ID, field_obj._obj, method):
# checking if the model associated to a *2m field exists, in super admin mode
# check if an audittrail rule apply in super admin mode
if check_rules(cr, SUPERUSER_ID, field_obj._obj, method):
# check if the model associated to a *2m field exists, in super admin mode
x2m_model_ids = pool.get('ir.model').search(cr, SUPERUSER_ID, [('model', '=', field_obj._obj)])
x2m_model_id = x2m_model_ids and x2m_model_ids[0] or False
assert x2m_model_id, _("'%s' Model does not exist..." %(field_obj._obj))
x2m_model = pool.get('ir.model').browse(cr, SUPERUSER_ID, x2m_model_id)
# the resource_ids that need to be checked are the sum of both old and previous values (because we
# need to log also creation or deletion in those lists).
x2m_old_values_ids = old_values.get(key, {'value': {}})['value'].get(field_name, [])
x2m_new_values_ids = new_values.get(key, {'value': {}})['value'].get(field_name, [])
# We use list(set(...)) to remove duplicates.
res_ids = list(set(x2m_old_values_ids + x2m_new_values_ids))
field_resource_ids = list(set(resource[field]))
if model.model == x2m_model.model:
# we need to remove current resource_id from the many2many to prevent an infinit loop
if resource_id in res_ids:
res_ids.remove(resource_id)
for res_id in res_ids:
lines.update(self.prepare_audittrail_log_line(cr, SUPERUSER_ID, pool, x2m_model, res_id, method, old_values, new_values, field_list))
# if the value value is different than the old value: record the change
if key not in old_values or key not in new_values or old_values[key]['value'][field_name] != new_values[key]['value'][field_name]:
data = {
'name': field_name,
'new_value': key in new_values and new_values[key]['value'].get(field_name),
'old_value': key in old_values and old_values[key]['value'].get(field_name),
'new_value_text': key in new_values and new_values[key]['text'].get(field_name),
'old_value_text': key in old_values and old_values[key]['text'].get(field_name)
}
lines[key].append(data)
return lines
if resource_id in field_resource_ids:
field_resource_ids.remove(resource_id)
data.update(get_data(cr, SUPERUSER_ID, pool, field_resource_ids, x2m_model, method))
def process_data(self, cr, uid, pool, res_ids, model, method, old_values=None, new_values=None, field_list=None):
"""
This function processes and iterates recursively to log the difference between the old
data (i.e before the method was executed) and the new data and creates audittrail log
accordingly.
data[(model.id, resource_id)] = {'text':values_text, 'value': values}
return data
:param cr: the current row, from the database cursor,
:param uid: the current user’s ID,
:param pool: current db's pooler object.
:param res_ids: Id's of resource to be logged/compared.
:param model: model object which values are being changed
:param method: method to log: create, read, unlink, write, actions, workflow actions
:param old_values: dict of values read before execution of the method
:param new_values: dict of values read after execution of the method
:param field_list: optional argument containing the list of fields to log. Currently only
used when performing a read, it could be usefull later on if we want to log the write
on specific fields only.
:return: True
"""
if field_list is None:
field_list = []
# loop on all the given ids
for res_id in res_ids:
# compare old and new values and get audittrail log lines accordingly
lines = self.prepare_audittrail_log_line(cr, uid, pool, model, res_id, method, old_values, new_values, field_list)
def prepare_audittrail_log_line(cr, uid, pool, model, resource_id, method, old_values, new_values, field_list=None):
"""
This function compares the old data (i.e before the method was executed) and the new data
(after the method was executed) and returns a structure with all the needed information to
log those differences.
# if at least one modification has been found
for model_id, resource_id in lines:
name = pool.get(model.model).name_get(cr, uid, [resource_id])[0][1]
vals = {
'method': method,
'object_id': model_id,
'user_id': uid,
'res_id': resource_id,
'name': name,
}
if (model_id, resource_id) not in old_values and method not in ('copy', 'read'):
# the resource was not existing so we are forcing the method to 'create'
# (because it could also come with the value 'write' if we are creating
# new record through a one2many field)
vals.update({'method': 'create'})
if (model_id, resource_id) not in new_values and method not in ('copy', 'read'):
# the resource is not existing anymore so we are forcing the method to 'unlink'
# (because it could also come with the value 'write' if we are deleting the
# record through a one2many field)
vals.update({'method': 'unlink'})
# create the audittrail log in super admin mode, only if a change has been detected
if lines[(model_id, resource_id)]:
log_id = pool.get('audittrail.log').create(cr, SUPERUSER_ID, vals)
model = pool.get('ir.model').browse(cr, uid, model_id)
self.create_log_line(cr, SUPERUSER_ID, log_id, model, lines[(model_id, resource_id)])
return True
:param cr: the current row, from the database cursor,
:param uid: the current user’s ID. This parameter is currently not used as every
operation to get data is made as super admin. Though, it could be usefull later.
:param pool: current db's pooler object.
:param model: model object which values are being changed
:param resource_id: ID of record to which values are being changed
:param method: method to log: create, read, unlink, write, actions, workflow actions
:param old_values: dict of values read before execution of the method
:param new_values: dict of values read after execution of the method
:param field_list: optional argument containing the list of fields to log. Currently only
used when performing a read, it could be usefull later on if we want to log the write
on specific fields only.
def check_rules(self, cr, uid, model, method):
"""
Checks if auditrails is installed for that db and then if one rule match
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID,
@param model: value of _name of the object which values are being changed
@param method: method to log: create, read, unlink,write,actions,workflow actions
@return: True or False
"""
pool = pooler.get_pool(cr.dbname)
if 'audittrail.rule' in pool.models:
model_ids = pool.get('ir.model').search(cr, SUPERUSER_ID, [('model', '=', model)])
model_id = model_ids and model_ids[0] or False
if model_id:
rule_ids = pool.get('audittrail.rule').search(cr, SUPERUSER_ID, [('object_id', '=', model_id), ('state', '=', 'subscribed')])
for rule in pool.get('audittrail.rule').read(cr, SUPERUSER_ID, rule_ids, ['user_id','log_read','log_write','log_create','log_unlink','log_action','log_workflow']):
if len(rule['user_id']) == 0 or uid in rule['user_id']:
if rule.get('log_'+method,0):
:return: dictionary with
* keys: tuples build as ID of model object to log and ID of resource to log
* values: list of all the changes in field values for this couple (model, resource)
return {
(model.id, resource_id): []
}
The reason why the structure returned is build as above is because when modifying an existing
record, we may have to log a change done in a x2many field of that object
"""
if field_list is None:
field_list = []
key = (model.id, resource_id)
lines = {
key: []
}
# loop on all the fields
for field_name, field_definition in pool.get(model.model)._all_columns.items():
if field_name in ('__last_update', 'id'):
continue
#if the field_list param is given, skip all the fields not in that list
if field_list and field_name not in field_list:
continue
field_obj = field_definition.column
if field_obj._type in ('one2many','many2many'):
# checking if an audittrail rule apply in super admin mode
if check_rules(cr, SUPERUSER_ID, field_obj._obj, method):
# checking if the model associated to a *2m field exists, in super admin mode
x2m_model_ids = pool.get('ir.model').search(cr, SUPERUSER_ID, [('model', '=', field_obj._obj)])
x2m_model_id = x2m_model_ids and x2m_model_ids[0] or False
assert x2m_model_id, _("'%s' Model does not exist..." %(field_obj._obj))
x2m_model = pool.get('ir.model').browse(cr, SUPERUSER_ID, x2m_model_id)
# the resource_ids that need to be checked are the sum of both old and previous values (because we
# need to log also creation or deletion in those lists).
x2m_old_values_ids = old_values.get(key, {'value': {}})['value'].get(field_name, [])
x2m_new_values_ids = new_values.get(key, {'value': {}})['value'].get(field_name, [])
# We use list(set(...)) to remove duplicates.
res_ids = list(set(x2m_old_values_ids + x2m_new_values_ids))
if model.model == x2m_model.model:
# we need to remove current resource_id from the many2many to prevent an infinit loop
if resource_id in res_ids:
res_ids.remove(resource_id)
for res_id in res_ids:
lines.update(prepare_audittrail_log_line(cr, SUPERUSER_ID, pool, x2m_model, res_id, method, old_values, new_values, field_list))
# if the value value is different than the old value: record the change
if key not in old_values or key not in new_values or old_values[key]['value'][field_name] != new_values[key]['value'][field_name]:
data = {
'name': field_name,
'new_value': key in new_values and new_values[key]['value'].get(field_name),
'old_value': key in old_values and old_values[key]['value'].get(field_name),
'new_value_text': key in new_values and new_values[key]['text'].get(field_name),
'old_value_text': key in old_values and old_values[key]['text'].get(field_name)
}
lines[key].append(data)
return lines
def process_data(cr, uid, pool, res_ids, model, method, old_values=None, new_values=None, field_list=None):
"""
This function processes and iterates recursively to log the difference between the old
data (i.e before the method was executed) and the new data and creates audittrail log
accordingly.
:param cr: the current row, from the database cursor,
:param uid: the current user’s ID,
:param pool: current db's pooler object.
:param res_ids: Id's of resource to be logged/compared.
:param model: model object which values are being changed
:param method: method to log: create, read, unlink, write, actions, workflow actions
:param old_values: dict of values read before execution of the method
:param new_values: dict of values read after execution of the method
:param field_list: optional argument containing the list of fields to log. Currently only
used when performing a read, it could be usefull later on if we want to log the write
on specific fields only.
:return: True
"""
if field_list is None:
field_list = []
# loop on all the given ids
for res_id in res_ids:
# compare old and new values and get audittrail log lines accordingly
lines = prepare_audittrail_log_line(cr, uid, pool, model, res_id, method, old_values, new_values, field_list)
# if at least one modification has been found
for model_id, resource_id in lines:
name = pool.get(model.model).name_get(cr, uid, [resource_id])[0][1]
vals = {
'method': method,
'object_id': model_id,
'user_id': uid,
'res_id': resource_id,
'name': name,
}
if (model_id, resource_id) not in old_values and method not in ('copy', 'read'):
# the resource was not existing so we are forcing the method to 'create'
# (because it could also come with the value 'write' if we are creating
# new record through a one2many field)
vals.update({'method': 'create'})
if (model_id, resource_id) not in new_values and method not in ('copy', 'read'):
# the resource is not existing anymore so we are forcing the method to 'unlink'
# (because it could also come with the value 'write' if we are deleting the
# record through a one2many field)
vals.update({'method': 'unlink'})
# create the audittrail log in super admin mode, only if a change has been detected
if lines[(model_id, resource_id)]:
log_id = pool.get('audittrail.log').create(cr, SUPERUSER_ID, vals)
model = pool.get('ir.model').browse(cr, uid, model_id)
create_log_line(cr, SUPERUSER_ID, log_id, model, lines[(model_id, resource_id)])
return True
def check_rules(cr, uid, model, method):
"""
Checks if auditrails is installed for that db and then if one rule match
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID,
@param model: value of _name of the object which values are being changed
@param method: method to log: create, read, unlink,write,actions,workflow actions
@return: True or False
"""
pool = pooler.get_pool(cr.dbname)
if 'audittrail.rule' in pool.models:
model_ids = pool.get('ir.model').search(cr, SUPERUSER_ID, [('model', '=', model)])
model_id = model_ids and model_ids[0] or False
if model_id:
rule_ids = pool.get('audittrail.rule').search(cr, SUPERUSER_ID, [('object_id', '=', model_id), ('state', '=', 'subscribed')])
for rule in pool.get('audittrail.rule').read(cr, SUPERUSER_ID, rule_ids, ['user_id','log_read','log_write','log_create','log_unlink','log_action','log_workflow']):
if len(rule['user_id']) == 0 or uid in rule['user_id']:
if rule.get('log_'+method,0):
return True
elif method not in ('default_get','read','fields_view_get','fields_get','search','search_count','name_search','name_get','get','request_get', 'get_sc', 'unlink', 'write', 'create', 'read_group', 'import_data'):
if rule['log_action']:
return True
elif method not in ('default_get','read','fields_view_get','fields_get','search','search_count','name_search','name_get','get','request_get', 'get_sc', 'unlink', 'write', 'create', 'read_group', 'import_data'):
if rule['log_action']:
return True
def execute_cr(self, cr, uid, model, method, *args, **kw):
fct_src = super(audittrail_objects_proxy, self).execute_cr
if self.check_rules(cr,uid,model,method):
return self.log_fct(cr, uid, model, method, fct_src, *args, **kw)
return fct_src(cr, uid, model, method, *args, **kw)
# Replace the openerp.service.model functions.
def exec_workflow_cr(self, cr, uid, model, method, *args, **kw):
fct_src = super(audittrail_objects_proxy, self).exec_workflow_cr
if self.check_rules(cr,uid,model,'workflow'):
return self.log_fct(cr, uid, model, method, fct_src, *args, **kw)
return fct_src(cr, uid, model, method, *args, **kw)
original_execute_cr = openerp.service.model.execute_cr
original_exec_workflow_cr = openerp.service.model.exec_workflow_cr
audittrail_objects_proxy()
def execute_cr(cr, uid, model, method, *args, **kw):
fct_src = original_execute_cr
if check_rules(cr,uid,model,method):
return log_fct(cr, uid, model, method, fct_src, *args, **kw)
return fct_src(cr, uid, model, method, *args, **kw)
def exec_workflow_cr(cr, uid, model, method, *args, **kw):
fct_src = original_exec_workflow_cr
if check_rules(cr,uid,model,'workflow'):
return log_fct(cr, uid, model, method, fct_src, *args, **kw)
return fct_src(cr, uid, model, method, *args, **kw)
openerp.service.model.execute_cr = execute_cr
openerp.service.model.exec_workflow_cr = exec_workflow_cr
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+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"
+13 -22
View File
@@ -1,37 +1,28 @@
# Mongolian translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# 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>, 2012.
# 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: 2012-06-19 09:29+0000\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-02-07 10: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: 2012-12-04 05:53+0000\n"
"X-Generator: Launchpad (build 16335)\n"
"X-Launchpad-Export-Date: 2013-02-08 04:36+0000\n"
"X-Generator: Launchpad (build 16482)\n"
#. module: base_crypt
#: model:ir.model,name:base_crypt.model_res_users
msgid "Users"
#. module: auth_crypt
#: field:res.users,password_crypt:0
msgid "Encrypted Password"
msgstr ""
#~ msgid "You can not have two users with the same login !"
#~ msgstr "Ижил нэвтрэх кодтой хоёр хэрэглэгч байж болохгүй!"
#, python-format
#~ msgid "Error"
#~ msgstr "Алдаа"
#~ msgid "The chosen company is not in the allowed companies for this user"
#~ msgstr ""
#~ "Энэ хэрэглэгчийн сонгосон компани зөвшөөрөгдсөн компаниуд дунд алга байна."
#~ msgid "res.users"
#~ msgstr "Хэрэглэгч"
#. module: auth_crypt
#: model:ir.model,name:auth_crypt.model_res_users
msgid "Users"
msgstr "Хэрэглэгчид"
+168
View File
@@ -0,0 +1,168 @@
# 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-07 19:49+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-08 04:36+0000\n"
"X-Generator: Launchpad (build 16482)\n"
#. module: auth_ldap
#: field:res.company.ldap,user:0
msgid "Template User"
msgstr "Template User"
#. module: auth_ldap
#: help:res.company.ldap,ldap_tls:0
msgid ""
"Request secure TLS/SSL encryption when connecting to the LDAP server. This "
"option requires a server with STARTTLS enabled, otherwise all authentication "
"attempts will fail."
msgstr ""
"Request secure TLS/SSL encryption when connecting to the LDAP server. This "
"option requires a server with STARTTLS enabled, otherwise all authentication "
"attempts will fail."
#. module: auth_ldap
#: view:res.company:0
#: view:res.company.ldap:0
msgid "LDAP Configuration"
msgstr "LDAP Configuration"
#. module: auth_ldap
#: field:res.company.ldap,ldap_binddn:0
msgid "LDAP binddn"
msgstr "LDAP binddn"
#. module: auth_ldap
#: field:res.company.ldap,company:0
msgid "Company"
msgstr "Company"
#. module: auth_ldap
#: field:res.company.ldap,ldap_server:0
msgid "LDAP Server address"
msgstr "LDAP Server address"
#. module: auth_ldap
#: field:res.company.ldap,ldap_server_port:0
msgid "LDAP Server port"
msgstr "LDAP Server port"
#. module: auth_ldap
#: help:res.company.ldap,create_user:0
msgid ""
"Automatically create local user accounts for new users authenticating via "
"LDAP"
msgstr ""
"Automatically create local user accounts for new users authenticating via "
"LDAP"
#. module: auth_ldap
#: field:res.company.ldap,ldap_base:0
msgid "LDAP base"
msgstr "LDAP base"
#. module: auth_ldap
#: view:res.company.ldap:0
msgid "User Information"
msgstr "User Information"
#. module: auth_ldap
#: field:res.company.ldap,ldap_password:0
msgid "LDAP password"
msgstr "LDAP password"
#. module: auth_ldap
#: model:ir.model,name:auth_ldap.model_res_company
msgid "Companies"
msgstr "Companies"
#. module: auth_ldap
#: view:res.company.ldap:0
msgid "Process Parameter"
msgstr "Process Parameter"
#. module: auth_ldap
#: model:ir.model,name:auth_ldap.model_res_company_ldap
msgid "res.company.ldap"
msgstr "res.company.ldap"
#. module: auth_ldap
#: help:res.company.ldap,user:0
msgid "User to copy when creating new users"
msgstr "User to copy when creating new users"
#. module: auth_ldap
#: field:res.company.ldap,ldap_tls:0
msgid "Use TLS"
msgstr "Use TLS"
#. module: auth_ldap
#: field:res.company.ldap,sequence:0
msgid "Sequence"
msgstr "Sequence"
#. module: auth_ldap
#: view:res.company.ldap:0
msgid "Login Information"
msgstr "Login Information"
#. module: auth_ldap
#: view:res.company.ldap:0
msgid "Server Information"
msgstr "Server Information"
#. module: auth_ldap
#: model:ir.actions.act_window,name:auth_ldap.action_ldap_installer
msgid "Setup your LDAP Server"
msgstr "Setup your LDAP Server"
#. module: auth_ldap
#: view:res.company:0
#: field:res.company,ldaps:0
msgid "LDAP Parameters"
msgstr "LDAP Parameters"
#. module: auth_ldap
#: help:res.company.ldap,ldap_password:0
msgid ""
"The password of the user account on the LDAP server that is used to query "
"the directory."
msgstr ""
"The password of the user account on the LDAP server that is used to query "
"the directory."
#. module: auth_ldap
#: help:res.company.ldap,ldap_binddn:0
msgid ""
"The user account on the LDAP server that is used to query the directory. "
"Leave empty to connect anonymously."
msgstr ""
"The user account on the LDAP server that is used to query the directory. "
"Leave empty to connect anonymously."
#. module: auth_ldap
#: model:ir.model,name:auth_ldap.model_res_users
msgid "Users"
msgstr "Users"
#. module: auth_ldap
#: field:res.company.ldap,ldap_filter:0
msgid "LDAP filter"
msgstr "LDAP filter"
#. module: auth_ldap
#: field:res.company.ldap,create_user:0
msgid "Create user"
msgstr "Create user"
+135
View File
@@ -0,0 +1,135 @@
# 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-07 19:24+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-08 04:36+0000\n"
"X-Generator: Launchpad (build 16482)\n"
#. module: auth_oauth
#: field:auth.oauth.provider,validation_endpoint:0
msgid "Validation URL"
msgstr "Validation URL"
#. module: auth_oauth
#: field:auth.oauth.provider,auth_endpoint:0
msgid "Authentication URL"
msgstr "Authentication URL"
#. module: auth_oauth
#: model:ir.model,name:auth_oauth.model_base_config_settings
msgid "base.config.settings"
msgstr "base.config.settings"
#. module: auth_oauth
#: field:auth.oauth.provider,name:0
msgid "Provider name"
msgstr "Provider name"
#. module: auth_oauth
#: field:auth.oauth.provider,scope:0
msgid "Scope"
msgstr "Scope"
#. module: auth_oauth
#: field:res.users,oauth_provider_id:0
msgid "OAuth Provider"
msgstr "OAuth Provider"
#. module: auth_oauth
#: field:auth.oauth.provider,css_class:0
msgid "CSS class"
msgstr "CSS class"
#. module: auth_oauth
#: field:auth.oauth.provider,body:0
msgid "Body"
msgstr "Body"
#. module: auth_oauth
#: model:ir.model,name:auth_oauth.model_res_users
msgid "Users"
msgstr "Users"
#. module: auth_oauth
#: field:auth.oauth.provider,sequence:0
msgid "unknown"
msgstr "unknown"
#. module: auth_oauth
#: field:res.users,oauth_access_token:0
msgid "OAuth Access Token"
msgstr "OAuth Access Token"
#. module: auth_oauth
#: field:auth.oauth.provider,client_id:0
#: field:base.config.settings,auth_oauth_facebook_client_id:0
#: field:base.config.settings,auth_oauth_google_client_id:0
msgid "Client ID"
msgstr "Client ID"
#. module: auth_oauth
#: model:ir.ui.menu,name:auth_oauth.menu_oauth_providers
msgid "OAuth Providers"
msgstr "OAuth Providers"
#. module: auth_oauth
#: model:ir.model,name:auth_oauth.model_auth_oauth_provider
msgid "OAuth2 provider"
msgstr "OAuth2 provider"
#. module: auth_oauth
#: field:res.users,oauth_uid:0
msgid "OAuth User ID"
msgstr "OAuth User ID"
#. module: auth_oauth
#: field:base.config.settings,auth_oauth_facebook_enabled:0
msgid "Allow users to sign in with Facebook"
msgstr "Allow users to sign in with Facebook"
#. module: auth_oauth
#: sql_constraint:res.users:0
msgid "OAuth UID must be unique per provider"
msgstr "OAuth UID must be unique per provider"
#. module: auth_oauth
#: help:res.users,oauth_uid:0
msgid "Oauth Provider user_id"
msgstr "Oauth Provider user_id"
#. module: auth_oauth
#: field:auth.oauth.provider,data_endpoint:0
msgid "Data URL"
msgstr "Data URL"
#. module: auth_oauth
#: view:auth.oauth.provider:0
msgid "arch"
msgstr "arch"
#. module: auth_oauth
#: model:ir.actions.act_window,name:auth_oauth.action_oauth_provider
msgid "Providers"
msgstr "Providers"
#. module: auth_oauth
#: field:base.config.settings,auth_oauth_google_enabled:0
msgid "Allow users to sign in with Google"
msgstr "Allow users to sign in with Google"
#. module: auth_oauth
#: field:auth.oauth.provider,enabled:0
msgid "Allowed"
msgstr "Allowed"
+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 @@
# 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-07 18:48+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-08 04:36+0000\n"
"X-Generator: Launchpad (build 16482)\n"
#. module: auth_openid
#. openerp-web
#: code:addons/auth_openid/static/src/xml/auth_openid.xml:24
#, python-format
msgid "Username"
msgstr "Username"
#. 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 "OpenID"
#. 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 "OpenID URL"
#. 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 "Google"
#. 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 "Used for disambiguation in case of a shared OpenID URL"
#. module: auth_openid
#. openerp-web
#: code:addons/auth_openid/static/src/xml/auth_openid.xml:18
#, python-format
msgid "Google Apps Domain"
msgstr "Google Apps Domain"
#. module: auth_openid
#: field:res.users,openid_email:0
msgid "OpenID Email"
msgstr "OpenID Email"
#. module: auth_openid
#: field:res.users,openid_key:0
msgid "OpenID Key"
msgstr "OpenID Key"
#. module: auth_openid
#. openerp-web
#: code:addons/auth_openid/static/src/xml/auth_openid.xml:8
#, python-format
msgid "Password"
msgstr "Password"
#. module: auth_openid
#. openerp-web
#: code:addons/auth_openid/static/src/xml/auth_openid.xml:10
#, python-format
msgid "Google Apps"
msgstr "Google Apps"
#. module: auth_openid
#: model:ir.model,name:auth_openid.model_res_users
msgid "Users"
msgstr "Users"
+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>
+277
View File
@@ -0,0 +1,277 @@
# 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-07 20:26+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-08 04:36+0000\n"
"X-Generator: Launchpad (build 16482)\n"
#. module: auth_signup
#: field:res.partner,signup_type:0
msgid "Signup Token Type"
msgstr "Signup Token Type"
#. module: auth_signup
#: field:base.config.settings,auth_signup_uninvited:0
msgid "Allow external users to sign up"
msgstr "Allow external users to sign up"
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:16
#, python-format
msgid "Confirm Password"
msgstr "Confirm Password"
#. module: auth_signup
#: help:base.config.settings,auth_signup_uninvited:0
msgid "If unchecked, only invited users may sign up."
msgstr "If unchecked, only invited users may sign up."
#. module: auth_signup
#: model:ir.model,name:auth_signup.model_base_config_settings
msgid "base.config.settings"
msgstr "base.config.settings"
#. module: auth_signup
#: code:addons/auth_signup/res_users.py:252
#, python-format
msgid "Cannot send email: user has no email address."
msgstr "Cannot send email: user has no email address."
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:25
#, python-format
msgid "Reset password"
msgstr "Reset password"
#. module: auth_signup
#: field:base.config.settings,auth_signup_template_user_id:0
msgid "Template user for new users created through signup"
msgstr "Template user for new users created through signup"
#. module: auth_signup
#: model:email.template,subject:auth_signup.reset_password_email
msgid "Password reset"
msgstr "Password reset"
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:125
#, python-format
msgid "Please enter a password and confirm it."
msgstr "Please enter a password and confirm it."
#. module: auth_signup
#: view:res.users:0
msgid "Send an email to the user to (re)set their password."
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:23
#, python-format
msgid "Sign Up"
msgstr ""
#. module: auth_signup
#: selection:res.users,state:0
msgid "New"
msgstr ""
#. module: auth_signup
#: code:addons/auth_signup/res_users.py:258
#, python-format
msgid "Mail sent to:"
msgstr ""
#. module: auth_signup
#: field:res.users,state:0
msgid "Status"
msgstr ""
#. module: auth_signup
#: model:email.template,body_html:auth_signup.reset_password_email
msgid ""
"\n"
"<p>A password reset was requested for the OpenERP account linked to this "
"email.</p>\n"
"\n"
"<p>You may change your password by following <a "
"href=\"${object.signup_url}\">this link</a>.</p>\n"
"\n"
"<p>Note: If you do not expect this, you can safely ignore this email.</p>"
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:119
#, python-format
msgid "Please enter a name."
msgstr ""
#. module: auth_signup
#: model:ir.model,name:auth_signup.model_res_users
msgid "Users"
msgstr ""
#. module: auth_signup
#: field:res.partner,signup_url:0
msgid "Signup URL"
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:122
#, python-format
msgid "Please enter a username."
msgstr ""
#. module: auth_signup
#: selection:res.users,state:0
msgid "Active"
msgstr ""
#. module: auth_signup
#: code:addons/auth_signup/res_users.py:256
#, python-format
msgid ""
"Cannot send email: no outgoing email server configured.\n"
"You can configure it under Settings/General Settings."
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:12
#, python-format
msgid "Username"
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:8
#, python-format
msgid "Name"
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:165
#, python-format
msgid "Please enter a username or email address."
msgstr ""
#. module: auth_signup
#: selection:res.users,state:0
msgid "Resetting Password"
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:13
#, python-format
msgid "Username (Email)"
msgstr ""
#. module: auth_signup
#: field:res.partner,signup_expiration:0
msgid "Signup Expiration"
msgstr ""
#. module: auth_signup
#: help:base.config.settings,auth_signup_reset_password:0
msgid "This allows users to trigger a password reset from the Login page."
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:21
#, python-format
msgid "Log in"
msgstr ""
#. module: auth_signup
#: field:res.partner,signup_valid:0
msgid "Signup Token is Valid"
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:116
#: code:addons/auth_signup/static/src/js/auth_signup.js:119
#: code:addons/auth_signup/static/src/js/auth_signup.js:122
#: code:addons/auth_signup/static/src/js/auth_signup.js:125
#: code:addons/auth_signup/static/src/js/auth_signup.js:128
#: code:addons/auth_signup/static/src/js/auth_signup.js:162
#: code:addons/auth_signup/static/src/js/auth_signup.js:165
#, python-format
msgid "Login"
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:99
#, python-format
msgid "Invalid signup token"
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:128
#, python-format
msgid "Passwords do not match; please retype them."
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:116
#: code:addons/auth_signup/static/src/js/auth_signup.js:162
#, python-format
msgid "No database selected !"
msgstr ""
#. module: auth_signup
#: view:res.users:0
msgid "Reset Password"
msgstr ""
#. module: auth_signup
#: field:base.config.settings,auth_signup_reset_password:0
msgid "Enable password reset from Login page"
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:24
#, python-format
msgid "Back to Login"
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:22
#, python-format
msgid "Sign up"
msgstr ""
#. module: auth_signup
#: model:ir.model,name:auth_signup.model_res_partner
msgid "Partner"
msgstr ""
#. module: auth_signup
#: field:res.partner,signup_token:0
msgid "Signup Token"
msgstr ""
+289
View File
@@ -0,0 +1,289 @@
# 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-09 13:23+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-10 04:49+0000\n"
"X-Generator: Launchpad (build 16482)\n"
#. module: auth_signup
#: field:res.partner,signup_type:0
msgid "Signup Token Type"
msgstr "Бүртгүүлэх Жетоны төрөл"
#. module: auth_signup
#: field:base.config.settings,auth_signup_uninvited:0
msgid "Allow external users to sign up"
msgstr "Гадаад хэрэглэгчид бүртгүүлэхийг зөвшөөрөх"
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:16
#, python-format
msgid "Confirm Password"
msgstr "Нууц үгийг баталгаажуулах"
#. module: auth_signup
#: help:base.config.settings,auth_signup_uninvited:0
msgid "If unchecked, only invited users may sign up."
msgstr ""
"Хэрэв тэмдэглээгүй бол зөвхөн уригдсан хэрэглэгчид л бүртгүүлэх боломжтой"
#. module: auth_signup
#: model:ir.model,name:auth_signup.model_base_config_settings
msgid "base.config.settings"
msgstr "base.config.settings"
#. module: auth_signup
#: code:addons/auth_signup/res_users.py:252
#, python-format
msgid "Cannot send email: user has no email address."
msgstr "Имэйлийг илгээх боломжгүй: хэрэглэгчид имэйл хаяг алга"
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:25
#, python-format
msgid "Reset password"
msgstr "Нууц үгийг шинэчлэх"
#. module: auth_signup
#: field:base.config.settings,auth_signup_template_user_id:0
msgid "Template user for new users created through signup"
msgstr "Бүртгүүлэхээр үүссэн шинэ хэрэглэгчид зориулсан үлгэр хэрэглэгч"
#. module: auth_signup
#: model:email.template,subject:auth_signup.reset_password_email
msgid "Password reset"
msgstr "Нууц үгийг шинэчлэх"
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:125
#, python-format
msgid "Please enter a password and confirm it."
msgstr "Нууц үгийг оруулж баталгаажуул"
#. module: auth_signup
#: view:res.users:0
msgid "Send an email to the user to (re)set their password."
msgstr "Хэрэглэгчид нууц үгээ шинэчлэх имэйл илгээнэ."
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:23
#, python-format
msgid "Sign Up"
msgstr "Бүртгүүлэх"
#. module: auth_signup
#: selection:res.users,state:0
msgid "New"
msgstr "Шинэ"
#. module: auth_signup
#: code:addons/auth_signup/res_users.py:258
#, python-format
msgid "Mail sent to:"
msgstr "Мэйлийг хэнд илгээх"
#. module: auth_signup
#: field:res.users,state:0
msgid "Status"
msgstr "Төлөв"
#. module: auth_signup
#: model:email.template,body_html:auth_signup.reset_password_email
msgid ""
"\n"
"<p>A password reset was requested for the OpenERP account linked to this "
"email.</p>\n"
"\n"
"<p>You may change your password by following <a "
"href=\"${object.signup_url}\">this link</a>.</p>\n"
"\n"
"<p>Note: If you do not expect this, you can safely ignore this email.</p>"
msgstr ""
"\n"
"<p>Энэ имэйлтэй холбогдсон OpenERP дансны нууц үгийг шинэчлэхийг хүссэн "
"байна.</p>\n"
"\n"
"<p>Нууц үгээ <a href=\"${object.signup_url}\">энэ холбоосоор</a> орж "
"шинэчлэх боломжтой.</p>\n"
"\n"
"<p>Санамж: Хэрэв үүнийг таамаглаагүй байсан бол энэ имэйлийг хэрэгсэхгүй "
"байж болно.</p>"
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:119
#, python-format
msgid "Please enter a name."
msgstr "Нэр оруулна уу."
#. module: auth_signup
#: model:ir.model,name:auth_signup.model_res_users
msgid "Users"
msgstr "Хэрэглэгчид"
#. module: auth_signup
#: field:res.partner,signup_url:0
msgid "Signup URL"
msgstr "Бүртгүүлэх URL"
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:122
#, python-format
msgid "Please enter a username."
msgstr "Хэрэглэгчийн нэрийг оруулна уу"
#. module: auth_signup
#: selection:res.users,state:0
msgid "Active"
msgstr "Идэвхтэй"
#. module: auth_signup
#: code:addons/auth_signup/res_users.py:256
#, python-format
msgid ""
"Cannot send email: no outgoing email server configured.\n"
"You can configure it under Settings/General Settings."
msgstr ""
"Имэйл илгээх боломжгүй: гарах имэйл сервер тохируулагдаагүй байна.\n"
"Тохиргоо/Ерөнхий тохиргоо дотор үүнийг тохируулах боломжтой."
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:12
#, python-format
msgid "Username"
msgstr "Хэрэглэгчийн нэр"
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:8
#, python-format
msgid "Name"
msgstr "Нэр"
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:165
#, python-format
msgid "Please enter a username or email address."
msgstr "Хэрэглэгчийн нэр эсвэл имэйл хаягийг оруулна уу."
#. module: auth_signup
#: selection:res.users,state:0
msgid "Resetting Password"
msgstr "Нууц үгийг шинэчлэж байна"
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:13
#, python-format
msgid "Username (Email)"
msgstr "Хэрэглэгчийн нэр (Имэйл)"
#. module: auth_signup
#: field:res.partner,signup_expiration:0
msgid "Signup Expiration"
msgstr "Бүртгэлт хугацаа хэтрэх"
#. module: auth_signup
#: help:base.config.settings,auth_signup_reset_password:0
msgid "This allows users to trigger a password reset from the Login page."
msgstr "Энэ нь Нэвтрэх хуудаснаас нууц үгээ шинэчлэх боломжийг олгодог."
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:21
#, python-format
msgid "Log in"
msgstr "Нэвтрэх"
#. module: auth_signup
#: field:res.partner,signup_valid:0
msgid "Signup Token is Valid"
msgstr "Бүртгүүлэх Жетон Хүчинтэй"
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:116
#: code:addons/auth_signup/static/src/js/auth_signup.js:119
#: code:addons/auth_signup/static/src/js/auth_signup.js:122
#: code:addons/auth_signup/static/src/js/auth_signup.js:125
#: code:addons/auth_signup/static/src/js/auth_signup.js:128
#: code:addons/auth_signup/static/src/js/auth_signup.js:162
#: code:addons/auth_signup/static/src/js/auth_signup.js:165
#, python-format
msgid "Login"
msgstr "Нэвтрэх"
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:99
#, python-format
msgid "Invalid signup token"
msgstr "Бүртгүүлэх жетон хүчингүй"
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:128
#, python-format
msgid "Passwords do not match; please retype them."
msgstr "Нууц үгүүд таарахгүй байна; дахин бичнэ үү."
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:116
#: code:addons/auth_signup/static/src/js/auth_signup.js:162
#, python-format
msgid "No database selected !"
msgstr "Өгөгдлийн бааз сонгогдоогүй байна!"
#. module: auth_signup
#: view:res.users:0
msgid "Reset Password"
msgstr "Нууц шинэчлэх"
#. module: auth_signup
#: field:base.config.settings,auth_signup_reset_password:0
msgid "Enable password reset from Login page"
msgstr "Нэвтрэх хуудаснаас нууц үг шинэчлэхийг зөвшөөрөх"
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:24
#, python-format
msgid "Back to Login"
msgstr "Дахин нэвтрэх"
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:22
#, python-format
msgid "Sign up"
msgstr "Бүртгүүлэх"
#. module: auth_signup
#: model:ir.model,name:auth_signup.model_res_partner
msgid "Partner"
msgstr "Харилцагч"
#. module: auth_signup
#: field:res.partner,signup_token:0
msgid "Signup Token"
msgstr "Бүртгүүлэх Жетон"
+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
+1 -1
View File
@@ -1,4 +1,4 @@
from osv import osv, fields
from openerp.osv import fields, osv
AVAILABLE_STATES = [
('draft', 'New'),
+19 -20
View File
@@ -24,12 +24,13 @@ from dateutil import parser
from dateutil import rrule
from dateutil.relativedelta import relativedelta
from openerp.osv import fields, osv
from openerp.service import web_services
from openerp.tools.translate import _
import pytz
import re
import time
from openerp import tools, SUPERUSER_ID
import openerp.service.report
months = {
1: "January", 2: "February", 3: "March", 4: "April", \
@@ -1729,27 +1730,25 @@ class ir_model(osv.osv):
ir_model()
class virtual_report_spool(web_services.report_spool):
original_exp_report = openerp.service.report.exp_report
def exp_report(self, db, uid, object, ids, data=None, context=None):
"""
Export Report
@param self: The object pointer
@param db: get the current database,
@param uid: the current user's ID for security checks,
@param context: A standard dictionary for contextual values
"""
def exp_report(db, uid, object, ids, data=None, context=None):
"""
Export Report
@param db: get the current database,
@param uid: the current user's ID for security checks,
@param context: A standard dictionary for contextual values
"""
if object == 'printscreen.list':
return super(virtual_report_spool, self).exp_report(db, uid, \
object, ids, data, context)
new_ids = []
for id in ids:
new_ids.append(base_calendar_id2real_id(id))
if data.get('id', False):
data['id'] = base_calendar_id2real_id(data['id'])
return super(virtual_report_spool, self).exp_report(db, uid, object, new_ids, data, context)
if object == 'printscreen.list':
original_exp_report(db, uid, object, ids, data, context)
new_ids = []
for id in ids:
new_ids.append(base_calendar_id2real_id(id))
if data.get('id', False):
data['id'] = base_calendar_id2real_id(data['id'])
return original_exp_report(db, uid, object, new_ids, data, context)
virtual_report_spool()
openerp.service.report.exp_report = exp_report
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+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 @@
# 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-07 14:36+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-08 04:36+0000\n"
"X-Generator: Launchpad (build 16482)\n"
#. module: base_gengo
#: view:res.company:0
msgid "Comments for Translator"
msgstr ""
#. module: base_gengo
#: field:ir.translation,job_id:0
msgid "Gengo Job ID"
msgstr ""
#. 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 ""
#. module: base_gengo
#: field:res.company,gengo_comment:0
msgid "Comments"
msgstr ""
#. module: base_gengo
#: field:res.company,gengo_private_key:0
msgid "Gengo Private Key"
msgstr ""
#. module: base_gengo
#: model:ir.model,name:base_gengo.model_base_gengo_translations
msgid "base.gengo.translations"
msgstr ""
#. module: base_gengo
#: help:res.company,gengo_auto_approve:0
msgid "Jobs are Automatically Approved by Gengo."
msgstr ""
#. module: base_gengo
#: field:base.gengo.translations,lang_id:0
msgid "Language"
msgstr ""
#. module: base_gengo
#: field:ir.translation,gengo_comment:0
msgid "Comments & Activity Linked to Gengo"
msgstr ""
#. module: base_gengo
#: code:addons/base_gengo/wizard/base_gengo_translations.py:124
#, python-format
msgid "Gengo Sync Translation (Response)"
msgstr ""
#. 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 ""
#. 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 ""
#. module: base_gengo
#: view:res.company:0
msgid "Public Key"
msgstr ""
#. 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 ""
#. 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 ""
#. 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 ""
#. 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 ""
#. 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 ""
#. 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 ""
#. module: base_gengo
#: view:base.gengo.translations:0
msgid "or"
msgstr ""
+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 ""
+180 -31
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-12-14 22:33+0000\n"
"Last-Translator: Goran Kliska <gkliska@gmail.com>\n"
"PO-Revision-Date: 2013-02-12 22:11+0000\n"
"Last-Translator: Davor Bojkić <bole@dajmi5.com>\n"
"Language-Team: Croatian <hr@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:07+0000\n"
"X-Generator: Launchpad (build 16378)\n"
"X-Launchpad-Export-Date: 2013-02-13 04:36+0000\n"
"X-Generator: Launchpad (build 16491)\n"
#. module: base_import
#. openerp-web
@@ -29,7 +29,7 @@ msgstr "Dohvati sve moguće vrijednosti"
#: code:addons/base_import/static/src/xml/import.xml:71
#, python-format
msgid "Need to import data from an other application?"
msgstr ""
msgstr "Potreban je uvoz podataka iz druge aplikacije?"
#. module: base_import
#. openerp-web
@@ -47,6 +47,15 @@ msgid ""
"give \n"
" you an example for Products and their Categories."
msgstr ""
"Kada koristite vanjske ID-eve, možete uvesti csv datoteke \n"
" sa kolonom \"External ID\" "
"definirate vanjski ID svakog zapisa \n"
" koji uvozite. Tada ćete biti "
"u mogućnosti napraviti referencu \n"
" na taj zapis sa kolonama tipa "
"\"polje/External ID\". Sljedeća dvije \n"
" csv datoteke daju primjer za "
"proizvode i njihove kategorije."
#. module: base_import
#. openerp-web
@@ -56,13 +65,16 @@ msgid ""
"How to export/import different tables from an SQL \n"
" application to OpenERP?"
msgstr ""
"Kako izvesti/uvesti različite tablice iz SQL \n"
" "
"programa u OpenERP"
#. module: base_import
#. openerp-web
#: code:addons/base_import/static/src/js/import.js:310
#, python-format
msgid "Relation Fields"
msgstr ""
msgstr "Relacijska polja"
#. module: base_import
#. openerp-web
@@ -72,6 +84,9 @@ msgid ""
"Country/Database ID: the unique OpenERP ID for a \n"
" record, defined by the ID postgresql column"
msgstr ""
"Država/ID baze: jedinstveni OpenERP ID za \n"
" "
" zapis, definran kolonom postgres kolonom ID"
#. module: base_import
#. openerp-web
@@ -87,6 +102,16 @@ msgid ""
"\n"
" have a unique Database ID)"
msgstr ""
"Korištenje \n"
" Država/ID "
"BAze : ovo bi trebali rijetko koristiti\n"
" za "
"označavanje. Ovo je većinom korišteno od strane programera\n"
" jer je "
"glavna prednost ovoga to što nikad nema konflikata \n"
" (možete "
"imati više zapisa istog naziva, ali uvjek sa jedinstvenim IDentifikatorom u "
"Bazi)"
#. module: base_import
#. openerp-web
@@ -96,6 +121,9 @@ msgid ""
"For the country \n"
" Belgium, you can use one of these 3 ways to import:"
msgstr ""
"Za državu \n"
" "
" Belgiju, možete koristiti jedan od ova 3 načina uza uvoz:"
#. module: base_import
#. openerp-web
@@ -121,13 +149,20 @@ msgid ""
"companies) TO \n"
" '/tmp/company.csv' with CSV HEADER;"
msgstr ""
"kopirajte \n"
" (select "
"'company_'||id as \"External ID\",company_name\n"
" as "
"\"Name\",'True' as \"Is a Company\" from companies) TO\n"
" "
"'/tmp/company.csv' with CSV HEADER;"
#. module: base_import
#. openerp-web
#: code:addons/base_import/static/src/xml/import.xml:206
#, python-format
msgid "CSV file for Manufacturer, Retailer"
msgstr ""
msgstr "CSV datoteka za Proizvođače, Veletrgovce"
#. module: base_import
#. openerp-web
@@ -139,6 +174,11 @@ msgid ""
"\n"
" data from a third party application."
msgstr ""
"Koristi \n"
" Država/Vanjski ID. "
"koristite vanjski ID kad uvozite \n"
" podatke iz drugih "
"aplikacija."
#. module: base_import
#. openerp-web
@@ -152,7 +192,7 @@ msgstr ""
#: code:addons/base_import/static/src/xml/import.xml:80
#, python-format
msgid "XXX/External ID"
msgstr ""
msgstr "XXX/Vanjski ID"
#. module: base_import
#. openerp-web
@@ -181,6 +221,14 @@ msgid ""
"\n"
" See the following question."
msgstr ""
"Primjetite da vaša csv datoteka \n"
" ima tabulator za "
"odvajanje, a OpenERP neće \n"
" primjetiti ta odvajanja. "
"Morate promjineiti format \n"
" zapisa u vašem tabličnom "
"kalkulatoru. \n"
" Vidi sljedeće pitanje."
#. module: base_import
#. openerp-web
@@ -199,7 +247,7 @@ msgstr ""
#: code:addons/base_import/static/src/xml/import.xml:239
#, python-format
msgid "Can I import several times the same record?"
msgstr ""
msgstr "Mogu li isti zapis uvesti nekoliko puta?"
#. module: base_import
#. openerp-web
@@ -213,7 +261,7 @@ msgstr "Potvrdi"
#: code:addons/base_import/static/src/xml/import.xml:55
#, python-format
msgid "Map your data to OpenERP"
msgstr ""
msgstr "Mapirajte vaše podatke na OpenERP"
#. module: base_import
#. openerp-web
@@ -224,6 +272,10 @@ msgid ""
" the easiest way when your data come from CSV files \n"
" that have been created manually."
msgstr ""
"Korištenje Države: ovo je \n"
" najlakši način kada vaši "
"podaci dolaze iz csv datoteka\n"
" koje su sastavljene ručno."
#. module: base_import
#. openerp-web
@@ -233,6 +285,8 @@ msgid ""
"What's the difference between Database ID and \n"
" External ID?"
msgstr ""
"Koja je razlika izmeži ID Baze i \n"
" vanjski ID?"
#. module: base_import
#. openerp-web
@@ -244,25 +298,30 @@ msgid ""
"\n"
" you 3 different fields to import:"
msgstr ""
"Na primjer, \n"
" referenciranje države "
"kontakta, OpenERP predlaže \n"
" 3 različita polja za "
"uvoz :"
#. module: base_import
#. openerp-web
#: code:addons/base_import/static/src/xml/import.xml:175
#, python-format
msgid "What can I do if I have multiple matches for a field?"
msgstr ""
msgstr "Što da radim ako imam više istih zapisa za polje?"
#. module: base_import
#. openerp-web
#: code:addons/base_import/static/src/xml/import.xml:302
#, python-format
msgid "External ID,Name,Is a Company"
msgstr ""
msgstr "Vanjski ID , Naziv, Je Tvrtka"
#. module: base_import
#: field:base_import.tests.models.preview,somevalue:0
msgid "Some Value"
msgstr ""
msgstr "Neka vrijednost"
#. module: base_import
#. openerp-web
@@ -272,6 +331,9 @@ msgid ""
"The following CSV file shows how to import \n"
" suppliers and their respective contacts"
msgstr ""
"Sljedeća csv datoteka pokazuje kako uvesti \n"
" "
" dobavljače i njihove pripadne kontakte"
#. module: base_import
#. openerp-web
@@ -281,6 +343,9 @@ msgid ""
"How can I change the CSV file format options when \n"
" saving in my spreadsheet application?"
msgstr ""
"Kako da promijenim opcije csv formata \n"
" "
"kada spremam datoteku u tabličnom kalkulatoru?"
#. module: base_import
#. openerp-web
@@ -301,6 +366,21 @@ msgid ""
"orignial \n"
" database)."
msgstr ""
"kako možete vidjeti iz ove datoteke, Fabien i Laurence \n"
" "
" rade za organizaciju Biggies (company_1), a \n"
" "
" Eric radi za Organi. Pozezivanje osoba i "
"organizacija se radi \n"
" "
" korištenjem Vanjskog ID-a organizacije. Morali smo "
"staviti prefix \n"
" "
" naziva tablice na Vanjski ID da izbjegnemo konflikt "
"istog ID-a osobe \n"
" "
" i organizacije (osoba_1 i organizacija_1 koji dijele "
"isti ID u originalnoj bazi)."
#. module: base_import
#. openerp-web
@@ -315,13 +395,20 @@ msgid ""
"\n"
" '/tmp/person.csv' with CSV"
msgstr ""
"kopirajte \n"
" (select'person_'||id as \"External ID\",person_name "
"as\n"
" \"Name\",'False' as \"Is a "
"Company\",'company_'||company_id\n"
" as \"Related Company/External ID\" from persons) TO\n"
" '/tmp/person.csv' with CSV"
#. module: base_import
#. openerp-web
#: code:addons/base_import/static/src/xml/import.xml:148
#, python-format
msgid "Country: Belgium"
msgstr ""
msgstr "Država : Belgija"
#. module: base_import
#: model:ir.model,name:base_import.model_base_import_tests_models_char_stillreadonly
@@ -342,7 +429,7 @@ msgstr ""
#: code:addons/base_import/static/src/xml/import.xml:233
#, python-format
msgid "Suppliers and their respective contacts"
msgstr ""
msgstr "Dobavljači i njihovi pripadni kontakti"
#. module: base_import
#. openerp-web
@@ -375,6 +462,11 @@ msgid ""
"\n"
" PSQL:"
msgstr ""
"Za stvaranje csv datoteke za osobe povezane sa \n"
" "
" organizacijama, koristimo ljedeću SQL naredbu u \n"
" "
" PSQL:"
#. module: base_import
#. openerp-web
@@ -386,6 +478,13 @@ msgid ""
" (in 'Save As' dialog box > click 'Tools' dropdown \n"
" list > Encoding tab)."
msgstr ""
"Microsoft Excell će vam omogućiti \n"
" da promjenite kodnu stranu "
"jedino kod snimanja \n"
" (U 'Save as' dijalogu > "
"kliknite na 'Tools' padajući izbornik > \n"
" odaberite 'Encoding' "
"karticu)"
#. module: base_import
#: field:base_import.tests.models.preview,othervalue:0
@@ -402,6 +501,13 @@ msgid ""
" later, it's thus good practice to specify it\n"
" whenever possible"
msgstr ""
"će također biti korišteno za ažuriranje originalnog \n"
" "
"uvoza, ako kasnije trebate ponovo uvesti \n"
" "
"izmjenjene podatke, zato se smatra dobrom praksom \n"
" "
"koristiti kad god je moguće"
#. module: base_import
#. openerp-web
@@ -411,6 +517,9 @@ msgid ""
"file to import. If you need a sample importable file, you\n"
" can use the export tool to generate one."
msgstr ""
"datoteka za uvoz. Ako trebate uzorak datoteke koja se može uvesti,\n"
" možete koristiti "
"alat za izvoz da napravite jednu."
#. module: base_import
#. openerp-web
@@ -419,7 +528,7 @@ msgstr ""
msgid ""
"Country/Database \n"
" ID: 21"
msgstr ""
msgstr "Država/Baza"
#. module: base_import
#: model:ir.model,name:base_import.model_base_import_tests_models_char
@@ -429,14 +538,14 @@ msgstr ""
#. module: base_import
#: help:base_import.import,file:0
msgid "File to check and/or import, raw binary (not base64)"
msgstr ""
msgstr "Datoteke za provjeru i/ili uvoz, raw binary ( ne base64)"
#. module: base_import
#. openerp-web
#: code:addons/base_import/static/src/xml/import.xml:230
#, python-format
msgid "Purchase orders with their respective purchase order lines"
msgstr ""
msgstr "Narudžbe i njihove pripadne stavke"
#. module: base_import
#. openerp-web
@@ -448,6 +557,14 @@ msgid ""
" field corresponding to the column. This makes imports\n"
" simpler especially when the file has many columns."
msgstr ""
"Ako datoteka sadrži\n"
" nazive kolona, OpenERP može "
"pokušati \n"
" automatski odrediti polja koja "
"odgovaraju kolonama. \n"
" Ovo čini uvoz jednostavnijim "
"pogotovo ako datoteka ima \n"
" mnogo kolona."
#. module: base_import
#. openerp-web
@@ -464,6 +581,8 @@ msgid ""
". The issue is\n"
" usually an incorrect file encoding."
msgstr ""
". Problem je \n"
" obično netočna kodna strana."
#. module: base_import
#: model:ir.model,name:base_import.model_base_import_tests_models_m2o_required
@@ -519,7 +638,7 @@ msgstr "ID baze podataka"
#: code:addons/base_import/static/src/xml/import.xml:313
#, python-format
msgid "It will produce the following CSV file:"
msgstr ""
msgstr "Će napraviti sljedeću csv datoteku:"
#. module: base_import
#. openerp-web
@@ -548,7 +667,7 @@ msgstr ""
#: code:addons/base_import/static/src/xml/import.xml:360
#, python-format
msgid "Import preview failed due to:"
msgstr ""
msgstr "Predpregled uvoza nije uspio zbog:"
#. module: base_import
#. openerp-web
@@ -643,7 +762,7 @@ msgstr "Uvezi CSV datoteku"
#: code:addons/base_import/static/src/js/import.js:74
#, python-format
msgid "Quoting:"
msgstr ""
msgstr "Navođenje:"
#. module: base_import
#: model:ir.model,name:base_import.model_base_import_tests_models_m2o_required_related
@@ -670,7 +789,7 @@ msgstr "Uvoz"
#: code:addons/base_import/static/src/js/import.js:407
#, python-format
msgid "Here are the possible values:"
msgstr ""
msgstr "Evo mogućih vrijednosti:"
#. module: base_import
#. openerp-web
@@ -687,13 +806,15 @@ msgid ""
"A single column was found in the file, this often means the file separator "
"is incorrect"
msgstr ""
"U datoteci je nađena samo jedna kolona, to često znači da je format "
"razdjelnika neispravan."
#. module: base_import
#. openerp-web
#: code:addons/base_import/static/src/xml/import.xml:293
#, python-format
msgid "dump of such a PostgreSQL database"
msgstr ""
msgstr "dump takve PostgereSQL baze"
#. module: base_import
#. openerp-web
@@ -710,6 +831,9 @@ msgid ""
"The following CSV file shows how to import purchase \n"
" orders with their respective purchase order lines:"
msgstr ""
"Sljedeća csv datoteka pokazuje kako uvesti \n"
" naloge za nabavu sa "
"njihovm pripadnim stavkama :"
#. module: base_import
#. openerp-web
@@ -719,6 +843,9 @@ msgid ""
"What can I do when the Import preview table isn't \n"
" displayed correctly?"
msgstr ""
"Što mogu uraditi kada se tablice Predpregleda za uvoz\n"
" "
" ne prikazuju ispravno?"
#. module: base_import
#: field:base_import.tests.models.char,value:0
@@ -770,7 +897,7 @@ msgstr ""
#: code:addons/base_import/static/src/js/import.js:396
#, python-format
msgid "(%d more)"
msgstr ""
msgstr "(%d više)"
#. module: base_import
#. openerp-web
@@ -829,7 +956,7 @@ msgstr ""
#: code:addons/base_import/static/src/js/import.js:373
#, python-format
msgid "Everything seems valid."
msgstr ""
msgstr "Sve se čini u redu."
#. module: base_import
#. openerp-web
@@ -914,6 +1041,15 @@ msgid ""
" will set the EMPTY value in the field, instead of \n"
" assigning the default value."
msgstr ""
"Ako ne postavite sva polja u vašoj csv datoteci, \n"
" OpenERP će "
"dodijeliti zadane vrijednosti za svako \n"
" nedefinirano "
"polje, ali ako postavite polja sa praznim virjenostima u csv-u \n"
" OpenERP će "
"postaviti vrijednost tih polja na \"PRAZNO\", umjesto da im \n"
" dodijeli zadane "
"vrijednosti"
#. module: base_import
#. openerp-web
@@ -930,6 +1066,9 @@ msgid ""
"What happens if I do not provide a value for a \n"
" specific field?"
msgstr ""
"Što se dešava ako ne dajem vrijednost za \n"
" "
"pojedino polje?"
#. module: base_import
#. openerp-web
@@ -957,6 +1096,11 @@ msgid ""
"spreadsheet \n"
" application."
msgstr ""
"Ovo vam \n"
" omogućuje da "
"koristite alat za Uvoz/Izvoz OpenERP-a \n"
" za izmjenu serija "
"zapisa u vašem omiljenom tabličnom kalkulatoru"
#. module: base_import
#. openerp-web
@@ -993,14 +1137,14 @@ msgstr ""
#: code:addons/base_import/static/src/xml/import.xml:169
#, python-format
msgid "CSV file for categories"
msgstr ""
msgstr "CSV datoteka za kategorije"
#. module: base_import
#. openerp-web
#: code:addons/base_import/static/src/js/import.js:309
#, python-format
msgid "Normal Fields"
msgstr ""
msgstr "Normalna polja"
#. module: base_import
#. openerp-web
@@ -1012,6 +1156,11 @@ msgid ""
" identifier from the original application and\n"
" map it to the"
msgstr ""
"kako bi ponovo napravili relacije između\n"
" "
"različitih zapisa, trebali bi koristiti jedinstveni\n"
" "
"identifikator iz originalnog zapisa i njega mapirati na"
#. module: base_import
#. openerp-web
@@ -1054,7 +1203,7 @@ msgstr "Naziv"
#: code:addons/base_import/static/src/xml/import.xml:80
#, python-format
msgid "to the original unique identifier."
msgstr ""
msgstr "originalni jedinstveni identifikator"
#. module: base_import
#. openerp-web
@@ -1131,14 +1280,14 @@ msgstr "Vanjski ID"
#: code:addons/base_import/static/src/xml/import.xml:39
#, python-format
msgid "File Format Options…"
msgstr ""
msgstr "Opcije Formata datoteka..."
#. module: base_import
#. openerp-web
#: code:addons/base_import/static/src/js/import.js:392
#, python-format
msgid "between rows %d and %d"
msgstr ""
msgstr "između reda %d i %d"
#. module: base_import
#. openerp-web
@@ -1163,4 +1312,4 @@ msgstr ""
#. module: base_import
#: field:base_import.import,file:0
msgid "File"
msgstr ""
msgstr "Datoteka"
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+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 })
+193
View File
@@ -0,0 +1,193 @@
# 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-07 20:23+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-08 04:36+0000\n"
"X-Generator: Launchpad (build 16482)\n"
#. module: base_report_designer
#: model:ir.model,name:base_report_designer.model_base_report_sxw
msgid "base.report.sxw"
msgstr "base.report.sxw"
#. module: base_report_designer
#: view:base_report_designer.installer:0
msgid "OpenERP Report Designer Configuration"
msgstr "OpenERP Report Designer Configuration"
#. module: base_report_designer
#: view:base_report_designer.installer:0
msgid ""
"This plug-in allows you to create/modify OpenERP Reports into OpenOffice "
"Writer."
msgstr ""
"This plug-in allows you to create/modify OpenERP Reports into OpenOffice "
"Writer."
#. module: base_report_designer
#: view:base.report.sxw:0
msgid "Upload the modified report"
msgstr "Upload the modified report"
#. module: base_report_designer
#: view:base.report.file.sxw:0
msgid "The .SXW report"
msgstr "The .SXW report"
#. module: base_report_designer
#: model:ir.model,name:base_report_designer.model_base_report_designer_installer
msgid "base_report_designer.installer"
msgstr "base_report_designer.installer"
#. module: base_report_designer
#: model:ir.model,name:base_report_designer.model_base_report_rml_save
msgid "base.report.rml.save"
msgstr "base.report.rml.save"
#. module: base_report_designer
#: view:base_report_designer.installer:0
msgid "Configure"
msgstr "Configure"
#. module: base_report_designer
#: view:base_report_designer.installer:0
msgid "title"
msgstr "title"
#. module: base_report_designer
#: field:base.report.file.sxw,report_id:0
#: field:base.report.sxw,report_id:0
msgid "Report"
msgstr "Report"
#. module: base_report_designer
#: view:base.report.rml.save:0
msgid "The RML Report"
msgstr "The RML Report"
#. module: base_report_designer
#: model:ir.ui.menu,name:base_report_designer.menu_action_report_designer_wizard
msgid "Report Designer"
msgstr "Report Designer"
#. module: base_report_designer
#: field:base_report_designer.installer,name:0
msgid "File name"
msgstr "File name"
#. module: base_report_designer
#: view:base.report.file.sxw:0
#: view:base.report.sxw:0
msgid "Get a report"
msgstr "Get a report"
#. module: base_report_designer
#: view:base_report_designer.installer:0
#: model:ir.actions.act_window,name:base_report_designer.action_report_designer_wizard
msgid "OpenERP Report Designer"
msgstr "OpenERP Report Designer"
#. module: base_report_designer
#: view:base.report.sxw:0
msgid "Continue"
msgstr "Continue"
#. module: base_report_designer
#: field:base.report.rml.save,file_rml:0
msgid "Save As"
msgstr "Save As"
#. module: base_report_designer
#: help:base_report_designer.installer,plugin_file:0
msgid ""
"OpenObject Report Designer plug-in file. Save as this file and install this "
"plug-in in OpenOffice."
msgstr ""
"OpenObject Report Designer plug-in file. Save as this file and install this "
"plug-in in OpenOffice."
#. module: base_report_designer
#: view:base.report.rml.save:0
msgid "Save RML FIle"
msgstr "Save RML FIle"
#. module: base_report_designer
#: field:base.report.file.sxw,file_sxw:0
#: field:base.report.file.sxw,file_sxw_upload:0
msgid "Your .SXW file"
msgstr "Your .SXW file"
#. module: base_report_designer
#: view:base_report_designer.installer:0
msgid "Installation and Configuration Steps"
msgstr "Installation and Configuration Steps"
#. module: base_report_designer
#: field:base_report_designer.installer,description:0
msgid "Description"
msgstr "Description"
#. module: base_report_designer
#: view:base.report.file.sxw:0
msgid ""
"This is the template of your requested report.\n"
"Save it as a .SXW file and open it with OpenOffice.\n"
"Don't forget to install the OpenERP SA OpenOffice package to modify it.\n"
"Once it is modified, re-upload it in OpenERP using this wizard."
msgstr ""
"This is the template of your requested report.\n"
"Save it as a .SXW file and open it with OpenOffice.\n"
"Don't forget to install the OpenERP SA OpenOffice package to modify it.\n"
"Once it is modified, re-upload it in OpenERP using this wizard."
#. module: base_report_designer
#: model:ir.actions.act_window,name:base_report_designer.action_view_base_report_sxw
msgid "Base Report sxw"
msgstr "Base Report sxw"
#. module: base_report_designer
#: model:ir.model,name:base_report_designer.model_base_report_file_sxw
msgid "base.report.file.sxw"
msgstr "base.report.file.sxw"
#. module: base_report_designer
#: field:base_report_designer.installer,plugin_file:0
msgid "OpenObject Report Designer Plug-in"
msgstr "OpenObject Report Designer Plug-in"
#. module: base_report_designer
#: model:ir.actions.act_window,name:base_report_designer.action_report_designer_installer
msgid "OpenERP Report Designer Installation"
msgstr "OpenERP Report Designer Installation"
#. module: base_report_designer
#: view:base.report.sxw:0
msgid "Cancel"
msgstr "Cancel"
#. module: base_report_designer
#: view:base.report.sxw:0
msgid "or"
msgstr "or"
#. module: base_report_designer
#: model:ir.model,name:base_report_designer.model_ir_actions_report_xml
msgid "ir.actions.report.xml"
msgstr "ir.actions.report.xml"
#. module: base_report_designer
#: view:base.report.sxw:0
msgid "Select your report"
msgstr "Select your report"
+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>."
+181
View File
@@ -0,0 +1,181 @@
# 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-07 20:03+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-08 04:36+0000\n"
"X-Generator: Launchpad (build 16482)\n"
#. module: board
#: model:ir.actions.act_window,name:board.action_board_create
#: model:ir.ui.menu,name:board.menu_board_create
msgid "Create Board"
msgstr "Create Board"
#. module: board
#: view:board.create:0
msgid "Create"
msgstr "Create"
#. module: board
#. openerp-web
#: code:addons/board/static/src/xml/board.xml:4
#, python-format
msgid "Reset Layout.."
msgstr "Reset Layout.."
#. module: board
#: view:board.create:0
msgid "Create New Dashboard"
msgstr "Create New Dashboard"
#. module: board
#. openerp-web
#: code:addons/board/static/src/xml/board.xml:40
#, python-format
msgid "Choose dashboard layout"
msgstr "Choose dashboard layout"
#. module: board
#. openerp-web
#: code:addons/board/static/src/xml/board.xml:70
#, python-format
msgid "Add"
msgstr "Add"
#. module: board
#. openerp-web
#: code:addons/board/static/src/js/dashboard.js:139
#, python-format
msgid "Are you sure you want to remove this item ?"
msgstr "Are you sure you want to remove this item ?"
#. module: board
#: model:ir.model,name:board.model_board_board
msgid "Board"
msgstr "Board"
#. module: board
#: view:board.board:0
#: model:ir.actions.act_window,name:board.open_board_my_dash_action
#: model:ir.ui.menu,name:board.menu_board_my_dash
msgid "My Dashboard"
msgstr "My Dashboard"
#. module: board
#: field:board.create,name:0
msgid "Board Name"
msgstr "Board Name"
#. module: board
#: model:ir.model,name:board.model_board_create
msgid "Board Creation"
msgstr "Board Creation"
#. module: board
#. openerp-web
#: code:addons/board/static/src/xml/board.xml:67
#, python-format
msgid "Add to Dashboard"
msgstr "Add to Dashboard"
#. module: board
#. openerp-web
#: code:addons/board/static/src/xml/board.xml:28
#, python-format
msgid "&nbsp;"
msgstr "&nbsp;"
#. module: board
#: model:ir.actions.act_window,help:board.open_board_my_dash_action
msgid ""
"<div class=\"oe_empty_custom_dashboard\">\n"
" <p>\n"
" <b>Your personal dashboard is empty.</b>\n"
" </p><p>\n"
" To add your first report into this dashboard, go to any\n"
" menu, switch to list or graph view, and click <i>'Add "
"to\n"
" Dashboard'</i> in the extended search options.\n"
" </p><p>\n"
" You can filter and group data before inserting into the\n"
" dashboard using the search options.\n"
" </p>\n"
" </div>\n"
" "
msgstr ""
"<div class=\"oe_empty_custom_dashboard\">\n"
" <p>\n"
" <b>Your personal dashboard is empty.</b>\n"
" </p><p>\n"
" To add your first report into this dashboard, go to any\n"
" menu, switch to list or graph view, and click <i>'Add "
"to\n"
" Dashboard'</i> in the extended search options.\n"
" </p><p>\n"
" You can filter and group data before inserting into the\n"
" dashboard using the search options.\n"
" </p>\n"
" </div>\n"
" "
#. module: board
#. openerp-web
#: code:addons/board/static/src/xml/board.xml:6
#, python-format
msgid "Reset"
msgstr "Reset"
#. module: board
#: field:board.create,menu_parent_id:0
msgid "Parent Menu"
msgstr "Parent Menu"
#. module: board
#. openerp-web
#: code:addons/board/static/src/xml/board.xml:8
#, python-format
msgid "Change Layout.."
msgstr "Change Layout.."
#. module: board
#. openerp-web
#: code:addons/board/static/src/js/dashboard.js:93
#, python-format
msgid "Edit Layout"
msgstr "Edit Layout"
#. module: board
#. openerp-web
#: code:addons/board/static/src/xml/board.xml:10
#, python-format
msgid "Change Layout"
msgstr "Change Layout"
#. module: board
#: view:board.create:0
msgid "Cancel"
msgstr "Cancel"
#. module: board
#: view:board.create:0
msgid "or"
msgstr "or"
#. module: board
#. openerp-web
#: code:addons/board/static/src/xml/board.xml:69
#, python-format
msgid "Title of new dashboard item"
msgstr "Title of new dashboard item"
+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,
+45
View File
@@ -0,0 +1,45 @@
# 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-07 19:25+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-08 04:36+0000\n"
"X-Generator: Launchpad (build 16482)\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 ""
"<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"
" "
#. module: contacts
#: model:ir.actions.act_window,name:contacts.action_contacts
#: model:ir.ui.menu,name:contacts.menu_contacts
msgid "Contacts"
msgstr "Contacts"
+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:
+32 -30
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:04+0000\n"
"PO-Revision-Date: 2012-05-10 17:56+0000\n"
"Last-Translator: Raphael Collet (OpenERP) <Unknown>\n"
"PO-Revision-Date: 2013-02-07 09:22+0000\n"
"Last-Translator: Enkh-Orkhon <oogii.anu@gmail.com>\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: 2012-12-22 05:25+0000\n"
"X-Generator: Launchpad (build 16378)\n"
"X-Launchpad-Export-Date: 2013-02-08 04:36+0000\n"
"X-Generator: Launchpad (build 16482)\n"
#. module: crm
#: view:crm.lead.report:0
@@ -38,7 +38,7 @@ msgstr ""
#: selection:crm.lead.report,type:0
#, python-format
msgid "Lead"
msgstr "Сэжим"
msgstr "Удирдах"
#. module: crm
#: field:crm.lead,title:0
@@ -59,12 +59,12 @@ msgstr ""
#: field:crm.opportunity2phonecall,action:0
#: field:crm.phonecall2phonecall,action:0
msgid "Action"
msgstr "Үйлдэл"
msgstr "Vйлдэл"
#. module: crm
#: model:ir.actions.server,name:crm.action_set_team_sales_department
msgid "Set team to Sales Department"
msgstr ""
msgstr "Борлуулалтын хэсэгт багийг томилох"
#. module: crm
#: view:crm.lead2opportunity.partner.mass:0
@@ -75,7 +75,7 @@ msgstr "Боломж Сонгох"
#: model:res.groups,name:crm.group_fund_raising
#: field:sale.config.settings,group_fund_raising:0
msgid "Manage Fund Raising"
msgstr ""
msgstr "Сан бүрдүүлэлт зохицуулах"
#. module: crm
#: view:crm.lead.report:0
@@ -95,7 +95,7 @@ msgstr "Үеийн нэр"
#: view:crm.lead.report:0
#: view:crm.phonecall.report:0
msgid "Salesperson"
msgstr ""
msgstr "Худалдагч"
#. module: crm
#: model:ir.model,name:crm.model_crm_lead_report
@@ -112,18 +112,18 @@ msgstr "Өдөр"
#. module: crm
#: view:crm.lead:0
msgid "Company Name"
msgstr ""
msgstr "Компанийн нэр"
#. module: crm
#: model:crm.case.categ,name:crm.categ_oppor6
msgid "Training"
msgstr ""
msgstr "Сургалт"
#. module: crm
#: model:ir.actions.act_window,name:crm.crm_lead_categ_action
#: model:ir.ui.menu,name:crm.menu_crm_lead_categ
msgid "Sales Tags"
msgstr ""
msgstr "Худалдааны шошго"
#. module: crm
#: view:crm.lead.report:0
@@ -135,7 +135,7 @@ msgstr "Хуг.Хэт. Хааж байна"
#: help:crm.lead,message_unread:0
#: help:crm.phonecall,message_unread:0
msgid "If checked new messages require your attention."
msgstr ""
msgstr "Хэрэв тэмдэглэгдсэн бол шинэ зурвас нь анхаарал татахыг шаардана."
#. module: crm
#: help:crm.lead.report,creation_day:0
@@ -151,7 +151,7 @@ msgstr "Дүрмийн нэр"
#: code:addons/crm/crm_phonecall.py:280
#, python-format
msgid "It's only possible to convert one phonecall at a time."
msgstr ""
msgstr "Энэ бол тухайн цагт нэг л утасны дуудлагыг хөрвүүлэх боломжтой"
#. module: crm
#: view:crm.case.resource.type:0
@@ -166,7 +166,7 @@ msgstr "Компанит ажил"
#. module: crm
#: view:crm.lead:0
msgid "Search Opportunities"
msgstr "Боломж хайх"
msgstr "Боломжуудыг хайх"
#. module: crm
#: help:crm.lead.report,deadline_month:0
@@ -181,13 +181,15 @@ msgid ""
"Holds the Chatter summary (number of messages, ...). This summary is "
"directly in html format in order to be inserted in kanban views."
msgstr ""
"Чаатлагчийн хураангуйг агуулна (зурвасын тоо,...). Энэ хураангуй нь шууд "
"html форматтай бөгөөд канбан харагдацад шууд орж харагдах боломжтой."
#. module: crm
#: code:addons/crm/crm_lead.py:632
#: code:addons/crm/crm_phonecall.py:280
#, python-format
msgid "Warning!"
msgstr "Сануулга!"
msgstr "Анхааруулга!"
#. module: crm
#: view:crm.lead:0
@@ -202,7 +204,7 @@ msgstr "Сануулга!"
#: model:ir.model,name:crm.model_res_partner
#: model:process.node,name:crm.process_node_partner0
msgid "Partner"
msgstr "Харилцагч"
msgstr "Түнш"
#. module: crm
#: view:crm.phonecall:0
@@ -230,12 +232,12 @@ msgstr "Төлөв"
#. module: crm
#: field:res.partner,meeting_count:0
msgid "# Meetings"
msgstr ""
msgstr "# Уулзалтууд"
#. module: crm
#: model:ir.actions.server,name:crm.action_email_reminder_lead
msgid "Reminder to User"
msgstr ""
msgstr "Хэрэглэгчид сануулах"
#. module: crm
#: field:crm.segmentation,segmentation_line:0
@@ -250,7 +252,7 @@ msgstr "Ялгагдсан Хариултууд :"
#. module: crm
#: model:ir.model,name:crm.model_crm_merge_opportunity
msgid "Merge opportunities"
msgstr ""
msgstr "Боломжуудыг нэгтгэх"
#. module: crm
#: view:crm.lead.report:0
@@ -388,7 +390,7 @@ msgstr ""
#: field:crm.lead,message_unread:0
#: field:crm.phonecall,message_unread:0
msgid "Unread Messages"
msgstr ""
msgstr "Уншаагүй зурвасууд"
#. module: crm
#: view:crm.segmentation:0
@@ -402,7 +404,7 @@ msgstr "Сегментчлэл"
#: selection:crm.lead2opportunity.partner.mass,action:0
#: selection:crm.partner.binding,action:0
msgid "Link to an existing customer"
msgstr ""
msgstr "Байгаа захиалагчид холбох"
#. module: crm
#: field:crm.lead,write_date:0
@@ -436,14 +438,14 @@ msgstr "Ангилал"
#. module: crm
#: view:crm.lead.report:0
msgid "#Opportunities"
msgstr "#"
msgstr "#Боломжууд"
#. module: crm
#: code:addons/crm/crm_lead.py:632
#, python-format
msgid ""
"Please select more than one element (lead or opportunity) from the list view."
msgstr ""
msgstr "Нээлттэй жагсаалтнаас нэгээс илүү елемент сонгоно уу."
#. module: crm
#: view:crm.lead:0
@@ -480,7 +482,7 @@ msgstr "Болмжийн энгийн эсвэл утасны уулзалт"
#: view:crm.phonecall.report:0
#: field:crm.phonecall.report,state:0
msgid "Status"
msgstr ""
msgstr "Төлөв"
#. module: crm
#: view:crm.lead2opportunity.partner:0
@@ -490,7 +492,7 @@ msgstr "Боломж үүсгэх"
#. module: crm
#: view:sale.config.settings:0
msgid "Configure"
msgstr ""
msgstr "Тохируулга"
#. module: crm
#: view:crm.lead:0
@@ -561,7 +563,7 @@ msgstr "Дүгнэлт"
#. module: crm
#: view:crm.merge.opportunity:0
msgid "Merge"
msgstr ""
msgstr "Нэгтгэх"
#. module: crm
#: model:email.template,subject:crm.email_template_opportunity_mail
@@ -668,7 +670,7 @@ msgstr "Харилцагчийн хуваалт"
#. module: crm
#: field:crm.lead,company_currency:0
msgid "Currency"
msgstr ""
msgstr "Валют"
#. module: crm
#: field:crm.lead.report,probable_revenue:0
@@ -742,7 +744,7 @@ msgstr "Зогсоох"
#. module: crm
#: field:crm.case.section,alias_id:0
msgid "Alias"
msgstr ""
msgstr "Өөр нэр"
#. module: crm
#: view:crm.phonecall:0
@@ -783,7 +785,7 @@ msgstr ""
#: view:crm.opportunity2phonecall:0
#: view:crm.phonecall2phonecall:0
msgid "or"
msgstr ""
msgstr "эсвэл"
#. module: crm
#: field:crm.lead.report,create_date:0
@@ -4,7 +4,7 @@
Mail script will fetch his request from mail server. Then I process that mail after read EML file.
-
!python {model: mail.thread}: |
import addons
from openerp import addons
request_file = open(addons.get_module_resource('crm','test', 'customer_request.eml'),'rb')
request_message = request_file.read()
self.message_process(cr, uid, 'crm.lead', request_message)
@@ -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 -1
View File
@@ -4,7 +4,7 @@
Mail script will be fetched him request from mail server. so I process that mail after read EML file
-
!python {model: mail.thread}: |
import addons
from openerp import addons
request_file = open(addons.get_module_resource('crm_claim','test', 'customer_claim.eml'),'rb')
request_message = request_file.read()
self.message_process(cr, uid, 'crm.claim', request_message)
+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)
@@ -4,7 +4,7 @@
Mail script will be fetched him request from mail server. so I process that mail after read EML file
-
!python {model: mail.thread}: |
import addons
from openerp import addons
request_file = open(addons.get_module_resource('crm_helpdesk','test', 'customer_question.eml'),'rb')
request_message = request_file.read()
self.message_process(cr, uid, 'crm.helpdesk', request_message)
+2 -1
View File
@@ -31,7 +31,8 @@
I print a Delivery Order report.
-
!python {model: stock.picking}: |
import netsvc, tools, os
import os
from openerp import netsvc, tools
sale = self.pool.get('sale.order')
sale_order = sale.browse(cr, uid, ref("sale.sale_order_6"))
ship_ids = [x.id for x in sale_order.picking_ids]
+2 -2
View File
@@ -31,11 +31,11 @@ from StringIO import StringIO
import psycopg2
import openerp
from openerp import netsvc
from openerp import pooler
from openerp import tools
from openerp.osv import fields, osv
from openerp.osv.orm import except_orm
import openerp.report.interface
from openerp.tools.misc import ustr
from openerp.tools.translate import _
from openerp.tools.safe_eval import safe_eval
@@ -456,7 +456,7 @@ class document_directory_content(osv.osv):
if node.extension != '.pdf':
raise Exception("Invalid content: %s" % node.extension)
report = self.pool.get('ir.actions.report.xml').browse(cr, uid, node.report_id, context=context)
srv = netsvc.Service._services['report.'+report.report_name]
srv = openerp.report.interface.report_int._reports['report.'+report.report_name]
ctx = node.context.context.copy()
ctx.update(node.dctx)
pdf,pdftype = srv.create(cr, uid, [node.act_id,], {}, context=ctx)
@@ -10,6 +10,7 @@ import glob
import fnmatch
from openerp import pooler, netsvc, sql_db
import openerp.service
from openerp.service import security
from openerp.osv import osv
@@ -60,7 +61,7 @@ class abstracted_fs(object):
def db_list(self):
"""Get the list of available databases, with FTPd support
"""
s = netsvc.ExportService.getService('db')
s = openerp.service.db
result = s.exp_list(document=True)
self.db_name_list = []
for db_name in result:
@@ -42,8 +42,8 @@
-
!python {model: ir.attachment}: |
from ftplib import FTP
from tools.misc import detect_ip_addr
from tools import config
from openerp.tools.misc import detect_ip_addr
from openerp.tools import config
ftp = FTP()
if detect_ip_addr:
host = config.get('ftp_server_host', detect_ip_addr())
@@ -71,8 +71,8 @@
-
!python {model: ir.attachment}: |
from ftplib import FTP
from tools.misc import detect_ip_addr
from tools import config
from openerp.tools.misc import detect_ip_addr
from openerp.tools import config
ftp = FTP()
if detect_ip_addr:
host = config.get('ftp_server_host', detect_ip_addr())
+2 -1
View File
@@ -38,6 +38,7 @@ except ImportError:
import openerp
from openerp import pooler, sql_db, netsvc
import openerp.service
from openerp.tools import misc
from cache import memoize
@@ -372,7 +373,7 @@ class openerp_dav_handler(dav_interface):
@memoize(4)
def _all_db_list(self):
"""return all databases who have module document_webdav installed"""
s = netsvc.ExportService.getService('db')
s = openerp.service.db
result = s.exp_list()
self.db_name_list=[]
for db_name in result:
+2 -2
View File
@@ -35,6 +35,7 @@
import logging
import openerp
from openerp import netsvc
from dav_fs import openerp_dav_handler
from openerp.tools.config import config
@@ -56,7 +57,6 @@ import urllib
import re
import time
from string import atoi
import addons
import socket
# from DAV.constants import DAV_VERSION_1, DAV_VERSION_2
from xml.dom import minidom
@@ -609,7 +609,7 @@ try:
if base_path and base_path == '/':
dir_path = config.get_misc('static-http', 'dir_path', False)
else:
dir_path = addons.get_module_resource('document_webdav','public_html')
dir_path = openerp.addons.get_module_resource('document_webdav','public_html')
# an _ugly_ hack: we put that dir back in tools.config.misc, so that
# the StaticHttpHandler can find its dir_path.
config.misc.setdefault('static-http',{})['dir_path'] = dir_path

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