[IMP]:hr_holidays:Improved SQL report.(Leaves).

bzr revid: apa@tinyerp.com-20100427094343-mbfa6xv6mgri5xqj
This commit is contained in:
apa-tiny
2010-04-27 15:13:43 +05:30
parent cf2cc7081f
commit bb50f760f7
2 changed files with 81 additions and 45 deletions
@@ -30,14 +30,17 @@ class hr_holidays_report(osv.osv):
_columns = {
'date': fields.datetime('Date', readonly=True),
'year': fields.char('Year', size=4, readonly=True),
'day': fields.char('Day', size=15, readonly=True),
'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'),
('05','May'), ('06','June'), ('07','July'), ('08','August'), ('09','September'),
('10','October'), ('11','November'), ('12','December')], 'Month',readonly=True),
'date_from' : fields.datetime('Start Date', readonly=True),
'date_to' : fields.datetime('End Date', readonly=True),
'number_of_days_temp': fields.float('Number of Days', readonly=True),
'number_of_days_temp': fields.float('#Days', readonly=True),
'employee_id' : fields.many2one('hr.employee', "Employee's Name",readonly=True),
'user_id':fields.many2one('res.users', 'User', readonly=True),
'holiday_status_id' : fields.many2one("hr.holidays.status", "Leave Type",readonly=True),
'department_id':fields.many2one('hr.department','Department',readonly=True),
'state': fields.selection([('draft', 'Draft'),
('confirm', 'Waiting Validation'),
('refuse', 'Refused'),
@@ -52,21 +55,25 @@ class hr_holidays_report(osv.osv):
create or replace view hr_holidays_report as (
select
min(s.id) as id,
date_trunc('seconds',s.create_date) as date,
date_trunc('day',s.create_date) as date,
date_trunc('day',s.date_from) as date_from,
date_trunc('day',s.date_to) as date_to,
s.number_of_days_temp,
sum(s.number_of_days_temp) as number_of_days_temp,
s.employee_id,
s.user_id as user_id,
to_char(s.create_date, 'YYYY') as year,
to_char(s.create_date, 'MM') as month,
to_char(s.create_date, 'YYYY-MM-DD') as day,
s.holiday_status_id,
s.department_id,
s.state
from
hr_holidays s
where type='remove'
group by
s.create_date,s.state,s.date_from,s.date_to,
s.number_of_days_temp,s.employee_id,s.user_id
s.employee_id,s.user_id,s.holiday_status_id,
s.department_id
)
""")
hr_holidays_report()
@@ -98,7 +105,7 @@ class hr_holidays_remaining_leaves_user(osv.osv):
where
hrs.employee_id = hre.id and
hre.resource_id = rr.id and
hhs.id = hrs.holiday_status_id
hhs.id = hrs.holiday_status_id
group by
rr.name,rr.user_id,hhs.name
)
@@ -7,14 +7,17 @@
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Leaves Statistics">
<field name="date"/>
<field name="employee_id"/>
<field name="date_from"/>
<field name="date_to"/>
<field name="number_of_days_temp"/>
<field name="date" invisible="1"/>
<field name="employee_id" invisible="1"/>
<field name="date_from" invisible="1"/>
<field name="date_to" invisible="1"/>
<field name="number_of_days_temp" sum="#Days"/>
<field name="holiday_status_id" invisible="1"/>
<field name="department_id" invisible="1"/>
<field name="year" invisible="1"/>
<field name="day" invisible="1"/>
<field name="month" invisible="1"/>
<field name="state"/>
<field name="state" invisible="1"/>
</tree>
</field>
</record>
@@ -27,6 +30,7 @@
<graph string="Leaves Statistics" type="bar">
<field name="employee_id"/>
<field name="number_of_days_temp" operator="+"/>
<field name="state" group = "True"/>
</graph>
</field>
</record>
@@ -37,44 +41,69 @@
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Leaves">
<filter icon="terp-hr"
string="This Year"
domain="[('year','=',time.strftime('%%Y'))]"
help="Leaves of the year"/>
<filter icon="terp-hr"
string="This Month"
domain="[('month','=',time.strftime('%%m'))]"
help="Leaves of this month"/>
<separator orientation="vertical"/>
<filter icon="terp-hr"
string="Draft"
domain="[('state','=','draft')]"/>
<filter icon="terp-hr"
string="Validate"
domain="[('state','=','validate')]"/>
<filter icon="terp-hr"
string="Start Leaves"
domain="[('date_from','=',time.strftime('%%Y/%%m/%%d'))]"/>
<filter icon="terp-hr"
string="End Leaves"
domain="[('date_to','=',time.strftime('%%Y/%%m/%%d'))]"/>
<separator orientation="vertical"/>
<field name="employee_id"/>
<field name="user_id" widget="selection">
<filter icon="terp-sale"
string="My Leaves"
default="1"
domain="[('user_id','=',uid)]"/>
</field>
<group>
<filter icon="terp-hr" string="This Year"
domain="[('date','&lt;=', time.strftime('%%Y-%%m-%%d')),('date','&gt;',(datetime.date.today()-datetime.timedelta(days=365)).strftime('%%Y-%%m-%%d'))]"
help="Leaves in this year"/>
<filter icon="terp-hr" string="This Month"
name="month"
domain="[('date','&lt;=', time.strftime('%%Y-%%m-%%d')), ('date','&gt;',(datetime.date.today()-datetime.timedelta(days=30)).strftime('%%Y-%%m-%%d'))]"
help="Leaves in this month"/>
<filter icon="gtk-media-rewind"
string=" 7 Days "
separator="1"
domain="[('date','&lt;=', time.strftime('%%Y-%%m-%%d')), ('date','&gt;',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
help="Leaves during last 7 days"/>
<separator orientation="vertical"/>
<filter string="Draft"
icon="terp-hr"
domain="[('state','=','draft')]"
help = "Draft Leaves"/>
<filter string="Waiting Validation"
icon="terp-hr"
domain="[('state', '=' ,'confirm')]"
help = "In progress Leaves"/>
<filter string="Validated"
icon="terp-hr"
domain="[('state','=','validate')]"
help = "Pending Leaves"/>
<separator orientation="vertical"/>
<field name="employee_id" widget="selection">
<filter icon="terp-hr"
string="My Leaves"
domain="[('user_id','=',uid)]"/>
</field>
</group>
<newline/>
<group expand="0" string="Extended options..." colspan="10" col="12">
<filter icon="terp-hr"
string="Refused"
name="done"
domain="[('state','=','refuse')]"/>
<separator orientation="vertical"/>
<field name="date_from"/>
<separator orientation="vertical"/>
<field name="holiday_status_id" widget="selection"/>
<newline/>
<filter icon="terp-hr"
string="Cancelled"
domain="[('state','=','cancel')]"/>
<separator orientation="vertical"/>
<field name="date_to"/>
<separator orientation="vertical"/>
<field name="department_id" widget="selection"/>
</group>
<newline/>
<group expand="1" string="Group By..." colspan="10" col="12">
<filter string="Employee" name="employee" icon="terp-hr" context="{'group_by':'employee_id'}"/>
<filter string="Employee" name="Employee" icon="terp-hr" context="{'group_by':'employee_id'}"/>
<filter string="Type" icon="terp-hr" context="{'group_by':'holiday_status_id'}"/>
<separator orientation="vertical"/>
<filter string="Department" icon="terp-hr" context="{'group_by':'department_id'}"/>
<filter string="State" icon="terp-hr" context="{'group_by':'state'}"/>
<separator orientation="vertical"/>
<filter string="Month" icon="terp-sale" context="{'group_by':'date'}"/>
<filter string="Year" icon="terp-sale" context="{'group_by':'year'}"/>
<filter string="Day" icon="terp-hr" context="{'group_by':'day'}"/>
<filter string="Month" icon="terp-hr" context="{'group_by':'date'}"/>
<filter string="Year" icon="terp-hr" context="{'group_by':'year'}"/>
</group>
</search>
</field>
@@ -85,7 +114,7 @@
<field name="res_model">hr.holidays.report</field>
<field name="view_type">form</field>
<field name="view_mode">tree,graph</field>
<field name="context">{'search_default_employee': 1}</field>
<field name="context">{'search_default_month':1,'search_default_Employee':1,'group_by_no_leaf':1,'group_by':[]}</field>
<field name="search_view_id" ref="view_hr_holidays_report_search"/>
</record>