TIP: You can type at any time to perform a new search.
Contract Forecast
contract_forecast · OCA/contract
- Repository
- OCA/contract · module folder · Try on Runboat
- Module version
- 1.0.1
- Category
- Uncategorized
- Folder size
- 0.13 MB
- License
- AGPL-3
- Application
- No
- Auto-installable
- No
- Website
- https://github.com/OCA/contract
- Last tracking update
- 2026-08-07 08:43:01
- Authors
- ACSONE SA/NV, Odoo Community Association (OCA)
- Maintainers
- ACSONE SA/NV, Odoo Community Association (OCA)
- Committers
- sbejaoui, Weblate, OCA-git-bot, oca-ci, hda
- Odoo dependencies
- Python dependencies
- requests
- System dependencies
- None
- Required by
- contract_forecast_brand, contract_forecast_variable_quantity
- Description
The contract_forecast module enhances the **Contract** module by generating and managing **forecast periods** for each contract line. It automatically calculates future invoicing amounts and dates, allowing companies to better anticipate and report on expected revenues. Forecasts are visible directly from the contract in a **pivot view** or **list view**. \## Features - Generate forecast periods based on the contract's invoicing rules. - View forecasts grouped by invoice date. - Automatic regeneration of forecast periods when contract data changes (product, quantity, price, dates, etc.). - Company-wide configuration to enable or disable forecasts. - Configurable forecast interval and period type (monthly or yearly). - Forecast period data includes: - Start and end dates - Expected invoice date - Quantity, unit price, discount, and subtotal (untaxed) - Clean handling of auto-renewing and manually-ended contracts.
Code Analysis ⓘ
Views touched (6)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
contract_contract_form_view |
contract.contract | form | Inherits contract.contract_contract_form_view | |
contract_line_forecast_period_graph_view |
contract.line.forecast.period.graph (in contract_forecast) | contract.line.forecast.period | graph | New |
contract_line_forecast_period_pivot_view |
contract.line.forecast.period.pivot (in contract_forecast) | contract.line.forecast.period | pivot | New |
contract_line_forecast_period_search_view |
contract.line.forecast.period | search | New | |
contract_line_forecast_period_tree_view |
contract.line.forecast.period | list | New | |
res_config_settings_form_view |
res.config.settings | form | Inherits contract.res_config_settings_form_view |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (5)
New fields (0)
No new fields.
Public methods (2)-
action_show_contract_forecast(self) -
write(self, values)
New fields (1)
-
forecast_period_idsOne2many → contract.line.forecast.periodcomodel_name='contract.line.forecast.period'inverse_name='contract_line_id'required=Falsestring='Forecast Periods'
-
create(self, vals_list)@api.model_create_multi -
write(self, values)
New fields (14)
-
company_idMany2one → res.companycomodel_name='res.company'string='Company' -
contract_idMany2one → contract.contractcomodel_name='contract.contract'index=Trueondelete='cascade'readonly=Truerelated='contract_line_id.contract_id'required=Truestore=True -
contract_line_idMany2one → contract.linecomodel_name='contract.line'index=Trueondelete='cascade'readonly=Truerequired=True -
currency_idMany2onerelated='contract_id.currency_id'store=True -
date_endDatereadonly=Truerequired=True -
date_invoiceDatereadonly=Truerequired=Truestring='Invoice Date' -
date_startDatereadonly=Truerequired=True -
discountFloatdigits='Discount'help='Discount that is applied in generated invoices. It should be less or equal to 100'string='Discount (%)' -
nameCharreadonly=Truerequired=True -
price_subtotalMonetarycompute='_compute_price_subtotal'store=Truestring='Amount Untaxed' -
price_unitMonetarystring='Unit Price' -
product_idMany2one → product.productcomodel_name='product.product'index=Truereadonly=Truerelated='contract_line_id.product_id'required=Truestore=True -
quantityFloatdefault=1.0required=True -
sequenceIntegerrelated='contract_line_id.sequence'store=True
No public methods.
New fields (3)
-
contract_forecast_intervalIntegerdefault=12string='Number of contract forecast Periods' -
contract_forecast_rule_typeSelectiondefault='monthly' args: [('monthly', 'Month(s)'), ('yearly', 'Year(s)')] -
enable_contract_forecastBooleandefault=Truestring='Enable contract forecast'
No public methods.
New fields (3)
-
contract_forecast_intervalIntegerreadonly=Falserelated='company_id.contract_forecast_interval' -
contract_forecast_rule_typeSelectionreadonly=Falserelated='company_id.contract_forecast_rule_type' -
enable_contract_forecastBooleanreadonly=Falserelated='company_id.enable_contract_forecast'
No public methods.
Loading…
Loading…
- Status
- Open migration PR — not merged yet for this version
- CI status
- checks failing
- Open since
- 67 days ago
- Last activity
- 67 days ago
- Repository
- OCA/contract
- Pull request
- [19.0][MIG] contract_forecast (#1464)