Browse Source

[ADD] Initial Commit

pull/30/merge
SHEREEF PT 8 years ago
parent
commit
cacede0de6
  1. 24
      account_budget_report/__init__.py
  2. 49
      account_budget_report/__manifest__.py
  3. 28
      account_budget_report/models/__init__.py
  4. 44
      account_budget_report/models/analytic_budget_report.py
  5. 44
      account_budget_report/models/budget.py
  6. 46
      account_budget_report/models/budget_report.py
  7. 44
      account_budget_report/models/budget_summary.py
  8. 5
      account_budget_report/reports/__init__.py
  9. 85
      account_budget_report/reports/account_budget_report.xml
  10. 156
      account_budget_report/reports/analytic_budget.py
  11. 177
      account_budget_report/reports/budget_parser.py
  12. 180
      account_budget_report/reports/cross_overed_budget_report.py
  13. 77
      account_budget_report/reports/report_analytic_account_budget.xml
  14. 89
      account_budget_report/reports/report_crossovered_budget.xml
  15. BIN
      account_budget_report/static/description/analytic_budget.png
  16. BIN
      account_budget_report/static/description/analytic_budget_report.png
  17. BIN
      account_budget_report/static/description/banner.jpg
  18. BIN
      account_budget_report/static/description/budget_adviser.png
  19. BIN
      account_budget_report/static/description/budgetry_position.png
  20. BIN
      account_budget_report/static/description/budgetry_position_report.png
  21. BIN
      account_budget_report/static/description/cybro_logo.png
  22. BIN
      account_budget_report/static/description/icon.png
  23. 145
      account_budget_report/static/description/index.html
  24. BIN
      account_budget_report/static/description/report2.png
  25. BIN
      account_budget_report/static/description/summary_report.png
  26. BIN
      account_budget_report/static/description/wizard.png
  27. BIN
      account_budget_report/static/description/wizard1.png
  28. 38
      account_budget_report/views/analytic_budget_report_view.xml
  29. 37
      account_budget_report/views/budget_print_view.xml
  30. 39
      account_budget_report/views/budget_report_view.xml
  31. 38
      account_budget_report/views/budget_summary_view.xml

24
account_budget_report/__init__.py

