[tryton-commits] changeset in weblate:default Translated using Weblate (French)

2021-09-15 Thread Cedric Krier
changeset c50c3ebe539a in weblate:default
details: https://hg.tryton.org/weblate?cmd=changeset&node=c50c3ebe539a
description:
Translated using Weblate (French)

Currently translated at 100.0% (1119 of 1119 strings)

Translation: Tryton/account
Translate-URL: https://translate.tryton.org/projects/tryton/account/fr/
diffstat:

 modules/account/locale/fr.po |  92 +--
 1 files changed, 28 insertions(+), 64 deletions(-)

diffs (315 lines):

diff -r 3df2d34d65a9 -r c50c3ebe539a modules/account/locale/fr.po
--- a/modules/account/locale/fr.po  Fri Sep 10 08:43:01 2021 +
+++ b/modules/account/locale/fr.po  Tue Sep 14 08:45:40 2021 +
@@ -1,13 +1,13 @@
 #
 msgid ""
 msgstr ""
-"PO-Revision-Date: 2021-08-05 22:43+\n"
+"PO-Revision-Date: 2021-09-15 09:13+\n"
 "Last-Translator: Cedric Krier \n"
 "Language: fr\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 4.7.2\n"
+"X-Generator: Weblate 4.8\n"
 
 msgctxt "field:account.account,active:"
 msgid "Active"
@@ -197,7 +197,6 @@
 msgid "Credit"
 msgstr "Crédit"
 
-#, fuzzy
 msgctxt "field:account.account.party,currency:"
 msgid "Currency"
 msgstr "Devise"
@@ -1025,7 +1024,6 @@
 msgid "Credit"
 msgstr "Crédit"
 
-#, fuzzy
 msgctxt "field:account.journal,currency:"
 msgid "Currency"
 msgstr "Devise"
@@ -1246,72 +1244,58 @@
 msgid "Journal"
 msgstr "Journal"
 
-#, fuzzy
 msgctxt "field:account.move.line.split.preview,currency:"
 msgid "Currency"
 msgstr "Devise"
 
-#, fuzzy
 msgctxt "field:account.move.line.split.preview,description:"
 msgid "Description"
 msgstr "Description"
 
-#, fuzzy
 msgctxt "field:account.move.line.split.preview,journal:"
 msgid "Journal"
 msgstr "Journal"
 
-#, fuzzy
 msgctxt "field:account.move.line.split.preview,terms:"
 msgid "Terms"
 msgstr "Termes"
 
-#, fuzzy
 msgctxt "field:account.move.line.split.start,amount:"
 msgid "Amount"
 msgstr "Montant"
 
-#, fuzzy
 msgctxt "field:account.move.line.split.start,currency:"
 msgid "Currency"
 msgstr "Devise"
 
-#, fuzzy
 msgctxt "field:account.move.line.split.start,frequency:"
 msgid "Frequency"
 msgstr "Fréquence"
 
-#, fuzzy
 msgctxt "field:account.move.line.split.start,interval:"
 msgid "Interval"
 msgstr "Intervalle"
 
-#, fuzzy
 msgctxt "field:account.move.line.split.start,number:"
 msgid "Number"
-msgstr "Numéro"
-
-#, fuzzy
+msgstr "Nombre"
+
 msgctxt "field:account.move.line.split.start,start_date:"
 msgid "Start Date"
 msgstr "Date de début"
 
-#, fuzzy
 msgctxt "field:account.move.line.split.start,total_amount:"
 msgid "Total Amount"
-msgstr "Montant"
-
-#, fuzzy
+msgstr "Montant total"
+
 msgctxt "field:account.move.line.split.term,amount:"
 msgid "Amount"
 msgstr "Montant"
 
-#, fuzzy
 msgctxt "field:account.move.line.split.term,currency:"
 msgid "Currency"
 msgstr "Devise"
 
-#, fuzzy
 msgctxt "field:account.move.line.split.term,date:"
 msgid "Date"
 msgstr "Date"
