Merge branch 'pawan_branch' into 'development'

add value from timesheet

See merge request prakash.jain/cor-odoo!77
This commit is contained in:
pawan.sharma 2021-01-13 03:02:24 -08:00
commit 542c113617
2 changed files with 41 additions and 20 deletions

View File

@ -9,6 +9,7 @@ from datetime import datetime, time, timedelta
from odoo.tools.float_utils import float_round
from odoo.tools import DEFAULT_SERVER_DATE_FORMAT, ustr
class AccountAnalyticLine(models.Model):
_inherit = 'account.analytic.line'
@ -21,14 +22,14 @@ class AccountAnalyticLine(models.Model):
domain = []
if self.employee_id and self.employee_id.user_id:
manager_id = self.env['project.project'].search(
[('user_id', '=', self.employee_id.user_id.id),('allow_timesheets', '=', True)]).ids
[('user_id', '=', self.employee_id.user_id.id), ('allow_timesheets', '=', True)]).ids
emp_project_ids = self.env['project.project'].search(
[('privacy_visibility', 'in', ('employees', 'portal')),('allow_timesheets', '=', True)]).ids
[('privacy_visibility', 'in', ('employees', 'portal')), ('allow_timesheets', '=', True)]).ids
project_ids = self.env['project.project'].search(
[('privacy_visibility', '=', 'followers'),('allow_timesheets', '=', True),
[('privacy_visibility', '=', 'followers'), ('allow_timesheets', '=', True),
('allowed_internal_user_ids', 'in', self.employee_id.user_id.id)]).ids
consul_ids = self.env['project.sale.line.employee.map'].search([('employee_id', '=', self.employee_id.id)])
consul_project_ids = [val.project_id.id for val in consul_ids]
consul_project_ids = [val.project_id.id for val in consul_ids]
emp_all_project_ids = manager_id + emp_project_ids + project_ids + consul_project_ids
domain = [('id', 'in', list(set(emp_all_project_ids)))]
result = {
@ -44,7 +45,7 @@ class AccountAnalyticLine(models.Model):
user_ids = []
consul_project_ids = []
if not self.project_id:
cuser = self.env['hr.employee'].search([('user_id','=', self.env.user.id)]).ids
cuser = self.env['hr.employee'].search([('user_id', '=', self.env.user.id)]).ids
if self.project_id:
consul_ids = self.env['project.sale.line.employee.map'].search([('project_id', '=', self.project_id.id)])
consul_project_ids = [val.employee_id.id for val in consul_ids]
@ -92,23 +93,23 @@ class AccountAnalyticLine(models.Model):
fields_name = dict(zip(fields, index))
res = super(AccountAnalyticLine, self).export_data(fields)
for index, val in enumerate(res['datas']):
if fields_name.get('date') >=0:
if fields_name.get('date') >= 0:
tdateindex = fields_name.get('date')
tdate = res['datas'][index][tdateindex]
if tdate:
res['datas'][index][tdateindex] = datetime.strftime(tdate, "%d/%m/%Y")
if fields_name.get('task_id') >=0:
if fields_name.get('task_id') >= 0:
taskindex = fields_name.get('task_id')
ttask = res['datas'][index][taskindex]
if type(ttask)==bool:
if type(ttask) == bool:
res['datas'][index][taskindex] = ''
if fields_name.get('start_time') >=0:
if fields_name.get('start_time') >= 0:
starttimeindex = fields_name.get('start_time')
starttime = float(res['datas'][index][starttimeindex])
if starttime:
start_time = tools.format_duration(starttime)
res['datas'][index][starttimeindex] = start_time
if fields_name.get('end_time') >=0:
if fields_name.get('end_time') >= 0:
endtimeindex = fields_name.get('end_time')
endtime = float(res['datas'][index][endtimeindex])
if endtime:
@ -128,12 +129,20 @@ class AccountAnalyticLine(models.Model):
remain_hour = rec.budgeted_qty - rec.timesheet_hour
if vals.get('unit_amount') > remain_hour:
raise ValidationError(_("Your can not fill entry more than Budgeted hours"))"""
if vals.get('employee_id') and vals.get('project_id'):
print('VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV', self, vals.get('employee_id'), vals.get('project_id'))
project = self.env['project.project'].search([('id', '=', vals.get('project_id'))])
if project:
project.consultant_timesheet_hrs.create({'project_id': vals.get('project_id'),
'employee_id': vals.get('employee_id'),
'timesheet_hour': vals.get('unit_amount')})
value = super(AccountAnalyticLine, self).create(vals)
if self.project_id:
self.project_id._compute_consultant_timesheet_hour()
print('WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW')
return value
def write(self, vals):
if vals.get('unit_amount') == 0.0:
if vals.get('unit_amount') == 0.0:
raise ValidationError(_("Your can not fill 0.0 hour entry"))
return super().write(vals)
return super().write(vals)

View File

@ -65,9 +65,8 @@ class Project(models.Model):
manager_hour = fields.Float(string='Manager Hour')
employee_hour = fields.Float(string='Employee Hour')
consultant_timesheet_hrs = fields.One2many('consultant.timesheet.hrs', 'project_id', "Timesheet Hrs", store=True,
copy=False, compute='_compute_consultant_timesheet_hour',
help="Consultant timesheet hours")
consultant_timesheet_hrs = fields.One2many('consultant.timesheet.hrs', 'project_id', "Timesheet Hrs",
copy=False, help="Consultant timesheet hours")
@api.depends('cost', 'expenses_amt', 'budgeted_revenue')
def _compute_calc(self):
@ -134,14 +133,14 @@ class Project(models.Model):
record.cost = cost
record.budgeted_hour_week = budgeted_hour_week
@api.depends('pricing_type')
#@api.depends('pricing_type')
def _compute_consultant_timesheet_hour(self):
for val in self:
val.consultant_timesheet_hrs = False
if val._origin.id:
print('SSSSSSSSSSSSSSSSSSSS', val._origin.id)
self._cr.execute('''SELECT project_id, employee_id, SUM(unit_amount) FROM account_analytic_line where project_id = %(project_id)s
GROUP BY project_id, employee_id''', {'project_id': val._origin.id})
self._cr.execute('''SELECT project_id, employee_id, SUM(unit_amount) FROM account_analytic_line where project_id = 149
GROUP BY project_id, employee_id''')
res = self._cr.fetchone()
print('TTTTTTTTTTTTTT', res)
if res:
@ -149,6 +148,8 @@ class Project(models.Model):
'employee_id': res[1],
'timesheet_hour': res[2]})
print('RRRRRRRRRRRRRRRRRRR', create_timesheet)
for rec in create_timesheet:
print('vvvvvvvvvvvv', rec)
else:
val.consultant_timesheet_hrs = False
#val.consultant_timesheet_hrs = False
@ -174,6 +175,17 @@ class ProjectConsultantTimesheetHrs(models.Model):
else:
val.consultant_cost = 0.0
"""def _compute_timesheet_hour(self):
print('QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ')
for val in self:
if val.project_id._origin.id:
self._cr.execute('''SELECT project_id, employee_id, SUM(unit_amount) FROM account_analytic_line
where project_id = %(project_id)s
GROUP BY project_id, employee_id''',
{'project_id': val.project_id._origin.id})
res = self._cr.fetchone()
print('99999999999999999999999999999999999', res)"""
class InheritProjectProductEmployeeMap(models.Model):
_inherit = 'project.sale.line.employee.map'