ARC010 - Consultazione documenti archiviati¶
Sorgente: cbl/arc010.cbl | Tipo: Programma interattivo GUI con tab control e griglia paginata (anche richiamabile via CALL come ricerca) | Program-ID: ARC010
Menu:
- Sistema > Archiviazione documentale
Scopo¶
Consente la ricerca e la consultazione dei documenti archiviati nell'archiviazione ottica/documentale del gestionale. L'utente imposta un insieme di filtri (intervallo di date di archiviazione, protocollo, cliente/fornitore/potenziale, classe e sottoclasse documentale, stato documento, tipo documento gestionale, ed eventuali chiavi esterne "arkey" configurabili) e ottiene l'elenco dei documenti corrispondenti in una griglia paginata, ordinabile per colonna.
Il programma appartiene alla famiglia di archiviazione documentale (ARC0xx): usa le stesse tabelle di ARC005 (classi documento in COGARGDO) e di ARC011 (indice documenti COGARIDX, immagini COGIMAGE), e puo' essere richiamato da ARC011 come finestra di ricerca avanzata (F9), restituendo al chiamante il protocollo del documento selezionato.
Per ogni documento trovato mostra progressivo, protocollo, descrizione, data archiviazione, anagrafica collegata, numero/data interno ed esterno, stato, classe/sottoclasse e i riferimenti dell'eventuale documento gestionale collegato (COGIMAGE). Puo' verificare, tramite COGU06 e COPIAF, l'effettiva presenza fisica del file archiviato ed estrarre/visualizzare l'immagine del documento.
Struttura del programma¶
Il programma e' organizzato su un tab control con due pagine: la pagina 1 raccoglie i filtri di ricerca, la pagina 2 presenta la griglia dei risultati.
Inizializzazione (apri)¶
ctr-abil, z-99-init-program, rd-azi, open-files; determinazione modalita' "chiamata" (w-dc-called = "S" se arc010-called = k-program-id e arc010-caller valorizzato); attivazione dei tasti funzione; lettura data di sistema; get-divisa-conto; lettura configurazioni (x-configurazione); caricamento lingua (x-carica-lingua); caricamento bitmap e pulsanti custom (Cancella/Acquisisci/Visualizza immagine, Stato commessa); preparazione griglia (z-prepara-tm-grid).
Reset filtri e apertura transito (a4)¶
Svuota la griglia e tab-maschera, imposta il periodo di default (anno corrente), il tipo anagrafico da wo-parametro (C/F, altrimenti T), lo stato documento a T. Costruisce il nome del file di transito #$ARC010.<operatore> (ext-tmp-dir + k-program-id + operatore), apre COGTRANS in output per garantire l'uso esclusivo per operatore (messaggio "Funzione gia' in uso dall'operatore!!" e uscita in caso di lock), poi lo riapre in I-O.
Pagina 1 - Accept dei filtri¶
Serie di paragrafi a-tm-* con navigazione avanti/indietro (F2), gestione mouse (x-test-mouse), aiuto contestuale ed exception form:
- date da/a (
a-tm-da-data/a-tm-a-data, via COGS52W e calendario), controllo documenti / solo documenti mancanti (a-tm-ctr-doc/a-tm-no-doc), protocollo da/a, tipo e codice anagrafico (COGS60/COGS65), classe (F8 -> ARC005) e sottoclasse (F8 -> ARC006), stato documento, tipo documento gestionale; - se abilitate le chiavi esterne (
tm-cfg-usa-arkey = "S"), cinque terne di filtro "arkey" (tipo/operatore/valore, paragrafia-tm-key-*-1..5), con confronto=/</>.
Con F3 si passa a a-inizio-dati -> x-imposta-conferma (validazione complessiva) e alla pagina 2.
Estrazione (inizio-ela -> a-ricerca)¶
Riapre COGTRANS in output/I-O (uso esclusivo), svuota la griglia, mostra "Attendere, prego ..." e costruisce eventualmente il menu contestuale di ordinamento. a-ricerca sceglie la chiave di scansione di COGARIDX in base al filtro piu' selettivo impostato:
- se sono presenti filtri arkey (
tm-keyo-idx > 0) ->tratta-arkey(scansione di COGARKEY per tipo/valore, con incrocio sui progressivi che soddisfano tutte le terne, poi lettura di COGARIDX); - altrimenti in ordine di priorita': per data (
.k05,tratta-chia5), per protocollo (.k02,tratta-chia2), per anagrafica (.k10,tratta-chia10), per classe/sottoclasse (.k03,tratta-chia3/tratta-chia33), oppure scansione completa per chiave primaria (tratta-chia1).
Ogni record letto passa da filtra-cogaridx, che applica tutti i filtri residui (date, protocolli, anagrafica, classe/sottoclasse, stato); i record superstiti sono scritti in COGTRANS da scrivi-cogtrans.
Scrittura del transito (scrivi-cogtrans)¶
Legge COGIMAGE per il protocollo (documento gestionale collegato) e, se tm-tip-doc e' impostato, filtra per tipo documento. Se richiesto il controllo presenza (tm-ctr-doc = "S"), chiama COGU06 (operazione Estrai-da-doc) per ricavare il nome file e COPIAF (fileinfo) per verificarne l'esistenza sul server, poi lo rimuove (delete); con tm-no-doc = "S" scarta i documenti presenti. Valorizza il record di transito (progressivo, protocollo, descrizione, anagrafica risolta via COGGEANA/CRMANAGR, numeri/date interno-esterno, stato, cartella) e, se attive le arkey, arricchisce i riferimenti gestionali leggendo COGARKEY. La chiave secondaria trs-chia2 viene composta secondo l'ordinamento scelto (w-ordinamento 1..13) o coincide con la chiave primaria.
Pagina 2 - Griglia paginata¶
vis-tabella / vis-tabella-disp usano il pattern standard fscrol2 / utilpggr sul file di transito con scansione per chiave secondaria (.k02), gestendo Pag+/Pag-, doppio click/Invio (in modalita' chiamata restituisce arc010-out-cod), Shift-F4 personalizzazione colonne (GRIDADMN), Shift-F5 export Excel, il menu contestuale "Ordina sulla colonna..." (riesegue l'elaborazione con nuovo w-ordinamento), F4 acquisizione/visualizzazione immagine (a1-acq-ott) e F5 stato commessa (COGZ50) per i documenti di classe "LP". x-riempi-grid-record formatta le celle, risolve le descrizioni classe/sottoclasse da COGARGDO e il documento gestionale collegato da COGIMAGE.
Visualizzazione immagine (a1-acq-ott)¶
Legge COGIMAGE per il protocollo selezionato, quindi chiama COGU06 (Cerca-esistenza-doc e poi Visualizza-da-doc) per aprire il documento archiviato.
Chiusura (fine / z-chiudi)¶
z-close-files, cancel "COGU06", chiusura e cancellazione di COGTRANS (delete file), distruzione del menu contestuale, z-99-exit-program.
Tabelle e file¶
| File logico | Chiave / accesso | Descrizione |
|---|---|---|
| FEURTAB | - | Tabella di sistema / parametri azienda |
| COGARIDX | primaria; .k02 (protocollo), .k03 (classe/sottoclasse), .k05 (data archiviazione), .k10 (tipo+codice anagrafico) |
Indice dei documenti archiviati (metadati: protocollo, descrizione, data, classe, anagrafica, numeri interno/esterno, stato, cartella) |
| COGIMAGE | img-protocollo |
Immagini/documenti archiviati; collegamento al documento gestionale (img-tip-doc, img-doc-coge) |
| COGARGDO | arg-livello+arg-classe(+arg-sottoclasse) |
Anagrafica classi (livello 1) e sottoclassi (livello 2) documentali (descrizioni) |
| COGARKEY | .k02 (ark-key-tip+ark-key-val) |
Chiavi esterne dei documenti (filtri "arkey": AG1/AF2/ND1/ND2/DD1) |
| COGGEANA | ana-tipo+ana-cod |
Anagrafica clienti/fornitori (descrizione anagrafica) |
| CRMANAGR | cra-cod / .k05 (tipo+codice ana) |
Anagrafica nominativi/potenziali CRM |
| COGTRANS | primaria trs-chia1 (trs-progressivo); secondaria trs-chia2 (ordinamento); secondaria trs-chia3 (trs-fl-sel+trs-chia1) |
File di transito temporaneo #$ARC010.<operatore> con i documenti estratti, ordinabili per colonna |
| exp-grid | line sequential | File di appoggio per l'export Excel della griglia |
COPY incluse¶
Working-Storage¶
arc010.wrk, k-u10.cpy, wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy, wgrid.cpy, utilgdad.cpy, utilncnf.cpy, utils52.cpy, utils54.cpy, utils65.cpy, utils87.cpy, utilu06.cpy, utilu09.cpy, utilu10.cpy, utilu78.cpy, utilw01.cpy, utilw02.cpy, utilw16.cpy, utilw36.cpy, utilw92.cpy, utilarc005.cpy, utilarc006.cpy, l-copiaf.cpy
Linkage¶
wcont.cpy, utilz50.cpy, u-copiaf.cpy, wcont1.cpy, utilarc010.cpy (interfaccia caller/called: arc010-called, arc010-caller, arc010-out-cod)
Procedure Division¶
arc010.decla, arc010-01.scr (screen), grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy, dtab.cpy, fscrol2.cpy, getdcont.cpy, printer.cpy, sendw01.cpy, sendw02.cpy, sendw16.cpy, sendw36.cpy, sendw92.cpy, utilpggr.cpy, arc010.prc, cogtrans.k01, cogtrans.k02, cogaridx.k02, cogaridx.k03, cogaridx.k05, cogaridx.k10, cogarkey.k02, crmanagr.k05
Le chiavi secondarie cogaridx.k02/.k03/.k05/.k10, cogarkey.k02, crmanagr.k05 e cogtrans.k02 sono incluse manualmente a fine procedure division (Screens genera solo la chiave primaria).
CALL a sottoprogrammi¶
| Programma | Scopo |
|---|---|
| ARC005 | Ricerca/selezione classe documento (F8 sul campo classe) |
| ARC006 | Ricerca/selezione sottoclasse documento (F8 sul campo sottoclasse) |
| COGU06 | Gestore archiviazione ottica: estrazione nome file, verifica esistenza, visualizzazione documento archiviato |
| COPIAF | Verifica esistenza (fileinfo) e rimozione (delete) del file archiviato sul server, per il controllo presenza documento |
| COGZ50 | Stato commessa (F5) per i documenti di classe "LP" |
| GRIDADMN | Preparazione/personalizzazione colonne griglia, add-record, export |
| COGS52W | Gestione campi data con calendario |
| COGS65W | Ricerca/help e gestione codice anagrafico cliente/fornitore |
| RNEWCONF | Lettura configurazioni |
| W$MENU | Costruzione/gestione del menu contestuale di ordinamento della griglia |
| W$FLUSH | Refresh video |
I paragrafi standard delle sottoscreen (COGS60, COGS68W, COGS93, COGS95, COGU10W, COGW01/02/16/36/92) sono richiamati tramite le rispettive copybook sendw*/utils*.
Configurazioni RNEWCONF¶
Lette nel paragrafo x-configurazione (pacchetto C):
| Gruppo | Chiave | Uso |
|---|---|---|
| arc-ott | usa-arkey |
Se "S" abilita i cinque filtri per chiave esterna "arkey" e le relative colonne della griglia (tm-cfg-usa-arkey) |
Riferimenti: arc-ott.
Note tecniche¶
- Scelta della chiave di scansione:
a-ricercaprivilegia il filtro piu' selettivo per scandire COGARIDX sull'indice piu' adatto (data, protocollo, anagrafica, classe/sottoclasse) ricadendo sulla scansione completa (.k01) solo se nessun filtro chiave e' impostato; tutti gli altri criteri sono applicati infiltra-cogaridx. - Ordinamento per colonna: l'utente ordina i risultati dal menu contestuale "Ordina sulla colonna..."; il valore
w-ordinamento(1..13) determina la composizione ditrs-chia2inscrivi-cogtrans, e la griglia viene riletta per chiave secondaria. - Uso esclusivo del transito: COGTRANS
#$ARC010.<operatore>e' aperto in output per rilevare eventuali istanze concorrenti dello stesso operatore, poi in I-O; e' cancellato condelete filealla chiusura. - Controllo presenza fisica (
tm-ctr-doc = "S"): per ogni documento verifica l'esistenza del file sul server tramite COGU06 + COPIAF, valorizzandotrs-doc-pres; contm-no-doc = "S"restituisce solo i documenti il cui file risulta mancante. - Filtri arkey: la scansione via COGARKEY (
tratta-arkey) intersecta i progressivi che soddisfano tutte le terne configurate (tipi AG1/AF2/ND1/ND2/DD1, operatori uguale/minore/maggiore), risolvendo poi il documento in COGARIDX. - Modalita' chiamata: quando invocato da ARC011 (F9) restituisce in
arc010-out-codil protocollo del documento selezionato con Invio. - Il codice usa ancora
PERFORM ... THRUeGO TO(stile legacy del programma), non conformi alle convenzioni per il nuovo codice; la documentazione ne riflette il flusso senza proporne il refactoring.