update code

This commit is contained in:
Pawan Kumar 2021-01-07 13:44:24 +05:30
parent d016c02b18
commit 437c186f3d
2 changed files with 39 additions and 24 deletions

View File

@ -41,7 +41,7 @@ class Project(models.Model):
start_date = fields.Date(string='Start Date')
end_date = fields.Date(string='End Date')
budgeted_hours = fields.Float(string='Total Budgeted Hours', digits=(16, 2))
budgeted_hours = fields.Float(string='Total Budgeted Hours')
budgeted_revenue = fields.Float(string='Budgeted Revenue', digits=(16, 2))
expenses_per = fields.Float(string='Expenses (%)', digits=(16, 2))
expenses_amt = fields.Float(string='Expenses Amount', digits=(16, 2))
@ -49,7 +49,7 @@ class Project(models.Model):
consultant_cost = fields.Float("Actual Cost", compute='_compute_consultant_timesheet_hours')
other_expenses = fields.Float(string='Other Expenses', related='expenses_amt')
total_expenses = fields.Float(string='Total Expenses', digits=(16, 2), compute='_compute_calc', store=True)
hourly_rate = fields.Float("Hourly Rate", default=0.0, readonly=1)
hourly_rate = fields.Float("Hourly Rate", default=0.0)
hourly_rate2 = fields.Float("Hourly Ratee")
budgeted_hour_week = fields.Float("Budgeted Hours(per week)", compute='onchange_compute_values', store=True)
profit_amt = fields.Float(string='Profit Amount', digits=(16, 2), compute='_compute_calc', store=True)
@ -97,6 +97,20 @@ class Project(models.Model):
expense_amount = self.budgeted_revenue * (self.expenses_per / 100)
self.expenses_amt = expense_amount
@api.onchange('budgeted_revenue', 'sale_line_employee_ids')
def onchange_budgeted_hour(self):
self.sale_line_employee_ids._compute_total_cost()
hour = 0.0
for rec in self.sale_line_employee_ids:
hour = hour + rec.budgeted_qty
print('TTTTTTTTTTTTTTT', hour, rec.budgeted_qty)
print('SSSSSSSSS', hour)
self.budgeted_hours = hour
print('TTTTTTTTTTTTTTT', hour)
print('UUUUUUUUUUU', self.budgeted_hours)
if self.budgeted_hours > 0.0:
self.hourly_rate = (self.budgeted_revenue / self.budgeted_hours)
@api.depends('cost', 'expenses_amt', 'budgeted_revenue')
def _compute_calc(self):
for record in self:
@ -107,30 +121,30 @@ class Project(models.Model):
if record.profit_amt > 0 and record.budgeted_revenue > 0:
record.profit_per = (record.profit_amt / record.budgeted_revenue) * 100
@api.depends('sale_line_employee_ids', 'budgeted_hours')
@api.depends('sale_line_employee_ids')
def onchange_compute_values(self):
for record in self:
hour = 0.0
# hour = 0.0
cost = 0.0
budgeted_hour_week = 0.0
for rec in record.sale_line_employee_ids:
hour = hour + rec.budgeted_qty
# hour = hour + rec.budgeted_qty
cost = cost + rec.cost
budgeted_hour_week = budgeted_hour_week + rec.budgeted_hour_week
if record.project_type == 'hours_in_consultant':
record.cost = cost
record.budgeted_hours = hour
#if hour > 0.0:
#record.hourly_rate = (cost / hour)
else:
record.cost = record.budgeted_hours * record.hourly_rate
# record.budgeted_hours = hour
# if hour > 0.0:
# record.hourly_rate = (cost / hour)
# else:
# record.cost = record.budgeted_hours * record.hourly_rate
record.budgeted_hour_week = budgeted_hour_week
class InheritProjectProductEmployeeMap(models.Model):
_inherit = 'project.sale.line.employee.map'
budgeted_qty = fields.Float(string='Budgeted Hours', store=True)
budgeted_qty = fields.Float(string='Budgeted Hours')
budgeted_uom = fields.Many2one('uom.uom', string='Budgeted UOM', related='sale_line_id.product_uom', readonly=True)
# budgeted_uom = fields.Many2one('uom.uom', string='Budgeted UOM', related='timesheet_product_id.uom_id', readonly=True)
timesheet_hour = fields.Float("Timesheet Hour", compute='_compute_timesheet_hour', default=0.0)
@ -140,15 +154,14 @@ class InheritProjectProductEmployeeMap(models.Model):
currency_id = fields.Many2one('res.currency', string="Currency", compute='_compute_price_unit', store=True,
readonly=False)
sale_line_id = fields.Many2one('sale.order.line', "Service", domain=[('is_service', '=', True)])
cost = fields.Float("Cost", compute='_compute_total_cost', default=0.0, store=True)
consultant_cost = fields.Float("Actual Cost", compute='_compute_total_cost')
cost = fields.Float("Cost", default=0.0, store=True)
consultant_cost = fields.Float("Actual Cost")
hour_distribution = fields.Selection(related='project_id.hour_distribution')
role = fields.Selection([('Manager', 'Manager'),
('Employee', 'Employee'), ], string="Role", default="Employee")
distribution_per = fields.Float("%")
def _compute_timesheet_hour(self):
for val in self:
self._cr.execute('''SELECT project_id, employee_id, SUM(unit_amount) FROM account_analytic_line
@ -160,8 +173,8 @@ class InheritProjectProductEmployeeMap(models.Model):
val.timesheet_hour = res[2]
else:
val.timesheet_hour = 0.0
#Run another method
#val.project_id.onchange_compute_values()
# Run another method
# val.project_id.onchange_compute_values()
def _compute_budgeted_hour_week(self):
for val in self:
@ -170,20 +183,24 @@ class InheritProjectProductEmployeeMap(models.Model):
else:
val.budgeted_hour_week = 0
@api.onchange('project_id.budgeted_revenue', 'price_unit', 'distribution_per', 'employee_id', 'role')
def _compute_total_cost(self):
for val in self:
if val.project_id.project_type == 'hours_in_consultant':
if val.hour_distribution == 'Percentage':
if val.role == 'Manager':
val.cost = val.project_id.budgeted_revenue * (val.project_id.manager_per/100) * (val.distribution_per/100)
val.cost = val.project_id.budgeted_revenue * (val.project_id.manager_per / 100) * (
val.distribution_per / 100)
else:
val.cost = val.project_id.budgeted_revenue * (val.project_id.employee_per/100) * (val.distribution_per/100)
val.cost = val.project_id.budgeted_revenue * (val.project_id.employee_per / 100) * (
val.distribution_per / 100)
if val.price_unit > 0.0:
val.budgeted_qty = val.cost/val.price_unit
val.budgeted_qty = val.cost / val.price_unit
else:
val.cost = 0.0
#val.cost = val.budgeted_qty * val.price_unit
# val.cost = val.budgeted_qty * val.price_unit
val.consultant_cost = val.timesheet_hour * val.employee_price
#self.project_id.onchange_budgeted_hour()
@api.depends('sale_line_id', 'sale_line_id.price_unit', 'timesheet_product_id')
def _compute_price_unit(self):

View File

@ -107,10 +107,8 @@
<field name="profit_per"/>
</group>
<group>
<field name="budgeted_hours"
attrs="{'invisible': [('pricing_type','=','fixed_rate')], 'readonly': [('project_type','=','hours_in_consultant')],
'required': [('pricing_type','!=','fixed_rate')]}"/>
<field name="hourly_rate"/>
<field name="budgeted_hours"/>
<field name="hourly_rate" readonly="1"/>
<field name="budgeted_hour_week"/>
</group>