Vai al contenuto

COGM0C - Configurazione autorizzazioni

Sorgente: cbl/cogm0c.cbl | Tipo: Programma interattivo GUI con griglia editabile su tabella DB esterno (AreaGATE/Postgres) | Program-ID: COGM0C

Menu:

  • Sistema > Configurazione > Autorizzazioni

Scopo

Gestisce la tabella di configurazione delle autorizzazioni sui documenti (CFGAUTORIZZAZIONI) residente sul database esterno AreaGATE (Postgres). Per ogni combinazione di classe documento e suddivisione, definisce a chi e' destinata la richiesta di autorizzazione (operatore dst-ope oppure gruppo operatori dst-gruppo), se l'autorizzazione e' abilitata (abilita), se prevede notifica (fl-notifica) e un'eventuale nota di default.

La configurazione viene modificata su una griglia editabile alimentata da un file di transito indicizzato locale (t-grid-det); la conferma riporta le modifiche sulla tabella DB e aggiorna lo stato di sincronizzazione (APSTATOSYN) per la propagazione verso l'applicazione esterna.


Struttura del programma

Pattern a griglia editabile (e-grid-det, GRIDADMN) con file di transito indicizzato t-grid-det (record t-gor-r-rec) come sorgente della griglia. Le colonne di lavoro sono definite in tab-maschera via cogm0c.tm (tm-r-doc-classe, tm-r-doc-sudd, tm-r-dst-ope, tm-r-dst-gruppo, tm-r-abilita, tm-r-notifica, tm-r-note-def, tm-r-fl-agg, ...). L'accesso al DB avviene tramite le routine generate sub-cfg-* (incluse in cogm0c.imppredf).

Inizializzazione (apri)

Sequenza obbligata: (1) lettura configurazioni (x99-src-cfg); (2) apertura tabelle DB (x-apri-tabelle-db); (3) resto. Se l'apertura DB fallisce (ext-dbpg-kpn-aperto <> "S") il programma esce con messaggio. Costruisce il menu contestuale della griglia (build-main-popup-grid-det), imposta il titolo "Configurazione autorizzazioni", determina la modalita' (a-modalita = "S" selezione se chiamato, "A" aggiornamento da menu), prepara la griglia (z-prepara-tm-grid).

Apertura DB (x-apri-tabelle-db / db-open-tables)

Se la connessione non e' gia' aperta, inizializza la connessione SQL con i parametri di tab-config (log level e stringhe di connessione) via sql-init-no-return-test, quindi apre le tabelle DB necessarie: arpazien, apstatosyn, arpstprc, cfgautorizzazioni (sub-cfg-bin-open-*). Traccia in fl-dbpg-kpn-aperto-qui se la connessione e' stata aperta da questo processo, per chiuderla correttamente in uscita.

Caricamento transito e griglia (a4 / a-leggi-dati / a-grid-ini)

Imposta l'ordinamento predefinito sulla classe documento (gcn-r-doc-classe, ascendente), carica eventuali filtri di default (z-imppredf-carica-default), apre il file di transito (z-grid-det-apri-transito) e lo popola (z-grid-det-crea-transito). Quest'ultimo legge/crea lo stato di sincronizzazione (APSTATOSYN) e, per ogni configurazione, legge CFGAUTORIZZAZIONI (sub-cfg-rd-cfgautorizzazioni), risolvendo le descrizioni di operatore (PRNTOPER -> ptop-des) e gruppo (PRNTGROT -> pgot-des) per la visualizzazione. Se il record DB non esiste, lo crea con valori di default.

Gestione griglia (a-grid)

Accept sulla griglia via z-99-accept-grid-det. Shift-F4 personalizzazione colonne (GRIDADMN); Shift-F5 esporta la griglia su Excel (z-esporta-grid-det); F3 salva (previa verifica abilitazione w-abi-ins/w-abi-agg, validazione completa e conferma) eseguendo b-aggiorna. Il right-click apre il menu pop-up (W$MENU), le cui voci (range k-pmg-primo..k-pmg-ultimo) sono gestite da x-attiva-popup-grid-det.

