14 changed files with 405 additions and 0 deletions
@ -0,0 +1,23 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################## |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# Copyright (C) 2009-TODAY Cybrosys Technologies(<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 wizard |
@ -0,0 +1,41 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################## |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# Copyright (C) 2009-TODAY Cybrosys Technologies(<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': 'Timesheet PDF Report', |
|||
'version': '10.0.1.0.0', |
|||
'category': 'Human Resource', |
|||
'sequence': 25, |
|||
'summary': 'Timesheet PDF Report of Employee', |
|||
'author': 'Cybrosys Techno Solutions', |
|||
'company': 'Cybrosys Techno Solutions', |
|||
'website': 'www.cybrosys.com', |
|||
'depends': ['hr_timesheet'], |
|||
'data': [ |
|||
'report/report_timesheets.xml', |
|||
'wizard/timesheet_wizard.xml', |
|||
], |
|||
'images': ['static/description/banner.jpg'], |
|||
'license': 'AGPL-3', |
|||
'installable': True, |
|||
'auto_install': False, |
|||
'application': False, |
|||
} |
@ -0,0 +1,22 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################## |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# Copyright (C) 2009-TODAY Cybrosys Technologies(<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_timesheets |
@ -0,0 +1,85 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################## |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# Copyright (C) 2009-TODAY Cybrosys Technologies(<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 odoo import models, fields, api |
|||
|
|||
|
|||
class ReportTimesheet(models.AbstractModel): |
|||
_name = 'report.timesheets_by_employee.report_timesheets' |
|||
|
|||
def get_timesheets(self, docs): |
|||
"""input : name of employee and the starting date and ending date |
|||
output: timesheets by that particular employee within that period and the total duration""" |
|||
|
|||
if docs.from_date and docs.to_date: |
|||
rec = self.env['account.analytic.line'].search([('user_id', '=', docs.employee[0].id), |
|||
('date', '>=', docs.from_date),('date', '<=', docs.to_date)]) |
|||
elif docs.from_date: |
|||
rec = self.env['account.analytic.line'].search([('user_id', '=', docs.employee[0].id), |
|||
('date', '>=', docs.from_date)]) |
|||
elif docs.to_date: |
|||
rec = self.env['account.analytic.line'].search([('user_id', '=', docs.employee[0].id), |
|||
('date', '<=', docs.to_date)]) |
|||
else: |
|||
rec = self.env['account.analytic.line'].search([('user_id', '=', docs.employee[0].id)]) |
|||
records = [] |
|||
total = 0 |
|||
for r in rec: |
|||
vals = {'project': r.project_id.name, |
|||
'user': r.user_id.partner_id.name, |
|||
'duration': r.unit_amount, |
|||
'date': r.date, |
|||
} |
|||
total += r.unit_amount |
|||
records.append(vals) |
|||
return [records, total] |
|||
|
|||
@api.model |
|||
def render_html(self, docids, data=None): |
|||
"""we are overwriting this function because we need to show values from other models in the report |
|||
we pass the objects in the docargs dictionary""" |
|||
|
|||
self.model = self.env.context.get('active_model') |
|||
docs = self.env[self.model].browse(self.env.context.get('active_id')) |
|||
identification = [] |
|||
for i in self.env['hr.employee'].search([('user_id', '=', docs.employee[0].id)]): |
|||
if i: |
|||
identification.append({'id': i.identification_id, 'name': i.name_related}) |
|||
|
|||
timesheets = self.get_timesheets(docs) |
|||
period = None |
|||
if docs.from_date and docs.to_date: |
|||
period = "From " + str(docs.from_date) + " To " + str(docs.to_date) |
|||
elif docs.from_date: |
|||
period = "From " + str(docs.from_date) |
|||
elif docs.from_date: |
|||
period = " To " + str(docs.to_date) |
|||
docargs = { |
|||
'doc_ids': self.ids, |
|||
'doc_model': self.model, |
|||
'docs': docs, |
|||
'timesheets': timesheets[0], |
|||
'total': timesheets[1], |
|||
'company': docs.employee[0].company_id.name, |
|||
'identification': identification, |
|||
'period': period, |
|||
} |
|||
return self.env['report'].render('timesheets_by_employee.report_timesheets', docargs) |
@ -0,0 +1,72 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<odoo> |
|||
<template id="report_timesheets"> |
|||
<t t-call="report.html_container"> |
|||
<t t-foreach="docs" t-as="o"> |
|||
<div class="page"> |
|||
<t t-call="report.external_layout"> |
|||
<div class="row"> |
|||
<div class="mt32 mb32"> |
|||
<table style="border:1px solid;width:100%;"> |
|||
<thead> |
|||
<tr style="height:35px;border:1px solid"> |
|||
<th style="vertical-align:middle;text-align:center;border:1px solid">Company Name</th> |
|||
<th style="vertical-align:middle;text-align:center;border:1px solid">Employee Number</th> |
|||
<th style="vertical-align:middle;text-align:center;border:1px solid">Employee Name</th> |
|||
</tr> |
|||
</thead> |
|||
<tbody> |
|||
<tr style="width:100%;height:30px;border:1px solid"> |
|||
<td style="vertical-align:middle;text-align:center;border:1px solid"><span t-esc="company"/></td> |
|||
<th style="vertical-align:middle;text-align:center;border:1px solid"><span t-esc="identification[0]['id']"/></th> |
|||
<th style="vertical-align:middle;text-align:center;border:1px solid"><span t-esc="identification[0]['name']"/></th> |
|||
</tr> |
|||
</tbody> |
|||
</table> |
|||
</div> |
|||
</div> |
|||
<div class="row"> |
|||
<div class="mt32 mb32"> |
|||
<table style="border:1px solid;width:100%;"> |
|||
<thead> |
|||
<tr style="height:35px;border:1px solid"> |
|||
<th style="vertical-align:middle;text-align:center;border:1px solid">Timesheet Period</th> |
|||
<th style="vertical-align:middle;text-align:center;border:1px solid">Total</th> |
|||
</tr> |
|||
</thead> |
|||
<tbody> |
|||
<tr style="height:35px;border:1px solid"> |
|||
<td style="vertical-align:middle;text-align:center;border:1px solid"><span t-esc="period"/></td> |
|||
<td style="vertical-align:middle;text-align:center;border:1px solid"><span t-esc="total"/></td> |
|||
</tr> |
|||
</tbody> |
|||
</table> |
|||
</div> |
|||
</div> |
|||
|
|||
<div class="row"> |
|||
<div class="mt32 mb32"> |
|||
<table style="border:1px solid;width:100%;"> |
|||
<thead> |
|||
<tr style="height:35px;border:1px solid"> |
|||
<th style="vertical-align:middle;text-align:center;border:1px solid">Date</th> |
|||
<th style="vertical-align:middle;text-align:center;border:1px solid">Project</th> |
|||
<th style="vertical-align:middle;text-align:center;border:1px solid">Worked Time</th> |
|||
</tr> |
|||
</thead> |
|||
<tbody> |
|||
<tr t-foreach="timesheets" t-as="t" style="height:35px;border:1px solid"> |
|||
<td style="vertical-align:middle;text-align:center;border:1px solid"><span t-esc="t['date']"/></td> |
|||
<td style="vertical-align:middle;text-align:center;border:1px solid"><span t-esc="t['project']"/></td> |
|||
<td style="vertical-align:middle;text-align:center;border:1px solid"><span t-esc="t['duration']"/></td> |
|||
</tr> |
|||
</tbody> |
|||
</table> |
|||
</div> |
|||
</div> |
|||
</t> |
|||
</div> |
|||
</t> |
|||
</t> |
|||
</template> |
|||
</odoo> |
After Width: | Height: | Size: 141 KiB |
After Width: | Height: | Size: 50 KiB |
After Width: | Height: | Size: 6.6 KiB |
After Width: | Height: | Size: 57 KiB |
After Width: | Height: | Size: 48 KiB |
@ -0,0 +1,50 @@ |
|||
<section class="oe_container"> |
|||
<div class="oe_row oe_spaced"> |
|||
<h2 class="oe_slogan">Timesheet PDF Report of Employee</h2> |
|||
<h3 class="oe_slogan">..Print timesheets of selected employees..</h3> |
|||
<h4 class="oe_slogan">Cybrosys Technologies , www.cybrosys.com</h4> |
|||
<div> |
|||
<p class='oe_mt32' style="text-align: center;"> |
|||
This module by Cybrosys Technologies allows to print the timesheets of selected employee. It will group all timesheet lines |
|||
of selected employee in wizard by period. |
|||
</div> |
|||
</div> |
|||
</section> |
|||
|
|||
<section class="oe_container oe_dark"> |
|||
<div class="oe_row oe_spaced"> |
|||
<div class="oe_span12"> |
|||
<h3 class="oe_slogan">Generate Timesheet Report Wizard With Dates:</h3> |
|||
<div class="oe_demo oe_picture oe_screenshot"> |
|||
<img src="image1.png"> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
|
|||
<section class="oe_container"> |
|||
<div class="oe_row oe_spaced"> |
|||
<div class="oe_span12"> |
|||
<h3 class="oe_slogan">PDF Report Of Employee Timesheet:</h3> |
|||
<div class="oe_demo oe_picture oe_screenshot"> |
|||
<img src="image2.png"> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
|
|||
<section class="oe_container oe_dark" style="padding-top: 153px;"> |
|||
<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> |
@ -0,0 +1,22 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################## |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# Copyright (C) 2009-TODAY Cybrosys Technologies(<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 timesheet_employee |
@ -0,0 +1,39 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################## |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# Copyright (C) 2009-TODAY Cybrosys Technologies(<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 odoo import models, fields |
|||
|
|||
|
|||
class EmployeeTimesheet(models.TransientModel): |
|||
_name = 'timesheet.wizard' |
|||
|
|||
employee = fields.Many2one('res.users', string="Employee", required=True) |
|||
from_date = fields.Date(string="Starting Date") |
|||
to_date = fields.Date(string="Ending Date") |
|||
|
|||
def print_timesheet(self, data): |
|||
"""Redirects to the report with the values obtained from the wizard |
|||
'data['form']': name of employee and the date duration""" |
|||
data = {} |
|||
data['form'] = self.read(['employee', 'from_date', 'to_date'])[0] |
|||
return self.env['report'].get_action(self, 'timesheets_by_employee.report_timesheets', data=data) |
|||
|
@ -0,0 +1,51 @@ |
|||
<?xml version="1.0" encoding="utf-8" ?> |
|||
<odoo> |
|||
<data> |
|||
<record id="timesheets_report_view" model="ir.ui.view"> |
|||
<field name="name">Timesheets Wizard</field> |
|||
<field name="model">timesheet.wizard</field> |
|||
<field name="arch" type="xml"> |
|||
<form> |
|||
<group> |
|||
<group string="Select Employee"> |
|||
<field name="employee"/> |
|||
</group> |
|||
<group string="Select Date"> |
|||
<field name="from_date"/> |
|||
<field name="to_date"/> |
|||
</group> |
|||
<footer> |
|||
<button string="Print Timesheet" name="print_timesheet" type="object" class="btn-primary"/> |
|||
<button string="Discard" class="btn-default" special="cancel"/> |
|||
</footer> |
|||
</group> |
|||
</form> |
|||
</field> |
|||
</record> |
|||
|
|||
<record id="action_print_timesheet_wizard" model="ir.actions.act_window"> |
|||
<field name="name">Generate Timesheet Report</field> |
|||
<field name="res_model">timesheet.wizard</field> |
|||
<field name="type">ir.actions.act_window</field> |
|||
<field name="view_type">form</field> |
|||
<field name="view_mode">form</field> |
|||
<field name="view_id" ref="timesheets_report_view"/> |
|||
<field name="target">new</field> |
|||
</record> |
|||
|
|||
<menuitem name="Print Timesheets" id="print_timesheets" action="action_print_timesheet_wizard" parent="hr_timesheet.menu_timesheets_reports"/> |
|||
|
|||
<report |
|||
id="action_report_print_timesheets" |
|||
model="timesheet.wizard" |
|||
report_type="qweb-pdf" |
|||
string="Timesheets" |
|||
name="timesheets_by_employee.report_timesheets" |
|||
file="timesheets_by_employee.report_timesheets" |
|||
menu="False" |
|||
/> |
|||
</data> |
|||
</odoo> |
|||
|
|||
|
|||
|
Loading…
Reference in new issue