@@ -1384,7 +1368,6 @@
 msgid "Company"
 msgstr "Société"
 
-#, fuzzy
 msgctxt "field:account.move.reconcile_lines.writeoff,currency:"
 msgid "Currency"
 msgstr "Devise"
@@ -1537,7 +1520,6 @@
 msgid "Company"
 msgstr "Société"
 
-#, fuzzy
 msgctxt "field:account.reconcile.show,currency:"
 msgid "Currency"
 msgstr "Devise"
@@ -1594,7 +1576,6 @@
 msgid "Credit Tax Amount"
 msgstr "Montant de taxe de crédit"
 
-#, fuzzy
 msgctxt "field:account.tax,currency:"
 msgid "Currency"
 msgstr "Devise"
@@ -1831,7 +1812,6 @@
 msgid "Company"
 msgstr "Société"
 
-#, fuzzy
 msgctxt "field:account.tax.line,currency:"
 msgid "Currency"
 msgstr "Devise"
@@ -2092,7 +2072,6 @@
 msgid "Accounts"
 msgstr "Comptes"
 
-#, fuzzy
 msgctxt "field:party.party,currency:"
 msgid "Currency"
 msgstr "Devise"
@@ -2289,7 +2268,6 @@
 msgid "The second currency."
 msgstr "La devise secondaire."
 
-#, fuzzy
 msgctxt "help:account.move.line.split.start,interval:"
 msgid "The length of each period, in months."
 msgstr "La durée de chaque période, en mois."
@@ -2581,20 +2559,17 @@
 msgid "Group Lines"
 msgstr "Grouper les lignes"
 
-#, fuzzy
 msgctxt "model:account.move.line.split.preview,name:"
 msgid "Split Lines"
-msgstr "Grouper les lignes"
-
-#, fuzzy
+msgstr "Diviser les lignes"
+
 msgctxt "model:account.move.line.split.start,name:"
 msgid "Split Lines"
-msgstr "Grouper les lignes"
-
-#, fuzzy
+msgstr "Diviser les lignes"
+
 msgctxt "model:account.move.line.split.term,name:"
 msgid "Split Lines"
-msgstr "Grouper les lignes"
+msgstr "Diviser les lignes"
 
 msgctxt "model:account.move.line.template,name:"
 msgid "Account Move Line Template"
@@ -2844,10 +2819,9 @@
 msgid "Grouped Account Move"
 msgstr "Mouvement comptable groupé"
 
-#, fuzzy
 msgctxt "model:ir.action,name:act_move_form_splitting"
 msgid "Split Account Move"
-msgstr "Mouvement comptable"
+msgstr "Diviser le mouvement comptable"
 
 msgctxt "model:ir.action,name:act_move_from_template"
 msgid "Account Move"
@@ -29

[tryton-commits] changeset in weblate:default Translated using Weblate (French)

2021-09-15 Thread Cedric Krier
changeset b5ab88711655 in weblate:default
details: https://hg.tryton.org/weblate?cmd=changeset&node=b5ab88711655
description:
Translated using Weblate (French)

Currently translated at 100.0% (781 of 781 strings)

Translation: Tryton/stock
Translate-URL: https://translate.tryton.org/projects/tryton/stock/fr/
diffstat:

 modules/stock/locale/fr.po |  4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diffs (21 lines):

diff -r c50c3ebe539a -r b5ab88711655 modules/stock/locale/fr.po
--- a/modules/stock/locale/fr.poTue Sep 14 08:45:40 2021 +
+++ b/modules/stock/locale/fr.poWed Sep 15 07:05:07 2021 +
@@ -1,7 +1,7 @@
 #
 msgid ""
 msgstr ""
-"PO-Revision-Date: 2021-09-04 07:33+\n"
+"PO-Revision-Date: 2021-09-15 09:13+\n"
 "Last-Translator: Cedric Krier \n"
 "Language: fr\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -327,7 +327,7 @@
 
 msgctxt "field:stock.location,right:"
 msgid "Right"