Aiuto di riga (z-usa-tf-grid-det-ep)

Sulla colonna dst-ope il tasto F8 richiama COGT20 (help operatori) restituendo il codice in t20-out-cod; sulla colonna dst-gruppo richiama COGT07 (help gruppi operatori) restituendo cogt07-out-cod. I valori scelti vengono validati (x-controlla-tm-r-dst-ope / -dst-gruppo).

Validazioni di riga (x-controlla-tm-r-*)

dst-ope e dst-gruppo sono mutuamente esclusivi (o l'uno o l'altro); ciascuno viene verificato per esistenza su PRNTOPER/PRNTGROT. Le altre colonne (abilita, notifica, note-def) allineano il record di transito completo (z-aggiorna-t-gor-r-tutto).

Salvataggio (b-aggiorna / b-99)

Scandisce il file di transito (st-t-grid-det-notmin + rdnxt-t-grid-det): per ogni riga legge il record DB (sub-cfg-rd-cfgautorizzazioni), lo crea se assente, e - se i dati sono cambiati - riscrive CFGAUTORIZZAZIONI (sub-cfg-rwr-cfgautorizzazioni) valorizzando destinatario, abilitazione, notifica, nota di default (convertita con z-converti-w-testo) e un nuovo id-sincro progressivo. In b-99 aggiorna il record APSTATOSYN con l'ultimo id-sincro e versione, per segnalare le modifiche alla sincronizzazione.

Chiusura (fine / z-chiudi)

Chiude i file, cancella il file di transito (delete file t-grid-det), chiude la connessione DB solo se aperta da questo processo (z-close-tabelle-db), distrugge il menu contestuale ed esce.


Tabelle e file

File logico Chiave / accesso Descrizione
FEURTAB - Tabella di sistema (aperta via cogfiles.cpy)
CFGAUTORIZZAZIONI tabella DB esterno AreaGATE (routine sub-cfg-*); chiave logica azienda + classe documento + suddivisione Configurazione autorizzazioni: destinatario operatore (c-aut-dst-ope) o gruppo (c-aut-dst-gruppo), abilitazione (c-aut-abilita), notifica (c-aut-fl-notifica), nota default (c-aut-note-default), c-aut-id-sincro
APSTATOSYN tabella DB esterno (routine sub-cfg-*); azienda + tabella Stato di sincronizzazione per tabella verso l'app esterna (a-syn-id-sincro, a-syn-versione)
ARPAZIEN tabella DB esterno (aperta in db-open-tables) Anagrafica aziende AreaGATE
ARPSTPRC tabella DB esterno (aperta in db-open-tables) Stato processo AreaGATE
PRNTOPER primaria ptop-cod; sola lettura Anagrafica operatori: codice, descrizione (ptop-des)
PRNTGROT primaria pgot-cod; sola lettura Gruppi operatori: codice, descrizione (pgot-des)
t-grid-det file di transito indicizzato locale, chiave t-gor-r-...; accesso dinamico Immagine di lavoro della griglia (record t-gor-r-rec); creato e cancellato dal programma

COPY incluse

Working-Storage

cogm0c.wrk, cogm0c.imppredf-wrk, costanti-sync.cpy, costanti-tipi-documento.cpy, wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy, wgrid.cpy, utilgdad.cpy, utilu20.cpy, utilt20.cpy, utilcogt07.cpy, utilgesstr.cpy, utilswgets.cpy, utilncnf.cpy, utilimppredf.cpy

Linkage

wcont.cpy, wcont1.cpy

Procedure Division

cogm0c.decla, cogm0c-01.scr (screen), grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy, cogm0c.prc, cogm0c.imppredf

