Browse Source

[ADD]Initial Commit

pull/81/head
SHEREEF PT 8 years ago
parent
commit
1912a2c696
  1. 48
      car_workshop_report/README.rst
  2. 24
      car_workshop_report/__init__.py
  3. 42
      car_workshop_report/__openerp__.py
  4. 25
      car_workshop_report/report/__init__.py
  5. 405
      car_workshop_report/report/car_pdf_report.py
  6. 571
      car_workshop_report/report/car_xls_report.py
  7. BIN
      car_workshop_report/static/description/banner.jpg
  8. BIN
      car_workshop_report/static/description/cybro_logo.png
  9. BIN
      car_workshop_report/static/description/icon.png
  10. 99
      car_workshop_report/static/description/index.html
  11. BIN
      car_workshop_report/static/description/pdf.png
  12. BIN
      car_workshop_report/static/description/wizard.png
  13. BIN
      car_workshop_report/static/description/xls.png
  14. 67
      car_workshop_report/views/report_wizard.xml
  15. 70
      car_workshop_report/views/workshop_pdf_template.xml
  16. 23
      car_workshop_report/wizards/__init__.py
  17. 62
      car_workshop_report/wizards/report_wizard.py

48
car_workshop_report/README.rst

@ -0,0 +1,48 @@
Report To Car Workshop v9
=========================
This module manages the report of Car Workshop. This is fully
integrated with Car Workshop Management module.
Installation
============
To install this module, you need to install Car Workshop Management
module located in:
https://apps.odoo.com/apps/modules/9.0/fleet_car_workshop/
Also Report Xls located in : https://github.com/OCA/reporting-engine
Implementation
==============
Reports can be in downloaded in XLS and PDF format.Also we can
filter results based on:
+Vehicle
+Date
+State/Status
+Customer
+Assigned Person.
Credits
=======
* Cybrosys Techno Solutions, http://www.Cybrosys.com
Author
------
Developer: Treesa Maria Jude @ cybrosys, treesa@cybrosys.in
Guidance: Nilmar Shereef @ cybrosys, shereef@cybrosys.in

24
car_workshop_report/__init__.py

@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<http://www.cybrosys.com>).
# Author: Nilmar Shereef(<http://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 report
import wizards

42
car_workshop_report/__openerp__.py

@ -0,0 +1,42 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<http://www.cybrosys.com>).
# Author: Nilmar Shereef(<http://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': 'Car Workshop Report',
'version': '9.0.1.0.0',
'summary': 'Reports for Car Workshop Management',
'category': 'Industries',
'author': 'Cybrosys Techno Solutions',
'website': "http://www.cybrosys.com",
'company': 'Cybrosys Techno Solutions',
'depends': ['report_xls', 'fleet_car_workshop'],
'data': [
'views/report_wizard.xml',
'views/workshop_pdf_template.xml'
],
'license': 'LGPL-3',
'images': ['static/description/banner.jpg'],
'installable': True,
'auto_install': False,
'application': False,
}

25
car_workshop_report/report/__init__.py

@ -0,0 +1,25 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<http://www.cybrosys.com>).
# Author: Nilmar Shereef(<http://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 car_xls_report
import car_pdf_report

405
car_workshop_report/report/car_pdf_report.py

