Vous êtes sur la page 1sur 200

1.

Definition and Analysis


1.1 Definition – Nature of problem

1.1.1 Description of organization

This
 project
 is
 designed
 for
 solving
 the
 problems
 pertaining
 to
 Sales,
 Inventory
 and

Membership
 Management
 System
 of
 the
 “ATTIRE”
 Garment
 Store.
 The
 “ATTIRE”

Garment
Store
sells
Ladies
and
Gents
garments
which
included
Shirts,
Trousers,
Jeans

etc.
This
Store
was
like
many
other
such
family‐run
small
stores
selling
garments.


However,
the
shopping
style
and
preference
of
customers
in
Metro
cities
have

undergone
a
sea
change.
They
now
prefer
to
shop
in
a
Mall
or
Superstore
ambience.

They
 prefer
 to
 see
 all
 the
 varieties
 available
 and
 also
 try
 them
 out
 before
 deciding

what
they
want
to
buy.

OLD
ATTIRE:
Earlier
the
“ATTIRE”
Garment
Store
was
like
a
typical
garment
Store
in

India
 functioned
 and
 operated
 like
 a
 family
 owned
 small
 store.
 It
 is
 a
 Store
 on
 the

Ground
 Floor
 in
 a
 building
 on
 the
 Main
 Road
 of
 a
 prestigious
 residential
 and

commercial
area
and

is
not
located
in
a
Shopping
Mall.
They
had
a
window
display
in

which
they
displayed
the
garments
on
hangers,
was
not
air‐conditioned,
did
not
have

a
 trial
 room,
 did
 not
 have
 a
 store‐room,
 did
 not
 have
 a
 mannequin
 to
 display
 the

goods
and
was
not
computerized.
The
inside
of
the
store
had
counters
on
two
sides

running
 the
 length
 of
 the
 Store.
 Behind
 these
 counters,
 salesmen
 stood
 to
 attend
 to

the
 customers
 and
 behind
 the
 salesmen,
 the
 goods
 were
 kept
 inside
 glass
 door

cupboards.
 Since
 the
 garments
 were
 packed
 in
 boxes
 and
 not
 kept
 open,
 the

customers
could
not
see
the
garments
and
could
only
see
the
garments
displayed
in

the
 window.
 The
 owner
 of
 the
 store,
 usually
 sat
 at
 one
 end
 of
 the
 counter
 near
 the

entrance,
where
he
would
collect
the
payment
of
the
goods
from
the
customers.
The

owner
 and
 proprietor
of
the
 Store
was
Mr.
Kishore
Chedda.
However,
 since
 last
few

years,
his
son
Mr.
Amit
Chedda
took
over
the
responsibility
of
managing
of
the
store

and
brought
drastic
changes
in
the
store.

NEW
ATTIRE:
Mr.
Amit
Chedda
completely
renovated
the
store
and
changed
its
décor.

Mannequins
were
placed
on
the
display
window
as
well
as
inside
the
store
to
display

the
goods.
Two
trial
rooms
for
Ladies
and
Gents
were
made.
A
new
store
room
was

made
and
goods
were
stocked
in
it.
The
store
was
centrally
air‐conditioned
and
air‐
curtains
 were
 installed
 at
 the
 entrance
 to
 prevent
 the
 dust
 from
 entering
 the
 store.

The
garments
were
displayed
on
rotating
stands
placed
through
out
the
store
so
that

the
 customer
 could
 go
 through
 the
 available
 colors
 and
 designs
 and
 select
 the

garments
that
they
want,
try
it
out
in
the
trial
room
and
go
to
the
Check‐out/Payment

counter
and
pay
for
their
purchase.
Salesmen
assisted
the
customers,
when
required.

Computer
 has
 been
 placed
 at
 the
 check
 out
 counter
 and
 is
 currently
 being
 used
 for

Account
purpose.


1

Mr.
 Amit
 Chedda,
 son
 of
 the
 owner
 of
 the
 “ATTIRE”
 Garment
 Store,
 hereafter

called
the
“User”
had
informed
that
since
he
had
changed
the
entire
décor
and
system

of
the
Store,
he
also
wanted
to
change
the
method
in
which
Sales
and
Inventory
are

managed.
He
wanted
an
on‐the‐spot
record
of
the
stock
of
various
goods
that
he
had

in
 store
 at
 any
 given
 time.
 He
 was
 unable
 to
 get
 on‐the‐spot
 stock
 in
 his
 current

system.
 This
 project
 is
 thus
 designed
 keeping
 this
 requirement
 in
 mind.
 Mr.
 Amit

Chedda,
 son
 of
 the
 owner
 of
 the
 “ATTIRE”
 Garment
 Store
 has
 agreed
 to
 be
 the
 end‐
user
 of
 the
 system
 and
 the
 prototype
 designed.
 Attached
 hereto
 and
 marked
 as

“Annexure
1”
is
a
copy
of
the
letter
from
the
end‐user:
ATTIRE
Garment
Store
dated

18
/
07
/
2009.
(Annexure­1)


1.1.2 Methods currently in use






















The
 store
 currently
 maintains
 books
 like
 the
 Stock
 book,
 Sales
 Book
 and

Members
Book.
They
also
have
a
Bill
book,
which
is
filled
and
the
bill
is
given
to
the

customer.
First,
when
the
goods
arrive,
the
stock
is
entered
into
the
Stock
book
with

Product
 received
 and
 quantity
 of
 stock.
 When
 sales
 are
 made,
 the
 Stock
 book
 is

updated
by
reducing
the
stock.
Then
the
bill
is
made
for
the
customer
by
writing
the

items
onto
the
bill
and
calculating
the
total
amounts
like
Total,
VAT
and
Gross
Total

using
 the
 calculator.
 Then
 the
 total
 amount
 is
 also
 entered
 into
 the
 Sales
 Book
 for

recording
 the
 amount
 received
 from
 sales
 made.
 If
 the
 customer
 is
 a
 member,
 the

details
 are
 searched
 manually
 in
 the
 Members
 Book
 and
 discount
 is
 given
 to
 the

member
while
making
of
the
bill.


2
ANNEXTURE - 1

3
1.2 Investigation and Analysis

1.2.1 – Plan of Investigation

The
first
step
in
developing
any
Program
is
its
study
by
investigating
its
cause

and
finding
its
remedy.
Like
a
doctor
has
to
do
a
proper
diagnosis
of
a
patient
to
find

out
the
cause
of
the
illness
and
then
give
the
remedy,
in
a
similar
way,
investigating
of

the
problem
is
the
first
important
step
towards
finding
a
proper
solution
and
in
this

case,
 developing
 a
 useful
 Program.
 In
 this
 case,
 the
 problem
 faced
 by
 the
 User

required
 to
 be
 studied
 first.
 The
 problem
 to
 be
 solved
 had
 to
 be
 looked
 at
 from
 the

User’s
perspective.
The
aim
for
investigation,
therefore,
would
be
able
to
understand

and
analyze
and
then
attempt
to
solve
the
problem
from
the
User’s
perspective.


The
common
and
the
most
effective
methods
of
investigation
is



(i) observing
the
working
method
on
site


(ii) collecting
the
documentation


(iii) noting
the
types
of
data
input

(iv) method
of
data
input

(v) where
data
is
stored

(vi) noting
the
types
of
data
output

(vii) method
of
data
output

(viii) analyzing
the
problem
on‐site

(ix) exploring
methods
to
simplify
the
process.




For
investigation
in
this
case,
all
of
the
above
methods
shall
be
used.



(i) Observation
shall
been
done
at
the
Store
to
see
and
study
how
the
Sales

are
 made,
 right
 from
 the
 entry
 of
 the
 Customer
 into
 the
 Store
 to

payment
and
exit
–
This
will
give
a
fair
idea
of
how
the
Store
functions,

where
the
goods
are
kept,
where
computer
entry
is
made
etc.
This
will

enable
to
better
understand
the
requirement
of
the
User.

(ii) Documents
like
copy
of
Sales
Bill,
copy
of
Stock
Book
page,
copy
of
Sales

Register
 page,
 copy
 of
 Members
 Register
 page
 etc.
 shall
 be
 collected

from
 the
 User
 –
 This
 will
 help
 in
 understanding
 the
 data
 used
 and

required
by
the
User
and
the
Order
in
which
the
data
is
to
be
arranged.


4
(iii) types
of
data
input
shall
be
studied
‐
like
the
numeric
data
for
rates
and

quantity,
the
alphabetic
data
for
Members
names
and
addresses
and
the

alpha‐numeric
data
for
Product
Codes.
The
product
codes
shall
also
be

analyzed
and
its
construction
shall
be
studied
and
understood
so
as
to

have
better
co‐relation
in
Inventory
management.

(iv) method
of
data
input
shall
be
studied
i.e.
manual
–
This
shall
give
us
an

insight
 of
 the
 root
 cause
 of
 many
 of
 the
 problems
 viz.
 manual
 error
 in

calculation,
illegibility
of
records.

(v) How
and
where
the
data
is
stored
shall
be
noted
eg.
In
files,
Bill
Books,

etc.
 –
 This
 will
 enable
 to
 understand
 the
 frequency
 of
 reference
 of
 the

data.

(vi) types
 of
 data
 output
 shall
 be
 noted
 e.g.
 Numeric
 data
 for
 Sales
 figures

and
 Alpha
 numeric
 data
 for
 Product
 Code
 –
 This
 will
 help
 in

understanding
the
type
of
output
desired
by
the
User.

(vii) method
 of
 data
 output
 shall
 be
 noted
 e.g.
 Sales
 Bills.
 This
 will
 help
 in

understanding
the
form
in
which
the
output
is
desired
by
the
User.

(viii) analyzing
the
problem
on‐site
–
This
shall
be
done
from
our
perspective

and
try
to
analyze
the
root
cause
of
the
problem.

(ix) exploring
 methods
 to
 simplify
 the
 process
 –
 This
 again
 shall
 be
 done

from
the
User’s
as
well
as
our
perspective
to
ensure
that
the
data
flow

process
is
smooth
and
uninterrupted.


Since
the
Program
is
to
be
developed
for
the
User,
most
of
the
input
in
terms
of

data
required
to
be
input
and
data
output
required
shall
be
provided
by
the
User,
Mr.

Amit
Chedda.
However,
some
of
the
other
inputs
in
terms
of
the
Account
implication

of
 the
 Sales
 and
 Inventory
 shall
 be
 gathered
 from
 Mr.
 Bhatt,
 the
 Accountant
 of
 the

Store.
Further
information
of
input
for
Inventory
management
shall
be
taken
from
Mr.

Patil
 who
 looks
 after
 the
 Inventory
 and
 Stock
 of
 goods.
 The
 information
 from
 the

employee
 would
 help
 in
 eradicating
 the
 teething
 problems
 faced
 in
 the
 Current

System
as
well
as
enable
to
design
a
better
Program.



1.2.2 – Interviews

For
 the
 purpose
 of
 better
understanding
of
 the
requirements
of
the
User,
 the



User
 Mr.
 Amit
 Chedda
 was
 interviewed
 on
 20th
 July,
 2009
 at
 his
 Store.
 The
 excerpts

from
his
interview
are
as
follows
:


Interviewer
:
Please
explain
your
business
in
brief.


User
:
We
are
in
the
business
of
retail
sales.
At
“ATTIRE”,
we
sell
quality
garments
which

we
get
made
through
manufacturers
under
our
brand
name
“ATTIRE”.
We
sell
garments

for
 both
 Ladies
 and
 Gents.
 For
 Ladies,
 we
 stock
 garments
 like
 Skirts,
 Tops,
 Trousers,

Jeans,
Capris
and
even
Stockings.
For
Gentlemen,
we
stock
garments
like
Shirts,
T­Shirts,

Trousers,
Jeans,
Shorts
and
Jackets.

Interviewer
:
Please
explain
how
the
goods
are
Purchased.


5
User
 :
 We
 have
 suppliers
 who
 manufacture
 garments
 under
 our
 brand
 name
 “ATTIRE”.
 They

show
 us
 the
 fabrics,
 colors
 and
 designs
 for
 each
 type
 of
 product
 that
 we
 sell
 and
 we
 place
 the

order
with
them.
They
make
the
garments
and
store
it
with
them.
Because
of
paucity
of
space
in

our
 Store,
 we
 only
 call
 for
 quantity
 that
 we
 require.
 When
 we
 Order,
 which
 is
 usually
 done

verbally
and
on
the
phone.
Since
all
the
items
are
coded,
we
just
ask
them
to
send
a
particular

quantity
of
a
particular
item
by
code
so
there
is
no
mistake.


Interviewer
:
Please
explain
how
the
goods
are
Stocked.


User
 :
 After
 we
 receive
 the
 goods,
 we
 store
 the
 goods
 in
 our
 store
 room
 at
 the
 Store.
 Here,
 we

make
 entry
 in
 the
 Stock
 Book.
 We
 also
 affix
 the
 price
 sticker
 to
 each
 and
 every
 garment
 here.

Then
 three
 pieces
 of
 each
 garment
 in
 each
 color,
 size
 and
 design
 are
 carried
 to
 the
 rotating

stands
and
put
on
hanger
there.
Our
Mr.
Patil
who
looks
after
the
Stocks
will
explain
it
better
to

you.


Interviewer
:
Please
explain
how
the
goods
are
Sold.

User
:
We
extensively
advertise
our
products
in
Newspapers,
Hoardings
and
Leaflets
and
have
a

fair
 quantity
 of
 customers
 walking
 in.
 Since
 ours
 is
 an
 old
 establishment,
 established
 by
 my

father
in
1972,
we
also
have
a
fair
amount
of
regular
customers.
Earlier,
we
had
the
old
system

of
 sales
 where
 the
 salesman
 used
 to
 show
 the
 customers
 various
 items
 for
 the
 customers
 to

choose
 from.
 But
 recently,
 the
 trend
 has
 changed
 and
 the
 customers
 prefer
 to
 scan
 through

stands
and
hangers
and
choose
the
products
they
require.
Our
salesmen
are
close
at
hand
if
they

have
 any
 query
 or
 require
 any
 assistance.
 Once
 they
 make
 a
 choice,
 the
 customer
 picks
 the

clothes
 from
 the
 hanger
 and
 takes
 them
 for
 trial.
 If
 they
 like
 the
 clothes,
 they
 take
 it
 to
 the

Check­out
counter,
where
the
clothes
are
put
in
our
carry­bag
and
handed
over
to
the
customer.

Our
salesmen
also
help
the
customers
in
making
a
choice
in
terms
of
color
or
design,
size
or
fit.

We
 also
 have
 an
 out­of­the­store
 alteration
 department
 where
 we
 alter
 the
 garments
 to

customer’s
requirements
free­of­charge.


Interviewer
:
Please
explain
about
your
Membership
program.

User
 :
 As
 told
 you
 earlier,
 this
 store
 has
 been
 established
 in
 1972
 by
 my
 father
 Mr.
 Kishore

Chedda
and
has
been
in
existence
since
then.
Over
the
years,
we
have
had
many
customers
who

have
been
loyal
to
us
and
have
shopped
with
us
for
many
years.
In
order
to
give
an
advantage
to

the
 customers
 who
 are
 loyal
 to
 our
 store,
 we
 have
 recently
 started
 a
 Membership
 program.

Under
this
program,
any
customer
who
purchases
garments
from
our
store,
can
choose
to
enroll

as
 a
 member.
 The
 Membership
 is
 free­of­cost
 and
 one
 can
 become
 a
 member
 by
 making
 a

purchase
at
the
Store.
On
becoming
a
member,
the
customer
is
given
a
Membership
Card.
On
the

basis
of
this
Membership,
the
customer
can
get
a
10%
discount
on
all
purchases
from
our
store.

Also,
 we
 shall
 be
 organizing
 special
 promotions
 for
 Members.
 We
 shall
 also
 be
 sending
 them

mailers
and
e­mails
from
time
to
time
informing
them
about
the
latest
fashions
and
new
arrivals

at
our
store.


Interviewer
:
What
do
you
expect
from
the
Program?

User
:
First
and
foremost,
I
want
to
know
the
stock
of
each
product
at
any
given
time.
I
know
it
is

a
 cumbersome
 and
 time
 taking
 thing
 but
 that
 is
 my
 foremost
 requirement.
 Second
 important

requirement
 is
 maintaining
 of
 the
 Members
 data.
 As
 the
 Members
 are
 increasing
 drastically,
 I

find
 it
 time
 taking
 to
 maintain
 their
 data.
 Though
 Membership
 Program
 is
 a
 good
 idea,
 the

paperwork
and
time
involved
in
it
is
making
it
a
bother.
Together
with
increase
in
Membership,

it
is
vital
that
Members
enjoy
the
10%
discount
that
is
given
to
them
and
at
the
same
time
the

discount
is
not
misused
or
is
given
to
a
Non­member
by
mistake
as
is
done
at
times
at
our
store.

As
you
have
explained
to
me
that
you
will
be
able
to
connect
the
Sales
to
Inventory
and
give
me

stock
on
real­time
basis,
as
well
as
do
the
Members
data
management,
it
will
be
ideal
for
me.


6

For
the
purpose
of
better
understanding
of
the
Inventory
requirements
of
the

User,
 the
 Inventory
 in‐charge
 of
 “ATTIRE”,
 Mr.
 Patil
 was
 interviewed
 on
 22nd
 July,

2009
at
his
Store.
The
excerpts
from
his
interview
are
as
follows
:


Interviewer
:
Please
explain
in
detail
about
the
Inventory
system.

Patil
:
 We
 get
 our
 goods
 made
 by
 different
 manufacturers
 for
 us.
 They
 are
 made
 in
 our
 name

“ATTIRE”.
 My
 job
 is
 to
 keep
 a
 track
 of
 stocks
 in
 the
 store.
 We
 normally
 keep
 the
 stock
 of
 one

supplier
which
would
last
us
for
7
days.
However
it
depends
on
the
season.
If
there
are
festivals

or
 many
 public
 holidays,
 then
 the
 stock
 will
 get
 over
 in
 4­5
 days.
 But
 we
 also
 have
 10­12

suppliers
 who
 supply
 various
 types
 of
 products.
 So
 everyday,
 there
 is
 some
 stock
 or
 the
 other

arriving.
Our
Stock­Book
is
updated
daily
by
our
Accountant
Mr.
Bhatt.
But
there
are
so
many

items,
so
many
designs
and
colors
and
so
many
types
of
fabrics,
it
is
difficult
to
keep
track.
So
we

have
 a
 coding
 system.
 When
 the
 stock
 of
 a
 particular
 garment
 or
 color
 is
 about
 to
 exhaust,
 I

inform
the
boss,
who
places
the
Order
and
the
goods
arrive
the
next
day.


Interviewer
:
Who
has
the
Stock
Book?
Why
is
the
Stock
Book
with
the
Accountant
and

not
with
you
when
you
handle
the
Inventory?

Patil
:
I
have
lot
of
work
to
handle
and
do
not
have
time
to
do
the
paper
work.
Also,
the

Stock
 Book
 has
 to
 have
 input
 from
 the
 Sales
 figures
 everyday.
 The
 goods
 sold
 are

deducted
and
the
goods
which
arrive
are
added
to
the
stock.
I
check
the
receipt
of
the

goods
as
per
the
Suppliers
Bill,
which
mentions
the
products
received
with
their
codes.

The
Suppliers
Bill
accompanies
the
goods
received,
and
I
check
and
verify
the
quantity

received
along
with
its
codes,
and
pass
it
to
the
Accountant
for
entries.
The
Accountant

Mr.
Bhatt
updates
the
Stock
Book
on
the
basis
of
the
Suppliers
Bill
given
by
me.

Interviewer
:
Why
do
you
not
keep
more
stock
instead
of
daily
receipt?
What
else
do
you

do
in
Inventory?

Patil
:
There
is
shortage
of
place
so
we
do
not
keep
more
stocks.
Plus
there
are
so
many

varieties,
 it
 is
 difficult
 to
 maintain
 stock
 of
 all
 goods
 at
 all
 times,
 especially
 when
 the

customers
 are
 so
 unpredictable.
 When
 the
 goods
 arrive,
 I
 check
 the
 goods
 if
 they
 are

according
 to
 the
 Suppliers
 Bill
 sent
 with
 the
 goods.
 After
 verification,
 I
 give
 it
 to
 the

Accountant.
I
unpack
the
goods
and
check
it
for
any
flaw,
dirt
or
damage.
If
everything
is

OK,
I
put
the
price
tag
label/sticker
on
it
and
put
it
on
the
hanger.
Then
I
arrange
all
the

racks
in
the
store
according
to
colors,
patterns
and
sizes.
It
is
my
duty
to
see
that
there

are
3
pcs
of
each
type
of
item,
color
and
size
on
the
racks
at
any
time.
I
refill
the
racks
to

the
right
combination
and
quantity
at
regular
intervals
during
the
day.

Interviewer
:
Are

you
facing
any
problem
in
the
Inventory?
Your
boss
Mr.
Amit
says
that

he
wants
an
up­to­date
inventory
at
any
time
of
the
day
and
he
does
not
get
it.

Patil
 :
 He
 is
 right.
 It
 is
 impossible
 to
 keep
 track
 of
 every
 item
 arriving
 and
 leaving
 the

store
 at
 any
 time
 of
 the
 day.
 It
 is
 more
 so
 on
 rush
 days
 like
 weekends
 or
 during
 the

festival
or
holiday
season
when
there
are
too
many
customers.
Since
the
goods
arrive
in

the
 morning,
 and
 the
 Stock
 Book
 is
 updated
 only
 at
 Night
 after
 the
 store
 closes,
 he

cannot
 have
 the
 perfect
 stock
 till
 late
 night.
 By
 the
 time
 he
 knows
 the
 stock,
 next
 day

morning
 again
 the
goods
 arrive
 and
during
 the
 day
 there
are
 sales
so
again
 the
 Stock


7
Book
is
updated
at
Night
where
the
stock
which
came
in
is
added
and
stock
which
is
sold

during
the
day
is
subtracted
to
know
the
net
figure.
It
is
embarrassing
at
times
when
the

customer
asks
for
a
particular
size
in
a
product
and
the
Stock
Book
shows
it
in
stock
and

I
have
to
search
the
entire
store
room
only
to
find
that
it
is
sold
out
earlier
during
the

day.
It
is
also
time­taking
and
futile
exercise.
It
is
sad
that
we
have
this
situation
in
spite

of
having
coding
system
and
updating
Stock
Book
daily.

Interviewer
:
How
does
the
coding
system
work?

Patil
:
We
have
an
alpha­numeric
code
system
designed
by
Mr.
Amit
and
myself.
For
eg.

MTSM004
stands
for
a
Designer
T­shirt.
In
this
‘M’
stands
for
‘Male’,
‘TS’
stands
for
‘T­
shirt’,
 then
 ‘M’
 stands
 for
 size
 ‘Medium’
 and
 the
 last
 three
 numbers
 are
 for
 product

design
and
pattern.

Interviewer
:
What
do
you
need
in
the
Program?


Patil
 :
 That
 it
 should
 not
 be
 complicated
 and
 should
 be
 easy
 to
 use,
 operate
 and

understand.
It
should
give
the
stock
at
the
touch
of
the
button.



For
the
purpose
of
better
understanding
of
the
Accounting
system
of
the
User,

the
Accountant
of
“ATTIRE”,
Mr.
Bhatt
was
interviewed
on
23rd
July,
2009
at
his
Store.

The
excerpts
from
his
interview
are
as
follows
:


Interviewer
:
Please
explain
the
various
Accounts
and
Books
maintained
by
you.


Bhatt
 :
 For
 the
 goods
 that
 we
 Purchase
 from
 the
 supplier
 as
 well
 as
 for
 all
 our
 Purchase,
 we

maintain
 a
 Purchase
 Register.
 For
 all
 our
 Sales,
 we
 maintain
 a
 Sales
 Register.
 As
 per
 the
 Tax

laws,
we
are
required
to
maintain
Sales
Register
and
Purchase
Register
as
well
as
Sales
Return

Register
and
Purchase
Return
Register
and
also
to
file
a
Monthly
VAT
Return
for
the
same,
even

if
it
is
NIL
(zero).
All
our
Accounts
are
done
in
back
office
and
in
different
set
of
books.


Interviewer
:
What
do
you
want
to
include
in
the
Program.

Bhatt
:
Since
our
store
has
a
no
return
policy,
we
do
not
need
Sales
Return
details.
However,
we

do
have
exchange
policy.
That
is,
if
the
goods
sold
are
damaged
or
defective
or
customer
wants

to
change
a
size
or
color
etc.
we
do
permit
the
exchange.
Since
the
exchange
is
of
the
same
value

and
 in
 the
 same
 range
 of
 garments,
 Sales
 Return
 is
 not
 required.
 Primarily
 the
 Boss
 requires

inventory
on
real­time
basis,
so
we
want
only
those
details
on
computer
and
do
not
want
to
link

any
other
purchase
with
it
like
purchase
of
carry­bags
or
stationery
or
any
other
product.
The

Inventory
 should
 purely
 reflect
 the
 stock
 of
 goods
 dealt
 by
 us.
 Also,
 since
 preparing
 of
 manual

Sales
Bill
takes
time
as
well
as
there
are
chances
of
error
in
writing
of
rate
or
multiplying
or
in

giving
of
discount
or
in
calculation
of
VAT,
it
is
desirable
if
Sales
Bill
is
also
provided.


1.2.3 – Direct Observation



A
visit
to
the
“ATTIRE”
store
confirmed
what
has
been
informed
by
the
User
and
his

Staff.
 “ATTIRE”
 retails
 Ladies
 and
 Gents
 garments
 over
 the
 counter.
 Normally,
 a

customer
walks
into
the
Store
and
looks
at
the
garments
displayed.
If
they
require
any


8
information
or
assistance,
for
instance,
available
colors
of
a
garment
or
different
sizes

available,
they
are
helped
by
salesman
in
the
Store
who
answer
to
their
queries
and

also
fulfill
their
requirements
by
providing
them
with
the
proper
garment.
There
are

price
 tags
 attached
 to
 each
 garment.
 If
 the
 customer
 wants,
 they
 can
 try
 out
 the

garment
in
the
Trial
Rooms
located
at
the
end
of
the
Store.
If
they
choose
to
purchase,

they
take
the
product
and
go
to
the
check‐out
counter
located
near
the
entrance
of
the

store
and
pay
for
it.
The
person
manning
the
counter
looks
at
the
price
tag
and
code
of

the
 garment.
 He
 manually
 prepares
 a
 Sales
 Bill
 in
 a
 pre‐printed
 Bill
 Book.
 The
 Sales

Bill
is
usually
prepared
in
3
copies,
one
is
given
to
the
Customer,
the
second
copy
is

torn
from
the
book
and
filed
in
the
file
at
the
end
of
the
day
after
noting
the
same
in

the
Sales
Register
for
Accounts
purpose,
the
third
copy
remains
in
the
Bill
Book.
The

Sales
Bill
contains
details
like:
“Bill
No.”,
“Date”,
&
“To”(meaning
to
whom
is
the
bill

made
 to).
 Below
 this
 there
 are
 columns
 containing
 details
 like:
 “S.No”,
 “Particulars”,

“Quantity”,
 “Rate”
 and
 “Amount”.
 The
 Counter
 staff
 fills
 in
 the
 details
 in
 their

respective
 columns.
 The
 Bill
 No
 is
 already
 printed
 and
 Date
 is
 filled
 in.
 In
 the
 “To:”

row,
the
name
of
the
customer
is
filled
in
or
its
simply
filled
with
the
words
“Cash”
as

it
 is
 a
 cash
 sale
 and
 the
 customer
 name
 is
 not
 required.
 In
 the
 column
 “S.No.”,
 the

serial
 number
 is
 filled,
 in
 the
 “Particulars”
 column,
 the
 details
 of
 the
 item
 i.e.
 shirt,

trouser
etc
and
its
product
code
is
filled
in.
In
the
“Rate”
column,
the
rate
is
filled
in

after
referring
to
the
price
tag
on
the
garment.
The
amount
is
manually
calculated
on

the
calculator
and
filled
in
the
“Amount”
column.
When
all
the
items
purchased
by
the

customer
are
filled
in
the
Sales
Bill,
the
Total
Amount
due
is
also
calculated
manually.

Then
the
VAT
applicable
is
also
calculated
manually
and
filled
in.
The
VAT
amount
is

then
 added
 to
 the
 Total
 Amount
 due.
 However,
 if
 the
 customer
 is
 a
 member
 of
 the

store,
then
he/she
is
entitled
to
a
10%
discount.
This
discount
is
calculated
before
the

VAT
 is
 charged.
 The
 VAT
 amount
 is
 then
 calculated
 on
 the
 discounted
 figure
 and

added
 to
 the
 net
 amount
 to
 get
 the
 total
 amount
 due.
 The
 amount
 of
 the
 bill
 is

collected
in
cash
and
the
goods
are
handed
over
to
the
Customer
in
a
printed
plastic

carry‐bag.


1.2.4 – Document Analysis



For
the
purpose
of
developing
the
Program
and
to
design
the
forms
of
the
program
as

well
as
to
know
what
types
of
data
input
is
going
to
be
done
as
well
as
what
type
of

data
output
is
required,
documents
supplied
by
the
User
played
a
very
important
role.


The
User
used
to
make
Sales
Bill
in
their
pre‐printed
Sales
Bill
Book.
The
staff
of
the

User
 thereafter
 filled
 the
 pre‐printed
 Sales
 Bill
 with
 the
 necessary
 information,

calculated
the
Amount
manually
as
also
would
calculate
the
VAT
charged.
They
would

put
the
Total
at
the
end
of
the
Bill
and
collect
the
Amount
due
from
the
customer.
The

data
present
in
the
Sales
Bill
would
be
Bill
No.,
Date,
Items
purchased,
Item
Code,
Item

Rate,
 VAT
 charged
 and
 Total
 value
 of
 Sales.
 In
 the
 attached
 Sales
 Bill
 of
 23.07.2009,

the
 Sales
 of
 value
 Rs.
 6,032/‐
 can
 be
 seen.
 The
 VAT
 4%
 is
 calculated
 manually
 and

filled
 in.
 Attached
 hereto
 and
 marked
 as
 “Annexure
 2”
 is
 the
 copy
 of
 the
 Sales
 Bill

issued
by
“ATTIRE”
Garment
Store.
(Annexure­2).


9

ANNEXTURE - 2

The User gives a 10% discount to its members. This discount is also manually
calculated by the staff making the Sales Bill. This Discount is allowed before calculation
of the VAT amount. The data present in the Sales Bill would be Bill No., Date,
Customer Name (since he is a Member), Items purchased, Item Code, Item Rate,
Discount given, VAT charged and Total value of Sales. In the attached Sales Bill of
23.07.2009, the Sales of value Rs. 6,032/- can be seen. The VAT 4% is calculated
manually and filled in. Attached hereto and marked as “Annexure 3” is the copy of the
Sales Bill issued by “ATTIRE” Garment Store. (Annexure-3).

10
ANNEXTURE - 3

At the end of the day, the Accountant of the User, writes a daily Sales
Summary. The Summary contains the Sales Amount of the Sales made during the day
under different Bills. The data present in the Sales Summary is “S.No.”, “Date”, “Bill
No.”, “Amount” and “Remarks”. The Daily Sales Summary attached shows the Sales
rd
Summary of 23 July, 2009. It shows that there are 18 bills prepared that day
resulting in a total sale of Rs. 34,683.40 Attached hereto and marked as “Annexure 4”
is the copy of the Daily Sales Summary of “ATTIRE” Garment Store. (Annexure-4).

11
ANNEXTURE - 4

