From 878dcf7626eae48f9a6fbfe710dedac19835b67f Mon Sep 17 00:00:00 2001 From: Mathieu Date: Mon, 17 Jun 2024 09:18:08 +0200 Subject: [PATCH 1/3] [IMP] account_invoice_overdue_warn --- account_invoice_overdue_warn/__manifest__.py | 1 + .../models/__init__.py | 2 + .../models/res_company.py | 13 ++++ .../models/res_config_settings.py | 13 ++++ .../models/res_partner.py | 78 +++++++++++++++++++ .../tests/__init__.py | 1 + .../tests/test_credit_note_warn.py | 68 ++++++++++++++++ .../views/res_config_settings_views.xml | 25 ++++++ .../views/res_partner.xml | 14 ++++ 9 files changed, 215 insertions(+) create mode 100644 account_invoice_overdue_warn/models/res_company.py create mode 100644 account_invoice_overdue_warn/models/res_config_settings.py create mode 100644 account_invoice_overdue_warn/tests/test_credit_note_warn.py create mode 100644 account_invoice_overdue_warn/views/res_config_settings_views.xml diff --git a/account_invoice_overdue_warn/__manifest__.py b/account_invoice_overdue_warn/__manifest__.py index c0a7db101..816191ece 100644 --- a/account_invoice_overdue_warn/__manifest__.py +++ b/account_invoice_overdue_warn/__manifest__.py @@ -13,6 +13,7 @@ "website": "https://github.com/OCA/credit-control", "depends": ["account"], "data": [ + "views/res_config_settings_views.xml", "views/res_partner.xml", ], "installable": True, diff --git a/account_invoice_overdue_warn/models/__init__.py b/account_invoice_overdue_warn/models/__init__.py index 91fed54d4..26e065c1b 100644 --- a/account_invoice_overdue_warn/models/__init__.py +++ b/account_invoice_overdue_warn/models/__init__.py @@ -1 +1,3 @@ +from . import res_company +from . import res_config_settings from . import res_partner diff --git a/account_invoice_overdue_warn/models/res_company.py b/account_invoice_overdue_warn/models/res_company.py new file mode 100644 index 000000000..ffde8279e --- /dev/null +++ b/account_invoice_overdue_warn/models/res_company.py @@ -0,0 +1,13 @@ +# Copyright 2024 Akretion France (http://www.akretion.com/) +# @author: Mathieu Delva +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class ResCompany(models.Model): + _inherit = "res.company" + + credit_note_partner = fields.Boolean( + string="Credit note on partner", + ) \ No newline at end of file diff --git a/account_invoice_overdue_warn/models/res_config_settings.py b/account_invoice_overdue_warn/models/res_config_settings.py new file mode 100644 index 000000000..75575829d --- /dev/null +++ b/account_invoice_overdue_warn/models/res_config_settings.py @@ -0,0 +1,13 @@ +# Copyright 2024 Akretion France (http://www.akretion.com/) +# @author: Mathieu Delva +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class ResConfigSettings(models.TransientModel): + _inherit = "res.config.settings" + + credit_note_partner = fields.Boolean( + related="company_id.credit_note_partner", readonly=False + ) \ No newline at end of file diff --git a/account_invoice_overdue_warn/models/res_partner.py b/account_invoice_overdue_warn/models/res_partner.py index af9f00d0d..300cd1c3f 100644 --- a/account_invoice_overdue_warn/models/res_partner.py +++ b/account_invoice_overdue_warn/models/res_partner.py @@ -22,6 +22,20 @@ class ResPartner(models.Model): help="Overdue invoice total residual amount in company currency.", ) + credit_note = fields.Boolean(compute="_compute_credit_note", compute_sudo=True) + credit_note_count = fields.Integer( + compute="_compute_credit_note_count_amount", + string="# of Credit Note", + compute_sudo=True, + ) + + credit_note_amount = fields.Monetary( + compute="_compute_credit_note_count_amount", + string="Credit Note Residual", + compute_sudo=True, + ) + + def _compute_overdue_invoice_count_amount(self): for partner in self: company_id = partner.company_id.id or partner.env.company.id @@ -82,3 +96,67 @@ def jump_to_overdue_invoices(self): company_id = self.company_id.id or self.env.company.id action = self._prepare_jump_to_overdue_invoices(company_id) return action + + def _compute_credit_note(self): + for partner in self: + company_id = partner.company_id or partner.env.company + partner.credit_note = company_id.credit_note_partner + + def _compute_credit_note_count_amount(self): + for partner in self: + company_id = partner.company_id.id or partner.env.company.id + ( + count, + amount_company_currency, + ) = partner._prepare_credit_note_count_amount(company_id) + partner.credit_note_count = count + partner.credit_note_amount = amount_company_currency + + def _prepare_credit_note_count_amount(self, company_id): + self.ensure_one() + domain = self._prepare_credit_note_domain(company_id) + # amount_residual_signed is in company currency + rg_res = self.env["account.move"].read_group( + domain, ["amount_residual_signed"], [] + ) + count = 0 + overdue_invoice_amount = 0.0 + if rg_res: + count = rg_res[0]["__count"] + overdue_invoice_amount = abs(rg_res[0]["amount_residual_signed"]) if rg_res[0]["amount_residual_signed"] else rg_res[0]["amount_residual_signed"] + return (count, overdue_invoice_amount) + + def _prepare_credit_note_domain(self, company_id): + # The use of commercial_partner_id is in this method + self.ensure_one() + today = fields.Date.context_today(self) + if company_id is None: + company_id = self.env.company.id + domain = [ + ("move_type", "=", "out_refund"), + ("company_id", "=", company_id), + ("commercial_partner_id", "=", self.commercial_partner_id.id), + ("invoice_date", "<", today), + ("state", "=", "posted"), + ("payment_state", "in", ("not_paid", "partial")), + ] + return domain + + def _prepare_jump_to_credit_note(self, company_id): + action = self.env["ir.actions.actions"]._for_xml_id( + "account.action_move_out_refund_type" + ) + action["domain"] = self._prepare_credit_note_domain(company_id) + action["context"] = { + "journal_type": "sale", + "move_type": "out_refund", + "default_move_type": "out_refund", + "default_partner_id": self.id, + } + return action + + def jump_to_credit_note(self): + self.ensure_one() + company_id = self.company_id.id or self.env.company.id + action = self._prepare_jump_to_credit_note(company_id) + return action \ No newline at end of file diff --git a/account_invoice_overdue_warn/tests/__init__.py b/account_invoice_overdue_warn/tests/__init__.py index 365cd2464..3a683f055 100644 --- a/account_invoice_overdue_warn/tests/__init__.py +++ b/account_invoice_overdue_warn/tests/__init__.py @@ -1 +1,2 @@ +from . import test_credit_note_warn from . import test_overdue_warn diff --git a/account_invoice_overdue_warn/tests/test_credit_note_warn.py b/account_invoice_overdue_warn/tests/test_credit_note_warn.py new file mode 100644 index 000000000..7c4dedd4f --- /dev/null +++ b/account_invoice_overdue_warn/tests/test_credit_note_warn.py @@ -0,0 +1,68 @@ +# Copyright 2024 Akretion France (http://www.akretion.com/) +# @author: Mathieu Delva +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from datetime import datetime, timedelta + +from odoo.tests import tagged +from odoo.tests.common import TransactionCase + + +@tagged("post_install", "-at_install") +class TestOverdueWarn(TransactionCase): + def setUp(self): + super().setUp() + self.company = self.env.ref("base.main_company") + self.partner = self.env.ref("base.res_partner_2") + today = datetime.now().date() + + self.credit_note_invoice1 = self.env["account.move"].create( + { + "partner_id": self.partner.id, + "move_type": "out_refund", + "company_id": self.company.id, + "currency_id": self.company.currency_id.id, + "invoice_date": today - timedelta(days=5), + "invoice_line_ids": [ + ( + 0, + 0, + { + "name": "test line", + "display_type": "product", + "price_unit": 20, + "quantity": 1, + "tax_ids": [], + }, + ) + ], + } + ) + self.credit_note_invoice1.action_post() + self.credit_note_invoice2 = self.env["account.move"].create( + { + "partner_id": self.partner.id, + "move_type": "out_refund", + "company_id": self.company.id, + "currency_id": self.company.currency_id.id, + "invoice_date": datetime.now().date(), + "invoice_line_ids": [ + ( + 0, + 0, + { + "name": "test line", + "display_type": "product", + "price_unit": 30, + "quantity": 1, + "tax_ids": [], + }, + ) + ], + } + ) + self.credit_note_invoice2.action_post() + + def test_overdue_warn(self): + self.assertEqual(self.partner.credit_note_count, 1) + self.assertEqual(self.partner.credit_note_amount, 20) diff --git a/account_invoice_overdue_warn/views/res_config_settings_views.xml b/account_invoice_overdue_warn/views/res_config_settings_views.xml new file mode 100644 index 000000000..46710c98b --- /dev/null +++ b/account_invoice_overdue_warn/views/res_config_settings_views.xml @@ -0,0 +1,25 @@ + + + + res.config.settings.view.form.inherit.account + res.config.settings + + +
+
+
+ +
+
+
+
+
+
+
+
diff --git a/account_invoice_overdue_warn/views/res_partner.xml b/account_invoice_overdue_warn/views/res_partner.xml index 374b84967..aa36c079c 100644 --- a/account_invoice_overdue_warn/views/res_partner.xml +++ b/account_invoice_overdue_warn/views/res_partner.xml @@ -19,6 +19,20 @@ class="oe_link" />for a total residual of + + From 9c50e4b51cf3bcad892339754a1a1533c5183e44 Mon Sep 17 00:00:00 2001 From: Mathieu Date: Tue, 18 Jun 2024 08:52:13 +0200 Subject: [PATCH 2/3] [FIX] pre-commit --- .../models/res_company.py | 2 +- .../models/res_config_settings.py | 2 +- .../models/res_partner.py | 17 ++++++++++------- .../static/description/index.html | 12 +++++++----- .../tests/test_credit_note_warn.py | 2 +- .../views/res_config_settings_views.xml | 8 +++----- .../views/res_partner.xml | 12 ++++++------ 7 files changed, 29 insertions(+), 26 deletions(-) diff --git a/account_invoice_overdue_warn/models/res_company.py b/account_invoice_overdue_warn/models/res_company.py index ffde8279e..ee7b443f8 100644 --- a/account_invoice_overdue_warn/models/res_company.py +++ b/account_invoice_overdue_warn/models/res_company.py @@ -10,4 +10,4 @@ class ResCompany(models.Model): credit_note_partner = fields.Boolean( string="Credit note on partner", - ) \ No newline at end of file + ) diff --git a/account_invoice_overdue_warn/models/res_config_settings.py b/account_invoice_overdue_warn/models/res_config_settings.py index 75575829d..e78add1d7 100644 --- a/account_invoice_overdue_warn/models/res_config_settings.py +++ b/account_invoice_overdue_warn/models/res_config_settings.py @@ -10,4 +10,4 @@ class ResConfigSettings(models.TransientModel): credit_note_partner = fields.Boolean( related="company_id.credit_note_partner", readonly=False - ) \ No newline at end of file + ) diff --git a/account_invoice_overdue_warn/models/res_partner.py b/account_invoice_overdue_warn/models/res_partner.py index 300cd1c3f..0a553b8ae 100644 --- a/account_invoice_overdue_warn/models/res_partner.py +++ b/account_invoice_overdue_warn/models/res_partner.py @@ -35,7 +35,6 @@ class ResPartner(models.Model): compute_sudo=True, ) - def _compute_overdue_invoice_count_amount(self): for partner in self: company_id = partner.company_id.id or partner.env.company.id @@ -111,7 +110,7 @@ def _compute_credit_note_count_amount(self): ) = partner._prepare_credit_note_count_amount(company_id) partner.credit_note_count = count partner.credit_note_amount = amount_company_currency - + def _prepare_credit_note_count_amount(self, company_id): self.ensure_one() domain = self._prepare_credit_note_domain(company_id) @@ -123,9 +122,13 @@ def _prepare_credit_note_count_amount(self, company_id): overdue_invoice_amount = 0.0 if rg_res: count = rg_res[0]["__count"] - overdue_invoice_amount = abs(rg_res[0]["amount_residual_signed"]) if rg_res[0]["amount_residual_signed"] else rg_res[0]["amount_residual_signed"] + overdue_invoice_amount = ( + abs(rg_res[0]["amount_residual_signed"]) + if rg_res[0]["amount_residual_signed"] + else rg_res[0]["amount_residual_signed"] + ) return (count, overdue_invoice_amount) - + def _prepare_credit_note_domain(self, company_id): # The use of commercial_partner_id is in this method self.ensure_one() @@ -141,7 +144,7 @@ def _prepare_credit_note_domain(self, company_id): ("payment_state", "in", ("not_paid", "partial")), ] return domain - + def _prepare_jump_to_credit_note(self, company_id): action = self.env["ir.actions.actions"]._for_xml_id( "account.action_move_out_refund_type" @@ -154,9 +157,9 @@ def _prepare_jump_to_credit_note(self, company_id): "default_partner_id": self.id, } return action - + def jump_to_credit_note(self): self.ensure_one() company_id = self.company_id.id or self.env.company.id action = self._prepare_jump_to_credit_note(company_id) - return action \ No newline at end of file + return action diff --git a/account_invoice_overdue_warn/static/description/index.html b/account_invoice_overdue_warn/static/description/index.html index 03bcaf28c..19e7e223c 100644 --- a/account_invoice_overdue_warn/static/description/index.html +++ b/account_invoice_overdue_warn/static/description/index.html @@ -1,4 +1,3 @@ - @@ -9,10 +8,11 @@ /* :Author: David Goodger (goodger@python.org) -:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $ +:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $ :Copyright: This stylesheet has been placed in the public domain. Default cascading style sheet for the HTML output of Docutils. +Despite the name, some widely supported CSS2 features are used. See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to customize this style sheet. @@ -275,7 +275,7 @@ margin-left: 2em ; margin-right: 2em } -pre.code .ln { color: grey; } /* line numbers */ +pre.code .ln { color: gray; } /* line numbers */ pre.code, code { background-color: #eeeeee } pre.code .comment, code .comment { color: #5C6576 } pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } @@ -301,7 +301,7 @@ span.pre { white-space: pre } -span.problematic { +span.problematic, pre.problematic { color: red } span.section-subtitle { @@ -422,7 +422,9 @@

