diff --git a/account_financial_report_qweb/report/abstract_report.py b/account_financial_report_qweb/report/abstract_report.py index 961f343d..447d17dc 100644 --- a/account_financial_report_qweb/report/abstract_report.py +++ b/account_financial_report_qweb/report/abstract_report.py @@ -13,6 +13,7 @@ class AbstractReport(models.AbstractModel): "Model %s is not transient, it cannot be vacuumed!" % self._name # Never delete rows used in last 5 minutes seconds = max(seconds, 300) + # pylint: disable=sql-injection query = """ DELETE FROM """ + self._table + """ WHERE diff --git a/account_financial_report_qweb/report/general_ledger.py b/account_financial_report_qweb/report/general_ledger.py index bb8768e3..4a6b6606 100644 --- a/account_financial_report_qweb/report/general_ledger.py +++ b/account_financial_report_qweb/report/general_ledger.py @@ -186,6 +186,7 @@ class GeneralLedgerReportMoveLine(models.TransientModel): # Data fields, used to keep link with real object move_line_id = fields.Many2one('account.move.line') + matched_ml_id = fields.Many2one("account.full.reconcile") # Data fields, used for report display date = fields.Date() @@ -197,7 +198,6 @@ class GeneralLedgerReportMoveLine(models.TransientModel): label = fields.Char() cost_center = fields.Char() tags = fields.Char() - matching_number = fields.Char() debit = fields.Float(digits=(16, 2)) credit = fields.Float(digits=(16, 2)) cumul_balance = fields.Float(digits=(16, 2)) @@ -1067,6 +1067,7 @@ INSERT INTO create_uid, create_date, move_line_id, + matched_ml_id, date, entry, journal, @@ -1075,7 +1076,6 @@ INSERT INTO partner, label, cost_center, - matching_number, debit, credit, cumul_balance, @@ -1096,6 +1096,7 @@ SELECT %s AS create_uid, NOW() AS create_date, ml.id AS move_line_id, + fr.id AS matched_ml_id, ml.date, m.name AS entry, j.code AS journal, @@ -1139,7 +1140,6 @@ SELECT query_inject_move_line += """ CONCAT_WS(' - ', NULLIF(ml.ref, ''), NULLIF(ml.name, '')) AS label, aa.name AS cost_center, - fr.name AS matching_number, ml.debit, ml.credit, """ diff --git a/account_financial_report_qweb/report/general_ledger_xlsx.py b/account_financial_report_qweb/report/general_ledger_xlsx.py index d7698f71..c1810359 100644 --- a/account_financial_report_qweb/report/general_ledger_xlsx.py +++ b/account_financial_report_qweb/report/general_ledger_xlsx.py @@ -37,7 +37,10 @@ class GeneralLedgerXslx(abstract_report_xlsx.AbstractReportXslx): 8: {'header': _('Tags'), 'field': 'tags', 'width': 10}, - 9: {'header': _('Rec.'), 'field': 'matching_number', 'width': 5}, + 9: {'header': _('Rec.'), + 'field': 'matched_ml_id', + 'type': 'many2one', + 'width': 5}, 10: {'header': _('Debit'), 'field': 'debit', 'field_initial_balance': 'initial_debit', diff --git a/account_financial_report_qweb/report/open_items.py b/account_financial_report_qweb/report/open_items.py index 7d1c879a..e8b72d4a 100644 --- a/account_financial_report_qweb/report/open_items.py +++ b/account_financial_report_qweb/report/open_items.py @@ -638,6 +638,7 @@ ORDER BY self._compute_account_cumul() def _compute_partner_cumul(self): + # pylint: disable=sql-injection where_condition_partner_by_account = """ WHERE id IN diff --git a/account_financial_report_qweb/report/templates/general_ledger.xml b/account_financial_report_qweb/report/templates/general_ledger.xml index 6745a691..a8e5ecdf 100644 --- a/account_financial_report_qweb/report/templates/general_ledger.xml +++ b/account_financial_report_qweb/report/templates/general_ledger.xml @@ -336,8 +336,8 @@ - + t-att-style="style"> + @@ -403,12 +403,12 @@
- - - + + + class="o_account_financial_reports_web_action underline-on-hover"> +
diff --git a/account_financial_report_qweb/report/templates/open_items.xml b/account_financial_report_qweb/report/templates/open_items.xml index fc6eb319..e6795f9c 100644 --- a/account_financial_report_qweb/report/templates/open_items.xml +++ b/account_financial_report_qweb/report/templates/open_items.xml @@ -137,8 +137,8 @@ - + t-att-style="style"> + diff --git a/account_financial_report_qweb/static/src/js/account_financial_report_qweb_backend.js b/account_financial_report_qweb/static/src/js/account_financial_report_qweb_backend.js index 3712a8f1..1319c744 100644 --- a/account_financial_report_qweb/static/src/js/account_financial_report_qweb_backend.js +++ b/account_financial_report_qweb/static/src/js/account_financial_report_qweb_backend.js @@ -1,95 +1,99 @@ odoo.define('account_financial_report_qweb.account_financial_report_backend', function (require) { -'use strict'; + 'use strict'; -var core = require('web.core'); -var Widget = require('web.Widget'); -var ControlPanelMixin = require('web.ControlPanelMixin'); -var ReportWidget = require('account_financial_report_qweb.account_financial_report_widget'); -var Model = require('web.Model'); + var core = require('web.core'); + var Widget = require('web.Widget'); + var ControlPanelMixin = require('web.ControlPanelMixin'); + var ReportWidget = require( + 'account_financial_report_qweb.account_financial_report_widget'); + var Model = require('web.Model'); -var report_backend = Widget.extend(ControlPanelMixin, { - // Stores all the parameters of the action. - events: { - 'click .o_account_financial_reports_print': 'print', - 'click .o_account_financial_reports_export': 'export', - }, - init: function(parent, action) { - this.actionManager = parent; - this.given_context = {}; - this.odoo_context = action.context; - this.controller_url = action.context.url; - if (action.context.context) { - this.given_context = action.context.context; - } - this.given_context.active_id = action.context.active_id || action.params.active_id; - this.given_context.model = action.context.active_model || false; - this.given_context.ttype = action.context.ttype || false; - return this._super.apply(this, arguments); - }, - willStart: function() { - return $.when(this.get_html()); - }, - set_html: function() { - var self = this; - var def = $.when(); - if (!this.report_widget) { - this.report_widget = new ReportWidget(this, this.given_context); - def = this.report_widget.appendTo(this.$el); - } - def.then(function () { - self.report_widget.$el.html(self.html); - }); - }, - start: function() { - this.set_html(); - return this._super(); - }, - // Fetches the html and is previous report.context if any, else create it - get_html: function() { - var self = this; - var defs = []; - self.model = new Model(this.given_context.model); - return self.model.call('get_html', [this.given_context], {context: self.odoo_context}).then(function - (result) { - self.html = result.html; - defs.push(self.update_cp()); - return $.when.apply($, defs); - }); - }, - // Updates the control panel and render the elements that have yet to be rendered - update_cp: function() { - if (!this.$buttons) { + var report_backend = Widget.extend(ControlPanelMixin, { + // Stores all the parameters of the action. + events: { + 'click .o_account_financial_reports_print': 'print', + 'click .o_account_financial_reports_export': 'export', + }, + init: function (parent, action) { + this.actionManager = parent; + this.given_context = {}; + this.odoo_context = action.context; + this.controller_url = action.context.url; + if (action.context.context) { + this.given_context = action.context.context; + } + this.given_context.active_id = action.context.active_id || + action.params.active_id; + this.given_context.model = action.context.active_model || false; + this.given_context.ttype = action.context.ttype || false; + return this._super.apply(this, arguments); + }, + willStart: function () { + return $.when(this.get_html()); + }, + set_html: function () { + var self = this; + var def = $.when(); + if (!this.report_widget) { + this.report_widget = new ReportWidget(this, this.given_context); + def = this.report_widget.appendTo(this.$el); + } + def.then(function () { + self.report_widget.$el.html(self.html); + }); + }, + start: function () { + this.set_html(); + return this._super(); + }, + // Fetches the html and is previous report.context if any, + // else create it + get_html: function () { + var self = this; + var defs = []; + self.model = new Model(this.given_context.model); + return self.model.call('get_html', [this.given_context], + {context: self.odoo_context}).then(function (result) { + self.html = result.html; + defs.push(self.update_cp()); + return $.when.apply($, defs); + }); + }, + // Updates the control panel and render the elements that have yet to + // be rendered + update_cp: function () { + var status = { + breadcrumbs: this.actionManager.get_breadcrumbs(), + cp_content: {$buttons: this.$buttons}, + }; + return this.update_control_panel(status); + }, + do_show: function () { + this._super(); + this.update_cp(); + }, + print: function () { + var self = this; + self.model = new Model(this.given_context.model); + self.model.call('print_report', [this.given_context.active_id, + 'qweb-pdf'], {context: self.odoo_context}) + .then(function (result) { + self.do_action(result); + }); + }, + export: function () { + var self = this; + self.model = new Model(this.given_context.model); + self.model.call('print_report', [this.given_context.active_id, + 'xlsx'], {context: self.odoo_context}) + .then(function (result) { + self.do_action(result); + }); + }, + }); - } - var status = { - breadcrumbs: this.actionManager.get_breadcrumbs(), - cp_content: {$buttons: this.$buttons}, - }; - return this.update_control_panel(status); - }, - do_show: function() { - this._super(); - this.update_cp(); - }, - print: function() { - var self = this; - self.model = new Model(this.given_context.model); - self.model.call('print_report', [this.given_context.active_id, 'qweb-pdf'], {context: self.odoo_context}) - .then(function(result){ - self.do_action(result); - }); - }, - export: function() { - var self = this; - self.model = new Model(this.given_context.model); - self.model.call('print_report', [this.given_context.active_id, 'xlsx'], {context: self.odoo_context}) - .then(function(result){ - self.do_action(result); - }); - }, -}); - -core.action_registry.add("account_financial_report_backend", report_backend); -return report_backend; + core.action_registry.add("account_financial_report_backend", + report_backend); + return report_backend; }); diff --git a/account_financial_report_qweb/static/src/js/account_financial_report_qweb_widgets.js b/account_financial_report_qweb/static/src/js/account_financial_report_qweb_widgets.js index 8957edbe..53ba2816 100644 --- a/account_financial_report_qweb/static/src/js/account_financial_report_qweb_widgets.js +++ b/account_financial_report_qweb/static/src/js/account_financial_report_qweb_widgets.js @@ -1,69 +1,85 @@ odoo.define('account_financial_report_qweb.account_financial_report_widget', function (require) { -'use strict'; + 'use strict'; -var Widget = require('web.Widget'); + var Widget = require('web.Widget'); -var accountFinancialReportWidget = Widget.extend({ - events: { - 'click .o_account_financial_reports_web_action': 'boundLink', - 'click .o_account_financial_reports_web_action_multi': 'boundLinkmulti', - 'click .o_account_financial_reports_web_action_monetary': 'boundLinkMonetary', - 'click .o_account_financial_reports_web_action_monetary_multi': 'boundLinkMonetarymulti', - }, - init: function() { - this._super.apply(this, arguments); - }, - start: function() { - return this._super.apply(this, arguments); - }, - boundLink: function(e) { - var res_model = $(e.target).data('res-model'); - var res_id = $(e.target).data('active-id'); - return this.do_action({ - type: 'ir.actions.act_window', - res_model: res_model, - res_id: res_id, - views: [[false, 'form']], - target: 'current' - }); - }, - boundLinkmulti: function(e) { - var res_model = $(e.target).data('res-model'); - var domain = $(e.target).data('domain'); - return this.do_action({ - type: 'ir.actions.act_window', - res_model: res_model, - domain: domain, - views: [[false, "list"], [false, "form"]], - target: 'current' - }); - }, - boundLinkMonetary: function(e) { - var res_model = $(e.target.parentElement).data('res-model'); - var res_id = $(e.target.parentElement).data('active-id'); - return this.do_action({ - type: 'ir.actions.act_window', - res_model: res_model, - res_id: res_id, - views: [[false, 'form']], - target: 'current' - }); - }, - boundLinkMonetarymulti: function(e) { - var res_model = $(e.target.parentElement).data('res-model'); - var domain = $(e.target.parentElement).data('domain'); - return this.do_action({ - type: 'ir.actions.act_window', - res_model: res_model, - domain: domain, - views: [[false, "list"], [false, "form"]], - target: 'current' - }); - }, -}); + var accountFinancialReportWidget = Widget.extend({ + events: { + 'click .o_account_financial_reports_web_action': + 'boundLink', + 'click .o_account_financial_reports_web_action_multi': + 'boundLinkmulti', + 'click .o_account_financial_reports_web_action_monetary': + 'boundLinkMonetary', + 'click .o_account_financial_reports_web_action_monetary_multi': + 'boundLinkMonetarymulti', + }, + init: function () { + this._super.apply(this, arguments); + }, + start: function () { + return this._super.apply(this, arguments); + }, + boundLink: function (e) { + var res_model = $(e.target).data('res-model'); + var res_id = $(e.target).data('active-id'); + return this.do_action({ + type: 'ir.actions.act_window', + res_model: res_model, + res_id: res_id, + views: [[false, 'form']], + target: 'current', + }); + }, + boundLinkmulti: function (e) { + var res_model = $(e.target).data('res-model'); + var domain = $(e.target).data('domain'); + return this.do_action({ + type: 'ir.actions.act_window', + res_model: res_model, + domain: domain, + views: [[false, "list"], [false, "form"]], + target: 'current', + }); + }, + boundLinkMonetary: function (e) { + var res_model = $(e.target).data('res-model'); + var res_id = $(e.target).data('active-id'); + // check if we call on appropriate element, amount been wrapped in + // a span by a monetary widget + if (e.target.localName === 'span' ) { + res_model = $(e.target.parentElement).data('res-model'); + res_id = $(e.target.parentElement).data('active-id'); + } + return this.do_action({ + type: 'ir.actions.act_window', + res_model: res_model, + res_id: res_id, + views: [[false, 'form']], + target: 'current', + }); + }, + boundLinkMonetarymulti: function (e) { + var res_model = $(e.target).data('res-model'); + var domain = $(e.target).data('domain'); + // check if we call on appropriate element, amount been wrapped in + // a span by a monetary widget + if (e.target.localName === 'span' ) { + res_model = $(e.target.parentElement).data('res-model'); + domain = $(e.target.parentElement).data('domain'); + } + return this.do_action({ + type: 'ir.actions.act_window', + res_model: res_model, + domain: domain, + views: [[false, "list"], [false, "form"]], + target: 'current', + }); + }, + }); -return accountFinancialReportWidget; + return accountFinancialReportWidget; }); diff --git a/customer_activity_statement/report/customer_activity_statement.py b/customer_activity_statement/report/customer_activity_statement.py index 38ebd9c8..5e3a9259 100644 --- a/customer_activity_statement/report/customer_activity_statement.py +++ b/customer_activity_statement/report/customer_activity_statement.py @@ -101,6 +101,7 @@ class CustomerActivityStatement(models.AbstractModel): def _get_account_display_lines(self, company_id, partner_ids, date_start, date_end): + # pylint: disable=sql-injection res = dict(map(lambda x: (x, []), partner_ids)) partners = ', '.join([str(i) for i in partner_ids]) date_start = datetime.strptime(