@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Jesni Banu(<https://www.cybrosys.com>)
# you can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# It is forbidden to publish, distribute, sublicense, or sell copies
# of the Software or modified copies of the Software.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# GENERAL PUBLIC LICENSE (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import models
import reports

49
account_budget_report/__manifest__.py

@ -0,0 +1,49 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Jesni Banu(<https://www.cybrosys.com>)
# you can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# It is forbidden to publish, distribute, sublicense, or sell copies
# of the Software or modified copies of the Software.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# GENERAL PUBLIC LICENSE (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
{
'name': 'Account Budget Report',
'version': '10.0.1.0.0',
'summary': """Enables Budget Summary Report""",
'description': """Providing budget analysis through different pdf reports. So we can take
quick budget analysis.""",
'category': 'Accounting',
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'website': "https://www.cybrosys.com",
'depends': ['base', 'account_budget'],
'data': [
'views/budget_report_view.xml',
'views/budget_summary_view.xml',
'views/budget_print_view.xml',
'views/analytic_budget_report_view.xml',
'reports/account_budget_report.xml',
'reports/report_crossovered_budget.xml',
'reports/report_analytic_account_budget.xml',
],
'images': ['static/description/banner.jpg'],
'license': 'AGPL-3',
'demo': [],
'installable': True,
'auto_install': False,
'application': False,
}

28
account_budget_report/models/__init__.py

@ -0,0 +1,28 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Jesni Banu(<https://www.cybrosys.com>)
# you can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# It is forbidden to publish, distribute, sublicense, or sell copies
# of the Software or modified copies of the Software.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# GENERAL PUBLIC LICENSE (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import budget_report
import budget_summary
import budget
import analytic_budget_report

44
account_budget_report/models/analytic_budget_report.py

@ -0,0 +1,44 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Jesni Banu(<https://www.cybrosys.com>)
# you can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# It is forbidden to publish, distribute, sublicense, or sell copies
# of the Software or modified copies of the Software.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# GENERAL PUBLIC LICENSE (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import time
from odoo import fields, models
class AccountBudgetAnalytic(models.TransientModel):
_name = 'account.budget.analytic'
_description = 'Account Budget report for analytic account'
date_from = fields.Date('Start of period', required=True, default=lambda *a: time.strftime('%Y-01-01'))
date_to = fields.Date('End of period', required=True, default=lambda *a: time.strftime('%Y-%m-%d'))
def check_report(self):
data = self.read()[0]
active_ids = self.env.context.get('active_ids', [])
datas = {
'ids': active_ids,
'model': 'account.analytic.account',
'form': data
}
datas['form']['ids'] = datas['ids']
return self.env['report'].get_action([], 'account_budget_report.report_analytic_account_budget', data=datas)

44
account_budget_report/models/budget.py

@ -0,0 +1,44 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Jesni Banu(<https://www.cybrosys.com>)
# you can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# It is forbidden to publish, distribute, sublicense, or sell copies
# of the Software or modified copies of the Software.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# GENERAL PUBLIC LICENSE (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import time
from odoo import models, fields
class AccountBudgetCrossOverReport(models.TransientModel):
_name = "account.budget.cross.over.report"
_description = "Account Budget cross over report"
date_from = fields.Date('Start of period', required=True, default=lambda *a: time.strftime('%Y-01-01'))
date_to = fields.Date('End of period', required=True, default=lambda *a: time.strftime('%Y-%m-%d'))
def check_report(self):
data = self.read()[0]
active_ids = self.env.context.get('active_ids', [])
datas = {
'ids': active_ids,
'model': 'crossovered.budget',
'form': data
}
datas['form']['ids'] = datas['ids']
datas['form']['report'] = 'analytic-full'
return self.env['report'].get_action([], 'account_budget_report.report_cross_over_budget', data=datas)

46
account_budget_report/models/budget_report.py

@ -0,0 +1,46 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Jesni Banu(<https://www.cybrosys.com>)
# you can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# It is forbidden to publish, distribute, sublicense, or sell copies
# of the Software or modified copies of the Software.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# GENERAL PUBLIC LICENSE (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import time
from odoo import models, fields
class AccountBudgetAnalytic(models.TransientModel):
_name = 'account.budget.report'
_description = 'Account Budget report for analytic account'
date_from = fields.Date('Start of period', required=True, default=lambda *a: time.strftime('%Y-01-01'))
date_to = fields.Date('End of period', required=True, default=lambda *a: time.strftime('%Y-%m-%d'))
def check_report(self):
active_ids = self.env.context.get('active_ids', [])
data = self.read()[0]
datas = {
'ids': active_ids,
'model': 'account.budget.post',
'form': data
}
datas['form']['ids'] = datas['ids']
datas['form']['report'] = 'analytic-full'
return self.env['report'].get_action([], 'account_budget_report.report_budget', data=datas)

44
account_budget_report/models/budget_summary.py

@ -0,0 +1,44 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Jesni Banu(<https://www.cybrosys.com>)
# you can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# It is forbidden to publish, distribute, sublicense, or sell copies
# of the Software or modified copies of the Software.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# GENERAL PUBLIC LICENSE (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import time
from odoo import models, fields
class AccountBudgetCrossOverSummaryReport(models.TransientModel):
_name = 'account.budget.cross.over.summary.report'
_description = 'Account Budget cross over summary report'
date_from = fields.Date('Start of period', required=True, default=lambda *a: time.strftime('%Y-01-01'))
date_to = fields.Date('End of period', required=True, default=lambda *a: time.strftime('%Y-%m-%d'))
def check_report(self):
data = self.read()[0]
active_ids = self.env.context.get('active_ids', [])
datas = {
'ids': active_ids,
'model': 'crossovered.budget',
'form': data
}
datas['form']['ids'] = datas['ids']
datas['form']['report'] = 'analytic-one'
return self.env['report'].get_action([], 'account_budget_report.report_cross_over_budget', data=datas)

5
account_budget_report/reports/__init__.py

@ -0,0 +1,5 @@
# -*- coding: utf-8 -*-
import budget_parser
import cross_overed_budget_report
import analytic_budget

85
account_budget_report/reports/account_budget_report.xml

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<template id="report_budget">
<t t-call="report.html_container">
<t t-foreach="docs" t-as="o">
<t t-call="report.internal_layout">
<div class="page">
<h2>Budget</h2>
<div class="row mt32">
<div class="col-xs-3">
<strong>Currency:</strong>
<p t-esc="res_company.currency_id.name"/>
</div>
<div class="col-xs-3">
<strong>Printed at:</strong>
<p><span t-esc="formatLang(time.strftime('%Y-%m-%d'), date=True)"/> at
<span t-esc="time.strftime('%H:%M:%S')"/></p>
</div>
<div class="col-xs-3">
<strong>Analysis from:</strong>
<p><span t-esc="formatLang(data['form']['date_from'], date=True)"/> to
<span t-esc="formatLang(data['form']['date_to'], date=True)"/></p>
</div>
<div class="col-xs-3">
<strong>Budget:</strong>
<p t-field="o.name"/>
</div>
</div>
<table class="table table-condensed">
<thead>
<tr>
<th>Description</th>
<th class="text-right">Theoretical Amount</th>
<th class="text-right">Planned Amount</th>
<th class="text-right">Practical Amount</th>
<th class="text-right">Perc(%)</th>
</tr>
</thead>
<tbody>
<t t-foreach="funct(o, data['form'])" t-as="line">
<t t-if="line['status'] == 1">
<tr>
<td><strong t-esc="line['name']"/></td>
<td class="text-right">
<strong t-esc="formatLang(line['theo'], dp='Account', currency_obj = res_company.currency_id)"/>
</td>
<td class="text-right"><strong t-esc="formatLang(line['pln'], dp='Account', currency_obj=res_company.currency_id)"/></td>
<td class="text-right"><strong t-esc="formatLang(line['prac'], dp='Account', currency_obj=res_company.currency_id)"/></td>
<td class="text-right"><strong t-esc="formatLang(line['perc'],digits=2)"/> %</td>
</tr>
</t>
<tr t-if="line['status'] != 1">
<td><span style="color: white;" t-esc="'.....'*(line['status'] - 1)"/><span t-esc="line['name']"/></td>
<td class="text-right"><span t-esc="formatLang(line['theo'], dp='Account', currency_obj=res_company.currency_id)"/></td>
<td class="text-right"><span t-esc="formatLang(line['pln'], dp='Account', currency_obj=res_company.currency_id)"/></td>
<td class="text-right"><span t-esc="formatLang(line['prac'], dp='Account', currency_obj=res_company.currency_id)"/></td>
<td class="text-right"><span t-esc="formatLang(line['perc'],digits=2)"/> % </td>
</tr>
</t>
<tr t-foreach="funct_total(data['form'])" t-as="tot">
<td><strong>Total:</strong></td>
<td class="text-right"><strong t-esc="formatLang(tot['tot_theo'], dp='Account', currency_obj = res_company.currency_id)"/></td>
<td class="text-right"><strong t-esc="formatLang(tot['tot_pln'], dp='Account', currency_obj = res_company.currency_id)"/></td>
<td class="text-right"><strong t-esc="formatLang(tot['tot_prac'], dp='Account', currency_obj=res_company.currency_id)"/></td>
<td class="text-right"><strong t-esc="formatLang(tot['tot_perc'], digits=2)"/> %</td>
</tr>
</tbody>
</table>
</div>
</t>
</t>
</t>
</template>
<report
id="action_report_budget"
model="account.budget.post"
string="Budget"
report_type="qweb-pdf"
name="account_budget_report.report_budget"
file="account_budget_report.report_budget"
menu="False"
/>
</odoo>

156
account_budget_report/reports/analytic_budget.py

@ -0,0 +1,156 @@
# -*- coding: utf-8 -*-
import time
from odoo.osv import osv
from odoo.report import report_sxw
from odoo.http import request
class AnalyticAccountBudgetReport(report_sxw.rml_parse):
def __init__(self, cr, uid, name, context):
super(AnalyticAccountBudgetReport, self).__init__(cr, uid, name, context=context)
self.localcontext.update({
'funct': self.funct,
'funct_total': self.funct_total,
'time': time,
})
self.context = context
def funct(self, object, form, ids=None, done=None, level=1):
if ids is None:
ids = {}
if not ids:
ids = self.ids
if not done:
done = {}
global tot
tot = {
'theo': 0.00,
'pln': 0.00,
'prac': 0.00,
'perc': 0.00
}
result = []
accounts = request.env['account.analytic.account'].browse(object.id)
c_b_lines_obj = request.env['crossovered.budget.lines']
obj_c_budget = request.env['crossovered.budget']
for account_id in accounts:
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']
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 = obj_c_budget.browse([budget_ids[i][0]])
res = {
'b_id': '-1',
'a_id': '-1',
'name': budget_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([('id', 'in', b_line_ids),
('crossovered_budget_id', '=', budget_ids[i][0])])
line_id = line_ids
tot_theo = tot_pln = tot_prac = tot_perc = 0
done_budget = []
for line in line_id:
if line.id in b_line_ids:
theo = pract = 0.00
theo = line.theoritical_amount
pract = line.practical_amount
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
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
}
tot_theo += theo
tot_pln += line.planned_amount
tot_prac += pract
tot_perc += line.percentage
result.append(res1)
done_budget.append(line.general_budget_id.id)
else:
if line.general_budget_id.id in done_budget:
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
}
result.append(res1)
done_budget.append(line.general_budget_id.id)
if tot_theo == 0.00:
tot_perc = 0.00
else:
tot_perc = float(tot_prac / tot_theo) * 100
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
if tot['theo'] == 0.00:
tot['perc'] = 0.00
else:
tot['perc'] = float(tot['prac'] / tot['theo']) * 100
return result
def funct_total(self, form):
result = []
res = {
'tot_theo': tot['theo'],
'tot_pln': tot['pln'],
'tot_prac': tot['prac'],
'tot_perc': tot['perc']
}
result.append(res)
return result
class ReportAnalyticAccountBudget(osv.AbstractModel):
_name = 'report.account_budget_report.report_analytic_account_budget'
_inherit = 'report.abstract_report'
_template = 'account_budget_report.report_analytic_account_budget'
_wrapped_report_class = AnalyticAccountBudgetReport

177
account_budget_report/reports/budget_parser.py

@ -0,0 +1,177 @@
# -*- coding: utf-8 -*-
import time
from odoo.osv import osv
from odoo.report import report_sxw
from odoo.http import request
tot = {}
class BudgetReport(report_sxw.rml_parse):
def __init__(self, cr, uid, name, context):
super(BudgetReport, self).__init__(cr, uid, name, context=context)
self.localcontext.update({
'funct': self.funct,
'funct_total': self.funct_total,
'time': time,
})
self.context = context
def funct(self, object, form, ids=None, done=None, level=1):
if ids is None:
ids = {}
if not ids:
ids = self.ids
if not done:
done = {}
global tot
tot = {
'theo': 0.00,
'pln': 0.00,
'prac': 0.00,
'perc': 0.00
}
result = []
budgets = request.env['account.budget.post'].browse(object.id)
c_b_lines_obj = request.env['crossovered.budget.lines']
acc_analytic_obj = request.env['account.analytic.account']
for budget_id in budgets:
res = {}
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)
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)):
if not an_ids[i][0]:
continue
analytic_name = acc_analytic_obj.browse(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
}
result.append(res)
line_ids = c_b_lines_obj.search([('id', 'in', budget_ids), ('analytic_account_id', '=', an_ids[i][0])])
line_id = line_ids
tot_theo = tot_pln = tot_prac = tot_perc = 0.00
done_budget = []
for line in line_id:
if line.id in budget_ids:
theo = pract = 0.00
theo = line.theoritical_amount
pract = line.practical_amount
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
else:
perc = 0.00
record['perc'] = perc
tot_theo += theo
tot_pln += line.planned_amount
tot_prac += pract
tot_perc += perc
else:
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,
}
tot_theo += theo
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:
if line.general_budget_id.id in done_budget:
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':
result.append(res1)
done_budget.append(line.general_budget_id.id)
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
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
else:
tot['perc'] = float(tot['prac'] / tot['theo']) * 100
return result
def funct_total(self, form):
result = []
res = {
'tot_theo': tot['theo'],
'tot_pln': tot['pln'],
'tot_prac': tot['prac'],
'tot_perc': tot['perc']
}
result.append(res)
return result
class ReportBudget(osv.AbstractModel):
_name = 'report.account_budget_report.report_budget'
_inherit = 'report.abstract_report'
_template = 'account_budget_report.report_budget'
_wrapped_report_class = BudgetReport

180
account_budget_report/reports/cross_overed_budget_report.py

@ -0,0 +1,180 @@
# -*- coding: utf-8 -*-
import time
from odoo.osv import osv
from odoo.report import report_sxw
from odoo.http import request
class BudgetReport(report_sxw.rml_parse):
def __init__(self, cr, uid, name, context):
super(BudgetReport, self).__init__(cr, uid, name, context=context)
self.localcontext.update({
'funct': self.funct,
'funct_total': self.funct_total,
'time': time,
})
self.context = context
def funct(self, object, form, ids=None, done=None, level=1):
if ids is None:
ids = {}
if not ids:
ids = self.ids
if not done:
done = {}
global tot
tot = {
'theo': 0.00,
'pln': 0.00,
'prac': 0.00,
'perc': 0.00
}
result = []
budgets = request.env['crossovered.budget'].browse(object.id)
c_b_lines_obj = request.env['crossovered.budget.lines']
acc_analytic_obj = request.env['account.analytic.account']
for budget_id in budgets:
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)
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)):
if not an_ids[i][0]:
continue
analytic_name = acc_analytic_obj.browse([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
}
result.append(res)
line_ids = c_b_lines_obj.search([('id', 'in', budget_ids), ('analytic_account_id', '=', an_ids[i][0]),
('date_to', '>=', d_from), ('date_from', '<=', d_to)])
line_id = line_ids
tot_theo = tot_pln = tot_prac = tot_perc = 0.00
done_budget = []
for line in line_id:
if line.id in budget_ids:
theo = pract = 0.00
theo = line.theoritical_amount
pract = c_b_lines_obj.practical_amount
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
else:
perc = 0.00
record['perc'] = perc
tot_theo += theo
tot_pln += line.planned_amount
tot_prac += pract
tot_perc += perc
else:
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,
}
tot_theo += theo
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:
if line.general_budget_id.id in done_budget:
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':
result.append(res1)
done_budget.append(line.general_budget_id.id)
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
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
else:
tot['perc'] = float(tot['prac'] / tot['theo']) * 100
return result
def funct_total(self, form):
result = []
res = {
'tot_theo': tot['theo'],
'tot_pln': tot['pln'],
'tot_prac': tot['prac'],
'tot_perc': tot['perc']
}
result.append(res)
return result
class ReportCrossOverBudget(osv.AbstractModel):
_name = 'report.account_budget_report.report_cross_over_budget'
_inherit = 'report.abstract_report'
_template = 'account_budget_report.report_cross_over_budget'
_wrapped_report_class = BudgetReport

