In Odoo’s Manufacturing module, Work Order (WO) statuses within a Manufacturing Order (MO) can sometimes be unexpected.

The statuses primarily depend on component availability and the dependencies between Work Orders. The two key settings that influence them are:

  • Manufacturing Readiness
  • Operation Dependencies

Manufacturing Readiness

It primarily affects the Manufacturing Order Readiness Status in the Manufacturing Order. The two available options are:

  • When all components are available: Manufacturing Order is ready when all components are in stock.
  • When components for 1st operation are available: The Manufacturing Order is ready when the components for the first operation are available.

Odoo uses the MO Readiness status value to determine Work Order statuses. As a result, a Work Order can be marked as "Ready" even if not all components are available, only because the first required component is in stock.

Operation Dependencies

Operation Dependencies is the second setting that affects Work Order statuses. Depending on its value, Odoo applies different logic for dependencies between Work Orders:

  • Disabled: Dependencies between Work Orders are determined by their sorting order.
  • Enabled: The dependencies set on the operations are enforced.

What Does This Mean in Practice?

Let’s review the four possible cases based on the Manufacturing Readiness and Operation Dependencies settings.

In all cases, we start from a scenario where components are initially unavailable. Therefore, the first status represents the Work Order’s status before any components become available.

Case 1: Manufacturing Readiness is set to "When All Components Are Available," and Operation Dependency is not enabled.

In this case, the system will enforce operation dependency based on the order of operations. The first Work Order will have the status "Waiting for Components," while the other Work Orders will be "Waiting for Another WO."

Once all components are available, the first WO will change to "Ready," while the others will remain in "Waiting for Another WO."

The statuses will update sequentially to "Ready" as each preceding WO is completed.

Case 2: Manufacturing Readiness is set to "When All Components Are Available," and Operation Dependency is enabled.

In this case, all Work Orders that do not depend on another order will have the status "Waiting for Components," while dependent orders will have the status "Waiting for Another WO."

The status of independent WOs will change to "Ready" once all components are available. However, dependent WOs will remain in "Waiting for Another WO" until the Work Order they depend on is completed.

Case 3: Manufacturing Readiness is set to "When Components for the 1st Operation Are Available," and Operation Dependency is not enabled.

In this case, the first WO will have the status "Waiting for Components," while all other WOs will be in "Waiting for Another Operation."

Once the components for the first operation are available, its status will change to "Ready," while all other WOs will remain "Waiting for Another WO."

When the first WO is completed, the next WO will change to "Ready" even if its components are not available.

In this setup, Odoo does not check if the components for each individual WO are available. Instead, it relies on the Manufacturing Order Readiness Status, which is set to "Ready" once the components for the first WO are available.

Case 4: Manufacturing Readiness is set to "When Components for the 1st Operation Are Available," and Operation Dependency is enabled.

In this case all WOs without dependencies will have the status "Waiting for Components." While WOs with dependencies will have the status "Waiting for Another WO."

Once the components for the first operation are available, the status of independent WOs will change to "Ready", even if some components for certain operations are still missing.

However, WOs that depend on another WO will remain in "Waiting for Another WO" until the dependent operation is completed. Once completed, those WOs will also change to “Ready” or “Waiting for Components,” depending on whether the components for the first unfinished WO are available.

Final Thoughts

When determining Work Order statuses, Odoo does not take actual component availability into account. Instead, it relies on the general Manufacturing Order Readiness Status.

It would be beneficial if Odoo refined this logic in the future by considering component availability at the Work Order level rather than relying solely on the overall Manufacturing Order Readiness Status. This would result in more accurate and reliable Work Order statuses.

Functional Manufacturing Odoo 18
Posts

Setting up appropriate access rights for each user in Odoo is a crucial part of system configuration. However, access management can become challenging, especially when dealing with a large number of users. A module that replicates the company structure through roles can significantly simplify this process.

The User Roles module facilitates structured access management by allowing to define roles that align closely with the company's hierarchy. Each role is assigned specific access groups, ensuring that users with the role can navigate the system efficiently while maintaining access only to the necessary functionalities.

Configuration

Once installed, the module introduces a Roles​ sub-menu under Users & Companies​ in the Settings page. This section provides a list of all created roles. Selecting a role opens its detailed form view, which includes:

  • Role Name
  • Associated Access Groups
  • Users Assigned to the Role
  • Internal Notes

Creating a New Role

To create a new role, click the “New” button, which opens a form view. While the Name field is the only mandatory input, assigning appropriate Access Groups is necessary for the role to be functional. Once configured, the role can be assigned to users.

