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),
CFGAUTORIZZAZIONIeAPSTATOSYNrisiedono su Postgres/AreaGATE e sono accedute via routine SQL generatesub-cfg-*. L'apertura connessione va eseguita prima di ogni operazione su DB (anche quelle sparse dopofine), 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 recordAPSTATOSYNper la tabellaCFGAUTORIZZAZIONIviene aggiornato inb-99con l'ultimoid-sincroe 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.