Browse Source

[ADD] Initial Commit

pull/29/head
SHEREEF PT 8 years ago
parent
commit
f3fce310c3
  1. 14
      hr_payslip_monthly_report/README.rst
  2. 25
      hr_payslip_monthly_report/__init__.py
  3. 45
      hr_payslip_monthly_report/__manifest__.py
  4. 26
      hr_payslip_monthly_report/models/__init__.py
  5. 83
      hr_payslip_monthly_report/models/hr_payroll_report.py
  6. 2
      hr_payslip_monthly_report/security/ir.model.access.csv
  7. BIN
      hr_payslip_monthly_report/static/description/HR Payslip Report view.png
  8. BIN
      hr_payslip_monthly_report/static/description/HR report group by.png
  9. BIN
      hr_payslip_monthly_report/static/description/Payslip Graph Report.png
  10. BIN
      hr_payslip_monthly_report/static/description/banner.jpg
  11. BIN
      hr_payslip_monthly_report/static/description/cybro_logo.png
  12. BIN
      hr_payslip_monthly_report/static/description/icon.png
  13. 124
      hr_payslip_monthly_report/static/description/index.html
  14. 68
      hr_payslip_monthly_report/views/menu_payslip_report.xml
  15. 112
      hr_payslip_monthly_report/views/quotation_handler.xml~

14
hr_payslip_monthly_report/README.rst

@ -0,0 +1,14 @@
Payroll-Payslip Reporting v10
=============================
This Module help Human resource managers to get a over all view for the payslips as pivot.
Features
========
* Pivot view for HR payslips.
* Group By options like Employee wise, department wise, job title wise, date wise, status wise and Company wise.
* Spot Export to XLS Report.
Credits
=======
Nikhil Krishnan @ cybrosys, nikhil@cybrosys.in

25
hr_payslip_monthly_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: Nikhil krishnan(<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 models

45
hr_payslip_monthly_report/__manifest__.py

@ -0,0 +1,45 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<http://www.cybrosys.com>).
# Author: Nikhil krishnan(<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': 'Payroll-Payslip Reporting',
'version': '10.0.1.0.0',
'summary': """Payslip Pivot View Report.""",
'description': """Payslip monthly report.
This module gives a pivot view for the HR managers. they can see all the 'NET' amount of payslips in all states""",
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'website': 'http://www.cybrosys.com',
'category': 'Human Resources',
'depends': ['hr_payroll'],
'license': 'LGPL-3',
'data': [
'security/ir.model.access.csv',
'views/menu_payslip_report.xml'
],
'demo': [],
'images': ['static/description/banner.jpg'],
'installable': True,
'auto_install': False,
}

26
hr_payslip_monthly_report/models/__init__.py

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

83
hr_payslip_monthly_report/models/hr_payroll_report.py

@ -0,0 +1,83 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<http://www.cybrosys.com>).
# Author: Nikhil krishnan(<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 fields, models, tools, api
class PayrollReportView(models.Model):
_name = 'hr.payroll.report.view'
_auto = False
name = fields.Many2one('hr.employee', string='Employee')
date_from = fields.Date(string='From')
date_to = fields.Date(string='To')
state = fields.Selection([('draft', 'Draft'), ('verify', 'Waiting'), ('done', 'Done'), ('cancel', 'Rejected')],
string='Status')
job_id = fields.Many2one('hr.job', string='Job Title')
company_id = fields.Many2one('res.company', string='Company')
department_id = fields.Many2one('hr.department', string='Department')
net = fields.Float(string='Net Salary')
def _select(self):
select_str = """
min(ps.id) as id,emp.id as name,jb.id as job_id,
dp.id as department_id,cmp.id as company_id,
ps.date_from, ps.date_to, sum(psl.total) as net, ps.state as state
"""
return select_str
def _from(self):
from_str = """
hr_payslip_line psl join hr_payslip ps on (ps.employee_id=psl.employee_id and ps.id=psl.slip_id)
join hr_employee emp on (ps.employee_id=emp.id) join hr_department dp on (emp.department_id=dp.id)
join hr_job jb on (emp.department_id=jb.id) join res_company cmp on (cmp.id=ps.company_id) where psl.code='NET'
"""
return from_str
def _group_by(self):
group_by_str = """
group by emp.id,psl.total,ps.date_from, ps.date_to, ps.state,jb.id,dp.id,cmp.id
"""
return group_by_str
@api.model_cr
def init(self):
tools.drop_view_if_exists(self.env.cr, self._table)
self.env.cr.execute("""CREATE or REPLACE VIEW %s as ( SELECT
%s
FROM %s
%s
)""" % (self._table, self._select(), self._from(), self._group_by()))
# _________________Query________________________
# select emp.name_related as name,emp.id as employee_id,jb.name as job,jb.id as job_id,
# dp.name as department,dp.id as department_id,cmp.name as company,cmp.id as company_id,
# ps.date_from, ps.date_to, sum(psl.total) as net, ps.state as state from hr_payslip_line psl join hr_payslip
# ps on (ps.employee_id=psl.employee_id and ps.id=psl.slip_id)
# join hr_employee emp on (ps.employee_id=emp.id) join hr_department dp on (emp.department_id=dp.id)
# join hr_job jb on (emp.department_id=jb.id) join res_company cmp on (cmp.id=ps.company_id) where
# psl.code='NET' group by emp.name_related,emp.id,psl.total,ps.date_from, ps.date_to, ps.state,dp.name,jb.name,
# cmp.name,jb.id,dp.id,cmp.id

