UNIT II PROJECT: DIAGNOSE AND MAP A REAL ODOO FEATURE
A Unit Project is justified here because Chapters 4–6 naturally combine into one engineering workflow: architecture, environment, and source navigation.
Complete all ten tasks with named components, evidence, and one verification step where relevant. Self-score each task: 0 = missing/incorrect, 1 = correct label without reasoning, 2 = correct explanation using evidence. Rework every answer below 2.
TABLE OF CONTENTS
- Case Study
- Constraints
- Task 1: Architecture Flow
- Task 2: Environment Map
- Task 3: Source Ownership
- Task 4: Field Trace
- Task 5: View Trace
- Task 6: Method Trace
- Task 7: Custom Module Placement
- Task 8: Dependency Decision
- Task 9: Debugging Strategy
- Task 10: Final Engineering Diagram
- Complete Solution
CASE STUDY
Nova Retail Group has an Odoo 19 development server.
Users report:
When we confirm a Sales Order, CRM values change and a Delivery button appears. We want to add an approval process, but the developers do not understand where existing behavior comes from.
You must produce a technical investigation before writing the custom module nova_sale_approval.
Use Sales Order SO0052 for Meridian Supplies as the running example.
CONSTRAINTS
You must not:
- edit official Odoo source,
- guess module ownership,
- make production database changes,
- disable integrations,
- start writing the custom feature before understanding the existing execution flow.
TASK 1: ARCHITECTURE FLOW
Trace:
Salesperson clicks Confirm.
From Browser to PostgreSQL.
TASK 2: ENVIRONMENT MAP
Document:
- Python environment,
- Odoo source,
- PostgreSQL,
- config,
- addons path,
- custom addons path,
- development database.
TASK 3: SOURCE OWNERSHIP
Identify:
- base Sales Order module,
- CRM integration module,
- stock integration module.
TASK 4: FIELD TRACE
Find opportunity_id and explain which module contributes it.
TASK 5: VIEW TRACE
Find the Delivery-related Sales Order view extension and explain its inherited XML ID.
TASK 6: METHOD TRACE
Explain how action_confirm() can be extended by multiple modules.
TASK 7: CUSTOM MODULE PLACEMENT
Design custom_addons/nova_sale_approval/ conceptually.
Do not implement the complete module yet.
TASK 8: DEPENDENCY DECISION
If approval requires only Sales, choose the dependency.
If approval logic also directly uses Delivery data, explain what additional dependency may be required.
TASK 9: DEBUGGING STRATEGY
Explain where to place breakpoints to observe confirmation behavior.
TASK 10: FINAL ENGINEERING DIAGRAM
Create one diagram joining architecture, environment, source structure, and runtime method execution.