From 203b8a70c928c2e09d99a704ec850a0d8a806069 Mon Sep 17 00:00:00 2001
From: Florian da Costa
Date: Thu, 4 Apr 2019 20:29:44 +0200
Subject: [PATCH 01/16] Add module contract_invoice_start_end_dates
---
contract_invoice_start_end_dates/README.rst | 77 ++++
contract_invoice_start_end_dates/__init__.py | 3 +
.../__manifest__.py | 20 +
.../models/__init__.py | 3 +
.../models/account_analytic_account.py | 20 +
.../readme/CONTRIBUTORS.rst | 4 +
.../readme/DESCRIPTION.rst | 2 +
.../static/description/icon.png | Bin 0 -> 9455 bytes
.../static/description/index.html | 424 ++++++++++++++++++
9 files changed, 553 insertions(+)
create mode 100644 contract_invoice_start_end_dates/README.rst
create mode 100644 contract_invoice_start_end_dates/__init__.py
create mode 100644 contract_invoice_start_end_dates/__manifest__.py
create mode 100644 contract_invoice_start_end_dates/models/__init__.py
create mode 100644 contract_invoice_start_end_dates/models/account_analytic_account.py
create mode 100644 contract_invoice_start_end_dates/readme/CONTRIBUTORS.rst
create mode 100644 contract_invoice_start_end_dates/readme/DESCRIPTION.rst
create mode 100644 contract_invoice_start_end_dates/static/description/icon.png
create mode 100644 contract_invoice_start_end_dates/static/description/index.html
diff --git a/contract_invoice_start_end_dates/README.rst b/contract_invoice_start_end_dates/README.rst
new file mode 100644
index 0000000000..0e75c2bf20
--- /dev/null
+++ b/contract_invoice_start_end_dates/README.rst
@@ -0,0 +1,77 @@
+================================
+Contract Invoice Start End Dates
+================================
+
+.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! This file is generated by oca-gen-addon-readme !!
+ !! changes will be overwritten. !!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
+ :target: https://odoo-community.org/page/development-status
+ :alt: Beta
+.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
+ :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
+ :alt: License: AGPL-3
+.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fcontract-lightgray.png?logo=github
+ :target: https://github.com/OCA/contract/tree/10.0/contract_invoice_start_end_dates
+ :alt: OCA/contract
+.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
+ :target: https://translation.odoo-community.org/projects/contract-10-0/contract-10-0-contract_invoice_start_end_dates
+ :alt: Translate me on Weblate
+.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
+ :target: https://runbot.odoo-community.org/runbot/110/10.0
+ :alt: Try me on Runbot
+
+|badge1| |badge2| |badge3| |badge4| |badge5|
+
+This module automatically add start and end dates to the invoice line
+generated by a contract if the product is marked as 'must have date'.
+
+**Table of contents**
+
+.. contents::
+ :local:
+
+Bug Tracker
+===========
+
+Bugs are tracked on `GitHub Issues `_.
+In case of trouble, please check there if your issue has already been reported.
+If you spotted it first, help us smashing it by providing a detailed and welcomed
+`feedback `_.
+
+Do not contact contributors directly about support or help with technical issues.
+
+Credits
+=======
+
+Authors
+~~~~~~~
+
+* Akretion
+
+Contributors
+~~~~~~~~~~~~
+
+* `Akretion `_:
+
+ * Alexis de Lattre
+ * Florian da Costa
+
+Maintainers
+~~~~~~~~~~~
+
+This module is maintained by the OCA.
+
+.. image:: https://odoo-community.org/logo.png
+ :alt: Odoo Community Association
+ :target: https://odoo-community.org
+
+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.
+
+This module is part of the `OCA/contract `_ project on GitHub.
+
+You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/contract_invoice_start_end_dates/__init__.py b/contract_invoice_start_end_dates/__init__.py
new file mode 100644
index 0000000000..0f9fbab01a
--- /dev/null
+++ b/contract_invoice_start_end_dates/__init__.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
+from . import models
diff --git a/contract_invoice_start_end_dates/__manifest__.py b/contract_invoice_start_end_dates/__manifest__.py
new file mode 100644
index 0000000000..40f46108ce
--- /dev/null
+++ b/contract_invoice_start_end_dates/__manifest__.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Copyright 2019 Akretion
+# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
+
+{
+ 'name': 'Contract Invoice Start End Dates',
+ 'version': '12.0.1.0.0',
+ 'category': 'Contract Management',
+ 'author': 'Akretion, '
+ 'Odoo Community Association (OCA)',
+ 'website': 'https://github.com/OCA/contract',
+ 'depends': [
+ 'account_invoice_start_end_dates',
+ 'contract',
+ ],
+ 'data': [
+ ],
+ 'license': 'AGPL-3',
+ 'installable': True,
+}
diff --git a/contract_invoice_start_end_dates/models/__init__.py b/contract_invoice_start_end_dates/models/__init__.py
new file mode 100644
index 0000000000..f20c3dcc48
--- /dev/null
+++ b/contract_invoice_start_end_dates/models/__init__.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
+from . import account_analytic_account
diff --git a/contract_invoice_start_end_dates/models/account_analytic_account.py b/contract_invoice_start_end_dates/models/account_analytic_account.py
new file mode 100644
index 0000000000..060bff6036
--- /dev/null
+++ b/contract_invoice_start_end_dates/models/account_analytic_account.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Copyright 2019 - Akretion
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+
+from odoo import api, models
+
+
+class AccountAnalyticAccount(models.Model):
+ _inherit = 'account.analytic.account'
+
+ @api.model
+ def _prepare_invoice_line(self, line, invoice_id):
+ vals = super(AccountAnalyticAccount, self)._prepare_invoice_line(
+ line, invoice_id)
+ if line.product_id.must_have_dates:
+ vals.update({
+ 'start_date': self.env.context['date_from'],
+ 'end_date': self.env.context['date_to'],
+ })
+ return vals
diff --git a/contract_invoice_start_end_dates/readme/CONTRIBUTORS.rst b/contract_invoice_start_end_dates/readme/CONTRIBUTORS.rst
new file mode 100644
index 0000000000..48247114ab
--- /dev/null
+++ b/contract_invoice_start_end_dates/readme/CONTRIBUTORS.rst
@@ -0,0 +1,4 @@
+* `Akretion `_:
+
+ * Alexis de Lattre
+ * Florian da Costa
diff --git a/contract_invoice_start_end_dates/readme/DESCRIPTION.rst b/contract_invoice_start_end_dates/readme/DESCRIPTION.rst
new file mode 100644
index 0000000000..feb5f9c7e4
--- /dev/null
+++ b/contract_invoice_start_end_dates/readme/DESCRIPTION.rst
@@ -0,0 +1,2 @@
+This module automatically adds start and end dates to the invoice line
+generated by a contract if the product is marked as 'must have date'.
diff --git a/contract_invoice_start_end_dates/static/description/icon.png b/contract_invoice_start_end_dates/static/description/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d
GIT binary patch
literal 9455
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
z
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
Xviia!U7SGha1wx#SCgwmn*{w2TRX*I
literal 0
HcmV?d00001
diff --git a/contract_invoice_start_end_dates/static/description/index.html b/contract_invoice_start_end_dates/static/description/index.html
new file mode 100644
index 0000000000..9758a663ba
--- /dev/null
+++ b/contract_invoice_start_end_dates/static/description/index.html
@@ -0,0 +1,424 @@
+
+
+
+
+
+
+Contract Invoice Start End Dates
+
+
+
+
+
Contract Invoice Start End Dates
+
+
+

