home *** CD-ROM | disk | FTP | other *** search
/ The Best of the Best / _.img / 02110 / video / vident.sc < prev   
Text File  |  1989-10-02  |  6KB  |  121 lines

  1. PROC DoCheckOut()
  2.  
  3. ; Immetteremo un film per cliente alla volta. Se un cliente sta già
  4. ; noleggiando un film, useremo record multipli per catturare le informazioni
  5. ; nuove, ed usando DUPLICA (DITTO) per riprodurre le informazioni ripetute.
  6. CLEARALL
  7. EMPTY "ordtemp"                        ; Prepara la tabella temporanea
  8. EDIT "ordtemp"                         ;   per la redazione
  9. PICKFORM 1                             ;   tramite la scheda di noleggio.
  10. WHILE (True)                           ; Continua ad immettere informazioni finché l'utente lo desidera
  11.   WAIT RECORD                          ; Consenti all'utente di immettere un record di informazioni
  12.     PROMPT "Immetti le informazioni sul noleggio del film",
  13.            "[F2] per salvare i dati, [F1] per consultazione, [Esc] per annullare"
  14.     UNTIL "F2","Esc"
  15.   IF retval = "Esc"                    ; L'utente vuole annullare il record?
  16.     THEN DEL                           ; Sì, eliminalo,
  17.          DO_IT!                   ;   salva gli altri record,
  18.          QUITLOOP                      ;   e lascia la sessione di immissione
  19.     ELSE PGDN                          ; No, vai al record seguente
  20.   ENDIF
  21.   ; Se stavamo aggiornando le informazioni di magazzino nella tabella FILMS,
  22.   ; lo faremo qui, perché l'utente deve aver premuto [F2] per essere giunto
  23.   ; fino a questo punto
  24.   SHOWMENU "Ancora?":"Registra un'altro film per lo stesso cliente",
  25.            "Fatto!":"Hai finito di registrare film per questo cliente"
  26.   TO Choice
  27.   IF Choice = "Fatto!"                 ; L'utente ha finito di immettere informazioni per questo cliente?
  28.     THEN DO_IT! QUITLOOP               ; Sì, salvale e lascia la sessione di immissione
  29.   ENDIF
  30.   ;se si è giunti fin qui, l'utente desidera immettere un'altro film
  31.   ;(a questo punto stamperemmo sulla ricevuta l'ultimo film immesso)
  32.   MOVETO [Cod. Cliente]                ; Assicurati di essere nel primo campo
  33.   FOR i FROM 1 TO 4
  34.     DITTO RIGHT                        ; Copia le informazioni dal record precedente
  35.   ENDFOR
  36. ENDWHILE
  37. ; Abbiamo messo tutti i film per questo cliente in ORDTEMP. Ora dobbiamo
  38. ; estrarre le informazioni da mettere nella tabella normalizzata, ORDINI.
  39. CLEAR                                  ; Cancella lo schermo PAL ed avverti l'utente
  40. ?? "Attendi. I file vengono aggiornati..."
  41. ; L'interrogazione seguente estrae le informazioni conservate nelle tabelle normalizzate
  42. Query
  43.  
  44.  Ordtemp | Cod. Cliente |  Data  | Data Restituzione |
  45.          | Check        | Check  | Check             |
  46.          |              |        |                   |
  47.          |              |        |                   |
  48.  
  49.  Ordtemp | Impiegato | Cod. Film | Data Scadenza | Tariffa | Giorni |
  50.          | Check     | Check     | Check         | Check   | Check  |
  51.          |           |           |               |         |        |
  52.          |           |           |               |         |        |
  53.  
  54.  Ordtemp | Riavvolto? | Ammontare Totale |
  55.          | Check      | Check            |
  56.          |            |                  |
  57.          |            |                  |
  58.  
  59. Endquery
  60. DO_IT!                                 ; Esegui l'interrogazione
  61. ADD "Risposta" "Ordini"                  ; e salva i risultati normalizzati
  62. ENDPROC ;DoCheckOut
  63.  
  64.  
  65.  
  66. PROC DoReturn()
  67.  
  68. ; Invece di elaborare i risultati allo stesso modo dei noleggi, useremo
  69. ; un metodo diverso, che illustra le capacitò del comando SCAN di scandire
  70. ; tutti i record rilevanti.
  71. CLEARALL                               ; Cancella lo spazio di lavoro
  72. Total = 0                              ; Fin qui, il cliente non ci deve nulla
  73. @ 0,0 ?? "Immetti il codice del cliente che restituisce i film: "
  74. ACCEPT "N" TO CustNum                  ; Ottieni il codice del cliente
  75. EDIT "Ordini"                          ; Richiama la tabella degli ordini
  76. PICKFORM 1                             ;   in una scheda
  77. SCAN FOR [Cod. Cliente] = CustNum      ; Individua il cliente nella tabella
  78.   MOVETO [Data Restituzione]                 ; Posizionati nel campo [Data Restituzione]
  79.   IF ISBLANK([]) THEN                  ; Il film è giè stato restituito?
  80.     WAIT RECORD                        ; No, controlla se lo è ora
  81.       PROMPT "Immetti le informazioni sulla restituzione del film",
  82.              "[F2] per salvare i dati e continuare con altre restituzioni"
  83.       UNTIL "F2"
  84.     IF NOT ISBLANK([Data Restituzione])                ; Sì, il film è stato restituito
  85.       THEN [Giorni] = [Data Restituzione] - [Giorni]   ;   quindi calcola l'ammontare dovuto
  86.            IF [Riavvolto?] <> "S"
  87.              THEN [Ammontare Totale] = [Tariffa] * [Giorni] + 1  ; Aggiungi la tariffa per il riavvolgimento
  88.              ELSE [Ammontare Totale] = [Tariffa] * [Giorni]
  89.            ENDIF
  90.            Total = Total + [Ammontare Totale]           ; Aggiorna il totale dovuto dal cliente
  91.            ; se stavamo stampando le ricevute, ora dovremmo stampare le informazioni su ogni film
  92.            ; se stavamo gestendo il magazzino con la tabella FILMS, dovremmo fare lo stesso, ora
  93.     ENDIF
  94.   ENDIF
  95. ENDSCAN                                ; Continua l'ispezione fino alla fine della tabella
  96. ; Se arriviamo fino a questo punto, allora abbiamo esaminato tutte le 
  97. ; possibili restituzioni del cliente, e dunque possiamo aggirnare i file
  98. ; e raccogliere i danni...
  99. DO_IT!                         ; Aggiorna la tabella ORDINI affinché rispecchi la restituzione dei film
  100. CLEAR                          ; Ora mostra il totale dovuto dal cliente
  101. @ 0,0 ?? "Totale dovuto da questo cliente: $",FORMAT("W6.2",Total)
  102. ?
  103. ? "Premi {Enter} quando sei pronto per l'azione successiva..."
  104. x = GETCHAR()
  105. ENDPROC ;DoReturn
  106.  
  107. WHILE (True)
  108.   CLEAR
  109.   SHOWMENU
  110.     "Noleggio":"Elabora la richiesta di noleggio di un film.",
  111.     "Restituzione":"Elabora la restituzione di un film.",
  112.     "Fine":"Ritorna al menu principale."
  113.   TO Choice
  114.   SWITCH
  115.     CASE Choice = "Noleggio":DoCheckOut()
  116.     CASE Choice = "Restituzione":DoReturn()
  117.     OTHERWISE : CLEARALL QUITLOOP
  118.   ENDSWITCH
  119. ENDWHILE
  120.  
  121.