ASN550 - Autorizzazione chiamata
Intestazione
| Campo |
Valore |
| Programma |
ASN550 |
| Titolo |
Autorizzazione chiamata (procedura strumenti) |
| Modulo |
Assist 2.0 - Riparazioni |
| Posizione menu |
Assist 2.0 > Operativo > Riparazioni > Autorizzazione |
| Sorgente |
cbl/asn550.cbl (~875 righe) |
| Tipo |
Programma interattivo single-form |
Scopo e logica generale
ASN550 gestisce l'autorizzazione formale di una chiamata di riparazione (classe L). Si inserisce nel workflow strumenti delle riparazioni Endonova come step intermedio fra analisi (ASN540) e lavorazione: marca lo step k-step-c-autorizza come completato (achw-stato = 'C') in ASNCHWKF e registra operatore autorizzatore e motivo su ASNCHTES.
Puo' essere richiamato standalone (modalita' Aggiornamento) o come sottoprogramma da altri programmi del flusso riparazioni, ricevendo l'ID chiamata in input via util-asn550 (asn550-id-chiamata, asn550-caller, asn550-called).
Flusso principale
- Inizializzazione: apertura file, lettura
MASKOPER per validazione password, lettura azienda
- Modalita': se chiamato da altro programma con ID valorizzato, modalita' "Selezione" (
a-modalita = "S"); altrimenti "Aggiornamento" (A)
- Accept ID chiamata: lettura
ASNCHTES, validazione classe acht-classe = 'L', caricamento dati riepilogativi (cliente, matricola, modello)
- Accept operatore autorizzatore: lookup
PRNTOPER per validare e descrivere
- Accept password: lookup
MASKOPER, confronto con valore criptato (chiamata a ENCRYPT)
- Accept motivo autorizzazione: campo libero
- Conferma: se controlli OK e utente abilitato (
w-abi-agg = "S"), aggiornamento workflow + testata + interventi
- Ritorno: se chiamato come subroutine, esce; altrimenti torna ad accept ID per nuova autorizzazione
File e tabelle acceduti
| File |
Record |
Modalita' |
Uso |
| ASNCHTES |
acht-rec |
I-O |
Testata chiamata: lettura per validazione + scrittura acht-aut-ope e acht-aut-note |
| ASNCHWKF |
achw-rec |
I-O |
Workflow chiamata: aggiornamento dello step k-step-c-autorizza |
| ASNCHDET |
achd-rec |
Input |
Dettaglio chiamata: lettura per matricola (prog 1) |
| ASNINTES |
acit-rec |
Input |
Interventi chiamata: loop su chiave secondaria chia2 per aggiornamento ASNINTE2 |
| ASNINTE2 |
acit2-rec |
I-O |
Estensione interventi: rwr (write se non esiste) per sincronizzazione post-autorizzazione |
| ASNMATRI |
amtr-rec |
Input |
Matricole: caricamento sn, tipo, marca, id modello |
| ASNMODEL |
amod-rec |
Input |
Modelli matricola: caricamento nome |
| COGGEANA |
ana-rec |
Input |
Anagrafica: descrizione cliente assistito |
| PRNTOPER |
ptop-rec |
Input |
Operatori produzione: validazione e descrizione operatore autorizzatore |
| MASKOPER |
mop-rec |
Input |
Maschera operatori: lettura password criptata |
Chiavi secondarie utilizzate
| Copybook |
Tabella |
Scopo |
asnchwkf.k02 |
ASNCHWKF |
Ricerca workflow per id-chiamata + step |
asnintes.k02 |
ASNINTES |
Ricerca interventi per chiamata |
maskoper.k01 |
MASKOPER |
Accesso primario per password |
Programmi chiamati (CALL)
| Programma |
Scopo |
| ASN210 |
Ricerca avanzata chiamata (F9 su ID chiamata) |
| COGT20 |
Ricerca operatore (F8 su campo operatore autorizzatore) |
| ENCRYPT |
Crittografia password per confronto con quella memorizzata in MASKOPER |
Parametri di interfaccia (util-asn550)
| Campo |
Direzione |
Uso |
asn550-called |
Input |
Se = "ASN550" (k-program-id) attiva modalita' richiamata |
asn550-caller |
Input |
Codice programma chiamante (se non spaces, attiva richiamata) |
asn550-id-chiamata |
Input |
ID chiamata pre-caricato (salta accept ID chiamata) |
Tasti funzione
| Tasto |
Contesto |
Funzione |
| F3 |
Vari |
Conferma autorizzazione |
| F8 |
Operatore |
Ricerca operatore tramite COGT20 |
| F9 |
ID chiamata |
Ricerca avanzata chiamata tramite ASN210 |
| F2 |
Vari |
Torna al campo precedente |
| ESC |
Vari |
Esce (se chiamato esce dal programma; se standalone torna a a4) |
Logica di business
Validazioni
- Classe chiamata: solo
acht-classe = 'L' (Lavorazione/Riparazione). Altri tipi vengono respinti con messaggio m-asn550-7-1
- Operatore autorizzatore: obbligatorio (
tm-oper not = 0) e deve esistere in PRNTOPER
- Password: confronto con
mop-psw cifrato tramite ENCRYPT. Se la password memorizzata e' a spaces, il controllo e' bypassato
- Motivo autorizzazione: campo libero, non validato (
x-controlla-tm-aut-note ritorna sempre OK)
Aggiornamento workflow
Sul record ASNCHWKF per lo step k-step-c-autorizza della chiamata:
achw-stato <- 'C' (completato)
achw-data-prima <- datasis (se 0)
achw-ora-prima <- orasis-oramin (se 0)
achw-ope-prima <- wo-oper (se 0)
achw-data-ultima <- datasis
achw-ora-ultima <- orasis-oramin
achw-ope-ultima <- wo-oper
La logica "se prima = 0" preserva la data/ora/operatore del primo completamento in caso di ri-esecuzione.
Aggiornamento testata
acht-aut-ope <- tm-oper (operatore autorizzatore)
acht-aut-note <- tm-aut-note (motivo)
Aggiornamento ASNINTE2
Per ogni intervento collegato alla chiamata (loop st-asnintes-notmin-chia2), viene eseguita x-aggiorna-asninte2: lettura ASNINTE2, write se non esiste, rwr in ogni caso. Serve a propagare il timestamp di aggiornamento.
Pattern architetturali
- Single-form a 4 accept sequenziali (ID chiamata, operatore, password, motivo) con flusso GOTO classico
- Doppia modalita' standalone/subroutine controllata dai parametri
util-asn550
- Validazione password tramite ENCRYPT: la password digitata viene confrontata con quella cifrata gia' memorizzata, dopo aver cifrato con
ENCRYPT la password del record MASKOPER
- Workflow step update con preservazione "prima volta": pattern ricorrente nei programmi di workflow Endonova
Note tecniche
- Il paragrafo
carica-tab / ctrl-eseguito (verifica completamento step precedente) e' presente nel sorgente ma disattivato (commentato con *** x adesso)
- Il programma usa
wcont/wcont1 linkage per le strutture di controllo standard
- File
MASKOPER viene aperto separatamente in apri con apertura I-O esplicita, non tramite il select standard