Factorizer/Cluster ERP WikiCluster ERP Türkçe
Home / Business modules

Reference

Projects, items, and fixtures

Reference for the projects, items, and fixtures sub-modules, with fields, the project lifecycle, opening from sales orders, item production orders, and fixtures.

This page describes three sub-modules of src/cluster_erp/modules/projects/. projects/ holds the project record and its lifecycle. items/ holds what the project delivers, with a product breakdown. fixtures/ holds the fixtures, jigs, tools, and equipment the project needs. Schedules are on schedules; meetings and actions on actions, activities, and meetings.

Scope and source

  • Defined in: models.py, schemas.py, services.py, routes.py, and metadata.py of the three sub-modules, and the sales order handler in src/cluster_erp/modules/projects/module.py:98-150.
  • Count: 3 tables; 9 project routes, 7 item routes, and 7 fixture routes (@router. decorators); 3 ActionMeta entries.

Project fields

Name Meaning Source
project_no, name Business key from the yearly sequence project, and name src/cluster_erp/modules/projects/projects/models.py:38-39, src/cluster_erp/modules/projects/projects/services.py:124
status Default planning src/cluster_erp/modules/projects/projects/models.py:40-44
customer_id, project_manager_id Customer and manager src/cluster_erp/modules/projects/projects/models.py:45-46
stock_mode common (default) or project_striped src/cluster_erp/modules/projects/projects/models.py:49-53, src/cluster_erp/modules/projects/projects/schemas.py:13
sales_order_id The sales order that opened the project src/cluster_erp/modules/projects/projects/models.py:54
kickoff_at, planned_finish_at, actual_finish_at, description Dates and description src/cluster_erp/modules/projects/projects/models.py:55-58

Item and fixture fields

Entity Fields Source
ProjectItem (projects_project_items) code (yearly sequence project_item), project_id, line_no, product_id, product_model_id, product_version_id, customer_part_id, description, qty, uom, status (default planned), notes, activity_ref src/cluster_erp/modules/projects/items/models.py:17-78, src/cluster_erp/modules/projects/items/services.py:59
FixtureRequirement (projects_fixtures) code (yearly sequence fixture_requirement), project_id, fixture_type, name, qty, need_by_date, status (default identified), designer_id, manufacturing_method, cost_estimate src/cluster_erp/modules/projects/fixtures/models.py:18-52, src/cluster_erp/modules/projects/fixtures/services.py:60

Item statuses are planned, in_progress, completed, and cancelled. Fixture types are fixture, jig, tool, and equipment (src/cluster_erp/modules/projects/items/schemas.py:10, src/cluster_erp/modules/projects/fixtures/schemas.py:10).

Lifecycles and actions

A project moves one step at a time along planning, kickoff_done, in_execution, near_completion, completed, and closed (src/cluster_erp/modules/projects/projects/services.py:32-43). A fixture moves along identified, in_design, in_production, ready, and delivered (src/cluster_erp/modules/projects/fixtures/services.py:19-24).

stateDiagram-v2
 [*] --> planning
 planning --> kickoff_done
 kickoff_done --> in_execution
 in_execution --> near_completion
 near_completion --> completed
 completed --> closed

In prose: each project status has exactly one next status. kickoff_done stamps kickoff_at and emits ProjectKickoffCompleted; closed emits ProjectClosed; every step emits ProjectStatusChanged (src/cluster_erp/modules/projects/projects/services.py:250-300).

Action Label Condition Endpoint Permission Source
transition (project) Change Status none; the service checks the step POST /projects/{id}/transition project.update src/cluster_erp/modules/projects/projects/metadata.py:55-64, src/cluster_erp/modules/projects/projects/routes.py:285
transition (fixture) Change Status none; the service checks the step POST /fixtures/{id}/transition project.update src/cluster_erp/modules/projects/fixtures/metadata.py:64-73, src/cluster_erp/modules/projects/fixtures/routes.py:75
create_production_order (item) Create Production Order none POST /project-items/{id}/create-production-order CreateProductionOrderForProject.REQUIRED_PERMISSION src/cluster_erp/modules/projects/items/metadata.py:115-127, src/cluster_erp/modules/projects/items/routes.py:88-138

Routes

Method and path Permission Source
GET, POST /projects/; GET, PUT, DELETE /projects/{project_id}; POST /projects/bulk-delete project.read, .create, .update, .delete, .bulk_delete src/cluster_erp/modules/projects/projects/routes.py:40-310
GET /projects/{project_id}/production-rollup, GET /projects/{project_id}/evm project.read src/cluster_erp/modules/projects/projects/routes.py:102, src/cluster_erp/modules/projects/projects/routes.py:125
GET /project-items/by-project/{project_id}, GET /project-items/{item_id}; POST, PUT, DELETE, bulk delete project.read, project.update src/cluster_erp/modules/projects/items/routes.py:25-139
GET /fixtures/by-project/{project_id}, GET /fixtures/{fixture_id}; POST, PUT, DELETE, bulk delete project.read, project.update src/cluster_erp/modules/projects/fixtures/routes.py:24-100

Constraints and validation

  • When SalesOrderPoReceived arrives, the module reads the order with GetSalesOrderById and opens one project for it. The name is the order number or the customer PO number, and the planned finish is the order's delivery date. A second event for the same order does not open a second project (src/cluster_erp/modules/projects/module.py:98-150).
  • Creating a production order for an item needs a product with model and version; the order is created by the query CreateProductionOrderForProject (src/cluster_erp/modules/projects/items/routes.py:100-138).
  • production-rollup and evm read GetProjectProductionRollup and GetProjectProductionEvm; the EVM is hour-based, and its docstring states that it is not a money value (src/cluster_erp/modules/projects/projects/routes.py:102-268).
  • Events: ProjectCreated on create, ProjectFixtureRequired on fixture create (src/cluster_erp/modules/projects/projects/services.py:142-150, src/cluster_erp/modules/projects/fixtures/services.py:77).

Terms introduced

Term Code identifier Definition Turkish term Source
project item ProjectItem One deliverable of a project, with product breakdown and quantity. Proje kalemi src/cluster_erp/modules/projects/items/models.py:17
fixture requirement FixtureRequirement A fixture, jig, tool, or equipment the project needs to make or obtain. Fikstür ihtiyacı src/cluster_erp/modules/projects/fixtures/models.py:18

Verified against commit 92f8051 on 2026-11-13.

Verified against commit 92f8051 · 2026-11-13