diff --git a/addons/account/models/account_move.py b/addons/account/models/account_move.py index 97e48136104..9f2b28a7f20 100644 --- a/addons/account/models/account_move.py +++ b/addons/account/models/account_move.py @@ -980,8 +980,9 @@ class AccountMoveLine(models.Model): raise UserError(_("Either pass both debit and credit or none.")) if 'date' not in vals: vals['date'] = self._context.get('date_p') or fields.Date.today() - if vals['date'] < date: - date = vals['date'] + vals['date'] = fields.Date.to_date(vals['date']) + if vals['date'] and vals['date'] < date: + date = vals['date'] if 'name' not in vals: vals['name'] = self._context.get('comment') or _('Write-Off') if 'analytic_account_id' not in vals: diff --git a/addons/account/static/src/js/reconciliation/reconciliation_model.js b/addons/account/static/src/js/reconciliation/reconciliation_model.js index 344f8521598..6b79d07a63a 100644 --- a/addons/account/static/src/js/reconciliation/reconciliation_model.js +++ b/addons/account/static/src/js/reconciliation/reconciliation_model.js @@ -854,6 +854,7 @@ var StatementModel = BasicModel.extend({ 'tax_id': [tax.id, null], 'amount': tax.amount, 'label': tax.name, + 'date': prop.date, 'account_id': tax.account_id ? [tax.account_id, null] : prop.account_id, 'analytic': tax.analytic, 'is_tax': true, @@ -1067,6 +1068,7 @@ var StatementModel = BasicModel.extend({ */ _formatQuickCreate: function (line, values) { values = values || {}; + var today = new moment().utc().format(); var account = this._formatNameGet(values.account_id); var formatOptions = { currency_id: line.st_line.currency_id, @@ -1083,6 +1085,7 @@ var StatementModel = BasicModel.extend({ 'tax_id': this._formatNameGet(values.tax_id), 'debit': 0, 'credit': 0, + 'date': values.date ? values.date : field_utils.parse.date(today, {}, {isUTC: true}), 'base_amount': values.amount_type !== "percentage" ? (amount) : line.balance.amount * values.amount / 100, 'percent': values.amount_type === "percentage" ? values.amount : null, @@ -1233,7 +1236,7 @@ var StatementModel = BasicModel.extend({ * datas allowing manual reconciliation */ var ManualModel = StatementModel.extend({ - quickCreateFields: ['account_id', 'journal_id', 'amount', 'analytic_account_id', 'label', 'tax_id', 'force_tax_included', 'analytic_tag_ids'], + quickCreateFields: ['account_id', 'journal_id', 'amount', 'analytic_account_id', 'label', 'tax_id', 'force_tax_included', 'analytic_tag_ids', 'date'], //-------------------------------------------------------------------------- // Public @@ -1628,6 +1631,12 @@ var ManualModel = StatementModel.extend({ }) .then(this._formatMoveLine.bind(this, handle)); }, + + _formatToProcessReconciliation: function (line, prop) { + var result = this._super(line, prop); + result['date'] = prop.date; + return result; + }, }); return { diff --git a/addons/account/static/src/js/reconciliation/reconciliation_renderer.js b/addons/account/static/src/js/reconciliation/reconciliation_renderer.js index 380ed23b0d0..7dbe669391d 100644 --- a/addons/account/static/src/js/reconciliation/reconciliation_renderer.js +++ b/addons/account/static/src/js/reconciliation/reconciliation_renderer.js @@ -556,10 +556,13 @@ var LineRenderer = Widget.extend(FieldManagerMixin, { }, { type: 'float', name: 'amount', + }, { + type: 'char', //TODO is it a bug or a feature when type date exists ? + name: 'date', }], { account_id: {string: _t("Account")}, label: {string: _t("Label")}, - amount: {string: _t("Account")} + amount: {string: _t("Account")}, }).then(function (recordID) { self.handleCreateRecord = recordID; var record = self.model.get(self.handleCreateRecord); @@ -587,6 +590,9 @@ var LineRenderer = Widget.extend(FieldManagerMixin, { self.fields.amount = new basic_fields.FieldFloat(self, 'amount', record, {mode: 'edit'}); + + self.fields.date = new basic_fields.FieldDate(self, + 'date', record, {mode: 'edit'}); var $create = $(qweb.render("reconciliation.line.create", {'state': state})); self.fields.account_id.appendTo($create.find('.create_account_id .o_td_field')) @@ -600,6 +606,7 @@ var LineRenderer = Widget.extend(FieldManagerMixin, { .then(addRequiredStyle.bind(self, self.fields.label)); self.fields.amount.appendTo($create.find('.create_amount .o_td_field')) .then(addRequiredStyle.bind(self, self.fields.amount)); + self.fields.date.appendTo($create.find('.create_date .o_td_field')) self.$('.create').append($create); function addRequiredStyle(widget) { @@ -888,6 +895,7 @@ var ManualLineRenderer = LineRenderer.extend({ _renderCreate: function (state) { this._super(state); this.$('.create .create_journal_id').show(); + this.$('.create .create_date').removeClass('d-none') this.$('.create .create_journal_id .o_input').addClass('o_required_modifier'); }, diff --git a/addons/account/static/src/xml/account_reconciliation.xml b/addons/account/static/src/xml/account_reconciliation.xml index 78965ce3de9..86ed3e1e71e 100644 --- a/addons/account/static/src/xml/account_reconciliation.xml +++ b/addons/account/static/src/xml/account_reconciliation.xml @@ -212,6 +212,10 @@