77
account_budget_report/reports/report_analytic_account_budget.xml

@ -0,0 +1,77 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<template id="report_analytic_account_budget">
<t t-call="report.html_container">
<t t-foreach="docs" t-as="o">
<t t-call="report.internal_layout">
<div class="page">
<h2>Analytic Budget</h2>
<div class="row mt32">
<div class="col-xs-3">
<strong>Analysis from</strong>
<p><span t-esc="formatLang(data['form']['date_from'], date=True)"/> to
<span t-esc="formatLang(data['form']['date_to'], date=True)"/></p>
</div>
<div class="col-xs-3">
<strong>Analytic Account</strong>
<p t-field="o.name"/>
</div>
<div class="col-xs-3">
<strong>Currency</strong>
<p t-esc="res_company.currency_id.name"/>
</div>
</div>
<table class="table table-condensed">
<thead>
<tr>
<th>Description</th>
<th class="text-right">Theoretical Amt</th>
<th class="text-right">Planned Amt</th>
<th class="text-right">Practical Amt</th>
<th class="text-right">Perc(%)</th>
</tr>
</thead>
<tbody>
<t t-foreach="funct(o, data['form'])" t-as="line">
<tr t-if="line['status'] == 1">
<td><strong t-esc="line['name']"/></td>
<td class="text-right"><strong t-esc="formatLang(line['theo'], dp='Account', currency_obj=res_company.currency_id)"/></td>
<td class="text-right"><strong t-esc="formatLang(line['pln'], dp='Account', currency_obj=res_company.currency_id)"/></td>
<td class="text-right"><strong t-esc="formatLang(line['prac'], dp='Account', currency_obj=res_company.currency_id)"/></td>
<td class="text-right"><strong t-esc="formatLang(line['perc'], digits=2)"/> %</td>
</tr>
<tr t-if="line['status'] != 1">
<td><span style="color: white;" t-esc="'.....'*(line['status'] - 1)"/><span t-esc="line['name']"/></td>
<td class="text-right"><span t-esc="formatLang(line['theo'], dp='Account', currency_obj=res_company.currency_id)"/></td>
<td class="text-right"><span t-esc="formatLang(line['pln'], dp='Account', currency_obj=res_company.currency_id)"/></td>
<td class="text-right"><span t-esc="formatLang(line['prac'], dp='Account', currency_obj=res_company.currency_id)"/></td>
<td class="text-right"><span t-esc="formatLang(line['perc'],digits=2)"/> %</td>
</tr>
</t>
<tr t-foreach="funct_total(data['form'])" t-as="tot">
<td><strong>Total:</strong></td>
<td class="text-right"><strong t-esc="formatLang(tot['tot_theo'], dp='Account', currency_obj=res_company.currency_id)"/></td>
<td class="text-right"><strong t-esc="formatLang(tot['tot_pln'], dp='Account', currency_obj=res_company.currency_id)"/></td>
<td class="text-right"><strong t-esc="formatLang(tot['tot_prac'], dp='Account', currency_obj=res_company.currency_id)"/></td>
<td class="text-right"><strong t-esc="formatLang(tot['tot_perc'], digits=2)"/> %</td>
</tr>
</tbody>
</table>
</div>
</t>
</t>
</t>
</template>
<report
id="action_report_analytic_account_budget"
model="account.analytic.account"
string="Budgets"
report_type="qweb-pdf"
name="account_budget_report.report_analytic_account_budget"
file="account_budget_report.report_analytic_account_budget"
menu="False"
/>
</odoo>

