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.