12
At the end of the day, the Accountant of the User, also updates the Stock Book.
This Stock Book contains the IN and OUT movement of the goods. When the goods arrive
at the Store, they are put in the “IN” part of the Stock Book and when the goods are sold,
they are entered on the “OUT” part of the Stock Book. It is a voluminous book of about 500
pages with Index in the front to locate the page number of each product. The Index
contains columns like “S.No.”, “Item Name in full”, “Product Code” and “Page No. From”
and “Page No. To”. Each product is allotted a few pages depending upon their turnover. If
a product has more sale, it is given more pages for listing and if a product has less sale, it
is allotted lesser pages. A page of the Stock Book is divided in two sections “IN” and
“OUT”. On the “IN” section, there are columns like “Date”, “Supplier”, “Ref. No” and “Qty”.
In the “Date” column, the date on which the goods are received by the User is filled in. In
the “Supplier” column, the Name of the Supplier is filled in. In the “Ref. No.” column, the
Supplier Bill No. is filled in. In the “Qty” column, the Quantity is filled in. On the “OUT”
section, there are columns like “Date”, “Bill. No.” and “Qty”. In the “Date” column, the date
on which the goods are sold by the Store is filled in. In the “Bill No.” column, the Sales Bill
No. is filled in. In the “Qty” column, the Quantity is filled in. The Stock Book Sheet attached
is that of FEMALE JEANS, LOW WAIST, MEDIUM SIZE and DENIM BLUE COLOR
(Code: FJEM01002). In the Stock Book Sheet it can be seen in the “IN” section, the Stock
brought forward from the previous page and the goods received on two instances. On the
“OUT” section, the quantity of Jeans sold on various dates and under various Sales Bills
can be seen. Attached hereto and marked as “Annexure 5” is the copy of the Stock Book
Sheet of “ATTIRE” Garment Store. (Annexure-5)

13
ANNEXTURE - 5

14
The Staff at “ATTIRE” also maintain a Membership Register which has the details
of all the Members. The data contained in the Membership Register are “S.No.”,
“Membership Card No.”, “Name, Address and E-mail address” and “Tel. No. or Mob. No.”.
The Staff writes the serial no in the “S.No.” column, fills in the next membership number in
the “Membership Card No.” column, fills in the “Name, Address and E-mail address” of the
Customer in its column and the Telephone and/or Mobile Number in its column. Attached
hereto and marked as “Annexure 6” is the copy of the sheet from the Members Register
of “ATTIRE” Garment Store. (Annexure-6)

ANNEXTURE - 6

15

1.2.5 – Description of Existing System

The
business
cycle
starts
when
the
Customer
makes
the
Purchase.
The
Customer
then

takes
 the
 garment
 selected
 to
 the
 Check‐out
 counter.
 At
 the
 check‐out
 counter,
 the

Cashier
makes
the
Sales
Bill
manually
in
the
Sales
Book.
He
refers
to
the
price‐tag
on

the
garment
to
know
its
price
and
makes
a
note
of
it
in
the
Rate
column
of
the
Sales

Bill.
One‐by‐one,
the
Cashier
makes
note
of
all
the
items
purchased
by
the
customer
in

the
 Sales
 Bill
 and
 fills
 in
 their
 rates.
 He
 then
 totals
 the
 amount
 due
 and
 asks
 the

Customer
if
he
is
a
Member.
If
the
Customer
is
a
member,
the
Cashier
would
ask
for

the
Membership
Card.
If
the
Customer
has
the
Card
and
produces
it,
the
Cashier
will

give
the
Membership
Discount
of
10%
on
the
Bill
Amount
to
the
Customer.
However,

if
the
Customer
is
a
member
but
has
not
carried
the
Membership
Card
with
him,
the

Cashier
would
ask
him
the
details
of
his
name
and
the
Card
Number
if
he
remembers.

The
Cashier
would
then
verify
the
details
of
the
Customer
with
that
in
his
records
and

if
the
same
are
found
true,
would
give
him
the
Membership
discount.
The
Cashier
is

responsible
for
making
of
the
Sales
Bill.

At
the
end
of
the
day,
the
Accountant
prepares
a
Daily
Sales
Summary.
The
Summary

contains
the
Sales
Amount
of
the
Sales
made
during
the
day
under
different
Bills.
The

data
 present
 in
 the
 Sales
 Summary
 is
 “S.No.”,
 “Date”,
 “Bill
 No.”,
 “Amount”
 and

“Remarks”.
The
Accountant
fills
in
the
columns
with
their
relevant
details
and
totals

the
days
sales.
Thus
the
responsibility
of
preparing
of
the
Daily
Sales
Report
is
that
of

the
Accontant.


Once
 the
 goods
 are
 sold
 during
 the
 day,
 the
 quantity
 of
 the
 stock
 held
 by
 the
 Store

reduces
by
the
quantity
of
goods
sold.
In
order
to
arrive
at
the
correct
figure
of
stock

held,
the
Accountant
updates
the
Stock
Book
daily
after
the
closure
of
the
Store.
This

Stock
Book
contains
the
IN
and
OUT
movement
of
the
goods.
The
Accountant
fills
in

the
appropriate
details
in
the
appropriate
fields.
When
the
goods
arrive
at
the
Store,

they
are
put
in
the
“IN”
part
of
the
Stock
Book
and
when
the
goods
are
sold,
they
are

entered
on
the
“OUT”
part
of
the
Stock
Book.
A
page
of
the
Stock
Book
is
divided
in

two
 sections
 “IN”
 and
 “OUT”.
 On
 the
 “IN”
 section,
 there
 are
 columns
 like
 “Date”,

“Supplier”,
“Ref.
No”
and
“Qty”.
In
the
“Date”
column,
the
date
on
which
the
goods
are

received
by
the
User
is
filled
in.
In
the
“Supplier”
column,
the
Name
of
the
Supplier
is

filled
in.
In
the
“Ref.
No.”
column,
the
Supplier
Bill
No.
is
filled
in.
In
the
“Qty”
column,

the
Quantity
is
filled
in.
On
the
“OUT”
section,
there
are
columns
like
“Date”,
“Bill.
No.”

and
“Qty”.
In
the
“Date”
column,
the
date
on
which
the
goods
are
sold
by
the
Store
is

filled
in.
In
the
“Bill
No.”
column,
the
Sales
Bill
No.
is
filled
in.
In
the
“Qty”
column,
the

Quantity
 is
 filled
 in.
 At
 the
 end
 of
 the
 day,
 the
 Accountant
 does
 the
 addition
 and

subtraction
of
the
quantities
of
“IN”
section
and
“OUT”
section
to
arrive
at
the
stock

quantity.


Any
 Staff
 at
 “ATTIRE”
 but
 mostly
 the
 Cashier
 maintains
 the
 Membership
 Register

which
 has
 the
 details
 of
 all
 the
 Members.
 The
 data
 contained
 in
 the
 Membership

Register
are
“S.No.”,
“Membership
Card
No.”,
“Name,
Address
and
E‐mail
address”
and

“Tel.
No.
or
Mob.
No.”.
The
Cashier
writes
the
serial
no
in
the
“S.No.”
column,
fills
in

the
 next
 membership
 number
 in
 the
 “Membership
 Card
 No.”
 column,
 fills
 in
 the

“Name,
Address
and
E‐mail
address”
of
the
Customer
in
its
column
and
the
Telephone

and/or
Mobile
Number
in
its
column.
At
the
time
of
preparation
of
the
Sales
Bill,
if
the

Customer
is
a
member
but
has
not
carried
the
Membership
Card
with
him,
the
Cashier

16
would
 ask
 him
 the
 details
 of
 his
 name
 and
 the
 Card
 Number
 if
 he
 remembers.
 The

Cashier
would
then
verify
the
details
of
the
Customer
with
that
in
his
records
and
if

the
same
are
found
true,
would
give
him
the
Membership
discount.



1.2.6 – Critical Evaluation of the Existing System

This
current
system
had
many
flaws:

(a) The
 first
 problem
 came
 with
 the
 manual
 writing
 of
 these
 records.
 Due
 to
 the

manual
calculation
of
figures,
there
are
chances
of
error
in
writing
the
proper

rate,
calculation
of
the
amount
due,
calculation
of
the
total
due,
calculation
of

VAT,
 calculation
 of
 discount
 etc.
 Thus
 calculation
 error
 by
 staff
 is
 a
 high

probability
 of
 occurrence
 especially
 when
 the
 store
 is
 crowded
 or
 when
 the

Cashier
has
a
long
queue
of
Customers
to
attend
to.


(b) If
the
Customer
changes
his
mind
while
making
payment
and
cancels
an
item

or
changes
an
item,
in
short,
makes
any
changes
in
the
Purchase,
the
Sales
Bill

will
have
to
be
cancelled
and
a
fresh
bill
would
have
to
be
prepared
which
will

be
a
cumbersome
task
for
the
Cashier
to
do
manually.
If
there
are
cancellations

and
corrections
in
the
Sales
Bill,
apart
from
not
looking
neat,
would
also
cause

errors
in
the
calculations
of
the
amount
of
the
Sales
Bill.

(c) As
these
are
hand
written
records
on
paper,
the
paper
is
liable
to
get
stained

over
a
period
of
time
and
the
information
written
may
get
scribbled
on
or
get

stained.

(d) Since
the
record
is
on
paper,
the
paper
is
likely
to
get
torn
and
unbound
from

the
Book,
which
may
result
in
loosing
of
the
information
written.

(e) Too
 many
 Books
 required
 to
 be
 maintained.
 Sales
 Bill
 Book,
 Sales
 Summary

Book,
for
Stock
Book
etc.


(f) The
Sales
Reports
has
to
be
made
manually
at
the
end
of
each
day.


It
had
happened
many
times
that
a
customer
asked
for
a
particular
garment
and
the

salesman,
 after
 searching
 for
 considerable
 time
 amongst
 other
 items,
 informed
 that

the
particular
garment
was
out
of
stock.
This
wasted
a
lot
of
time
of
the
Store
and
that

of
 the
 customer
 and
 also
 caused
 embarrassment
 on
 account
 of
 the
 delay.
 Since
 the

stock
book
was
manually
managed
and
updated
daily,
there
are
probabilities
of
one
or

several
items
going
out
of
stock
during
the
same
day.
This
was
more
likely
in
festival

season
 or
 during
 weekends.
 Also,
 since
 the
 Sales
 Register
 maintaining
 the
 Sales

Summary
 was
 also
 manually
 maintained
 and
 daily
 updated,
 the
 User
 would
 have
 a

problem
if
he
wanted
to
see
the
summary
at
any
point
of
time
during
the
day.
So
the

combination
 and
 co‐relation
 of
 Sales
 and
 Inventory
 was
 the
 biggest
 flaw
 in
 the

Existing
system.
It
was
difficult
to
get
proper
information
at
the
proper
time.
The
only

merit
 of
 this
 System
 i.e.
 manual
 writing
 of
 the
 records,
 could
 be
 the
 flexibility
 of

writing
and
editing
any
data
at
any
time,
but
retrieval
of
data
or
getting
the
output
of

that
data
would
be
difficult.


1.2.7 – Alternative & Proposed Solution




There
are
various
other
solutions
to
the
problem
faced
by
the
User.

17
(a) The
 products
 to
 use
 bar‐coded
 stickers.
 Since
 all
 the
 stock
 coming
 in
 and
 the

stock
 going
 out
 would
 be
 read
 by
 bar‐code
 scanner,
 the
 Inventory
 would
 be

updated
immediately
and
the
Stock
can
be
known
in
real‐tiem.
However,
bar‐
coding
of
the
products
would
require
other
hardwares
besides
the
CPU
and
is

not
cost‐effective.
Also
the
volume
of
Sales
does
not
justify
the
investment.


(b) The
Store
can
establish
an
internal
memo
for
movement
of
goods
whereby
all

goods
coming
out
of
the
store‐room
is
accompanied
by
internal
transfer
memo.

However,
 this
 will
 mean
 duplication
 of
 records
 and
 creation
 of
 unnecessary

paper
work.


But
the
solution
suggested
is
the
most
economical,
quick
and
easy
to
adopt.
To
solve

all
the
manual
entry
related
problems
like
illegibility,
error
in
calculation,
duplication

of
 books
 and
 records
 etc,
 the
 User
 is
 suggested
 to
 go
 for
 Computerization.
 The
 User

has
readily
agreed
to
the
suggestion.


1.2.8 – Requirements Specifications

1.2.8.1 – Functional Requirements

The objective of the new system would be to overcome the problems with the Current
system. The User required the New system to be easy to use in terms of understanding
and data entry. The primary goal of Inventory in real-time is to be fulfilled. Back-up of data
is important in any business and hence this facility will be provided in the new system. The
User requires real-time data of inventory on the Screen which will be provided by the New
system. The User prefers GUI interface which is easy to understand and adopt.

1.2.8.2 – Input/Output Requirements

It had been observed that the Inputs of the User with the Current System are as follows :
(i) Member’s Name, Address, E-mail address and Telephone Number.
(ii) Membership Card Number.
(iii) Inventory entry.
(iv) Supplier details like Name, Address, Telephone Number, TIN No.
(v) Product details: Code, Name, Price, Stock.

It had been observed that the Output of the User with the Current System are as follows :
(i) Sales Bill and Sales Summary.
(ii) Membership data.
(iii) Summary of Stocks.

However, with the New system in place the User Inputs would be as follows :
(i) Member’s Name, Address, E-mail address and Telephone Number.
(ii) Supplier details like Name, Address, Telephone Number, TIN No.
(iii) Product database: Code, Name, Price, Stock.
(iv) Inventory : Stock and Quantity

18
And with the New system in place, the desired outputs would be as follows :
(i) Members data Search by Card Number.
(ii) Sales Bill.
(iii) Inventory Log.
(iv) Sales Log.
(v) Members List.
(vi) Real-time Inventory.

1.2.8.3 - Hardware Requirements

Minimum Hardware requirements are :

Any Intel/AMD Processor – 1.0


GHz 256 MB RAM
10 MB Free Hard disk space

2. Design
2.1 Nature of Solution

2.1.1 Design Specification


The
 software
 to
 be
 made
 is
 for
 the
 Garment
 Store.
 Thus,
 the
 interface
 should
 be

comprehensive
and
at
the
same
time,
easy
to
use.
All
the
fields
and
buttons
should
be

well
laid
out
and
placed
appropriately
to
provide
ease
in
use
and
reference.
Too
many

fields
 and
 buttons
 also
 should
 be
 avoided
 to
 make
 the
 program
 user‐friendly,
 at
 the

same
time
fulfilling
all
the
requirements
of
the
end‐user.

There
would
be
multiple
users
in
the
Garment
Store
i.e
Administrator
(Store
Owner)

and
 various
 staff
 members
 having
 access
 to
 the
 System.
 Thus,
 a
 login
 screen
 is

essential
for
assigning
different
features
to
the
Administrator
and
to
the
Staff.


LOGIN SCREEN
The
LOGIN
Screen
is
the
first
screen
displayed
when
the
program
starts.
It
is
through

this
 Screen
 that
 the
 User
 or
 Administrator
 can
 start
 using
 the
 program
 or
 can
 enter

into
 the
 program.
 The
 LOGIN
 screen
 will
 have
 only
 two
 Fields:
 Username
 and

Password.
 The
 Username
 is
 the
 login
 name
 assigned
 to
 each
 staff
 member
 and
 the

Password
 is
 the
 password
 assigned
 to
 the
 User
 for
 accessing
 the
 account.
 The

Username
and
Password
would
be
assigned
by
the
Administrator
to
the
Users.
There

would
be
two
buttons
in
this
screen:
LOGIN
and
EXIT.
The
LOGIN
Button
will
validate

the
login
details
and
load
the
main
screen
and
the
EXIT
Button
will
exit
the
program.


19


ADMIN PANEL SCREEN


The
program
will
have
a
pre‐defined
Administrator
account
which
will
allow
the
Store

Owner
 to
 manage
 the
 system.
 The
 ADMIN
 PANEL
 will
 have
 the
 following
 options:

REPORTS,
 MANAGE
 PRODUCTS
 MANAGE
 USERS,
 SUPPLIERS,
 BACKUP
 DATABASE,

RESTORE
DATABASE,
and
LOG
OUT.


20

The
REPORT
button
will
open
another
window
which
will
give
options
of
the
types
of

Reports
that
are
available
to
be
viewed.
This
will
allow
the
Store
Owner
to
view
the

various
Reports
generated.



The
 Administrator
 will
 also
 have
 the
 option
 to
 manage
 the
 Products.
 The
 MANAGE

PRODUCTS
 feature
 will
 display
 a
 drop
 down
 menu
 in
 the
 Category
 section,
 from

which
 the
 Administrator
 has
 to
 choose
 the
 Category
 of
 Product
 to
 be
 managed.
 The

various
 things
 he
 could
 change
 would
 be
 the
 Item
 Code,
 Item
 Name,
 Price
 of
 the

product
 and
 Stock
 of
 the
 Product.
 The
 Administrator
 will
 be
 able
 to
 Add
 new

products,
Delete
existing
products
and
make
changes
to
the
products
in
the
database.

Thus,
the
Administrator
will
be
able
to
change
the
Code,
Name,
Price
and
Stock
of
the

product.

The
Administrator
will
be
able
to
manage
User
Accounts
of
the
system
by
clicking
on

the
MANAGE
USERS
button.
This
will
display
the
Staff
name,
Username
and
Password

fields.
 The
 Administrator
 will
 be
 able
 to
 navigate
 through
 the
 users
 and
 Add
 Users,

Delete
Users
or
Modify
details
of
Users.
This
feature
will
be
useful
if
new
staff
joins
the

Store
or
if
a
staff
member
resigns.
Also,
only
the
Administrator
can
create
and
manage

the
 Users
 and
 this
 facility
 is
 not
 available
 to
 any
 User.
 The
 Username
 and
 the

Password
is
also
allotted
by
the
Administrator
to
the
Users.


21
The
 Administrator
 will
 also
 be
 managing
 the
 Suppliers.
 Only
 the
 Administrator
 will

have
the
authority
to
Add,
Modify
or
Delete
the
Supplier
data.

As
 data
 is
 most
 vital,
the
 Administrator
 will
have
the
 option
 to
backup
 the
database

which
 will
 include
 the
 Member
 details,
 User
 accounts,
 Product
 details,
 Inventory,

Supplier
 details,
 
 Sales
 log,
 Members
 Log
 and
 Inventory
 Log.
 When
 the
 BACKUP

DATABASE
 button
 is
 pressed,
 the
 database
 will
 be
 copied
 to
 the
 BACKUP
 directory

inside
 the
 program
 directory.
 Also,
 if
 some
 data
 is
 accidentally
 deleted,
 the

Administrator
 can
 use
 the
 RESTORE
 DATABASE
 option
 to
 restore
 the
 complete

database
 from
 the
 previous
 backup.
 This
 will
 copy
 the
 database
 from
 the
 BACKUP

directory
and
replace
it
with
the
database
in
the
main
directory
of
the
application.



REPORTS SCREEN

 The
 Report
 Screen
 will
 give
 an
 option
 of
 three
 types
 of
 Reports
 :
 Sales,

Inventory
and
Members.



22
SALES REPORT SCREEN
The
 SALES
 REPORT
 will
 have
 basic
 details
 such
 as
 Date,
 Bill
 Number
 and
 the
 Total

Amount
 of
 the
 Bill.
 This
 will
 allow
 the
 Store
 Owner
 to
 view
 the
 Summary
 of
 Sales

made.
This
report
will
be
generated
using
Crystal
reports
in
Visual
Basic
so
it
can
be

printed
and
exported
to
various
file
formats.



INVENTORY REPORT SCREEN


The
 INVENTORY
 REPORT
 will
 give
 all
 the
 details
 required
 by
 the
 Store
 Owner
 viz.

Date
 of
 Purchase,
 Name
 of
 the
 Supplier,
 Supplier’s
 Reference
 Number
 (Bill
 No.
 or

Delivery
 Note
 No.),
 the
 Product
 received
 under
 such
 Bill
 and
 the
 Quantity
 of
 the

product
received.
This
will
allow
the
Store
Owner
to
view
the
Summary
of
Purchase

made.
This
report
will
be
generated
using
Crystal
reports
in
Visual
Basic
so
it
can
be

printed
and
exported
to
various
file
formats.


23

MEMBER REPORT SCREEN


The
MEMBER
REPORT
will
give
all
the
details
of
the
Members
required
by
the
Store

Owner
 viz.
 Membership
 Card
 Number,
 Name
 of
 the
 Member,
 Telephone
 Number
 of

the
 Member,
 E‐mail
 of
 the
 Member
 and
 Address
 of
 the
 Member.
 This
 will
 allow
 the

Store
Owner
to
view
the
List
of
Members
of
the
store
who
have
its
Membership.
This

report
will
be
generated
using
Crystal
reports
in
Visual
Basic
so
it
can
be
printed
and

exported
to
various
file
formats.


24

MANAGE PRODUCTS SCREEN


The
MANAGE
PRODUCTS
Screen
has
a
drop‐down
Menu
which
will
list
the
Category

of
 the
 Products
 to
 be
 managed.
 Once
 the
 Category
 is
 selected,
 a
 Table
 will
 appear

below.
 The
 Table
 has
 columns
 of
 Product
 Code,
 Product
 Name,
 Price
 of
 the
 Product

and
Stock
of
the
Product.
Since
there
are
many
Products
under
each
category,
a
Table

view
would
be
suitable
as
all
of
them
could
be
seen
at
a
glance.
The
Administrator
can

Add
 a
 new
 product,
 Modify
 a
 product
 or
 Delete
 a
 product
 using
 the
 buttons
 at
 the

bottom
of
 the
 screen.
 This
 feature
will
be
 provided
only
to
 the
Administrator
 as
 the

Administrator
 is
 normally
 required
 to
 Change
 the
 Product
 Name,
 Code,
 Price
 and

Stock
 as
 also
 to
Add,
Modify
 or
 Delete
 a
product
from
 the
 range
of
products
 offered

from
time
to
time.


25

MANAGE USERS SCREEN


The
Administrator
will
be
able
to
manage
the
User
Accounts
of
the
system
by
clicking

on
 the
 MANAGE
 USERS
 button.
 This
 will
 display
 the
 Staff
 name,
 Username
 and

Password
 fields.
 The
 Administrator
 will
 be
 able
 to
 navigate
 through
 the
 Users
 by

clicking
on
the
arrows.
Users
can
be
added
by
clicking
on
the
ADD
button
and
saved

by
 using
 the
 SAVE
 button.
 The
 Administrator
 will
 also
 be
 able
 to
 modify
 the
 User

details
 by
 navigating
 to
 the
 User,
 changing
 the
 necessary
 details
 and
 clicking
 on
 the

MODIFY
 button.
 This
 will
 save
 the
 changes
 made
 in
 the
 User
 details.
 The

Administrator
will
also
be
able
to
delete
a
User
by
navigating
to
the
User
and
clicking

on
the
DELETE
button.
Thus
the
Administrator
will
have
total
control
over
the
system.

The
Username
and
Password
are
also
allotted
by
the
Administrator.


26

SUPPLIERS SCREEN
The
Administrator
will
be
able
to
manage
the
Suppliers
of
the
Store
in
the
System
by

clicking
 on
 the
 SUPPLIERS
 button.
 This
 will
 display
 the
 Suppliers
 Code,
 Suppliers

Name,
Supplier’s
Address,
Supplier’s
Telephone
Number
and
Supplier’s
TIN
Number.

The
Suppliers
details
are
displayed
in
the
Table
form.
The
Administrator
will
be
able

to
ADD
a
New
Supplier
by
clicking
on
the
ADD
button
and
save
the
New
Supplier
by

using
the
SAVE
button.
The
Administrator
will
also
be
able
to
modify
the
details
of
the

Supplier
 by
 clicking
 on
 the
 Row
 in
 which
 the
 Supplier
 is
 listed
 and
 carrying
 out
 the

changes
 and
 clicking
 on
 the
 MODIFY
 button.
 This
 will
 save
 the
 changes
 made
 in
 the

Supplier’s
details.
The
Administrator
will
also
be
able
to
delete
a
Supplier
by
clicking

on
 the
 desired
 Row
 of
 the
 Supplier
 and
 clicking
 on
 the
 DELETE
 button.
 Thus
 the

Administrator
will
have
total
control
over
the
Supplier
details
in
the
System.



27
BACKUP DATABASE
As
data
is
most
vital,
the
Administrator
will
have
the
option
to
Backup
the
database

which
 will
 include
 the
 Member
 details,
 User
 accounts,
 Inventory,
 Product
 details,

Supplier
 details,
 Sales
 Log,
 Members
 Log
 and
 Inventory
 Log.
 When
 the
 BACKUP

DATABASE
 button
 is
 pressed,
 the
 database
 will
 be
 copied
 to
 the
 BACKUP
 directory

inside
 the
 program
 directory.
 After
 the
 backup
 is
 done,
 a
 message
 box
 will
 be

displayed
with
the
message
“BACKUP
SUCCESSFUL”.


28


RESTORE DATABASE
If
 some
 data
 is
 accidentally
 deleted,
 the
 Administrator
 can
 use
 the
 RESTORE

DATABASE
option
to
Restore
the
complete
database
from
the
previous
Backup.
This

will
copy
the
database
from
the
BACKUP
directory
and
replace
it
with
the
database
in

the
main
directory
of
the
application.
When
the
restore
is
done,
a
message
box
will
be

displayed
with
the
message
“RESTORE
SUCCESSFUL”.


29


LOG OUT

When
 the
 “LOG
 OUT”
 Button
 is
 pressed
 from
 the
 ADMIN
 PANEL
 Screen,
 the

Administrator
is
logged
out
and
the
LOGIN
Screen
will
be
displayed.


30
MAIN SCREEN
When
 the
 User
 will
 log‐in
 with
 the
 Account
 details
 (Username
 and
 Password)

provided
 by
 the
 Administrator,
 then
 the
 MAIN
 SCREEN
 will
 open
 which
 will
 be

displayed
 to
 all
 the
 Users.
 This
 Screen
 will
 have
 all
 features
 required
 by
 the
 User
 in

the
Garment
Store
for
their
day‐to‐day
Sales
and
Inventory
requirements.


There
 will
 be
 five
 buttons
 on
 the
 MAIN
 SCREEN:
 VIEW
 PRODUCTS,
 NEW
 SALE,

MEMBERS
DATABASE,
INVENTORY
and
LOG
OUT.

VIEW
 PRODUCT
 will
 display
 another
 Window.
 This
 Window
 has
 two
 sections.
 The

Left
 section
 has
 MALE
 Category
 of
 Products
 and
 the
 Right
 section
 has
 the
 FEMALE

Category
 of
 Products.
 There
 are
 six
 categories
 of
 garments
 listed
 in
 each.
 In
 MALE

Section,
 the
 Categories
 are
 Shirts,
 T‐Shirts,
 Jeans,
 Shorts,
 Trousers
 and
 Jackets.
 In

FEMALE
 Section,
 the
 Categories
 are
 Tops,
 Capris,
 Jeans,
 Skirts,
 Trousers
 and

Stockings.
There
is
also
a
BACK
Button
on
the
Screen,
which,
when
pressed
will
return

to
the
MAIN
SCREEN.

NEW
SALE
Button
will
be
used
when
a
Sale
has
to
be
recorded.



MEMBERS
DATABASE
Button
can
be
used
by
the
User
to
view
the
Members
Database

and
make
any
changes
in
the
database.
The
User
is
authorized
to
make
changes
in
this

database
as
the
staff
would
be
enlisting
new
members.
It
will
also
enable
the
User
to

verify
a
particular
Member.

When
 the
 LOG
 OUT
 Button
 is
 pressed,
 the
 User
 is
 logged
 out
 of
 this
 Screen
 and
 the

LOGIN
Screen
will
be
displayed.


31

PRODUCTS SCREEN
VIEW
 PRODUCT
 will
 display
 another
 Window.
 This
 Window
 (PRODUCTS
 Window)

has
Two
Sections
of
Products.
The
Left
section
has
MALE
Category
of
Products
and
the

Right
 section
 has
 the
 FEMALE
 Category
 of
 Products.
 There
 are
 six
 categories
 of

garments
 listed
 in
 each.
 In
 MALE
 Section,
 the
 Categories
 are
 Shirts,
 T‐Shirts,
 Jeans,

Shorts,
 Trousers
 and
 Jackets.
 In
 FEMALE
 Section,
 the
 Categories
 are
 Tops,
 Capris,

Jeans,
 Skirts,
 Trousers
 and
 Stockings.
 There
 is
 also
 a
 BACK
 Button
 on
 the
 Screen,

which,
when
pressed
will
return
to
the
MAIN
SCREEN.


32

When
any
of
the
Category
of
Product
Button
is
pressed,
it
will
open
another
Window.

In
this
Window,
the
name
of
the
Product
Category
will
be
displayed
on
Top
and
below

that
there
will
be
a
table.
The
Columns
of
the
Table
would
list
Product
Code,
Product

Name,
Price
of
the
Product
and
Stock
of
the
Product
currently
in
the
Store.
This
is
a

very
important
part
of
the
Program
as
it
gives
the
real‐time
stock
of
the
Product.
The

User
will
only
be
able
to
view
the
Product,
Code,
Price
and
Stock
but
will
not
be
able
to

add
and/or
edit
and/or
delete
anything
in
this
window.
For
eg.
If
the
SHIRTS
Category

Button
is
pressed,
the
Table
displayed
will
show
various
types
of
Shirts
available
with

its
Code,
Name,
Price
and
Stock.
Thus
the
first
entry
is
with
Code:
MSHL006
which
is

for
Product
Name:
Plain
Shirt
at
Price:
600
and
the
Stock:
101.
The
Product
values
like

Code,
 Name,
 Price
 and
 Stock
 have
 been
 filled
 by
 the
 Administrator
 through
 the

MANAGE
PRODUCT
option
in
the
ADMIN
PANEL.


33
NEW SALE SCREEN

 This
 is
 a
 very
 important
 Screen
 as
 many
 forms
 of
 data
 are
 put
 to
 use
 here.

When
 the
 User
 will
 press
 the
 NEW
 SALE
 Button,
 the
 NEW
 SALE
 Window
 will
 open.

The
first
field
will
be
a
drop
down
menu
listing
the
products
that
can
be
sold.
This
list

of
 products
 will
 be
 set
 by
 the
 Administrator
 in
 the
 MANAGE
 PRODUCTS
 SCREEN
 in

the
ADMIN
PANEL.
From
this
Menu,
the
User
has
to
select
the
product
to
be
sold.
After

selecting
the
product
from
the
drop‐down
menu,
the
quantity
will
have
to
be
entered

in
 the
 Quantity
 field
 and
 the
 ADD
 button
 will
 have
 to
 be
 pressed.
 When
 the
 ADD

button
 is
 pressed,
 the
 Product
 along
 with
 the
 Product
 Code,
 Quantity,
 Rate
 and

Amount
for
that
item
will
be
displayed
in
the
Table
below.
Multiple
products
can
be

added
to
the
Table
by
selecting
the
Products
from
the
drop‐down
menu,
filling
in
the

quantity
and
pressing
the
ADD
Button
after
each
selection.
This
will
go
on
adding
the

products
in
the
Table.
Products
can
also
be
removed
from
the
Table
by
selecting
the

product
 from
 the
 Table
 and
 clicking
 on
 the
 REMOVE
 Button.
 This
 will
 remove
 the

Product
along
with
its
Quantity,
Rate
and
Amount
from
the
Table.

As
 the
 User
 goes
 on
 adding
 the
 products
 to
 the
 Cart
 as
 also
 to
 the
 Table,
 the
 Row

below
 the
 Table
 named
 TOTAL
 will
 display
 the
 Total
 of
 the
 Amount
 column
 of
 the

Table.
 Below
 that
 the
 Row
of
“DISCOUNT
 (10%)”
has
another
 Button
“ENTER
CARD

NO.”.
 This
 Row
 will
 only
 be
 activated
 if
 a
 valid
 Card
 Number
 is
 put
 in.
 Below
 the

DISCOUNT
Row,
is
the
VAT
(4%)
Row
which
displays
the
figure
of
4%
VAT
on
the
Sale

Amount.
 This
 figure
 is
 also
 automatically
 updated
 like
 the
 TOTAL
 figure.
 Below
 the

VAT
 (4%)
 Row
 is
 the
 row
 of
 TOTAL
 AMOUNT.
 This
 Row
 displays
 the
 sum
 of
 the

TOTAL
row
and
the
VAT
row.
This
figure
is
also
automatically
updated
and
changes

with
the
changes
made
in
the
Table
contents.



34
If
 the
 “ENTER
 CARD
 NO.”
 Button
 is
 pressed,
 it
 will
 open
 a
 Window
 asking
 the

Membership
 Card
 Number.
 The
 User
 has
 to
 fill
 in
 a
 valid
 Card
 Number.
 If
 the
 User

enters
a
valid
Card
Number,
a
Pop‐up
window
will
appear
with
message
“Valid
Card

No.”
 and
 the
 DISCOUNT
 row
 will
 display
 the
 10%
 discount
 figure.
 As
 soon
 as
 the