+
This module automatically add start and end dates to the invoice line
+generated by a contract if the product is marked as ‘must have date’.
+
Table of contents
+
+
+
+
Bugs are tracked on GitHub Issues.
+In case of trouble, please check there if your issue has already been reported.
+If you spotted it first, help us smashing it by providing a detailed and welcomed
+feedback.
+
Do not contact contributors directly about support or help with technical issues.
+
+
+
+
+
+
+
+
This module is maintained by the OCA.
+

+
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.
+
This module is part of the OCA/contract project on GitHub.
+
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
+
+
+
+
+
From d35697329415eae9a12e1e7efc172b1733a87346 Mon Sep 17 00:00:00 2001
From: Alexis de Lattre
Date: Fri, 15 May 2020 17:32:07 +0200
Subject: [PATCH 02/16] [MIG] contract_invoice_start_end_dates to v12
---
contract_invoice_start_end_dates/README.rst | 22 +++++++++++++------
contract_invoice_start_end_dates/__init__.py | 2 --
.../__manifest__.py | 7 +++---
.../i18n/contract_invoice_start_end_dates.pot | 20 +++++++++++++++++
.../models/__init__.py | 4 +---
.../models/account_analytic_account.py | 20 -----------------
.../models/contract_line.py | 20 +++++++++++++++++
.../readme/DESCRIPTION.rst | 2 +-
.../static/description/index.html | 14 +++++++-----
9 files changed, 68 insertions(+), 43 deletions(-)
create mode 100644 contract_invoice_start_end_dates/i18n/contract_invoice_start_end_dates.pot
delete mode 100644 contract_invoice_start_end_dates/models/account_analytic_account.py
create mode 100644 contract_invoice_start_end_dates/models/contract_line.py
diff --git a/contract_invoice_start_end_dates/README.rst b/contract_invoice_start_end_dates/README.rst
index 0e75c2bf20..6570c0de97 100644
--- a/contract_invoice_start_end_dates/README.rst
+++ b/contract_invoice_start_end_dates/README.rst
@@ -14,19 +14,19 @@ Contract Invoice Start End Dates
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fcontract-lightgray.png?logo=github
- :target: https://github.com/OCA/contract/tree/10.0/contract_invoice_start_end_dates
+ :target: https://github.com/OCA/contract/tree/12.0/contract_invoice_start_end_dates
:alt: OCA/contract
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
- :target: https://translation.odoo-community.org/projects/contract-10-0/contract-10-0-contract_invoice_start_end_dates
+ :target: https://translation.odoo-community.org/projects/contract-12-0/contract-12-0-contract_invoice_start_end_dates
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
- :target: https://runbot.odoo-community.org/runbot/110/10.0
+ :target: https://runbot.odoo-community.org/runbot/110/12.0
:alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5|
-This module automatically add start and end dates to the invoice line
-generated by a contract if the product is marked as 'must have date'.
+This module automatically adds start and end dates to the invoice line
+generated by a contract if the product is marked as *Must have dates*.
**Table of contents**
@@ -39,7 +39,7 @@ Bug Tracker
Bugs are tracked on `GitHub Issues `_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
-`feedback `_.
+`feedback `_.
Do not contact contributors directly about support or help with technical issues.
@@ -72,6 +72,14 @@ 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.
-This module is part of the `OCA/contract `_ project on GitHub.
+.. |maintainer-florian-dacosta| image:: https://github.com/florian-dacosta.png?size=40px
+ :target: https://github.com/florian-dacosta
+ :alt: florian-dacosta
+
+Current `maintainer `__:
+
+|maintainer-florian-dacosta|
+
+This module is part of the `OCA/contract `_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/contract_invoice_start_end_dates/__init__.py b/contract_invoice_start_end_dates/__init__.py
index 0f9fbab01a..0650744f6b 100644
--- a/contract_invoice_start_end_dates/__init__.py
+++ b/contract_invoice_start_end_dates/__init__.py
@@ -1,3 +1 @@
-# -*- coding: utf-8 -*-
-# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
from . import models
diff --git a/contract_invoice_start_end_dates/__manifest__.py b/contract_invoice_start_end_dates/__manifest__.py
index 40f46108ce..6a94c162f1 100644
--- a/contract_invoice_start_end_dates/__manifest__.py
+++ b/contract_invoice_start_end_dates/__manifest__.py
@@ -1,5 +1,4 @@
-# -*- coding: utf-8 -*-
-# Copyright 2019 Akretion
+# Copyright 2019-2020 Akretion France (http://www.akretion.com/)
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
{
@@ -8,13 +7,13 @@
'category': 'Contract Management',
'author': 'Akretion, '
'Odoo Community Association (OCA)',
+ 'maintainers': ['florian-dacosta'],
'website': 'https://github.com/OCA/contract',
'depends': [
'account_invoice_start_end_dates',
'contract',
],
- 'data': [
- ],
+ 'data': [],
'license': 'AGPL-3',
'installable': True,
}
diff --git a/contract_invoice_start_end_dates/i18n/contract_invoice_start_end_dates.pot b/contract_invoice_start_end_dates/i18n/contract_invoice_start_end_dates.pot
new file mode 100644
index 0000000000..416a31b550
--- /dev/null
+++ b/contract_invoice_start_end_dates/i18n/contract_invoice_start_end_dates.pot
@@ -0,0 +1,20 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * contract_invoice_start_end_dates
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 12.0\n"
+"Report-Msgid-Bugs-To: \n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: contract_invoice_start_end_dates
+#: model:ir.model,name:contract_invoice_start_end_dates.model_contract_line
+msgid "Contract Line"
+msgstr ""
+
diff --git a/contract_invoice_start_end_dates/models/__init__.py b/contract_invoice_start_end_dates/models/__init__.py
index f20c3dcc48..6143a36501 100644
--- a/contract_invoice_start_end_dates/models/__init__.py
+++ b/contract_invoice_start_end_dates/models/__init__.py
@@ -1,3 +1 @@
-# -*- coding: utf-8 -*-
-# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
-from . import account_analytic_account
+from . import contract_line
diff --git a/contract_invoice_start_end_dates/models/account_analytic_account.py b/contract_invoice_start_end_dates/models/account_analytic_account.py
deleted file mode 100644
index 060bff6036..0000000000
--- a/contract_invoice_start_end_dates/models/account_analytic_account.py
+++ /dev/null
@@ -1,20 +0,0 @@
-# -*- coding: utf-8 -*-
-# Copyright 2019 - Akretion
-# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
-
-from odoo import api, models
-
-
-class AccountAnalyticAccount(models.Model):
- _inherit = 'account.analytic.account'
-
- @api.model
- def _prepare_invoice_line(self, line, invoice_id):
- vals = super(AccountAnalyticAccount, self)._prepare_invoice_line(
- line, invoice_id)
- if line.product_id.must_have_dates:
- vals.update({
- 'start_date': self.env.context['date_from'],
- 'end_date': self.env.context['date_to'],
- })
- return vals
diff --git a/contract_invoice_start_end_dates/models/contract_line.py b/contract_invoice_start_end_dates/models/contract_line.py
new file mode 100644
index 0000000000..361d9ba64b
--- /dev/null
+++ b/contract_invoice_start_end_dates/models/contract_line.py
@@ -0,0 +1,20 @@
+# Copyright 2019-2020 Akretion France (http://www.akretion.com/)
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+
+from odoo import models
+
+
+class ContractLine(models.Model):
+ _inherit = 'contract.line'
+
+ def _prepare_invoice_line(self, invoice_id=False, invoice_values=False):
+ vals = super(ContractLine, self)._prepare_invoice_line(
+ invoice_id=invoice_id, invoice_values=invoice_values)
+ if self.product_id.must_have_dates:
+ dates = self._get_period_to_invoice(
+ self.last_date_invoiced, self.recurring_next_date)
+ vals.update({
+ 'start_date': dates[0],
+ 'end_date': dates[1],
+ })
+ return vals
diff --git a/contract_invoice_start_end_dates/readme/DESCRIPTION.rst b/contract_invoice_start_end_dates/readme/DESCRIPTION.rst
index feb5f9c7e4..0dfd06b2d3 100644
--- a/contract_invoice_start_end_dates/readme/DESCRIPTION.rst
+++ b/contract_invoice_start_end_dates/readme/DESCRIPTION.rst
@@ -1,2 +1,2 @@
This module automatically adds start and end dates to the invoice line
-generated by a contract if the product is marked as 'must have date'.
+generated by a contract if the product is marked as *Must have dates*.
diff --git a/contract_invoice_start_end_dates/static/description/index.html b/contract_invoice_start_end_dates/static/description/index.html
index 9758a663ba..ea0671c171 100644
--- a/contract_invoice_start_end_dates/static/description/index.html
+++ b/contract_invoice_start_end_dates/static/description/index.html
@@ -3,7 +3,7 @@
-
+
Contract Invoice Start End Dates
-
-
Contract Invoice Start End Dates
+
+
+
+
+
+
+
Contract Invoice Start End Dates
-

