Odoo Community Association

Sale Product Catalog Extended

Beta License: AGPL-3 OCA/sale-workflow Translate me on Weblate Try me on Runboat

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:

  1. Go to Settings > Technical > Parameters > System Parameters.
  2. 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:

  1. Go to Settings > Technical > Parameters > System Parameters.
  2. 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:

  1. Go to Settings > Technical > Parameters > System Parameters.
  2. 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):

  1. Go to Settings > Technical > Default Values.
  2. Create a new default value for:
    • Field: sale.orderuse_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

Authors

  • Tecnativa

Contributors

Maintainers

This module is maintained by the OCA.

Odoo Community Association

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.