class Lectures(Model): _name = 'academy.lectures' _order = 'date ASC' name = Char(required=True, string="Name") date = Date(required=True, string="Date")
class hr_timesheet_sheet_sheet_day_cat_detail(osv.osv): _name = "hr_timesheet_sheet.sheet.day_cat_detail" _description = "Category by Days in Period" _auto = False _order = 'name' # Fields: name = Date(string='Date', readonly='True') timesheet_id = Many2one(comodel_name='hr_timesheet_sheet.sheet', string='Timesheet') employee_id = Many2one(comodel_name='hr.employee', string='Employee') ga = Float(string="GA", readonly='True') ga_e = Float(string="GA Expense", readonly='True') ga_a = Float(string="GA Abroad", readonly='True') ga_ae = Float(string="GA Abroad Expense", readonly='True') cm = Float(string="CM", readonly='True') cm_e = Float(string="CM Expense", readonly='True') cm_a = Float(string="CM Abroad", readonly='True') cm_ae = Float(string="CM Abroad Expense", readonly='True') t = Float(string="T", readonly='True') t_e = Float(string="T Expense", readonly='True') t_a = Float(string="T Abroad", readonly='True') t_ae = Float(string="T Abroad Expense", readonly='True') os = Float(string="OS", readonly='True') os_e = Float(string="OS Expense", readonly='True') os_a = Float(string="OS Abroad", readonly='True') os_ae = Float(string="OS Abroad Expense", readonly='True') sum_e = Float(string="Expense", readonly='True') sum_a = Float(string="Abroad", readonly='True') sum_ae = Float(string="Abroad Expense", readonly='True') # Sum of the events categories per day def init(self, cr): tools.drop_view_if_exists(cr, 'hr_timesheet_sheet_sheet_day_cat_detail') cr.execute(""" CREATE OR REPLACE VIEW hr_timesheet_sheet_sheet_day_cat_detail as ( select ts.id * 100000 + ((period.day::date - ts.date_from::timestamp::date) + 1) AS id ,ts.id timesheet_id ,ts.employee_id ,ts.user_id ,period.day as name ,count(distinct e.id) ,sum(case when cc.name = 'GENERAL ACTIVITY' then e.duration else 0 end) ga ,sum(case when cc.name = 'GENERAL ACTIVITY > Expense Entitled' then e.duration else 0 end) ga_e ,sum(case when cc.name = 'GENERAL ACTIVITY > Abroad' then e.duration else 0 end) ga_a ,sum(case when cc.name = 'GENERAL ACTIVITY > Abroad > Expense Entitled' then e.duration else 0 end) ga_ae ,sum(case when cc.name = 'CUSTOMER MEETING' then e.duration else 0 end) cm ,sum(case when cc.name = 'CUSTOMER MEETING > Expense Entitled' then e.duration else 0 end) cm_e ,sum(case when cc.name = 'CUSTOMER MEETING > Abroad' then e.duration else 0 end) cm_a ,sum(case when cc.name = 'CUSTOMER MEETING > Abroad > Expense Entitled' then e.duration else 0 end) cm_ae ,sum(case when cc.name = 'TRIP' then e.duration else 0 end) t ,sum(case when cc.name = 'TRIP > Expense Entitled' then e.duration else 0 end) t_e ,sum(case when cc.name = 'TRIP > Abroad' then e.duration else 0 end) t_a ,sum(case when cc.name = 'TRIP > Abroad > Expense Entitled' then e.duration else 0 end) t_ae ,sum(case when cc.name = 'OVERNIGHT STAY > Expense Entitled' then e.duration else 0 end) os_e ,sum(case when cc.name = 'OVERNIGHT STAY > Abroad' then e.duration else 0 end) os_a ,sum(case when cc.name = 'OVERNIGHT STAY > Abroad > Expense Entitled' then e.duration else 0 end) os_ae ,sum(case when cc.name = 'OVERNIGHT STAY' then e.duration else 0 end) os -- ,sum(case when cc.name like '%Expense%' then e.duration else 0 end) sum_exp -- ,sum(case when cc.name like '%Abroad%' then e.duration else 0 end) sum_abr ,sum(case when cc.name in ( 'GENERAL ACTIVITY > Expense Entitled' ,'CUSTOMER MEETING > Expense Entitled' ,'TRIP > Expense Entitled' ) then e.duration else 0 end) sum_e ,sum(case when cc.name in ( 'GENERAL ACTIVITY > Abroad' ,'CUSTOMER MEETING > Abroad' ,'TRIP > Abroad' ) then e.duration else 0 end) sum_a ,sum(case when cc.name in ( 'GENERAL ACTIVITY > Abroad > Expense Entitled' ,'CUSTOMER MEETING > Abroad > Expense Entitled' ,'TRIP > Abroad > Expense Entitled' ) then e.duration else 0 end) sum_ae ,p.name partner_name from hr_timesheet_sheet_sheet ts inner join res_users u on u.id = ts.user_id inner join res_partner p on p.id = u.partner_id cross join generate_series(ts.date_from::timestamp without time zone, ts.date_to::timestamp without time zone, '1 day'::interval) period(day) left join calendar_event e on e.user_id = ts.user_id and e.start_datetime::timestamp::date = period.day::timestamp::date and e.category_id in (select id from calendar_event_category where name in ('GENERAL ACTIVITY' ,'GENERAL ACTIVITY > Expense Entitled' ,'GENERAL ACTIVITY > Abroad' ,'GENERAL ACTIVITY > Abroad > Expense Entitled' ,'CUSTOMER MEETING' ,'CUSTOMER MEETING > Expense Entitled' ,'CUSTOMER MEETING > Abroad' ,'CUSTOMER MEETING > Abroad > Expense Entitled' ,'TRIP' ,'TRIP > Expense Entitled' ,'TRIP > Abroad' ,'TRIP > Abroad > Expense Entitled' ,'OVERNIGHT STAY > Expense Entitled' ,'OVERNIGHT STAY > Abroad' ,'OVERNIGHT STAY > Abroad > Expense Entitled' ,'OVERNIGHT STAY')) left join calendar_event_category cc on cc.id = e.category_id group by ts.id ,ts.employee_id ,ts.user_id ,period.day ,p.name order by ts.id, period.day )""")