Search code examples
javascripthttp-redirectodooodoo-13

How can redirect to the accounting dashboard when I finish importing an extract?


In the odoo accounting module, there is an option to import bank statements. When the import is complete it automatically redirects you to the reconciliation view, but I want to redirect it to the accounting dashboard.

Looking I found that the redirection is done by this JavaScript code:

enterprise-13.0/account_bank_statement_import_csv/static/src/js/import_bank_stmt.js:58

exit: function () {
    this.do_action({
        name: _t("Reconciliation on Bank Statements"),
        context: {
            'statement_line_ids': this.statement_line_ids
        },
        type: 'ir.actions.client',
        tag: 'bank_statement_reconciliation_view'
    });
},

I have tried to modify the code to redirect to the accounting dashboard, but I have not been successful.

    exit: function () {
        var self = this;
        console.log("JavaScript redirection after importing");

        // var model_obj = new instance.web.Model('ir.model.data');
        // var view_id = false;
        // model_obj.call('get_object_reference', ['ir.ui.view', 'account.account_journal_dashboard_kanban_view']).then(function (result) {
        //     view_id = result[1];
        // });
        // console.log('view_id');
        // console.log(view_id);

        // this._rpc({
        //     model: 'account.move',
        //     method: 'redirect_return', // Python code that returns the data of the view action.
        // }).then(function (result) {
        //     self.do_action(result);
        // });

        this.do_action({
            name: _t("Reconciliation on Bank Statements"),
            context: {
                'statement_line_ids': this.statement_line_ids
            },
            type: 'ir.actions.client',
            tag: 'bank_statement_reconciliation_view'
        });
    },

Your help please.


Solution

  • You can use this._rpc to get the view id then call do_action to redirect.

    self._rpc({
        model: "ir.model.data",
        method: 'get_object_reference',
        args: ['account', 'view_account_invoice_report_graph']
    }).then(function (result) {
        self.do_action({
            name: _t('Invoices Analysis'),
            type: 'ir.actions.act_window',
            res_model: 'account.invoice.report',
            views: [[result[1], 'graph']],
            view_mode: 'graph',
        });
    });  
    

    You can also use the action external id to read action data

    self._rpc({
        model: "ir.model.data",
        method: 'get_object_reference',
        args: ['account', 'action_account_invoice_report_all']
    }).then(function (result) {
        self._rpc({
            model: "ir.actions.act_window",
            method: 'read',
            args: [[result[1]]]
        }).then(function (actions){
            self.do_action(actions[0]);
        });
    });