2
hr_payslip_monthly_report/security/ir.model.access.csv

@ -0,0 +1,2 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_hr_payslip_monthly_report_manager,hr.payroll.report.view,hr_payslip_monthly_report.model_hr_payroll_report_view,hr.group_hr_manager,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_hr_payslip_monthly_report_manager hr.payroll.report.view hr_payslip_monthly_report.model_hr_payroll_report_view hr.group_hr_manager 1 1 1 1

BIN
hr_payslip_monthly_report/static/description/HR Payslip Report view.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

BIN
hr_payslip_monthly_report/static/description/HR report group by.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
hr_payslip_monthly_report/static/description/Payslip Graph Report.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
hr_payslip_monthly_report/static/description/banner.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

BIN
hr_payslip_monthly_report/static/description/cybro_logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
hr_payslip_monthly_report/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

124
hr_payslip_monthly_report/static/description/index.html

@ -0,0 +1,124 @@
<section class="oe_container">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan">Payroll-Payslip Reporting</h2>
<h3 class="oe_slogan">Get an overview of the pay slips as pivot</h3>
<h4 class="oe_slogan">Author : Cybrosys Techno Solutions , www.cybrosys.com</h4>
<div>
<h4><p>Features:</p></h4>
<ul>
<li style="list-style:none !important;"><span style="color:green;"> &#9745;</span>&nbsp;&nbsp; <b>Retrieve pivot view of pay slips.</b></li>
<li style="list-style:none !important;"><span style="color:green; "> &#9745;</span>&nbsp;&nbsp; <b>Able to get Reports</b> </li>
<ul style="padding-left: 36px;padding-top: 2px;">
<li style="list-style:outside !important;">Employee wise,</li>
<li style="list-style:outside !important;">Employee's department wise,</li>
<li style="list-style:outside !important;">Employee's job title wise,</li>
<li style="list-style:outside !important;">Pay slip's date wise,</li>
<li style="list-style:outside !important;">Pay slip's status wise,</li>
<li style="list-style:outside !important;">Company wise.</li>
</ul>
<li style="list-style:none !important;"><span style="color:green;"> &#9745;</span>&nbsp;&nbsp; <b>Spot Export to XLS Report.</b></li>
</ul>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan">Payroll Monthly Statement in Pivot View</h2>
<div class="oe_row oe_spaced">
<div class="oe_span12">
<p class="oe_mt32">
This report helps in payroll analysis. This helps you to check your pay slips and sorting it out from different group
criteria (Employee, Job title, Department, Company, Pay slip etc.).
</p>
</div>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<h3 class="oe_slogan">Payroll report as Pivot</h3>
<div class="oe_row oe_spaced">
<div class="oe_span12">
<div class="oe_row_img oe_centered">
<img class="oe_picture oe_screenshot" src="HR Payslip Report view.png">
</div>
</div>
<div class="oe_span12">
<p class="oe_mt32">
HR managers need a complete payroll statement and also payroll monthly statement. From
this pivot view we can easily generate the custom payroll report views in excel format. Also
we can download it from there. From Odoo payroll report we can get only individual employee
pay slip reports. To make the use of HR payroll management system easier we can use this pivot
view to get the payroll/pay slip statement.
</p>
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<h3 class="oe_slogan">Group by the pivot view</h3>
<div class="oe_row oe_spaced">
<div class="oe_span12">
<div class="oe_row_img oe_centered">
<img class="oe_picture oe_screenshot" src="HR report group by.png">
</div>
</div>
<div class="oe_span12">
<p class="oe_mt32">
In this View we can easily generate custom reports by using the + button,
That is we can make the filters by groups, also we can get the counts too, from the "Measures" Button
</p>
</div>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<h3 class="oe_slogan">Graph View</h3>
<div class="oe_row oe_spaced">
<div class="oe_span12">
<div class="oe_row_img oe_centered">
<img class="oe_picture oe_screenshot" src="Payslip Graph Report.png">
</div>
</div>
<div class="oe_span12">
<p class="oe_mt32">
In Pivot view we can easily generate custom Graphs like Pie Chart,Bar Chart, Line Chart.
With date and net salary or date and pay slip's counts.
</p>
</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;">
<div>
<a class="btn btn-primary btn-lg mt8"
style="color: #FFFFFF !important;border-radius: 0;" 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;border-radius: 0;"
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;border-radius: 0;"
href="http://www.cybrosys.com/odoo-customization-and-installation/"><i
class="fa fa-check-square"></i> Request Customization </a>
</div>
<br>
<img src="cybro_logo.png" style="width: 190px; margin-bottom: 20px;" class="center-block">
<div>
<a href="https://twitter.com/cybrosys" target="_blank"><i class="fa fa-2x fa-twitter" style="color:white;background: #00a0d1;width:35px;"></i></a></td>
<a href="https://www.linkedin.com/company/cybrosys-technologies-pvt-ltd" target="_blank"><i class="fa fa-2x fa-linkedin" style="color:white;background: #31a3d6;width:35px;padding-left: 3px;"></i></a></td>
<a href="https://www.facebook.com/cybrosystechnologies" target="_blank"><i class="fa fa-2x fa-facebook" style="color:white;background: #3b5998;width:35px;padding-left: 8px;"></i></a></td>
<a href="https://plus.google.com/106641282743045431892/about" target="_blank"><i class="fa fa-2x fa-google-plus" style="color:white;background: #c53c2c;width:35px;padding-left: 3px;"></i></a></td>
<a href="https://in.pinterest.com/cybrosys" target="_blank"><i class="fa fa-2x fa-pinterest" style="color:white;background: #ac0f18;width:35px;padding-left: 3px;"></i></a></td>
</div>
</div>
</section>

