17 changed files with 1436 additions and 0 deletions
@ -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 |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
@ -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 |
@ -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, |
||||
|
} |
||||
|
|
@ -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 |
||||
|
|
@ -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 |
@ -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') |
After Width: | Height: | Size: 65 KiB |
After Width: | Height: | Size: 50 KiB |
After Width: | Height: | Size: 12 KiB |
@ -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;"> ☑</span> Reporting Module for Car Workshop Application.</li> |
||||
|
<li style="list-style:none !important;"><span style="color:green;"> ☑</span> PDF & XLS Reports.</li> |
||||
|
<li style="list-style:none !important;"><span style="color:green;"> ☑</span> 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;"> ⇨</span> Vehicles</li> |
||||
|
<li style="list-style:none !important;"> ⇨</span> Date.</li> |
||||
|
<li style="list-style:none !important;"> ⇨</span> State/Status.</li> |
||||
|
<li style="list-style:none !important;"> ⇨</span> Customers.</li> |
||||
|
<li style="list-style:none !important;"> ⇨</span> 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> |
||||
|
|
||||
|
|
||||
|
|
After Width: | Height: | Size: 39 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 36 KiB |
@ -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> |
@ -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> |
@ -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 |
@ -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…
Reference in new issue