diff --git a/addons/account/__openerp__.py b/addons/account/__openerp__.py
index ebbd5459cea..c538614fd0f 100644
--- a/addons/account/__openerp__.py
+++ b/addons/account/__openerp__.py
@@ -159,6 +159,5 @@ for a particular financial year and for preparation of vouchers there is a modul
],
'installable': True,
'auto_install': False,
- 'certificate': '0080331923549',
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/account/account.py b/addons/account/account.py
index d145f0308b0..fbbbfd64537 100644
--- a/addons/account/account.py
+++ b/addons/account/account.py
@@ -31,7 +31,7 @@ import decimal_precision as dp
from tools.translate import _
from tools.float_utils import float_round
from openerp import SUPERUSER_ID
-
+import tools
_logger = logging.getLogger(__name__)
@@ -227,7 +227,7 @@ class account_account(osv.osv):
while pos < len(args):
if args[pos][0] == 'code' and args[pos][1] in ('like', 'ilike') and args[pos][2]:
- args[pos] = ('code', '=like', str(args[pos][2].replace('%', ''))+'%')
+ args[pos] = ('code', '=like', tools.ustr(args[pos][2].replace('%', ''))+'%')
if args[pos][0] == 'journal_id':
if not args[pos][2]:
del args[pos]
@@ -601,7 +601,7 @@ class account_account(osv.osv):
if not default:
default = {}
default = default.copy()
- default['code'] = (account['code'] or '') + '(copy)'
+ default.update(code=_("%s (copy)") % (account['code'] or ''))
if not local:
done_list = []
if account.id in done_list:
@@ -682,7 +682,7 @@ class account_journal_view(osv.osv):
_name = "account.journal.view"
_description = "Journal View"
_columns = {
- 'name': fields.char('Journal View', size=64, required=True),
+ 'name': fields.char('Journal View', size=64, required=True, translate=True),
'columns_id': fields.one2many('account.journal.column', 'view_id', 'Columns')
}
_order = "name"
@@ -782,9 +782,10 @@ class account_journal(osv.osv):
if not default:
default = {}
default = default.copy()
- default['code'] = (journal['code'] or '') + '(copy)'
- default['name'] = (journal['name'] or '') + '(copy)'
- default['sequence_id'] = False
+ default.update(
+ code=_("%s (copy)") % (journal['code'] or ''),
+ name=_("%s (copy)") % (journal['name'] or ''),
+ sequence_id=False)
return super(account_journal, self).copy(cr, uid, id, default, context=context)
def write(self, cr, uid, ids, vals, context=None):
@@ -1907,7 +1908,7 @@ class account_tax(osv.osv):
'ref_tax_sign': fields.float('Tax Code Sign', help="Usually 1 or -1."),
'include_base_amount': fields.boolean('Included in base amount', help="Indicates if the amount of tax must be included in the base amount for the computation of the next taxes"),
'company_id': fields.many2one('res.company', 'Company', required=True),
- 'description': fields.char('Tax Code',size=32),
+ 'description': fields.char('Tax Code'),
'price_include': fields.boolean('Tax Included in Price', help="Check this if the price you use on the product and invoices includes this tax."),
'type_tax_use': fields.selection([('sale','Sale'),('purchase','Purchase'),('all','All')], 'Tax Application', required=True)
@@ -2517,7 +2518,7 @@ class account_account_template(osv.osv):
'reconcile': fields.boolean('Allow Reconciliation', help="Check this option if you want the user to reconcile entries in this account."),
'shortcut': fields.char('Shortcut', size=12),
'note': fields.text('Note'),
- 'parent_id': fields.many2one('account.account.template', 'Parent Account Template', ondelete='cascade'),
+ 'parent_id': fields.many2one('account.account.template', 'Parent Account Template', ondelete='cascade', domain=[('type','=','view')]),
'child_parent_ids':fields.one2many('account.account.template', 'parent_id', 'Children'),
'tax_ids': fields.many2many('account.tax.template', 'account_account_template_tax_rel', 'account_id', 'tax_id', 'Default Taxes'),
'nocreate': fields.boolean('Optional create', help="If checked, the new chart of accounts will not contain this by default."),
@@ -2535,20 +2536,6 @@ class account_account_template(osv.osv):
(_check_recursion, 'Error!\nYou cannot create recursive account templates.', ['parent_id']),
]
- def create(self, cr, uid, vals, context=None):
- if 'parent_id' in vals:
- parent = self.read(cr, uid, [vals['parent_id']], ['type'])
- if parent and parent[0]['type'] != 'view':
- raise osv.except_osv(_('Warning!'), _("You may only select a parent account of type 'View'."))
- return super(account_account_template, self).create(cr, uid, vals, context=context)
-
- def write(self, cr, uid, ids, vals, context=None):
- if 'parent_id' in vals:
- parent = self.read(cr, uid, [vals['parent_id']], ['type'])
- if parent and parent[0]['type'] != 'view':
- raise osv.except_osv(_('Warning!'), _("You may only select a parent account of type 'View'."))
- return super(account_account_template, self).write(cr, uid, ids, vals, context=context)
-
def name_get(self, cr, uid, ids, context=None):
if not ids:
return []
@@ -2827,7 +2814,7 @@ class account_tax_template(osv.osv):
'ref_base_sign': fields.float('Base Code Sign', help="Usually 1 or -1."),
'ref_tax_sign': fields.float('Tax Code Sign', help="Usually 1 or -1."),
'include_base_amount': fields.boolean('Include in Base Amount', help="Set if the amount of tax must be included in the base amount before computing the next taxes."),
- 'description': fields.char('Internal Name', size=32),
+ 'description': fields.char('Internal Name'),
'type_tax_use': fields.selection([('sale','Sale'),('purchase','Purchase'),('all','All')], 'Tax Use In', required=True,),
'price_include': fields.boolean('Tax Included in Price', help="Check this if the price you use on the product and invoices includes this tax."),
}
diff --git a/addons/account/account_bank_statement.py b/addons/account/account_bank_statement.py
index 2dc7f96768f..b4fc2388a68 100644
--- a/addons/account/account_bank_statement.py
+++ b/addons/account/account_bank_statement.py
@@ -447,14 +447,18 @@ class account_bank_statement(osv.osv):
return self.write(cr, uid, done, {'state':'draft'}, context=context)
def _compute_balance_end_real(self, cr, uid, journal_id, context=None):
- cr.execute('SELECT balance_end_real \
- FROM account_bank_statement \
- WHERE journal_id = %s AND NOT state = %s \
- ORDER BY date DESC,id DESC LIMIT 1', (journal_id, 'draft'))
- res = cr.fetchone()
+ res = False
+ if journal_id:
+ cr.execute('SELECT balance_end_real \
+ FROM account_bank_statement \
+ WHERE journal_id = %s AND NOT state = %s \
+ ORDER BY date DESC,id DESC LIMIT 1', (journal_id, 'draft'))
+ res = cr.fetchone()
return res and res[0] or 0.0
def onchange_journal_id(self, cr, uid, statement_id, journal_id, context=None):
+ if not journal_id:
+ return {}
balance_start = self._compute_balance_end_real(cr, uid, journal_id, context=context)
journal_data = self.pool.get('account.journal').read(cr, uid, journal_id, ['default_debit_account_id', 'company_id'], context=context)
diff --git a/addons/account/account_invoice.py b/addons/account/account_invoice.py
index aff38d71cfe..a1c53eff4b1 100644
--- a/addons/account/account_invoice.py
+++ b/addons/account/account_invoice.py
@@ -508,8 +508,10 @@ class account_invoice(osv.osv):
if journal_id:
journal = self.pool.get('account.journal').browse(cr, uid, journal_id, context=context)
currency_id = journal.currency and journal.currency.id or journal.company_id.currency_id.id
+ company_id = journal.company_id.id
result = {'value': {
'currency_id': currency_id,
+ 'company_id': company_id,
}
}
return result
@@ -1371,7 +1373,10 @@ class account_invoice_line(osv.osv):
'partner_id': fields.related('invoice_id','partner_id',type='many2one',relation='res.partner',string='Partner',store=True)
}
- def _default_account_id(self, cr, uid, ids, context=None):
+ def _default_account_id(self, cr, uid, context=None):
+ # XXX this gets the default account for the user's company,
+ # it should get the default account for the invoice's company
+ # however, the invoice's company does not reach this point
prop = self.pool.get('ir.property').get(cr, uid, 'property_account_income_categ', 'product.category', context=context)
return prop and prop.id or False
@@ -1401,7 +1406,7 @@ class account_invoice_line(osv.osv):
context = {}
company_id = company_id if company_id != None else context.get('company_id',False)
context = dict(context)
- context.update({'company_id': company_id})
+ context.update({'company_id': company_id, 'force_company': company_id})
if not partner_id:
raise osv.except_osv(_('No Partner Defined !'),_("You must first select a partner !") )
if not product:
@@ -1556,16 +1561,19 @@ class account_invoice_line(osv.osv):
def onchange_account_id(self, cr, uid, ids, product_id, partner_id, inv_type, fposition_id, account_id):
if not account_id:
return {}
- taxes = self.pool.get('account.account').browse(cr, uid, account_id).tax_ids
+ unique_tax_ids = []
fpos = fposition_id and self.pool.get('account.fiscal.position').browse(cr, uid, fposition_id) or False
- tax_ids = self.pool.get('account.fiscal.position').map_tax(cr, uid, fpos, taxes)
-
- product_change_result = self.product_id_change(cr, uid, ids, product_id, False, type=inv_type,
- partner_id=partner_id, fposition_id=fposition_id)
- unique_tax_ids = set(tax_ids)
- if product_change_result and 'value' in product_change_result and 'invoice_line_tax_id' in product_change_result['value']:
- unique_tax_ids |= set(product_change_result['value']['invoice_line_tax_id'])
- return {'value':{'invoice_line_tax_id': list(unique_tax_ids)}}
+ account = self.pool.get('account.account').browse(cr, uid, account_id)
+ if not product_id:
+ taxes = account.tax_ids
+ unique_tax_ids = self.pool.get('account.fiscal.position').map_tax(cr, uid, fpos, taxes)
+ else:
+ product_change_result = self.product_id_change(cr, uid, ids, product_id, False, type=inv_type,
+ partner_id=partner_id, fposition_id=fposition_id,
+ company_id=account.company_id.id)
+ if product_change_result and 'value' in product_change_result and 'invoice_line_tax_id' in product_change_result['value']:
+ unique_tax_ids = product_change_result['value']['invoice_line_tax_id']
+ return {'value':{'invoice_line_tax_id': unique_tax_ids}}
account_invoice_line()
@@ -1650,14 +1658,13 @@ class account_invoice_tax(osv.osv):
for line in inv.invoice_line:
for tax in tax_obj.compute_all(cr, uid, line.invoice_line_tax_id, (line.price_unit* (1-(line.discount or 0.0)/100.0)), line.quantity, line.product_id, inv.partner_id)['taxes']:
- tax['price_unit'] = cur_obj.round(cr, uid, cur, tax['price_unit'])
val={}
val['invoice_id'] = inv.id
val['name'] = tax['name']
val['amount'] = tax['amount']
val['manual'] = False
val['sequence'] = tax['sequence']
- val['base'] = tax['price_unit'] * line['quantity']
+ val['base'] = cur_obj.round(cr, uid, cur, tax['price_unit'] * line['quantity'])
if inv.type in ('out_invoice','in_invoice'):
val['base_code_id'] = tax['base_code_id']
diff --git a/addons/account/account_invoice_view.xml b/addons/account/account_invoice_view.xml
index 1c4d83106ca..4a587eee6fe 100644
--- a/addons/account/account_invoice_view.xml
+++ b/addons/account/account_invoice_view.xml
@@ -278,6 +278,7 @@
+
@@ -299,8 +300,8 @@
-
-
+
+
@@ -437,6 +438,7 @@
+
diff --git a/addons/account/account_move_line.py b/addons/account/account_move_line.py
index 5ddbbee74f2..bb1ace992ca 100644
--- a/addons/account/account_move_line.py
+++ b/addons/account/account_move_line.py
@@ -562,6 +562,7 @@ class account_move_line(osv.osv):
'journal_id': lambda self, cr, uid, c: c.get('journal_id', False),
'credit': 0.0,
'debit': 0.0,
+ 'amount_currency': 0.0,
'account_id': lambda self, cr, uid, c: c.get('account_id', False),
'period_id': lambda self, cr, uid, c: c.get('period_id', False),
'company_id': lambda self, cr, uid, c: self.pool.get('res.company')._company_default_get(cr, uid, 'account.move.line', context=c)
@@ -1193,12 +1194,12 @@ class account_move_line(osv.osv):
jour_period_obj = self.pool.get('account.journal.period')
cr.execute('SELECT state FROM account_journal_period WHERE journal_id = %s AND period_id = %s', (journal_id, period_id))
result = cr.fetchall()
+ journal = journal_obj.browse(cr, uid, journal_id, context=context)
+ period = period_obj.browse(cr, uid, period_id, context=context)
for (state,) in result:
if state == 'done':
- raise osv.except_osv(_('Error!'), _('You cannot add/modify entries in a closed journal.'))
+ raise osv.except_osv(_('Error !'), _('You can not add/modify entries in a closed period %s of journal %s.' % (period.name,journal.name)))
if not result:
- journal = journal_obj.browse(cr, uid, journal_id, context=context)
- period = period_obj.browse(cr, uid, period_id, context=context)
jour_period_obj.create(cr, uid, {
'name': (journal.code or journal.name)+':'+(period.name or ''),
'journal_id': journal.id,
diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml
index 2c204fdf707..1fbda80a0fe 100644
--- a/addons/account/account_view.xml
+++ b/addons/account/account_view.xml
@@ -1305,16 +1305,6 @@
Account.Entry Edition
-->
-
- account.move.graph
- account.move
-
-
-
-
-
-
- account.move.treeaccount.move
@@ -1338,8 +1328,8 @@
+
+ X11007
+ USD Bank Account - (test)
+
+ liquidity
+
+
+ Liabilities - (test)
@@ -360,8 +368,8 @@
bank
-
-
+
+
@@ -384,7 +392,12 @@
-
+
+
@@ -412,6 +425,16 @@
+
+
+ USD Bank Journal - (test)
+ TUBK
+ bank
+
+
+
+
+
diff --git a/addons/account/partner.py b/addons/account/partner.py
index f2b9f79bb8a..a9b2b99588d 100644
--- a/addons/account/partner.py
+++ b/addons/account/partner.py
@@ -44,17 +44,17 @@ class account_fiscal_position(osv.osv):
return []
if not fposition_id:
return map(lambda x: x.id, taxes)
- result = []
+ result = set()
for t in taxes:
ok = False
for tax in fposition_id.tax_ids:
if tax.tax_src_id.id == t.id:
if tax.tax_dest_id:
- result.append(tax.tax_dest_id.id)
+ result.add(tax.tax_dest_id.id)
ok=True
if not ok:
- result.append(t.id)
- return result
+ result.add(t.id)
+ return list(result)
def map_account(self, cr, uid, fposition_id, account_id, context=None):
if not fposition_id:
@@ -77,6 +77,12 @@ class account_fiscal_position_tax(osv.osv):
'tax_dest_id': fields.many2one('account.tax', 'Replacement Tax')
}
+ _sql_constraints = [
+ ('tax_src_dest_uniq',
+ 'unique (position_id,tax_src_id,tax_dest_id)',
+ 'A tax fiscal position could be defined only once time on same taxes.')
+ ]
+
account_fiscal_position_tax()
class account_fiscal_position_account(osv.osv):
@@ -89,6 +95,12 @@ class account_fiscal_position_account(osv.osv):
'account_dest_id': fields.many2one('account.account', 'Account Destination', domain=[('type','<>','view')], required=True)
}
+ _sql_constraints = [
+ ('account_src_dest_uniq',
+ 'unique (position_id,account_src_id,account_dest_id)',
+ 'An account fiscal position could be defined only once time on same accounts.')
+ ]
+
account_fiscal_position_account()
class res_partner(osv.osv):
diff --git a/addons/account/partner_view.xml b/addons/account/partner_view.xml
index 7ac1efd4f9f..4bee2002ffd 100644
--- a/addons/account/partner_view.xml
+++ b/addons/account/partner_view.xml
@@ -92,34 +92,7 @@
-
-
+
@@ -141,7 +114,7 @@
context="{'search_default_partner_id':[active_id], 'default_partner_id': active_id}"
src_model="res.partner"
view_type="form"
- view_mode="tree,form,graph,calendar"/>
+ view_mode="tree,form,calendar"/>
diff --git a/addons/account/project/project_view.xml b/addons/account/project/project_view.xml
index da1a11b9cb6..70db95425b1 100644
--- a/addons/account/project/project_view.xml
+++ b/addons/account/project/project_view.xml
@@ -73,7 +73,7 @@
ir.actions.act_windowaccount.analytic.accountform
- tree,graph,form
+ tree,form
@@ -114,9 +114,6 @@
-
account.analytic.line.form
@@ -351,15 +348,6 @@
# Reporting
#
-
- Print Analytic Journals
- account.analytic.journal
- tree
- To print an analytics (or costs) journal for a given period. The report give code, move name, account number, general amount and analytic amount.
-
-
account.journal.form.1
@@ -372,16 +360,5 @@
-
- analytic.accounts.graph
- account.analytic.account
-
-
-
-
-
-
-
-
diff --git a/addons/account/project/wizard/account_analytic_journal_report.py b/addons/account/project/wizard/account_analytic_journal_report.py
index 9a2eee020b1..8148a016927 100644
--- a/addons/account/project/wizard/account_analytic_journal_report.py
+++ b/addons/account/project/wizard/account_analytic_journal_report.py
@@ -29,6 +29,7 @@ class account_analytic_journal_report(osv.osv_memory):
_columns = {
'date1': fields.date('Start of period', required=True),
'date2': fields.date('End of period', required=True),
+ 'analytic_account_journal_id': fields.many2many('account.analytic.journal', 'account_analytic_journal_name', 'journal_line_id', 'journal_print_id', 'Analytic Journals', required=True),
}
_defaults = {
@@ -40,8 +41,15 @@ class account_analytic_journal_report(osv.osv_memory):
if context is None:
context = {}
data = self.read(cr, uid, ids)[0]
+ ids_list = []
+ if context.get('active_id',False):
+ ids_list.append(context.get('active_id',False))
+ else:
+ record = self.browse(cr,uid,ids[0],context=context)
+ for analytic_record in record.analytic_account_journal_id:
+ ids_list.append(analytic_record.id)
datas = {
- 'ids': context.get('active_ids',[]),
+ 'ids': ids_list,
'model': 'account.analytic.journal',
'form': data
}
@@ -50,6 +58,14 @@ class account_analytic_journal_report(osv.osv_memory):
'report_name': 'account.analytic.journal',
'datas': datas,
}
+
+ def default_get(self, cr, uid, fields, context=None):
+ if context is None:
+ context = {}
+ res = super(account_analytic_journal_report, self).default_get(cr, uid, fields, context=context)
+ if 'analytic_account_journal_id' in fields:
+ res.update({'analytic_account_journal_id': context.get('active_ids',[])})
+ return res
account_analytic_journal_report()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/account/project/wizard/account_analytic_journal_report_view.xml b/addons/account/project/wizard/account_analytic_journal_report_view.xml
index e4c4cd314db..b0cb0293270 100644
--- a/addons/account/project/wizard/account_analytic_journal_report_view.xml
+++ b/addons/account/project/wizard/account_analytic_journal_report_view.xml
@@ -7,15 +7,16 @@
account.analytic.journal.report
@@ -38,6 +39,13 @@
actionaccount.analytic.journal
+
+
+
diff --git a/addons/account/res_config.py b/addons/account/res_config.py
index ea903654a4e..17df4377548 100644
--- a/addons/account/res_config.py
+++ b/addons/account/res_config.py
@@ -117,6 +117,9 @@ class account_config_settings(osv.osv_memory):
'group_multi_currency': fields.boolean('Allow multi currencies',
implied_group='base.group_multi_currency',
help="Allows you multi currency environment"),
+ 'group_analytic_accounting': fields.boolean('Analytic accounting',
+ implied_group='analytic.group_analytic_accounting',
+ help="Allows you to use the analytic accounting."),
}
def _default_company(self, cr, uid, context=None):
diff --git a/addons/account/res_config_view.xml b/addons/account/res_config_view.xml
index d7618fbff5a..0e4b1fa64c4 100644
--- a/addons/account/res_config_view.xml
+++ b/addons/account/res_config_view.xml
@@ -129,6 +129,10 @@
+
+
+
+
diff --git a/addons/account/security/account_security.xml b/addons/account/security/account_security.xml
index 5ca9f26b96b..4b90e0c8ad5 100644
--- a/addons/account/security/account_security.xml
+++ b/addons/account/security/account_security.xml
@@ -1,5 +1,6 @@
-
+
+
Invoicing & Payments
@@ -7,13 +8,15 @@
+
Accountant
+
- Manager
+ Financial Manager
@@ -25,100 +28,107 @@
Account Entry
-
-
+
+ ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
- Entry lines
-
-
+ Entry lines
+
+ ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]Journal Period
-
-
+
+ ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
-
+
Journal multi-company
-
-
+
+ ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]Analytic journal multi-company
-
-
+
+ ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]Period multi-company
-
-
+
+ ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]Fiscal year multi-company
-
-
+
+ ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]Account multi-company
-
-
+
+ ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
- Tax multi-company
-
-
+ Tax multi-company
+
+ ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]Tax code multi-company
-
-
+
+ ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]Invoice multi-company
-
-
+
+ ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]Invoice Analysis multi-company
-
-
+
+
+ ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
+
+
+
+ Entries Analysis multi-company
+
+ ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]Account fiscal Mapping company rule
-
-
+
+ ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]Account model company rule
-
-
+
+ ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
@@ -143,4 +153,5 @@
['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
-
+
+
diff --git a/addons/account/wizard/account_invoice_refund.py b/addons/account/wizard/account_invoice_refund.py
index b7d278b8849..38a22baa9f1 100644
--- a/addons/account/wizard/account_invoice_refund.py
+++ b/addons/account/wizard/account_invoice_refund.py
@@ -32,11 +32,11 @@ class account_invoice_refund(osv.osv_memory):
_name = "account.invoice.refund"
_description = "Invoice Refund"
_columns = {
- 'date': fields.date('Operation Date', help='This date will be used as the invoice date for credit note and period will be chosen accordingly!'),
+ 'date': fields.date('Date', help='This date will be used as the invoice date for credit note and period will be chosen accordingly!'),
'period': fields.many2one('account.period', 'Force period'),
'journal_id': fields.many2one('account.journal', 'Refund Journal', help='You can select here the journal to use for the credit note that will be created. If you leave that field empty, it will use the same journal as the current invoice.'),
- 'description': fields.char('Description', size=128, required=True),
- 'filter_refund': fields.selection([('refund', 'Create a draft refund'), ('cancel', 'Cancel: create credit note and reconcile'),('modify', 'Modify: create credit note, reconcile and create a new draft invoice')], "Refund Method", required=True, help='Credit note base on this type. You can not Modify and Cancel if the invoice is already reconciled'),
+ 'description': fields.char('Reason', size=128, required=True),
+ 'filter_refund': fields.selection([('refund', 'Create a draft credit note'), ('cancel', 'Cancel: create credit note and reconcile'),('modify', 'Modify: create credit note, reconcile and create a new draft invoice')], "Refund Method", required=True, help='Credit note base on this type. You can not Modify and Cancel if the invoice is already reconciled'),
}
def _get_journal(self, cr, uid, context=None):
diff --git a/addons/account/wizard/account_invoice_refund_view.xml b/addons/account/wizard/account_invoice_refund_view.xml
index 78a9b085bf1..3945a6f57e6 100644
--- a/addons/account/wizard/account_invoice_refund_view.xml
+++ b/addons/account/wizard/account_invoice_refund_view.xml
@@ -7,19 +7,40 @@
account.invoice.refund
- The agenda is shared between employees and fully integrated with
+ The calendar is shared between employees and fully integrated with
other applications such as the employee holidays or the business
opportunities.
@@ -339,7 +334,11 @@
+ name="Calendar" action="action_crm_meeting"/>
+
+
diff --git a/addons/base_calendar/test/base_calendar_test.yml b/addons/base_calendar/test/base_calendar_test.yml
index 2f5ff7945ee..cc1b3c3b292 100644
--- a/addons/base_calendar/test/base_calendar_test.yml
+++ b/addons/base_calendar/test/base_calendar_test.yml
@@ -54,24 +54,3 @@
-
!python {model: calendar.event}: |
self.write(cr, uid, [ref("calendar_event_alldaytestevent0")], {'alarm_id': ref("res_alarm_daybeforeeventstarts0")})
--
- In order to assign attendee I will invite Demo user
--
- !record {model: base_calendar.invite.attendee, id: base_calendar_invite_attendee_0}:
- type: internal
- send_mail: False
- partner_id: base.res_partner_9 # Put bcz of problem in read
- user_ids:
- - base.user_demo
--
- Then I click on Invite Button
--
- !python {model: base_calendar.invite.attendee}: |
- self.do_invite(cr, uid, [ref("base_calendar_invite_attendee_0")], {'active_id': ref("calendar_event_alldaytestevent0"), 'model' : 'calendar.event', 'attendee_field':'attendee_ids'})
--
- Now I will Accept this invitation
--
- !python {model: calendar.attendee}: |
- ids = self.search(cr, uid, [('ref', '=', 'calendar.event' + ',' + str(ref("calendar_event_alldaytestevent0")))])
- if ids:
- self.do_accept(cr, uid, ids, context=context)
diff --git a/addons/base_calendar/wizard/base_calendar_invite_attendee.py b/addons/base_calendar/wizard/base_calendar_invite_attendee.py
deleted file mode 100644
index 344056eb585..00000000000
--- a/addons/base_calendar/wizard/base_calendar_invite_attendee.py
+++ /dev/null
@@ -1,170 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2009 Tiny SPRL ().
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-#
-##############################################################################
-
-from .. import base_calendar
-from osv import fields, osv
-from tools.translate import _
-import tools
-
-
-class base_calendar_invite_attendee(osv.osv_memory):
- """
- Invite attendee.
- """
-
- _name = "base_calendar.invite.attendee"
- _description = "Invite Attendees"
-
- _columns = {
- 'type': fields.selection([('internal', 'Internal User'), \
- ('external', 'External Email'), \
- ('partner', 'Partner Contacts')], 'Type', required=True, help="Select whom you want to Invite"),
- 'user_ids': fields.many2many('res.users', 'invite_user_rel',
- 'invite_id', 'user_id', 'Users'),
- 'partner_id': fields.many2one('res.partner', 'Partner'),
- 'email': fields.char('Email', size=124, help="Provide external email address who will receive this invitation."),
- 'contact_ids': fields.many2many('res.partner', 'invite_contact_rel',
- 'invite_id', 'contact_id', 'Contacts'),
- 'send_mail': fields.boolean('Send mail?', help='Check this if you want to \
-send an Email to Invited Person')
- }
-
- _defaults = {
- 'type': 'internal',
- 'send_mail': True
- }
-
- def do_invite(self, cr, uid, ids, context=None):
- """
- Invites attendee for meeting..
- @param cr: the current row, from the database cursor,
- @param uid: the current user’s ID for security checks,
- @param ids: List of base calendar invite attendee’s IDs.
- @param context: A standard dictionary for contextual values
- @return: Dictionary of {}.
- """
-
- if context is None:
- context = {}
-
- model = False
- context_id = context and context.get('active_id', False) or False
- if not context or not context.get('model'):
- return {'type': 'ir.actions.act_window_close'}
- else:
- model = context.get('model')
-
- model_field = context.get('attendee_field', False)
- obj = self.pool.get(model)
- res_obj = obj.browse(cr, uid, context_id, context=context)
- att_obj = self.pool.get('calendar.attendee')
- user_obj = self.pool.get('res.users')
- current_user = user_obj.browse(cr, uid, uid, context=context)
-
- for datas in self.read(cr, uid, ids, context=context):
- type = datas.get('type')
- vals = []
- mail_to = []
- attendees = []
- ref = {}
-
- if not model == 'calendar.attendee':
- if context_id:
- ref = {'ref': '%s,%s' % (model, base_calendar.base_calendar_id2real_id(context_id))}
- else:
- return {'type': 'ir.actions.act_window_close'}
- if type == 'internal':
-
- if not datas.get('user_ids'):
- raise osv.except_osv(_('Error!'), ("Please select any user."))
- for user_id in datas.get('user_ids'):
- user = user_obj.browse(cr, uid, user_id)
- res = {
- 'user_id': user_id,
- 'email': user.email
- }
- res.update(ref)
- vals.append(res)
- if user.email:
- mail_to.append(user.email)
-
- elif type == 'external' and datas.get('email'):
- res = {'email': datas['email']}
- res.update(ref)
- vals.append(res)
- mail_to.append(datas['email'])
-
- elif type == 'partner':
- add_obj = self.pool.get('res.partner')
- for contact in add_obj.browse(cr, uid, datas['contact_ids']):
- res = {
- 'partner_id': contact.id,
- 'email': contact.email
- }
- res.update(ref)
- vals.append(res)
- if contact.email:
- mail_to.append(contact.email)
-
- for att_val in vals:
- if model == 'calendar.attendee':
- att = att_obj.browse(cr, uid, context_id)
- att_val.update({
- 'parent_ids': [(4, att.id)],
- 'ref': att.ref and (att.ref._name + ',' +str(att.ref.id)) or False
- })
-
- attendees.append(att_obj.create(cr, uid, att_val))
- if model_field:
- for attendee in attendees:
- obj.write(cr, uid, res_obj.id, {model_field: [(4, attendee)]})
-
- if datas.get('send_mail'):
- if not mail_to:
- name = map(lambda x: x[1], filter(lambda x: type==x[0], \
- self._columns['type'].selection))
- raise osv.except_osv(_('Error!'), _("%s must have an email address to send mail.") %(name[0]))
- att_obj._send_mail(cr, uid, attendees, mail_to, \
- email_from = current_user.email or tools.config.get('email_from', False))
-
- return {'type': 'ir.actions.act_window_close'}
-
-
- def onchange_partner_id(self, cr, uid, ids, partner_id, *args, **argv):
- """
- Make entry on contact_ids on change of partner_id field.
- @param cr: the current row, from the database cursor,
- @param uid: the current user’s ID for security checks,
- @param ids: List of base calendar invite attendee’s IDs.
- @param partner_id: id of Partner
- @return: dictionary of value.
- """
-
- if not partner_id:
- return {'value': {'contact_ids': []}}
- cr.execute('SELECT id FROM res_partner \
- WHERE id=%s or parent_id =%s' , (partner_id,partner_id,))
- contacts = map(lambda x: x[0], cr.fetchall())
- return {'value': {'contact_ids': contacts}}
-
-base_calendar_invite_attendee()
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/base_calendar/wizard/base_calendar_invite_attendee_view.xml b/addons/base_calendar/wizard/base_calendar_invite_attendee_view.xml
deleted file mode 100644
index 5510259a7a7..00000000000
--- a/addons/base_calendar/wizard/base_calendar_invite_attendee_view.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-
-
-
-
-
-
- Invite Attendees
- base_calendar.invite.attendee
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Invite Attendees
- ir.actions.act_window
- base_calendar.invite.attendee
- form
- form
- new
-
-
-
-
diff --git a/addons/base_crypt/__openerp__.py b/addons/base_crypt/__openerp__.py
index d0252f6810c..97f6c98aeb8 100644
--- a/addons/base_crypt/__openerp__.py
+++ b/addons/base_crypt/__openerp__.py
@@ -58,7 +58,6 @@ will disable LDAP authentication completely if installed at the same time.
'data': [],
'auto_install': False,
'installable': True,
- 'certificate': '00721290471310299725',
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/base_iban/__openerp__.py b/addons/base_iban/__openerp__.py
index 76c397586c9..7f966255bbf 100644
--- a/addons/base_iban/__openerp__.py
+++ b/addons/base_iban/__openerp__.py
@@ -35,7 +35,6 @@ with a single statement.
'data': ['base_iban_data.xml' , 'base_iban_view.xml'],
'installable': True,
'auto_install': False,
- 'certificate': '0050014379549',
'images': ['images/base_iban1.jpeg'],
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/base_iban/i18n/nl_BE.po b/addons/base_iban/i18n/nl_BE.po
index 51fb108b6b8..a7b7b057e56 100644
--- a/addons/base_iban/i18n/nl_BE.po
+++ b/addons/base_iban/i18n/nl_BE.po
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
-"PO-Revision-Date: 2009-04-20 10:04+0000\n"
-"Last-Translator: <>\n"
+"PO-Revision-Date: 2012-10-01 11:08+0000\n"
+"Last-Translator: Els Van Vossel (Agaplan) \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-08-28 05:58+0000\n"
-"X-Generator: Launchpad (build 15864)\n"
+"X-Launchpad-Export-Date: 2012-10-02 05:20+0000\n"
+"X-Generator: Launchpad (build 16061)\n"
#. module: base_iban
#: constraint:res.partner.bank:0
@@ -23,22 +23,27 @@ msgid ""
"Please define BIC/Swift code on bank for bank type IBAN Account to make "
"valid payments"
msgstr ""
+"\n"
+"Definieer een BIC/Swift-code voor IBAN-rekeningen om geldige betalingen te "
+"maken."
#. module: base_iban
#: code:addons/base_iban/base_iban.py:139
#, python-format
msgid "This IBAN does not pass the validation check, please verify it"
msgstr ""
+"Dit IBAN-nummer voldoet niet aan de controle. Gelieve het nummer na te "
+"kijken."
#. module: base_iban
#: model:res.partner.bank.type,format_layout:base_iban.bank_iban
msgid "%(bank_name)s: IBAN %(acc_number)s - BIC %(bank_bic)s"
-msgstr ""
+msgstr "%(bank_name)s: IBAN %(acc_number)s - BIC %(bank_bic)s"
#. module: base_iban
#: model:res.partner.bank.type.field,name:base_iban.bank_swift_field
msgid "bank_bic"
-msgstr ""
+msgstr "bank_bic"
#. module: base_iban
#: model:res.partner.bank.type.field,name:base_iban.bank_zip_field
@@ -67,6 +72,8 @@ msgid ""
"The IBAN does not seem to be correct. You should have entered something like "
"this %s"
msgstr ""
+"Dit IBAN-nummer lijkt niet juist te zijn. U dient een nummer in te geven in "
+"dit formaat %s."
#. module: base_iban
#: field:res.partner.bank,iban:0
@@ -77,7 +84,7 @@ msgstr "IBAN"
#: code:addons/base_iban/base_iban.py:140
#, python-format
msgid "The IBAN is invalid, it should begin with the country code"
-msgstr ""
+msgstr "Dit IBAN-nummer is ongeldig; het moet beginnen met de landcode."
#. module: base_iban
#: model:res.partner.bank.type,name:base_iban.bank_iban
@@ -87,7 +94,7 @@ msgstr "IBAN-rekening"
#. module: base_iban
#: constraint:res.partner.bank:0
msgid "The RIB and/or IBAN is not valid"
-msgstr ""
+msgstr "RIB en/of IBAN is niet geldig."
#, python-format
#~ msgid "The IBAN is invalid, It should begin with the country code"
diff --git a/addons/base_module_doc_rst/__openerp__.py b/addons/base_module_doc_rst/__openerp__.py
index 100a90dbd96..f1de13bc7f0 100644
--- a/addons/base_module_doc_rst/__openerp__.py
+++ b/addons/base_module_doc_rst/__openerp__.py
@@ -42,7 +42,6 @@ This module generates the Technical Guides of selected modules in Restructured T
],
'demo': [],
'installable': True,
- 'certificate': '001288481437217734509',
'images': ['images/base_module_doc_rst1.jpeg'],
}
diff --git a/addons/base_module_record/__openerp__.py b/addons/base_module_record/__openerp__.py
index 00af464b3ee..532dcfc932e 100644
--- a/addons/base_module_record/__openerp__.py
+++ b/addons/base_module_record/__openerp__.py
@@ -53,7 +53,6 @@ Select datetime criteria of recording and objects to be recorded and Record modu
],
'demo': [],
'installable': True,
- 'certificate': '0083134865813',
'images': ['images/base_module_record1.jpeg','images/base_module_record2.jpeg','images/base_module_record3.jpeg',]
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/base_report_designer/__openerp__.py b/addons/base_report_designer/__openerp__.py
index 3e0ca2152da..36e15c96877 100644
--- a/addons/base_report_designer/__openerp__.py
+++ b/addons/base_report_designer/__openerp__.py
@@ -38,7 +38,6 @@ Once you have modified it you can upload the report using the same wizard.
'demo': [],
'installable': True,
'auto_install': False,
- 'certificate': '0056379010493',
'images': ['images/base_report_designer1.jpeg','images/base_report_designer2.jpeg',],
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/base_setup/__openerp__.py b/addons/base_setup/__openerp__.py
index cf69933c84a..de2d8236ece 100644
--- a/addons/base_setup/__openerp__.py
+++ b/addons/base_setup/__openerp__.py
@@ -43,7 +43,6 @@ Shows you a list of applications features to install from.
'demo': [],
'installable': True,
'auto_install': False,
- 'certificate': '0086711085869',
'images': ['images/base_setup1.jpeg','images/base_setup2.jpeg','images/base_setup3.jpeg','images/base_setup4.jpeg',],
'js': ['static/src/js/base_setup.js'],
'css': ['static/src/css/base_setup.css'],
diff --git a/addons/base_setup/i18n/nl_BE.po b/addons/base_setup/i18n/nl_BE.po
index 1662fc1a1dc..ba30f4dd262 100644
--- a/addons/base_setup/i18n/nl_BE.po
+++ b/addons/base_setup/i18n/nl_BE.po
@@ -7,44 +7,44 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
-"PO-Revision-Date: 2009-04-24 15:11+0000\n"
-"Last-Translator: <>\n"
+"PO-Revision-Date: 2012-10-01 11:22+0000\n"
+"Last-Translator: Els Van Vossel (Agaplan) \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-08-28 06:08+0000\n"
-"X-Generator: Launchpad (build 15864)\n"
+"X-Launchpad-Export-Date: 2012-10-02 05:20+0000\n"
+"X-Generator: Launchpad (build 16061)\n"
#. module: base_setup
#: field:user.preferences.config,menu_tips:0
msgid "Display Tips"
-msgstr ""
+msgstr "Tips weergeven"
#. module: base_setup
#: selection:base.setup.terminology,partner:0
msgid "Guest"
-msgstr ""
+msgstr "Gast"
#. module: base_setup
#: model:ir.model,name:base_setup.model_product_installer
msgid "product.installer"
-msgstr ""
+msgstr "product.installer"
#. module: base_setup
#: selection:product.installer,customers:0
msgid "Create"
-msgstr ""
+msgstr "Maken"
#. module: base_setup
#: selection:base.setup.terminology,partner:0
msgid "Member"
-msgstr ""
+msgstr "Lid"
#. module: base_setup
#: field:migrade.application.installer.modules,sync_google_contact:0
msgid "Sync Google Contact"
-msgstr ""
+msgstr "Google-contacten synchroniseren"
#. module: base_setup
#: help:user.preferences.config,context_tz:0
@@ -52,21 +52,23 @@ msgid ""
"Set default for new user's timezone, used to perform timezone conversions "
"between the server and the client."
msgstr ""
+"Stel de standaardtijdzone in voor nieuwe gebruikers. Deze wordt gebruikt om "
+"tijdzoneconversies te doen tussen server en client."
#. module: base_setup
#: selection:product.installer,customers:0
msgid "Import"
-msgstr ""
+msgstr "Importeren"
#. module: base_setup
#: selection:base.setup.terminology,partner:0
msgid "Donor"
-msgstr ""
+msgstr "Donor"
#. module: base_setup
#: model:ir.actions.act_window,name:base_setup.action_base_setup_company
msgid "Set Company Header and Footer"
-msgstr ""
+msgstr "Stel uw kop- en voettekst in"
#. module: base_setup
#: model:ir.actions.act_window,help:base_setup.action_base_setup_company
@@ -75,21 +77,24 @@ msgid ""
"printed on your reports. You can click on the button 'Preview Header' in "
"order to check the header/footer of PDF documents."
msgstr ""
+"Vul uw bedrijfsgegevens in (adres, logo, bankrekeningen), zodat deze worden "
+"afgedrukt op uw rapporten. U kunt op de knop 'Voorbeeld koptekst' klikken om "
+"de koptekst en voettekst van pdf-documenten te controleren."
#. module: base_setup
#: field:product.installer,customers:0
msgid "Customers"
-msgstr ""
+msgstr "Klanten"
#. module: base_setup
#: selection:user.preferences.config,view:0
msgid "Extended"
-msgstr ""
+msgstr "Uitgebreid"
#. module: base_setup
#: selection:base.setup.terminology,partner:0
msgid "Patient"
-msgstr ""
+msgstr "Patiënt"
#. module: base_setup
#: model:ir.actions.act_window,help:base_setup.action_import_create_installer
@@ -98,26 +103,29 @@ msgid ""
"you can import your existing partners by CSV spreadsheet from \"Import "
"Data\" wizard"
msgstr ""
+"Maak of importeer klanten en contactpersonen manueel vanuit dit scherm. U "
+"kunt ook bestaande klanten importeren vanuit een csv-bestand met de wizard "
+"\"Gegevens importeren\"."
#. module: base_setup
#: view:user.preferences.config:0
msgid "Define Users's Preferences"
-msgstr ""
+msgstr "Stel de gebruikersvoorkeuren in"
#. module: base_setup
#: model:ir.actions.act_window,name:base_setup.action_user_preferences_config_form
msgid "Define default users preferences"
-msgstr ""
+msgstr "Stel de standaard gebruikersvoorkeuren in"
#. module: base_setup
#: help:migrade.application.installer.modules,import_saleforce:0
msgid "For Import Saleforce"
-msgstr ""
+msgstr "Voor Salesforce-import"
#. module: base_setup
#: help:migrade.application.installer.modules,quickbooks_ippids:0
msgid "For Quickbooks Ippids"
-msgstr ""
+msgstr "Voor Quickboos Ippids"
#. module: base_setup
#: help:user.preferences.config,view:0
@@ -126,6 +134,9 @@ msgid ""
"simplified interface, which has less features but is easier. You can always "
"switch later from the user preferences."
msgstr ""
+"Als u OpenERP voor de eerste keer gebruikt, raden wij u aan de eenvoudige "
+"weergave te kiezen, met minder functies en een eenvoudige werking. U kunt "
+"deze keuze altijd wijzigen via de gebruikersvoorkeuren."
#. module: base_setup
#: view:base.setup.terminology:0
@@ -136,12 +147,12 @@ msgstr "res_config_contents"
#. module: base_setup
#: field:user.preferences.config,view:0
msgid "Interface"
-msgstr ""
+msgstr "Interface"
#. module: base_setup
#: model:ir.model,name:base_setup.model_migrade_application_installer_modules
msgid "migrade.application.installer.modules"
-msgstr ""
+msgstr "migrade.application.installer.modules"
#. module: base_setup
#: view:base.setup.terminology:0
@@ -149,21 +160,23 @@ msgid ""
"You can use this wizard to change the terminologies for customers in the "
"whole application."
msgstr ""
+"Met deze wizard kunt u een andere benaming kiezen voor klanten, die in de "
+"volledige toepassing zal worden gebruikt."
#. module: base_setup
#: selection:base.setup.terminology,partner:0
msgid "Tenant"
-msgstr ""
+msgstr "Huurder"
#. module: base_setup
#: selection:base.setup.terminology,partner:0
msgid "Customer"
-msgstr ""
+msgstr "Klant"
#. module: base_setup
#: field:user.preferences.config,context_lang:0
msgid "Language"
-msgstr ""
+msgstr "Taal"
#. module: base_setup
#: help:user.preferences.config,context_lang:0
@@ -172,6 +185,9 @@ msgid ""
"available. If you want to Add new Language, you can add it from 'Load an "
"Official Translation' wizard from 'Administration' menu."
msgstr ""
+"Kiest de standaardtaal voor de gebruik, als er vertalingen beschikbaar zijn. "
+"Een Nieuwe taal instellen kan via het menu Beheer, Laad een officiële "
+"vertaling."
#. module: base_setup
#: view:user.preferences.config:0
@@ -180,47 +196,50 @@ msgid ""
"ones. Afterwards, users are free to change those values on their own user "
"preference form."
msgstr ""
+"Hiermee wijst u de standaardinstellingen toe aan nieuwe en bestaande "
+"gebruikers. Een gebruiker kan deze waarden altijd wijzigen via zijn "
+"voorkeuren."
#. module: base_setup
#: field:base.setup.terminology,partner:0
msgid "How do you call a Customer"
-msgstr ""
+msgstr "Hoe wordt een klant bij u genoemd?"
#. module: base_setup
#: field:migrade.application.installer.modules,quickbooks_ippids:0
msgid "Quickbooks Ippids"
-msgstr ""
+msgstr "Quickbooks Ippids"
#. module: base_setup
#: selection:base.setup.terminology,partner:0
msgid "Client"
-msgstr ""
+msgstr "Cliënt"
#. module: base_setup
#: field:migrade.application.installer.modules,import_saleforce:0
msgid "Import Saleforce"
-msgstr ""
+msgstr "Salesforce-import"
#. module: base_setup
#: field:user.preferences.config,context_tz:0
msgid "Timezone"
-msgstr ""
+msgstr "Tijdzone"
#. module: base_setup
#: model:ir.actions.act_window,name:base_setup.action_partner_terminology_config_form
msgid "Use another word to say \"Customer\""
-msgstr ""
+msgstr "Gebruik een andere benaming voor Klant"
#. module: base_setup
#: model:ir.model,name:base_setup.model_base_setup_terminology
msgid "base.setup.terminology"
-msgstr ""
+msgstr "base.setup.terminology"
#. module: base_setup
#: help:user.preferences.config,menu_tips:0
msgid ""
"Check out this box if you want to always display tips on each menu action"
-msgstr ""
+msgstr "Schakel dit vakje in als u voor elke menuactie tips wilt weergaven."
#. module: base_setup
#: field:base.setup.terminology,config_logo:0
@@ -233,52 +252,52 @@ msgstr "Afbeelding"
#. module: base_setup
#: model:ir.model,name:base_setup.model_user_preferences_config
msgid "user.preferences.config"
-msgstr ""
+msgstr "user.preferences.config"
#. module: base_setup
#: model:ir.actions.act_window,name:base_setup.action_config_access_other_user
msgid "Create Additional Users"
-msgstr ""
+msgstr "Extra gebruikers maken"
#. module: base_setup
#: model:ir.actions.act_window,name:base_setup.action_import_create_installer
msgid "Create or Import Customers"
-msgstr ""
+msgstr "Klanten maken of importeren"
#. module: base_setup
#: field:migrade.application.installer.modules,import_sugarcrm:0
msgid "Import Sugarcrm"
-msgstr ""
+msgstr "SugarCRM-import"
#. module: base_setup
#: help:product.installer,customers:0
msgid "Import or create customers"
-msgstr ""
+msgstr "Klanten maken of importeren"
#. module: base_setup
#: selection:user.preferences.config,view:0
msgid "Simplified"
-msgstr ""
+msgstr "Eenvoudig"
#. module: base_setup
#: help:migrade.application.installer.modules,import_sugarcrm:0
msgid "For Import Sugarcrm"
-msgstr ""
+msgstr "Voor SugarCRM-import"
#. module: base_setup
#: selection:base.setup.terminology,partner:0
msgid "Partner"
-msgstr ""
+msgstr "Relatie"
#. module: base_setup
#: view:base.setup.terminology:0
msgid "Specify Your Terminology"
-msgstr ""
+msgstr "Kies uw terminologie"
#. module: base_setup
#: help:migrade.application.installer.modules,sync_google_contact:0
msgid "For Sync Google Contact"
-msgstr ""
+msgstr "Voor synchronisatie met Google-contacten"
#~ msgid "Logo"
#~ msgstr "Logo"
diff --git a/addons/base_status/base_stage.py b/addons/base_status/base_stage.py
index 9db3ece7d8b..2cb5a4c1859 100644
--- a/addons/base_status/base_stage.py
+++ b/addons/base_status/base_stage.py
@@ -307,7 +307,7 @@ class base_stage(object):
destination=False)
def remind_user(self, cr, uid, ids, context=None, attach=False, destination=True):
- if 'message_post' in self:
+ if hasattr(self, 'message_post'):
for case in self.browse(cr, uid, ids, context=context):
if destination:
recipient_id = case.user_id.partner_id.id
diff --git a/addons/base_tools/__openerp__.py b/addons/base_tools/__openerp__.py
index 84f10e78959..71f6cbe549c 100644
--- a/addons/base_tools/__openerp__.py
+++ b/addons/base_tools/__openerp__.py
@@ -13,7 +13,6 @@ Creates menu link for Tools from where tools like survey, lunch, idea are access
""",
'data': ['tools_view.xml'],
'installable': True,
- 'certificate' : '00571588675379342237'
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/base_vat/__openerp__.py b/addons/base_vat/__openerp__.py
index dfa23bb54fe..3071ddf2f5a 100644
--- a/addons/base_vat/__openerp__.py
+++ b/addons/base_vat/__openerp__.py
@@ -58,7 +58,6 @@ only the country code will be validated.
'data': ['base_vat_view.xml'],
'installable': True,
'auto_install': False,
- 'certificate': '0084849360989',
'images': ['images/1_partner_vat.jpeg'],
}
diff --git a/addons/base_vat/i18n/nl_BE.po b/addons/base_vat/i18n/nl_BE.po
index f468f96cd38..9d68fcb0f78 100644
--- a/addons/base_vat/i18n/nl_BE.po
+++ b/addons/base_vat/i18n/nl_BE.po
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
-"PO-Revision-Date: 2009-04-24 15:11+0000\n"
-"Last-Translator: <>\n"
+"PO-Revision-Date: 2012-10-01 11:23+0000\n"
+"Last-Translator: Els Van Vossel (Agaplan) \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-08-28 06:07+0000\n"
-"X-Generator: Launchpad (build 15864)\n"
+"X-Launchpad-Export-Date: 2012-10-02 05:20+0000\n"
+"X-Generator: Launchpad (build 16061)\n"
#. module: base_vat
#: code:addons/base_vat/base_vat.py:141
@@ -34,7 +34,7 @@ msgstr "De naam van de firma moet uniek zijn"
#. module: base_vat
#: constraint:res.partner:0
msgid "Error ! You cannot create recursive associated members."
-msgstr ""
+msgstr "U kunt niet dezelfde verenigingsleden maken."
#. module: base_vat
#: field:res.company,vat_check_vies:0
diff --git a/addons/board/__openerp__.py b/addons/board/__openerp__.py
index 2690012f3b4..e699e091176 100644
--- a/addons/board/__openerp__.py
+++ b/addons/board/__openerp__.py
@@ -42,7 +42,6 @@ Allows users to create custom dashboard.
'qweb': ['static/src/xml/*.xml'],
'installable': True,
'auto_install': False,
- 'certificate': '0076912305725',
'images': ['images/1_dashboard_definition.jpeg','images/2_publish_note.jpeg','images/3_admin_dashboard.jpeg',],
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/caldav/__openerp__.py b/addons/caldav/__openerp__.py
index 4d35b00bdb4..45edd6e659e 100644
--- a/addons/caldav/__openerp__.py
+++ b/addons/caldav/__openerp__.py
@@ -69,7 +69,6 @@ To access OpenERP Calendar using WebCal to remote site use the URL like:
],
'installable': True,
'auto_install': False,
- 'certificate': '00924841426645403741',
'images': ['images/calendar_collections.jpeg','images/calendars.jpeg','images/export_ics_file.jpeg'],
}
diff --git a/addons/caldav/i18n/bn.po b/addons/caldav/i18n/bn.po
new file mode 100644
index 00000000000..93281058908
--- /dev/null
+++ b/addons/caldav/i18n/bn.po
@@ -0,0 +1,819 @@
+# Bengali translation for openobject-addons
+# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2012-02-08 00:36+0000\n"
+"PO-Revision-Date: 2012-09-25 17:39+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Bengali \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-09-26 04:36+0000\n"
+"X-Generator: Launchpad (build 16022)\n"
+
+#. module: caldav
+#: view:basic.calendar:0
+msgid "Value Mapping"
+msgstr ""
+
+#. module: caldav
+#: help:caldav.browse,url:0
+msgid "Url of the caldav server, use for synchronization"
+msgstr ""
+
+#. module: caldav
+#: code:addons/caldav/wizard/caldav_browse.py:99
+#, python-format
+msgid ""
+"\n"
+"Prerequire\n"
+"----------\n"
+"There is no buit-in way to synchronize calendar with caldav.\n"
+"So you need to install a third part software : Calendar (CalDav)\n"
+"for now it's the only one\n"
+"\n"
+"configuration\n"
+"-------------\n"
+"\n"
+"1. Open Calendar Sync\n"
+" I'll get an interface with 2 tabs\n"
+" Stay on the first one\n"
+"\n"
+"2. CaDAV Calendar URL : put the URL given above (ie : "
+"http://host.com:8069/webdav/db/calendars/users/demo/c/Meetings)\n"
+"\n"
+"3. Put your openerp username and password\n"
+"\n"
+"4. If your server don't use SSL, you'll get a warnign, say \"Yes\"\n"
+"\n"
+"5. Then you can synchronize manually or custom the settings to synchronize "
+"every x minutes.\n"
+"\n"
+" "
+msgstr ""
+
+#. module: caldav
+#: field:basic.calendar.alias,name:0
+msgid "Filename"
+msgstr ""
+
+#. module: caldav
+#: model:ir.model,name:caldav.model_calendar_event_export
+msgid "Event Export"
+msgstr ""
+
+#. module: caldav
+#: view:calendar.event.subscribe:0
+msgid "Provide Path for Remote Calendar"
+msgstr ""
+
+#. module: caldav
+#: model:ir.actions.act_window,name:caldav.action_calendar_event_import_values
+msgid "Import .ics File"
+msgstr ""
+
+#. module: caldav
+#: view:caldav.browse:0
+#: view:calendar.event.export:0
+msgid "_Close"
+msgstr ""
+
+#. module: caldav
+#: selection:basic.calendar.attributes,type:0
+#: selection:basic.calendar.lines,name:0
+msgid "Attendee"
+msgstr ""
+
+#. module: caldav
+#: sql_constraint:basic.calendar.fields:0
+msgid "Can not map a field more than once"
+msgstr ""
+
+#. module: caldav
+#: model:ir.actions.act_window,help:caldav.action_caldav_form
+msgid ""
+"\"Calendars\" allow you to Customize calendar event and todo attribute with "
+"any of OpenERP model.Caledars provide iCal Import/Export "
+"functionality.Webdav server that provides remote access to calendar.Help You "
+"to synchronize Meeting with Calendars client.You can access Calendars using "
+"CalDAV clients, like sunbird, Calendar Evaluation, Mobile."
+msgstr ""
+
+#. module: caldav
+#: code:addons/caldav/calendar.py:789
+#: code:addons/caldav/calendar.py:879
+#: code:addons/caldav/wizard/calendar_event_import.py:63
+#, python-format
+msgid "Warning !"
+msgstr ""
+
+#. module: caldav
+#: field:basic.calendar.lines,object_id:0
+msgid "Object"
+msgstr ""
+
+#. module: caldav
+#: view:basic.calendar:0
+msgid "Todo"
+msgstr ""
+
+#. module: caldav
+#: model:ir.model,name:caldav.model_user_preference
+msgid "User preference Form"
+msgstr ""
+
+#. module: caldav
+#: field:user.preference,service:0
+msgid "Services"
+msgstr ""
+
+#. module: caldav
+#: selection:basic.calendar.fields,fn:0
+msgid "Expression as constant"
+msgstr ""
+
+#. module: caldav
+#: selection:user.preference,device:0
+msgid "Evolution"
+msgstr ""
+
+#. module: caldav
+#: view:calendar.event.import:0
+#: view:calendar.event.subscribe:0
+msgid "Ok"
+msgstr ""
+
+#. module: caldav
+#: code:addons/caldav/wizard/caldav_browse.py:123
+#, python-format
+msgid ""
+"\n"
+" 1. Go to Calendar View\n"
+"\n"
+" 2. File -> New -> Calendar\n"
+"\n"
+" 3. Fill the form\n"
+" - type : CalDav\n"
+" - name : Whaterver you want (ie : Meeting)\n"
+" - url : "
+"http://HOST:PORT/webdav/DB_NAME/calendars/users/USER/c/Meetings (ie : "
+"http://localhost:8069/webdav/db_1/calendars/users/demo/c/Meetings) the one "
+"given on the top of this window\n"
+" - uncheck \"User SSL\"\n"
+" - Username : Your username (ie : Demo)\n"
+" - Refresh : everytime you want that evolution synchronize the data "
+"with the server\n"
+"\n"
+" 4. Click ok and give your openerp password\n"
+"\n"
+" 5. A new calendar named with the name you gave should appear on the left "
+"side.\n"
+" "
+msgstr ""
+
+#. module: caldav
+#: code:addons/caldav/calendar.py:879
+#, python-format
+msgid "Please provide proper configuration of \"%s\" in Calendar Lines"
+msgstr ""
+
+#. module: caldav
+#: view:user.preference:0
+msgid "Caldav's host name configuration"
+msgstr ""
+
+#. module: caldav
+#: field:caldav.browse,url:0
+msgid "Caldav Server"
+msgstr ""
+
+#. module: caldav
+#: selection:basic.calendar.fields,fn:0
+msgid "Datetime In UTC"
+msgstr ""
+
+#. module: caldav
+#: selection:user.preference,device:0
+msgid "iPhone"
+msgstr ""
+
+#. module: caldav
+#: selection:basic.calendar,type:0
+#: selection:basic.calendar.attributes,type:0
+#: selection:basic.calendar.lines,name:0
+msgid "TODO"
+msgstr ""
+
+#. module: caldav
+#: view:calendar.event.export:0
+msgid "Export ICS"
+msgstr ""
+
+#. module: caldav
+#: selection:basic.calendar.fields,fn:0
+msgid "Use the field"
+msgstr ""
+
+#. module: caldav
+#: code:addons/caldav/calendar.py:789
+#, python-format
+msgid "Can not create line \"%s\" more than once"
+msgstr ""
+
+#. module: caldav
+#: view:basic.calendar:0
+msgid "Webcal Calendar"
+msgstr ""
+
+#. module: caldav
+#: view:basic.calendar:0
+#: field:basic.calendar,line_ids:0
+#: model:ir.model,name:caldav.model_basic_calendar_lines
+msgid "Calendar Lines"
+msgstr ""
+
+#. module: caldav
+#: model:ir.model,name:caldav.model_calendar_event_subscribe
+msgid "Event subscribe"
+msgstr ""
+
+#. module: caldav
+#: view:calendar.event.import:0
+msgid "Import ICS"
+msgstr ""
+
+#. module: caldav
+#: view:calendar.event.import:0
+#: view:calendar.event.subscribe:0
+#: view:user.preference:0
+msgid "_Cancel"
+msgstr ""
+
+#. module: caldav
+#: model:ir.model,name:caldav.model_basic_calendar_event
+msgid "basic.calendar.event"
+msgstr ""
+
+#. module: caldav
+#: view:basic.calendar:0
+#: selection:basic.calendar,type:0
+#: selection:basic.calendar.attributes,type:0
+#: selection:basic.calendar.lines,name:0
+msgid "Event"
+msgstr ""
+
+#. module: caldav
+#: field:document.directory,calendar_collection:0
+#: field:user.preference,collection:0
+msgid "Calendar Collection"
+msgstr ""
+
+#. module: caldav
+#: constraint:document.directory:0
+msgid "Error! You can not create recursive Directories."
+msgstr ""
+
+#. module: caldav
+#: view:user.preference:0
+msgid "_Open"
+msgstr ""
+
+#. module: caldav
+#: view:user.preference:0
+msgid "Next"
+msgstr ""
+
+#. module: caldav
+#: field:basic.calendar,type:0
+#: field:basic.calendar.attributes,type:0
+#: field:basic.calendar.fields,type_id:0
+#: field:basic.calendar.lines,name:0
+msgid "Type"
+msgstr ""
+
+#. module: caldav
+#: help:calendar.event.export,name:0
+msgid "Save in .ics format"
+msgstr ""
+
+#. module: caldav
+#: code:addons/caldav/calendar.py:1293
+#, python-format
+msgid "Error !"
+msgstr ""
+
+#. module: caldav
+#: model:ir.model,name:caldav.model_basic_calendar_attributes
+msgid "Calendar attributes"
+msgstr ""
+
+#. module: caldav
+#: model:ir.model,name:caldav.model_caldav_browse
+msgid "Caldav Browse"
+msgstr ""
+
+#. module: caldav
+#: selection:user.preference,device:0
+msgid "Android based device"
+msgstr ""
+
+#. module: caldav
+#: view:user.preference:0
+msgid "Configure your openerp hostname. For example : "
+msgstr ""
+
+#. module: caldav
+#: field:basic.calendar,create_date:0
+msgid "Created Date"
+msgstr ""
+
+#. module: caldav
+#: view:basic.calendar:0
+msgid "Attributes Mapping"
+msgstr ""
+
+#. module: caldav
+#: model:ir.model,name:caldav.model_document_directory
+msgid "Directory"
+msgstr ""
+
+#. module: caldav
+#: field:calendar.event.subscribe,url_path:0
+msgid "Provide path for remote calendar"
+msgstr ""
+
+#. module: caldav
+#: field:basic.calendar.lines,domain:0
+msgid "Domain"
+msgstr ""
+
+#. module: caldav
+#: view:calendar.event.subscribe:0
+msgid "_Subscribe"
+msgstr ""
+
+#. module: caldav
+#: field:basic.calendar,user_id:0
+msgid "Owner"
+msgstr ""
+
+#. module: caldav
+#: view:basic.calendar:0
+#: field:basic.calendar.alias,cal_line_id:0
+#: field:basic.calendar.lines,calendar_id:0
+#: model:ir.ui.menu,name:caldav.menu_calendar
+#: field:user.preference,calendar:0
+msgid "Calendar"
+msgstr ""
+
+#. module: caldav
+#: code:addons/caldav/calendar.py:41
+#, python-format
+msgid ""
+"Please install python-vobject from http://vobject.skyhouseconsulting.com/"
+msgstr ""
+
+#. module: caldav
+#: code:addons/caldav/wizard/calendar_event_import.py:63
+#, python-format
+msgid "Invalid format of the ics, file can not be imported"
+msgstr ""
+
+#. module: caldav
+#: selection:user.preference,service:0
+msgid "CalDAV"
+msgstr ""
+
+#. module: caldav
+#: field:basic.calendar.fields,field_id:0
+msgid "OpenObject Field"
+msgstr ""
+
+#. module: caldav
+#: field:basic.calendar.alias,res_id:0
+msgid "Res. ID"
+msgstr ""
+
+#. module: caldav
+#: view:calendar.event.subscribe:0
+msgid "Message..."
+msgstr ""
+
+#. module: caldav
+#: view:basic.calendar:0
+#: field:basic.calendar,has_webcal:0
+msgid "WebCal"
+msgstr ""
+
+#. module: caldav
+#: view:document.directory:0
+#: model:ir.actions.act_window,name:caldav.action_calendar_collection_form
+#: model:ir.ui.menu,name:caldav.menu_calendar_collection
+msgid "Calendar Collections"
+msgstr ""
+
+#. module: caldav
+#: code:addons/caldav/calendar.py:815
+#: sql_constraint:basic.calendar.alias:0
+#, python-format
+msgid "The same filename cannot apply to two records!"
+msgstr ""
+
+#. module: caldav
+#: sql_constraint:document.directory:0
+msgid "Directory cannot be parent of itself!"
+msgstr ""
+
+#. module: caldav
+#: view:basic.calendar:0
+#: field:document.directory,calendar_ids:0
+#: model:ir.actions.act_window,name:caldav.action_caldav_form
+#: model:ir.ui.menu,name:caldav.menu_caldav_directories
+msgid "Calendars"
+msgstr ""
+
+#. module: caldav
+#: field:basic.calendar,collection_id:0
+msgid "Collection"
+msgstr ""
+
+#. module: caldav
+#: field:basic.calendar,write_date:0
+msgid "Write Date"
+msgstr ""
+
+#. module: caldav
+#: code:addons/caldav/wizard/caldav_browse.py:32
+#, python-format
+msgid ""
+"\n"
+" * Webdav server that provides remote access to calendar\n"
+" * Synchronisation of calendar using WebDAV\n"
+" * Customize calendar event and todo attribute with any of OpenERP model\n"
+" * Provides iCal Import/Export functionality\n"
+"\n"
+" To access Calendars using CalDAV clients, point them to:\n"
+" "
+"http://HOSTNAME:PORT/webdav/DATABASE_NAME/calendars/users/USERNAME/c\n"
+"\n"
+" To access OpenERP Calendar using WebCal to remote site use the URL "
+"like:\n"
+" "
+"http://HOSTNAME:PORT/webdav/DATABASE_NAME/Calendars/CALENDAR_NAME.ics\n"
+"\n"
+" Where,\n"
+" HOSTNAME: Host on which OpenERP server(With webdav) is running\n"
+" PORT : Port on which OpenERP server is running (By Default : 8069)\n"
+" DATABASE_NAME: Name of database on which OpenERP Calendar is "
+"created\n"
+" "
+msgstr ""
+
+#. module: caldav
+#: sql_constraint:document.directory:0
+msgid "The directory name must be unique !"
+msgstr ""
+
+#. module: caldav
+#: view:user.preference:0
+msgid "User Preference"
+msgstr ""
+
+#. module: caldav
+#: code:addons/caldav/wizard/calendar_event_subscribe.py:59
+#, python-format
+msgid "Please provide Proper URL !"
+msgstr ""
+
+#. module: caldav
+#: model:ir.model,name:caldav.model_basic_calendar_timezone
+msgid "basic.calendar.timezone"
+msgstr ""
+
+#. module: caldav
+#: field:basic.calendar.fields,expr:0
+msgid "Expression"
+msgstr ""
+
+#. module: caldav
+#: model:ir.model,name:caldav.model_basic_calendar_attendee
+msgid "basic.calendar.attendee"
+msgstr ""
+
+#. module: caldav
+#: model:ir.model,name:caldav.model_basic_calendar_alias
+msgid "basic.calendar.alias"
+msgstr ""
+
+#. module: caldav
+#: view:calendar.event.import:0
+#: field:calendar.event.import,file_path:0
+msgid "Select ICS File"
+msgstr ""
+
+#. module: caldav
+#: field:user.preference,device:0
+msgid "Software/Devices"
+msgstr ""
+
+#. module: caldav
+#: field:basic.calendar.lines,mapping_ids:0
+msgid "Fields Mapping"
+msgstr ""
+
+#. module: caldav
+#: code:addons/caldav/wizard/caldav_browse.py:141
+#, python-format
+msgid ""
+"\n"
+"Prerequire\n"
+"----------\n"
+"If you are using thunderbird, first you need to install the lightning "
+"module\n"
+"http://www.mozilla.org/projects/calendar/lightning/\n"
+"\n"
+"configuration\n"
+"-------------\n"
+"\n"
+"1. Go to Calendar View\n"
+"\n"
+"2. File -> New Calendar\n"
+"\n"
+"3. Chosse \"On the Network\"\n"
+"\n"
+"4. for format choose CalDav\n"
+" and as location the url given above (ie : "
+"http://host.com:8069/webdav/db/calendars/users/demo/c/Meetings)\n"
+"\n"
+"5. Choose a name and a color for the Calendar, and we advice you to uncheck "
+"\"alarm\"\n"
+"\n"
+"6. Then put your openerp login and password (to give the password only check "
+"the box \"Use password Manager to remember this password\"\n"
+"\n"
+"7. Then Finish, your meetings should appear now in your calendar view\n"
+msgstr ""
+
+#. module: caldav
+#: view:caldav.browse:0
+msgid "Browse Caldav"
+msgstr ""
+
+#. module: caldav
+#: field:user.preference,host_name:0
+msgid "Host Name"
+msgstr ""
+
+#. module: caldav
+#: model:ir.model,name:caldav.model_basic_calendar
+msgid "basic.calendar"
+msgstr ""
+
+#. module: caldav
+#: view:basic.calendar:0
+msgid "Other Info"
+msgstr ""
+
+#. module: caldav
+#: selection:user.preference,device:0
+msgid "Other"
+msgstr ""
+
+#. module: caldav
+#: view:basic.calendar:0
+msgid "My Calendar(s)"
+msgstr ""
+
+#. module: caldav
+#: help:basic.calendar,has_webcal:0
+msgid ""
+"Also export a .ics entry next to the calendar folder, with WebCal "
+"content."
+msgstr ""
+
+#. module: caldav
+#: field:basic.calendar.fields,fn:0
+msgid "Function"
+msgstr ""
+
+#. module: caldav
+#: view:user.preference:0
+msgid "database.my.openerp.com or companyserver.com"
+msgstr ""
+
+#. module: caldav
+#: view:basic.calendar:0
+#: field:basic.calendar,description:0
+#: view:caldav.browse:0
+#: field:caldav.browse,description:0
+msgid "Description"
+msgstr ""
+
+#. module: caldav
+#: help:basic.calendar.alias,cal_line_id:0
+msgid "The calendar/line this mapping applies to"
+msgstr ""
+
+#. module: caldav
+#: field:basic.calendar.fields,mapping:0
+msgid "Mapping"
+msgstr ""
+
+#. module: caldav
+#: code:addons/caldav/wizard/calendar_event_import.py:86
+#, python-format
+msgid "Import Sucessful"
+msgstr ""
+
+#. module: caldav
+#: view:calendar.event.import:0
+msgid "_Import"
+msgstr ""
+
+#. module: caldav
+#: model:ir.model,name:caldav.model_calendar_event_import
+msgid "Event Import"
+msgstr ""
+
+#. module: caldav
+#: selection:basic.calendar.fields,fn:0
+msgid "Interval in hours"
+msgstr ""
+
+#. module: caldav
+#: field:calendar.event.export,name:0
+msgid "File name"
+msgstr ""
+
+#. module: caldav
+#: view:calendar.event.subscribe:0
+msgid "Subscribe to Remote Calendar"
+msgstr ""
+
+#. module: caldav
+#: help:basic.calendar,calendar_color:0
+msgid "For supporting clients, the color of the calendar entries"
+msgstr ""
+
+#. module: caldav
+#: field:basic.calendar,name:0
+#: field:basic.calendar.attributes,name:0
+#: field:basic.calendar.fields,name:0
+msgid "Name"
+msgstr ""
+
+#. module: caldav
+#: selection:basic.calendar.attributes,type:0
+#: selection:basic.calendar.lines,name:0
+msgid "Alarm"
+msgstr ""
+
+#. module: caldav
+#: model:ir.model,name:caldav.model_basic_calendar_alarm
+msgid "basic.calendar.alarm"
+msgstr ""
+
+#. module: caldav
+#: code:addons/caldav/calendar.py:1293
+#, python-format
+msgid "Attendee must have an Email Id"
+msgstr ""
+
+#. module: caldav
+#: model:ir.actions.act_window,name:caldav.action_calendar_event_export_values
+msgid "Export .ics File"
+msgstr ""
+
+#. module: caldav
+#: code:addons/caldav/calendar.py:41
+#, python-format
+msgid "vobject Import Error!"
+msgstr ""
+
+#. module: caldav
+#: field:calendar.event.export,file_path:0
+msgid "Save ICS file"
+msgstr ""
+
+#. module: caldav
+#: code:addons/caldav/wizard/caldav_browse.py:50
+#, python-format
+msgid ""
+"\n"
+" For SSL specific configuration see the documentation below\n"
+"\n"
+"Now, to setup the calendars, you need to:\n"
+"\n"
+"1. Click on the \"Settings\" and go to the \"Mail, Contacts, Calendars\" "
+"page.\n"
+"2. Go to \"Add account...\"\n"
+"3. Click on \"Other\"\n"
+"4. From the \"Calendars\" group, select \"Add CalDAV Account\"\n"
+"\n"
+"5. Enter the host's name\n"
+" (ie : if the url is http://openerp.com:8069/webdav/db_1/calendars/ , "
+"openerp.com is the host)\n"
+"\n"
+"6. Fill Username and password with your openerp login and password\n"
+"\n"
+"7. As a description, you can either leave the server's name or\n"
+" something like \"OpenERP calendars\".\n"
+"\n"
+"9. If you are not using a SSL server, you'll get an error, do not worry and "
+"push \"Continue\"\n"
+"\n"
+"10. Then click to \"Advanced Settings\" to specify the right\n"
+" ports and paths.\n"
+"\n"
+"11. Specify the port for the OpenERP server: 8071 for SSL, 8069 without.\n"
+"\n"
+"12. Set the \"Account URL\" to the right path of the OpenERP webdav:\n"
+" the url given by the wizard (ie : "
+"http://my.server.ip:8069/webdav/dbname/calendars/ )\n"
+"\n"
+"11. Click on Done. The phone will hopefully connect to the OpenERP server\n"
+" and verify it can use the account.\n"
+"\n"
+"12. Go to the main menu of the iPhone and enter the Calendar application.\n"
+" Your OpenERP calendars will be visible inside the selection of the\n"
+" \"Calendars\" button.\n"
+" Note that when creating a new calendar entry, you will have to specify\n"
+" which calendar it should be saved at.\n"
+"\n"
+"IF you need SSL (and your certificate is not a verified one, as usual),\n"
+"then you first will need to let the iPhone trust that. Follow these\n"
+"steps:\n"
+"\n"
+" s1. Open Safari and enter the https location of the OpenERP server:\n"
+" https://my.server.ip:8071/\n"
+" (assuming you have the server at \"my.server.ip\" and the HTTPS port\n"
+" is the default 8071)\n"
+" s2. Safari will try to connect and issue a warning about the "
+"certificate\n"
+" used. Inspect the certificate and click \"Accept\" so that iPhone\n"
+" now trusts it.\n"
+" "
+msgstr ""
+
+#. module: caldav
+#: selection:user.preference,device:0
+msgid "Sunbird/Thunderbird"
+msgstr ""
+
+#. module: caldav
+#: field:basic.calendar,calendar_order:0
+msgid "Order"
+msgstr ""
+
+#. module: caldav
+#: code:addons/caldav/wizard/calendar_event_subscribe.py:59
+#, python-format
+msgid "Error!"
+msgstr ""
+
+#. module: caldav
+#: field:basic.calendar,calendar_color:0
+msgid "Color"
+msgstr ""
+
+#. module: caldav
+#: view:basic.calendar:0
+msgid "MY"
+msgstr ""
+
+#. module: caldav
+#: model:ir.model,name:caldav.model_basic_calendar_fields
+msgid "Calendar fields"
+msgstr ""
+
+#. module: caldav
+#: view:calendar.event.import:0
+msgid "Import Message"
+msgstr ""
+
+#. module: caldav
+#: model:ir.actions.act_window,name:caldav.action_calendar_event_subscribe
+#: model:ir.actions.act_window,name:caldav.action_calendar_event_subscribe_values
+msgid "Subscribe"
+msgstr ""
+
+#. module: caldav
+#: sql_constraint:document.directory:0
+msgid "Directory must have a parent or a storage"
+msgstr ""
+
+#. module: caldav
+#: model:ir.model,name:caldav.model_basic_calendar_todo
+msgid "basic.calendar.todo"
+msgstr ""
+
+#. module: caldav
+#: help:basic.calendar,calendar_order:0
+msgid "For supporting clients, the order of this folder among the calendars"
+msgstr ""
diff --git a/addons/claim_from_delivery/__openerp__.py b/addons/claim_from_delivery/__openerp__.py
index 9e3f7f59ca2..453312233f6 100644
--- a/addons/claim_from_delivery/__openerp__.py
+++ b/addons/claim_from_delivery/__openerp__.py
@@ -35,7 +35,6 @@ Adds a Claim link to the delivery order.
'claim_delivery_data.xml',],
'auto_install': False,
'installable': True,
- 'certificate' : '001101649349223746957',
'images': ['images/1_claim_link_delivery_order.jpeg'],
}
diff --git a/addons/claim_from_delivery/i18n/nl_BE.po b/addons/claim_from_delivery/i18n/nl_BE.po
new file mode 100644
index 00000000000..51f4f9c276c
--- /dev/null
+++ b/addons/claim_from_delivery/i18n/nl_BE.po
@@ -0,0 +1,23 @@
+# Dutch (Belgium) translation for openobject-addons
+# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2012-02-08 00:36+0000\n"
+"PO-Revision-Date: 2012-10-01 11:24+0000\n"
+"Last-Translator: Els Van Vossel (Agaplan) \n"
+"Language-Team: Dutch (Belgium) \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-10-02 05:20+0000\n"
+"X-Generator: Launchpad (build 16061)\n"
+
+#. module: claim_from_delivery
+#: model:ir.actions.act_window,name:claim_from_delivery.action_claim_from_delivery
+msgid "Claim"
+msgstr "Klacht"
diff --git a/addons/crm/__openerp__.py b/addons/crm/__openerp__.py
index 135f4237f1c..dd36aa19041 100644
--- a/addons/crm/__openerp__.py
+++ b/addons/crm/__openerp__.py
@@ -36,7 +36,7 @@ It manages key tasks such as communication, identification, prioritization, assi
OpenERP ensures that all cases are successfully tracked by users, customers and suppliers. It can automatically send reminders, escalate the request, trigger specific methods and many other actions based on your own enterprise rules.
-The greatest thing about this system is that users don't need to do anything special. The CRM module has an email gateway for the synchronization interface between mails and OpenERP. That way, users can just send emails to the request tracker.
+The greatest thing about this system is that users don't need to do anything special. The CRM module has an email gateway for the synchronization interface between mails and OpenERP. That way, users can just send emails to the request tracker.
OpenERP will take care of thanking them for their message, automatically routing it to the appropriate staff and make sure all future correspondence gets to the right place.
@@ -99,7 +99,7 @@ Dashboard for CRM will include:
'res_partner_view.xml',
'board_crm_view.xml',
-
+
'res_config_view.xml',
],
@@ -115,14 +115,14 @@ Dashboard for CRM will include:
'test/process/cancel_lead.yml',
'test/process/action_rule.yml',
'test/process/segmentation.yml',
+ 'test/process/phonecalls.yml',
'test/ui/crm_demo.yml',
'test/ui/duplicate_lead.yml',
- 'test/ui/delete_lead.yml'
+ 'test/ui/delete_lead.yml',
],
'installable': True,
'application': True,
'auto_install': False,
- 'certificate': '0079056041421',
'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'],
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/crm/crm.py b/addons/crm/crm.py
index 330bbb1fc9b..cca195a1539 100644
--- a/addons/crm/crm.py
+++ b/addons/crm/crm.py
@@ -102,6 +102,7 @@ class crm_case_section(osv.osv):
""" Model for sales teams. """
_name = "crm.case.section"
_inherits = {'mail.alias': 'alias_id'}
+ _inherit = "mail.thread"
_description = "Sales Teams"
_order = "complete_name"
diff --git a/addons/crm/crm_demo.xml b/addons/crm/crm_demo.xml
index 551e4e93fb8..dde3e63cc4a 100644
--- a/addons/crm/crm_demo.xml
+++ b/addons/crm/crm_demo.xml
@@ -1,46 +1,47 @@
-
+
+
-
+
-
- Meetings
- ir.ui.menu
-
-
-
+
+ Meetings
+ ir.ui.menu
+
+
+
-
+ Sales Marketing DepartmentSMD
-
-
+
+
-
+ Support DepartmentSPD
-
-
+
+
-
+ Direct MarketingDM
-
-
+
+
-
+ Online SupportOS
-
-
+
+
-
- OpenERP partners
- True
-
-
+
+ OpenERP partners
+ True
+
+
diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py
index fff47205582..d668ea710c1 100644
--- a/addons/crm/crm_lead.py
+++ b/addons/crm/crm_lead.py
@@ -277,6 +277,10 @@ class crm_lead(base_stage, format_address, osv.osv):
def create(self, cr, uid, vals, context=None):
obj_id = super(crm_lead, self).create(cr, uid, vals, context)
+ section_id = self.browse(cr, uid, obj_id, context=context).section_id
+ if section_id:
+ followers = [follow.id for follow in section_id.message_follower_ids]
+ self.message_subscribe(cr, uid, [obj_id], followers, context=context)
self.create_send_note(cr, uid, [obj_id], context=context)
return obj_id
@@ -294,12 +298,16 @@ class crm_lead(base_stage, format_address, osv.osv):
if partner_id:
partner = self.pool.get('res.partner').browse(cr, uid, partner_id, context=context)
values = {
- 'partner_name' : partner.name,
+ 'partner_name' : partner.name,
'street' : partner.street,
'street2' : partner.street2,
'city' : partner.city,
'state_id' : partner.state_id and partner.state_id.id or False,
'country_id' : partner.country_id and partner.country_id.id or False,
+ 'email_from' : partner.email,
+ 'phone' : partner.phone,
+ 'mobile' : partner.mobile,
+ 'fax' : partner.fax,
}
return {'value' : values}
@@ -487,7 +495,8 @@ class crm_lead(base_stage, format_address, osv.osv):
title = "%s : %s" % (merge_message, opportunity.name)
details.append(self._mail_body(cr, uid, opportunity, fields, title=title, context=context))
- subject = subject[0] + ", ".join(subject[1:])
+ # Chatter message's subject
+ subject = subject[0] + ": " + ", ".join(subject[1:])
details = "\n\n".join(details)
return self.message_post(cr, uid, [opportunity_id], body=details, subject=subject, context=context)
@@ -556,19 +565,18 @@ class crm_lead(base_stage, format_address, osv.osv):
data = self._merge_data(cr, uid, ids, oldest, fields, context=context)
- # merge data into first opportunity
- self.write(cr, uid, [first_opportunity.id], data, context=context)
-
- #copy message and attachements into the first opportunity
+ # 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)
- #Notification about loss of information
+ # Merge notifications about loss of information
self._merge_notification(cr, uid, first_opportunity, opportunities, context=context)
- #delete tail opportunities
+ # Write merged data into first opportunity
+ self.write(cr, uid, [first_opportunity.id], data, context=context)
+ # Delete tail opportunities
self.unlink(cr, uid, [x.id for x in tail_opportunities], context=context)
- #open first opportunity
+ # Open first opportunity
self.case_open(cr, uid, [first_opportunity.id])
return first_opportunity.id
@@ -577,13 +585,16 @@ class crm_lead(base_stage, format_address, osv.osv):
contact_id = False
if customer:
contact_id = self.pool.get('res.partner').address_get(cr, uid, [customer.id])['default']
+
if not section_id:
section_id = lead.section_id and lead.section_id.id or False
+
if section_id:
stage_ids = crm_stage.search(cr, uid, [('sequence','>=',1), ('section_ids','=', section_id)])
else:
stage_ids = crm_stage.search(cr, uid, [('sequence','>=',1)])
stage_id = stage_ids and stage_ids[0] or False
+
return {
'planned_revenue': lead.planned_revenue,
'probability': lead.probability,
@@ -594,11 +605,12 @@ class crm_lead(base_stage, format_address, osv.osv):
'stage_id': stage_id or False,
'date_action': time.strftime('%Y-%m-%d %H:%M:%S'),
'date_open': time.strftime('%Y-%m-%d %H:%M:%S'),
+ 'email_from': customer and customer.email or lead.email_from,
+ 'phone': customer and customer.phone or lead.phone,
}
def convert_opportunity(self, cr, uid, ids, partner_id, user_ids=False, section_id=False, context=None):
partner = self.pool.get('res.partner')
- mail_message = self.pool.get('mail.message')
customer = False
if partner_id:
customer = partner.browse(cr, uid, partner_id, context=context)
@@ -784,7 +796,12 @@ class crm_lead(base_stage, format_address, osv.osv):
stage = self.pool.get('crm.case.stage').browse(cr, uid, vals['stage_id'], context=context)
if stage.on_change:
vals['probability'] = stage.probability
- return super(crm_lead,self).write(cr, uid, ids, vals, context)
+ if vals.get('section_id'):
+ section_id = self.pool.get('crm.case.section').browse(cr, uid, vals.get('section_id'), context=context)
+ if section_id:
+ vals.setdefault('message_follower_ids', [])
+ vals['message_follower_ids'] += [(4, follower.id) for follower in section_id.message_follower_ids]
+ return super(crm_lead,self).write(cr, uid, ids, vals, context)
# ----------------------------------------
# Mail Gateway
diff --git a/addons/crm/crm_lead_demo.xml b/addons/crm/crm_lead_demo.xml
index b3c00256b06..7849125282e 100644
--- a/addons/crm/crm_lead_demo.xml
+++ b/addons/crm/crm_lead_demo.xml
@@ -1,10 +1,8 @@
-
+
leadPlan to Attend a Training
@@ -26,9 +24,9 @@
Hello,
-I am Jason from Le Club SARL,
-I am intertested to attend Training organized in your company,
-Can you send details,
+I am Jason from Le Club SARL.
+I am intertested to attend a training organized in your company.
+Can you send me the details ?
@@ -110,7 +108,8 @@ Can you send details,
- Hi, Can you send a quotation for 20 Computers with speakers?
+ Hi,
+Can you send me a quotation for 20 computers with speakers?
Regards,
Carrie Helle,
Purchase Manager
@@ -215,8 +214,9 @@ Contact: +1 813 494 5005
- hi,
-I want to know specification and cost of laptops of your company.
+ Hi,
+I would like to know more about specification and cost of laptops of your company.
+
Thanks,
Andrew
@@ -260,25 +260,20 @@ Andrew
-
-
+
-
+
+
-
-
-
-
+
opportunityPlan to buy 60 keyboards and mouses
@@ -563,9 +558,9 @@ AndrewDear Customer,
Thanks for showing interest in our products.
We have attached the catalogue,
-We would like to know your interests, Let us know if we can call you for more details.
+We would like to know your interests, so let us know when we can call you for more details.
-Thanks
+Regards
@@ -600,9 +595,9 @@ Thanks
crm.leadHello,
-I am Jason from Le Club SARL,
-I am intertested to attend Training organized in your company,
-Can you send details,
+I am Jason from Le Club SARL.
+I am intertested to attend a training organized in your company.
+Can you send me the details ?
email
@@ -613,7 +608,7 @@ Can you send details,
comment
-
+
Click to create an unqualified lead.
- A lead is usually the first step in your sales cycle. It can be
- a contact with a new prospect, a company you target, a contact form
- filled in your website, etc.
+ Use leads if you need a qualification step before creating an
+ opportunity or a customer. It can be a business card you received,
+ a contact form filled in your website, or a file of unqualified
+ prospects you import, etc.
Once qualified, the lead can be converted into a business
- opportunity and a new customer in your address book.
+ opportunity and/or a new customer in your address book.