-msgstr "Droit"
+msgstr "Droite"
 
 msgctxt "field:stock.location,storage_location:"
 msgid "Storage"



[tryton-commits] changeset in weblate:default Translated using Weblate (French)

2021-09-15 Thread Cedric Krier
changeset 4af620c924e0 in weblate:default
details: https://hg.tryton.org/weblate?cmd=changeset&node=4af620c924e0
description:
Translated using Weblate (French)

Currently translated at 100.0% (55 of 55 strings)

Translation: Tryton/analytic_budget
Translate-URL: 
https://translate.tryton.org/projects/tryton/analytic_budget/fr/
diffstat:

 modules/analytic_budget/locale/fr.po |  125 +++---
 1 files changed, 70 insertions(+), 55 deletions(-)

diffs (293 lines):

diff -r b5ab88711655 -r 4af620c924e0 modules/analytic_budget/locale/fr.po
--- a/modules/analytic_budget/locale/fr.po  Wed Sep 15 07:05:07 2021 +
+++ b/modules/analytic_budget/locale/fr.po  Wed Sep 15 07:01:49 2021 +
@@ -1,219 +1,234 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-09-15 09:13+\n"
+"PO-Revision-Date: 2021-09-15 09:13+\n"
+"Last-Translator: Cedric Krier \n"
+"Language-Team: LANGUAGE \n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n > 1;\n"
+"X-Generator: Weblate 4.8\n"
+
 msgctxt "field:analytic_account.budget,company:"
 msgid "Company"
-msgstr ""
+msgstr "Société"
 
 msgctxt "field:analytic_account.budget,end_date:"
 msgid "End Date"
-msgstr ""
+msgstr "Date de fin"
 
 msgctxt "field:analytic_account.budget,lines:"
 msgid "Lines"
-msgstr ""
+msgstr "Lignes"
 
 msgctxt "field:analytic_account.budget,name:"
 msgid "Name"
-msgstr ""
+msgstr "Nom"
 
 msgctxt "field:analytic_account.budget,root:"
 msgid "Root"
-msgstr ""
+msgstr "Racine"
 
 msgctxt "field:analytic_account.budget,root_lines:"
 msgid "Lines"
-msgstr ""
+msgstr "Lignes"
 
 msgctxt "field:analytic_account.budget,start_date:"
 msgid "Start Date"
-msgstr ""
+msgstr "Date de début"
 
 msgctxt "field:analytic_account.budget.context,budget:"
 msgid "Budget"
-msgstr ""
+msgstr "Budget"
 
 msgctxt "field:analytic_account.budget.copy.start,company:"
 msgid "Company"
-msgstr ""
+msgstr "Société"
 
 msgctxt "field:analytic_account.budget.copy.start,end_date:"
 msgid "End Date"
-msgstr ""
+msgstr "Date de fin"
 
 msgctxt "field:analytic_account.budget.copy.start,factor:"
 msgid "Factor"
-msgstr ""
+msgstr "Facteur"
 
 msgctxt "field:analytic_account.budget.copy.start,name:"
 msgid "Name"
-msgstr ""
+msgstr "Nom"
 
 msgctxt "field:analytic_account.budget.copy.start,start_date:"
 msgid "Start Date"
-msgstr ""
+msgstr "Date de début"
 
 msgctxt "field:analytic_account.budget.line,account:"
 msgid "Account"
-msgstr ""
+msgstr "Compte"
 
 msgctxt "field:analytic_account.budget.line,actual_amount:"
 msgid "Actual Amount"
-msgstr ""
+msgstr "Montant réel"
 
 msgctxt "field:analytic_account.budget.line,amount:"
 msgid "Amount"
-msgstr ""
+msgstr "Montant"
 
 msgctxt "field:analytic_account.budget.line,budget:"
 msgid "Budget"
