SAP ERP has different modules that basically cover all aspects of an organization such as Analytics, Financials, Human Capital Management, Procurement and Logistics Execution, Product Development and Manufacturing, Sales and Service, Corporate Services.
The Project and Portfolio Management which is a part of Product Development and Manufacturing gives to portfolio managers the opportunity to better identify, select, prioritize, and manage a portfolio of projects. It includes key performance metrics on staffing, budgets and schedules.
Project and portfolio management provides a better management technique. This software could handle any kind of project, such as research and development projects, enterprise IT projects or service. The project manager can set up project schedule, resources, cost and budget, project structure, documents and materials. Then the overall progress is monitored and evaluated by project.
(Oracle n.d.) The second application is Oracle E-Business Suite which is produced by Oracle corp. and the main competitor of SAP ERP.
Oracle E-business suit consist of following modules: Oracle HRMS, Oracle Financials, Oracle Logistics, Oracle SCM, Oracle Projects.
The other Oracle’s product is Oracle Project Portfolio Analysis which is available in Oracle Enterprise Project Management. The main objective of a product to organize, evaluate, prioritize, analyze a project within the given budget, time and scope
Oracle Project Portfolio Analysis is part of the Oracle Projects and fully integrates with Oracle E-Business Suite solution including all modules.
(Sage software n.d.) The next vendor is Sage which was found in 1981 and since that time has grown very rapidly become one of the world’s leading supplier of business management software and related services to small and medium sized enterprises.
Sage offers different software for broad type of businesses including Accounting and Operations
Business Intelligence and Reporting, Manufacturing, Fixed Asset Management, Human Resource Management, Warehouse Management, CRM & Contact Management, E-commerce, Electronic Data Interchange.
(Microsoft Dynamics n.d.) Microsoft Dynamics is a line of integrated, adaptable business management solutions that enable managers to make important business decisions with more confidence. It works with like usual Microsoft software and fully integrated with all Microsoft products. It automates financial issues, customer relationship, and supply chain.
Project management software allows managers to keep close control of project performance, costs and labor and revenues, as well as other resources. It has wide spectrum of tools and technologies, to accomplish project goals and achieve better results on budget, on time, and with resource efficiency.
(SSA global n.d.) SSA ERP supports discrete manufacturing operations. It extends the traditional ERP footprint of finance, manufacturing, sales, purchasing into freight management, warehouse management, and after-market service support. SSA ERP runs on a wide variety of platforms, including low-cost Linux /MySQL to multi-CPU, multi-tier data centers, providing further flexibility.
37 signals’ Basecamp software is a Web-based project portfolio management tool. It implements “Getting real” philosophy and provides an application that can be described as simpliest solution for a project management issue. The “Easy office” application would probably has some common points with Basecamp as well as implementing the “Geting real” philosophy
ERD diagram
There are six tables in the database: 1) Employee, 2) Task, 3) Employee_Task, 4) Project, 5) Employee_project and 6) Department..
Employee and Task has many to many relation. Employee_task table has composite primary key which contains of employee_id and task_id. Project and Employee tables have many to many relationship with Employee-id and Project_id foreign keys in employee_project table. Department and employee have one to many relationship with department_id foreign key in employee table.
Activity diagram
1. A project manager log on the dedicated website from any part of the world by the mean of Internet.
2. The system recognizes his id and password and processes him to project management webpage.
3. If the password or ID is wrong the system shows error message and ask a manager to try again.
3. A manager has 2 basic options what to do in the system
a) To work with employees’ profiles
b) To work with project and tasks.
4. If he/she chooses to work with employee’s profiles, he/she will be asked to choose department. Then he will be given 3 options such as Create/Edit/Delete an employee’s profiles.
5) If he/she chooses Project option he will be given 2 options choose project or create project.
6) if he/she chooses project he would have to choose task then and would be able to Delete or Edit task.
7) If he/she chooses to create project, then he/she would be able to create task for the project and finally assign task to an employee.
8) Then he successfully could log out from the system.
First page of the system where you have opportunity to view your Stuff and existing Projects from the right side-bar menu.
From the left side-bar menu you have tools to create project, task, department, profile, user. Return to homepage or logout.
After you choose Stuff you would be directed to up-to-date list of departments which is retrieved from the database
After you choose department the profiles of those who belong to department are automatically retrieved from database.
You can view detailed information about every staff member
If you decided to choose Projects you will be directed to the up-to-date list of existing Project which is retrieved from database for you
You can view what tasks each project consist of
You can create stuff profile from right side-bar menu. The data typed in the text fields would be inserted into database. The dropdown menu for the departments is populated from database and therefore is dynamic
If you choose to create task, you will be directed to the form with a dropdown menu for Project’s name so you can reference a task to a particular project that already exists. The dropdown menu is populated from database.
Apenidx
Index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<!-- DW6 -->
<head>
<!-- Copyright 2005 Macromedia, Inc. All rights reserved. -->
<title>Project Portfolio Management System</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="easy_office.css" type="text/css" />
</head>
<body bgcolor="#14285f">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr bgcolor="02021e">
<td colspan="4" rowspan="2" nowrap="nowrap"> </td>
<td height="58" nowrap="nowrap" colspan="3" id="logo" valign="bottom"><p>Welcome to Project Portofolio Management System</p>
</td>
<td width="168"> </td>
</tr>
<tr bgcolor="02021E">
<td height="57" nowrap="nowrap" colspan="3" id="tagline" valign="top"> </td>
<td width="168"> </td>
</tr>
<tr>
<td colspan="8" bgcolor="#cc3300"><img src="mm_spacer.gif" alt="" width="1" height="2" border="0" /></td>
</tr>
<tr>
<td colspan="8"><img src="mm_spacer.gif" alt="" width="1" height="2" border="0" /></td>
</tr>
<tr>
<td colspan="8" bgcolor="#cc3300"><img src="mm_spacer.gif" alt="" width="1" height="1" border="0" /></td>
</tr>
<tr>
<td colspan="8"> <br />
<br /> </td>
</tr>
<tr>
<td width="155" valign="top" height="370">
<table border="0" cellspacing="0" cellpadding="0" width="155" id="navigation">
<tr>
<td width="155" height="40"><a href="departments.php">Create Project</a></td>
</tr>
<tr>
<td width="155" height="40"><a href="create_task.php">Create Task</a></td>
</tr>
<tr>
<td width="155" height="40"><a href="javascript:;">Create department</a></td>
</tr>
<tr>
<td width="155" height="40"><a href="javascript:;">Create profile</a></td>
</tr>
<tr>
<td width="155" height="40"><a href="javascript:;">Create User</a></td>
</tr>
<tr>
<td width="155" height="40"><a href="index.php">Home</a></td>
</tr>
<tr>
<td width="155" height="40"><a href="javascript:;">Logout</a></td>
</tr>
</table></td>
<td width="1" bgcolor="#445DA0"><img src="mm_spacer.gif" alt="" width="1" height="1" border="0" /></td>
<td width="50"><img src="mm_spacer.gif" alt="" width="50" height="1" border="0" /></td>
<td colspan="2" valign="top"><img src="mm_spacer.gif" alt="" width="304" height="1" border="0" /><br />
<table border="0" cellspacing="0" cellpadding="0" width="304">
<tr>
<td height="41" class="pageName">Welcome Message Here</td>
</tr>
<tr>
<td class="bodyText">Rapiebant me spectacula theatrica, plena imaginibus
miseriarum mearum et fomitibus ignis mei. quis est, quod ibi homo
vult dolere luctuosa et tragica, quae tamen pati ipse nollet? et tamen
pati vult ex eis!
<p><span class="subHeader">Title Here</span><br />
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam
erat, sed diam voluptua. At vero eos et accusam et justo duo dolores
et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus
est Lorem ipsum dolor sit amet. </p> </td>
</tr>
</table> </td>
<td width="60"><img src="mm_spacer.gif" alt="" width="50" height="1" border="0" /></td>
<td width="239" valign="top"><img src="mm_spacer.gif" alt="" width="1" height="10" border="0" /><br />
<table border="0" cellspacing="0" cellpadding="0" width="200">
<tr>
<td width="45"><img src="mm_spacer.gif" alt="" width="40" height="1" border="0" /></td>
<td width="110" id="sidebar" class="smallText">
<p><br/><a href="departments.php">Staff<img src="stuff.jpg" alt="image 1" width="110" height="110" border="0" vspace="6" /></a></p>
<p> <a href="projects.php">Projects <img src="project.jpg" alt="image 2" width="110" height="110" border="0" vspace="6" /><br />
</a><br /></p>
<br />
<br />
<br />
<br /> </td>
<td width="45"> </td>
</tr>
</table>
<br /> </td>
<td width="168"> </td>
</tr>
<tr>
<td width="155"> </td>
<td width="1"></td>
<td width="50"> </td>
<td width="4"> </td>
<td width="321"> </td>
<td width="60"> </td>
<td width="239"> </td>
<td width="168"> </td>
</tr>
</table>
</body>
</html>
Easy_office.css
/* Global Styles */
body {
margin:0px;
}
td {
font:11px arial;
color:#99CCFF;
}
hr {
height:1px;
color: #cccccc;
border: none;
}
a {
color: #CC3300;
text-decoration:underline;
}
a:hover {
color: #FF3300;
text-decoration:none;
}
/* ID Styles */
#navigation a {
font:11px georgia;
color: #99CCFF;
font-weight:bold;
text-decoration: none;
letter-spacing:.1em;
line-height:16px;
display:block;
padding:10px;
border: 1pt solid rgb(20,40,95);
border-right-width: 0px;
border-left-width: 0px;
}
#navigation a:hover {
color:#ffffff;
border: 1pt dotted red;
border-right-width: 0px;
border-left-width: 0px;
}
#sidebarHeader {
padding: 0px 4px 14px 4px;
}
#logo {
font:18px georgia;
color: #CC3300;
line-height:24px;
letter-spacing:.4em;
}
#tagline {
font:12px georgia;
color: #CC3300;
line-height:18px;
letter-spacing:.4em;
}
#dateformat a {
color:#99CCFF;
font:11px georgia;
color: #99CCFF;
letter-spacing:.2em;
text-decoration:none;
font-weight:bold;
}
#dateformat a:hover {
color: #ffffff;
}
/* Class Styles */
.bodyText {
font:11px arial;
color:#99CCFF;
line-height:20px;
letter-spacing:.1em;
margin-top:0px;
}
.pageName{
font:22px georgia;
color: #CC3300;
line-height:20px;
letter-spacing:.1em;
}
.subHeader {
font:16px georgia;
color: #CC3300;
font-weight:bold;
letter-spacing:.1em;
line-height:16px;
}
.sidebarHeader {
font:14px georgia;
color: #99CCFF;
font-weight:bold;
letter-spacing:.1em;
line-height:16px;
}
.detailText {
font:11px arial;
color:#ffffff;
line-height:16px;
letter-spacing:.1em;
}
.smallText {
font:14px arial;
color:#99CCFF;
}
Departments.php
<?php
require ('e_o_sc_fns.php');
$dep_array=get_departments();
display_departments($dep_array);
?>
Show_dep.php
<?php
require ('e_o_sc_fns.php');
$depid=$_GET['depid'];
$name=get_department_name($depid);
$profile_array=get_profiles($depid);
display_profiles($profile_array);
?>
Show_profile.php
<?php
require ('e_o_sc_fns.php');
$person_id=$_GET['person_id'];
$profile=get_profile_details($person_id);
display_profile_details($profile);
?>
Projects.php
<?php
require ('e_o_sc_fns.php');
$project_array=get_projects();
display_projects($project_array);
?>
Show_task.php
<?php
require ('e_o_sc_fns.php');
$task_id=$_GET['task_id'];
$task=get_task_details($task_id);
display_task_details($task);
?>
Show.project.php
<?php
require ('e_o_sc_fns.php');
$project_id=$_GET['project_id'];
$name=get_projects_name($project_id);
$task_array=get_tasks($project_id);
display_tasks($task_array);
?>
e_o_sc_fns.php
<?php
include_once('db_fns.php');
include_once('profile_fns.php');
include_once('output_fns.php');
?>
Ouput_fns.php
<?php
function do_html_URL($url, $name)
{
// output URL as link and br
?>
<a href="<?php echo $url; ?>"><?php echo $name; ?></a><br />
<?php
}
function display_departments($dep_array)
{
if (!is_array($dep_array))
{
echo 'No departments currently available<br />';
return;
}
echo '<ul>';
foreach ($dep_array as $row)
{
$url = 'show_dep.php?depid='.($row['depid']);
$title = $row['depname'];
echo '<li>';
do_html_url($url, $title);
echo '</li>';
}
echo '</ul>';
echo '<hr />';
}
function display_profiles($profile_array)
{
//display all books in the array passed in
if (!is_array($profile_array))
{
echo '<br />No profiles currently available in this department<br />';
}
else
{
echo '<table width = \"100%\" border = 0>';
foreach ($profile_array as $row)
{
$url = 'show_profile.php?person_id='.($row['person_id']);
echo '<tr><td>';
if (@file_exists('images/'.$row['person_id'].'.jpg'))
{
$title = '<img src=\'images/'.($row['person_id']).'.jpg\' border=0 />';
do_html_url($url, $title);
}
else
{
echo ' ';
}
echo '</td><td>';
$title = $row['person_occupation'].' - '.$row['person_name'];
do_html_url($url, $title);
echo '</td></tr>';
}
echo '</table>';
}
echo '<hr />';
}
function display_profile_details($profile)
{
// display all details about this book
if (is_array($profile))
{
echo '<table><tr>';
//display the picture if there is one
if (@file_exists('images/'.($profile['person_id']).'.jpg'))
{
$size = GetImageSize('images/'.$profile['person_id'].'.jpg');
if($size[0]>0 && $size[1]>0)
echo '<td><img src=\'images/'.$profile['person_id'].'.jpg\' border=0 '.$size[3].'></td>';
}
echo '<td><ul>';
echo '<li><b>Full name:</b> ';
echo $profile['person_name'];
echo '</li><li><b>ID:</b> ';
echo $profile['person_id'];
echo '</li><li><b>Curriculam Vitae:</b> ';
echo $profile['cv'];
echo '</li></ul></td></tr></table>';
}
else
echo 'The details of this book cannot be displayed at this time.';
echo '<hr />';
}
function display_projects($project_array)
{
if (!is_array($project_array))
{
echo 'No projects currently available<br />';
return;
}
echo '<ul>';
foreach ($project_array as $row)
{
$url = 'show_project.php?project_id='.($row['project_id']);
$title = $row['project_name'];
echo '<li>';
do_html_url($url, $title);
echo '</li>';
}
echo '</ul>';
echo '<hr />';
}
function display_tasks($task_array)
{
//display all books in the array passed in
if (!is_array($task_array))
{
echo '<br />No task currently available in this department<br />';
}
else
{
echo '<table width = \"100%\" border = 0>';
foreach ($task_array as $row)
{
$url = 'show_task.php?task_id='.($row['task_id']);
echo '<tr><td>';
$title = $row['task_desription'].' - '.$row['task_name'];
do_html_url($url, $title);
echo '</td></tr>';
}
echo '</table>';
}
echo '<hr />';
}
function display_task_details($task)
{
// display all details about this book
if (is_array($task))
{
echo '<table><tr>';
echo '<td><ul>';
echo '<li><b>Task name:</b> ';
echo $task['task_name'];
echo '</li><li><b>ID:</b> ';
echo $task['task_id'];
echo '</li><li><b>Task description:</b> ';
echo $task['task_description'];
echo '</li></ul></td></tr></table>';
}
else
echo 'The details of this task cannot be displayed at this time.';
echo '<hr />';
}
?>
Create_task.php
<?php
require ('e_o_sc_fns.php');
$conn=db_connect();
$project_array=get_projects();
foreach ($project_array as $thisproject)
{
echo '<option value="';
echo $thisproject['project_id'];
echo '"';
if ($thisproject['project_id'] == $task['project_id'])
echo ' selected';
echo '>';
echo $thisproject['project_name'];
echo "</option>\n";
}
?>
</select>
</td>
<tr>
<td>Task description</td>
<td><textarea name="task_description" cols="30" rows"14"></textarea></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Enter" /></td>
</tr>
</table>
</form>
Create_profile.php
<h3>Create employee's profile</h3>
<form action="profile_insert.php" method="post">
<table border="0">
<tr>
<td> Person Id</td>
<td><input type="text" name="person_id" maxlength="10" size="10" /></td>
</tr>
<tr>
<td>Person name</td>
<td><input type="text" name="person_name" maxlength="20" size="20" /></td>
</tr>
<tr>
<td>Person occupation</td>
<td><input type="text" name="person_occupation" maxlength="20" size="20" /></td>
</tr>
<tr>
<td>Departments</td>
<td><select name='depid'>
<?php
require ('e_o_sc_fns.php');
$conn=db_connect();
$dep_array=get_departments();
foreach ($dep_array as $thisdep)
{
echo '<option value="';
echo $thisdep['depid'];
echo '"';
if ($thisdep['depid'] == $profile['depid'])
echo ' selected';
echo '>';
echo $thisdep['depname'];
echo "</option>\n";
}
?>
SQL source code for the database
CREATE TABLE easy_office.employee (
employee_id INT(10) AUTO_INCREMENT NOT NULL,
employee_department_id INT(10) NOT NULL,
employee_name VARCHAR(16) NOT NULL,
employee_surname VARCHAR(16) NOT NULL,
employee_occupation VARCHAR(16) NOT NULL,
employee_phone_number INT(18) NULL,
employee_mobile_number INT(17) NULL,
employee_address VARCHAR(50) NOT NULL,
employee_login_id VARCHAR(10) NOT NULL,
employee_password VARCHAR(10) NOT NULL,
PRIMARY KEY (employee_id)
);
CREATE TABLE easy_office.task (
task_id INT(16) AUTO_INCREMENT NOT NULL,
task_project_id INT(10) NOT NULL,
task_name VARCHAR(16) NOT NULL,
task_description VARCHAR(16) NOT NULL,
task_deadline TIME NOT NULL,
task_status VARCHAR(10) NOT NULL,
PRIMARY KEY (task_id)
);
CREATE TABLE easy_office.employee_task (
employee_id INT(10) NOT NULL,
task_id INT(16) NOT NULL,
PRIMARY KEY (employee_id, task_id)
);
CREATE TABLE easy_office.project (
project_id INT(10) NOT NULL,
project_name VARCHAR(10) NOT NULL,
project_description VARCHAR(10) NOT NULL,
PRIMARY KEY (project_id)
);
CREATE TABLE easy_office.employee_project (
employee_id INT(10) NOT NULL,
project_id INT(10) NOT NULL,
PRIMARY KEY (employee_id, project_id)
);
CREATE TABLE easy_office.department (
department_id INT(10) NOT NULL,
department_name VARCHAR(10) NOT NULL,
PRIMARY KEY (department_id)
);
ALTER TABLE easy_office.employee_task ADD CONSTRAINT employee_employee_task_fk
FOREIGN KEY (employee_id)
REFERENCES easy_office.employee (employee_id)
;
ALTER TABLE easy_office.employee_project ADD CONSTRAINT employee_employee_project_fk
FOREIGN KEY (employee_id)
REFERENCES easy_office.employee (employee_id)
;
ALTER TABLE easy_office.employee_task ADD CONSTRAINT task_employee_task_fk
FOREIGN KEY (task_id)
REFERENCES easy_office.task (task_id)
;
ALTER TABLE easy_office.task ADD CONSTRAINT project_task_fk
FOREIGN KEY (task_project_id)
REFERENCES easy_office.project (project_id)
;
ALTER TABLE easy_office.employee_project ADD CONSTRAINT project_employee_project_fk
FOREIGN KEY (project_id)
REFERENCES easy_office.project (project_id)
;
ALTER TABLE easy_office.employee ADD CONSTRAINT department_employee_fk
FOREIGN KEY (employee_department_id)
REFERENCES easy_office.department (department_id)
;
Reference:
-
Bailor, Coreen 2006., For CRM, ERP, and SCM, SAP Leads the Way., Retrieved May 10, 2008 from
-
Basecamp n.d., Take a tour, Retrieved May 10, 2008 from
-
Microsoft Dynamics n.d., What is Microsoft Dynamics, Retrieved May 10, 2008 from
-
Oracle n.d., Oracle E-business suite, Retrieved May 10, 2008 from
- Project Management Institute, What is Project Management, Retrieved May 10, 2008 from http://www.pmi.org/
-
Sage software n.d., Products, Retrieved May 10, 2008 from
-
SAP global n.d., Enterprise Resource Planning system, Retrieved May 10, 2008 from
-
SSA global n.d., SSA Enterprise Resource Planning, Retrieved May 10, 2008 from
- Schildt, G 2007, Java 2, McGraw-Hill, California.
- Welling, L & Thomson, L 2005, PHP and MySQL development, Sams publishing, Indiana.
-
Wikipedia 2008, Enterprise Resource Planning system, Retrieved March 10, 2008 from