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.