-msgstr ""
+msgstr "Budget"
 
 msgctxt "field:analytic_account.budget.line,children:"
 msgid "Children"
-msgstr ""
+msgstr "Enfants"
 
 msgctxt "field:analytic_account.budget.line,company:"
 msgid "Company"
-msgstr ""
+msgstr "Société"
 
 msgctxt "field:analytic_account.budget.line,currency:"
 msgid "Currency"
-msgstr ""
+msgstr "Devise"
 
 msgctxt "field:analytic_account.budget.line,current_name:"
 msgid "Current Name"
-msgstr ""
+msgstr "Nom actuel"
 
 msgctxt "field:analytic_account.budget.line,left:"
 msgid "Left"
-msgstr ""
+msgstr "Gauche"
 
 msgctxt "field:analytic_account.budget.line,name:"
 msgid "Name"
-msgstr ""
+msgstr "Nom"
 
 msgctxt "field:analytic_account.budget.line,parent:"
 msgid "Parent"
-msgstr ""
+msgstr "Parent"
 
 msgctxt "field:analytic_account.budget.line,percentage:"
 msgid "Percentage"
-msgstr ""
+msgstr "Pourcentage"
 
 msgctxt "field:analytic_account.budget.line,right:"
 msgid "Right"
-msgstr ""
+msgstr "Droite"
 
 msgctxt "field:analytic_account.budget.line,root:"
 msgid "Root"
-msgstr ""
+msgstr "Racine"
 
 msgctxt "field:analytic_account.budget.line,total_amount:"
 msgid "Total Amount"
-msgstr ""
+msgstr "Montant total"
 
 msgctxt "help:analytic_account.budget,company:"
 msgid "The company that the budget is associated with."
-msgstr ""
+msgstr "La société à laquelle le budget est associé."
 
 msgctxt "help:analytic_account.budget.copy.start,factor:"
 msgid "The percentage to apply to the budget line amounts."
-msgstr ""
+msgstr "Le pourcentage à appliquer aux montants des lignes budgétaires."
 
 msgctxt "help:analytic_account.budget.line,actual_amount:"
 msgid "The total amount booked against the budget line."
-msgstr ""
+msgstr "Le montant total comptabilisé sur la ligne budgétaire."
 
 msgctxt "help:analytic_account.budget.line,amount:"
 msgid "The amount allocated to the budget line."
-msgstr ""
+msgstr "Le montant alloué à la ligne budgétaire."
 
 msgctxt "help:analytic_account.budget.line,children:"
 msgid "Used to add structure below the budget."
-msgstr ""
+msgstr "Utili

[tryton-commits] changeset in weblate:default Translated using Weblate (French)

2021-09-15 Thread Cedric Krier
changeset 50e39250dabb in weblate:default
details: https://hg.tryton.org/weblate?cmd=changeset&node=50e39250dabb
description:
Translated using Weblate (French)

Currently translated at 5.3% (5 of 93 strings)

Translation: Tryton/account_budget
Translate-URL: 
https://translate.tryton.org/projects/tryton/account_budget/fr/
diffstat:

 modules/account_budget/locale/fr.po |  25 -
 1 files changed, 20 insertions(+), 5 deletions(-)

diffs (63 lines):

diff -r 4af620c924e0 -r 50e39250dabb modules/account_budget/locale/fr.po
--- a/modules/account_budget/locale/fr.po   Wed Sep 15 07:01:49 2021 +
+++ b/modules/account_budget/locale/fr.po   Wed Sep 15 07:09:14 2021 +
@@ -1,3 +1,18 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-09-15 09:13+\n"
+"PO-Revision-Date: 2021-09-15 09:13+\n"
+"Last-Translator: Cedric Krier \n"
+"Language-Team: LANGUAGE \n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n > 1;\n"
+"X-Generator: Weblate 4.8\n"
+
 msgctxt "field:account.budget,company:"
 msgid "Company"
 msgstr ""
@@ -260,7 +275,7 @@
 
 msgctxt "model:ir.action,name:act_budget_line_form"
 msgid "Budget Lines"
