Ir al contenido
Menú
Se marcó esta pregunta
5 Respuestas
2395 Vistas

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
Descartar
Mejor respuesta

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
Descartar
Mejor respuesta

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
Descartar
Autor Mejor respuesta

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
Descartar

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

Mejor respuesta

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
Descartar
Autor

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?

Mejor respuesta

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
Descartar
Publicaciones relacionadas Respuestas Vistas Actividad
0
ene 22
2247
1
mar 25
4200
1
sept 21
5902
0
mar 18
3702
1
ene 17
8913