πίνακα είδους. Ο κώδικας για αυτό είναι:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[insert_item_suggested_price]
ON [dbo].[SUPPLIES]
AFTER INSERT
AS
declare @eidos as int
declare @mean_price as real
BEGIN
--
SET NOCOUNT ON;
SELECT @eidos = (SELECT EIDOS_ID FROM INSERTED)
select @mean_price = (select avg(price) as mean_price from
supplies where EIDOS_ID = @eidos)

UPDATE [dbo].[EIDOS]
SET [SUGESTED_PRICE] = @mean_price
where [dbo].[EIDOS].EIDOS_ID = @eidos

END

Και ο τρίτος αφορά στην ανανέωση κάποιας καταχώρησης στον πίνακα.
Βρίσκει το είδος το οποιο ανανεώθηκε στον πίνακα και υπολογίζει τη νέα
μέση τιμή την οποία την τοποθετεί στο αντίστοιχο πεδίο του πίνακα είδους.
Ο κώδικας για αυτό είναι:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO

ALTER TRIGGER [dbo].[update_item_sugested_price]
ON [dbo].[SUPPLIES]
AFTER UPDATE
AS
declare @eidos as int
declare @mean_price as real
BEGIN


58
SET NOCOUNT ON;
SELECT @eidos = (SELECT EIDOS_ID FROM INSERTED)
select @mean_price = (select avg(price) as mean_price from
supplies where EIDOS_ID = @eidos)

UPDATE [dbo].[EIDOS]
SET [SUGESTED_PRICE] = @mean_price
where [dbo].[EIDOS].EIDOS_ID = @eidos
print str(@eidos)


END


17. Καταστάσεις (States)

Στον πίνακα των καταστάσεων αναφέρονται οι διαφορές καταστάσεις, οι
οποίες ισχύουν από την δημιουργία μιας αίτησης, μέχρι την ολοκλήρωση
της ή την απόρριψη της. Οι καταστάσεις του πίνακα είναι οι ακόλουθες:
• 0 Προς έγκριση
• 1 Προς παραγγελία
• 2 Απόρριψη αίτησης
• 3 Εξέλιξη παραγγελίας
• 4 Ολοκλήρωση παραγγελίας

Στην εφαρμογή δεν παρουσιάζονται πουθενά οι αριθμητικές τιμές παρά
μονό οι αλφαβητικές. Ο πίνακας περιέχει το πεδιο state_id το οποιο είναι το
κύριο κλειδί του πίνακα και συμβολίζει την κατάσταση της παραγγελίας και
το πεδίο state το οποιο περιέχει την κατάσταση της αίτησης. Ο κώδικας
δημιουργίας του πίνακα είναι:


