diff --git a/account_reconciliation_widget_due_date/static/src/js/reconciliation_action.js b/account_reconciliation_widget_due_date/static/src/js/reconciliation_action.js index f0d34a6e..d3899e41 100644 --- a/account_reconciliation_widget_due_date/static/src/js/reconciliation_action.js +++ b/account_reconciliation_widget_due_date/static/src/js/reconciliation_action.js @@ -3,7 +3,7 @@ odoo.define( "account_reconciliation_widget_due_date.ReconciliationClientAction", - function(require) { + function (require) { "use strict"; const ReconciliationClientAction = require("account.ReconciliationClientAction"); diff --git a/account_reconciliation_widget_due_date/static/src/js/reconciliation_model.js b/account_reconciliation_widget_due_date/static/src/js/reconciliation_model.js index a654f1a5..6edb05e5 100644 --- a/account_reconciliation_widget_due_date/static/src/js/reconciliation_model.js +++ b/account_reconciliation_widget_due_date/static/src/js/reconciliation_model.js @@ -2,86 +2,91 @@ * Copyright 2021 Tecnativa - Alexandre D. Díaz * License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). */ -odoo.define("account_reconciliation_widget_due_date.ReconciliationModel", function( - require -) { - "use strict"; +odoo.define( + "account_reconciliation_widget_due_date.ReconciliationModel", + function (require) { + "use strict"; - const ReconciliationModel = require("account.ReconciliationModel"); + const ReconciliationModel = require("account.ReconciliationModel"); - ReconciliationModel.StatementModel.include({ - /** - * @param {String} handle - * @param {Moment} date_due - * @param {Boolean} preserveMode - * @returns {Promise} - */ - changeDateDue: function(handle, date_due, preserveMode) { - const line = this.getLine(handle); - line.st_line.date_due = date_due; - - return this._computeLine(line) - .then(() => - this.changeMode(handle, preserveMode ? line.mode : "default", true) - ) - .then(() => date_due); - }, - - /** - * @override - */ - _validatePostProcess: function(data) { - if (_.isEmpty(this._validateLineHandles)) { - return this._super.apply(this, arguments); - } - const line_ids = []; - const dates = []; - for (const handle of this._validateLineHandles) { + ReconciliationModel.StatementModel.include({ + /** + * @param {String} handle + * @param {Moment} date_due + * @param {Boolean} preserveMode + * @returns {Promise} + */ + changeDateDue: function (handle, date_due, preserveMode) { const line = this.getLine(handle); - line_ids.push(line.id); - dates.push(line.st_line.date_due); - } + line.st_line.date_due = date_due; - const tasks = []; - tasks.push(this._super.apply(this, arguments)); - tasks.push( - this._rpc({ - model: "account.reconciliation.widget", - method: "update_bank_statement_line_due_date", - args: [data.moves, line_ids, dates], - context: this.context, - }) - ); - return Promise.all(tasks); - }, + return this._computeLine(line) + .then(() => + this.changeMode( + handle, + preserveMode ? line.mode : "default", + true + ) + ) + .then(() => date_due); + }, - /** - * @override - */ - validate: function(handle) { - // TODO: Check if need recalculate this is next versions - let line_handles = []; - if (handle) { - line_handles = [handle]; - } else { - _.each(this.lines, (line, line_handle) => { - if ( - !line.reconciled && - line.balance && - !line.balance.amount && - line.reconciliation_proposition.length - ) { - line_handles.push(line_handle); - } + /** + * @override + */ + _validatePostProcess: function (data) { + if (_.isEmpty(this._validateLineHandles)) { + return this._super.apply(this, arguments); + } + const line_ids = []; + const dates = []; + for (const handle of this._validateLineHandles) { + const line = this.getLine(handle); + line_ids.push(line.id); + dates.push(line.st_line.date_due); + } + + const tasks = []; + tasks.push(this._super.apply(this, arguments)); + tasks.push( + this._rpc({ + model: "account.reconciliation.widget", + method: "update_bank_statement_line_due_date", + args: [data.moves, line_ids, dates], + context: this.context, + }) + ); + return Promise.all(tasks); + }, + + /** + * @override + */ + validate: function (handle) { + // TODO: Check if need recalculate this is next versions + let line_handles = []; + if (handle) { + line_handles = [handle]; + } else { + _.each(this.lines, (line, line_handle) => { + if ( + !line.reconciled && + line.balance && + !line.balance.amount && + line.reconciliation_proposition.length + ) { + line_handles.push(line_handle); + } + }); + } + + // HACK: Store handles to use it in '_validatePostProcess' and frees at promise resolution + this._validateLineHandles = line_handles; + return this._super.apply(this, arguments).then((results) => { + this._validateLineHandles = null; + return results; }); - } - - // HACK: Store handles to use it in '_validatePostProcess' and frees at promise resolution - this._validateLineHandles = line_handles; - return this._super.apply(this, arguments).then(results => { - this._validateLineHandles = null; - return results; - }); - }, - }); -}); + }, + }); + } +); diff --git a/account_reconciliation_widget_due_date/static/src/js/reconciliation_renderer.js b/account_reconciliation_widget_due_date/static/src/js/reconciliation_renderer.js index 4ae8b18e..f2905172 100644 --- a/account_reconciliation_widget_due_date/static/src/js/reconciliation_renderer.js +++ b/account_reconciliation_widget_due_date/static/src/js/reconciliation_renderer.js @@ -2,69 +2,73 @@ * Copyright 2021 Tecnativa - Alexandre D. Díaz * License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). */ -odoo.define("account_reconciliation_widget_due_date.ReconciliationRenderer", function( - require -) { - "use strict"; +odoo.define( + "account_reconciliation_widget_due_date.ReconciliationRenderer", + function (require) { + "use strict"; - const ReconciliationRenderer = require("account.ReconciliationRenderer"); - const basic_fields = require("web.basic_fields"); - const core = require("web.core"); + const ReconciliationRenderer = require("account.ReconciliationRenderer"); + const basic_fields = require("web.basic_fields"); + const core = require("web.core"); - const _t = core._t; + const _t = core._t; - ReconciliationRenderer.LineRenderer.include({ - /** - * @override - */ - _onFieldChanged: function(event) { - const fieldName = event.target.name; - if (fieldName === "date_due") { - const date_due = event.data.changes.date_due; - this.trigger_up("change_date_due", {data: date_due}); - } else { - this._super.apply(this, arguments); - } - }, + ReconciliationRenderer.LineRenderer.include({ + /** + * @override + */ + _onFieldChanged: function (event) { + const fieldName = event.target.name; + if (fieldName === "date_due") { + const date_due = event.data.changes.date_due; + this.trigger_up("change_date_due", {data: date_due}); + } else { + this._super.apply(this, arguments); + } + }, - /** - * @override - */ - start: function() { - return Promise.all([ - this._super.apply(this, arguments), - this._makeDateDueRecord(), - ]); - }, + /** + * @override + */ + start: function () { + return Promise.all([ + this._super.apply(this, arguments), + this._makeDateDueRecord(), + ]); + }, - /** - * - * @returns {Promise} - */ - _makeDateDueRecord: function() { - const field = { - type: "date", - name: "date_due", - }; - return this.model - .makeRecord("account.bank.statement.line", [field], { - date_due: {}, - }) - .then(recordID => { - this.fields.date_due = new basic_fields.FieldDate( - this, - "date_due", - this.model.get(recordID), - { - mode: "edit", - attrs: {placeholder: _t("Select Due date")}, + /** + * + * @returns {Promise} + */ + _makeDateDueRecord: function () { + const field = { + type: "date", + name: "date_due", + }; + return this.model + .makeRecord("account.bank.statement.line", [field], { + date_due: {}, + }) + .then((recordID) => { + this.fields.date_due = new basic_fields.FieldDate( + this, + "date_due", + this.model.get(recordID), + { + mode: "edit", + attrs: {placeholder: _t("Select Due date")}, + } + ); + if (this._initialState.st_line.date_due !== "") { + this.fields.date_due.value = + this._initialState.st_line.date_due; } - ); - if (this._initialState.st_line.date_due !== "") { - this.fields.date_due.value = this._initialState.st_line.date_due; - } - this.fields.date_due.appendTo(this.$(".accounting_view caption")); - }); - }, - }); -}); + this.fields.date_due.appendTo( + this.$(".accounting_view caption") + ); + }); + }, + }); + } +); diff --git a/account_reconciliation_widget_due_date/tests/test_account_reconciliation_widget_date_due.py b/account_reconciliation_widget_due_date/tests/test_account_reconciliation_widget_date_due.py index b3e97fa2..51778d51 100644 --- a/account_reconciliation_widget_due_date/tests/test_account_reconciliation_widget_date_due.py +++ b/account_reconciliation_widget_due_date/tests/test_account_reconciliation_widget_date_due.py @@ -84,7 +84,9 @@ class TestAccountReconciliationWidgetDueDate(TransactionCase): # Check that the date_maturity does not change move_line_credit.date_maturity = date(2021, 2, 5) reconciliation_widget.update_bank_statement_line_due_date( - res["moves"], [line_a.id], [line_a.date_due], + res["moves"], + [line_a.id], + [line_a.date_due], ) self.assertEqual(move_line_credit.date_maturity, date(2021, 2, 5)) # line_b @@ -104,7 +106,9 @@ class TestAccountReconciliationWidgetDueDate(TransactionCase): [{"partner_id": line_b.partner_id.id, "new_aml_dicts": new_aml_dicts}], ) reconciliation_widget.update_bank_statement_line_due_date( - res["moves"], [line_b.id], [line_b.date_due], + res["moves"], + [line_b.id], + [line_b.date_due], ) self.assertEqual(len(res["moves"]), 1) move = account_move_model.browse(res["moves"][0]) @@ -129,7 +133,9 @@ class TestAccountReconciliationWidgetDueDate(TransactionCase): [{"partner_id": line_c.partner_id.id, "new_aml_dicts": new_aml_dicts}], ) reconciliation_widget.update_bank_statement_line_due_date( - res["moves"], [line_c.id], ["2021-02-05"], + res["moves"], + [line_c.id], + ["2021-02-05"], ) self.assertEqual(line_c.date_due, date(2021, 2, 5)) self.assertEqual(len(res["moves"]), 1) diff --git a/setup/account_reconciliation_widget_due_date/odoo/addons/account_reconciliation_widget_due_date b/setup/account_reconciliation_widget_due_date/odoo/addons/account_reconciliation_widget_due_date new file mode 120000 index 00000000..fa3f47a9 --- /dev/null +++ b/setup/account_reconciliation_widget_due_date/odoo/addons/account_reconciliation_widget_due_date @@ -0,0 +1 @@ +../../../../account_reconciliation_widget_due_date \ No newline at end of file diff --git a/setup/account_reconciliation_widget_due_date/setup.py b/setup/account_reconciliation_widget_due_date/setup.py new file mode 100644 index 00000000..28c57bb6 --- /dev/null +++ b/setup/account_reconciliation_widget_due_date/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +)