Vai al contenuto

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-caller e cogt35-operatore valorizzati, copybook utilcogt35.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-prec diverso), 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, chiave oprs-operatore/oprs-criterio-tip = "GRPAZ"/oprs-criterio-cod) col nuovo oprs-val;
  • per ogni record aggiornato invia la chiave (oprs-chia1) al modulo di sincronizzazione tramite SWN012 (operazione ESPORTA-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 PRNTOPRS finche' 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 usa SWN073).
  • Modalita' chiamata da COGT20: quando invocato con cogt35-operatore valorizzato, l'operatore e' fissato e non modificabile (z-grid-det-oper-be-ep blocca 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.