# Sale Outstanding ![Production/Stable](https://img.shields.io/badge/maturity-Production%2FStable-green.png) ![License: AGPL-3](https://img.shields.io/badge/licence-AGPL--3-blue.png) ![GitHub](https://img.shields.io/badge/github-elabore--coop%2Fsale--tools-lightgray.png?logo=github) 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 \ ### 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).