discount
is
calculated
and
figure
is
displayed,
the
VAT
figure
will
get
updated
and
will

calculate
 VAT
 4%
 on
 the
 Net
 Sales
 Figure
 i.e.
 Total
 less
 Discount.
 The
 Total
 Amount

figure
 will
 also
 get
 updated
 as
 it
 will
 be
 a
 sum
 of
 the
 Net
 Sales
 Figure
 and
 VAT
 i.e.

Total
 less
 Discount
 plus
 VAT.
 However,
 if
 in
 the
 Pop‐up
 window,
 the
 User
 enters
 a

Card
Number
which
is
not
valid
i.e.
member
is
not
created
on
that
number,
then
there

will
be
a
Pop‐up
window
with
the
message
“Invalid
Card
No.”
and
an
“OK”
button
to

that
pop‐up
window,
which
when
pressed,
will
return
to
the
NEW
SALE
SCREEN.


At
 this
 stage,
 the
 User
 will
 have
 an
 option
 to
 press
 the
 CONFIRM
 Button
 to
 Confirm

the
Sale
or
to
press
the
CANCEL
Button
and
Cancel
the
Sale.
If
the
User
will
press
the

CONFIRM
Button,
the
Sale
will
be
confirmed
and
the
next
Screen
of
SALES
BILL
will

open.
However,
if
the
User
presses
the
CANCEL
Button,
the
MAIN
SCREEN
will
open.


35

SALES BILL SCREEN


After
the
Sale
is
confirmed,
a
Sales
Bill
will
be
generated
with
automatic
Bill
Number,

Date,
 Customer
 Name
 (Members
 Name
 will
 be
 displayed
 if
 discount
 is
 taken
 on

Membership
 Card)
 and
 Card
 No.
 (if
 discount
 is
 taken
 on
 Membership
 Card).
 The

SALES
BILL
SCREEN
will
also
show
the
Table
with
details
like
Items
purchased
along

with
 Rate,
 Quantity
 and
 Amount.
 The
 box
 below
 the
 Table
 will
 display
 the
 Total,

Discount,
VAT
and
Total
Amount
payable.
There
will
be
a
DONE
Button
at
the
bottom

of
the
Sales
Bill.
On
pressing
of
this
DONE
Button,
the
details
of
the
Sales
Bill
will
be

logged
in
the
Sales
log
and
the
MAIN
SCREEN
will
be
displayed
ready
to
take
another

Order.


36

MEMBER DATABASE SCREEN


This
Screen
will
display
the
MEMBER
DATABASE.
At
the
top
part
of
the
Screen,
there

is
a
SEARCH
Box.
In
the
SEARCH
Box
there
is
a
field
where
Card
No.
is
to
be
filled
in.

After
 filling
 the
 Card
 Number,
 the
 User
 has
 to
 press
 the
 SEARCH
 Button
 given

alongside.
On
pressing
the
SEARCH
Button,
if
the
input
number
is
a
valid
number
and

if
 there
 is
 a
 member
 listed
 under
 that
 number,
 a
 pop‐up
 window
 will
 open
 with
 a

message
 “Member
 Found”
 and
 there
 would
 be
 an
 OK
 Button
 in
 the
 Pop‐up.
 On

pressing
the
OK
Button,
the
fields
in
the
INFO
Box
would
be
automatically
filled
with

the
data
of
the
Member.
If
the
Card
Number
input
by
the
User
is
not
a
valid
number
or

if
there
is
no
member
listed
under
that
number,
then
a
pop‐up
window
will
open
with

a
message
“Member
not
Found”
and
there
would
be
an
OK
Button
in
the
Pop‐up.
On

pressing
 the
 OK
 button,
 the
 pop‐up
 window
 will
 close
 leaving
 the
 MEMBERS


37
DATABASE
Screen
open.
However,
if
the
User
enters
alphabets
or
illogical
data
in
the

Card
Number
field
and
presses
the
SEARCH
Button,
then
a
pop‐up
window
will
open

with
 a
 message
 “Please
 enter
 a
 valid
 card
 number”.
 This
 pop‐up
 window
 will
 also

have
an
OK
button.
On
pressing
the
OK
button,
the
pop‐up
window
will
close
leaving

the
MEMBERS
DATABASE
Screen
open.



 The
 User
 will
 have
 the
 authority
 to
 ADD
 or
 MODIFY
 any
 Member
 in
 the

MEMBER
 DATABASE.
 That
 is,
 the
 User
 can
 Add
 a
 new
 member
 with
 its
 details
 like

Name,
E‐mail
Address,
Telephone
Number
and
Postal
Address.
However,
the
User
and

even
the
Administrator
cannot
delete
the
Member
once
made.
Also,
the
Membership

Number
is
updated
once
a
member
is
created
in
that
number.
So,
if
the
User
wants
to

create
a
New
Member,
he
has
to
press
the
ADD
button.
On
pressing
the
ADD
button,

all
 the
 fields
 except
 the
 Card
 Number
 field
 will
 be
 activated.
 The
 Card
 Number
 field

will
 not
 be
 activated
 but
 will
 have
 the
 updated
 number
 which
 is
 available
 to
 be

allotted
to
the
Member.
The
MEMBER
DATABASE
will
have
four
buttons
at
the
bottom

of
the
window:
ADD,
SAVE,
MODIFY
&
CLOSE.
If
the
User
wants
to
Modify
the
details

of
 a
 Member,
 he
 has
 to
 press
 the
 MODIFY
 button
 to
 activate
 the
 fields
 and
 make

changes.
After
making
the
necessary
changes,
the
User
has
to
press
the
SAVE
button

to
 save
 those
 changes.
 To
 Close
 this
 Window
 and
 return
 to
 MAIN
 SCREEN,
 CLOSE

button
to
be
used.


38

INVENTORY SCREEN
The
 INVENTORY
 SCREEN
 is
 to
 be
 used
 by
 the
 User
 to
 input
 the
 data
 of
 the
 goods

received
from
the
Supplier.
The
User
can
only
input
the
data
and
cannot
edit
or
alter

any
 data
 already
 put
 in.
 The
 first
 field
 in
 this
 screen
 will
 be
 the
 Supplier
 field.
 The

Supplier
has
to
be
selected
from
the
drop‐down
menu.
The
Supplier
Management
can

only
 be
 done
 by
 the
 Administrator
 form
 the
 SUPPLIERS
 Button
 in
 ADMIN
 PANEL.

Once
 the
 Supplier
 is
 selected
 from
 the
 drop
 down
 panel,
 the
 TIN
 Number
 will
 be

automatically
filled
and
will
be
a
non‐active
field.
The
next
field
will
be
SUP
REF
NO
or

“Suppliers
 Reference
 Number”.
 In
 this
 field,
 the
 Suppliers
 Bill
 Number
 or
 Delivery

Note
Number
under
which
the
goods
have
been
received
has
to
be
filled
in.
Below
this

field,
 there
 will
 be
 the
 PRODUCT
 field.
 This
 again
 would
 be
 a
 drop‐down
 menu
 and

User
has
to
select
the
PRODUCT
from
the
field
and
has
to
fill
in
the
quantity
received

in
 the
 field
 below.
 After
 checking
 the
 actual
 receipt
 of
 goods,
 the
 User
 has
 to
 either

press
CANCEL
or
CONFIRM.
If
the
User
presses
CANCEL,
the
INVENTORY
SCREEN
will

close
 and
 MAIN
 SCREEN
 will
 be
 displayed
 without
 carrying
 out
 any
 change
 in
 the

Inventory.
 However,
 if
 the
 User
 presses
 the
 CONFIRM
 button,
 the
 INVENTORY


39
SCREEN
 will
 still
 close
 and
 MAIN
 SCREEN
 will
 be
 displayed
 but
 necessary
 stock

additions
will
have
been
made
in
the
Inventory.


LOG OUT
When
the
“LOG
OUT”
Button
is
pressed
from
the
MAIN
SCREEN,
the
User
is
logged
out

and
the
LOGIN
Screen
will
be
displayed.


2.1.2 Process Description


LOGIN Form
Inputs: Username and Password
Check if username is “admin” and password is “attire”
Open Admin Panel
Else Read from Database
If record exists in database, then valid login – Open Main screen
If record does not exist, then display Invalid login alert

40
ADMIN PANEL Form

SALES REPORT
Read database table: Sales
Display Crystal report of table with columns: Date, Order Number and Amount

INVENTORY REPORT
Read database table: Inventory
Display Crystal report of table with columns: Date, Supplier, Ref No., Products and
Quantity.

MEMBER REPORT
Read database table: Members
Display Crystal report of table with columns: Card No, Name, Telephone, E-mail
address and Address.

MANAGE PRODUCTS
Read database table: Products
When admin selects Product category from dropdown menu, open that table from
database and display data in table with columns: Product Code, Product Name,
Price and Stock.

ADD: Add a new record to the database


SAVE: Save the details entered in the new record
MODIFY: Update the changes made to the database
DELETE: Remove the selected record from the database
BACK: Return to the Admin Panel

MANAGE USERS
Read database table: Users
Display data from table to the fields: Staff Name, Username and Password

41
ADD: Add a new record to the database
SAVE: Save the details entered in the fields
MODIFY: Update the changes made to the database
DELETE: Remove the selected record from the database
BACK: Return to the Admin Panel

SUPPLIERS
Read database table: Suppliers
Open the suppliers table from database and display data in table with columns:
Code, Name, Address, Telephone and TIN Number.

ADD: Add a new record to the database


SAVE: Save the details entered in the new record
MODIFY: Update the changes made to the database
DELETE: Remove the selected record from the database
BACK: Return to the Admin Panel

BACKUP DATABASE
Copy Products and Database files from main directory to the BACKUP directory
inside the main directory. Display pop-up box with message BACKUP
SUCCESSFUL

RESTORE DATABASE
Replace the Products and Database files in the main directory with the ones in the
BACKUP directory inside the main directory. Display pop-up box with message
RESTORE SUCCESSFUL

LOGOUT: Close the Admin Panel screen and return to the LOGIN Screen

42
MAIN SCREEN

VIEW PRODUCTS
Display list of categories as buttons. When a button is pressed, open a new
window with all products in that category, including Code, Name, Price and Stock.
This will be in read-only mode.

NEW SALE
Display screen with dropdown menus for Category, Product and Quantity. When
the appropriate Category and Product is selected and the Quantity is entered, add
the item to the cart. This can be done multiple times to add items to the cart. Items
can also be removed be selecting the item from the cart and pressing the Remove
button. The amounts will be calculated automatically.
Members can press the “ENTER CARD NO” button and enter a valid card number
to obtain a discount.
CANCEL: Will return to Main Screen
CONFIRM: Will display Sales Bill with details like Bill Number, Date, Name and
Card Number (If member), and list of all items bought.

BILL
DONE: Log the Date, Bill number and Total Amount in the Sales table in database.
Read the OrderNo.txt file and get the value of the Order number in file. Increment
the Order number and save it in the file.
Return to Main Screen.

MEMBER DATABASE
Read database table: Members
SEARCH: Enter Card number to perform search and update member details.
ADD: Add a new member to the database.
SAVE: Save the details new member details or modified details.
MODIFY: Allow user to make changes to a member’s information.
BACK: Return to the Main Screen

43
INVENTORY
Select Supplier from dropdown menu. TIN number will appear. Enter Supplier
Reference No. (From Supplier’s bill) and then select the Category, Product and
Quantity received.
CANCEL: Return to Main Screen
CONFIRM: Find the selected product in the database and add the mentioned
quantity to the stock of the product. This will also enter all details including Date,
Supplier Name, Reference number, Product received and Quantity in the Inventory
log.

LOGOUT: Close the Main screen and return to the LOGIN Screen

2.1.3 Data Structure


The
data
is
stored
in
two
Microsoft
Access
database
files.
One
is
Products.mdb
and

one
is
Database.mdb.


The
Products
file
contains
categories
of
different
products
in
the
form
of
tables
with

the
Product
Code,
Name,
Price
and
Stock
of
each
product.

The
Database
file
contains
all
other
information
like
Supplier
list,
Sales
log,
Inventory

log,
Membership
details
and
User
login
credentials.

There
are
two
additional
text
files.
One
is
CardNo.txt,
which
is
used
to
auto‐generate

the
Membership
card
number
for
new
members.
And
the
other
is
OrderNo.txt
which

is
used
to
auto‐generate
Bill
numbers
for
each
new
bill
generated.
These
numbers
are

then
stored
into
the
database
with
Member
details
and
Sales
log.

2.2 Intended benefits


The user will be able to have some benefit form the software developed.
• The user will be able to view the stock of each product which one click and
will not have to count the stock everyday and write it in a book.
• When a sale will be made, the stock will be automatically updated, so there
is no counting involved.
• The user can also make new Sales with the software and the sale will be
logged onto the computer, so the Sales Book is no longer required to be
maintained manually and updated after each sale.
• The Members Database is connected to sales, so there is no need to lookup
for Membership Card Number manually in the book, the Card will be
automatically validated and discount will be given if number is valid.

44
• Member Database can also be maintained more conveniently using the
software to search for members and update their details.
• The Administrator can also see Reports of Sales and Inventory log with one
click and print it.

2.3 Limits of the scope of the solution

2.3.1 System limitations


Though
the
software
takes
care
of
most
vital
areas,
there
are
limitations
to
the

system
and
some
things
would
have
to
be
done
manually.
The
system
will
not
be
able

to
handle
accounting
and
other
aspects
of
the
store.


2.3.2 File size estimation

FILE
:
Database.mdb

Table:
Inventory

Total number of bytes in 1 record = 140
10% Slack = 14
Estimated number of records per month = 5
Total number of bytes for 5 records = 140 + 14 X 5 = 770

Table:
Members

Total number of bytes in 1 record = 270
10% Slack = 27
Estimated number of records per month = 10
Total number of bytes for 10 records = 270 + 27 X 10 = 2970

Table:
Sales

Total number of bytes in 1 record = 25
10% Slack = 2.5
Estimated number of records per month = 500
Total number of bytes for 500 records = 25 + 2.5 X 500 = 13750

Table:
Users

Total number of bytes in 1 record = 80
10% Slack = 8
Approximate fixed number of records = 5
Total number of bytes for 5 records = 80 + 8 X 5 = 440

45
Table:
Suppliers

Total number of bytes in 1 record = 250
10% Slack = 25
Approximate fixed number of records = 10
Total number of bytes for 10 records = 250 + 25 X 10 = 2750

Total
Size
of
Database.mdb
=
20680
bytes
(20.19
kb)


FILE
:
Products.mdb

Product
Table

Total number of bytes in 1 record = 70
10% Slack = 7
Approximate fixed number of records = 15
Total number of bytes for 15 records = 70 + 7 X 15 = 1155

There
are
12
Product
Tables
of
same
size:
1155
X
12
=
13860


Total
Size
of
Products.mdb
=
13860
bytes
(13.53
kb)


FILE:
CardNo.txt



–


Fixed
size
of
1
kb

FILE:
OrderNo.txt

–

Fixed
size
of
1
kb


TOTAL
of
all
files
(in
kb)
=
20.19
+
13.53
+
1
+
1
=
35.72
kb









46
3. Software Development, Testing and
Implementation
3.1 Development and Testing
PROGRAM NAME: GARMENT STORE SYSTEM
AUTHOR: Jash Sayani (1332)
SCHOOL: Podar International School (IN-420)
LANGUAGE: Microsoft Visual Basic 6.0
DATA STORAGE: Microsoft Access Database and Text file

Libraries Used
Microsoft
ADO
Data
Control
6.0
(OLEDB)
–
For
Connecting
to
Access
Database

Microsoft
DataGrid
Control
6.0
(OLEDB)
–
For
Displaying
Database
content
in
table

Microsoft
FlexGrid
Control
6.0
–
For
working
with
tables
while
taking
Order


3.1.1 Program Listing

1 '********************************************************
2 ' FORM NAME: frmLogin
3 ' PURPOSE: Login screen for the program
4 '********************************************************
5
6 'Event when the LOGIN Form loads
7
8 Private Sub Form_Load()
9
10 'ADODC Component name: UsersDB
11
12 'Setting Connection String of UsersDB Adodc component
13 UsersDB.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=Database.mdb;Persist Security Info=False"
14
15 'Setting Record source (Table name) for UsersDB
16 UsersDB.RecordSource = "Users"
17
18
19 End Sub
20
21
22 'cmdLogin click event

47
23 'Triggers when the "LOGIN" Button is pressed
24 'Function: Validates the user and loads the main program
25
26 Private Sub cmdLogin_Click()
27
28 'If user is admin (pre-defined account), then AdminPanel is opened
29 If (Username.Text = "admin" And Password.Text = "attire") Then
30
31 'Opens the ADMIN PANEL Form
32 frmAdminPanel.Show
33 'Closes the LOGIN Form
34 Unload Me
35
36 Else
37
38 'If user is not admin, then login information is checked from the database
39
40 'Moving to the first record of the database
41 UsersDB.Recordset.MoveFirst
42
43 'All records are checked untill the end of the database is reached
44 Do Until UsersDB.Recordset.EOF
45 'Checking if the username entered,
46 ‘exists in the database and the password matches
47 If (UsersDB.Recordset(1) = Username.Text And
48 UsersDB.Recordset(2) = Password.Text) Then
49 'If login information is correct, the MAIN Form is opened
50 frmMain.Show
51 'Closes the LOGIN Form
52 Unload Me
53 Exit Sub
54
55 Else
56 'If login information is not correct, the next record in
57 database is checked
58 UsersDB.Recordset.MoveNext
59 End If
60 Loop
61
62 'When all login records are checked and none of them match, a message
box with message "INVALID LOGIN" is shown
63 MsgBox ("INVALID LOGIN")
64
65 End If
66
67 End Sub
68
69 'cmdExit click event

48
70 'Triggers when the "EXIT" Button is pressed
71 'Function: Exits the program
72
73 Private Sub cmdExit_Click()
74
75 'Exits the program
76 Unload Me
77
78 End Sub
79

ADMIN PANEL FORM

80 '********************************************************
81 ' FORM NAME: frmAdminPanel
82 ' PURPOSE: Allow owner to administer the system
83 '********************************************************
84
85 'Event when the ADMIN PANEL Form loads
86
87 Private Sub Form_Load()
88
89 'Storing the Date in the DisplayDate variable
90 DisplayDate = DateValue(Now)
91
92 'Formating and displaying the date as DD / MM / YYYY
93 DateLabel.Caption = Format(DisplayDate, "DD / MM / YYYY")
94
95 End Sub
96
97 'TimeRefresh Timer
98 'Function: Refreshes the Time displayed on the AdminPanel form

49
99
100 Private Sub TimeRefresh_Timer()
101
102 'Setting the DisplayTime variable with the current system time
103 DisplayTime = TimeValue(Now)
104
105 'Setting the caption of the TimeLabel as DisplayTime (Variable in
which the time is stored)
106 TimeLabel.Caption = DisplayTime
107
108 End Sub
109
110 'cmdBackupDB click event
111 'Triggers when the "BACKUP DATABASE" Button is pressed
112 'Function: Calls Backup Database Function
113
114 Private Sub cmdBackupDB_Click()
115
116 Call BackupDB
117
118 End Sub
119
120 'cmdHelp click event
121 'Triggers when the "HELP" Button is pressed
122 'Function: Displays Help screen
123
124 Private Sub cmdHelp_Click()
125 frmAdminHelp.Show
126
127 End Sub
128
129 'cmdLogout click event
130 'Triggers when the "LOG OUT" Button is pressed
131 'Function: Returns to Login screen
132
133 Private Sub cmdLogout_Click()
134 frmLogin.Show
135 Unload Me
136
137 End Sub
138
139 'cmdManageProd click event
140 'Triggers when the "MANAGE PRODUCTS" Button is pressed
141 'Function: Opens the Manage Products form
142
143 Private Sub cmdManageProd_Click()
144 ‘Opening the Manage Products form
145 frmManageProd.Show

50
146 ‘Closing Admin Panel
147 Unload Me
148
149 End Sub
150
151 'cmdManageUsers click event
152 'Triggers when the "MANAGE USERS" Button is pressed
153 'Function: Opens the Manage Users form
154
155 Private Sub cmdManageUsers_Click()
156 ‘Opening Manage Users form
157 frmUsers.Show
158 ‘Closing Admin Panel
159 Unload Me
160
161 End Sub
162 'cmdReports click event
163 'Triggers when the "REPORTS" Button is pressed
164 'Function: Opens SELECT REPORT Window
165
166 Private Sub cmdReports_Click()
167 ‘Opening Show Reports window
168 frmReports.Show
169
170 End Sub
171
172 'cmdRestoreDB click event
173 'Triggers when the "RESTORE DATABASE" Button is pressed
174 'Function: Calls the RestoreDB Function
175
176 Private Sub cmdRestoreDB_Click()
177
178 Call RestoreDB
179
180 End Sub
181
182 'cmdSuppliers click event
183 'Triggers when the "SUPPLIERS" Button is pressed
184 'Function: Shows the Suppliers Form
185
186 Private Sub cmdSuppliers_Click()
187 ‘Opening the Suppliers form
188 frmSuppliers.Show
189 ‘Closing the Admin Panel
190 Unload Me
191
192 End Sub
193

51
REPORTS FORM

194
195 '********************************************************
196 ' FORM NAME: frmReports
197 ' PURPOSE: Opens Reports window with Report Options
198 '********************************************************
199
200
201 'cmdInventory click event
202 'Triggers when the "INVENTORY" Button is pressed
203 'Function: Opens Inventory Report and closes the Select
204 'Report window
205
206 Private Sub cmdInventory_Click()
207 ‘Opens the Inventory Report
208 InventoryReport.Show
209 ‘Closes the Select Report window
210 Unload Me
211
212 End Sub
213
214 'cmdMember click event
215 'Triggers when the "MEMBERS" Button is pressed
216 'Function: Opens Members List and closes the Select
217 'Report window
218
219 Private Sub cmdMember_Click()
220 ‘Opens the Inventory Report
221 MemberReport.Show
222 ‘Closes the Select Report window
223 Unload Me
224
225 End Sub
226
227 'cmdSales click event
228 'Triggers when the "SALES" Button is pressed
229 'Function: Opens Sales Report and closes the Select
230 'Report window
231
232 Private Sub cmdSales_Click()

52
233 ‘Opens the Inventory Report
234 SalesReport.Show
235 ‘Closes the Select Report window
236 Unload Me
237
238 End Sub

MANAGE PRODUCTS FORM

239
240 '********************************************************
241 ' FORM NAME: frmManageProd
242 ' PURPOSE: Allows Administrator to manage products
243 '********************************************************
244
245 'Event when the MANAGE PRODUCTS Form loads
246 Private Sub Form_Load()
247
248 ‘Setting Grid to Invisible, initially
249 ProdGrid.Visible = False
250
251 ‘Filling Categories in DropDown menu
252 ProdCat.AddItem "MALE - SHIRTS"
253 ProdCat.AddItem "MALE - T-SHIRTS"
254 ProdCat.AddItem "MALE - JEANS"
255 ProdCat.AddItem "MALE - SHORTS"
256 ProdCat.AddItem "MALE - TROUSERS"
257 ProdCat.AddItem "MALE - JACKETS"
258 ProdCat.AddItem "FEMALE - TOPS"
259 ProdCat.AddItem "FEMALE - CAPRIS"
260 ProdCat.AddItem "FEMALE - JEANS"
261 ProdCat.AddItem "FEMALE - SKIRTS"
262 ProdCat.AddItem "FEMALE - TROUSERS"
263 ProdCat.AddItem "FEMALE - STOCKINGS"
264
265 ‘Disabling buttons while grid is invisible
266 cmdAdd.Enabled = False
267 cmdModify.Enabled = False
268 cmdDelete.Enabled = False
269
270 End Sub
271

53
272 'ProdCat click event
273 'Triggers when an option from Product category is selected
274 'Function: Fills the product dropdown menu with selected
275 'category
276
277 Private Sub ProdCat_Click()
278
279 ‘When option is selected, Grid will be visible
280 ProdGrid.Visible = True
281
282 ‘Filling the Product dropdown menu with products selected category
283
284 Select Case ProdCat.List(ProdCat.ListIndex)
285
286 Case "MALE - SHIRTS"
287 Set ProdGrid.DataSource = M_Shirts
288
289 ProdGrid.Columns(0).Width = 1250
290 ProdGrid.Columns(1).Width = 2150
291 ProdGrid.Columns(2).Width = 1130
292 ProdGrid.Columns(3).Width = 950
293
294 Case "MALE - T-SHIRTS"
295 Set ProdGrid.DataSource = M_Tshirts
296
297 ProdGrid.Columns(0).Width = 1250
298 ProdGrid.Columns(1).Width = 2150
299 ProdGrid.Columns(2).Width = 1130
300 ProdGrid.Columns(3).Width = 950
301
302 Case "MALE - JEANS"
303 Set ProdGrid.DataSource = M_Jeans
304
305 ProdGrid.Columns(0).Width = 1250
306 ProdGrid.Columns(1).Width = 2150
307 ProdGrid.Columns(2).Width = 1130
308 ProdGrid.Columns(3).Width = 950
309
310 Case "MALE - SHORTS"
311 Set ProdGrid.DataSource = M_Shorts
312
313 ProdGrid.Columns(0).Width = 1250
314 ProdGrid.Columns(1).Width = 2150
315 ProdGrid.Columns(2).Width = 1130
316 ProdGrid.Columns(3).Width = 950
317
318 Case "MALE - TROUSERS"
319 Set ProdGrid.DataSource = M_Trousers

54
320
321 ProdGrid.Columns(0).Width = 1250
322 ProdGrid.Columns(1).Width = 2150
323 ProdGrid.Columns(2).Width = 1130
324 ProdGrid.Columns(3).Width = 950
325
326 Case "MALE - JACKETS"
327 Set ProdGrid.DataSource = M_Jackets
328
329 ProdGrid.Columns(0).Width = 1250
330 ProdGrid.Columns(1).Width = 2150
331 ProdGrid.Columns(2).Width = 1130
332 ProdGrid.Columns(3).Width = 950
333
334 Case "FEMALE - TOPS"
335 Set ProdGrid.DataSource = F_Tops
336
337 ProdGrid.Columns(0).Width = 1250
338 ProdGrid.Columns(1).Width = 2150
339 ProdGrid.Columns(2).Width = 1130
340 ProdGrid.Columns(3).Width = 950
341
342 Case "FEMALE - CAPRIS"
343 Set ProdGrid.DataSource = F_Capris
344
345 ProdGrid.Columns(0).Width = 1250
346 ProdGrid.Columns(1).Width = 2150
347 ProdGrid.Columns(2).Width = 1130
348 ProdGrid.Columns(3).Width = 950
349
350 Case "FEMALE - JEANS"
351 Set ProdGrid.DataSource = F_Jeans
352
353 ProdGrid.Columns(0).Width = 1250
354 ProdGrid.Columns(1).Width = 2150
355 ProdGrid.Columns(2).Width = 1130
356 ProdGrid.Columns(3).Width = 950
357
358 Case "FEMALE - SKIRTS"
359 Set ProdGrid.DataSource = F_Skirts
360
361 ProdGrid.Columns(0).Width = 1250
362 ProdGrid.Columns(1).Width = 2150
363 ProdGrid.Columns(2).Width = 1130
364 ProdGrid.Columns(3).Width = 950
365
366 Case "FEMALE - TROUSERS"
367 Set ProdGrid.DataSource = F_Trousers

55
368
369 ProdGrid.Columns(0).Width = 1250
370 ProdGrid.Columns(1).Width = 2150
371 ProdGrid.Columns(2).Width = 1130
372 ProdGrid.Columns(3).Width = 950
373
374 Case "FEMALE - STOCKINGS"
375 Set ProdGrid.DataSource = F_Stockings
376
377 ProdGrid.Columns(0).Width = 1250
378 ProdGrid.Columns(1).Width = 2150
379 ProdGrid.Columns(2).Width = 1130
380 ProdGrid.Columns(3).Width = 950
381
382 End Select
383
384 ‘Enabling the buttons once grid is filled
385 cmdAdd.Enabled = True
386 cmdModify.Enabled = True
387 cmdDelete.Enabled = True
388
389 End Sub
390
391 'cmdAdd click event
392 'Triggers when the "ADD" Button is pressed
393 'Function: Add products to database
394
395 Private Sub cmdAdd_Click()
396
397 ‘Adding record to selected category
398 If (ProdCat.Text = "MALE - SHIRTS") Then
399 M_Shirts.Recordset.AddNew
400
401 ElseIf (ProdCat.Text = "MALE - T-SHIRTS") Then
402 M_Tshirts.Recordset.AddNew
403
404 ElseIf (ProdCat.Text = "MALE - JEANS") Then
405 M_Jeans.Recordset.AddNew
406
407 ElseIf (ProdCat.Text = "MALE - SHORTS") Then
408 M_Shorts.Recordset.AddNew
409
410 ElseIf (ProdCat.Text = "MALE - TROUSERS") Then
411 M_Trousers.Recordset.AddNew
412
413 ElseIf (ProdCat.Text = "MALE - JACKETS") Then
414 M_Jackets.Recordset.AddNew
415

56
416 ElseIf (ProdCat.Text = "FEMALE - TOPS") Then
417 F_Tops.Recordset.AddNew
418
419 ElseIf (ProdCat.Text = "FEMALE - CAPRIS") Then
420 F_Capris.Recordset.AddNew
421
422 ElseIf (ProdCat.Text = "FEMALE - JEANS") Then
423 F_Jeans.Recordset.AddNew
424
425 ElseIf (ProdCat.Text = "FEMALE - SKIRTS") Then
426 F_Skirts.Recordset.AddNew
427
428 ElseIf (ProdCat.Text = "FEMALE - TROUSERS") Then
429 F_Trousers.Recordset.AddNew
430
431 ElseIf (ProdCat.Text = "FEMALE - STOCKINGS") Then
432 F_Stockings.Recordset.AddNew
433
434 End If
435
436 ‘Enabling Save button and disabling Add button
437 cmdSave.Enabled = True
438 cmdAdd.Enabled = False
439
440 End Sub
441
442 'cmdBack click event
443 'Triggers when the "BACK" Button is pressed
444 'Function: Closes the MANAGE PRODUCTS screen and
445 'returns to the ADMIN PANEL
446
447 Private Sub cmdBack_Click()
448 ‘Opening Admin Panel
449 frmAdminPanel.Show
450 ‘Closing Manage Products Form
451 Unload Me
452
453 End Sub
454
455 'cmdDelete click event
456 'Triggers when the "DELETE" Button is pressed
457 'Function: Deletes selected record from database

458 Private Sub cmdDelete_Click()


459
460 ‘Deleting record for selected table and showing confirmation dialog

57
461 If (ProdCat.Text = "MALE - SHIRTS") Then
462
463 If MsgBox("Are you sure?", vbYesNo, "CONFIRMATION") =
464 vbYes Then
465
466 'When the admin selects "Yes"
467
468 'Deleting the selected user from the database
469 M_Shirts.Recordset.Delete
470
471 'Displaying a message box with message "User Deleted"
472 MsgBox ("Product Deleted")
473
474 'Moving the cursor to the previous record after deleting the
475 ‘selected record
476 M_Shirts.Recordset.MovePrevious
477
478 End If
479
480 ElseIf (ProdCat.Text = "MALE - T-SHIRTS") Then
481
482 If MsgBox("Are you sure?", vbYesNo, "CONFIRMATION") =
483 vbYes Then
484
485 'When the admin selects "Yes"
486
487 'Deleting the selected user from the database
488 M_Tshirts.Recordset.Delete
489
490 'Displaying a message box with message "User Deleted"
491 MsgBox ("Product Deleted")
492
493 'Moving the cursor to the previous record after deleting the
selected record
494 M_Tshirts.Recordset.MovePrevious
495
496 End If
497
498 ElseIf (ProdCat.Text = "MALE - JEANS") Then
499

500 If MsgBox("Are you sure?", vbYesNo, "CONFIRMATION") =


501 vbYes Then
502
503 'When the admin selects "Yes"
504

