add value from timesheet
This commit is contained in:
parent
fd7346f588
commit
1219140de0
|
@ -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)
|
||||
|
|
|
@ -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'
|
||||
|
|
Loading…
Reference in New Issue