show leave entry in timesheet with start and end datetime

This commit is contained in:
Pawan Kumar 2021-06-09 12:20:07 +05:30
parent 190f47b93b
commit 90f690f3eb
11 changed files with 245 additions and 0 deletions

4
cor_leave/__init__.py Executable file
View File

@ -0,0 +1,4 @@
# -*- coding: utf-8 -*-
from . import controllers
from . import models

35
cor_leave/__manifest__.py Executable file
View File

@ -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',
],
}

View File

@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
from . import controllers

View File

@ -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/<model("cor_leave.cor_leave"):obj>/', auth='public')
# def object(self, obj, **kw):
# return http.request.render('cor_leave.object', {
# 'object': obj
# })

30
cor_leave/demo/demo.xml Executable file
View File

@ -0,0 +1,30 @@
<odoo>
<data>
<!--
<record id="object0" model="cor_leave.cor_leave">
<field name="name">Object 0</field>
<field name="value">0</field>
</record>
<record id="object1" model="cor_leave.cor_leave">
<field name="name">Object 1</field>
<field name="value">10</field>
</record>
<record id="object2" model="cor_leave.cor_leave">
<field name="name">Object 2</field>
<field name="value">20</field>
</record>
<record id="object3" model="cor_leave.cor_leave">
<field name="name">Object 3</field>
<field name="value">30</field>
</record>
<record id="object4" model="cor_leave.cor_leave">
<field name="name">Object 4</field>
<field name="value">40</field>
</record>
-->
</data>
</odoo>

4
cor_leave/models/__init__.py Executable file
View File

@ -0,0 +1,4 @@
# -*- coding: utf-8 -*-
from . import models
from . import hr_holidays

44
cor_leave/models/hr_holidays.py Executable file
View File

@ -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
}

18
cor_leave/models/models.py Executable file
View File

@ -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

View File

@ -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
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_cor_leave_cor_leave cor_leave.cor_leave model_cor_leave_cor_leave base.group_user 1 1 1 1

24
cor_leave/views/templates.xml Executable file
View File

@ -0,0 +1,24 @@
<odoo>
<data>
<!--
<template id="listing">
<ul>
<li t-foreach="objects" t-as="object">
<a t-attf-href="#{ root }/objects/#{ object.id }">
<t t-esc="object.display_name"/>
</a>
</li>
</ul>
</template>
<template id="object">
<h1><t t-esc="object.display_name"/></h1>
<dl>
<t t-foreach="object._fields" t-as="field">
<dt><t t-esc="field"/></dt>
<dd><t t-esc="object[field]"/></dd>
</t>
</dl>
</template>
-->
</data>
</odoo>

60
cor_leave/views/views.xml Executable file
View File

@ -0,0 +1,60 @@
<odoo>
<data>
<!-- explicit list view definition -->
<!--
<record model="ir.ui.view" id="cor_leave.list">
<field name="name">cor_leave list</field>
<field name="model">cor_leave.cor_leave</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="value"/>
<field name="value2"/>
</tree>
</field>
</record>
-->
<!-- actions opening views on models -->
<!--
<record model="ir.actions.act_window" id="cor_leave.action_window">
<field name="name">cor_leave window</field>
<field name="res_model">cor_leave.cor_leave</field>
<field name="view_mode">tree,form</field>
</record>
-->
<!-- server action to the one above -->
<!--
<record model="ir.actions.server" id="cor_leave.action_server">
<field name="name">cor_leave server</field>
<field name="model_id" ref="model_cor_leave_cor_leave"/>
<field name="state">code</field>
<field name="code">
action = {
"type": "ir.actions.act_window",
"view_mode": "tree,form",
"res_model": model._name,
}
</field>
</record>
-->
<!-- Top menu item -->
<!--
<menuitem name="cor_leave" id="cor_leave.menu_root"/>
-->
<!-- menu categories -->
<!--
<menuitem name="Menu 1" id="cor_leave.menu_1" parent="cor_leave.menu_root"/>
<menuitem name="Menu 2" id="cor_leave.menu_2" parent="cor_leave.menu_root"/>
-->
<!-- actions -->
<!--
<menuitem name="List" id="cor_leave.menu_1_list" parent="cor_leave.menu_1"
action="cor_leave.action_window"/>
<menuitem name="Server to list" id="cor_leave" parent="cor_leave.menu_2"
action="cor_leave.action_server"/>
-->
</data>
</odoo>