68
hr_payslip_monthly_report/views/menu_payslip_report.xml

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="hr_payroll_report_view_pivot" model="ir.ui.view">
<field name="name">hr.payslip.pivot</field>
<field name="model">hr.payroll.report.view</field>
<field name="arch" type="xml">
<pivot string="Payslip Analysis">
<field name="name" type="row"/>
<field name="date_from" interval="month" type="col"/>
<field name="net" type="measure"/>
</pivot>
</field>
</record>
<record id="hr_payroll_report_view_graph" model="ir.ui.view">
<field name="name">hr.payslip.graph</field>
<field name="model">hr.payroll.report.view</field>
<field name="arch" type="xml">
<graph string="Payslip Analysis">
<field name="date_from" type="row"/>
<field name="net" type="measure"/>
</graph>
</field>
</record>
<record id="hr_payroll_report_view_search" model="ir.ui.view">
<field name="name">hr.payslip.search</field>
<field name="model">hr.payroll.report.view</field>
<field name="arch" type="xml">
<search string="Payslip Analysis">
<field name="name"/>
<field name="date_from"/>
<field name="company_id" groups="base.group_multi_company"/>
<filter string="This Year" name="year" domain="[('date_from','&lt;=', time.strftime('%%Y-12-31')),('date_from','&gt;=',time.strftime('%%Y-01-01')),('date_to','&lt;=', time.strftime('%%Y-12-31')),('date_to','&gt;=',time.strftime('%%Y-01-01'))]"/>
<filter name="Salary" string="Salary" domain="[('state','=', 'done')]"/>
<filter name="Draft" string="Draft" domain="[('state','=','draft')]"/>
<separator/>
<field name="department_id"/>
<group expand="1" string="Group By">
<filter string="Employee" name="Employee" context="{'group_by':'name'}"/>
<filter string="Job" context="{'group_by':'job_id'}"/>
<filter string="Department" context="{'group_by':'department_id'}"/>
<filter name="status" string="Status" context="{'group_by':'state'}"/>
<filter string="Company" groups="base.group_multi_company" context="{'group_by':'company_id'}"/>
</group>
</search>
</field>
</record>
<record id="action_hr_payslip_view_report" model="ir.actions.act_window">
<field name="res_model">hr.payroll.report.view</field>
<field name="name">Payslips</field>
<field name="view_type">form</field>
<field name="view_mode">pivot,graph</field>
<field name="context">{'search_default_year':1}</field>
<field name="help">This report helps in payroll analysis. This helps you to check your pay slips and sorting it out from different group
criteria (Employee, Job title, Department, Company, Pay slip etc.).</field>
</record>
<menuitem name="Reports" id="menu_hr_payslip_reports" parent="hr_payroll.menu_hr_payroll_root" />
<menuitem id="menu_hr_payslip_view_report" name="Payslip Report"
parent="menu_hr_payslip_reports" action="action_hr_payslip_view_report"
groups="hr.group_hr_manager" sequence="10"/>
</data>
</odoo>

