Hello, I've been working on an invoicing module. I have different actions set up for invoices: Reject, Approve with notes, Re-submit and Delete. Each action prompts a wizard window open where a manager can leave a reason for the action. I have these fields set up in form view: Rejection reason field, Approved w/notes field, Re-submit notes field and Delete notes field, where you can see the notes left with the reasoning for different action taken.
I created a button in tree view, called "notes" button. This button, upon a click, will open a pop up window while still in the tree view, where others can see the notes that were submitted by managers. I created a button and I'm able to click it. But I get an error when the button is clicked.
I build the button action with JavaScript.
This is my JS code:
odoo.define('AP.notes_popup', function (require) {
"use strict";
var core = require('web.core');
var Dialog = require('web.Dialog');
var AbstractAction = require('web.AbstractAction');
var rpc = require('web.rpc');
var DisplayNotesPopup = AbstractAction.extend({
init: function (parent, context) {
this._super(parent, context);
this.dialog = null; },
willStart: function () {
return this._super(); },
start: function () {
var self = this;
rpc.query({
model: 'vendor.bill',
method: 'action_show_notes',
args: [this.context.active_id],
}).then(function (result) {
var content = "
" + result.notes + "
";
self.dialog = new Dialog(self, {
title: "Notes", size: 'large', $content: content,
buttons: [{ text: "Close", close: true }], });
self.dialog.open().on("closed", self,
function () {
self.trigger_up('history_back');
}); });
return this._super();
}, });
core.action_registry.add('display_notes_popup', DisplayNotesPopup);
return DisplayNotesPopup;});
This is the relevant part from my python code:
def action_show_notes(self):
self.ensure_one()
context = self.env.context.copy()
context['active_id'] = self.id
return {
'name': 'Notes',
'type': 'ir.actions.client',
'tag': 'display_notes_popup',
'target': 'new',
'context': context,
}
I get this error upon a click:
Uncaught Promise > The following error occurred in onWillStart: "Cannot read properties of undefined (reading 'active_id')"
OwlError: The following error occurred in onWillStart: "Cannot read properties of undefined (reading 'active_id')"
at wrapError (https://dev\-p2p\.itac\-net\.com/web/assets/2281\-b82364b/web\.assets_common\.min\.js:1485:77\)
\ \ at\ onWillStart\ \(https://dev\-p2p\.itac\-net\.com/web/assets/2281\-b82364b/web\.assets_common\.min\.js:1491:117\)
\ \ at\ ClientActionAdapter\.setup\ \(https://dev\-p2p\.itac\-net\.com/web/assets/2695\-8e3fe76/web\.assets_backend\.min\.js:9092:401\)
\ \ at\ ClientActionAdapter\.setup\ \(https://dev\-p2p\.itac\-net\.com/web/assets/2695\-8e3fe76/web\.assets_backend\.min\.js:6546:105\)
\ \ at\ ClientActionAdapter\.setup\ \(https://dev\-p2p\.itac\-net\.com/web/assets/2695\-8e3fe76/web\.assets_backend\.min\.js:6560:119\)
\ \ at\ new\ ComponentNode\ \(https://dev\-p2p\.itac\-net\.com/web/assets/2281\-b82364b/web\.assets_common\.min\.js:1446:202\)
\ \ at\ https://dev\-p2p\.itac\-net\.com/web/assets/2281\-b82364b/web\.assets_common\.min\.js:1973:6
\ \ at\ Action\.template\ \(eval\ at\ compile\ \(https://dev\-p2p\.itac\-net\.com/web/assets/2281\-b82364b/web\.assets_common\.min\.js:1938:370\),\ :10:12\)
\ \ at\ Fiber\._render\ \(https://dev\-p2p\.itac\-net\.com/web/assets/2281\-b82364b/web\.assets_common\.min\.js:1384:96\)
\ \ at\ Fiber\.render\ \(https://dev\-p2p\.itac\-net\.com/web/assets/2281\-b82364b/web\.assets_common\.min\.js:1383:6\)
Caused\ by:\ TypeError:\ Cannot\ read\ properties\ of\ undefined\ \(reading\ 'active_id'\)
\ \ at\ Class\.start\ \(https://dev\-p2p\.itac\-net\.com/web/assets/2695\-8e3fe76/web\.assets_backend\.min\.js:14475:473\)
\ \ at\ prototype\.\ \[as\ start\]\ \(https://dev\-p2p\.itac\-net\.com/web/assets/2281\-b82364b/web\.assets_common\.min\.js:5642:488\)
\ \ at\ https://dev-p2p.itac-net.com/web/assets/2281-b82364b/web.assets_common.min.js:5982:52
I'm new to implementing JS with Odoo environment and I'm not sure how to proceed at this point.
Thank you for your help.