Reference for the schedules sub-module of projects, with schedule fields, draft-active-archived versions, publishing, sharing with the customer, and plan header values.
This page describes the schedules sub-module of src/cluster_erp/modules/projects/. A project schedule (ProjectSchedule) is a versioned plan of a project with phases, a critical path, and plan header values. Publishing makes a draft the active version and archives the previous one. The activities of a schedule are described on actions, activities, and meetings.
stateDiagram-v2
[*] --> draft
draft --> active: publish
active --> archived: a newer draft is published
In prose: a schedule is created as a draft. Publishing a draft locks the current active schedule of the project, archives it, gives the draft the next version number, makes it active, stamps last_published_at, and emits ProjectSchedulePublished (src/cluster_erp/modules/projects/schedules/services.py:92-145). Sharing with the customer is allowed only for the active schedule; it stamps last_shared_with_customer_at and emits ProjectScheduleShared (src/cluster_erp/modules/projects/schedules/services.py:149-170).
A new schedule is always created as draft (src/cluster_erp/modules/projects/schedules/services.py:52-58).
Only a draft can be changed (src/cluster_erp/modules/projects/schedules/services.py:174-180).
The version number on publish is the highest existing version of the project plus one (src/cluster_erp/modules/projects/schedules/services.py:117-129).
The board shows the active schedule of each project, or the newest version when none is active (src/cluster_erp/modules/projects/board.py:219-223); see project board.