Merge branch 'cor_cr' of https://gitlab.sunarctechnologies.com/prakash.jain/cor-odoo into cor_cr
This commit is contained in:
commit
dd4083b404
|
@ -0,0 +1,2 @@
|
|||
from . import models
|
||||
from . import wizard
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
'name': 'Timesheet Entry Block',
|
||||
'version': '1.0.1',
|
||||
'summary': 'This module is block to users to fill timehseet entry',
|
||||
'description': 'This module is block to users to fill timehseet entry',
|
||||
'category': 'Employee',
|
||||
'author': 'SunArc Technologies',
|
||||
'website': 'www.sunarctechnologies.com',
|
||||
'license': 'LGPL-3',
|
||||
'depends': ['base','hr','hr_timesheet','project'],
|
||||
'data': [
|
||||
'security/ir.model.access.csv',
|
||||
'wizard/date_assign.xml',
|
||||
'views/timesheet.xml',
|
||||
],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
from . import timesheet
|
|
@ -0,0 +1,103 @@
|
|||
from odoo import api, fields, models
|
||||
from odoo.exceptions import UserError, AccessError, ValidationError
|
||||
from datetime import datetime
|
||||
from dateutil import relativedelta
|
||||
|
||||
|
||||
class EmployeeInherit(models.Model):
|
||||
_inherit = 'hr.employee'
|
||||
|
||||
permission_block_history = fields.One2many(comodel_name="timesheet.block.history", inverse_name="employee_id",
|
||||
string="History", required=False )
|
||||
|
||||
class EmployeePublicInherit(models.Model):
|
||||
_inherit = 'hr.employee.public'
|
||||
|
||||
permission_block_history = fields.One2many(comodel_name="timesheet.block.history", inverse_name="employee_id",
|
||||
string="History", required=False )
|
||||
|
||||
|
||||
class TimesheetBlock(models.Model):
|
||||
_name = 'timesheet.block.history'
|
||||
|
||||
start_date = fields.Date('Start Date')
|
||||
end_date = fields.Date('End Date')
|
||||
reason = fields.Text('Reason')
|
||||
user_id = fields.Many2one('res.users', string='Given By')
|
||||
employee_id = fields.Many2one(comodel_name="hr.employee", string="Employee", required=False)
|
||||
|
||||
|
||||
class TimehseetBlock(models.Model):
|
||||
_inherit = 'account.analytic.line'
|
||||
|
||||
@api.model
|
||||
def create(self, values):
|
||||
entry_start_date = datetime.strptime(str(values['start_datetime']),"%Y-%m-%d %H:%M:%S").date()
|
||||
entry_end_date = datetime.strptime(values['end_datetime'],"%Y-%m-%d %H:%M:%S").date()
|
||||
employee_object = self.env['hr.employee'].search([('user_id', '=', self.env.uid)])
|
||||
# project_manager_group = self.env.ref('hr_timesheet.group_timesheet_manager')
|
||||
permission_block_object = employee_object.permission_block_history.search(
|
||||
[('employee_id', '=', employee_object.id)], order='create_date desc', limit=1)
|
||||
if permission_block_object:
|
||||
if (permission_block_object.start_date <= entry_start_date and permission_block_object.end_date >= entry_start_date) or (
|
||||
permission_block_object.start_date <= entry_end_date and permission_block_object.end_date >= entry_end_date) or (
|
||||
permission_block_object.start_date >= entry_start_date and permission_block_object.end_date <= entry_end_date
|
||||
) or (
|
||||
permission_block_object.end_date >= entry_start_date and permission_block_object.end_date <= entry_end_date
|
||||
):
|
||||
raise AccessError('You are not allowed to create entry for this date!')
|
||||
else:
|
||||
pass
|
||||
return super(TimehseetBlock, self).create(values)
|
||||
|
||||
|
||||
def write(self, record):
|
||||
if 'start_datetime' in record or 'end_datetime' in record or 'project_id' in record or 'sub_project' in record or 'task_id' in record or 'description' in record:
|
||||
if 'start_datetime' in record and 'end_datetime' not in record:
|
||||
entry_start_date = datetime.strptime(str(record['start_datetime']),"%Y-%m-%d %H:%M:%S").date()
|
||||
entry_end_date = datetime.strptime(str(self.end_datetime),"%Y-%m-%d %H:%M:%S").date()
|
||||
elif 'start_datetime' not in record and 'end_datetime' in record:
|
||||
entry_start_date = datetime.strptime(str(self.start_datetime), "%Y-%m-%d %H:%M:%S").date()
|
||||
entry_end_date = datetime.strptime(str(record['end_datetime']), "%Y-%m-%d %H:%M:%S").date()
|
||||
elif 'start_datetime' in record and 'end_datetime' in record:
|
||||
entry_start_date = datetime.strptime(str(record['start_datetime']),"%Y-%m-%d %H:%M:%S").date()
|
||||
entry_end_date = datetime.strptime(str(record['end_datetime']), "%Y-%m-%d %H:%M:%S").date()
|
||||
else:
|
||||
res_start_date = str(self.start_datetime).split('.', 1)[0]
|
||||
res_end_date = str(self.end_datetime).split('.', 1)[0]
|
||||
entry_start_date = datetime.strptime(str(res_start_date), '%Y-%m-%d %H:%M:%S').date()
|
||||
entry_end_date = datetime.strptime(str(res_end_date), '%Y-%m-%d %H:%M:%S').date()
|
||||
employee_object = self.env['hr.employee'].search([('user_id', '=', self.env.uid)])
|
||||
# project_manager_group = self.env.ref('hr_timesheet.group_timesheet_manager')
|
||||
if self.user_id.id == self.env.uid:
|
||||
permission_block_object = employee_object.permission_block_history.search(
|
||||
[('employee_id', '=', employee_object.id)], order='create_date desc', limit=1)
|
||||
if permission_block_object:
|
||||
if (
|
||||
permission_block_object.start_date <= entry_start_date and permission_block_object.end_date >= entry_start_date) or (
|
||||
permission_block_object.start_date <= entry_end_date and permission_block_object.end_date >= entry_end_date) or (
|
||||
permission_block_object.start_date >= entry_start_date and permission_block_object.end_date <= entry_end_date
|
||||
) or (
|
||||
permission_block_object.end_date >= entry_start_date and permission_block_object.end_date <= entry_end_date
|
||||
):
|
||||
raise AccessError('You are not allowed to edit entry for this date!')
|
||||
else:
|
||||
pass
|
||||
return super(TimehseetBlock, self).write(record)
|
||||
|
||||
|
||||
@api.constrains('unit_amount')
|
||||
def _check_unit_amount(self):
|
||||
for rec in self:
|
||||
if rec.unit_amount < 0.0:
|
||||
raise AccessError('End date should be greater than start date!')
|
||||
|
||||
@api.constrains('end_datetime')
|
||||
def _check_end_datetime(self):
|
||||
current_date = datetime.today().date()
|
||||
for rec in self:
|
||||
if rec.end_datetime:
|
||||
end_date = datetime.strptime(str(self.end_datetime), "%Y-%m-%d %H:%M:%S").date()
|
||||
if end_date > current_date:
|
||||
raise AccessError('End date cannot be a future date!')
|
||||
|
|
@ -0,0 +1 @@
|
|||
,sunarcmanish,sunarcmanish,20.07.2020 23:42,file:///home/sunarcmanish/.config/libreoffice/4;
|
|
@ -0,0 +1,4 @@
|
|||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_timesheet_permission_history_manager,access.timesheet.block.history.manager,model_timesheet_block_history,hr_timesheet.group_timesheet_manager,1,1,1,1
|
||||
access_timesheet_permission_history_user,access.timesheet.block.history.user,model_timesheet_block_history,hr_timesheet.group_hr_timesheet_user,1,1,1,0
|
||||
access_back_date_assign_user,access.back.date.assign.user,model_back_date_assign,hr_timesheet.group_timesheet_manager,1,1,1,1
|
|
|
@ -0,0 +1,50 @@
|
|||
<!-- Inherit Form View to Modify it -->
|
||||
<odoo>
|
||||
<record id="view_employee_form_timehseet_block" model="ir.ui.view">
|
||||
<field name="name">hr.employee.timesheet.block.inherit</field>
|
||||
<field name="model">hr.employee</field>
|
||||
<field name="inherit_id" ref="hr.view_employee_form"/>
|
||||
<field name="arch" type="xml">
|
||||
|
||||
<xpath expr="//page[@name='personal_information']" position="after">
|
||||
<page name="'timehseet_block" string="Timesheet Block">
|
||||
<button name="%(timesheet_entry_block.action_back_date_assign)d" string="Assign Date"
|
||||
type="action" groups="hr.group_hr_manager"
|
||||
class="oe_highlight"/>
|
||||
<group/>
|
||||
<field name="permission_block_history" readonly="0" groups="hr_timesheet.group_timesheet_manager">
|
||||
<tree editable="bottom" create="false">
|
||||
<field name="start_date" required="1"/>
|
||||
<field name="end_date" required="1"/>
|
||||
<field name="reason"/>
|
||||
<field name="user_id" readonly="1"
|
||||
options="{'no_create': True, 'no_create_edit':True, 'no_open': True}"/>
|
||||
<field name="employee_id" invisible="1"
|
||||
options="{'no_create': True, 'no_create_edit':True, 'no_open': True}"/>
|
||||
</tree>
|
||||
<form>
|
||||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<field name="start_date"/>
|
||||
<field name="end_date"/>
|
||||
<field name="user_id"
|
||||
options="{'no_create': True, 'no_create_edit':True, 'no_open': True}"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="employee_id"
|
||||
options="{'no_create': True, 'no_create_edit':True, 'no_open': True}"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<field name="reason"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</page>
|
||||
</xpath>
|
||||
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
|
@ -0,0 +1,4 @@
|
|||
from . import date_assign
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
from odoo import api, fields, models, _
|
||||
from odoo.exceptions import UserError
|
||||
|
||||
|
||||
class ProjectCloseDate(models.TransientModel):
|
||||
_name = "back.date.assign"
|
||||
_description = "Timesheet Back Date Assign"
|
||||
|
||||
start_date = fields.Date('Start Date')
|
||||
end_date = fields.Date('End Date')
|
||||
reason = fields.Text('Reason', required=True)
|
||||
|
||||
|
||||
|
||||
def action_compute_project_close(self):
|
||||
employee_obj = self.env['hr.employee'].browse(self._context.get('active_ids', []))
|
||||
print("employee_obj", employee_obj)
|
||||
employee_obj.permission_block_history.create({'employee_id': employee_obj.id,
|
||||
'start_date': self.start_date,
|
||||
'end_date': self.end_date,
|
||||
'reason': self.reason,
|
||||
'user_id': self.env.uid})
|
|
@ -0,0 +1,36 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<record id="view_back_date_assign" model="ir.ui.view">
|
||||
<field name="name">back.date.assign.from</field>
|
||||
<field name="model">back.date.assign</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Project Close">
|
||||
<group>
|
||||
<group>
|
||||
<field name="start_date" required="1"/>
|
||||
<field name="end_date" required="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<field name="reason"/>
|
||||
</group>
|
||||
<footer>
|
||||
<button string="OK" type="object" name="action_compute_project_close" class="btn-primary"/>
|
||||
<button string="Cancel" class="btn-default" special="cancel"/>
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_back_date_assign" model="ir.actions.act_window">
|
||||
<field name="name">Timesheet Date Assign</field>
|
||||
<!-- <field name="type">ir.actions.act_window</field>-->
|
||||
<field name="res_model">back.date.assign</field>
|
||||
<!-- <field name="view_type">form</field>-->
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">new</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
Loading…
Reference in New Issue