COGT35 - Restrizioni per operatore/azienda¶
Sorgente: cbl/cogt35.cbl | Tipo: Programma interattivo GUI con griglia editabile in linea su file di transito | Program-ID: COGT35
Menu:
- Sistema > Configurazione > Menu/Operatori (voce "Restrizioni per operatore/azienda")
Richiamabile anche via CALL da COGT20 (pulsante F5 "Restrizioni per operatore").
Scopo¶
Gestisce le restrizioni di visibilita' per operatore sulle aziende del gruppo (tabella PRNTOPRS, record oprs-*), nel contesto della gestione multiazienda ("gruppo aziende"). Ogni restrizione abbina un operatore a un codice azienda del gruppo (GRPAZIEN), abilitandone o disabilitandone l'accesso: e' lo strumento con cui si stabilisce quali aziende del gruppo un operatore puo' vedere/operare.
In PRNTOPRS il criterio e' identificato da oprs-criterio-tip = "GRPAZ" (azienda del gruppo) e da oprs-criterio-cod = codice azienda; il flag oprs-val = "C" marca la restrizione come cancellata logicamente (criterio non abilitato).
Il programma opera in due modalita' d'ingresso:
- Da menu: gestione libera delle restrizioni per tutti gli operatori (colonna operatore editabile).
- Richiamato via CALL (
cogt35-called = COGT35,cogt35-callerecogt35-operatorevalorizzati, copybookutilcogt35.cpy): l'operatore e' fissato (w-dc-operatore, mostrato in testata e non editabile) e si gestiscono solo le sue restrizioni. E' la modalita' usata da COGT20 con il pulsante F5.
Struttura del programma¶
Il programma usa il pattern a griglia di dettaglio su file di transito (e-grid-det, gestita via GRIDADMN): i record PRNTOPRS vengono caricati in un file temporaneo indicizzato t-grid-det (record t-gor-r-rec), editati in linea nella griglia con ordinamento e filtri, e riversati su PRNTOPRS solo alla conferma. La griglia gestisce fino a k-max-ele-tab = 900 righe.
Inizializzazione (apri)¶
z-99-init-program, ctr-abil, lettura configurazioni (x99-confi), rd-azi, open-files. Rileva la chiamata da COGT20 (w-dc-called = "S") e memorizza l'operatore fissato (w-dc-operatore). Abilita i tasti funzione (F3 aggiorna/conferma, F8 aiuto, Shift-F4 griglia, Shift-F5 export Excel, Ctrl-A aggiungi, Ctrl-E elimina), costruisce il menu contestuale della griglia (build-main-popup-grid-det), imposta titolo "Restrizioni per operatore/azienda", prepara la griglia e l'ordinamento predefinito (per operatore).
Guardia di attivazione (a4)¶
Se gestione-gruppo-aziende non e' "S" (variabile tm-cfg-gruppo-aziende, da RNEWCONF) mostra "gestione 'gruppo aziende' Non Attivo !!" e termina: la funzione ha senso solo con la multiazienda attiva. In chiamata da COGT20 verifica anche che l'operatore fissato esista in PRNTOPER (rd-prntoper), altrimenti esce con errore.
Caricamento file di transito (a-leggi-dati / z-grid-det-crea-transito)¶
Apre il transito (z-grid-det-apri-transito) e lo popola scandendo PRNTOPRS (st-prntoprs-notmin + rdnxt-prntoprs) filtrando per operatore (tutti, oppure solo tm-oper se fissato) e considerando solo i record attivi (oprs-val = spaces). Per ogni record riempie il record di transito (z-grid-det-riempi-campi-t-gor) con operatore + descrizione (rd-prntoper), azienda + descrizione (rd-grpazien -> ao-azi-des) e il flag valore. Segue il riordino (z-grid-det-riordina-transito).
Gestione griglia (a-grid)¶
Editing in linea con validazione per colonna. F3 valida tutte le righe (x-controlla-grid-det-tutto), chiede conferma e salva (b-aggiorna). Ctrl-A aggiunge una riga (z-grid-det-nuova-riga; se operatore fissato, lo precompila). Ctrl-E marca/smarca la riga per cancellazione (flag tm-r-fl-agg = "C"). Shift-F4 personalizza la griglia (GRIDADMN), Shift-F5 esporta in Excel (z-esporta-grid-det). Il menu pop-up (right-click, W$MENU) gestisce le funzioni tra k-pmg-primo/k-pmg-ultimo.
Salvataggio (b-aggiorna)¶
Scorre il file di transito (st-t-grid-det-notmin + rdnxt-t-grid-det) e riflette le modifiche su PRNTOPRS:
- se l'azienda e' cambiata (
t-gor-r-azi-precdiverso), marca il vecchio record come cancellato (oprs-val = "C",rwr-prntoprs) e ne sincronizza la chiave verso KPN; - scrive/riscrive il record corrente (
wr-/rwr-prntoprs, chiaveoprs-operatore/oprs-criterio-tip = "GRPAZ"/oprs-criterio-cod) col nuovooprs-val; - per ogni record aggiornato invia la chiave (
oprs-chia1) al modulo di sincronizzazione tramiteSWN012(operazioneESPORTA-KEY).
Controlli di campo (x-controlla-*)¶
Operatore obbligatorio ed esistente (x-controlla-tm-oper/x-controlla-tm-r-oper, rd-prntoper), azienda esistente in GRPAZIEN (x-controlla-tm-r-azi, rd-grpazien), e almeno una condizione valorizzata per riga non cancellata (x-controlla-grid-det-col-ep). L'help F8 e' contestuale: colonna operatore -> COGT20, colonna azienda -> GRP002.
Tabelle e file¶
| File logico | Chiave / accesso | Descrizione |
|---|---|---|
| FEURTAB | - | Tabella di sistema (aperta via cogfiles.cpy) |
| PRNTOPRS | primaria oprs-chia1 (oprs-operatore + oprs-criterio-tip + oprs-criterio-cod) |
Restrizioni operatore: criterio "GRPAZ" (azienda del gruppo) con flag di validita' (oprs-val) |
| PRNTOPER | ptop-cod (lettura) |
Descrizione operatore |
| GRPAZIEN | ao-azi-cod (lettura) |
Anagrafica aziende del gruppo: codice e descrizione azienda |
| t-grid-det | file temporaneo indicizzato (t-gor-r-rec) |
Transito di lavoro della griglia, cancellato in chiusura (delete file) |
COPY incluse¶
File Section¶
feurtab.fd, cogt35.select, cogt35.fd, cogfiles.cpy
Working-Storage¶
cogt35.wrk, cogt35.imppredf-wrk, k-tipi-cogtabel.cpy, costanti-listino.cpy, cogt35.tm, wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy, wgrid.cpy, utilgdad.cpy, utilu20.cpy, utilt20.cpy, utilgrp002.cpy, utilagprg.cpy, utilncnf.cpy, utilimppredf.cpy
Linkage¶
wcont.cpy, wcont1.cpy, utilcogt35.cpy
Procedure Division¶
cogt35.decla, cogt35-01.scr (screen), grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy, cogt35.prc, cogt35.imppredf
Le routine di I/O su PRNTOPRS, GRPAZIEN, PRNTOPER e sul transito t-grid-det sono incluse tramite la catena di COPY generata (.k01).
CALL a sottoprogrammi¶
| Programma | Scopo |
|---|---|
| GRIDADMN | Gestione griglia di dettaglio e personalizzazione colonne (Shift-F4) |
| COGT20 | Help/selezione operatore (F8 sulla colonna operatore) |
| GRP002 | Help/selezione azienda del gruppo (F8 sulla colonna azienda) |
| SWN012 | Sincronizzazione della chiave restrizione verso KPN (ESPORTA-KEY) |
| RNEWCONF | Lettura parametro di configurazione (vedi sotto) |
| W$MENU | Attivazione menu contestuale (right-click sulla griglia) |
I sottoprogrammi Y* di gestione tabella sono generati dallo Screen Designer.
Configurazioni RNEWCONF¶
Nel paragrafo x99-confi (pacchetto C) e' letta una chiave:
| Gruppo | Chiave | Variabile | Effetto |
|---|---|---|---|
| assist | gestione-gruppo-aziende | tm-cfg-gruppo-aziende |
Se non "S", la funzione non e' attiva e il programma esce con messaggio "gestione 'gruppo aziende' Non Attivo" |
Note tecniche¶
- File di transito: le modifiche non toccano
PRNTOPRSfinche' non si conferma con F3; l'editing avviene su una copia indicizzata temporanea (t-grid-det), che viene creata all'ingresso, riordinata/filtrabile in griglia e cancellata (delete file) in uscita. - Cancellazione logica: la restrizione non viene rimossa fisicamente ma marcata
oprs-val = "C"; un record cancellato equivale a criterio non abilitato. Anche il cambio di azienda comporta la cancellazione logica del record precedente. - Sincronizzazione KPN: ogni scrittura/modifica di restrizione viene propagata al sistema KPN via
SWN012(ESPORTA-KEY), analogamente a quanto fa COGT20 per l'anagrafica operatori (che usaSWN073). - Modalita' chiamata da COGT20: quando invocato con
cogt35-operatorevalorizzato, l'operatore e' fissato e non modificabile (z-grid-det-oper-be-epblocca l'editing della colonna operatore, testata precompilata); da menu invece la colonna operatore e' libera. - Filtri e ordinamento: la griglia supporta ordinamento predefinito per operatore e filtri; con filtro attivo (
grid-det-filtro-attivo = "S") la cancellazione riga e' inibita per evitare operazioni su un sottoinsieme parziale. - Gestione filtri memorizzati (imppredf): le copybook
cogt35.imppredf*predispongono il salvataggio/caricamento di filtri predefiniti; nel sorgente corrente i relativi tasti (Ctrl-S/Ctrl-F) sono commentati e non attivi.