-msgstr ""
+msgstr "Lignes budgétaires"
 
 msgctxt "model:ir.action,name:act_budget_report"
 msgid "Budgets"
@@ -268,7 +283,7 @@
 
 msgctxt "model:ir.action,name:wizard_budget_copy"
 msgid "Copy Budget"
-msgstr ""
+msgstr "Copier le budget"
 
 msgctxt "model:ir.action,name:wizard_budget_line_create_periods"
 msgid "Create Periods"
@@ -291,7 +306,7 @@
 
 msgctxt "model:ir.model.button,string:budget_copy_button"
 msgid "Copy"
-msgstr ""
+msgstr "Copier"
 
 msgctxt "model:ir.model.button,string:budget_line_create_periods_button"
 msgid "Create Periods"
@@ -299,11 +314,11 @@
 
 msgctxt "model:ir.model.button,string:budget_update_lines_button"
 msgid "Update Lines"
-msgstr ""
+msgstr "Mettre à jour les lignes"
 
 msgctxt "model:ir.rule.group,name:rule_group_budget_companies"
 msgid "User in companies"
-msgstr ""
+msgstr "Utilisateur dans les sociétés"
 
 msgctxt "model:ir.ui.menu,name:menu_budget"
 msgid "Budgets"



[tryton-commits] changeset in trytond:default Use UNION for 'Or'-ed domain with s...

2021-09-15 Thread Nicolas Évrard
changeset 47c55a8f9db6 in trytond:default
details: https://hg.tryton.org/trytond?cmd=changeset&node=47c55a8f9db6
description:
Use UNION for 'Or'-ed domain with subqueries

issue10658
review365781002
diffstat:

 CHANGELOG  |1 +
 trytond/model/modelsql.py  |  156 
 trytond/tests/test_modelsql.py |   92 
 3 files changed, 203 insertions(+), 46 deletions(-)

diffs (319 lines):

diff -r 7a211140f570 -r 47c55a8f9db6 CHANGELOG
--- a/CHANGELOG Tue Sep 14 21:49:26 2021 +0200
+++ b/CHANGELOG Wed Sep 15 15:16:40 2021 +0200
@@ -1,3 +1,4 @@
+* Use UNION for 'Or'-ed domain with subqueries
 * Add remove_forbidden_chars in tools
 * Manage errors during non-interactive operations
 * Add estimation count to ModelStorage
diff -r 7a211140f570 -r 47c55a8f9db6 trytond/model/modelsql.py
--- a/trytond/model/modelsql.py Tue Sep 14 21:49:26 2021 +0200
+++ b/trytond/model/modelsql.py Wed Sep 15 15:16:40 2021 +0200
@@ -6,7 +6,7 @@
 from functools import wraps
 
 from sql import (Table, Column, Literal, Desc, Asc, Expression, Null,
-NullsFirst, NullsLast, For)
+NullsFirst, NullsLast, For, Union)
 from sql.functions import CurrentTimestamp, Extract
 from sql.conditionals import Coalesce
 from sql.operators import Or, And, Operator, Equal
@@ -1257,20 +1257,70 @@
 raise AccessError(msg)
 
 @classmethod
-def search(cls, domain, offset=0, limit=None, order=None, count=False,
-query=False):
+def __search_query(cls, domain, count, query):
 pool = Pool()
 Rule = pool.get('ir.rule')
-transaction = Transaction()
-cursor = transaction.connection.cursor()
+
+rule_domain = Rule.domain_get(cls.__name__, mode='read')
+if domain and domain[0] == 'OR':
+local_domains, subquery_domains = split_subquery_domain(domain)
+else:
+local_domains, subquery_domains = None, None
 
