Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
106 commits
Select commit Hold shift + click to select a range
51bb97a
[ADD] product_contract: Create module
Jan 12, 2017
515d0a4
[FIX] product_contract: Fix mock usage in tests
lasley May 26, 2017
ebfea93
[FIX] contract_sale_generation: it doesn't create sales (#141)
flotho Apr 1, 2018
baac1f6
[MIG] - Product Contract Migration to 12.0
sbejaoui Oct 31, 2018
9bbb705
[IMP] - Product with is_contract can be only of type service
sbejaoui Oct 31, 2018
1f95445
[IMP] - Change dependencies to contract_sale
sbejaoui Oct 31, 2018
cf5bcf6
[IMP] - Add recurrence fields to product template and sale order line
sbejaoui Oct 31, 2018
71a2d6b
[IMP] - Create contract on sale order confirmation
sbejaoui Nov 2, 2018
76d565b
[IMP] - Link contract line to sale order line
sbejaoui Nov 2, 2018
6f0cfde
[FIX] - Remove recurring_next_date from sale order line
sbejaoui Nov 2, 2018
95816e8
[IMP] - Contract product are ignored on invoicing process
sbejaoui Nov 5, 2018
135c457
[FIX] - Default value for date_start applied on product change
sbejaoui Nov 5, 2018
31949f5
[ADD] - Add readme directory
sbejaoui Nov 5, 2018
8dfdf5b
[IMP] - Onchange contract product on contract contract and contract t…
sbejaoui Nov 5, 2018
2cf1ed8
[FIX] - Change website to OCA repository url and prefix module name w…
sbejaoui Nov 5, 2018
88abb67
[FIX] - Compute recurring_next_date before create contract line
sbejaoui Nov 5, 2018
2232d02
[IMP] - Upsell/Downsell contract from sale order
sbejaoui Nov 15, 2018
d1be86a
[ADD] - Add renewal process with termination notice
sbejaoui Nov 19, 2018
e8ac9bc
[IMP] - compute date end onchange date start for auto-renew sale orde…
sbejaoui Nov 19, 2018
fb91d40
[IMP] - link contract line and its successor in upsel case
sbejaoui Nov 26, 2018
4e14a38
[FIX] - on upsel, contract line should stop day - 1
sbejaoui Nov 28, 2018
169447d
[FIX] - fix onchange
sbejaoui Nov 29, 2018
f65de73
[IMP] - hide recurring_invoicing_type if recurring_rule_type is month…
sbejaoui Nov 29, 2018
3a27eb2
[FIX] - include date_end in the period if the product is_autorenew
sbejaoui Nov 30, 2018
1ee2900
[IMP] - _prepare_contract_value for sale order confirm
sbejaoui Dec 3, 2018
feaafea
[REM] - Remove unused method
sbejaoui Dec 4, 2018
c455e17
[IMP] - get contract user from sale order user
sbejaoui Dec 13, 2018
db4e916
[IMP] - show related sale orders in contract form
sbejaoui Dec 14, 2018
d135e5b
[REF] Contract Product: invoice in prepare_invoice_line is optional
ThomasBinsfeld Dec 18, 2018
b7c16ae
[FIX] - fix flake8
sbejaoui Dec 20, 2018
70e786a
[ADD] Product Contract: payment term
ThomasBinsfeld Dec 21, 2018
db4acd9
[IMP] - update invoice_line vals only if it is not null
sbejaoui Dec 28, 2018
99e0ec9
[FIX] - fix unit tests
sbejaoui Jan 3, 2019
93efdf0
[IMP] - Add unit test
sbejaoui Jan 10, 2019
47ff96a
[REF] - predecessor_contract_line set in create process
sbejaoui Jan 15, 2019
1bfc32c
[IMP] - Simplify sale order line creation for contract product
sbejaoui Jan 21, 2019
8444f7b
[ADD] Contract Sale: fiscal position
ThomasBinsfeld Jan 23, 2019
565ea82
[IMP] - auto_renew_rule deducted from recurring_rule_type and product…
sbejaoui Jan 24, 2019
8f5ebec
[FIX] Product Contract: copy invoicing partner to created contract
ThomasBinsfeld Jan 29, 2019
a109bee
[FIX] - Fix recurring_next_date
sbejaoui Jan 29, 2019
409bae9
[FIX] - date_end required only for contract product
sbejaoui Jan 29, 2019
9b0036b
[FIX] - Get auto_renew_rule_type based on recurring_rule_type
sbejaoui Feb 1, 2019
4ad906d
[IMP] - cancel contract line if the downsell/upsell comes before
sbejaoui Feb 4, 2019
6bba392
[FIX] - date_end computed only for contract products
sbejaoui Feb 6, 2019
1b83fac
[REF] Contract: set order count to 0 if no access to orders
ThomasBinsfeld Feb 13, 2019
dbcc085
[IMP] - permit contract selection without contract_template_id
sbejaoui Feb 28, 2019
0059873
[ADD] Add start_date to contract_line display_name
qgroulard Sep 2, 2019
bd889fe
[12.0][IMP] - option to decide if we automaticallt create contract a …
sbejaoui Sep 5, 2019
e17b9bf
[FIX] - fix display name compute dependecy
sbejaoui Sep 5, 2019
eaad9df
[12.0][FIX] - create contract only on sale and done states
sbejaoui Sep 11, 2019
23e68ae
[12.0][REF] - Split analytic accouts and contracts
sbejaoui Sep 17, 2019
aa944fc
[12.0][IMP] - Improve unit tests
sbejaoui Sep 30, 2019
69022ab
[IMP] - improve is contract visibility in product view
sbejaoui Sep 30, 2019
ea3c9c3
[12.0][IMP] - sale line linked to contracts must not be invoiced from…
sbejaoui Oct 1, 2019
6a25662
[UPD] README.rst
OCA-git-bot Oct 1, 2019
6471b12
[ADD] icon.png
OCA-git-bot Oct 1, 2019
b0dd573
[FIX] - Remove deprecated field
sbejaoui Oct 1, 2019
25c79e3
[12.0][FIX] - contract company must be the same as the sale order
sbejaoui Oct 28, 2019
432f5d7
[12.0][FIX] - Run onchange contract_type when changing the contract t…
sbejaoui Nov 26, 2019
37c6a1e
[IMP] contract: support pre-paid for monthlylastday
sbidoul Dec 8, 2019
d8777e1
[IMP] - Set recurring_invoicing_type for existing products set to mon…
sbejaoui Dec 9, 2019
cfcd892
[12.0][FIX] - Set contract line analytic account at contract creation…
sbejaoui Dec 30, 2019
e8740a6
[IMP] contract: remove redundant method
pedrobaeza Jan 8, 2020
23a11d4
[FIX]contract_count == len(active contracts)
Feb 5, 2020
65fd34c
[12.0][ADD] - add auto_renew_interval, auto_renew_rule_type fields to…
sbejaoui Feb 17, 2020
e1de146
[IMP] - Improve UX, open contract form if the sale order is related t…
sbejaoui Feb 25, 2020
b7299f5
[FIX] product_contract: set 'Contract template' field company depend
Feb 11, 2020
48a23cb
[FIX] contract_sale_mandate: use property_contract_template_id
Feb 26, 2020
92c0078
[UPD] README.rst
OCA-git-bot Mar 9, 2020
8cb9a78
[IMP] - can't upsell or downsell a resiliated contract
sbejaoui Jan 30, 2020
bfac886
[IMP] - use terminate term instead of resiliate
sbejaoui Mar 10, 2020
e5c10b5
[12.0][IMP] - Add failing test for creating contract grouped by contr…
sbejaoui Mar 17, 2020
18c8a5c
[12.0][FIX] - fix contract creation group by contract template
sbejaoui Mar 17, 2020
0b67a02
[FIX] migration from 11.0
sergiocorato Mar 24, 2020
f3cd6b8
[UPD] README.rst
OCA-git-bot Mar 25, 2020
ee74e08
[UPD] README.rst
OCA-git-bot Mar 25, 2020
438c540
[IMP] - Contract: add new recurring_rule_type quarterly and semesterly
sbejaoui Apr 14, 2020
7d581bf
[13.0][MIG] - migration product_contract
sbejaoui Oct 24, 2020
bd5d050
[IMP] product_contract: black, isort, prettier
mourad-ehm Nov 12, 2021
ab41d2d
[MIG] product_contract: Migration to 14.0
mourad-ehm Mar 9, 2021
f7313d7
[IMP] product_contract: use _compute_display_name. Moved it to contra…
ilyasProgrammer Mar 21, 2023
aedae2f
[IMP] product_contract: code improvements
ilyasProgrammer Mar 22, 2023
1d7dffb
[UPD] README.rst
OCA-git-bot Apr 12, 2023
b6c4985
[IMP] product_contract: pre-commit stuff
Rad0van Apr 29, 2023
1e0ca44
[MIG] product_contract: Migration to 16.0
Rad0van Jun 8, 2023
26e5e51
[IMP] product_contract: pre-commit auto fixes
jaenbox May 7, 2024
4009aff
[MIG] product_contract: Migration to 17.0
jaenbox May 7, 2024
67336e4
[IMP] product_contract: contract quantity same quantity of order
jaenbox May 8, 2024
abf63c9
[IMP] product_contract: Add contract configurator instead of making t…
CarlosRoca13 Aug 26, 2024
2c2147a
[IMP] product_contract: Add posibility to compute date_start of line …
CarlosRoca13 Aug 29, 2024
a552140
[18.0][MIG] product_contract
sbejaoui Nov 4, 2024
f44cdc7
[IMP] product_contract: add contract duraction to contract product se…
sbejaoui Nov 15, 2024
ebc94bb
[IMP][REF] product_contract: rename product contract default_qty fiel…
sbejaoui Apr 21, 2025
a695fe6
[IMP] product_contract: clean UI & improve UX
sbejaoui Apr 21, 2025
ce642d9
[REF] product_contract: refactor ProductContractConfigurator for bett…
sbejaoui Apr 21, 2025
4257d6b
[IMP] contract and product_contract: pre-commit auto fixes
Anxo82 Jun 16, 2025
ea59362
[18.0][FIX] product_contract: add missing fields to JS
tobiaszehntner Jul 3, 2025
b2a142c
[IMP] product_contract - non contract sale order lines should not hav…
baimont Jul 18, 2025
31d1d2b
[FIX] product_contract: divide contract configuration button
bo-eska Aug 14, 2025
a174e90
[IMP] product_contract:seperate function for line name formatting
bjouini-acsone Aug 13, 2025
6869f58
[FIX] product_contract: set contract_type for contracts created from …
sbejaoui Sep 23, 2025
dc04b73
[OU-ADD] product_contract: Migration scripts
victoralmau Oct 27, 2025
df069a6
[IMP] product_contract: Allow creating sales orders with lines that l…
carlos-lopez-tecnativa Jan 21, 2025
07af5e2
[IMP] product_contract: pre-commit execution
bosd Dec 29, 2025
321af49
[MIG] product_contract: Migration to 19.0
bosd Dec 29, 2025
670735b
Fixups
Jan 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
120 changes: 120 additions & 0 deletions product_contract/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association

