@ -0,0 +1,46 @@ |
|||||
|
Project Status Report v10 |
||||
|
======================== |
||||
|
|
||||
|
This module helps to analyse project from various aspects. The excel report will |
||||
|
contain complete project status report with budget, |
||||
|
task analysis, gantt chart and project breakdown charter. |
||||
|
|
||||
|
Features |
||||
|
======== |
||||
|
|
||||
|
* Graphical analysis of overall task. |
||||
|
* Comparison of actual and planned time for the project. |
||||
|
* Comparison of actual and planned budget amount. |
||||
|
* Gantt chart view of task. |
||||
|
|
||||
|
Installation |
||||
|
============ |
||||
|
To install this module, the libraries called python-xlsxwriter and base64 need to be installed in the system. |
||||
|
You need also the **report_xlsx** |
||||
|
module located in: https://github.com/OCA/reporting-engine/ |
||||
|
|
||||
|
Configuration |
||||
|
============= |
||||
|
To configure timesheet for task, |
||||
|
Go to Project --> Configuration --> Settings --> Project Management --> Time on Tasks --> Select Manage time estimation on tasks |
||||
|
|
||||
|
To print project status report, |
||||
|
* Select any project |
||||
|
* Go to print action menu and select project status report. |
||||
|
* specify the date range |
||||
|
* Click on Generate button and download the file |
||||
|
|
||||
|
|
||||
|
Credits |
||||
|
======= |
||||
|
* Cybrosys Techno Solutions <https://www.cybrosys.com> |
||||
|
|
||||
|
|
||||
|
Authors |
||||
|
======= |
||||
|
|
||||
|
* Developer V9: Mufeeda C K @ cybrosys |
||||
|
* Guidance: Nilmar Shereef @ cybrosys, shereef@cybrosys.in |
||||
|
* Developer v10: Vinaya S B @ cybrosys, odoo@cybrosys.com |
||||
|
|
||||
|
|
@ -0,0 +1,22 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
import models |
@ -0,0 +1,44 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
{ |
||||
|
'name': "Project Status Report", |
||||
|
'summary': """ |
||||
|
Detailed Project Analysis with XLS Diagrams""", |
||||
|
'description': """ |
||||
|
Graphical information of Project from various aspects. Project Task list, Comparison of planned and |
||||
|
actual budget and time duration for the project. |
||||
|
""", |
||||
|
'author': "Cybrosys Techno Solutions", |
||||
|
'company': "Cybrosys Techno Solutions", |
||||
|
'website': "http://www.cybrosys.com", |
||||
|
'category': 'Project', |
||||
|
'version': '10.0.1.0.0', |
||||
|
'depends': ['base', 'project', 'report_xlsx', 'hr_timesheet', 'analytic'], |
||||
|
'data': [ |
||||
|
'views/status_wizard_view.xml', |
||||
|
'views/report.xml' |
||||
|
], |
||||
|
'license': 'AGPL-3', |
||||
|
'images': ['static/description/banner.jpg'], |
||||
|
'installable': True, |
||||
|
'auto_install': False, |
||||
|
} |
@ -0,0 +1,6 @@ |
|||||
|
## Module <project_status_level_report> |
||||
|
|
||||
|
#### 21.08.2019 |
||||
|
#### Version 10.0.1.0.0 |
||||
|
##### ADD |
||||
|
- Initial commit for Project Status Report |
@ -0,0 +1,23 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
import status_report_wizard |
||||
|
import status_report_xls |
@ -0,0 +1,53 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
from odoo import models, fields, api |
||||
|
from odoo.exceptions import except_orm |
||||
|
|
||||
|
|
||||
|
class ProjectExtended(models.Model): |
||||
|
_inherit = 'project.project' |
||||
|
|
||||
|
planned_amount = fields.Float('Initially Planned Amount', help='Estimated cost to do the task.') |
||||
|
|
||||
|
|
||||
|
class StatusReportWizard(models.Model): |
||||
|
_name = 'project.status_report' |
||||
|
|
||||
|
date_from = fields.Datetime('Start Date') |
||||
|
date_to = fields.Datetime('End Date') |
||||
|
|
||||
|
@api.multi |
||||
|
def print_report_xls(self): |
||||
|
context = self._context |
||||
|
datas = {'ids': context.get('active_ids', [])} |
||||
|
datas['model'] = 'project.project' |
||||
|
datas['form'] = self.read()[0] |
||||
|
for field in datas['form'].keys(): |
||||
|
if isinstance(datas['form'][field], tuple): |
||||
|
datas['form'][field] = datas['form'][field][0] |
||||
|
if len(datas['ids']) > 1: |
||||
|
raise except_orm('Warning', 'Selection of multiple record is not allowed') |
||||
|
else: |
||||
|
return {'type': 'ir.actions.report.xml', |
||||
|
'report_name': 'project_status_level_report', |
||||
|
'datas': datas, |
||||
|
} |
@ -0,0 +1,326 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
from odoo import fields |
||||
|
import datetime |
||||
|
from odoo.exceptions import except_orm |
||||
|
from dateutil.relativedelta import relativedelta |
||||
|
try: |
||||
|
from openerp.addons.report_xlsx.report.report_xlsx import ReportXlsx |
||||
|
except ImportError: |
||||
|
class ReportXlsx(object): |
||||
|
def __init__(self, *args, **kwargs): |
||||
|
pass |
||||
|
|
||||
|
|
||||
|
class ProjectReportXlsx(ReportXlsx): |
||||
|
|
||||
|
def generate_xlsx_report(self, workbook, data, objects): |
||||
|
sheet1 = "Project plan" |
||||
|
sheet2 = "Notes" |
||||
|
worksheet1 = workbook.add_worksheet(sheet1) |
||||
|
worksheet2 = workbook.add_worksheet(sheet2) |
||||
|
format_main_header = workbook.add_format({'font_size': 14, 'bg_color': 'silver', 'bold': 1, 'border': 1, |
||||
|
'align': 'center', 'valign': 'vcenter'}) |
||||
|
format_header = workbook.add_format({'bold': 1, 'border': 1, 'align': 'center', |
||||
|
'valign': 'vcenter', 'bg_color': 'silver'}) |
||||
|
header = workbook.add_format({'bold': 1, 'border': 1, 'align': 'center', |
||||
|
'valign': 'vcenter', 'bg_color': 'silver'}) |
||||
|
left_header = workbook.add_format({'bold': 1, 'border': 1, 'align': 'center', |
||||
|
'valign': 'vcenter'}) |
||||
|
format_cell = workbook.add_format({'border': 1, 'align': 'center'}) |
||||
|
|
||||
|
# ---------------------Project details-------------------------- # |
||||
|
|
||||
|
date_from = data['form']['date_from'] |
||||
|
date_to = data['form']['date_to'] |
||||
|
tasks = self.env['project.task'].search([]) |
||||
|
if date_from and not date_to: |
||||
|
task = tasks.search([('date_start', '>=', date_from), ('project_id', '=', objects.name)]) |
||||
|
elif date_to and not date_from: |
||||
|
task = tasks.search([('date_start', '<=', date_to), ('project_id', '=', objects.name)]) |
||||
|
elif date_from and date_to: |
||||
|
task = tasks.search([('date_start', '<=', date_to), ('date_start', '>=', date_from), |
||||
|
('project_id', '=', objects.name)]) |
||||
|
else: |
||||
|
task = tasks.search([('project_id', '=', objects.name)]) |
||||
|
|
||||
|
report_date = datetime.datetime.now().strftime("%m/%d/%Y") |
||||
|
completed = effective_hours = planned_hours = 0 |
||||
|
for data in task: |
||||
|
if data.effective_hours: |
||||
|
effective_hours += data.effective_hours |
||||
|
if data.planned_hours: |
||||
|
planned_hours += data.planned_hours |
||||
|
if planned_hours != 0: |
||||
|
completed = str(int((effective_hours * 100) / planned_hours)) |
||||
|
row = col = 0 |
||||
|
worksheet1.merge_range(row, col, row + 1, col + 25, "Project Plan", format_main_header) |
||||
|
row += 4 |
||||
|
worksheet1.merge_range(row, col, row, col + 6, self.env.user.company_id.name, left_header) |
||||
|
row += 2 |
||||
|
worksheet1.merge_range(row, col, row, col + 2, "Project Name", left_header) |
||||
|
col += 3 |
||||
|
worksheet1.merge_range(row, col, row, col + 3, objects.name, format_cell) |
||||
|
col = 0 |
||||
|
row += 1 |
||||
|
worksheet1.merge_range(row, col, row, col + 2, "Report Date", left_header) |
||||
|
col += 3 |
||||
|
worksheet1.merge_range(row, col, row, col + 3, report_date, format_cell) |
||||
|
col = 0 |
||||
|
row += 1 |
||||
|
worksheet1.merge_range(row, col, row, col + 2, "Completed", left_header) |
||||
|
col += 3 |
||||
|
worksheet1.merge_range(row, col, row, col + 3, str(completed) + " %", format_cell) |
||||
|
row += 1 |
||||
|
|
||||
|
if task: |
||||
|
|
||||
|
# ---------------------Pie chart for overall task status-------------------------- # |
||||
|
stage_obj = self.env['project.task.type'].search([]) |
||||
|
stages_all = {} |
||||
|
for obj in stage_obj: |
||||
|
stages_all[obj.name] = 0 |
||||
|
for data in task: |
||||
|
stages_all[data.stage_id.name] += 1 |
||||
|
stages = stages_all.keys() |
||||
|
count = stages_all.values() |
||||
|
percentage = [] |
||||
|
total = sum(count) |
||||
|
for item in range(len(count)): |
||||
|
percentage.append((float(count[item]) / total) * 100) |
||||
|
row = 0 |
||||
|
col = 0 |
||||
|
worksheet2.merge_range(row, col, row + 1, col + 3, "Percentage of Task complete", header) |
||||
|
row += 2 |
||||
|
for item in range(len(stages)): |
||||
|
worksheet2.merge_range(row, col, row, col + 1, stages[item], format_cell) |
||||
|
col += 2 |
||||
|
worksheet2.merge_range(row, col, row, col + 1, int(percentage[item]), format_cell) |
||||
|
col = 0 |
||||
|
row += 1 |
||||
|
chart_pie = workbook.add_chart({'type': 'pie'}) |
||||
|
chart_pie.add_series({ |
||||
|
'categories': '=' + sheet2 + '!$A$3:$A$10', |
||||
|
'values': '=' + sheet2 + '!$C$3:$C$10', |
||||
|
'points': [], |
||||
|
}) |
||||
|
chart_pie.set_title({'name': 'Overall Task Status'}) |
||||
|
worksheet1.insert_chart('A13', chart_pie) |
||||
|
|
||||
|
# # ---------------------Bar chart for Time duration-------------------------- # |
||||
|
chart_bar_t = workbook.add_chart({'type': 'bar'}) |
||||
|
actual_time = planned_time = 0 |
||||
|
for data in task: |
||||
|
if data.planned_hours: |
||||
|
planned_time += data.planned_hours |
||||
|
actual_time += data.effective_hours |
||||
|
data_bar_t = [ |
||||
|
['Planned time', 'Actual time'], |
||||
|
[planned_time, actual_time], |
||||
|
] |
||||
|
col = 6 |
||||
|
row = 0 |
||||
|
worksheet2.merge_range(row, col, row + 1, col + 3, "Time Duration(Hours)", header) |
||||
|
row += 2 |
||||
|
for item in range(2): |
||||
|
worksheet2.merge_range(row, col, row, col + 1, data_bar_t[0][item], format_cell) |
||||
|
col += 2 |
||||
|
worksheet2.merge_range(row, col, row, col + 1, data_bar_t[1][item], format_cell) |
||||
|
col = 6 |
||||
|
row += 1 |
||||
|
chart_bar_t.add_series({'name': 'Time', |
||||
|
'categories': '=' + sheet2 + '!$G$3:$G$4', |
||||
|
'values': '=' + sheet2 + '!$I$3:$I$4', |
||||
|
}) |
||||
|
chart_bar_t.set_title({'name': 'Time Duration'}) |
||||
|
worksheet1.insert_chart('I13', chart_bar_t) |
||||
|
|
||||
|
# # ---------------------Bar chart for Budget-------------------------- # |
||||
|
chart_bar_b = workbook.add_chart({'type': 'bar'}) |
||||
|
actual_amount = planned_amount = 0 |
||||
|
if objects.planned_amount: |
||||
|
planned_amount = objects.planned_amount |
||||
|
account_obj = self.env['account.analytic.line'].search([]) |
||||
|
for acc in account_obj: |
||||
|
if acc.account_id == objects.analytic_account_id: |
||||
|
actual_amount += acc.amount |
||||
|
data_bar_b = [ |
||||
|
['Planned', 'Actual'], |
||||
|
[planned_amount, abs(actual_amount)], |
||||
|
] |
||||
|
col = 6 |
||||
|
row = 6 |
||||
|
worksheet2.merge_range(row, col, row + 1, col + 3, "Budget", header) |
||||
|
row += 2 |
||||
|
for item in range(2): |
||||
|
worksheet2.merge_range(row, col, row, col + 1, data_bar_b[0][item], format_cell) |
||||
|
col += 2 |
||||
|
worksheet2.merge_range(row, col, row, col + 1, data_bar_b[1][item], format_cell) |
||||
|
col = 6 |
||||
|
row += 1 |
||||
|
chart_bar_b.add_series({'name': 'Amount', |
||||
|
'categories': '=' + sheet2 + '!$G$9:$G$10', |
||||
|
'values': '=' + sheet2 + '!$I$9:$I$10', |
||||
|
}) |
||||
|
chart_bar_b.set_title({'name': 'Budget'}) |
||||
|
worksheet1.insert_chart('Q13', chart_bar_b) |
||||
|
|
||||
|
# # ---------------------Task description table 1 -------------------------- # |
||||
|
row = 31 |
||||
|
col = 0 |
||||
|
worksheet1.merge_range(row, col, row, col + 3, "Task", format_header) |
||||
|
col += 4 |
||||
|
worksheet1.merge_range(row, col, row, col + 1, "Assigned to", format_header) |
||||
|
col += 2 |
||||
|
worksheet1.write(row, col, "Priority", format_header) |
||||
|
col += 1 |
||||
|
worksheet1.merge_range(row, col, row, col + 1, "Status", format_header) |
||||
|
col += 2 |
||||
|
row += 1 |
||||
|
for data in task: |
||||
|
assigned_to = "-" |
||||
|
if data.user_id.name: |
||||
|
assigned_to = data.user_id.name |
||||
|
col = 0 |
||||
|
worksheet1.merge_range(row, col, row, col + 3, data.name, format_cell) |
||||
|
col += 4 |
||||
|
worksheet1.merge_range(row, col, row, col + 1, assigned_to, format_cell) |
||||
|
col += 2 |
||||
|
priority = "" |
||||
|
for i in range(int(data.priority)): |
||||
|
priority += "*" |
||||
|
worksheet1.write(row, col, priority, format_cell) |
||||
|
col += 1 |
||||
|
worksheet1.merge_range(row, col, row, col + 1, data.stage_id.name, format_cell) |
||||
|
row += 1 |
||||
|
|
||||
|
# ---------------------Task description table 2 -------------------------- # |
||||
|
row = 14 |
||||
|
col = 0 |
||||
|
worksheet2.merge_range(row, col, row, col + 3, "Task", format_header) |
||||
|
col += 4 |
||||
|
worksheet2.merge_range(row, col, row, col + 1, "Assigned to", format_header) |
||||
|
col += 2 |
||||
|
worksheet2.merge_range(row, col, row, col + 1, "Start", format_header) |
||||
|
col += 2 |
||||
|
worksheet2.merge_range(row, col, row, col + 1, "End", format_header) |
||||
|
col += 2 |
||||
|
worksheet2.write(row, col, "Days", format_header) |
||||
|
col += 1 |
||||
|
worksheet2.merge_range(row, col, row, col + 1, "Status", format_header) |
||||
|
row += 1 |
||||
|
col = 0 |
||||
|
for data in task: |
||||
|
start_date = fields.Datetime.from_string(data.date_start) |
||||
|
start_date1 = start_date.strftime("%m-%d-%Y") |
||||
|
if data.date_end and data.date_end > data.date_start: |
||||
|
end_date = fields.Datetime.from_string(data.date_end) |
||||
|
date_difference = relativedelta(end_date, start_date).days |
||||
|
end_date1 = end_date.strftime("%m-%d-%Y") |
||||
|
else: |
||||
|
date_difference = "-" |
||||
|
end_date1 = "-" |
||||
|
assigned_to = "-" |
||||
|
if data.user_id.name: |
||||
|
assigned_to = data.user_id.name |
||||
|
worksheet2.merge_range(row, col, row, col + 3, data.name, format_cell) |
||||
|
col += 4 |
||||
|
worksheet2.merge_range(row, col, row, col + 1, assigned_to, format_cell) |
||||
|
col += 2 |
||||
|
worksheet2.merge_range(row, col, row, col + 1, start_date1, format_cell) |
||||
|
col += 2 |
||||
|
worksheet2.merge_range(row, col, row, col + 1, end_date1, format_cell) |
||||
|
col += 2 |
||||
|
worksheet2.write(row, col, date_difference, format_cell) |
||||
|
col += 1 |
||||
|
worksheet2.merge_range(row, col, row, col + 1, data.stage_id.name, format_cell) |
||||
|
col = 0 |
||||
|
row += 1 |
||||
|
|
||||
|
# ---------------------Gantt chart view-------------------------- # |
||||
|
worksheet3 = workbook.add_worksheet() |
||||
|
if objects.date_start: |
||||
|
project_start = datetime.datetime.date(fields.Datetime.from_string(objects.date_start)) |
||||
|
else: |
||||
|
project_start = datetime.datetime.date(fields.Datetime.from_string(objects.create_date)) |
||||
|
start_list = [] |
||||
|
days_list = [] |
||||
|
task_list = [] |
||||
|
task_item = 0 |
||||
|
project_end = datetime.datetime.date(datetime.datetime.now()) |
||||
|
for data in task: |
||||
|
if data.date_deadline: |
||||
|
date_end_fmt = datetime.datetime.date(fields.Datetime.from_string(data.date_deadline)) |
||||
|
if date_end_fmt > project_end: |
||||
|
project_end = date_end_fmt |
||||
|
else: |
||||
|
project_end = project_end + datetime.timedelta(days=30) |
||||
|
task_item += 1 |
||||
|
start_date = fields.Datetime.from_string(data.date_start) |
||||
|
start_date1 = datetime.datetime.date(start_date) |
||||
|
if data.date_end and data.date_end > data.date_start: |
||||
|
end_date = fields.Datetime.from_string(data.date_end) |
||||
|
else: |
||||
|
end_date = datetime.datetime.today() |
||||
|
days = relativedelta(end_date, start_date).days |
||||
|
task_list.append(data.name) |
||||
|
start_list.append(start_date1) |
||||
|
days_list.append(days) |
||||
|
headings = ['Number', 'Start date', 'Days'] |
||||
|
data = [ |
||||
|
task_list, |
||||
|
start_list, |
||||
|
days_list, |
||||
|
] |
||||
|
worksheet3.write_row('A1', headings) |
||||
|
worksheet3.write_column('A2', data[0]) |
||||
|
worksheet3.write_column('B2', data[1]) |
||||
|
worksheet3.write_column('C2', data[2]) |
||||
|
chart2 = workbook.add_chart({'type': 'bar', 'subtype': 'stacked'}) |
||||
|
start = 2 |
||||
|
end = start + task_item - 1 |
||||
|
chart2.add_series({ |
||||
|
'name': '=Sheet3!$B$1', |
||||
|
'categories': '=Sheet3!$A$' + str(start) + ':$A$' + str(end), |
||||
|
'fill': {'none': True}, |
||||
|
'values': '=Sheet3!$B$' + str(start) + ':$B$' + str(end), |
||||
|
}) |
||||
|
chart2.add_series({ |
||||
|
'name': '=Sheet3!$C$1', |
||||
|
'categories': '=Sheet3!$A$' + str(start) + ':$A$' + str(end), |
||||
|
'fill': {'color': '#4E73B7'}, |
||||
|
'values': '=Sheet3!$C$' + str(start) + ':$C$' + str(end), |
||||
|
}) |
||||
|
chart2.set_title({'none': True}) |
||||
|
chart2.set_x_axis({'date_axis': True, 'min': project_start, 'max': project_end, |
||||
|
'minor_unit': 2, 'minor_unit_type': 'days', 'major_unit': 1, |
||||
|
'major_unit_type': 'days', 'num_format': 'dd/mm/yyyy'}) |
||||
|
chart2.set_y_axis({'none': True}) |
||||
|
chart2.set_legend({'none': True}) |
||||
|
worksheet1.insert_chart('K31', chart2, {'x_scale': 2, 'y_scale': 1}) |
||||
|
worksheet3.hide() |
||||
|
|
||||
|
else: |
||||
|
raise except_orm('Warning', 'No task to display') |
||||
|
|
||||
|
|
||||
|
ProjectReportXlsx('report.project_status_level_report', 'project.project') |
After Width: | Height: | Size: 41 KiB |
After Width: | Height: | Size: 86 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 67 KiB |
After Width: | Height: | Size: 51 KiB |
After Width: | Height: | Size: 70 KiB |
After Width: | Height: | Size: 61 KiB |
After Width: | Height: | Size: 84 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 237 KiB |
After Width: | Height: | Size: 188 KiB |
After Width: | Height: | Size: 427 KiB |
After Width: | Height: | Size: 338 KiB |
After Width: | Height: | Size: 202 KiB |
After Width: | Height: | Size: 125 KiB |
After Width: | Height: | Size: 139 KiB |
After Width: | Height: | Size: 327 KiB |
After Width: | Height: | Size: 84 KiB |
After Width: | Height: | Size: 67 KiB |
After Width: | Height: | Size: 119 KiB |
After Width: | Height: | Size: 90 KiB |
After Width: | Height: | Size: 62 KiB |
After Width: | Height: | Size: 108 KiB |
After Width: | Height: | Size: 70 KiB |
After Width: | Height: | Size: 122 KiB |
@ -0,0 +1,399 @@ |
|||||
|
|
||||
|
|
||||
|
<div class="row" style="margin: 0;position: relative;color: #000;background-position: center;background: #ffffff;border-bottom: 1px solid #e4e4e4;text-align: center; margin: auto; display: flex;justify-content: center;"> <a href="https://www.cybrosys.com/" target="_blank"><img src="images/cybrosys.png" style=" width: 293px; padding: 1rem 0rem; margin: auto" alt="cybrosys-logo"></a> </div> |
||||
|
|
||||
|
<div class="row" style="margin:75px 0;position: relative;color: #000;background-position: center;background: #ffffff;border-bottom: 1px solid #e4e4e4; padding-bottom: 30px;"> |
||||
|
<div class="col-md-7 col-sm-12 col-xs-12" style="padding: 0px"> |
||||
|
<div style=" margin: 0 0 0px;padding: 20px 0 10;font-size: 23px;line-height: 35px;font-weight: 400;color: #000;border-top: 1px solid rgba(255,255,255,0.1);border-bottom: 1px solid rgba(255,255,255,0.11);text-align: left;"> |
||||
|
<h1 style="font-size: 39px;font-weight: 600;margin: 0px !important;">Project Status Report</h1> |
||||
|
<h3 style="font-size: 21px;margin-top: 8px;position: relative;">Graphical representation of project from different aspects. |
||||
|
</h3> |
||||
|
</div> |
||||
|
<h2 style="font-weight: 600;font-size: 1.8rem;margin-top: 15px;">Key Highlights</h2> |
||||
|
<ul style=" padding: 0 1px; list-style: none; "> |
||||
|
<li style="display: flex;align-items: center;padding: 8px 0;font-size: 18px;"><img src="images/checked.png" style=" width: 22px; margin-right: 6px; " alt="check">Project status report for Odoo10 community edition.</li> |
||||
|
<li style="display: flex;align-items: center;padding: 8px 0;font-size: 18px;"><img src="images/checked.png" style=" width: 22px; margin-right: 6px; " alt="check">Project Analysis </li> |
||||
|
<li style="display: flex;align-items: center;padding: 8px 0;font-size: 18px;"><img src="images/checked.png" style=" width: 22px; margin-right: 6px; " alt="check">Various graphical representations.</li> |
||||
|
</ul> |
||||
|
|
||||
|
</div> |
||||
|
<div class="col-md-5 col-sm-12 col-xs-12"> <img src="images/pos_book_order.gif" class="img-responsive" alt=""> </div> |
||||
|
</div> |
||||
|
<div> |
||||
|
|
||||
|
<section class="oe_container" style="padding: 1rem 0rem 1rem; background-color: #ffffff !important;"> |
||||
|
<div class="row py-4 px-3"> |
||||
|
<div class="w-100" style="padding-top:30px;padding-bottom:45px;border-radius: 10px;"> |
||||
|
<ul role="tablist" class="nav nav-pills justify-content-center" data-tabs="tabs" id="pills-tab" style="border: none;background: unset;"> |
||||
|
|
||||
|
<li class="nav-item mr-1 mb-3" style="font-size: 1.05rem;font-weight: 400;transition: all .15s ease;color: #d31c22;background-color: #d31c22;box-shadow: 0 4px 6px rgba(50,50,93,.11), 0 1px 3px rgba(0,0,0,.08);border: 0;font-family: 'Open Sans',sans-serif;width: 140px;border-radius: 0.30rem;"> <a id="pills-home-tab" data-toggle="pill" href="#pills-home" role="tab" aria-controls="pills-home" aria-selected="true" class="nav-link active show" style="color: #000000;line-height: 33px;border: 0;border-radius: .25rem;font-weight: 400;text-align: center; |
||||
|
color: #fff;">Overview </a> </li> |
||||
|
<li class="nav-item mr-1 mb-3" style="font-size: 1.05rem;font-weight: 400;transition: all .15s ease;color: #d31c22;background-color: #d31c22;box-shadow: 0 4px 6px rgba(50,50,93,.11), 0 1px 3px rgba(0,0,0,.08);border: 0;font-family: 'Open Sans',sans-serif;width: 140px;border-radius: 0.30rem;"> <a id="pills-home-tab" data-toggle="pill" href="#pills-home1" role="tab" aria-controls="pills-home" aria-selected="true" class="nav-link " style="color: #000000;line-height: 33px;border: 0;border-radius: .25rem;font-weight: 400; text-align: center; |
||||
|
color: #fff;" >Features </a> </li> |
||||
|
|
||||
|
<li class="nav-item mr-1 mb-3" style="font-size: 1.05rem;font-weight: 400;transition: all .15s ease;color: #ffffff;background-color: #d31c22;box-shadow: 0 4px 6px rgba(50,50,93,.11), 0 1px 3px rgba(0,0,0,.08);border: 0;font-family: 'Open Sans',sans-serif;width: 140px;border-radius: 0.30rem;"> <a class="nav-link" id="pills-profile-tab" data-toggle="pill" href="#pills-profile" role="tab" aria-controls="pills-profile" aria-selected="false" style="color: #000000;line-height: 33px;border: 0;border-radius: .25rem;font-weight: 400; text-align: center; |
||||
|
color: #fff;">Screenshots </a> </li> |
||||
|
|
||||
|
<li class="nav-item mr-1 mb-3" style="font-size: 1.05rem;font-weight: 400;transition: all .15s ease;color: #ffffff;background-color: #d31c22;box-shadow: 0 4px 6px rgba(50,50,93,.11), 0 1px 3px rgba(0,0,0,.08);border: 0;font-family: 'Open Sans',sans-serif;width: 140px;border-radius: 0.30rem;"> <a class="nav-link" id="pills-profile-tab" data-toggle="pill" href="#pills-video" role="tab" aria-controls="pills-profile" aria-selected="false" style="color: #000000;line-height: 33px;border: 0;border-radius: .25rem;font-weight: 400; text-align: center; |
||||
|
color: #fff;">Video </a> </li> |
||||
|
|
||||
|
</ul> |
||||
|
|
||||
|
|
||||
|
<div class="tab-content" id="pills-tabContent" |
||||
|
style="padding-top: 30px; padding-bottom: 30px; padding: 30px;"> |
||||
|
<div class="px-3 pt-1 tab-pane fade active show" id="pills-home" role="tabpanel" aria-labelledby=" |
||||
|
pills-home-tab"> |
||||
|
<!-- Overview--> |
||||
|
<h2 style="font-weight: 600;text-align: center;width: 100%;">Overview</h2> |
||||
|
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;"> |
||||
|
<h3 class="oe_slogan" style="text-align: center;font-size: 19px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 31px;font-weight: 400;letter-spacing: .5px;margin-bottom: 21px;"> |
||||
|
Get more refined control of projects via analyzing them from different aspects. Project status report application helps the business to get a detailed visual of project status from various dimensions.Business organizations can make use of the application to plan,track and collaborate their task. |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
<div class="px-3 pt-1 tab-pane fade " id="pills-home1" role="tabpanel" aria-labelledby=" |
||||
|
pills-home-tab"> |
||||
|
<!-- feature tab--> |
||||
|
<h2 style="font-weight: 600;text-align: center;width: 100%;">Project Status Report</h2> |
||||
|
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;"> |
||||
|
<ul> |
||||
|
|
||||
|
<li class="mb8" style="font-family: Roboto;color: #000;list-style-type: square;font-size: 19px;line-height: 50px; background-color: #3a34380d;padding-left: 20px;border-radius: 7px;list-style: none;"> |
||||
|
<img src="images/checked.png" style=" width: 22px; margin-right: 6px; " alt="check">Helps to analyse project from various aspects.</li> |
||||
|
|
||||
|
<li class="mb8" style="font-family: Roboto;color: #000;list-style-type: square;font-size: 19px;line-height: 50px; background-color: #3a34380d;padding-left: 20px;border-radius: 7px;list-style: none;"> |
||||
|
<img src="images/checked.png" style=" width: 22px; margin-right: 6px; " alt="check">Complete project status report in XLS with budget analysis.</li> |
||||
|
|
||||
|
<li class="mb8" style="font-family: Roboto;color: #000;list-style-type: square;font-size: 19px;line-height: 50px; background-color: #3a34380d;padding-left: 20px;border-radius: 7px;list-style: none;"> |
||||
|
<img src="images/checked.png" style=" width: 22px; margin-right: 6px; " alt="check">Tasks, Gantt chart XLS Analysis.</li> |
||||
|
|
||||
|
<li class="mb8" style="font-family: Roboto;color: #000;list-style-type: square;font-size: 19px;line-height: 50px; background-color: #3a34380d;padding-left: 20px;border-radius: 7px;list-style: none;"> |
||||
|
<img src="images/checked.png" style=" width: 22px; margin-right: 6px; " alt="check">Project Breakdown Charter Analysis. </li> |
||||
|
</ul> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
<!-- Screenshot tab--> |
||||
|
<div class="px-3 tab-pane fade" id="pills-profile" role="tabpanel" aria-labelledby="pills-profile-tab" > |
||||
|
|
||||
|
<div class="tab-pane"> |
||||
|
<h2 style="font-weight: 600;text-align: center;width: 100%;">Screenshots</h2> |
||||
|
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;"> |
||||
|
<div> |
||||
|
<section class="oe_container"> |
||||
|
|
||||
|
<div id="demo" class="row carousel slide mb32" data-ride="carousel"> |
||||
|
<div class="carousel-inner"> |
||||
|
<div class="carousel-item active" style="min-height: 0px;"> |
||||
|
<div class="col-xs-12 col-sm-12 col-md-12 mb16 mt16" style="float: left;"> |
||||
|
<h3 class="alert" style="font-weight:400;color: #091E42;background: #fff;text-align: left;border-radius: 0; font-size: 18px;"> <img src="images/checked.png" style=" width: 22px; margin-right: 6px; " alt="check"> Menu View </h3> |
||||
|
|
||||
|
<div style=""> <img class="img img-responsive center-block" style="border-top-left-radius: 10px;border-top-right-radius: 10px;" src="images/project-satus-level-cybrosys-1.png"> </div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="carousel-item" style="min-height: 0px;"> |
||||
|
<div class="col-xs-12 col-sm-12 col-md-12 mb16 mt16" style="float: left;"> |
||||
|
<h3 class="alert" style="font-weight:400;color: #091E42;background: #fff;text-align: left;border-radius: 0; font-size: 18px;"> <img src="images/checked.png" style=" width: 22px; margin-right: 6px; " alt="check"> Wizard View </h3> |
||||
|
|
||||
|
<div style=""> <img class="img img-responsive center-block" style="border-top-left-radius: 10px;border-top-right-radius: 10px;" src="images/project-satus-level-cybrosys-2.png"> </div> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
<div class="carousel-item" style="min-height: 0px;"> |
||||
|
<div class="col-xs-12 col-sm-12 col-md-12 mb16 mt16" style="float: left;"> |
||||
|
<h3 class="mb32 alert" style="font-weight:400;color: #091E42;background: #fff;text-align: left;border-radius: 0; font-size: 18px; "> <img src="images/checked.png" style=" width: 22px; margin-right: 6px; " alt="check"> Project Graphical Overview </h3> |
||||
|
|
||||
|
<div style=""> <img class="img img-responsive center-block" style="border-top-left-radius: 10px;border-top-right-radius: 10px;" src="images/project-satus-level-cybrosys-3.png"> </div> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
<div class="carousel-item" style="min-height: 0px;"> |
||||
|
<div class="col-xs-12 col-sm-12 col-md-12 mb16 mt16" style="float: left;"> |
||||
|
<h3 class="alert" style="font-weight:400;color: #091E42;background: #fff;text-align: left;border-radius: 0; font-size: 18px; "> <img src="images/checked.png" style=" width: 22px; margin-right: 6px; " alt="check"> Project Information </h3> |
||||
|
|
||||
|
<div style=""> <img class="img img-responsive center-block" style="border-top-left-radius: 10px;border-top-right-radius: 10px;" src="images/project-satus-level-cybrosys-4.png"> </div> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
<div class="carousel-item" style="min-height: 0px;"> |
||||
|
<div class="col-xs-12 col-sm-12 col-md-12 mb16 mt16" style="float: left;"> |
||||
|
|
||||
|
<h3 class="alert" style="font-weight:400;color: #091E42;background: #fff;text-align: left;border-radius: 0;font-size: 18px;"> <img src="images/checked.png" style=" width: 22px; margin-right: 6px; " alt="check">The pie chart of overall task status. </h3> |
||||
|
|
||||
|
<div style=""> |
||||
|
|
||||
|
<img class="img img-responsive center-block" style="border-top-left-radius: 10px;border-top-right-radius: 10px;" src="images/project-satus-level-cybrosys-5.png"> </div> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
<div class="carousel-item" style="min-height: 0px;"> |
||||
|
<div class="col-xs-12 col-sm-12 col-md-12 mb16 mt16" style="float: left;"> |
||||
|
|
||||
|
<h3 class="alert" style="font-weight:400;color: #091E42;background: #fff;text-align: left;border-radius: 0;font-size: 18px;"> <img src="images/checked.png" style=" width: 22px; margin-right: 6px; " alt="check">End user can easily compare the actual and planned time of the project. </h3> |
||||
|
|
||||
|
<div style=""> |
||||
|
|
||||
|
<img class="img img-responsive center-block" style="border-top-left-radius: 10px;border-top-right-radius: 10px;" src="images/project-satus-level-cybrosys-6.png"> </div> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
<div class="carousel-item" style="min-height: 0px;"> |
||||
|
<div class="col-xs-12 col-sm-12 col-md-12 mb16 mt16" style="float: left;"> |
||||
|
|
||||
|
<h3 class="alert" style="font-weight:400;color: #091E42;background: #fff;text-align: left;border-radius: 0;font-size: 18px;"> <img src="images/checked.png" style=" width: 22px; margin-right: 6px; " alt="check"> To compare the actual and planned budget of the project. </h3> |
||||
|
|
||||
|
<div style=""> |
||||
|
|
||||
|
<img class="img img-responsive center-block" style="border-top-left-radius: 10px;border-top-right-radius: 10px;" src="imagesproject-satus-level-cybrosys-7.png"> </div> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
<div class="carousel-item" style="min-height: 0px;"> |
||||
|
<div class="col-xs-12 col-sm-12 col-md-12 mb16 mt16" style="float: left;"> |
||||
|
|
||||
|
<h3 class="alert" style="font-weight:400;color: #091E42;background: #fff;text-align: left;border-radius: 0;font-size: 18px;"> <img src="images/checked.png" style=" width: 22px; margin-right: 6px; " alt="check">Project task information and bar chart. End user can easily analyse the tasks.</h3> |
||||
|
|
||||
|
<div style=""> |
||||
|
|
||||
|
<img class="img img-responsive center-block" style="border-top-left-radius: 10px;border-top-right-radius: 10px;" src="images/project-satus-level-cybrosys-8.png"> </div> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
</div> |
||||
|
<a class="carousel-control-prev" href="#demo" data-slide="prev" style="left:-25px;width: 35px;color: #000;"> <span class="carousel-control-prev-icon"><i class="fa fa-chevron-left" style="font-size:24px"></i></span> </a> <a class="carousel-control-next" href="#demo" data-slide="next" style="right:-25px;width: 35px;color: #000;"> <span class="carousel-control-next-icon"><i class="fa fa-chevron-right" style="font-size:24px"></i></span> </a> </div> |
||||
|
</section> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
<div class="px-3 pt-1 tab-pane fade" id="pills-video" role="tabpanel" aria-labelledby=" |
||||
|
pills-home-tab"> |
||||
|
<!-- Video--> |
||||
|
<h2 style="font-weight: 600;text-align: center;width: 100%;">Video</h2> |
||||
|
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;"> |
||||
|
<center><p>Project Status Report</p> |
||||
|
<!--<a href="https://www.youtube.com/watch?v=57QWXrMYe84&feature=youtu.be" target="_blank"> <img src="addon-youtube.png" style="width:80%;"></a>--> |
||||
|
|
||||
|
<div class="s_panel_video" data-video-id="PF3WHX84fig?rel=0" style="cursor:pointer;"> |
||||
|
<img class="img-fluid s_tooltip_tabs_tooltip_image s_figure_link pb0" src="images/youtube-video.png" alt="Cybrosys Cover Video" style="max-width:100%;"> |
||||
|
</div> |
||||
|
|
||||
|
</center> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
<!-- faq tab--> |
||||
|
<div class="px-2 px-lg-4 pt-3 tab-pane fade" id="pills-contact" role="tabpanel" aria-labelledby="pills-contact-tab"> |
||||
|
<ul class="list-unstyled"> |
||||
|
</ul> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
|
||||
|
<section class="oe_container" style="padding: 2rem 3rem 1rem;"> |
||||
|
<h2 style="font-weight: 600;text-align: center;margin-bottom: 25px;width: 100%;">Suggested Products</h2> |
||||
|
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;"> |
||||
|
<div id="demo1" class="row carousel slide" data-ride="carousel"> |
||||
|
<!-- The slideshow --> |
||||
|
<div class="carousel-inner"> |
||||
|
<div class="carousel-item active" style="min-height: 0px;"> |
||||
|
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float: left;"> <a href="https://apps.odoo.com/apps/modules/10.0/project_report_pdf/" target="_blank"> |
||||
|
<div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;"> <img class="img img-responsive center-block" style="border-top-left-radius: 10px;border-top-right-radius: 10px;" src="images/essential_report.jpeg"> </div> |
||||
|
</a> </div> |
||||
|
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float: left;"> <a href="https://apps.odoo.com/apps/modules/10.0/project_task_timer/" target="_blank"> |
||||
|
<div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;"> <img class="img img-responsive center-block" style="border-top-left-radius: 10px;border-top-right-radius: 10px;" src="images/task_timer.jpeg"> </div> |
||||
|
</a> </div> |
||||
|
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float: left;"> <a href="https://apps.odoo.com/apps/modules/10.0/task_deadline_reminder/" target="_blank"> |
||||
|
<div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;"> <img class="img img-responsive center-block" style="border-top-left-radius: 10px;border-top-right-radius: 10px;" src="images/pos_lot_expiry_warning.png"> </div> |
||||
|
</a> </div> |
||||
|
</div> |
||||
|
<div class="carousel-item" style="min-height: 0px;"> |
||||
|
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float: left;"> <a href="https://apps.odoo.com/apps/modules/10.0/task_deadline_reminder/" target="_blank"> |
||||
|
<div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;"> <img class="img img-responsive center-block" style="border-top-left-radius: 10px;border-top-right-radius: 10px;" src="images/task_reminder.jpeg"> </div> |
||||
|
</a> </div> |
||||
|
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float: left;"> <a href="https://apps.odoo.com/apps/modules/10.0/project_time_spend/" target="_blank"> |
||||
|
<div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;"> <img class="img img-responsive center-block" style="border-top-left-radius: 10px;border-top-right-radius: 10px;" src="images/time_spend.jpeg"> </div> |
||||
|
</a> </div> |
||||
|
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float: left;"> <a href="https://apps.odoo.com/apps/modules/10.0/colour_code_project/" target="_blank"> |
||||
|
<div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;"> <img class="img img-responsive center-block" style="border-top-left-radius: 10px;border-top-right-radius: 10px;" src="images/colour_code_project.jpeg"> </div> |
||||
|
</a> </div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<!-- Left and right controls --> |
||||
|
<a class="carousel-control-prev" href="#demo1" data-slide="prev" style="left:-25px;width: 35px;color: #000;"> <span class="carousel-control-prev-icon"><i class="fa fa-chevron-left" style="font-size:24px"></i></span> </a> <a class="carousel-control-next" href="#demo1" data-slide="next" style="right:-25px;width: 35px;color: #000;"> <span class="carousel-control-next-icon"><i class="fa fa-chevron-right" style="font-size:24px"></i></span> </a> </div> |
||||
|
</section> |
||||
|
|
||||
|
|
||||
|
<section class="row" style="padding: 2rem 3rem 1rem;margin:0px"> |
||||
|
<h2 style="font-weight: 600;margin-bottom: 20px;text-align: center;width: 100%;">Our Service</h2> |
||||
|
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;"> |
||||
|
<div class="row" style=" display: flex; justify-content: center; flex-wrap: wrap;width: 100%; "> |
||||
|
<!-- <div style="display:flex;padding-top: 20px;justify-content: space-between;"> --> |
||||
|
<div class="col-md-2 col-sm-6 col-xs-12"> |
||||
|
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> <a href="https://www.cybrosys.com/odoo-customization-and-installation/" target="_blank"> <img src="https://www.cybrosys.com/images/odoo-customization.png" style="width: 100%;border-radius: 100%;"/> </a> </div> |
||||
|
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> <a href="https://www.cybrosys.com/odoo-customization-and-installation/" target="_blank" style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;"> Odoo Customization </a> </h3> |
||||
|
</div> |
||||
|
<div class="col-md-2 col-sm-6 col-xs-12"> |
||||
|
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> <a href="https://www.cybrosys.com/odoo-erp-implementation/" target="_blank"> <img src="https://www.cybrosys.com/images/odoo-erp-implementation.png" style="width: 100%;border-radius: 100%;"/> </a> </div> |
||||
|
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> <a href="https://www.cybrosys.com/odoo-erp-implementation/" target="_blank" style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;"> Odoo Implementation </a> </h3> |
||||
|
</div> |
||||
|
<div class="col-md-2 col-sm-6 col-xs-12"> |
||||
|
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> <a href="https://www.cybrosys.com/odoo-erp-integration/" target="_blank"> <img src="https://www.cybrosys.com/images/odoo-erp-integration.png" style="width: 100%;border-radius: 100%;"/> </a> </div> |
||||
|
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> <a href="https://www.cybrosys.com/odoo-erp-integration/" target="_blank" style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;"> Odoo Integration </a> </h3> |
||||
|
</div> |
||||
|
<div class="col-md-2 col-sm-6 col-xs-12"> |
||||
|
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> <a href="https://www.cybrosys.com/odoo-erp-support/" target="_blank"> <img src="https://www.cybrosys.com/images/odoo-erp-support.png" style="width: 100%;border-radius: 100%;"/> </a> </div> |
||||
|
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> <a href="https://www.cybrosys.com/odoo-erp-support/" target="_blank" style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;"> Odoo Support</a> </h3> |
||||
|
</div> |
||||
|
<div class="col-md-2 col-sm-6 col-xs-12"> |
||||
|
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> <a href="https://www.cybrosys.com/hire-odoo-developer/" target="_blank"> <img src="https://www.cybrosys.com/images/hire-odoo-developer.png" style="width: 100%;border-radius: 100%;"/> </a> </div> |
||||
|
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> <a href="https://www.cybrosys.com/hire-odoo-developer/" target="_blank" style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;"> Hire Odoo Developers</a> </h3> |
||||
|
</a> </div> |
||||
|
<!-- </div> --> |
||||
|
</div> |
||||
|
</section> |
||||
|
<section class="row" style="padding: 2rem 3rem 1rem;margin:0px"> |
||||
|
<div class="row" style="margin: 0"> |
||||
|
<h2 style="font-weight: 600;margin-bottom: 20px;text-align: center;width: 100%;">Our Industries</h2> |
||||
|
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;"> |
||||
|
<!-- <div style="display:flex;justify-content: space-between;flex-wrap:wrap;"> --> |
||||
|
<div class="row" style="width: 100%"> |
||||
|
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; "> |
||||
|
<div > |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> <a href="https://www.cybrosys.com/odoo/industries/best-trading-erp/" target="_blank"> <img src="https://www.cybrosys.com/images/odoo-index-industry-1.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> </a> </div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> <a href="https://www.cybrosys.com/odoo/industries/best-trading-erp/" target="_blank" style="list-style: none; color:#000; text-decoration: none;font-family: 'Montserrat',sans-serif;"> Trading </a> </h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px; font-family: 'Montserrat',sans-serif;"> Easily procure and sell your products. </h3> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; "> |
||||
|
<div > |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> <a href="https://www.cybrosys.com/odoo/industries/manufacturing-erp-software/" target="_blank"> <img src="https://www.cybrosys.com/images/odoo-index-industry-2.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> </a> </div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;" style=" margin-bottom: 10px; "> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> <a href="https://www.cybrosys.com/odoo/industries/manufacturing-erp-software/" target="_blank" style="list-style: none; color:#000; text-decoration: none;font-family: 'Montserrat',sans-serif;"> Manufacturing</a> </h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;font-family: 'Montserrat',sans-serif;"> Plan, track and schedule your operations. </h3> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; "> |
||||
|
<div > |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> <a href="https://www.cybrosys.com/odoo/industries/restaurant-management/" target="_blank"> <img src="https://www.cybrosys.com/images/odoo-index-industry-3.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> </a> </div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> <a href="https://www.cybrosys.com/odoo/industries/restaurant-management/" target="_blank" style="list-style: none; color:#000; text-decoration: none;font-family: 'Montserrat',sans-serif;"> Restaurant</a> </h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;font-family: 'Montserrat',sans-serif;"> Run your bar or restaurant methodical. </h3> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; "> |
||||
|
<div > |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> <a href="https://www.cybrosys.com/odoo/industries/pos/" target="_blank"> <img src="https://www.cybrosys.com/images/odoo-index-industry-4.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> </a> </div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> <a href="https://www.cybrosys.com/odoo/industries/pos/" target="_blank" style="list-style: none; color:#000; text-decoration: none;font-family: 'Montserrat',sans-serif;"> POS</a> </h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;font-family: 'Montserrat',sans-serif;"> Easy configuring and convivial selling. </h3> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; "> |
||||
|
<div > |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> <a href="https://www.cybrosys.com/odoo/industries/ecommerce-website/" target="_blank"> <img src="https://www.cybrosys.com/images/odoo-index-industry-5.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> </a> </div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 0px;margin-left: 16px;"> <a href="https://www.cybrosys.com/odoo/industries/ecommerce-website/" target="_blank" style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;"> E-commerce & Website</a> </h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px; font-family: 'Montserrat',sans-serif;"> Mobile friendly, awe-inspiring product pages. </h3> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; "> |
||||
|
<div > |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> <a href="https://www.cybrosys.com/odoo/industries/hotel-management-erp/" target="_blank"> <img src="https://www.cybrosys.com/images/odoo-index-industry-6.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> </a> </div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> <a href="https://www.cybrosys.com/odoo/industries/hotel-management-erp/" target="_blank" style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;"> Hotel Management</a> </h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px; font-family: 'Montserrat',sans-serif;"> An all-inclusive hotel management application. </h3> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; "> |
||||
|
<div > |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> <a href="https://www.cybrosys.com/odoo/industries/education-erp-software/" target="_blank"> <img src="https://www.cybrosys.com/images/odoo-index-industry-7.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> </a> </div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> <a href="https://www.cybrosys.com/odoo/industries/education-erp-software/" target="_blank" style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;"> Education</a> </h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px; font-family: 'Montserrat',sans-serif;"> A Collaborative platform for educational management. </h3> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; "> |
||||
|
<div > |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> <a href="https://www.cybrosys.com/odoo/industries/service-management/" target="_blank"> <img src="https://www.cybrosys.com/images/odoo-index-industry-8.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> </a> </div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> <a href="https://www.cybrosys.com/odoo/industries/service-management/" target="_blank" style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;"> Service Management</a> </h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px; font-family: 'Montserrat',sans-serif;"> Keep track of services and invoice accordingly. </h3> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
|
||||
|
|
||||
|
|
||||
|
<section class="oe_container" style="padding: 0% 0% 6% 0%;"> |
||||
|
<center> |
||||
|
<div class="col-md-12" style="margin: auto !important; |
||||
|
width: 70%; |
||||
|
padding: 30px;"> |
||||
|
<h2 style="font-weight: 600;text-align: center;width: 100%;">Need Any Help?</h2> |
||||
|
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;"> |
||||
|
|
||||
|
<h4 style="font-size:16px;"> If you have anything to share with us based on your use of this module, please let us know. We are ready to offer our support. </h4> |
||||
|
<div class="col-md-6" style="float:left; padding:20px;"> |
||||
|
<h4><i class="fa fa-envelope"></i>Email us </h4> |
||||
|
<p>odoo@cybrosys.com / info@cybrosys.com</p> |
||||
|
|
||||
|
</div> |
||||
|
<div class="col-md-6" style="float:left; padding:20px;"> |
||||
|
<h4><i class="fa fa-phone"></i> Contact Us </h4> |
||||
|
<a href="https://www.cybrosys.com/contact/" target="_blank"> www.cybrosys.com</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
</center> |
||||
|
</section> |
||||
|
|
||||
|
|
||||
|
<section class="oe_container" style="padding: 0% 0% 6% 0%;"> |
||||
|
<div class="oe_slogan" style="margin-bottom: 0px;"> |
||||
|
<div style=" display: flex; justify-content: center; flex-wrap: wrap; "> |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
</div> |
||||
|
<br> |
||||
|
<img src="https://www.cybrosys.com/images/logo.png" style="width: 190px; margin-bottom: 25px;margin-top: 30px;" class="center-block"> |
||||
|
<div style=" display: flex; justify-content: center; flex-wrap: wrap; "> <a href="https://twitter.com/cybrosys" target="_blank"><i class="fa fa-2x fa-twitter" style="color:white;background: #00a0d1;width:35px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></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;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></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; height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></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;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a> |
||||
|
</td> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
</div> |
||||
|
|
@ -0,0 +1,12 @@ |
|||||
|
<odoo> |
||||
|
<data> |
||||
|
<report id="project_status_report_new" |
||||
|
model="project.project" |
||||
|
string="Project Status Report" |
||||
|
report_type="xlsx" |
||||
|
name="project_status_level_report" |
||||
|
file="project_status_level_report" |
||||
|
menu="False" |
||||
|
/> |
||||
|
</data> |
||||
|
</odoo> |
@ -0,0 +1,54 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8" ?> |
||||
|
<odoo> |
||||
|
<data> |
||||
|
<record id="project_view_extended" model="ir.ui.view"> |
||||
|
<field name="name">project.new.form</field> |
||||
|
<field name="model">project.project</field> |
||||
|
<field name="inherit_id" ref="project.edit_project"/> |
||||
|
<field name="arch" type="xml"> |
||||
|
<xpath expr="//field[@name='resource_calendar_id']" position="after"> |
||||
|
<field name="planned_amount"/> |
||||
|
</xpath> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="project_report_print_wizard_view" model="ir.ui.view"> |
||||
|
<field name="name">project.status.report</field> |
||||
|
<field name="model">project.status_report</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<form> |
||||
|
<group> |
||||
|
<group> |
||||
|
<field name="date_from"/> |
||||
|
<field name="date_to"/> |
||||
|
</group> |
||||
|
</group> |
||||
|
<footer> |
||||
|
<button name="print_report_xls" string="Generate" type="object" class="oe_highlight" |
||||
|
style="margin: 0 5px;" context="{'xls_export':1}" icon='fa-arrow-circle-down' widget="url"/> |
||||
|
or |
||||
|
<button string="Cancel" class="oe_link" special="cancel" /> |
||||
|
</footer> |
||||
|
</form> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="project_report_wizard_view_action" model="ir.actions.act_window"> |
||||
|
<field name="name">Project Status Report</field> |
||||
|
<field name="res_model">project.status_report</field> |
||||
|
<field name="view_type">form</field> |
||||
|
<field name="view_id" ref="project_report_print_wizard_view"/> |
||||
|
<field name="target">new</field> |
||||
|
<field name="context">{}</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="project_status_report" model="ir.values"> |
||||
|
<field name="model">project.status_report</field> |
||||
|
<field name="name">xls report</field> |
||||
|
<field name="key2">client_print_multi</field> |
||||
|
<field name="value" eval="'ir.actions.act_window,' + str(ref('project_report_wizard_view_action'))" /> |
||||
|
<field name="key">action</field> |
||||
|
<field name="model">project.project</field> |
||||
|
</record> |
||||
|
</data> |
||||
|
</odoo> |