58
505 'Deleting the selected user from the database
506 M_Jeans.Recordset.Delete
507
508 'Displaying a message box with message "User Deleted"
509 MsgBox ("Product Deleted")
510
511 'Moving the cursor to the previous record after deleting the
selected record
512 M_Jeans.Recordset.MovePrevious
513
514 End If
515
516 ElseIf (ProdCat.Text = "MALE - SHORTS") Then
517
518 If MsgBox("Are you sure?", vbYesNo, "CONFIRMATION") =
519 vbYes Then
520
521 'When the admin selects "Yes"
522
523 'Deleting the selected user from the database
524 M_Shorts.Recordset.Delete
525
526 'Displaying a message box with message "User Deleted"
527 MsgBox ("Product Deleted")
528
529 'Moving the cursor to the previous record after deleting the
selected record
530 M_Shorts.Recordset.MovePrevious
531
532 End If
533
534 ElseIf (ProdCat.Text = "MALE - TROUSERS") Then
535
536 If MsgBox("Are you sure?", vbYesNo, "CONFIRMATION") =
537 vbYes Then
538
539 'When the admin selects "Yes"
540
541 'Deleting the selected user from the database
542 M_Trousers.Recordset.Delete
543
544 'Displaying a message box with message "User Deleted"
545 MsgBox ("Product Deleted")
546
547 'Moving the cursor to the previous record after deleting the
selected record
548 M_Trousers.Recordset.MovePrevious
549

59
550 End If
551
552 ElseIf (ProdCat.Text = "MALE - JACKETS") Then
553
554 If MsgBox("Are you sure?", vbYesNo, "CONFIRMATION") =
555 vbYes Then
556
557 'When the admin selects "Yes"
558
559 'Deleting the selected user from the database
560 M_Jackets.Recordset.Delete
561
562 'Displaying a message box with message "User Deleted"
563 MsgBox ("Product Deleted")
564
565 'Moving the cursor to the previous record after deleting the
selected record
566 M_Jackets.Recordset.MovePrevious
567
568 End If
569
570 ElseIf (ProdCat.Text = "FEMALE - TOPS") Then
571
572 If MsgBox("Are you sure?", vbYesNo, "CONFIRMATION") =
573 vbYes Then
574
575 'When the admin selects "Yes"
576
577 'Deleting the selected user from the database
578 F_Tops.Recordset.Delete
579
580 'Displaying a message box with message "User Deleted"
581 MsgBox ("Product Deleted")
582
583 'Moving the cursor to the previous record after deleting the
selected record
584 F_Tops.Recordset.MovePrevious
585
586 End If
587
588 ElseIf (ProdCat.Text = "FEMALE - CAPRIS") Then
589
590 If MsgBox("Are you sure?", vbYesNo, "CONFIRMATION") =
591 vbYes Then
592
593 'When the admin selects "Yes"
594
595 'Deleting the selected user from the database

60
596 F_Capris.Recordset.Delete
597
598 'Displaying a message box with message "User Deleted"
599 MsgBox ("Product Deleted")
600
601 'Moving the cursor to the previous record after deleting the
selected record
602 F_Capris.Recordset.MovePrevious
603
604 End If
605
606 ElseIf (ProdCat.Text = "FEMALE - JEANS") Then
607
608 If MsgBox("Are you sure?", vbYesNo, "CONFIRMATION") =
609 vbYes Then
610
611 'When the admin selects "Yes"
612
613 'Deleting the selected user from the database
614 F_Jeans.Recordset.Delete
615
616 'Displaying a message box with message "User Deleted"
617 MsgBox ("Product Deleted")
618
619 'Moving the cursor to the previous record after deleting the
selected record
620 F_Jeans.Recordset.MovePrevious
621
622 End If
623
624 ElseIf (ProdCat.Text = "FEMALE - SKIRTS") Then
625
626 If MsgBox("Are you sure?", vbYesNo, "CONFIRMATION") =
627 vbYes Then
628
629 'When the admin selects "Yes"
630
631 'Deleting the selected user from the database
632 F_Skirts.Recordset.Delete
633
634 'Displaying a message box with message "User Deleted"
635 MsgBox ("Product Deleted")
636
637 'Moving the cursor to the previous record after deleting the
selected record
638 F_Skirts.Recordset.MovePrevious
639
640 End If

61
641
642 ElseIf (ProdCat.Text = "FEMALE - TROUSERS") Then
643
644 If MsgBox("Are you sure?", vbYesNo, "CONFIRMATION") =
645 vbYes Then
646
647 'When the admin selects "Yes"
648
649 'Deleting the selected user from the database
650 F_Trousers.Recordset.Delete
651
652 'Displaying a message box with message "User Deleted"
653 MsgBox ("Product Deleted")
654
655 'Moving the cursor to the previous record after deleting the
selected record
656 F_Trousers.Recordset.MovePrevious
657
658 End If
659
660 ElseIf (ProdCat.Text = "FEMALE - STOCKINGS") Then
661
662 If MsgBox("Are you sure?", vbYesNo, "CONFIRMATION") =
663 vbYes Then
664
665 'When the admin selects "Yes"
666
667 'Deleting the selected user from the database
668 F_Stockings.Recordset.Delete
669
670 'Displaying a message box with message "User Deleted"
671 MsgBox ("Product Deleted")
672
673 'Moving the cursor to the previous record after deleting the
selected record
674 F_Stockings.Recordset.MovePrevious
675
676 End If
677
678 End If
679
680
681 End Sub
682
683 'cmdModify click event
684 'Triggers when the "MODIFY" Button is pressed
685 'Function: Updates the entries of selected table
686

62
687 Private Sub cmdModify_Click()
688
689 cmdModify.Enabled = False
690 cmdSave.Enabled = True
691
692 End Sub
693
694 Private Sub cmdSave_Click()
695
696 If (ProdCat.Text = "MALE - SHIRTS") Then
697 M_Shirts.Recordset.Update
698 M_Shirts.Recordset.Requery
699
700 ElseIf (ProdCat.Text = "MALE - T-SHIRTS") Then
701 M_Tshirts.Recordset.Update
702 M_Tshirts.Recordset.Requery
703
704 ElseIf (ProdCat.Text = "MALE - JEANS") Then
705 M_Jeans.Recordset.Update
706 M_Jeans.Recordset.Requery
707
708 ElseIf (ProdCat.Text = "MALE - SHORTS") Then
709 M_Shorts.Recordset.Update
710 M_Shorts.Recordset.Requery
711
712 ElseIf (ProdCat.Text = "MALE - TROUSERS") Then
713 M_Trousers.Recordset.Update
714 M_Trousers.Recordset.Requery
715
716 ElseIf (ProdCat.Text = "MALE - JACKETS") Then
717 M_Jackets.Recordset.Update
718 M_Jackets.Recordset.Requery
719
720 ElseIf (ProdCat.Text = "FEMALE - TOPS") Then
721 F_Tops.Recordset.Update
722 F_Tops.Recordset.Requery
723
724 ElseIf (ProdCat.Text = "FEMALE - CAPRIS") Then
725 F_Capris.Recordset.Update
726 F_Capris.Recordset.Requery
727
728 ElseIf (ProdCat.Text = "FEMALE - JEANS") Then
729 F_Jeans.Recordset.Update
730 F_Jeans.Recordset.Requery
731
732 ElseIf (ProdCat.Text = "FEMALE - SKIRTS") Then
733 F_Skirts.Recordset.Update
734 F_Skirts.Recordset.Requery

63
735
736 ElseIf (ProdCat.Text = "FEMALE - TROUSERS") Then
737 F_Trousers.Recordset.Update
738 F_Trousers.Recordset.Requery
739
740 ElseIf (ProdCat.Text = "FEMALE - STOCKINGS") Then
741 F_Stockings.Recordset.Update
742 F_Stockings.Recordset.Requery
743
744 End If
745
746 ‘Displaying Success message
747 MsgBox ("Saved!")
748
749 If (cmdModify.Enabled = False) Then
750 cmdModify.Enabled = True
751 End If
752
753 cmdAdd.Enabled = True
754 cmdSave.Enabled = False
755
756 End Sub

MANAGE USERS FORM

757 '********************************************************
758 ' FORM NAME: frmUsers
759 ' PURPOSE: Allows the Administrator to manage users
760 '********************************************************
761
762 ‘Variable used to track whether record is added or modified
763 Public Modify As Boolean
764
765 'Event when the MANAGE USERS Form loads
766
767 Private Sub Form_Load()
768
769
770 'ADODC Component name: UsersDB
771
772 'Setting Connection String of UsersDB Adodc component
773 UsersDB.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;

64
774 Data Source=Database.mdb;Persist Security Info=False"
775
776 'Setting Record source (Table name) for UsersDB
777 UsersDB.RecordSource = "Users"
778
779 End Sub
780
781 'cmdAdd click event
782 'Triggers when the "ADD" Button is pressed
783 'Function: A new record is added to the Users database
784
785 Private Sub cmdAdd_Click()
786
787 ‘Enabling fields for entry when new record is being added
788 StaffName.Enabled = True
789 Username.Enabled = True
790 Password.Enabled = True
791
792 cmdSave.Enabled = True
793 cmdAdd.Enabled = False
794
795 'Refreshing the MembersDB control
796 UsersDB.Refresh
797
798 'Adding a new record to MembersDB
799 UsersDB.Recordset.AddNew
800
801 End Sub
802
803 'cmdBack click event
804 'Triggers when the "BACK" Button is pressed
805 'Function: The MANAGE USERS Form is closed and
806 'ADMIN PANEL Form is opened
807
808 Private Sub cmdBack_Click()
809
810 'Opening the ADMIN PANEL Form
811 frmAdminPanel.Show
812
813 'Closing the MANAGE USERS Form
814 Unload Me
815
816 End Sub
817
818 'cmdModify click event
819 'Triggers when the "MODIFY" Button is pressed
820 'Function: Modifies the user details to the database
821

65
822 Private Sub cmdModify_Click()
823
824 ‘Enabling fields for entry for modification
825 StaffName.Enabled = True
826 Username.Enabled = True
827 Password.Enabled = True
828
829 Modify = True
830
831 cmdSave.Enabled = True
832
833 cmdModify.Enabled = False
834
835
836
837 End Sub
838
839 'cmdSave click event
840 'Triggers when the "SAVE" Button is pressed
841 'Function: The user details are saved in the Users database
842
843 Private Sub cmdSave_Click()
844
845 With UsersDB.Recordset
846
847 'Adding the Staff Name
848 UsersDB.Recordset.Fields("Staff Name") = StaffName.Text
849
850 'Adding the Username
851 UsersDB.Recordset.Fields("Username") = Username.Text
852
853 'Adding the Password
854 UsersDB.Recordset.Fields("Password") = Password.Text
855
856 'Updating the Members database
857 UsersDB.Recordset.Update
858 UsersDB.Recordset.Requery
859
860 End With
861
862 cmdSave.Enabled = False
863 cmdAdd.Enabled = True
864
865 ‘If Modify Boolean is true, then Update message will be displayed
866 ‘Or else, new member creation message will be displayed
867 If (Modify = True) Then
868 MsgBox ("User Updated Successfully.")
869 Modify = False

66
870 Else
871 MsgBox ("User Created Successfully.")
872 End If
873
874 StaffName.Enabled = False
875 Username.Enabled = False
876 Password.Enabled = False
877
878 cmdModify.Enabled = True
879
880 End Sub
881
882
883 'cmdDelete click event
884 'Triggers when the "DELETE" Button is pressed
885 'Function: The select user is deleted from the User database
886
887 Private Sub cmdDelete_Click()
888
889 'Displaying a confirmation dialog with message "Are you sure?"
890 If MsgBox("Are you sure?", vbYesNo, "CONFIRMATION") = vbYes
Then
891
892 'When the user selects "Yes"
893
894 'Deleting the selected user from the database
895 UsersDB.Recordset.Delete
896
897 'Displaying a message box with message "User Deleted"
898 MsgBox ("User Deleted")
899
900 'Moving the cursor to the previous record after deleting the
selected record
901 UsersDB.Recordset.MovePrevious
902
903 End If
904
905 End Sub
906

SUPPLIERS FORM

67
907 '********************************************************
908 ' FORM NAME: frmSuppliers
909 ' PURPOSE: Allows the Administrator to manage suppliers
910 '********************************************************
911
912 'Event when the SUPPLIERS Form loads
913
914 Private Sub Form_Load()
915
916 'ADODC Component name: SuppliersDB
917
918 'Setting Connection String of SuppliersDB Adodc component
919 SuppliersDB.ConnectionString = "Provider=Microsoft.Jet.
920 OLEDB.4.0;Data Source=Database.mdb;
921 Persist Security Info=False"
922
923 'Setting Record source (Table name) for SuppliersDB
924 SuppliersDB.RecordSource = "Suppliers"
925
926 End Sub
927
928 'cmdAdd click event
929 'Triggers when the "ADD" Button is pressed
930 'Function: Allows the Administrator to ADD Suppliers to
931 'database
932
933 Private Sub cmdAdd_Click()
934
935 'Adding a new record to the record database
936 SuppliersDB.Recordset.AddNew
937
938 'Enabling the SAVE Button
939 cmdSave.Enabled = True
940
941 End Sub
942
943 'cmdBack click event
944 'Triggers when the "BACK" Button is pressed
945 'Function: The MANAGE SUPPLIERS Form closes and the
946 ADMIN PANEL Form is opened
947
948 Private Sub cmdBack_Click()
949
950 'Opening the ADMIN PANEL Form
951 frmAdminPanel.Show
952
953 'Closing the MANAGE SUPPLIERS Form
954 Unload Me

68
955
956 End Sub
957
958 'cmdDelete click event
959 'Triggers when the "DELETE" Button is pressed
960 'Function: The selected Supplier is deleted from the database
961
962 Private Sub cmdDelete_Click()
963
964 'Displaying a confirmation dialog with message "Are you sure?"
965 If MsgBox("Are you sure?", vbYesNo, "CONFIRMATION") = vbYes
Then
966
967 'When the user selects "Yes"
968
969 'Deleting the selected Supplier from the database
970 SuppliersDB.Recordset.Delete
971
972 'Displaying a message box with message "Supplier Deleted"
973 MsgBox ("Supplier Deleted")
974
975 'Moving the cursor to the previous record after deleting the
selected record
976 SuppliersDB.Recordset.MovePrevious
977
978 End If
979
980 End Sub
981
982 'cmdModify click event
983 'Triggers when the "MODIFY" Button is pressed
984 'Function: The modification to a Supplier's information is
985 'updated to the database
986
987 Private Sub cmdModify_Click()
988
989 'The modification to the Supplier's information is updated to the
database
990 SuppliersDB.Recordset.Update
991
992 'Displaying a message box with message "Supplier Information
Updated"
993 MsgBox ("Supplier Information Updated")
994
995 End Sub
996
997 'cmdSave click event
998 'Triggers when the "SAVE" Button is pressed

69
999 'Function: The Supplier is saved to the database
1000
1001 Private Sub cmdSave_Click()
1002
1003 'Saving the Supplier to the database
1004 SuppliersDB.Recordset.Save
1005
1006 'Displaying a message box with the message "Supplier Saved"
1007 MsgBox ("Supplier Saved")
1008
1009 cmdSave.Enabled = False
1010
1011 End Sub

MAIN FORM

1012 '********************************************************
1013 ' FORM NAME: frmMain
1014 ' PURPOSE: Allows user to operate the system
1015 '********************************************************
1016
1017 'Event when the MAIN Form loads
1018
1019 Private Sub Form_Load()
1020
1021 'Storing the Date in the DisplayDate variable
1022 DisplayDate = DateValue(Now)
1023
1024 'Formating and displaying the date as DD / MM / YYYY
1025 DateLabel.Caption = Format(DisplayDate, "DD / MM / YYYY")
1026
1027 End Sub
1028
1029 'TimeRefresh Timer
1030 'Function: Refreshes the Time displayed in the AdminPanel
1031
1032 Private Sub TimeRefresh_Timer()
1033
1034 'Setting the DisplayTime variable with the current system time
1035 DisplayTime = TimeValue(Now)
1036

70
1037 'Setting the caption of the TimeLabel as DisplayTime (Variable in
which the time is stored)
1038 TimeLabel.Caption = DisplayTime
1039
1040 End Sub
1041
1042 'cmdHelp click event
1043 'Triggers when the "HELP" Button is pressed
1044 'Function: Displays help window
1045
1046 Private Sub cmdHelp_Click()
1047 ‘Opening Help window
1048 frmMainHelp.Show
1049
1050 End Sub
1051
1052 'cmdProducts click event
1053 'Triggers when the "PRODUCTS" Button is pressed
1054 'Function: Opens Product form with categories
1055
1056 Private Sub cmdProducts_Click()
1057 frmProducts.Show
1058 Unload Me
1059
1060 End Sub
1061
1062 'cmdInventory click event
1063 'Triggers when the "INVENTORY" Button is pressed
1064 'Function: Opens the Inventory form to enter stock
1065
1066 Private Sub cmdInventory_Click()
1067 frmInventory.Show
1068 Unload Me
1069
1070 End Sub
1071
1072 'cmdMembers click event
1073 'Triggers when the "MEMBER DATABASE" Button is pressed
1074 'Function: Opens Member Database to Add and
1075 'Update Members
1076
1077 Private Sub cmdMembers_Click()
1078 frmMembers.Show
1079 Unload Me
1080
1081 End Sub
1082 'cmdSale click event
1083 'Triggers when the "NEW SALE" Button is pressed

71
1084 'Function: Open NEW SALE form to make a sale
1085
1086 Private Sub cmdSale_Click()
1087 frmNewSale.Show
1088 Unload Me
1089
1090 End Sub
1091
1092 'cmdLogout click event
1093 'Triggers when the "LOG OUT" Button is pressed
1094 'Function: Return to the LOGIN Screen
1095
1096 Private Sub cmdLogout_Click()
1097 frmLogin.Show
1098 Unload Me
1099
1100 End Sub
1101

PRODUCTS FORM

1102 '********************************************************
1103 ' FORM NAME: frmProducts
1104 ' PURPOSE: Displays product in categories for viewing
1105 '********************************************************
1106
1107 ‘String will contain category name of selected category
1108 Public Product As String
1109
1110 'cmdBack click event
1111 'Triggers when the "BACK" Button is pressed
1112 'Function: Closes PRODUCTS Form and returns to MAIN Form
1113
1114 Private Sub cmdBack_Click()
1115 frmMain.Show
1116 Unload Me
1117
1118 End Sub

72
1119 ‘All categories are listed and any button clicked, will open
1120 frmInfo and pass the “Product” string to the form so that it can
1121 display products in selected category.
1122
1123 Private Sub F_Capris_Click()
1124
1125 Product = "F_Capris"
1126 frmInfo.Show
1127
1128 End Sub
1129
1130 Private Sub F_Jeans_Click()
1131
1132 Product = "F_Jeans"
1133 frmInfo.Show
1134
1135 End Sub
1136
1137 Private Sub F_Skirts_Click()
1138
1139 Product = "F_Skirts"
1140 frmInfo.Show
1141
1142 End Sub
1143
1144 Private Sub F_Stockings_Click()
1145
1146 Product = "F_Stockings"
1147 frmInfo.Show
1148
1149 End Sub
1150
1151 Private Sub F_Tops_Click()
1152
1153 Product = "F_Tops"
1154 frmInfo.Show
1155
1156 End Sub
1157
1158 Private Sub F_Trousers_Click()
1159
1160 Product = "F_Trousers"
1161 frmInfo.Show
1162
1163 End Sub
1164
1165 Private Sub Form_Load()
1166

73
1167 End Sub
1168
1169 Private Sub M_Jackets_Click()
1170
1171 Product = "M_Jackets"
1172 frmInfo.Show
1173
1174 End Sub
1175
1176 Private Sub M_Jeans_Click()
1177
1178 Product = "M_Jeans"
1179 frmInfo.Show
1180
1181 End Sub
1182
1183 Private Sub M_Shirts_Click()
1184
1185 Product = "M_Shirts"
1186 frmInfo.Show
1187
1188 End Sub
1189
1190 Private Sub M_Shorts_Click()
1191
1192 Product = "M_Shorts"
1193 frmInfo.Show
1194
1195 End Sub
1196
1197 Private Sub M_Trousers_Click()
1198
1199 Product = "M_Trousers"
1200 frmInfo.Show
1201
1202 End Sub
1203
1204 Private Sub M_Tshirts_Click()
1205
1206 Product = "M_Tshirts"
1207 frmInfo.Show
1208
1209 End Sub
1210

74
INFO FORM

1211 '********************************************************
1212 ' FORM NAME: frmInfo
1213 ' PURPOSE: Displays list of products in grid of
1214 ' selected category in frmProducts
1215 '********************************************************
1216 Private Sub Form_Load()
1217
1218 'Switch case with Product string passed from previous
1219 (frmProducts) form. Grid will display products of selected
1220 category in the grid.
1221
1222 Select Case frmProducts.Product
1223
1224 Case "M_Shirts"
1225 frmInfo.Caption = "MALE SHIRTS - GARMENT STORE SYSTEM"
1226 Title.Caption = "MALE SHIRTS"
1227 Set DataGrid1.DataSource = M_Shirts
1228
1229 DataGrid1.Columns(0).Width = 1250
1230 DataGrid1.Columns(1).Width = 2150
1231 DataGrid1.Columns(2).Width = 1130
1232 DataGrid1.Columns(3).Width = 950
1233
1234
1235 Case "M_Tshirts"
1236 frmInfo.Caption = "MALE T-SHIRTS - GARMENT STORE SYSTEM"
1237 Title.Caption = "MALE T-SHIRTS"
1238 Set DataGrid1.DataSource = M_Tshirts
1239
1240 DataGrid1.Columns(0).Width = 1250
1241 DataGrid1.Columns(1).Width = 2150
1242 DataGrid1.Columns(2).Width = 1130
1243 DataGrid1.Columns(3).Width = 950
1244
1245
1246 Case "M_Jeans"
1247 frmInfo.Caption = "MALE JEANS - GARMENT STORE SYSTEM"
1248 Title.Caption = "MALE JEANS"
1249 Set DataGrid1.DataSource = M_Jeans
1250
1251 DataGrid1.Columns(0).Width = 1250
1252 DataGrid1.Columns(1).Width = 2150
1253 DataGrid1.Columns(2).Width = 1130

75
1254 DataGrid1.Columns(3).Width = 950
1255
1256
1257 Case "M_Shorts"
1258 frmInfo.Caption = "MALE SHORTS - GARMENT STORE SYSTEM"
1259 Title.Caption = "MALE SHORTS"
1260 Set DataGrid1.DataSource = M_Shorts
1261
1262 DataGrid1.Columns(0).Width = 1250
1263 DataGrid1.Columns(1).Width = 2150
1264 DataGrid1.Columns(2).Width = 1130
1265 DataGrid1.Columns(3).Width = 950
1266
1267
1268 Case "M_Trousers"
1269 frmInfo.Caption = "MALE TROUSERS - GARMENT STORE
SYSTEM"
1270 Title.Caption = "MALE TROUSERS"
1271 Set DataGrid1.DataSource = M_Trousers
1272
1273 DataGrid1.Columns(0).Width = 1250
1274 DataGrid1.Columns(1).Width = 2150
1275 DataGrid1.Columns(2).Width = 1130
1276 DataGrid1.Columns(3).Width = 950
1277
1278
1279 Case "M_Jackets"
1280 frmInfo.Caption = "MALE JACKETS - GARMENT STORE SYSTEM"
1281 Title.Caption = "MALE JACKETS"
1282 Set DataGrid1.DataSource = M_Jackets
1283
1284 DataGrid1.Columns(0).Width = 1250
1285 DataGrid1.Columns(1).Width = 2150
1286 DataGrid1.Columns(2).Width = 1130
1287 DataGrid1.Columns(3).Width = 950
1288
1289
1290 Case "M_Jeans"
1291 frmInfo.Caption = "MALE JEANS - GARMENT STORE SYSTEM"
1292 Title.Caption = "MALE JEANS"
1293 Set DataGrid1.DataSource = M_Jeans
1294
1295 DataGrid1.Columns(0).Width = 1250
1296 DataGrid1.Columns(1).Width = 2150
1297 DataGrid1.Columns(2).Width = 1130
1298 DataGrid1.Columns(3).Width = 950
1299
1300

76
1301 Case "F_Skirts"
1302 frmInfo.Caption = "FEMALE SKIRTS - GARMENT STORE SYSTEM"
1303 Title.Caption = "FEMALE SKIRTS"
1304 Set DataGrid1.DataSource = F_Skirts
1305
1306 DataGrid1.Columns(0).Width = 1250
1307 DataGrid1.Columns(1).Width = 2150
1308 DataGrid1.Columns(2).Width = 1130
1309 DataGrid1.Columns(3).Width = 950
1310
1311
1312 Case "F_Tops"
1313 frmInfo.Caption = "FEMALE TOPS - GARMENT STORE SYSTEM"
1314 Title.Caption = "FEMALE TOPS"
1315 Set DataGrid1.DataSource = F_Tops
1316
1317 DataGrid1.Columns(0).Width = 1250
1318 DataGrid1.Columns(1).Width = 2150
1319 DataGrid1.Columns(2).Width = 1130
1320 DataGrid1.Columns(3).Width = 950
1321
1322
1323 Case "F_Jeans"
1324 frmInfo.Caption = "FEMALE JEANS - GARMENT STORE SYSTEM"
1325 Title.Caption = "FEMALE JEANS"
1326 Set DataGrid1.DataSource = F_Jeans
1327
1328 DataGrid1.Columns(0).Width = 1250
1329 DataGrid1.Columns(1).Width = 2150
1330 DataGrid1.Columns(2).Width = 1130
1331 DataGrid1.Columns(3).Width = 950
1332
1333
1334 Case "F_Capris"
1335 frmInfo.Caption = "FEMALE CAPRIS - GARMENT STORE SYSTEM"
1336 Title.Caption = "FEMALE CAPRIS"
1337 Set DataGrid1.DataSource = F_Capris
1338
1339 DataGrid1.Columns(0).Width = 1250
1340 DataGrid1.Columns(1).Width = 2150
1341 DataGrid1.Columns(2).Width = 1130
1342 DataGrid1.Columns(3).Width = 950
1343
1344
1345 Case "F_Trousers"
1346 frmInfo.Caption = "FEMALE TROUSERS - GARMENT STORE
SYSTEM"
1347 Title.Caption = "FEMALE TROUSERS"

77
1348 Set DataGrid1.DataSource = F_Trousers
1349
1350 DataGrid1.Columns(0).Width = 1250
1351 DataGrid1.Columns(1).Width = 2150
1352 DataGrid1.Columns(2).Width = 1130
1353 DataGrid1.Columns(3).Width = 950
1354
1355
1356 Case "F_Stockings"
1357 frmInfo.Caption = "FEMALE STOCKINGS - GARMENT STORE
SYSTEM"
1358 Title.Caption = "FEMALE STOCKINGS"
1359 Set DataGrid1.DataSource = F_Stockings
1360
1361 DataGrid1.Columns(0).Width = 1250
1362 DataGrid1.Columns(1).Width = 2150
1363 DataGrid1.Columns(2).Width = 1130
1364 DataGrid1.Columns(3).Width = 950
1365
1366
1367 End Select
1368
1369 End Sub

NEW SALE FORM

1370 '********************************************************
1371 ' FORM NAME: frmNewSale
1372 ' PURPOSE: Lets the user perform a new sale
1373 '********************************************************
1374
1375 'Key is used to track the row of the cart and Discount will be
1376 true when a card number of member is found in database.
1377
1378 Public Key As Integer
1379 Public Discount As Boolean
1380
1381 'Event when the NEW SALE Form loads
1382
1383 Private Sub Form_Load()
1384
1385 ‘Filling Category dropdown menu with categories

78
1386
1387 ProdCat.AddItem "MALE - SHIRTS"
1388 ProdCat.AddItem "MALE - T-SHIRTS"
1389 ProdCat.AddItem "MALE - JEANS"
1390 ProdCat.AddItem "MALE - SHORTS"
1391 ProdCat.AddItem "MALE - TROUSERS"
1392 ProdCat.AddItem "MALE - JACKETS"
1393 ProdCat.AddItem "FEMALE - TOPS"
1394 ProdCat.AddItem "FEMALE - CAPRIS"
1395 ProdCat.AddItem "FEMALE - JEANS"
1396 ProdCat.AddItem "FEMALE - SKIRTS"
1397 ProdCat.AddItem "FEMALE - TROUSERS"
1398 ProdCat.AddItem "FEMALE - STOCKINGS"
1399
1400 ‘Setting Maximum length of Quantity as 4 characters
1401 Quantity.MaxLength = 4
1402
1403 'Initialiing Key as 0
1404 Key = 0
1405
1406
1407 'Naming the Columns of Cart
1408 Cart.TextMatrix(0, 0) = "PRODUCT"
1409 Cart.TextMatrix(0, 1) = "RATE"
1410 Cart.TextMatrix(0, 2) = "QTY"
1411 Cart.TextMatrix(0, 3) = "AMOUNT"
1412
1413 'Setting the width of the columns of Cart
1414 Cart.ColWidth(0) = 2320
1415 Cart.ColWidth(1) = 700
1416 Cart.ColWidth(2) = 500
1417 Cart.ColWidth(3) = 920
1418
1419 End Sub
1420
1421 'cmdAdd click event
1422 'Triggers when the "ADD" Button is pressed
1423 'Function: Adds selected product to the cart
1424
1425 Private Sub cmdAdd_Click()
1426
1427 Dim Stock As Integer
1428
1429 Key = (Key + 1)
1430
1431 If (ProdCat.ListIndex = 0) Then
1432
1433 M_Shirts.Recordset.MoveFirst

79
1434
1435 'Checking till end of database is reached
1436
1437 Do Until M_Shirts.Recordset.EOF
1438
1439 'Checking if product selected is the product in database
1440
1441 If (M_Shirts.Recordset.Fields.Item(1) = ProdList.Text) Then
1442
1443 Cart.TextMatrix(Key, 0) =
1444 (M_Shirts.Recordset.Fields.Item(0) & " / " & ProdList.Text)
1445
1446 'Adding the Price of product to Cart
1447 Cart.TextMatrix(Key, 1) =
1448 M_Shirts.Recordset.Fields.Item(2).Value
1449
1450 'Adding the Quantity to the Cart
1451 Cart.TextMatrix(Key, 2) = Quantity.Text
1452
1453 'Updating Stock
1454 Stock = Val(M_Shirts.Recordset.Fields.Item(3)) –
1455 Val(Quantity.Text)
1456
1457 M_Shirts.Recordset.Fields.Item(3) = Val(Stock)
1458
1459 'Adding the Amount (Price x Quantity) to the Cart
1460 Cart.TextMatrix(Key, 3) =
1461 (Val(M_Shirts.Recordset.Fields.Item(2).Value) *
1462 Val(Quantity.Text))
1463
1464 'Adding a row to the Cart for the next item
1465 Cart.AddItem ""
1466
1467 'Clearing the Product combo box and the Quantity field
1468 ProdList.Clear
1469 ProdCat.Text = ""
1470 Quantity.Text = ""
1471
1472 Call Calculate
1473
1474
1475 Exit Sub
1476
1477 Else
1478
1479 'If product is not the current record, then moves to next record
1480 M_Shirts.Recordset.MoveNext
1481

80
1482 End If
1483 Loop
1484
1485
1486 ElseIf (ProdCat.ListIndex = 1) Then
1487
1488 M_Tshirts.Recordset.MoveFirst
1489
1490 'Checking till end of database is reached
1491
1492 Do Until M_Tshirts.Recordset.EOF
1493
1494 'Checking if product selected is the product in database
1495
1496 If (M_Tshirts.Recordset.Fields.Item(1) = ProdList.Text) Then
1497
1498 Cart.TextMatrix(Key, 0) =
(M_Tshirts.Recordset.Fields.Item(0) & " / " & ProdList.Text)
1499
1500 'Adding the Price of product to Cart
1501 Cart.TextMatrix(Key, 1) =
M_Tshirts.Recordset.Fields.Item(2).Value
1502
1503 'Adding the Quantity to the Cart
1504 Cart.TextMatrix(Key, 2) = Quantity.Text
1505
1506 'Updating Stock
1507 Stock = Val(M_Tshirts.Recordset.Fields.Item(3)) -
Val(Quantity.Text)
1508 M_Tshirts.Recordset.Fields.Item(3) = Val(Stock)
1509
1510 'Adding the Amount (Price x Quantity) to the Cart
1511 Cart.TextMatrix(Key, 3) =
(Val(M_Tshirts.Recordset.Fields.Item(2).Value) * Val(Quantity.Text))
1512
1513 'Adding a row to the Cart for the next item
1514 Cart.AddItem ""
1515
1516 'Clearing the Product combo box and the Quantity field
1517 ProdList.Clear
1518 ProdCat.Text = ""
1519 Quantity.Text = ""
1520
1521 Call Calculate
1522
1523 Exit Sub
1524
1525 Else

