Project/Open Core : Projects
Project/Open Core

Projects

Projects are the central element of collaboration in Project/Open. You can use projects to define groups of people who are working together on a common goal. You can also use projects as the primary unit of accounting that allows you to register the cost of the project members activity.

The diagram below shows a a number of activities related to a translation project.

 

Requirements

Check the original Big Picture document from ArsDigita for the requirements of the ACS 3.4 Intranet module.

Additional requirements in Project/Open include:

Design

Projects are implemented as a Project/Open business object just the same as customers, offices etc., using the same security mechanisms and using the same extension system (components, menus, categories, ...).

So the basic project structure only consists only of the "core" project properties such as customer, start- and end date etc. All advanced functionality is added by extension modules.

create table im_projects (
        project_id              integer
                                constraint im_projects_pk
                                primary key
                                constraint im_project_prj_fk
                                references acs_objects,
                                -- avoid using the OpenACS permission system
                                -- because we have to ask frequently:
                                -- "Who has read permissions on this object".
        admin_group_id          integer not null
                                constraint im_projects_admin_group_fk
                                references groups,
        project_name            varchar(1000) not null
                                constraint im_projects_name_un unique,
        project_nr              varchar(100) not null
                                constraint im_projects_nr_un unique,
        project_path            varchar(100) not null
                                constraint im_projects_path_un unique,
        parent_id               integer
                                constraint im_projects_parent_fk
                                references im_projects,
        customer_id             integer not null
                                constraint im_projects_customer_fk
                                references im_customers,
        project_type_id         not null
                                constraint im_projects_prj_type_fk
                                references categories,
        project_status_id       not null
                                constraint im_projects_prj_status_fk
                                references categories,
        description             varchar(4000),
        start_date              date,
        end_date                date,
                                -- make sure the end date is after the start date
                                constraint im_projects_date_const
                                check( end_date - start_date >= 0 ),
        note                    varchar(4000),
        project_lead_id         integer
                                constraint im_projects_prj_lead_fk
                                references users,
        supervisor_id           integer
                                constraint im_projects_supervisor_fk
                                references users,
        requires_report_p       char(1) default('t')
                                constraint im_project_requires_report_p
                                check (requires_report_p in ('t','f')),
        project_budget          number(12,2)
);