Merge branch 'fix/14.0/sale_timesheet_work_entry_rate__unset_type' into '14.0'

fix/14.0/sale_timesheet_work_entry_rate__unset_type into 14.0

See merge request hibou-io/hibou-odoo/suite!981
This commit is contained in:
Jared Kipe
2021-09-02 16:29:56 +00:00
6 changed files with 36 additions and 6 deletions

View File

@@ -1,7 +1,7 @@
{
'name': 'Timesheet Work Entry Type',
'description': 'Set work types on timesheet records.',
'version': '14.0.1.0.0',
'version': '14.0.1.0.1',
'website': 'https://hibou.io/',
'author': 'Hibou Corp. <hello@hibou.io>',
'license': 'AGPL-3',
@@ -11,6 +11,7 @@
'hr_work_entry',
],
'data': [
'security/ir.model.access.csv',
'data/hr_timesheet_work_entry_data.xml',
'views/timesheet_views.xml',
'views/work_entry_views.xml',

View File

@@ -0,0 +1,2 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_hr_work_entry_type_employee,access_hr_work_entry_type_employee,model_hr_work_entry_type,base.group_user,1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_hr_work_entry_type_employee access_hr_work_entry_type_employee model_hr_work_entry_type base.group_user 1 0 0 0

View File

@@ -2,7 +2,7 @@
{
'name': 'Timesheet Billing Rate',
'version': '14.0.1.0.0',
'version': '14.0.1.0.1',
'category': 'Sale',
'author': 'Hibou Corp.',
'license': 'OPL-1',

View File

@@ -12,4 +12,11 @@
<field name="timesheet_billing_rate" eval="2.0"/>
</record>
<record id="work_input_timesheet_free" model="hr.work.entry.type">
<field name="name">Non-Productive Time</field>
<field name="code">TS_NON_PRODUCTIVE</field>
<field name="allow_timesheet" eval="True"/>
<field name="timesheet_billing_rate" eval="0.0"/>
</record>
</odoo>

View File

@@ -41,8 +41,13 @@ class SaleOrderLine(models.Model):
for item in data:
if not item['product_uom_id']:
continue
if not item['work_type_id']:
continue
work_type_rate = False
if item['work_type_id']:
work_type_rate = work_type_map.get(item['work_type_id'][0]).timesheet_billing_rate
if work_type_rate is False:
# unset field should be 1.0 by default, you CAN set it to 0.0 if you'd like.
work_type_rate = 1.0
so_line_id = item['so_line'][0]
so_line = lines_map[so_line_id]
result.setdefault(so_line_id, 0.0)
@@ -52,8 +57,7 @@ class SaleOrderLine(models.Model):
else:
qty = item['unit_amount']
work = work_type_map.get(item['work_type_id'][0])
qty *= work.timesheet_billing_rate or 0.0
qty *= work_type_rate
result[so_line_id] += qty
return result

View File

@@ -94,3 +94,19 @@ class TestSaleFlow(TestProjectBilling):
'work_type_id': double_rate_work_entry_type.id,
})
self.assertEqual(task.sale_line_id.qty_delivered, 150.0)
# Ensure that a created timesheet WITHOUT a work entry type behaves
# the same as it would have before this module (e.g. for historic reasons)
timesheet2.write({
'work_type_id': False,
})
self.assertEqual(task.sale_line_id.qty_delivered, 150.0)
# Ensure we can bill zero even with above default.
zero_rate_work_entry_type = self.env.ref('sale_timesheet_work_entry_rate.work_input_timesheet_free')
self.assertEqual(zero_rate_work_entry_type.timesheet_billing_rate, 0.0)
timesheet2.write({
'work_type_id': zero_rate_work_entry_type.id,
})
self.assertEqual(task.sale_line_id.qty_delivered, 100.0)