[[ (t.tax_code_id and t.tax_code_id.notprintable) and removeParentNode('blockTable') or '' ]] [[ formatLang(t.amount) ]] [[ o.currency_id.symbol ]]
@@ -373,4 +373,4 @@
-
\ No newline at end of file
+
diff --git a/addons/account/report/rml_parse.py b/addons/account/report/rml_parse.py
index cc8299bcecf..0c7018ae290 100644
--- a/addons/account/report/rml_parse.py
+++ b/addons/account/report/rml_parse.py
@@ -21,12 +21,10 @@
from report import report_sxw
import xml.dom.minidom
-import os, time
+import time
import osv
import re
-import tools
import pooler
-import re
import sys
diff --git a/addons/account_analytic_analysis/account_analytic_analysis.py b/addons/account_analytic_analysis/account_analytic_analysis.py
index 5a393e1dd83..d9e9bf3907b 100644
--- a/addons/account_analytic_analysis/account_analytic_analysis.py
+++ b/addons/account_analytic_analysis/account_analytic_analysis.py
@@ -23,6 +23,8 @@ from osv import osv, fields
from osv.orm import intersect
import tools.sql
from tools.translate import _
+from decimal_precision import decimal_precision as dp
+
class account_analytic_account(osv.osv):
_name = "account.analytic.account"
@@ -66,6 +68,8 @@ class account_analytic_account(osv.osv):
and invoice_id is not null \
GROUP BY account_analytic_line.account_id;", (parent_ids,))
for account_id, sum in cr.fetchall():
+ if account_id not in res:
+ res[account_id] = {}
res[account_id][f] = sum
for account in accounts:
for child in account.child_ids:
@@ -102,6 +106,8 @@ class account_analytic_account(osv.osv):
and account_analytic_journal.type in ('purchase','general') \
GROUP BY account_analytic_account.id;""", (parent_ids,))
for account_id, sum in cr.fetchall():
+ if account_id not in res:
+ res[account_id] = {}
res[account_id][f] = round(sum, dp)
for account in accounts:
@@ -142,6 +148,8 @@ class account_analytic_account(osv.osv):
and invoice_id is null \
GROUP BY account_analytic_line.account_id" ,(parent_ids,))
for account_id, lwd in cr.fetchall():
+ if account_id not in res:
+ res[account_id] = {}
res[account_id][f] = lwd
for account in accounts:
for child in account.child_ids:
@@ -161,6 +169,8 @@ class account_analytic_account(osv.osv):
AND to_invoice IS NOT NULL \
GROUP BY account_analytic_line.account_id;",(parent_ids,))
for account_id, sua in cr.fetchall():
+ if account_id not in res:
+ res[account_id] = {}
res[account_id][f] = round(sua, dp)
for account in accounts:
for child in account.child_ids:
@@ -181,10 +191,14 @@ class account_analytic_account(osv.osv):
GROUP BY account_analytic_line.account_id",(parent_ids,))
ff = cr.fetchall()
for account_id, hq in ff:
+ if account_id not in res:
+ res[account_id] = {}
res[account_id][f] = round(hq, dp)
for account in accounts:
for child in account.child_ids:
if account.id != child.id:
+ if account.id not in res:
+ res[account.id] = {f: 0.0}
res[account.id][f] += res.get(child.id, {}).get(f, 0.0)
for id in ids:
res[id][f] = round(res[id][f], dp)
@@ -223,6 +237,8 @@ class account_analytic_account(osv.osv):
res2.setdefault(account.id, 0.0)
for child in account.child_ids:
if account.id != child.id:
+ if account.id not in res:
+ res[account.id] = {f: 0.0}
res[account.id][f] += res.get(child.id, {}).get(f, 0.0)
res[account.id][f] += res2.get(child.id, 0.0)
@@ -337,22 +353,47 @@ class account_analytic_account(osv.osv):
return res
_columns ={
- 'ca_invoiced': fields.function(_ca_invoiced_calc, method=True, type='float', string='Invoiced Amount', help="Total customer invoiced amount for this account."),
- 'total_cost': fields.function(_total_cost_calc, method=True, type='float', string='Total Costs', help="Total of costs for this account. It includes real costs (from invoices) and indirect costs, like time spent on timesheets."),
- 'ca_to_invoice': fields.function(_analysis_all, method=True, multi='analytic_analysis', type='float', string='Uninvoiced Amount', help="If invoice from analytic account, the remaining amount you can invoice to the customer based on the total costs."),
- 'ca_theorical': fields.function(_analysis_all, method=True, multi='analytic_analysis', type='float', string='Theorical Revenue', help="Based on the costs you had on the project, what would have been the revenue if all these costs have been invoiced at the normal sale price provided by the pricelist."),
- 'hours_quantity': fields.function(_analysis_all, method=True, multi='analytic_analysis', type='float', string='Hours Tot', help="Number of hours you spent on the analytic account (from timesheet). It computes on all journal of type 'general'."),
- 'last_invoice_date': fields.function(_analysis_all, method=True, multi='analytic_analysis', type='date', string='Last Invoice Date', help="Date of the last invoice created for this analytic account."),
- 'last_worked_invoiced_date': fields.function(_analysis_all, method=True, multi='analytic_analysis', type='date', string='Date of Last Invoiced Cost', help="If invoice from the costs, this is the date of the latest work or cost that have been invoiced."),
- 'last_worked_date': fields.function(_analysis_all, method=True, multi='analytic_analysis', type='date', string='Date of Last Cost/Work', help="Date of the latest work done on this account."),
- 'hours_qtt_non_invoiced': fields.function(_analysis_all, method=True, multi='analytic_analysis', type='float', string='Uninvoiced Hours', help="Number of hours (from journal of type 'general') that can be invoiced if you invoice based on analytic account."),
- 'hours_qtt_invoiced': fields.function(_hours_qtt_invoiced_calc, method=True, type='float', string='Invoiced Hours', help="Number of hours that can be invoiced plus those that already have been invoiced."),
- 'remaining_hours': fields.function(_remaining_hours_calc, method=True, type='float', string='Remaining Hours', help="Computed using the formula: Maximum Quantity - Hours Tot."),
- 'remaining_ca': fields.function(_remaining_ca_calc, method=True, type='float', string='Remaining Revenue', help="Computed using the formula: Max Invoice Price - Invoiced Amount."),
- 'revenue_per_hour': fields.function(_revenue_per_hour_calc, method=True, type='float', string='Revenue per Hours (real)', help="Computed using the formula: Invoiced Amount / Hours Tot."),
- 'real_margin': fields.function(_real_margin_calc, method=True, type='float', string='Real Margin', help="Computed using the formula: Invoiced Amount - Total Costs."),
- 'theorical_margin': fields.function(_theorical_margin_calc, method=True, type='float', string='Theorical Margin', help="Computed using the formula: Theorial Revenue - Total Costs"),
- 'real_margin_rate': fields.function(_real_margin_rate_calc, method=True, type='float', string='Real Margin Rate (%)', help="Computes using the formula: (Real Margin / Total Costs) * 100."),
+ 'ca_invoiced': fields.function(_ca_invoiced_calc, method=True, type='float', string='Invoiced Amount',
+ help="Total customer invoiced amount for this account.",
+ digits_compute=dp.get_precision('Account')),
+ 'total_cost': fields.function(_total_cost_calc, method=True, type='float', string='Total Costs',
+ help="Total of costs for this account. It includes real costs (from invoices) and indirect costs, like time spent on timesheets.",
+ digits_compute=dp.get_precision('Account')),
+ 'ca_to_invoice': fields.function(_analysis_all, method=True, multi='analytic_analysis', type='float', string='Uninvoiced Amount',
+ help="If invoice from analytic account, the remaining amount you can invoice to the customer based on the total costs.",
+ digits_compute=dp.get_precision('Account')),
+ 'ca_theorical': fields.function(_analysis_all, method=True, multi='analytic_analysis', type='float', string='Theorical Revenue',
+ help="Based on the costs you had on the project, what would have been the revenue if all these costs have been invoiced at the normal sale price provided by the pricelist.",
+ digits_compute=dp.get_precision('Account')),
+ 'hours_quantity': fields.function(_analysis_all, method=True, multi='analytic_analysis', type='float', string='Hours Tot',
+ help="Number of hours you spent on the analytic account (from timesheet). It computes on all journal of type 'general'."),
+ 'last_invoice_date': fields.function(_analysis_all, method=True, multi='analytic_analysis', type='date', string='Last Invoice Date',
+ help="Date of the last invoice created for this analytic account."),
+ 'last_worked_invoiced_date': fields.function(_analysis_all, method=True, multi='analytic_analysis', type='date', string='Date of Last Invoiced Cost',
+ help="If invoice from the costs, this is the date of the latest work or cost that have been invoiced."),
+ 'last_worked_date': fields.function(_analysis_all, method=True, multi='analytic_analysis', type='date', string='Date of Last Cost/Work',
+ help="Date of the latest work done on this account."),
+ 'hours_qtt_non_invoiced': fields.function(_analysis_all, method=True, multi='analytic_analysis', type='float', string='Uninvoiced Hours',
+ help="Number of hours (from journal of type 'general') that can be invoiced if you invoice based on analytic account."),
+ 'hours_qtt_invoiced': fields.function(_hours_qtt_invoiced_calc, method=True, type='float', string='Invoiced Hours',
+ help="Number of hours that can be invoiced plus those that already have been invoiced."),
+ 'remaining_hours': fields.function(_remaining_hours_calc, method=True, type='float', string='Remaining Hours',
+ help="Computed using the formula: Maximum Quantity - Hours Tot."),
+ 'remaining_ca': fields.function(_remaining_ca_calc, method=True, type='float', string='Remaining Revenue',
+ help="Computed using the formula: Max Invoice Price - Invoiced Amount.",
+ digits_compute=dp.get_precision('Account')),
+ 'revenue_per_hour': fields.function(_revenue_per_hour_calc, method=True, type='float', string='Revenue per Hours (real)',
+ help="Computed using the formula: Invoiced Amount / Hours Tot.",
+ digits_compute=dp.get_precision('Account')),
+ 'real_margin': fields.function(_real_margin_calc, method=True, type='float', string='Real Margin',
+ help="Computed using the formula: Invoiced Amount - Total Costs.",
+ digits_compute=dp.get_precision('Account')),
+ 'theorical_margin': fields.function(_theorical_margin_calc, method=True, type='float', string='Theorical Margin',
+ help="Computed using the formula: Theorial Revenue - Total Costs",
+ digits_compute=dp.get_precision('Account')),
+ 'real_margin_rate': fields.function(_real_margin_rate_calc, method=True, type='float', string='Real Margin Rate (%)',
+ help="Computes using the formula: (Real Margin / Total Costs) * 100.",
+ digits_compute=dp.get_precision('Account')),
'month_ids': fields.function(_analysis_all, method=True, multi='analytic_analysis', type='many2many', relation='account_analytic_analysis.summary.month', string='Month'),
'user_ids': fields.function(_analysis_all, method=True, multi='analytic_analysis', type="many2many", relation='account_analytic_analysis.summary.user', string='User'),
}
diff --git a/addons/account_budget/crossovered_budget_workflow.xml b/addons/account_budget/crossovered_budget_workflow.xml
index f304775bcca..16997d694f2 100644
--- a/addons/account_budget/crossovered_budget_workflow.xml
+++ b/addons/account_budget/crossovered_budget_workflow.xml
@@ -65,28 +65,24 @@
validate
- cancel
- cancel
- done
-
diff --git a/addons/account_invoice_layout/account_invoice_layout.py b/addons/account_invoice_layout/account_invoice_layout.py
index adb80d787a0..2c2a02d4b9d 100644
--- a/addons/account_invoice_layout/account_invoice_layout.py
+++ b/addons/account_invoice_layout/account_invoice_layout.py
@@ -130,19 +130,22 @@ class account_invoice_line(osv.osv):
default['state'] = self.browse(cr, uid, id).state
return super(account_invoice_line, self).copy_data(cr, uid, id, default, context)
- def _fnct(self, cr, uid, id, name, args, context=None):
+ def _fnct(self, cr, uid, ids, name, args, context=None):
res = {}
- for m in self.browse(cr, uid, id):
- if m.state != 'article':
- if m.state == 'line':
- res[m.id] = '-----------------------------------------'
- elif m.state == 'break':
- res[m.id] = 'PAGE BREAK'
+
+ lines = self.browse(cr, uid, ids)
+ account_ids = [line.account_id.id for line in lines]
+ account_names = dict(self.pool.get('account.account').name_get(cr, uid, account_ids, context=context))
+ for line in lines:
+ if line.state != 'article':
+ if line.state == 'line':
+ res[line.id] = '-----------------------------------------'
+ elif line.state == 'break':
+ res[line.id] = 'PAGE BREAK'
else:
- res[m.id] = ' '
+ res[line.id] = ' '
else:
- [(temp)] = self.pool.get('account.account').name_get(cr, uid, [m.account_id.id], context=context)
- res[m.id] = temp[1]
+ res[line.id] = account_names.get(line.account_id.id, '')
return res
_name = "account.invoice.line"
@@ -205,4 +208,4 @@ class account_invoice(osv.osv):
account_invoice()
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/account_invoice_layout/report/report_account_invoice_layout.py b/addons/account_invoice_layout/report/report_account_invoice_layout.py
index e28d98479b1..f61a05fd5f4 100644
--- a/addons/account_invoice_layout/report/report_account_invoice_layout.py
+++ b/addons/account_invoice_layout/report/report_account_invoice_layout.py
@@ -23,6 +23,7 @@ import time
from report import report_sxw
+
class account_invoice_1(report_sxw.rml_parse):
def __init__(self, cr, uid, name, context):
super(account_invoice_1, self).__init__(cr, uid, name, context=context)
@@ -33,112 +34,111 @@ class account_invoice_1(report_sxw.rml_parse):
self.context = context
self._node = None
- def invoice_lines(self,invoice):
- result =[]
- sub_total={}
- info=[]
- invoice_list=[]
- res={}
- list_in_seq={}
+ def invoice_lines(self, invoice):
+ result = []
+ sub_total = {}
+ info = []
+ invoice_list = []
+ res = {}
+ list_in_seq = {}
ids = self.pool.get('account.invoice.line').search(self.cr, self.uid, [('invoice_id', '=', invoice.id)])
ids.sort()
- for id in range(0,len(ids)):
+ for id in range(0, len(ids)):
info = self.pool.get('account.invoice.line').browse(self.cr, self.uid, ids[id], self.context.copy())
- list_in_seq[info]=info.sequence
- i=1
- j=0
+ list_in_seq[info] = info.sequence
+ i = 1
+ j = 0
final=sorted(list_in_seq.items(), lambda x, y: cmp(x[1], y[1]))
- invoice_list=[x[0] for x in final]
- sum_flag={}
- sum_flag[j]=-1
+ invoice_list = [x[0] for x in final]
+ sum_flag = {}
+ sum_flag[j] = -1
for entry in invoice_list:
- res={}
- if entry.state=='article':
+ res = {}
+ if entry.state == 'article':
self.cr.execute('select tax_id from account_invoice_line_tax where invoice_line_id=%s', (entry.id,))
- tax_ids=self.cr.fetchall()
- if tax_ids==[]:
- res['tax_types']=''
+ tax_ids = self.cr.fetchall()
+ if tax_ids == []:
+ res['tax_types'] = ''
else:
- tax_names_dict={}
- for item in range(0,len(tax_ids)) :
+ tax_names_dict = {}
+ for item in range(0, len(tax_ids)):
self.cr.execute('select name from account_tax where id=%s', (tax_ids[item][0],))
- type=self.cr.fetchone()
- tax_names_dict[item] =type[0]
- tax_names = ','.join([tax_names_dict[x] for x in range(0,len(tax_names_dict))])
- res['tax_types']=tax_names
- res['name']=entry.name
- res['quantity']="%.2f"%(entry.quantity)
- res['price_unit']="%.2f"%(entry.price_unit)
- res['discount']="%.2f"%(entry.discount)
- res['price_subtotal']="%.2f"%(entry.price_subtotal)
- sub_total[i]=entry.price_subtotal
- i=i+1
- res['note']=entry.note
- res['currency']=invoice.currency_id.symbol
- res['type']=entry.state
+ type = self.cr.fetchone()
+ tax_names_dict[item] = type[0]
+ tax_names = ','.join([tax_names_dict[x] for x in range(0, len(tax_names_dict))])
+ res['tax_types'] = tax_names
+ res['name'] = entry.name
+ res['quantity'] = self.formatLang(entry.quantity, digits=self.get_digits(dp='Account'))
+ res['price_unit'] = self.formatLang(entry.price_unit, digits=self.get_digits(dp='Account'))
+ res['discount'] = self.formatLang(entry.discount, digits=self.get_digits(dp='Account'))
+ res['price_subtotal'] = self.formatLang(entry.price_subtotal, digits=self.get_digits(dp='Account'))
+ sub_total[i] = entry.price_subtotal
+ i = i + 1
+ res['note'] = entry.note
+ res['currency'] = invoice.currency_id.symbol
+ res['type'] = entry.state
- if entry.uos_id.id==False:
- res['uos']=''
+ if entry.uos_id.id == False:
+ res['uos'] = ''
else:
uos_name = self.pool.get('product.uom').read(self.cr, self.uid, entry.uos_id.id, ['name'], self.context.copy())
res['uos'] = uos_name['name']
else:
+ res['quantity'] = ''
+ res['price_unit'] = ''
+ res['discount'] = ''
+ res['tax_types'] = ''
+ res['type'] = entry.state
+ res['note'] = entry.note
+ res['uos'] = ''
- res['quantity']=''
- res['price_unit']=''
- res['discount']=''
- res['tax_types']=''
- res['type']=entry.state
- res['note']=entry.note
- res['uos']=''
-
- if entry.state=='subtotal':
- res['name']=entry.name
- sum=0
- sum_id=0
- if sum_flag[j]==-1:
- temp=1
+ if entry.state == 'subtotal':
+ res['name'] = entry.name
+ sum = 0
+ sum_id = 0
+ if sum_flag[j] == -1:
+ temp = 1
else:
- temp=sum_flag[j]
+ temp = sum_flag[j]
- for sum_id in range(temp,len(sub_total)+1):
- sum+=sub_total[sum_id]
- sum_flag[j+1]= sum_id +1
+ for sum_id in range(temp, len(sub_total)+1):
+ sum += sub_total[sum_id]
+ sum_flag[j+1] = sum_id +1
- j=j+1
- res['price_subtotal']="%.2f"%(sum)
- res['currency']=invoice.currency_id.symbol
- res['quantity']=''
- res['price_unit']=''
- res['discount']=''
- res['tax_types']=''
- res['uos']=''
- elif entry.state=='title':
- res['name']=entry.name
- res['price_subtotal']=''
- res['currency']=''
- elif entry.state=='text':
- res['name']=entry.name
- res['price_subtotal']=''
- res['currency']=''
- elif entry.state=='line':
- res['quantity']='_______________'
- res['price_unit']='______________'
- res['discount']='____________'
- res['tax_types']='____________________'
- res['uos']='_____'
- res['name']='_______________________________________________'
- res['price_subtotal']='____________'
- res['currency']='____'
- elif entry.state=='break':
- res['type']=entry.state
- res['name']=entry.name
- res['price_subtotal']=''
- res['currency']=''
+ j = j + 1
+ res['price_subtotal'] = "%.2f" % (sum)
+ res['currency'] = invoice.currency_id.symbol
+ res['quantity'] = ''
+ res['price_unit'] = ''
+ res['discount'] = ''
+ res['tax_types'] = ''
+ res['uos'] = ''
+ elif entry.state == 'title':
+ res['name'] = entry.name
+ res['price_subtotal'] = ''
+ res['currency'] = ''
+ elif entry.state == 'text':
+ res['name'] = entry.name
+ res['price_subtotal'] = ''
+ res['currency'] = ''
+ elif entry.state == 'line':
+ res['quantity'] = '_______________'
+ res['price_unit'] = '______________'
+ res['discount'] = '____________'
+ res['tax_types'] = '____________________'
+ res['uos'] = '_____'
+ res['name'] = '_______________________________________________'
+ res['price_subtotal'] = '____________'
+ res['currency'] = '____'
+ elif entry.state == 'break':
+ res['type'] = entry.state
+ res['name'] = entry.name
+ res['price_subtotal'] = ''
+ res['currency'] = ''
else:
- res['name']=entry.name
- res['price_subtotal']=''
- res['currency']=invoice.currency_id.symbol
+ res['name'] = entry.name
+ res['price_subtotal'] = ''
+ res['currency'] = invoice.currency_id.symbol
result.append(res)
return result
diff --git a/addons/account_invoice_layout/report/report_account_invoice_layout.rml b/addons/account_invoice_layout/report/report_account_invoice_layout.rml
index f92cd477f1a..3cd64a08b02 100644
--- a/addons/account_invoice_layout/report/report_account_invoice_layout.rml
+++ b/addons/account_invoice_layout/report/report_account_invoice_layout.rml
@@ -376,7 +376,7 @@
Net Total:
- [[ (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 d223c58316f..7ebb9d933de 100644
--- a/addons/account_payment/wizard/account_payment_populate_statement.py
+++ b/addons/account_payment/wizard/account_payment_populate_statement.py
@@ -114,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/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_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_calendar/base_calendar.py b/addons/base_calendar/base_calendar.py
index 88ee1a8ec33..722ac5cb0a8 100644
--- a/addons/base_calendar/base_calendar.py
+++ b/addons/base_calendar/base_calendar.py
@@ -1065,7 +1065,7 @@ class calendar_event(osv.osv):
'rule_type': rrule_type,
'id': id,
})
- cr.execute(qry, val) # Hopefully psycopg2 works with dicts. But, FIXME
+ cr.execute(qry % val)
return True
def _get_rulestring(self, cr, uid, ids, name, arg, context=None):
diff --git a/addons/base_calendar/base_calendar_view.xml b/addons/base_calendar/base_calendar_view.xml
index 2a0ed14080f..ba91c4b75dd 100644
--- a/addons/base_calendar/base_calendar_view.xml
+++ b/addons/base_calendar/base_calendar_view.xml
@@ -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 75ca37ec081..2f356806b1e 100644
--- a/addons/base_calendar/i18n/nl.po
+++ b/addons/base_calendar/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:50+0000\n"
-"PO-Revision-Date: 2010-10-03 20:01+0000\n"
-"Last-Translator: Wouter Schrijvers \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-10-04 04:57+0000\n"
+"X-Launchpad-Export-Date: 2010-10-05 04:57+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: base_calendar
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/board/i18n/pt_BR.po b/addons/board/i18n/pt_BR.po
index 9ed7e104348..56340d82ba1 100644
--- a/addons/board/i18n/pt_BR.po
+++ b/addons/board/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: 2009-12-07 16:48+0000\n"
+"PO-Revision-Date: 2010-10-04 16:07+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: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 bcc624d6a67..d22fa98f6e4 100644
--- a/addons/caldav/calendar.py
+++ b/addons/caldav/calendar.py
@@ -716,7 +716,7 @@ class basic_calendar_line(osv.osv):
"""
cr.execute("SELECT COUNT(id) FROM basic_calendar_lines \
- WHERE name='%s' AND calendar_id=%s",
+ WHERE name=%s AND calendar_id=%s",
(vals.get('name'), vals.get('calendar_id')))
res = cr.fetchone()
if res:
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/crm_lead_data.xml b/addons/crm/crm_lead_data.xml
index cb80a7d28e9..2a49e43e683 100644
--- a/addons/crm/crm_lead_data.xml
+++ b/addons/crm/crm_lead_data.xml
@@ -33,9 +33,10 @@
- Win
+ Won
+
diff --git a/addons/crm/crm_lead_view.xml b/addons/crm/crm_lead_view.xml
index 3afea6c5081..fc7a7dfdb73 100644
--- a/addons/crm/crm_lead_view.xml
+++ b/addons/crm/crm_lead_view.xml
@@ -315,11 +315,11 @@
-
-
diff --git a/addons/crm/crm_meeting_view.xml b/addons/crm/crm_meeting_view.xml
index 2821024bfbf..dd36a994b8d 100644
--- a/addons/crm/crm_meeting_view.xml
+++ b/addons/crm/crm_meeting_view.xml
@@ -13,7 +13,8 @@
{'object_id':'crm.meeting'}
-
@@ -311,7 +312,7 @@
-
diff --git a/addons/crm/crm_opportunity.py b/addons/crm/crm_opportunity.py
index 771212a171d..2b0062eb9d5 100644
--- a/addons/crm/crm_opportunity.py
+++ b/addons/crm/crm_opportunity.py
@@ -85,10 +85,11 @@ class crm_opportunity(osv.osv):
"""
res = super(crm_opportunity, self).case_close(cr, uid, ids, args)
stage_id = super(crm_opportunity, self).stage_next(cr, uid, ids, context={'force_domain': [('probability', '=', 0)]})
- if not stage_id:
- raise osv.except_osv(_('Warning !'), _('There is no stage for lost opportunities defined for this Sale Team.'))
- value = self.onchange_stage_id(cr, uid, ids, stage_id, context={})['value']
- value.update({'date_closed': time.strftime('%Y-%m-%d %H:%M:%S'), 'stage_id': stage_id})
+ value = {}
+ if stage_id:
+ value = self.onchange_stage_id(cr, uid, ids, stage_id, context={}).get('value', {})
+ value['stage_id'] = stage_id
+ value.update({'date_closed': time.strftime('%Y-%m-%d %H:%M:%S')})
res = self.write(cr, uid, ids, value)
for (id, name) in self.name_get(cr, uid, ids):
diff --git a/addons/crm/crm_opportunity_view.xml b/addons/crm/crm_opportunity_view.xml
index b52694d8b20..86bb99633ac 100644
--- a/addons/crm/crm_opportunity_view.xml
+++ b/addons/crm/crm_opportunity_view.xml
@@ -14,14 +14,14 @@
+ domain="[('object_id.model', '=', 'crm.lead')]"/>
-
+ states="draft,open,pending" type="object"
+ icon="gtk-go-back" string="" />
+
@@ -88,7 +88,7 @@
groups="base.group_extended"
icon="gtk-go-up" />
-
-
-
@@ -302,11 +294,11 @@
default="context.get('section_id', False)"
context="{'invisible_section': False}"
widget="selection">
-
-
diff --git a/addons/crm/crm_phonecall_view.xml b/addons/crm/crm_phonecall_view.xml
index afc6edd5295..d5a63c7c9e6 100644
--- a/addons/crm/crm_phonecall_view.xml
+++ b/addons/crm/crm_phonecall_view.xml
@@ -31,6 +31,7 @@
+
@@ -99,10 +98,10 @@
-
+ help="My Sales Team(s)" />
@@ -128,7 +127,7 @@
diff --git a/addons/crm/report/crm_phonecall_report.py b/addons/crm/report/crm_phonecall_report.py
index ce8f251afb3..052387bacc5 100644
--- a/addons/crm/report/crm_phonecall_report.py
+++ b/addons/crm/report/crm_phonecall_report.py
@@ -38,43 +38,6 @@ class crm_phonecall_report(osv.osv):
_name = "crm.phonecall.report"
_description = "Phone calls by user and section"
_auto = False
-
- def _get_data(self, cr, uid, ids, field_name, arg, context={}):
-
- """ @param cr: the current row, from the database cursor,
- @param uid: the current user’s ID for security checks,
- @param ids: List of case and section Data’s IDs
- @param context: A standard dictionary for contextual values """
-
- res = {}
- state_perc = 0.0
- avg_ans = 0.0
-
- for case in self.browse(cr, uid, ids, context):
- if field_name != 'avg_answers':
- state = field_name[5:]
- cr.execute("select count(*) from crm_lead where \
- section_id =%s and state='%s'"%(case.section_id.id, state))
- state_cases = cr.fetchone()[0]
- perc_state = (state_cases / float(case.nbr)) * 100
-
- res[case.id] = perc_state
- else:
- model_name = self._name.split('report.')
- if len(model_name) < 2:
- res[case.id] = 0.0
- else:
- model_name = model_name[1]
-
- cr.execute("select count(*) from crm_case_log l, ir_model m \
- where l.model_id=m.id and m.model = '%s'" , model_name)
- logs = cr.fetchone()[0]
-
- avg_ans = logs / case.nbr
- res[case.id] = avg_ans
-
- return res
-
_columns = {
'name': fields.char('Year', size=64, required=False, readonly=True),
'user_id':fields.many2one('res.users', 'User', readonly=True),
@@ -82,9 +45,6 @@ class crm_phonecall_report(osv.osv):
'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority'),
'nbr': fields.integer('# of Cases', readonly=True),
'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True),
- 'avg_answers': fields.function(_get_data, string='Avg. Answers', method=True, type="integer"),
- 'perc_done': fields.function(_get_data, string='%Done', method=True, type="float"),
- 'perc_cancel': fields.function(_get_data, string='%Cancel', method=True, type="float"),
'month':fields.selection([('01', 'January'), ('02', 'February'), \
('03', 'March'), ('04', 'April'),\
('05', 'May'), ('06', 'June'), \
@@ -131,40 +91,11 @@ class crm_phonecall_report(osv.osv):
c.company_id,
c.priority,
1 as nbr,
- 0 as avg_answers,
- 0.0 as perc_done,
- 0.0 as perc_cancel,
date_trunc('day',c.create_date) as create_date,
-<<<<<<< TREE
- avg(extract('epoch' from (c.date_closed-c.create_date)))/(3600*24) as delay_close,
- avg(extract('epoch' from (c.date_open-c.create_date)))/(3600*24) as delay_open
-
-=======
extract('epoch' from (c.date_closed-c.create_date))/(3600*24) as delay_close,
extract('epoch' from (c.date_open-c.create_date))/(3600*24) as delay_open
->>>>>>> MERGE-SOURCE
from
crm_phonecall c
-<<<<<<< TREE
- where c.categ_id in (select res_id from ir_model_data where (name = 'categ_phone1' or name ='categ_phone2'))
- group by
- to_char(c.create_date, 'YYYY'),
- to_char(c.create_date, 'MM'),\
- c.state,
- c.user_id,
- c.section_id,
- c.categ_id,
- c.partner_id,
- c.company_id,
- c.duration,
- c.priority,
- to_char(c.date_open, 'YYYY-MM-DD'),
- to_char(c.date_closed, 'YYYY-mm-dd'),
- c.stage_id,
- to_char(c.create_date, 'YYYY-MM-DD'),
- c.create_date
-=======
->>>>>>> MERGE-SOURCE
)""")
crm_phonecall_report()
diff --git a/addons/crm/report/crm_phonecall_report_view.xml b/addons/crm/report/crm_phonecall_report_view.xml
index 9ba923b2d3b..d3c513ad143 100644
--- a/addons/crm/report/crm_phonecall_report_view.xml
+++ b/addons/crm/report/crm_phonecall_report_view.xml
@@ -100,10 +100,10 @@
-
+ help="My Sales Team(s)" />
diff --git a/addons/crm_claim/crm_claim_view.xml b/addons/crm_claim/crm_claim_view.xml
index 5ba80dfa68e..ea1d9e543ff 100644
--- a/addons/crm_claim/crm_claim_view.xml
+++ b/addons/crm_claim/crm_claim_view.xml
@@ -275,9 +275,9 @@
-
+ help="My Sales Team(s)" />
diff --git a/addons/crm_claim/report/crm_claim_report_view.xml b/addons/crm_claim/report/crm_claim_report_view.xml
index 35333e03360..893efdfac46 100644
--- a/addons/crm_claim/report/crm_claim_report_view.xml
+++ b/addons/crm_claim/report/crm_claim_report_view.xml
@@ -105,10 +105,10 @@
default="context.get('section_id', False)"
context="{'invisible_section': False}">
-
+ help="My Sales Team(s)" />
diff --git a/addons/crm_fundraising/crm_fundraising_view.xml b/addons/crm_fundraising/crm_fundraising_view.xml
index c7788e0449f..0cd8f7aae49 100644
--- a/addons/crm_fundraising/crm_fundraising_view.xml
+++ b/addons/crm_fundraising/crm_fundraising_view.xml
@@ -273,9 +273,9 @@
help="Unassigned" />
-
+ help="My Sales Team(s)" />
diff --git a/addons/crm_fundraising/report/crm_fundraising_report_view.xml b/addons/crm_fundraising/report/crm_fundraising_report_view.xml
index 62da63c1129..3e4064614fe 100644
--- a/addons/crm_fundraising/report/crm_fundraising_report_view.xml
+++ b/addons/crm_fundraising/report/crm_fundraising_report_view.xml
@@ -99,10 +99,10 @@
-
+ help="My Sales Team(s)" />
-
+ help="My Sales Team(s)" />
diff --git a/addons/crm_helpdesk/report/crm_helpdesk_report_view.xml b/addons/crm_helpdesk/report/crm_helpdesk_report_view.xml
index 2274b0cc8a6..125f977d333 100644
--- a/addons/crm_helpdesk/report/crm_helpdesk_report_view.xml
+++ b/addons/crm_helpdesk/report/crm_helpdesk_report_view.xml
@@ -96,10 +96,10 @@
-
+ help="My Sales Team(s)" />
\n"
"POT-Creation-Date: 2010-08-20 05:24+0000\n"
-"PO-Revision-Date: 2010-10-03 20:06+0000\n"
-"Last-Translator: Wouter Schrijvers \n"
+"PO-Revision-Date: 2010-10-04 06:52+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-10-04 04:57+0000\n"
+"X-Launchpad-Export-Date: 2010-10-05 04:57+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: decimal_precision
diff --git a/addons/document/document.py b/addons/document/document.py
index 8ee597677b6..5789da79390 100644
--- a/addons/document/document.py
+++ b/addons/document/document.py
@@ -255,10 +255,11 @@ class document_file(osv.osv):
storage_id = par.storage_id
break
par = par.parent_id
- assert storage_id, "Strange, found file #%s w/o storage!" % f.id
- r = stor.prepare_unlink(cr, uid, storage_id, f)
- if r:
- unres.append(r)
+ #assert storage_id, "Strange, found file #%s w/o storage!" % f.id #TOCHECK: after run yml, it's fail
+ if storage_id:
+ r = stor.prepare_unlink(cr, uid, storage_id, f)
+ if r:
+ unres.append(r)
res = super(document_file, self).unlink(cr, uid, ids, context)
stor.do_unlink(cr, uid, unres)
return res
diff --git a/addons/document_ftp/test_easyftp.py b/addons/document_ftp/test_easyftp.py
index c5526371065..1f7324b821e 100644
--- a/addons/document_ftp/test_easyftp.py
+++ b/addons/document_ftp/test_easyftp.py
@@ -31,7 +31,7 @@ def get_plain_ftp(timeout=10.0):
ftp = FTP()
host = config.get('ftp_server_host', '127.0.0.1')
port = config.get('ftp_server_port', '8021')
- ftp.connect(host, port, timeout=timeout)
+ ftp.connect(host, port,timeout)
return ftp
def get_ftp_login(cr, uid, ormobj):
diff --git a/addons/document_ftp/wizard/ftp_configuration_view.xml b/addons/document_ftp/wizard/ftp_configuration_view.xml
index 0319c69823e..151e2ce49c6 100644
--- a/addons/document_ftp/wizard/ftp_configuration_view.xml
+++ b/addons/document_ftp/wizard/ftp_configuration_view.xml
@@ -21,7 +21,7 @@
Configure FTP Server
- Choose the address for the Document Management System's FTP server.
+ Indicate the network address on which your OpenERP server should be reachable for end-users. This depends on your network topology and configuration, and will only affect the links displayed to the users. The format is HOST:PORT and the default host (localhost) is only suitable for access from the server machine itself..12
diff --git a/addons/email_template/email_template.py b/addons/email_template/email_template.py
index f87c4bf750e..ee82c917351 100644
--- a/addons/email_template/email_template.py
+++ b/addons/email_template/email_template.py
@@ -331,38 +331,34 @@ This is useful for CRM leads for example"),
default.update({'name':new_name})
return super(email_template, self).copy(cr, uid, id, default, context)
- def compute_pl(self,
- model_object_field,
- sub_model_object_field,
- null_value, template_language='mako'):
+ def build_expression(self, field_name, sub_field_name, null_value, template_language='mako'):
"""
- Returns the expression based on data provided
- @param model_object_field: First level field
- @param sub_model_object_field: Second level drilled down field (M2O)
- @param null_value: What has to be returned if the value is empty
- @param template_language: The language used for templating
+ Returns a template expression based on data provided
+ @param field_name: field name
+ @param sub_field_name: sub field name (M2O)
+ @param null_value: default value if the target value is empty
+ @param template_language: name of template engine
@return: computed expression
"""
- #Configure for MAKO
- copy_val = ''
+
+ expression = ''
if template_language == 'mako':
- if model_object_field:
- copy_val = "${object." + model_object_field
- if sub_model_object_field:
- copy_val += "." + sub_model_object_field
- if null_value:
- copy_val += " or '" + null_value + "'"
- if model_object_field:
- copy_val += "}"
+ if field_name:
+ expression = "${object." + field_name
+ if sub_field_name:
+ expression += "." + sub_field_name
+ if null_value:
+ expression += " or '''%s'''" % null_value
+ expression += "}"
elif template_language == 'django':
- if model_object_field:
- copy_val = "{{object." + model_object_field
- if sub_model_object_field:
- copy_val += "." + sub_model_object_field
- if null_value:
- copy_val = copy_val + '|default:"' + null_value + '"'
- copy_val = copy_val + "}}"
- return copy_val
+ if field_name:
+ expression = "{{object." + field_name
+ if sub_field_name:
+ expression += "." + sub_field_name
+ if null_value:
+ expression += "|default: '''%s'''" % null_value
+ expression += "}}"
+ return expression
def onchange_model_object_field(self, cr, uid, ids, model_object_field, template_language, context=None):
if not model_object_field:
@@ -374,7 +370,7 @@ This is useful for CRM leads for example"),
res_ids = self.pool.get('ir.model').search(cr, uid, [('model', '=', field_obj.relation)], context=context)
if res_ids:
result['sub_object'] = res_ids[0]
- result['copyvalue'] = self.compute_pl(False,
+ result['copyvalue'] = self.build_expression(False,
False,
False,
template_language)
@@ -383,7 +379,7 @@ This is useful for CRM leads for example"),
else:
#Its a simple field... just compute placeholder
result['sub_object'] = False
- result['copyvalue'] = self.compute_pl(field_obj.name,
+ result['copyvalue'] = self.build_expression(field_obj.name,
False,
False,
template_language
@@ -402,7 +398,7 @@ This is useful for CRM leads for example"),
sub_field_obj = self.pool.get('ir.model.fields').browse(cr, uid, sub_model_object_field, context)
if res_ids:
result['sub_object'] = res_ids[0]
- result['copyvalue'] = self.compute_pl(field_obj.name,
+ result['copyvalue'] = self.build_expression(field_obj.name,
sub_field_obj.name,
False,
template_language
@@ -412,7 +408,7 @@ This is useful for CRM leads for example"),
else:
#Its a simple field... just compute placeholder
result['sub_object'] = False
- result['copyvalue'] = self.compute_pl(field_obj.name,
+ result['copyvalue'] = self.build_expression(field_obj.name,
False,
False,
template_language
@@ -431,7 +427,7 @@ This is useful for CRM leads for example"),
sub_field_obj = self.pool.get('ir.model.fields').browse(cr, uid, sub_model_object_field, context)
if res_ids:
result['sub_object'] = res_ids[0]
- result['copyvalue'] = self.compute_pl(field_obj.name,
+ result['copyvalue'] = self.build_expression(field_obj.name,
sub_field_obj.name,
null_value,
template_language
@@ -441,7 +437,7 @@ This is useful for CRM leads for example"),
else:
#Its a simple field... just compute placeholder
result['sub_object'] = False
- result['copyvalue'] = self.compute_pl(field_obj.name,
+ result['copyvalue'] = self.build_expression(field_obj.name,
False,
null_value,
template_language
diff --git a/addons/email_template/email_template_workflow.xml b/addons/email_template/email_template_workflow.xml
index 911b8bf49ff..1a6a73cca77 100644
--- a/addons/email_template/email_template_workflow.xml
+++ b/addons/email_template/email_template_workflow.xml
@@ -47,26 +47,22 @@
button_approval
- button_suspended
- get_reapprove
- get_never
-
diff --git a/addons/event/__openerp__.py b/addons/event/__openerp__.py
index fdf64388a19..4e65009f422 100644
--- a/addons/event/__openerp__.py
+++ b/addons/event/__openerp__.py
@@ -53,7 +53,7 @@
'board_association_view.xml',
'res_partner_view.xml',
],
- 'demo_xml': ['event_demo.xml', 'board_association_demo.xml'],
+ 'demo_xml': ['event_demo.xml'],
'test': ['test/test_event.yml'],
'installable': True,
'active': False,
diff --git a/addons/event/board_association_demo.xml b/addons/event/board_association_demo.xml
deleted file mode 100644
index 1e66696aa8b..00000000000
--- a/addons/event/board_association_demo.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/addons/event/event.py b/addons/event/event.py
index 2f838ed0580..9a5292cda31 100644
--- a/addons/event/event.py
+++ b/addons/event/event.py
@@ -28,6 +28,7 @@ import time
import tools
import decimal_precision as dp
+
class event_type(osv.osv):
""" Event Type """
_name = 'event.type'
@@ -226,7 +227,7 @@ class event_event(osv.osv):
'product_id': fields.many2one('product.product', 'Product', required=True, readonly=True, states={'draft': [('readonly', False)]}, help="The invoices of this event registration will be created with this Product. Thus it allows you to set the default label and the accounting info you want by default on these invoices."),
'note': fields.text('Notes', help="Description or Summary of Event", readonly=False, states={'done': [('readonly', True)]}),
'pricelist_id': fields.many2one('product.pricelist', 'Pricelist', readonly=True, states={'draft': [('readonly', False)]}, help="Pricelist version for current event."),
- 'unit_price': fields.related('product_id', 'list_price', type='float', string='Registration Cost', readonly=True, states={'draft':[('readonly',False)]}, help="This will be the default price used as registration cost when invoicing this event. Note that you can specify for each registration a specific amount if you want to"),
+ 'unit_price': fields.related('product_id', 'list_price', type='float', string='Registration Cost', readonly=True, states={'draft':[('readonly',False)]}, help="This will be the default price used as registration cost when invoicing this event. Note that you can specify for each registration a specific amount if you want to", digits_compute=dp.get_precision('Sale Price')),
'main_speaker_id': fields.many2one('res.partner','Main Speaker', readonly=False, states={'done': [('readonly', True)]}, help="Speaker who are giving speech on event."),
'speaker_ids':fields.many2many('res.partner', 'event_speaker_rel', 'speaker_id', 'partner_id', 'Other Speakers', readonly=False, states={'done': [('readonly', True)]}),
'address_id': fields.many2one('res.partner.address','Location Address', readonly=False, states={'done': [('readonly', True)]}),
@@ -303,12 +304,12 @@ class event_registration(osv.osv):
'name': fields.char('Summary', size=124, readonly=True, states={'draft': [('readonly', False)]}),
'email_cc': fields.text('CC', size=252 , readonly=False, states={'done': [('readonly', True)]}, help="These email addresses will be added to the CC field of all inbound and outbound emails for this record before being sent. Separate multiple email addresses with a comma"),
'nb_register': fields.integer('Quantity', required=True, readonly=True, states={'draft': [('readonly', False)]}, help="Number of Registrations or Tickets"),
- 'event_id': fields.many2one('event.event', 'Event Related', required=True, readonly=True, states={'draft': [('readonly', False)]}),
+ 'event_id': fields.many2one('event.event', 'Event', required=True, readonly=True, states={'draft': [('readonly', False)]}),
'partner_id': fields.many2one('res.partner', 'Partner', states={'done': [('readonly', True)]}),
"partner_invoice_id": fields.many2one('res.partner', 'Partner Invoiced', readonly=True, states={'draft': [('readonly', False)]}),
"contact_id": fields.many2one('res.partner.contact', 'Partner Contact', readonly=False, states={'done': [('readonly', True)]}), #TODO: filter only the contacts that have a function into the selected partner_id
- "unit_price": fields.float('Unit Price', required=True, digits_compute= dp.get_precision('Event Price'), readonly=True, states={'draft': [('readonly', False)]}),
- 'price_subtotal': fields.function(_amount_line, method=True, string='Subtotal', digits_compute= dp.get_precision('Event Price')),
+ "unit_price": fields.float('Unit Price', required=True, digits_compute=dp.get_precision('Sale Price'), readonly=True, states={'draft': [('readonly', False)]}),
+ 'price_subtotal': fields.function(_amount_line, method=True, string='Subtotal', digits_compute=dp.get_precision('Sale Price')),
"badge_ids": fields.one2many('event.registration.badge', 'registration_id', 'Badges', readonly=False, states={'done': [('readonly', True)]}),
"event_product": fields.char("Invoice Name", size=128, readonly=True, states={'draft': [('readonly', False)]}),
"tobe_invoiced": fields.boolean("To be Invoiced", readonly=True, states={'draft': [('readonly', False)]}),
diff --git a/addons/event/event_view.xml b/addons/event/event_view.xml
index b016dbef9f9..73b973b6256 100644
--- a/addons/event/event_view.xml
+++ b/addons/event/event_view.xml
@@ -179,6 +179,7 @@
+
@@ -226,27 +227,27 @@
-
-
+
+
-
-
+
-
+
+
+
+
-
-
-
@@ -295,11 +296,11 @@
tree
-
-
+
-
+
+
@@ -343,9 +344,9 @@
+
-
@@ -468,27 +469,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_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_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/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_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_recruitment/i18n/en_US.po b/addons/hr_recruitment/i18n/en_US.po
index e4065c4a94d..7bd8e6c1b96 100644
--- a/addons/hr_recruitment/i18n/en_US.po
+++ b/addons/hr_recruitment/i18n/en_US.po
@@ -254,11 +254,6 @@ msgstr "Convert To Partner"
msgid "Recruitments Statistics"
msgstr "Recruitments Statistics"
-#. module: hr_recruitment
-#: field:hr.recruitment.report,perc_done:0
-msgid "%Done"
-msgstr "%Done"
-
#. module: hr_recruitment
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
@@ -312,11 +307,6 @@ msgstr "Email"
msgid "Availability (Days)"
msgstr "Availability (Days)"
-#. module: hr_recruitment
-#: field:hr.recruitment.report,avg_answers:0
-msgid "Avg. Answers"
-msgstr "Avg. Answers"
-
#. module: hr_recruitment
#: view:hr.recruitment.report:0
msgid "Available"
@@ -464,11 +454,6 @@ msgstr "Stage of Recruitment"
msgid "Stages"
msgstr "Stages"
-#. module: hr_recruitment
-#: field:hr.recruitment.report,perc_cancel:0
-msgid "%Cancel"
-msgstr "%Cancel"
-
#. module: hr_recruitment
#: field:hr.applicant,probability:0
msgid "Probability"
diff --git a/addons/hr_recruitment/i18n/fr.po b/addons/hr_recruitment/i18n/fr.po
index becba8296cd..16e1782e223 100644
--- a/addons/hr_recruitment/i18n/fr.po
+++ b/addons/hr_recruitment/i18n/fr.po
@@ -257,11 +257,6 @@ msgstr ""
msgid "Recruitments Statistics"
msgstr ""
-#. module: hr_recruitment
-#: field:hr.recruitment.report,perc_done:0
-msgid "%Done"
-msgstr ""
-
#. module: hr_recruitment
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
@@ -315,11 +310,6 @@ msgstr ""
msgid "Availability (Days)"
msgstr ""
-#. module: hr_recruitment
-#: field:hr.recruitment.report,avg_answers:0
-msgid "Avg. Answers"
-msgstr ""
-
#. module: hr_recruitment
#: view:hr.recruitment.report:0
msgid "Available"
@@ -467,11 +457,6 @@ msgstr ""
msgid "Stages"
msgstr ""
-#. module: hr_recruitment
-#: field:hr.recruitment.report,perc_cancel:0
-msgid "%Cancel"
-msgstr ""
-
#. module: hr_recruitment
#: field:hr.applicant,probability:0
msgid "Probability"
diff --git a/addons/hr_recruitment/i18n/hr_recruitment.pot b/addons/hr_recruitment/i18n/hr_recruitment.pot
index 9ab2d5b02df..27e32ce7f71 100644
--- a/addons/hr_recruitment/i18n/hr_recruitment.pot
+++ b/addons/hr_recruitment/i18n/hr_recruitment.pot
@@ -254,11 +254,6 @@ msgstr ""
msgid "Recruitments Statistics"
msgstr ""
-#. module: hr_recruitment
-#: field:hr.recruitment.report,perc_done:0
-msgid "%Done"
-msgstr ""
-
#. module: hr_recruitment
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
@@ -464,11 +459,6 @@ msgstr ""
msgid "Stages"
msgstr ""
-#. module: hr_recruitment
-#: field:hr.recruitment.report,perc_cancel:0
-msgid "%Cancel"
-msgstr ""
-
#. module: hr_recruitment
#: field:hr.applicant,probability:0
msgid "Probability"
diff --git a/addons/hr_recruitment/i18n/mn.po b/addons/hr_recruitment/i18n/mn.po
index 9f1704c7112..ab849b831c8 100644
--- a/addons/hr_recruitment/i18n/mn.po
+++ b/addons/hr_recruitment/i18n/mn.po
@@ -258,11 +258,6 @@ msgstr ""
msgid "Recruitments Statistics"
msgstr ""
-#. module: hr_recruitment
-#: field:hr.recruitment.report,perc_done:0
-msgid "%Done"
-msgstr ""
-
#. module: hr_recruitment
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
@@ -316,11 +311,6 @@ msgstr ""
msgid "Availability (Days)"
msgstr ""
-#. module: hr_recruitment
-#: field:hr.recruitment.report,avg_answers:0
-msgid "Avg. Answers"
-msgstr ""
-
#. module: hr_recruitment
#: view:hr.recruitment.report:0
msgid "Available"
@@ -468,11 +458,6 @@ msgstr ""
msgid "Stages"
msgstr ""
-#. module: hr_recruitment
-#: field:hr.recruitment.report,perc_cancel:0
-msgid "%Cancel"
-msgstr ""
-
#. module: hr_recruitment
#: field:hr.applicant,probability:0
msgid "Probability"
diff --git a/addons/hr_recruitment/report/hr_recruitment_report.py b/addons/hr_recruitment/report/hr_recruitment_report.py
index 2a2ab8fce2b..405897e95f4 100644
--- a/addons/hr_recruitment/report/hr_recruitment_report.py
+++ b/addons/hr_recruitment/report/hr_recruitment_report.py
@@ -36,26 +36,10 @@ class hr_recruitment_report(osv.osv):
_auto = False
_rec_name = 'date'
- def _get_data(self, cr, uid, ids, field_name, arg, context={}):
-
- """ @param cr: the current row, from the database cursor,
- @param uid: the current user’s ID for security checks,
- @param ids: List of case and section Data’s IDs
- @param context: A standard dictionary for contextual values """
-
- res = {}
- state_perc = 0.0
- avg_ans = 0.0
- #TODO: Calculate avg_answer, perc_done, perc_cancel
- return res
-
_columns = {
'user_id':fields.many2one('res.users', 'User', readonly=True),
'nbr': fields.integer('# of Cases', readonly=True),
'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True),
- 'avg_answers': fields.function(_get_data, string='Avg. Answers', method=True, type="integer"),
- 'perc_done': fields.function(_get_data, string='%Done', method=True, type="float"),
- 'perc_cancel': fields.function(_get_data, string='%Cancel', method=True, type="float"),
'month':fields.selection([('01', 'January'), ('02', 'February'), \
('03', 'March'), ('04', 'April'),\
('05', 'May'), ('06', 'June'), \
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/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/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_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/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/knowledge/installer.py b/addons/knowledge/installer.py
index 7840ffbc276..e74c37f80d0 100644
--- a/addons/knowledge/installer.py
+++ b/addons/knowledge/installer.py
@@ -38,7 +38,7 @@ class knowledge_installer(osv.osv_memory):
help="Lets you create wiki pages and page groups in order "
"to keep track of business knowledge and share it with "
"and between your employees."),
- # Templates of Content
+ # Content templates
'wiki_faq':fields.boolean('Internal FAQ',
help="Creates a skeleton internal FAQ pre-filled with "
"documentation about OpenERP's Document Management "
diff --git a/addons/knowledge/knowledge_installer.xml b/addons/knowledge/knowledge_installer.xml
index 681bf2253d5..26e1c79123f 100644
--- a/addons/knowledge/knowledge_installer.xml
+++ b/addons/knowledge/knowledge_installer.xml
@@ -27,7 +27,7 @@
-
+
diff --git a/addons/mail_gateway/mail_gateway.py b/addons/mail_gateway/mail_gateway.py
index cc8d0ff9573..e6b8a2cbc02 100644
--- a/addons/mail_gateway/mail_gateway.py
+++ b/addons/mail_gateway/mail_gateway.py
@@ -199,7 +199,7 @@ class mailgate_message(osv.osv):
if action_ids:
action_data = action_pool.read(cr, uid, action_ids[0], context=context)
action_data.update({
- 'res_id': res_id,
+ 'domain' : "[('id','=',%d)]"%(res_id),
'nodestroy': True
})
return action_data
@@ -214,11 +214,12 @@ class mailgate_message(osv.osv):
"""
action_data = False
action_pool = self.pool.get('ir.actions.act_window')
+ message_pool = self.browse(cr ,uid, ids)[0]
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)],
+ 'domain': [('res_id','=',message_pool.res_id),('res_model','=',message_pool.model)],
'nodestroy': True
})
return action_data
diff --git a/addons/mail_gateway/mail_gateway_view.xml b/addons/mail_gateway/mail_gateway_view.xml
index 706996ed55a..ab118295db5 100644
--- a/addons/mail_gateway/mail_gateway_view.xml
+++ b/addons/mail_gateway/mail_gateway_view.xml
@@ -135,16 +135,6 @@
-
- Emails
- mailgate.message
- tree,form
- form
- [('history', '=', True)]
-
- {"search_default_user_id":uid}
-
-
Mailgateway Threadsmailgate.thread
@@ -196,18 +186,9 @@
view_id="view_mailgate_message_tree"
/>
-
-
-
-
-
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/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/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_operations/process/mrp_operation_process.xml b/addons/mrp_operations/process/mrp_operation_process.xml
index 2b59b87cfaf..686f59fe27f 100644
--- a/addons/mrp_operations/process/mrp_operation_process.xml
+++ b/addons/mrp_operations/process/mrp_operation_process.xml
@@ -72,7 +72,6 @@
-->
-
@@ -81,7 +80,6 @@
-
@@ -90,7 +88,6 @@
-
@@ -99,7 +96,6 @@
-
diff --git a/addons/mrp_repair/mrp_repair.py b/addons/mrp_repair/mrp_repair.py
index af88c32f42a..f7a6837aace 100644
--- a/addons/mrp_repair/mrp_repair.py
+++ b/addons/mrp_repair/mrp_repair.py
@@ -679,26 +679,27 @@ class mrp_repair_line(osv.osv, ProductChangeMixin):
"""
if not type:
return {'value': {
- 'location_id': False,
- 'location_dest_id': False
- }
- }
- produc_id = self.pool.get('stock.location').search(cr, uid, [('name','=','Production')])[0]
- if type == 'add':
- stock_id = self.pool.get('stock.location').search(cr, uid, [('name','=','Stock')])[0]
- to_invoice = False
- if guarantee_limit and date.today() > datetime.strptime(guarantee_limit, '%Y-%m-%d'):
- to_invoice=True
- return {'value': {
- 'to_invoice': to_invoice,
- 'location_id': stock_id,
- 'location_dest_id': produc_id
- }
- }
- return {'value': {
- 'to_invoice': False,
- 'location_id': produc_id,
+ 'location_id': False,
'location_dest_id': False
+ }
+ }
+
+ product_id = self.pool.get('stock.location').search(cr, uid, [('name','=','Production')])[0]
+ if type != 'add':
+ return {'value': {
+ 'to_invoice': False,
+ 'location_id': product_id,
+ 'location_dest_id': False
+ }
+ }
+
+ stock_id = self.pool.get('stock.location').search(cr, uid, [('name','=','Stock')])[0]
+ to_invoice = (guarantee_limit and
+ datetime.strptime(guarantee_limit, '%Y-%m-%d') < datetime.now())
+ return {'value': {
+ 'to_invoice': to_invoice,
+ 'location_id': stock_id,
+ 'location_dest_id': product_id
}
}
diff --git a/addons/mrp_repair/report/order.py b/addons/mrp_repair/report/order.py
index 3d6f9200dd8..d6edc1f01e4 100644
--- a/addons/mrp_repair/report/order.py
+++ b/addons/mrp_repair/report/order.py
@@ -33,9 +33,9 @@ class order(report_sxw.rml_parse):
def total(self, repair):
total = 0.0
for operation in repair.operations:
- total+=operation.price_subtotal
+ total += operation.price_subtotal
for fee in repair.fees_lines:
- total+=fee.price_subtotal
+ total += fee.price_subtotal
total = total + repair.amount_tax
return total
diff --git a/addons/mrp_repair/report/order.rml b/addons/mrp_repair/report/order.rml
index 149a2650bfd..328b5e931ee 100644
--- a/addons/mrp_repair/report/order.rml
+++ b/addons/mrp_repair/report/order.rml
@@ -343,7 +343,7 @@
Net Total :
- [[ formatLang(o.amount_untaxed)]] [[ o.pricelist_id.currency_id. symbol ]]
+ [[ formatLang(o.amount_untaxed, digits=get_digits(dp='Sale Price'))]] [[ o.pricelist_id.currency_id. symbol ]]
@@ -357,7 +357,7 @@
Taxes:
- [[ formatLang(o.amount_tax)]] [[ o.pricelist_id.currency_id. symbol ]]
+ [[ formatLang(o.amount_tax, digits=get_digits(dp='Account'))]] [[ o.pricelist_id.currency_id. symbol ]]
@@ -370,7 +370,7 @@
Total :
- [[ formatLang(total(o)) ]] [[ o.pricelist_id.currency_id. symbol ]]
+ [[ formatLang(total(o), digits=get_digits(dp='Sale Price')) ]] [[ o.pricelist_id.currency_id. symbol ]]
@@ -391,4 +391,4 @@
-
\ No newline at end of file
+
diff --git a/addons/multi_company/i18n/pl.po b/addons/multi_company/i18n/pl.po
index fc484c47afb..b4d66e4df2f 100644
--- a/addons/multi_company/i18n/pl.po
+++ b/addons/multi_company/i18n/pl.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2009-12-08 11:46+0000\n"
-"PO-Revision-Date: 2010-10-03 15:55+0000\n"
+"PO-Revision-Date: 2010-10-04 06:51+0000\n"
"Last-Translator: Naven \n"
"Language-Team: Polish \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-04 04:57+0000\n"
+"X-Launchpad-Export-Date: 2010-10-05 04:57+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: multi_company
diff --git a/addons/point_of_sale/report/account_statement.py b/addons/point_of_sale/report/account_statement.py
index 391adb7569f..dc492651bb2 100644
--- a/addons/point_of_sale/report/account_statement.py
+++ b/addons/point_of_sale/report/account_statement.py
@@ -31,10 +31,21 @@ class account_statement(report_sxw.rml_parse):
self.localcontext.update({
'time': time,
'get_total':self._get_total,
+ 'get_data':self._get_data,
})
+
+ def _get_data(self, statement):
+ lines = []
+ for line in statement.line_ids:
+ lines.append(line)
+
+ return lines
+
def _get_total(self, statement_line_ids):
total = 0.0
for line in statement_line_ids:
total += line.amount
return total
+
report_sxw.report_sxw('report.account.statement', 'account.bank.statement', 'addons/statement/report/account_statement.rml', parser=account_statement,header='internal')
+
diff --git a/addons/point_of_sale/report/account_statement.rml b/addons/point_of_sale/report/account_statement.rml
index e4c3b99b6ee..ed26143aa4e 100644
--- a/addons/point_of_sale/report/account_statement.rml
+++ b/addons/point_of_sale/report/account_statement.rml
@@ -216,10 +216,10 @@
[[ formatLang(statement.closing_date,date=True) ]]
@@ -282,4 +283,4 @@
-
\ No newline at end of file
+
diff --git a/addons/process/process_view.xml b/addons/process/process_view.xml
index 72cb18499e2..1a5714437b8 100644
--- a/addons/process/process_view.xml
+++ b/addons/process/process_view.xml
@@ -282,9 +282,6 @@
-
-
-
diff --git a/addons/product/pricelist.py b/addons/product/pricelist.py
index a4b93827660..90d55d47251 100644
--- a/addons/product/pricelist.py
+++ b/addons/product/pricelist.py
@@ -222,7 +222,7 @@ class product_pricelist(osv.osv):
price = 0.0
else:
price_tmp = self.price_get(cr, uid,
- [res['base_pricelist_id']], prod_id,
+ [res['base_pricelist_id']], product_id,
qty)[res['base_pricelist_id']]
ptype_src = self.browse(cr, uid, res['base_pricelist_id']).currency_id.id
price = currency_obj.compute(cr, uid, ptype_src, res['currency_id'], price_tmp, round=False)
@@ -388,7 +388,7 @@ class product_pricelist(osv.osv):
price = 0.0
else:
price_tmp = self.price_get(cr, uid,
- [res['base_pricelist_id']], prod_id,
+ [res['base_pricelist_id']], product_id,
qty)[res['base_pricelist_id']]
ptype_src = self.browse(cr, uid, res['base_pricelist_id']).currency_id.id
price = currency_obj.compute(cr, uid, ptype_src, res['currency_id'], price_tmp, round=False)
diff --git a/addons/product/process/product_process.xml b/addons/product/process/product_process.xml
index c8f72be4df7..03ce904abad 100644
--- a/addons/product/process/product_process.xml
+++ b/addons/product/process/product_process.xml
@@ -40,7 +40,6 @@
-->
-
diff --git a/addons/product/product_view.xml b/addons/product/product_view.xml
index 45ebaa8ee57..7e9ae7ce45e 100644
--- a/addons/product/product_view.xml
+++ b/addons/product/product_view.xml
@@ -257,11 +257,12 @@
[('parent_id','=',False)]tree
- Products category opens a tree structure view of your products by category.
+ This is a hyerarchical structure of your product's categories, you can enter a category to browse all products in this category and his children.
diff --git a/addons/profile_tools/installer.py b/addons/profile_tools/installer.py
index 06be50a903f..54fd0602802 100644
--- a/addons/profile_tools/installer.py
+++ b/addons/profile_tools/installer.py
@@ -25,15 +25,13 @@ class misc_tools_installer(osv.osv_memory):
_inherit = 'res.config.installer'
_columns = {
- 'lunch':fields.boolean('Lunch',help='Helps to manage Lunch Orders.'),
- 'subscription':fields.boolean('Recurring Documents',help='Helps to add subscription on documents.'),
- 'survey':fields.boolean('Survey',help='Manages Custom Surveys.'),
- 'idea':fields.boolean('Idea',help='Manages ideas and votes'),
- 'audittrail':fields.boolean('Audit Trail',help="Lets you to track user's operations on specific Objects."),
+ 'lunch':fields.boolean('Lunch',help='A simple module to help you to manage Lunch orders.'),
+ 'subscription':fields.boolean('Recurring Documents',help='Helps to generate automatically recurring documents.'),
+ 'survey':fields.boolean('Survey',help='Allows you to organize surveys.'),
+ 'idea':fields.boolean('Ideas Box',help='Promote ideas of the employees, votes and discussion on best ideas.'),
}
_defaults = {
'lunch': True,
}
-
misc_tools_installer()
diff --git a/addons/profile_tools/misc_tools_installer.xml b/addons/profile_tools/misc_tools_installer.xml
index c9b5f744b77..bc445e7818f 100644
--- a/addons/profile_tools/misc_tools_installer.xml
+++ b/addons/profile_tools/misc_tools_installer.xml
@@ -26,10 +26,9 @@
-
-
-
+
+
diff --git a/addons/project/board_project_demo.xml b/addons/project/board_project_demo.xml
index 6a063405ff3..85bf3140d26 100644
--- a/addons/project/board_project_demo.xml
+++ b/addons/project/board_project_demo.xml
@@ -3,12 +3,9 @@
-
-
-
+ Administrator shortcut
+ Demo user startup menu
+ -->
Don't forget the new development policies.
diff --git a/addons/project/installer.py b/addons/project/installer.py
index 4662ebeda5d..7a147737768 100644
--- a/addons/project/installer.py
+++ b/addons/project/installer.py
@@ -34,14 +34,10 @@ class project_installer(osv.osv_memory):
'hr_timesheet_sheet': fields.boolean('Timesheets',
help="Tracks and helps employees encode and validate timesheets "
"and attendances."),
- 'hr_timesheet_invoice': fields.boolean('Invoice Based on Hours',
- help="Helps generate invoices based on human resources "
- "costs and general expenses."),
+ 'project_timesheet': fields.boolean('Bill Time on Tasks',
+ help="Helps generate invoices based on time spent on tasks, if activated on the project."),
'account_budget': fields.boolean('Budgets',
help="Helps accountants manage analytic and crossover budgets."),
- 'project_messages': fields.boolean('Project Messages',
- help="Lets employees send messages to other members of the "
- "projects they're working on."),
'project_issue': fields.boolean('Issues Tracker',
help="Automatically synchronizes project tasks and crm cases."),
# Methodologies
@@ -50,7 +46,7 @@ class project_installer(osv.osv_memory):
"in the SCRUM methodology."),
'project_gtd': fields.boolean('Getting Things Done',
help="GTD is a methodology to efficiently organise yourself and your tasks. This module fully integrates GTD principle with OpenERP's project management."),
- }
+ }
_defaults={
'project_issue': True,
diff --git a/addons/project/process/task_process.xml b/addons/project/process/task_process.xml
index b3490ce4cf1..1c5fba12596 100644
--- a/addons/project/process/task_process.xml
+++ b/addons/project/process/task_process.xml
@@ -2,20 +2,20 @@
-
-
+
-
-
-
+
@@ -26,7 +26,7 @@
-
+
@@ -37,7 +37,7 @@
-
+
@@ -48,7 +48,7 @@
-
+
@@ -59,77 +59,74 @@
-
-
-
+
-
-
+
-
-
+
-
-
-
-
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/addons/project/project.py b/addons/project/project.py
index 996e79a1f8b..27bbb2f8c7f 100644
--- a/addons/project/project.py
+++ b/addons/project/project.py
@@ -190,7 +190,6 @@ class project(osv.osv):
'active': True,
'priority': 1,
'sequence': 10,
- 'warn_manager': True,
}
def _check_dates(self, cr, uid, ids):
@@ -373,6 +372,11 @@ class task(osv.osv):
return res
+ def onchange_remaining(self, cr, uid, ids, remaining=0.0, planned = 0.0):
+ if remaining and not planned:
+ return {'value':{'planned_hours': remaining}}
+ return {}
+
def onchange_planned(self, cr, uid, ids, planned = 0.0, effective = 0.0):
return {'value':{'remaining_hours': planned - effective}}
@@ -482,7 +486,6 @@ class task(osv.osv):
return True
_constraints = [
- (_check_dates, 'Error! Task start-date must be lower then task end-date.', ['date_start', 'date_end']),
(_check_recursion, _('Error ! You cannot create recursive tasks.'), ['parent_ids'])
]
#
@@ -615,7 +618,10 @@ class task(osv.osv):
def do_open(self, cr, uid, ids, *args):
tasks= self.browse(cr,uid,ids)
for t in tasks:
- self.write(cr, uid, [t.id], {'state': 'open', 'date_start': time.strftime('%Y-%m-%d %H:%M:%S'),})
+ data = {'state': 'open'}
+ if not t.date_start:
+ data['date_start'] = time.strftime('%Y-%m-%d %H:%M:%S')
+ self.write(cr, uid, [t.id], data)
message = _('Task ') + " '" + t.name + "' "+ _("is Open.")
self.log(cr, uid, t.id, message)
return True
@@ -680,7 +686,7 @@ class task(osv.osv):
def prev_type(self, cr, uid, ids, *args):
for task in self.browse(cr, uid, ids):
typeid = task.type_id.id
- types = map(lambda x:x.id, task.project_id.type_ids)
+ types = map(lambda x:x.id, task.project_id and task.project_id.type_ids or [])
if types:
if typeid and typeid in types:
index = types.index(typeid)
diff --git a/addons/project/project_installer.xml b/addons/project/project_installer.xml
index 2c22a4b6743..2b46cc0ab5f 100644
--- a/addons/project/project_installer.xml
+++ b/addons/project/project_installer.xml
@@ -27,11 +27,11 @@
-
+
-
+
-
+
diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml
index 6efc64dd494..5e5be5ee4b0 100644
--- a/addons/project/project_view.xml
+++ b/addons/project/project_view.xml
@@ -207,7 +207,7 @@
- Task Stages
+ Stagesproject.task.typeform
@@ -498,7 +496,7 @@
''' % (len(tt)+7,_('Getting Things Done'))
- search_extended += '''''' % (_('Inbox'),)
+ search_extended ='''''' % (len(tt)+7,_('Getting Things Done'))
+ search_extended += '''''' % (_('Inbox'),)
+ search_extended += '''''' % (_('GTD'),)
search_extended += ''''''
for time in tt:
if time.icon:
icon = time.icon
else :
icon=""
- search_extended += ''''''
+ search_extended += ''''''
search_extended += '''
-
-
+
'''
if search_extended:
diff --git a/addons/project_gtd/project_gtd_view.xml b/addons/project_gtd/project_gtd_view.xml
index 99e87fcb325..fc05ee00e61 100644
--- a/addons/project_gtd/project_gtd_view.xml
+++ b/addons/project_gtd/project_gtd_view.xml
@@ -77,9 +77,10 @@
-
+
+
diff --git a/addons/project_issue/__openerp__.py b/addons/project_issue/__openerp__.py
index 6efb9bde67c..c776eeb1519 100644
--- a/addons/project_issue/__openerp__.py
+++ b/addons/project_issue/__openerp__.py
@@ -32,7 +32,6 @@
'depends': [
'crm',
'project',
- 'hr_timesheet_sheet',
],
'init_xml': [
'project_issue_data.xml'
diff --git a/addons/project_issue/board_project_issue_view.xml b/addons/project_issue/board_project_issue_view.xml
index 30b6815e450..1784ba942aa 100644
--- a/addons/project_issue/board_project_issue_view.xml
+++ b/addons/project_issue/board_project_issue_view.xml
@@ -35,7 +35,7 @@
graph
-
+
diff --git a/addons/project_issue/i18n/en_US.po b/addons/project_issue/i18n/en_US.po
index 1f4a96616e2..20af7b04708 100644
--- a/addons/project_issue/i18n/en_US.po
+++ b/addons/project_issue/i18n/en_US.po
@@ -230,11 +230,6 @@ msgstr "Invalid model name in the action definition."
msgid "Section"
msgstr "Section"
-#. module: project_issue
-#: field:project.issue.report,perc_done:0
-msgid "%Done"
-msgstr "%Done"
-
#. module: project_issue
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
@@ -291,11 +286,6 @@ msgstr "Email"
msgid "Channel"
msgstr "Channel"
-#. module: project_issue
-#: field:project.issue.report,avg_answers:0
-msgid "Avg. Answers"
-msgstr "Avg. Answers"
-
#. module: project_issue
#: selection:project.issue,priority:0
#: selection:project.issue.report,priority:0
@@ -399,11 +389,6 @@ msgstr "The channels represent the different communication modes available with
msgid "Tasks"
msgstr "Tasks"
-#. module: project_issue
-#: field:project.issue.report,perc_cancel:0
-msgid "%Cancel"
-msgstr "%Cancel"
-
#. module: project_issue
#: field:project.issue.report,nbr:0
msgid "# of Issues"
diff --git a/addons/project_issue/i18n/fr.po b/addons/project_issue/i18n/fr.po
index 8da8b573b87..02404eab350 100644
--- a/addons/project_issue/i18n/fr.po
+++ b/addons/project_issue/i18n/fr.po
@@ -235,11 +235,6 @@ msgstr ""
msgid "Section"
msgstr ""
-#. module: project_issue
-#: field:project.issue.report,perc_done:0
-msgid "%Done"
-msgstr ""
-
#. module: project_issue
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
@@ -296,11 +291,6 @@ msgstr ""
msgid "Channel"
msgstr ""
-#. module: project_issue
-#: field:project.issue.report,avg_answers:0
-msgid "Avg. Answers"
-msgstr ""
-
#. module: project_issue
#: selection:project.issue,priority:0
#: selection:project.issue.report,priority:0
@@ -407,11 +397,6 @@ msgstr ""
msgid "Tasks"
msgstr ""
-#. module: project_issue
-#: field:project.issue.report,perc_cancel:0
-msgid "%Cancel"
-msgstr ""
-
#. module: project_issue
#: field:project.issue.report,nbr:0
msgid "# of Issues"
diff --git a/addons/project_issue/i18n/nl.po b/addons/project_issue/i18n/nl.po
index 59019439416..f2f86f499a1 100644
--- a/addons/project_issue/i18n/nl.po
+++ b/addons/project_issue/i18n/nl.po
@@ -236,11 +236,6 @@ msgstr ""
msgid "Section"
msgstr ""
-#. module: project_issue
-#: field:project.issue.report,perc_done:0
-msgid "%Done"
-msgstr ""
-
#. module: project_issue
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
@@ -297,11 +292,6 @@ msgstr ""
msgid "Channel"
msgstr ""
-#. module: project_issue
-#: field:project.issue.report,avg_answers:0
-msgid "Avg. Answers"
-msgstr ""
-
#. module: project_issue
#: selection:project.issue,priority:0
#: selection:project.issue.report,priority:0
@@ -408,11 +398,6 @@ msgstr ""
msgid "Tasks"
msgstr ""
-#. module: project_issue
-#: field:project.issue.report,perc_cancel:0
-msgid "%Cancel"
-msgstr ""
-
#. module: project_issue
#: field:project.issue.report,nbr:0
msgid "# of Issues"
diff --git a/addons/project_issue/i18n/pl.po b/addons/project_issue/i18n/pl.po
index be144507e7e..52c4443a77a 100644
--- a/addons/project_issue/i18n/pl.po
+++ b/addons/project_issue/i18n/pl.po
@@ -240,11 +240,6 @@ msgstr "Nieprawidłowa nazwa modelu w definicji akcji."
msgid "Section"
msgstr "Sekcja"
-#. module: project_issue
-#: field:project.issue.report,perc_done:0
-msgid "%Done"
-msgstr "%Wykonano"
-
#. module: project_issue
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
@@ -301,11 +296,6 @@ msgstr "E-mail"
msgid "Channel"
msgstr "Kanał"
-#. module: project_issue
-#: field:project.issue.report,avg_answers:0
-msgid "Avg. Answers"
-msgstr "Śred. odpowiedzi"
-
#. module: project_issue
#: selection:project.issue,priority:0
#: selection:project.issue.report,priority:0
@@ -414,11 +404,6 @@ msgstr ""
msgid "Tasks"
msgstr "Zadania"
-#. module: project_issue
-#: field:project.issue.report,perc_cancel:0
-msgid "%Cancel"
-msgstr "%Anulowanych"
-
#. module: project_issue
#: field:project.issue.report,nbr:0
msgid "# of Issues"
diff --git a/addons/project_issue/i18n/project_issue.pot b/addons/project_issue/i18n/project_issue.pot
index 521eefb19c8..ec99de96b06 100644
--- a/addons/project_issue/i18n/project_issue.pot
+++ b/addons/project_issue/i18n/project_issue.pot
@@ -230,11 +230,6 @@ msgstr ""
msgid "Section"
msgstr ""
-#. module: project_issue
-#: field:project.issue.report,perc_done:0
-msgid "%Done"
-msgstr ""
-
#. module: project_issue
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
@@ -399,11 +394,6 @@ msgstr ""
msgid "Tasks"
msgstr ""
-#. module: project_issue
-#: field:project.issue.report,perc_cancel:0
-msgid "%Cancel"
-msgstr ""
-
#. module: project_issue
#: field:project.issue.report,nbr:0
msgid "# of Issues"
diff --git a/addons/project_issue/project_issue.py b/addons/project_issue/project_issue.py
index 2788b59ed7d..d892c8cdf87 100644
--- a/addons/project_issue/project_issue.py
+++ b/addons/project_issue/project_issue.py
@@ -144,7 +144,7 @@ class project_issue(crm.crm_case, osv.osv):
_columns = {
'id': fields.integer('ID'),
- 'name': fields.char('Name', size=128, required=True),
+ 'name': fields.char('Issue', size=128, required=True),
'active': fields.boolean('Active', required=False),
'create_date': fields.datetime('Creation Date', readonly=True),
'write_date': fields.datetime('Update Date', readonly=True),
@@ -177,7 +177,7 @@ class project_issue(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', domain="[('object_id.model', '=', 'project.issue')]"),
+ 'type_id': fields.many2one ('project.task.type', 'Resolution', domain="[('object_id.model', '=', 'project.issue')]"),
'project_id':fields.many2one('project.project', 'Project'),
'duration': fields.float('Duration'),
'task_id': fields.many2one('project.task', 'Task', domain="[('project_id','=',project_id)]"),
@@ -279,16 +279,29 @@ class project_issue(crm.crm_case, osv.osv):
def convert_to_bug(self, cr, uid, ids, context=None):
return self._convert(cr, uid, ids, 'bug_categ', context=context)
- def onchange_stage_id(self, cr, uid, ids, stage_id, context=None):
- if context is None:
- context = {}
- if not stage_id:
- return {'value':{}}
- stage = self.pool.get('crm.case.stage').browse(cr, uid, stage_id, context)
- if not stage.on_change:
- return {'value':{}}
- return {'value':{}}
-
+
+ def next_type(self, cr, uid, ids, *args):
+ for task in self.browse(cr, uid, ids):
+ typeid = task.type_id.id
+ types = map(lambda x:x.id, task.project_id.type_ids or [])
+ if types:
+ if not typeid:
+ self.write(cr, uid, task.id, {'type_id': types[0]})
+ elif typeid and typeid in types and types.index(typeid) != len(types)-1 :
+ index = types.index(typeid)
+ self.write(cr, uid, task.id, {'type_id': types[index+1]})
+ return True
+
+ def prev_type(self, cr, uid, ids, *args):
+ for task in self.browse(cr, uid, ids):
+ typeid = task.type_id.id
+ types = map(lambda x:x.id, task.project_id and task.project_id.type_ids or [])
+ if types:
+ if typeid and typeid in types:
+ index = types.index(typeid)
+ self.write(cr, uid, task.id, {'type_id': index and types[index-1] or False})
+ return True
+
def onchange_task_id(self, cr, uid, ids, task_id, context=None):
if context is None:
context = {}
@@ -370,31 +383,6 @@ class project_issue(crm.crm_case, osv.osv):
return res
- 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')
- domain = [('object_id.model', '=', self._name)]
- 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
-
-
def message_update(self, cr, uid, ids, vals={}, msg="", default_act='pending', context=None):
if context is None:
context = {}
diff --git a/addons/project_issue/project_issue_data.xml b/addons/project_issue/project_issue_data.xml
index 738f734e35a..8f0f097cb87 100644
--- a/addons/project_issue/project_issue_data.xml
+++ b/addons/project_issue/project_issue_data.xml
@@ -31,39 +31,5 @@
v3.0
-
-
-
-
- Accepted as Bug
-
-
-
-
- Fixed
-
-
-
-
- Won't fix
-
-
-
-
- Invalid
-
-
-
-
- Awaiting Response
-
-
-
-
- Works For Me
-
-
-
-
diff --git a/addons/project_issue/project_issue_demo.xml b/addons/project_issue/project_issue_demo.xml
index 7c5ae6083ed..539cef5579e 100644
--- a/addons/project_issue/project_issue_demo.xml
+++ b/addons/project_issue/project_issue_demo.xml
@@ -12,7 +12,6 @@
-
@@ -30,7 +29,6 @@
-
@@ -45,7 +43,6 @@
-
@@ -61,7 +58,6 @@
-
@@ -76,7 +72,6 @@
-
@@ -92,7 +87,6 @@
-
@@ -108,7 +102,6 @@
-
@@ -124,7 +117,6 @@
-
@@ -139,7 +131,6 @@
-
@@ -155,7 +146,6 @@
-
@@ -171,7 +161,6 @@
-
@@ -187,7 +176,6 @@
-
@@ -204,7 +192,6 @@
-
@@ -222,7 +209,6 @@
-
@@ -238,7 +224,6 @@
-
@@ -254,7 +239,6 @@
-
diff --git a/addons/project_issue/project_issue_view.xml b/addons/project_issue/project_issue_view.xml
index a66dfe90560..a5032047c2a 100644
--- a/addons/project_issue/project_issue_view.xml
+++ b/addons/project_issue/project_issue_view.xml
@@ -44,17 +44,6 @@
-
- Issue Stages
- crm.case.stage
- form
-
- [('object_id.model', '=', 'project.issue')]
- {'object_id':'project.issue'}
-
-
-
-
Project Issue Tracker Formproject.issue
@@ -68,9 +57,9 @@
-
-
-
+
+
+
@@ -191,14 +180,12 @@
-
+
-
-
-
+
+
+
@@ -227,16 +214,20 @@
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -255,7 +246,7 @@
+ context="{'group_by':'type_id'}" />
@@ -291,13 +282,11 @@
-
+
-
-
-
+
+
+
@@ -317,12 +306,8 @@
search
-
-
-
-
+
diff --git a/addons/project_issue/report/project_issue_report.py b/addons/project_issue/report/project_issue_report.py
index baa4ea4c8a2..dd5212da0d6 100644
--- a/addons/project_issue/report/project_issue_report.py
+++ b/addons/project_issue/report/project_issue_report.py
@@ -35,34 +35,11 @@ class project_issue_report(osv.osv):
_name = "project.issue.report"
_auto = False
- def _get_data(self, cr, uid, ids, field_names, arg, context=None):
- if context is None:
- context = {}
- """ @param cr: the current row, from the database cursor,
- @param uid: the current users ID for security checks,
- @param ids: List of case and section Datas IDs
- @param context: A standard dictionary for contextual values """
-
- res = {}
-
- for report in self.browse(cr, uid, ids, context):
- res[report.id]= {
- 'avg_answers': 0.0,
- 'perc_done' : 0.0,
- 'perc_cancel': 0.0
- }
- #TODO: Calculate
-
- return res
-
_columns = {
'name': fields.char('Year', size=64, required=False, readonly=True),
'user_id':fields.many2one('res.users', 'Responsible', readonly=True),
'section_id':fields.many2one('crm.case.section', 'Section', readonly=True),
'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True),
- 'avg_answers': fields.function(_get_data, group_operator='avg', string='Avg. Answers', multi='avg_answers', method=True, type="integer"),
- 'perc_done': fields.function(_get_data, group_operator='avg', string='%Done', multi='perc_done', method=True, type="float"),
- 'perc_cancel': fields.function(_get_data, group_operator='avg', string='%Cancel', multi='perc_cancel', method=True, type="float"),
'month':fields.selection([('01', 'January'), ('02', 'February'), \
('03', 'March'), ('04', 'April'),\
('05', 'May'), ('06', 'June'), \
@@ -75,7 +52,7 @@ class project_issue_report(osv.osv):
'creation_date': fields.date('Creation Date', readonly=True),
'date_closed': fields.date('Date of Closing', readonly=True),
'categ_id': fields.many2one('crm.case.categ', 'Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'project.issue')]"),
- 'stage_id': fields.many2one ('crm.case.stage', 'Stage', domain="[('object_id.model', '=', 'project.issue')]"),
+ 'type_id': fields.many2one('project.task.type', 'Stage'),
'nbr': fields.integer('# of Issues', readonly=True),
'working_hours_open': fields.float('Avg. Working Hours to Open', readonly=True),
'working_hours_close': fields.float('Avg. Working Hours to Close', readonly=True),
@@ -111,7 +88,7 @@ class project_issue_report(osv.osv):
c.working_hours_close,
c.section_id,
c.categ_id,
- c.stage_id,
+ c.type_id,
to_char(c.date_closed, 'YYYY-mm-dd') as date_closed,
c.company_id as company_id,
c.priority as priority,
diff --git a/addons/project_issue/report/project_issue_report_view.xml b/addons/project_issue/report/project_issue_report_view.xml
index 5d5a0489fa9..9b13e02154c 100644
--- a/addons/project_issue/report/project_issue_report_view.xml
+++ b/addons/project_issue/report/project_issue_report_view.xml
@@ -11,7 +11,7 @@
-
+
@@ -100,8 +100,8 @@
-
-
+
+
@@ -129,7 +129,7 @@
-
+
diff --git a/addons/project_issue/security/ir.model.access.csv b/addons/project_issue/security/ir.model.access.csv
index 1fe83d68c28..ece2be3a784 100755
--- a/addons/project_issue/security/ir.model.access.csv
+++ b/addons/project_issue/security/ir.model.access.csv
@@ -8,15 +8,7 @@
"access_crm_case_categ_supp","crm.case.categ","crm.model_crm_case_categ","project_issue.group_project_supporter",1,0,0,0
"access_project_issue_version_project","project_issue_version manager","model_project_issue_version","project.group_project_manager",1,1,1,1
"access_project_issue_version","project_issue_version manager","model_project_issue_version","project_issue.group_project_supporter",1,0,0,0
-"access_crm_case_stage_manager_suppo","crm.case.stage","crm.model_crm_case_stage","project_issue.group_project_supporter",1,0,0,0
"access_project_issue_system","project.issue system","model_project_issue","base.group_system",1,0,0,0
-"access_crm_case_stage_manager_system","crm.case.stage system","crm.model_crm_case_stage","base.group_system",1,1,1,1
"access_project_issue_report_system","project.issue.report system","model_project_issue_report","base.group_system",1,0,0,0
"access_crm_case_section_system","crm.case.section system","crm.model_crm_case_section","base.group_system",1,1,1,1
"access_project_issue_report_user","project.issue.report user","model_project_issue_report","project.group_project_user",1,0,0,0
-"access_hr_timesheet_sheet_sheet_project_user","hr_timesheet_sheet.sheet user","hr_timesheet_sheet.model_hr_timesheet_sheet_sheet","project.group_project_user",1,1,1,0
-"access_hr_analytic_timesheet_project_user","hr_analytic_timesheet user","hr_timesheet_sheet.model_hr_analytic_timesheet","project.group_project_user",1,1,1,0
-"access_hr_analytic_timesheet_project_manager","hr_analytic_timesheet manager","hr_timesheet_sheet.model_hr_analytic_timesheet","project.group_project_manager",1,0,0,0
-"access_hr_timesheet_sheet_sheet_project_manager","hr_timesheet_sheet.sheet manager","hr_timesheet_sheet.model_hr_timesheet_sheet_sheet","project.group_project_manager",1,0,0,0
-"access_hr_analytic_timesheet_system","hr_analytic_timesheet system","hr_timesheet_sheet.model_hr_analytic_timesheet","base.group_system",1,0,0,0
-"access_hr_timesheet_sheet_sheet_project_system","hr_timesheet_sheet.sheet system","hr_timesheet_sheet.model_hr_timesheet_sheet_sheet","base.group_system",1,0,0,0
diff --git a/addons/project_issue_sheet/__openerp__.py b/addons/project_issue_sheet/__openerp__.py
index 9e7056c214a..d867defc08f 100644
--- a/addons/project_issue_sheet/__openerp__.py
+++ b/addons/project_issue_sheet/__openerp__.py
@@ -37,6 +37,7 @@
],
'update_xml': [
'project_issue_sheet_view.xml',
+ 'security/ir.model.access.csv',
],
'demo_xml': [
],
diff --git a/addons/project_issue_sheet/project_issue_sheet_view.xml b/addons/project_issue_sheet/project_issue_sheet_view.xml
index ac842d7e018..2222ef12ea5 100644
--- a/addons/project_issue_sheet/project_issue_sheet_view.xml
+++ b/addons/project_issue_sheet/project_issue_sheet_view.xml
@@ -13,13 +13,13 @@
-
+
-
+
diff --git a/addons/project_issue_sheet/security/ir.model.access.csv b/addons/project_issue_sheet/security/ir.model.access.csv
new file mode 100644
index 00000000000..235bb4d1bfc
--- /dev/null
+++ b/addons/project_issue_sheet/security/ir.model.access.csv
@@ -0,0 +1,8 @@
+"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+"access_hr_timesheet_sheet_sheet_project_user","hr_timesheet_sheet.sheet user","hr_timesheet_sheet.model_hr_timesheet_sheet_sheet","project.group_project_user",1,1,1,0
+"access_hr_analytic_timesheet_project_user","hr_analytic_timesheet user","hr_timesheet_sheet.model_hr_analytic_timesheet","project.group_project_user",1,1,1,0
+"access_hr_analytic_timesheet_project_manager","hr_analytic_timesheet manager","hr_timesheet_sheet.model_hr_analytic_timesheet","project.group_project_manager",1,0,0,0
+"access_hr_timesheet_sheet_sheet_project_manager","hr_timesheet_sheet.sheet manager","hr_timesheet_sheet.model_hr_timesheet_sheet_sheet","project.group_project_manager",1,0,0,0
+"access_hr_analytic_timesheet_system","hr_analytic_timesheet system","hr_timesheet_sheet.model_hr_analytic_timesheet","base.group_system",1,0,0,0
+"access_hr_timesheet_sheet_sheet_project_system","hr_timesheet_sheet.sheet system","hr_timesheet_sheet.model_hr_timesheet_sheet_sheet","base.group_system",1,0,0,0
+
diff --git a/addons/project_scrum/process/project_scrum_process.xml b/addons/project_scrum/process/project_scrum_process.xml
index 9700677c100..b5503f0127c 100644
--- a/addons/project_scrum/process/project_scrum_process.xml
+++ b/addons/project_scrum/process/project_scrum_process.xml
@@ -22,7 +22,6 @@
-->
-
diff --git a/addons/project_timesheet/__openerp__.py b/addons/project_timesheet/__openerp__.py
index 021d30da687..e1be86fe661 100644
--- a/addons/project_timesheet/__openerp__.py
+++ b/addons/project_timesheet/__openerp__.py
@@ -30,7 +30,7 @@
""",
'author': 'OpenERP SA',
'website': 'http://www.openerp.com',
- 'depends': ['base', 'project', 'hr_timesheet_sheet', 'hr_timesheet_invoice'],
+ 'depends': ['project', 'hr_timesheet_sheet', 'hr_timesheet_invoice'],
'init_xml': [],
'update_xml': ["security/ir.model.access.csv","process/project_timesheet_process.xml", "report/task_report_view.xml", "project_timesheet_view.xml"],
'demo_xml': [],
diff --git a/addons/project_timesheet/process/project_timesheet_process.xml b/addons/project_timesheet/process/project_timesheet_process.xml
index 4bb6a6de381..aea15d814c1 100644
--- a/addons/project_timesheet/process/project_timesheet_process.xml
+++ b/addons/project_timesheet/process/project_timesheet_process.xml
@@ -43,7 +43,6 @@
-->
-
@@ -52,7 +51,6 @@
-
@@ -61,7 +59,6 @@
-
diff --git a/addons/project_timesheet/project_timesheet.py b/addons/project_timesheet/project_timesheet.py
index 411351f1be1..370525f0ae3 100644
--- a/addons/project_timesheet/project_timesheet.py
+++ b/addons/project_timesheet/project_timesheet.py
@@ -98,7 +98,7 @@ class project_work(osv.osv):
# Compute based on pricetype
amount_unit = obj_timesheet.on_change_unit_amount(cr, uid, timeline_id,
- prod_id, amount, unit, context=context)
+ prod_id, amount, False, unit, context=context)
if amount_unit and 'amount' in amount_unit.get('value',{}):
updv = { 'amount': amount_unit['value']['amount'] }
obj_timesheet.write(cr, uid, [timeline_id], updv, context=context)
@@ -112,6 +112,7 @@ class project_work(osv.osv):
timesheet_obj = self.pool.get('hr.analytic.timesheet')
project_obj = self.pool.get('project.project')
uom_obj = self.pool.get('product.uom')
+ result = {}
if isinstance(ids, (long, int)):
ids = [ids,]
@@ -139,13 +140,13 @@ class project_work(osv.osv):
vals_line['unit_amount'] = vals['hours']
prod_id = vals_line.get('product_id', line_id.product_id.id) # False may be set
- if result['product_uom_id'] and (not result['product_uom_id'] == default_uom):
+ if result.get('product_uom_id',False) and (not result['product_uom_id'] == default_uom):
vals_line['unit_amount'] = uom_obj._compute_qty(cr, uid, default_uom, vals['hours'], result['product_uom_id'])
# Compute based on pricetype
amount_unit = obj.on_change_unit_amount(cr, uid, line_id.id,
prod_id=prod_id,
- unit_amount=vals_line['unit_amount'], unit=False, context=context)
+ quantity=vals_line['unit_amount'], unit=False, context=context)
if amount_unit and 'amount' in amount_unit.get('value',{}):
vals_line['amount'] = amount_unit['value']['amount']
diff --git a/addons/project_timesheet/project_timesheet_view.xml b/addons/project_timesheet/project_timesheet_view.xml
index b39cb02798e..2a1b94620a8 100644
--- a/addons/project_timesheet/project_timesheet_view.xml
+++ b/addons/project_timesheet/project_timesheet_view.xml
@@ -31,5 +31,10 @@
+
+
+
diff --git a/addons/report_intrastat/report/invoice.rml b/addons/report_intrastat/report/invoice.rml
index 8e4f92da708..08a1ab14fe0 100644
--- a/addons/report_intrastat/report/invoice.rml
+++ b/addons/report_intrastat/report/invoice.rml
@@ -488,7 +488,7 @@
- [[ format(o.amount_tax or removeParentNode('blockTable')) ]]
+ [[ o.amount_tax and formatLang(o.amount_tax, digits=get_digits(dp='Account')) or removeParentNode('blockTable') ]]
@@ -209,4 +209,4 @@
-
\ No newline at end of file
+
diff --git a/addons/stock/report/report_stock_move.py b/addons/stock/report/report_stock_move.py
index a96144060ca..6907f4ed3d5 100644
--- a/addons/stock/report/report_stock_move.py
+++ b/addons/stock/report/report_stock_move.py
@@ -21,6 +21,7 @@
import tools
from osv import fields,osv
+from decimal_precision import decimal_precision as dp
class report_stock_move(osv.osv):
@@ -44,7 +45,7 @@ class report_stock_move(osv.osv):
'state': fields.selection([('draft', 'Draft'), ('waiting', 'Waiting'), ('confirmed', 'Confirmed'), ('assigned', 'Available'), ('done', 'Done'), ('cancel', 'Cancelled')], 'State', readonly=True, select=True),
'product_qty_in':fields.integer('In Qty',readonly=True),
'product_qty_out':fields.integer('Out Qty',readonly=True),
- 'value' : fields.float('Total Value', required=True),
+ 'value' : fields.float('Total Value', required=True, digits_compute=dp.get_precision('Sale Price')),
'day_diff2':fields.float('Delay (Days)',readonly=True, digits=(16,2), group_operator="avg"),
'day_diff1':fields.float('Planned (Days)',readonly=True, digits=(16,2), group_operator="avg"),
'day_diff':fields.float('Real (Days)',readonly=True, digits=(16,2), group_operator="avg"),
@@ -136,7 +137,7 @@ class report_stock_inventory(osv.osv):
'prodlot_id': fields.many2one('stock.production.lot', 'Lot', readonly=True),
'company_id': fields.many2one('res.company', 'Company', readonly=True),
'product_qty':fields.float('Qty', digits=(16,2), readonly=True),
- 'value' : fields.float('Total Value', digits=(16,2), required=True),
+ 'value' : fields.float('Total Value', digits=(16,2), required=True, digits_compute=dp.get_precision('Sale Price')),
'state': fields.selection([('draft', 'Draft'), ('waiting', 'Waiting'), ('confirmed', 'Confirmed'), ('assigned', 'Available'), ('done', 'Done'), ('cancel', 'Cancelled')], 'State', readonly=True, select=True,
help='When the stock move is created it is in the \'Draft\' state.\n After that it is set to \'Confirmed\' state.\n If stock is available state is set to \'Avaiable\'.\n When the picking it done the state is \'Done\'.\
\nThe state is \'Waiting\' if the move is waiting for another one.'),
diff --git a/addons/stock/stock.py b/addons/stock/stock.py
index 77159682425..c1282c9a3c5 100644
--- a/addons/stock/stock.py
+++ b/addons/stock/stock.py
@@ -110,7 +110,6 @@ class stock_location(osv.osv):
@param field_names: Name of field
@return: Dictionary of values
"""
- result = dict([(i, {}.fromkeys(field_names, 0.0)) for i in ids])
product_product_obj = self.pool.get('product.product')
@@ -118,6 +117,9 @@ class stock_location(osv.osv):
res_products_by_location = sorted(cr.dictfetchall(), key=itemgetter('location_id'))
products_by_location = dict((k, [v['product_id'] for v in itr]) for k, itr in groupby(res_products_by_location, itemgetter('location_id')))
+ result = dict([(i, {}.fromkeys(field_names, 0.0)) for i in ids])
+ result.update(dict([(i, {}.fromkeys(field_names, 0.0)) for i in list(set([aaa['location_id'] for aaa in res_products_by_location]))]))
+
currency_id = self.pool.get('res.users').browse(cr, uid, uid).company_id.currency_id.id
currency_obj = self.pool.get('res.currency')
currency = self.pool.get('res.currency').browse(cr, uid, currency_id)
@@ -129,6 +131,8 @@ class stock_location(osv.osv):
for prod in product_product_obj.browse(cr, uid, product_ids, context=c):
for f in field_names:
if f == 'stock_real':
+ if loc_id not in result:
+ result[loc_id] = {}
result[loc_id][f] += prod.qty_available
elif f == 'stock_virtual':
result[loc_id][f] += prod.virtual_available
diff --git a/addons/stock/stock_view.xml b/addons/stock/stock_view.xml
index c3b7b52cafc..826e4512d99 100644
--- a/addons/stock/stock_view.xml
+++ b/addons/stock/stock_view.xml
@@ -917,7 +917,6 @@
-
diff --git a/addons/test.txt b/addons/test.txt
deleted file mode 100644
index 55e60eb73a8..00000000000
--- a/addons/test.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-this is a test file:
--------------------
-the purpose is to test the buidlbot engine
-
-how to do?
-we simply gonna make several commit in a local branch, and also several commits in the main branch, then merge and see what happens
-
-iii
diff --git a/addons/test2.text b/addons/test2.text
deleted file mode 100644
index 535d2b01d33..00000000000
--- a/addons/test2.text
+++ /dev/null
@@ -1,8 +0,0 @@
-1
-2
-3
-4
-5
-6
-7
-8
diff --git a/addons/thunderbird/plugin/openerp_plugin.xpi b/addons/thunderbird/plugin/openerp_plugin.xpi
index 56dd5241b9a..c6ff61c9490 100644
Binary files a/addons/thunderbird/plugin/openerp_plugin.xpi and b/addons/thunderbird/plugin/openerp_plugin.xpi differ
diff --git a/addons/thunderbird/plugin/openerp_plugin/chrome/openerp_plugin.jar b/addons/thunderbird/plugin/openerp_plugin/chrome/openerp_plugin.jar
index b81a298f20a..e53c9147ca0 100644
Binary files a/addons/thunderbird/plugin/openerp_plugin/chrome/openerp_plugin.jar and b/addons/thunderbird/plugin/openerp_plugin/chrome/openerp_plugin.jar differ
diff --git a/addons/thunderbird/plugin/openerp_plugin/chrome/openerp_plugin/content/config.js b/addons/thunderbird/plugin/openerp_plugin/chrome/openerp_plugin/content/config.js
index a9afa70e10c..e06504baa09 100755
--- a/addons/thunderbird/plugin/openerp_plugin/chrome/openerp_plugin/content/config.js
+++ b/addons/thunderbird/plugin/openerp_plugin/chrome/openerp_plugin/content/config.js
@@ -45,6 +45,50 @@ function config_change_load()
}
}
+
+function config_change_load_web()
+{
+ //var s = getServer();
+ weburl = getWebServerURL();
+ webport = getwebPort();
+ var urlport = weburl+':'+webport;
+ var a =urlport.split(':');
+ if (String(a)=="" || String(a)=="undefined"){
+ document.getElementById('txtcweburl').value = "localhost"
+ document.getElementById('txtcwebport').value = "8069"
+ }
+ else
+ {
+ len = a[1];
+ var url = "";
+ for (i=0;i
+ title="&title.label;" onload="myPrefObserver.register();myPrefObserver.webregister();" unload="myPrefObserver.unregister()" height="410" width="900">
@@ -16,15 +16,16 @@
-
-
-
-