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(