Welcome to this in-depth guide, inspired by insights from Odoo experts in a recent Q&A session (watch the full session here: https://www.youtube.com/watch?v=s5ejktfvOHU). In the fast-paced world of business, ensuring that every sale is fulfilled promptly and efficiently is paramount. For many businesses, particularly those dealing with items not traditionally “stocked” in a warehouse, managing procurement can be a hidden challenge. This is where an effective Odoo Consumable Reminder system becomes not just helpful, but absolutely essential.
This guide will walk you through setting up robust reminder systems in Odoo 18.4, focusing on consumable products that require special attention post-sale. We’ll explore powerful automation tools, discuss crucial best practices to avoid common pitfalls, and touch upon other vital Odoo functionalities that streamline your operations.
Understanding the Odoo Consumable Reminder Product Challenge
Many businesses sell products that aren’t stored in a traditional warehouse. These are often “one-time products” or items that are purchased only after a customer order is confirmed. Think of custom-printed merchandise, specific components sourced per project, or bespoke services that require unique materials. While these non-stockable items simplify inventory management by not tracking on-hand quantities, they introduce a critical sales-to-procurement gap: how do you ensure the sales team or procurement department remembers to buy these items before they’re due for delivery? Without a proper alert, you risk delays, unhappy customers, and a fractured workflow.
This is precisely where an Odoo Consumable Product Reminder becomes indispensable. It bridges that gap, ensuring a seamless flow from sales order creation to vendor purchase, ultimately safeguarding your delivery commitments.
Configuring Consumable Products in Odoo
First, let’s ensure your products are correctly set up as consumables. This foundational step dictates how Odoo handles these items in your inventory and sales modules.
Step-by-Step Tutorial: Setting Up a Consumable Product
-
Navigate to Products: In your Odoo instance, go to the
Inventorymodule, then selectProductsfrom the main menu. -
Create or Edit a Product: Click
Createto add a new product or select an existing one that fits the “consumable” definition. -
Define Product Type: On the product form, locate the “Product Type” field.
- Set this to
Consumable. This tells Odoo not to track inventory levels for this item. - Ensure the overarching “Product Category” (if applicable) is set to
Goods. - Historical Note: In earlier Odoo versions (e.g., Odoo 17), the “Product Type” selection might have been located in a different section of the product form, but the core functionality remains.
- Set this to
Once configured, when you create a sales order with a consumable product, Odoo will correctly reflect that it doesn’t track stock, providing a clear indication that a manual or automated procurement action is needed.
Powerful Automation: Setting Up an Odoo Consumable Product Reminder via Automated Actions
Automated actions in Odoo are incredibly versatile tools for triggering follow-ups based on specific criteria. For our Odoo Consumable Product Reminder, we’ll leverage them to create activity alerts for your sales or procurement teams.
Step-by-Step Tutorial: Creating an Activity Reminder
-
Access Automated Actions: Go to
Settings > Technical > Automation > Automated Actions. (You’ll need developer mode enabled to see the Technical menu). -
Create a New Action: Click
Create. -
Basic Configuration:
- Name: Give your action a clear name, like “Consumable Product Purchase Reminder.”
- Model: Select
Sale Order(the object on which the reminder will be triggered). - Trigger: Choose
On Creation. This means the action will fire as soon as a new sales order is saved.
-
Set Time Condition:
- In the “When to Run” section, set a
Time Condition. For instance, “12 Hours After Creation.” This allows a grace period after the sales order is made before the reminder appears.
- In the “When to Run” section, set a
-
Define the Action:
- Click
Add an Action. - Action Type: Select
Create Activity. - Activity Type: Choose
To-Do. - Summary: Enter a concise title, such as “Procure Consumable: [Sales Order Reference] – [Product Name].” You can dynamically pull information using placeholders.
- Due Date: Set to
0 Daysif you want the activity to appear immediately after the time condition is met. - Assigned To: Choose
Specific UserorDynamic User. For a dynamic user, you can often selectSalespersonto assign it directly to the person responsible for that sales order. Alternatively, you might assign it to a dedicated ‘Procurement Team’ user.
- Click
By following these steps, you’ve established a basic yet effective Odoo Consumable Product Reminder system. However, there’s a critical consideration to address to truly optimize this setup.
The Critical Safeguard: Preventing Duplicate Odoo Consumable Product Reminders
One of the most common pitfalls with automated actions is generating redundant reminders. Without proper filtering, Odoo’s automated actions can re-trigger repeatedly, leading to notification fatigue and undermining the system’s value. Imagine receiving the same “Procure Item” alert every hour for a sales order that has already been dealt with!
To ensure your Odoo Consumable Product Reminder is truly efficient and user-friendly, you must implement a mechanism to prevent duplicates.
Why Filters Are Essential
Odoo continuously checks if the conditions of an automated action are met. If a sales order remains in a state that satisfies your “On Creation / 12 Hours After Creation” rule, Odoo will execute the action (e.g., send an email or create an activity) every time the rule is processed (typically every 72 minutes or so, depending on server configuration).
Solution: The “Reminder Sent” Checkbox Method
The most robust way to prevent duplicate Odoo Consumable Product Reminder notifications is to introduce a custom field that acts as a flag.
Step-by-Step Tutorial: Implementing the “Reminder Sent” Flag
-
Create a Custom Checkbox Field:
- Go to the
Sale Orderform (e.g., open any existing sales order). - Activate
Developer Mode(if not already active). - Click the
Studioicon (the paintbrush) in the top right corner. - Drag a
Checkboxfield from the “New Fields” section onto your Sale Order form. - Label: Name it something like “Reminder Sent.”
- Technical Name: Odoo will generate a technical name (e.g.,
x_studio_reminder_sent). Make a note of this. - Save your changes in Studio.
- Go to the
-
Update the Automated Action:
- Go back to your “Consumable Product Purchase Reminder” automated action (
Settings > Technical > Automation > Automated Actions). - Add a Domain (Filter): In the “Apply on” section, add a filter that ensures the reminder only triggers if our new checkbox is
False. -
x_studio_reminder_sent(or your technical field name)is false. - You might also add filters for
Stateto exclude “Sales Order” or “Cancelled” orders:Stateis notSales OrderandStateis notCancelled. - Add a Second Action (Update Record): After the “Create Activity” action, add another action:
- Action Type: Select
Update the Record. - Field: Find your custom checkbox field (
x_studio_reminder_sent). - Value: Set it to
True.
- Go back to your “Consumable Product Purchase Reminder” automated action (
How it works:
When a sales order is created, 12 hours pass, and the x_studio_reminder_sent checkbox is False, the automated action will:
- Create the “To-Do” activity.
- Immediately update the
x_studio_reminder_sentcheckbox toTrue.
Now, because the checkbox is True, the sales order no longer meets the condition x_studio_reminder_sent is false, and the automated action will not trigger again for that specific sales order. This ensures a single, effective Odoo Consumable Product Reminder.
Beyond Basic Alerts: Leveraging Marketing Automation for Odoo Consumable Product Reminders
While automated actions are excellent for internal alerts, Odoo’s Marketing Automation app offers a more sophisticated way to manage outbound communications, especially when tracking sent notifications is crucial. It’s particularly useful for Odoo Consumable Product Reminder emails to external stakeholders or for complex follow-up sequences.
Advantages of Marketing Automation for Reminders:
- Built-in Logging: Marketing Automation inherently tracks which actions have been performed for each record, preventing duplicates by default.
- Visual Workflow: Design multi-step campaigns with delays, conditional branches, and various communication types (emails, activities).
- Templates & Personalization: Easy integration with email templates for professional, personalized messages.
Step-by-Step Tutorial: Setting Up an Email Reminder with Marketing Automation
-
Install Marketing Automation: Ensure the
Marketing Automationapp is installed in your Odoo instance. -
Create a New Campaign:
- Go to the
Marketing Automationmodule. - Click
Createto start a new campaign. - Campaign Name: Give it a descriptive name, e.g., “Consumable Order Procurement Follow-up.”
- Target: Select
Sale Orderas the object you want to target.
- Go to the
-
Define Enrollment Filter:
- Add a filter to specify which sales orders should enter this campaign. This would be similar to your automated action filter, focusing on orders containing consumable products and perhaps specific states. Note: Date-based filtering options in Marketing Automation might require a bit more creativity compared to automated actions.
-
Add an Activity (Send Email):
- In your campaign workflow, add an activity of type
Send Email. - Email Template: Create a new email template (or use an existing one) specifically for this reminder.
-
Go to
Settings > Technical > Email > Templates. - Create a template like “Consumable Order Reminder.”
- Use dynamic placeholders (e.g.,
${object.name}for sale order reference,${object.order_line.product_id.name}for product names). - Craft a persuasive message reminding the recipient (e.g., “Urgent: Please procure the following items for Sale Order [X] immediately.”).
- Trigger: Set the trigger for this email, for example, “12 Hours after Beginning of Workflow.”
- In your campaign workflow, add an activity of type
-
Assign and Track:
- Specify who the email should be sent to (e.g., a specific procurement manager, or the sales manager).
- The Marketing Automation app will automatically log when the email is sent, preventing further dispatches for that specific sales order within the campaign.
By adopting Marketing Automation for your Odoo Consumable Product Reminder emails, you gain enhanced control, better tracking, and a more professional communication flow, especially for crucial procurement alerts.
Other Essential Odoo Q&A Highlights
Beyond managing consumable product reminders, the Odoo expert session covered a range of other critical functionalities that contribute to an efficient ERP system. Let’s briefly explore these to provide a comprehensive understanding of Odoo’s capabilities.
Scalability and Customization of Odoo
Odoo stands out for its remarkable scalability and flexibility. It’s not just for small businesses; large enterprises with thousands of employees (like Odoo itself, which uses its platform for over 6,400 staff) leverage it daily.
-
Scalability: Odoo’s architecture supports massive user bases and transaction volumes, continuously improving performance with each version.
-
Customization:
-
Development: For unique industry requirements, Odoo allows full custom module development. Comprehensive developer tutorials are available on
Odoo.com/documentation. -
Odoo Studio: A powerful no-code/low-code tool for in-app customization. Users can add/hide fields, create custom buttons, modify views, and set conditional logic without any programming.
-
Integration: Odoo’s robust API facilitates seamless integration with third-party applications. Solutions range from no-code connectors like Zapier and N8N to direct API calls for custom integrations.
-
-
Deployment: Odoo offers various deployment options: Odoo Online (SaaS), Odoo SH (Cloud hosting with Git integration), and on-premise. For new users, cloud options like Odoo SH are highly recommended due to ease of management and ongoing maintenance.
Multi-Company Accounting
Managing accounting across multiple legal entities within Odoo is a common requirement. Odoo handles this by allowing distinct chart of accounts and financial reporting per company.
- Mapping Accounts: Instead of duplicating accounts, Odoo uses a mapping system. In
Accounting > Configuration > Chart of Accounts, you can specify that an account is valid for multiple companies and define specific account numbers for each company if they differ. This ensures consolidated reporting while maintaining separate financial records.
Blocking Analytical Allocations by Date
Controlling when analytical entries can be made is crucial for financial accuracy. Similar to locking journal entries, Odoo can prevent backdated analytical allocations.
- Automation Rule for Analytic Lines: By creating an automated action on the
Analytic Linemodel, triggeredOn Creation or Update, you can execute Python code to raise aUserErrorif the analytic line’s date falls before a specified lock date (e.g.,record.company_id.fiscal_year_lock_datefromAccounting > Settings > Lock Dates). This ensures strict adherence to reporting periods.
Reordering Invoice Line Items in Payment Receipts
The presentation of invoice line items on printed payment receipts can be critical for clarity. Odoo offers ways to control this order.
- List View Sorting: The simplest method is to sort the payment list view (e.g., by
Payment Dateor a customInvoice Datefield) before printing. Odoo generally prints what is visible in the current list order. - Studio Customization: Use Odoo Studio to set a default
Sort Byorder on the payment list view. For more advanced sorting (e.g., by the invoice’s original bill date), you might need to create aRelated Fieldon the payment that pulls the invoice date and ensure it’sStoredfor sorting purposes.
On-Premise Odoo for Backup (While Using Odoo SH)
For businesses using Odoo SH but needing local backups for disaster recovery or specific reporting tools (like PowerBI), Odoo allows for automated backup retrieval.
- Odoo SH Backup Feature: Odoo SH provides a user-friendly interface to download database backups directly from your project’s
Backupssection. - Automated Retrieval (SSH): For an automated approach, connect to your Odoo SH environment via SSH. Backups are typically stored in directories like
/data/backup/daily. You can then script fetching these backups using tools likersyncorwgetto transfer them to your on-premise server.
Changing a Confirmed Journal Entry
A fundamental principle in accounting is the immutability of confirmed (posted) journal entries.
- Legal Compliance: Once a journal entry is confirmed and assigned a sequence number, it becomes read-only in Odoo. This is a legal requirement in most countries to maintain audit trails.
- Discouraged Workarounds: While technical manipulation (e.g., overriding the
posted_beforeflag via automated actions) might be possible, it is strongly advised against due to the high risk of creating accounting inconsistencies and legal non-compliance. - Recommended Action: Instead of altering a confirmed entry, the correct procedure is to reverse the original entry (creating an offsetting entry) and then create a new, correct journal entry.
Configuring Outgoing Email with Multiple Companies
Ensuring emails are sent from the correct company’s domain in a multi-company Odoo setup is crucial for professionalism and deliverability.
- “From Filtering” in Outgoing Mail Servers: Odoo’s
Outgoing Mail Servers(Settings > Technical) use a “From Filtering” mechanism. The system matches theFromemail address of an outgoing email with theUsernameconfigured on an SMTP server. If a match is found, that server is used. -
Best Practices:
- Unique Company Domains: Ensure each Odoo company has a distinct default email domain.
- Dedicated SMTP Servers: Configure a separate outgoing email server for each company’s domain.
- Matching Usernames: The
Usernamein each outgoing mail server configuration must precisely match theFrom Filteringemail address (e.g., the default email for that company or a specific sender). - Email Templates: When using email templates, ensure the
Fromaddress in the template is dynamically set or hardcoded to match the relevant company’s domain for proper server selection.
Connecting Odoo SH to a GitHub Repository
Odoo SH is tightly integrated with GitHub, providing a robust platform for collaborative development and deployment.
- Seamless Integration: When creating a new project in Odoo SH, you can either link to an existing GitHub repository or have Odoo SH create a new one for you.
- Version Control: Odoo SH uses Git branches for development, staging, and production environments, enabling controlled deployment workflows. Changes pushed to GitHub branches automatically trigger builds and deployments in Odoo SH.
Trial Balance Mismatch
Discrepancies between your trial balance and other financial reports (Profit & Loss, Balance Sheet) indicate an issue that needs immediate attention.
-
Common Culprits:
- Filtering Inconsistency: The most frequent cause is inconsistent date ranges, company filters, or currency selections across reports.
- Report Definitions: Odoo’s financial reports are built on specific definitions and account ranges. Review the underlying
report definitions(e.g.,Accounting > Reporting > Profit and LossandBalance Sheet) to ensure they include all relevant accounts and use the correct calculation methods (e.g.,Balancevs.DebitorCredit).
- Action: Systematically check all filters and report definitions. If the issue persists, contact Odoo support with specific examples.
Reconciliation Problems with Invoice Payment
When payments directly from invoices don’t reconcile automatically in the bank, it points to a journal configuration issue.
- Journal Configuration is Key: The behavior of direct invoice payments depends heavily on the
Journalused. - Outstanding Accounts: In Odoo 18.4, for direct payments to immediately mark an invoice as paid and reconcile, the payment journal (e.g., your bank journal) might need to be configured to use specific
Outstanding ReceiptsorOutstanding Paymentsaccounts that bypass intermediate reconciliation steps. This configuration can vary by Odoo version, so a direct check of your payment journal’s settings is essential.
Closing Financial Year
Properly closing a financial year is a critical accounting procedure to transfer profits/losses to retained earnings and prepare for the next period.
- Odoo Documentation: This process involves several steps and is comprehensively covered in Odoo’s official documentation. Refer to
Odoo.com/slidesunderAccounting and Invoicingfor dedicated videos and checklists, such as “Closing a Fiscal Year.” This ensures all necessary adjustments and transfers are made correctly.
Login Button in Website Builder
For business owners managing their Odoo website, the presence of a login button can sometimes be confusing or undesirable, especially if they are already logged in or don’t want public login access.
- Contextual Display: Generally, the “Sign In” button (often in the header bar) only appears if the user is not logged in. Once logged in, it typically disappears or changes to a “My Account” or “Logout” option.
-
Removal via Studio (Advanced): If you wish to remove the “Sign In” button completely, you can do so through Odoo Studio’s view editor. However, this is an advanced customization and requires careful consideration:
- Access the View: Navigate to the website page in question, activate
Developer Mode, and thenInspectthe “Sign In” button to find its underlying HTML and associated Odoo view. - Modify the View: Edit the relevant
qWebview (often anavbarorheadertemplate) to remove the element containing the login link (e.g.,<a href="/web/login">Sign In</a>). - Security Implication: Removing the button hides the entry point but doesn’t remove the
/web/loginURL. Users could still manually navigate to the login page. Consider if you truly want to prevent all login access or simply clean up the UI for logged-in users.
- Access the View: Navigate to the website page in question, activate
Calculating Price Based on Product Surface
For specialized products like printed materials or custom fabric, pricing often depends on dimensions (width, length) rather than just a unit quantity.
-
Studio Customization with Automated Actions: Odoo can be customized to calculate prices based on surface area.
- Custom Fields: On your
Productmodel, add custom decimal fields forLengthandWidthusing Odoo Studio. You might also add a checkbox like “Is Surface Product” to conditionally show these fields. - Automated Action for Price Calculation: Create an
Automated Actionon theSale Order Linemodel, triggeredOn Updateof the product, length, or width fields. -
Execute Python Code: In this action, execute Python code to calculate the
Unit Price(fieldprice_unit). The code would multiply the product’s base list price by thelength,width, andquantityon the sales order line.if record.product_id.x_studio_is_surface_product: new_price = record.product_id.list_price * record.x_studio_length * record.x_studio_width * record.product_uom_qty record.price_unit = new_price - Conditional Trigger: Ensure the automated action only runs if the
Is Surface Productcheckbox on the related product is true.
- Custom Fields: On your
- Considerations: This approach bypasses standard Odoo price lists for these specific products, requiring manual price list management or further automation for other product types. It works particularly well if your business primarily deals with such dimension-based pricing.
Conclusion
Mastering Odoo is about leveraging its powerful features to create streamlined, efficient workflows. Setting up an Odoo Consumable Product Reminder system, as detailed in this guide, is a prime example of how intelligent automation can prevent common operational bottlenecks, improve procurement, and ultimately enhance customer satisfaction.
From configuring your products as consumables to implementing robust automated alerts and understanding crucial considerations like preventing duplicate reminders, you now have the tools to ensure no consumable product order ever falls through the cracks. Remember to explore Odoo’s other vast capabilities, from comprehensive accounting to seamless GitHub integration, to continuously optimize your business processes.
Feel free to connect with Odoo experts, utilize the extensive Odoo documentation and slides, and attend events like the upcoming Odoo Experience to stay abreast of the latest innovations. By embracing these tools and methodologies, you’re not just managing your business; you’re revolutionizing it for sustained growth and success.

