From 41433debdbb1f9828e81115e6bc76eb35ddfa693 Mon Sep 17 00:00:00 2001 From: Nicolas Martinelli Date: Wed, 19 Jul 2017 11:53:14 +0200 Subject: [PATCH] [FIX] account: leap year If the end of the accounting period is set to the 28-29th of February, crashes may occur in date computation. opw-752939 --- addons/account/models/company.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/addons/account/models/company.py b/addons/account/models/company.py index 4a249c495b9..13591c254de 100644 --- a/addons/account/models/company.py +++ b/addons/account/models/company.py @@ -58,10 +58,16 @@ Best Regards,''') if (date.month < last_month or (date.month == last_month and date.day <= last_day)): date = date.replace(month=last_month, day=last_day) else: - date = date.replace(month=last_month, day=last_day, year=date.year + 1) + if last_month == 2 and last_day == 29 and (date.year + 1) % 4 != 0: + date = date.replace(month=last_month, day=28, year=date.year + 1) + else: + date = date.replace(month=last_month, day=last_day, year=date.year + 1) date_to = date date_from = date + timedelta(days=1) - date_from = date_from.replace(year=date_from.year - 1) + if date_from.month == 2 and date_from.day == 29: + date_from = date_from.replace(day=28, year=date_from.year - 1) + else: + date_from = date_from.replace(year=date_from.year - 1) return {'date_from': date_from, 'date_to': date_to} def get_new_account_code(self, current_code, old_prefix, new_prefix, digits):