home *** CD-ROM | disk | FTP | other *** search
- // EMPLOYEE.PRG
- // Employee information maintenance module
- // November, 1993
-
- #include "sys.ch"
-
- #define FNAME 1
- #define LNAME 2
- #define EMP_NUM 3
- #define DEPT_NUM 4
- #define SUPER_NUM 5
- #define RECORD_NUMBER 6
- #define DEPT_NAME 7
- #define SUPER_NAME 8
- #define TOTAL_FIELDS 8
-
-
- FUNCTION Entry110()
- LOCAL TheFields[TOTAL_FIELDS], TheChoice
-
- Screen()
- TheChoice := 0
-
- IF !Fatal()
- DO WHILE TRUE
- InitData(@TheFields, FALSE)
- PostGets(@TheFields, DISPLAY_MODE)
-
- TheChoice := Menu(TheChoice)
-
- IF TheChoice = QUIT_MODE
- EXIT
-
- ELSEIF TheChoice = ADD_MODE
- Add(@TheFields)
-
- ELSEIF TheChoice = CHANGE_MODE
- Change(@TheFields)
-
- ELSEIF TheChoice = DELETE_MODE
- DeleteIt(@TheFields)
-
- ELSEIF TheChoice = EXIT_MODE
- EXIT
-
- ENDIF
- ENDDO
- ENDIF
-
- Close_It()
-
- RETURN TRUE
-
-
- STATIC FUNCTION Fatal()
- IF !Top_It('Supers')
- ErrorMsg('UNABLE TO PROCEED, USE SUPERVISOR ENTRY MODULE TO ADD SUPERVISORS')
-
- ELSEIF !Top_It('Depart')
- ErrorMsg('UNABLE TO PROCEED, USE DEPARTMENT ENTRY MODULE TO ADD DEPARTMENTS')
-
- ELSE
- RETURN FALSE
-
- ENDIF
-
- RETURN TRUE
-
-
- STATIC FUNCTION Screen()
- LOCAL OldColor
-
- Win_Open(0, 0, 23, 79, ' Employee Information ')
- Msg("")
-
- OldColor := Normal_Color()
-
- @ 5, 17 SAY 'Social Security Number :'
- @ 7, 30 SAY 'Last Name :'
- @ 9, 29 SAY 'First Name :'
- @ 11, 28 SAY 'Dept Number :'
- @ 13, 23 SAY 'Supervisor Number:'
-
- SetColor(OldColor)
-
- RETURN TRUE
-
-
- STATIC FUNCTION PostGets(TheFields, TheMode)
- LOCAL OldColor, ThePicture, GetList
-
- OldColor := Get_Color()
- GetList := {}
-
- @ 5, 42 GET TheFields[EMP_NUM] ;
- PICTURE '999-99-9999' ;
- WHEN (W_Emp_Num(TheMode)) ;
- VALID (V_Emp_Num(@TheFields, TheMode))
-
- @ 7, 42 GET TheFields[LNAME] ;
- PICTURE '@!' ;
- WHEN (W_LName(TheMode, TheFields[EMP_NUM])) ;
- VALID (V_LName(@TheFields, TheMode))
-
- @ 9, 42 GET TheFields[FNAME] ;
- PICTURE '@!' ;
- WHEN (W_FName(TheMode)) ;
- VALID (V_FName(@TheFields))
-
- ThePicture := Replicate('9', Len(TheFields[DEPT_NUM]))
- @ 11, 42 GET TheFields[DEPT_NUM] ;
- PICTURE ThePicture ;
- WHEN (W_Dept_Num(TheMode)) ;
- VALID (V_Dept_Num(@TheFields))
-
- ThePicture := Replicate('9', Len(TheFields[SUPER_NUM]))
- @ 13, 42 GET TheFields[SUPER_NUM] ;
- PICTURE ThePicture ;
- WHEN (W_Super_Num(TheMode)) ;
- VALID (V_Super_Num(@TheFields))
-
- Disp_Descr(TheFields, 'TheFields[DEPT_NAME]')
- Disp_Descr(TheFields, 'TheFields[SUPER_NAME]')
-
- IF TheMode != DISPLAY_MODE
- Read_It(GetList)
-
- ELSE
- CLEAR GETS
-
- ENDIF
-
- SetColor(OldColor)
-
- RETURN !LastKey() = K_ESC
-
-
- STATIC FUNCTION Disp_Descr(TheFields, TheDescr)
- LOCAL OldColor
-
- OldColor := Normal_Color()
-
- IF TheDescr == 'TheFields[DEPT_NAME]'
- @ 11, 46 SAY '(' + TheFields[DEPT_NAME] + ')'
-
- ELSEIF TheDescr == 'TheFields[SUPER_NAME]'
- @ 13, 46 SAY '(' + TheFields[SUPER_NAME] + ')'
-
- ENDIF
-
- SetColor(OldColor)
-
- RETURN TRUE
-
-
- STATIC FUNCTION W_Emp_Num(TheMode)
-
- IF TheMode = UPDATE_MODE
- RETURN FALSE
- ENDIF
-
- Msg(Build_Msg("employee's", 'social security number', TheMode))
-
- RETURN TRUE
-
-
- STATIC FUNCTION W_LName(TheMode, TheNum)
-
- IF TheMode = UPDATE_MODE
- RETURN FALSE
-
- ELSEIF TheMode = ENTRY_MODE
-
- ELSEIF !EMPTY_SS(TheNum)
- RETURN FALSE
-
- ENDIF
-
- Msg(Build_Msg("employee's", 'last name', TheMode))
-
- RETURN TRUE
-
-
- STATIC FUNCTION W_FName(TheMode)
-
- IF TheMode = POSITION_MODE
- RETURN FALSE
- ENDIF
-
- Msg(Build_Msg("employee's", 'first name', TheMode))
-
- RETURN TRUE
-
- STATIC FUNCTION W_Dept_Num(TheMode)
-
- IF TheMode = POSITION_MODE
- RETURN FALSE
- ENDIF
-
- Msg(Build_Msg("employee's", 'department number', TheMode))
-
- RETURN TRUE
-
- STATIC FUNCTION W_Super_Num(TheMode)
-
- IF TheMode = POSITION_MODE
- RETURN FALSE
- ENDIF
-
- Msg(Build_Msg("employee's", 'supervisor number', TheMode))
-
- RETURN TRUE
-
- STATIC FUNCTION V_Emp_Num(TheFields, TheMode)
- LOCAL EmptyFlag
-
- IF EMPTY_SS(TheFields[EMP_NUM])
- EmptyFlag := TRUE
-
- ELSEIF !FullString(TheFields[EMP_NUM])
- RETURN ErrorMsg('INVALID SOCIAL SECURITY NUMBER')
-
- ELSE
- EmptyFlag := FALSE
-
- ENDIF
-
- IF TheMode = POSITION_MODE
- IF EmptyFlag
- Top_It('Employee', 1)
- TheFields[EMP_NUM] := Br_Employee()
-
- ELSEIF !Seek_It(TheFields[EMP_NUM], 'Employee', 1, TRUE)
- TheFields[EMP_NUM] := Br_Employee()
-
- ENDIF
-
- ELSEIF EmptyFlag
- RETURN ErrorMsg("MUST SPECIFY EMPLOYEE'S SOCIAL SECURITY NUMBER")
-
- ELSEIF !Seek_It(TheFields[EMP_NUM], 'Employee', 1)
-
- ELSEIF Employee->(RecNo()) = TheFields[RECORD_NUMBER]
-
- ELSE
- RETURN ErrorMsg("DUPLICATE SOCIAL SECURITY NUMBER")
-
- ENDIF
-
- RETURN TRUE
-
-
- STATIC FUNCTION V_LName(TheFields, TheMode)
- LOCAL TheLName, TheReturn
-
- IF LastKey() = K_UP
- RETURN TRUE
-
- ELSEIF TheMode = POSITION_MODE
-
- ELSEIF Empty(TheFields[LNAME])
- RETURN ErrorMsg("MUST SPECIFY EMPLOYEE'S LAST NAME")
-
- ELSE
- RETURN TRUE
-
- ENDIF
-
- IF Empty(TheFields[LNAME])
- Top_It('Employee', 2)
- TheFields[LNAME] := Br_Employee()
-
- ELSEIF !Seek_It(TheFields[LNAME], 'Employee', 2, TRUE)
- TheFields[LNAME] := Br_Employee()
-
- ELSEIF Skip_It(1, 'Employee', 2)
- TheLName := Employee->LName
- Skip_It(-1, 'Employee', 2)
-
- IF TheLName == TheFields[LNAME]
- TheFields[LNAME] := Br_Employee()
- ENDIF
-
- ENDIF
-
- IF Empty(TheFields[LNAME])
- TheReturn := ErrorMsg("MUST SPECIFY EMPLOYEE'S SS NUMBER OR LAST NAME")
- ELSE
- TheReturn := TRUE
- ENDIF
-
- RETURN TheReturn
-
-
- STATIC FUNCTION V_FName(TheFields)
-
- IF LastKey() = K_UP
-
- ELSEIF Empty(TheFields[FNAME])
- RETURN ErrorMsg("MUST SPECIFY EMPLOYEE'S FIRST NAME")
-
- ENDIF
-
- RETURN TRUE
-
-
- STATIC FUNCTION V_Dept_Num(TheFields)
- LOCAL TheReturn
-
- IF LastKey() = K_UP
- RETURN TRUE
-
- ELSEIF Empty(TheFields[DEPT_NUM])
- Top_It('Depart', 1)
- TheFields[DEPT_NUM] := Br_Depart()
-
- ELSEIF !Seek_It(TheFields[DEPT_NUM], 'Depart', 1, TRUE)
- TheFields[DEPT_NUM] := Br_Depart()
-
- ENDIF
-
- IF Empty(TheFields[DEPT_NUM])
- TheFields[DEPT_NAME] := Pad('Unknown', Len(Depart->Dept_Name))
- TheReturn := ErrorMsg("MUST SPECIFY EMPLOYEE'S DEPARTMENT NUMBER")
- ELSE
- TheFields[DEPT_NAME] := Depart->Dept_Name
- TheReturn := TRUE
- ENDIF
-
- Disp_Descr(TheFields, 'TheFields[DEPT_NAME]')
-
- RETURN TheReturn
-
-
- STATIC FUNCTION V_Super_Num(TheFields)
- LOCAL TheReturn
-
- IF LastKey() = K_UP
- RETURN TRUE
-
- ELSEIF Empty(TheFields[SUPER_NUM])
- Top_It('Supers', 1)
- TheFields[SUPER_NUM] := Br_Supers()
-
- ELSEIF !Seek_It(TheFields[SUPER_NUM], 'Supers', 1, TRUE)
- TheFields[SUPER_NUM] := Br_Supers()
-
- ENDIF
-
- IF Empty(TheFields[SUPER_NUM])
- TheFields[SUPER_NAME] := Pad('Unknown', Len(Supers->SName))
- TheReturn := ErrorMsg("MUST SPECIFY EMPLOYEE'S SUPERVISOR NUMBER")
- ELSE
- TheFields[SUPER_NAME] := Supers->SName
- TheReturn := TRUE
- ENDIF
-
- Disp_Descr(TheFields, 'TheFields[SUPER_NAME]')
-
- RETURN TheReturn
-
-
- FUNCTION Br_Employee()
- LOCAL TheArray, OldMsg, TheReturn
-
- TheArray := {}
- Select_It('Employee')
-
- AAdd(TheArray, { "First Name", { || Employee->FName } })
- AAdd(TheArray, { "Last Name" , { || Employee->LName } })
- AAdd(TheArray, { "Number" , { || Employee->Emp_Num } })
- AAdd(TheArray, { "Department", { || Get_Dept( Employee->Dept_Num ) } })
- AAdd(TheArray, { "Supervisor", { || Get_Super(Employee->Super_Num) } })
-
- OldMsg := Msg('Select the correct employee from the above list')
-
- TheReturn := Browse_Tb(TheArray, 4, 9, 17, 71, ' Select employee ')
- Msg(OldMsg)
-
- RETURN TheReturn
-
-
- STATIC FUNCTION InitData(TheFields, TheMode)
-
- Select_It('Employee')
-
- IF TheMode
- TheFields[FNAME] := Employee->FName
- TheFields[LNAME] := Employee->LName
- TheFields[EMP_NUM] := Employee->Emp_Num
- TheFields[DEPT_NUM] := Employee->Dept_Num
- TheFields[SUPER_NUM] := Employee->Super_Num
- TheFields[RECORD_NUMBER] := Employee->(RecNo())
-
- IF Seek_It(Employee->Dept_Num, 'Depart', 1)
- TheFields[DEPT_NAME] := Depart->Dept_Name
- ELSE
- TheFields[DEPT_NAME] := Pad('Unknown', Len(Depart->Dept_Name))
- ENDIF
-
- IF Seek_It(Employee->Super_Num, 'Supers', 1)
- TheFields[SUPER_NAME] := Supers->SName
- ELSE
- TheFields[SUPER_NAME] := Pad('Unknown', Len(Supers->SName))
- ENDIF
-
- ELSE
- TheFields[FNAME] := Space(Len(Employee->FName))
- TheFields[LNAME] := Space(Len(Employee->LName))
- TheFields[EMP_NUM] := Space(Len(Employee->Emp_Num))
- TheFields[DEPT_NUM] := Space(Len(Employee->Dept_Num))
- TheFields[SUPER_NUM] := Space(Len(Employee->Super_Num))
- TheFields[RECORD_NUMBER] := 0
-
- Select_It('Depart')
- TheFields[DEPT_NAME] := Space(Len(Depart->Dept_Name))
-
- Select_It('Supers')
- TheFields[SUPER_NAME] := Space(Len(Supers->SName))
-
- ENDIF
-
- RETURN TRUE
-
-
- STATIC FUNCTION Menu(TheChoice)
- LOCAL TheScreen, OldColor, TheWrap
-
- TheWrap := Set(_SET_WRAP)
- SET WRAP (FALSE)
-
- TheScreen := Win_Open(20, 2, 22, 38, ' Select ')
- Msg('Select a menu option')
-
- OldColor := Menu_Color()
-
- @ 21, 4 PROMPT ' Add '
- @ 21, 11 PROMPT ' Change '
- @ 21, 21 PROMPT ' Delete '
- @ 21, 31 PROMPT ' Exit '
-
- MENU TO TheChoice
-
- SetColor(OldColor)
- Win_Close(TheScreen)
- SET WRAP (TheWrap)
-
- RETURN TheChoice
-
-
- STATIC FUNCTION Add(TheFields)
-
- Msg('Enter employee information')
- DO WHILE TRUE
- IF !PostGets(@TheFields, ENTRY_MODE)
- IF Confirm(16, 30, 'Abort', ;
- 'Do you want to abort data entry?')
- EXIT
- ENDIF
- ELSEIF !Confirm(16, 30, 'Save', ;
- 'Is the above information correct?')
- ELSEIF Save(@TheFields, 0)
- InitData(@TheFields, FALSE)
- ENDIF
- ENDDO
-
- RETURN TRUE
-
-
- STATIC FUNCTION Change(TheFields)
-
- IF Position(@TheFields)
- Msg('Change employee information')
- DO WHILE TRUE
- IF !PostGets(@TheFields, UPDATE_MODE)
- IF Confirm(16, 30, 'Abort', ;
- 'Do you want to abort data entry?')
- EXIT
- ENDIF
- ELSEIF !Confirm(16, 30, 'Save', ;
- 'Is the above information correct?')
- ELSEIF Save(@TheFields)
- EXIT
- ENDIF
- ENDDO
- ENDIF
-
- RETURN TRUE
-
-
- STATIC FUNCTION DeleteIt(TheFields)
-
- IF Position(@TheFields)
- PostGets(@TheFields, DISPLAY_MODE)
- IF Confirm(16, 30, 'Delete' , ;
- 'Are you sure you want to delete this department?', ;
- FALSE)
- Delete_It('Employee')
- //--------- delete all of the expense information also!
- ENDIF
- ENDIF
-
- RETURN TRUE
-
-
- STATIC FUNCTION Position(TheFields)
-
- Msg('Enter employee number or last name')
-
- IF !PostGets(@TheFields, POSITION_MODE)
- RETURN FALSE
- ENDIF
-
- InitData(@TheFields, TRUE)
-
- RETURN TRUE
-
-
- STATIC FUNCTION Save(TheFields)
-
- IF TheFields[RECORD_NUMBER] > 0
- GoTo_It(TheFields[RECORD_NUMBER], 'Employee')
-
- ELSEIF !Append_It('Employee')
- RETURN ErrorMsg('UNABLE TO ADD EMPLOYEE')
-
- ENDIF
-
- Employee->FName := TheFields[FNAME]
- Employee->LName := TheFields[LNAME]
- Employee->Emp_Num := TheFields[EMP_NUM]
- Employee->Dept_Num := TheFields[DEPT_NUM]
- Employee->Super_Num := TheFields[SUPER_NUM]
-
- COMMIT
-
- RETURN TRUE
-