Contributors

Maintainers

This module is maintained by the OCA.

-Odoo Community Association + +Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

diff --git a/account_invoice_overdue_warn/tests/test_credit_note_warn.py b/account_invoice_overdue_warn/tests/test_credit_note_warn.py index 7c4dedd4f..60a09d710 100644 --- a/account_invoice_overdue_warn/tests/test_credit_note_warn.py +++ b/account_invoice_overdue_warn/tests/test_credit_note_warn.py @@ -15,7 +15,7 @@ def setUp(self): self.company = self.env.ref("base.main_company") self.partner = self.env.ref("base.res_partner_2") today = datetime.now().date() - + self.credit_note_invoice1 = self.env["account.move"].create( { "partner_id": self.partner.id, diff --git a/account_invoice_overdue_warn/views/res_config_settings_views.xml b/account_invoice_overdue_warn/views/res_config_settings_views.xml index 46710c98b..413c21418 100644 --- a/account_invoice_overdue_warn/views/res_config_settings_views.xml +++ b/account_invoice_overdue_warn/views/res_config_settings_views.xml @@ -1,19 +1,17 @@ - res.config.settings.view.form.inherit.account + res.config.settings.view.form.inherit.account res.config.settings
- +
-
- +
This customer has
From 6248c7ac55b5802ce5028b167f22caa2d02494bf Mon Sep 17 00:00:00 2001 From: Mathieu Date: Wed, 26 Jun 2024 18:14:05 +0200 Subject: [PATCH 3/3] [UPD] french translation --- .../i18n/account_invoice_overdue_warn.pot | 46 ++++++++++++- account_invoice_overdue_warn/i18n/fr.po | 65 ++++++++++++++----- 2 files changed, 91 insertions(+), 20 deletions(-) diff --git a/account_invoice_overdue_warn/i18n/account_invoice_overdue_warn.pot b/account_invoice_overdue_warn/i18n/account_invoice_overdue_warn.pot index 867c05e99..601367b52 100644 --- a/account_invoice_overdue_warn/i18n/account_invoice_overdue_warn.pot +++ b/account_invoice_overdue_warn/i18n/account_invoice_overdue_warn.pot @@ -4,8 +4,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 16.0\n" +"Project-Id-Version: Odoo Server 16.0+e\n" "Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-06-26 16:06+0000\n" +"PO-Revision-Date: 2024-06-26 16:06+0000\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -13,17 +15,57 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" +#. module: account_invoice_overdue_warn +#: model:ir.model.fields,field_description:account_invoice_overdue_warn.field_res_partner__credit_note_count +#: model:ir.model.fields,field_description:account_invoice_overdue_warn.field_res_users__credit_note_count +msgid "# of Credit Note" +msgstr "" + #. module: account_invoice_overdue_warn #: model:ir.model.fields,field_description:account_invoice_overdue_warn.field_res_partner__overdue_invoice_count #: model:ir.model.fields,field_description:account_invoice_overdue_warn.field_res_users__overdue_invoice_count msgid "# of Overdue Invoices" msgstr "" +#. module: account_invoice_overdue_warn +#: model_terms:ir.ui.view,arch_db:account_invoice_overdue_warn.res_config_settings_view_form +msgid "Activate to show credit note due alert on partner" +msgstr "" + +#. module: account_invoice_overdue_warn +#: model:ir.model,name:account_invoice_overdue_warn.model_res_company +msgid "Companies" +msgstr "" + +#. module: account_invoice_overdue_warn +#: model:ir.model,name:account_invoice_overdue_warn.model_res_config_settings +msgid "Config Settings" +msgstr "" + #. module: account_invoice_overdue_warn #: model:ir.model,name:account_invoice_overdue_warn.model_res_partner msgid "Contact" msgstr "" +#. module: account_invoice_overdue_warn +#: model:ir.model.fields,field_description:account_invoice_overdue_warn.field_res_partner__credit_note +#: model:ir.model.fields,field_description:account_invoice_overdue_warn.field_res_users__credit_note +#: model_terms:ir.ui.view,arch_db:account_invoice_overdue_warn.view_partner_form_overdue_warn +msgid "Credit Note" +msgstr "" + +#. module: account_invoice_overdue_warn +#: model:ir.model.fields,field_description:account_invoice_overdue_warn.field_res_partner__credit_note_amount +#: model:ir.model.fields,field_description:account_invoice_overdue_warn.field_res_users__credit_note_amount +msgid "Credit Note Residual" +msgstr "" + +#. module: account_invoice_overdue_warn +#: model:ir.model.fields,field_description:account_invoice_overdue_warn.field_res_company__credit_note_partner +#: model:ir.model.fields,field_description:account_invoice_overdue_warn.field_res_config_settings__credit_note_partner +msgid "Credit note on partner" +msgstr "" + #. module: account_invoice_overdue_warn #: model:ir.model.fields,field_description:account_invoice_overdue_warn.field_res_partner__overdue_invoice_amount #: model:ir.model.fields,field_description:account_invoice_overdue_warn.field_res_users__overdue_invoice_amount @@ -49,4 +91,4 @@ msgstr "" #. module: account_invoice_overdue_warn #: model_terms:ir.ui.view,arch_db:account_invoice_overdue_warn.view_partner_form_overdue_warn msgid "overdue invoice(s)" -msgstr "" +msgstr "" \ No newline at end of file diff --git a/account_invoice_overdue_warn/i18n/fr.po b/account_invoice_overdue_warn/i18n/fr.po index 9335be44e..b376b4041 100644 --- a/account_invoice_overdue_warn/i18n/fr.po +++ b/account_invoice_overdue_warn/i18n/fr.po @@ -4,18 +4,22 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 14.0\n" +"Project-Id-Version: Odoo Server 16.0+e\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-28 16:49+0000\n" -"PO-Revision-Date: 2024-03-02 14:37+0000\n" -"Last-Translator: Alexis de Lattre \n" +"POT-Creation-Date: 2024-06-26 16:02+0000\n" +"PO-Revision-Date: 2024-06-26 16:02+0000\n" +"Last-Translator: \n" "Language-Team: \n" -"Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.17\n" +"Plural-Forms: \n" + +#. module: account_invoice_overdue_warn +#: model:ir.model.fields,field_description:account_invoice_overdue_warn.field_res_partner__credit_note_count +#: model:ir.model.fields,field_description:account_invoice_overdue_warn.field_res_users__credit_note_count +msgid "# of Credit Note" +msgstr "# de Note de Crédit" #. module: account_invoice_overdue_warn #: model:ir.model.fields,field_description:account_invoice_overdue_warn.field_res_partner__overdue_invoice_count @@ -23,10 +27,44 @@ msgstr "" msgid "# of Overdue Invoices" msgstr "Nb de factures échues impayées" +#. module: account_invoice_overdue_warn +#: model_terms:ir.ui.view,arch_db:account_invoice_overdue_warn.res_config_settings_view_form +msgid "Activate to show credit note due alert on partner" +msgstr "Activer pour voir les notes de crédit due sur le partenaire" + +#. module: account_invoice_overdue_warn +#: model:ir.model,name:account_invoice_overdue_warn.model_res_company +msgid "Companies" +msgstr "Sociétés" + +#. module: account_invoice_overdue_warn +#: model:ir.model,name:account_invoice_overdue_warn.model_res_config_settings +msgid "Config Settings" +msgstr "Paramètres de configuration" + #. module: account_invoice_overdue_warn #: model:ir.model,name:account_invoice_overdue_warn.model_res_partner msgid "Contact" -msgstr "Contact" +msgstr "" + +#. module: account_invoice_overdue_warn +#: model:ir.model.fields,field_description:account_invoice_overdue_warn.field_res_partner__credit_note +#: model:ir.model.fields,field_description:account_invoice_overdue_warn.field_res_users__credit_note +#: model_terms:ir.ui.view,arch_db:account_invoice_overdue_warn.view_partner_form_overdue_warn +msgid "Credit Note" +msgstr "Note de crédit" + +#. module: account_invoice_overdue_warn +#: model:ir.model.fields,field_description:account_invoice_overdue_warn.field_res_partner__credit_note_amount +#: model:ir.model.fields,field_description:account_invoice_overdue_warn.field_res_users__credit_note_amount +msgid "Credit Note Residual" +msgstr "Note de crédit résiduel" + +#. module: account_invoice_overdue_warn +#: model:ir.model.fields,field_description:account_invoice_overdue_warn.field_res_company__credit_note_partner +#: model:ir.model.fields,field_description:account_invoice_overdue_warn.field_res_config_settings__credit_note_partner +msgid "Credit note on partner" +msgstr "Note de crédit sur le partenaire" #. module: account_invoice_overdue_warn #: model:ir.model.fields,field_description:account_invoice_overdue_warn.field_res_partner__overdue_invoice_amount @@ -54,13 +92,4 @@ msgstr "pour un montant impayé de" #. module: account_invoice_overdue_warn #: model_terms:ir.ui.view,arch_db:account_invoice_overdue_warn.view_partner_form_overdue_warn msgid "overdue invoice(s)" -msgstr "facture(s) échue(s) impayées(s)" - -#~ msgid "Display Name" -#~ msgstr "Nom affiché" - -#~ msgid "ID" -#~ msgstr "ID" - -#~ msgid "Last Modified on" -#~ msgstr "Dernière modification le" +msgstr "facture(s) échue(s) impayées(s)" \ No newline at end of file