112
hr_payslip_monthly_report/views/quotation_handler.xml~

@ -0,0 +1,112 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="act_sale_order_2_revised" model="ir.actions.act_window">
<field name="name">Revised Quotation Orders</field>
<field name="res_model">sale.order</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="sale.view_quotation_tree"/>
<field name="domain">[('parent_so_id', '=', active_id)]</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Revised order against this Quotation Order.
</p>
</field>
</record>
<!--In sale order menu, we need to avoid the 'revised' state orders. -->
<record id="sale.action_orders" model="ir.actions.act_window">
<field name="name">Sales Orders</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">sale.order</field>
<field name="view_type">form</field>
<field name="view_mode">tree,kanban,form,calendar,pivot,graph</field>
<field name="search_view_id" ref="sale.sale_order_view_search_inherit_sale"/>
<field name="context">{}</field>
<field name="domain">[('state', 'not in', ('draft','revised','sent', 'cancel'))]</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Create a Quotation, the first step of a new sale.
</p><p>
Once the quotation is confirmed, it becomes a sales order.
You'll be able to invoice it and collect payments.
From the <i>Sales Orders</i> menu, you can track delivery
orders or services.
</p>
</field>
</record>
<record id="sale.action_quotations" model="ir.actions.act_window">
<field name="name">Quotations</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">sale.order</field>
<field name="view_type">form</field>
<field name="view_id" ref="sale.view_quotation_tree"/>
<field name="view_mode">tree,kanban,form,calendar,pivot,graph</field>
<field name="context">{}</field>
<field name="domain">[('state','in',('pre','draft','sent','cancel'))]</field>
<field name="search_view_id" ref="sale.view_sales_order_filter"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Create a Quotation, the first step of a new sale.
</p><p>
Your next actions should flow efficiently: confirm the Quotation
to a Sale Order, then create the Invoice and collect the Payment.
</p><p>
Note that once a Quotation becomes a Sale Order, it will be moved
from the Quotations list to the Sales Order list.
</p>
</field>
</record>
<record id="view_order_form_revised" model="ir.ui.view">
<field name="name">sale.order.form</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form" />
<field name="arch" type="xml">
<xpath expr="//button[@name='action_confirm']" position="after">
<button name="make_revision" string="Revise the Quotation" type="object" states="sent" class="btn-primary"/>
<button name="action_quotation_send" string="Send by Email" type="object" states="pre" class="btn-primary"/>
<button name="print_quotation" string="Print" type="object" states="pre" class="btn-primary"/>
<button name="action_cancel" states="pre" type="object" string="Cancel"/>
</xpath>
<xpath expr="//div[@name='button_box']" position="inside">
<button class="oe_inline oe_stat_button" type="action" name="%(act_sale_order_2_revised)d"
icon="fa-bars" attrs="{'invisible':[('state','in',[('draft','revised')]}">
<field string="Revised Quotation Orders" name="revised_order_count" widget="statinfo"/>
</button>
</xpath>
<xpath expr="//field[@name='order_line']" position="attributes">
<attribute name="attrs">{'readonly': [('state', 'in', ('sent','revised','done','cancel'))]}</attribute>
</xpath>
<xpath expr="//field[@name='payment_term_id']" position="attributes">
<attribute name="attrs">{'readonly': [('state', 'in', ('sent','revised','done','cancel'))]}</attribute>
</xpath>
<xpath expr="//field[@name='user_id']" position="attributes">
<attribute name="attrs">{'readonly': [('state', 'in', ('sent','revised','done','cancel'))]}</attribute>
</xpath>
<xpath expr="//field[@name='team_id']" position="attributes">
<attribute name="attrs">{'readonly': [('state', 'in', ('sent','revised','done','cancel'))]}</attribute>
</xpath>
</field>
</record>
<record id="view_quotation_handler_tree" model="ir.ui.view">
<field name="name">sale.order.tree</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_quotation_tree" />
<field name="arch" type="xml">
<xpath expr="//field[@name='state']" position="replace">
<field name="state"/>
</xpath>
</field>
</record>
</data>
</odoo>
Loading…
Cancel
Save