OCA/sale-workflow
OCA community repository with 338 Odoo modules confirmed in the OdooWiki catalogue (versions 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0). Reviewed on 2026-11-03.
Open on GitHubConfirmed modules per version
Modules in the repository
- Sale Partner VersionOdoo 14sale_partner_version
When a sales order is confirmed, this module freezes the customer's invoice and delivery addresses by making private copies for that order, so later changes to the customer record do not alter past orders.
- Sale payment sheetOdoo 13, 15, 16, 17, 18sale_payment_sheet
Salespeople can record customer payments on a simple 'payment sheet' without needing accounting rights. Confirming a sheet automatically creates a bank statement with the matching lines.
- Sale planner calendarOdoo 15, 16, 18sale_planner_calendar
Plan recurring commercial visits to customers directly from the partner form and track them in a dedicated sale planner calendar. Salespeople can create sale orders, invoices and payment sheets from each visit and review daily summaries.
- Sale Price ComplianceOdoo 16sale_price_compliance
Shows a colour-coded price compliance tier on each sale order line, based on discount thresholds set per product, product category or company. Orders containing non-compliant prices cannot be confirmed unless the user is a Sales Administrator.
- sale_pricelist_discount_decimal_precision
Makes pricelist percentage prices and price discounts follow Odoo's Discount decimal precision, so users can enter and see more than the default two decimals on pricelist items.
- Sale Pricelist Display SurchargeOdoo 16, 18, 19sale_pricelist_display_surcharge
Lets you always show a price surcharge (negative discount) to customers on sales orders, instead of hiding it as standard Odoo does. You enable it per pricelist rule with a new checkbox.
- Sale Pricelist From Commitment DateOdoo 14, 16, 18sale_pricelist_from_commitment_date
Use the sales order Delivery Date (commitment date) instead of the order date when the pricelist calculates unit prices. Also lets you show the Delivery Date in the order header and make it mandatory.
- Sale pricelist global ruleOdoo 15, 17, 19sale_pricelist_global_rule
Lets you create pricelist rules that apply based on the total quantity of a product or product category across all lines of a sales order, not just per line. A button on the sales order recalculates prices and discounts using these global rules.
- Sale Pricelist Item AdvancedOdoo 14, 16sale_pricelist_item_advanced
Adds a dedicated "Pricelist Items" menu under Sales > Catalog so users can browse, search and edit all pricelist rules in one list, with an improved form and extra columns.
- Sale Pricelist PackagingOdoo 18sale_pricelist_packaging
Lets you set a price rule in a pricelist that only applies when a specific packaging is chosen on a sales order line, so the same product can be sold at different prices depending on the pack size.
- Technical Pricelists for SalesOdoo 12, 16sale_pricelist_technical
Mark pricelists as "technical" so they can only be used to compute other pricelists and cannot be chosen on sale orders or customer forms.
- sale_pricelist_triple_discount
Lets you set up to three successive discounts on a pricelist rule, so quotations and sale order lines automatically receive the combined triple discount from the pricelist.
- Sale Probability AmountOdoo 14, 18sale_probability_amount
Adds a win probability percentage to quotations and sales orders, and shows the expected amount (total multiplied by that percentage) in the company currency.
- Sale Procurement AmendmentOdoo 13, 14sale_procurement_amendment
When you reduce quantities on a confirmed sale order line, this module automatically updates the related stock moves and pickings, as long as no warehouse work has started yet.
- Sale Procurement CustomerOdoo 16sale_procurement_customer
When a sales order is confirmed, the customer of the order is now copied onto the procurement group created for its stock moves, so the customer is visible on the related procurement/stock documents.
- Sale Procurement Group by Commitment DateOdoo 12, 13, 14, 15sale_procurement_group_by_commitment_date
When a sale order line has a commitment date, confirming the order creates a separate procurement group (and therefore a separate delivery) for each different commitment date, and the planned date of the delivery follows that commitment date.
- Sale Procurement Group by LineOdoo 12, 13, 14, 15, 16, 17, 18sale_procurement_group_by_line
This is a base module that lets each sale order line get its own procurement group, so stock moves can be grouped per line instead of per whole order. It does not add menus or buttons by itself.
- Sale product brand exceptionOdoo 14sale_product_brand_exception
Adds a per-brand option to allow or forbid mixing products from different brands in one sale order, and blocks such orders through the sale exception mechanism.
- sale_product_catalog_extended
Extends the product catalog of sale orders with extra search-panel filters (origin, last sales, price, history, sort), one card per order line with inline edit/remove actions, and a way to exclude products from a customer's last-sales list.
- Sale Product Category MenuOdoo 12, 13, 14, 15, 16sale_product_category_menu
Adds a 'Product Categories' menu item under Sales > Configuration > Products, giving quick access to the product category list from the Sales app.
- Sale Product ClassificationOdoo 12sale_product_classification
Classify products automatically as A, B, C or D based on how much they sold in a chosen period, and mark how seasonal each product is. Thresholds and periods are set per company in Sales settings.
- sale_product_configurator_widget_product_label
This module makes the product label and note widget work together with the sale product configurator, so users can add free-text labels or notes to sale order lines while still using the configurator.
- Sale product emailOdoo 16sale_product_email
Lets you attach a specific email template to a product so that, when a sale order containing that product is confirmed, the buyer automatically receives that email.
- sale_product_identification
Require customer identification documents (authorizations, IDs) before confirming sales orders that contain certain products. Configure which identification categories are needed per product and whether they are mandatory or optional.
- Sale Product Multi AddOdoo 12, 13, 14, 15, 16, 17, 18, 19sale_product_multi_add
Adds an "Add multiple products" button on draft or sent quotations so salespeople can pick several products at once, set a quantity for each, and create all the order lines in one go.
- sale_product_packaging_container_deposit
Automatically adds container deposit lines to sales orders based on the packaging used, and updates them when products are delivered.
- Product rating verifiedOdoo 14sale_product_rating_verified
Adds a "purchase verified" flag to product ratings, automatically set when the customer who left the rating has a paid invoice for that product.
- Sale Product ReturnableOdoo 12sale_product_returnable
Mark products as returnable and choose the product customers should get back. When a sales order is confirmed, Odoo automatically creates a draft return transfer for those products.
- Sale Product seasonalityOdoo 14sale_product_seasonality
Adds seasonal availability rules to sales orders: only products allowed for the order's commitment date can be selected, based on a seasonal configuration.
- Sales product setOdoo 12, 13, 14, 15, 16, 17, 18, 19sale_product_set
Lets sales users insert a predefined product set (list of products and quantities) into a quotation through a wizard, creating separate order lines. Adds a discount per set line and an option to sync product set archiving with the partner.
- Sale product set layoutOdoo 15sale_product_set_layout
Lets you add section titles and notes inside product sets, so when a product set is added to a sale order the sections and notes are carried over into the order lines.
- Sales Product Set PackagingOdoo 13, 14, 18sale_product_set_packaging_qty
When a product set is added to a sales order, the packaging chosen on each set line is now carried over to the generated sales order line.
- Sale Product Set Sale by packagingOdoo 13, 14sale_product_set_sale_by_packaging
Warns you on the product form when a product that can only be sold by packaging is used in product set lines without a packaging, and lets you review or auto-fix those lines.
- Sale product set variantOdoo 12sale_product_set_variant
Lets you build product sets (kits) using product templates and specific variants, then add them to a sale order with the exact variants chosen.
- Sale production StateOdoo 14, 18sale_production_state
Adds a 'Manufacturing state' field to sales orders and sales order lines, showing whether the linked manufacturing orders are unprocessed, partially processed, done, or not applicable.
- Sale Promotion RuleOdoo 12, 14, 17sale_promotion_rule
Create promotion rules (automatic or coupon) and apply them to sales orders to give discounts. Users can apply, add a coupon code, or remove discounts directly from the quotation form.
- sale_promotion_rule_assortment
Limit a sales promotion rule so it only applies to a chosen set of products. On the promotion rule form you pick a product assortment filter, and only matching products count for the promotion.
- Sale Promotion Rule DeliveryOdoo 14sale_promotion_rule_delivery
When delivery charges are used on sales orders, promotion rules no longer apply to delivery lines, so discounts and promotions are calculated only on the actual products.
- sale_promotion_rule_display_discount_amount
This module makes the discount amount and total without discount on a sale order include discounts created automatically by sale promotion rules, so the figures shown match the real promotion applied.
- Sale Purchase Procurement Group by LineOdoo 15, 17sale_purchase_procurement_group_by_line
This hidden glue module makes the purchase order count on a sales order work correctly when both the 'MTO Sale <-> Purchase' and 'Sale Procurement Group by Line' features are installed.
- Sale purchase requisitionOdoo 14sale_purchase_requisition
Link a sales quotation to a purchase agreement (requisition) so the salesperson can create it directly from the quotation and keep product quantities in sync.
- sale_purchase_stock_auto_cancel
Adds a company setting that automatically cancels purchase orders created from a sales order via MTO or Dropship when that sales order is cancelled.
- Sale purchase stock auto confirmOdoo 18, 19sale_purchase_stock_auto_confirm
Adds a company setting that automatically confirms purchase orders created from sales orders when using MTO or Dropship rules, so users no longer have to validate those purchase orders manually.
- Quick Sale orderOdoo 14sale_quick
Add many products to a sales order at once from a dedicated product list, with quantities and units of measure, instead of creating each order line one by one.
- Quick Sale Blanket OrdersOdoo 14sale_quick_blanket_order
Add many products to a blanket sale order at once from a quick product picker, instead of creating each line one by one. The Add button appears on draft or sent blanket orders.
- Quick Sale order seasonalityOdoo 14sale_quick_seasonality
Adds seasonality awareness to the quick sale order product mass-add feature, so only products allowed in the current season can be added to a sale order.
- Sale Quotation NumerationOdoo 12, 13, 14, 15, 16, 17, 18, 19sale_quotation_number
Lets you give quotations their own numbering (starting with SQ) instead of sharing the sales order sequence. When a quotation is confirmed, it keeps its quotation number in the Origin field and receives a new sales order number.
- sale_quotation_template_product_multi_add
Add many products to a quotation template in one go. A new button on the quotation template form opens a wizard where you pick products, set descriptions and quantities, then insert them all as template lines.
- Sale Readonly SecurityOdoo 15, 16, 17, 18sale_readonly_security
Adds a new permission called "Sale orders edition" that controls who can create, edit or delete sale orders. Users without it see sale orders in read-only mode and cannot generate invoices from them.
- Sale RentalOdoo 12, 14, 15sale_rental
Lets you rent products to customers: create rental service products, rent them on sale orders with start and end dates, extend a rental, sell a rented item, and track each rental's delivery and return.
- Sale Orders Require PO or Sales DocumentationOdoo 12, 14, 18, 19sale_require_po_doc
Lets you flag customers who must provide a purchase order or sales documentation before their sale orders can be confirmed, and blocks confirmation when those requirements are missing.
- Sell resource bookingsOdoo 12, 13, 15, 16, 17, 18, 19sale_resource_booking
Link products and sales orders to resource bookings. Selling a product that has a booking type automatically creates pending bookings, and a booking can only be confirmed once its sale order is confirmed.
- Sale order restricted quantity: min, max, multiple-ofOdoo 12, 14, 16, 17, 18sale_restricted_qty
Set minimum, maximum and multiple-of sales quantities on product categories and products, then check them on sale order lines with either a blocking error or a simple warning.
- Sale SeasonalityOdoo 16sale_seasonality
Link sales campaigns to seasonalities and see sales grouped by seasonality in the sales analysis report. Products can also be tagged with the campaigns they belong to.
- Sale Secondary SalespersonOdoo 12, 13sale_secondary_salesperson
Add a second salesperson to a sales order alongside the main one, and filter or group sales analysis by that secondary salesperson.
- Sale SemaphoreOdoo 15, 18sale_semaphore
Adds a colour semaphore (green, yellow, red) to sales order lines showing whether the negotiated price respects the discount policy set on the product or its category, and blocks non-managers from confirming or editing lines priced below the accepted limit.
- Sale shipping info helperOdoo 12, 13, 14, 15, 16, 17, 18, 19sale_shipping_info_helper
Adds six read-only amount fields on sale orders that split the order total into shipping and item amounts, so shipping costs can be shown separately in reports or e-commerce.
- Sale Sourced by LineOdoo 13, 15, 16, 17, 18sale_sourced_by_line
Lets you choose a different source warehouse on each sales order line, so one order can be fulfilled from several warehouses. The order keeps a default warehouse used when a line has none.
- sale_sourced_by_line_product_rule
Lets you define, per product, per attribute value or per template, which warehouse should ship a sale order line, and automatically applies that warehouse to the line and its delivery.
- Sale Start End DatesOdoo 12, 14, 15, 16, 17, 18, 19sale_start_end_dates
Adds Start Date, End Date and Number of Days on sale order lines, with default dates on the sale order. These dates are required for products flagged as needing dates and are copied to invoice lines.