89
account_budget_report/reports/report_crossovered_budget.xml

@ -0,0 +1,89 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<template id="report_cross_over_budget">
<t t-call="report.html_container">
<t t-foreach="docs" t-as="o">
<t t-call="report.internal_layout">
<div class="page">
<h2>Budget</h2>
<div class="row mt32">
<div class="col-xs-3">
<strong>Analysis from:</strong>
<p><span t-esc="formatLang(data['form']['date_from'], date=True)"/> to
<span t-esc="formatLang(data['form']['date_to'], date=True)"/></p>
</div>
<div class="col-xs-3">
<strong>Budget:</strong>
<p t-esc="o.name"/>
</div>
<div class="col-xs-3">
<strong>Currency:</strong>
<p t-esc="res_company.currency_id.name"/>
</div>
</div>
<table class="table table-condensed">
<thead>
<tr>
<th>Description</th>
<th class="text-right">Theoretical Amt</th>
<th class="text-right">Planned Amt</th>
<th class="text-right">Practical Amt</th>
<th class="text-center">Perc(%)</th>
</tr>
</thead>
<tbody>
<tr t-foreach="funct(o, data['form'])" t-as="line">
<td>
<span style="color: white;" t-esc="'... '*(line['status'] - 1)"/>
<span t-esc="line['name']"/>
</td>
<td class="text-right">
<span t-esc="formatLang(line['theo'], dp='Account', currency_obj=res_company.currency_id)"/>
</td>
<td class="text-right">
<span t-esc="formatLang(line['pln'], dp='Account', currency_obj=res_company.currency_id)"/>
</td>
<td class="text-right">
<span t-esc="formatLang(line['prac'], dp='Account', currency_obj=res_company.currency_id)"/>
</td>
<td class="text-center">
<span t-esc="formatLang(line['perc'],digits=2)"/> %
</td>
</tr>
<tr t-foreach="funct_total(data['form'])" t-as="tot">
<td>
<strong>Total:</strong>
</td>
<td class="text-right">
<strong t-esc="formatLang(tot['tot_theo'], dp='Account', currency_obj=res_company.currency_id)"/>
</td>
<td class="text-right">
<strong t-esc="formatLang(tot['tot_pln'], dp='Account', currency_obj=res_company.currency_id)"/>
</td>
<td class="text-right">
<strong t-esc="formatLang(tot['tot_prac'], dp='Account', currency_obj=res_company.currency_id)"/>
</td>
<td class="text-center">
<strong t-esc="formatLang(tot['tot_perc'], digits=2)"/> %
</td>
</tr>
</tbody>
</table>
</div>
</t>
</t>
</t>
</template>
<report
id="action_report_cross_over_budget"
model="crossovered.budget"
string="Budgets"
report_type="qweb-pdf"
name="account_budget_report.report_cross_over_budget"
file="account_budget_report.report_cross_over_budget"
menu="False"
/>
</odoo>