81
1526
1527 'If product is not the current record, then moves to next record
1528 M_Tshirts.Recordset.MoveNext
1529
1530 End If
1531 Loop
1532
1533
1534 ElseIf (ProdCat.ListIndex = 2) Then
1535
1536 M_Jeans.Recordset.MoveFirst
1537
1538 'Checking till end of database is reached
1539
1540 Do Until M_Jeans.Recordset.EOF
1541
1542 'Checking if product selected is the product in database
1543
1544 If (M_Jeans.Recordset.Fields.Item(1) = ProdList.Text) Then
1545
1546 Cart.TextMatrix(Key, 0) =
(M_Jeans.Recordset.Fields.Item(0) & " / " & ProdList.Text)
1547
1548 'Adding the Price of product to Cart
1549 Cart.TextMatrix(Key, 1) =
M_Jeans.Recordset.Fields.Item(2).Value
1550
1551 'Adding the Quantity to the Cart
1552 Cart.TextMatrix(Key, 2) = Quantity.Text
1553
1554 'Updating Stock
1555 Stock = Val(M_Jeans.Recordset.Fields.Item(3)) -
Val(Quantity.Text)
1556 M_Jeans.Recordset.Fields.Item(3) = Val(Stock)
1557
1558 'Adding the Amount (Price x Quantity) to the Cart
1559 Cart.TextMatrix(Key, 3) =
(Val(M_Jeans.Recordset.Fields.Item(2).Value) * Val(Quantity.Text))
1560
1561 'Adding a row to the Cart for the next item
1562 Cart.AddItem ""
1563
1564 'Clearing the Product combo box and the Quantity field
1565 ProdList.Clear
1566 ProdCat.Text = ""
1567 Quantity.Text = ""
1568
1569 Call Calculate

82
1570
1571 Exit Sub
1572
1573 Else
1574
1575 'If product is not the current record, then moves to next record
1576 M_Jeans.Recordset.MoveNext
1577
1578 End If
1579 Loop
1580
1581
1582
1583 ElseIf (ProdCat.ListIndex = 3) Then
1584
1585 M_Shorts.Recordset.MoveFirst
1586
1587 'Checking till end of database is reached
1588
1589 Do Until M_Shorts.Recordset.EOF
1590
1591 'Checking if product selected is the product in database
1592
1593 If (M_Shorts.Recordset.Fields.Item(1) = ProdList.Text) Then
1594
1595 Cart.TextMatrix(Key, 0) =
(M_Shorts.Recordset.Fields.Item(0) & " / " & ProdList.Text)
1596
1597 'Adding the Price of product to Cart
1598 Cart.TextMatrix(Key, 1) =
M_Shorts.Recordset.Fields.Item(2).Value
1599
1600 'Adding the Quantity to the Cart
1601 Cart.TextMatrix(Key, 2) = Quantity.Text
1602
1603 'Updating Stock
1604 Stock = Val(M_Shorts.Recordset.Fields.Item(3)) -
Val(Quantity.Text)
1605 M_Shorts.Recordset.Fields.Item(3) = Val(Stock)
1606
1607 'Adding the Amount (Price x Quantity) to the Cart
1608 Cart.TextMatrix(Key, 3) =
(Val(M_Shorts.Recordset.Fields.Item(2).Value) * Val(Quantity.Text))
1609
1610 'Adding a row to the Cart for the next item
1611 Cart.AddItem ""
1612
1613 'Clearing the Product combo box and the Quantity field

83
1614 ProdList.Clear
1615 ProdCat.Text = ""
1616 Quantity.Text = ""
1617
1618 Call Calculate
1619
1620 Exit Sub
1621
1622 Else
1623
1624 'If product is not the current record, then moves to next record
1625 M_Shorts.Recordset.MoveNext
1626
1627 End If
1628 Loop
1629
1630
1631 ElseIf (ProdCat.ListIndex = 4) Then
1632
1633 M_Trousers.Recordset.MoveFirst
1634
1635 'Checking till end of database is reached
1636
1637 Do Until M_Trousers.Recordset.EOF
1638
1639 'Checking if product selected is the product in database
1640
1641 If (M_Trousers.Recordset.Fields.Item(1) = ProdList.Text)
Then
1642
1643 Cart.TextMatrix(Key, 0) =
(M_Trousers.Recordset.Fields.Item(0) & " / " & ProdList.Text)
1644
1645 'Adding the Price of product to Cart
1646 Cart.TextMatrix(Key, 1) =
M_Trousers.Recordset.Fields.Item(2).Value
1647
1648 'Adding the Quantity to the Cart
1649 Cart.TextMatrix(Key, 2) = Quantity.Text
1650
1651 'Updating Stock
1652 Stock = Val(M_Trousers.Recordset.Fields.Item(3)) -
Val(Quantity.Text)
1653 M_Trousers.Recordset.Fields.Item(3) = Val(Stock)
1654
1655 'Adding the Amount (Price x Quantity) to the Cart
1656 Cart.TextMatrix(Key, 3) =
(Val(M_Trousers.Recordset.Fields.Item(2).Value) * Val(Quantity.Text))

84
1657
1658 'Adding a row to the Cart for the next item
1659 Cart.AddItem ""
1660
1661 'Clearing the Product combo box and the Quantity field
1662 ProdList.Clear
1663 ProdCat.Text = ""
1664 Quantity.Text = ""
1665
1666 Call Calculate
1667
1668 Exit Sub
1669
1670 Else
1671
1672 'If product is not the current record, then moves to next record
1673 M_Trousers.Recordset.MoveNext
1674
1675 End If
1676 Loop
1677
1678
1679 ElseIf (ProdCat.ListIndex = 5) Then
1680
1681 M_Jackets.Recordset.MoveFirst
1682
1683 'Checking till end of database is reached
1684
1685 Do Until M_Jackets.Recordset.EOF
1686
1687 'Checking if product selected is the product in database
1688
1689 If (M_Jackets.Recordset.Fields.Item(1) = ProdList.Text) Then
1690
1691 Cart.TextMatrix(Key, 0) =
(M_Jackets.Recordset.Fields.Item(0) & " / " & ProdList.Text)
1692
1693 'Adding the Price of product to Cart
1694 Cart.TextMatrix(Key, 1) =
M_Jackets.Recordset.Fields.Item(2).Value
1695
1696 'Adding the Quantity to the Cart
1697 Cart.TextMatrix(Key, 2) = Quantity.Text
1698
1699 'Updating Stock
1700 Stock = Val(M_Jackets.Recordset.Fields.Item(3)) -
Val(Quantity.Text)
1701 M_Jackets.Recordset.Fields.Item(3) = Val(Stock)

85
1702
1703 'Adding the Amount (Price x Quantity) to the Cart
1704 Cart.TextMatrix(Key, 3) =
(Val(M_Jackets.Recordset.Fields.Item(2).Value) * Val(Quantity.Text))
1705
1706 'Adding a row to the Cart for the next item
1707 Cart.AddItem ""
1708
1709 'Clearing the Product combo box and the Quantity field
1710 ProdList.Clear
1711 ProdCat.Text = ""
1712 Quantity.Text = ""
1713
1714 Call Calculate
1715
1716 Exit Sub
1717
1718 Else
1719
1720 'If product is not the current record, then moves to next record
1721 M_Jackets.Recordset.MoveNext
1722
1723 End If
1724 Loop
1725
1726 ElseIf (ProdCat.ListIndex = 6) Then
1727
1728 F_Tops.Recordset.MoveFirst
1729
1730 'Checking till end of database is reached
1731
1732 Do Until F_Tops.Recordset.EOF
1733
1734 'Checking if product selected is the product in database
1735
1736 If (F_Tops.Recordset.Fields.Item(1) = ProdList.Text) Then
1737
1738 Cart.TextMatrix(Key, 0) =
(F_Tops.Recordset.Fields.Item(0) & " / " & ProdList.Text)
1739
1740 'Adding the Price of product to Cart
1741 Cart.TextMatrix(Key, 1) =
F_Tops.Recordset.Fields.Item(2).Value
1742
1743 'Adding the Quantity to the Cart
1744 Cart.TextMatrix(Key, 2) = Quantity.Text
1745
1746 'Updating Stock

86
1747 Stock = Val(F_Tops.Recordset.Fields.Item(3)) -
Val(Quantity.Text)
1748 F_Tops.Recordset.Fields.Item(3) = Val(Stock)
1749
1750 'Adding the Amount (Price x Quantity) to the Cart
1751 Cart.TextMatrix(Key, 3) =
(Val(F_Tops.Recordset.Fields.Item(2).Value) * Val(Quantity.Text))
1752
1753 'Adding a row to the Cart for the next item
1754 Cart.AddItem ""
1755
1756 'Clearing the Product combo box and the Quantity field
1757 ProdList.Clear
1758 ProdCat.Text = ""
1759 Quantity.Text = ""
1760
1761 Call Calculate
1762
1763 Exit Sub
1764
1765 Else
1766
1767 'If product is not the current record, then moves to next record
1768 F_Tops.Recordset.MoveNext
1769
1770 End If
1771 Loop
1772
1773
1774 ElseIf (ProdCat.ListIndex = 7) Then
1775
1776 F_Capris.Recordset.MoveFirst
1777
1778 'Checking till end of database is reached
1779
1780 Do Until F_Capris.Recordset.EOF
1781
1782 'Checking if product selected is the product in database
1783
1784 If (F_Capris.Recordset.Fields.Item(1) = ProdList.Text) Then
1785
1786 Cart.TextMatrix(Key, 0) =
(F_Capris.Recordset.Fields.Item(0) & " / " & ProdList.Text)
1787
1788 'Adding the Price of product to Cart
1789 Cart.TextMatrix(Key, 1) =
F_Capris.Recordset.Fields.Item(2).Value
1790

87
1791 'Adding the Quantity to the Cart
1792 Cart.TextMatrix(Key, 2) = Quantity.Text
1793
1794 'Updating Stock
1795 Stock = Val(F_Capris.Recordset.Fields.Item(3)) -
Val(Quantity.Text)
1796 F_Capris.Recordset.Fields.Item(3) = Val(Stock)
1797
1798 'Adding the Amount (Price x Quantity) to the Cart
1799 Cart.TextMatrix(Key, 3) =
(Val(F_Capris.Recordset.Fields.Item(2).Value) * Val(Quantity.Text))
1800
1801 'Adding a row to the Cart for the next item
1802 Cart.AddItem ""
1803
1804 'Clearing the Product combo box and the Quantity field
1805 ProdList.Clear
1806 ProdCat.Text = ""
1807 Quantity.Text = ""
1808
1809 Call Calculate
1810
1811 Exit Sub
1812
1813 Else
1814
1815 'If product is not the current record, then moves to next record
1816 F_Capris.Recordset.MoveNext
1817
1818 End If
1819 Loop
1820
1821
1822 ElseIf (ProdCat.ListIndex = 8) Then
1823
1824 F_Jeans.Recordset.MoveFirst
1825
1826 'Checking till end of database is reached
1827
1828 Do Until F_Jeans.Recordset.EOF
1829
1830 'Checking if product selected is the product in database
1831
1832 If (F_Jeans.Recordset.Fields.Item(1) = ProdList.Text) Then
1833
1834 Cart.TextMatrix(Key, 0) =
(F_Jeans.Recordset.Fields.Item(0) & " / " & ProdList.Text)
1835

88
1836 'Adding the Price of product to Cart
1837 Cart.TextMatrix(Key, 1) =
F_Jeans.Recordset.Fields.Item(2).Value
1838
1839 'Adding the Quantity to the Cart
1840 Cart.TextMatrix(Key, 2) = Quantity.Text
1841
1842 'Updating Stock
1843 Stock = Val(F_Jeans.Recordset.Fields.Item(3)) -
Val(Quantity.Text)
1844 F_Jeans.Recordset.Fields.Item(3) = Val(Stock)
1845
1846 'Adding the Amount (Price x Quantity) to the Cart
1847 Cart.TextMatrix(Key, 3) =
(Val(F_Jeans.Recordset.Fields.Item(2).Value) * Val(Quantity.Text))
1848
1849 'Adding a row to the Cart for the next item
1850 Cart.AddItem ""
1851
1852 'Clearing the Product combo box and the Quantity field
1853 ProdList.Clear
1854 ProdCat.Text = ""
1855 Quantity.Text = ""
1856
1857 Call Calculate
1858
1859 Exit Sub
1860
1861 Else
1862
1863 'If product is not the current record, then moves to next record
1864 F_Jeans.Recordset.MoveNext
1865
1866 End If
1867 Loop
1868
1869
1870 ElseIf (ProdCat.ListIndex = 9) Then
1871
1872 F_Skirts.Recordset.MoveFirst
1873
1874 'Checking till end of database is reached
1875
1876 Do Until F_Skirts.Recordset.EOF
1877
1878 'Checking if product selected is the product in database
1879
1880 If (F_Skirts.Recordset.Fields.Item(1) = ProdList.Text) Then

89
1881
1882 Cart.TextMatrix(Key, 0) =
(F_Skirts.Recordset.Fields.Item(0) & " / " & ProdList.Text)
1883
1884 'Adding the Price of product to Cart
1885 Cart.TextMatrix(Key, 1) =
F_Skirts.Recordset.Fields.Item(2).Value
1886
1887 'Adding the Quantity to the Cart
1888 Cart.TextMatrix(Key, 2) = Quantity.Text
1889
1890 'Updating Stock
1891 Stock = Val(F_Skirts.Recordset.Fields.Item(3)) -
Val(Quantity.Text)
1892 F_Skirts.Recordset.Fields.Item(3) = Val(Stock)
1893
1894 'Adding the Amount (Price x Quantity) to the Cart
1895 Cart.TextMatrix(Key, 3) =
(Val(F_Skirts.Recordset.Fields.Item(2).Value) * Val(Quantity.Text))
1896
1897 'Adding a row to the Cart for the next item
1898 Cart.AddItem ""
1899
1900 'Clearing the Product combo box and the Quantity field
1901 ProdList.Clear
1902 ProdCat.Text = ""
1903 Quantity.Text = ""
1904
1905 Call Calculate
1906
1907 Exit Sub
1908
1909 Else
1910
1911 'If product is not the current record, then moves to next record
1912 F_Skirts.Recordset.MoveNext
1913
1914 End If
1915 Loop
1916
1917
1918 ElseIf (ProdCat.ListIndex = 10) Then
1919
1920 F_Trousers.Recordset.MoveFirst
1921
1922 'Checking till end of database is reached
1923
1924 Do Until F_Trousers.Recordset.EOF

90
1925
1926 'Checking if product selected is the product in database
1927
1928 If (F_Trousers.Recordset.Fields.Item(1) = ProdList.Text)
Then
1929
1930 Cart.TextMatrix(Key, 0) =
(F_Trousers.Recordset.Fields.Item(0) & " / " & ProdList.Text)
1931
1932 'Adding the Price of product to Cart
1933 Cart.TextMatrix(Key, 1) =
F_Trousers.Recordset.Fields.Item(2).Value
1934
1935 'Adding the Quantity to the Cart
1936 Cart.TextMatrix(Key, 2) = Quantity.Text
1937
1938 'Updating Stock
1939 Stock = Val(F_Trousers.Recordset.Fields.Item(3)) -
Val(Quantity.Text)
1940 F_Trousers.Recordset.Fields.Item(3) = Val(Stock)
1941
1942 'Adding the Amount (Price x Quantity) to the Cart
1943 Cart.TextMatrix(Key, 3) =
(Val(F_Trousers.Recordset.Fields.Item(2).Value) * Val(Quantity.Text))
1944
1945 'Adding a row to the Cart for the next item
1946 Cart.AddItem ""
1947
1948 'Clearing the Product combo box and the Quantity field
1949 ProdList.Clear
1950 ProdCat.Text = ""
1951 Quantity.Text = ""
1952
1953 Call Calculate
1954
1955 Exit Sub
1956
1957 Else
1958
1959 'If product is not the current record, then moves to next record
1960 F_Trousers.Recordset.MoveNext
1961
1962 End If
1963 Loop
1964
1965
1966 ElseIf (ProdCat.ListIndex = 11) Then
1967

91
1968 F_Stockings.Recordset.MoveFirst
1969
1970 'Checking till end of database is reached
1971
1972 Do Until F_Stockings.Recordset.EOF
1973
1974 'Checking if product selected is the product in database
1975
1976 If (F_Stockings.Recordset.Fields.Item(1) = ProdList.Text) Then
1977
1978 Cart.TextMatrix(Key, 0) =
(F_Stockings.Recordset.Fields.Item(0) & " / " & ProdList.Text)
1979
1980 'Adding the Price of product to Cart
1981 Cart.TextMatrix(Key, 1) =
F_Stockings.Recordset.Fields.Item(2).Value
1982
1983 'Adding the Quantity to the Cart
1984 Cart.TextMatrix(Key, 2) = Quantity.Text
1985
1986 'Updating Stock
1987 Stock = Val(F_Stockings.Recordset.Fields.Item(3)) -
Val(Quantity.Text)
1988 F_Stockings.Recordset.Fields.Item(3) = Val(Stock)
1989
1990 'Adding the Amount (Price x Quantity) to the Cart
1991 Cart.TextMatrix(Key, 3) =
(Val(F_Stockings.Recordset.Fields.Item(2).Value) * Val(Quantity.Text))
1992
1993 'Adding a row to the Cart for the next item
1994 Cart.AddItem ""
1995
1996 'Clearing the Product combo box and the Quantity field
1997 ProdList.Clear
1998 ProdCat.Text = ""
1999 Quantity.Text = ""
2000
2001 Call Calculate
2002
2003 Exit Sub
2004
2005 Else
2006
2007 'If product is not the current record, then moves to next record
2008 F_Stockings.Recordset.MoveNext
2009
2010 End If
2011 Loop