@ -0,0 +1,405 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<http://www.cybrosys.com>).
# Author: Nilmar Shereef(<http://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 datetime
from openerp.report import report_sxw
from openerp.osv import osv
def get_xls(obj):
getvals = {
'name': obj.name,
'vehicle': obj.vehicle_id.name.name,
'date_deadline': obj.date_deadline,
'partner_id': obj.partner_id.name,
'user_id': obj.user_id.name,
'amount_total': obj.amount_total,
'stage_id': obj.stage_id.name,
}
return getvals
class CarReport(report_sxw.rml_parse):
def __init__(self, cr, uid, name, context=None):
super(CarReport, self).__init__(cr, uid, name, context=context)
self.localcontext.update({
'get_details': self.get_details,
'get_date': self.get_date,
})
self.context = context
def get_date(self):
date = datetime.datetime.now()
return date
def get_details(self, data):
lines = []
if data['filter_vehicle'] is True:
if data['filter_user'] is True:
# ----------------------- FILTER ON DATE PARTNER STATE SP -------------------------
if data['filter'] == 'filter_date' and data['filter_partner'] is True \
and data['stage_id'] is not False:
for k in range(0, len(data['vehicles'])):
for j in range(0, len(data['partner_name'])):
for l in range(0, len(data['sales_person'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if (data['date_from'] <= obj.date_deadline) \
and (data['date_to'] >= obj.date_deadline) \
and obj.partner_id.id == data['partner_name'][j] \
and obj.stage_id.id == data['stage_id'][0] \
and obj.vehicle_id.name.id == data['vehicles'][k] \
and obj.user_id.id == data['sales_person'][l]:
lines.append(get_xls(obj))
# ----------------------- FILTER ON DATE AND PARTNER SP -------------------------
elif data['filter'] == 'filter_date' and data['filter_partner'] is True:
for k in range(0, len(data['vehicles'])):
for j in range(0, len(data['partner_name'])):
for l in range(0, len(data['sales_person'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if (data['date_from'] <= obj.date_deadline) \
and (data['date_to'] >= obj.date_deadline) \
and obj.vehicle_id.name.id == data['vehicles'][k] \
and obj.partner_id.id == data['partner_name'][j] \
and obj.user_id.id == data['sales_person'][l]:
lines.append(get_xls(obj))
# ----------------------- FILTER ON DATE AND STATE SP-------------------------
elif data['filter'] == 'filter_date' and data['stage_id'] is not False:
for k in range(0, len(data['vehicles'])):
for l in range(0, len(data['sales_person'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if (data['date_from'] <= obj.date_deadline) \
and (data['date_to'] >= obj.date_deadline) \
and obj.stage_id.id == data['stage_id'][0] \
and obj.vehicle_id.name.id == data['vehicles'][k] \
and obj.user_id.id == data['sales_person'][l]:
lines.append(get_xls(obj))
# ----------------------- FILTER ON PARTNER AND STATE SP-------------------------
elif data['stage_id'] is not False and data['filter_partner'] is True:
for k in range(0, len(data['vehicles'])):
for j in range(0, len(data['partner_name'])):
for l in range(0, len(data['sales_person'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if obj.stage_id.id == data['stage_id'][0] \
and obj.vehicle_id.name.id == data['vehicles'][k] \
and obj.partner_id.id == data['partner_name'][j] \
and obj.user_id.id == data['sales_person'][l]:
lines.append(get_xls(obj))
# ----------------------- FILTER ON DATE SP-------------------------
elif data['filter'] == 'filter_date':
for k in range(0, len(data['vehicles'])):
for l in range(0, len(data['sales_person'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if (data['date_from'] <= obj.date_deadline) \
and (data['date_to'] >= obj.date_deadline) \
and obj.vehicle_id.name.id == data['vehicles'][k] \
and obj.user_id.id == data['sales_person'][l]:
lines.append(get_xls(obj))
# ----------------------- FILTER ON PARTNER SP-------------------------
elif data['filter_partner'] is True:
for k in range(0, len(data['vehicles'])):
for j in range(0, len(data['partner_name'])):
for l in range(0, len(data['sales_person'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if obj.partner_id.id == data['partner_name'][j] \
and obj.vehicle_id.name.id == data['vehicles'][k] \
and obj.user_id.id == data['sales_person'][l]:
lines.append(get_xls(obj))
# ----------------------- FILTER ON STATE SP-------------------------
elif data['stage_id'] is not False:
for k in range(0, len(data['vehicles'])):
for l in range(0, len(data['sales_person'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if obj.stage_id.id == data['stage_id'][0] \
and obj.vehicle_id.name.id == data['vehicles'][k] \
and obj.user_id.id == data['sales_person'][l]:
lines.append(get_xls(obj))
# ------------------------ FILTER ON SP---------------------------------------
else:
for k in range(0, len(data['vehicles'])):
for l in range(0, len(data['sales_person'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if obj.user_id.id == data['sales_person'][l] \
and obj.vehicle_id.name.id == data['vehicles'][k]:
lines.append(get_xls(obj))
else:
# ----------------------- FILTER ON DATE PARTNER STATE -------------------------
if data['filter'] == 'filter_date' and data['filter_partner'] is True \
and data['stage_id'] is not False:
for k in range(0, len(data['vehicles'])):
for j in range(0, len(data['partner_name'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if (data['date_from'] <= obj.date_deadline) and (data['date_to'] >= obj.date_deadline) \
and obj.partner_id.id == data['partner_name'][j] \
and obj.vehicle_id.name.id == data['vehicles'][k] \
and obj.stage_id.id == data['stage_id'][0]:
lines.append(get_xls(obj))
# ----------------------- FILTER ON DATE AND PARTNER -------------------------
elif data['filter'] == 'filter_date' and data['filter_partner'] is True:
for k in range(0, len(data['vehicles'])):
for j in range(0, len(data['partner_name'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if (data['date_from'] <= obj.date_deadline) \
and (data['date_to'] >= obj.date_deadline) \
and obj.vehicle_id.name.id == data['vehicles'][k] \
and obj.partner_id.id == data['partner_name'][j]:
lines.append(get_xls(obj))
# ----------------------- FILTER ON DATE AND STATE -------------------------
elif data['filter'] == 'filter_date' and data['stage_id'] is not False:
for k in range(0, len(data['vehicles'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if (data['date_from'] <= obj.date_deadline) and (data['date_to'] >= obj.date_deadline) \
and obj.vehicle_id.name.id == data['vehicles'][k] \
and obj.stage_id.id == data['stage_id'][0]:
lines.append(get_xls(obj))
# ----------------------- FILTER ON PARTNER AND STATE -------------------------
elif data['stage_id'] is not False and data['filter_partner'] is True:
for k in range(0, len(data['vehicles'])):
for j in range(0, len(data['partner_name'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if obj.stage_id.id == data['stage_id'][0] \
and obj.vehicle_id.name.id == data['vehicles'][k] \
and obj.partner_id.id == data['partner_name'][j]:
lines.append(get_xls(obj))
# ----------------------- FILTER ON DATE -------------------------
elif data['filter'] == 'filter_date':
for k in range(0, len(data['vehicles'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if (data['date_from'] <= obj.date_deadline) \
and obj.vehicle_id.name.id == data['vehicles'][k] \
and (data['date_to'] >= obj.date_deadline):
lines.append(get_xls(obj))
# ----------------------- FILTER ON PARTNER -------------------------
elif data['filter_partner'] is True:
for k in range(0, len(data['vehicles'])):
for j in range(0, len(data['partner_name'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if obj.partner_id.id == data['partner_name'][j] \
and obj.vehicle_id.name.id == data['vehicles'][k]:
lines.append(get_xls(obj))
# ----------------------- FILTER ON STATE -------------------------
elif data['stage_id'] is not False:
for k in range(0, len(data['vehicles'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if obj.stage_id.id == data['stage_id'][0] and obj.vehicle_id.name.id == data['vehicles'][k]:
lines.append(get_xls(obj))
# ----------------------- VEHICLE ONLY -------------------------
else:
for k in range(0, len(data['vehicles'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if obj.vehicle_id.name.id == data['vehicles'][k]:
lines.append(get_xls(obj))
else:
if data['filter_user'] is True:
# ----------------------- FILTER ON DATE PARTNER STATE SP -------------------------
if data['filter'] == 'filter_date' and data['filter_partner'] is True \
and data['stage_id'] is not False:
for j in range(0, len(data['partner_name'])):
for l in range(0, len(data['sales_person'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if (data['date_from'] <= obj.date_deadline) \
and (data['date_to'] >= obj.date_deadline) \
and obj.partner_id.id == data['partner_name'][j] \
and obj.stage_id.id == data['stage_id'][0] \
and obj.user_id.id == data['sales_person'][l]:
lines.append(get_xls(obj))
# ----------------------- FILTER ON DATE AND PARTNER SP -------------------------
elif data['filter'] == 'filter_date' and data['filter_partner'] is True:
for j in range(0, len(data['partner_name'])):
for l in range(0, len(data['sales_person'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if (data['date_from'] <= obj.date_deadline) \
and (data['date_to'] >= obj.date_deadline) \
and obj.partner_id.id == data['partner_name'][j] \
and obj.user_id.id == data['sales_person'][l]:
lines.append(get_xls(obj))
# ----------------------- FILTER ON DATE AND STATE SP-------------------------
elif data['filter'] == 'filter_date' and data['stage_id'] is not False:
for l in range(0, len(data['sales_person'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if (data['date_from'] <= obj.date_deadline) \
and (data['date_to'] >= obj.date_deadline) \
and obj.stage_id.id == data['stage_id'][0] \
and obj.user_id.id == data['sales_person'][l]:
lines.append(get_xls(obj))
# ----------------------- FILTER ON PARTNER AND STATE SP-------------------------
elif data['stage_id'] is not False and data['filter_partner'] is True:
for j in range(0, len(data['partner_name'])):
for l in range(0, len(data['sales_person'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if obj.stage_id.id == data['stage_id'][0] \
and obj.partner_id.id == data['partner_name'][j] \
and obj.user_id.id == data['sales_person'][l]:
lines.append(get_xls(obj))
# ----------------------- FILTER ON DATE SP-------------------------
elif data['filter'] == 'filter_date':
for l in range(0, len(data['sales_person'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if (data['date_from'] <= obj.date_deadline) \
and (data['date_to'] >= obj.date_deadline) \
and obj.user_id.id == data['sales_person'][l]:
lines.append(get_xls(obj))
# ----------------------- FILTER ON PARTNER SP-------------------------
elif data['filter_partner'] is True:
for j in range(0, len(data['partner_name'])):
for l in range(0, len(data['sales_person'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if obj.partner_id.id == data['partner_name'][j] \
and obj.user_id.id == data['sales_person'][l]:
lines.append(get_xls(obj))
# ----------------------- FILTER ON STATE SP-------------------------
elif data['stage_id'] is not False:
for l in range(0, len(data['sales_person'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if obj.stage_id.id == data['stage_id'][0] \
and obj.user_id.id == data['sales_person'][l]:
lines.append(get_xls(obj))
# ------------------------ FILTER ON SP---------------------------------------
else:
for l in range(0, len(data['sales_person'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if obj.user_id.id == data['sales_person'][l]:
lines.append(get_xls(obj))
else:
# ----------------------- FILTER ON DATE PARTNER STATE -------------------------
if data['filter'] == 'filter_date' and data['filter_partner'] is True \
and data['stage_id'] is not False:
for j in range(0, len(data['partner_name'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if (data['date_from'] <= obj.date_deadline) and (data['date_to'] >= obj.date_deadline) \
and obj.partner_id.id == data['partner_name'][j] \
and obj.stage_id.id == data['stage_id'][0]:
lines.append(get_xls(obj))
# ----------------------- FILTER ON DATE AND PARTNER -------------------------
elif data['filter'] == 'filter_date' and data['filter_partner'] is True:
for j in range(0, len(data['partner_name'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if (data['date_from'] <= obj.date_deadline) \
and (data['date_to'] >= obj.date_deadline) \
and obj.partner_id.id == data['partner_name'][j]:
lines.append(get_xls(obj))
# ----------------------- FILTER ON DATE AND STATE -------------------------
elif data['filter'] == 'filter_date' and data['stage_id'] is not False:
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if (data['date_from'] <= obj.date_deadline) and (data['date_to'] >= obj.date_deadline) \
and obj.stage_id.id == data['stage_id'][0]:
lines.append(get_xls(obj))
# ----------------------- FILTER ON PARTNER AND STATE -------------------------
elif data['stage_id'] is not False and data['filter_partner'] is True:
for j in range(0, len(data['partner_name'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if obj.stage_id.id == data['stage_id'][0] and obj.partner_id.id == data['partner_name'][j]:
lines.append(get_xls(obj))
# ----------------------- FILTER ON DATE -------------------------
elif data['filter'] == 'filter_date':
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if (data['date_from'] <= obj.date_deadline) and (data['date_to'] >= obj.date_deadline):
lines.append(get_xls(obj))
# ----------------------- FILTER ON PARTNER -------------------------
elif data['filter_partner'] is True:
for j in range(0, len(data['partner_name'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if obj.partner_id.id == data['partner_name'][j]:
lines.append(get_xls(obj))
# ----------------------- FILTER ON STATE -------------------------
elif data['stage_id'] is not False:
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if obj.stage_id.id == data['stage_id'][0]:
lines.append(get_xls(obj))
# ----------------------- NO FILTERS -------------------------
else:
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
lines.append(get_xls(obj))
return lines
class PrintReport(osv.AbstractModel):
_name = 'report.car_workshop_report.workshop_pdf'
_inherit = 'report.abstract_report'
_template = 'car_workshop_report.workshop_pdf'
_wrapped_report_class = CarReport

571
car_workshop_report/report/car_xls_report.py

@ -0,0 +1,571 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<http://www.cybrosys.com>).
# Author: Nilmar Shereef(<http://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 xlwt
import datetime
from openerp.addons.report_xls.report_xls import report_xls
def get_xls(obj):
getvals = {
'name': obj.name,
'vehicle': obj.vehicle_id.name.name,
'date_deadline': obj.date_deadline,
'partner_id': obj.partner_id.name,
'user_id': obj.user_id.name,
'amount_total': obj.amount_total,
'stage_id': obj.stage_id.name,
}
templist1 = [(1, 3, 0, 'text', getvals['name']),
(2, 3, 0, 'text', getvals['vehicle']),
(3, 2, 0, 'text', getvals['date_deadline']),
(4, 2, 0, 'text', getvals['partner_id']),
(5, 2, 0, 'text', getvals['user_id']),
(6, 1, 0, 'number', getvals['amount_total']),
(7, 1, 0, 'text', getvals['stage_id']),
]
return templist1
class SaleOrderReport(report_xls):
def generate_xls_report(self, _p, _xs, data, objects, wb):
report_name = "Car Workshop Report"
ws = wb.add_sheet(report_name[:31])
ws.panes_frozen = True
ws.remove_splits = True
ws.portrait = 1
ws.fit_width_to_pages = 1
row_pos = 0
ws.set_horz_split_pos(row_pos)
ws.header_str = self.xls_headers['standard']
ws.footer_str = self.xls_footers['standard']
_xs.update({
'xls_title': 'font: bold true, height 350;'
})
_xs.update({
'xls_sub_title': 'font: bold false, height 250;'
})
cell_style = xlwt.easyxf(_xs['xls_title'] + _xs['center'])
cell_center = xlwt.easyxf(_xs['center'])
cell_center_bold_no = xlwt.easyxf(_xs['center'] + _xs['bold'])
cell_left_b = xlwt.easyxf(_xs['left'] + _xs['bold'])
c_specs = [('report_name', 8, 0, 'text', report_name)]
row_pos += 1
row_data = self.xls_row_template(c_specs, ['report_name'])
row_pos = self.xls_write_row(ws, row_pos, row_data, row_style=cell_style)
ws.row(row_pos - 1).height_mismatch = True
ws.row(row_pos - 1).height = 220 * 2
row_pos += 1
date_report = "Date Of Report :" + str(datetime.datetime.now().strftime("%Y-%m-%d %H:%M %p"))
top2 = [('entry1', 3, 0, 'text', date_report)]
row_data = self.xls_row_template(top2, [x[0] for x in top2])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_left_b)
row_pos += 1
if data['filter'] == 'filter_date':
filter1 = "Filter By Date:" + 'Date'
top4 = [(1, 2, 0, 'text', filter1)]
row_data = self.xls_row_template(top4, [x[0] for x in top4])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center_bold_no)
date_from = "Date from :" + str(data['date_from'])
date_to = "Date to :" + str(data['date_to'])
top6 = [(1, 2, 0, 'text', date_from), ]
row_data = self.xls_row_template(top6, [x[0] for x in top6])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center)
top6 = [(1, 2, 0, 'text', date_to), ]
row_data = self.xls_row_template(top6, [x[0] for x in top6])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center)
row_pos += 1
else:
filter1 = "Filter By Date:" + 'No filter'
top4 = [(1, 2, 0, 'text', filter1)]
row_data = self.xls_row_template(top4, [x[0] for x in top4])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center_bold_no)
templist = [(1, 3, 0, 'text', 'Task '),
(2, 3, 0, 'text', 'Vehicle'),
(3, 2, 0, 'text', 'Deadline'),
(4, 2, 0, 'text', 'Customer'),
(5, 2, 0, 'text', 'Assignrd To'),
(6, 1, 0, 'text', 'Total'),
(7, 1, 0, 'text', 'Status'), ]
row_pos += 1
row_data = self.xls_row_template(templist, [x[0] for x in templist])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center_bold_no)
if data['filter_vehicle'] is True:
if data['filter_user'] is True:
# ----------------------- FILTER ON DATE PARTNER STATE SP -------------------------
if data['filter'] == 'filter_date' and data['filter_partner'] is True \
and data['stage_id'] is not False:
for k in range(0, len(data['vehicles'])):
for j in range(0, len(data['partner_name'])):
for l in range(0, len(data['sales_person'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if (data['date_from'] <= obj.date_deadline) \
and (data['date_to'] >= obj.date_deadline) \
and obj.partner_id.id == data['partner_name'][j] \
and obj.stage_id.id == data['stage_id'][0] \
and obj.vehicle_id.name.id == data['vehicles'][k] \
and obj.user_id.id == data['sales_person'][l]:
templist1 = get_xls(obj)
row_data = self.xls_row_template(templist1, [x[0] for x in templist1])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center)
# ----------------------- FILTER ON DATE AND PARTNER SP -------------------------
elif data['filter'] == 'filter_date' and data['filter_partner'] is True:
for k in range(0, len(data['vehicles'])):
for j in range(0, len(data['partner_name'])):
for l in range(0, len(data['sales_person'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if (data['date_from'] <= obj.date_deadline) \
and (data['date_to'] >= obj.date_deadline) \
and obj.vehicle_id.name.id == data['vehicles'][k] \
and obj.partner_id.id == data['partner_name'][j] \
and obj.user_id.id == data['sales_person'][l]:
templist2 = get_xls(obj)
row_data = self.xls_row_template(templist2, [x[0] for x in templist2])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center)
# ----------------------- FILTER ON DATE AND STATE SP-------------------------
elif data['filter'] == 'filter_date' and data['stage_id'] is not False:
for k in range(0, len(data['vehicles'])):
for l in range(0, len(data['sales_person'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if (data['date_from'] <= obj.date_deadline) \
and (data['date_to'] >= obj.date_deadline) \
and obj.stage_id.id == data['stage_id'][0] \
and obj.vehicle_id.name.id == data['vehicles'][k] \
and obj.user_id.id == data['sales_person'][l]:
templist2 = get_xls(obj)
row_data = self.xls_row_template(templist2, [x[0] for x in templist2])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center)
# ----------------------- FILTER ON PARTNER AND STATE SP-------------------------
elif data['stage_id'] is not False and data['filter_partner'] is True:
for k in range(0, len(data['vehicles'])):
for j in range(0, len(data['partner_name'])):
for l in range(0, len(data['sales_person'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if obj.stage_id.id == data['stage_id'][0] \
and obj.vehicle_id.name.id == data['vehicles'][k] \
and obj.partner_id.id == data['partner_name'][j] \
and obj.user_id.id == data['sales_person'][l]:
templist2 = get_xls(obj)
row_data = self.xls_row_template(templist2, [x[0] for x in templist2])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center)
# ----------------------- FILTER ON DATE SP-------------------------
elif data['filter'] == 'filter_date':
for k in range(0, len(data['vehicles'])):
for l in range(0, len(data['sales_person'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if (data['date_from'] <= obj.date_deadline)\
and (data['date_to'] >= obj.date_deadline) \
and obj.vehicle_id.name.id == data['vehicles'][k] \
and obj.user_id.id == data['sales_person'][l]:
templist2 = get_xls(obj)
row_data = self.xls_row_template(templist2, [x[0] for x in templist2])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center)
# ----------------------- FILTER ON PARTNER SP-------------------------
elif data['filter_partner'] is True:
for k in range(0, len(data['vehicles'])):
for j in range(0, len(data['partner_name'])):
for l in range(0, len(data['sales_person'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if obj.partner_id.id == data['partner_name'][j] \
and obj.vehicle_id.name.id == data['vehicles'][k] \
and obj.user_id.id == data['sales_person'][l]:
templist3 = get_xls(obj)
row_data = self.xls_row_template(templist3, [x[0] for x in templist3])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center)
# ----------------------- FILTER ON STATE SP-------------------------
elif data['stage_id'] is not False:
for k in range(0, len(data['vehicles'])):
for l in range(0, len(data['sales_person'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if obj.stage_id.id == data['stage_id'][0] \
and obj.vehicle_id.name.id == data['vehicles'][k] \
and obj.user_id.id == data['sales_person'][l]:
templist4 = get_xls(obj)
row_data = self.xls_row_template(templist4, [x[0] for x in templist4])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center)
# ------------------------ FILTER ON SP---------------------------------------
else:
for k in range(0, len(data['vehicles'])):
for l in range(0, len(data['sales_person'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if obj.user_id.id == data['sales_person'][l] \
and obj.vehicle_id.name.id == data['vehicles'][k]:
templist4 = get_xls(obj)
row_data = self.xls_row_template(templist4, [x[0] for x in templist4])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center)
else:
# ----------------------- FILTER ON DATE PARTNER STATE -------------------------
if data['filter'] == 'filter_date' and data['filter_partner'] is True \
and data['stage_id'] is not False:
for k in range(0, len(data['vehicles'])):
for j in range(0, len(data['partner_name'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if (data['date_from'] <= obj.date_deadline) \
and (data['date_to'] >= obj.date_deadline) \
and obj.partner_id.id == data['partner_name'][j] \
and obj.vehicle_id.name.id == data['vehicles'][k] \
and obj.stage_id.id == data['stage_id'][0]:
templist1 = get_xls(obj)
row_data = self.xls_row_template(templist1, [x[0] for x in templist1])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center)
# ----------------------- FILTER ON DATE AND PARTNER -------------------------
elif data['filter'] == 'filter_date' and data['filter_partner'] is True:
for k in range(0, len(data['vehicles'])):
for j in range(0, len(data['partner_name'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if (data['date_from'] <= obj.date_deadline) \
and (data['date_to'] >= obj.date_deadline) \
and obj.vehicle_id.name.id == data['vehicles'][k] \
and obj.partner_id.id == data['partner_name'][j]:
templist2 = get_xls(obj)
row_data = self.xls_row_template(templist2, [x[0] for x in templist2])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center)
# ----------------------- FILTER ON DATE AND STATE -------------------------
elif data['filter'] == 'filter_date' and data['stage_id'] is not False:
for k in range(0, len(data['vehicles'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if (data['date_from'] <= obj.date_deadline)\
and (data['date_to'] >= obj.date_deadline) \
and obj.vehicle_id.name.id == data['vehicles'][k] \
and obj.stage_id.id == data['stage_id'][0]:
templist2 = get_xls(obj)
row_data = self.xls_row_template(templist2, [x[0] for x in templist2])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center)
# ----------------------- FILTER ON PARTNER AND STATE -------------------------
elif data['stage_id'] is not False and data['filter_partner'] is True:
for k in range(0, len(data['vehicles'])):
for j in range(0, len(data['partner_name'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if obj.stage_id.id == data['stage_id'][0] \
and obj.vehicle_id.name.id == data['vehicles'][k] \
and obj.partner_id.id == data['partner_name'][j]:
templist2 = get_xls(obj)
row_data = self.xls_row_template(templist2, [x[0] for x in templist2])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center)
# ----------------------- FILTER ON DATE -------------------------
elif data['filter'] == 'filter_date':
for k in range(0, len(data['vehicles'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if (data['date_from'] <= obj.date_deadline) \
and obj.vehicle_id.name.id == data['vehicles'][k] \
and (data['date_to'] >= obj.date_deadline):
templist2 = get_xls(obj)
row_data = self.xls_row_template(templist2, [x[0] for x in templist2])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center)
# ----------------------- FILTER ON PARTNER -------------------------
elif data['filter_partner'] is True:
for k in range(0, len(data['vehicles'])):
for j in range(0, len(data['partner_name'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if obj.partner_id.id == data['partner_name'][j] \
and obj.vehicle_id.name.id == data['vehicles'][k]:
templist3 = get_xls(obj)
row_data = self.xls_row_template(templist3, [x[0] for x in templist3])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center)
# ----------------------- FILTER ON STATE -------------------------
elif data['stage_id'] is not False:
for k in range(0, len(data['vehicles'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if obj.stage_id.id == data['stage_id'][0] \
and obj.vehicle_id.name.id == data['vehicles'][k]:
templist4 = get_xls(obj)
row_data = self.xls_row_template(templist4, [x[0] for x in templist4])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center)
# ----------------------- VEHICLE ONLY -------------------------
else:
if len(data['vehicles']) == 0:
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
templist4 = get_xls(obj)
row_data = self.xls_row_template(templist4, [x[0] for x in templist4])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center)
else:
for k in range(0, len(data['vehicles'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if obj.vehicle_id.name.id == data['vehicles'][k]:
templist4 = get_xls(obj)
row_data = self.xls_row_template(templist4, [x[0] for x in templist4])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center)
else:
if data['filter_user'] is True:
# ----------------------- FILTER ON DATE PARTNER STATE SP -------------------------
if data['filter'] == 'filter_date' and data['filter_partner'] is True \
and data['stage_id'] is not False:
for j in range(0, len(data['partner_name'])):
for l in range(0, len(data['sales_person'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if (data['date_from'] <= obj.date_deadline) \
and (data['date_to'] >= obj.date_deadline) \
and obj.partner_id.id == data['partner_name'][j]\
and obj.stage_id.id == data['stage_id'][0] \
and obj.user_id.id == data['sales_person'][l]:
templist1 = get_xls(obj)
row_data = self.xls_row_template(templist1, [x[0] for x in templist1])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center)
# ----------------------- FILTER ON DATE AND PARTNER SP -------------------------
elif data['filter'] == 'filter_date' and data['filter_partner'] is True:
for j in range(0, len(data['partner_name'])):
for l in range(0, len(data['sales_person'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if (data['date_from'] <= obj.date_deadline) \
and (data['date_to'] >= obj.date_deadline) \
and obj.partner_id.id == data['partner_name'][j] \
and obj.user_id.id == data['sales_person'][l]:
templist2 = get_xls(obj)
row_data = self.xls_row_template(templist2, [x[0] for x in templist2])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center)
# ----------------------- FILTER ON DATE AND STATE SP-------------------------
elif data['filter'] == 'filter_date' and data['stage_id'] is not False:
for l in range(0, len(data['sales_person'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if (data['date_from'] <= obj.date_deadline) \
and (data['date_to'] >= obj.date_deadline) \
and obj.stage_id.id == data['stage_id'][0] \
and obj.user_id.id == data['sales_person'][l]:
templist2 = get_xls(obj)
row_data = self.xls_row_template(templist2, [x[0] for x in templist2])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center)
# ----------------------- FILTER ON PARTNER AND STATE SP-------------------------
elif data['stage_id'] is not False and data['filter_partner'] is True:
for j in range(0, len(data['partner_name'])):
for l in range(0, len(data['sales_person'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if obj.stage_id.id == data['stage_id'][0] \
and obj.partner_id.id == data['partner_name'][j] \
and obj.user_id.id == data['sales_person'][l]:
templist2 = get_xls(obj)
row_data = self.xls_row_template(templist2, [x[0] for x in templist2])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center)
# ----------------------- FILTER ON DATE SP-------------------------
elif data['filter'] == 'filter_date':
for l in range(0, len(data['sales_person'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if (data['date_from'] <= obj.date_deadline) \
and (data['date_to'] >= obj.date_deadline) \
and obj.user_id.id == data['sales_person'][l]:
templist2 = get_xls(obj)
row_data = self.xls_row_template(templist2, [x[0] for x in templist2])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center)
# ----------------------- FILTER ON PARTNER SP-------------------------
elif data['filter_partner'] is True:
for j in range(0, len(data['partner_name'])):
for l in range(0, len(data['sales_person'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if obj.partner_id.id == data['partner_name'][j] \
and obj.user_id.id == data['sales_person'][l]:
templist3 = get_xls(obj)
row_data = self.xls_row_template(templist3, [x[0] for x in templist3])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center)
# ----------------------- FILTER ON STATE SP-------------------------
elif data['stage_id'] is not False:
for l in range(0, len(data['sales_person'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if obj.stage_id.id == data['stage_id'][0] \
and obj.user_id.id == data['sales_person'][l]:
templist4 = get_xls(obj)
row_data = self.xls_row_template(templist4, [x[0] for x in templist4])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center)
# ------------------------ FILTER ON SP---------------------------------------
else:
for l in range(0, len(data['sales_person'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if obj.user_id.id == data['sales_person'][l]:
templist4 = get_xls(obj)
row_data = self.xls_row_template(templist4, [x[0] for x in templist4])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center)
else:
# ----------------------- FILTER ON DATE PARTNER STATE -------------------------
if data['filter'] == 'filter_date' and data['filter_partner'] is True \
and data['stage_id'] is not False:
for j in range(0, len(data['partner_name'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if (data['date_from'] <= obj.date_deadline) and (data['date_to'] >= obj.date_deadline) \
and obj.partner_id.id == data['partner_name'][j] \
and obj.stage_id.id == data['stage_id'][0]:
templist1 = get_xls(obj)
row_data = self.xls_row_template(templist1, [x[0] for x in templist1])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center)
# ----------------------- FILTER ON DATE AND PARTNER -------------------------
elif data['filter'] == 'filter_date' and data['filter_partner'] is True:
for j in range(0, len(data['partner_name'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if (data['date_from'] <= obj.date_deadline) \
and (data['date_to'] >= obj.date_deadline) \
and obj.partner_id.id == data['partner_name'][j]:
templist2 = get_xls(obj)
row_data = self.xls_row_template(templist2, [x[0] for x in templist2])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center)
# ----------------------- FILTER ON DATE AND STATE -------------------------
elif data['filter'] == 'filter_date' and data['stage_id'] is not False:
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if (data['date_from'] <= obj.date_deadline) and (data['date_to'] >= obj.date_deadline) \
and obj.stage_id.id == data['stage_id'][0]:
templist2 = get_xls(obj)
row_data = self.xls_row_template(templist2, [x[0] for x in templist2])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center)
# ----------------------- FILTER ON PARTNER AND STATE -------------------------
elif data['stage_id'] is not False and data['filter_partner'] is True:
for j in range(0, len(data['partner_name'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if obj.stage_id.id == data['stage_id'][0] \
and obj.partner_id.id == data['partner_name'][j]:
templist2 = get_xls(obj)
row_data = self.xls_row_template(templist2, [x[0] for x in templist2])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center)
# ----------------------- FILTER ON DATE -------------------------
elif data['filter'] == 'filter_date':
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if (data['date_from'] <= obj.date_deadline) and (data['date_to'] >= obj.date_deadline):
templist2 = get_xls(obj)
row_data = self.xls_row_template(templist2, [x[0] for x in templist2])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center)
# ----------------------- FILTER ON PARTNER -------------------------
elif data['filter_partner'] is True:
for j in range(0, len(data['partner_name'])):
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if obj.partner_id.id == data['partner_name'][j]:
templist3 = get_xls(obj)
row_data = self.xls_row_template(templist3, [x[0] for x in templist3])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center)
# ----------------------- FILTER ON STATE -------------------------
elif data['stage_id'] is not False:
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
if obj.stage_id.id == data['stage_id'][0]:
templist4 = get_xls(obj)
row_data = self.xls_row_template(templist4, [x[0] for x in templist4])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center)
# ----------------------- NO FILTERS -------------------------
else:
for i in self.pool.get('car.workshop').search(self.cr, self.uid, []):
obj = self.pool.get('car.workshop').browse(self.cr, self.uid, i)
templist4 = get_xls(obj)
row_data = self.xls_row_template(templist4, [x[0] for x in templist4])
row_pos = self.xls_write_row(ws, row_pos, row_data, cell_center)
SaleOrderReport('report.workshop_report', 'car.workshop')

BIN
car_workshop_report/static/description/banner.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

BIN
car_workshop_report/static/description/cybro_logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
car_workshop_report/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

99
car_workshop_report/static/description/index.html

@ -0,0 +1,99 @@
<section class="oe_container">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan">Car Workshop Management PDF/XLS Report</h2>
<h3 class="oe_slogan">Reports with filter facilities</h3>
<h4 class="oe_slogan">Cybrosys Technologies , www.cybrosys.com</h4>
<ul>
<li style="list-style:none !important;"><span style="color:green;"> &#9745;</span>&nbsp;&nbsp; Reporting Module for Car Workshop Application.</li>
<li style="list-style:none !important;"><span style="color:green;"> &#9745;</span>&nbsp;&nbsp; PDF & XLS Reports.</li>
<li style="list-style:none !important;"><span style="color:green;"> &#9745;</span>&nbsp;&nbsp; Filter Facilities.</li>
</ul>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h2 class="oe_slogan">Report Wizard</h2>
<h3 class="oe_slogan">Both XLS and PDF reports</h3>
</div>
<div class="oe_span12">
<p class='oe_mt32'>
Reports can be downloaded in XLS and PDF format.
Filter results based on:
</p>
<ul>
<li style="list-style:none !important;"> &#8680;</span>&nbsp;&nbsp; Vehicles</li>
<li style="list-style:none !important;"> &#8680;</span>&nbsp;&nbsp; Date.</li>
<li style="list-style:none !important;"> &#8680;</span>&nbsp;&nbsp; State/Status.</li>
<li style="list-style:none !important;"> &#8680;</span>&nbsp;&nbsp; Customers.</li>
<li style="list-style:none !important;"> &#8680;</span>&nbsp;&nbsp; Technician.</li>
</ul>
</div>
<div class="oe_span12">
<div class="oe_demo oe_picture oe_screenshot">
<img src="wizard.png">
</div>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h2 class="oe_slogan">PDF Report</h2>
</div>
<div class="oe_span5">
<div class="oe_demo oe_screenshot" style="margin: 15px 18%;">
<img src="pdf.png">
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h2 class="oe_slogan">XLS Report</h2>
</div>
<div class="oe_span25">
<div class="oe_demo oe_picture oe_screenshot">
<img src="xls.png">
</div>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<div class="col-md-12"> <p class='oe_mt32' style="text-align:center;">
If you want to analyze the working of Car Workshop Management Module, Click Here:</p>
</div>
<div class="col-md-12"> <a class="btn btn-info btn-lg mt8 center-block"
style="color: #FFFFFF !important; width: 55%;" href="https://apps.odoo.com/apps/modules/9.0/fleet_car_workshop/"><i
class="fa fa-car "></i> Car Workshop Management </a>
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<h2 class="oe_slogan" style="margin-top:20px;" >Need Any Help?</h2>
<div class="oe_slogan" style="margin-top:10px !important;">
<a class="btn btn-primary btn-lg mt8"
style="color: #FFFFFF !important;" href="http://www.cybrosys.com"><i
class="fa fa-envelope"></i> Email </a> <a
class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;"
href="http://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;"
href="http://www.cybrosys.com/odoo-customization-and-installation/"><i
class="fa fa-check-square"></i> Request Customization </a>
</div>
<img src="cybro_logo.png" style="width: 190px; margin-bottom: 20px;" class="center-block">
</section>

BIN
car_workshop_report/static/description/pdf.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
car_workshop_report/static/description/wizard.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

BIN
car_workshop_report/static/description/xls.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

67
car_workshop_report/views/report_wizard.xml

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="workshop_xls_view" model="ir.ui.view">
<field name="name">workshop.xls.Report.view</field>
<field name="model">workshop.report</field>
<field name="arch" type="xml">
<form string="Workshop Report">
<group>
<group>
<field name="filter_vehicle"/>
<field name="vehicles" widget="many2many_tags" attrs="{'invisible': [('filter_vehicle','=',False)], 'required': [('filter_vehicle', '=', True)]}"/>
<field name="stage_id"/></group>
<group>
<field name="filter_partner"/>
<field name="filter_user"/>
</group>
</group>
<notebook>
<page string="Filters" name="filters">
<group>
<field name="filter" />
</group>
<group string="Dates" attrs="{'invisible':[('filter', '!=', 'filter_date')]}">
<field name="date_from" attrs="{'required': [('filter', '=', 'filter_date')]}"/>
<field name="date_to" attrs="{'required': [('filter', '=', 'filter_date')]}"/>
</group>
</page>
<page string="Partner Details" attrs="{'invisible': [('filter_partner','=',False)]}">
<group>
<field name="partner_name" widget="many2many_tags" attrs="{'required': [('filter_partner', '=', True)]}"/>
</group>
</page>
<page string="Sales Person Details" attrs="{'invisible': [('filter_user','=',False)]}">
<group>
<field name="sales_person" widget="many2many_tags" attrs="{'required': [('filter_user', '=', True)]}"/>
</group>
</page>
</notebook>
<footer>
<button name="check_report" string="Export xls" type="object"
class="oe_highlight" style="margin: 0 5px;"
context="{'xls_export':1}" icon='gtk-print' />
<button name="print_pdf" string="Print Pdf" type="object"
class="oe_highlight" style="margin: 0 5px;"
icon='gtk-print' />
or
<button string="Cancel" class="oe_link" special="cancel" />
</footer>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="report_list_action">
<field name="name">Workshop Report</field>
<field name="res_model">workshop.report</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
<menuitem id="workshop_report_wizard" name="Workshop Report"
parent="fleet_car_workshop.report_worksheet"
action="report_list_action"/>
</data>
</openerp>

70
car_workshop_report/views/workshop_pdf_template.xml

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="utf-8" ?>
<openerp>
<data>
<report id="action_report_claims"
model="workshop.report"
string="workshop"
report_type="qweb-pdf"
file="car_workshop_report.workshop_pdf"
name="car_workshop_report.workshop_pdf"
/>
<template id="workshop_pdf">
<t t-call="report.html_container">
<t t-call="report.internal_layout">
<div class="page">
<div class="header" style="text-align:center;"><h1><strong>Car Workshop Report</strong></h1></div>
<div class="row mt32 mb32" style="text-align:center;">
<div class="col-xs-12">
<h3> <strong> <p t-esc="res_company.name"/></strong></h3>
<strong>Date of report:</strong>
<p t-esc="get_date()"/>
</div>
</div>
<table class="table table-condensed">
<thead>
<tr >
<th >Task</th>
<th >Vehicle</th>
<th >Deadline</th>
<th >Customer</th>
<th >Assigned To</th>
<th >Amount</th>
<th >Status</th>
</tr>
</thead>
<tbody>
<t t-foreach="get_details(data)" t-as="o">
<tr>
<td>
<span t-esc="o['name']"/>
</td>
<td>
<span t-esc="o['vehicle']"/>
</td>
<td>
<span t-esc="o['date_deadline']"/>
</td>
<td>
<span t-esc="o['partner_id']"/>
</td>
<td>
<span t-esc="o['user_id']"/>
</td>
<td>
<span t-esc="o['amount_total']"/>
</td>
<td>
<span t-esc="o['stage_id']"/>
</td>
</tr>
</t>
</tbody>
</table>
</div>
</t>
</t>
</template>
</data>
</openerp>

23
car_workshop_report/wizards/__init__.py

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<http://www.cybrosys.com>).
# Author: Nilmar Shereef(<http://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 report_wizard

62
car_workshop_report/wizards/report_wizard.py

@ -0,0 +1,62 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<http://www.cybrosys.com>).
# Author: Nilmar Shereef(<http://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/>.
#
##############################################################################
from openerp import models, fields
class SaleReportWizard (models.Model):
_name = "workshop.report"
filter_partner = fields.Boolean('Enable Partner Filter')
filter = fields.Selection([('filter_date', 'Date'), ], "Filter by")
date_from = fields.Date("Start Date")
date_to = fields.Date("End Date")
filter_user = fields.Boolean("Enable Sales Person Filter")
filter_vehicle = fields.Boolean("Filter By Vehicle")
sales_person = fields.Many2many('res.users', string='Sales Person')
partner_name = fields.Many2many('res.partner', 'multiple_partners', 'partner_names', string='Partner Name')
vehicles = fields.Many2many('fleet.vehicle', string='Vehicle Name',)
stage_id = fields.Many2one('worksheet.stages', string='Select State')
def check_report(self, cr, uid, ids, context):
data = self.read(cr, uid, ids, ['partner_name', 'filter_partner', 'filter_user',
'filter', 'date_from', 'sales_person',
'date_to', 'filter_vehicle', 'vehicles', 'stage_id'], context=context)[0]
return {'type': 'ir.actions.report.xml',
'report_name': 'workshop_report',
'datas': data}
def print_pdf(self, cr, uid, ids, context=None):
if context is None:
context = {}
data = self.read(cr, uid, ids, ['partner_name', 'filter_partner', 'filter_user',
'filter', 'date_from', 'sales_person',
'date_to', 'filter_vehicle', 'vehicles', 'stage_id'], context=context)[0]
datas = {
'ids': context.get('active_ids', []),
'model': 'workshop.report',
'form': data
}
datas['form']['active_ids'] = context.get('active_ids', False)
return self.pool['report'].get_action(cr, uid, [], 'car_workshop_report.workshop_pdf', data=data,
context=context)
Loading…
Cancel
Save