The hr_attendance module adds to core.action_registry
the abstract action hr_attendance_my_attendances
, which has a function named update_attendance
. I want to overwrite this function. I've tried a lot of things, with no result. Here's a good example by @Kenly (How to override js method in Odoo 15?), but unfortunately I can't use it because core.action_registry
has no function extend
.
This is what I have now (in my module, in a file named my_attendances.js
):
odoo.define('my_module.my_attendances', function (require) {
"use strict";
const session = require('web.session');
var core = require('web.core');
var MyAttendances = require('hr_attendance.my_attendances');
var MyAttendancesExtended = MyAttendances.extend({
// events: _.extend({
// 'click .o_hr_attendance_sign_in_out_icon': 'update_attendance',
// }, AbstractField.prototype.events),
update_attendance: function () {
console.log('I HAVE OVERWRITTEN THE FUNCTION');
var self = this;
this._rpc({
model: 'hr.employee',
method: 'attendance_manual',
args: [[self.employee.id], 'hr_attendance.hr_attendance_action_my_attendances', None],
context: session.user_context,
})
.then(function(result) {
if (result.action) {
self.do_action(result.action);
} else if (result.warning) {
self.displayNotification({ title: result.warning, type: 'danger' });
}
});
},
});
core.action_registry.add('my_module.my_attendances', MyAttendancesExtended);
return MyAttendancesExtended;
});
But it seems to do nothing, since I cannot see the I HAVE OVERWRITTEN THE FUNCTION message in the JS console.
And I think I've added fine the JS code to my module, since I get errors if I write wrong code. But just in case, I've added the JS file to the __manifest__.py
with these lines:
'assets': {
'web.assets_backend': [
'my_module/static/src/js/my_attendance.js',
],
},
Anyone can give me a clue please?
You created a new action that is not used.
To override
update_attendance
function, useinclude
Example: