Vai al contenuto

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

  1. Inizializzazione: apertura file, lettura MASKOPER per validazione password, lettura azienda
  2. Modalita': se chiamato da altro programma con ID valorizzato, modalita' "Selezione" (a-modalita = "S"); altrimenti "Aggiornamento" (A)
  3. Accept ID chiamata: lettura ASNCHTES, validazione classe acht-classe = 'L', caricamento dati riepilogativi (cliente, matricola, modello)
  4. Accept operatore autorizzatore: lookup PRNTOPER per validare e descrivere
  5. Accept password: lookup MASKOPER, confronto con valore criptato (chiamata a ENCRYPT)
  6. Accept motivo autorizzazione: campo libero
  7. Conferma: se controlli OK e utente abilitato (w-abi-agg = "S"), aggiornamento workflow + testata + interventi
  8. 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