BIN
account_budget_report/static/description/analytic_budget.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

BIN
account_budget_report/static/description/analytic_budget_report.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
account_budget_report/static/description/banner.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

BIN
account_budget_report/static/description/budget_adviser.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

BIN
account_budget_report/static/description/budgetry_position.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
account_budget_report/static/description/budgetry_position_report.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
account_budget_report/static/description/cybro_logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
account_budget_report/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

145
account_budget_report/static/description/index.html

@ -0,0 +1,145 @@
<section class="oe_container">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan">Account Budget Report</h2>
<h3 class="oe_slogan">Helps You To Analyse Budget Summary</h3>
<h4 class="oe_slogan"><a href="https://www.cybrosys.com">Cybrosys Technologies</a> </h4>
</div>
<div class="oe_row oe_spaced" style="padding-left:65px;">
<h4>Features:</h4>
<div>
<span style="color:green;"> &#9745; </span> Option to print budget summary from budgets<br/>
<span style="color:green;"> &#9745; </span> Option to print budgets from budgets<br/>
<span style="color:green;"> &#9745; </span> Option to print budgets from analytic accounts<br/>
<span style="color:green;"> &#9745; </span> Option to print budgets from budgetary positions<br/>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<div class="oe_picture">
<h3 class="oe_slogan">Overview</h3>
<p class="oe_mt32" style="text-align: center;">
In odoo we can manage different budgets for every accounts. But currently there is no any option to take
budget report. So here we are providing budget analysis through different pdf reports. So we can take
quick budget analysis.
</p>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<div style="text-align: center">
<p>
<h4>Budget Summary</h4>
<p>
</div>
<div style="text-align: center">
<div class="oe_demo oe_picture oe_screenshot">
<img style="border:10px solid white;height: 400px;" src="budget_adviser.png">
</div>
<span>Go to Account -> Adviser -> Budgets. Then select one or more budgets. Then click on 'Print'
menu and choose 'Print Summary'.</span>
<div class="oe_demo oe_picture oe_screenshot">
<img style="border:10px solid white;height: 400px;" src="wizard.png">
</div>
<span>You can choose start date and end date then click on 'Print' button.</span>
<div class="oe_demo oe_picture oe_screenshot">
<img style="border:10px solid white;height: 400px;" src="summary_report.png">
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<div style="text-align: center">
<p>
<h4>Budgets</h4>
<p>
</div>
<div style="text-align: center">
<span>Go to Account -> Adviser -> Budgets. Then select one or more budgets. Then click on 'Print'
menu and choose 'Print Budgets'.</span>
<div class="oe_demo oe_picture oe_screenshot">
<img style="border:10px solid white;height: 400px;" src="wizard1.png">
</div>
<span>You can choose start date and end date then click on 'Print' button.</span>
<div class="oe_demo oe_picture oe_screenshot">
<img style="border:10px solid white;height: 400px;" src="report2.png">
</div>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<div style="text-align: center">
<p>
<h4>Analytic Accounts</h4>
<p>
</div>
<div style="text-align: center">
<span>Go to Account -> Adviser -> Analytic Accounts. Then select one analytic accounts. Then click on 'Print'
menu and choose 'Print Budgets'.</span>
<div class="oe_demo oe_picture oe_screenshot">
<img style="border:10px solid white;height: 400px;" src="analytic_budget.png">
</div>
<span>You can choose start date and end date then click on 'Print' button.</span>
<div class="oe_demo oe_picture oe_screenshot">
<img style="border:10px solid white;height: 400px;" src="analytic_budget_report.png">
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<div style="text-align: center">
<p>
<h4>Budgetary Positions</h4>
<p>
</div>
<div style="text-align: center">
<span>Go to Account -> Configuration -> Management -> Budgetary Positions. Then select one budgetary position.
Then click on 'Print' menu and choose 'Budgets'.</span>
<div class="oe_demo oe_picture oe_screenshot">
<img style="border:10px solid white;height: 400px;" src="budgetry_position.png">
</div>
<span>You can choose start date and end date then click on 'Print' button.</span>
<div class="oe_demo oe_picture oe_screenshot">
<img style="border:10px solid white;height: 400px;" src="budgetry_position_report.png">
</div>
</div>
</div>
</section>
<section class="oe_container">
<h2 class="oe_slogan" style="margin-top:20px;" >Need Any Help?</h2>
<div class="oe_slogan" style="margin-top:10px !important;">
<div>
<a class="btn btn-primary btn-lg mt8"
style="color: #FFFFFF !important;border-radius: 0;" href="https://www.cybrosys.com"><i
class="fa fa-envelope"></i> Email </a> <a
class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;"
href="https://www.cybrosys.com/contact/"><i
class="fa fa-phone"></i> Contact Us </a> <a
class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;"
href="https://www.cybrosys.com/odoo-customization-and-installation/"><i
class="fa fa-check-square"></i> Request Customization </a>
</div>
<br>
<img src="cybro_logo.png" style="width: 190px; margin-bottom: 20px;" class="center-block">
<div>
<a href="https://twitter.com/cybrosys" target="_blank"><i class="fa fa-2x fa-twitter" style="color:white;background: #00a0d1;width:35px;"></i></a></td>
<a href="https://www.linkedin.com/company/cybrosys-technologies-pvt-ltd" target="_blank"><i class="fa fa-2x fa-linkedin" style="color:white;background: #31a3d6;width:35px;padding-left: 3px;"></i></a></td>
<a href="https://www.facebook.com/cybrosystechnologies" target="_blank"><i class="fa fa-2x fa-facebook" style="color:white;background: #3b5998;width:35px;padding-left: 8px;"></i></a></td>
<a href="https://plus.google.com/106641282743045431892/about" target="_blank"><i class="fa fa-2x fa-google-plus" style="color:white;background: #c53c2c;width:35px;padding-left: 3px;"></i></a></td>
<a href="https://in.pinterest.com/cybrosys" target="_blank"><i class="fa fa-2x fa-pinterest" style="color:white;background: #ac0f18;width:35px;padding-left: 3px;"></i></a></td>
</div>
</div>
</section>

