home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 1995 September / Image.iso / visualob / install / samples / employee / supers.cl_ / supers.cl
Encoding:
Text File  |  1994-08-18  |  6.7 KB  |  328 lines

  1. // SUPERS.PRG
  2. // Supervisor information maintenance module
  3. // November, 1993
  4.  
  5. #include "sys.ch"
  6.  
  7. #define SUPER_NUM       1
  8. #define SNAME           2
  9. #define RECORD_NUMBER   3
  10. #define TOTAL_FIELDS    3
  11.  
  12. FUNCTION Entry120()
  13.    LOCAL TheFields[TOTAL_FIELDS], TheChoice
  14.  
  15.    Screen()
  16.    TheChoice := 0
  17.  
  18.    DO WHILE TRUE
  19.       InitData(@TheFields, FALSE)
  20.       PostGets(@TheFields, DISPLAY_MODE)
  21.  
  22.       TheChoice := Menu(TheChoice)
  23.  
  24.       IF TheChoice = QUIT_MODE
  25.          EXIT
  26.  
  27.       ELSEIF TheChoice = ADD_MODE
  28.          Add(@TheFields)
  29.  
  30.       ELSEIF TheChoice = CHANGE_MODE
  31.          Change(@TheFields)
  32.  
  33.       ELSEIF TheChoice = DELETE_MODE
  34.          DeleteIt(@TheFields)
  35.  
  36.       ELSEIF TheChoice = EXIT_MODE
  37.          EXIT
  38.  
  39.       ENDIF
  40.    ENDDO
  41.  
  42.    Close_It()
  43.  
  44.    RETURN TRUE
  45.    
  46.  
  47. STATIC FUNCTION Screen()
  48.    LOCAL OldColor
  49.  
  50.    Win_Open(0, 0, 23, 79, ' Supervisor Information ')
  51.    Msg("")
  52.  
  53.    OldColor := Normal_Color()
  54.  
  55.    @  5, 34 SAY 'Number:'
  56.    @  7, 35 SAY  'Name :'
  57.  
  58.    SetColor(OldColor)
  59.  
  60.    RETURN TRUE
  61.  
  62.  
  63. STATIC FUNCTION PostGets(TheFields, TheMode)
  64.    LOCAL OldColor, GetList
  65.  
  66.    OldColor := Get_Color()
  67.    GetList := {}
  68.  
  69.    @  5, 42 GET TheFields[SUPER_NUM]                        ;
  70.             PICTURE '99'                                    ;
  71.             WHEN  (W_Num(TheMode))                          ;
  72.             VALID (V_Num(@TheFields, TheMode))
  73.  
  74.    @  7, 42 GET TheFields[SNAME]                            ;
  75.             PICTURE '@!'                                    ;
  76.             WHEN  (W_Name(TheMode))                         ;
  77.             VALID (V_Name(@TheFields, TheMode))
  78.  
  79.    IF TheMode != DISPLAY_MODE
  80.       Read_It(GetList)
  81.  
  82.    ELSE
  83.       CLEAR GETS
  84.  
  85.    ENDIF
  86.  
  87.    SetColor(OldColor)
  88.  
  89.    RETURN !LastKey() = K_ESC
  90.  
  91.  
  92. STATIC FUNCTION W_Num(TheMode)
  93.  
  94.    IF TheMode = UPDATE_MODE
  95.       RETURN FALSE
  96.    ENDIF
  97.  
  98.    Msg(Build_Msg("supervisor's", 'number', TheMode))
  99.  
  100.    RETURN TRUE
  101.  
  102.  
  103. STATIC FUNCTION W_Name(TheMode)
  104.  
  105.    IF TheMode = POSITION_MODE
  106.       RETURN FALSE
  107.    ENDIF
  108.  
  109.    Msg(Build_Msg("supervisor's", 'name', TheMode))
  110.  
  111.    RETURN TRUE
  112.  
  113.  
  114. STATIC FUNCTION V_Num(TheFields, TheMode)
  115.  
  116.    IF TheMode = POSITION_MODE
  117.       IF Empty(TheFields[SUPER_NUM])
  118.          Top_It('Supers', 1)
  119.          TheFields[SUPER_NUM] := Br_Supers()
  120.  
  121.       ELSEIF !Seek_It(TheFields[SUPER_NUM], 'Supers', 1, TRUE)
  122.          TheFields[SUPER_NUM] := Br_Supers()
  123.  
  124.       ENDIF
  125.  
  126.    ELSEIF Empty(TheFields[SUPER_NUM])
  127.       RETURN ErrorMsg("MUST SPECIFY SUPERVISOR'S NUMBER")
  128.  
  129.    ELSEIF !Seek_It(TheFields[SUPER_NUM], 'Supers', 1)
  130.  
  131.    ELSEIF Supers->(RecNo()) = TheFields[RECORD_NUMBER]
  132.  
  133.    ELSE
  134.       RETURN ErrorMsg("DUPLICATE SUPERVISOR NUMBER")
  135.  
  136.    ENDIF
  137.  
  138.    RETURN TRUE
  139.  
  140.  
  141. STATIC FUNCTION V_Name(TheFields)
  142.  
  143.    IF LastKey() = K_UP
  144.  
  145.    ELSEIF Empty(TheFields[SNAME])
  146.       RETURN ErrorMsg("MUST SPECIFY SUPERVISOR'S NAME")
  147.  
  148.    ENDIF
  149.  
  150.    RETURN TRUE
  151.  
  152.  
  153. FUNCTION Br_Supers()
  154.    LOCAL TheArray, OldMsg, TheReturn
  155.  
  156.    TheArray := {}
  157.    Select_It('Supers')
  158.  
  159.    AAdd(TheArray, { "Number"    , { || Supers->Super_Num } })
  160.    AAdd(TheArray, { "Supervisor", { || Supers->SName     } })
  161.  
  162.    OldMsg := Msg('Select the correct supervisor from the above list')
  163.  
  164.    TheReturn := Browse_Tb(TheArray, 4, 9, 17, 71, ' Select supervisor ')
  165.    Msg(OldMsg)
  166.  
  167.    RETURN TheReturn
  168.  
  169.  
  170. FUNCTION Get_Super(TheSuper, TheMode)
  171.    LOCAL OldAlias, TheReturn
  172.  
  173.    OldAlias := Select()
  174.  
  175.    IF Empty(TheSuper)
  176.       Select_It('Supers')
  177.       TheReturn := Space(Len(Supers->SName))
  178.       TheMode := FALSE
  179.  
  180.    ELSEIF Seek_It(TheSuper, 'Supers', 1)
  181.       TheReturn := Supers->SName
  182.    ELSE
  183.       TheReturn := 'UNKNOWN SUPERVISOR'
  184.    ENDIF
  185.  
  186.    IF !ISLOGICAL(TheMode)
  187.       TheMode := TRUE
  188.    ENDIF
  189.  
  190.    IF TheMode
  191.       TheReturn := TheSuper + '  (' + TheReturn + ')'
  192.    ENDIF
  193.  
  194.    Select(OldAlias)
  195.  
  196.    RETURN TheReturn
  197.  
  198.  
  199. STATIC FUNCTION InitData(TheFields, TheMode)
  200.  
  201.    Select_It('Supers')
  202.  
  203.    IF TheMode
  204.       TheFields[SNAME]         := Supers->SName    
  205.       TheFields[SUPER_NUM]     := Supers->Super_Num
  206.       TheFields[RECORD_NUMBER] := Supers->(RecNo())
  207.  
  208.    ELSE
  209.       TheFields[SNAME]         := Space(Len(Supers->SName))
  210.       TheFields[SUPER_NUM]     := Space(Len(Supers->Super_Num))
  211.       TheFields[RECORD_NUMBER] := 0
  212.  
  213.    ENDIF
  214.  
  215.    RETURN TRUE
  216.  
  217.  
  218. STATIC FUNCTION Menu(TheChoice)
  219.    LOCAL TheScreen, OldColor, TheWrap
  220.  
  221.    TheWrap := Set(_SET_WRAP)
  222.    SET WRAP (FALSE)
  223.  
  224.    TheScreen := Win_Open(20, 2, 22, 38, ' Select ')
  225.    Msg('Select a menu option')
  226.  
  227.    OldColor := Menu_Color()
  228.  
  229.    @ 21,  4 PROMPT ' Add '
  230.    @ 21, 11 PROMPT ' Change '
  231.    @ 21, 21 PROMPT ' Delete '
  232.    @ 21, 31 PROMPT ' Exit '
  233.  
  234.    MENU TO TheChoice
  235.  
  236.    SetColor(OldColor)
  237.    Win_Close(TheScreen)
  238.    SET WRAP (TheWrap)
  239.  
  240.    RETURN TheChoice
  241.  
  242.  
  243. STATIC FUNCTION Add(TheFields)
  244.  
  245.    Msg('Enter supervisor information')
  246.    DO WHILE TRUE
  247.       IF !PostGets(@TheFields, ENTRY_MODE)
  248.          IF Confirm(16, 30, 'Abort', ;
  249.                     'Do you want to abort data entry?')
  250.             EXIT
  251.          ENDIF
  252.       ELSEIF !Confirm(16, 30, 'Save', ;
  253.                       'Is the above information correct?')
  254.       ELSEIF Save(@TheFields, 0)
  255.          InitData(@TheFields, FALSE)
  256.       ENDIF
  257.    ENDDO
  258.  
  259.    RETURN TRUE
  260.  
  261.  
  262. STATIC FUNCTION Change(TheFields)
  263.  
  264.    IF Position(@TheFields)
  265.       Msg('Change supervisor information')
  266.       DO WHILE TRUE
  267.          IF !PostGets(@TheFields, UPDATE_MODE)
  268.             IF Confirm(16, 30, 'Abort', ;
  269.                        'Do you want to abort data entry?')
  270.                EXIT
  271.             ENDIF
  272.          ELSEIF !Confirm(16, 30, 'Save', ;
  273.                          'Is the above information correct?')
  274.          ELSEIF Save(@TheFields)
  275.             EXIT
  276.          ENDIF
  277.       ENDDO
  278.    ENDIF
  279.  
  280.    RETURN TRUE
  281.  
  282.  
  283. STATIC FUNCTION DeleteIt(TheFields)
  284.  
  285.    IF Position(@TheFields)
  286.       PostGets(@TheFields, DISPLAY_MODE)
  287.       IF Confirm(16, 30, 'Delete'                                  , ;
  288.                  'Are you sure you want to delete this department?', ;
  289.                   FALSE)
  290.          Delete_It('Supers')
  291. //--------- delete all of the related information also!
  292.       ENDIF
  293.    ENDIF
  294.  
  295.    RETURN TRUE
  296.  
  297.  
  298. STATIC FUNCTION Position(TheFields)
  299.  
  300.    Msg('Enter supervisor number')
  301.  
  302.    IF !PostGets(@TheFields, POSITION_MODE)
  303.       RETURN FALSE
  304.    ENDIF
  305.  
  306.    InitData(@TheFields, TRUE)
  307.  
  308.    RETURN TRUE
  309.  
  310.  
  311. STATIC FUNCTION Save(TheFields)
  312.  
  313.    IF TheFields[RECORD_NUMBER] > 0
  314.       GoTo_It(TheFields[RECORD_NUMBER], 'Supers')
  315.  
  316.    ELSEIF !Append_It('Supers')
  317.       RETURN ErrorMsg('UNABLE TO ADD SUPERVISOR')
  318.  
  319.    ENDIF
  320.  
  321.    Supers->SName     := TheFields[SNAME]
  322.    Supers->Super_Num := TheFields[SUPER_NUM]
  323.  
  324.    COMMIT
  325.  
  326.    RETURN TRUE
  327. 
  328.