mirror of
https://gitlab.com/hibou-io/hibou-odoo/suite.git
synced 2025-01-20 12:37:31 +02:00
[IMP] hr_payroll_hibou: add mechanism to lock parameter (don't receive updates)
This commit is contained in:
@@ -20,6 +20,7 @@ Base module for fixing specific qwerks or assumptions in the way Payroll Odoo En
|
|||||||
'data': [
|
'data': [
|
||||||
'security/ir.model.access.csv',
|
'security/ir.model.access.csv',
|
||||||
'data/cron_data.xml',
|
'data/cron_data.xml',
|
||||||
|
'views/payroll_views.xml',
|
||||||
'views/res_config_settings_views.xml',
|
'views/res_config_settings_views.xml',
|
||||||
'views/update_views.xml',
|
'views/update_views.xml',
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -17,3 +17,10 @@ class HrPayrollStructureType(models.Model):
|
|||||||
default_schedule_pay = fields.Selection(selection_add=[
|
default_schedule_pay = fields.Selection(selection_add=[
|
||||||
('semi-monthly', 'Semi-monthly'),
|
('semi-monthly', 'Semi-monthly'),
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
|
class HrRuleParameter(models.Model):
|
||||||
|
_inherit = 'hr.rule.parameter'
|
||||||
|
|
||||||
|
update_locked = fields.Boolean(string='Update Lock',
|
||||||
|
help='Lock parameter to prevent updating rates from publisher.')
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ class HRPayrollPublisherUpdate(models.Model):
|
|||||||
'error': [('readonly', True)]})
|
'error': [('readonly', True)]})
|
||||||
result = fields.Text(readonly=True)
|
result = fields.Text(readonly=True)
|
||||||
parameter_codes_retrieved = fields.Text(readonly=True)
|
parameter_codes_retrieved = fields.Text(readonly=True)
|
||||||
parameter_codes_missing = fields.Text(readonly=True)
|
|
||||||
error = fields.Text(readonly=True)
|
error = fields.Text(readonly=True)
|
||||||
|
|
||||||
@api.model
|
@api.model
|
||||||
@@ -88,7 +87,7 @@ class HRPayrollPublisherUpdate(models.Model):
|
|||||||
if code not in parameter_map:
|
if code not in parameter_map:
|
||||||
parameter_map[code] = parameter_model.search([('code', '=', code)], limit=1)
|
parameter_map[code] = parameter_model.search([('code', '=', code)], limit=1)
|
||||||
parameter = parameter_map[code]
|
parameter = parameter_map[code]
|
||||||
if not parameter:
|
if not parameter or parameter.update_locked:
|
||||||
continue
|
continue
|
||||||
# watch out for versions of Odoo where this is not datetime.date
|
# watch out for versions of Odoo where this is not datetime.date
|
||||||
parameter_version = parameter.parameter_version_ids.filtered(lambda p: p.date_from == date_from)
|
parameter_version = parameter.parameter_version_ids.filtered(lambda p: p.date_from == date_from)
|
||||||
@@ -107,8 +106,7 @@ class HRPayrollPublisherUpdate(models.Model):
|
|||||||
self.write({
|
self.write({
|
||||||
'state': 'done',
|
'state': 'done',
|
||||||
'error': '',
|
'error': '',
|
||||||
'parameter_codes_retrieved': '\n'.join(c for c, p in parameter_map.items()),
|
'parameter_codes_retrieved': '\n'.join('%s%s' % (c, '' if p and not p.update_locked else ' (LOCKED)' if p.update_locked else ' (MISSING)') for c, p in parameter_map.items()),
|
||||||
'parameter_codes_missing': '\n'.join(c for c, p in parameter_map.items() if not p),
|
|
||||||
})
|
})
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.set_error_state(str(e))
|
self.set_error_state(str(e))
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ class TestPayslip(common.TransactionCase):
|
|||||||
contract_values[key] = val
|
contract_values[key] = val
|
||||||
found = True
|
found = True
|
||||||
if not found:
|
if not found:
|
||||||
self._logger.warn('cannot locate attribute names "%s" on hr.contract().' % (key, ))
|
self._logger.warning('cannot locate attribute names "%s" on hr.contract().' % (key, ))
|
||||||
|
|
||||||
self._get_contract_defaults(contract_values)
|
self._get_contract_defaults(contract_values)
|
||||||
contract = self.contract_model.create(contract_values)
|
contract = self.contract_model.create(contract_values)
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ class TestUpdate(common.TransactionCase):
|
|||||||
update.button_send()
|
update.button_send()
|
||||||
self.assertEqual(update.state, 'done')
|
self.assertEqual(update.state, 'done')
|
||||||
self.assertEqual(update.parameter_codes_retrieved, '')
|
self.assertEqual(update.parameter_codes_retrieved, '')
|
||||||
self.assertEqual(update.parameter_codes_missing, '')
|
|
||||||
|
|
||||||
# Reset to a degree.
|
# Reset to a degree.
|
||||||
update = update.with_context(test_payroll_update_result='{"payroll_parameter_values":[["missing_code", "2021-01-01", "5.0"]]}')
|
update = update.with_context(test_payroll_update_result='{"payroll_parameter_values":[["missing_code", "2021-01-01", "5.0"]]}')
|
||||||
@@ -45,8 +44,7 @@ class TestUpdate(common.TransactionCase):
|
|||||||
})
|
})
|
||||||
update.button_send()
|
update.button_send()
|
||||||
self.assertEqual(update.state, 'done')
|
self.assertEqual(update.state, 'done')
|
||||||
self.assertEqual(update.parameter_codes_retrieved, 'missing_code')
|
self.assertEqual(update.parameter_codes_retrieved, 'missing_code (MISSING)')
|
||||||
self.assertEqual(update.parameter_codes_missing, 'missing_code')
|
|
||||||
|
|
||||||
# Actually add to a rule.
|
# Actually add to a rule.
|
||||||
test_parameter = self.env['hr.rule.parameter'].create({
|
test_parameter = self.env['hr.rule.parameter'].create({
|
||||||
@@ -61,7 +59,6 @@ class TestUpdate(common.TransactionCase):
|
|||||||
update.button_send()
|
update.button_send()
|
||||||
self.assertEqual(update.state, 'done')
|
self.assertEqual(update.state, 'done')
|
||||||
self.assertEqual(update.parameter_codes_retrieved, 'test_parameter_1')
|
self.assertEqual(update.parameter_codes_retrieved, 'test_parameter_1')
|
||||||
self.assertEqual(update.parameter_codes_missing, '')
|
|
||||||
self.assertTrue(test_parameter.parameter_version_ids)
|
self.assertTrue(test_parameter.parameter_version_ids)
|
||||||
self.assertEqual(test_parameter.parameter_version_ids.parameter_value, '5.0')
|
self.assertEqual(test_parameter.parameter_version_ids.parameter_value, '5.0')
|
||||||
self.assertEqual(str(test_parameter.parameter_version_ids.date_from), '2021-01-01')
|
self.assertEqual(str(test_parameter.parameter_version_ids.date_from), '2021-01-01')
|
||||||
@@ -77,3 +74,20 @@ class TestUpdate(common.TransactionCase):
|
|||||||
update.button_send()
|
update.button_send()
|
||||||
# doesn't make a new one, updates existing...
|
# doesn't make a new one, updates existing...
|
||||||
self.assertEqual(test_parameter.parameter_version_ids.parameter_value, '5.0')
|
self.assertEqual(test_parameter.parameter_version_ids.parameter_value, '5.0')
|
||||||
|
|
||||||
|
# Test that we can lock the parameter
|
||||||
|
test_parameter.parameter_version_ids.write({
|
||||||
|
'parameter_value': 'locked',
|
||||||
|
})
|
||||||
|
test_parameter.write({
|
||||||
|
'update_locked': True,
|
||||||
|
})
|
||||||
|
self.assertEqual(test_parameter.parameter_version_ids.parameter_value, 'locked')
|
||||||
|
update.write({
|
||||||
|
'state': 'draft',
|
||||||
|
'result': '',
|
||||||
|
})
|
||||||
|
update.button_send()
|
||||||
|
# doesn't make a new one, updates existing...
|
||||||
|
self.assertEqual(test_parameter.parameter_version_ids.parameter_value, 'locked')
|
||||||
|
self.assertEqual(update.parameter_codes_retrieved, 'test_parameter_1 (LOCKED)')
|
||||||
|
|||||||
15
hr_payroll_hibou/views/payroll_views.xml
Normal file
15
hr_payroll_hibou/views/payroll_views.xml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<record id="hr_rule_parameter_view_form_inherit" model="ir.ui.view">
|
||||||
|
<field name="name">hr.rule.parameter.form.inherit</field>
|
||||||
|
<field name="model">hr.rule.parameter</field>
|
||||||
|
<field name="inherit_id" ref="hr_payroll.hr_rule_parameter_view_form"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<xpath expr="//field[@name='code']" position="after">
|
||||||
|
<field name="update_locked" />
|
||||||
|
</xpath>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
@@ -34,8 +34,7 @@
|
|||||||
</group>
|
</group>
|
||||||
<group name="parameter_codes" string="Parameter Codes">
|
<group name="parameter_codes" string="Parameter Codes">
|
||||||
<field name="parameter_codes_retrieved" />
|
<field name="parameter_codes_retrieved" />
|
||||||
<field name="parameter_codes_missing" />
|
<p colspan="2">Note missing codes probably means code upgrades are required. Locked codes are only locked in this database.</p>
|
||||||
<p colspan="2">Note missing codes probably means code upgrades are required.</p>
|
|
||||||
</group>
|
</group>
|
||||||
<group name="result" string="Result" groups="base.group_no_one" colspan="4">
|
<group name="result" string="Result" groups="base.group_no_one" colspan="4">
|
||||||
<field name="result" nolabel="1" colspan="4" />
|
<field name="result" nolabel="1" colspan="4" />
|
||||||
|
|||||||
Reference in New Issue
Block a user