BIN
account_budget_report/static/description/report2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
account_budget_report/static/description/summary_report.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
account_budget_report/static/description/wizard.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
account_budget_report/static/description/wizard1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

38
account_budget_report/views/analytic_budget_report_view.xml

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<record id="account_budget_analytic_view" model="ir.ui.view">
<field name="name">account.budget.analytic.form</field>
<field name="model">account.budget.analytic</field>
<field name="arch" type="xml">
<form string="Select Dates Period">
<group string="This wizard is used to print budget" col="4">
<field name="date_from"/>
<field name="date_to"/>
</group>
<footer>
<button name="check_report" string="Print" type="object" default_focus="1" class="btn-primary"/>
<button string="Cancel" class="btn-default" special="cancel"/>
</footer>
</form>
</field>
</record>
<record id="action_account_budget_analytic" model="ir.actions.act_window">
<field name="name">Print Budgets</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">account.budget.analytic</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="view_id" ref="account_budget_analytic_view"/>
<field name="target">new</field>
</record>
<record model="ir.values" id="account_budget_analytic_values">
<field name="model_id" ref="analytic.model_account_analytic_account" />
<field name="name">Print Budgets</field>
<field name="key2">client_print_multi</field>
<field name="value" eval="'ir.actions.act_window,' + str(ref('action_account_budget_analytic'))" />
<field name="key">action</field>
<field name="model">account.analytic.account</field>
</record>
</odoo>

