How to Write a New Module for Odoo from the Front End in Odoo Community Edition

Creating new App in Odoo Community Edition from Odoo Web interface

Developing a custom module in Odoo can seem daunting, especially if you’re working with the Community Edition, which doesn’t have Odoo Studio’s drag-and-drop customization features. However, with a bit of know-how and by enabling Developer Mode, you can create modules directly from the front end, allowing you to modify forms, add fields, and set up logic to fit your business needs. This guide will walk you through the process of creating a new module in Odoo Community Edition.

Why Create a Custom Module?

A custom module is useful if:

  1. You need to add new fields, forms, or features that are not available out of the box.
  2. You want to modify Odoo's default behavior to fit specific business needs.
  3. You prefer to manage everything on the front end without direct database or backend access.

Prerequisites

  1. Basic knowledge of Odoo: It’s helpful to understand Odoo’s structure, models, and views.
  2. Developer Mode: Enable Developer Mode in Odoo to access advanced customization options.
  3. Odoo Community Edition: This guide applies specifically to Odoo Community Edition, which doesn’t include the Odoo Studio app.

Step 1: Enable Developer Mode

Before you can start, you need to enable Developer Mode in Odoo.

  1. Log in to your Odoo instance.
  2. Click on your profile at the top right and select About Odoo.
  3. Click on Activate the Developer Mode. Once enabled, you’ll see additional options in the interface, including the “Customize” and “Technical” menus.

Step 2: Create a New App from the Front End

While Odoo Community doesn’t support creating a fully-fledged app from the front end, you can start by creating a “placeholder” for your module by defining a new model and then expanding its functionality.

  1. Go to Settings > Technical > Database Structure > Models.
  2. Click Create to define a new model. Here’s a quick rundown of the key fields:
    • Model Name: Enter a technical name for your model (e.g., x_custom_module).
    • Model Description: Provide a friendly name for your model. This will be visible to users (e.g., Custom Module).
    • Base Model: Leave this empty unless you’re extending an existing model.
  3. Save your model. This step effectively creates a new table in the database that you can extend with fields and views.

Step 3: Add Fields to Your Model

Next, you’ll need to define fields within your model. Fields represent data attributes in Odoo and are fundamental to defining what data your module will capture.

  1. Navigate to Settings > Technical > Database Structure > Fields.
  2. Click Create to add a new field to your model.
    • Field Name: Choose a unique name (e.g., x_description).
    • Field Label: This will be the field's name as displayed to users (e.g., Description).
    • Model: Select the model you just created (e.g., Custom Module).
    • Type: Choose the type of data you want this field to store, such as Char (text), Integer, Boolean, Date, etc.
  3. Save each field and repeat to add any additional fields you need.

Step 4: Define Views to Display Your Module

Now that your model has been created and populated with fields, you need to create views to display your module within Odoo’s interface.

  1. Go to Settings > Technical > User Interface > Views.
  2. Click Create to define a new view. Choose a Form View to start. Here are the primary fields you’ll set:
    • View Name: Give your view a descriptive name (e.g., Custom Module Form View).
    • Model: Select your custom model from the dropdown.
    • Type: Set this to Form for the form view.
  3. Add fields to your form view by editing the XML definition. Here’s an example XML snippet to start:
    <form string="Custom Module">
        <sheet>
            <group>
                <field name="x_description"/>
                <!-- Add more fields here -->
            </group>
        </sheet>
    </form>
    
  4. Save your form view.

Repeat the same process for creating a Tree View if you want to display records in a list view. The Type for a list view is “Tree”.

Step 5: Create a Menu Item for Your Module

With your model and views set up, you need to add a menu item so users can access your custom module from the main Odoo interface.

  1. Go to Settings > Technical > User Interface > Menu Items.
  2. Click Create to define a new menu item.
    • Menu Name: Name the menu item (e.g., Custom Module).
    • Parent Menu: Set this to a suitable location in the menu structure. For example, you might place it under Settings or Custom.
    • Action: Create an Action to link your menu item to the module.
  3. To create an action, go to Settings > Technical > Actions > Window Actions and define a new action.
    • Name: Enter an action name.
    • Object: Select your custom model.
    • View Mode: Set this to “Tree,Form” to allow both list and form views.
  4. Save the action, return to your menu item, and set the Action field to the new action you just created.

Step 6: Test Your Module

You should now have a fully functional (if basic) module accessible from the Odoo main interface. Click on your new menu item to verify that:

  • You can see the form and tree views for your model.
  • You can add new records and interact with the fields you defined.

Step 7: Add Business Logic with Automated Actions (Optional)

Odoo Community Edition does not support direct Python coding from the front end, but you can still add some business logic with Automated Actions.

  1. Go to Settings > Technical > Automation > Automated Actions.
  2. Click Create to define a new automated action.
    • Model: Select your custom model.
    • Trigger: Choose when this action should execute (e.g., On Creation).
    • Action To Do: Select Python Code.
    • Code: Write Python expressions within the defined constraints. For example:
      record['x_description'] = 'Default description'
      

This code will set a default description when a new record is created.

Step 8: Export and Deploy Your Module (Advanced)

If you need to migrate your module to another Odoo instance, you can export the configuration:

  1. Use Odoo's export tools to export the models, fields, views, and menu items.
  2. If you have database access, you can also transfer configurations using database migration tools.

Conclusion

Congratulations! You have successfully created a new module in Odoo Community Edition, entirely from the front end and without using Odoo Studio. This process allows you to extend Odoo’s functionality in a way that fits your business needs without needing to write backend code. As you get more comfortable, you can add more complex fields, automated actions, and views to enhance your module further.

Creating custom modules opens a world of possibilities for tailoring Odoo to your specific requirements. By combining Developer Mode with the front-end tools available in Odoo, you can create robust solutions even in the Community Edition.

How to Use Highlight.js for Syntax Highlighting in Odoo Blog Posts
Enhance your Odoo blog with beautiful, readable code snippets using Highlight.js