92
2012
2013
2014 End If
2015
2016 End Sub
2017
2018
2019
2020 'cmdCancel click event
2021 'Triggers when the "CANCEL" Button is pressed
2022 'Function: Closes the NEW SALE form and returns to MAIN
2023 'SCREEN form
2024
2025 Private Sub cmdCancel_Click()
2026 Discount = False
2027
2028 frmMain.Show
2029 Unload Me
2030
2031 End Sub
2032
2033 'cmdCardNo click event
2034 'Triggers when the "ENTER CARD NO" Button is pressed
2035 'Function: Asks for Card No for Sale Discount
2036
2037 Private Sub cmdCardNo_Click()
2038
2039 ‘CardNo is for storing User input and searching
2040 Dim CardNo As Integer
2041 ‘CardNoDisp and MemNameDisp is for Display of Card No and
2042 ‘ Member Name on the Bill
2043 Dim CardNoDisp As String
2044 Dim MemNameDisp As String
2045
2046 ‘User Asked for Card No
2047 CardNo = InputBox("Enter Membership Card Number:", "NEW
SALE")
2048
2049 ‘Searching for Card No in database
2050 MembersDB.Refresh
2051 MembersDB.Recordset.MoveFirst
2052
2053 With MembersDB.Recordset
2054 While (Not MembersDB.Recordset.EOF)
2055
2056 If (MembersDB.Recordset.Fields.Item(1) = CardNo) Then
2057 MsgBox ("Vaild Card No")
2058 CardNoDisp = CardNo

93
2059 MemNameDisp = MembersDB.Recordset.Fields.Item(0)
2060 Discount = True
2061 cmdCardNo.Visible = False
2062
2063 Call Calculate
2064
2065 Exit Sub
2066
2067 Else
2068 MembersDB.Recordset.MoveNext
2069
2070 End If
2071
2072 Wend
2073 End With
2074
2075 ‘If Member is not found, error is displayed
2076 MsgBox ("Invalid Card No.")
2077 ‘Setting Card No as N/A
2078 CardNoDisp = "N/A"
2079 ‘Setting Member Name as CASH
2080 MemNameDisp = "CASH"
2081
2082 End Sub
2083
2084 Private Sub cmdConfirm_Click()
2085
2086 'Storing code and quantity in variable to update the stock.
2087 Dim Code As String
2088 Dim Qty As Integer
2089
2090 ‘Whichever category will be found via code on scanning the Cart,
2091 the tabes will be updated to decrease the stock
2092
2093 Dim RowCount As Integer
2094
2095 For RowCount = 1 To (Cart.Rows - 2)
2096
2097 If ((Left$(Cart.TextMatrix(RowCount, 0), 3)) = "MSH") Then
2098 M_Shirts.Recordset.Update
2099
2100 ElseIf ((Left$(Cart.TextMatrix(RowCount, 0), 3)) = "MTS") Then
2101 M_Tshirts.Recordset.Update
2102
2103 ElseIf ((Left$(Cart.TextMatrix(RowCount, 0), 3)) = "MJE") Then
2104 M_Jeans.Recordset.Update
2105
2106 ElseIf ((Left$(Cart.TextMatrix(RowCount, 0), 3)) = "MSR") Then

94
2107 M_Shorts.Recordset.Update
2108
2109 ElseIf ((Left$(Cart.TextMatrix(RowCount, 0), 3)) = "MTR") Then
2110 M_Trousers.Recordset.Update
2111
2112 ElseIf ((Left$(Cart.TextMatrix(RowCount, 0), 3)) = "MJA") Then
2113 M_Jackets.Recordset.Update
2114
2115 ElseIf ((Left$(Cart.TextMatrix(RowCount, 0), 3)) = "FTO") Then
2116 F_Tops.Recordset.Update
2117
2118 ElseIf ((Left$(Cart.TextMatrix(RowCount, 0), 3)) = "FCA") Then
2119 F_Capris.Recordset.Update
2120
2121 ElseIf ((Left$(Cart.TextMatrix(RowCount, 0), 3)) = "FJE") Then
2122 F_Jeans.Recordset.Update
2123
2124 ElseIf ((Left$(Cart.TextMatrix(RowCount, 0), 3)) = "FSK") Then
2125 F_Skirts.Recordset.Update
2126
2127 ElseIf ((Left$(Cart.TextMatrix(RowCount, 0), 3)) = "FTR") Then
2128 F_Trousers.Recordset.Update
2129
2130 ElseIf ((Left$(Cart.TextMatrix(RowCount, 0), 3)) = "FST") Then
2131 F_Stockings.Recordset.Update
2132
2133 End If
2134
2135 Next
2136
2137
2138 'If no item is selected, Order is not confirmed and message box is
displayed with message "Please Place Order"
2139 If (Cart.TextMatrix(1, 1) = "") Then
2140 MsgBox ("Please Place Order")
2141
2142 Else
2143
2144 'Loop variable "i" is used for display using all Order items from
Order table to the Bill
2145 Dim i As Integer
2146
2147 For i = 1 To Key
2148
2149 'If it is the first field of the table, the item is displayed in the first row
2150 If (frmBill.Items.Caption = "") Then
2151
2152 frmBill.Items.Caption =

95
2153 frmBill.Items.Caption & Cart.TextMatrix(i, 0)
2154 frmBill.Price.Caption =
2155 frmBill.Price.Caption & Cart.TextMatrix(i, 1)
2156 frmBill.Quantity.Caption =
2157 frmBill.Quantity.Caption & Cart.TextMatrix(i, 2)
2158 frmBill.Total.Caption =
2159 frmBill.Total.Caption & Cart.TextMatrix(i, 3)

'If it is not the first field of the table, each item is displayed on a new line

2160
2161 Else
2162
2163 frmBill.Items.Caption =
2164 frmBill.Items.Caption & vbNewLine & Cart.TextMatrix(i, 0)
2165
2166 frmBill.Price.Caption =
2167 frmBill.Price.Caption & vbNewLine & Cart.TextMatrix(i, 1)
2168
2169 frmBill.Quantity.Caption =
2170 frmBill.Quantity.Caption & vbNewLine & Cart.TextMatrix(i, 2)
2171
2172 frmBill.Total.Caption =
2173 frmBill.Total.Caption & vbNewLine & Cart.TextMatrix(i, 3)
2174
2175 End If
2176
2177 Next i
2178
2179 frmBill.MemNameLabel.Caption = MemNameDisp
2180 frmBill.CardNoLabel.Caption = CardNoDisp
2181
2182 'Displaying the Special Instructions, Amount, Tax and Total
2183 ‘Amount on the receipt
2184 frmBill.Amount.Caption = Total.Caption
2185 frmBill.Discount.Caption = DiscAmt.Caption
2186 frmBill.Tax.Caption = Tax.Caption
2187 frmBill.TotalAmount.Caption = GrossAmount.Caption
2188
2189 Discount = False
2190
2191 'Opening the Order receipt
2192 frmBill.Show
2193
2194 'Closing the NEW ORDER Form
2195 Unload Me
2196
2197 End If

96
2198
2199 End Sub
2200
2201 Private Sub cmdRemove_Click()
2202
2203 'If there is no item in the Order list
2204 If (Cart.TextMatrix(1, 1) = "") Then
2205 'Message box is displayed with message "Nothing to Remove"
2206 MsgBox ("Nothing to Remove")
2207 Else
2208
2209 'Removing the selected row from the Cart
2210 Cart.SelectionMode = flexSelectionByRow
2211 Cart.RemoveItem (Cart.Row)
2212 Key = (Key - 1)
2213
2214 Call Calculate
2215
2216 End If
2217
2218 End Sub
2219
2220 'ProdCat Dropdown click event
2221 'Triggers when an item from "ProdCat" dropdown is selected
2222 'Function: To populate the products dropdown menu for sales
2223
2224 Private Sub ProdCat_Click()
2225
2226
2227 Dim ProductLoop, ProductCount As Integer
2228
2229 Dim ProductList() As String
2230
2231
2232 Select Case ProdCat.List(ProdCat.ListIndex)
2233
2234 Case "MALE - SHIRTS"
2235
2236 ProdList.Clear
2237 M_Shirts.Refresh
2238 ProductCount = M_Shirts.Recordset.RecordCount
2239 ReDim ProductList(ProductCount) As String
2240
2241 With M_Shirts.Recordset
2242 While (Not M_Shirts.Recordset.EOF)
2243 ProductList(ProductLoop) =
(M_Shirts.Recordset.Fields.Item(1))
2244 M_Shirts.Recordset.MoveNext

97
2245 ProductLoop = (ProductLoop + 1)
2246 Wend
2247 End With
2248
2249 ProductLoop = 0
2250
2251 For ProductLoop = 0 To (ProductCount - 1)
2252 ProdList.AddItem ProductList(ProductLoop)
2253 Next
2254
2255
2256 Case "MALE - T-SHIRTS"
2257
2258 ProdList.Clear
2259 M_Tshirts.Refresh
2260 ProductCount = M_Tshirts.Recordset.RecordCount
2261 ReDim ProductList(ProductCount) As String
2262
2263 With M_Tshirts.Recordset
2264 While (Not M_Tshirts.Recordset.EOF)
2265 ProductList(ProductLoop) =
(M_Tshirts.Recordset.Fields.Item(1))
2266 M_Tshirts.Recordset.MoveNext
2267 ProductLoop = (ProductLoop + 1)
2268 Wend
2269 End With
2270
2271 ProductLoop = 0
2272
2273 For ProductLoop = 0 To (ProductCount - 1)
2274 ProdList.AddItem ProductList(ProductLoop)
2275 Next
2276
2277
2278 Case "MALE - JEANS"
2279
2280 ProdList.Clear
2281 M_Jeans.Refresh
2282 ProductCount = M_Jeans.Recordset.RecordCount
2283 ReDim ProductList(ProductCount) As String
2284
2285 With M_Jeans.Recordset
2286 While (Not M_Jeans.Recordset.EOF)
2287 ProductList(ProductLoop) =
(M_Jeans.Recordset.Fields.Item(1))
2288 M_Jeans.Recordset.MoveNext
2289 ProductLoop = (ProductLoop + 1)
2290 Wend

98
2291 End With
2292
2293 ProductLoop = 0
2294
2295 For ProductLoop = 0 To (ProductCount - 1)
2296 ProdList.AddItem ProductList(ProductLoop)
2297 Next
2298
2299
2300 Case "MALE - SHORTS"
2301
2302 ProdList.Clear
2303 M_Shorts.Refresh
2304 ProductCount = M_Shorts.Recordset.RecordCount
2305 ReDim ProductList(ProductCount) As String
2306
2307 With M_Shorts.Recordset
2308 While (Not M_Shorts.Recordset.EOF)
2309 ProductList(ProductLoop) =
(M_Shorts.Recordset.Fields.Item(1))
2310 M_Shorts.Recordset.MoveNext
2311 ProductLoop = (ProductLoop + 1)
2312 Wend
2313 End With
2314
2315 ProductLoop = 0
2316
2317 For ProductLoop = 0 To (ProductCount - 1)
2318 ProdList.AddItem ProductList(ProductLoop)
2319 Next
2320
2321 Case "MALE - TROUSERS"
2322
2323 ProdList.Clear
2324 M_Trousers.Refresh
2325 ProductCount = M_Trousers.Recordset.RecordCount
2326 ReDim ProductList(ProductCount) As String
2327
2328 With M_Trousers.Recordset
2329 While (Not M_Trousers.Recordset.EOF)
2330 ProductList(ProductLoop) =
(M_Trousers.Recordset.Fields.Item(1))
2331 M_Trousers.Recordset.MoveNext
2332 ProductLoop = (ProductLoop + 1)
2333 Wend
2334 End With
2335
2336 ProductLoop = 0

99
2337
2338 For ProductLoop = 0 To (ProductCount - 1)
2339 ProdList.AddItem ProductList(ProductLoop)
2340 Next
2341
2342
2343 Case "MALE - JACKETS"
2344
2345 ProdList.Clear
2346 M_Jackets.Refresh
2347 ProductCount = M_Jackets.Recordset.RecordCount
2348 ReDim ProductList(ProductCount) As String
2349
2350 With M_Jackets.Recordset
2351 While (Not M_Jackets.Recordset.EOF)
2352 ProductList(ProductLoop) =
(M_Jackets.Recordset.Fields.Item(1))
2353 M_Jackets.Recordset.MoveNext
2354 ProductLoop = (ProductLoop + 1)
2355 Wend
2356 End With
2357
2358 ProductLoop = 0
2359
2360 For ProductLoop = 0 To (ProductCount - 1)
2361 ProdList.AddItem ProductList(ProductLoop)
2362 Next
2363
2364
2365 Case "FEMALE - TOPS"
2366
2367 ProdList.Clear
2368 F_Tops.Refresh
2369 ProductCount = F_Tops.Recordset.RecordCount
2370 ReDim ProductList(ProductCount) As String
2371
2372 With F_Tops.Recordset
2373 While (Not F_Tops.Recordset.EOF)
2374 ProductList(ProductLoop) =
(F_Tops.Recordset.Fields.Item(1))
2375 F_Tops.Recordset.MoveNext
2376 ProductLoop = (ProductLoop + 1)
2377 Wend
2378 End With
2379
2380 ProductLoop = 0
2381
2382 For ProductLoop = 0 To (ProductCount - 1)

100
2383 ProdList.AddItem ProductList(ProductLoop)
2384 Next
2385
2386 Case "FEMALE - CAPRIS"
2387
2388 ProdList.Clear
2389 F_Capris.Refresh
2390 ProductCount = F_Capris.Recordset.RecordCount
2391 ReDim ProductList(ProductCount) As String
2392
2393 With F_Capris.Recordset
2394 While (Not F_Capris.Recordset.EOF)
2395 ProductList(ProductLoop) =
(F_Capris.Recordset.Fields.Item(1))
2396 F_Capris.Recordset.MoveNext
2397 ProductLoop = (ProductLoop + 1)
2398 Wend
2399 End With
2400
2401 ProductLoop = 0
2402
2403 For ProductLoop = 0 To (ProductCount - 1)
2404 ProdList.AddItem ProductList(ProductLoop)
2405 Next
2406
2407 Case "FEMALE - JEANS"
2408
2409 ProdList.Clear
2410 F_Jeans.Refresh
2411 ProductCount = F_Jeans.Recordset.RecordCount
2412 ReDim ProductList(ProductCount) As String
2413
2414 With F_Jeans.Recordset
2415 While (Not F_Jeans.Recordset.EOF)
2416 ProductList(ProductLoop) =
(F_Jeans.Recordset.Fields.Item(1))
2417 F_Jeans.Recordset.MoveNext
2418 ProductLoop = (ProductLoop + 1)
2419 Wend
2420 End With
2421
2422 ProductLoop = 0
2423
2424 For ProductLoop = 0 To (ProductCount - 1)
2425 ProdList.AddItem ProductList(ProductLoop)
2426 Next
2427
2428 Case "FEMALE - SKIRTS"

101
2429
2430 ProdList.Clear
2431 F_Skirts.Refresh
2432 ProductCount = F_Skirts.Recordset.RecordCount
2433 ReDim ProductList(ProductCount) As String
2434
2435 With F_Skirts.Recordset
2436 While (Not F_Skirts.Recordset.EOF)
2437 ProductList(ProductLoop) =
(F_Skirts.Recordset.Fields.Item(1))
2438 F_Skirts.Recordset.MoveNext
2439 ProductLoop = (ProductLoop + 1)
2440 Wend
2441 End With
2442
2443 ProductLoop = 0
2444
2445 For ProductLoop = 0 To (ProductCount - 1)
2446 ProdList.AddItem ProductList(ProductLoop)
2447 Next
2448
2449
2450 Case "FEMALE - TROUSERS"
2451
2452 ProdList.Clear
2453 F_Trousers.Refresh
2454 ProductCount = F_Trousers.Recordset.RecordCount
2455 ReDim ProductList(ProductCount) As String
2456
2457 With F_Trousers.Recordset
2458 While (Not F_Trousers.Recordset.EOF)
2459 ProductList(ProductLoop) =
(F_Trousers.Recordset.Fields.Item(1))
2460 F_Trousers.Recordset.MoveNext
2461 ProductLoop = (ProductLoop + 1)
2462 Wend
2463 End With
2464
2465 ProductLoop = 0
2466
2467 For ProductLoop = 0 To (ProductCount - 1)
2468 ProdList.AddItem ProductList(ProductLoop)
2469 Next
2470
2471 Case "FEMALE - STOCKINGS"
2472
2473 ProdList.Clear
2474 F_Stockings.Refresh

102
2475 ProductCount = F_Stockings.Recordset.RecordCount
2476 ReDim ProductList(ProductCount) As String
2477
2478 With F_Stockings.Recordset
2479 While (Not F_Stockings.Recordset.EOF)
2480 ProductList(ProductLoop) =
(F_Stockings.Recordset.Fields.Item(1))
2481 F_Stockings.Recordset.MoveNext
2482 ProductLoop = (ProductLoop + 1)
2483 Wend
2484 End With
2485
2486 ProductLoop = 0
2487
2488 For ProductLoop = 0 To (ProductCount - 1)
2489 ProdList.AddItem ProductList(ProductLoop)
2490 Next
2491
2492 End Select
2493
2494
2495 End Sub

BILL FORM

2496 '********************************************************
2497 ' FORM NAME: frmBill
2498 ' PURPOSE: Displays Bill after New Sale and log sales
2499 '********************************************************
2500
2501 'Event when the BILL Form loads
2502
2503 Private Sub Form_Load()
2504

103
2505 ‘GetOrderNo function is called to display BillNo
2506 Call GetOrderNo
2507
2508 'Storing the Date in the DisplayDate variable
2509 DisplayDate = DateValue(Now)
2510
2511 'Formating and displaying the date as DD / MM / YYYY
2512 DateLabel.Caption = Format(DisplayDate, "DD / MM / YYYY")
2513
2514 End Sub
2515
2516 'cmdDone click event
2517 'Triggers when the "DONE" Button is pressed
2518 'Function: Bill is closed and Main Screen is opened. Sales is
2519 'also logged into the database.
2520
2521
2522 Private Sub cmdDone_Click()
2523
2524 'Refreshing the SalesLog control
2525 SalesLog.Refresh
2526
2527 With SalesLog.Recordset
2528
2529 'Adding a new record in the Sales log
2530 SalesLog.Recordset.AddNew
2531
2532 'Adding the Date
2533 SalesLog.Recordset.Fields("Date") = DateLabel.Caption
2534
2535 'Adding the Order number
2536 SalesLog.Recordset.Fields("Bill No") = BillNoLabel.Caption
2537
2538 ‘Adding the Total Amount of order
2539 SalesLog.Recordset.Fields("Amount") = TotalAmount.Caption
2540
2541 'Updating the Sales log
2542 SalesLog.Recordset.Update
2543 SalesLog.Recordset.Requery
2544
2545 End With
2546
2547 'Function UpdateOrderNo is called that updates the Order number
2548 ‘for the next bill
2549 Call UpdateOrderNo
2550
2551 'Opening the MAIN Form
2552 frmMain.Show

104
2553
2554 'Closing the BILL
2555 Unload Me
2556
2557 End Sub

MEMBERS FORM

2558 '********************************************************
2559 ' FORM NAME: frmMembers
2560 ' PURPOSE: Allows the user to Add and Update Members
2561 '********************************************************
2562
2563 ‘Boolean is true if member is updates and false for new member
2564 Public Modify As Boolean
2565
2566 'Event when the MEMBERS DATABASE Form loads
2567
2568 Private Sub Form_Load()
2569
2570 ‘Making all fields blank
2571 CardNo.Text = ""
2572 MemName.Text = ""
2573 MemEmail.Text = ""
2574 MemTelephone.Text = ""
2575 MemAddress.Text = ""
2576
2577 ‘Disabling all fields to prevent editing,until ADD/MODIFY is selected
2578 CardNo.Enabled = False
2579 MemName.Enabled = False
2580 MemEmail.Enabled = False
2581 MemTelephone.Enabled = False
2582 MemAddress.Enabled = False
2583
2584
2585 End Sub
2586
2587 'cmdAdd click event
2588 'Triggers when the "ADD" Button is pressed

105
2589 'Function: Adds new member and unlocks fields for input
2590
2591 Private Sub cmdAdd_Click()
2592
2593 MemName.Enabled = True
2594 MemEmail.Enabled = True
2595 MemTelephone.Enabled = True
2596 MemAddress.Enabled = True
2597
2598 cmdSave.Enabled = True
2599 cmdAdd.Enabled = False
2600
2601 'Refreshing the MembersDB control
2602 MembersDB.Refresh
2603
2604 'Adding a new record to MembersDB
2605 MembersDB.Recordset.AddNew
2606
2607 ‘Function is called to get auto-generated card number
2608 Call GetCardNo
2609
2610 End Sub
2611
2612 'cmdClose click event
2613 'Triggers when the "CLOSE" Button is pressed
2614 'Function: Closes Member Database and opens Main Screen
2615
2616 Private Sub cmdClose_Click()
2617
2618 frmMain.Show
2619 Unload Me
2620
2621 End Sub
2622
2623 'cmdModify click event
2624 'Triggers when the "MODIFY" Button is pressed
2625 'Function: Allows Updating of Member info. and unlocks fields
2626 'for input
2627
2628 Private Sub cmdModify_Click()
2629
2630 Modify = True
2631
2632 ‘Enabling fields for user input
2633 MemName.Enabled = True
2634 MemEmail.Enabled = True
2635 MemTelephone.Enabled = True
2636 MemAddress.Enabled = True

106
2637
2638 cmdSave.Enabled = True
2639
2640 cmdModify.Enabled = False
2641
2642 End Sub
2643

2644 'cmdSave click event


2645 'Triggers when the "SAVE" Button is pressed
2646 'Function: Saves the new member/update into database
2647
2648 Private Sub cmdSave_Click()
2649
2650 With MembersDB.Recordset
2651
2652 'Adding the Member Name
2653 MembersDB.Recordset.Fields("Member Name") = MemName.Text
2654
2655 'Adding the Card Number
2656 MembersDB.Recordset.Fields("Card Number") = CardNo.Text
2657
2658 'Adding the Phone Number
2659 MembersDB.Recordset.Fields("Phone Number") =
MemTelephone.Text
2660
2661 'Adding the E-Mail Address
2662 MembersDB.Recordset.Fields("E-Mail Address") = MemEmail.Text
2663
2664 'Adding the Postal Address
2665 MembersDB.Recordset.Fields("Postal Address") =
2666 MemAddress.Text
2667
2668 'Updating the Members database
2669 MembersDB.Recordset.Update
2670 MembersDB.Recordset.Requery
2671
2672 End With
2673
2674 ‘Locking all fields
2675 MemName.Enabled = False
2676 MemEmail.Enabled = False
2677 MemTelephone.Enabled = False
2678 MemAddress.Enabled = False
2679
2680 cmdSave.Enabled = False

107
2681 cmdAdd.Enabled = True
2682
2683 If (Modify = True) Then
2684 MsgBox ("Member Updated Successfully.")
2685 cmdModify.Enabled = True
2686 Modify = False
2687 Else
2688 MsgBox ("Member Created Successfully.")
2689 Call UpdateCardNo
2690 End If
2691
2692 CardNo.Text = ""
2693 MemName.Text = ""
2694 MemEmail.Text = ""
2695 MemTelephone.Text = ""
2696 MemAddress.Text = ""
2697
2698 End Sub
2699
2700 'cmdSearch click event
2701 'Triggers when the "SEARCH" Button is pressed
2702 'Function: Allows user to search for Member info. using Card
2703 'No for editing user data.
2704
2705 Private Sub cmdSearch_Click()
2706
2707 ‘Validation
2708 If (IsNumeric(CardSearch.Text) = False) Then
2709 MsgBox ("Please enter a valid Card number")
2710
2711 Else
2712 ‘Moving to first record and searching for Card No
2713 MembersDB.Recordset.MoveFirst
2714
2715 Do Until MembersDB.Recordset.EOF
2716 If (MembersDB.Recordset(1) = CardSearch.Text) Then
2717 MsgBox ("Member found.")
2718 cmdModify.Enabled = True
2719 Exit Sub
2720
2721 Else
2722 MembersDB.Recordset.MoveNext
2723 End If
2724 Loop
2725
2726 MsgBox ("Member not found.")
2727
2728 End If

108
2729
2730
2731 End Sub
2732

INVENTORY FORM

2733 '********************************************************
2734 ' FORM NAME: frmInventory
2735 ' PURPOSE: Allows user to add goods to Inventory
2736 '********************************************************
2737
2738 'Event when the INVENTORY Form loads
2739
2740 Private Sub Form_Load()
2741
2742 ‘Variables for counting Records and Loading supplier list
2743 Dim RecCount, LoopVar As Integer
2744 Dim SupplierList() As String
2745
2746 SuppliersDB.Refresh
2747
2748 RecCount = SuppliersDB.Recordset.RecordCount
2749 ReDim SupplierList(RecCount) As String
2750
2751 With SuppliersDB.Recordset
2752 While (Not SuppliersDB.Recordset.EOF)
2753 SupplierList(LoopVar) =
2754 (SuppliersDB.Recordset.Fields.Item(1))
2755 SuppliersDB.Recordset.MoveNext
2756 LoopVar = (LoopVar + 1)
2757 Wend
2758 End With
2759
2760 LoopVar = 0
2761
2762 For LoopVar = 0 To (RecCount - 1)
2763 SupList.AddItem SupplierList(LoopVar)
2764 Next
2765
2766 ‘Adding Product Categories to dropdown menu

109
2767 ProdCat.AddItem "MALE - SHIRTS"
2768 ProdCat.AddItem "MALE - T-SHIRTS"
2769 ProdCat.AddItem "MALE - JEANS"
2770 ProdCat.AddItem "MALE - SHORTS"
2771 ProdCat.AddItem "MALE - TROUSERS"
2772 ProdCat.AddItem "MALE - JACKETS"
2773 ProdCat.AddItem "FEMALE - TOPS"
2774 ProdCat.AddItem "FEMALE - CAPRIS"
2775 ProdCat.AddItem "FEMALE - JEANS"
2776 ProdCat.AddItem "FEMALE - SKIRTS"
2777 ProdCat.AddItem "FEMALE - TROUSERS"
2778 ProdCat.AddItem "FEMALE - STOCKINGS"
2779
2780 ‘Setting maximum length for quantity to 6
2781 Quantity.MaxLength = 6
2782
2783 End Sub
2784
2785 'SupList click event
2786 'Triggers when item from SupList dropdown menu is selected
2787 'Function: Exits the program
2788
2789 Private Sub SupList_Click()
2790
2791 ‘For Storing TIN (Tax no.)
2792 Dim TINcount As Integer
2793
2794 TINcount = SupList.ListIndex
2795
2796 ‘Displaying TIN number for Supplier when supplier is selected
2797 SuppliersDB.Recordset.MoveFirst
2798 SuppliersDB.Recordset.Move (TINcount)
2799
2800 TINNo.Text = SuppliersDB.Recordset.Fields.Item(4)
2801
2802
2803 End Sub
2804
2805 'ProdCat click event
2806 'Triggers when an item from ProdCat is selected
2807 'Function: Fills products in ProdList dropdown menu from
2808 'table selected in ProdCat
2809
2810 Private Sub ProdCat_Click()
2811
2812
2813 Dim ProductLoop, ProductCount As Integer
2814

110
2815 Dim ProductList() As String
2816
2817
2818 Select Case ProdCat.List(ProdCat.ListIndex)
2819
2820 Case "MALE - SHIRTS"
2821
2822 ProdList.Clear
2823 M_Shirts.Refresh
2824 ProductCount = M_Shirts.Recordset.RecordCount
2825 ReDim ProductList(ProductCount) As String
2826
2827 With M_Shirts.Recordset
2828 While (Not M_Shirts.Recordset.EOF)
2829 ProductList(ProductLoop) =
(M_Shirts.Recordset.Fields.Item(1))
2830 M_Shirts.Recordset.MoveNext
2831 ProductLoop = (ProductLoop + 1)
2832 Wend
2833 End With
2834
2835 ProductLoop = 0
2836
2837 For ProductLoop = 0 To (ProductCount - 1)
2838 ProdList.AddItem ProductList(ProductLoop)
2839 Next
2840
2841
2842 Case "MALE - T-SHIRTS"
2843
2844 ProdList.Clear
2845 M_Tshirts.Refresh
2846 ProductCount = M_Tshirts.Recordset.RecordCount
2847 ReDim ProductList(ProductCount) As String
2848
2849 With M_Tshirts.Recordset
2850 While (Not M_Tshirts.Recordset.EOF)
2851 ProductList(ProductLoop) =
(M_Tshirts.Recordset.Fields.Item(1))
2852 M_Tshirts.Recordset.MoveNext
2853 ProductLoop = (ProductLoop + 1)
2854 Wend
2855 End With
2856
2857 ProductLoop = 0
2858
2859 For ProductLoop = 0 To (ProductCount - 1)
2860 ProdList.AddItem ProductList(ProductLoop)

111
2861 Next
2862
2863
2864 Case "MALE - JEANS"
2865
2866 ProdList.Clear
2867 M_Jeans.Refresh
2868 ProductCount = M_Jeans.Recordset.RecordCount
2869 ReDim ProductList(ProductCount) As String
2870
2871 With M_Jeans.Recordset
2872 While (Not M_Jeans.Recordset.EOF)
2873 ProductList(ProductLoop) =
(M_Jeans.Recordset.Fields.Item(1))
2874 M_Jeans.Recordset.MoveNext
2875 ProductLoop = (ProductLoop + 1)
2876 Wend
2877 End With
2878
2879 ProductLoop = 0
2880
2881 For ProductLoop = 0 To (ProductCount - 1)
2882 ProdList.AddItem ProductList(ProductLoop)
2883 Next
2884
2885
2886 Case "MALE - SHORTS"
2887
2888 ProdList.Clear
2889 M_Shorts.Refresh
2890 ProductCount = M_Shorts.Recordset.RecordCount
2891 ReDim ProductList(ProductCount) As String
2892
2893 With M_Shorts.Recordset
2894 While (Not M_Shorts.Recordset.EOF)
2895 ProductList(ProductLoop) =
(M_Shorts.Recordset.Fields.Item(1))
2896 M_Shorts.Recordset.MoveNext
2897 ProductLoop = (ProductLoop + 1)
2898 Wend
2899 End With
2900
2901 ProductLoop = 0
2902
2903 For ProductLoop = 0 To (ProductCount - 1)
2904 ProdList.AddItem ProductList(ProductLoop)
2905 Next
2906

112
2907 Case "MALE - TROUSERS"
2908
2909 ProdList.Clear
2910 M_Trousers.Refresh
2911 ProductCount = M_Trousers.Recordset.RecordCount
2912 ReDim ProductList(ProductCount) As String
2913
2914 With M_Trousers.Recordset
2915 While (Not M_Trousers.Recordset.EOF)
2916 ProductList(ProductLoop) =
(M_Trousers.Recordset.Fields.Item(1))
2917 M_Trousers.Recordset.MoveNext
2918 ProductLoop = (ProductLoop + 1)
2919 Wend
2920 End With
2921
2922 ProductLoop = 0
2923
2924 For ProductLoop = 0 To (ProductCount - 1)
2925 ProdList.AddItem ProductList(ProductLoop)
2926 Next
2927
2928
2929 Case "MALE - JACKETS"
2930
2931 ProdList.Clear
2932 M_Jackets.Refresh
2933 ProductCount = M_Jackets.Recordset.RecordCount
2934 ReDim ProductList(ProductCount) As String
2935
2936 With M_Jackets.Recordset
2937 While (Not M_Jackets.Recordset.EOF)
2938 ProductList(ProductLoop) =
(M_Jackets.Recordset.Fields.Item(1))
2939 M_Jackets.Recordset.MoveNext
2940 ProductLoop = (ProductLoop + 1)
2941 Wend
2942 End With
2943
2944 ProductLoop = 0
2945
2946 For ProductLoop = 0 To (ProductCount - 1)
2947 ProdList.AddItem ProductList(ProductLoop)
2948 Next
2949
2950
2951 Case "FEMALE - TOPS"
2952

113
2953 ProdList.Clear
2954 F_Tops.Refresh
2955 ProductCount = F_Tops.Recordset.RecordCount
2956 ReDim ProductList(ProductCount) As String
2957
2958 With F_Tops.Recordset
2959 While (Not F_Tops.Recordset.EOF)
2960 ProductList(ProductLoop) =
(F_Tops.Recordset.Fields.Item(1))
2961 F_Tops.Recordset.MoveNext
2962 ProductLoop = (ProductLoop + 1)
2963 Wend
2964 End With
2965
2966 ProductLoop = 0
2967
2968 For ProductLoop = 0 To (ProductCount - 1)
2969 ProdList.AddItem ProductList(ProductLoop)
2970 Next
2971
2972 Case "FEMALE - CAPRIS"
2973
2974 ProdList.Clear
2975 F_Capris.Refresh
2976 ProductCount = F_Capris.Recordset.RecordCount
2977 ReDim ProductList(ProductCount) As String
2978
2979 With F_Capris.Recordset
2980 While (Not F_Capris.Recordset.EOF)
2981 ProductList(ProductLoop) =
(F_Capris.Recordset.Fields.Item(1))
2982 F_Capris.Recordset.MoveNext
2983 ProductLoop = (ProductLoop + 1)
2984 Wend
2985 End With
2986
2987 ProductLoop = 0
2988
2989 For ProductLoop = 0 To (ProductCount - 1)
2990 ProdList.AddItem ProductList(ProductLoop)
2991 Next
2992
2993 Case "FEMALE - JEANS"
2994
2995 ProdList.Clear
2996 F_Jeans.Refresh
2997 ProductCount = F_Jeans.Recordset.RecordCount
2998 ReDim ProductList(ProductCount) As String

114
2999
3000 With F_Jeans.Recordset
3001 While (Not F_Jeans.Recordset.EOF)
3002 ProductList(ProductLoop) =
(F_Jeans.Recordset.Fields.Item(1))
3003 F_Jeans.Recordset.MoveNext
3004 ProductLoop = (ProductLoop + 1)
3005 Wend
3006 End With
3007
3008 ProductLoop = 0
3009
3010 For ProductLoop = 0 To (ProductCount - 1)
3011 ProdList.AddItem ProductList(ProductLoop)
3012 Next
3013
3014 Case "FEMALE - SKIRTS"
3015
3016 ProdList.Clear
3017 F_Skirts.Refresh
3018 ProductCount = F_Skirts.Recordset.RecordCount
3019 ReDim ProductList(ProductCount) As String
3020
3021 With F_Skirts.Recordset
3022 While (Not F_Skirts.Recordset.EOF)
3023 ProductList(ProductLoop) =
(F_Skirts.Recordset.Fields.Item(1))
3024 F_Skirts.Recordset.MoveNext
3025 ProductLoop = (ProductLoop + 1)
3026 Wend
3027 End With
3028
3029 ProductLoop = 0
3030
3031 For ProductLoop = 0 To (ProductCount - 1)
3032 ProdList.AddItem ProductList(ProductLoop)
3033 Next
3034
3035
3036 Case "FEMALE - TROUSERS"
3037
3038 ProdList.Clear
3039 F_Trousers.Refresh
3040 ProductCount = F_Trousers.Recordset.RecordCount
3041 ReDim ProductList(ProductCount) As String
3042
3043 With F_Trousers.Recordset
3044 While (Not F_Trousers.Recordset.EOF)

115
3045 ProductList(ProductLoop) =
(F_Trousers.Recordset.Fields.Item(1))
3046 F_Trousers.Recordset.MoveNext
3047 ProductLoop = (ProductLoop + 1)
3048 Wend
3049 End With
3050
3051 ProductLoop = 0
3052
3053 For ProductLoop = 0 To (ProductCount - 1)
3054 ProdList.AddItem ProductList(ProductLoop)
3055 Next
3056
3057 Case "FEMALE - STOCKINGS"
3058
3059 ProdList.Clear
3060 F_Stockings.Refresh
3061 ProductCount = F_Stockings.Recordset.RecordCount
3062 ReDim ProductList(ProductCount) As String
3063
3064 With F_Stockings.Recordset
3065 While (Not F_Stockings.Recordset.EOF)
3066 ProductList(ProductLoop) =
(F_Stockings.Recordset.Fields.Item(1))
3067 F_Stockings.Recordset.MoveNext
3068 ProductLoop = (ProductLoop + 1)
3069 Wend
3070 End With
3071
3072 ProductLoop = 0
3073
3074 For ProductLoop = 0 To (ProductCount - 1)
3075 ProdList.AddItem ProductList(ProductLoop)
3076 Next
3077
3078 End Select
3079
3080
3081 End Sub
3082
3083 'cmdCancel click event
3084 'Triggers when the "CANCEL" Button is pressed
3085 'Function: Closes Inventory and open Main Screen
3086
3087 Private Sub cmdCancel_Click()
3088 frmMain.Show
3089 Unload Me
3090

116
3091 End Sub
3092
3093 'cmdConfirm click event
3094 'Triggers when the "CONFIRM" Button is pressed
3095 'Function: Adds goods to inventory
3096
3097 Private Sub cmdConfirm_Click()
3098
3099 ‘Storing Product code to write in Inventory log
3100 Dim ProdCode As String
3101
3102 'UPDATING THE STOCK DATABASE
3103
3104 If (ProdCat.Text = "MALE - SHIRTS") Then
3105
3106 M_Shirts.Recordset.MoveFirst
3107
3108 'Checking till end of database is reached
3109
3110 Do Until M_Shirts.Recordset.EOF
3111
3112 'Checking if product selected is the product in database
3113
3114 If (M_Shirts.Recordset.Fields.Item(1) = ProdList.Text) Then
3115
3116 'Get ProdCode for Inventory entry
3117 ProdCode = M_Shirts.Recordset.Fields.Item(0) & " / " &
M_Shirts.Recordset.Fields.Item(1)
3118
3119 'Updating Stock
3120 Stock = Val(M_Shirts.Recordset.Fields.Item(3)) +
Val(Quantity.Text)
3121 M_Shirts.Recordset.Fields.Item(3) = Val(Stock)
3122 M_Shirts.Recordset.Update
3123
3124 Exit Do
3125
3126 Else
3127
3128 'If product is not the current record, then moves to next record
3129 M_Shirts.Recordset.MoveNext
3130
3131 End If
3132 Loop
3133
3134
3135 ElseIf (ProdCat.Text = "MALE - T-SHIRTS") Then
3136

117
3137 M_Tshirts.Recordset.MoveFirst
3138
3139 'Checking till end of database is reached
3140
3141 Do Until M_Tshirts.Recordset.EOF
3142
3143 'Checking if product selected is the product in database
3144
3145 If (M_Tshirts.Recordset.Fields.Item(1) = ProdList.Text) Then
3146
3147 'Get ProdCode for Inventory entry
3148 ProdCode = M_Tshirts.Recordset.Fields.Item(0) & " / " &
M_Tshirts.Recordset.Fields.Item(1)
3149
3150 'Updating Stock
3151 Stock = Val(M_Tshirts.Recordset.Fields.Item(3)) +
Val(Quantity.Text)
3152 M_Tshirts.Recordset.Fields.Item(3) = Val(Stock)
3153 M_Tshirts.Recordset.Update
3154
3155 Exit Do
3156
3157 Else
3158
3159 'If product is not the current record, then moves to next record
3160 M_Tshirts.Recordset.MoveNext
3161
3162 End If
3163 Loop
3164
3165
3166 ElseIf (ProdCat.Text = "MALE - JEANS") Then
3167
3168 M_Jeans.Recordset.MoveFirst
3169
3170 'Checking till end of database is reached
3171
3172 Do Until M_Jeans.Recordset.EOF
3173
3174 'Checking if product selected is the product in database
3175
3176 If (M_Jeans.Recordset.Fields.Item(1) = ProdList.Text) Then
3177
3178 'Get ProdCode for Inventory entry
3179 ProdCode = M_Jeans.Recordset.Fields.Item(0) & " / " &
M_Jeans.Recordset.Fields.Item(1)
3180
3181 'Updating Stock

118
3182 Stock = Val(M_Jeans.Recordset.Fields.Item(3)) +
Val(Quantity.Text)
3183 M_Jeans.Recordset.Fields.Item(3) = Val(Stock)
3184 M_Jeans.Recordset.Update
3185
3186 Exit Do
3187
3188 Else
3189
3190 'If product is not the current record, then moves to next record
3191 M_Jeans.Recordset.MoveNext
3192
3193 End If
3194 Loop
3195
3196
3197 ElseIf (ProdCat.Text = "MALE - SHORTS") Then
3198
3199 M_Shorts.Recordset.MoveFirst
3200
3201 'Checking till end of database is reached
3202
3203 Do Until M_Shorts.Recordset.EOF
3204
3205 'Checking if product selected is the product in database
3206
3207 If (M_Shorts.Recordset.Fields.Item(1) = ProdList.Text) Then
3208
3209 'Get ProdCode for Inventory entry
3210 ProdCode = M_Shorts.Recordset.Fields.Item(0) & " / " &
M_Shorts.Recordset.Fields.Item(1)
3211
3212 'Updating Stock
3213 Stock = Val(M_Shorts.Recordset.Fields.Item(3)) +
Val(Quantity.Text)
3214 M_Shorts.Recordset.Fields.Item(3) = Val(Stock)
3215 M_Shorts.Recordset.Update
3216
3217 Exit Do
3218
3219 Else
3220
3221 'If product is not the current record, then moves to next record
3222 M_Shorts.Recordset.MoveNext
3223
3224 End If
3225 Loop
3226

119
3227
3228 ElseIf (ProdCat.Text = "MALE - TROUSERS") Then
3229
3230 M_Trousers.Recordset.MoveFirst
3231
3232 'Checking till end of database is reached
3233
3234 Do Until M_Trousers.Recordset.EOF
3235
3236 'Checking if product selected is the product in database
3237
3238 If (M_Trousers.Recordset.Fields.Item(1) = ProdList.Text) Then
3239
3240 'Get ProdCode for Inventory entry
3241 ProdCode = M_Trousers.Recordset.Fields.Item(0) & " / " &
M_Trousers.Recordset.Fields.Item(1)
3242
3243 'Updating Stock
3244 Stock = Val(M_Trousers.Recordset.Fields.Item(3)) +
Val(Quantity.Text)
3245 M_Trousers.Recordset.Fields.Item(3) = Val(Stock)
3246 M_Trousers.Recordset.Update
3247
3248 Exit Do
3249
3250 Else
3251
3252 'If product is not the current record, then moves to next record
3253 M_Trousers.Recordset.MoveNext
3254
3255 End If
3256 Loop
3257
3258
3259 ElseIf (ProdCat.Text = "MALE - JACKETS") Then
3260
3261 M_Jackets.Recordset.MoveFirst
3262
3263 'Checking till end of database is reached
3264
3265 Do Until M_Jackets.Recordset.EOF
3266
3267 'Checking if product selected is the product in database
3268
3269 If (M_Jackets.Recordset.Fields.Item(1) = ProdList.Text) Then
3270
3271 'Get ProdCode for Inventory entry

120
3272 ProdCode = M_Jackets.Recordset.Fields.Item(0) & " / " &
M_Jackets.Recordset.Fields.Item(1)
3273
3274 'Updating Stock
3275 Stock = Val(M_Jackets.Recordset.Fields.Item(3)) +
Val(Quantity.Text)
3276 M_Jackets.Recordset.Fields.Item(3) = Val(Stock)
3277 M_Jackets.Recordset.Update
3278
3279 Exit Do
3280
3281 Else
3282
3283 'If product is not the current record, then moves to next record
3284 M_Jackets.Recordset.MoveNext
3285
3286 End If
3287 Loop
3288
3289
3290 ElseIf (ProdCat.Text = "FEMALE - TOPS") Then
3291
3292 F_Tops.Recordset.MoveFirst
3293
3294 'Checking till end of database is reached
3295
3296 Do Until F_Tops.Recordset.EOF
3297
3298 'Checking if product selected is the product in database
3299
3300 If (F_Tops.Recordset.Fields.Item(1) = ProdList.Text) Then
3301
3302 'Get ProdCode for Inventory entry
3303 ProdCode = F_Tops.Recordset.Fields.Item(0) & " / " &
F_Tops.Recordset.Fields.Item(1)
3304
3305 'Updating Stock
3306 Stock = Val(F_Tops.Recordset.Fields.Item(3)) +
Val(Quantity.Text)
3307 F_Tops.Recordset.Fields.Item(3) = Val(Stock)
3308 F_Tops.Recordset.Update
3309
3310 Exit Do
3311
3312 Else
3313
3314 'If product is not the current record, then moves to next record
3315 F_Tops.Recordset.MoveNext

121
3316
3317 End If
3318 Loop
3319
3320
3321 ElseIf (ProdCat.Text = "FEMALE - CAPRIS") Then
3322
3323 F_Capris.Recordset.MoveFirst
3324
3325 'Checking till end of database is reached
3326
3327 Do Until F_Capris.Recordset.EOF
3328
3329 'Checking if product selected is the product in database
3330
3331 If (F_Capris.Recordset.Fields.Item(1) = ProdList.Text) Then
3332
3333 'Get ProdCode for Inventory entry
3334 ProdCode = F_Capris.Recordset.Fields.Item(0) & " / " &
F_Capris.Recordset.Fields.Item(1)
3335
3336 'Updating Stock
3337 Stock = Val(F_Capris.Recordset.Fields.Item(3)) +
Val(Quantity.Text)
3338 F_Capris.Recordset.Fields.Item(3) = Val(Stock)
3339 F_Capris.Recordset.Update
3340
3341 Exit Do
3342
3343 Else
3344
3345 'If product is not the current record, then moves to next record
3346 F_Capris.Recordset.MoveNext
3347
3348 End If
3349 Loop
3350
3351 ElseIf (ProdCat.Text = "FEMALE - JEANS") Then
3352
3353 F_Jeans.Recordset.MoveFirst
3354
3355 'Checking till end of database is reached
3356
3357 Do Until F_Jeans.Recordset.EOF
3358
3359 'Checking if product selected is the product in database
3360
3361 If (F_Jeans.Recordset.Fields.Item(1) = ProdList.Text) Then

122
3362
3363 'Get ProdCode for Inventory entry
3364 ProdCode = F_Jeans.Recordset.Fields.Item(0) & " / " &
F_Jeans.Recordset.Fields.Item(1)
3365
3366 'Updating Stock
3367 Stock = Val(F_Jeans.Recordset.Fields.Item(3)) +
Val(Quantity.Text)
3368 F_Jeans.Recordset.Fields.Item(3) = Val(Stock)
3369 F_Jeans.Recordset.Update
3370
3371 Exit Do
3372
3373 Else
3374
3375 'If product is not the current record, then moves to next record
3376 F_Jeans.Recordset.MoveNext
3377
3378 End If
3379 Loop
3380
3381 ElseIf (ProdCat.Text = "FEMALE - SKIRTS") Then
3382
3383 F_Skirts.Recordset.MoveFirst
3384
3385 'Checking till end of database is reached
3386
3387 Do Until F_Skirts.Recordset.EOF
3388
3389 'Checking if product selected is the product in database
3390
3391 If (F_Skirts.Recordset.Fields.Item(1) = ProdList.Text) Then
3392
3393 'Get ProdCode for Inventory entry
3394 ProdCode = F_Skirts.Recordset.Fields.Item(0) & " / " &
F_Skirts.Recordset.Fields.Item(1)
3395
3396 'Updating Stock
3397 Stock = Val(F_Skirts.Recordset.Fields.Item(3)) +
Val(Quantity.Text)
3398 F_Skirts.Recordset.Fields.Item(3) = Val(Stock)
3399 F_Skirts.Recordset.Update
3400
3401 Exit Do
3402
3403 Else
3404
3405 'If product is not the current record, then moves to next record

123
3406 F_Skirts.Recordset.MoveNext
3407
3408 End If
3409 Loop
3410
3411 ElseIf (ProdCat.Text = "FEMALE - TROUSERS") Then
3412
3413 F_Trousers.Recordset.MoveFirst
3414
3415 'Checking till end of database is reached
3416
3417 Do Until F_Trousers.Recordset.EOF
3418
3419 'Checking if product selected is the product in database
3420
3421 If (F_Trousers.Recordset.Fields.Item(1) = ProdList.Text)
Then
3422
3423 'Get ProdCode for Inventory entry
3424 ProdCode = F_Trousers.Recordset.Fields.Item(0) & " / " &
F_Trousers.Recordset.Fields.Item(1)
3425
3426 'Updating Stock
3427 Stock = Val(F_Trousers.Recordset.Fields.Item(3)) +
Val(Quantity.Text)
3428 F_Trousers.Recordset.Fields.Item(3) = Val(Stock)
3429 F_Trousers.Recordset.Update
3430
3431 Exit Do
3432
3433 Else
3434
3435 'If product is not the current record, then moves to next record
3436 F_Trousers.Recordset.MoveNext
3437
3438 End If
3439 Loop
3440
3441 ElseIf (ProdCat.Text = "FEMALE - STOCKINGS") Then
3442
3443 F_Stockings.Recordset.MoveFirst
3444
3445 'Checking till end of database is reached
3446
3447 Do Until F_Stockings.Recordset.EOF
3448
3449 'Checking if product selected is the product in database
3450

124
3451 If (F_Stockings.Recordset.Fields.Item(1) = ProdList.Text)
Then
3452
3453 'Get ProdCode for Inventory entry
3454 ProdCode = F_Stockings.Recordset.Fields.Item(0) & " / " &
F_Stockings.Recordset.Fields.Item(1)
3455
3456 'Updating Stock
3457 Stock = Val(F_Stockings.Recordset.Fields.Item(3)) +
Val(Quantity.Text)
3458 F_Stockings.Recordset.Fields.Item(3) = Val(Stock)
3459 F_Stockings.Recordset.Update
3460
3461 Exit Do
3462
3463 Else
3464
3465 'If product is not the current record, then moves to next record
3466 F_Stockings.Recordset.MoveNext
3467
3468 End If
3469 Loop
3470
3471 End If
3472
3473
3474 Dim LogDate As String
3475
3476 'Storing the Date in the DisplayDate variable
3477 DisplayDate = DateValue(Now)
3478
3479 'Formating and displaying the date as DD / MM / YYYY
3480 LogDate = Format(DisplayDate, "DD / MM / YYYY")
3481
3482 'WRITING THE INVENTORY LOG
3483
3484 'Refreshing the InventorySales control
3485 InventoryLog.Refresh
3486
3487 With InventoryLog.Recordset
3488 'Adding a new record in the Inventory log
3489 InventoryLog.Recordset.AddNew
3490
3491 'Adding the Date
3492 InventoryLog.Recordset.Fields("Date") = LogDate
3493
3494 'Adding the Supplier Name
3495 InventoryLog.Recordset.Fields("Supplier") = SupList.Text

125
3496
3497 'Adding the Reference number
3498 InventoryLog.Recordset.Fields("Ref No") = SRefNo.Text
3499
3500 'Adding the Product name
3501 InventoryLog.Recordset.Fields("Product") = ProdCode
3502
3503 'Adding the Quantity received
3504 InventoryLog.Recordset.Fields("Quantity") = Quantity.Text
3505
3506 'Updating the Inventory log
3507 InventoryLog.Recordset.Update
3508 InventoryLog.Recordset.Requery
3509
3510 End With
3511
3512 'Displaying Successful Dialog message
3513 MsgBox ("Inventory Successfully Updated")
3514
3515 'Opening Main Form
3516 frmMain.Show
3517 'Closing Inventory Form
3518 Unload Me
3519
3520 End Sub

MODULES

NAME: BACKUP

3521 '********************************************************
3522 ' MODULE: Backup
3523 ' PURPOSE: For Backup and Restore of Databases
3524 '********************************************************
3525
3526 Public Function BackupDB()
3527
3528 Dim ProdDB, MainDB, BackupProdDB, BackupMainDB As String
3529
3530 'Path of the main database file
3531 MainDB = App.Path & "\Database.mdb"
3532

126
3533 'Path of the product database file
3534 ProdDB = App.Path & "\Products.mdb"
3535
3536 'Path of the BACKUP database file
3537 BackupMainDB = App.Path & "\BACKUP\Database.mdb"
3538
3539 'Path of the BACKUP products database file
3540 BackupProdDB = App.Path & "\BACKUP\Products.mdb"
3541
3542 'Copying the database from the main directory to the BACKUP
directory using FileCopy function of VB
3543 FileCopy MainDB, BackupMainDB
3544 FileCopy ProdDB, BackupProdDB
3545
3546 'Displaying message box with message
3547 ‘"BACKUP SUCCESSFUL !"
3548 MsgBox ("BACKUP SUCCESSFUL !")
3549
3550 End Function
3551
3552 Public Function RestoreDB()
3553
3554 Dim ProdDB, MainDB, BackupProdDB, BackupMainDB As String
3555
3556 'Path of the main database file
3557 MainDB = App.Path & "\Database.mdb"
3558
3559 'Path of the product database file
3560 ProdDB = App.Path & "\Products.mdb"
3561
3562 'Path of the BACKUP database file
3563 BackupMainDB = App.Path & "\BACKUP\Database.mdb"
3564
3565 'Path of the BACKUP products database file
3566 BackupProdDB = App.Path & "\BACKUP\Products.mdb"
3567
3568 'Copying the database from the main directory to the BACKUP
3569 ‘directory using FileCopy function of VB
3570 FileCopy BackupMainDB, MainDB
3571 FileCopy BackupProdDB, ProdDB
3572
3573 'Displaying message box with message
3574 ‘"BACKUP SUCCESSFUL !"
3575 MsgBox ("RESTORE SUCCESSFUL !")
3576
3577 End Function

127
3578 '********************************************************
3579 ' MODULE: CardNo
3580 ' PURPOSE: Generate Card Numbers for Members
3581 '********************************************************
3582
3583 Public Function GetCardNo()
3584
3585 Dim CardNumber As String
3586 Dim CardFile As Integer
3587
3588 CardFile = FreeFile
3589
3590 'Open the file for reading
3591 Open App.Path & "\CardNo.txt" For Input As #CardFile
3592
3593 'Read the file until we reach the end
3594 Do While Not EOF(CardFile)
3595 Input #CardFile, CardNumber
3596 frmMembers.CardNo.Text = CardNumber
3597 Loop
3598
3599 'Closing the file
3600 Close #CardFile
3601
3602 End Function
3603
3604 Public Function UpdateCardNo()
3605
3606 Dim CardNumber As String
3607 Dim CardFile As Integer
3608 Dim CardUpdate As Integer
3609
3610 CardFile = FreeFile
3611
3612 'Open the file for reading the current CardNo
3613 Open App.Path & "\CardNo.txt" For Input As #CardFile
3614
3615 'Reading CardNo for current Card No
3616 Line Input #CardFile, CardNumber
3617 CardUpdate = ((Val(CardNumber)) + 1)
3618
3619 'Closing the file
3620 Close #CardFile
3621

128
3622
3623 'Open file for updating Card No
3624 Open App.Path & "\CardNo.txt" For Output As #CardFile
3625
3626 'Updating new Card No to file
3627 Print #CardFile, CardUpdate
3628
3629
3630 'Closing the file
3631 Close #CardFile
3632
3633 End Function

3634 '********************************************************
3635 ' MODULE: OrderNo
3636 ' PURPOSE: Generate Order Numbers for Orders
3637 '********************************************************
3638
3639 Public Function GetOrderNo()
3640
3641 Dim OrderNumber As String
3642 Dim OrderFile As Integer
3643
3644 OrderFile = FreeFile
3645
3646 'Open the file for reading
3647 Open App.Path & "\OrderNo.txt" For Input As #OrderFile
3648
3649 'Read the file until we reach the end
3650 Do While Not EOF(OrderFile)
3651 Input #OrderFile, OrderNumber
3652 frmBill.BillNoLabel.Caption = OrderNumber
3653 Loop
3654
3655 'Closing the file
3656 Close #OrderFile
3657
3658 End Function
3659
3660 Public Function UpdateOrderNo()
3661
3662 Dim OrderNumber As String
3663 Dim OrderFile As Integer
3664 Dim OrderUpdate As Integer

129
3665
3666 OrderFile = FreeFile
3667
3668 'Open the file for reading the current Order No
3669 Open App.Path & "\OrderNo.txt" For Input As #OrderFile
3670
3671 'Reading CardNo for current Order No
3672 Line Input #OrderFile, OrderNumber
3673 OrderUpdate = ((Val(OrderNumber)) + 1)
3674
3675 'Closing the file
3676 Close #OrderFile
3677
3678
3679 'Open file for updating Order No
3680 Open App.Path & "\OrderNo.txt" For Output As #OrderFile
3681
3682 'Updating new Order No to file
3683 Print #OrderFile, OrderUpdate
3684
3685
3686 'Closing the file
3687 Close #OrderFile
3688
3689 End Function
3690

3691 '********************************************************
3692 ' MODULE: NewSale
3693 ' PURPOSE: Calculate total amount when product is
3694 ' added/removed/updated to the Cart
3695 '********************************************************
3696
3697 Public Function Calculate()
3698
3699 'Declaring variables
3700 'TotalAmt is for storing the total sale amount
3701 'TaxAmt is for storing the Tax (4% of TotalAmt)
3702 Dim TotalAmt, TaxAmt, DiscountAmt As Double
3703 'RowCount is for navigating through the Order table
3704 Dim RowCount As Integer
3705
3706 'Calculating the Total amount from each row till end of table is
reached
3707 For RowCount = 1 To (frmNewSale.Cart.Rows - 1)

130
3708 TotalAmt = TotalAmt +
Val(frmNewSale.Cart.TextMatrix(RowCount, 3))
3709 Next
3710
3711 'Displaying the Total, Tax and Total Amount in the labels
3712 frmNewSale.Total.Caption = TotalAmt
3713
3714 If (frmNewSale.Discount = True) Then
3715 DiscountAmt = TotalAmt * 0.1
3716 TaxAmt = ((TotalAmt - DiscountAmt) * 0.04)
3717 frmNewSale.GrossAmount.Caption =
3718 ((TotalAmt - DiscountAmt) + TaxAmt)
3719 Else
3720 TaxAmt = (TotalAmt * 0.04)
3721 frmNewSale.GrossAmount.Caption = (TotalAmt + TaxAmt)
3722 End If
3723
3724 frmNewSale.DiscAmt.Caption = DiscountAmt
3725 frmNewSale.Tax.Caption = TaxAmt
3726
3727 End Function
3728

3.1.2 Test Plan


1.
 LOGIN
SCREEN


(a) Blank
Login

(b) Wrong
Login

(c) User
Login

(d) Admin
Login


2. ADMIN
PANEL

(a) REPORTS


(a)
(i)
SALES
REPORT

(a)(ii)
INVENTORY
REPORT

(a)(iii)
MEMBERS
REPORT

(b) (i)

MANAGE
PRODUCTS

(ii)
Drop
Down

(iii)Drop
Down
Select


(iv)Add
Product


131
(v)
Add
+
Save

(vi)

Modify

(vii)
Modify
+
Save

(viii)
Delete

(c) MANAGE
USERS

(i) Add
User

(ii) Save
User

(iii)Modify
User

(iv) Modify
Saved

(v) Delete
User

(vi) Deleted


(d) SUPPLIERS

(i) Add
Supplier

(ii) Save
Supplier

(iii)Modify
Supplier

(iv) Delete
Supplier

(v) Deleted

(e) BACKUP
DATABASE

(f) RESTORE
DATABASE

(g) HELP

(h) LOG
OUT


3. MAIN
SCREEN


(a) VIEW
PRODUCTS

(i)
 Catagories


(b)
 NEW
SALE
‐


(i) Category
Drop
Down

(ii) Product
Drop
Down

(iii)Add
to
Cart

(iv) Add
more
Product

(v) Membership
Card

(vi) Valid
Membership
Card

(vii) Discount
Applied

(viii) Bill
–
Member

(ix) 
Bill
‐
Cash

(x) 
Empty
Cart

(xi) 
Remove
from
Empty
Cart

(xii) Invalid
Card
Number

(xiii) Alphabetical
Quantity

(xiv)

Blank
Quantity



132
(
c
)
 MEMBERS
DATABASE

(i) Found

(ii)
Not
Found

(iii)
Invalid
Search

(iv)Blank
Search

(v)Add
New
Member

(vi)
New
Member
Created


(d)
 INVENTORY

(i)
 Drop
Down

(ii)Data
filled

(iii)
Updated

(iv)Suppliers
Reference
Blank

(v)Quantity
Blank


(e)
 HELP


3.1.3 Test Run

1.
 LOGIN SCREEN


When
 the
 User
 runs
 the
 program,
 the
 First
 Screen
 that
 appears
 will
 be
 the
 “LOGIN”

Screen.
 In
 this
 “LOGIN”
 Screen,
 the
 User
 has
 to
 enter
 the
 username
 in
 the

“USERNAME”
 field
 and
 the
 selected
 password
 in
 the
 “PASSWORD”
 field.
 The
 Login

Screen
 has
 an
 option
 to
 Login
 after
 filling
 the
 Username
 and
 Password
 into
 their

respective
fields
or
has
an
option
to
Exit
the
program
by
pressing
the
“EXIT”
Button.
It

will
appear
as
below
:







133

1 (a) BLANK LOGIN


If
the
User
does
not
enter
any
text
or
value
in
the
“USERNAME”
and
leaves
it
blank,
or

does
not
enter
any
value
in
the
“PASSWORD”
field
and
leaves
it
blank,
then
a
pop‐up

window
 will
 appear
 with
 the
 message
 “INVALID
 LOGIN”.
 The
 option
 in
 this
 Pop‐up

will
 be
 an
 “OK”
 button.
 On
 pressing
 this
 “OK”
 button,
 the
 Pop‐up
 window
 will
 close

and
 the
 User
 will
 have
 to
 enter
 the
 Username
 and
 Password
 into
 the
 fields
 of
 the

Login
window.
It
will
appear
as
below
:




1 (b) WRONG LOGIN

If
the
User
enters
a
wrong
username
in
the
“USERNAME”
or
enters
a
wrong
password

in
 the
 “PASSWORD”
 field,
 then
 a
 pop‐up
 window
 will
 appear
 with
 the
 message

“INVALID
LOGIN”.
The
option
in
this
Pop‐up
will
be
an
“OK”
button.
On
pressing
this

“OK”
 button,
 the
 Pop‐up
 window
 will
 close
 and
 the
 User
 will
 have
 to
 enter
 the

Username
and
Password
into
the
fields
of
the
Login
window.
It
will
appear
as
below
:


134


1 (c) USER LOGIN



The
staff
member
has
to
enter
a
valid
Username
in
the
“USERNAME”
field,
the
correct

Password
 in
 the
 “PASSWORD”
 field.
 These
 are
 assigned
 by
 the
 Administrator
 in

“MANAGE
USERS”
in
the
Admin
Panel.
Once
the
login
credentials
are
entered,
the
User

has
 to
 press
 the
 “LOGIN”
 button
 to
 get
 access
 to
 the
 system.
 Pressing
 the
 “EXIT”

button
will
close
the
application.
It
will
appear
as
below
:





135
1 (d) ADMIN LOGIN

The
 Program
 has
 a
 predefined
 Administrator
 Account
 with
 a
 default
 Username
 of

“admin”
 and
 a
 default
 password
 as
 “attire”.
 The
 Administrator
 Username
 and

Password
 are
 pre‐defined
 and
 by
 default.
 This
 Account
 enables
 the
 User
 (Store

owner)
to
have
an
overall
control
of
the
system.
It
will
appear
as
below
:





2.
 ADMIN PANEL




When
 the
 Administrator
 enters
 the
 pre‐defined
 and
 default
 Username
 of
 “admin”
 in

the
 “USERNAME”
 field
 and
 the
 pre‐defined
 and
 default
 password
 “fiesta”
 in
 the

“PASSWORD”
 field,
 the
 following
 “ADMIN
 PANEL”
 will
 be
 displayed.
 This
 “ADMIN

PANEL”
will
show
the
System
Date
and
Time
and
has
7
(seven)
options
in
the
form
of

7
(seven)
buttons
and
a
HELP
button.
The
Seven
Options
are:
“REPORTS”,
“MANAGE

PRODUCTS”,
 “MANAGE
 USERS”,
 “SUPPLIERS”,
 “BACKUP
 DATABASE”,
 “RESTORE

DATABASE”,
“LOG
OUT”
and
“HELP”.
It
will
appear
as
below
:


136



2 (a) REPORTS

Since
the
Administrator
needs
to
view
the
various
reports
regularly,
the
first
option
is

Reports.
 On
 pressing
 the
 “REPORTS”
 Button,
 a
 Window
 will
 open
 which
 will
 have
 3

(three)
 buttons
 for
 three
 type
 of
 Report
 options
 viz:
 SALES,
 INVENTORY
 and

MEMBER.



137



2 (a) (i) SALES REPORT


 On
choosing
the
first
option
and
pressing
the
SALES
button,
the
Sales
Report

will
be
displayed.
This
Report
has
basic
details
and
data
like
Date
of
the
Bill,
Bill
No.

and
Bill
Amount.
It
will
appear
as
below
:


138


2 (a) (ii) INVENTORY REPORT




 The
 INVENTORY
 REPORT
 displays
 the
 data
 like
 Date
 of
 supply,
 Suppliers

Name,
Supplier
Reference
No.
(Supplier
Bill
No.
under
which
the
goods
are
supplied),

Products
received
and
Quantity
of
Products
received.
This
will
appear
as
below
:


139


2 (a) (iii) MEMBER REPORT


The
MEMBER
REPORT
will
give
all
the
details
of
the
Members
required
by
the
Store

Owner
viz.
Membership
Card
Number,
Name
of
the
Member,
Telephone
Number
of

the
Member,
E‐mail
of
the
Member
and
Address
of
the
Member.
This
will
allow
the

Store
Owner
to
view
the
List
of
Members
of
the
store
who
have
its
Membership.
This

will
appear
as
below
:


140

2 (b) (i) MANAGE PRODUCTS




Since
 the
 Administrator
 will
 manage
 the
 products,
 it
 is
 only
 the
 Administrator
 who

has
the
access
and
the
authority
to
add
or
change
the
products
and
set
its
prices.
The

Second
Button
is
the
“MANAGE
PRODUCTS”
Button.
When
the
Administrator
presses

the
 “MANAGE
 PRODUCTS”
 Button,
 the
 following
 Screen
 will
 be
 displayed.
 The

MANAGE
PRODUCTS
Screen
will
have
a
drop‐down
Menu
which
will
list
the
Category

of
the
Products
to
be
managed.



141

2 (b) (ii) MANAGE PRODUCTS – DROP DOWN




Once
the
Administrator
clicks
on
the
Drop
Down
Menu,
a
list
of
Categories
of
products

will
 be
 displayed.
 The
 Administrator
 has
 to
 select
 a
 Category
 from
 the
 list
 of

Categories
 in
 the
 drop
 down
 menu.
 When
 the
 Administrator
 selects
 a
 Category,
 the

products
falling
under
that
category
will
be
displayed
in
the
Tables
below.


142

2 (b) (iii) MANAGE PRODUCTS – DROP DOWN SELECT




The
Table
has
columns
of
Product
Code,
Product
Name,
Price
of
the
Product
and
Stock

of
 the
 Product.
 Since
 there
 are
 many
 Products
 under
 each
 category,
 a
 Table
 view

would
be
suitable
as
all
of
them
could
be
seen
at
a
glance.
The
Administrator
will
be

able
to
Add
a
new
product,
Modify
a
product
or
Delete
a
product
using
the
buttons
at

the
 bottom
 of
 the
 screen.
 This
feature
will
be
 provided
 only
to
 the
Administrator
 as

the
Administrator
is
normally
required
to
Change
the
Product
Name,
Code,
Price
and

Stock
 as
 also
 to
Add,
Modify
 or
 Delete
 a
product
from
 the
 range
of
products
 offered

from
time
to
time.


143


2 (b) (iv) MANAGE PRODUCTS - ADD




When
 the
 Administrator
 wants
 to
 Add
 a
 product
 in
 the
 Product
 List,
 the

Administrator
 has
 to
 press
 the
 “ADD”
 Button.
 On
 pressing
 the
 “ADD”
 Button,
 a
 new

row
will
be
added
at
the
end
of
the
table
and
the
arrow
cursor
will
be
positioned
on

this
row.
The
“SAVE”
button
which
was
disabled
earlier
(it
was
grey)
will
now
become

enabled
(it
will
turn
black).
The
Administrator
has
to
fill
the
details
like:
the
Code
of

Product
to
be
added,
in
the
“CODE”
column,
the
Name
of
the
Product
to
be
added,
in

the
“PRODUCT
NAME”
column,
Rate
of
the
Product
to
be
added,
in
the
“PRICE”
column

and
Stock
of
the
Product
to
be
added,
in
the
“STOCK”
column.
It
can
be
seen
that
the

ADD
button
has
been
pressed
and
is
grey.


144



2 (b) (v) MANAGE PRODUCTS – ADD+SAVE



After
filling
the
details
like:
the
Code
of
Product
to
be
added,
in
the
“CODE”
column,

the
Name
of
the
Product
to
be
added,
in
the
“PRODUCT
NAME”
column,
the
Rate
of
the

Product
to
be
added,
in
the
“PRICE”
column,
and
the
Stock
of
the
Product
to
be
added,

in
the
“STOCK”
column,
the
Administrator
has
to
press
the
“SAVE”
Button.
On
pressing

the
“SAVE”
Button,
a
pop‐up
window
will
be
displayed
with
the
message
“Saved”
and

the
Product
will
be
added
to
the
Product
database
and
displayed
in
the
Table.
Again
it

can
be
seen
that
the
ADD
button
is
pressed
and
is
grey.


145

2 (b) (vi) MANAGE PRODUCTS - MODIFY



If
 the
 Administrator
 wants
 to
 make
 changes
 like
 Code,
 Name,
 Price
 or
 Stock
 of
 any

existing
 product
 in
 the
 list,
 then
 the
 Administrator
 has
 to
 select
 the
 product
 to
 be

modified
from
the
list.
The
Administrator
will
have
to
select
the
row
in
the
Table
in

which
the
changes
are
to
be
made
and
then
make
the
changes
to
the
existing
product

like
Code,
Name,
Price
or
Stock.
He
can
also
make
changes
in
all
the
fields
of
the
table.

It
can
be
seen
that
the
MODIFY
button
is
pressed
here
and
thus
is
grey.


146

2 (b) (vii) MANAGE PRODUCTS – MODIFY+SAVE





When
the
changes
are
made,
the
Administrator
has
to
click
on
the
“MODIFY”
button.

When
 the
 “MODIFY”
 Button
 is
 pressed,
 a
 pop‐up
 window
 will
 appear
 with
 the

message
 “Saved”
 and
 the
 changes
 will
 be
 saved
 in
 the
 Product
 database
 and
 will
 be

displayed
in
the
Table.
It
can
be
seen
here
that
the
MODIFY
button
is
pressed
and
is

therefore,
grey
in
color.


147



2 (b) (viii) MANAGE PRODUCTS - DELETE




To
delete
a
product
from
the
existing
list
of
Products
in
the
Table,
the
Administrator

has
to
select
the
row
of
the
product
to
be
deleted.
Then
the
Administrator
has
to
click

on
 the
 “DELETE”
 Button.
 On
 clicking
 the
 “DELETE”
 Button,
 a
 Confirmation
 window

will
be
displayed
with
the
message
“Are
you
sure?”
and
two
option
buttons
“Yes”
and

“No”.
 If
 the
 “Yes”
 button
 is
 clicked,
 the
 product
 will
 be
 deleted
 from
 the
 Product

database
and
will
not
be
shown
in
the
list
of
Products
in
the
Table.
If
the
“No”
button

is
 clicked,
 the
 Confirmation
 window
 will
 close
 and
 no
 changes
 will
 made
 to
 the

Product
database.
It
can
be
seen
in
the
image
below
:


148



When
the
Administrator
wants
to
delete
a
product
from
the
existing
list
of
products
in

the
Table,
the
Administrator
has
to
choose
a
row
of
the
product
to
be
deleted
and
click

on
the
“DELETE”
Button.
A
confirmation
dialog
box
will
appear
with
the
message
“Are

you
 sure?”
 If
 the
 “Yes”
 option
 is
 selected,
 then
 a
 pop‐up
 window
 will
 open
 with
 the

message
“Product
Deleted”
and
the
Product
will
be
deleted
from
the
Product
database

and
will
be
removed
from
the
list
of
products
in
the
Table.


149

2 (c) MANAGE USERS




Since
 the
 Administrator
 will
 manage
 the
 Users
 who
 would
 be
 authorized
 to
 use
 the

system,
 it
 is
 only
 the
 Administrator
 who
 has
 the
 access
 and
 the
 authority
 to
 add
 or

change
 the
 Users
 and
 set
 their
 passwords.
 The
 next
 Button
 is
 the
 “MANAGE
 USERS”

Button.
When
the
Administrator
presses
the
“MANAGE
USERS”
Button,
the
following

Screen
will
be
displayed.
This
MANAGE
USERS
Screen
has
a
Navigation
Bar
at
the
Top,

under
which
there
are
three
fields:
“STAFF
NAME”
Field
in
which
the
name
of
the
staff

member
 has
 to
 be
 filled
 by
 the
 Administrator,
 “USER
 NAME”
 Field
 in
 which
 the

username
 has
 to
 be
 assigned
 to
 the
 Staff
 member
 and
 is
 to
 be
 filled
 by
 the

Administrator
and
the
“PASSWORD”
Field
in
which
the
password
has
to
be
assigned

to
 the
 username
 and
 is
 to
 be
 filled
 by
 the
 Administrator.
 The
 Navigation
 Bar
 will

enable
 the
 Administrator
 to
 navigate
 through
 the
 User
 database
 records.
 The
 Inner

arrows
 of
 the
 Navigation
 Bar
 will
 go
 through
 the
 User
 database
 one
 after
 another

where
as
the
Outer
arrows
of
the
Navigation
Bar
will
go
to
the
first
and
last
record
of

the
User
database.
There
are
also
5
(five)
options
in
the
form
of
5
(five)
buttons.
They

are:
“ADD”,
“SAVE”,
“MODIFY”,
“DELETE”
and
“BACK”.


150

2 (c)(i) ADD USER




When
the
Administrator
wishes
to
Add
a
User,
the
Administrator
will
press
the
“ADD”

button.
 When
 the
 “ADD”
 Button
 is
 pressed,
 all
 the
 fields
 will
 become
 blank
 and
 the

Administrator
will
have
to
enter
the
New
Staff
Name
in
the
“Staff
Name”
field,
the
New

Username
in
the
“Username”
field
and
the
New
Password
in
the
“Password”
field
and

click
on
the
“SAVE”
button.
The
“SAVE”
Button
which
is
normally
disabled
will
only
be

enabled
when
the
“ADD”
button
is
pressed.


151
2 (c)(ii) USER CREATED - SAVED


When
 the
 Administrator
 fills
 the
 three
 fields
 with
 the
 Staff
 name,
 Username
 and

Password
and
presses
the
“SAVE”
Button,
a
Pop‐up
window
will
be
displayed
with
the

message
 “User
 Created
 Successfully”
 and
 the
 record
 will
 be
 added
 to
 the
 Users

database.
This
Pop‐up
window
will
have
a
Button
“OK”
in
it.
When
this
“OK”
button
is

pressed,
the
Pop‐up
window
will
close
and
the
User
fields
will
display
the
first
record

in
the
User
database.


152
2 (c)(iii) MODIFY USER


If
the
Administrator
wants
to
make
any
changes
to
a
User
account
like
changing
the

Username
 or
 Password,
 the
 Administrator
 will
 have
 to
 navigate
 to
 that
 Username

using
the
Inner
arrows
of
the
Navigation
Bar
and
then
make
the
changes
in
the
fields

as
required.
The
Administrator
can
then
click
on
the
“MODIFY”
Button.
It
can
be
seen

below
that
the
MODIFY
button
is
pressed
and
therefore
is
grey.


2 (c)(iv) MODIFY USER - SAVED


When
 the
 “MODIFY”
 button
 is
 pressed,
 a
 Pop‐up
 window
 will
 be
 displayed
 with
 the

message
 “User
 Updated
 Successfully”
 and
 the
 changes
 will
 take
 place
 in
 the
 Users

database.
In
the
Pop‐up
window
there
is
an
“OK”
Button.
On
pressing
this
“OK”
Button

the
Pop‐up
window
will
close
and
the
modified
fields
will
be
displayed.


153
2 (c)(v) DELETE USER


If
 the
 Administrator
 wants
 to
 delete
 a
 User
 Account,
 the
 Administrator
 will
 have
 to

navigate
 to
 the
 User
 Account
 intended
 to
 be
 deleted,
 using
 the
 Inner
 Arrows
 of
 the

Navigation
Bar
and
press
the
“DELETE”
button.
When
the
“DELETE”
button
is
pressed,

a
Confirmation
box
will
be
displayed
with
the
message
“Are
you
sure?”
and
two
option

buttons
 of
 “Yes”
 and
 “No”.
 If
 the
 “No”
 button
 is
 pressed,
 then
 no
 changes
 will
 take

place
in
the
User
Account
or
the
User
database.


154

2 (c)(vi) USER DELETED




After
selecting
a
user
and
pressing
the
“DELETE”
button,
a
Confirmation
box
will
open

with
the
message
“Are
you
sure?”.
If
the
“Yes”
button
is
pressed,
then
the
User

Account
with
all
its
data
of
Staff
Name,
User
Name
and
Password,
will
be
deleted
from

the
User
database.


155
2 (d) SUPPLIERS


The
 Next
 Button
 on
 the
 ADMIN
 PANEL
 is
 that
 of
 SUPPLIER.
 Only
 the
 Administrator

will
 be
 able
 to
 manage
 the
 Suppliers
 of
 the
 Store
 in
 the
 System
 by
 clicking
 on
 the

SUPPLIERS
 button.
 This
 will
 display
 the
 Suppliers
 Code,
 Suppliers
 Name,
 Supplier’s

Address,
 Supplier’s
 Telephone
 Number
 and
 Supplier’s
 TIN
 Number.
 The
 Suppliers

details
are
displayed
in
the
Table
form.



2 (d)(i) SUPPLIERS – ADD




The
Administrator
will
be
able
to
ADD
a
New
Supplier
by
clicking
on
the
ADD
button.

This
will
add
a
new
row
to
the
Table.
The
Administrator
can
now
fill
in
the
details
of

the
New
Supplier
in
their
respective
columns.







156
2 (d)(ii) SUPPLIERS – SAVE

After
 filling
 the
 details,
 the
 Administrator
 has
 to
 click
 the
 SAVE
 button
 to
 save
 the

addition
 of
 the
 New
 Supplier
 and
 update
 the
 records.
 A
 pop‐up
 window
 will
 show

with
the
message
“Supplier
Saved”
with
an
OK
button.
On
pressing
of
this
OK
button,

the
 pop‐up
 screen
 will
 close.
 This
 addition
 will
 now
 reflect
 in
 the
 Supplier
 Table
 as

well
as
in
Supplier
Database.



157
2 (d)(iii) SUPPLIERS – MODIFY

The
Administrator
will
also
be
able
to
modify
the
details
of
the
Supplier
by
clicking
on

the
Row
in
which
the
Supplier
is
listed
and
carrying
out
the
changes
in
the
fields
that

he
wanted
changed.
After
carrying
out
the
changes,
the
Administrator
can
click
on
the

MODIFY
 button.
 A
 pop‐up
 window
 will
 show
 with
 a
 message
 “Supplier
 Information

Updated”.
There
is
also
an
OK
button
on
this
pop‐up.
On
pressing
this
OK
button,
the

pop‐up
window
will
close.
Now
the
changes
carried
out
in
the
Suppliers
data
is
saved

and
 it
 will
 reflect
 in
 the
 Table
 of
 Suppliers
 as
 also
 in
 the
 Suppliers
 database.
 The

following
image
shows
that.


158


2 (d)(iv) SUPPLIERS – DELETE





The
Administrator
will
also
be
able
to
delete
a
Supplier
by
clicking
on
the
desired
Row

of
the
Supplier
and
clicking
on
the
DELETE
button.
On
clicking
the
DELETE
button,
a

confirmation
window
will
pop‐up
with
the
message
“Are
you
sure?”
and
with

options

“Yes”
and
“No”.
The
following
image
displays
this.


159
2 (d)(v) SUPPLIERS – DELETED


If
 the
 Administrator
 clicks
 “Yes”,
 a
 pop‐up
 window
 will
 open
 with
 the
 message

“Supplier
 Deleted”.
 
 If
 the
 Administrator
 clicks
 “No”,
 then
 the
 pop‐up
 window
 will

close.
On
deletion
of
the
supplier,
the
details
of
the
Supplier
will
be
deleted
from
the

Table
 as
 also
 from
 the
 Supplier
 database.
 Thus
 the
 Administrator
 will
 have
 total

control
over
the
Supplier
details
in
the
System


160

2 (e) BACKUP DATABASE




The

Next
Button
on
the
“ADMIN
PANEL”
is
that
of
“BACKUP
DATABASE”.
In
order
to

safeguard
the
database,
the
Administrator
may
take
Backup
of
the
database
from
time

to
 time.
 Since
 the
 database
 is
 vital,
 the
 access
 and
 authority
 to
 take
 a
 Backup
 of
 the

database
 is
 only
 available
 with
 the
 Administrator.
 The
 Administrator
 can
 take
 the

Backup
 of
 the
 database
 by
 clicking
 on
 the
 “BACKUP
 DATABASE”
 Button.
 When
 the

Administrator
clicks
on
this
Button,
a
Backup
of
the
Database
is
created
in
the
Backup

folder
 in
 the
 Main
 Directory
 of
 the
 Software.
 A
 Pop‐up
 window
 will
 open
 with
 the

message
 “BACKUP
 SUCCESSFUL!”
 The
 Pop‐up
 window
 also
 has
 an
 “OK”
 Button
 on

pressing
which,
the
Pop‐up
window
will
close.


161



2 (f) RESTORE DATABASE



The
Next
Button
on
the
“ADMIN
PANEL”
is
that
of
“RESTORE
DATABASE”.
Since
the

database
 is
 vital,
 the
 access
 and
 authority
 to
 Restore
 the
 database
 is
 only
 available

with
 the
 Administrator.
 The
 Administrator
 can
 Restore
 the
 database
 by
 clicking
 on

the
“RESTORE
DATABASE”
Button.
When
the
Administrator
clicks
on
this
Button,
the

database
 saved
 in
 the
 Backup
 folder
 in
 the
 Main
 Directory
 of
 the
 Software,
 is

Restored.
A
Pop‐up
window
will
open
with
the
message
“RESTORE
SUCCESSFUL!”
The

Pop‐up
window
also
has
an
“OK”
Button
on
pressing
which,
the
Pop‐up
window
will

close.


162



2 (g) ADMIN HELP


When
the
“HELP”
button
is
pressed
by
the
Administrator
in
the
ADMIN
PANEL,
it
will

open
the
‘ADMIN
PANEL
HELP”
Screen.
In
this
Screen
there
is
a
brief
explanation
of

the
uses
of
each
of
the
Buttons
on
the
Admin
Panel.


163

2 (h) LOG OUT



When
 the
 Administrator
 presses
 the
 “LOG
 OUT”
 Button
 on
 the
 ADMIN
 PANEL,
 the

ADMIN
PANEL
will
close
and
the
LOGIN
screen
will
be
displayed.



164
3.
 MAIN SCREEN


When
 the
 User
 enters
 a
 valid
 Username
 in
 the
 “USERNAME”
 field,
 the
 correct

Password
in
the
“PASSWORD”
field
and
presses
the
“LOGIN”
button,
then
the
“MAIN

SCREEN”
will
appear.
This
Screen
has
all
features
required
by
the
User
in
the
Garment

Store
for
their
day‐to‐day
Sales
and
Inventory
requirements.




There
are
five
buttons
on
the
MAIN
SCREEN:
VIEW
PRODUCTS,
NEW
SALE,
MEMBERS

DATABASE,
INVENTORY
and
LOG
OUT.


VIEW
PRODUCT
will
display
another
Window.
In
this
Window
there
are
two
sections.

The
 Left
 section
 has
 MALE
 Category
 of
 Products
 and
 the
 Right
 section
 has
 the

FEMALE
 Category
 of
 Products.
 There
 is
 also
 a
 BACK
 Button
 on
 the
 Screen,
 which,

when
pressed
will
return
to
the
MAIN
SCREEN.


NEW
SALE
Button
will
be
used
when
a
Sale
has
to
be
recorded.



MEMBERS
DATABASE
Button
can
be
used
by
the
User
to
view
the
Members
Database

and
make
any
changes
in
the
database.
The
User
is
authorized
to
make
changes
in
this

database
as
the
staff
would
be
enlisting
new
members.
It
will
also
enable
the
User
to

verify
a
particular
Member.


When
 the
 LOG
 OUT
 Button
 is
 pressed,
 the
 User
 is
 logged
 out
 of
 this
 Screen
 and
 the

LOGIN
Screen
will
be
displayed.



165


3 (a) VIEW PRODUCTS



VIEW
PRODUCT
will
display
another
Window.
This
Window
has
two
sections.


The
 Left
 section
 has
 MALE
 Category
 of
 Products
 and
 the
 Right
 section
 has
 the

FEMALE
Category
of
Products.
There
are
six
categories
of
garments
listed
in
each.

In
 MALE
 Section,
 the
 Categories
 are
 Shirts,
 T‐Shirts,
 Jeans,
 Shorts,
 Trousers
 and

Jackets.
 On
 clicking
 on
 any
 of
 the
 buttons
 of
 Product
 category,
 another
 window
 will

open
which
will
display
the
products
and
other
details.

In
 FEMALE
 Section,
 the
 Categories
 are
 Tops,
 Capris,
 Jeans,
 Skirts,
 Trousers
 and

Stockings.
On
clicking
on
any
of
the
buttons
of
Product
category,
another
window
will

open
which
will
display
the
products
and
other
details.

There
 is
 also
 a
 BACK
 Button
 on
 the
 Screen,
 which,
 when
 pressed
 will
 return
 to
 the

MAIN
SCREEN.


166

3 (a)(i) VIEW PRODUCTS - CATEGORY



When
any
of
the
Category
of
Product
Button
is
pressed,
it
will
open
another
Window.

In
this
Window,
the
name
of
the
Product
Category
will
be
displayed
on
Top
and
below

that
there
will
be
a
table.
The
Columns
of
the
Table
would
list
Product
Code,
Product

Name,
Price
of
the
Product
and
Stock
of
the
Product
currently
in
the
Store.
This
is
a

very
important
part
of
the
Program
as
it
gives
the
real‐time
stock
of
the
Product.
The

User
will
only
be
able
to
view
the
Product,
Code,
Price
and
Stock
but
will
not
be
able
to

add
and/or
edit
and/or
delete
anything
in
this
window.
This
is
a
read‐only
window.

For
 eg.
 If
 in
 the
 FEMALE
 Section,
 SKIRTS
 Category
 Button
 is
 pressed,
 the
 Table

displayed
 will
 show
 various
 types
 of
 Skirts
 available
 with
 its
 Code,
 Name,
 Price
 and

Stock.
Thus
the
first
entry
is
with
Code:
FSKL001
which
is
for
Product
Name:
Ballerina

Skirt
at
Price:
700
and
the
Stock:
165.
The
Product
values
like
Code,
Name,
Price
and

Stock
have
been
filled
by
the
Administrator
through
the
MANAGE
PRODUCT
option
in

the
ADMIN
PANEL.
To
close
the
Product
Category
window,
the
User
has
to
click
on
the

cross
 on
 right
 hand
 corner
 of
 the
 window.
 On
 closing
 of
 the
 window,
 the
 User
 will

retain
to
the
PRODUCT
SCREEN.
The
User
can
then
select
any
other
Category
to
view

the
 details
 of
 the
 products
 in
 that
 category.
 On
 clicking
 on
 the
 BACK
 button
 on
 the

PRODUCT
SCREEN,
the
User
will
return
to
the
MAIN
SCREEN.


167
3 (b) NEW SALE


 This
 is
 a
 very
 important
 Screen
 as
 many
 forms
 of
 data
 are
 put
 to
 use
 here.

When
the
User
will
press
the
NEW
SALE
Button,
the
NEW
SALE
Window
will
open.
It

is
here
that
the
User
will
have
to
input
all
the
data.
It
is
also
from
this
window,
all
the

crucial
data
like
Sale
and
Inventory
will
be
updated.
The
image
below
shows
the
NEW

SALE
window.


168
3 (b)(i) NEW SALE – CATEGORY DROP DOWN

The
first
field
has
been
modified
and
was
not
earlier
planned.
But
since
the
drop
down

menu
 for
 Products
 was
 too
 long,
 a
 further
 heading
 of
 Category
 was
 created
 in
 the

Product,
whereby
the
Products
are
further
classified
and
the
data
is
thus
manageable,

understandable
and
easy
to
retrieve
or
access.
The
first
field
is
the
drop
down
menu

listing
the
various
Product
Categories.
The
list
of
the
drop
down
menu
is
the
same
as

that
 of
 the
 window
 buttons
 in
 VIEW
 PRODUCTS
 SCREEN.
 This
 Category
 of
 Products

has
 also
 been
 set
 by
 the
 Administrator
 in
 the
 MANAGE
 PRODUCTS
 SCREEN
 in
 the

ADMIN
PANEL.
From
this
Menu,
the
User
has
to
select
the
product
to
be
sold.



169


3 (b)(ii) NEW SALE – PRODUCT DROP DOWN



After
selecting
the
category
of
the
goods
sold,
the
User
has
to
select
the
Product
sold

by
referring
to
the
price
tag
on
the
garment
and
by
selecting
the
right
Product
from

the
Product
drop‐down
list.
Since
the
Product
drop
down
displays
the
code
as
well
as

the
product,
it
is
easier
for
the
User
to
select
from
the
drop
down
menu
of
the
Product

and
 the
 list
 also
 becomes
 shorter.
 Thus
 the
 splitting
 of
 products
 into
 Categories,

makes
things
simpler
for
the
User
to
understand
and
to
manage.
This
Management
of

Products
has
also
been
set
by
the
Administrator
in
the
MANAGE
PRODUCTS
SCREEN

in
the
ADMIN
PANEL.
From
this
Menu,
the
User
has
to
select
the
product
which
has

been
selected
to
be
purchased
by
the
customer.



170


3 (b)(iii) NEW SALE – ADD TO CART

After
selecting
the
Category
and
the
Product
from
the
drop
down
menu,
the
Quantity

sold
has
to
be
input
in
the
Quantity
field.
After
that,
the
Button
ADD
is
clicked,
so
that

the
 Item
 is
 added
 in
 the
 Cart.
 It
 may
 be
 noted
 here
 that
 as
 soon
 as
 the
 product
 is

entered
in
the
Cart,
the
Rate
and
Quantity
are
multiplied
and
the
result
is
shown
in
the

Amount
column
of
the
cart.
Also
Total
Row
at
the
bottom
of
the
Sales
Bill
also
does
the

calculation
 and
 displays
 the
 total.
 Further
 the
 VAT
 amount
 is
 also
 automatically

calculated
 and
 is
 displayed
 at
 its
 appropriate
 place.
 The
 Total
 Amount
 is
 also

calculated
by
adding
the
Total
and
VAT
and
displayed
at
the
bottom
of
the
Screen.
The

image
below
displays
this.



171
3(b)(iv) NEW SALE – ADD MORE PRODUCTS

The
User
can
add
further
products
to
the
Cart
by
pressing
the
ADD
button.
Thus
the

User
can
again
select
a
Product
Category
and
the
Product
from
the
drop
down
menu

and
input
the
Quantity
sold
in
the
Quantity
field.
After
that,
the
Button
ADD
is
clicked,

so
 that
 the
 Item
 is
 added
 in
 the
 Cart.
 Again
 as
 soon
 as
 the
 product
 is
 entered
 in
 the

Cart,
 the
 Rate
 and
 Quantity
 are
 multiplied
 and
 the
 result
 is
 shown
 in
 the
 Amount

column
of
the
cart.
Also
Total
Row
at
the
bottom
of
the
Sales
Bill
also
adds
the
Sales

Amount
 and
 displays
 the
 total.
 Further
 the
 VAT
 amount
 is
 also
 automatically

calculated
 and
 is
 displayed
 at
 its
 appropriate
 place.
 The
 Total
 Amount
 is
 also

calculated
by
adding
the
Total
and
VAT
and
displayed
at
the
bottom
of
the
Screen.
The

image
below
displays
this.



172
3(b)(v) NEW SALE – MEMBERSHIP CARD

After
 selecting
 the
 product
 from
 the
 drop‐down
 menu,
 the
 quantity
 will
 have
 to
 be

entered
 in
 the
 Quantity
 field
 and
 the
 ADD
 button
 will
 have
 to
 be
 pressed.
 When
 the

ADD
button
is
pressed,
the
Product
along
with
the
Product
Code,
Quantity,
Rate
and

Amount
for
that
item
will
be
displayed
in
the
Table
below.
Multiple
products
can
be

added
to
the
Table
by
selecting
the
Products
from
the
drop‐down
menu,
filling
in
the

quantity
and
pressing
the
ADD
Button
after
each
selection.
This
will
go
on
adding
the

products
in
the
Table.
As
the
User
goes
on
adding
the
products
to
the
Cart
as
also
to

the
 Table,
 the
 Row
 below
 the
 Table
 named
 TOTAL
 will
 display
 the
 Total
 of
 the

Amount
 column
 of
 the
 Table.
 Below
 the
 Row
 of
 TOTALS,
 there
 is
 another
 row
 of

“DISCOUNT
(10%)”
which
is
the
Membership
Discount.
For
availing
this
Membership

Discount,
the
User
has
to
press
the
Button
“ENTER
CARD
NO.”
which
is
alongside
the

DISCOUNT
row.
When
the
“ENTER
CARD
NO.”
button
is
pressed,
If
the
“ENTER
CARD

NO.”
Button
is
pressed,
it
will
open
a
Window
asking
the
Membership
Card
Number.



173



3 (b)(vi) NEW SALE – VALID MEMBERSHIP CARD



The
User
has
to
fill
in
a
valid
Card
Number.
If
the
User
enters
a
valid
Card
Number,
a

Pop‐up
window
will
appear
with
message
“Valid
Card
No.”




174


3 (b)(vii) NEW SALE – DISCOUNT APPLIED



If
 the
 Valid
 Card
 Number
 is
 given,
 then
 the
 DISCOUNT
 row
 will
 display
 the
 10%

discount
figure.
As
soon
as
the
discount
is
calculated
and
figure
is
displayed,
the
VAT

figure
will
get
updated
and
will
calculate
VAT
4%
on
the
Net
Sales
Figure
i.e.
Total
less

Discount.
The
Total
Amount
figure
will
also
get
updated
as
it
will
be
a
sum
of
the
Net

Sales
Figure
and
VAT
i.e.
Total
less
Discount
plus
VAT.
The
DISCOUNT
Row
will
only

be
activated
if
a
valid
Card
Number
is
put
in.


175


3 (b)(viii) NEW SALE – SALES BILL - MEMBER




At
 this
 stage,
 the
 User
 will
 have
 an
 option
 to
 press
 the
 CONFIRM
 Button
 to
 Confirm

the
Sale
or
to
press
the
CANCEL
Button
and
Cancel
the
Sale.
If
the
User
will
press
the

CONFIRM
Button,
the
Sale
will
be
confirmed
and
the
next
Screen
of
SALES
BILL
will

open.


176


3 (b)(ix) NEW SALE – SALES BILL - CASH




If
the
customer
is
not
a
Member
and
is
a
regular
customer,
then
the
Card
number
is

not
 put
 in
 and
 the
 Discount
 is
 not
 availed
 and
 in
 this
 case,
 when
 the
 User
 clicks
 the

CONFIRM
button
to
complete
the
transaction,
the
Sale
will
be
confirmed
and
the
next

Screen
of
SALES
BILL
will
open.



177



3 (b)(x) NEW SALE – EMPTY CART




 Tests
were
carried
out
on
the
program
to
check
if
it
is
working
properly.
Like
if

the
 Category
 and/or
 Product
 is
 not
 selected
 and/or
 Quantity
 is
 kept
 blank
 and
 the

CONFIRM
button
is
selected,
a
pop‐up
window
with
the
message
“Please
place
Order”.



178

3 (b)(xi) NEW SALE – REMOVE FROM EMPTY CART




 Products
can
also
be
removed
from
the
Table
by
selecting
the
product
from
the

Table
and
clicking
on
the
REMOVE
Button.
This
will
remove
the
Product
along
with
its

Quantity,
Rate
and
Amount
from
the
Table.

If
the
Category
and/or
Product
is
not
selected
and/or
Quantity
is
kept
blank
and
the


REMOVE
button
is
selected,
a
pop‐up
window
with
the
message
“Nothing
to
Remove”.



179


3 (b)(xii) NEW SALE – INVALID CARD NUMBER




However,
if
in
the
Pop‐up
window,
the
User
enters
a
Card
Number
which
is
not
valid

i.e.
member
is
not
created
on
that
number,
then
there
will
be
a
Pop‐up
window
with

the
 message
 “Invalid
 Card
 No.”
 and
 an
 “OK”
 button
 to
 that
 pop‐up
 window,
 which

when
pressed,
will
return
to
the
NEW
SALE
SCREEN.
It
may
be
noted
here
that
if
an

Invalid
 Card
 Number
 is
 put
 it,
 the
 Discount
 Row
 will
 not
 be
 activated
 and
 Discount

will
not
be
calculated
or
allowed.


180


3 (b)(xiii) NEW SALE – ALPHABETICAL QUANTITY

After
selecting
the
Category
from
the
drop
down
menu
and
also
selecting
the
Product

from
 the
 drop
 down
 menu,
 if
 the
 User,
 by
 error,
 fills
 alphabet
 in
 the
 quantity
 feild,

then
 a
 pop‐up
 window
 will
 appear
 with
 the
 message
 “Please
 fill
 all
 fields
 correctly”.

There
 is
 also
 an
 OK
 button
 in
 the
 pop‐up
 window
 and
 on
 pressing
 that
 button,
 the

pop‐up
window
will
close.


181


3 (b)(xix) NEW SALE – BLANK QUANTITY



After
selecting
the
Category
from
the
drop
down
menu
and
also
selecting
the
Product

from
the
drop
down
menu,
if
the
User,
by
error,
leaves
the
quantity
field
blank,
then
a

pop‐up
window
will
appear
with
the
message
“Please
fill
all
fields
correctly”.
There
is

also
 an
 OK
 button
 in
 the
 pop‐up
 window
 and
 on
 pressing
 that
 button,
 the
 pop‐up

window
will
close.


182

3 (c) MEMBER DATABASE




This
Screen
displays
the
MEMBER
DATABASE.
This
Screen
gives
all
the
details
of
the

Member
like
Membership
Card
Number,
Name,
Telephone
Number,
Postal
Address,
E‐
mail
address
etc.
The
User
has
the
access
and
authority
to
edit
the
fields
in
this
Screen.

However,
the
Membership
Card
Number
is
automatically
updated.
At
the
top
part
of

the
Screen,
there
is
a
SEARCH
Box.
In
the
SEARCH
Box
there
is
a
field
where
Card
No.

is
 to
 be
 filled
 in.
 After
 filling
 the
 Card
 Number,
 the
 User
 has
 to
 press
 the
 SEARCH

Button
given
alongside.



183

3 (c) (i) MEMBER DATABASE - FOUND




On
pressing
the
SEARCH
Button,
if
the
input
number
is
a
valid
number
and
if
there
is
a

member
 listed
 under
 that
 number,
 a
 pop‐up
 window
 will
 open
 with
 a
 message

“Member
Found”
and
there
would
be
an
OK
Button
in
the
Pop‐up.
On
pressing
the
OK

Button,
the
fields
in
the
INFO
Box
would
be
automatically
filled
with
the
data
of
the

Member.




184


3 (c) (ii) MEMBER DATABASE – NOT FOUND



If
the
Card
Number
input
by
the
User
is
not
a
valid
number
or
if
there
is
no
member

listed
under
that
number,
then
a
pop‐up
window
will
open
with
a
message
“Member

not
 Found”
 and
 there
 would
 be
 an
 OK
 Button
 in
 the
 Pop‐up.
 On
 pressing
 the
 OK

button,
the
pop‐up


window
will
close
leaving
the
MEMBERS
DATABASE
Screen
open.


185

3 (c) (iii) MEMBER DATABASE – INVALID SEARCH




If
the
User
enters
alphabets
or
illogical
data
in
the
Card
Number
field
and
presses
the

SEARCH
Button,
then
a
pop‐up
window
will
open
with
a
message
“Please
enter
a
valid

card
number”.
This
pop‐up
window
will
also
have
an
OK
button.
On
pressing
the
OK

button,
the
pop‐up
window
will
close
leaving
the
MEMBERS
DATABASE
Screen
open.


186

3 (c) (iv) MEMBER DATABASE – BLANK SEARCH




 


If
the
User
leaves
the
CARD
NUMBER
field
Blank
and
tries
to
search
for
the
Member

data,
 a
 pop‐up
 window
 will
 show
 with
 the
 message
 “Please
 enter
 a
 Valid
 Card

Number”.
The
pop‐up
also
has
an
OK
button
on
pressing
of
this,
the
window
will
close.


187

3 (c) (v) MEMBER DATABASE – ADD NEW MEMBER





The
 User
 will
 have
 the
 authority
 to
 ADD
 or
 MODIFY
 any
 Member
 in
 the
 MEMBER

DATABASE.
That
is,
the
User
can
Add
a
new
member
with
its
details
like
Name,
E‐mail

Address,
 Telephone
 Number
 and
 Postal
 Address.
 However,
 the
 User
 and
 even
 the

Administrator
cannot
delete
the
Member
once
made.
Also,
the
Membership
Number
is

updated
 once
 a
 member
 is
 created
 in
 that
 number.
 So,
 if
 the
 User
 wants
 to
 create
 a

New
 Member,
 he
 has
 to
 press
 the
 ADD
 button.
 On
 pressing
 the
 ADD
 button,
 all
 the

fields
except
the
Card
Number
field
will
be
activated.
The
Card
Number
field
will
not

be
activated
but
will
have
the
updated
number
which
is
available
to
be
allotted
to
the

Member.



188

3 (c) (vi) MEMBER DATABASE – NEW MEMBER CREATED



The
MEMBER
DATABASE
has
four
buttons
at
the
bottom
of
the
window:
ADD,
SAVE,

MODIFY
&
CLOSE.
After
the
User
has
filled
all
the
details
of
the
New
Member
in
their

relative
fields,
the
User
has
to
click
on
the
SAVE
Button.
When
the
User
clicks
on
the

SAVE
 button,
 a
 pop‐up
 window
 will
 open
 with
 the
 message
 “Member
 created

successfully”.
After
Saving,
the
MEMBER
database
will
be
updated
and
the
addition
of

the
New
Member
will
reflect
in
the
Membership
List.
If
the
User
wants
to
Modify
the

details
 of
 a
 Member,
 he
 has
 to
 press
 the
 MODIFY
 button
 to
 activate
 the
 fields
 and

make
 changes.
 After
 making
 the
 necessary
 changes,
 the
 User
 has
 to
 press
 the
 SAVE

button
 to
 save
 those
 changes.
 To
 Close
 this
 Window
 and
 return
 to
 MAIN
 SCREEN,

CLOSE
button
to
be
used.


189


3 (d) INVENTORY



The
 INVENTORY
 SCREEN
 is
 to
 be
 used
 by
 the
 User
 to
 input
 the
 data
 of
 the
 goods

received
from
the
Supplier.
The
User
can
only
input
the
data
and
cannot
edit
or
alter

any
data
already
put
in.



190


3 (d)(i) INVENTORY – DROP DOWN




The
first
field
in
this
screen
will
be
the
Supplier
field.
The
Supplier
has
to
be
selected

from
 the
 drop‐down
 menu.
 The
 Supplier
 Management
 can
 only
 be
 done
 by
 the

Administrator
 form
 the
 SUPPLIERS
 Button
 in
 ADMIN
 PANEL.
 Once
 the
 Supplier
 is

selected
from
the
drop
down
panel,
the
TIN
Number
will
be
automatically
filled
and

will
be
a
non‐active
field.


191




3 (d)(ii) INVENTORY – DATA FILLED




The
next
field
will
be
SUP
REF
NO
or
“Suppliers
Reference
Number”.
In
this
field,
the

Suppliers
 Bill
 Number
 or
 Delivery
 Note
 Number
 under
 which
 the
 goods
 have
 been

received
 has
 to
 be
 filled
 in.
 Below
 this
 field,
 there
 will
 be
 the
 PRODUCT
 field.
 This

again
would
be
a
drop‐down
menu
and
User
has
to
select
the
PRODUCT
from
the
field

and
has
to
fill
in
the
quantity
received
in
the
field
below.


192


3 (d)(iii) INVENTORY – UPDATED

After
 checking
 the
 actual
 receipt
 of
 goods,
 the
 User
 has
 to
 either
 press
 CANCEL
 or

CONFIRM.
If
the
User
presses
CANCEL,
the
INVENTORY
SCREEN
will
close
and
MAIN

SCREEN
will
be
displayed
without
carrying
out
any
change
in
the
Inventory.
However,

if
the
User
presses
the
CONFIRM
button,
a
pop‐up
window
will
open
with
the
message

“Inventory
 Successfully
 updated”.
 The
 pop‐up
 window
 will
 have
 an
 OK
 button.
 On

pressing
 this
 OK
 button,
 the
 INVENTORY
 SCREEN
 will
 still
 close
 and
 MAIN
 SCREEN

will
be
displayed
but
necessary
stock
additions
will
have
been
made
in
the
Inventory.

193


3 (d)(iv) INVENTORY – SUPPLIER REFERENCE BLANK



If
 the
 Suppliers
 Reference
 No.
 is
 left
 blank,
 the
 data
 will
 not
 get
 updated
 when
 the

User
 presses
 CONFIRM.
 But
 instead,
 a
 pop‐up
 window
 will
 open
 with
 the
 message

“Please
 fill
 all
 fields
 correctly”.
 The
 pop‐up
 window
 also
 has
 an
 OK
 button
 and
 on

pressing
the
OK
button,
the
pop
up
window
will
close.



194


3 (d)(v) INVENTORY – QUANTITY BLANK



If
the
Quantity
field
is
left
blank,
the
data
will
not
get
updated
when
the
User
presses

CONFIRM.
 But
 instead,
 a
 pop‐up
 window
 will
 open
 with
 the
 message
 “Please
 fill
 all

fields
correctly”.
The
pop‐up
window
also
has
an
OK
button
and
on
pressing
the
OK

button,
the
pop
up
window
will
close.



195

3 (d)(v) INVENTORY – ALPHABETICAL QUANTITY


If
by
error
of
the
User,
alphabets
are
put
instead
of
numbers
in
the
Quantity
field,
the

data
 will
 not
 get
 updated
 when
 the
 User
 presses
 CONFIRM.
 But
 instead,
 a
 pop‐up

window
 will
 open
 with
 the
 message
 “Please
 fill
 all
 fields
 correctly”.
 The
 pop‐up

window
also
has
an
OK
button
and
on
pressing
the
OK
button,
the
pop
up
window
will

close.



196
3 (e) MAIN HELP
When
 the
 User
 presses
 the
 HELP
 button
 on
 the
 MAIN
 SCREEN,
 the
 following
 Help

Screen
will
be
displayed.
It
will
give
a
brief
description
of
the
uses
of
each
Button
on

the
MAIN
SCREEN.


197

3.2 Implementation
3.2.1 Implementation Plan
The end user suggested a direct changeover to the new system as the store
is small. First, all products were added to the system along with prices and initial
stock, by the administrator. Then members were added to the database followed
by suppliers. Finally, the administrator created user accounts for all staff members.
In this way, all information was moved to the new software.

3.2.2 User Testing and Acceptance


The users were first told what aspects of functionality would the software be
used for .i.e. Sales, Inventory, Viewing Stock and Membership Management. Then
all the users were explained how to use the software. After which, I called every
user one by one and told them to carry out all tasks like Viewing Stock, Adding
Members, making a new Sale, entering stock to the inventory, etc. This made sure
that everyone understood how the new system would work. All staff were also
given a copy of the User Documentation for reference.

198
User Training and Acceptance letter attached (Annexure – 7).

3.3 Appropriateness of structure and exploitation of


available facilities
3.3.1 Use of Available resources
The software was developed using the following configuration:
Hardware:
COMPAQ Presario M2000,
Intel Centrino 1.6 GHz Processor,
512MB RAM Memory, 60 GB Hard Disk.
Software:
Microsoft Windows XP Home Edition
Microsoft Office 2003 Professional
Microsoft Visual Studio 6.0 Professional

The hardware and software were adequate and I was able to take advantage of it to
develop the software.

3.3.2 Problem Log


August 10th 2009: The Manage Users screen had all fields enabled and when the
details were edited and the record was changed, the information automatically updated
to the database without clicking on the Save button. Then I thought of disabling and
locking all the fields. So, only when the Modify button is pressed, the fields would be
enabled and they would be disabled on clicking the Save button.
August 21st 2009: There was only “Product” drop-down menu in the New Sale screen
and the list was very populated, so it was difficult to find the product. So I added the
Category drop-down menu to reduce the clutter and make the execution of tasks faster.
The end-user liked the idea.
August 29th 2009: The program used to crash when the Remove button was pressed
while the cart was empty in the New Sale screen. So I added validation in as many
places as possible to prevent such events.

4. Documentation (Attached)

199
5. Evaluation
5.1 Degree of success
The program has received degree of success. It fulfills all of the end user’s
requirements.
(i) Instant Stock in Inventory – Test Run on page 168

Staff can see the stock of each product with just a single click.
(ii) Sales – Test Run on page 169
Products can be sold using the software using the New Sales form
and bill will be generated on-screen.
(iii) Membership Database – Test Run on page 173
A Member’s database can be maintained and discount can be
given to them while placing order.
(iv) Reports for Administrator – Test Run on page 138
The Administrator can see Sales reports, Inventory reports and list
of Members.

5.2 User’s response to the system


A letter by user is attached at end of the project labeled Anexure – 7.

5.3 Desirable extensions


Though the software takes care of many of the needs of the end user. But there are
some extensions that could be made in the future to improve the software.
• Currently the user has to see the stock available manually, but an automatic
stock notification system could be added that alerts the user when the stock is
low.
• Also the program could have additional discount schemes that could be turned
on and off during seasonal occasions.
• And a more detailed Sales and Inventory report could be made for the
administrator that could show reports in the form of charts and graphs, apart from
the current plain numerical reports.
• Bar code scanner compatibility could also be added to the program at a later
stage for faster checkouts.

200

Vous aimerez peut-être aussi