Skip to Content
Menu
This question has been flagged
5 Replies
1700 Views

hey guys , 

if I want to make changes on the odoo core modules like hr recruitment and like updating the job creation module  which approach should use 

  • custom module : wouldn't  that be over fitting and how is it done 
  • updating the core module 



 I appreciate expert advice

Avatar
Discard
Best Answer

When considering changes to Odoo core modules like `hr_recruitment`, especially when updating the job creation module, here are the approaches you can take:


1. Using a Custom Module

  •  Why: This is the recommended approach because it preserves the integrity of the core modules and ensures that your changes won't be overwritten during an Odoo update. By keeping your customizations separate, you also make it easier to maintain and upgrade the system in the future.
  • How:
    • Inherit Models, Views, and Controllers: Instead of directly modifying the core module, you create a custom module where you inherit the necessary components (models, views, controllers) from `hr_recruitment`.
    • Override or Extend: Use inheritance to override or extend existing methods. Odoo provides decorators like `@api.model`, `@api.multi`, and `@api.depends` to help you modify or add new functionalities without touching the original code.
    • Example: If you want to change the job creation process, you would inherit the relevant model in your custom module and modify or add methods as needed.
    • Advantages: This approach is less risky as it keeps your changes isolated from the core system, allowing for smoother upgrades and easier troubleshooting.


2. Updating the Core Module

  • Why: While this approach is possible, it is generally discouraged because it can lead to complications during future updates or when applying patches. Direct modifications to core modules can be overwritten during an upgrade, causing your customizations to be lost.
  • How:
    • Direct Modifications: You would edit the core files directly, changing the models, views, or controllers as needed.
    • Risks: The main risk is losing your changes during an upgrade. Additionally, any issues that arise due to these modifications may be harder to debug since they are intertwined with the core system.
    • Example: If you directly edit the job creation module in `hr_recruitment`, you might change the underlying code to suit your needs. However, during an Odoo upgrade, this code could be replaced, requiring you to redo your customizations.


Conclusion

The custom module approach is generally preferable to avoid overfitting and ensure that your changes are maintainable. While it might seem like extra work initially, it provides significant long-term benefits in terms of system stability, upgradeability, and support.


If you still opt to modify the core module directly, be prepared for potential issues during updates and consider keeping a detailed record of your changes to reapply them if necessary.

Avatar
Discard
Best Answer

Hello, 

Inherit the entire module you want to modify in your repository. Rename the module, make the necessary changes according to your requirements, and the base module will remain unchanged. The modifications you make will be reflected as needed.

Avatar
Discard
Author Best Answer

in that case , I am going to have my own module for recruitment like recruitment-mine , so I will install my module not the core . right?

Avatar
Discard

You have to add dependency to odoo recruitment app in your module and to do extention there

For example: https://www.youtube.com/watch?v=46yecsKX2tw

Best Answer

Hi,

When you want to make changes to core Odoo modules like hr_recruitment, especially if you're looking to update the job creation module, it's important to follow best practices to ensure maintainability and compatibility with future updates.

Create a Custom Module - Directly modifying core modules is discouraged because it can make upgrading Odoo more difficult in the future. By creating a custom module, your changes are isolated, making it easier to manage and upgrade.

  • Inherit the models, views, and controllers from the core module (hr_recruitment) within your custom module.
  • Use Odoo’s @api.model, @api.multi, or @api.depends decorators to extend or override methods as needed.


Hope it helps

Avatar
Discard
Author

in that case , I am going to have my own module for recruitment like recruitment-mine , so I will install my module not the core on .right?

Best Answer

Hi,
Apply the changes to core from a inherited module.
For example, if you need to add a field in existing module, inherit the model and views and add the needed fields.


Thanks

Avatar
Discard
Related Posts Replies Views Activity
0
Jan 22
1768
1
Mar 25
3694
1
Sep 21
5303
0
Mar 18
3192
1
Jan 17
8514