Vai al contenuto

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, paragrafi a-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-ricerca privilegia 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 in filtra-cogaridx.
  • Ordinamento per colonna: l'utente ordina i risultati dal menu contestuale "Ordina sulla colonna..."; il valore w-ordinamento (1..13) determina la composizione di trs-chia2 in scrivi-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 con delete file alla chiusura.
  • Controllo presenza fisica (tm-ctr-doc = "S"): per ogni documento verifica l'esistenza del file sul server tramite COGU06 + COPIAF, valorizzando trs-doc-pres; con tm-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-cod il protocollo del documento selezionato con Invio.
  • Il codice usa ancora PERFORM ... THRU e GO TO (stile legacy del programma), non conformi alle convenzioni per il nuovo codice; la documentazione ne riflette il flusso senza proporne il refactoring.