diff --git a/addons/account/__openerp__.py b/addons/account/__openerp__.py
index 823bb56a7a9..271cc92e41c 100644
--- a/addons/account/__openerp__.py
+++ b/addons/account/__openerp__.py
@@ -120,7 +120,6 @@ module named account_voucher.
'project/analytic_account_demo.xml',
'demo/account_minimal.xml',
'account_unit_test.xml',
- 'board_account_demo.xml',
],
'test': [
'test/account_customer_invoice.yml',
diff --git a/addons/account/account.py b/addons/account/account.py
index 5a0ce67b8a2..208bf1d6f68 100644
--- a/addons/account/account.py
+++ b/addons/account/account.py
@@ -1654,11 +1654,11 @@ class account_tax(osv.osv):
_columns = {
'name': fields.char('Tax Name', size=64, required=True, translate=True, help="This name will be displayed on reports"),
'sequence': fields.integer('Sequence', required=True, help="The sequence field is used to order the tax lines from the lowest sequences to the higher ones. The order is important if you have a tax with several tax children. In this case, the evaluation order is important."),
- 'amount': fields.float('Amount', required=True, digits=(14,4), help="For Tax Type percent enter % ratio between 0-1."),
+ 'amount': fields.float('Amount', required=True, digits_compute=dp.get_precision('Account'), help="For taxes of type percentage, enter % ratio between 0-1."),
'active': fields.boolean('Active', help="If the active field is set to true, it will allow you to hide the tax without removing it."),
- 'type': fields.selection( [('percent','Percent'), ('fixed','Fixed'), ('none','None'), ('code','Python Code'),('balance','Balance')], 'Tax Type', required=True,
+ 'type': fields.selection( [('percent','Percentage'), ('fixed','Fixed Amount'), ('none','None'), ('code','Python Code'), ('balance','Balance')], 'Tax Type', required=True,
help="The computation method for the tax amount."),
- 'applicable_type': fields.selection( [('true','True'), ('code','Python Code')], 'Applicable Type', required=True,
+ 'applicable_type': fields.selection( [('true','Always'), ('code','Given by Python Code')], 'Applicability', required=True,
help="If not applicable (computed through a Python code), the tax won't appear on the invoice."),
'domain':fields.char('Domain', size=32, help="This field is only used if you develop your own module allowing developers to create specific taxes in a custom domain."),
'account_collected_id':fields.many2one('account.account', 'Invoice Tax Account'),
@@ -1669,7 +1669,6 @@ class account_tax(osv.osv):
'python_compute':fields.text('Python Code'),
'python_compute_inv':fields.text('Python Code (reverse)'),
'python_applicable':fields.text('Python Code'),
- 'tax_group': fields.selection([('vat','VAT'),('other','Other')], 'Tax Group', help="If a default tax is given in the partner it only overrides taxes from accounts (or products) in the same group."),
#
# Fields used for the VAT declaration
@@ -1762,7 +1761,6 @@ class account_tax(osv.osv):
'active': 1,
'type_tax_use': 'all',
'sequence': 1,
- 'tax_group': 'vat',
'ref_tax_sign': 1,
'ref_base_sign': 1,
'tax_sign': 1,
@@ -2421,7 +2419,6 @@ class account_tax_template(osv.osv):
'python_compute':fields.text('Python Code'),
'python_compute_inv':fields.text('Python Code (reverse)'),
'python_applicable':fields.text('Python Code'),
- 'tax_group': fields.selection([('vat','VAT'),('other','Other')], 'Tax Group', help="If a default tax if given in the partner it only override taxes from account (or product) of the same group."),
#
# Fields used for the VAT declaration
@@ -2464,7 +2461,6 @@ class account_tax_template(osv.osv):
'type': 'percent',
'amount': 0,
'sequence': 1,
- 'tax_group': 'vat',
'ref_tax_sign': 1,
'ref_base_sign': 1,
'tax_sign': 1,
@@ -2609,7 +2605,6 @@ class wizard_multi_charts_accounts(osv.osv_memory):
'python_compute': tax.python_compute,
'python_compute_inv': tax.python_compute_inv,
'python_applicable': tax.python_applicable,
- 'tax_group':tax.tax_group,
'base_code_id': tax.base_code_id and ((tax.base_code_id.id in tax_code_template_ref) and tax_code_template_ref[tax.base_code_id.id]) or False,
'tax_code_id': tax.tax_code_id and ((tax.tax_code_id.id in tax_code_template_ref) and tax_code_template_ref[tax.tax_code_id.id]) or False,
'base_sign': tax.base_sign,
diff --git a/addons/account/account_analytic_line.py b/addons/account/account_analytic_line.py
index 7a66dd4f175..bb13f1a5776 100644
--- a/addons/account/account_analytic_line.py
+++ b/addons/account/account_analytic_line.py
@@ -75,6 +75,9 @@ class account_analytic_line(osv.osv):
unit=False, journal_id=False, context=None):
if context==None:
context={}
+ if not journal_id:
+ j_ids = self.pool.get('account.analytic.journal').search(cr, uid, [('type','=','purchase')])
+ j_id = j_ids and j_ids[0] or False
if not journal_id or not prod_id:
return {}
product_obj = self.pool.get('product.product')
@@ -86,7 +89,7 @@ class account_analytic_line(osv.osv):
result = 0.0
is_purchase = False
- if j_id.type == 'purchase':
+ if j_id.type <> 'sale':
a = prod.product_tmpl_id.property_account_expense.id
if not a:
a = prod.categ_id.property_account_expense_categ.id
diff --git a/addons/account/account_bank_statement.py b/addons/account/account_bank_statement.py
index 647d80e61be..bbcd6188327 100644
--- a/addons/account/account_bank_statement.py
+++ b/addons/account/account_bank_statement.py
@@ -222,11 +222,11 @@ class account_bank_statement(osv.osv):
account_move_line_obj = self.pool.get('account.move.line')
account_analytic_line_obj = self.pool.get('account.analytic.line')
account_bank_statement_line_obj = self.pool.get('account.bank.statement.line')
-
st_line = account_bank_statement_line_obj.browse(cr, uid, st_line_id, context)
st = st_line.statement_id
context.update({'date': st_line.date})
+
move_id = account_move_obj.create(cr, uid, {
'journal_id': st.journal_id.id,
'period_id': st.period_id.id,
@@ -501,4 +501,4 @@ class account_bank_statement_line(osv.osv):
account_bank_statement_line()
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
diff --git a/addons/account/account_cash_statement.py b/addons/account/account_cash_statement.py
index aebff216c3b..ed987de7e37 100644
--- a/addons/account/account_cash_statement.py
+++ b/addons/account/account_cash_statement.py
@@ -247,7 +247,7 @@ class account_cash_statement(osv.osv):
open_jrnl = self.search(cr, uid, sql)
if open_jrnl:
raise osv.except_osv('Error', _('You can not have two open register for the same journal'))
-
+
if self.pool.get('account.journal').browse(cr, uid, vals['journal_id']).type == 'cash':
open_close = self._get_cash_open_close_box_lines(cr, uid, context)
vals.update({
@@ -370,16 +370,6 @@ class account_cash_statement(osv.osv):
super(account_cash_statement, self).button_confirm_bank(cr, uid, ids, context=context)
return self.write(cr, uid, ids, {'closing_date':time.strftime("%Y-%m-%d %H:%M:%S")}, context=context)
-
- def button_cancel(self, cr, uid, ids, context={}):
- done = []
- for st in self.browse(cr, uid, ids, context):
- ids = []
- for line in st.line_ids:
- ids += [x.id for x in line.move_ids]
- self.pool.get('account.move').unlink(cr, uid, ids, context)
- done.append(st.id)
- self.write(cr, uid, done, {'state':'draft'}, context=context)
- return True
-
account_cash_statement()
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/account/account_menuitem.xml b/addons/account/account_menuitem.xml
index ecce5df944f..fc4d350ea36 100644
--- a/addons/account/account_menuitem.xml
+++ b/addons/account/account_menuitem.xml
@@ -3,33 +3,33 @@
-
-
+
+
-
+
-
+
-
-
+
+
-
-
-
+
+
+
-
+
-
+
+ groups="group_account_user,group_account_manager"/>
-
+
diff --git a/addons/account/account_move_line.py b/addons/account/account_move_line.py
index a85bfd00316..1fda3fa8a6c 100644
--- a/addons/account/account_move_line.py
+++ b/addons/account/account_move_line.py
@@ -36,12 +36,18 @@ class account_move_line(osv.osv):
fiscalperiod_obj = self.pool.get('account.period')
fiscalyear_ids = []
fiscalperiod_ids = []
- if not context.get('fiscalyear', False) and not context.get('empty_fy_allow', False):
+ initial_bal = context.get('initial_bal', False)
+ company_clause = ""
+ if context.get('company_id', False):
+ company_clause = " AND " +obj+".company_id = %s" % context.get('company_id', False)
+ if not context.get('fiscalyear', False):
fiscalyear_ids = fiscalyear_obj.search(cr, uid, [('state', '=', 'draft')])
- elif context.get('empty_fy_allow', False):
- fiscalyear_ids = context['fiscalyear']
else:
- fiscalyear_ids = [context['fiscalyear']]
+ if initial_bal:
+ fiscalyear_date_start = fiscalyear_obj.read(cr, uid, context['fiscalyear'], ['date_start'])['date_start']
+ fiscalyear_ids = fiscalyear_obj.search(cr, uid, [('date_stop', '<', fiscalyear_date_start), ('state', '=', 'draft')], context=context)
+ else:
+ fiscalyear_ids = [context['fiscalyear']]
fiscalyear_clause = (','.join([str(x) for x in fiscalyear_ids])) or '0'
state = context.get('state',False)
@@ -50,12 +56,23 @@ class account_move_line(osv.osv):
where_move_lines_by_date = ''
if context.get('date_from', False) and context.get('date_to', False):
- where_move_lines_by_date = " AND " +obj+".move_id in ( select id from account_move where date >= '" +context['date_from']+"' AND date <= '"+context['date_to']+"')"
+ if initital_bal:
+ where_move_lines_by_date = " AND " +obj+".move_id in ( select id from account_move where date < '"+context['date_from']+"')"
+ else:
+ where_move_lines_by_date = " AND " +obj+".move_id in ( select id from account_move where date >= '" +context['date_from']+"' AND date <= '"+context['date_to']+"')"
if state:
if state.lower() not in ['all']:
where_move_state= " AND "+obj+".move_id in (select id from account_move where account_move.state = '"+state+"')"
+ if context.get('period_from', False) and context.get('periof_from', False) and not context.get('periods', False):
+ if initial_bal:
+ period_company_id = period_obj.browse(cr, uid, data['form']['period_from'], context=context).company_id.id
+ first_period = self.pool.get('account.period').search(cr, uid, [('company_id', '=', period_company_id)], order='date_start', limit=1)[0]
+ context['periods'] = period_obj.build_ctx_periods(cr, uid, first_period, data['form']['period_from'])
+ else:
+ context['periods'] = period_obj.build_ctx_periods(cr, uid, data['form']['period_from'], data['form']['period_to'])
+
if context.get('periods', False):
ids = ','.join([str(x) for x in context['periods']])
query = obj+".state<>'draft' AND "+obj+".period_id in (SELECT id from account_period WHERE fiscalyear_id in (%s) AND id in (%s)) %s %s" % (fiscalyear_clause, ids, where_move_state, where_move_lines_by_date)
@@ -69,6 +86,8 @@ class account_move_line(osv.osv):
child_ids = self.pool.get('account.account')._get_children_and_consol(cr, uid, [context['chart_account_id']], context=context)
query += ' AND '+obj+'.account_id in (%s)' % ','.join(map(str, child_ids))
+ query += company_clause
+
if context.get('period_manner','') == 'created':
#the query have to be build with no reference to periods but thanks to the creation date
if context.get('periods',False):
@@ -77,8 +96,6 @@ class account_move_line(osv.osv):
else:
fiscalperiod_ids = self.pool.get('account.period').search(cr, uid, [('fiscalyear_id','in',fiscalyear_ids)])
-
-
#remove from the old query the clause related to the period selection
res = ''
count = 1
@@ -309,15 +326,27 @@ class account_move_line(osv.osv):
ml = self.browse(cr, uid, id, context)
return map(lambda x: x.id, ml.move_id.line_id)
- # TODO: this is false, it does not uses draft and closed periods
- def _balance(self, cr, uid, ids, prop, unknow_none, unknow_dict):
- res={}
- # TODO group the foreach in sql
- for id in ids:
- cr.execute('SELECT date,account_id FROM account_move_line WHERE id=%s', (id,))
- dt, acc = cr.fetchone()
- cr.execute('SELECT SUM(debit-credit) FROM account_move_line WHERE account_id=%s AND (date<%s OR (date=%s AND id<=%s))', (acc,dt,dt,id))
- res[id] = cr.fetchone()[0]
+ def _balance(self, cr, uid, ids, name, arg, context=None):
+ if context is None:
+ context = {}
+
+ c = context.copy()
+ c['initital_bal'] = True
+
+ sql = [
+ """select l2.id, sum(l1.debit-l1.credit) from account_move_line l1, account_move_line l2""",
+ """where l2.account_id=l1.account_id""",
+ """and""",
+ """l1.id<=l2.id""",
+ """and""",
+ """l2.id in %s""",
+ """and""",
+ self._query_get(cr, uid, obj='l1', context=c),
+ """ group by l2.id""",
+ ]
+
+ cr.execute('\n'.join(sql), [tuple(ids)])
+ res = dict(cr.fetchall())
return res
def _invoice(self, cursor, user, ids, name, arg, context=None):
diff --git a/addons/account/account_unit_test.xml b/addons/account/account_unit_test.xml
index 97fba380214..e4178517361 100644
--- a/addons/account/account_unit_test.xml
+++ b/addons/account/account_unit_test.xml
@@ -14,6 +14,13 @@
Test invoice 1
+
+ Test Tax
+ 5.00
+ 100.00
+
+
+ Basic computer with Dvorak keyboard and left-handed mouse
@@ -27,7 +34,7 @@
8002
-
+
EUR
diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml
index 4aaac87a25b..fd818786e33 100644
--- a/addons/account/account_view.xml
+++ b/addons/account/account_view.xml
@@ -236,6 +236,17 @@
+
+ account.treasory.graph
+ account.account
+ graph
+
+
+
+
+
+
+ Accountsaccount.account
@@ -433,7 +444,7 @@
- account.bank.statement.select
+ account.cash.statement.selectaccount.bank.statementsearch
@@ -444,7 +455,7 @@
-
+
@@ -489,7 +500,7 @@
-
+
@@ -600,6 +611,7 @@
tree,form,graph[('journal_id.type', '=', 'bank')]{'journal_type':'bank'}
+
@@ -614,12 +626,13 @@
-
+ Bank Statementsaccount.bank.statementformtree,form,graph[('journal_id.type', '=', 'bank')]
+ {'journal_type':'bank'}
@@ -808,7 +821,6 @@
-
@@ -819,15 +831,12 @@
-
-
-
@@ -841,52 +850,46 @@
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
@@ -1154,7 +1157,7 @@
id="menu_action_account_moves_all"
parent="account.menu_finance_entries"
sequence="1"
- groups="group_account_user,group_account_manager,base.group_system"
+ groups="group_account_user,group_account_manager"
/>
@@ -1418,10 +1421,6 @@
res_model="account.move.line"
src_model="account.move"/>
-
-
-
-
Journal Itemsir.actions.act_window
@@ -1505,6 +1504,7 @@
account.bank.statementformform,tree
+
@@ -1646,17 +1646,17 @@
search
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
+
@@ -1800,7 +1800,7 @@
-
+ account.subscription.searchaccount.subscriptionsearch
@@ -2184,7 +2184,6 @@
-
@@ -2248,8 +2247,6 @@
-
-
diff --git a/addons/account/board_account_demo.xml b/addons/account/board_account_demo.xml
deleted file mode 100644
index 93bfed6d56d..00000000000
--- a/addons/account/board_account_demo.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/addons/account/board_account_view.xml b/addons/account/board_account_view.xml
index e8aecb2033c..190479f63a7 100644
--- a/addons/account/board_account_view.xml
+++ b/addons/account/board_account_view.xml
@@ -20,7 +20,22 @@
graph,tree[('type','=','income')]
-
+
+ Company Analysis
+ account.entries.report
+ form
+ tree,graph
+ {'group_by':['user_type'], 'group_by_no_leaf':1}
+
+
+
+ Treasory
+ account.account
+ form
+ graph,tree
+ [('type','=','liquidity')]
+
+ board.account.formboard.board
@@ -30,10 +45,12 @@
+
+
-
+
@@ -49,7 +66,7 @@
-
+
diff --git a/addons/account/company.py b/addons/account/company.py
index 873a65c415e..8e14fe53c3a 100644
--- a/addons/account/company.py
+++ b/addons/account/company.py
@@ -24,7 +24,7 @@ from osv import fields, osv
class res_company(osv.osv):
_inherit = "res.company"
_columns = {
- 'overdue_msg' : fields.text('Overdue Payments Message', translate=True),
+ 'overdue_msg': fields.text('Overdue Payments Message', translate=True),
'property_reserve_and_surplus_account': fields.property(
'account.account',
type='many2one',
@@ -41,6 +41,7 @@ class res_company(osv.osv):
out after this mail was sent, please consider the present one as \
void. Do not hesitate to contact our accounting department'
}
+
res_company()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
diff --git a/addons/account/i18n/nl.po b/addons/account/i18n/nl.po
index b6aa1acd5f3..7cfdfc93898 100644
--- a/addons/account/i18n/nl.po
+++ b/addons/account/i18n/nl.po
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2010-09-29 10:28+0000\n"
+"PO-Revision-Date: 2010-09-30 06:57+0000\n"
"Last-Translator: OpenERP Administrators \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: 2010-09-30 04:40+0000\n"
+"X-Launchpad-Export-Date: 2010-10-01 08:47+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account
diff --git a/addons/account/i18n/ru.po b/addons/account/i18n/ru.po
index e1f446f64f4..2a253811120 100644
--- a/addons/account/i18n/ru.po
+++ b/addons/account/i18n/ru.po
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2010-09-29 08:13+0000\n"
+"PO-Revision-Date: 2010-10-04 06:51+0000\n"
"Last-Translator: Chertykov Denis \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: 2010-09-30 04:41+0000\n"
+"X-Launchpad-Export-Date: 2010-10-05 04:57+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account
@@ -2116,7 +2116,7 @@ msgstr "дней"
#. module: account
#: selection:account.aged.trial.balance,init,direction_selection:0
msgid "Past"
-msgstr ""
+msgstr "Прошлые"
#. module: account
#: field:account.analytic.account,company_currency_id:0
@@ -2267,7 +2267,7 @@ msgstr "Создать проводки подписки"
#. module: account
#: wizard_field:account.fiscalyear.close,init,journal_id:0
msgid "Opening Entries Journal"
-msgstr ""
+msgstr "Открытие журнала проводок"
#. module: account
#: view:account.config.wizard:0
@@ -3839,7 +3839,7 @@ msgstr ""
#: model:ir.actions.act_window,name:account.action_wizard_company_setup_form
#: view:wizard.company.setup:0
msgid "Overdue Payment Report Message"
-msgstr ""
+msgstr "Сообщение о просроченном платеже"
#. module: account
#: selection:account.tax,tax_group:0
@@ -3894,12 +3894,12 @@ msgstr "Финансовые журналы"
#: selection:account.partner.balance.report,init,state:0
#: selection:account.third_party_ledger.report,init,state:0
msgid "By Period"
-msgstr ""
+msgstr "По периоду"
#. module: account
#: help:account.invoice,date_invoice:0
msgid "Keep empty to use the current date"
-msgstr ""
+msgstr "Оставьте пустым для текущей даты"
#. module: account
#: rml:account.overdue:0
@@ -3909,7 +3909,7 @@ msgstr "."
#. module: account
#: field:account.analytic.account,quantity_max:0
msgid "Maximum Quantity"
-msgstr ""
+msgstr "Максимальное количество"
#. module: account
#: field:account.period,name:0
@@ -3932,7 +3932,7 @@ msgstr "Группы"
#. module: account
#: rml:account.analytic.account.quantity_cost_ledger:0
msgid "Code/Date"
-msgstr ""
+msgstr "Код/Дата"
#. module: account
#: field:account.account,active:0
@@ -3953,7 +3953,7 @@ msgstr ""
#. module: account
#: view:account.chart.template:0
msgid "Properties"
-msgstr ""
+msgstr "Параметры"
#. module: account
#: view:res.partner:0
@@ -3973,7 +3973,7 @@ msgstr ""
#. module: account
#: wizard_field:account.vat.declaration,init,based_on:0
msgid "Base on"
-msgstr ""
+msgstr "Основан на"
#. module: account
#: selection:account.move,type:0
@@ -4365,7 +4365,7 @@ msgstr ""
#: field:account.config.wizard,date2:0
#: field:account.fiscalyear,date_stop:0
msgid "End Date"
-msgstr ""
+msgstr "Дата окончания"
#. module: account
#: model:ir.actions.wizard,name:account.wizard_open_closed_fiscalyear
@@ -4381,7 +4381,7 @@ msgstr ""
#. module: account
#: field:account.payment.term.line,days2:0
msgid "Day of the Month"
-msgstr ""
+msgstr "День месяца"
#. module: account
#: field:account.analytic.journal,line_ids:0
@@ -4542,7 +4542,7 @@ msgstr "Разрегить сверку"
#: selection:account.partner.balance.report,init,state:0
#: selection:account.third_party_ledger.report,init,state:0
msgid "By Date"
-msgstr ""
+msgstr "По дате"
#. module: account
#: model:ir.actions.act_window,name:account.action_invoice_tree4
@@ -4558,7 +4558,7 @@ msgstr "Дата сгенерированных проводок"
#. module: account
#: wizard_button:account.invoice.refund,init,modify_invoice:0
msgid "Modify Invoice"
-msgstr ""
+msgstr "Изменить счет"
#. module: account
#: view:res.partner:0
@@ -4568,7 +4568,7 @@ msgstr "Настройки бухгалтерского учета для кон
#. module: account
#: view:account.analytic.account:0
msgid "Analytic Account Statistics"
-msgstr ""
+msgstr "Статистика счета аналитики"
#. module: account
#: view:wizard.multi.charts.accounts:0
@@ -4598,12 +4598,12 @@ msgstr ""
#. module: account
#: wizard_field:account.aged.trial.balance,init,result_selection:0
msgid "Filter on Partners"
-msgstr ""
+msgstr "Фильтр по партнерам"
#. module: account
#: field:account.tax,price_include:0
msgid "Tax Included in Price"
-msgstr ""
+msgstr "Налог включен в цену"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_analytic_journal_tree2
@@ -4684,7 +4684,7 @@ msgstr "Учетные годы"
#. module: account
#: model:process.node,note:account.process_node_importinvoice0
msgid "Import from invoices or payments"
-msgstr ""
+msgstr "Импорт из счетов или платежей"
#. module: account
#: model:ir.actions.wizard,name:account.wizard_reconcile_select
@@ -4741,7 +4741,7 @@ msgstr "Адрес выставления счета"
#. module: account
#: rml:account.analytic.account.analytic.check:0
msgid "General Credit"
-msgstr ""
+msgstr "Общий кредит"
#. module: account
#: help:account.journal,centralisation:0
@@ -4754,7 +4754,7 @@ msgstr ""
#. module: account
#: selection:account.invoice,state:0
msgid "Cancelled"
-msgstr ""
+msgstr "Отменено"
#. module: account
#: model:ir.actions.act_window,name:account.action_bank_statement_draft_tree
@@ -4765,7 +4765,7 @@ msgstr "Черновые выписки"
#. module: account
#: wizard_field:populate_statement_from_inv,init,date:0
msgid "Date payment"
-msgstr ""
+msgstr "Дата оплаты"
#. module: account
#: rml:account.journal.period.print:0
@@ -4782,7 +4782,7 @@ msgstr "Расходы и доходы по журналам (текущий м
#: selection:account.partner.balance.report,init,result_selection:0
#: selection:account.third_party_ledger.report,init,result_selection:0
msgid "Receivable Accounts"
-msgstr ""
+msgstr "Счета к получению"
#. module: account
#: wizard_button:account.move.line.unreconcile.select,init,open:0
@@ -4838,7 +4838,7 @@ msgstr "НДС:"
#: rml:account.general.journal:0
#: rml:account.invoice:0
msgid "Total:"
-msgstr ""
+msgstr "Всего:"
#. module: account
#: model:ir.model,name:account.model_account_analytic_journal
@@ -4893,7 +4893,7 @@ msgstr ""
#: field:account.bank.statement.reconcile,total_amount:0
#: field:account.bank.statement.reconcile,total_second_amount:0
msgid "Payment amount"
-msgstr ""
+msgstr "Сумма оплаты"
#. module: account
#: view:account.analytic.account:0
@@ -4940,7 +4940,7 @@ msgstr "Все месяцы"
#. module: account
#: wizard_field:account.invoice.refund,init,date:0
msgid "Operation date"
-msgstr ""
+msgstr "Дата операции"
#. module: account
#: field:account.invoice,invoice_line:0
@@ -4950,7 +4950,7 @@ msgstr "Позиции счета"
#. module: account
#: field:account.period,date_start:0
msgid "Start of Period"
-msgstr ""
+msgstr "Начало периода"
#. module: account
#: wizard_field:account.fiscalyear.close,init,report_name:0
@@ -5008,12 +5008,12 @@ msgstr ""
#. module: account
#: rml:account.account.balance:0
msgid "Account Balance -"
-msgstr ""
+msgstr "Баланс по счету -"
#. module: account
#: field:account.journal,group_invoice_lines:0
msgid "Group invoice lines"
-msgstr ""
+msgstr "Группировать позиции счета"
#. module: account
#: model:ir.ui.menu,name:account.menu_finance_configuration
@@ -5058,7 +5058,7 @@ msgstr ""
#: wizard_view:account.partner.balance.report,init:0
#: wizard_view:account.third_party_ledger.report,init:0
msgid "Select Date-Period"
-msgstr ""
+msgstr "Выбор даты-периода"
#. module: account
#: rml:account.analytic.account.inverted.balance:0
@@ -5069,7 +5069,7 @@ msgstr ""
#: model:process.node,name:account.process_node_paidinvoice0
#: model:process.node,name:account.process_node_supplierpaidinvoice0
msgid "Paid invoice"
-msgstr ""
+msgstr "Оплаченный счет"
#. module: account
#: view:account.tax:0
@@ -5099,7 +5099,7 @@ msgstr ""
#. module: account
#: model:ir.actions.wizard,name:account.wizard_populate_statement_from_inv
msgid "Import invoices"
-msgstr ""
+msgstr "Импорт счетов"
#. module: account
#: wizard_view:account.move.line.unreconcile,init:0
@@ -5143,7 +5143,7 @@ msgstr "Периоды подписки"
#. module: account
#: model:process.node,name:account.process_node_manually0
msgid "Manually"
-msgstr ""
+msgstr "Вручную"
#. module: account
#: view:account.invoice:0
@@ -5162,7 +5162,7 @@ msgstr "Счета"
#: selection:account.partner.balance.report,init,result_selection:0
#: selection:account.third_party_ledger.report,init,result_selection:0
msgid "Payable Accounts"
-msgstr ""
+msgstr "Кредиторская задолженность"
#. module: account
#: view:account.invoice.line:0
@@ -5183,12 +5183,12 @@ msgstr "Полный платеж"
#. module: account
#: selection:account.move,type:0
msgid "Journal Purchase"
-msgstr ""
+msgstr "Журнал покупок"
#. module: account
#: selection:account.move,type:0
msgid "Cash Receipt"
-msgstr ""
+msgstr "Денежное поступление"
#. module: account
#: field:account.fiscal.position.tax,tax_dest_id:0
@@ -5254,12 +5254,12 @@ msgstr ""
#: wizard_view:account.partner.balance.report,init:0
#: wizard_view:account.third_party_ledger.report,init:0
msgid "Date Filter"
-msgstr ""
+msgstr "Фильтр дат"
#. module: account
#: wizard_view:populate_statement_from_inv,init:0
msgid "Choose Journal and Payment Date"
-msgstr ""
+msgstr "Выбрать журнал и дату платежа"
#. module: account
#: selection:account.analytic.account,state:0
@@ -5288,7 +5288,7 @@ msgstr "Невыплаченные возвраты клиентам"
#. module: account
#: help:account.invoice,residual:0
msgid "Remaining amount due."
-msgstr ""
+msgstr "Оставшиеся суммы"
#. module: account
#: wizard_view:account.period.close,init:0
@@ -5304,7 +5304,7 @@ msgstr "Проформа"
#. module: account
#: field:account.move.reconcile,line_partial_ids:0
msgid "Partial Entry lines"
-msgstr ""
+msgstr "Частичная проводка"
#. module: account
#: help:account.move.line,statement_id:0
@@ -5319,7 +5319,7 @@ msgstr "Отчетный год"
#. module: account
#: wizard_button:account.analytic.line,init,open:0
msgid "Open Entries"
-msgstr ""
+msgstr "Открытые проводки"
#. module: account
#: selection:account.analytic.account,type:0
@@ -5344,7 +5344,7 @@ msgstr ""
#: rml:account.third_party_ledger_other:0
#: rml:account.vat.declaration:0
msgid "Page"
-msgstr ""
+msgstr "Страница"
#. module: account
#: view:account.move:0
@@ -5377,7 +5377,7 @@ msgstr "Сверенная сумма"
#. module: account
#: selection:account.account,currency_mode:0
msgid "At Date"
-msgstr ""
+msgstr "На дату"
#. module: account
#: help:account.move.line,tax_amount:0
@@ -5419,7 +5419,7 @@ msgstr ""
#. module: account
#: field:account.subscription,period_total:0
msgid "Number of Periods"
-msgstr ""
+msgstr "Количество периодов"
#. module: account
#: wizard_field:account.analytic.account.analytic.check.report,init,date2:0
@@ -5488,7 +5488,7 @@ msgstr ""
#. module: account
#: field:wizard.multi.charts.accounts,bank_accounts_id:0
msgid "Bank Accounts"
-msgstr ""
+msgstr "Банковские счета"
#. module: account
#: constraint:account.period:0
@@ -5500,7 +5500,7 @@ msgstr ""
#. module: account
#: help:account.journal,invoice_sequence_id:0
msgid "The sequence used for invoice numbers in this journal."
-msgstr ""
+msgstr "Последовательность используемая для нумерации счетов в этом журнале"
#. module: account
#: view:account.account:0
@@ -5549,7 +5549,7 @@ msgstr "Список счетов"
#: view:product.product:0
#: view:product.template:0
msgid "Sales Properties"
-msgstr ""
+msgstr "Свойства продаж"
#. module: account
#: rml:account.general.journal:0
@@ -5565,12 +5565,12 @@ msgstr "Книга расходов (только количество)"
#. module: account
#: wizard_view:account.move.validate,init:0
msgid "Validate Account Entries"
-msgstr ""
+msgstr "Утвердить проводки"
#. module: account
#: selection:account.print.journal.report,init,sort_selection:0
msgid "Reference Number"
-msgstr ""
+msgstr "Ссылка"
#. module: account
#: rml:account.overdue:0
@@ -5586,7 +5586,7 @@ msgstr ""
#. module: account
#: model:ir.actions.act_window,name:account.action_account_analytic_journal_open_form
msgid "Entries of Open Analytic Journals"
-msgstr ""
+msgstr "Проводки открытых журналов аналитики"
#. module: account
#: view:account.invoice.tax:0
@@ -5601,7 +5601,7 @@ msgstr "Текущая дата"
#. module: account
#: selection:account.move,type:0
msgid "Journal Sale"
-msgstr ""
+msgstr "Журнал продаж"
#. module: account
#: wizard_field:account.fiscalyear.close,init,fy_id:0
@@ -5624,12 +5624,12 @@ msgstr "Начало периода"
#. module: account
#: model:ir.ui.menu,name:account.account_template_folder
msgid "Templates"
-msgstr ""
+msgstr "Шаблоны"
#. module: account
#: wizard_button:account.vat.declaration,init,report:0
msgid "Print VAT Decl."
-msgstr ""
+msgstr "Печать декл. НДС"
#. module: account
#: model:ir.actions.report.xml,name:account.account_intracom
@@ -5682,7 +5682,7 @@ msgstr "Шаблоны для плана счетов"
#. module: account
#: view:account.config.wizard:0
msgid "Account Configure"
-msgstr ""
+msgstr "Настройка счета"
#. module: account
#: help:res.partner,property_account_payable:0
diff --git a/addons/account/installer.py b/addons/account/installer.py
index b85ac874874..680f8284295 100644
--- a/addons/account/installer.py
+++ b/addons/account/installer.py
@@ -170,7 +170,6 @@ class account_installer(osv.osv_memory):
'python_compute': tax.python_compute,
'python_compute_inv': tax.python_compute_inv,
'python_applicable': tax.python_applicable,
- 'tax_group':tax.tax_group,
'base_code_id': tax.base_code_id and ((tax.base_code_id.id in tax_code_template_ref) and tax_code_template_ref[tax.base_code_id.id]) or False,
'tax_code_id': tax.tax_code_id and ((tax.tax_code_id.id in tax_code_template_ref) and tax_code_template_ref[tax.tax_code_id.id]) or False,
'base_sign': tax.base_sign,
diff --git a/addons/account/process/customer_invoice_process.xml b/addons/account/process/customer_invoice_process.xml
index 51e8254d20e..b34dca0dbb9 100644
--- a/addons/account/process/customer_invoice_process.xml
+++ b/addons/account/process/customer_invoice_process.xml
@@ -122,7 +122,6 @@
-->
-
@@ -131,7 +130,6 @@
-
@@ -140,7 +138,6 @@
-
@@ -150,7 +147,6 @@
-
@@ -159,7 +155,6 @@
-
@@ -168,7 +163,6 @@
-
@@ -177,7 +171,6 @@
-
@@ -186,7 +179,6 @@
-
diff --git a/addons/account/process/statement_process.xml b/addons/account/process/statement_process.xml
index 704f9f47025..01fd4bc1bfe 100644
--- a/addons/account/process/statement_process.xml
+++ b/addons/account/process/statement_process.xml
@@ -65,7 +65,6 @@
-->
-
@@ -74,7 +73,6 @@
-
@@ -84,7 +82,6 @@
-
diff --git a/addons/account/process/supplier_invoice_process.xml b/addons/account/process/supplier_invoice_process.xml
index e24431c48b4..8635b083d72 100644
--- a/addons/account/process/supplier_invoice_process.xml
+++ b/addons/account/process/supplier_invoice_process.xml
@@ -1,21 +1,21 @@
-
-
-
+
-
-
-
+
@@ -26,7 +26,7 @@
-
+
@@ -37,7 +37,7 @@
-
+
@@ -48,7 +48,7 @@
-
+
@@ -60,7 +60,7 @@
-
+
@@ -70,7 +70,7 @@
-
+
@@ -81,7 +81,7 @@
-
+
@@ -92,7 +92,7 @@
-
+
@@ -103,22 +103,20 @@
-
-
-
+
-
-
+
-
@@ -126,51 +124,46 @@
-
+
-
-
+
-
-
+
-
-
+
-
-
+
-
-
+
diff --git a/addons/account/project/project.py b/addons/account/project/project.py
index 431d486592b..f082672310e 100644
--- a/addons/account/project/project.py
+++ b/addons/account/project/project.py
@@ -28,8 +28,8 @@ from osv import osv
class account_analytic_journal(osv.osv):
_name = 'account.analytic.journal'
_columns = {
- 'name' : fields.char('Journal name', size=64, required=True),
- 'code' : fields.char('Journal code', size=8),
+ 'name' : fields.char('Journal Name', size=64, required=True),
+ 'code' : fields.char('Journal Code', size=8),
'active' : fields.boolean('Active', help="If the active field is set to true, it will allow you to hide the analytic journal without removing it."),
'type': fields.selection([('sale','Sale'), ('purchase','Purchase'), ('cash','Cash'), ('general','General'), ('situation','Situation')], 'Type', size=32, required=True, help="Gives the type of the analytic journal. When it needs for a document (eg: an invoice) to create analytic entries, OpenERP will look for a matching journal of the same type."),
'line_ids' : fields.one2many('account.analytic.line', 'journal_id', 'Lines'),
diff --git a/addons/account/project/project_view.xml b/addons/account/project/project_view.xml
index 0d335118d3b..fd52619fb10 100644
--- a/addons/account/project/project_view.xml
+++ b/addons/account/project/project_view.xml
@@ -172,19 +172,16 @@
tree
-
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -195,22 +192,24 @@
-
-
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
+
+
+
-
+
diff --git a/addons/account/report/account_aged_partner_balance.py b/addons/account/report/account_aged_partner_balance.py
index b9e01e48bbf..21aa455b9c2 100644
--- a/addons/account/report/account_aged_partner_balance.py
+++ b/addons/account/report/account_aged_partner_balance.py
@@ -30,7 +30,6 @@ class aged_trial_report(rml_parse.rml_parse, common_report_header):
def __init__(self, cr, uid, name, context):
super(aged_trial_report, self).__init__(cr, uid, name, context=context)
- self.query_line = ''
self.total_account = []
self.localcontext.update({
'time': time,
@@ -47,7 +46,8 @@ class aged_trial_report(rml_parse.rml_parse, common_report_header):
})
def set_context(self, objects, data, ids, report_type=None):
- self.query = data['form'].get('query_line', '')
+ obj_move = self.pool.get('account.move.line')
+ self.query = obj_move._query_get(self.cr, self.uid, obj='l', context=data['form'].get('used_context', {}))
self.direction_selection = data['form'].get('direction_selection', 'past')
self.target_move = data['form'].get('target_move', 'all')
self.date_from = data['form'].get('date_from', time.strftime('%Y-%m-%d'))
diff --git a/addons/account/report/account_balance_sheet_horizontal.rml b/addons/account/report/account_balance_sheet_horizontal.rml
index a1f7b25d379..5edd2ffe021 100644
--- a/addons/account/report/account_balance_sheet_horizontal.rml
+++ b/addons/account/report/account_balance_sheet_horizontal.rml
@@ -233,7 +233,7 @@
[[ '. '*(a['level']-1) ]][[ a['level']<4 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]][[ a['name'] ]]
- [[ a['level1']<4 and ( setTag('para','para',{'style':'terp_default_Right_9_Bold'})) or removeParentNode('font') ]][[ formatLang(abs(a['balance'])) ]] [[ company.currency_id.symbol ]]
+ [[ a['level1']<4 and ( setTag('para','para',{'style':'terp_default_Right_9_Bold'})) or removeParentNode('font') ]][[(a['code'] and a['name']) and formatLang(abs(a['balance'])) or removeParentNode('font')]] [[ company.currency_id.symbol ]]
diff --git a/addons/account/report/account_central_journal.py b/addons/account/report/account_central_journal.py
index 440460ce1f3..36af31da363 100644
--- a/addons/account/report/account_central_journal.py
+++ b/addons/account/report/account_central_journal.py
@@ -51,12 +51,13 @@ class journal_print(report_sxw.rml_parse, common_report_header):
})
def set_context(self, objects, data, ids, report_type=None):
+ obj_move = self.pool.get('account.move.line')
new_ids = ids
self.query_get_clause = ''
if (data['model'] == 'ir.ui.menu'):
new_ids = 'active_ids' in data['form'] and data['form']['active_ids'] or []
self.query_get_clause = 'AND '
- self.query_get_clause += data['form']['query_line'] or ''
+ self.query_get_clause += obj_move._query_get(self.cr, self.uid, obj='l', context=data['form'].get('used_context', {}))
objects = self.pool.get('account.journal.period').browse(self.cr, self.uid, new_ids)
if new_ids:
self.cr.execute('SELECT period_id, journal_id FROM account_journal_period WHERE id IN %s', (tuple(new_ids),))
diff --git a/addons/account/report/account_entries_report_view.xml b/addons/account/report/account_entries_report_view.xml
index 081328d89fb..45131718db9 100644
--- a/addons/account/report/account_entries_report_view.xml
+++ b/addons/account/report/account_entries_report_view.xml
@@ -48,6 +48,19 @@
+
+ account.company.analysis.tree
+ account.entries.report
+ tree
+
+
+
+
+
+
+
+
+ account.entries.report.searchaccount.entries.report
diff --git a/addons/account/report/account_general_journal.py b/addons/account/report/account_general_journal.py
index 684a75b1f20..e38f32ac217 100644
--- a/addons/account/report/account_general_journal.py
+++ b/addons/account/report/account_general_journal.py
@@ -53,12 +53,13 @@ class journal_print(report_sxw.rml_parse, common_report_header):
})
def set_context(self, objects, data, ids, report_type=None):
+ obj_move = self.pool.get('account.move.line')
new_ids = ids
self.query_get_clause = ''
if (data['model'] == 'ir.ui.menu'):
new_ids = 'active_ids' in data['form'] and data['form']['active_ids'] or []
self.query_get_clause = 'AND '
- self.query_get_clause += data['form']['query_line'] or ''
+ self.query_get_clause += obj_move._query_get(self.cr, self.uid, obj='l', context=data['form'].get('used_context', {}))
objects = self.pool.get('account.journal.period').browse(self.cr, self.uid, new_ids)
if new_ids:
self.cr.execute('SELECT period_id, journal_id FROM account_journal_period WHERE id IN %s', (tuple(new_ids),))
diff --git a/addons/account/report/account_general_ledger.py b/addons/account/report/account_general_ledger.py
index d8ab573b083..80a7ff44f0e 100644
--- a/addons/account/report/account_general_ledger.py
+++ b/addons/account/report/account_general_ledger.py
@@ -38,9 +38,12 @@ class general_ledger(rml_parse.rml_parse, common_report_header):
def set_context(self, objects, data, ids, report_type=None):
new_ids = ids
+ obj_move = self.pool.get('account.move.line')
self.sortby = data['form'].get('sortby', 'sort_date')
- self.query = data['form'].get('query_line', '')
- self.init_query = data['form']['initial_bal_query']
+ self.query = obj_move._query_get(self.cr, self.uid, obj='l', context=data['form'].get('used_context',{}))
+ ctx2 = data['form'].get('used_context',{}).copy()
+ ctx2.update({'initial_bal': True})
+ self.init_query = obj_move._query_get(self.cr, self.uid, obj='l', context=ctx2)
self.init_balance = data['form']['initial_balance']
self.display_account = data['form']['display_account']
self.target_move = data['form'].get('target_move', 'all')
@@ -97,7 +100,7 @@ class general_ledger(rml_parse.rml_parse, common_report_header):
FROM account_move_line l \
WHERE l.account_id = %s AND %s '%(account.id, self.init_query))
sum_currency += self.cr.fetchone()[0] or 0.0
- return str(sum_currency)
+ return sum_currency
def get_children_accounts(self, account):
res = []
diff --git a/addons/account/report/account_general_ledger_landscape.rml b/addons/account/report/account_general_ledger_landscape.rml
index 163d5cb5f2c..1321bdea750 100644
--- a/addons/account/report/account_general_ledger_landscape.rml
+++ b/addons/account/report/account_general_ledger_landscape.rml
@@ -266,10 +266,10 @@
- [[ a['level']<4 and ( setTag('para','para',{'style':'terp_default_Right_9_Bold'})) or removeParentNode('font') ]][[ formatLang(abs(a['balance1'])) ]] [[ company.currency_id.symbol ]]
+ [[ a['level']<4 and ( setTag('para','para',{'style':'terp_default_Right_9_Bold'})) or removeParentNode('font') ]][[(a['code1'] and a['name1']) and formatLang(abs(a['balance1'])) or removeParentNode('font') ]] [[ company.currency_id.symbol ]]
- [[ (t.tax_code_id and t.tax_code_id.notprintable) and removeParentNode('blockTable') or '' ]] [[ formatLang(t.amount) ]]
+ [[ (t.tax_code_id and t.tax_code_id.notprintable) and removeParentNode('blockTable') or '' ]] [[ formatLang(t.amount, digits=get_digits(dp='Account')) ]]
- [[ (t.tax_code_id and t.tax_code_id.notprintable) and removeParentNode('blockTable') or '' ]] [[ formatLang(t.amount) ]]
+ [[ (t.tax_code_id and t.tax_code_id.notprintable) and removeParentNode('blockTable') or '' ]] [[ formatLang(t.amount, digits=get_digits(dp='Account')) ]]
@@ -500,4 +500,4 @@
-
\ No newline at end of file
+
diff --git a/addons/account_payment/account_payment_demo.xml b/addons/account_payment/account_payment_demo.xml
index 37705a05b07..65a8d341da4 100644
--- a/addons/account_payment/account_payment_demo.xml
+++ b/addons/account_payment/account_payment_demo.xml
@@ -6,6 +6,7 @@
00987654321bank
+ Direct Payment
diff --git a/addons/account_payment/i18n/pt_BR.po b/addons/account_payment/i18n/pt_BR.po
index a50bc4d2c7b..962d7fe7946 100644
--- a/addons/account_payment/i18n/pt_BR.po
+++ b/addons/account_payment/i18n/pt_BR.po
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2010-08-02 22:08+0000\n"
+"PO-Revision-Date: 2010-10-04 16:08+0000\n"
"Last-Translator: Pedro_Maschio \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: 2010-09-29 05:07+0000\n"
+"X-Launchpad-Export-Date: 2010-10-05 04:57+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_payment
diff --git a/addons/account_payment/test/account_payment.yml b/addons/account_payment/test/account_payment.yml
index e65b3ba0b89..3d863686847 100644
--- a/addons/account_payment/test/account_payment.yml
+++ b/addons/account_payment/test/account_payment.yml
@@ -9,6 +9,7 @@
partner_id: base.res_partner_9
sequence: 0.0
state: bank
+ bank: base.res_bank_1
-
I created a new Payment Mode
diff --git a/addons/account_payment/wizard/account_payment_populate_statement.py b/addons/account_payment/wizard/account_payment_populate_statement.py
index 0e7ea32e8d3..7ebb9d933de 100644
--- a/addons/account_payment/wizard/account_payment_populate_statement.py
+++ b/addons/account_payment/wizard/account_payment_populate_statement.py
@@ -91,7 +91,8 @@ class account_payment_populate_statement(osv.osv_memory):
'period_id': statement.period_id.id
}
voucher_id = voucher_obj.create(cr, uid, voucher_res, context=context)
- result = voucher_obj.onchange_partner_id(cr, uid, [], partner_id=line.partner_id.id, journal_id=statement.journal_id.id, price=abs(amount), currency_id= statement.currency.id, ttype='payment')
+ context.update({'move_line_ids': [line.move_line_id.id]})
+ result = voucher_obj.onchange_partner_id(cr, uid, [], partner_id=line.partner_id.id, journal_id=statement.journal_id.id, price=abs(amount), currency_id= statement.currency.id, ttype='payment', context=context)
voucher_line_dict = False
if result['value']['line_ids']:
for line_dict in result['value']['line_ids']:
@@ -113,7 +114,7 @@ class account_payment_populate_statement(osv.osv_memory):
'voucher_id': voucher_id,
}, context=context)
- line_obj.write(cr, uid, [line.id], {'bank_statement_line_id': st_line_id})
+ line_obj.write(cr, uid, [line.id], {'bank_statement_line_id': st_line_id})
return {'type': 'ir.actions.act_window_close'}
account_payment_populate_statement()
diff --git a/addons/account_report/board_account_report_view.xml b/addons/account_report/board_account_report_view.xml
index 0467db65cf1..633f4274f44 100644
--- a/addons/account_report/board_account_report_view.xml
+++ b/addons/account_report/board_account_report_view.xml
@@ -1,16 +1,16 @@
-
+
diff --git a/addons/account_voucher/__init__.py b/addons/account_voucher/__init__.py
index 27aee55f2d7..41f33976c53 100644
--- a/addons/account_voucher/__init__.py
+++ b/addons/account_voucher/__init__.py
@@ -19,7 +19,7 @@
#
##############################################################################
-import voucher
+import account_voucher
import report
import wizard
diff --git a/addons/account_voucher/__openerp__.py b/addons/account_voucher/__openerp__.py
index 3a846791c23..59495eddc5f 100644
--- a/addons/account_voucher/__openerp__.py
+++ b/addons/account_voucher/__openerp__.py
@@ -38,22 +38,22 @@
"update_xml" : [
"security/ir.model.access.csv",
- "voucher_sequence.xml",
- "voucher_workflow.xml",
- "voucher_report.xml",
+ "account_voucher_sequence.xml",
+ "account_voucher_workflow.xml",
+ "account_voucher_report.xml",
"wizard/account_voucher_unreconcile_view.xml",
"wizard/account_statement_from_invoice_view.xml",
- "voucher_view.xml",
+ "account_voucher_view.xml",
"voucher_payment_receipt_view.xml",
"voucher_sales_purchase_view.xml",
- "voucher_wizard.xml",
+ "account_voucher_wizard.xml",
"security/account_voucher_security.xml"
],
"test" : [
# "test/account_voucher.yml",
"test/sales_receipt.yml",
"test/sales_payment.yml",
- "test/account_voucher_report.yml"
+ "test/account_voucher_report.yml"
],
'certificate': '0037580727101',
"active": False,
diff --git a/addons/account_voucher/voucher.py b/addons/account_voucher/account_voucher.py
similarity index 94%
rename from addons/account_voucher/voucher.py
rename to addons/account_voucher/account_voucher.py
index f0a4db96910..2ea6e4b39ab 100644
--- a/addons/account_voucher/voucher.py
+++ b/addons/account_voucher/account_voucher.py
@@ -48,7 +48,7 @@ account_move_line()
class account_voucher(osv.osv):
def _get_type(self, cr, uid, ids, context={}):
return context.get('type', False)
-
+
def _get_period(self, cr, uid, context={}):
if context.get('period_id', False):
return context.get('period_id')
@@ -61,7 +61,7 @@ class account_voucher(osv.osv):
return context.get('journal_id')
if not context.get('journal_id', False) and context.get('search_default_journal_id', False):
return context.get('search_default_journal_id')
-
+
ttype = context.get('type', 'bank')
if ttype in ('payment', 'receipt'):
ttype = 'bank'
@@ -77,7 +77,7 @@ class account_voucher(osv.osv):
if not res:
return False
journal_id = res[0]
-
+
if not journal_id:
return False
journal = journal_pool.browse(cr, uid, journal_id)
@@ -109,7 +109,7 @@ class account_voucher(osv.osv):
def name_get(self, cr, uid, ids, context=None):
if not len(ids):
return []
- return [(r['id'], (str(r['amount']) or '')) for r in self.read(cr, uid, ids, ['amount'], context, load='_classic_write')]
+ return [(r['id'], (str("%.2f" % r['amount']) or '')) for r in self.read(cr, uid, ids, ['amount'], context, load='_classic_write')]
def fields_view_get(self, cr, uid, view_id=None, view_type=False, context=None, toolbar=False, submenu=False):
res = super(account_voucher,self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar, submenu=submenu)
@@ -187,33 +187,33 @@ class account_voucher(osv.osv):
'company_id': lambda self,cr,uid,c: self.pool.get('res.company')._company_default_get(cr, uid, 'account.voucher',context=c),
'tax_id': _get_tax,
}
-
+
def compute_tax(self, cr, uid, ids, context={}):
tax_pool = self.pool.get('account.tax')
partner_pool = self.pool.get('res.partner')
position_pool = self.pool.get('account.fiscal.position')
voucher_line_pool = self.pool.get('account.voucher.line')
voucher_pool = self.pool.get('account.voucher')
-
+
for voucher in voucher_pool.browse(cr, uid, ids, context):
voucher_amount = 0.0
for line in voucher.line_ids:
voucher_amount += line.untax_amount or line.amount
line.amount = line.untax_amount or line.amount
voucher_line_pool.write(cr, uid, [line.id], {'amount':line.amount, 'untax_amount':line.untax_amount})
-
+
if not voucher.tax_id:
self.write(cr, uid, [voucher.id], {'amount':voucher_amount, 'tax_amount':0.0})
continue
-
+
tax = [tax_pool.browse(cr, uid, voucher.tax_id.id)]
partner = partner_pool.browse(cr, uid, voucher.partner_id.id) or False
taxes = position_pool.map_tax(cr, uid, partner and partner.property_account_position or False, tax)
tax = tax_pool.browse(cr, uid, taxes)
-
+
total = voucher_amount
total_tax = 0.0
-
+
if not tax[0].price_include:
for tax_line in tax_pool.compute_all(cr, uid, tax, voucher_amount, 1).get('taxes',[]):
total_tax += tax_line.get('amount')
@@ -223,17 +223,17 @@ class account_voucher(osv.osv):
for line in voucher.line_ids:
line_total = 0.0
line_tax = 0.0
-
+
for tax_line in tax_pool.compute_all(cr, uid, tax, line.untax_amount or line.amount, 1).get('taxes',[]):
line_tax += tax_line.get('amount')
line_total += tax_line.get('price_unit')
total_tax += line_tax
untax_amount = line.untax_amount or line.amount
voucher_line_pool.write(cr, uid, [line.id], {'amount':line_total, 'untax_amount':untax_amount})
-
+
self.write(cr, uid, [voucher.id], {'amount':total, 'tax_amount':total_tax})
return True
-
+
def onchange_price(self, cr, uid, ids, line_ids, tax_id, partner_id=False, context={}):
tax_pool = self.pool.get('account.tax')
partner_pool = self.pool.get('res.partner')
@@ -246,16 +246,16 @@ class account_voucher(osv.osv):
voucher_total_tax = 0.0
voucher_total = 0.0
voucher_line_ids = []
-
+
total = 0.0
total_tax = 0.0
-
+
for line in line_ids:
line_amount = 0.0
line_amount = line[2].get('amount')
voucher_line_ids += [line[1]]
voucher_total += line_amount
-
+
total = voucher_total
total_tax = 0.0
if tax_id:
@@ -264,12 +264,12 @@ class account_voucher(osv.osv):
partner = partner_pool.browse(cr, uid, partner_id) or False
taxes = position_pool.map_tax(cr, uid, partner and partner.property_account_position or False, tax)
tax = tax_pool.browse(cr, uid, taxes)
-
+
if not tax[0].price_include:
for tax_line in tax_pool.compute_all(cr, uid, tax, voucher_total, 1).get('taxes',[]):
total_tax += tax_line.get('amount')
total += total_tax
-
+
res.update({
'amount':total or voucher_total,
'tax_amount':total_tax
@@ -277,7 +277,7 @@ class account_voucher(osv.osv):
return {
'value':res
}
-
+
def onchange_term_id(self, cr, uid, ids, term_id, amount):
term_pool = self.pool.get('account.payment.term')
terms = False
@@ -291,24 +291,24 @@ class account_voucher(osv.osv):
'date_due':due_date
})
return {'value':default}
-
+
def onchange_journal_voucher(self, cr, uid, ids, line_ids=False, tax_id=False, price=0.0, partner_id=False, journal_id=False, ttype=False, context={}):
"""price
Returns a dict that contains new values and context
-
+
@param partner_id: latest value from user input for field partner_id
@param args: other arguments
@param context: context arguments, like lang, time zone
-
+
@return: Returns a dict which contains new values, and context
"""
default = {
'value':{},
}
-
+
if not partner_id or not journal_id:
return default
-
+
partner_pool = self.pool.get('res.partner')
journal_pool = self.pool.get('account.journal')
@@ -328,32 +328,35 @@ class account_voucher(osv.osv):
default['value']['account_id'] = account_id
default['value']['type'] = ttype or tr_type
-
+
vals = self.onchange_journal(cr, uid, ids, journal_id, line_ids, tax_id, partner_id, context)
default['value'].update(vals.get('value'))
-
+
return default
-
- def onchange_partner_id(self, cr, uid, ids, partner_id, journal_id, price, currency_id, ttype, context={}):
+
+ def onchange_partner_id(self, cr, uid, ids, partner_id, journal_id, price, currency_id, ttype, context=None):
"""price
Returns a dict that contains new values and context
-
+
@param partner_id: latest value from user input for field partner_id
@param args: other arguments
@param context: context arguments, like lang, time zone
-
+
@return: Returns a dict which contains new values, and context
"""
if not journal_id:
return {}
-
+
+ if context is None:
+ context = {}
+
currency_pool = self.pool.get('res.currency')
move_pool = self.pool.get('account.move')
line_pool = self.pool.get('account.voucher.line')
move_line_pool = self.pool.get('account.move.line')
partner_pool = self.pool.get('res.partner')
journal_pool = self.pool.get('account.journal')
-
+
vals = self.onchange_journal(cr, uid, ids, journal_id, [], False, partner_id, context)
vals = vals.get('value')
currency_id = vals.get('currency_id', currency_id)
@@ -383,7 +386,7 @@ class account_voucher(osv.osv):
default['value']['account_id'] = account_id
if journal.type not in ('cash', 'bank'):
return default
-
+
total_credit = 0.0
total_debit = 0.0
account_type = 'receivable'
@@ -393,21 +396,25 @@ class account_voucher(osv.osv):
else:
total_credit = price or 0.0
account_type = 'receivable'
- ids = move_line_pool.search(cr, uid, [('account_id.type','=', account_type), ('reconcile_id','=', False), ('partner_id','=',partner_id)], context=context)
+
+ if not context.get('move_line_ids', False):
+ ids = move_line_pool.search(cr, uid, [('account_id.type','=', account_type), ('reconcile_id','=', False), ('partner_id','=',partner_id)], context=context)
+ else:
+ ids = context['move_line_ids']
ids.reverse()
moves = move_line_pool.browse(cr, uid, ids)
-
+
company_currency = journal.company_id.currency_id.id
if company_currency != currency_id and ttype == 'payment':
total_debit = currency_pool.compute(cr, uid, currency_id, company_currency, total_debit)
elif company_currency != currency_id and ttype == 'receipt':
total_credit = currency_pool.compute(cr, uid, currency_id, company_currency, total_credit)
-
+
for line in moves:
if line.credit and line.reconcile_partial_id and ttype == 'receipt':
continue
if line.debit and line.reconcile_partial_id and ttype == 'payment':
- continue
+ continue
total_credit += line.credit or 0.0
total_debit += line.debit or 0.0
@@ -416,7 +423,7 @@ class account_voucher(osv.osv):
continue
if line.debit and line.reconcile_partial_id and ttype == 'payment':
continue
-
+
orignal_amount = line.credit or line.debit or 0.0
rs = {
'name':line.move_id.name,
@@ -442,11 +449,11 @@ class account_voucher(osv.osv):
default['value']['line_cr_ids'].append(rs)
else:
default['value']['line_dr_ids'].append(rs)
-
+
if ttype == 'payment' and len(default['value']['line_cr_ids']) > 0:
default['value']['pre_line'] = 1
elif ttype == 'receipt' and len(default['value']['line_dr_ids']) > 0:
- default['value']['pre_line'] = 1
+ default['value']['pre_line'] = 1
return default
def onchange_date(self, cr, user, ids, date, context={}):
@@ -475,7 +482,7 @@ class account_voucher(osv.osv):
tax_id = False
if account_id and account_id.tax_ids:
tax_id = account_id.tax_ids[0].id
-
+
vals = self.onchange_price(cr, uid, ids, line_ids, tax_id, partner_id, context)
vals['value'].update({'tax_id':tax_id})
currency_id = journal.company_id.currency_id.id
@@ -499,7 +506,7 @@ class account_voucher(osv.osv):
reconcile_pool = self.pool.get('account.move.reconcile')
move_pool = self.pool.get('account.move')
voucher_line_pool = self.pool.get('account.voucher.line')
-
+
for voucher in self.browse(cr, uid, ids):
recs = []
for line in voucher.move_ids:
@@ -509,7 +516,7 @@ class account_voucher(osv.osv):
recs += [line.reconcile_partial_id.id]
reconcile_pool.unlink(cr, uid, recs)
-
+
if voucher.move_id:
move_pool.button_cancel(cr, uid, [voucher.move_id.id])
move_pool.unlink(cr, uid, [voucher.move_id.id])
@@ -547,7 +554,7 @@ class account_voucher(osv.osv):
return {'value':res}
def action_move_line_create(self, cr, uid, ids, context=None):
-
+
def _get_payment_term_lines(term_id, amount):
term_pool = self.pool.get('account.payment.term')
if term_id and amount:
@@ -561,10 +568,11 @@ class account_voucher(osv.osv):
analytic_pool = self.pool.get('account.analytic.line')
currency_pool = self.pool.get('res.currency')
invoice_pool = self.pool.get('account.invoice')
+ bank_st_line_obj = self.pool.get('account.bank.statement.line')
for inv in self.browse(cr, uid, ids):
if inv.move_id:
continue
- if inv.number:
+ if inv.number:
name = inv.number
elif inv.journal_id.sequence_id:
name = self.pool.get('ir.sequence').get_id(cr, uid, inv.journal_id.sequence_id.id)
@@ -580,12 +588,17 @@ class account_voucher(osv.osv):
'period_id': inv.period_id and inv.period_id.id or False
}
move_id = move_pool.create(cr, uid, move)
-
+ line_bank_ids = bank_st_line_obj.search(cr, uid, [('voucher_id', '=', inv.id)], context=context)
+ if line_bank_ids:
+ bank_st_line_obj.write(cr, uid, line_bank_ids, {
+ 'move_ids': [(4, move_id, False)]
+ })
+
#create the first line manually
company_currency = inv.journal_id.company_id.currency_id.id
debit = 0.0
credit = 0.0
- # TODO: is there any other alternative then the voucher type ??
+ # TODO: is there any other alternative then the voucher type ??
# -for sale, purchase we have but for the payment and receipt we do not have as based on the bank/cash journal we can not know its payment or receipt
if inv.type in ('purchase', 'payment'):
credit = currency_pool.compute(cr, uid, inv.currency_id.id, company_currency, inv.amount)
@@ -597,7 +610,7 @@ class account_voucher(osv.osv):
if credit < 0:
debit = -credit
credit = 0.0
-
+
move_line = {
'name':inv.name or '/',
'debit':debit,
@@ -627,7 +640,7 @@ class account_voucher(osv.osv):
if not line.amount:
continue
amount = currency_pool.compute(cr, uid, inv.currency_id.id, company_currency, line.amount)
-
+
move_line = {
'journal_id':inv.journal_id.id,
'period_id':inv.period_id.id,
@@ -649,7 +662,7 @@ class account_voucher(osv.osv):
line.type = 'cr'
else:
line.type = 'dr'
-
+
if (line.type=='dr'):
line_total += amount
move_line['debit'] = amount
@@ -716,7 +729,7 @@ class account_voucher_line(osv.osv):
_name = 'account.voucher.line'
_description = 'Voucher Lines'
_order = "move_line_id"
-
+
def _compute_balance(self, cr, uid, ids, name, args, context=None):
currency_pool = self.pool.get('res.currency')
rs_data = {}
@@ -725,16 +738,16 @@ class account_voucher_line(osv.osv):
company_currency = line.voucher_id.journal_id.company_id.currency_id.id
voucher_currency = line.voucher_id.currency_id.id
move_line = line.move_line_id or False
-
+
if not move_line:
res['amount_original'] = 0.0
res['amount_unreconciled'] = 0.0
-
+
elif move_line and move_line.credit > 0:
res['amount_original'] = currency_pool.compute(cr, uid, company_currency, voucher_currency, move_line.credit)
else:
res['amount_original'] = currency_pool.compute(cr, uid, company_currency, voucher_currency, move_line.debit)
-
+
if move_line:
res['amount_unreconciled'] = currency_pool.compute(cr, uid, company_currency, voucher_currency, move_line.amount_unreconciled)
rs_data[line.id] = res
@@ -767,7 +780,7 @@ class account_voucher_line(osv.osv):
@param move_line_id: latest value from user input for field move_line_id
@param args: other arguments
@param context: context arguments, like lang, time zone
-
+
@return: Returns a dict which contains new values, and context
"""
res = {}
@@ -793,9 +806,9 @@ class account_voucher_line(osv.osv):
def default_get(self, cr, user, fields_list, context=None):
"""
Returns default values for fields
- @param fields_list: list of fields, for which default values are required to be read
+ @param fields_list: list of fields, for which default values are required to be read
@param context: context arguments, like lang, time zone
-
+
@return: Returns a dict that contains default values for fields
"""
journal_id = context.get('journal_id', False)
@@ -834,14 +847,26 @@ account_voucher_line()
class account_bank_statement(osv.osv):
_inherit = 'account.bank.statement'
+ def button_cancel(self, cr, uid, ids, context=None):
+ done = []
+ for st in self.browse(cr, uid, ids, context):
+ voucher_ids = []
+ for line in st.line_ids:
+ if line.voucher_id:
+ voucher_ids.append(line.voucher_id.id)
+ self.pool.get('account.voucher').cancel_voucher(cr, uid, voucher_ids, context)
+ self.pool.get('account.voucher').unlink(cr, uid, voucher_ids, context)
+ return super(account_bank_statement, self).button_cancel(cr, uid, ids, context=context)
+
def create_move_from_st_line(self, cr, uid, st_line_id, company_currency_id, next_number, context=None):
+ voucher_obj = self.pool.get('account.voucher')
+ wf_service = netsvc.LocalService("workflow")
st_line = self.pool.get('account.bank.statement.line').browse(cr, uid, st_line_id, context=context)
if st_line.voucher_id:
- self.pool.get('account.voucher').write(cr, uid, [st_line.voucher_id.id], {'number': next_number}, context=context)
- wf_service = netsvc.LocalService("workflow")
+ voucher_obj.write(cr, uid, [st_line.voucher_id.id], {'number': next_number}, context=context)
wf_service.trg_validate(uid, 'account.voucher', st_line.voucher_id.id, 'proforma_voucher', cr)
- return self.pool.get('account.move.line').write(cr, uid, [x.id for x in st_line.voucher_id.move_ids], {'statement_id': st_line.statement_id.id}, context=context)
- return super(account_bank_statement, self).create_move_from_st_line(cr, uid, st_line, company_currency_id, next_number, context=context)
+ return self.pool.get('account.move.line').write(cr, uid, [x.id for x in st_line.voucher_id.move_ids], {'statement_id': st_line.statement_id.id}, context=context)
+ return super(account_bank_statement, self).create_move_from_st_line(cr, uid, st_line.id, company_currency_id, next_number, context=context)
account_bank_statement()
@@ -851,17 +876,18 @@ class account_bank_statement_line(osv.osv):
def _amount_reconciled(self, cursor, user, ids, name, args, context=None):
if not ids:
return {}
+
res_currency_obj = self.pool.get('res.currency')
res = {}
company_currency_id = False
-
for line in self.browse(cursor, user, ids, context=context):
- if not company_currency_id:
- company_currency_id = line.company_id.id
+# if not company_currency_id:
+# company_currency_id = line.company_id.id
if line.voucher_id:
- res[line.id] = res_currency_obj.compute(cursor, user,
- company_currency_id, line.statement_id.currency.id,
- line.voucher_id.amount, context=context)
+ res[line.id] = line.voucher_id.amount#
+# res_currency_obj.compute(cursor, user,
+# company_currency_id, line.statement_id.currency.id,
+# line.voucher_id.amount, context=context)
else:
res[line.id] = 0.0
return res
@@ -877,7 +903,8 @@ class account_bank_statement_line(osv.osv):
statement_line = self.browse(cr, uid, ids, context)
unlink_ids = []
for st_line in statement_line:
- unlink_ids.append(st_line.voucher_id.id)
+ if st_line.voucher_id:
+ unlink_ids.append(st_line.voucher_id.id)
self.pool.get('account.voucher').unlink(cr, uid, unlink_ids, context=context)
return super(account_bank_statement_line, self).unlink(cr, uid, ids, context=context)
diff --git a/addons/account_voucher/voucher_report.xml b/addons/account_voucher/account_voucher_report.xml
similarity index 80%
rename from addons/account_voucher/voucher_report.xml
rename to addons/account_voucher/account_voucher_report.xml
index 04bcb5254ba..db1b4279620 100644
--- a/addons/account_voucher/voucher_report.xml
+++ b/addons/account_voucher/account_voucher_report.xml
@@ -5,17 +5,17 @@
string="Voucher"
model="account.voucher"
name="voucher.cash_receipt.drcr"
- rml="account_voucher/report/report_voucher.rml"
+ rml="account_voucher/report/account_voucher.rml"
groups="base.group_extended"
auto="False"
header = "False"
menu="True"/>
-
+
diff --git a/addons/account_voucher/voucher_sequence.xml b/addons/account_voucher/account_voucher_sequence.xml
similarity index 100%
rename from addons/account_voucher/voucher_sequence.xml
rename to addons/account_voucher/account_voucher_sequence.xml
diff --git a/addons/account_voucher/voucher_view.xml b/addons/account_voucher/account_voucher_view.xml
similarity index 92%
rename from addons/account_voucher/voucher_view.xml
rename to addons/account_voucher/account_voucher_view.xml
index 972850e0114..d066c91ad0e 100644
--- a/addons/account_voucher/voucher_view.xml
+++ b/addons/account_voucher/account_voucher_view.xml
@@ -193,9 +193,8 @@
-
-
- account.bank.statement.voucher.form.inherit
+
+ account.bank.statement.voucher.tree.inheritaccount.bank.statementform
@@ -207,5 +206,19 @@
+
+ account.bank.statement.voucher.form.inherit
+ account.bank.statement
+ form
+
+
+
+
+
+
+
+
+
+
diff --git a/addons/account_voucher/voucher_wizard.xml b/addons/account_voucher/account_voucher_wizard.xml
similarity index 100%
rename from addons/account_voucher/voucher_wizard.xml
rename to addons/account_voucher/account_voucher_wizard.xml
diff --git a/addons/account_voucher/voucher_workflow.xml b/addons/account_voucher/account_voucher_workflow.xml
similarity index 100%
rename from addons/account_voucher/voucher_workflow.xml
rename to addons/account_voucher/account_voucher_workflow.xml
diff --git a/addons/account_voucher/report/__init__.py b/addons/account_voucher/report/__init__.py
index eb69b63d856..b451c21b6a0 100644
--- a/addons/account_voucher/report/__init__.py
+++ b/addons/account_voucher/report/__init__.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
##############################################################################
-#
+#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL ().
#
@@ -15,9 +15,9 @@
# 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 .
+# along with this program. If not, see .
#
##############################################################################
-import report_voucher
-import report_voucher_print
+import account_voucher
+import account_voucher_print
diff --git a/addons/account_voucher/report/report_voucher.py b/addons/account_voucher/report/account_voucher.py
similarity index 97%
rename from addons/account_voucher/report/report_voucher.py
rename to addons/account_voucher/report/account_voucher.py
index d83c319d1ba..7655f294bf9 100644
--- a/addons/account_voucher/report/report_voucher.py
+++ b/addons/account_voucher/report/account_voucher.py
@@ -67,6 +67,6 @@ class report_voucher(report_sxw.rml_parse):
report_sxw.report_sxw(
'report.voucher.cash_receipt.drcr',
'account.voucher',
- 'addons/account_voucher/report/report_voucher.rml',
+ 'addons/account_voucher/report/account_voucher.rml',
parser=report_voucher,header="external"
)
diff --git a/addons/account_voucher/report/report_voucher.rml b/addons/account_voucher/report/account_voucher.rml
similarity index 100%
rename from addons/account_voucher/report/report_voucher.rml
rename to addons/account_voucher/report/account_voucher.rml
diff --git a/addons/account_voucher/report/report_voucher_print.py b/addons/account_voucher/report/account_voucher_print.py
similarity index 97%
rename from addons/account_voucher/report/report_voucher_print.py
rename to addons/account_voucher/report/account_voucher_print.py
index 6f405bbe975..0da644c6e4f 100644
--- a/addons/account_voucher/report/report_voucher_print.py
+++ b/addons/account_voucher/report/account_voucher_print.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
##############################################################################
-#
+#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL ().
#
@@ -15,7 +15,7 @@
# 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 .
+# along with this program. If not, see .
#
##############################################################################
@@ -37,7 +37,7 @@ class report_voucher_print(report_sxw.rml_parse):
def convert(self, amount, cur):
amt_en = amount_to_text_en.amount_to_text(amount, 'en', cur);
return amt_en
-
+
def get_lines(self,voucher):
result = []
if voucher.type in ('payment','receipt'):
@@ -67,13 +67,13 @@ class report_voucher_print(report_sxw.rml_parse):
res['amount'] = amount
result.append(res)
return result
-
+
def get_title(self, type):
title = ''
if type:
title = type[0].swapcase() + type[1:] + " Voucher"
return title
-
+
def get_on_account(self, voucher):
name = ""
if voucher.type == 'receipt':
@@ -85,10 +85,10 @@ class report_voucher_print(report_sxw.rml_parse):
elif voucher.type == 'purchase':
name = "Purchase from "+str(voucher.partner_id.name)
return name
-
+
report_sxw.report_sxw(
'report.voucher.print',
'account.voucher',
- 'addons/account_voucher/report/report_voucher_print.rml',
+ 'addons/account_voucher/report/account_voucher_print.rml',
parser=report_voucher_print,header="external"
)
diff --git a/addons/account_voucher/report/report_voucher_print.rml b/addons/account_voucher/report/account_voucher_print.rml
similarity index 100%
rename from addons/account_voucher/report/report_voucher_print.rml
rename to addons/account_voucher/report/account_voucher_print.rml
diff --git a/addons/account_voucher/test/sales_receipt.yml b/addons/account_voucher/test/sales_receipt.yml
index af10d614730..628d1795bc8 100644
--- a/addons/account_voucher/test/sales_receipt.yml
+++ b/addons/account_voucher/test/sales_receipt.yml
@@ -42,11 +42,7 @@
if l.reconcile_id:
reconciled = True
break
- if not reconciled:
- print "Info: Voucher is not paid"
- else:
- print "Info: Voucher is paid"
-
+ assert (not reconciled), "Found reconciled move lines, should not be"
-
I create and post a voucher payment of amount 30000.0 for the partner Seagate
-
@@ -74,8 +70,6 @@
assert (voucher_id.state=='draft'), "Voucher is not in draft state"
wf_service = netsvc.LocalService("workflow")
wf_service.trg_validate(uid, 'account.voucher', voucher_id.id, 'proforma_voucher', cr)
-
-
-
I check that move lines are reconciled meaning voucher is paid
-
@@ -85,7 +79,4 @@
if l.reconcile_id:
reconciled = True
break
- if not reconciled:
- print "Info: Voucher is not paid"
- else:
- print "Info: Voucher is paid"
\ No newline at end of file
+ assert reconciled, "Found unreconciled move lines/unpaid voucher"
diff --git a/addons/account_voucher/wizard/account_statement_from_invoice.py b/addons/account_voucher/wizard/account_statement_from_invoice.py
index eb88ae5222c..926647afae1 100644
--- a/addons/account_voucher/wizard/account_statement_from_invoice.py
+++ b/addons/account_voucher/wizard/account_statement_from_invoice.py
@@ -71,9 +71,9 @@ class account_statement_from_invoice_lines(osv.osv_memory):
elif (line.invoice and line.invoice.currency_id.id <> statement.currency.id):
amount = currency_obj.compute(cr, uid, line.invoice.currency_id.id,
statement.currency.id, amount, context=ctx)
-
+
voucher_res = { 'type':(amount < 0 and 'payment' or 'receipt') ,
- 'name': line.name,
+ 'name': line.name,
'partner_id': line.partner_id.id,
'journal_id': statement.journal_id.id,
'account_id': line.account_id.id,
@@ -83,7 +83,8 @@ class account_statement_from_invoice_lines(osv.osv_memory):
'amount':abs(amount),
'period_id':statement.period_id.id}
voucher_id = voucher_obj.create(cr, uid, voucher_res, context=context)
- result = voucher_obj.onchange_partner_id(cr, uid, [], partner_id=line.partner_id.id, journal_id=statement.journal_id.id, price=abs(amount), currency_id= statement.currency.id, ttype=(amount < 0 and 'payment' or 'receipt'))
+ context.update({'move_line_ids': [line.id]})
+ result = voucher_obj.onchange_partner_id(cr, uid, [], partner_id=line.partner_id.id, journal_id=statement.journal_id.id, price=abs(amount), currency_id= statement.currency.id, ttype=(amount < 0 and 'payment' or 'receipt'), context=context)
voucher_line_dict = False
if result['value']['line_ids']:
for line_dict in result['value']['line_ids']:
diff --git a/addons/analytic/analytic.py b/addons/analytic/analytic.py
index cf96028f01c..66c74a72bc9 100644
--- a/addons/analytic/analytic.py
+++ b/addons/analytic/analytic.py
@@ -25,6 +25,7 @@ import operator
from osv import fields, osv
import decimal_precision as dp
+
class account_analytic_account(osv.osv):
_name = 'account.analytic.account'
_description = 'Analytic Account'
@@ -272,7 +273,7 @@ class account_analytic_line(osv.osv):
_columns = {
'name' : fields.char('Description', size=256, required=True),
'date' : fields.date('Date', required=True, select=1),
- 'amount' : fields.float('Amount', required=True, help='Calculated by multiplying the quantity and the price given in the Product\'s cost price. Always expressed in the company main currency.'),
+ 'amount' : fields.float('Amount', required=True, help='Calculated by multiplying the quantity and the price given in the Product\'s cost price. Always expressed in the company main currency.', digits_compute=dp.get_precision('Account')),
'unit_amount' : fields.float('Quantity', help='Specifies the amount of quantity to count.'),
'account_id' : fields.many2one('account.analytic.account', 'Analytic Account', required=True, ondelete='cascade', select=True),
'user_id' : fields.many2one('res.users', 'User'),
diff --git a/addons/analytic/i18n/nl.po b/addons/analytic/i18n/nl.po
index b977c30283b..fbb8b85789d 100644
--- a/addons/analytic/i18n/nl.po
+++ b/addons/analytic/i18n/nl.po
@@ -8,19 +8,19 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2010-06-18 10:59+0000\n"
-"PO-Revision-Date: 2010-09-24 14:42+0000\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2010-10-01 11:59+0000\n"
+"Last-Translator: OpenERP Administrators \n"
"Language-Team: Dutch \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-09-29 05:17+0000\n"
+"X-Launchpad-Export-Date: 2010-10-02 05:05+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: analytic
#: field:account.analytic.account,child_ids:0
msgid "Child Accounts"
-msgstr ""
+msgstr "Subrekeningen"
#. module: analytic
#: help:account.analytic.line,amount_currency:0
@@ -28,27 +28,31 @@ msgid ""
"The amount expressed in the related account currency if not equal to the "
"company one."
msgstr ""
+"Het bedrag in de valuta van de gekoppelde rekening als deze afwijkt van die "
+"van het bedrijf"
#. module: analytic
#: constraint:ir.model:0
msgid ""
"The Object name must start with x_ and not contain any special character !"
msgstr ""
+"De objectnaam moet beginnen met x_ en mag geen speciale tekens bevatten !"
#. module: analytic
#: field:account.analytic.account,name:0
msgid "Account Name"
-msgstr ""
+msgstr "Naam rekening"
#. module: analytic
#: help:account.analytic.line,unit_amount:0
msgid "Specifies the amount of quantity to count."
-msgstr ""
+msgstr "Het aantal te rekenen eenheden"
#. module: analytic
#: help:account.analytic.line,currency_id:0
msgid "The related account currency if not equal to the company one."
msgstr ""
+"De valuta van de gekoppelde rekening wijkt af van die van het bedrijf."
#. module: analytic
#: model:ir.module.module,description:analytic.module_meta_information
@@ -56,31 +60,33 @@ msgid ""
"Module for defining analytic accounting object.\n"
" "
msgstr ""
+"Module voor het definiëren van kostenplaatsen.\n"
+" "
#. module: analytic
#: field:account.analytic.account,state:0
msgid "State"
-msgstr ""
+msgstr "Status"
#. module: analytic
#: field:account.analytic.account,user_id:0
msgid "Account Manager"
-msgstr ""
+msgstr "Rekeningbeheerder"
#. module: analytic
#: selection:account.analytic.account,state:0
msgid "Draft"
-msgstr ""
+msgstr "Concept"
#. module: analytic
#: selection:account.analytic.account,state:0
msgid "Closed"
-msgstr ""
+msgstr "Gesloten"
#. module: analytic
#: field:account.analytic.account,debit:0
msgid "Debit"
-msgstr ""
+msgstr "Debit"
#. module: analytic
#: help:account.analytic.account,state:0
@@ -100,32 +106,46 @@ msgid ""
" If it is to be reviewed then the state is 'Pending'.\n"
" When the project is completed the state is set to 'Done'."
msgstr ""
+"* Nadat de rekening is gemaakt, wordt de status 'Concept'. "
+" \n"
+"* Als er een gekoppelde relatie is, kan de status naar 'Open'. "
+" \n"
+"* Als er openstaand saldo is, kan de status naar 'Wacht'. "
+" \n"
+"* En tenslotte als alle transacties klaar zijn, dan gaat de status naar "
+"'Gesloten'. \n"
+"* Het project kan zowel in 'Sjabloon' als in 'Lopend' zijn.\n"
+" Als het in 'Sjabloon' status is, dan kunnen we projecten maken op basis van "
+"het sjabloon project. Als het status 'Lopend' heeft, dan is het een gewoon "
+"project. \n"
+" Als het moet worden nagekeken is de status 'Wacht'.\n"
+" Als het project klaar is dan is de status 'Klaar'."
#. module: analytic
#: field:account.analytic.account,type:0
msgid "Account Type"
-msgstr ""
+msgstr "Rekeningsoort"
#. module: analytic
#: selection:account.analytic.account,state:0
msgid "Template"
-msgstr ""
+msgstr "Sjabloon"
#. module: analytic
#: selection:account.analytic.account,state:0
msgid "Pending"
-msgstr ""
+msgstr "Wacht"
#. module: analytic
#: model:ir.model,name:analytic.model_account_analytic_line
msgid "Analytic Line"
-msgstr ""
+msgstr "Kostenplaatsboeking"
#. module: analytic
#: field:account.analytic.account,description:0
#: field:account.analytic.line,name:0
msgid "Description"
-msgstr ""
+msgstr "Omschrijving"
#. module: analytic
#: help:account.analytic.line,amount:0
@@ -133,133 +153,134 @@ msgid ""
"Calculated by multiplying the quantity and the price given in the Product's "
"cost price."
msgstr ""
+"Berekend door het aantal en de product kostprijs te vermenigvuldigen."
#. module: analytic
#: field:account.analytic.account,company_id:0
#: field:account.analytic.line,company_id:0
msgid "Company"
-msgstr ""
+msgstr "Bedrijf"
#. module: analytic
#: field:account.analytic.account,quantity_max:0
msgid "Maximum Quantity"
-msgstr ""
+msgstr "Maximum aantal"
#. module: analytic
#: field:account.analytic.line,user_id:0
msgid "User"
-msgstr ""
+msgstr "Gebruiker"
#. module: analytic
#: field:account.analytic.account,parent_id:0
msgid "Parent Analytic Account"
-msgstr ""
+msgstr "Bovenliggende kostenplaats"
#. module: analytic
#: field:account.analytic.line,date:0
msgid "Date"
-msgstr ""
+msgstr "Datum"
#. module: analytic
#: field:account.analytic.account,currency_id:0
#: field:account.analytic.line,currency_id:0
msgid "Account currency"
-msgstr ""
+msgstr "Kostenplaats valuta"
#. module: analytic
#: selection:account.analytic.account,type:0
msgid "View"
-msgstr ""
+msgstr "Weergave"
#. module: analytic
#: help:account.analytic.account,quantity_max:0
msgid "Sets the higher limit of quantity of hours."
-msgstr ""
+msgstr "Stelt de bovengrens in van het aantal uren."
#. module: analytic
#: field:account.analytic.account,credit:0
msgid "Credit"
-msgstr ""
+msgstr "Credit"
#. module: analytic
#: field:account.analytic.line,amount:0
msgid "Amount"
-msgstr ""
+msgstr "Bedrag"
#. module: analytic
#: field:account.analytic.account,contact_id:0
msgid "Contact"
-msgstr ""
+msgstr "Contactpersoon"
#. module: analytic
#: selection:account.analytic.account,state:0
msgid "Cancelled"
-msgstr ""
+msgstr "Geannuleerd"
#. module: analytic
#: field:account.analytic.account,balance:0
msgid "Balance"
-msgstr ""
+msgstr "Saldo"
#. module: analytic
#: field:account.analytic.account,date_start:0
msgid "Date Start"
-msgstr ""
+msgstr "Begindatum"
#. module: analytic
#: field:account.analytic.account,quantity:0
#: field:account.analytic.line,unit_amount:0
msgid "Quantity"
-msgstr ""
+msgstr "Aantal"
#. module: analytic
#: field:account.analytic.account,date:0
msgid "Date End"
-msgstr ""
+msgstr "Einddatum"
#. module: analytic
#: field:account.analytic.account,code:0
msgid "Account Code"
-msgstr ""
+msgstr "Rekeningcode"
#. module: analytic
#: selection:account.analytic.account,type:0
msgid "Normal"
-msgstr ""
+msgstr "Normaal"
#. module: analytic
#: field:account.analytic.account,complete_name:0
msgid "Full Account Name"
-msgstr ""
+msgstr "Volledige naam kostenplaats"
#. module: analytic
#: field:account.analytic.line,account_id:0
#: model:ir.model,name:analytic.model_account_analytic_account
#: model:ir.module.module,shortdesc:analytic.module_meta_information
msgid "Analytic Account"
-msgstr ""
+msgstr "Kostenplaats"
#. module: analytic
#: field:account.analytic.account,company_currency_id:0
msgid "Currency"
-msgstr ""
+msgstr "Valuta"
#. module: analytic
#: field:account.analytic.line,amount_currency:0
msgid "Amount currency"
-msgstr ""
+msgstr "Bedrag in valuta"
#. module: analytic
#: field:account.analytic.account,partner_id:0
msgid "Associated Partner"
-msgstr ""
+msgstr "Gekoppelde relatie"
#. module: analytic
#: selection:account.analytic.account,state:0
msgid "Open"
-msgstr ""
+msgstr "Open"
#. module: analytic
#: field:account.analytic.account,line_ids:0
msgid "Analytic Entries"
-msgstr ""
+msgstr "Kostenplaatsboekingen"
diff --git a/addons/analytic_user_function/analytic_user_function.py b/addons/analytic_user_function/analytic_user_function.py
index 0bb9afc3386..21fe0a7da29 100644
--- a/addons/analytic_user_function/analytic_user_function.py
+++ b/addons/analytic_user_function/analytic_user_function.py
@@ -99,7 +99,7 @@ class hr_analytic_timesheet(osv.osv):
(r.product_id.name, r.product_id.id,))
# Compute based on pricetype
amount_unit = self.on_change_unit_amount(cr, uid, ids,
- r.product_id.id, unit_amount, r.product_id.uom_id.id)['value']['amount']
+ r.product_id.id, unit_amount, False, r.product_id.uom_id.id)['value']['amount']
amount = unit_amount * amount_unit
res ['value']['amount']= - round(amount, 2)
@@ -134,7 +134,7 @@ class hr_analytic_timesheet(osv.osv):
(r.product_id.name, r.product_id.id,))
# Compute based on pricetype
amount_unit = self.on_change_unit_amount(cr, uid, ids,
- r.product_id.id, unit_amount, r.product_id.uom_id.id)['value']['amount']
+ r.product_id.id, unit_amount, False, r.product_id.uom_id.id)['value']['amount']
amount = unit_amount * amount_unit
res ['value']['amount']= - round(amount, 2)
diff --git a/addons/base_action_rule/base_action_rule.py b/addons/base_action_rule/base_action_rule.py
index f31f10c4060..9a2d720cc1a 100644
--- a/addons/base_action_rule/base_action_rule.py
+++ b/addons/base_action_rule/base_action_rule.py
@@ -113,6 +113,8 @@ the rule to mark CC(mail to any other person defined in actions)."),
'filter_id':fields.many2one('ir.filters', 'Filter', required=False),
'act_email_from' : fields.char('Email From', size=64, required=False,
help="Use a python expression to specify the right field on which one than we will use for the 'From' field of the header"),
+ 'act_email_to' : fields.char('Email To', size=64, required=False,
+ help="Use a python expression to specify the right field on which one than we will use for the 'To' field of the header"),
}
_defaults = {
@@ -356,13 +358,20 @@ the rule to mark CC(mail to any other person defined in actions)."),
emails += (action.act_email_cc or '').split(',')
if action.act_mail_to_email:
emails += (action.act_mail_to_email or '').split(',')
+
+ locals_for_emails = {
+ 'user' : self.pool.get('res.users').browse(cr, uid, uid, context=context),
+ 'obj' : obj,
+ }
+
+ if action.act_email_to:
+ emails.append(safe_eval(action.act_email_to, {}, locals_for_emails))
+
emails = filter(None, emails)
if len(emails) and action.act_mail_body:
emails = list(set(emails))
- email_from = safe_eval(action.act_email_from, {}, {
- 'user' : self.pool.get('res.users').browse(cr, uid, uid, context=context),
- 'obj' : obj,
- })
+ email_from = safe_eval(action.act_email_from, {}, locals_for_emails)
+
def to_email(text):
return re.findall(r'([^ ,<@]+@[^> ,]+)', text or '')
emails = to_email(','.join(filter(None, emails)))
diff --git a/addons/base_action_rule/base_action_rule_view.xml b/addons/base_action_rule/base_action_rule_view.xml
index 755f6680d34..01951b3c9b8 100644
--- a/addons/base_action_rule/base_action_rule_view.xml
+++ b/addons/base_action_rule/base_action_rule_view.xml
@@ -65,12 +65,13 @@
-
+
-
-
-
-
+
+
+
+
+
diff --git a/addons/base_action_rule/i18n/nl.po b/addons/base_action_rule/i18n/nl.po
index 794fc75af49..6d6bc8f3d25 100644
--- a/addons/base_action_rule/i18n/nl.po
+++ b/addons/base_action_rule/i18n/nl.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2010-08-19 12:20+0000\n"
-"PO-Revision-Date: 2010-09-12 15:32+0000\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2010-10-02 08:12+0000\n"
+"Last-Translator: OpenERP Administrators \n"
"Language-Team: Dutch \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-09-29 05:18+0000\n"
+"X-Launchpad-Export-Date: 2010-10-03 04:57+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: base_action_rule
@@ -22,68 +22,72 @@ msgstr ""
msgid ""
"Check this if you want the rule to send an email to the responsible person."
msgstr ""
+"Vink dit aan wanneer de regel een email moet versturen naar de "
+"verantwoordelijke persoon."
#. module: base_action_rule
#: field:base.action.rule,act_remind_partner:0
msgid "Remind Partner"
-msgstr ""
+msgstr "Relatie herinneren"
#. module: base_action_rule
#: field:base.action.rule,trg_partner_categ_id:0
msgid "Partner Category"
-msgstr ""
+msgstr "Relatiecategorie"
#. module: base_action_rule
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
-msgstr ""
+msgstr "Ongeldige naam van het model in de actie definitie."
#. module: base_action_rule
#: help:base.action.rule,act_remind_user:0
msgid ""
"Check this if you want the rule to send a reminder by email to the user."
msgstr ""
+"Vink dit aan wanneer u wilt dat de regel de gebruiker via de mail een "
+"herinnering stuurt."
#. module: base_action_rule
#: field:base.action.rule,trg_state_to:0
msgid "Button Pressed"
-msgstr ""
+msgstr "Knop ingedrukt"
#. module: base_action_rule
#: field:base.action.rule,model_id:0
msgid "Object"
-msgstr ""
+msgstr "Object"
#. module: base_action_rule
#: field:base.action.rule,act_mail_to_email:0
msgid "Mail to these Emails"
-msgstr ""
+msgstr "Mail naar deze emails"
#. module: base_action_rule
#: field:base.action.rule,act_state:0
msgid "Set State to"
-msgstr ""
+msgstr "Zet status op"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Email Body"
-msgstr ""
+msgstr "Email bericht"
#. module: base_action_rule
#: selection:base.action.rule,trg_date_range_type:0
msgid "Days"
-msgstr ""
+msgstr "Dagen"
#. module: base_action_rule
#: code:addons/base_action_rule/base_action_rule.py:0
#, python-format
msgid "Error!"
-msgstr ""
+msgstr "Fout!"
#. module: base_action_rule
#: field:base.action.rule,act_reply_to:0
msgid "Reply-To"
-msgstr ""
+msgstr "Antwoord naar"
#. module: base_action_rule
#: help:base.action.rule,act_email_cc:0
@@ -91,128 +95,132 @@ msgid ""
"These people will receive a copy of the future communication between partner "
"and users by email"
msgstr ""
+"Deze personen krijgen via email een kopie van toekomstige communicatie "
+"tussen relatie en gebruikers"
#. module: base_action_rule
#: selection:base.action.rule,trg_date_range_type:0
msgid "Minutes"
-msgstr ""
+msgstr "Minuten"
#. module: base_action_rule
#: field:base.action.rule,name:0
msgid "Rule Name"
-msgstr ""
+msgstr "Regelnaam"
#. module: base_action_rule
#: help:base.action.rule,act_remind_partner:0
msgid ""
"Check this if you want the rule to send a reminder by email to the partner."
msgstr ""
+"Aanvinken als u wilt dat de regel de relatie een herinnering via email "
+"stuurt."
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Email Reminders"
-msgstr ""
+msgstr "Email herinneringen"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Conditions on Model Partner"
-msgstr ""
+msgstr "Voorwaarden op relatiemodel"
#. module: base_action_rule
#: selection:base.action.rule,trg_date_type:0
msgid "Deadline"
-msgstr ""
+msgstr "Uiterste datum"
#. module: base_action_rule
#: field:base.action.rule,trg_partner_id:0
msgid "Partner"
-msgstr ""
+msgstr "Relatie"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(object_subject)s = Object subject"
-msgstr ""
+msgstr "%(object_subject)s = Object onderwerp"
#. module: base_action_rule
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
-msgstr ""
+msgstr "Ongeldige XML voor weergave opbouw!"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Special Keywords to Be Used in The Body"
-msgstr ""
+msgstr "Speciale sleutelwoorden die in het bericht kunnen worden gebruikt"
#. module: base_action_rule
#: field:base.action.rule,trg_state_from:0
msgid "State"
-msgstr ""
+msgstr "Status"
#. module: base_action_rule
#: help:base.action.rule,act_mail_to_email:0
msgid "Email-id of the persons whom mail is to be sent"
-msgstr ""
+msgstr "Email-id van de personen waarvan de mail wordt verstuurd"
#. module: base_action_rule
#: view:base.action.rule:0
#: model:ir.module.module,shortdesc:base_action_rule.module_meta_information
msgid "Action Rule"
-msgstr ""
+msgstr "Actieregel"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Fields to Change"
-msgstr ""
+msgstr "Te veranderen velden"
#. module: base_action_rule
#: selection:base.action.rule,trg_date_type:0
msgid "Creation Date"
-msgstr ""
+msgstr "Aanmaakdatum"
#. module: base_action_rule
#: selection:base.action.rule,trg_date_type:0
msgid "Last Action Date"
-msgstr ""
+msgstr "Laatste actiedatum"
#. module: base_action_rule
#: selection:base.action.rule,trg_date_range_type:0
msgid "Hours"
-msgstr ""
+msgstr "Uren"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(object_id)s = Object ID"
-msgstr ""
+msgstr "%(object_id)s = Object ID"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Delay After Trigger Date"
-msgstr ""
+msgstr "Vertraging na Activeerdatum"
#. module: base_action_rule
#: field:base.action.rule,act_remind_attach:0
msgid "Remind with Attachment"
-msgstr ""
+msgstr "Herinneren met bijlage"
#. module: base_action_rule
#: constraint:ir.cron:0
msgid "Invalid arguments"
-msgstr ""
+msgstr "Ongeldige argumenten"
#. module: base_action_rule
#: field:base.action.rule,act_user_id:0
msgid "Set Responsible to"
-msgstr ""
+msgstr "Zet verantwoordelijke op"
#. module: base_action_rule
#: selection:base.action.rule,trg_date_type:0
msgid "None"
-msgstr ""
+msgstr "Geen"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(object_user_phone)s = Responsible phone"
-msgstr ""
+msgstr "%(object_user_phone)s = Telefoon verantwoordelijke"
#. module: base_action_rule
#: view:base.action.rule:0
@@ -220,11 +228,14 @@ msgid ""
"The rule uses the AND operator. The model must match all non-empty fields so "
"that the rule executes the action described in the 'Actions' tab."
msgstr ""
+"De regel gebruikt een EN bewerking. Het model moet met alle niet-lege velden "
+"overeenkomen om de regel de in de 'Acties' tab beschreven actie te laten "
+"uitvoeren."
#. module: base_action_rule
#: field:base.action.rule,trg_date_range_type:0
msgid "Delay type"
-msgstr ""
+msgstr "Soort vertraging"
#. module: base_action_rule
#: help:base.action.rule,regex_name:0
@@ -234,11 +245,15 @@ msgid ""
"string 'urgent'\n"
"Note: This is case sensitive search."
msgstr ""
+"Reguliere expressie voor overeenkomende naam van de bron; \n"
+"i.e.: 'urgent.*' zal zoeken naar records met de naam beginnend met de tekst "
+"'urgent'\n"
+"Opmerking: dit zoeken is hoofdletter gevoelig."
#. module: base_action_rule
#: field:base.action.rule,act_method:0
msgid "Call Object Method"
-msgstr ""
+msgstr "Object-methode aanroepen"
#. module: base_action_rule
#: help:base.action.rule,act_mail_to_watchers:0
@@ -246,31 +261,33 @@ msgid ""
"Check this if you want the rule to mark CC(mail to any other person defined "
"in actions)."
msgstr ""
+"Vink aan als u wilt dat de regel CC markeert (mail naar een andere in de "
+"acties gedefinieerde persoon)."
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(partner)s = Partner name"
-msgstr ""
+msgstr "%(partner)s = Naam relatie"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Note"
-msgstr ""
+msgstr "Notitie"
#. module: base_action_rule
#: constraint:ir.ui.menu:0
msgid "Error ! You can not create recursive Menu."
-msgstr ""
+msgstr "Fout ! U kunt geen recursief menu maken."
#. module: base_action_rule
#: field:base.action.rule,trg_date_range:0
msgid "Delay after trigger date"
-msgstr ""
+msgstr "Vertraging na activeerdatum"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Conditions"
-msgstr ""
+msgstr "Voorwaarden"
#. module: base_action_rule
#: help:base.action.rule,trg_date_range:0
@@ -279,47 +296,50 @@ msgid ""
"need a delay before the trigger date, like sending a reminder 15 minutes "
"before a meeting."
msgstr ""
+"Vertraging na activeerdatum, specificeert dat u een negatief getal kunt "
+"invoeren als u vertraging vóór de activeerdatum wilt, zoals een herinnering "
+"15 minuten voor een vergadering versturen."
#. module: base_action_rule
#: field:base.action.rule,active:0
msgid "Active"
-msgstr ""
+msgstr "Actief"
#. module: base_action_rule
#: code:addons/base_action_rule/base_action_rule.py:0
#, python-format
msgid "No E-Mail ID Found for your Company address!"
-msgstr ""
+msgstr "Geen email-ID gevonden bij uw bedrijfsadres!"
#. module: base_action_rule
#: field:base.action.rule,act_remind_user:0
msgid "Remind Responsible"
-msgstr ""
+msgstr "Herinneren verantwoordelijke"
#. module: base_action_rule
#: model:ir.module.module,description:base_action_rule.module_meta_information
msgid "This module allows to implement action rules for any object."
-msgstr ""
+msgstr "Deze module laat u actieregels voor elk object implementeren."
#. module: base_action_rule
#: help:base.action.rule,sequence:0
msgid "Gives the sequence order when displaying a list of rules."
-msgstr ""
+msgstr "Geeft de volgorde aan waarin de lijst van regels wordt weergegeven."
#. module: base_action_rule
#: selection:base.action.rule,trg_date_range_type:0
msgid "Months"
-msgstr ""
+msgstr "Maanden"
#. module: base_action_rule
#: field:base.action.rule,filter_id:0
msgid "Filter"
-msgstr ""
+msgstr "Filter"
#. module: base_action_rule
#: selection:base.action.rule,trg_date_type:0
msgid "Date"
-msgstr ""
+msgstr "Datum"
#. module: base_action_rule
#: help:base.action.rule,server_action_id:0
@@ -327,108 +347,111 @@ msgid ""
"Describes the action name.\n"
"eg:on which object which action to be taken on basis of which condition"
msgstr ""
+"Beschrijft de actie naam.\n"
+"ie: op welk object welke actie wordt uitgevoerd onder welke conditie"
#. module: base_action_rule
#: model:ir.model,name:base_action_rule.model_ir_cron
msgid "ir.cron"
-msgstr ""
+msgstr "ir.cron"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(object_description)s = Object description"
-msgstr ""
+msgstr "%(object_description)s = Object omschrijving"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Email Actions"
-msgstr ""
+msgstr "Email acties"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Email Information"
-msgstr ""
+msgstr "Email Informatie"
#. module: base_action_rule
#: constraint:ir.model:0
msgid ""
"The Object name must start with x_ and not contain any special character !"
msgstr ""
+"De objectnaam moet beginnen met x_ en mag geen speciale tekens bevatten !"
#. module: base_action_rule
#: model:ir.model,name:base_action_rule.model_base_action_rule
msgid "Action Rules"
-msgstr ""
+msgstr "Actieregels"
#. module: base_action_rule
#: help:base.action.rule,act_mail_body:0
msgid "Content of mail"
-msgstr ""
+msgstr "Inhoud van mail"
#. module: base_action_rule
#: field:base.action.rule,trg_user_id:0
msgid "Responsible"
-msgstr ""
+msgstr "Verantwoordelijke"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(partner_email)s = Partner Email"
-msgstr ""
+msgstr "%(partner_email)s = Relatie email"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(object_date)s = Creation date"
-msgstr ""
+msgstr "%(object_date)s = Aanmaakdatum"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(object_user_email)s = Responsible Email"
-msgstr ""
+msgstr "%(object_user_email)s = Verantwoordelijke email"
#. module: base_action_rule
#: field:base.action.rule,act_mail_body:0
msgid "Mail body"
-msgstr ""
+msgstr "E-mail berichttekst"
#. module: base_action_rule
#: field:base.action.rule,act_mail_to_watchers:0
msgid "Mail to Watchers (CC)"
-msgstr ""
+msgstr "E-mail naar toeschouwers (CC)"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Server Action to be Triggered"
-msgstr ""
+msgstr "Server actie om te activeren"
#. module: base_action_rule
#: field:base.action.rule,act_mail_to_user:0
msgid "Mail to Responsible"
-msgstr ""
+msgstr "E-mail naar verantwoordelijke"
#. module: base_action_rule
#: field:base.action.rule,act_email_cc:0
msgid "Add Watchers (Cc)"
-msgstr ""
+msgstr "Toevoegen toeschouwers (Cc)"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Conditions on Model Fields"
-msgstr ""
+msgstr "Voorwaarden op Model velden"
#. module: base_action_rule
#: model:ir.actions.act_window,name:base_action_rule.base_action_rule_act
#: model:ir.ui.menu,name:base_action_rule.menu_base_action_rule_form
msgid "Automated Actions"
-msgstr ""
+msgstr "Geautomatiseerde acties"
#. module: base_action_rule
#: field:base.action.rule,server_action_id:0
msgid "Server Action"
-msgstr ""
+msgstr "Server-actie"
#. module: base_action_rule
#: field:base.action.rule,regex_name:0
msgid "Regex on Resource Name"
-msgstr ""
+msgstr "Regex op bronnaam"
#. module: base_action_rule
#: help:base.action.rule,act_remind_attach:0
@@ -436,21 +459,23 @@ msgid ""
"Check this if you want that all documents attached to the object be attached "
"to the reminder email sent."
msgstr ""
+"Vink dit aan als u wilt dat alle bij het object gevoegde documenten worden "
+"bijgevoegd bij de verstuurde herinnering."
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Conditions on Timing"
-msgstr ""
+msgstr "Voorwaarden op timing"
#. module: base_action_rule
#: field:base.action.rule,sequence:0
msgid "Sequence"
-msgstr ""
+msgstr "Volgnummer"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Actions"
-msgstr ""
+msgstr "Acties"
#. module: base_action_rule
#: help:base.action.rule,active:0
@@ -458,23 +483,25 @@ msgid ""
"If the active field is set to False, it will allow you to hide the rule "
"without removing it."
msgstr ""
+"Als het actief veld uitzet, kunt u de regel verbergen zonder haar te "
+"verwijderen."
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(object_user)s = Responsible name"
-msgstr ""
+msgstr "%(object_user)s = Naam verantwoordelijke"
#. module: base_action_rule
#: field:base.action.rule,create_date:0
msgid "Create Date"
-msgstr ""
+msgstr "Aanmaakdatum"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Conditions on States"
-msgstr ""
+msgstr "Voorwaarden op status"
#. module: base_action_rule
#: field:base.action.rule,trg_date_type:0
msgid "Trigger Date"
-msgstr ""
+msgstr "Activeerdatum"
diff --git a/addons/base_calendar/base_calendar.py b/addons/base_calendar/base_calendar.py
index 5ccfbdb23d8..7ccd07351f0 100644
--- a/addons/base_calendar/base_calendar.py
+++ b/addons/base_calendar/base_calendar.py
@@ -673,9 +673,10 @@ true, it will allow you to hide the event alarm information without removing it.
new_res_alarm = res_alarm_obj.create(cr, uid, val, context=context)
else:
new_res_alarm = alarm_ids[0]
- cr.execute('Update %s set base_calendar_alarm_id=%s, alarm_id=%s \
- where id=%s' % (model_obj._table, \
- cal_alarm.id, new_res_alarm, data.id))
+ cr.execute('UPDATE %s ' % model_obj._table + \
+ ' SET base_calendar_alarm_id=%s, alarm_id=%s ' \
+ ' WHERE id=%s',
+ (cal_alarm.id, new_res_alarm, data.id))
self.do_alarm_unlink(cr, uid, [data.id], model)
if basic_alarm:
@@ -697,9 +698,10 @@ true, it will allow you to hide the event alarm information without removing it.
'user_id': uid
}
alarm_id = alarm_obj.create(cr, uid, vals)
- cr.execute('Update %s set base_calendar_alarm_id=%s, alarm_id=%s \
- where id=%s' % (model_obj._table, \
- alarm_id, basic_alarm.id, data.id))
+ cr.execute('UPDATE %s ' % model_obj._table + \
+ ' SET base_calendar_alarm_id=%s, alarm_id=%s '
+ ' WHERE id=%s', \
+ ( alarm_id, basic_alarm.id, data.id) )
return True
def do_alarm_unlink(self, cr, uid, ids, model, context=None):
@@ -722,7 +724,7 @@ true, it will allow you to hide the event alarm information without removing it.
if alarm_ids:
alarm_obj.unlink(cr, uid, alarm_ids)
cr.execute('Update %s set base_calendar_alarm_id=NULL, alarm_id=NULL\
- where id=%s' % (model_obj._table, datas.id))
+ where id=%%s' % model_obj._table,(datas.id,))
return True
res_alarm()
@@ -994,10 +996,10 @@ class calendar_event(osv.osv):
context = {}
cr.execute("UPDATE %s set freq='None',interval=0,count=0,end_date=Null,\
mo=False,tu=False,we=False,th=False,fr=False,sa=False,su=False,\
- day=0,select1='date',month_list=Null ,byday=Null where id=%s" % (self._table, id))
+ day=0,select1='date',month_list=Null ,byday=Null where id=%%s" % (self._table), (id,))
if not value:
- cr.execute("UPDATE %s set rrule_type='none' where id=%s" % (self._table, id))
+ cr.execute("UPDATE %s set rrule_type='none' where id=%%s" % self._table,(id,))
return True
val = {}
for part in value.split(';'):
@@ -1063,7 +1065,7 @@ class calendar_event(osv.osv):
'rule_type': rrule_type,
'id': id,
})
- cr.execute(qry % val)
+ cr.execute(qry, val) # Hopefully psycopg2 works with dicts. But, FIXME
return True
def _get_rulestring(self, cr, uid, ids, name, arg, context=None):
@@ -1081,7 +1083,7 @@ class calendar_event(osv.osv):
if datas.get('rrule_type'):
if datas.get('rrule_type') == 'none':
result[event] = False
- cr.execute("UPDATE %s set exrule=Null where id=%s" % (self._table, event))
+ cr.execute("UPDATE %s set exrule=Null where id=%%s" % self._table,( event,))
elif datas.get('rrule_type') == 'custom':
if datas.get('interval', 0) < 0:
raise osv.except_osv('Warning!', 'Interval can not be Negative')
@@ -1258,7 +1260,7 @@ true, it will allow you to hide the event alarm information without removing it.
if defaults.get('location'):
qry += ", location = '%(location)s'"
qry += "WHERE id = %s" % (event_id)
- cr.execute(qry %(defaults))
+ cr.execute(qry, defaults)
return True
@@ -1283,8 +1285,7 @@ true, it will allow you to hide the event alarm information without removing it.
if ids and (base_start_date or base_until_date):
cr.execute("select m.id, m.rrule, m.date, m.date_deadline, m.duration, \
m.exdate, m.exrule, m.recurrent_id, m.recurrent_uid from " + self._table + \
- " m where m.id in ("\
- + ','.join(map(lambda x: str(x), ids))+")")
+ " m where m.id = ANY(%s)", (ids,) )
count = 0
for data in cr.dictfetchall():
@@ -1683,10 +1684,8 @@ class calendar_todo(osv.osv):
@param context: A standard dictionary for contextual values
"""
- event = self.browse(cr, uid, id, context=context)
- cr.execute("UPDATE %s set date_start='%s' where id=%s" \
- % (self._table, value, id))
- return True
+ assert name == 'date'
+ return self.write(cr, uid, id, { 'date_start': value }, context=context)
_columns = {
'date': fields.function(_get_date, method=True, fnct_inv=_set_date, \
diff --git a/addons/base_calendar/base_calendar_view.xml b/addons/base_calendar/base_calendar_view.xml
index c3292452298..ba91c4b75dd 100644
--- a/addons/base_calendar/base_calendar_view.xml
+++ b/addons/base_calendar/base_calendar_view.xml
@@ -122,7 +122,7 @@
separator="1" help="Delegated Invitations" />
-
+
@@ -163,7 +163,8 @@
@@ -496,6 +497,7 @@
diff --git a/addons/base_calendar/i18n/nl.po b/addons/base_calendar/i18n/nl.po
index 678032a17bd..2f356806b1e 100644
--- a/addons/base_calendar/i18n/nl.po
+++ b/addons/base_calendar/i18n/nl.po
@@ -8,32 +8,32 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2010-08-19 12:50+0000\n"
-"PO-Revision-Date: 2010-09-16 12:31+0000\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2010-10-04 06:49+0000\n"
+"Last-Translator: OpenERP Administrators \n"
"Language-Team: Dutch \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-09-29 05:17+0000\n"
+"X-Launchpad-Export-Date: 2010-10-05 04:57+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: base_calendar
#: selection:calendar.alarm,trigger_related:0
#: selection:res.alarm,trigger_related:0
msgid "The event starts"
-msgstr ""
+msgstr "De activiteit begint"
#. module: base_calendar
#: selection:base.calendar.set.exrule,freq:0
#: selection:calendar.event,freq:0
#: selection:calendar.todo,freq:0
msgid "Hourly"
-msgstr ""
+msgstr "Ieder uur"
#. module: base_calendar
#: view:calendar.attendee:0
msgid "Required to Join"
-msgstr ""
+msgstr "Deelname vereist"
#. module: base_calendar
#: help:calendar.event,exdate:0
@@ -42,11 +42,13 @@ msgid ""
"This property defines the list of date/time exceptions for a recurring "
"calendar component."
msgstr ""
+"Hiermee bepaalt u de datum/tijd-uitzonderingslijst voor een terugkerend "
+"kalender-item"
#. module: base_calendar
#: field:calendar.event.edit.all,name:0
msgid "Title"
-msgstr ""
+msgstr "Titel"
#. module: base_calendar
#: selection:base.calendar.set.exrule,freq:0
@@ -55,50 +57,50 @@ msgstr ""
#: selection:calendar.todo,freq:0
#: selection:calendar.todo,rrule_type:0
msgid "Monthly"
-msgstr ""
+msgstr "Maandelijks"
#. module: base_calendar
#: view:calendar.attendee:0
msgid "Invited User"
-msgstr ""
+msgstr "Uitgenodigde gebruikers"
#. module: base_calendar
#: model:ir.actions.act_window,name:base_calendar.action_res_alarm_view
#: model:ir.ui.menu,name:base_calendar.menu_crm_meeting_avail_alarm
msgid "Alarms"
-msgstr ""
+msgstr "Herinneringen"
#. module: base_calendar
#: selection:base.calendar.set.exrule,week_list:0
#: selection:calendar.event,week_list:0
#: selection:calendar.todo,week_list:0
msgid "Sunday"
-msgstr ""
+msgstr "zondag"
#. module: base_calendar
#: view:calendar.attendee:0
#: field:calendar.attendee,role:0
msgid "Role"
-msgstr ""
+msgstr "Functie"
#. module: base_calendar
#: view:calendar.attendee:0
#: view:calendar.event:0
msgid "Invitation details"
-msgstr ""
+msgstr "Details uitnodiging"
#. module: base_calendar
#: selection:base.calendar.set.exrule,byday:0
#: selection:calendar.event,byday:0
#: selection:calendar.todo,byday:0
msgid "Fourth"
-msgstr ""
+msgstr "vierde"
#. module: base_calendar
#: field:calendar.event,show_as:0
#: field:calendar.todo,show_as:0
msgid "Show as"
-msgstr ""
+msgstr "Weergeven als"
#. module: base_calendar
#: field:base.calendar.set.exrule,day:0
@@ -108,52 +110,52 @@ msgstr ""
#: field:calendar.todo,day:0
#: selection:calendar.todo,select1:0
msgid "Date of month"
-msgstr ""
+msgstr "Dag van de maand"
#. module: base_calendar
#: selection:calendar.event,class:0
#: selection:calendar.todo,class:0
msgid "Public"
-msgstr ""
+msgstr "Openbaar"
#. module: base_calendar
#: selection:calendar.alarm,trigger_interval:0
#: selection:res.alarm,trigger_interval:0
msgid "Hours"
-msgstr ""
+msgstr "Uren"
#. module: base_calendar
#: selection:base.calendar.set.exrule,month_list:0
#: selection:calendar.event,month_list:0
#: selection:calendar.todo,month_list:0
msgid "March"
-msgstr ""
+msgstr "maart"
#. module: base_calendar
#: code:addons/base_calendar/wizard/base_calendar_set_exrule.py:0
#, python-format
msgid "Warning !"
-msgstr ""
+msgstr "Waarschuwing !"
#. module: base_calendar
#: selection:base.calendar.set.exrule,week_list:0
#: selection:calendar.event,week_list:0
#: selection:calendar.todo,week_list:0
msgid "Friday"
-msgstr ""
+msgstr "vrijdag"
#. module: base_calendar
#: field:calendar.event,allday:0
#: field:calendar.todo,allday:0
msgid "All Day"
-msgstr ""
+msgstr "Hele dag"
#. module: base_calendar
#: field:base.calendar.set.exrule,select1:0
#: field:calendar.event,select1:0
#: field:calendar.todo,select1:0
msgid "Option"
-msgstr ""
+msgstr "Optie"
#. module: base_calendar
#: selection:calendar.attendee,availability:0
@@ -161,12 +163,12 @@ msgstr ""
#: selection:calendar.todo,show_as:0
#: selection:res.users,availability:0
msgid "Free"
-msgstr ""
+msgstr "Vrij"
#. module: base_calendar
#: help:calendar.attendee,rsvp:0
msgid "Indicats whether the favor of a reply is requested"
-msgstr ""
+msgstr "Geeft aan of een antwoordverzoek gevraagd wordt"
#. module: base_calendar
#: model:ir.model,name:base_calendar.model_ir_attachment
@@ -176,32 +178,32 @@ msgstr ""
#. module: base_calendar
#: help:calendar.attendee,delegated_to:0
msgid "The users that the original request was delegated to"
-msgstr ""
+msgstr "De gebruikers aan wie het oorspronkelijke verzoek toegewezen was"
#. module: base_calendar
#: view:calendar.attendee:0
#: field:calendar.attendee,delegated_to:0
msgid "Delegated To"
-msgstr ""
+msgstr "Toegewezen aan"
#. module: base_calendar
#: field:base.calendar.set.exrule,we:0
#: field:calendar.event,we:0
#: field:calendar.todo,we:0
msgid "Wed"
-msgstr ""
+msgstr "woe"
#. module: base_calendar
#: view:calendar.event:0
msgid "Show time as"
-msgstr ""
+msgstr "Tijd weergeven als"
#. module: base_calendar
#: field:base.calendar.set.exrule,tu:0
#: field:calendar.event,tu:0
#: field:calendar.todo,tu:0
msgid "Tue"
-msgstr ""
+msgstr "din"
#. module: base_calendar
#: selection:base.calendar.set.exrule,freq:0
@@ -210,43 +212,43 @@ msgstr ""
#: selection:calendar.todo,freq:0
#: selection:calendar.todo,rrule_type:0
msgid "Yearly"
-msgstr ""
+msgstr "Jaarlijks"
#. module: base_calendar
#: selection:calendar.alarm,trigger_related:0
#: selection:res.alarm,trigger_related:0
msgid "The event ends"
-msgstr ""
+msgstr "De activiteit eindigt"
#. module: base_calendar
#: selection:base.calendar.set.exrule,byday:0
#: selection:calendar.event,byday:0
#: selection:calendar.todo,byday:0
msgid "Last"
-msgstr ""
+msgstr "Laatste"
#. module: base_calendar
#: help:calendar.attendee,state:0
msgid "Status of the attendee's participation"
-msgstr ""
+msgstr "Deelnamestatus genodigde"
#. module: base_calendar
#: selection:calendar.attendee,cutype:0
msgid "Room"
-msgstr ""
+msgstr "Zaal"
#. module: base_calendar
#: selection:calendar.alarm,trigger_interval:0
#: selection:res.alarm,trigger_interval:0
msgid "Days"
-msgstr ""
+msgstr "dagen"
#. module: base_calendar
#: selection:base.calendar.set.exrule,freq:0
#: selection:calendar.event,freq:0
#: selection:calendar.todo,freq:0
msgid "No Repeat"
-msgstr ""
+msgstr "Niet terugkerend"
#. module: base_calendar
#: code:addons/base_calendar/base_calendar.py:0
@@ -254,74 +256,74 @@ msgstr ""
#: code:addons/base_calendar/wizard/base_calendar_set_exrule.py:0
#, python-format
msgid "Error!"
-msgstr ""
+msgstr "Fout!"
#. module: base_calendar
#: selection:calendar.attendee,role:0
msgid "Chair Person"
-msgstr ""
+msgstr "Voorzitter"
#. module: base_calendar
#: selection:calendar.alarm,action:0
msgid "Procedure"
-msgstr ""
+msgstr "Werkwijze"
#. module: base_calendar
#: view:calendar.event:0
msgid "Select data for Custom Rule"
-msgstr ""
+msgstr "Selecteer gegevens voor aangepaste regel"
#. module: base_calendar
#: selection:calendar.event,state:0
#: selection:calendar.todo,state:0
msgid "Cancelled"
-msgstr ""
+msgstr "Geannuleerd"
#. module: base_calendar
#: selection:calendar.alarm,trigger_interval:0
#: selection:res.alarm,trigger_interval:0
msgid "Minutes"
-msgstr ""
+msgstr "Minuten"
#. module: base_calendar
#: selection:calendar.alarm,action:0
msgid "Display"
-msgstr ""
+msgstr "Weergave"
#. module: base_calendar
#: view:calendar.event.edit.all:0
msgid "Edit all Occurrences"
-msgstr ""
+msgstr "Reeks bewerken"
#. module: base_calendar
#: view:calendar.attendee:0
msgid "Invitation type"
-msgstr ""
+msgstr "Soort uitnodiging"
#. module: base_calendar
#: selection:base.calendar.set.exrule,freq:0
#: selection:calendar.event,freq:0
#: selection:calendar.todo,freq:0
msgid "Secondly"
-msgstr ""
+msgstr "Per seconde"
#. module: base_calendar
#: field:calendar.alarm,event_date:0
#: field:calendar.attendee,event_date:0
#: view:calendar.event:0
msgid "Event Date"
-msgstr ""
+msgstr "Datum activiteit"
#. module: base_calendar
#: view:calendar.attendee:0
#: view:calendar.event:0
msgid "Group By..."
-msgstr ""
+msgstr "Groepeer op.."
#. module: base_calendar
#: help:calendar.attendee,partner_id:0
msgid "Partner related to contact"
-msgstr ""
+msgstr "Relatie gekoppeld aan contactpersoon"
#. module: base_calendar
#: help:calendar.attendee,cutype:0
@@ -339,34 +341,34 @@ msgstr ""
#: field:calendar.alarm,event_end_date:0
#: field:calendar.attendee,event_end_date:0
msgid "Event End Date"
-msgstr ""
+msgstr "Einddatum activiteit"
#. module: base_calendar
#: selection:calendar.attendee,role:0
msgid "Optional Participation"
-msgstr ""
+msgstr "Deelname optioneel"
#. module: base_calendar
#: field:calendar.event,date_deadline:0
#: field:calendar.todo,date_deadline:0
msgid "Deadline"
-msgstr ""
+msgstr "Uiterste datum"
#. module: base_calendar
#: code:addons/base_calendar/base_calendar.py:0
#, python-format
msgid "Warning!"
-msgstr ""
+msgstr "Waarschuwing!"
#. module: base_calendar
#: view:base.calendar.set.exrule:0
msgid "_Cancel"
-msgstr ""
+msgstr "_Annuleren"
#. module: base_calendar
#: model:ir.module.module,shortdesc:base_calendar.module_meta_information
msgid "Basic Calendar Functionality"
-msgstr ""
+msgstr "Basis kalender functionaliteit"
#. module: base_calendar
#: field:calendar.event,organizer:0
@@ -374,7 +376,7 @@ msgstr ""
#: field:calendar.todo,organizer:0
#: field:calendar.todo,organizer_id:0
msgid "Organizer"
-msgstr ""
+msgstr "Organisator"
#. module: base_calendar
#: code:addons/base_calendar/base_calendar.py:0
@@ -382,76 +384,76 @@ msgstr ""
#: model:res.request.link,name:base_calendar.request_link_meeting
#, python-format
msgid "Event"
-msgstr ""
+msgstr "Activiteit"
#. module: base_calendar
#: selection:calendar.alarm,trigger_occurs:0
#: selection:res.alarm,trigger_occurs:0
msgid "Before"
-msgstr ""
+msgstr "Vóór"
#. module: base_calendar
#: view:calendar.event:0
#: selection:calendar.event,state:0
#: selection:calendar.todo,state:0
msgid "Confirmed"
-msgstr ""
+msgstr "Bevestigd"
#. module: base_calendar
#: model:ir.actions.act_window,name:base_calendar.action_calendar_event_edit_all
msgid "Edit all events"
-msgstr ""
+msgstr "Reeks bewerken"
#. module: base_calendar
#: field:calendar.alarm,attendee_ids:0
#: field:calendar.event,attendee_ids:0
#: field:calendar.todo,attendee_ids:0
msgid "Attendees"
-msgstr ""
+msgstr "Deelnemers"
#. module: base_calendar
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
-msgstr ""
+msgstr "Ongeldige modelnaam in de actie-definiëring."
#. module: base_calendar
#: view:calendar.event:0
msgid "Confirm"
-msgstr ""
+msgstr "Bevestigen"
#. module: base_calendar
#: model:ir.model,name:base_calendar.model_calendar_todo
msgid "Calendar Task"
-msgstr ""
+msgstr "Kalender-taak"
#. module: base_calendar
#: field:base.calendar.set.exrule,su:0
#: field:calendar.event,su:0
#: field:calendar.todo,su:0
msgid "Sun"
-msgstr ""
+msgstr "zon"
#. module: base_calendar
#: field:calendar.attendee,cutype:0
msgid "Invite Type"
-msgstr ""
+msgstr "Type uitnodiging"
#. module: base_calendar
#: view:res.alarm:0
msgid "Reminder details"
-msgstr ""
+msgstr "Details herinnering"
#. module: base_calendar
#: field:calendar.attendee,parent_ids:0
msgid "Delegrated From"
-msgstr ""
+msgstr "Toegewezen door"
#. module: base_calendar
#: selection:base.calendar.set.exrule,select1:0
#: selection:calendar.event,select1:0
#: selection:calendar.todo,select1:0
msgid "Day of month"
-msgstr ""
+msgstr "Dag van de maand"
#. module: base_calendar
#: view:calendar.event:0
@@ -459,94 +461,94 @@ msgstr ""
#: field:calendar.event.edit.all,location:0
#: field:calendar.todo,location:0
msgid "Location"
-msgstr ""
+msgstr "Plaats"
#. module: base_calendar
#: field:base_calendar.invite.attendee,send_mail:0
msgid "Send mail?"
-msgstr ""
+msgstr "E-mail sturen?"
#. module: base_calendar
#: field:base_calendar.invite.attendee,email:0
#: selection:calendar.alarm,action:0
#: field:calendar.attendee,email:0
msgid "Email"
-msgstr ""
+msgstr "E-mail"
#. module: base_calendar
#: view:calendar.attendee:0
msgid "Event Detail"
-msgstr ""
+msgstr "Detail activiteit"
#. module: base_calendar
#: selection:calendar.alarm,state:0
msgid "Run"
-msgstr ""
+msgstr "Uitvoeren"
#. module: base_calendar
#: model:ir.model,name:base_calendar.model_calendar_alarm
msgid "Event alarm information"
-msgstr ""
+msgstr "Informatie herinnering activiteit"
#. module: base_calendar
#: selection:calendar.event,class:0
#: selection:calendar.todo,class:0
msgid "Confidential"
-msgstr ""
+msgstr "Vertrouwelijk"
#. module: base_calendar
#: field:base.calendar.set.exrule,end_date:0
#: field:calendar.event,end_date:0
#: field:calendar.todo,end_date:0
msgid "Repeat Until"
-msgstr ""
+msgstr "Herhaal tot"
#. module: base_calendar
#: view:calendar.event:0
msgid "Visibility"
-msgstr ""
+msgstr "Zichtbaarheid"
#. module: base_calendar
#: field:calendar.attendee,rsvp:0
msgid "Required Reply?"
-msgstr ""
+msgstr "Antwoord vereist?"
#. module: base_calendar
#: field:calendar.event,base_calendar_url:0
#: field:calendar.todo,base_calendar_url:0
msgid "Caldav URL"
-msgstr ""
+msgstr "Caldav URL"
#. module: base_calendar
#: field:calendar.event,recurrent_uid:0
#: field:calendar.todo,recurrent_uid:0
msgid "Recurrent ID"
-msgstr ""
+msgstr "Terugkerend ID"
#. module: base_calendar
#: selection:base.calendar.set.exrule,month_list:0
#: selection:calendar.event,month_list:0
#: selection:calendar.todo,month_list:0
msgid "July"
-msgstr ""
+msgstr "juli"
#. module: base_calendar
#: view:calendar.attendee:0
#: selection:calendar.attendee,state:0
msgid "Accepted"
-msgstr ""
+msgstr "Geaccepteerd"
#. module: base_calendar
#: field:base.calendar.set.exrule,th:0
#: field:calendar.event,th:0
#: field:calendar.todo,th:0
msgid "Thu"
-msgstr ""
+msgstr "don"
#. module: base_calendar
#: field:calendar.attendee,child_ids:0
msgid "Delegrated To"
-msgstr ""
+msgstr "Toegewezen aan"
#. module: base_calendar
#: constraint:ir.cron:0
@@ -556,29 +558,29 @@ msgstr ""
#. module: base_calendar
#: view:calendar.attendee:0
msgid "Required Reply"
-msgstr ""
+msgstr "Antwoord vereist"
#. module: base_calendar
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
-msgstr ""
+msgstr "Ongeldige XML, kan overzicht niet weergeven!"
#. module: base_calendar
#: selection:calendar.attendee,role:0
msgid "Participation required"
-msgstr ""
+msgstr "Deelname vereist"
#. module: base_calendar
#: field:calendar.event,create_date:0
#: field:calendar.todo,create_date:0
msgid "Created"
-msgstr ""
+msgstr "Aangemaakt"
#. module: base_calendar
#: selection:calendar.event,class:0
#: selection:calendar.todo,class:0
msgid "Private"
-msgstr ""
+msgstr "Privé"
#. module: base_calendar
#: selection:base.calendar.set.exrule,freq:0
@@ -587,43 +589,43 @@ msgstr ""
#: selection:calendar.todo,freq:0
#: selection:calendar.todo,rrule_type:0
msgid "Daily"
-msgstr ""
+msgstr "Dagelijks"
#. module: base_calendar
#: code:addons/base_calendar/base_calendar.py:0
#, python-format
msgid "Can not Duplicate"
-msgstr ""
+msgstr "Kopiëren niet mogelijk"
#. module: base_calendar
#: field:calendar.event,class:0
#: field:calendar.todo,class:0
msgid "Mark as"
-msgstr ""
+msgstr "Markeren als"
#. module: base_calendar
#: view:calendar.attendee:0
#: field:calendar.attendee,partner_address_id:0
msgid "Contact"
-msgstr ""
+msgstr "Contactpersoon"
#. module: base_calendar
#: view:calendar.attendee:0
#: view:calendar.event:0
msgid "Delegate"
-msgstr ""
+msgstr "Toewijzen"
#. module: base_calendar
#: field:base_calendar.invite.attendee,partner_id:0
#: view:calendar.attendee:0
#: field:calendar.attendee,partner_id:0
msgid "Partner"
-msgstr ""
+msgstr "Partner"
#. module: base_calendar
#: view:base.calendar.set.exrule:0
msgid "Select data for ExRule"
-msgstr ""
+msgstr "Selecteer gegevens voor uitzondering regel"
#. module: base_calendar
#: view:base_calendar.invite.attendee:0
diff --git a/addons/base_calendar/wizard/base_calendar_invite_attendee.py b/addons/base_calendar/wizard/base_calendar_invite_attendee.py
index 98369962ab7..47f5681addf 100644
--- a/addons/base_calendar/wizard/base_calendar_invite_attendee.py
+++ b/addons/base_calendar/wizard/base_calendar_invite_attendee.py
@@ -159,8 +159,8 @@ send an Email to Invited Person')
if not partner_id:
return {'value': {'contact_ids': []}}
- cr.execute('select id from res_partner_address \
- where partner_id=%s' % (partner_id))
+ cr.execute('SELECT id FROM res_partner_address \
+ WHERE partner_id=%s', (partner_id,))
contacts = map(lambda x: x[0], cr.fetchall())
return {'value': {'contact_ids': contacts}}
diff --git a/addons/base_contact/process/base_contact_process.xml b/addons/base_contact/process/base_contact_process.xml
index 876905c1812..f5b754e7ad9 100644
--- a/addons/base_contact/process/base_contact_process.xml
+++ b/addons/base_contact/process/base_contact_process.xml
@@ -60,7 +60,6 @@
-->
-
@@ -69,7 +68,6 @@
-
@@ -78,7 +76,6 @@
-
diff --git a/addons/base_iban/base_iban_data.xml b/addons/base_iban/base_iban_data.xml
index 678b798c82f..dae3999505e 100644
--- a/addons/base_iban/base_iban_data.xml
+++ b/addons/base_iban/base_iban_data.xml
@@ -3,8 +3,8 @@
+ Default bank account description
+ -->
IBAN Accountiban
diff --git a/addons/base_report_creator/base_report_creator_view.xml b/addons/base_report_creator/base_report_creator_view.xml
index 8752a573725..ad438c710b4 100644
--- a/addons/base_report_creator/base_report_creator_view.xml
+++ b/addons/base_report_creator/base_report_creator_view.xml
@@ -143,34 +143,9 @@
-
-
-
- base_report_creator.report.simple.tree
- base_report_creator.report
- tree
-
-
-
-
-
-
-
-
- base_report_creator.report
- tree
-
-
-
+
diff --git a/addons/base_report_designer/base_report_designer_installer.xml b/addons/base_report_designer/base_report_designer_installer.xml
index 21537d3d63c..4ea4970d19a 100644
--- a/addons/base_report_designer/base_report_designer_installer.xml
+++ b/addons/base_report_designer/base_report_designer_installer.xml
@@ -72,21 +72,10 @@
{'menu':True}
-
-
-
-
-
-
-
-
diff --git a/addons/base_setup/__init__.py b/addons/base_setup/__init__.py
index 80680b6615e..59598f6577a 100644
--- a/addons/base_setup/__init__.py
+++ b/addons/base_setup/__init__.py
@@ -60,25 +60,15 @@ class base_setup_config_choice(osv.osv_memory):
'config_logo' : _get_image
}
- def set_default_menu(self, cr, uid, menu, context=None):
- user = self.pool.get('res.users')\
- .browse(cr, uid, uid, context=context)
-
- user.write({'action_id': menu.id,
- 'menu_id': menu.id})
-
- def get_default_menu(self, cr, uid, context=None):
- actions = self.pool.get('ir.actions.act_window')
-
- current_menu_id = actions.search(cr, uid, [('name','=','Menu')],
- context=context)
- assert len(current_menu_id) == 1,\
- 'A given user should only have one menu item'
- return actions.browse(cr, uid, current_menu_id[0], context=context)
+ def reset_menu(self, cr, uid, context=None):
+ user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
+ menu_id = user._get_menu()
+ user.write({'action_id': False,
+ 'menu_id': menu_id})
+ return self.pool.get('ir.actions.act_window').browse(cr, uid, menu_id, context=context)
def menu(self, cr, uid, ids, context=None):
- menu = self.get_default_menu(cr, uid, context=context)
- self.set_default_menu(cr, uid, menu, context=context)
+ menu = self.reset_menu(cr, uid, context=context)
if menu.view_id.id:
view_id = (menu.view_id.id, menu.view_id.name)
@@ -98,9 +88,7 @@ class base_setup_config_choice(osv.osv_memory):
}
def config(self, cr, uid, ids, context=None):
- menu = self.get_default_menu(cr, uid, context=context)
- self.set_default_menu(cr, uid, menu, context=context)
-
+ self.reset_menu(cr, uid, context=context)
return self.pool.get('res.config').next(cr, uid, [], context=context)
base_setup_config_choice()
diff --git a/addons/base_synchro/__openerp__.py b/addons/base_synchro/__openerp__.py
index 69fcb839715..bd285821e2b 100644
--- a/addons/base_synchro/__openerp__.py
+++ b/addons/base_synchro/__openerp__.py
@@ -24,9 +24,12 @@
"version":"0.1",
"author":"Tiny",
"category":"Generic Modules/Base",
+ "description": """Synchronization with all objects.""",
"depends":["base"],
"demo_xml":[],
- "update_xml":["base_synchro_wizard.xml","base_synchro_view.xml"],
+ "update_xml":[ "wizard/base_synchro_view.xml",
+ "base_synchro_view.xml",
+ "security/ir.model.access.csv",],
"active":False,
"installable":True,
}
diff --git a/addons/base_synchro/base_synchro_obj.py b/addons/base_synchro/base_synchro_obj.py
index 5093c8f787e..64fad4cd687 100755
--- a/addons/base_synchro/base_synchro_obj.py
+++ b/addons/base_synchro/base_synchro_obj.py
@@ -42,7 +42,7 @@ class base_synchro_server(osv.osv):
base_synchro_server()
class base_synchro_obj(osv.osv):
- '''Class to store the operations done by wizart'''
+ '''Class to store the operations done by wizard'''
_name = "base.synchro.obj"
_description = "Register Class"
_columns = {
@@ -66,6 +66,10 @@ class base_synchro_obj(osv.osv):
#
# Return a list of changes: [ (date, id) ]
#
+
+ def get_ids(self, cr, uid, object, dt, domain=[], context={}):
+ return self._get_ids(cr, uid, object, dt, domain, context)
+
def _get_ids(self, cr, uid, object, dt, domain=[], context={}):
result = []
if dt:
diff --git a/addons/base_synchro/base_synchro_view.xml b/addons/base_synchro/base_synchro_view.xml
index 97995106070..e35a43837fa 100755
--- a/addons/base_synchro/base_synchro_view.xml
+++ b/addons/base_synchro/base_synchro_view.xml
@@ -30,6 +30,37 @@
+
+ base.synchro.obj.line.form
+ base.synchro.obj.line
+ search
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Filters
+ ir.actions.act_window
+ base.synchro.obj.line
+ form
+
+
+
+
Synchronized instances
@@ -56,7 +87,7 @@
-
+
@@ -81,6 +112,37 @@
+
+ base.synchro.obj.line.form
+ base.synchro.obj
+ search
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Filters
+ ir.actions.act_window
+ base.synchro.obj
+ form
+
+
+
+
Synchronized objectsir.actions.act_window
@@ -115,15 +177,15 @@
form
diff --git a/addons/base_synchro/base_synchro_wizard.xml b/addons/base_synchro/base_synchro_wizard.xml
deleted file mode 100644
index b26b3bbae2b..00000000000
--- a/addons/base_synchro/base_synchro_wizard.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/addons/base_synchro/security/ir.model.access.csv b/addons/base_synchro/security/ir.model.access.csv
new file mode 100644
index 00000000000..fa0f00e8ccd
--- /dev/null
+++ b/addons/base_synchro/security/ir.model.access.csv
@@ -0,0 +1,5 @@
+"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+"base_synchro_server","base.synchro.server","model_base_synchro_server","base.group_system",1,1,1,1
+" base_synchro_obj"," base.synchro.obj","model_base_synchro_obj","base.group_system",1,1,1,1
+"base_synchro_obj_avoid","base.synchro.obj.avoid","model_base_synchro_obj_avoid","base.group_system",1,1,1,1
+"base_synchro_obj_line","base.synchro.obj.line","model_base_synchro_obj_line","base.group_system",1,1,1,1
diff --git a/addons/base_synchro/wizard/__init__.py b/addons/base_synchro/wizard/__init__.py
index 7ff450acd76..3deff83f9e3 100644
--- a/addons/base_synchro/wizard/__init__.py
+++ b/addons/base_synchro/wizard/__init__.py
@@ -19,4 +19,5 @@
#
##############################################################################
import base_synchro
+
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/base_synchro/wizard/base_synchro.py b/addons/base_synchro/wizard/base_synchro.py
index 3a394d4ba3b..c83ec7df0e9 100644
--- a/addons/base_synchro/wizard/base_synchro.py
+++ b/addons/base_synchro/wizard/base_synchro.py
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+## -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
@@ -18,7 +18,6 @@
# along with this program. If not, see .
#
##############################################################################
-import wizard
import osv
from datetime import date
import time
@@ -27,26 +26,7 @@ import xmlrpclib
import re
import tools
import threading
-
-acc_synchro_form = '''
-'''
-
-acc_synchro_fields = {
- 'server_url': {'string':'Server URL', 'type':'many2one', 'relation':'base.synchro.server','required':True},
- 'user_id': {'string':'Send Result To', 'type':'many2one', 'relation':'res.users', 'default': lambda uid,data,state: uid},
-}
-
-finish_form ='''
-
-'''
+from osv import osv, fields
class RPCProxyOne(object):
def __init__(self, server, ressource):
@@ -66,13 +46,26 @@ class RPCProxy(object):
def get(self, ressource):
return RPCProxyOne(self.server, ressource)
-class wizard_cost_account_synchro(wizard.interface):
+class base_synchro(osv.osv_memory):
+ """Base Synchronization """
+ _name = 'base.synchro'
+
+ _columns = {
+ 'server_url': fields.many2one('base.synchro.server', "Server URL", required=True),
+ 'user_id': fields.many2one('res.users', "Send Result To",),
+ }
+
+ _defaults = {
+ 'user_id': lambda self,cr,uid,context: uid,
+ }
+
start_date = time.strftime('%Y-%m-%d, %Hh %Mm %Ss')
report = []
report_total = 0
report_create = 0
report_write = 0
- def _synchronize(self, cr, uid, server, object, context):
+
+ def synchronize(self, cr, uid, server, object, context):
pool = pooler.get_pool(cr.dbname)
self.meta = {}
ids = []
@@ -80,14 +73,14 @@ class wizard_cost_account_synchro(wizard.interface):
pool2 = pool
#try:
if object.action in ('d','b'):
- ids = pool1.get('base.synchro.obj')._get_ids(cr, uid,
+ ids = pool1.get('base.synchro.obj').get_ids(cr, uid,
object.model_id.model,
object.synchronize_date,
eval(object.domain),
{'action':'d'}
)
if object.action in ('u','b'):
- ids += pool2.get('base.synchro.obj')._get_ids(cr, uid,
+ ids += pool2.get('base.synchro.obj').get_ids(cr, uid,
object.model_id.model,
object.synchronize_date,
eval(object.domain),
@@ -109,7 +102,7 @@ class wizard_cost_account_synchro(wizard.interface):
if object.model_id.model=='crm.case.history':
fields = ['email','description','log_id']
value = pool_src.get(object.model_id.model).read(cr, uid, [id], fields)[0]
- value = self._data_transform(cr, uid, pool_src, pool_dest, object.model_id.model, value, action)
+ value = self.data_transform(cr, uid, pool_src, pool_dest, object.model_id.model, value, action)
id2 = self.get_id(cr, uid, object.id, id, action, context)
#
# Transform value
@@ -133,7 +126,7 @@ class wizard_cost_account_synchro(wizard.interface):
else:
print value
idnew = pool_dest.get(object.model_id.model).create(cr, uid, value)
- synid = pool.get('base.synchro.obj.line').create(cr, uid, {
+ synid = self.pool.get('base.synchro.obj.line').create(cr, uid, {
'obj_id': object.id,
'local_id': (action=='u') and id or idnew,
'remote_id': (action=='d') and id or idnew
@@ -141,25 +134,20 @@ class wizard_cost_account_synchro(wizard.interface):
self.report_total+=1
self.report_create+=1
self.meta = {}
- return 'finish'
+ return True
- #
- # IN: object and ID
- # OUT: ID of the remote object computed:
- # If object is synchronised, read the sync database
- # Otherwise, use the name_search method
- #
def get_id(self, cr, uid, object_id, id, action, context={}):
pool = pooler.get_pool(cr.dbname)
+ line_pool = pool.get('base.synchro.obj.line')
field_src = (action=='u') and 'local_id' or 'remote_id'
field_dest = (action=='d') and 'local_id' or 'remote_id'
- rid = pool.get('base.synchro.obj.line').search(cr, uid, [('obj_id','=',object_id), (field_src,'=',id)], context=context)
+ rid = line_pool.search(cr, uid, [('obj_id','=',object_id), (field_src,'=',id)], context=context)
result = False
if rid:
- result = pool.get('base.synchro.obj.line').read(cr, uid, rid, [field_dest], context=context)[0][field_dest]
+ result = line_pool.read(cr, uid, rid, [field_dest], context=context)[0][field_dest]
return result
- def _relation_transform(self, cr, uid, pool_src, pool_dest, object, id, action, context={}):
+ def relation_transform(self, cr, uid, pool_src, pool_dest, object, id, action, context={}):
if not id:
return False
pool = pooler.get_pool(cr.dbname)
@@ -186,7 +174,14 @@ class wizard_cost_account_synchro(wizard.interface):
print self.report.append('WARNING: Record "%s" on relation %s not found, set to null.' % (names,object))
return result
- def _data_transform(self, cr, uid, pool_src, pool_dest, object, data, action='u', context={}):
+ #
+ # IN: object and ID
+ # OUT: ID of the remote object computed:
+ # If object is synchronised, read the sync database
+ # Otherwise, use the name_search method
+ #
+
+ def data_transform(self, cr, uid, pool_src, pool_dest, object, data, action='u', context={}):
self.meta.setdefault(pool_src, {})
if not object in self.meta[pool_src]:
self.meta[pool_src][object] = pool_src.get(object).fields_get(cr, uid, context)
@@ -201,12 +196,12 @@ class wizard_cost_account_synchro(wizard.interface):
del data[f]
elif ftype == 'many2one':
if data[f]:
- df = self._relation_transform(cr, uid, pool_src, pool_dest, fields[f]['relation'], data[f][0], action, context)
+ df = self.relation_transform(cr, uid, pool_src, pool_dest, fields[f]['relation'], data[f][0], action, context)
data[f] = df
if not data[f]:
del data[f]
elif ftype == 'many2many':
- res = map(lambda x: self._relation_transform(cr, uid, pool_src, pool_dest, fields[f]['relation'], x, action, context), data[f])
+ res = map(lambda x: self.relation_transform(cr, uid, pool_src, pool_dest, fields[f]['relation'], x, action, context), data[f])
data[f] = [(6, 0, res)]
del data['id']
return data
@@ -215,21 +210,22 @@ class wizard_cost_account_synchro(wizard.interface):
# Find all objects that are created or modified after the synchronize_date
# Synchronize these obejcts
#
- def _upload_download(self, db_name, uid, data, context):
- cr = pooler.get_db(db_name).cursor()
+
+
+ def upload_download(self, cr, uid, ids, context):
start_date = time.strftime('%Y-%m-%d, %Hh %Mm %Ss')
+ syn_obj = self.browse(cr, uid, ids)[0]
pool = pooler.get_pool(cr.dbname)
- server = pool.get('base.synchro.server').browse(cr, uid, data['form']['server_url'], context)
+ server = pool.get('base.synchro.server').browse(cr, uid, ids, context)[0]
for object in server.obj_ids:
dt = time.strftime('%Y-%m-%d %H:%M:%S')
- self._synchronize(cr, uid, server, object, context)
+ self.synchronize(cr, uid, server, object, context)
if object.action=='b':
time.sleep(1)
dt = time.strftime('%Y-%m-%d %H:%M:%S')
- pool.get('base.synchro.obj').write(cr, uid, [object.id], {'synchronize_date': dt})
- cr.commit()
+ self.pool.get('base.synchro.obj').write(cr, uid, [object.id], {'synchronize_date': dt})
end_date = time.strftime('%Y-%m-%d, %Hh %Mm %Ss')
- if 'user_id' in data['form'] and data['form']['user_id']:
+ if 'user_id' in syn_obj.user_id:
request = pooler.get_pool(cr.dbname).get('res.request')
if not self.report:
self.report.append('No exception.')
@@ -248,32 +244,26 @@ Exceptions:
request.create(cr, uid, {
'name' : "Synchronization report",
'act_from' : uid,
- 'act_to' : data['form']['user_id'],
+ 'act_to' : syn_obj.user_id,
'body': summary,
})
- cr.commit()
- cr.close()
- return 'finish'
+ return True
- def _upload_download_multi_thread(self, cr, uid, data, context):
- threaded_synchronization = threading.Thread(target=self._upload_download, args=(cr.dbname, uid, data, context))
- threaded_synchronization.start()
- return 'finish'
-
- states = {
- 'init': {
- 'actions': [],
- 'result': {'type':'form', 'arch':acc_synchro_form, 'fields':acc_synchro_fields, 'state':[('end','Cancel'),('upload_download','Synchronize')]}
- },
- 'upload_download': {
- 'actions': [],
- 'result':{'type':'choice', 'next_state': _upload_download_multi_thread}
- },
- 'finish': {
- 'actions': [],
- 'result':{'type':'form', 'arch':finish_form,'fields':{},'state':[('end','Ok')]}
- },
- }
-wizard_cost_account_synchro('account.analytic.account.transfer')
+ def upload_download_multi_thread(self, cr, uid, data, context):
+ threaded_synchronization = threading.Thread(target=self.upload_download, args=(cr, uid, data, context))
+ threaded_synchronization.run()
+ data_obj = self.pool.get('ir.model.data')
+ id2 = data_obj._get_id(cr, uid, 'base_synchro', 'view_base_synchro_finish')
+ if id2:
+ id2 = data_obj.browse(cr, uid, id2, context=context).res_id
+ return {
+ 'view_type': 'form',
+ 'view_mode': 'form',
+ 'res_model': 'base.synchro',
+ 'views': [(id2, 'form')],
+ 'view_id': False,
+ 'type': 'ir.actions.act_window',
+ 'target': 'new',
+ }
+base_synchro()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-
diff --git a/addons/base_synchro/wizard/base_synchro_view.xml b/addons/base_synchro/wizard/base_synchro_view.xml
new file mode 100644
index 00000000000..291e2c4385e
--- /dev/null
+++ b/addons/base_synchro/wizard/base_synchro_view.xml
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+ Base Synchronization
+ base.synchro
+ form
+
+
+
+
+
+
+ Base Synchronization
+ ir.actions.act_window
+ base.synchro
+ form
+ form
+ new
+
+
+
+
+ Base Synchronization
+ base.synchro
+ form
+
+
+
+
+
+
+
+
+
+
diff --git a/addons/board/board_view.xml b/addons/board/board_view.xml
index 984a17caa51..d48ddd6a025 100644
--- a/addons/board/board_view.xml
+++ b/addons/board/board_view.xml
@@ -1,9 +1,6 @@
-
board.note.search
@@ -23,7 +20,7 @@
-
+
@@ -33,11 +30,11 @@
-
+
-
+
@@ -113,7 +110,7 @@
-
+
board.board.searchboard.board
@@ -136,19 +133,13 @@
-
+ id="menu_view_board_form" parent="base.reporting_menu" sequence="1"/>
\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: 2010-09-29 05:11+0000\n"
+"X-Launchpad-Export-Date: 2010-10-05 04:57+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: board
@@ -21,8 +21,7 @@ msgstr ""
msgid ""
"The Object name must start with x_ and not contain any special character !"
msgstr ""
-"O nome do objeto precisa iniciar com x_ e não conter nenhum caracter "
-"especial!"
+"O nome do objeto deve começar com x_ e não conter caracteres especiais!"
#. module: board
#: model:ir.model,name:board.model_board_board
@@ -110,7 +109,7 @@ msgstr "Criar menu para painel"
#. module: board
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
-msgstr "Invalido XML para Arquitetura da View"
+msgstr "XML inválido para Arquitetura da View!"
#. module: board
#: wizard_field:board.board.menu.create,init,menu_parent_id:0
diff --git a/addons/caldav/calendar.py b/addons/caldav/calendar.py
index 88b0549a3de..d22fa98f6e4 100644
--- a/addons/caldav/calendar.py
+++ b/addons/caldav/calendar.py
@@ -61,10 +61,10 @@ def uid2openobjectid(cr, uidval, oomodel, rdate):
model_obj = pooler.get_pool(cr.dbname).get(model)
if (not model == oomodel) or (not dbname == cr.dbname):
return (False, None)
- qry = 'select distinct(id) from %s' % model_obj._table
+ qry = 'SELECT DISTINCT(id) FROM %s' % model_obj._table
if rdate:
- qry += " where recurrent_id='%s'" % (rdate)
- cr.execute(qry)
+ qry += " WHERE recurrent_id=%s"
+ cr.execute(qry, (rdate,))
r_id = cr.fetchone()
if r_id:
return (id, r_id[0])
@@ -364,8 +364,8 @@ class CalDAV(object):
model_obj = self.pool.get(model)
r_ids = []
if model_obj._columns.get('recurrent_uid', None):
- cr.execute('select id from %s where recurrent_uid=%s'
- % (model_obj._table, data[map_field]))
+ cr.execute('SELECT id FROM %s WHERE recurrent_uid=%%s' % model_obj._table,
+ (data[map_field],))
r_ids = map(lambda x: x[0], cr.fetchall())
if r_ids:
r_datas = model_obj.read(cr, uid, r_ids, context=context)
@@ -715,8 +715,9 @@ class basic_calendar_line(osv.osv):
@param context: A standard dictionary for contextual values
"""
- cr.execute("Select count(id) from basic_calendar_lines \
- where name='%s' and calendar_id=%s" % (vals.get('name'), vals.get('calendar_id')))
+ cr.execute("SELECT COUNT(id) FROM basic_calendar_lines \
+ WHERE name=%s AND calendar_id=%s",
+ (vals.get('name'), vals.get('calendar_id')))
res = cr.fetchone()
if res:
if res[0] > 0:
@@ -797,8 +798,8 @@ class basic_calendar_fields(osv.osv):
@param context: A standard dictionary for contextual values
"""
- cr.execute('select name from basic_calendar_attributes \
- where id=%s' % (vals.get('name')))
+ cr.execute('SELECT name FROM basic_calendar_attributes \
+ WHERE id=%s', (vals.get('name'),))
name = cr.fetchone()
name = name[0]
if name in ('valarm', 'attendee'):
diff --git a/addons/caldav/calendar_collection.py b/addons/caldav/calendar_collection.py
index 06e799b1686..8dd4ff053c9 100644
--- a/addons/caldav/calendar_collection.py
+++ b/addons/caldav/calendar_collection.py
@@ -34,11 +34,11 @@ class calendar_collection(osv.osv):
def _get_root_calendar_directory(self, cr, uid, context=None):
objid = self.pool.get('ir.model.data')
try:
- mid = objid._get_id(cr, uid, 'document', 'dir_calendars')
+ mid = objid._get_id(cr, uid, 'document', 'dir_calendars')
if not mid:
return False
- root_id = objid.read(cr, uid, mid, ['res_id'])['res_id']
- root_cal_dir = self.browse(cr, uid, root_id, context=context)
+ root_id = objid.read(cr, uid, mid, ['res_id'])['res_id']
+ root_cal_dir = self.browse(cr,uid, root_id, context=context)
return root_cal_dir.name
except Exception, e:
import netsvc
@@ -67,7 +67,7 @@ class calendar_collection(osv.osv):
], limit=1, context=context)
root_cal_dir = self._get_root_calendar_directory(cr, uid, context=context)
- if not calendar_ids:
+ if not calendar_ids:
return root_cal_dir
calendar_id = calendar_ids[0]
calendar = calendar_obj.browse(cr, uid, calendar_id,
diff --git a/addons/claim_from_delivery/i18n/ru.po b/addons/claim_from_delivery/i18n/ru.po
index 2d5b27ce972..611b3900cd8 100644
--- a/addons/claim_from_delivery/i18n/ru.po
+++ b/addons/claim_from_delivery/i18n/ru.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2010-08-20 12:02+0000\n"
-"PO-Revision-Date: 2010-09-29 13:45+0000\n"
+"PO-Revision-Date: 2010-09-30 06:47+0000\n"
"Last-Translator: Chertykov Denis \n"
"Language-Team: Russian \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-09-30 04:43+0000\n"
+"X-Launchpad-Export-Date: 2010-10-01 08:47+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: claim_from_delivery
diff --git a/addons/crm/__openerp__.py b/addons/crm/__openerp__.py
index 5de8de6de68..89dc61bef59 100644
--- a/addons/crm/__openerp__.py
+++ b/addons/crm/__openerp__.py
@@ -119,7 +119,6 @@ Create dashboard for CRM that includes:
'crm_meeting_demo.xml',
'crm_opportunity_demo.xml',
'crm_phonecall_demo.xml',
- 'board_crm_demo.xml',
],
'test': [
'test/test_crm_lead.yml',
diff --git a/addons/crm/board_crm_demo.xml b/addons/crm/board_crm_demo.xml
deleted file mode 100644
index fd8bb480d68..00000000000
--- a/addons/crm/board_crm_demo.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/addons/crm/board_crm_view.xml b/addons/crm/board_crm_view.xml
index 8aa1d96d403..c299741280a 100644
--- a/addons/crm/board_crm_view.xml
+++ b/addons/crm/board_crm_view.xml
@@ -17,7 +17,7 @@
-
+
crm.lead.report.graphcrm.lead.report
@@ -29,7 +29,7 @@
-
+
Opportunitiescrm.lead
@@ -71,7 +71,7 @@
tree,form[('user_id','=',uid),('state','=','open'), ('type', '=', 'opportunity')]
-
+
tree
@@ -111,11 +111,11 @@
- CRM - Dashboard Form
+ Sales Dashboard Formboard.boardform
-
- CRM Dashboard
+ Sales Dashboardboard.boardformform
@@ -154,10 +154,10 @@
-
+
\ No newline at end of file
diff --git a/addons/crm/crm.py b/addons/crm/crm.py
index edfe79540e6..76ac424f1e0 100644
--- a/addons/crm/crm.py
+++ b/addons/crm/crm.py
@@ -145,53 +145,29 @@ class crm_case(object):
@param context: A standard dictionary for contextual values"""
if not context:
context = {}
- s = self.get_stage_dict(cr, uid, ids, context=context)
- section = self._name
- stage = False
+ stage_pool = self.pool.get('crm.case.stage')
+ model = self._name
for case in self.browse(cr, uid, ids, context):
- if section in s:
- st = not context.get('force_domain', False) and case.stage_id.id or False
- if st in s[section]:
- data = {'stage_id': s[section][st]}
- stage = s[section][st]
- self.write(cr, uid, [case.id], data)
- return stage
-
- def get_stage_dict(self, cr, uid, ids, context=None):
- """This function gives dictionary for stage according to stage levels
- @param self: The object pointer
- @param cr: the current row, from the database cursor,
- @param uid: the current user’s ID for security checks,
- @param ids: List of case IDs
- @param context: A standard dictionary for contextual values"""
- if not context:
- context = {}
- stage_obj = self.pool.get('crm.case.stage')
- res = self.read(cr, uid, ids, ['section_id', 'stage_id'], context)[0]
- section_id = res['section_id'] and res['section_id'][0] or False
- stage_id = res['stage_id'] and res['stage_id'][0] or False
-
- # We select either the stages in the same section as the current stage
- # if it a stage that does not have a section, or the stages of the
- # current section of the case
- if stage_id:
- stage_record = stage_obj.browse(cr, uid, stage_id)
- if not stage_record.section_id:
- section_id = False # only select stages without section
-
- domain = [('object_id.model', '=', self._name), '|', ('section_id', '=', section_id),('section_id','=',False)]
- if 'force_domain' in context and context['force_domain']:
- domain += context['force_domain']
- sid = stage_obj.search(cr, uid, domain, context=context)
- s = {}
- previous = {}
- section = self._name
-
- for stage in stage_obj.browse(cr, uid, sid, context=context):
- s.setdefault(section, {})
- s[section][previous.get(section, False)] = stage.id
- previous[section] = stage.id
- return s
+ next_stage = False
+ data = {}
+ domain = [('object_id.model', '=', model)]
+ if case.section_id and case.section_id.stage_ids:
+ domain.append(('id', 'in', map(lambda x: x.id, case.section_id.stage_ids)))
+ stages = stage_pool.search(cr, uid, domain, order='sequence')
+ index = -1
+ if case.stage_id and case.stage_id.id in stages:
+ index = stages.index(case.stage_id.id)
+ if index + 1 == len(stages):
+ return False
+ else:
+ next_stage = stages[index + 1]
+ if next_stage:
+ data = {'stage_id': next_stage}
+ stage = stage_pool.browse(cr, uid, next_stage, context=context)
+ if stage.on_change:
+ data.update({'probability': stage.probability})
+ self.write(cr, uid, [case.id], data, context=context)
+ return next_stage
def stage_previous(self, cr, uid, ids, context=None):
"""This function computes previous stage for case from its current stage
@@ -203,21 +179,28 @@ class crm_case(object):
@param context: A standard dictionary for contextual values"""
if not context:
context = {}
-
- s = self.get_stage_dict(cr, uid, ids, context=context)
- section = self._name
stage_pool = self.pool.get('crm.case.stage')
+ model = self._name
for case in self.browse(cr, uid, ids, context):
- if section in s:
- st = not context.get('force_domain', False) and case.stage_id.id or False
- s[section] = dict([(v, k) for (k, v) in s[section].iteritems()])
- if st in s[section]:
- data = {'stage_id': s[section][st]}
- if s[section][st]:
- stage = stage_pool.browse(cr, uid, s[section][st], context=context)
- if stage.on_change:
- data.update({'probability': stage.probability})
- self.write(cr, uid, [case.id], data)
+ prev_stage = False
+ data = {}
+ domain = [('object_id.model', '=', model)]
+ if case.section_id and case.section_id.stage_ids:
+ domain.append(('id', 'in', map(lambda x: x.id, case.section_id.stage_ids)))
+ stages = stage_pool.search(cr, uid, domain, order='sequence')
+ index = 0
+ if case.stage_id and case.stage_id.id in stages:
+ index = stages.index(case.stage_id.id)
+ if index == 0:
+ return False
+ else:
+ prev_stage = stages[index - 1]
+ if prev_stage:
+ data = {'stage_id': prev_stage}
+ stage = stage_pool.browse(cr, uid, prev_stage, context=context)
+ if stage.on_change:
+ data.update({'probability': stage.probability})
+ self.write(cr, uid, [case.id], data, context=context)
return True
def onchange_partner_id(self, cr, uid, ids, part, email=False):
@@ -492,6 +475,43 @@ class crm_case(object):
return res
+class crm_case_stage(osv.osv):
+ """ Stage of case """
+
+ _name = "crm.case.stage"
+ _description = "Stage of case"
+ _rec_name = 'name'
+ _order = "sequence"
+
+ _columns = {
+ 'name': fields.char('Stage Name', size=64, required=True, translate=True),
+ 'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of case stages."),
+ 'object_id': fields.many2one('ir.model', 'Object Name'),
+ 'probability': fields.float('Probability (%)', required=True, help="This percentage depicts the default/average probability of the Case for this stage to be a success"),
+ 'on_change': fields.boolean('Change Probability Automatically', \
+ help="Change Probability on next and previous stages."),
+ 'requirements': fields.text('Requirements')
+ }
+ def _find_object_id(self, cr, uid, context=None):
+ """Finds id for case object
+ @param self: The object pointer
+ @param cr: the current row, from the database cursor,
+ @param uid: the current user’s ID for security checks,
+ @param context: A standard dictionary for contextual values
+ """
+ object_id = context and context.get('object_id', False) or False
+ ids = self.pool.get('ir.model').search(cr, uid, [('model', '=', object_id)])
+ return ids and ids[0]
+
+ _defaults = {
+ 'sequence': lambda *args: 1,
+ 'probability': lambda *args: 0.0,
+ 'object_id' : _find_object_id
+ }
+
+crm_case_stage()
+
+
class crm_case_section(osv.osv):
"""Sales Team"""
@@ -517,7 +537,8 @@ class crm_case_section(osv.osv):
'child_ids': fields.one2many('crm.case.section', 'parent_id', 'Child Teams'),
'resource_calendar_id': fields.many2one('resource.calendar', "Resource's Calendar"),
'note': fields.text('Description'),
- 'working_hours': fields.float('Working Hours', digits=(16,2 )),
+ 'working_hours': fields.float('Working Hours', digits=(16,2 )),
+ 'stage_ids':fields.many2many('crm.case.stage', 'section_stage_rel', 'section_id', 'stage_id', 'Stages'),
}
_defaults = {
@@ -619,43 +640,6 @@ class crm_case_resource_type(osv.osv):
crm_case_resource_type()
-class crm_case_stage(osv.osv):
- """ Stage of case """
-
- _name = "crm.case.stage"
- _description = "Stage of case"
- _rec_name = 'name'
- _order = "sequence"
-
- _columns = {
- 'name': fields.char('Stage Name', size=64, required=True, translate=True),
- 'section_id': fields.many2one('crm.case.section', 'Sales Team'),
- 'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of case stages."),
- 'object_id': fields.many2one('ir.model', 'Object Name'),
- 'probability': fields.float('Probability (%)', required=True, help="This percentage depicts the default/average probability of the Case for this stage to be a success"),
- 'on_change': fields.boolean('Change Probability Automatically', \
- help="Change Probability on next and previous stages."),
- 'requirements': fields.text('Requirements')
- }
- def _find_object_id(self, cr, uid, context=None):
- """Finds id for case object
- @param self: The object pointer
- @param cr: the current row, from the database cursor,
- @param uid: the current user’s ID for security checks,
- @param context: A standard dictionary for contextual values
- """
- object_id = context and context.get('object_id', False) or False
- ids = self.pool.get('ir.model').search(cr, uid, [('model', '=', object_id)])
- return ids and ids[0]
-
- _defaults = {
- 'sequence': lambda *args: 1,
- 'probability': lambda *args: 0.0,
- 'object_id' : _find_object_id
- }
-
-crm_case_stage()
-
def _links_get(self, cr, uid, context=None):
"""Gets links value for reference field
@param self: The object pointer
diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py
index cdc3553dc0e..263339c7121 100644
--- a/addons/crm/crm_lead.py
+++ b/addons/crm/crm_lead.py
@@ -126,8 +126,8 @@ class crm_lead(crm_case, osv.osv):
'contact_name': fields.char('Contact Name', size=64),
'partner_name': fields.char("Partner Name", size=64),
- 'optin': fields.boolean('Opt-In'),
- 'optout': fields.boolean('Opt-Out'),
+ 'optin': fields.boolean('Opt-In', help="If opt-in is checked, this contact has accepted to receive emails."),
+ 'optout': fields.boolean('Opt-Out', help="If opt-out is checked, this contact has refused to receive emails or unsubscribed to a campaign."),
'type':fields.selection([
('lead','Lead'),
('opportunity','Opportunity'),
@@ -185,14 +185,16 @@ class crm_lead(crm_case, osv.osv):
@param *args: Give Tuple Value
"""
old_state = self.read(cr, uid, ids, ['state'])[0]['state']
+ old_stage_id = self.read(cr, uid, ids, ['stage_id'])[0]['stage_id']
res = super(crm_lead, self).case_open(cr, uid, ids, *args)
if old_state == 'draft':
- stage_id = super(crm_lead, self).stage_next(cr, uid, ids, *args)
- if stage_id:
- value = self.onchange_stage_id(cr, uid, ids, stage_id, context={})['value']
- else:
- value = {}
- value.update({'date_open': time.strftime('%Y-%m-%d %H:%M:%S'), 'stage_id': stage_id})
+ value = {}
+ if not old_stage_id:
+ stage_id = super(crm_lead, self).stage_next(cr, uid, ids, *args)
+ if stage_id:
+ value.update({'stage_id': stage_id})
+ value.update(self.onchange_stage_id(cr, uid, ids, stage_id, context={})['value'])
+ value.update({'date_open': time.strftime('%Y-%m-%d %H:%M:%S')})
self.write(cr, uid, ids, value)
for (id, name) in self.name_get(cr, uid, ids):
diff --git a/addons/crm/crm_lead_data.xml b/addons/crm/crm_lead_data.xml
index 2616d97d612..2a49e43e683 100644
--- a/addons/crm/crm_lead_data.xml
+++ b/addons/crm/crm_lead_data.xml
@@ -8,7 +8,6 @@
New
-
@@ -16,7 +15,6 @@
Qualification
-
@@ -24,7 +22,6 @@
Proposition
-
@@ -32,15 +29,14 @@
Negotiation
-
- Win
+ Won
-
+
@@ -48,10 +44,15 @@
Lost
-
+
+ Sales Department
+ Sales
+
+
+
Telesales
diff --git a/addons/crm/crm_lead_menu.xml b/addons/crm/crm_lead_menu.xml
index 65daf5d79d5..b98d26a0e6e 100644
--- a/addons/crm/crm_lead_menu.xml
+++ b/addons/crm/crm_lead_menu.xml
@@ -8,9 +8,8 @@
tree,form['|', ('type','=','lead'), ('type','=',False)]
- {"search_default_user_id":uid,'search_default_current':1}
- {'search_default_current':1, 'default_type': 'lead', 'search_default_section_id':section_id}
+ {'search_default_current':1, 'default_type': 'lead', 'search_default_section_id': section_id}A lead is a first, unqualified, contact with a new prospect. Use leads when you import a database of prospects or integrate your website's contact form with OpenERP. After having been qualified, the lead can be converted to a partner and a business opportunity for a further detailed tracking of the related activities.
diff --git a/addons/crm/crm_lead_view.xml b/addons/crm/crm_lead_view.xml
index 40317a4b188..c1e37445c6c 100644
--- a/addons/crm/crm_lead_view.xml
+++ b/addons/crm/crm_lead_view.xml
@@ -55,8 +55,7 @@
-
+
-
-
+
@@ -125,14 +125,16 @@
-
-
+
-
+
@@ -146,10 +148,6 @@
-
-
-
@@ -92,14 +91,14 @@
string="Todo"
domain="[('state','in',('draft','open'))]"
help="Phone calls which are in draft and open state"/>
-
+
-
+
-
-
+
@@ -128,19 +127,16 @@
-
-
-
-
+
-
diff --git a/addons/crm/security/crm_security.xml b/addons/crm/security/crm_security.xml
index 9c63e611e93..5f3863882f5 100644
--- a/addons/crm/security/crm_security.xml
+++ b/addons/crm/security/crm_security.xml
@@ -10,6 +10,17 @@
Sales / User
+
+ Sales / User / See Personal Leads
+
+
+
+ Personal Leads
+
+ ['|',('user_id','=',user.id),('user_id','=',False)]
+
+
+
diff --git a/addons/crm/wizard/crm_send_email.py b/addons/crm/wizard/crm_send_email.py
index 13dae7b35a1..de4d616b67b 100644
--- a/addons/crm/wizard/crm_send_email.py
+++ b/addons/crm/wizard/crm_send_email.py
@@ -57,6 +57,7 @@ class crm_send_new_email(osv.osv_memory):
'body': fields.text('Message Body', required=True),
'state': fields.selection(AVAILABLE_STATES, string='Set New State To', required=True),
'attachment_ids' : fields.one2many('crm.send.mail.attachment', 'wizard_id'),
+ 'html': fields.boolean('HTML formatting?', help="Select this if you want to send email with HTML formatting."),
}
def action_send(self, cr, uid, ids, context=None):
@@ -79,6 +80,7 @@ class crm_send_new_email(osv.osv_memory):
(x.name, base64.decodestring(x.binary)) for x in obj.attachment_ids
]
+ subtype = 'plain'
message_id = None
ref_id = None
@@ -119,6 +121,9 @@ class crm_send_new_email(osv.osv_memory):
if message_id:
x_headers['References'] = "%s" % (message_id)
+ if obj.html:
+ subtype = 'html'
+
flag = tools.email_send(
email_from,
emails,
@@ -126,13 +131,14 @@ class crm_send_new_email(osv.osv_memory):
body,
email_cc=email_cc,
attach=attach,
+ subtype=subtype,
reply_to=obj.reply_to,
openobject_id=str(case.id),
x_headers=x_headers
)
-# if not flag:
-# raise osv.except_osv(_('Error!'), _('Unable to send mail. Please check SMTP is configured properly.'))
+ if not flag:
+ raise osv.except_osv(_('Error!'), _('Unable to send mail. Please check SMTP is configured properly.'))
msg_dict = {'new': 'Send', 'reply': 'Reply', 'forward': 'Forward'}
case_pool.history(cr, uid, [case], _(msg_dict[context.get('mail', 'new')]), history=True, \
diff --git a/addons/crm/wizard/crm_send_email_view.xml b/addons/crm/wizard/crm_send_email_view.xml
index 91a934da0e0..ebbb72592f2 100644
--- a/addons/crm/wizard/crm_send_email_view.xml
+++ b/addons/crm/wizard/crm_send_email_view.xml
@@ -16,6 +16,7 @@
+
diff --git a/addons/crm_claim/crm_claim.py b/addons/crm_claim/crm_claim.py
index d6c6603b829..8e514f91f39 100644
--- a/addons/crm_claim/crm_claim.py
+++ b/addons/crm_claim/crm_claim.py
@@ -70,7 +70,7 @@ class crm_claim(crm.crm_case, osv.osv):
'partner_name': fields.char("Employee's Name", size=64),
'partner_mobile': fields.char('Mobile', size=32),
'partner_phone': fields.char('Phone', size=32),
- 'stage_id': fields.many2one ('crm.case.stage', 'Stage'),
+ 'stage_id': fields.many2one ('crm.case.stage', 'Stage', domain="('object_id.model', '=', 'crm.claim')]"),
'probability': fields.float('Probability (%)'),
'state': fields.selection(crm.AVAILABLE_STATES, 'State', size=16, readonly=True,
help='The state is set to \'Draft\', when a case is created.\
diff --git a/addons/crm_claim/crm_claim_data.xml b/addons/crm_claim/crm_claim_data.xml
index cd8db8499a5..fc387658c97 100644
--- a/addons/crm_claim/crm_claim_data.xml
+++ b/addons/crm_claim/crm_claim_data.xml
@@ -71,6 +71,11 @@
-
+
+
+ Sales Department
+ Sales
+
+
diff --git a/addons/crm_claim/crm_claim_menu.xml b/addons/crm_claim/crm_claim_menu.xml
index 3e853936541..3a4b63047ea 100644
--- a/addons/crm_claim/crm_claim_menu.xml
+++ b/addons/crm_claim/crm_claim_menu.xml
@@ -14,7 +14,7 @@
formtree,calendar,form,graph
- {"search_default_section_id":section_id,"search_default_current":1,"search_default_user_id":uid}
+ {'search_default_section_id': section_id, "search_default_current":1,"search_default_user_id":uid}Record and trace your customers' claims here. A claim is defined by a client name, several types, a status and a priority level. A claim can also be a preventive or repairing action. A claim can be linked to a reference like a sales order, or a lot. You can send emails with attachments and get the history of the claim treatment (emails send, interventions type, etc.).
diff --git a/addons/crm_claim/crm_claim_view.xml b/addons/crm_claim/crm_claim_view.xml
index da73f879eab..6b5f21df920 100644
--- a/addons/crm_claim/crm_claim_view.xml
+++ b/addons/crm_claim/crm_claim_view.xml
@@ -42,7 +42,7 @@
crm.claimtree
-
+
@@ -109,9 +109,9 @@
-
+ domain="[('object_id.model', '=', 'crm.claim')]" />
@@ -274,7 +274,11 @@
help="Unassigned Claims" />
+ widget="selection">
+
+
-
@@ -118,9 +118,9 @@
help="My company"/>
-
-
-
+
+
+
@@ -141,7 +141,7 @@
- crm.fundraising
tree,form,graph
- {"search_default_user_id":uid,"search_default_current":1}
+ {"search_default_user_id":uid,"search_default_current":1, 'search_default_section_id': section_id}When you wish to support your organization or a campaign, trace here all your activities for collecting money. The menu open a search list where you can find funds description, email, history, probability of success. Several actions buttons allows you to easily modify your different fund status.
diff --git a/addons/crm_fundraising/crm_fundraising_view.xml b/addons/crm_fundraising/crm_fundraising_view.xml
index 2021245c1f5..6bcf019dabe 100644
--- a/addons/crm_fundraising/crm_fundraising_view.xml
+++ b/addons/crm_fundraising/crm_fundraising_view.xml
@@ -89,7 +89,7 @@
-
+
@@ -274,7 +274,7 @@
diff --git a/addons/crm_fundraising/report/crm_fundraising_report_view.xml b/addons/crm_fundraising/report/crm_fundraising_report_view.xml
index 68cd85674ba..ab90f7ad0c1 100644
--- a/addons/crm_fundraising/report/crm_fundraising_report_view.xml
+++ b/addons/crm_fundraising/report/crm_fundraising_report_view.xml
@@ -118,7 +118,7 @@
-
+
@@ -138,7 +138,7 @@
- crm.helpdesk
tree,calendar,form
- {"search_default_user_id":uid}
+ {"search_default_user_id":uid, 'search_default_section_id': section_id}Alike records and processing of claims, Helpdesk and Support is a good tool to trace your interventions. This menu is more adapted to an oral communication, which is not necessarily related to a claim. Select a customer, add notes and categorize your interventions with a channel and a priority level.
diff --git a/addons/crm_helpdesk/crm_helpdesk_view.xml b/addons/crm_helpdesk/crm_helpdesk_view.xml
index 2abd5d0eff9..0531092dd98 100644
--- a/addons/crm_helpdesk/crm_helpdesk_view.xml
+++ b/addons/crm_helpdesk/crm_helpdesk_view.xml
@@ -249,7 +249,7 @@
diff --git a/addons/crm_helpdesk/i18n/ru.po b/addons/crm_helpdesk/i18n/ru.po
index 6383f942270..8d2b2e208fc 100644
--- a/addons/crm_helpdesk/i18n/ru.po
+++ b/addons/crm_helpdesk/i18n/ru.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2010-08-20 13:01+0000\n"
-"PO-Revision-Date: 2010-09-29 13:08+0000\n"
+"PO-Revision-Date: 2010-09-30 06:59+0000\n"
"Last-Translator: Chertykov Denis \n"
"Language-Team: Russian \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-09-30 04:44+0000\n"
+"X-Launchpad-Export-Date: 2010-10-01 08:48+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: crm_helpdesk
diff --git a/addons/crm_helpdesk/report/crm_helpdesk_report_view.xml b/addons/crm_helpdesk/report/crm_helpdesk_report_view.xml
index 8bb5307e62b..9490172e3e8 100644
--- a/addons/crm_helpdesk/report/crm_helpdesk_report_view.xml
+++ b/addons/crm_helpdesk/report/crm_helpdesk_report_view.xml
@@ -114,23 +114,24 @@
help="My company"/>
-
+
-
+
+
+
-
-
diff --git a/addons/crm_partner_assign/report/crm_lead_report.py b/addons/crm_partner_assign/report/crm_lead_report.py
index ac4c7684d9e..0b4659c7adb 100644
--- a/addons/crm_partner_assign/report/crm_lead_report.py
+++ b/addons/crm_partner_assign/report/crm_lead_report.py
@@ -63,9 +63,7 @@ class crm_lead_report_assign(osv.osv):
'probable_revenue': fields.float('Probable Revenue', digits=(16,2),readonly=True),
'categ_id': fields.many2one('crm.case.categ', 'Category',\
domain="[('section_id','=',section_id)]" , readonly=True),
- 'stage_id': fields.many2one ('crm.case.stage', 'Stage', \
- domain="[('section_id','=',section_id),\
- ('object_id.model', '=', 'crm.lead')]", readonly=True),
+ 'stage_id': fields.many2one ('crm.case.stage', 'Stage', domain="('object_id.model', '=', 'crm.lead')]"),
'partner_id': fields.many2one('res.partner', 'Customer' , readonly=True),
'opening_date': fields.date('Opening Date', readonly=True),
'creation_date': fields.date('Creation Date', readonly=True),
diff --git a/addons/crm_partner_assign/report/crm_lead_report_view.xml b/addons/crm_partner_assign/report/crm_lead_report_view.xml
index 2d38cd8862b..71e784ca90f 100644
--- a/addons/crm_partner_assign/report/crm_lead_report_view.xml
+++ b/addons/crm_partner_assign/report/crm_lead_report_view.xml
@@ -45,7 +45,7 @@
-
diff --git a/addons/decimal_precision/decimal_precision.py b/addons/decimal_precision/decimal_precision.py
index 4077a019ee2..1986eb8c441 100644
--- a/addons/decimal_precision/decimal_precision.py
+++ b/addons/decimal_precision/decimal_precision.py
@@ -46,11 +46,11 @@ class decimal_precision(osv.osv):
def write(self, cr, uid, ids, data, *args, **argv):
res = super(decimal_precision, self).write(cr, uid, ids, data, *args, **argv)
- for obj in self.pool.obj_list():
- for colname,col in self.pool.get(obj)._columns.items():
- if isinstance(col, fields.float):
- col.digits_change(cr)
self.precision_get.clear_cache(cr.dbname)
+ for obj in self.pool.obj_list():
+ for colname, col in self.pool.get(obj)._columns.items():
+ if isinstance(col, (fields.float, fields.function)):
+ col.digits_change(cr)
return res
decimal_precision()
@@ -62,4 +62,3 @@ def get_precision(application):
return (16, res)
return change_digit
-
diff --git a/addons/decimal_precision/decimal_precision_view.xml b/addons/decimal_precision/decimal_precision_view.xml
index 0065f7f7c7c..23bfbe429fd 100644
--- a/addons/decimal_precision/decimal_precision_view.xml
+++ b/addons/decimal_precision/decimal_precision_view.xml
@@ -24,7 +24,7 @@
- Decimal Accuracy Definitions
+ Decimal Accuracydecimal.precision
@@ -460,27 +460,26 @@
-
-
+
+
-
-
-
+
+
+
+
+
-
-
-
diff --git a/addons/event/wizard/partner_event_registration.py b/addons/event/wizard/partner_event_registration.py
index 8462a812313..00f106ab8ae 100644
--- a/addons/event/wizard/partner_event_registration.py
+++ b/addons/event/wizard/partner_event_registration.py
@@ -24,6 +24,7 @@ import netsvc
import tools
from osv import fields, osv
from tools.translate import _
+from decimal_precision import decimal_precision as dp
class partner_event_registration(osv.osv_memory):
@@ -36,7 +37,7 @@ class partner_event_registration(osv.osv_memory):
_columns = {
'event_id': fields.many2one('event.event', 'Event'),
'event_type': fields.many2one('event.type', 'Type', readonly=True),
- 'unit_price': fields.float('Registration Cost'),
+ 'unit_price': fields.float('Registration Cost', digits_compute=dp.get_precision('Sale Price')),
'start_date': fields.datetime('Start date', required=True, help="Beginning Date of Event", readonly=True),
'end_date': fields.datetime('Closing date', required=True, help="Closing Date of Event", readonly=True),
'nb_register': fields.integer('Number of Registration'),
diff --git a/addons/hr/hr_department_view.xml b/addons/hr/hr_department_view.xml
index 23ae3a9d7e3..c80c0cd91d4 100644
--- a/addons/hr/hr_department_view.xml
+++ b/addons/hr/hr_department_view.xml
@@ -58,14 +58,6 @@
-
- Departments
- hr.department
- tree
- [('parent_id','=',False)]
-
-
-
Departments
@@ -75,10 +67,9 @@
Your Company's Departments Structure is used to manage all documents related to employees by departments: expenses and timesheet validation, leaves management, recruitements, etc.
-
-
+ res.users.formformres.users
diff --git a/addons/hr/hr_installer.xml b/addons/hr/hr_installer.xml
index 490523b4e12..0f396e65a8b 100644
--- a/addons/hr/hr_installer.xml
+++ b/addons/hr/hr_installer.xml
@@ -27,8 +27,8 @@
-
+
diff --git a/addons/hr/i18n/tr.po b/addons/hr/i18n/tr.po
index 9b755a0f279..b32f46f8c80 100644
--- a/addons/hr/i18n/tr.po
+++ b/addons/hr/i18n/tr.po
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2010-09-09 07:17+0000\n"
-"Last-Translator: adsiz_1029@hotmail.com \n"
+"PO-Revision-Date: 2010-10-04 19:23+0000\n"
+"Last-Translator: Engin BAHADIR \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: 2010-09-29 05:12+0000\n"
+"X-Launchpad-Export-Date: 2010-10-05 04:57+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: hr
@@ -253,7 +253,7 @@ msgstr "Personel Kategorisi"
#. module: hr
#: selection:hr.timesheet,dayofweek:0
msgid "Tuesday"
-msgstr "Sali"
+msgstr "Salı"
#. module: hr
#: model:ir.model,name:hr.model_hr_department
diff --git a/addons/hr/installer.py b/addons/hr/installer.py
index 1d650d814e9..1bd615b8699 100644
--- a/addons/hr/installer.py
+++ b/addons/hr/installer.py
@@ -51,8 +51,7 @@ class hr_installer(osv.osv_memory):
_defaults = {
'hr_holidays': True,
'hr_expense': True,
- }
-
+ }
hr_installer()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/hr/process/hr_process.xml b/addons/hr/process/hr_process.xml
index 5376936afe3..1471fbe5352 100644
--- a/addons/hr/process/hr_process.xml
+++ b/addons/hr/process/hr_process.xml
@@ -51,7 +51,6 @@
-->
-
@@ -60,7 +59,6 @@
-
diff --git a/addons/hr_attendance/report/hr_custom_default.xsl b/addons/hr_attendance/report/hr_custom_default.xsl
index 39e71d6d53e..e8b133da1b0 100644
--- a/addons/hr_attendance/report/hr_custom_default.xsl
+++ b/addons/hr_attendance/report/hr_custom_default.xsl
@@ -9,8 +9,6 @@
-
- / 1.3cm 19.3cm 28.5cm 19.3cm
@@ -23,8 +21,6 @@
-
- / 1.3cm 19.3cm 28.5cm 19.3cm
diff --git a/addons/hr_evaluation/i18n/mn.po b/addons/hr_evaluation/i18n/mn.po
index 2c7f67f5028..c5a9123861e 100644
--- a/addons/hr_evaluation/i18n/mn.po
+++ b/addons/hr_evaluation/i18n/mn.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2009-11-25 12:18+0000\n"
-"PO-Revision-Date: 2010-09-29 11:34+0000\n"
-"Last-Translator: ub121 \n"
+"PO-Revision-Date: 2010-10-05 01:35+0000\n"
+"Last-Translator: sugi \n"
"Language-Team: Mongolian \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-09-30 04:43+0000\n"
+"X-Launchpad-Export-Date: 2010-10-05 04:57+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: hr_evaluation
@@ -115,12 +115,12 @@ msgstr "Байдал"
#. module: hr_evaluation
#: view:hr_evaluation.type:0
msgid "Apply to categories"
-msgstr ""
+msgstr "Хүсэлт гаргах зэрэглэл"
#. module: hr_evaluation
#: model:ir.module.module,description:hr_evaluation.module_meta_information
msgid "Ability to create employees evaluation."
-msgstr ""
+msgstr "Ажилтны үнэлгээ үүсгэх боломж"
#. module: hr_evaluation
#: field:hr_evaluation.quote,name:0
diff --git a/addons/hr_expense/hr_expense_workflow.xml b/addons/hr_expense/hr_expense_workflow.xml
index cfeee8387ce..2bb0f51e26b 100644
--- a/addons/hr_expense/hr_expense_workflow.xml
+++ b/addons/hr_expense/hr_expense_workflow.xml
@@ -75,14 +75,12 @@
validate
- refuse
-
@@ -95,21 +93,18 @@
refuse
- draft
- invoice
-
@@ -128,7 +123,6 @@
draft
-
diff --git a/addons/hr_expense/i18n/mn.po b/addons/hr_expense/i18n/mn.po
index 6103bab8ef6..6f97a3150c9 100644
--- a/addons/hr_expense/i18n/mn.po
+++ b/addons/hr_expense/i18n/mn.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2010-09-29 08:47+0000\n"
-"Last-Translator: OpenERP Administrators \n"
+"PO-Revision-Date: 2010-10-05 01:41+0000\n"
+"Last-Translator: sugi \n"
"Language-Team: Mongolian \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-09-30 04:43+0000\n"
+"X-Launchpad-Export-Date: 2010-10-05 04:57+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: hr_expense
@@ -144,7 +144,7 @@ msgstr "Батлах"
#. module: hr_expense
#: model:process.node,note:hr_expense.process_node_supplierinvoice0
msgid "The accoutant validates the sheet"
-msgstr ""
+msgstr "Нягтлан энэ шийтийг батална."
#. module: hr_expense
#: field:hr.expense.line,analytic_account:0
diff --git a/addons/hr_expense/process/hr_expense_process.xml b/addons/hr_expense/process/hr_expense_process.xml
index 20d8a60ca1a..bcb9649be4c 100644
--- a/addons/hr_expense/process/hr_expense_process.xml
+++ b/addons/hr_expense/process/hr_expense_process.xml
@@ -1,21 +1,21 @@
-
+
-
+
-
+
-
+
@@ -26,7 +26,7 @@
-
+
@@ -37,7 +37,7 @@
-
+
@@ -48,7 +48,7 @@
-
+
@@ -59,7 +59,7 @@
-
+
@@ -70,7 +70,7 @@
-
+
@@ -81,7 +81,7 @@
-
+
@@ -92,96 +92,90 @@
-
+
-
+
-
-
+
-
-
+
-
-
+
-
-
+
-
-
+
-
-
+
-
+
-
+
-
+
-
+
-
+
\ No newline at end of file
diff --git a/addons/hr_holidays/hr_holidays_workflow.xml b/addons/hr_holidays/hr_holidays_workflow.xml
index 6dcd55ff162..de2bd9f1131 100644
--- a/addons/hr_holidays/hr_holidays_workflow.xml
+++ b/addons/hr_holidays/hr_holidays_workflow.xml
@@ -77,28 +77,24 @@
validate(holiday_status_id.double_validation == False)
- refuse
- cancel
- cancel
-
@@ -124,7 +120,6 @@
(holiday_status_id.double_validation == True)validate
-
diff --git a/addons/hr_holidays/migrations/1.5/post-01-convert-limits-into-requests.py b/addons/hr_holidays/migrations/1.5/post-01-convert-limits-into-requests.py
index 5ee6e894cf5..a59dbbf85eb 100644
--- a/addons/hr_holidays/migrations/1.5/post-01-convert-limits-into-requests.py
+++ b/addons/hr_holidays/migrations/1.5/post-01-convert-limits-into-requests.py
@@ -21,14 +21,15 @@
__name__ = "Convert the Holidays Per User limits into positive leave request"
def migrate(cr, version):
- cr.execute("""SELECT id, employee_id, holiday_status, max_leaves, notes, create_uid
- FROM hr_holidays_per_user;""")
- for record in cr.fetchall():
- cr.execute("""INSERT INTO hr_holidays
- (employee_id, type, allocation_type, name, holiday_status_id,
- state, number_of_days, notes, manager_id) VALUES
- (%s, 'add', 'company', 'imported holiday_per_user', %s,
- 'validated', %s, %s, %s) """, (record[1],record[2],record[3],record[4],record[5]))
+# cr.execute("""SELECT id, employee_id, holiday_status, max_leaves, notes, create_uid
+# FROM hr_holidays_per_user;""")
+# for record in cr.fetchall():
+# cr.execute("""INSERT INTO hr_holidays
+# (employee_id, type, allocation_type, name, holiday_status_id,
+# state, number_of_days, notes, manager_id) VALUES
+# (%s, 'add', 'company', 'imported holiday_per_user', %s,
+# 'validated', %s, %s, %s) """, (record[1],record[2],record[3],record[4],record[5]))
+ return {}
diff --git a/addons/hr_holidays/process/hr_holidays_process.xml b/addons/hr_holidays/process/hr_holidays_process.xml
index 2026902dd5c..82285ff1209 100644
--- a/addons/hr_holidays/process/hr_holidays_process.xml
+++ b/addons/hr_holidays/process/hr_holidays_process.xml
@@ -1,21 +1,21 @@
-
-
+
+
-
+
-
+
-
+
@@ -25,7 +25,7 @@
-
+
@@ -36,7 +36,7 @@
-
+
@@ -47,7 +47,7 @@
-
+
@@ -58,7 +58,7 @@
-
+
@@ -69,7 +69,7 @@
-
+
@@ -80,7 +80,7 @@
-
+
@@ -89,91 +89,85 @@
-
-
+
+
-
-
+
+
-
-
+
-
-
+
-
-
+
-
-
+
-
-
+
-
-
+
-
+
-
+
-
+
-
+
\ No newline at end of file
diff --git a/addons/hr_holidays/report/hr_custom_default.xsl b/addons/hr_holidays/report/hr_custom_default.xsl
index 39e71d6d53e..e8b133da1b0 100644
--- a/addons/hr_holidays/report/hr_custom_default.xsl
+++ b/addons/hr_holidays/report/hr_custom_default.xsl
@@ -9,8 +9,6 @@
-
- / 1.3cm 19.3cm 28.5cm 19.3cm
@@ -23,8 +21,6 @@
-
- / 1.3cm 19.3cm 28.5cm 19.3cm
diff --git a/addons/hr_payroll/test/payslip.yml b/addons/hr_payroll/test/payslip.yml
index 705270d7c82..ca204a62241 100644
--- a/addons/hr_payroll/test/payslip.yml
+++ b/addons/hr_payroll/test/payslip.yml
@@ -9,6 +9,7 @@
sequence: 0.0
name: Fortis
state: bank
+ bank: base.res_bank_1
-
I create a new employee “Richard”
-
diff --git a/addons/hr_timesheet/hr_timesheet.py b/addons/hr_timesheet/hr_timesheet.py
index ee4abdb35c4..75ad6101e11 100644
--- a/addons/hr_timesheet/hr_timesheet.py
+++ b/addons/hr_timesheet/hr_timesheet.py
@@ -57,14 +57,14 @@ class hr_analytic_timesheet(osv.osv):
return super(hr_analytic_timesheet, self).unlink(cr, uid, ids, context=context)
- def on_change_unit_amount(self, cr, uid, id, prod_id, unit_amount, unit, context=None):
+ def on_change_unit_amount(self, cr, uid, id, prod_id, unit_amount, company_id, unit=False, journal_id=False, context=None):
if context is None:
context = {}
res = {'value':{}}
if prod_id and unit_amount:
# find company
company_id = self.pool.get('res.company')._company_default_get(cr, uid, 'account.analytic.line', context=context)
- res.update(self.pool.get('account.analytic.line').on_change_unit_amount(cr, uid, id, prod_id, unit_amount, company_id, unit, context=context))
+ res.update(self.pool.get('account.analytic.line').on_change_unit_amount(cr, uid, id, prod_id, unit_amount, company_id, unit, journal_id, context=context))
# update unit of measurement
if prod_id:
uom = self.pool.get('product.product').browse(cr, uid, prod_id, context=context)
diff --git a/addons/hr_timesheet/hr_timesheet_view.xml b/addons/hr_timesheet/hr_timesheet_view.xml
index 4165f71d73f..a47fbf24685 100644
--- a/addons/hr_timesheet/hr_timesheet_view.xml
+++ b/addons/hr_timesheet/hr_timesheet_view.xml
@@ -12,16 +12,17 @@
tree
-
-
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -40,9 +41,9 @@
-
-
-
+
+
+
@@ -67,7 +68,7 @@
-
+
@@ -81,32 +82,20 @@
-
-
+
+
-
- My Working Hours
- ir.actions.act_window
- hr.analytic.timesheet
- form
- tree,form
- [('user_id','=',uid)]
-
- {"search_default_user_id":uid, "search_default_my": 1}
-
-
-
Working Hoursir.actions.act_windowhr.analytic.timesheetformtree,form
- {"search_default_user_id":uid}
+ {"search_default_user_id":uid, "search_default_today":1}This functionality gives you a list of work done by user, product and analytic account (or project). A search tool allows you to make fine-grained analysis.
diff --git a/addons/hr_timesheet/report/custom_default.xsl b/addons/hr_timesheet/report/custom_default.xsl
index 39e71d6d53e..e8b133da1b0 100644
--- a/addons/hr_timesheet/report/custom_default.xsl
+++ b/addons/hr_timesheet/report/custom_default.xsl
@@ -9,8 +9,6 @@
-
- / 1.3cm 19.3cm 28.5cm 19.3cm
@@ -23,8 +21,6 @@
-
- / 1.3cm 19.3cm 28.5cm 19.3cm
diff --git a/addons/hr_timesheet/wizard/hr_timesheet_sign_in_out.py b/addons/hr_timesheet/wizard/hr_timesheet_sign_in_out.py
index b308aa69cc8..8d0ed702c0a 100644
--- a/addons/hr_timesheet/wizard/hr_timesheet_sign_in_out.py
+++ b/addons/hr_timesheet/wizard/hr_timesheet_sign_in_out.py
@@ -81,7 +81,7 @@ class hr_so_project(osv.osv_memory):
if not res['product_uom_id']:
raise osv.except_osv(_('UserError'), _('No cost unit defined for this employee !'))
- up = timesheet_obj.on_change_unit_amount(cr, uid, False, res['product_id'], hour, res['product_uom_id'])['value']
+ up = timesheet_obj.on_change_unit_amount(cr, uid, False, res['product_id'], hour,False, res['product_uom_id'])['value']
res['name'] = data['info']
res['account_id'] = data['account_id'].id
diff --git a/addons/hr_timesheet_invoice/board_hr_timesheet_invoice.xml b/addons/hr_timesheet_invoice/board_hr_timesheet_invoice.xml
index ff61617661c..792ea34ae53 100644
--- a/addons/hr_timesheet_invoice/board_hr_timesheet_invoice.xml
+++ b/addons/hr_timesheet_invoice/board_hr_timesheet_invoice.xml
@@ -11,7 +11,7 @@
graph,tree
-
+
-
+
timesheet.uninvoiced.line.tree
diff --git a/addons/hr_timesheet_invoice/hr_timesheet_invoice_view.xml b/addons/hr_timesheet_invoice/hr_timesheet_invoice_view.xml
index c7435127466..4beda0999d0 100644
--- a/addons/hr_timesheet_invoice/hr_timesheet_invoice_view.xml
+++ b/addons/hr_timesheet_invoice/hr_timesheet_invoice_view.xml
@@ -21,17 +21,6 @@
-
hr.analytic.timesheet.formhr.analytic.timesheet
@@ -83,13 +72,26 @@
+
+ account.analytic.line.search.to_invoice
+ account.analytic.line
+ search
+
+
+
+
+
+
+
+
+
account.analytic.line.tree.to_invoiceaccount.analytic.linetree
-
+
@@ -103,18 +105,19 @@
+
- Entries to invoice
+ Costs to Invoiceaccount.analytic.lineformtree,form
- [('to_invoice','<>',False)]
- {"search_default_user_id":uid}
+ []
+ {'search_default_to_invoice': 1}OpenERP automatically group the entries to be invoiced so you can keep an eye on them on real time in one glance.
-
- Uninvoiced Entries
- account.analytic.line
- form
- tree,form
- [('invoice_id','=',False),('to_invoice','!=',False)]
-
-
-
-
- Open Analytic Accounts
- account.analytic.account
- form
- tree,form
- [('state','<>','close'),('type','<>','view')]
-
-
-
- Unclosed Invoiceable Accounts
- account.analytic.account
- form
- tree,form
- [('state','<>','close'),('type','<>','view'),('pricelist_id','<>',False)]
-
-
hr_timesheet_invoice.factor.formhr_timesheet_invoice.factor
diff --git a/addons/hr_timesheet_invoice/report/report_analytic.py b/addons/hr_timesheet_invoice/report/report_analytic.py
index 0b3d1440f23..d2db7fd4027 100644
--- a/addons/hr_timesheet_invoice/report/report_analytic.py
+++ b/addons/hr_timesheet_invoice/report/report_analytic.py
@@ -21,6 +21,8 @@
from osv import fields,osv
import tools
+from decimal_precision import decimal_precision as dp
+
class report_analytic_account_close(osv.osv):
_name = "report.analytic.account.close"
@@ -70,8 +72,8 @@ class report_account_analytic_line_to_invoice(osv.osv):
'account_id':fields.many2one('account.analytic.account', 'Analytic account', readonly=True),
'product_uom_id':fields.many2one('product.uom', 'UoM', readonly=True),
'unit_amount': fields.float('Units', readonly=True),
- 'sale_price': fields.float('Sale price', readonly=True),
- 'amount': fields.float('Amount', readonly=True),
+ 'sale_price': fields.float('Sale price', readonly=True, digits_compute=dp.get_precision('Sale Price')),
+ 'amount': fields.float('Amount', readonly=True, digits_compute=dp.get_precision('Account')),
'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'),
('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')],'Month',readonly=True),
}
diff --git a/addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py b/addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py
index 4e1926fe069..1bb7765b372 100644
--- a/addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py
+++ b/addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py
@@ -38,7 +38,7 @@ class hr_timesheet_invoice_create(osv.osv_memory):
'accounts': fields.many2many('account.analytic.account', 'invoice_id', 'account_id', 'Analytic Accounts', required=True),
'date': fields.boolean('Date', help='The real date of each work will be displayed on the invoice'),
'time': fields.boolean('Time spent', help='The time of each work done will be displayed on the invoice'),
- 'name': fields.boolean('Name of entry', help='The detail of each work done will be displayed on the invoice'),
+ 'name': fields.boolean('Description', help='The detail of each work done will be displayed on the invoice'),
'price': fields.boolean('Cost', help='The cost of each work done will be displayed on the invoice. You probably don\'t want to check this'),
'product': fields.many2one('product.product', 'Product', help='Complete this field only if you want to force to use a specific product. Keep empty to use the real product that comes from the cost.'),
}
@@ -59,8 +59,10 @@ class hr_timesheet_invoice_create(osv.osv_memory):
return [x[0] for x in account_ids]
_defaults = {
- 'accounts': _get_accounts
- }
+ 'accounts': _get_accounts,
+ 'date': lambda *args: 1,
+ 'name': lambda *args: 1
+ }
def do_create(self, cr, uid, ids, context=None):
mod_obj = self.pool.get('ir.model.data')
diff --git a/addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create_view.xml b/addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create_view.xml
index d71b385c1f8..fc6d6da911e 100644
--- a/addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create_view.xml
+++ b/addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create_view.xml
@@ -2,37 +2,33 @@
-
+ hr.timesheet.invoice.create.formhr.timesheet.invoice.createform
-
+
@@ -45,7 +41,7 @@
new
-
+ Invoice analytic lines
@@ -55,5 +51,5 @@
account.analytic.line
-
-
\ No newline at end of file
+
+
diff --git a/addons/hr_timesheet_sheet/hr_timesheet_sheet_demo.xml b/addons/hr_timesheet_sheet/hr_timesheet_sheet_demo.xml
index 250120c5a45..b22a88c5036 100644
--- a/addons/hr_timesheet_sheet/hr_timesheet_sheet_demo.xml
+++ b/addons/hr_timesheet_sheet/hr_timesheet_sheet_demo.xml
@@ -9,11 +9,11 @@
-
+
diff --git a/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml b/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml
index f078be2dbe1..decf3b16b6b 100644
--- a/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml
+++ b/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml
@@ -104,11 +104,11 @@
-
+
-
-
+
+
@@ -117,11 +117,11 @@
-
+
-
-
+
+
@@ -201,8 +201,7 @@
id="base.menu_project_management_time_tracking"
name="Time Tracking"
parent="base.menu_main_pm" sequence="5"/>
-
+
diff --git a/addons/hr_timesheet_sheet/hr_timesheet_workflow.xml b/addons/hr_timesheet_sheet/hr_timesheet_workflow.xml
index 11af4574a4a..b664fd79c96 100644
--- a/addons/hr_timesheet_sheet/hr_timesheet_workflow.xml
+++ b/addons/hr_timesheet_sheet/hr_timesheet_workflow.xml
@@ -1,21 +1,21 @@
-
+
-
+
Timesheets validation
-
+
-
+
hr_timesheet_sheet.sheethr_timesheet_sheet.sheetTrue
-
+
new
@@ -42,7 +42,7 @@
write({'state':'done'})True
-
+
@@ -56,13 +56,11 @@
done
- cancel
-
diff --git a/addons/hr_timesheet_sheet/process/hr_timesheet_sheet_process.xml b/addons/hr_timesheet_sheet/process/hr_timesheet_sheet_process.xml
index a2bf0aa24e5..7c259016fca 100644
--- a/addons/hr_timesheet_sheet/process/hr_timesheet_sheet_process.xml
+++ b/addons/hr_timesheet_sheet/process/hr_timesheet_sheet_process.xml
@@ -1,21 +1,21 @@
-
-
-
+
-
-
-
+
@@ -24,7 +24,7 @@
-
+
@@ -35,7 +35,7 @@
-
+
@@ -46,7 +46,7 @@
-
+
@@ -68,7 +68,7 @@
-
+
@@ -91,39 +91,32 @@
-
-
-
+
-
-
-
-
-
+
-
-
+
-
-
+
-
@@ -131,58 +124,55 @@
-
+
-
-
+
-
-
+
-
-
-
-
-
+
-
+
-
+
-
+
diff --git a/addons/hr_timesheet_sheet/wizard/hr_timesheet_current_view.xml b/addons/hr_timesheet_sheet/wizard/hr_timesheet_current_view.xml
index 19eacdae472..f9944d0949f 100644
--- a/addons/hr_timesheet_sheet/wizard/hr_timesheet_current_view.xml
+++ b/addons/hr_timesheet_sheet/wizard/hr_timesheet_current_view.xml
@@ -6,7 +6,7 @@
hr.timesheet.current.openform
-
- Current Timesheet
+ My Timesheethr.timesheet.current.openformtree,form
@@ -25,7 +25,11 @@
new
-
+
+
+
diff --git a/addons/idea/idea_view.xml b/addons/idea/idea_view.xml
index b6e8b926a0c..f7ddb8bf504 100644
--- a/addons/idea/idea_view.xml
+++ b/addons/idea/idea_view.xml
@@ -377,7 +377,7 @@
- Statistics on Votes
+ Vote Statisticsidea.vote.statformgraph,tree
diff --git a/addons/idea/report/report_vote_view.xml b/addons/idea/report/report_vote_view.xml
index 9556f86a281..8418377065c 100644
--- a/addons/idea/report/report_vote_view.xml
+++ b/addons/idea/report/report_vote_view.xml
@@ -60,12 +60,12 @@
domain="[('idea_state','=',('cancel'))]"/>
-
+
-
-
+
+
@@ -74,9 +74,9 @@
-
-
-
+
+
+
diff --git a/addons/knowledge/i18n/hi.po b/addons/knowledge/i18n/hi.po
new file mode 100644
index 00000000000..f3fb68f029e
--- /dev/null
+++ b/addons/knowledge/i18n/hi.po
@@ -0,0 +1,160 @@
+# Hindi translation for openobject-addons
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2010-08-20 06:56+0000\n"
+"PO-Revision-Date: 2010-10-04 13:03+0000\n"
+"Last-Translator: vir (Open ERP) \n"
+"Language-Team: Hindi \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2010-10-05 04:57+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. module: knowledge
+#: constraint:ir.model:0
+msgid ""
+"The Object name must start with x_ and not contain any special character !"
+msgstr ""
+
+#. module: knowledge
+#: field:knowledge.installer,wiki:0
+msgid "Collaborative Content (Wiki)"
+msgstr ""
+
+#. module: knowledge
+#: help:knowledge.installer,wiki_quality_manual:0
+msgid "Creates an example skeleton for a standard quality manual."
+msgstr ""
+
+#. module: knowledge
+#: field:knowledge.installer,document_ftp:0
+msgid "Shared Repositories (FTP)"
+msgstr ""
+
+#. module: knowledge
+#: model:ir.module.module,shortdesc:knowledge.module_meta_information
+msgid "Knowledge Management System"
+msgstr ""
+
+#. module: knowledge
+#: constraint:ir.ui.menu:0
+msgid "Error ! You can not create recursive Menu."
+msgstr ""
+
+#. module: knowledge
+#: constraint:ir.actions.act_window:0
+msgid "Invalid model name in the action definition."
+msgstr "कार्य की परिभाषा में मॉडल का नाम अमान्य है."
+
+#. module: knowledge
+#: model:ir.ui.menu,name:knowledge.menu_document
+msgid "Knowledge"
+msgstr "ज्ञान"
+
+#. module: knowledge
+#: help:knowledge.installer,document_webdav:0
+msgid ""
+"Provides a WebDAV access to your OpenERP's Document Management System. Lets "
+"you access attachments and virtual documents through your standard file "
+"browser."
+msgstr ""
+
+#. module: knowledge
+#: field:knowledge.installer,progress:0
+msgid "Configuration Progress"
+msgstr ""
+
+#. module: knowledge
+#: view:knowledge.installer:0
+msgid "title"
+msgstr "शीर्षक:"
+
+#. module: knowledge
+#: help:knowledge.installer,document_ftp:0
+msgid ""
+"Provides an FTP access to your OpenERP's Document Management System. Lets "
+"you access attachments and virtual documents through a standard FTP client."
+msgstr ""
+
+#. module: knowledge
+#: model:ir.module.module,description:knowledge.module_meta_information
+msgid ""
+"Installer for knowledge-based tools\n"
+" "
+msgstr ""
+
+#. module: knowledge
+#: model:ir.ui.menu,name:knowledge.menu_document_configuration
+msgid "Configuration"
+msgstr "कॉन्फ़िगरेशन"
+
+#. module: knowledge
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr "संरचना देखने के लिए अमान्य XML!"
+
+#. module: knowledge
+#: model:ir.actions.act_window,name:knowledge.action_knowledge_installer
+msgid "Knowledge Modules Installation"
+msgstr ""
+
+#. module: knowledge
+#: view:ir.actions.todo:0
+msgid "Launch"
+msgstr ""
+
+#. module: knowledge
+#: field:knowledge.installer,wiki_quality_manual:0
+msgid "Quality Manual"
+msgstr ""
+
+#. module: knowledge
+#: view:knowledge.installer:0
+msgid "Templates of Content"
+msgstr ""
+
+#. module: knowledge
+#: field:knowledge.installer,document_webdav:0
+msgid "Shared Repositories (WebDAV)"
+msgstr ""
+
+#. module: knowledge
+#: help:knowledge.installer,wiki_faq:0
+msgid ""
+"Creates a skeleton internal FAQ pre-filled with documentation about "
+"OpenERP's Document Management System."
+msgstr ""
+
+#. module: knowledge
+#: field:knowledge.installer,wiki_faq:0
+msgid "Internal FAQ"
+msgstr ""
+
+#. module: knowledge
+#: model:ir.ui.menu,name:knowledge.menu_document2
+msgid "Collaborative Content"
+msgstr ""
+
+#. module: knowledge
+#: field:knowledge.installer,config_logo:0
+msgid "Image"
+msgstr "चित्र"
+
+#. module: knowledge
+#: model:ir.model,name:knowledge.model_knowledge_installer
+msgid "knowledge.installer"
+msgstr "knowledge.installer"
+
+#. module: knowledge
+#: help:knowledge.installer,wiki:0
+msgid ""
+"Lets you create wiki pages and page groups in order to keep track of "
+"business knowledge and share it with and between your employees."
+msgstr ""
diff --git a/addons/l10n_ch/wizard/bvr_import.py b/addons/l10n_ch/wizard/bvr_import.py
index 611b5720a96..9d055bcfb5f 100644
--- a/addons/l10n_ch/wizard/bvr_import.py
+++ b/addons/l10n_ch/wizard/bvr_import.py
@@ -214,7 +214,8 @@ def _import(obj, cursor, user, data, context=None):
'period_id': statement.period_id.id
}
voucher_id = voucher_obj.create(cr, uid, voucher_res, context=context)
- result = voucher_obj.onchange_partner_id(cr, uid, [], partner_id=line.partner_id.id, journal_id=statement.journal_id.id, price=abs(amount), currency_id= statement.currency.id, ttype='payment')
+ context.update({'move_line_ids': line_ids})
+ result = voucher_obj.onchange_partner_id(cr, uid, [], partner_id=line.partner_id.id, journal_id=statement.journal_id.id, price=abs(amount), currency_id= statement.currency.id, ttype='payment', context=context)
voucher_line_dict = False
if result['value']['line_ids']:
for line_dict in result['value']['line_ids']:
diff --git a/addons/lunch/lunch.py b/addons/lunch/lunch.py
index ad2996315aa..5a777564408 100644
--- a/addons/lunch/lunch.py
+++ b/addons/lunch/lunch.py
@@ -99,7 +99,7 @@ class lunch_cashmove(osv.osv):
'amount': fields.float('Amount', digits=(16, 2)),
'box': fields.many2one('lunch.cashbox', 'Box Name', size=30, required=True),
'active': fields.boolean('Active'),
- 'create_date': fields.datetime('Created date', readonly=True),
+ 'create_date': fields.datetime('Creation Date', readonly=True),
}
_defaults = {
@@ -141,7 +141,7 @@ class lunch_order(osv.osv):
'state': fields.selection([('draft', 'Draft'), ('confirmed', 'Confirmed'), ], \
'State', readonly=True, select=True),
'price': fields.function(_price_get, method=True, string="Price"),
- 'category': fields.many2one('lunch.category','Category',readonly=True),
+ 'category': fields.many2one('lunch.category','Category'),
}
_defaults = {
diff --git a/addons/mail_gateway/__openerp__.py b/addons/mail_gateway/__openerp__.py
index 961f16f541f..f442124193a 100644
--- a/addons/mail_gateway/__openerp__.py
+++ b/addons/mail_gateway/__openerp__.py
@@ -34,6 +34,7 @@
"mail_gateway_view.xml",
"res_partner_view.xml",
'security/ir.model.access.csv'
+
],
'demo_xml': [],
'installable': True,
diff --git a/addons/mail_gateway/mail_gateway.py b/addons/mail_gateway/mail_gateway.py
index c775b97d520..9900540acae 100644
--- a/addons/mail_gateway/mail_gateway.py
+++ b/addons/mail_gateway/mail_gateway.py
@@ -179,6 +179,50 @@ class mailgate_message(osv.osv):
'''
Mailgateway Message
'''
+ def open_document(self, cr, uid, ids, context):
+ """ To Open Document
+ @param self: The object pointer.
+ @param cr: A database cursor
+ @param uid: ID of the user currently logged in
+ @param ids: the ID of messages
+ @param context: A standard dictionary
+ """
+ action_data = False
+ if ids:
+ message_id = ids[0]
+ mailgate_data = self.browse(cr, uid, message_id)
+ model = mailgate_data.model
+ res_id = mailgate_data.res_id
+
+ action_pool = self.pool.get('ir.actions.act_window')
+ action_ids = action_pool.search(cr, uid, [('res_model', '=', model)])
+ if action_ids:
+ action_data = action_pool.read(cr, uid, action_ids[0], context=context)
+ action_data.update({
+ 'res_id': res_id,
+ 'nodestroy': True
+ })
+ return action_data
+
+ def open_attachment(self, cr, uid, ids, context):
+ """ To Open attachments
+ @param self: The object pointer.
+ @param cr: A database cursor
+ @param uid: ID of the user currently logged in
+ @param ids: the ID of messages
+ @param context: A standard dictionary
+ """
+ action_data = False
+ action_pool = self.pool.get('ir.actions.act_window')
+ action_ids = action_pool.search(cr, uid, [('res_model', '=', 'ir.attachment')])
+ if action_ids:
+ action_data = action_pool.read(cr, uid, action_ids[0], context=context)
+ action_data.update({
+ 'domain': [('res_id','in',ids),('res_model','=',self._name)],
+ 'nodestroy': True
+ })
+ return action_data
+
def truncate_data(self, cr, uid, data, context=None):
data_list = data and data.split('\n') or []
if len(data_list) > 3:
@@ -327,7 +371,7 @@ class mailgate_tool(osv.osv_memory):
msg['to'] = email_error
tools.misc._email_send(smtp_from, self.to_email(email_error), msg, openobject_id=res.id)
- def process_email(self, cr, uid, model, message, attach=True, context=None):
+ def process_email(self, cr, uid, model, message, custom_values=None, attach=True, context=None):
"""This function Processes email and create record for given OpenERP model
@param self: The object pointer
@param cr: the current row, from the database cursor,
@@ -346,6 +390,9 @@ class mailgate_tool(osv.osv_memory):
if not context:
context = {}
+ if custom_values is None or not isinstance(custom_values, dict):
+ custom_values = {}
+
model_pool = self.pool.get(model)
res_id = False
@@ -354,6 +401,8 @@ class mailgate_tool(osv.osv_memory):
att_ids = []
if hasattr(model_pool, 'message_new'):
res_id = model_pool.message_new(cr, uid, msg, context)
+ if custom_values:
+ model_pool.write(cr, uid, [res_id], custom_values, context=context)
else:
data = {
'name': msg.get('subject'),
@@ -542,3 +591,5 @@ class mailgate_tool(osv.osv_memory):
return res
mailgate_tool()
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/mail_gateway/mail_gateway_view.xml b/addons/mail_gateway/mail_gateway_view.xml
index de1a88c34c7..ab118295db5 100644
--- a/addons/mail_gateway/mail_gateway_view.xml
+++ b/addons/mail_gateway/mail_gateway_view.xml
@@ -2,11 +2,11 @@
- mailgate.message.form
+ mailgate.message.formmailgate.messageform
-
@@ -66,12 +71,12 @@
-
+
-
-
+
+
@@ -130,16 +135,6 @@
-
- Emails
- mailgate.message
- tree,form
- form
- [('history', '=', True)]
-
- {"search_default_user_id":uid}
-
-
Mailgateway Threadsmailgate.thread
@@ -191,16 +186,11 @@
view_id="view_mailgate_message_tree"
/>
-
-
-
-
-
-
+
diff --git a/addons/mail_gateway/scripts/openerp_mailgate/openerp_mailgate.py b/addons/mail_gateway/scripts/openerp_mailgate/openerp_mailgate.py
index 1fed4388e3d..879d3d37029 100755
--- a/addons/mail_gateway/scripts/openerp_mailgate/openerp_mailgate.py
+++ b/addons/mail_gateway/scripts/openerp_mailgate/openerp_mailgate.py
@@ -28,7 +28,7 @@ import xmlrpclib
import email
class rpc_proxy(object):
- def __init__(self, uid, passwd, host='localhost', port=8069, path='object', dbname='terp'):
+ def __init__(self, uid, passwd, host='localhost', port=8069, path='object', dbname='openerp'):
self.rpc = xmlrpclib.ServerProxy('http://%s:%s/xmlrpc/%s' % (host, port, path), allow_none=True)
self.user_id = uid
self.passwd = passwd
@@ -49,11 +49,13 @@ class email_parser(object):
self.email_default = email_default
- def parse(self, message):
+ def parse(self, message, custom_values=None):
+ if custom_values is None:
+ custom_values = {}
try:
# pass message as bytes because we don't know its encoding until we parse its headers
# and hence can't convert it to utf-8 for transport
- res_id = self.rpc('email.server.tools', 'process_email', self.model, xmlrpclib.Binary(message))
+ res_id = self.rpc('email.server.tools', 'process_email', self.model, xmlrpclib.Binary(message), custom_values)
except Exception, e:
logger = logging.getLogger('mail-gateway')
logger.warning('Failed to process incoming email. Source of the failed mail is available at debug level.', exc_info=True)
@@ -70,9 +72,10 @@ if __name__ == '__main__':
parser.add_option("-p", "--password", dest="password", help="Password of the user in OpenERP", default='admin')
parser.add_option("-o", "--model", dest="model", help="Name or ID of crm model", default="crm.lead")
parser.add_option("-m", "--default", dest="default", help="Default eMail in case of any trouble.", default=None)
- parser.add_option("-d", "--dbname", dest="dbname", help="Database name (default: terp)", default='terp')
+ parser.add_option("-d", "--dbname", dest="dbname", help="Database name (default: openerp)", default='openerp')
parser.add_option("--host", dest="host", help="Hostname of the OpenERP Server", default="localhost")
parser.add_option("--port", dest="port", help="Port of the OpenERP Server", default="8069")
+ parser.add_option("--custom-values", dest="custom_values", help="Add Custom Values to the object", default=None)
(options, args) = parser.parse_args()
@@ -82,6 +85,12 @@ if __name__ == '__main__':
msg_txt = sys.stdin.read()
- parser.parse(msg_txt)
+ custom_values = {}
+ try:
+ custom_values = dict(eval(options.custom_values))
+ except:
+ pass
+
+ parser.parse(msg_txt, custom_values)
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/marketing/marketing_view.xml b/addons/marketing/marketing_view.xml
index b96ba8fb7e3..6cd35f3a533 100644
--- a/addons/marketing/marketing_view.xml
+++ b/addons/marketing/marketing_view.xml
@@ -29,10 +29,9 @@
Configure
+
-
-
diff --git a/addons/marketing/marketing_wizard.py b/addons/marketing/marketing_wizard.py
index 8d1a6fa50ed..4b95bbb86da 100644
--- a/addons/marketing/marketing_wizard.py
+++ b/addons/marketing/marketing_wizard.py
@@ -29,10 +29,8 @@ class marketing_installer(osv.osv_memory):
help="Helps you to design templates of emails and integrate them in your different processes."),
'marketing_campaign':fields.boolean('Marketing Campaigns',
help="Helps you to manage marketing campaigns and automate actions and communication steps."),
- 'marketing_campaign_mailchimp':fields.boolean('Mailchimp Integration',
- help="This modules integrate mailchimp.com's service with OpenERP to automate mass mailings."),
'crm_profiling':fields.boolean('Profiling Tools',
- help="Helps you to perform segmentation within partners and design segmentation questionnaires")
+ help="Helps you to perform segmentation of partners and design segmentation questionnaires")
}
marketing_installer()
diff --git a/addons/marketing_campaign/report/campaign_analysis_view.xml b/addons/marketing_campaign/report/campaign_analysis_view.xml
index aa994fcfc48..fd5a8c0908f 100644
--- a/addons/marketing_campaign/report/campaign_analysis_view.xml
+++ b/addons/marketing_campaign/report/campaign_analysis_view.xml
@@ -84,8 +84,8 @@
-
-
+
+
diff --git a/addons/marketing_campaign_crm_demo/i18n/ru.po b/addons/marketing_campaign_crm_demo/i18n/ru.po
index 8223d4de855..c0982592ac9 100644
--- a/addons/marketing_campaign_crm_demo/i18n/ru.po
+++ b/addons/marketing_campaign_crm_demo/i18n/ru.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2010-08-20 08:14+0000\n"
-"PO-Revision-Date: 2010-09-29 13:22+0000\n"
+"PO-Revision-Date: 2010-09-30 06:47+0000\n"
"Last-Translator: Chertykov Denis \n"
"Language-Team: Russian \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-09-30 04:44+0000\n"
+"X-Launchpad-Export-Date: 2010-10-01 08:47+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: marketing_campaign_crm_demo
diff --git a/addons/membership/demo_data.xml b/addons/membership/demo_data.xml
index 6031e76d3da..6809702a113 100644
--- a/addons/membership/demo_data.xml
+++ b/addons/membership/demo_data.xml
@@ -14,7 +14,6 @@ result = price_unit * 0.10"" name="python_compute_inv"/>
-
diff --git a/addons/membership/process/membership_process.xml b/addons/membership/process/membership_process.xml
index 4a6df4c0e03..730f01bd36b 100644
--- a/addons/membership/process/membership_process.xml
+++ b/addons/membership/process/membership_process.xml
@@ -1,21 +1,21 @@
-
+
-
+
-
+
-
+
@@ -25,7 +25,7 @@
-
+
@@ -35,7 +35,7 @@
-
+
@@ -45,7 +45,7 @@
-
+
@@ -56,7 +56,7 @@
-
+
@@ -67,7 +67,7 @@
-
+
@@ -78,62 +78,57 @@
-
+
-
+
-
-
+
-
-
+
-
+
-
-
+
-
-
+
-
-
+
\ No newline at end of file
diff --git a/addons/mrp/__openerp__.py b/addons/mrp/__openerp__.py
index c56466501e0..f267764970a 100644
--- a/addons/mrp/__openerp__.py
+++ b/addons/mrp/__openerp__.py
@@ -85,7 +85,6 @@
],
'demo_xml': [
'mrp_demo.xml',
- 'board_manufacturing_demo.xml'
],
'test': [
'test/mrp_procurement.yml',
diff --git a/addons/mrp/board_manufacturing_demo.xml b/addons/mrp/board_manufacturing_demo.xml
deleted file mode 100644
index af8f07d2871..00000000000
--- a/addons/mrp/board_manufacturing_demo.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/addons/mrp/mrp_demo.xml b/addons/mrp/mrp_demo.xml
index e303ceb3378..e9c4f9f37b2 100644
--- a/addons/mrp/mrp_demo.xml
+++ b/addons/mrp/mrp_demo.xml
@@ -232,14 +232,6 @@
phantom
-
- HDD Seagate
- 26
-
- 1.0
- normal
-
- Assembly Basic PC29
@@ -563,6 +555,14 @@
+
+ Default BOM for Shelf of 100cm
+ SHE100
+ 129
+
+
+ 1.0
+ Assembly Section
@@ -591,15 +591,6 @@
-
- Default BOM for Shelf of 100cm
- SHE100
- 129
-
-
- 1.0
-
-
131
@@ -647,15 +638,6 @@
phantom
-
- 141
-
-
-
- 1.0
- Rear panel SHE100
-
-
Assembly Section143
diff --git a/addons/mrp/mrp_view.xml b/addons/mrp/mrp_view.xml
index 67aae0f1b91..615b5cee009 100644
--- a/addons/mrp/mrp_view.xml
+++ b/addons/mrp/mrp_view.xml
@@ -283,7 +283,7 @@
mrp.routing.searchmrp.routing
- tree
+ search
diff --git a/addons/mrp/process/procurement_process.xml b/addons/mrp/process/procurement_process.xml
index ca08481d4e4..5b9c8d8f661 100644
--- a/addons/mrp/process/procurement_process.xml
+++ b/addons/mrp/process/procurement_process.xml
@@ -1,7 +1,7 @@
-
+
@@ -14,7 +14,7 @@
-
+
@@ -36,7 +36,7 @@
-
+
@@ -60,7 +60,7 @@
-
+
@@ -128,7 +128,6 @@
-
@@ -137,7 +136,6 @@
-
@@ -146,7 +144,6 @@
-
@@ -155,7 +152,6 @@
-
@@ -164,7 +160,6 @@
-
@@ -173,7 +168,6 @@
-
@@ -182,7 +176,6 @@
-
@@ -191,7 +184,6 @@
-
@@ -200,7 +192,6 @@
-
@@ -209,7 +200,6 @@
-
@@ -218,7 +208,6 @@
-
@@ -227,7 +216,6 @@
-
diff --git a/addons/mrp/process/service_product_process.xml b/addons/mrp/process/service_product_process.xml
index c23ed6e7a65..74353d02e8c 100644
--- a/addons/mrp/process/service_product_process.xml
+++ b/addons/mrp/process/service_product_process.xml
@@ -36,7 +36,6 @@
-->
-
diff --git a/addons/mrp/process/stockable_product_process.xml b/addons/mrp/process/stockable_product_process.xml
index 9dc45f0515f..c845801194b 100644
--- a/addons/mrp/process/stockable_product_process.xml
+++ b/addons/mrp/process/stockable_product_process.xml
@@ -66,7 +66,6 @@
-->
-
@@ -75,7 +74,6 @@
-
diff --git a/addons/mrp/report/custom_default.xsl b/addons/mrp/report/custom_default.xsl
index 103128eb9f4..aa5eb22d8e0 100644
--- a/addons/mrp/report/custom_default.xsl
+++ b/addons/mrp/report/custom_default.xsl
@@ -19,8 +19,6 @@
-
- / 1.3cm 28.1cm 20cm 28.1cm
@@ -35,8 +33,6 @@
-
- / 1.3cm 28.1cm 20cm 28.1cm
diff --git a/addons/mrp/report/price.py b/addons/mrp/report/price.py
index 3a6ab81a308..52bcf3bcd4a 100644
--- a/addons/mrp/report/price.py
+++ b/addons/mrp/report/price.py
@@ -131,6 +131,8 @@ class report_custom(report_rml):
""" % (_('Component'), _('Component suppliers'), _('Quantity'),_('Cost Price per Uom')+'('+company_currency.code+')', _('Supplier Price per Uom')+'('+company_currency.code+')')
+ purchase_price_digits = rml_obj.get_digits(dp='Purchase Price')
+
for product in product_pool.browse(cr, uid, ids, context=context):
bom_id = bom_pool._bom_find(cr, uid, product.id, product.uom_id.id)
title = "%s" %(_("Cost Structure"))
@@ -150,8 +152,8 @@ class report_custom(report_rml):