============================
Recurring - Product Contract
============================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:34494a98ca456e25a227778a7bf16f4107e7ca5893c8e264d62de0558186fa64
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |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/license-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/19.0/product_contract
:alt: OCA/contract
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/contract-19-0/contract-19-0-product_contract
: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=19.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

This module adds support for products to be linked to contract
templates.

A contract is created on ``sale.order`` confirmation for each different
template used in sale order line where recurrence details are set too.

Contract product are ignored on invoicing process and pass to nothing to
invoice directly.

**Table of contents**

.. contents::
:local:

Usage
=====

To use this module, you need to:

1. Go to Sales -> Products and select or create a product.
2. Check "Is a contract" and select the contract template related to the
product
3. Define default recurrence rules

Known issues / Roadmap
======================

- There's no support right now for computing the start date for the
following recurrent types: daily, weekly and monthlylastday.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/contract/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 <https://github.com/OCA/contract/issues/new?body=module:%20product_contract%0Aversion:%2019.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
-------

* LasLabs
* ACSONE SA/NV

Contributors
------------

- Ted Salmon <tsalmon@laslabs.com>
- Souheil Bejaoui <souheil.bejaoui@acsone.eu>
- `Tecnativa <https://www.tecnativa.com>`__:

- Ernesto Tejeda
- Pedro M. Baeza
- Carlos Roca

