Sale Product Catalog Extended

This module extends the standard Odoo product catalog available from
sale orders with the following additions:
Multi-line product cards
When a product has more than one order line in the current sale order,
the catalog renders one card per line instead of a single aggregated
card. Each card shows the individual quantity and unit price for that
specific line, allowing independent editing without opening the order
form.
Per-line actions
Each in-order card exposes three inline actions:
- New line – adds a new order line for the same product.
- Edit – opens the specific order line form directly from the
catalog.
- Remove – removes that individual line from the order.
Last sale price
A Price filter panel is added to the catalog search panel with a
Last sale option. When active, products not yet in the order show
the unit price from the most recent confirmed delivery to the same
shipping address (last 6 months) instead of the pricelist price. When a
new line is added with this mode enabled, that last-sale price is
automatically applied as the unit price.
Origin filter
An Origin filter panel is added to the catalog search panel with a
Last sales option. When active, the catalog displays only products
that were previously sold to the same shipping address (last 6 months),
ordered by frequency and delivered quantity. This origin can be
preselected automatically through a system parameter (see
Configuration).
Exclude from last sales
The card dropdown menu adds an Exclude from last sales entry. It
stores the product and the catalog history partner in a dedicated model,
so that product is no longer offered by the Last sales origin for any
order of that partner. The Last sale price is not affected.
The exclusion is dropped as soon as an order containing that product is
confirmed for the same partner, so the product goes back to the Last
sales origin without any manual clean up. Adding the product to an
already confirmed order has the same effect.
Image zoom
Clicking on a product image in the catalog opens a full-size zoom
dialog.
Table of contents
Default catalog origin
By default the catalog opens with no origin preselected. You can make it
open directly on a specific origin by setting a system parameter:
- Go to Settings > Technical > Parameters > System Parameters.
- Create a new parameter with:
- Key: sale_product_catalog_extended.catalog_default_origin
- Value: the technical value of the origin to preselect. This
module provides sale_order (the Last sales option). Other
modules may add further origins; use the corresponding selection
value here.
When this parameter is set, opening the catalog from a sale order will
preselect the matching option in the Origin search panel
automatically. For example, set the value to sale_order to always
open the catalog on the Last sales origin. Leaving the parameter
empty or removing it restores the default behaviour (no origin
preselected).
Default catalog price mode
By default the catalog opens with no price mode preselected. You can
make it open directly on a specific price mode by setting a system
parameter:
- Go to Settings > Technical > Parameters > System Parameters.
- Create a new parameter with:
- Key:
sale_product_catalog_extended.catalog_default_price_mode
- Value: the technical value of the price mode to preselect. This
module provides last_price (the Last sale option). Other
modules may add further price modes; use the corresponding
selection value here.
When this parameter is set, opening the catalog from a sale order will
preselect the matching option in the Price search panel automatically.
For example, set the value to last_price to always open the catalog
on the Last sale price mode. Leaving the parameter empty or removing
it restores the default behaviour (no price mode preselected).
Last sales origin limit
By default the Last sales origin shows every product sold to the
matched partner in the last 6 months. You can cap how many products it
shows by setting a system parameter:
- Go to Settings > Technical > Parameters > System Parameters.
- Create a new parameter with:
- Key: sale_product_catalog_extended.catalog_last_order_limit
- Value: the maximum number of products to show, ordered by how
often and how much they were sold. Leaving the parameter unset (or
0) restores the default behaviour (no limit).
Catalog history partner
The Last sales origin and the Last sale price look at the
customer sale history. By default that history is matched against the
order commercial partner (including its child contacts), so all the
orders of the same customer are taken into account regardless of the
delivery address.
You can match the history against the order delivery address instead
through Default Values, scoped per user and company (same mechanism as
the sale order product picker):
- Go to Settings > Technical > Default Values.
- Create a new default value for:
- Field: sale.order → use_delivery_address
- Value: True to match by delivery address. Leaving no
default (or False) keeps the default behaviour (commercial
partner).
This affects both the order of the cards under the Last sales origin
(products are sorted by how often and how much they were sold to the
matched partner) and the price shown by the Last sale price mode.
Bug Tracker
Bugs are tracked on GitHub 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.
Do not contact contributors directly about support or help with technical issues.
Credits
Maintainers
This module is maintained by the OCA.
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.
This module is part of the OCA/sale-workflow project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.