+

This module automatically adds start and end dates to the invoice line
generated by a contract if the product is marked as Must have dates.
Table of contents
@@ -385,7 +390,7 @@
Contract Invoice Start End Dates
-
+
Bugs are tracked on GitHub Issues.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
@@ -393,15 +398,15 @@
Do not contact contributors directly about support or help with technical issues.
+
From 561f0e78151a60fbc3e867e571761cd293059411 Mon Sep 17 00:00:00 2001
From: bosd
Date: Tue, 30 Dec 2025 12:18:23 +0100
Subject: [PATCH 15/16] [MIG] contract_invoice_start_end_dates: Migration to
19.0
---
contract_invoice_start_end_dates/README.rst | 22 +++++++++----------
.../__manifest__.py | 2 +-
.../static/description/index.html | 6 ++---
3 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/contract_invoice_start_end_dates/README.rst b/contract_invoice_start_end_dates/README.rst
index 2cf06abcdb..24b5ade887 100644
--- a/contract_invoice_start_end_dates/README.rst
+++ b/contract_invoice_start_end_dates/README.rst
@@ -21,13 +21,13 @@ Contract Invoice Start End Dates
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fcontract-lightgray.png?logo=github
- :target: https://github.com/OCA/contract/tree/18.0/contract_invoice_start_end_dates
+ :target: https://github.com/OCA/contract/tree/19.0/contract_invoice_start_end_dates
:alt: OCA/contract
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
- :target: https://translation.odoo-community.org/projects/contract-18-0/contract-18-0-contract_invoice_start_end_dates
+ :target: https://translation.odoo-community.org/projects/contract-19-0/contract-19-0-contract_invoice_start_end_dates
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
- :target: https://runboat.odoo-community.org/builds?repo=OCA/contract&target_branch=18.0
+ :target: https://runboat.odoo-community.org/builds?repo=OCA/contract&target_branch=19.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -46,7 +46,7 @@ Bug Tracker
Bugs are tracked on `GitHub Issues `_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
-`feedback `_.
+`feedback `_.
Do not contact contributors directly about support or help with technical issues.
@@ -61,15 +61,15 @@ Authors
Contributors
------------
-- `Akretion `__:
+- `Akretion `__:
- - Alexis de Lattre
- - Florian da Costa
- - Chafique Delli
+ - Alexis de Lattre
+ - Florian da Costa
+ - Chafique Delli
-- `Heliconia Solutions Pvt. Ltd. `__
+- `Heliconia Solutions Pvt. Ltd. `__
- - Bhavesh Heliconia
+ - Bhavesh Heliconia
Maintainers
-----------
@@ -92,6 +92,6 @@ Current `maintainer `__:
|maintainer-florian-dacosta|
-This module is part of the `OCA/contract `_ project on GitHub.
+This module is part of the `OCA/contract `_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/contract_invoice_start_end_dates/__manifest__.py b/contract_invoice_start_end_dates/__manifest__.py
index 504b457856..9436c137b5 100644
--- a/contract_invoice_start_end_dates/__manifest__.py
+++ b/contract_invoice_start_end_dates/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "Contract Invoice Start End Dates",
- "version": "18.0.1.0.0",
+ "version": "19.0.1.0.0",
"category": "Contract Management",
"author": "Akretion, Odoo Community Association (OCA)",
"maintainers": ["florian-dacosta"],
diff --git a/contract_invoice_start_end_dates/static/description/index.html b/contract_invoice_start_end_dates/static/description/index.html
index 9062f223ea..1ba33f7d37 100644
--- a/contract_invoice_start_end_dates/static/description/index.html
+++ b/contract_invoice_start_end_dates/static/description/index.html
@@ -374,7 +374,7 @@ Contract Invoice Start End Dates
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:16759327e8dfed950022d49c2ec70376cbe8abf56116c7900ea3162db714b541
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-

+

This module automatically adds start and end dates to the invoice line
generated by a contract if the product is marked as Must have dates.
Table of contents
@@ -394,7 +394,7 @@
Bugs are tracked on GitHub Issues.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
-feedback.
+feedback.
Do not contact contributors directly about support or help with technical issues.
From 444e93f6c070506fe771442e019c0aa679a96297 Mon Sep 17 00:00:00 2001
From: bosd
Date: Tue, 30 Dec 2025 12:41:49 +0100
Subject: [PATCH 16/16] [test requirements]
---
test-requirements.txt | 2 ++
1 file changed, 2 insertions(+)
create mode 100644 test-requirements.txt
diff --git a/test-requirements.txt b/test-requirements.txt
new file mode 100644
index 0000000000..3e22603e4b
--- /dev/null
+++ b/test-requirements.txt
@@ -0,0 +1,2 @@
+odoo-addon-contract @ git+https://github.com/OCA/contract@refs/pull/1312/head#subdirectory=contract
+odoo-addon-account_invoice_start_end_dates @ git+https://github.com/OCA/account-closing@refs/pull/355/head#subdirectory=account_invoice_start_end_dates