Le routine di accesso al DB esterno (sub-cfg-rd-, sub-cfg-wr-, sub-cfg-rwr-cfgautorizzazioni, sub-cfg-*-apstatosyn, sub-cfg-bin-open-*) e la gestione del transito/filtri predefiniti sono incluse tramite cogm0c.imppredf. Le routine SQL (sql-init-no-return-test, sql-exit) provengono dalla catena SQL standard.


CALL a sottoprogrammi

Programma Scopo
GRIDADMN Gestione griglia (Prepara) e personalizzazione colonne (Shift-F4)
COGT20 Help/selezione operatore (F8 sulla colonna destinatario operatore), via utilt20.cpy
COGT07 Help/selezione gruppo operatori (F8 sulla colonna destinatario gruppo), via utilcogt07.cpy
GESSTR Conversione del testo nota per l'esportazione (operazione CONV-TESTO-X-ESPORT), via utilgesstr.cpy
SWGETS Ottiene le stringhe di connessione al DB esterno (swgets-str-conn), via utilswgets.cpy
RNEWCONF Lettura configurazioni applicative (vedi sezione dedicata)
W$MENU Attivazione del menu contestuale (right-click) sulla griglia

Configurazioni RNEWCONF

Il paragrafo x99-src-cfg legge tramite RNEWCONF (pacchetto "C") le seguenti chiavi, usate per connettersi al DB esterno AreaGATE e per l'azienda di riferimento:

Chiave Gruppo Uso
attiva-areaapp abilita Abilitazione modulo APP (tm-cfg-attiva-areaapp)
cod-azienda areaapp Codice azienda AreaGATE (tm-cfg-cod-azienda), chiave sulle tabelle DB
db-log-level areaapp Livello di log sulla connessione DB (tm-cfg-bin-log-level)
agg-postgres-online areaapp Aggiornamento online su Postgres (tm-cfg-agg-online)
gestione-gruppo-aziende assist Gestione gruppo aziende (tm-cfg-gestione-gruppo-aziende)
aglancio-attivo AREAAPP Attivazione lancio asincrono (tm-cfg-aglancio-attivo)

La stringa di connessione al DB (tm-cfg-db-connessione) non arriva da RNEWCONF ma dalla CALL a SWGETS (swgets-str-conn).


Note tecniche

  • Tabella su DB esterno: a differenza di COGM0A/COGM0B (file indicizzati locali), CFGAUTORIZZAZIONI e APSTATOSYN risiedono su Postgres/AreaGATE e sono accedute via routine SQL generate sub-cfg-*. L'apertura connessione va eseguita prima di ogni operazione su DB (anche quelle sparse dopo fine), come annotato nel sorgente.
  • File di transito: la griglia lavora su t-grid-det (indicizzato locale, creato all'avvio e cancellato in chiusura); le modifiche vengono materializzate sul DB solo alla conferma (b-aggiorna), non riga per riga.
  • Sincronizzazione: ogni scrittura incrementa id-sincro; il record APSTATOSYN per la tabella CFGAUTORIZZAZIONI viene aggiornato in b-99 con l'ultimo id-sincro e versione, meccanismo che segnala all'applicazione esterna la presenza di modifiche da propagare.
  • Destinatario esclusivo: per ogni riga il destinatario dell'autorizzazione puo' essere un operatore (dst-ope) oppure un gruppo (dst-gruppo), mai entrambi; la validazione blocca la conferma in caso di doppia valorizzazione.
  • Chiusura connessione condizionata: il DB viene chiuso in uscita solo se aperto da questo stesso processo (fl-dbpg-kpn-aperto-qui = "S"), per non interferire con altri programmi che ne condividono la connessione (ext-dbpg-kpn-aperto).
  • Modalita' selezione: se richiamato con w-dc-called = "S" entra in modalita' "S" (selezione) anziche' "A" (aggiornamento da menu); il ramo e' predisposto ma il flusso principale documentato e' quello da menu.