Roles can be assigned in two ways:

  1. From the User’s Form View: Navigate to the Roles​ tab and select the desired roles. Each assigned role can have a specified validity period with a start and end date.
  2. From the Role’s Form View: Use the Users​ tab to assign multiple users to a role.

Only users with the Administration: Access Rights​ privilege can manage roles.

How the Functionality Works

When a role is assigned to a user, the user automatically inherit all associated access groups. Additional access groups cannot be manually added to users who have assigned roles. This ensures strict adherence to the defined access structure.

If a user has multiple roles, the access group with the highest level of privileges takes precedence. For example, if:

  • Salesperson role includes Inventory: User​ access
  • Inventory Manager role includes Inventory: Administrator​ access

A user assigned both roles will have Inventory: Administrator​ access, as it holds a higher level of access.

To view the active access groups for a user, go to the Access Rights​ tab next to the Roles tab in the user's form view.

Company-Specific Roles

For organizations using multi-company mode, the User Roles by Company extension module can be useful, as it introduces role assignment per company.

The key feature for the module are:

  • Adds a Company field in the Roles tab of the Users view.
  • If no company is specified, the role applies to all companies the user has access to.
  • A Company can be assigned to a Role only if it is in the User’s Allowed Companies list.
  • When multiple companies are selected as active for the user, only roles applicable to all selected companies remain active.

Final Thoughts

By structuring user access management through roles, organizations can efficiently manage permissions across multiple users while maintaining clarity and control over access rights. This approach simplifies administration and ensures a clear overview of user privileges.

The User Roles module is actively maintained by the Odoo Community Association (OCA), with the latest available version being 18.0.1.0.2.


Functional Odoo 18
Modules Review


Odoo’s checkout process includes several predefined options that allow businesses to tailor the process based on their needs. By navigating to the checkout page and clicking the Edit​ button, you will find the following customization options under the Customize​ tab:

  • Extra Step – Adds an extra step in the checkout process, which can be used for different purposes based on your business needs.
  • Suggested Accessories – When enabled, this feature displays related accessories for products in the cart overview. To use this option, at least one product must have suggested accessories configured.
  • Promo Code – Adds a promo code field in the Order Summary, below the Total. This option only makes the field available; you will still need to set up discount codes using Odoo’s pricelist feature.
  • Accept Terms and Conditions – If this option is activated, customers must select the "Accept Terms and Conditions" checkbox before proceeding with payment. The Pay button remains disabled until this requirement is met.
  • Show B2B Fields – Adds Company and VAT fields to the checkout form, making it useful for B2B transactions. If your business serves both B2B and B2C customers, you may prefer to display only the Company field by default and reveal the VAT field when a company name is entered. However, this option is not yet available in Odoo’s settings.

By using these options, you can customize Odoo’s checkout process to better suit your business requirements.

eCommerce Functional Odoo 18
Posts


Creating an extra step in your checkout process may be essential for your business, whether to collect additional customer details, verify specific information, or meet compliance requirements.

Odoo provides the flexibility to add a fully customizable extra step to the checkout process, without requiring any technical expertise. You can enable and configure this feature by following the steps:

  1. Go to Website > Configuration > Shop - Checkout Process​.
  2. Enable the setting Extra Step During Checkout​.
  3. Save the changes and click on Configure Form​ (which appears just below the setting) to customize the form.

In the customizable extra step, you can add any additional fields needed for your process. If a field is already part of the Sales Order model, you can reference it directly. Otherwise, all custom fields will be saved as chatter messages in the order.

This functionality could benefit from a few improvements:

  • If users navigate back and forth during checkout, their form data is not retained, which may result in duplicate entries. For example, if an image upload is required, users may need to upload the same image multiple times, leading to multiple attachments in the order.
  • Finding specific data in the chatter of an order can be challenging, especially when the order has a long chat history. Odoo could enhance this feature by storing custom field data in a “Description” field, similar to how it is done in Tasks.
eCommerce Functional Odoo 18
Posts


If you need to subcontract the production of a product or just part of it, Odoo provides a complete configuration to manage the process efficiently.

Start by enabling Subcontracting​ in Manufacturing > Configuration > Settings > Subcontracting​. Then, create a Bill of Materials (BoM) for your product and set it up with the following:

  1. BoM Type​: Select Subcontracting.
  2. Subcontractors​: Choose the subcontractors responsible for production.
  3. Manufacturing Lead Time​: Set this for accurate production timelines.

The next steps of the configuration are influenced by two main factors:

  1. How components are supplied to the subcontractor.
  2. Where the final product needs to be delivered.

