From 24d040d917c448b8354279768c27e300f3d809ab Mon Sep 17 00:00:00 2001 From: Jacques-Etienne Baudoux Date: Wed, 6 Dec 2017 16:10:57 +0100 Subject: [PATCH] [FIX] open invoices - last_rec_date field value cannot be before the period start date --- .../migrations/8.0.1.2.0/post-migration.py | 8 ++++++-- .../models/account_move_line.py | 12 ++++++++---- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/account_financial_report_webkit/migrations/8.0.1.2.0/post-migration.py b/account_financial_report_webkit/migrations/8.0.1.2.0/post-migration.py index f1bc930b..e29762ec 100644 --- a/account_financial_report_webkit/migrations/8.0.1.2.0/post-migration.py +++ b/account_financial_report_webkit/migrations/8.0.1.2.0/post-migration.py @@ -17,13 +17,15 @@ def migrate(cr, version): """ UPDATE account_move_line SET last_rec_date = rec_data.aml_date FROM ( - SELECT rec.id, max(aml.date) as aml_date + SELECT rec.id, max(greatest(aml.date,ap.date_start)) as aml_date FROM account_move_line aml + JOIN account_period ap ON aml.period_id=ap.id JOIN account_move_reconcile rec ON rec.id = aml.reconcile_id GROUP BY rec.id ) as rec_data WHERE rec_data.id = account_move_line.reconcile_id + AND account_move_line.reconcile_id IS NOT NULL """ ) @@ -31,12 +33,14 @@ def migrate(cr, version): """ UPDATE account_move_line SET last_rec_date = rec_data.aml_date FROM ( - SELECT rec.id, max(aml.date) as aml_date + SELECT rec.id, max(greatest(aml.date,ap.date_start)) as aml_date FROM account_move_line aml + JOIN account_period ap ON aml.period_id=ap.id JOIN account_move_reconcile rec ON rec.id = aml.reconcile_partial_id GROUP BY rec.id ) as rec_data WHERE rec_data.id = account_move_line.reconcile_partial_id + AND account_move_line.reconcile_partial_id IS NOT NULL """ ) diff --git a/account_financial_report_webkit/models/account_move_line.py b/account_financial_report_webkit/models/account_move_line.py index e95618c0..a4dbf453 100644 --- a/account_financial_report_webkit/models/account_move_line.py +++ b/account_financial_report_webkit/models/account_move_line.py @@ -30,10 +30,14 @@ class AccountMoveLine(models.Model): for line in self: if line.reconcile_id: move_lines = line.reconcile_id.line_id - last_line = move_lines.sorted(lambda l: l.date)[-1] - line.last_rec_date = last_line.date + last_line = move_lines.sorted( + lambda l: max(l.date, l.period_id.date_start))[-1] + line.last_rec_date = max( + last_line.date, last_line.period_id.date_start) elif line.reconcile_partial_id: move_lines = line.reconcile_partial_id.line_partial_ids - last_line = move_lines.sorted(lambda l: l.date)[-1] - line.last_rec_date = last_line.date + last_line = move_lines.sorted( + lambda l: max(l.date, l.period_id.date_start))[-1] + line.last_rec_date = max( + last_line.date, last_line.period_id.date_start)