111 lines
3.6 KiB
Markdown
111 lines
3.6 KiB
Markdown
# Sale Outstanding
|
||
|
||

|
||

|
||

|
||
|
||
This module computes and displays two financial indicators on sale orders:
|
||
|
||
- **Outstanding (Untaxed)**: total amount of order lines that have been delivered but not yet invoiced.
|
||
- **To Do (Untaxed)**: total amount of order lines that have not yet been fully delivered
|
||
(excluding services billed on order with the `ordered_timesheet` policy).
|
||
|
||
Both values are visible directly on the sale order form and in the list view
|
||
(columns hidden by default, toggleable via the column selector).
|
||
|
||
## Table of Contents
|
||
|
||
- [Description](#description)
|
||
- [Installation](#installation)
|
||
- [Configuration](#configuration)
|
||
- [Usage](#usage)
|
||
- [Known Issues / Roadmap](#known-issues--roadmap)
|
||
- [Bug Tracker](#bug-tracker)
|
||
- [Credits](#credits)
|
||
|
||
## Description
|
||
|
||
This module extends the `sale.order` model with two computed, stored monetary fields.
|
||
|
||
### `sum_outstanding` — Outstanding (Untaxed)
|
||
|
||
Computed as the sum across all order lines of:
|
||
|
||
```
|
||
qty_to_invoice × price_unit
|
||
```
|
||
|
||
This amount represents what has been delivered to the customer but not yet invoiced.
|
||
|
||
### `sum_pending_work` — To Do (Untaxed)
|
||
|
||
Computed as the sum across all order lines of:
|
||
|
||
```
|
||
(ordered_qty − delivered_qty) × price_unit
|
||
```
|
||
|
||
Services whose invoicing policy is `ordered_timesheet` are excluded from this calculation,
|
||
as they are invoiced upon order confirmation rather than upon delivery.
|
||
|
||
This amount represents work that still needs to be delivered and has not yet been invoiced.
|
||
|
||
### Display
|
||
|
||
- **Form view**: both fields appear in an `oe_subtotal_footer` group placed after the order
|
||
totals block.
|
||
- **List view**: both columns are added after `amount_tax`, hidden by default, with column
|
||
footer totals.
|
||
|
||
## Installation
|
||
|
||
This module depends on:
|
||
|
||
- `base` (Odoo core)
|
||
- `sale` (Odoo core)
|
||
|
||
Use the standard Odoo module installation procedure to install `sale_outstanding`.
|
||
|
||
## Configuration
|
||
|
||
No specific configuration is required. The fields are computed automatically.
|
||
|
||
To display the columns in the sale order list view, click the column selector icon
|
||
(top-right corner of the list) and enable **Outstanding (Untaxed)** and/or **To Do (Untaxed)**.
|
||
|
||
## Usage
|
||
|
||
1. Open a confirmed sale order for which deliveries have been (partially or fully) completed.
|
||
2. The **Outstanding (Untaxed)** field shows the amount delivered but not yet invoiced.
|
||
3. The **To Do (Untaxed)** field shows the amount of work not yet delivered.
|
||
4. In the sale order list view, enable the optional columns for a global overview of outstanding amounts.
|
||
|
||
## Known Issues / Roadmap
|
||
|
||
- Amounts are computed excluding taxes. A possible improvement would be to add tax-included variants.
|
||
- The filter on `service_policy == 'ordered_timesheet'` is hard-coded; a configurable setting
|
||
would allow more flexibility.
|
||
|
||
## Bug Tracker
|
||
|
||
Bugs are tracked on [our issue tracker](https://github.com/elabore-coop/sale-tools/issues).
|
||
If you encounter a problem, please check whether your issue has already been reported.
|
||
If you are the first to spot it, help us by providing detailed and actionable feedback.
|
||
|
||
## Credits
|
||
|
||
### Contributors
|
||
|
||
- Stéphan Sainléger \<stephan@sainleger.fr\>
|
||
|
||
### Funders
|
||
|
||
The development of this module has been financially supported by:
|
||
|
||
- [Elabore](https://elabore.coop)
|
||
- [Datactivist](https://datactivist.coop)
|
||
|
||
### Maintainer
|
||
|
||
This module is maintained by [Elabore](https://elabore.coop).
|