-super(ModelSQL, cls).search(
-domain, offset=offset, limit=limit, order=order, count=count)
+# In case the search uses subqueries it's more efficient to use a UNION
+# of queries than using clauses with some JOIN because databases can
+# used indexes
+if subquery_domains:
+union_tables = []
+for sub_domain in [['OR'] + local_domains] + subquery_domains:
+tables, expression = cls.search_domain(sub_domain)
+if rule_domain:
+tables, domain_exp = cls.search_domain(
+rule_domain, active_test=False, tables=tables)
+expression &= domain_exp
+main_table, _ = tables[None]
+table = convert_from(None, tables)
+columns = cls.__searched_columns(
+main_table, not count and not query)
+union_tables.append(table.select(
+*columns, where=expression))
+expression = None
+tables = {
+None: (Union(*union_tables, all_=False), None),
+}
+else:
+tables, expression = cls.search_domain(domain)
+if rule_domain:
+tables, domain_exp = cls.search_domain(
+rule_domain, active_test=False, tables=tables)
+expression &= domain_exp
 
-# Get domain clauses
-tables, expression = cls.search_domain(domain)
+return tables, expression
 
-# Get order by
+@classmethod
+def __searched_columns(cls, table, eager=False, history=False):
+columns = [table.id.as_('id')]
+if (cls._history and Transaction().context.get('_datetime')
+and (eager or history)):
+columns.append(
+Coalesce(table.write_date, table.create_date).as_('_datetime'))
+columns.append(Column(table, '__id').as_('__id'))
+if eager:
+columns += [f.sql_column(table).as_(n)
+for n, f in cls._fields.items()
+if not hasattr(f, 'get')
+and n != 'id'
+and not getattr(f, 'translate', False)
+and f.loading == 'eager']
+if not callable(cls.table_query):
+sql_type = fields.Char('timestamp').sql_type().base
+columns += [Extract('EPOCH',
+Coalesce(table.write_date, table.create_date)
+).cast(sql_type).as_('_timestamp')]
+return columns
+
+@classmethod
+def __search_order(cls, order, tables):
 order_by = []
 order_types = {
 'DESC': Desc,
@@ -1299,42 +1349,34 @@
 forder = field.convert_order(oexpr, tables, cls)
 order_by.extend((NullOrdering(Order(o)) for o in forder))
 
-# construct a clause for the rules :
-domain = Rule.domain_get(cls.__name__, mode='

[tryton-commits] changeset in modules/account_invoice:default Add warning to prev...

2021-09-15 Thread Adrià Tarroja Caubet
changeset ac23c07d6bc0 in modules/account_invoice:default
details: 
https://hg.tryton.org/modules/account_invoice?cmd=changeset&node=ac23c07d6bc0
description:
Add warning to prevent posting invoices in the future

issue10088
review332311002
diffstat:

 CHANGELOG  |   1 +
 exceptions.py  |   4 +
 invoice.py |  20 ++-
 message.xml|   3 +
 tests/scenario_invoice_customer_sequential.rst |   6 +-
 tests/scenario_invoice_in_future.rst   |  71 ++
 tests/test_account_invoice.py  |   4 +
 7 files changed, 105 insertions(+), 4 deletions(-)

diffs (183 lines):

diff -r 1fd0481addf9 -r ac23c07d6bc0 CHANGELOG
--- a/CHANGELOG Mon Aug 30 00:27:13 2021 +0200
+++ b/CHANGELOG Wed Sep 15 19:19:35 2021 +0200
@@ -1,3 +1,4 @@
+* Add warning to prevent posting invoices in the future
 * Add wizard to reschedule lines to pay of invoices
 * Create base tax line for manual taxes
 
diff -r 1fd0481addf9 -r ac23c07d6bc0 exceptions.py
--- a/exceptions.py Mon Aug 30 00:27:13 2021 +0200
+++ b/exceptions.py Wed Sep 15 19:19:35 2021 +0200
@@ -35,3 +35,7 @@
 
 class InvoicePaymentTermDateWarning(UserWarning):
 pass
+
+
+class InvoiceFutureWarning(UserWarning):
+pass
diff -r 1fd0481addf9 -r ac23c07d6bc0 invoice.py
--- a/invoice.pyMon Aug 30 00:27:13 2021 +0200
+++ b/invoice.pyWed Sep 15 19:19:35 2021 +0200
@@ -30,7 +30,8 @@
 
 from .exceptions import (
 InvoiceTaxValidationError, InvoiceNumberError, InvoiceValidationError,
-InvoiceLineValidationError, PayInvoiceError, InvoicePaymentTermDateWarning)
+InvoiceLineValidationError, PayInvoiceError, InvoicePaymentTermDateWarning,
+InvoiceFutureWarning)
 
 if config.getboolean('account_invoice', 'filestore', default=False):
 file_id = 'invoice_report_cache_id'
@@ -1528,6 +1529,23 @@
 @ModelView.button
 @Workflow.transition('posted')
 def post(cls, invoices):
+pool = Pool()
+Date = pool.get('ir.date')
+Warning = pool.get('res.user.warning')
+today = Date.today()
+future_invoices = [
+i for i in invoices
+if i.type == 'out' and i.invoice_date and i.invoice_date > today]
+if future_invoices:
+names = ', '.join(m.rec_name for m in future_invoices[:5])
+if len(future_invoices) > 5:
+names += '...'
+warning_key = Warning.format(
+'invoice_date_future', future_invoices)
+if Warning.check(warning_key):
+raise InvoiceFutureWarning(warning_key,
+gettext('account_invoice.msg_invoice_date_future',
+invoices=names))
 cls._post(invoices)
 
 @classmethod
diff -r 1fd0481addf9 -r ac23c07d6bc0 message.xml
--- a/message.xml   Mon Aug 30 00:27:13 2021 +0200
+++ b/message.xml   Wed Sep 15 19:19:35 2021 +0200
@@ -75,6 +75,9 @@
 
 To close the periods you must post the invoices 
"%(invoices)s".
 
+
+The invoices "%(invoices)s" have an invoice 
date in the future.
+
 
 
 
diff -r 1fd0481addf9 -r ac23c07d6bc0 
tests/scenario_invoice_customer_sequential.rst
--- a/tests/scenario_invoice_customer_sequential.rstMon Aug 30 00:27:13 
2021 +0200
+++ b/tests/scenario_invoice_customer_sequential.rstWed Sep 15 19:19:35 
2021 +0200
@@ -16,7 +16,7 @@
 >>> from trytond.modules.account_invoice.tests.tools import \
 ... set_fiscalyear_invoice_sequences
 >>> today = dt.date.today()
->>> next_year = today + relativedelta(years=1)
+>>> past_year = today - relativedelta(years=1)
 
 Activate modules::
 
@@ -30,10 +30,10 @@
 Create fiscal years::
 
 >>> fiscalyear = set_fiscalyear_invoice_sequences(
-... create_fiscalyear(company, today=today))
+... create_fiscalyear(company, today=past_year))
 >>> fiscalyear.click('create_period')
 >>> next_fiscalyear = set_fiscalyear_invoice_sequences(
-... create_fiscalyear(company, today=next_year))
+... create_fiscalyear(company, today=today))
 >>> next_fiscalyear.click('create_period')
 
 Create chart of accounts::
diff -r 1fd0481addf9 -r ac23c07d6bc0 tests/scenario_invoice_in_future.rst
--- /dev/null   Thu Jan 01 00:00:00 1970 +
+++ b/tests/scenario_invoice_in_future.rst  Wed Sep 15 19:19:35 2021 +0200
@@ -0,0 +1,71 @@
+=
+Invoice in Future
+=
+
+Imports::
+
+>>> import datetime
+>>> from decimal import Decimal
+>>> from proteus import Model
+>>> from trytond.tests.tools import activate_modules
+>>> from trytond.modules.company.tests.tools import (create_company,
+... get_company)
+>>> from trytond.modules.account.tests.tools import (create_fiscalyear,
+... create_chart, get_accounts)
+