Based on how components are sourced, Odoo supports three subcontracting options:

  • Base Subcontracting: The subcontractor provides the components. In this case, there is no need to list the components in the BoM.
  • Resupply Subcontractor: Components are sent from your warehouse to the subcontractor. This requires the following routes on each of the components:
    • The Buy​ route for component procurement. Additionally, if you want to automate procurement, use MTO​ route or Reordering Rules.
    • The Resupply Subcontractor on Order​ route to send the components to the subcontractor.
  • Dropship to Subcontractor: Components are purchased and shipped directly to the subcontractor. To set this up:
    • Enable Dropshipping​ in Inventory > Configuration > Settings > Logistics​.
    • Apply the Dropship Subcontractor on Order​ route to the components.

The routes set on the final product mainly depend on its delivery location:

  1. If it is received at your warehouse, enable the Buy​ route on it. Additionally, to automate purchase order (PO) creation, apply the MTO​ route or use Reordering Rules, depending on the company's needs.
  2. If it is sent directly to the customer, use the Dropshipping​ route only.

It is very important that both the final product and components (if applicable) have a Vendor with pricing set so that Odoo can generate POs automatically. Also, ensure that the subcontractor added as a Vendor on the final product is set as a subcontractor in the BoM; otherwise, Odoo will initiate only a purchasing flow instead of subcontracting.

Now, with a few steps, you can automate your subcontracting process in Odoo.

Functional Manufacturing Odoo 18
Posts



In Odoo's Manufacturing app, when defining a Bill of Materials (BoM), you can specify which component will be used for each operation. This should ensure that when a manufacturing order is started, the system allows an operation to begin only if the required components are available.

To set this up, the following steps need to be completed in the Bill of Materials form view:

  1. Define the required operations for the BoM in the Operations​ tab.
  2. In the Components​ section, enable the Consumed in Operation​ column.
  3. Select the corresponding operation for each component.

The next time a Manufacturing Order is created for this BoM, the system will know exactly which components are needed and when, as well as which operations can be executed.

It is important to note that Odoo determines which operations are available to start based on a few parameters. If an operation does not appear in the Shop Floor interface, it could be due to the following reasons:

  1. The required components for the operation are not available.
  2. The required components for the first operation are not available. In such a case, even if the components for the second operation are available and there is no dependency between the operations, it will still be in the "Waiting for Components" state if Work Order Dependencies​ is enabled, or otherwise "Waiting for another WO.”
  3. Another operation is pending before it. By default, Odoo enforces the operation order from the BoM when the Work Order Dependencies​ feature is inactive, treating it as a dependent sequence of operations.
  4. The Manufacturing Readiness​ setting is set to: When all components are available

While these rules are mostly enforced when working from the Shop Floor interface, the statuses of operations in the Work Orders​ tab within the Manufacturing Form view can sometimes be misleading. For example, if the first work order is marked as finished from the Form view, the next work order may incorrectly show as "Ready," even if the required components are still unavailable. Additionally, when Work Order Dependencies​ is enabled, if the components for only the first operation are available, the system will incorrectly show that all operations are "Ready.”

Such inconsistencies can cause confusion. It would be beneficial if Odoo addressed these issues in future versions to ensure that operation statuses are accurately updated.

Functional Manufacturing Odoo 18
Posts

If you have a simple one-step delivery process in Odoo and your product is in stock, but your delivery is still in the "Waiting Another Operation" state, it’s likely that your delivery order is generated by the Replenish on Order (MTO) route.

The MTO route is typically used when each order that creates demand from stock needs to be directly linked to an order that supplies the stock. This creates a strong connection between the order and procurement, making it easier to track the product and its related processes.

To enable the MTO route, you will need to:

  1. Enable the Multi-Routes​ option from Inventory > Configuration > Settings​.
  2. Navigate to Inventory > Configuration > Routes​.
  3. Filter for Archived​, locate the MTO route, and unarchive it.

Once this is done, the MTO route will be available for selection on individual products.

It is important to note that when using the MTO route, even if a product is available in stock, the system will always generate a procurement order for it.

The MTO route always triggers another rule, so for it to work properly, it must be part of a process where another rule is triggered afterward. This is why the MTO route is usually combined with the Buy or Manufacture routes, depending on whether the product is purchased or produced.

While the MTO route can be convenient for products that require strong traceability, especially for high-end or expensive items that should not be kept in stock for long periods, it can be too restrictive for smaller components. In those cases, other replenishment options, such as Reordering Rules, might be more practical and efficient.

Functional Inventory Odoo 18
Posts