From 90f690f3ebff6be8f843b30c9be4a1265958a600 Mon Sep 17 00:00:00 2001 From: Pawan Kumar Date: Wed, 9 Jun 2021 12:20:07 +0530 Subject: [PATCH] show leave entry in timesheet with start and end datetime --- cor_leave/__init__.py | 4 ++ cor_leave/__manifest__.py | 35 +++++++++++++++ cor_leave/controllers/__init__.py | 3 ++ cor_leave/controllers/controllers.py | 21 +++++++++ cor_leave/demo/demo.xml | 30 +++++++++++++ cor_leave/models/__init__.py | 4 ++ cor_leave/models/hr_holidays.py | 44 +++++++++++++++++++ cor_leave/models/models.py | 18 ++++++++ cor_leave/security/ir.model.access.csv | 2 + cor_leave/views/templates.xml | 24 +++++++++++ cor_leave/views/views.xml | 60 ++++++++++++++++++++++++++ 11 files changed, 245 insertions(+) create mode 100755 cor_leave/__init__.py create mode 100755 cor_leave/__manifest__.py create mode 100755 cor_leave/controllers/__init__.py create mode 100755 cor_leave/controllers/controllers.py create mode 100755 cor_leave/demo/demo.xml create mode 100755 cor_leave/models/__init__.py create mode 100755 cor_leave/models/hr_holidays.py create mode 100755 cor_leave/models/models.py create mode 100755 cor_leave/security/ir.model.access.csv create mode 100755 cor_leave/views/templates.xml create mode 100755 cor_leave/views/views.xml diff --git a/cor_leave/__init__.py b/cor_leave/__init__.py new file mode 100755 index 0000000..511a0ca --- /dev/null +++ b/cor_leave/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- + +from . import controllers +from . import models \ No newline at end of file diff --git a/cor_leave/__manifest__.py b/cor_leave/__manifest__.py new file mode 100755 index 0000000..4b291f5 --- /dev/null +++ b/cor_leave/__manifest__.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +{ + 'name': "cor_leave", + + 'summary': """ + Short (1 phrase/line) summary of the module's purpose, used as + subtitle on modules listing or apps.openerp.com""", + + 'description': """ + Long description of module's purpose + """, + + 'author': "My Company", + 'website': "http://www.yourcompany.com", + + # Categories can be used to filter modules in modules listing + # Check https://github.com/odoo/odoo/blob/14.0/odoo/addons/base/data/ir_module_category_data.xml + # for the full list + 'category': 'Uncategorized', + 'version': '0.1', + + # any module necessary for this one to work correctly + 'depends': ['base', 'cor_custom'], + + # always loaded + 'data': [ + # 'security/ir.model.access.csv', + 'views/views.xml', + 'views/templates.xml', + ], + # only loaded in demonstration mode + 'demo': [ + 'demo/demo.xml', + ], +} diff --git a/cor_leave/controllers/__init__.py b/cor_leave/controllers/__init__.py new file mode 100755 index 0000000..457bae2 --- /dev/null +++ b/cor_leave/controllers/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import controllers \ No newline at end of file diff --git a/cor_leave/controllers/controllers.py b/cor_leave/controllers/controllers.py new file mode 100755 index 0000000..1c7937d --- /dev/null +++ b/cor_leave/controllers/controllers.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# from odoo import http + + +# class CorLeave(http.Controller): +# @http.route('/cor_leave/cor_leave/', auth='public') +# def index(self, **kw): +# return "Hello, world" + +# @http.route('/cor_leave/cor_leave/objects/', auth='public') +# def list(self, **kw): +# return http.request.render('cor_leave.listing', { +# 'root': '/cor_leave/cor_leave', +# 'objects': http.request.env['cor_leave.cor_leave'].search([]), +# }) + +# @http.route('/cor_leave/cor_leave/objects//', auth='public') +# def object(self, obj, **kw): +# return http.request.render('cor_leave.object', { +# 'object': obj +# }) diff --git a/cor_leave/demo/demo.xml b/cor_leave/demo/demo.xml new file mode 100755 index 0000000..4cd48f6 --- /dev/null +++ b/cor_leave/demo/demo.xml @@ -0,0 +1,30 @@ + + + + + \ No newline at end of file diff --git a/cor_leave/models/__init__.py b/cor_leave/models/__init__.py new file mode 100755 index 0000000..3a20ef7 --- /dev/null +++ b/cor_leave/models/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- + +from . import models +from . import hr_holidays \ No newline at end of file diff --git a/cor_leave/models/hr_holidays.py b/cor_leave/models/hr_holidays.py new file mode 100755 index 0000000..eaf46b3 --- /dev/null +++ b/cor_leave/models/hr_holidays.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import api, fields, models, _ +from odoo.exceptions import ValidationError + + +class Holidays(models.Model): + _inherit = "hr.leave" + + timesheet_ids = fields.One2many('account.analytic.line', 'holiday_id', string="Analytic Lines") + + def _timesheet_create_lines(self): + self.ensure_one() + vals_list = [] + work_hours_data = self.employee_id.list_work_time_per_day( + self.date_from, + self.date_to, + ) + print('hhhhhhhhhh') + for index, (day_date, work_hours_count) in enumerate(work_hours_data): + vals_list.append(self._timesheet_prepare_line_values(index, work_hours_data, day_date, work_hours_count)) + timesheets = self.env['account.analytic.line'].sudo().create(vals_list) + print('ggggggggggg', timesheets) + return timesheets + + def _timesheet_prepare_line_values(self, index, work_hours_data, day_date, work_hours_count): + self.ensure_one() + return { + 'name': "%s (%s/%s)" % (self.holiday_status_id.name or '', index + 1, len(work_hours_data)), + 'project_id': self.holiday_status_id.timesheet_project_id.id, + 'task_id': self.holiday_status_id.timesheet_task_id.id, + 'account_id': self.holiday_status_id.timesheet_project_id.analytic_account_id.id, + 'unit_amount': work_hours_count, + 'user_id': self.employee_id.user_id.id, + 'date': day_date, + 'holiday_id': self.id, + 'employee_id': self.employee_id.id, + 'company_id': self.holiday_status_id.timesheet_task_id.company_id.id or self.holiday_status_id.timesheet_project_id.company_id.id, + ##### + 'start_datetime': self.date_from, + 'end_datetime': self.date_to + } + diff --git a/cor_leave/models/models.py b/cor_leave/models/models.py new file mode 100755 index 0000000..2470150 --- /dev/null +++ b/cor_leave/models/models.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- + +# from odoo import models, fields, api + + +# class cor_leave(models.Model): +# _name = 'cor_leave.cor_leave' +# _description = 'cor_leave.cor_leave' + +# name = fields.Char() +# value = fields.Integer() +# value2 = fields.Float(compute="_value_pc", store=True) +# description = fields.Text() +# +# @api.depends('value') +# def _value_pc(self): +# for record in self: +# record.value2 = float(record.value) / 100 diff --git a/cor_leave/security/ir.model.access.csv b/cor_leave/security/ir.model.access.csv new file mode 100755 index 0000000..e1c0269 --- /dev/null +++ b/cor_leave/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_cor_leave_cor_leave,cor_leave.cor_leave,model_cor_leave_cor_leave,base.group_user,1,1,1,1 \ No newline at end of file diff --git a/cor_leave/views/templates.xml b/cor_leave/views/templates.xml new file mode 100755 index 0000000..cea6b39 --- /dev/null +++ b/cor_leave/views/templates.xml @@ -0,0 +1,24 @@ + + + + + \ No newline at end of file diff --git a/cor_leave/views/views.xml b/cor_leave/views/views.xml new file mode 100755 index 0000000..317803d --- /dev/null +++ b/cor_leave/views/views.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file