37
account_budget_report/views/budget_print_view.xml

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<record id="account_budget_cross_over_report_view" model="ir.ui.view">
<field name="name">account.budget.cross.over.report.form</field>
<field name="model">account.budget.cross.over.report</field>
<field name="arch" type="xml">
<form string="Select Dates Period">
<group string="This wizard is used to print budget" col="4">
<field name="date_from"/>
<field name="date_to"/>
</group>
<footer>
<button name="check_report" string="Print" type="object" default_focus="1" class="btn-primary"/>
<button string="Cancel" class="btn-default" special="cancel"/>
</footer>
</form>
</field>
</record>
<record id="action_account_budget_cross_over_report" model="ir.actions.act_window">
<field name="name">Print Budgets</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">account.budget.cross.over.report</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="view_id" ref="account_budget_cross_over_report_view"/>
<field name="target">new</field>
</record>
<record model="ir.values" id="account_budget_cross_over_report_values">
<field name="model_id" ref="account_budget.model_crossovered_budget" />
<field name="name">Print Budgets</field>
<field name="key2">client_print_multi</field>
<field name="value" eval="'ir.actions.act_window,' + str(ref('action_account_budget_cross_over_report'))" />
<field name="key">action</field>
<field name="model">crossovered.budget</field>
</record>
</odoo>