USE [prom]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[STATES](
[STATE_ID] [tinyint] NOT NULL,
[STATE] [varchar](50) COLLATE Greek_CI_AS NOT NULL,
CONSTRAINT [PK_STATES] PRIMARY KEY CLUSTERED
(
[STATE_ID] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

59

GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[STATES] WITH CHECK ADD CONSTRAINT
[FK_STATES_STATES] FOREIGN KEY([STATE_ID])
REFERENCES [dbo].[STATES] ([STATE_ID])
GO
ALTER TABLE [dbo].[STATES] CHECK CONSTRAINT [FK_STATES_STATES]


1.2 Οι όψεις της βάσης (Views)

Όπως αναφέραμε και παραπάνω, όψη ονομάζεται η εικονική (όχι
πραγματική) συλλογή εγγραφών, που παρουσιάζονται σαν να ανήκουν σε
πίνακα, πλην όμως ο τελευταίος δε συμπεριλαμβάνεται στο ιδεατό σχήμα
του DBMS. Αυτού του είδους η εικονική ομαδοποίηση εγγραφών προκύπτει
σαν αποτέλεσμα επεξεργασίας των δεδομένων που καταχωρούν πίνακες του
ιδεατού σχήματος, συμφωνά με την δήλωση της αντίστοιχης όψης. Άρα, η
όψη είναι ένας πίνακας ο οποίος δεν καταχωρείται στην βάση, αλλά οι
γραμμές του υπολογίζονται κάθε φορά που μια όψη καλείται.
Στη βάση των προμηθειών υπάρχει μια όψη η οποία ονομάζεται έξοδα
των καταστημάτων (deps_eksoda) και η οποία υπολογίζει το σύνολο των
χρημάτων που δαπανηθήκαν σε καθένα κατάστημα του οργανισμού. Ο SQL
κώδικας της όψης είναι:






SELECT D.NAME, D.LOCATION, SUM(A.SUM) AS eksoda, D.DEP_ID,
D.CITY_ID
FROM dbo.EMPLOYEE AS E INNER JOIN
dbo.DEPARTMENT AS D ON E.DEP_ID = D.DEP_ID
INNER JOIN
dbo.APPLICATION AS A ON E.EMP_ID =
A.EMPLOYEE_ID
WHERE (A.STATE >= 3)
GROUP BY D.DEP_ID, D.NAME, D.LOCATION, D.CITY_ID

Όπου (state=3) αναφέρεται στις αιτήσεις οι οποίες έχουν γίνει ήδη
παραγγελίες, επομένως το ποσό έχει χρεωθεί κανονικά.
Επίσης, δημιουργήθηκε ακόμα μια όψη, η οποία ονομάζεται
(order_sum_emp) και παρουσιάζει το σύνολο των χρημάτων που έχει δώσει

60
ο κάθε υπεύθυνος παραγγελιών στον κάθε προμηθευτή. Ο SQL κώδικας
αυτής της όψης είναι:

SELECT TOP (100) PERCENT S.SUPPLIER_ID AS SUP_ID, S.EPONYMIA,
DAT.ID AS YPEFTH_ID, DAT.SURNAME + ' ' + DAT.NAME AS YPEFT_YPALL,
SUM(A.SUM) AS S_POSO, DEP.NAME AS DEPARTMENT,
C.NAME AS CITY, DEP.DEP_ID, C.CITY_ID
FROM dbo.SUPPLIER AS S INNER JOIN
dbo.ORDERS AS O ON S.SUPPLIER_ID =
O.SUPPLIER_ID INNER JOIN
dbo.Employee_Data AS DAT ON
O.EMPLOYEE_YPEFTHINOS_ID = DAT.ID INNER JOIN
dbo.APPLICATION AS A ON O.APPLICATION_ID =
A.APPLICATION_ID INNER JOIN
dbo.EMPLOYEE AS E ON DAT.ID = E.EMP_ID INNER
JOIN
dbo.DEPARTMENT AS DEP ON E.DEP_ID = DEP.DEP_ID
INNER JOIN
dbo.CITY AS C ON DEP.CITY_ID = C.CITY_ID
WHERE (A.STATE > 2)
GROUP BY S.SUPPLIER_ID, S.EPONYMIA, DAT.ID, DAT.SURNAME, DAT.NAME,
DEP.NAME, C.NAME, DEP.DEP_ID, C.CITY_ID
ORDER BY S_POSO DESC



1.3 Οι Συναρτήσεις της Βάσης (Functions)


Με τον όρο συναρτήσεις της βάσης εννοούμε τον κώδικα ο οποίος έχει
γραφτεί στο φάκελο programmability της βάσης και χρησιμοποιείται για να
εκτελέσει κάποιες λειτουργίες στην βάση και να επιστρέψει τα
αποτελέσματα. Αυτές οι συναρτήσεις παρόλα που είναι γραμμένες στην
βάση δεδομένων μπορούν να κληθούν από την εφαρμογή, η οποία
χρησιμοποιεί την βάση. Κατά την κλήση τους από την εφαρμογή, οι
συναρτήσεις εκτελούνται μέσα στην βάση και επιστρέφουν τα
αποτελέσματα στην εφαρμογή για να χρησιμοποιηθούν.
Μέσα στον φάκελο programmability υπάρχουν κάποιοι φάκελοι οι οποίοι
έχουν ήδη κάποιες αποθηκευμένες συναρτήσεις που μπορούν να
χρησιμοποιηθούν από την εφαρμογή ή από της συναρτήσεις, αλλά
μπορούμε να προσθέσουμε και εμείς κάποιες δικές μας συναρτήσεις. Εμείς
τοποθετήσαμε συναρτήσεις μέσα στο System Stored Procedures όπου
αποθηκεύονται διαδικασίες της βάσης, στον φάκελο Functions Table-
Valued Functions οπού αποθηκεύσαμε συναρτήσεις που έχουν σχέση με του
πίνακες της βάσης και στο φάκελο Functions Scalar-Valued Functions με

61
τους οποίους φορτώνουμε από την βάση στην εφαρμογή κάποια αριθμητικά
δεδομένα από κάποιους πίνακες. Το τι κάνουν και το πώς ακριβώς
δουλεύουν οι συναρτήσεις θα το δούμε παρακάτω.

1. Ανανέωση του προϋπολογισμού των υπαλλήλων και
προμηθευτών (update_budgets)

Αυτή η συνάρτηση βρίσκεται στο φάκελο System Stored Procedures και
πραγματοποιεί την παρακάτω διαδικασία. Όταν εκτελείται από τον
διαχειριστή της βάσης πηγαίνει σε κάθε υπάλληλο και του ανανεώνει το
διαθέσιμο ποσό του για παραγγελίες (remaining budget), ανάλογα με την
ιεραρχία του (rating) από τον πίνακα Employee budget. Ακόμα, αυτή η
συνάρτηση, πηγαίνει και ανανεώνει το ποσό των προμηθευτών, κάνοντας το
υπόλοιπο ποσό ίσο με μέγεθος της πίστωσης. Ο κώδικας της συνάρτησης
είναι:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[update_budgets]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

UPDATE [dbo].[EMPLOYEE]
SET [remaining_money] = (SELECT max_budget from Employee_budget
where EMPLOYEE.RATING = EMPLOYEE_BUDGET.RATING)

UPDATE [dbo].[SUPPLIER]
SET [REMAINING_BUDGET] = [MAX_BUDGET]

END

2. Εμφάνιση αιτήσεων (get_application)

Οι συναρτήσεις που θα ακολουθήσουν βρίσκονται στο φάκελο Functions
Table-Valued Functions. Αυτή η συνάρτηση παίρνει δύο μεταβλητές από
την εφαρμογή κατά την εκτέλεσή της. Αυτές οι μεταβλητές είναι ο κωδικός
του υπαλλήλου και η κατάσταση της παραγγελίας. Τα δεδομένα τα οποία
παρουσιάζει έχουν σχέση με την αίτηση που έκανε και την κατάστασή τους.
Το αποτέλεσμα φαίνεται στην εφαρμογή, στο ΝΕΑ ΠΡΟΜΗΘΕΙΑ ΟΙ
ΑΙΤΗΣΕΙΣ ΜΟΥ, έτσι όταν επιλέξουμε το drop down menu εμφανίζονται

62
οι αιτήσεις του υπαλλήλου ανάλογα με την κατάστασή τους. Ο κώδικας της
συνάρτησης είναι:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[get_application]
(
-- Add the parameters for the function here
@state int,
@emp int
)
RETURNS TABLE
AS
RETURN
(
-- Add the SELECT statement with parameter references here
SELECT dbo.APPLICATION.APPLICATION_ID,
dbo.KATHGORIA_EIDOUS.NAME AS KATHGORIA, dbo.EIDOS.SHORT_DESCRIPTION,
dbo.APPLICATION.QUANTITY, dbo.EIDOS.COUNT_UNIT, dbo.STATES.STATE,
dbo.APPLICATION.POST_TIME, dbo.APPLICATION.SUM
FROM dbo.APPLICATION INNER JOIN
dbo.EIDOS ON dbo.APPLICATION.EIDOS_ID =
dbo.EIDOS.EIDOS_ID INNER JOIN
dbo.KATHGORIA_EIDOUS ON dbo.EIDOS.KATHGORIA_ID =
dbo.KATHGORIA_EIDOUS.KATHGORIA_ID INNER JOIN
dbo.STATES ON dbo.APPLICATION.STATE =
dbo.STATES.STATE_ID
where
dbo.APPLICATION.STATE = @state and
dbo.APPLICATION.EMPLOYEE_ID = @emp

)


3. Αιτήσεις προς παραγγελία (get_application_to_order)

Τα αποτελέσματα αυτής της συνάρτησης που χρησιμοποιείται από την
εφαρμογή εμφανίζονται στο ΠΡΟΜΗΘΕΙΕΣ ΠΑΡΑΓΓΕΛΙΕΣ
ΑΙΤΗΣΕΙΣ. Κάθε φορά που ανοίγει αυτή η καρτέλα φορτώνονται από τον
πίνακα application της βάσης δεδομένων οι αιτήσεις με κατάσταση ένα (1),
οι οποίες είναι έτοιμες προς παραγγελία. Ο κώδικας της συνάρτησης αυτής
είναι:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[get_application_to_order]
(
-- Add the parameters for the function here
@application_state int –- katastasi aitisis

63

)
RETURNS TABLE
AS
RETURN
(
-- Add the SELECT statement with parameter references here

select
A.APPLICATION_ID,E.SHORT_DESCRIPTION,A.QUANTITY,E.COUNT_UNIT,A.MEMO,ED.
SURNAME,A.EMPLOYEE_ID,S.STATE,E.EIDOS_ID from application A, eidos E,
employee_data ED ,STATES S where
A.STATE = S.STATE_ID and
A.EMPLOYEE_ID = ED.ID and
A.EIDOS_ID = E.EIDOS_ID
and A.state = @application_state
)




4. Ποιοι έχουν εγκρίνει την αίτηση (get_approvalsby_application)

Η παραπάνω συνάρτηση της βάσης αφορά όσους έχουν εγκρίνει την
αίτηση πριν αυτή φθάσει σε εμάς. Όταν κάποιος υπάλληλος κάνει μια
αίτηση η οποία υπερβαίνει το ποσό που μπορεί να εγκρίνει ο ίδιος, τότε
αυτή προωθείται στον προϊστάμενο και αν χρειάζεται περαιτέρω έγκριση
τότε πάει παραπάνω. Όταν φθάνει σε κάποιον που πρέπει να εγκρίνει μια
αίτηση τότε αυτός μπορεί να δει ποιοι την ενέκριναν προηγουμένως. Εάν
πάμε στην εφαρμογή και επιλέξουμε ΝΕΑ ΠΡΟΜΗΘΕΙΑ ΑΙΤΗΣΕΙΣ
ΓΙΑ ΕΓΚΡΙΣΗ και κάνουμε δεξί κλικ πάνω στην αίτηση και επιλέξουμε
εγκρίσεις τότε ανοίγει μια φόρμα, τρέχει η παραπάνω συνάρτηση και
εμφανίζονται αυτοί που την έχουν εγκρίνει. Η συνάρτηση αυτή παίρνει μια
παράμετρο η οποία είναι ο κωδικός της αίτησης. Ο κώδικας είναι:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[get_approvals_by_application]
(
-- Add the parameters for the function here
@appl_id int
)
RETURNS TABLE
AS
RETURN
(
-- Add the SELECT statement with parameter references here
select NAME,SURNAME,JOB_TITLE,APPROVAL_TIME,PHONE,eMAIL
from approves A,employee_data D

64
where A.emploee_Approves_id = D.id and
approval=1 and
application_id =@appl_id
)


5. Εμφάνιση του υπολοίπου (get_remaining_money)

Αυτή η συνάρτηση δείχνει στον υπάλληλο το διαθέσιμο υπόλοιπο του
λογαριασμού του (remaining money). Αυτή η συνάρτηση παίρνει ως
παράμετρο τον κωδικό του υπαλλήλου και ψάχνει στον πίνακα employee να
βρει το υπόλοιπο. Έτσι, ο υπάλληλος γνωρίζει πόσα χρήματα του
περισσεύουν. Ο κώδικας της είναι:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[get_remaining_money]
(
-- Add the parameters for the function here
@emp int
)
RETURNS TABLE
AS
RETURN
(
-- Add the SELECT statement with parameter references here
SELECT remaining_money from employee where emp_id =@emp
)




65
6. Εμφάνιση αιτήσεων για έγκριση
(get_subordinate_applications)

Αυτή η συνάρτηση παίρνει ως μεταβλητές την κατάσταση της αίτησης, η
οποία είναι μηδέν (0), και τον κωδικό του υπαλλήλου ο οποίος είναι
προϊστάμενος κάποιου και πρέπει να εγκρίνει την αίτηση κάποιου
υφισταμένου. Αυτό που κάνει η συνάρτηση είναι να κοιτάξει και να δει
ποιοι υφιστάμενοί του έχουν κάνει αίτηση και περιμένουν να εγκριθεί από
αυτόν. Όταν κάνει κάποιος κλικ στην αντίστοιχη καρτέλα τότε εκτελείται η
συνάρτηση και εμφανίζονται οι αιτήσεις για έγκριση. Ο κώδικας της
συνάρτησης είναι:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[get_subordinate_applications]
(
-- Add the parameters for the function here
@status int,
@supervisor int
)
RETURNS TABLE
AS
RETURN
(
-- Add the SELECT statement with parameter references here
SELECT dbo.APPLICATION.EMPLOYEE_ID,D.name,D.surname,
dbo.APPLICATION.APPLICATION_ID, dbo.KATHGORIA_EIDOUS.NAME AS KATHGORIA,
dbo.EIDOS.SHORT_DESCRIPTION, dbo.APPLICATION.QUANTITY,
dbo.EIDOS.COUNT_UNIT, dbo.STATES.STATE,
dbo.APPLICATION.POST_TIME, dbo.APPLICATION.SUM
FROM dbo.APPLICATION INNER JOIN
dbo.EIDOS ON dbo.APPLICATION.EIDOS_ID =
dbo.EIDOS.EIDOS_ID INNER JOIN
dbo.KATHGORIA_EIDOUS ON dbo.EIDOS.KATHGORIA_ID =
dbo.KATHGORIA_EIDOUS.KATHGORIA_ID INNER JOIN
dbo.STATES ON dbo.APPLICATION.STATE =
dbo.STATES.STATE_ID ,
dbo.employee_data D,
dbo.approves A
where


D.ID = dbo.APPLICATION.EMPLOYEE_ID
and dbo.APPLICATION.application_id =
A.application_id
and A.emploee_approves_id = @supervisor
and A.approval = @status


)

66
7. Εμφάνιση προμηθευτή από το είδος (get_supplier_by_eidos)

Κατά τη διαδικασία δημιουργίας μιας παραγγελίας εκτελούμε την
παραπάνω συνάρτηση η οποία παίρνει ως παράμετρο τον κωδικό του είδους
και επιστρέφει στην εφαρμογή τους προμηθευτές οι οποίοι προμηθεύουν
αυτό το είδος, ώστε ο υπεύθυνος προμηθειών να διαλέξει τον κατάλληλο
προμηθευτή για να αγοράσει το είδος. Ο κώδικάς της είναι:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO

ALTER FUNCTION [dbo].[get_supplier_by_eidos]
(
-- Add the parameters for the function here
@eidos int
)
RETURNS TABLE
AS
RETURN
(
-- Add the SELECT statement with parameter references here
select
S.sUPPLIER_ID,S.EPONYMIA,S.ADDRESS,E.SHORT_DESCRIPTION,E.EIDOS_ID,SU.PR
ICE,SU.LAST_UPDATED,S.AFM,S.PHONE,S.EMAIL,S.YPEFTHINOS_NAME,S.REMAINING
_bUDGET,C.NAME AS CITY,C.CITY_ID,C.NOMOS,R.REGION_NAME ,R.REGION_ID

from supplier S,city C,region R,SUPPLIES Su ,EIDOS E
where S.city_ID = c.cITY_ID AND C.REGION_ID=r.REGION_ID AND
S.SUPPLIER_ID = SU.SUPPLIER_ID AND
SU.EIDOS_ID = E.EIDOS_ID and E.eidos_id = @eidos
)



8. Οι παραγγελίες του προμηθευτή (MyOrders)

Η συνάρτηση αυτή παίρνει σαν παράμετρο τον κωδικό του υπαλλήλου
και μας εμφανίζει όλες της παραγγελίες οι οποίες βρίσκονται σε εξέλιξη από
αυτόν τον υπάλληλο, δηλαδή αυτές που έχουν κατάσταση τρία (3). Ο
κώδικας της συνάρτησης αυτής είναι:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[MyOrders]
(
-- Add the parameters for the function here
@empid int
)

67

RETURNS TABLE
AS
RETURN
(
-- Add the SELECT statement with parameter references here
SELECT ORDERS.ORDER_ID, ORDERS.TIME_CREATED,
ORDERS.TIME_FINISHED, ORDERS.EMPLOYEE_YPEFTHINOS_ID, SUPPLIER.EPONYMIA,
APPLICATION.QUANTITY, EIDOS.COUNT_UNIT,
APPLICATION.STATE, APPLICATION.POST_TIME, EIDOS.SHORT_DESCRIPTION,
SUPPLIES.PRICE
FROM ORDERS INNER JOIN
SUPPLIER ON ORDERS.SUPPLIER_ID =
SUPPLIER.SUPPLIER_ID INNER JOIN
APPLICATION ON ORDERS.APPLICATION_ID =
APPLICATION.APPLICATION_ID INNER JOIN
EIDOS ON APPLICATION.EIDOS_ID = EIDOS.EIDOS_ID
INNER JOIN
SUPPLIES ON SUPPLIER.SUPPLIER_ID =
SUPPLIES.SUPPLIER_ID AND EIDOS.EIDOS_ID = SUPPLIES.EIDOS_ID
WHERE (ORDERS.EMPLOYEE_YPEFTHINOS_ID = @empid)
)



9. Αναφορές των παραγγελιών του υπαλλήλου
(report_emp_orders)

Η συνάρτηση αυτή παίρνει σαν παράμετρο τον κωδικό του υπαλλήλου
και εμφανίζει τα στοιχεία των παραγγελιών που έχουν δημιουργηθεί από
αυτόν.

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[report_emp_orders]
(
-- Add the parameters for the function here
@employee int
)
RETURNS TABLE
AS
RETURN
(
-- Add the SELECT statement with parameter references here
SELECT O.ORDER_ID, O.TIME_CREATED, O.TIME_FINISHED, A.EMPLOYEE_ID,
S.EPONYMIA,A.QUANTITY, E.COUNT_UNIT, A.STATE, A.POST_TIME,
E.SHORT_DESCRIPTION, SUP.PRICE
FROM ORDERS O,SUPPLIER S, APPLICATION A,EIDOS E,SUPPLIES SUP
WHERE
A.APPLICATION_ID =O.APPLICATION_ID AND
A.EIDOS_ID = E.EIDOS_ID AND
S.SUPPLIER_ID = SUP.SUPPLIER_ID AND

68
S.SUPPLIER_ID = O.SUPPLIER_ID AND
SUP.EIDOS_ID = E.EIDOS_ID AND
A.STATE>=3 AND
A.EMPLOYEE_ID = @employee

)


10. Αναφορές παραγγελιών όλων των υπαλλήλων ενός τμήματος
(report_emps_by_dep)

Στη συνάρτηση αυτή, υπάρχει μια μεταβλητή η οποία παίρνει τον κωδικό
του τμήματος και εμφανίζει το συνολικό ποσό που ξόδεψε ο κάθε
υπάλληλος σε παραγγελίες που πραγματοποίησε. Ο κώδικας της παρακάτω
συνάρτησης είναι:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[report_emps_by_dep]
(
-- Add the parameters for the function here
@_dep_id int
)
RETURNS TABLE
AS
RETURN
(
-- Add the SELECT statement with parameter references here

select D.id,D.NAME,D.SURNAME,SUM(A.SUM) AS SYNOLO
,D.ADDRESS,D.PHONE,D.FAX,D.JOB_TITLE,D.EMAIL
from employee E,Employee_data D ,Application A
where
A.employee_id=E.emp_id and
D.id = E.emp_id and E.DEP_ID = @_dep_id
group by
D.id,D.NAME,D.SURNAME,D.ADDRESS,D.PHONE,D.FAX,D.JOB_TITLE,D.EMAIL
)





69
11. Μέση τιμή προϊόντων (get_avg_price)

Οι επόμενες συναρτήσεις περιέχονται στον φάκελο Functions Scalar-
Valued Functions και επιστρέφουν στην εφαρμογή κάποιο αριθμητικό
αποτέλεσμα. Η συγκεκριμένη συνάρτηση παίρνει ως μεταβλητή τον κωδικό
του είδους από την εφαρμογή και επιστρέφει στην εφαρμογή τη μέση τιμή
του προϊόντος από τους προμηθευτές, ώστε να χρησιμοποιηθεί η τιμή αυτή
κατά τη δημιουργία μιας αίτησης. Ο κώδικάς της είναι:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[get_avg_price]
(
-- Add the parameters for the function here
@eidos_id int
)
RETURNS real
AS
BEGIN
-- Declare the return variable here
DECLARE @Result real

-- Add the T-SQL statements to compute the return value here
--SELECT @Result = @eidos
SELECT @Result = (SELECT SUGESTED_PRICE FROM [dbo].EIDOS WHERE
EIDOS_ID = @eidos_id)
-- Return the result of the function
RETURN @Result


END



12. Σύνολο χρημάτων που ξόδεψε ο υπάλληλος (get_emp_spent)


Αυτή η συνάρτηση όταν εκτελείται μας δείχνει το σύνολο των χρημάτων
που έχει ξοδέψει ένας υπάλληλος από αιτήσεις που έχουν γίνει παραγγελίες.
Η συνάρτηση αυτή παίρνει ως παράμετρο τον κωδικό της αίτησης και
επιστρέφει το συνολικό ποσό, των αιτήσεων που εγκρίθηκαν, του
υπαλλήλου στον οποιο ανήκει η αίτηση. Ο κώδικάς της είναι:





70
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[get_emp_spent]
(
-- Add the parameters for the function here
@appl_id int
)
RETURNS decimal
AS
BEGIN
-- Declare the return variable here
DECLARE @spent decimal

-- Add the T-SQL statements to compute the return value here
SELECT @spent =(select SUM(A.[SUM]) from orders O,application A
where O.application_id = A.application_id and A.employee_id= (select
Ap1.employee_id from application Ap1 where application_id =@appl_id))

-- Return the result of the function
RETURN @spent

END

























71
Κεφάλαιο 5



1. Εγχειρίδιο Χρήσης

Το εγχειρίδιο χρήσης αναφέρεται στον τρόπο εγκατάστασης της βάσης
δεδομένων στον server στον οποιο θα τρέχει, των προγραμμάτων που
χρειάζονται για να δουλέψει η εφαρμογή και φυσικά την εγκατάσταση της
εφαρμογής που αποτελεί το πληροφοριακό σύστημα παραγγελιών. Θα
παρουσιαστούν βήμα-βήμα όλες οι ενέργειες οι οποίες πρέπει γίνουν κατά
την εγκατάσταση των προγραμμάτων και των εφαρμογών, όπως επίσης και
το πώς αυτές χρησιμοποιούνται .


1.1 Περιγραφή Εφαρμογής με Διαγράμματα UML

Πριν γίνει οποιαδήποτε αναφορά σε θέματα εγκατάστασης και χρήσης
της εφαρμογής, θα πρέπει να εξεταστούν οι περιπτώσεις χρήσης και οι
λειτουργίες οι οποίες μπορούν να γίνουν από τον χρήστη. Αυτές
παρουσιάζονται από τα παρακάτω διαγράμματα UML. Τα διαγράμματα
αυτά βοηθούν στο να γίνει ευκολότερα αντιληπτό, το τι ακριβώς κάνει η
εφαρμογή, ποιες είναι περιπτώσεις χρήσης και τι διαδικασίες ακολουθούνται
κατά την χρησιμοποίηση της.
Στο διάγραμμα της
Εικόνα 1
, παρουσιάζονται οι περιπτώσεις χρήσης της
εφαρμογής από τους υπαλλήλους. Έτσι, ο απλός υπάλληλος μπορεί να κάνει
αιτήσεις για παραγγελίες και να αλλάζει τον κωδικό πρόσβασής του. Ο
διαχειριστής, είναι ο συντηρητής της βάσης δεδομένων. Ο προϊστάμενος
ενός τμήματος είναι αυτός που εγκρίνει ή απορρίπτει αιτήσεις και
ενημερώνεται με αναφορές των αιτήσεων που αφορούν το τμήμα του. Ο
υπεύθυνος παραγγελιών κάνει τις καταχωρήσεις των προμηθευτών και των
ειδών. Ακόμα, είναι υπεύθυνος για την δημιουργία μιας παραγγελίας και την
ολοκλήρωση της. Τέλος, ο υπεύθυνος προσωπικού είναι αυτός που
ασχολείται με θέματα προσωπικού.

72

Εικόνα 1- Διαδικασίες Χρήσης


Στην
Εικόνα 2
, παρουσιάζεται το διάγραμμα της εξέλιξης μιας αίτησης.
Μετά τη δημιουργία της αίτησης ελέγχεται το ποσό αγοράς σε σχέση με
το υπόλοιπο του λογαριασμού του υπαλλήλου. Αν αυτό είναι μικρότερο
από το υπόλοιπο τότε η αίτηση γίνεται αμέσως παραγγελία. Αν όχι, τότε
αυτή μεταβιβάζεται αυτόματα στον προϊστάμενο του υπαλλήλου για
έγκριση ή απόρριψη. Αν εγκριθεί, τότε ελέγχεται πάλι αν το ποσό της
αίτησης είναι μεγαλύτερο από το ποσό έγκρισης του προϊσταμένου, τότε

73
αυτή μεταφέρεται στον προϊστάμενο του υπαλλήλου για περαιτέρω
έγκριση. Αν όχι, τότε γίνεται παραγγελία.




Εικόνα 2-Εξέλιξη αίτησης


Στην
Εικόνα 3
, παρουσιάζεται η διαδικασία μιας παραγγελίας. Ο
υπεύθυνος προμηθειών όταν λάβει μια νέα παραγγελία, τότε επιλέγει από
ποιον προμηθευτή θα παραγγελθεί το προϊόν της αίτησης και μετά κάνει την
δημιουργία της παραγγελίας. Με την ολοκλήρωση της παραγγελίας,
ενημερώνει το σύστημα, για να περάσει ο υπάλληλος να πάρει το προϊόν
που ζήτησε.


74


Εικόνα 3-Διαδικασία Παραγγελίας


Τα παραπάνω διαγράμματα, ενημερώνουν τον χρήστη για τη χρήση της
εφαρμογής, του δείχνουν τις λειτουργίες τις οποίες μπορεί να
πραγματοποιήσει και τον βοηθούν να καταλάβει πως ακριβώς δουλεύει το
πληροφοριακό αυτό σύστημα.


1.2 Εγκατάσταση του Db1

Στο κείμενο που ακολουθεί, περιγράφεται η διαδικασία εγκατάστασης
της βάσης και κάποιων εφαρμογών οι οποίες χρειάζονται για την
εγκατάσταση της βάσης και την λειτουργία του κυρίως προγράμματος των
παραγγελιών. Η εγκατάσταση αυτή αφορά υπολογιστή, ο οποίος τρέχει το
λειτουργικό σύστημα των Windows XP. Αυτό γίνεται διότι η εφαρμογή
αυτή χρησιμοποιεί ένα script το οποίο ανοίγει μια συγκεκριμένη θύρα την
οποία θα χρησιμοποιήσει η εφαρμογή, στο firewall των Windows XP. Σε
υπολογιστές με διαφορετικό λειτουργικό σύστημα, πιθανότατα να μην
δουλέψει. Ξεκινώντας την εγκατάσταση της εφαρμογής, τρέχουμε από το
φάκελο Db1 το setup. Κατά την εκτέλεση του setup, ο installer κοιτά εάν
υπάρχουν εγκατεστημένα κάποια πράγματα στο σύστημά μας, τα οποία
χρειάζονται ώστε να γίνει η εγκατάσταση σωστά. Οι εφαρμογές, τις οποίες
ελέγχει ο installer είναι ο Windows Installer 3.1, ο SQL Server Express και
το .NET Framework 2. Αν κάποια από αυτές υπάρχει ήδη στο λειτουργικό

75
των Windows τότε την προσπερνά και πηγαίνει στην επόμενη, αν όχι τότε
γίνεται η εγκατάσταση. Αν κάνει εγκατάσταση τον SQL Server Express θα
ζητηθεί στο τέλος να γίνει επανεκκίνηση του server. Τότε επιλέγουμε
Start All Programs Microsoft SQL Server 2005 SQL Server
Configuration Manager όπου και θα ανοίξει ένα νέο παράθυρο όπως
φαίνεται και στην
Εικόνα 1
.



Εικόνα 1 – Επανεκκίνηση SQL Server

Μόλις, τελειώσει το setup των εφαρμογών που αναφέρθηκε παραπάνω,
ξεκινά αυτό του προγράμματος το οποιο θα υλοποιήσει την όλη τη βάση με
εντολές SQL. Εφόσον, τελειώσει και η εγκατάσταση αυτού του
προγράμματος, πηγαίνουμε στο μέρος του σκληρού όπου το εγκαταστήσαμε
και τρέχουμε το promDEPLOY.exe. Εμφανίζεται τότε το παρακάτω
παράθυρο της εφαρμογής.


76

Εικόνα 2 – Δημιουργία της Βάσης


Στην καρτέλα Δημιουργία αναφέρονται τα βασικά χαρακτηριστικά τα
οποία χρειάζεται η βάση για να δημιουργηθεί. Στο πεδίο όνομα βάσης
τοποθετούμε το όνομα που θέλουμε να έχει η βάση. Στο πεδιο IP βάσης
τοποθετούμε την IP που θα έχει ο server που θα χρησιμοποιούμε και οποίος
θα φιλοξενεί τη βάση που θα συνδέονται οι χρήστες. Το επίθεμα
SQLEXPRESS το αφήνουμε όπως είναι. Στο όνομα του administrator της
βάσης δίνουμε το όνομα που επιθυμούμε και τον κωδικό του. Το ίδιο γίνεται
και με το χρήστη της βάσης. Η διαφορά μεταξύ του administrator και του
χρήστη είναι στα δικαιώματα που έχουν στην βάση δεδομένων όταν
συνδέονται από την εφαρμογή των παραγγελιών. Ο administrator είναι ο
owner της βάσης, που σημαίνει ότι μπορεί να κάνει ότι θέλει πάνω στην
βάση, αντίθετα ο χρήστης έχει δικαιώματα read και write, που σημαίνει ότι
μπορεί μόνο να διαβάζει και να γραφεί στην βάση. Όταν ολοκληρωθούν όλα
τα παραπάνω πεδία, τότε επιλέγουμε τη Δημιουργία της βάσης και μόλις
τελειώσει η δημιουργία της βάσης μπορούμε να πατήσουμε το κουμπί
έλεγχος, για να δούμε αν γίνεται σωστά η σύνδεση με τη βάση δεδομένων.
Εφόσον, η σύνδεση είναι επιτυχής, περνάμε στην δεύτερη καρτέλα όπου
γίνεται η εισαγωγή του αρχικού τμήματος.


77

Εικόνα 3 – Εισαγωγή Αρχικού τμήματος.

Στην
Εικόνα 3
γίνεται η εισαγωγή του αρχικού τμήματος, όπου και θα
εισαχθούν οι πρώτοι υπάλληλοι της εταιρίας. Μόλις, πατήσουμε το ΟΚ
γίνεται η καταχώρηση του τμήματος και τότε περνάμε στην επόμενη
καρτέλα όπου γίνονται οι εγγραφές των διαβαθμίσεων και των ποσών που
μπορεί να διαθέσει κάποιος για να κάνει μια αίτηση ή να την εγκρίνει.



Εικόνα 4 – Διαβάθμιση και Ποσά

78
Όπως αναφέραμε και παραπάνω οι διαβαθμίσεις είναι επτά (1-7) και σε
κάθε διαβάθμιση συμπληρώνονται τα ποσά. Στη διαβάθμιση ένα (1) δεν
χρειάζεται να τοποθετηθεί ποσό έγκρισης, επειδή ο υπάλληλος με
διαβάθμιση ένα μπορεί να εγκρίνει οποιοδήποτε ποσό, αντίθετα στον
υπάλληλο με διαβάθμιση επτά (7) δεν χρειάζεται να τοποθετηθεί ποσό
έγκρισης διότι δεν πρόκειται να εγκρίνει ποτέ αίτηση. Κάθε φορά που
συμπληρώνονται τα πεδία επιλεγούμε ΟΚ και στο τέλος Συνέχεια για να
μεταβούμε στην επόμενη καρτέλα. Στις επόμενες καρτέλες συμπληρώνονται
τα στοιχεία του διευθύνοντα συμβούλου και του administrator τα οποία
είναι πρωταρχικής σημασίας, για να προστεθούν οι υπόλοιπες εγγραφές της
βάσης.
Με την ολοκλήρωση αυτών των διαδικασιών, οι οποίες γίνονται από τον
administrator, έχει δημιουργηθεί η βάση δεδομένων στο σύστημα με τις
αρχικές εγγραφές. Αυτός είναι ο δεύτερος τρόπος δημιουργίας της βάσης. Ο
πρώτος τρόπος παρουσιάστηκε στο κεφαλαίο 3 με την βοήθεια του SQL
Server Studio Management Express. Παρακάτω θα γίνει περιγραφή του
προγράμματος των παραγγελιών, το οποίο είναι ένα ξεχωριστό πρόγραμμα
από αυτό που ήδη περιγράψαμε.



1.3 Εγχειρίδιο Παραγγελιών Χρήστη


Σε αυτήν την ενότητα θα γίνει περιγραφή της λειτουργίας του
προγράμματος παραγγελιών. Εκτός από την υλοποίηση των αιτήσεων και
των παραγγελιών, μέσω του προγράμματος θα μπορούν να εκτελούνται και
άλλες λειτουργίες όπως είναι η καταχώρηση νέων υπαλλήλων και
προμηθευτών, αλλά και η εξαγωγή εκθέσεων (reports) για παραγγελίες που
έχουν πραγματοποιηθεί.
Ανοίγοντας το πρόγραμμα παραγγελιών, εμφανίζεται το αρχικό
παράθυρο που φαίνεται και στην
Εικόνα 1
. Όπως παρατηρούμε, στην
παρακάτω φόρμα υπάρχει ένα κουμπί ενεργοποιημένο το οποιο προτρέπει
τους χρήστες να κάνουν login στο πρόγραμμα. Πάνω στην μπάρα είναι
ενεργοποιημένα τα εξής πεδία:
• Το file μέσω του οποίου μπορεί να κάνει κάποιος login ή logout
από το πρόγραμμα, όπως επίσης και η εντολή έξοδος η οποία
κλείνει το πρόγραμμα.

79
• Το edit το οποιο περιλαμβάνει βασικές λειτουργίες όπως το cut,
copy, paste.


Εικόνα 1 –Αρχικό Παράθυρο Παραγγελιών

• Η επιλογή database περιλαμβάνει τις ρυθμίσεις για την σύνδεση
του προγράμματος με την βάση, όπως φαίνεται και στην
Εικόνα 2
.
Στο πεδίο dataset γίνεται εισαγωγή της IP του ονόματος του Sql
Server και της πόρτας στην οποία ακούει. Στα υπόλοιπα πεδία
συμπληρώνονται το όνομα της βάσης που θα συνδεθούμε, το
όνομα του χρήστη και ο κωδικός του. Έπειτα γίνεται το Test για
να φανεί αν η σύνδεση είναι επιτυχής ή όχι. Αν όλα πάνε καλά
επιλεγούμε το ΟΚ.
• Το πεδίο user το οποιο είναι κλειδωμένο μέχρι κάποιος χρήστης
να κάνει login στο πρόγραμμα. Τότε το πεδίο ξεκλειδώνει και έχει
μια επιλογή με την οποία ο χρήστης μπορεί να άλλαξε το κωδικό
του.
• Το πεδιο Admin το οποιο είναι και αυτό κλειδωμένο όταν ανοίγει
η εφαρμογή, ενεργοποιείται μονό αν κάποιος χρήστης που κάνει
login έχει δικαιώματα διαχειριστή. Το πεδίο Admin έχει τρεις
επιλογές. Για να χρησιμοποιηθούν αυτές οι εντολές στο πεδίο
dataset στις ρυθμίσεις που θα τοποθετηθούν θα πρέπει ο χρήστης
να είναι ο admin ώστε να είναι και owner της βάσης, διαφορετικά

80
όταν θα πάει να εκτελέσει κάποιες εντολές, τότε θα του
εμφανιστούν μηνύματα λάθους διότι δεν θα έχει τα κατάλληλα
δικαιώματα στην βάση. Η πρώτη επιλογή είναι το Run SQL
Commands, οπού ανοίγει ένα παράθυρο στο οποιο μπορούν να
εκτελεστούν εντολές SQL κατευθείαν στην βάση. Στην επιλογή
Backup Database γίνεται αντίγραφο της βάσης στην εικονική
συσκευή, η οποία δημιουργήθηκε στο SQL Server Studio
Management Express (βλέπε κεφαλαίο 3). Για να γίνει η
αποθήκευση θα πρέπει να έχει ήδη να αποθηκευτεί μια φορά εκεί
η βάση για να μπορεί να την βρει το πρόγραμμα. Η τρίτη επιλογή
αναφέρεται στο επαναφορά της βάσης (Restore Database).
Επιλέγοντας αυτό εμφανίζεται ένας πίνακας με τις αποθηκευμένες
βάσεις οι οποίες υπάρχουν στην εικονική συσκευή του SQL
Server Studio Management Express και επιλέγετε ποια θα
ανακτηθεί από τις υπάρχουσες.
• Τέλος το πεδίο Help οπού εμφανίζεται το εγχειρίδιο χρήσης του
προγράμματος.



Εικόνα 2 – Ρυθμίσεις Σύνδεσης στη Βάση

Όταν επιλεγεί το κουμπί της εισόδου εμφανίζονται δυο πεδία στα
οποία ο χρήστης πρέπει να εισάγει το username και το password ώστε να
γίνει η εισαγωγή του στο πρόγραμμα. Μετά από μια επιτυχή είσοδο στο
πρόγραμμα, εμφανίζεται στην οθόνη η παρακάτω φόρμα της εφαρμογής,
όπως δείχνει και η
Εικόνα 3
.

81



Εικόνα 3- Κυρία Φόρμα Εισαγωγής

Στην παραπάνω εικόνα εμφανίζονται όλα τα κουμπιά ενεργοποιημένα.
Αυτό συμβαίνει διότι ο χρήστης ο οποίος συνδέθηκε στην εφαρμογή είναι ο
administrator. Ανάλογα με τον ρόλο του χρήστη που έχει εισέλθει στην
εφαρμογή ενεργοποιούνται και τα παραπάνω κουμπιά. Ο υπεύθυνος
προμηθειών έχει ενεργοποιημένα το πρώτο, το δεύτερο και το πέμπτο
κουμπί. Ο υπεύθυνος προσωπικού έχει το πρώτο, το δεύτερο και τέταρτο
κουμπί, ενώ ένας απλός χρήστης έχει ενεργοποιημένα το πρώτο και το
δεύτερο. Το τρίτο κουμπί περιέχει τις αναφορές και ενεργοποιείται
αυτόματα σε όλους τους χρήστες που έχουν διαβάθμιση μεγαλύτερη του
επτά (<7). Αυτό γίνεται για να μπορούν ορισμένοι υπάλληλοι να κάνουν
έλεγχο στους υφισταμένους τους. Πάνω από το κουμπί της εξόδου
εμφανίζονται τα στοιχεία του χρήστη ο οποίος εισήλθε στην εφαρμογή.
Αφού ο χρήστης εισέλθει στην βάση τότε ενεργοποιούνται κάποια
κουμπιά ανάλογα με το ρόλο του. Το κουμπί ΝΕΑ ΠΡΟΜΗΘΕΙΑ,
αναφέρεται στις αιτήσεις τις οποίες μπορεί να υποβάλει, να εγκρίνει και να
δει σε ποια κατάσταση βρίσκονται. Στην
Εικόνα 4
ο υπάλληλος μπορεί να
δει σε ποια κατάσταση βρίσκονται οι αιτήσεις του. Επιλέγοντας από το drop
down μενού την κατάσταση, βλέπει και τις αιτήσεις του που αντιστοιχούν
στην κατάσταση αυτή.

82



Εικόνα 4- Κατάσταση Αίτησης




Εικόνα 5- Δημιουργία Αίτησης

83
Στην
Εικόνα 5
φαίνεται η καρτέλα Νέα Αίτηση, όπου ο χρήστης μπορεί
να δημιουργήσει μια καινούργια αίτηση. Στην καρτέλα αυτή πάνω-πάνω
παρουσιάζεται το υπόλοιπο του χρήστη, βάσει του οποίου μπορεί να
εγκρίνει από μόνος του μια αίτηση. Αν το ποσό της αίτησης είναι
μεγαλύτερο από το υπόλοιπο τότε η αίτηση πρέπει να εγκριθεί από τον
υπάλληλο που είναι προϊστάμενός του. Εφόσον γίνει η επιλογή του είδους,
τότε πατάμε το ΟΚ για να δημιουργηθεί η αίτηση. Αν θέλουμε να δούμε τη
συνολική τιμή της αίτησης πριν την δημιουργήσουμε, πατάμε το αντίστοιχο
κουμπί.



Εικόνα 6- Αιτήσεις Προς Έγκριση

Στην
Εικόνα 6
παρουσιάζεται η καρτέλα Αιτήσεις Προς Έγκριση, οπού
κάποιος υπάλληλος που έχει υφισταμένους μπορεί κάνοντας δεξί κλικ πάνω
σε μια αίτηση, να εγκρίνει ή να απορρίψει την αίτηση που έχει προωθηθεί
σε αυτόν. Ακόμα, μπορεί να επιλέξει να δει ποιοι το έχουν εγκρίνει πριν από
αυτόν, με την επιλογή εγκρίσεις.
Το επόμενο κουμπί αναφέρεται στην ΠΡΟΒΟΛΗ ΠΡΟΜΗΘΕΙΩΝ.
Όπως γίνεται αντιληπτό τα παρακάτω αναφέρονται σε αναφορές
παραγγελιών, οι οποίες δείχνουν το τι έχουν ξοδέψει οι υπάλληλοι και τα
τμήματα, αλλά και τις συναλλαγές με τους προμηθευτές. Κάνοντας κλικ στο
παραπάνω κουμπί εμφανίζονται δίπλα δυο νέα κουμπιά, τα οποία

84
αναφέρονται στα έξοδα των τμημάτων και στο σύνολο προμηθειών. Στο
πεδίο αυτό έχουν πρόσβαση μόνο αυτοί που είναι προϊστάμενοι κάποιων
υπαλλήλων.



Εικόνα 7- Έξοδα Τμημάτων

Όπως φαίνεται και στην
Εικόνα 7
, κάνοντας κλικ στο κουμπί με τα έξοδα
τμήματος, παρουσιάζεται ένα παράθυρο στο οποιο υπάρχουν όλα τα
τμήματα που έχουν διεκπεραιώσει παραγγελίες με το αντίστοιχο συνολικό
ποσό που έχουν ξοδέψει. Πάνω υπάρχει ένα drop down μενού, στο οποιο
επιλέγουμε την πόλη και εμφανίζονται τότε τα καταστήματα μόνον αυτής
της πόλης. Κάτω παρουσιάζεται το συνολικό ποσό που έχουν ξοδέψει όλα
τα καταστήματα. Κάνοντας τώρα διπλό κλικ σε κάποιο από τα καταστήματα
που εμφανίζονται στην παραπάνω εικόνα, τότε εμφανίζεται ένα νέο
παράθυρο, βλέπε
Εικόνα 8
, στο οποιο εμφανίζονται όλοι οι υπάλληλοι του
τμήματος, μαζί με το συνολικό ποσό αγορών που έχουν κάνει. Κάνοντας
πάλι διπλό κλικ σε κάποιον υπάλληλο, εμφανίζεται ένα καινούργιο
παράθυρο, όπως φαίνεται και στην
Εικόνα 9
, το οποιο δείχνει αναλυτικά
όλες τις παραγγελίες που έχει κάνει ο συγκεκριμένος υπάλληλος. Κάνοντας
ακόμα μια φορά διπλό κλικ πάνω στην παραγγελία του χρήστη, εμφανίζεται
ένα παράθυρο με όλους αυτούς που έχουν εγκρίνει την αίτηση. Αυτές είναι
οι αναφορές που αφορούν τα τμήματα και τους υπαλλήλους τους.

85


Εικόνα 8- Συνολικά Έξοδα ανά Υπάλληλο





Εικόνα 9- Αναλυτικά οι Παραγγελίες του Υπαλλήλου


Πατώντας τώρα το κουμπί σύνολα προμηθειών, εμφανίζεται στην
πρόγραμμα η
Εικόνα 10
, η οποία δείχνει τα συνολικά ποσά που έχουν
διατεθεί για την ολοκλήρωση παραγγελιών από τους υπευθύνους
προμηθειών του κάθε τμήματος προς τους προμηθευτές. Ακόμα, δίνεται η
ευκαιρία με τα δυο drop down μενού που υπάρχουν πάνω, να εμφανιστούν
τα αποτελέσματα για κάθε πόλη και τμήμα.


86


Εικόνα 10- Αγορές Υπευθύνου Προμηθειών από Προμηθευτές




Εικόνα 11- Αναλυτικά οι παραγγελίες προς προμηθευτές

Κάνοντας διπλό κλικ σε κάποια εγγραφή της
Εικόνα 10
, εμφανίζονται τα
στοιχειά της
Εικόνα 11
. Εδώ παρουσιάζονται αναλυτικά όλες οι παραγγελίες
που έγιναν από έναν συγκεκριμένο υπάλληλο προμηθειών προς τον

87
συγκεκριμένο προμηθευτή. Κάνοντας πάλι διπλό κλικ σε με εγγραφή της
Εικόνα 11,
εμφανίζονται ποιοι υπάλληλοι έχουν εγκρίνει αυτήν την αίτηση.
Το επόμενο κουμπί αναφέρεται στους ΥΠΑΛΛΗΛΟΥΣ. Επιλέγοντας το
συγκεκριμένο κουμπί, δίνεται η δυνατότητα της προσθήκης κάποιου
υπαλλήλου ή εμφάνισης όλων των υπαλλήλων που δουλεύουν στην
επιχείρηση ή στο συγκεκριμένο κατάστημα.



Εικόνα 12- Προσθήκη υπαλλήλου

Όπως φαίνεται και στην
Εικόνα 12
, το παράθυρο αυτό επικεντρώνεται
στην προσθήκη ενός καινούργιου υπαλλήλου. Κάνοντας διπλό κλικ στο
πεδιο τμήμα, εμφανίζεται ένα δέντρο με όλα τα καταστήματα που υπάρχουν,
για διαλέξουν σε ποιο κατάστημα θα τοποθετηθεί ο νέος υπάλληλος. Δίπλα
σημειώνεται αυτόματα και ο κωδικός του καταστήματος. Κάνοντας διπλό
κλικ στο πεδίο του προϊσταμένου εμφανίζεται ένας πίνακας με τους
υποψηφίους προϊσταμένους του υπαλλήλου. Στον κωδικό του υπαλλήλου
δεν χρειάζεται να τοποθετηθεί τίποτα διότι παίρνει αυτόματα τον κωδικό
από την βάση. Για την καταχώρηση επιλέγεται το ΟΚ και η εγγραφή
καταχωρείται στη βάση. Για να περαστεί κάποιος άλλος υπάλληλος, τότε
επιλέγεται το κουμπί ΝΕΟΣ, οπότε και καθαρίζει η φόρμα από τα στοιχεία
του προηγούμενου υπαλλήλου για να περαστούν αυτά του νέου.

88
Εάν επιλεγεί η προβολή τότε, όπως φαίνεται και στην
Εικόνα 13
,
παρουσιάζονται όλοι οι υπάλληλοι που είναι εγγεγραμμένοι στην βάση. Η
προβολή των υπαλλήλων μπορεί να γίνει και κατά κατάστημα, περιοχή και
πόλη. Ακόμα κάνοντας δεξί κλικ πάνω σε κάποιον υπάλληλο, μπορεί να
γίνει προβολή των εγγραφών με τα επιθυμητά χαρακτηριστικά ή μπορεί να
γίνει διόρθωση στα δεδομένα του υπαλλήλου.



Εικόνα 13- Προβολή Υπαλλήλου

Το τελευταίο κουμπί αναφέρεται στις ΠΡΟΜΗΘΕΙΕΣ. Εδώ, ο χρήστης
μπορεί να προσθέσει κάποιον προμηθευτή, να δει ποιοι προμηθευτές
υπάρχουν, να προσθέσει κάποιο είδος, να εκτελέσει μια παραγγελία, να δει
τα είδη που προωθεί η επιχείρηση, και να δηλώσει ποιο είδος προμηθεύεται
από ποιον προμηθευτή.
Στην
Εικόνα 14
, παρουσιάζεται η φόρμα όπου ο χρήστης μπορεί να
προσθέσει κάποιον προμηθευτή στη βάση. Στην επόμενη εικόνα ο χρήστης
μπορεί να κάνει προβολή τους προμηθευτές.
Το επόμενο κουμπί αναφέρεται στην προσθήκη είδους. Εδώ ο χρήστης
μπορεί να συμπληρώσει τα στοιχεία ενός είδους και να δημιουργήσει την
κατηγορία στην οποία ανήκει.

89


Εικόνα 14- Προσθήκη προμηθευτή




Εικόνα 15- Προβολή προμηθευτών



90


Εικόνα 16- Δημιουργία Παραγγελίας


Το επόμενο κουμπί αναφέρεται στις παραγγελίες. Όπως δείχνει και η
Εικόνα 16
, υπάρχει ένα παράθυρο με τέσσερις καρτέλες. Στην πρώτη
καρτέλα υπάρχουν οι αιτήσεις οι οποίες έχουν εγκριθεί και εδώ ο υπεύθυνος
προμηθειών διαλέγει ποια αίτηση θέλει να προωθήσει σε παραγγελία. Αφού
επιλέξει μία τότε πηγαίνει στην επόμενη καρτέλα που αναφέρεται στους
προμηθευτές και από εκεί επιλέγει τον προμηθευτή στον οποίο θα
αναθέσει
την παραγγελία. Έπειτα επιλέγει την καρτέλα της παραγγελίας, βλέπε
Εικόνα 17
, όπου βλέπει τα στοιχεία της παραγγελίας και επιλέγει αποδοχή.
Μόλις επιλέξει αποδοχή, τότε η παραγγελία γράφεται στην βάση και το
παράθυρο επιστρέφει πάλι στην πρώτη καρτέλα με τις αιτήσεις, ώστε ο
υπεύθυνος παραγγελιών να ολοκληρώσει και τις υπόλοιπες παραγγελίες. Η
τελευταία καρτέλα, αναφέρεται στις παραγγελίες που τελούν υπό εξέλιξη.
Σε αυτήν την καρτέλα φαίνονται όλες οι παραγγελίες που έχουν
δημιουργηθεί από τον κάθε υπάλληλο και δεν έχουν ολοκληρωθεί. Έτσι
μόλις ολοκληρωθεί μια παραγγελία ο υπεύθυνος προμηθειών πάει στην
καρτέλα αυτή και κάνοντας διπλό κλικ πάνω σε μια παραγγελία εμφανίζεται
ένα μήνυμα για το αν έχει ολοκληρωθεί η παραγγελία. Το κουμπί που
αναφέρεται στην προβολή των ειδών, παρουσιάζει τα είδη που έχει
καταχωρημένα η επιχείρηση στη βάση της.

91


Εικόνα 17- Ολοκλήρωση Παραγγελίας



Εικόνα 18- Σύμβαση



92
Τέλος, το κουμπί σύμβαση ανοίγει το παράθυρο που φαίνεται στην
Εικόνα 18
. Σε αυτό εδώ το παράθυρο ο υπεύθυνος προμηθειών επιλέγει πιο
προϊόν προμηθεύει κάποιος προμηθευτής και σε ποια τιμή. Εδώ ο χρήστης
πατώντας το Enter στο πεδίο προμηθευτής, ανοίγει μια νέα φόρμα με τα
ονόματα των προμηθευτών, οπού ο χρήστης πάλι με την εντολή Enter
επιλεγεί τον προμηθευτή που θέλει, ο οποίος εμφανίζεται στο αντίστοιχο
πεδίο. Η ιδία διαδικασία ακολουθείται και με το είδος το οποιο πρέπει να
συμπληρωθεί στο αντίστοιχο πεδίο. Έπειτα, τοποθετείται η τιμή στην οποία
ο προμηθευτής προμηθεύει το είδος και μετά επιλέγεται το ΟΚ για να
περαστούν τα δεδομένα στην βάση.























93
Βιβλιογραφία




1) .NET Framework  Liberty,J. (2002), “Programming C# 2
nd

Edition”, O’ Reilly
2) Βάσεις Δεδομένων Ramakrishnan R., Gehrke J.(2002), “Συστήματα
Διαχείρησης Βάσεων Δεδομένων”, Εκδόσεις Τζιόλα
3) Διαγράμματα UML Fowler M., Scott K. (2001), “Εισαγωγή
στηνUML”, Εκδόσεις Κλειδάριθμος


Δικτυακοί Τόποι και Ιστιοσελίδες

1) http://msdn2.microsoft.com/en-us/default.aspx
2) http://www.codeproject.com
3) http://www.thescripts.com