PMIS Backorders
Sales and purchase backorder lists and PDF reports for Odoo 18, with customer portal visibility. Backorders are order lines with quantities still to deliver or receive; they do not have to be overdue or out of stock.
The module reads existing orders, receipts, stock availability, and forecast dates. Generating a report does not confirm orders, reserve stock, or create deliveries or receipts.
Features
Sales backorders
The SO To Deliver (List) action and sales report wizard select confirmed orders in state sale with a positive Qty to Deliver and product type consu or product. Locked confirmed sales orders remain eligible. Draft and sent quotations, canceled orders, and fully delivered lines are excluded.
The wizard accepts a company customer or a country. Customer selection includes orders placed by contacts of that commercial partner. If both filters are set, the customer takes precedence; otherwise the country filter uses the order customer's country.
PDF reports group lines by commercial customer and order and show ordered quantity, report open quantity, availability status, and expected date. Print With Stock adds a stock column; Print Without Stock omits it. Both templates exclude unconfirmed orders when printed directly from selected sale order lines as well as through the wizard.
The sale order line search view also provides a To Deliver filter for confirmed lines with a positive quantity still to deliver.
Purchase backorders
PO To Receive selects product type consu with positive qty_to_receive on confirmed or locked purchase orders, in states purchase and done. RFQs, orders awaiting approval, canceled orders, and lines without pending receipt quantities are excluded.
The purchase PDF groups lines by vendor and order and shows ordered, received, and open quantities plus the planned date. Its template also restricts directly selected lines to confirmed or locked purchase orders.
The purchase wizard supports supplier, country, and View Expired Delivery filters. Supplier takes precedence over country. The expired filter is off by default; when enabled, it requires a planned date earlier than the current date and time. The supplied purchase menu opens the list, not this wizard.
Availability and portal
Sales report and portal statuses use Odoo's qty_available_today and forecast_expected_date, with comparisons rounded to the sale unit of measure. Make-to-order and dropship lines ignore local stock for status calculation; waiting lines identify the applicable supply route.
Portal |
Meaning |
|
|---|---|---|
OK |
Ready |
Available quantity covers the outstanding demand. |
PAR. |
Partial available |
Some quantity is available, but it does not cover the demand. |
WAIT |
Waiting |
No quantity is available and an expected date is known. |
NoDate |
NoDate |
No quantity is available and no expected date is known. |
The portal adds Backorders to My Account and serves a paginated list at /my/backorder. It uses the same sales selection rules and restricts results to the logged-in user's commercial partner. Its counter counts eligible lines, not orders. Each row shows the order, description, open quantity, availability, and expected date where applicable.
Configuration
The manifest declares product, stock, sale_stock, purchase_open_qty, and portal as dependencies. The OCA purchase_open_qty module supplies the purchase line qty_to_receive field. Configure sales, purchasing, warehouse routes, and customer portal accounts using their standard Odoo settings; this module adds no settings page.
Internal users receive access to the transient report wizards; their existing order permissions and record rules still apply. Portal users receive read access to sale order lines, with an added rule for their commercial partner and allowed companies. The portal controller searches with the current user's permissions.
Usage
Sales lists and reports
Under Sales → Orders, open SO To Deliver (List) to inspect outstanding confirmed sale lines. The action disables creation and editing in this view.
Open Generiraj PMIS poročilo o zaostalih prodajah under the same menu to launch Generate PMIS SO Backorder Report.
Optionally select Customer or Country. Leave both empty to include all eligible lines visible to the current user.
Choose Print Without Stock or Print With Stock to generate the PDF.
Purchase lists and reports
Under Purchase → Orders, open Generiraj PMIS poročilo o zaostalih nabavah. This opens PO To Receive, with creation and editing disabled in that view.
Select purchase lines and use Print → PO Backorder Report Pmis to print the purchase backorder PDF.
The separate Generate PMIS PO Backorder Report wizard action is available as pmis_backorder.pmis_action_po_backorder_wizard for integration into a menu or another action. When exposed, choose Supplier, Country, or View Expired Delivery, then Print Report.
Customer portal
Sign in with a customer portal account.
Open My Account → Backorders or navigate to /my/backorder.
Review the outstanding lines and use the pager to browse additional results.
Data model notes
sale.order.line.pmis_qty_to_deliver is stored and indexed. It is the ordered quantity minus delivered quantity, with a minimum of zero. Order state is checked by the selection domains and report templates, not by this quantity calculation.
pmis_supply_is_mto, pmis_supply_is_dropship, and pmis_supply_route_label derive the supply route from the line and its noncanceled stock moves. Dropshipping takes precedence in the route label.
pmis_report_available_qty, pmis_report_open_qty, and pmis_report_status provide the computed sales report and portal values.
incoming_qty aggregates open purchase quantities for the same product and company in one search, converting purchase units to the sale line's unit. It falls back to the product unit if the sale unit is unset. It is a helper field; the supplied reports and portal do not display it or use it to compute availability statuses.
Known limitations
The sales and purchase backorder generation menu labels are defined in Slovenian. The purchase wizard has no menu entry supplied by this module.
In sales PDFs, Open qty. is the quantity currently covered by availability: full outstanding demand for OK, available quantity for PAR., and a blank cell for WAIT or NoDate. It is not consistently the total undelivered quantity. The portal shows total outstanding demand for partial, waiting, and undated lines.
The optional stock column uses qty_on_1 through qty_on_4 when all four fields exist on product.product. It displays positive values from the first three under the fixed labels GO, MB, and KMB; the fourth is not displayed. Otherwise it falls back to qty_available. These optional fields are not defined by this module, and the stock column is separate from the route-aware availability status.
Unlike the purchase backorder list and report, the incoming_qty helper currently includes only POs in state purchase and excludes locked POs in state done.
Sales selection retains both consu and product type values. Purchase selection accepts only consu. The module does not add product types.
PDF line visibility rounds open quantities to four decimal places, while list and wizard domains use a strict positive-quantity check. Very small residual quantities can therefore appear in a list but not in its PDF.
Bug Tracker
Bugs are tracked on PMISuite Repository Issues. Before opening a new issue, check whether it has already been reported. Include the module and Odoo versions, steps to reproduce, and expected and actual results. Use synthetic examples and redact sensitive information.
Credits
Contributors
Matjaž Mozetič
Devid Miklus
Maintainers
Current maintainer:
This module is maintained by Luxim d.o.o., a company dedicated to the development of program management tools and solutions, as a part of PMISuite.com project.
Luxim is an active member of OCA (Odoo Community Association).