39
account_budget_report/views/budget_report_view.xml

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<record id="account_budget_report_view" model="ir.ui.view">
<field name="name">account.budget.report.form</field>
<field name="model">account.budget.report</field>
<field name="arch" type="xml">
<form string="Select Dates Period">
<group string="This wizard is used to print budget" col="4">
<field name="date_from"/>
<field name="date_to"/>
</group>
<footer>
<button name="check_report" string="Print" type="object" default_focus="1" class="oe_highlight"/>
or
<button string="Cancel" class="oe_link" special="cancel"/>
</footer>
</form>
</field>
</record>
<record id="action_account_budget_report" model="ir.actions.act_window">
<field name="name">Budgets</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">account.budget.report</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="view_id" ref="account_budget_report_view"/>
<field name="target">new</field>
</record>
<record model="ir.values" id="account_budget_report_values">
<field name="model_id" ref="account_budget.model_account_budget_post" />
<field name="name">Budgets</field>
<field name="key2">client_print_multi</field>
<field name="value" eval="'ir.actions.act_window,' + str(ref('action_account_budget_report'))" />
<field name="key">action</field>
<field name="model">account.budget.post</field>
</record>
</odoo>

38
account_budget_report/views/budget_summary_view.xml

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<record id="account_budget_cross_over_summary_report_view" model="ir.ui.view">
<field name="name">account.budget.cross.over.summary.report.form</field>
<field name="model">account.budget.cross.over.summary.report</field>
<field name="arch" type="xml">
<form string="Select Dates Period">
<group string="This wizard is used to print summary of budgets">
<field name="date_from"/>
<field name="date_to"/>
</group>
<footer>
<button name="check_report" string="Print" type="object" default_focus="1" class="btn-primary"/>
<button string="Cancel" class="btn-default" special="cancel"/>
</footer>
</form>
</field>
</record>
<record id="action_account_budget_cross_over_summary_report" model="ir.actions.act_window">
<field name="name">Print Summary</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">account.budget.cross.over.summary.report</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="view_id" ref="account_budget_cross_over_summary_report_view"/>
<field name="target">new</field>
</record>
<record model="ir.values" id="account_budget_cross_over_summary_report_values">
<field name="model_id" ref="account_budget.model_crossovered_budget" />
<field name="name">Print Summary</field>
<field name="key2">client_print_multi</field>
<field name="value" eval="'ir.actions.act_window,' + str(ref('action_account_budget_cross_over_summary_report'))" />
<field name="key">action</field>
<field name="model">crossovered.budget</field>
</record>
</odoo>
Loading…
Cancel
Save