diff --git a/addons/account_budget/__openerp__.py b/addons/account_budget/__openerp__.py
index 4fd24da70e9..b023e7e1124 100644
--- a/addons/account_budget/__openerp__.py
+++ b/addons/account_budget/__openerp__.py
@@ -26,9 +26,8 @@
'category': 'Generic Modules/Accounting',
'description': """This module allows accountants to manage analytic and crossovered budgets.
-Once the Master Budgets and the Budgets are defined (in Financial
-Management/Budgets/), the Project Managers can set the planned amount on each
-Analytic Account.
+Once the Master Budgets and the Budgets are defined (in Accounting/Budgets/),
+the Project Managers can set the planned amount on each Analytic Account.
The accountant has the possibility to see the total of amount planned for each
Budget and Master Budget in order to ensure the total planned is not
diff --git a/addons/account_budget/crossovered_budget.py b/addons/account_budget/crossovered_budget.py
index 6c7eb6639ec..af67b669d34 100644
--- a/addons/account_budget/crossovered_budget.py
+++ b/addons/account_budget/crossovered_budget.py
@@ -49,12 +49,13 @@ class account_budget_post(osv.osv):
def spread(self, cr, uid, ids, fiscalyear_id=False, amount=0.0):
dobj = self.pool.get('account.budget.post.dotation')
+ obj_fiscalyear = self.pool.get('account.fiscalyear')
for o in self.browse(cr, uid, ids):
# delete dotations for this post
dobj.unlink(cr, uid, dobj.search(cr, uid, [('post_id','=',o.id)]))
# create one dotation per period in the fiscal year, and spread the total amount/quantity over those dotations
- fy = self.pool.get('account.fiscalyear').browse(cr, uid, [fiscalyear_id])[0]
+ fy = obj_fiscalyear.browse(cr, uid, [fiscalyear_id])[0]
num = len(fy.period_ids)
for p in fy.period_ids:
dobj.create(cr, uid, {'post_id': o.id, 'period_id': p.id, 'amount': amount/num})
@@ -64,26 +65,27 @@ account_budget_post()
class account_budget_post_dotation(osv.osv):
def _tot_planned(self, cr, uid, ids, name, args, context):
+ obj_budget_lines = self.pool.get('crossovered.budget.lines')
res = {}
for line in self.browse(cr, uid, ids):
if line.period_id:
- obj_period=self.pool.get('account.period').browse(cr, uid, line.period_id.id)
+ obj_period = self.pool.get('account.period').browse(cr, uid, line.period_id.id)
- total_days=strToDate(obj_period.date_stop) - strToDate(obj_period.date_start)
- budget_id=line.post_id and line.post_id.id or False
- query="select id from crossovered_budget_lines where \
- general_budget_id= %s AND (date_from >=%s and date_from <= %s ) \
- OR (date_to >=%s and date_to <= %s) OR (date_from < %s and date_to > %s)"
- cr.execute(query,(budget_id,obj_period.date_start,obj_period.date_stop,obj_period.date_start,obj_period.date_stop,obj_period.date_start,obj_period.date_stop,))
- res1=cr.fetchall()
- tot_planned=0.00
+ total_days = strToDate(obj_period.date_stop) - strToDate(obj_period.date_start)
+ budget_id = line.post_id and line.post_id.id or False
+ query="SELECT id FROM crossovered_budget_lines WHERE \
+ general_budget_id= %s AND (date_from >=%s AND date_from <= %s ) \
+ OR (date_to >=%s AND date_to <= %s) OR (date_from < %s AND date_to > %s)"
+ cr.execute(query, (budget_id, obj_period.date_start, obj_period.date_stop, obj_period.date_start, obj_period.date_stop, obj_period.date_start, obj_period.date_stop,))
+ res1 = cr.fetchall()
+ tot_planned = 0.00
for record in res1:
- obj_lines = self.pool.get('crossovered.budget.lines').browse(cr, uid, record[0])
- count_days = min(strToDate(obj_period.date_stop),strToDate(obj_lines.date_to)) - max(strToDate(obj_period.date_start), strToDate(obj_lines.date_from))
- days_in_period = count_days.days +1
+ obj_lines = obj_budget_lines.browse(cr, uid, record[0])
+ count_days = min(strToDate(obj_period.date_stop), strToDate(obj_lines.date_to)) - max(strToDate(obj_period.date_start), strToDate(obj_lines.date_from))
+ days_in_period = count_days.days + 1
count_days = strToDate(obj_lines.date_to) - strToDate(obj_lines.date_from)
- total_days_of_rec = count_days.days +1
- tot_planned += obj_lines.planned_amount/total_days_of_rec* days_in_period
+ total_days_of_rec = count_days.days + 1
+ tot_planned += obj_lines.planned_amount / total_days_of_rec * days_in_period
res[line.id] = tot_planned
else:
res[line.id] = 0.00
@@ -96,7 +98,7 @@ class account_budget_post_dotation(osv.osv):
'post_id': fields.many2one('account.budget.post', 'Item', select=True),
'period_id': fields.many2one('account.period', 'Period'),
'amount': fields.float('Amount', digits=(16,2)),
- 'tot_planned':fields.function(_tot_planned, method=True, string='Total Planned Amount', type='float', store=True),
+ 'tot_planned': fields.function(_tot_planned, method=True, string='Total Planned Amount', type='float', store=True),
}
account_budget_post_dotation()
@@ -119,38 +121,38 @@ class crossovered_budget(osv.osv):
_defaults = {
'state': 'draft',
- 'creating_user_id': lambda self,cr,uid,context: uid,
- 'company_id': lambda self,cr,uid,c: self.pool.get('res.company')._company_default_get(cr, uid, 'account.budget.post', context=c)
+ 'creating_user_id': lambda self, cr, uid, context: uid,
+ 'company_id': lambda self, cr, uid, c: self.pool.get('res.company')._company_default_get(cr, uid, 'account.budget.post', context=c)
}
def budget_confirm(self, cr, uid, ids, *args):
self.write(cr, uid, ids, {
- 'state':'confirm'
+ 'state': 'confirm'
})
return True
def budget_draft(self, cr, uid, ids, *args):
self.write(cr, uid, ids, {
- 'state':'draft'
+ 'state': 'draft'
})
return True
def budget_validate(self, cr, uid, ids, *args):
self.write(cr, uid, ids, {
- 'state':'validate',
+ 'state': 'validate',
'validating_user_id': uid,
})
return True
def budget_cancel(self, cr, uid, ids, *args):
self.write(cr, uid, ids, {
- 'state':'cancel'
+ 'state': 'cancel'
})
return True
def budget_done(self, cr, uid, ids, *args):
self.write(cr, uid, ids, {
- 'state':'done'
+ 'state': 'done'
})
return True
@@ -158,7 +160,7 @@ crossovered_budget()
class crossovered_budget_lines(osv.osv):
- def _prac_amt(self, cr, uid, ids,context={}):
+ def _prac_amt(self, cr, uid, ids, context={}):
res = {}
for line in self.browse(cr, uid, ids):
acc_ids = [x.id for x in line.general_budget_id.account_ids]
@@ -170,8 +172,8 @@ class crossovered_budget_lines(osv.osv):
date_from = context['wizard_date_from']
if context.has_key('wizard_date_to'):
date_to = context['wizard_date_to']
- cr.execute("select sum(amount) from account_analytic_line where account_id=%s and (date "
- "between to_date(%s,'yyyy-mm-dd') and to_date(%s,'yyyy-mm-dd')) and "
+ cr.execute("SELECT SUM(amount) FROM account_analytic_line WHERE account_id=%s AND (date "
+ "between to_date(%s,'yyyy-mm-dd') AND to_date(%s,'yyyy-mm-dd')) AND "
"general_account_id=ANY(%s)", (line.analytic_account_id.id, date_from, date_to,acc_ids,))
result = cr.fetchone()[0]
if result is None:
@@ -182,13 +184,13 @@ class crossovered_budget_lines(osv.osv):
def _prac(self, cr, uid, ids, name, args, context):
res={}
for line in self.browse(cr, uid, ids):
- res[line.id]=self._prac_amt(cr, uid, [line.id], context=context)[line.id]
+ res[line.id] = self._prac_amt(cr, uid, [line.id], context=context)[line.id]
return res
- def _theo_amt(self, cr, uid, ids,context={}):
+ def _theo_amt(self, cr, uid, ids, context={}):
res = {}
for line in self.browse(cr, uid, ids):
- today=datetime.datetime.today()
+ today = datetime.datetime.today()
date_to = today.strftime("%Y-%m-%d")
date_from = line.date_from
if context.has_key('wizard_date_from'):
@@ -197,38 +199,37 @@ class crossovered_budget_lines(osv.osv):
date_to = context['wizard_date_to']
if line.paid_date:
- if strToDate(line.date_to)<=strToDate(line.paid_date):
- theo_amt=0.00
+ if strToDate(line.date_to) <= strToDate(line.paid_date):
+ theo_amt = 0.00
else:
- theo_amt=line.planned_amount
+ theo_amt = line.planned_amount
else:
- total=strToDate(line.date_to) - strToDate(line.date_from)
+ total = strToDate(line.date_to) - strToDate(line.date_from)
elapsed = min(strToDate(line.date_to),strToDate(date_to)) - max(strToDate(line.date_from),strToDate(date_from))
if strToDate(date_to) < strToDate(line.date_from):
elapsed = strToDate(date_to) - strToDate(date_to)
if total.days:
- theo_amt = float(elapsed.days/float(total.days))*line.planned_amount
+ theo_amt = float(elapsed.days / float(total.days)) * line.planned_amount
else:
theo_amt = line.planned_amount
- res[line.id]=theo_amt
+ res[line.id] = theo_amt
return res
def _theo(self, cr, uid, ids, name, args, context):
- res={}
+ res = {}
for line in self.browse(cr, uid, ids):
- res[line.id]=self._theo_amt(cr, uid, [line.id], context=context)[line.id]
-
+ res[line.id] = self._theo_amt(cr, uid, [line.id], context=context)[line.id]
return res
def _perc(self, cr, uid, ids, name, args, context):
res = {}
for line in self.browse(cr, uid, ids):
- if line.theoritical_amount<>0.00:
- res[line.id]=float(line.practical_amount or 0.0 / line.theoritical_amount)*100
+ if line.theoritical_amount <> 0.00:
+ res[line.id] = float(line.practical_amount or 0.0 / line.theoritical_amount) * 100
else:
- res[line.id]=0.00
+ res[line.id] = 0.00
return res
_name = "crossovered.budget.lines"
@@ -240,10 +241,10 @@ class crossovered_budget_lines(osv.osv):
'date_from': fields.date('Start Date', required=True),
'date_to': fields.date('End Date', required=True),
'paid_date': fields.date('Paid Date'),
- 'planned_amount':fields.float('Planned Amount', required=True, digits=(16,2)),
- 'practical_amount':fields.function(_prac, method=True, string='Practical Amount', type='float', digits=(16,2)),
- 'theoritical_amount':fields.function(_theo, method=True, string='Theoritical Amount', type='float', digits=(16,2)),
- 'percentage':fields.function(_perc, method=True, string='Percentage', type='float'),
+ 'planned_amount': fields.float('Planned Amount', required=True, digits=(16,2)),
+ 'practical_amount': fields.function(_prac, method=True, string='Practical Amount', type='float', digits=(16,2)),
+ 'theoritical_amount': fields.function(_theo, method=True, string='Theoritical Amount', type='float', digits=(16,2)),
+ 'percentage': fields.function(_perc, method=True, string='Percentage', type='float'),
'company_id': fields.related('crossovered_budget_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True)
}
diff --git a/addons/account_budget/report/analytic_account_budget_report.py b/addons/account_budget/report/analytic_account_budget_report.py
index c724968a06d..aa5d39f8d49 100644
--- a/addons/account_budget/report/analytic_account_budget_report.py
+++ b/addons/account_budget/report/analytic_account_budget_report.py
@@ -33,47 +33,43 @@ class analytic_account_budget_report(report_sxw.rml_parse):
'funct_total': self.funct_total,
'time': time,
})
- self.context=context
-
- def funct(self,object,form,ids={}, done=None, level=1):
+ self.context = context
+ def funct(self, object, form, ids={}, done=None, level=1):
if not ids:
ids = self.ids
if not done:
- done={}
+ done = {}
global tot
- tot={
+ tot = {
'theo':0.00,
'pln':0.00,
'prac':0.00,
'perc':0.00
}
- result=[]
+ result = []
accounts = self.pool.get('account.analytic.account').browse(self.cr, self.uid, [object.id], self.context.copy())
+ c_b_lines_obj = self.pool.get('crossovered.budget.lines')
+ obj_c_budget = self.pool.get('crossovered.budget')
- c_b_lines_obj=self.pool.get('crossovered.budget.lines')
for account_id in accounts:
- res={}
- b_line_ids=[]
-
+ res = {}
+ b_line_ids = []
for line in account_id.crossovered_budget_line:
b_line_ids.append(line.id)
-
if not b_line_ids:
return []
+ d_from = form['date_from']
+ d_to = form['date_to']
- d_from=form['date_from']
- d_to=form['date_to']
+ self.cr.execute('SELECT DISTINCT(crossovered_budget_id) FROM crossovered_budget_lines WHERE id =ANY(%s)',(b_line_ids,))
+ budget_ids = self.cr.fetchall()
- self.cr.execute('select distinct(crossovered_budget_id) from crossovered_budget_lines where id =ANY(%s)',(b_line_ids,))
- budget_ids=self.cr.fetchall()
-
- context={'wizard_date_from':d_from,'wizard_date_to':d_to}
- for i in range(0,len(budget_ids)):
-
- budget_name=self.pool.get('crossovered.budget').browse(self.cr, self.uid,[budget_ids[i][0]])
- res={
+ context = {'wizard_date_from':d_from,'wizard_date_to':d_to}
+ for i in range(0, len(budget_ids)):
+ budget_name = obj_c_budget.browse(self.cr, self.uid, [budget_ids[i][0]])
+ res= {
'b_id':'-1',
'a_id':'-1',
'name':budget_name[0].name,
@@ -85,48 +81,42 @@ class analytic_account_budget_report(report_sxw.rml_parse):
}
result.append(res)
- line_ids = c_b_lines_obj.search(self.cr, self.uid, [('id', 'in', b_line_ids),('crossovered_budget_id','=',budget_ids[i][0])])
- line_id =c_b_lines_obj.browse(self.cr,self.uid,line_ids)
- tot_theo=tot_pln=tot_prac=tot_perc=0
+ line_ids = c_b_lines_obj.search(self.cr, self.uid, [('id', 'in', b_line_ids), ('crossovered_budget_id','=',budget_ids[i][0])])
+ line_id = c_b_lines_obj.browse(self.cr, self.uid, line_ids)
+ tot_theo = tot_pln = tot_prac = tot_perc = 0
- done_budget=[]
+ done_budget = []
for line in line_id:
-
if line.id in b_line_ids:
- theo=pract=0.00
- theo=c_b_lines_obj._theo_amt(self.cr, self.uid, [line.id],context)[line.id]
- pract=c_b_lines_obj._prac_amt(self.cr, self.uid, [line.id],context)[line.id]
-
+ theo = pract = 0.00
+ theo = c_b_lines_obj._theo_amt(self.cr, self.uid, [line.id], context)[line.id]
+ pract = c_b_lines_obj._prac_amt(self.cr, self.uid, [line.id], context)[line.id]
if line.general_budget_id.id in done_budget:
-
for record in result:
- if record['b_id']==line.general_budget_id.id and record['a_id']==line.analytic_account_id.id:
-
- record['theo'] +=theo
- record['pln'] +=line.planned_amount
- record['prac'] +=pract
- record['perc'] +=line.percentage
- tot_theo +=theo
- tot_pln +=line.planned_amount
- tot_prac +=pract
- tot_perc +=line.percentage
+ if record['b_id'] == line.general_budget_id.id and record['a_id'] == line.analytic_account_id.id:
+ record['theo'] += theo
+ record['pln'] += line.planned_amount
+ record['prac'] += pract
+ record['perc'] += line.percentage
+ tot_theo += theo
+ tot_pln += line.planned_amount
+ tot_prac += pract
+ tot_perc += line.percentage
else:
-
- res1={
- 'b_id':line.general_budget_id.id,
- 'a_id':line.analytic_account_id.id,
- 'name':line.general_budget_id.name,
- 'status':2,
- 'theo':theo,
- 'pln':line.planned_amount,
- 'prac':pract,
- 'perc':line.percentage
+ res1 = {
+ 'b_id': line.general_budget_id.id,
+ 'a_id': line.analytic_account_id.id,
+ 'name': line.general_budget_id.name,
+ 'status': 2,
+ 'theo': theo,
+ 'pln': line.planned_amount,
+ 'prac': pract,
+ 'perc': line.percentage
}
-
tot_theo += theo
- tot_pln +=line.planned_amount
- tot_prac +=pract
- tot_perc +=line.percentage
+ tot_pln += line.planned_amount
+ tot_prac += pract
+ tot_perc += line.percentage
result.append(res1)
done_budget.append(line.general_budget_id.id)
else:
@@ -134,50 +124,45 @@ class analytic_account_budget_report(report_sxw.rml_parse):
continue
else:
res1={
- 'b_id':line.general_budget_id.id,
- 'a_id':line.analytic_account_id.id,
- 'name':line.general_budget_id.name,
- 'status':2,
- 'theo':0.00,
- 'pln':0.00,
- 'prac':0.00,
- 'perc':0.00
+ 'b_id': line.general_budget_id.id,
+ 'a_id': line.analytic_account_id.id,
+ 'name': line.general_budget_id.name,
+ 'status': 2,
+ 'theo': 0.00,
+ 'pln': 0.00,
+ 'prac': 0.00,
+ 'perc': 0.00
}
-
result.append(res1)
done_budget.append(line.general_budget_id.id)
-
- if tot_theo==0.00:
- tot_perc=0.00
+ if tot_theo == 0.00:
+ tot_perc = 0.00
else:
- tot_perc=float(tot_prac /tot_theo)*100
+ tot_perc = float(tot_prac / tot_theo) * 100
- result[-(len(done_budget) +1)]['theo']=tot_theo
+ result[-(len(done_budget) +1)]['theo'] = tot_theo
tot['theo'] +=tot_theo
- result[-(len(done_budget) +1)]['pln']=tot_pln
+ result[-(len(done_budget) +1)]['pln'] = tot_pln
tot['pln'] +=tot_pln
- result[-(len(done_budget) +1)]['prac']=tot_prac
+ result[-(len(done_budget) +1)]['prac'] = tot_prac
tot['prac'] +=tot_prac
- result[-(len(done_budget) +1)]['perc']=tot_perc
-
- if tot['theo']==0.00:
- tot['perc'] =0.00
+ result[-(len(done_budget) +1)]['perc'] = tot_perc
+ if tot['theo'] == 0.00:
+ tot['perc'] = 0.00
else:
- tot['perc']=float(tot['prac'] /tot['theo'])*100
-
+ tot['perc'] = float(tot['prac'] / tot['theo']) * 100
return result
def funct_total(self,form):
- result=[]
- res={}
- res={
- 'tot_theo':tot['theo'],
- 'tot_pln':tot['pln'],
- 'tot_prac':tot['prac'],
- 'tot_perc':tot['perc']
+ result = []
+ res = {}
+ res = {
+ 'tot_theo': tot['theo'],
+ 'tot_pln': tot['pln'],
+ 'tot_prac': tot['prac'],
+ 'tot_perc': tot['perc']
}
result.append(res)
-
return result
report_sxw.report_sxw('report.account.analytic.account.budget', 'account.analytic.account', 'addons/account_budget/report/analytic_account_budget_report.rml',parser=analytic_account_budget_report,header='internal')
diff --git a/addons/account_budget/report/budget_report.py b/addons/account_budget/report/budget_report.py
index 171984e9851..7db3925fd4d 100644
--- a/addons/account_budget/report/budget_report.py
+++ b/addons/account_budget/report/budget_report.py
@@ -38,17 +38,19 @@ class budget_report(report_sxw.rml_parse):
def post_total(self, post_obj, date1, date2):
def str2date(date_str):
return datetime.date.fromtimestamp(time.mktime(time.strptime(date_str, '%Y-%m-%d')))
+
def interval(d1str, d2str):
return (str2date(d2str) - str2date(d1str) + datetime.timedelta(days=1)).days
+
prev = reduce(lambda x,d: x + d.amount, post_obj.dotation_ids, 0.0)
period_days = interval(date1, date2)
for d in post_obj.dotation_ids:
i = interval(d.period_id.date_start, d.period_id.date_stop)
total_days = reduce(lambda x,d: x+interval(d.period_id.date_start, d.period_id.date_stop), post_obj.dotation_ids, 0)
achievements = reduce(lambda x,l: x+l['achievements'], self.lines(post_obj, date1, date2), 0.0)
- prev_1=1.00
- if total_days<>0.00:
- prev_1=prev * period_days / total_days
+ prev_1 = 1.00
+ if total_days <> 0.00:
+ prev_1 = prev * period_days / total_days
return [{'prev': prev, 'prev_period': prev_1, 'achievements': achievements}]
def budget_total(self, post_obj, date1, date2):
@@ -66,7 +68,7 @@ class budget_report(report_sxw.rml_parse):
res.append({'name': a.name, 'code': a.code, 'achievements': achievements})
return res
-report_sxw.report_sxw('report.account.budget', 'account.budget.post', 'addons/account_budget/report/budget_report.rml',parser=budget_report, header="internal")
+report_sxw.report_sxw('report.account.budget', 'account.budget.post', 'addons/account_budget/report/budget_report.rml', parser=budget_report, header="internal")
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
diff --git a/addons/account_budget/report/crossovered_budget_report.py b/addons/account_budget/report/crossovered_budget_report.py
index 464e0c1acf9..8a3b745e32a 100644
--- a/addons/account_budget/report/crossovered_budget_report.py
+++ b/addons/account_budget/report/crossovered_budget_report.py
@@ -20,48 +20,46 @@
##############################################################################
import time
+import datetime
+
import pooler
from report import report_sxw
-import datetime
import operator
import osv
class budget_report(report_sxw.rml_parse):
def __init__(self, cr, uid, name, context):
super(budget_report, self).__init__(cr, uid, name, context=context)
- self.localcontext.update( {
+ self.localcontext.update({
'funct': self.funct,
'funct_total': self.funct_total,
'time': time,
})
- self.context=context
+ self.context = context
def funct(self, object, form, ids={}, done=None, level=1):
-
if not ids:
ids = self.ids
if not done:
- done={}
-
+ done = {}
global tot
- tot={
+ tot = {
'theo':0.00,
'pln':0.00,
'prac':0.00,
'perc':0.00
}
- result=[]
+ result = []
budgets = self.pool.get('crossovered.budget').browse(self.cr, self.uid, [object.id], self.context.copy())
-
- c_b_lines_obj=self.pool.get('crossovered.budget.lines')
+ c_b_lines_obj = self.pool.get('crossovered.budget.lines')
+ acc_analytic_obj = self.pool.get('account.analytic.account')
for budget_id in budgets:
-
- res={}
- budget_lines=[]
- budget_ids=[]
- d_from=form['date_from']
- d_to=form['date_to']
+ res = {}
+ budget_lines = []
+ budget_ids = []
+ d_from = form['date_from']
+ d_to = form['date_to']
for line in budget_id.crossovered_budget_line:
budget_ids.append(line.id)
@@ -69,78 +67,69 @@ class budget_report(report_sxw.rml_parse):
if not budget_ids:
return []
- self.cr.execute('select distinct(analytic_account_id) from crossovered_budget_lines where id =ANY(%s)',(budget_ids,))
- an_ids=self.cr.fetchall()
-
- context={'wizard_date_from':d_from,'wizard_date_to':d_to}
- for i in range(0,len(an_ids)):
-
- analytic_name=self.pool.get('account.analytic.account').browse(self.cr, self.uid, [an_ids[i][0]])
+ self.cr.execute('SELECT DISTINCT(analytic_account_id) FROM crossovered_budget_lines WHERE id = ANY(%s)',(budget_ids,))
+ an_ids = self.cr.fetchall()
+ context = {'wizard_date_from': d_from, 'wizard_date_to': d_to}
+ for i in range(0, len(an_ids)):
+ analytic_name = acc_analytic_obj.browse(self.cr, self.uid, [an_ids[i][0]])
res={
- 'b_id':'-1',
- 'a_id':'-1',
- 'name':analytic_name[0].name,
- 'status':1,
- 'theo':0.00,
- 'pln':0.00,
- 'prac':0.00,
- 'perc':0.00
+ 'b_id': '-1',
+ 'a_id': '-1',
+ 'name': analytic_name[0].name,
+ 'status': 1,
+ 'theo': 0.00,
+ 'pln': 0.00,
+ 'prac': 0.00,
+ 'perc': 0.00
}
result.append(res)
- line_ids = c_b_lines_obj.search(self.cr, self.uid, [('id', 'in', budget_ids),('analytic_account_id','=',an_ids[i][0])])
-
+ line_ids = c_b_lines_obj.search(self.cr, self.uid, [('id', 'in', budget_ids), ('analytic_account_id','=',an_ids[i][0])])
line_id = c_b_lines_obj.browse(self.cr, self.uid, line_ids)
- tot_theo=tot_pln=tot_prac=tot_perc=0.00
+ tot_theo = tot_pln = tot_prac = tot_perc = 0.00
- done_budget=[]
+ done_budget = []
for line in line_id:
-
if line.id in budget_ids:
- theo=pract=0.00
- theo=c_b_lines_obj._theo_amt(self.cr, self.uid, [line.id],context)[line.id]
- pract=c_b_lines_obj._prac_amt(self.cr, self.uid, [line.id],context)[line.id]
-
+ theo = pract = 0.00
+ theo = c_b_lines_obj._theo_amt(self.cr, self.uid, [line.id], context)[line.id]
+ pract = c_b_lines_obj._prac_amt(self.cr, self.uid, [line.id], context)[line.id]
if line.general_budget_id.id in done_budget:
-
for record in result:
- if record['b_id']==line.general_budget_id.id and record['a_id']==line.analytic_account_id.id:
-
- record['theo'] +=theo
- record['pln'] +=line.planned_amount
- record['prac'] +=pract
- if record['theo']<>0.00:
- perc=(record['prac']/record['theo'])*100
+ if record['b_id'] == line.general_budget_id.id and record['a_id'] == line.analytic_account_id.id:
+ record['theo'] += theo
+ record['pln'] += line.planned_amount
+ record['prac'] += pract
+ if record['theo'] <> 0.00:
+ perc = (record['prac'] / record['theo']) * 100
else:
- perc=0.00
- record['perc'] =perc
+ perc = 0.00
+ record['perc'] = perc
tot_theo += theo
- tot_pln +=line.planned_amount
- tot_prac +=pract
- tot_perc +=perc
-
+ tot_pln += line.planned_amount
+ tot_prac += pract
+ tot_perc += perc
else:
-
- if theo<>0.00:
- perc=(pract/theo)*100
+ if theo <> 0.00:
+ perc = (pract / theo) * 100
else:
- perc=0.00
- res1={
- 'a_id':line.analytic_account_id.id,
- 'b_id':line.general_budget_id.id,
- 'name':line.general_budget_id.name,
- 'status':2,
- 'theo':theo,
- 'pln':line.planned_amount,
- 'prac':pract,
- 'perc':perc,
+ perc = 0.00
+ res1 = {
+ 'a_id': line.analytic_account_id.id,
+ 'b_id': line.general_budget_id.id,
+ 'name': line.general_budget_id.name,
+ 'status': 2,
+ 'theo': theo,
+ 'pln': line.planned_amount,
+ 'prac': pract,
+ 'perc': perc,
}
tot_theo += theo
- tot_pln +=line.planned_amount
- tot_prac +=pract
- tot_perc +=perc
- if form['report']=='analytic-full':
+ tot_pln += line.planned_amount
+ tot_prac += pract
+ tot_perc += perc
+ if form['report'] == 'analytic-full':
result.append(res1)
done_budget.append(line.general_budget_id.id)
else:
@@ -149,61 +138,57 @@ class budget_report(report_sxw.rml_parse):
continue
else:
res1={
- 'a_id':line.analytic_account_id.id,
- 'b_id':line.general_budget_id.id,
- 'name':line.general_budget_id.name,
- 'status':2,
- 'theo':0.00,
- 'pln':0.00,
- 'prac':0.00,
- 'perc':0.00
- }
-
- if form['report']=='analytic-full':
+ 'a_id': line.analytic_account_id.id,
+ 'b_id': line.general_budget_id.id,
+ 'name': line.general_budget_id.name,
+ 'status': 2,
+ 'theo': 0.00,
+ 'pln': 0.00,
+ 'prac': 0.00,
+ 'perc': 0.00
+ }
+ if form['report'] == 'analytic-full':
result.append(res1)
done_budget.append(line.general_budget_id.id)
-
- if tot_theo==0.00:
- tot_perc=0.00
+ if tot_theo == 0.00:
+ tot_perc = 0.00
else:
- tot_perc=float(tot_prac /tot_theo)*100
-
- if form['report']=='analytic-full':
-
- result[-(len(done_budget) +1)]['theo']=tot_theo
- tot['theo'] +=tot_theo
- result[-(len(done_budget) +1)]['pln']=tot_pln
- tot['pln'] +=tot_pln
- result[-(len(done_budget) +1)]['prac']=tot_prac
- tot['prac'] +=tot_prac
- result[-(len(done_budget) +1)]['perc']=tot_perc
+ tot_perc = float(tot_prac / tot_theo) * 100
+ if form['report'] == 'analytic-full':
+ result[-(len(done_budget) +1)]['theo'] = tot_theo
+ tot['theo'] += tot_theo
+ result[-(len(done_budget) +1)]['pln'] = tot_pln
+ tot['pln'] += tot_pln
+ result[-(len(done_budget) +1)]['prac'] = tot_prac
+ tot['prac'] += tot_prac
+ result[-(len(done_budget) +1)]['perc'] = tot_perc
else:
- result[-1]['theo']=tot_theo
- tot['theo'] +=tot_theo
- result[-1]['pln']=tot_pln
- tot['pln'] +=tot_pln
- result[-1]['prac']=tot_prac
- tot['prac'] +=tot_prac
- result[-1]['perc']=tot_perc
- if tot['theo']==0.00:
- tot['perc'] =0.00
+ result[-1]['theo'] = tot_theo
+ tot['theo'] += tot_theo
+ result[-1]['pln'] = tot_pln
+ tot['pln'] += tot_pln
+ result[-1]['prac'] = tot_prac
+ tot['prac'] += tot_prac
+ result[-1]['perc'] = tot_perc
+ if tot['theo'] == 0.00:
+ tot['perc'] = 0.00
else:
- tot['perc']=float(tot['prac'] /tot['theo'])*100
+ tot['perc'] = float(tot['prac'] / tot['theo']) * 100
return result
def funct_total(self, form):
- result=[]
- res={}
-
- res={
- 'tot_theo':tot['theo'],
- 'tot_pln':tot['pln'],
- 'tot_prac':tot['prac'],
- 'tot_perc':tot['perc']
+ result = []
+ res = {}
+ res = {
+ 'tot_theo': tot['theo'],
+ 'tot_pln': tot['pln'],
+ 'tot_prac': tot['prac'],
+ 'tot_perc': tot['perc']
}
result.append(res)
-
return result
+
report_sxw.report_sxw('report.crossovered.budget.report', 'crossovered.budget', 'addons/account_budget/report/crossovered_budget_report.rml',parser=budget_report,header='internal')
+
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/account_budget/wizard/account_budget_analytic.py b/addons/account_budget/wizard/account_budget_analytic.py
index 70ce1a5156b..be3e8a45099 100644
--- a/addons/account_budget/wizard/account_budget_analytic.py
+++ b/addons/account_budget/wizard/account_budget_analytic.py
@@ -29,11 +29,11 @@ class account_budget_analytic(osv.osv_memory):
_columns = {
'date_from': fields.date('Start of period', required=True),
'date_to': fields.date('End of period', required=True),
- }
+ }
_defaults= {
'date_from': time.strftime('%Y-01-01'),
'date_to': time.strftime('%Y-%m-%d'),
- }
+ }
def check_report(self, cr, uid, ids, context=None):
datas = {}
@@ -44,12 +44,12 @@ class account_budget_analytic(osv.osv_memory):
'ids': context.get('active_ids',[]),
'model': 'account.analytic.account',
'form': data
- }
+ }
return {
'type': 'ir.actions.report.xml',
'report_name': 'account.analytic.account.budget',
'datas': datas,
- }
+ }
account_budget_analytic()
diff --git a/addons/account_budget/wizard/account_budget_crossovered_report.py b/addons/account_budget/wizard/account_budget_crossovered_report.py
index 2427044e681..e1207c5cba8 100644
--- a/addons/account_budget/wizard/account_budget_crossovered_report.py
+++ b/addons/account_budget/wizard/account_budget_crossovered_report.py
@@ -18,7 +18,6 @@
# along with this program. If not, see .
#
##############################################################################
-
import time
from osv import fields, osv
@@ -30,11 +29,11 @@ class account_budget_crossvered_report(osv.osv_memory):
_columns = {
'date_from': fields.date('Start of period', required=True),
'date_to': fields.date('End of period', required=True),
- }
+ }
_defaults= {
'date_from': time.strftime('%Y-01-01'),
'date_to': time.strftime('%Y-%m-%d'),
- }
+ }
def check_report(self, cr, uid, ids, context=None):
datas = {}
@@ -45,13 +44,13 @@ class account_budget_crossvered_report(osv.osv_memory):
'ids': context.get('active_ids',[]),
'model': 'crossovered.budget',
'form': data
- }
+ }
datas['form']['report']='analytic-full'
return {
'type': 'ir.actions.report.xml',
'report_name': 'crossovered.budget.report',
'datas': datas,
- }
+ }
account_budget_crossvered_report()
diff --git a/addons/account_budget/wizard/account_budget_crossovered_summary_report.py b/addons/account_budget/wizard/account_budget_crossovered_summary_report.py
index 9581546ca10..e0f955787e7 100644
--- a/addons/account_budget/wizard/account_budget_crossovered_summary_report.py
+++ b/addons/account_budget/wizard/account_budget_crossovered_summary_report.py
@@ -31,11 +31,11 @@ class account_budget_crossvered_summary_report(osv.osv_memory):
_columns = {
'date_from': fields.date('Start of period', required=True),
'date_to': fields.date('End of period', required=True),
- }
+ }
_defaults= {
'date_from': time.strftime('%Y-01-01'),
'date_to': time.strftime('%Y-%m-%d'),
- }
+ }
def check_report(self, cr, uid, ids, context=None):
datas = {}
@@ -46,14 +46,13 @@ class account_budget_crossvered_summary_report(osv.osv_memory):
'ids': context.get('active_ids',[]),
'model': 'crossovered.budge',
'form': data
- }
- datas['form']['report']='analytic-one'
+ }
+ datas['form']['report'] = 'analytic-one'
return {
'type': 'ir.actions.report.xml',
'report_name': 'crossovered.budget.report',
'datas': datas,
- }
- return {}
+ }
account_budget_crossvered_summary_report()
diff --git a/addons/account_budget/wizard/account_budget_report.py b/addons/account_budget/wizard/account_budget_report.py
index 58ba9ad8191..20432ff64e4 100644
--- a/addons/account_budget/wizard/account_budget_report.py
+++ b/addons/account_budget/wizard/account_budget_report.py
@@ -18,7 +18,6 @@
# along with this program. If not, see .
#
##############################################################################
-
import time
from osv import fields, osv
@@ -31,11 +30,11 @@ class account_budget_report(osv.osv_memory):
_columns = {
'date1': fields.date('Start of period', required=True),
'date2': fields.date('End of period', required=True),
- }
+ }
_defaults= {
'date1': time.strftime('%Y-01-01'),
'date2': time.strftime('%Y-%m-%d'),
- }
+ }
def check_report(self, cr, uid, ids, context=None):
datas = {}
@@ -46,7 +45,7 @@ class account_budget_report(osv.osv_memory):
'ids': context.get('active_ids',[]),
'model': 'account.budget.post',
'form': data
- }
+ }
data_model = self.pool.get(datas['model']).browse(cr, uid, context['active_id'])
if not data_model.dotation_ids:
@@ -55,7 +54,7 @@ class account_budget_report(osv.osv_memory):
'type': 'ir.actions.report.xml',
'report_name': 'account.budget',
'datas': datas,
- }
+ }
account_budget_report()
diff --git a/addons/account_budget/wizard/account_budget_spread.py b/addons/account_budget/wizard/account_budget_spread.py
index 31e059f754b..de854a3966c 100644
--- a/addons/account_budget/wizard/account_budget_spread.py
+++ b/addons/account_budget/wizard/account_budget_spread.py
@@ -29,7 +29,7 @@ class account_budget_spread(osv.osv_memory):
_columns = {
'fiscalyear': fields.many2one('account.fiscalyear', 'Fiscal Year', required=True),
'amount': fields.float('Amount', digits_compute=dp.get_precision('Account')),
- }
+ }
def check_spread(self, cr, uid, ids, context=None):
if context is None:
diff --git a/addons/account_coda/wizard/account_coda_import.py b/addons/account_coda/wizard/account_coda_import.py
index 8a88f4a255d..e68de12b038 100644
--- a/addons/account_coda/wizard/account_coda_import.py
+++ b/addons/account_coda/wizard/account_coda_import.py
@@ -224,24 +224,24 @@ class account_coda_import(osv.osv_memory):
'period_id':statement.get('period_id',False) or period,# statement.period_id.id
}
voucher_id = voucher_obj.create(cr, uid, voucher_res, context=context)
-
- result = voucher_obj.onchange_partner_id(cr, uid, [], partner_id=line.partner_id.id, journal_id=statement.journal_id.id, price=abs(amount), currency_id= statement.currency.id, ttype=(amount < 0 and 'payment' or 'receipt'))
+ context.update({'move_line_ids': [line['id']]})
+ result = voucher_obj.onchange_partner_id(cr, uid, [], partner_id=line.partner_id.id, journal_id=statement.journal_id.id, price=abs(amount), currency_id= statement.currency.id, ttype=(amount < 0 and 'payment' or 'receipt'), context=context)
voucher_line_dict = False
if result['value']['line_ids']:
for line_dict in result['value']['line_ids']:
move_line = line_obj.browse(cr, uid, line_dict['move_line_id'], context)
if line.move_id.id == move_line.move_id.id:
voucher_line_dict = line_dict
-
+
if voucher_line_dict:
voucher_line_dict.update({'voucher_id':voucher_id})
voucher_line_obj.create(cr, uid, voucher_line_dict, context=context)
-
+
# reconcile_id = statement_reconcile_obj.create(cr, uid, {
# 'line_ids': [(6, 0, rec_id)]
# }, context=context)
#
-
+
mv = self.pool.get('account.move.line').browse(cr, uid, rec_id[0], context=context)
if mv.partner_id:
line['partner_id'] = mv.partner_id.id
diff --git a/addons/account_payment/wizard/account_payment_populate_statement.py b/addons/account_payment/wizard/account_payment_populate_statement.py
index 0e7ea32e8d3..84911f512c4 100644
--- a/addons/account_payment/wizard/account_payment_populate_statement.py
+++ b/addons/account_payment/wizard/account_payment_populate_statement.py
@@ -91,7 +91,8 @@ class account_payment_populate_statement(osv.osv_memory):
'period_id': statement.period_id.id
}
voucher_id = voucher_obj.create(cr, uid, voucher_res, context=context)
- result = voucher_obj.onchange_partner_id(cr, uid, [], partner_id=line.partner_id.id, journal_id=statement.journal_id.id, price=abs(amount), currency_id= statement.currency.id, ttype='payment')
+ context.update({'move_line_ids': [line.id]})
+ result = voucher_obj.onchange_partner_id(cr, uid, [], partner_id=line.partner_id.id, journal_id=statement.journal_id.id, price=abs(amount), currency_id= statement.currency.id, ttype='payment', context=context)
voucher_line_dict = False
if result['value']['line_ids']:
for line_dict in result['value']['line_ids']:
diff --git a/addons/l10n_ch/wizard/bvr_import.py b/addons/l10n_ch/wizard/bvr_import.py
index 611b5720a96..ea3fe9fac38 100644
--- a/addons/l10n_ch/wizard/bvr_import.py
+++ b/addons/l10n_ch/wizard/bvr_import.py
@@ -214,7 +214,8 @@ def _import(obj, cursor, user, data, context=None):
'period_id': statement.period_id.id
}
voucher_id = voucher_obj.create(cr, uid, voucher_res, context=context)
- result = voucher_obj.onchange_partner_id(cr, uid, [], partner_id=line.partner_id.id, journal_id=statement.journal_id.id, price=abs(amount), currency_id= statement.currency.id, ttype='payment')
+ context.update({'move_line_ids': [line.id]})
+ result = voucher_obj.onchange_partner_id(cr, uid, [], partner_id=line.partner_id.id, journal_id=statement.journal_id.id, price=abs(amount), currency_id= statement.currency.id, ttype='payment', context=context)
voucher_line_dict = False
if result['value']['line_ids']:
for line_dict in result['value']['line_ids']: