ይህ ገጽ ገና ወደ አማርኛ አልተተረጎመም። የእንግሊዝኛው ጽሑፍ ቀርቧል።
Projects technical architecture
Complete data models, model inheritance, security access groups, background cron jobs, and developer extension APIs across SmartERP Projects modules.
SmartERP Projects extends Odoo 17 Community through modular, loosely-coupled addons. This reference document details the technical models, security groups, scheduled crons, and API extension points for developers and system administrators.
Model extension matrix#
| Technical model | Defining module | Description and key fields |
|---|---|---|
project.project | smarterp_governance, smarterp_project_agile, smarterp_project_controls | Inherited with: gate_state (0–4), scope_freeze_active, agile_dor_enforced, budget_status (none, ok, warning, critical), budget_line_ids, eac_amount, eac_variance. |
project.task | smarterp_governance, smarterp_project_agile, smarterp_project_approval | Inherited with: gov_type (deliverable, change, raid), cr_class (A–D), sprint_id, story_points, estimate_state (draft, tl_review, tech_review, pm_review, approved, revision, rejected), initial_estimate_hours, blocker_priority, blocker_status, response_sla_due, resolution_sla_due. |
project.sprint | smarterp_project_agile | Standalone model: name, project_id, state (draft, active, closed, cancelled), date_start, date_end, committed_points, committed_hours, completed_points, velocity_rate. |
project.budget.line | smarterp_project_controls | Standalone model: project_id, cost_category (labor, subcontract, software, hardware, travel), planned_amount, actual_amount, variance_amount. |
project.dashboard | smarterp_project_dashboard | Single-record caching model: aggregates active project counts, gate distributions, sprint metrics, EAC variance, and commercial margins. |
smart.timesheet.control.rule | smart_enterprise_timesheet | Standalone model: name, active, calendar_id, escalation_line_ids, reminder_email_template_id. |
smart.timesheet.period.lock | smart_enterprise_timesheet | Standalone model: company_id, lock_date, locked_by_user_id, active. |
smart.et.holiday.occurrence | smart_et_calendar | Standalone model: name, holiday_type (fixed, bahire_hasab, hijri), date_gregorian, date_ethiopian, is_working_day. |
Security groups and access control#
SmartERP defines layered security groups in ir.model.access.csv and security XML definitions:
[ Project / User ]
│
▼
[ Project / Manager ] ──► [ Governance / Approver ]
│ │
▼ ▼
[ Project / Administrator ] ──► [ Delegation of Authority (DoA) Approver ]
│
▼
[ Timesheet / Override Period Lock ]
- Segregation of Duties: Authors of Change Requests cannot approve Class D requests. Gate approvers must hold the
group_governance_approvergroup. - Multi-Company Rules: All project, sprint, budget line, and timesheet models enforce standard
['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]record rules.
Scheduled cron actions#
| Cron technical ID | Frequency | Module | Action executed |
|---|---|---|---|
ir_cron_project_blocker_escalation | Every 4 hours | smarterp_project_agile | Evaluates open blockers against response/resolution SLAs, increments escalation levels, and schedules activities. |
ir_cron_project_budget_status_check | Daily (01:00 UTC) | smarterp_project_controls | Recalculates EAC variance, updates budget_status, and alerts PM/CFO upon status degradation. |
ir_cron_timesheet_compliance_reminder | Daily (07:00 UTC) | smart_enterprise_timesheet | Compares previous day timesheets against working calendars and sends reminders/escalations. |
ir_cron_generate_et_holidays | Monthly (1st of month) | smart_et_calendar | Projects Bahire Hasab and Hijri holidays for upcoming 24 months and creates non-working leaves. |
Developer extension APIs#
Modules can listen to governance lifecycle events using standard Odoo method overrides or Python decorators:
from odoo import models, api
class CustomProject(models.Model):
_inherit = 'project.project'
def action_advance_gate(self, target_gate):
"""Custom hook executed when project advances through a stage gate."""
res = super().action_advance_gate(target_gate)
# Custom ERP integration logic here
return res
መጨረሻ የተሻሻለው: 2026-10-16