- David Jaen <david.jaen.revert@gmail.com>

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.

.. |maintainer-sbejaoui| image:: https://github.com/sbejaoui.png?size=40px
:target: https://github.com/sbejaoui
:alt: sbejaoui

Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:

|maintainer-sbejaoui|

This module is part of the `OCA/contract <https://github.com/OCA/contract/tree/19.0/product_contract>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
5 changes: 5 additions & 0 deletions product_contract/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Copyright 2017 LasLabs Inc.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

from . import models
from . import wizards
35 changes: 35 additions & 0 deletions product_contract/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Copyright 2017 LasLabs Inc.
# Copyright 2018 ACSONE SA/NV.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

{
"name": "Recurring - Product Contract",
"version": "19.0.1.0.0",
"category": "Contract Management",
"license": "AGPL-3",
"author": "LasLabs, ACSONE SA/NV, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/contract",
"depends": ["product", "contract_termination", "sale"],
"data": [
"security/ir.model.access.csv",
"wizards/res_config_settings.xml",
"views/contract.xml",
"views/product_template.xml",
"views/sale_order.xml",
"wizards/product_contract_configurator_views.xml",
],
"installable": True,
"application": False,
"external_dependencies": {"python": ["python-dateutil"]},
"maintainers": ["sbejaoui"],
"assets": {
"web.assets_backend": [
"product_contract/static/src/js/*",
(
"after",
"sale/static/src/xml/sale_product_field.xml",
"product_contract/static/src/xml/*",
),
]
},
}
Loading
Loading